From 23bd43964483c8edf8b4e47c4d8a1362eac8229b Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Tue, 17 Sep 2024 10:51:32 -0400 Subject: [PATCH 001/130] patch seismic-alloy-core versions (#29) --- Cargo.lock | 185 +++++++++++-------- Cargo.toml | 98 +++++----- README.md | 63 +++++++ crates/anvil/Cargo.toml | 2 +- crates/anvil/core/Cargo.toml | 4 +- crates/anvil/core/src/eth/transaction/mod.rs | 12 +- crates/cast/src/lib.rs | 3 + crates/cheatcodes/src/json.rs | 7 +- crates/common/fmt/Cargo.toml | 2 +- crates/common/fmt/src/dynamic.rs | 3 +- crates/evm/abi/Cargo.toml | 2 +- crates/evm/core/Cargo.toml | 2 +- crates/forge/Cargo.toml | 2 +- 13 files changed, 239 insertions(+), 146 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6793346b5..cbceef8fb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -85,8 +85,9 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "0.3.1" -source = "git+https://github.com/alloy-rs/alloy?rev=7fab7ee#7fab7ee4b27220e755d21f4b50108d083ea341fd" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28ddd17ffb7e4d66ef3a84e7b179072a9320cdc4b26c7f6f44cbf1081631b36" dependencies = [ "alloy-eips", "alloy-primitives", @@ -98,8 +99,9 @@ dependencies = [ [[package]] name = "alloy-contract" -version = "0.3.1" -source = "git+https://github.com/alloy-rs/alloy?rev=7fab7ee#7fab7ee4b27220e755d21f4b50108d083ea341fd" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a69257e2ffe1a9f15f20a89cd54d1ca758468c5b3e87979191b8b5fc24d39b37" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -119,8 +121,6 @@ dependencies = [ [[package]] name = "alloy-dyn-abi" version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d1c7d5315d44b5e00ce9c6b72dc88aa8f3e49d82a742be85d6a755ef0aa28c5" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -166,8 +166,9 @@ dependencies = [ [[package]] name = "alloy-eips" -version = "0.3.1" -source = "git+https://github.com/alloy-rs/alloy?rev=7fab7ee#7fab7ee4b27220e755d21f4b50108d083ea341fd" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f6c5c0a383f14519531cf58d8440e74f10b938e289f803af870be6f79223110" dependencies = [ "alloy-eip2930", "alloy-eip7702", @@ -184,8 +185,9 @@ dependencies = [ [[package]] name = "alloy-genesis" -version = "0.3.1" -source = "git+https://github.com/alloy-rs/alloy?rev=7fab7ee#7fab7ee4b27220e755d21f4b50108d083ea341fd" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7db0ddc76399bb1a4010f630767f027cafe65ab406cfee8e6040128cd65e8325" dependencies = [ "alloy-primitives", "alloy-serde", @@ -195,8 +197,6 @@ dependencies = [ [[package]] name = "alloy-json-abi" version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8129590e6f5aa3aeb33138f0faaa4cb763e4f1ca072ab98ce880a1998dca84d3" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -206,8 +206,9 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "0.3.1" -source = "git+https://github.com/alloy-rs/alloy?rev=7fab7ee#7fab7ee4b27220e755d21f4b50108d083ea341fd" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7111af869909275cffc5c84d16b6c892d6d512773e40cbe83187d0b9c5235e91" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -219,8 +220,9 @@ dependencies = [ [[package]] name = "alloy-network" -version = "0.3.1" -source = "git+https://github.com/alloy-rs/alloy?rev=7fab7ee#7fab7ee4b27220e755d21f4b50108d083ea341fd" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "342028392a2d5050b7b93dd32a0715d3b3b9ce30072ecb69a35dd4895c005495" dependencies = [ "alloy-consensus", "alloy-eips", @@ -239,9 +241,11 @@ dependencies = [ [[package]] name = "alloy-network-primitives" -version = "0.3.1" -source = "git+https://github.com/alloy-rs/alloy?rev=7fab7ee#7fab7ee4b27220e755d21f4b50108d083ea341fd" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6e66d78c049dcadd065a926a9f2d9a9b2b10981a7889449e694fac7bccd2c6f" dependencies = [ + "alloy-eips", "alloy-primitives", "alloy-serde", "serde", @@ -250,8 +254,6 @@ dependencies = [ [[package]] name = "alloy-primitives" version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19d1d1bdfba287209ee749a985230685c2ff8bdabe5fed6f699f72f22bb72c95" dependencies = [ "alloy-rlp", "arbitrary", @@ -275,8 +277,9 @@ dependencies = [ [[package]] name = "alloy-provider" -version = "0.3.1" -source = "git+https://github.com/alloy-rs/alloy?rev=7fab7ee#7fab7ee4b27220e755d21f4b50108d083ea341fd" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79f14ccc2a3c575cb17b1b4af8c772cf9b5b93b7ce7047d6640e53954abb558d" dependencies = [ "alloy-chains", "alloy-consensus", @@ -313,8 +316,9 @@ dependencies = [ [[package]] name = "alloy-pubsub" -version = "0.3.1" -source = "git+https://github.com/alloy-rs/alloy?rev=7fab7ee#7fab7ee4b27220e755d21f4b50108d083ea341fd" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34b9f5e85120aab30b8da23354592f7bd2b208d33d3204ffa1d44ac2e3dd5691" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -325,7 +329,7 @@ dependencies = [ "serde_json", "tokio", "tokio-stream", - "tower 0.4.13", + "tower 0.5.0", "tracing", ] @@ -353,8 +357,9 @@ dependencies = [ [[package]] name = "alloy-rpc-client" -version = "0.3.1" -source = "git+https://github.com/alloy-rs/alloy?rev=7fab7ee#7fab7ee4b27220e755d21f4b50108d083ea341fd" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dc79aeca84abb122a2fffbc1c91fdf958dca5c95be3875977bc99672bde0027" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -370,15 +375,16 @@ dependencies = [ "serde_json", "tokio", "tokio-stream", - "tower 0.4.13", + "tower 0.5.0", "tracing", "url", ] [[package]] name = "alloy-rpc-types" -version = "0.3.1" -source = "git+https://github.com/alloy-rs/alloy?rev=7fab7ee#7fab7ee4b27220e755d21f4b50108d083ea341fd" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22045187a5ebf5b2af3f8b6831b66735b6556c5750ec5790aeeb45935260c1c2" dependencies = [ "alloy-rpc-types-anvil", "alloy-rpc-types-engine", @@ -391,8 +397,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" -version = "0.3.1" -source = "git+https://github.com/alloy-rs/alloy?rev=7fab7ee#7fab7ee4b27220e755d21f4b50108d083ea341fd" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578d9ccad4e8510d32cc2810d05e01a232ccd79a4a6df60d257466897b43b013" dependencies = [ "alloy-primitives", "alloy-serde", @@ -401,25 +408,26 @@ dependencies = [ [[package]] name = "alloy-rpc-types-engine" -version = "0.3.1" -source = "git+https://github.com/alloy-rs/alloy?rev=7fab7ee#7fab7ee4b27220e755d21f4b50108d083ea341fd" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c031a91e94a39f928244bc837c953817be5b8cc61759e1a9123b3abd17560dd" dependencies = [ "alloy-consensus", "alloy-eips", "alloy-primitives", "alloy-rlp", - "alloy-rpc-types-eth", "alloy-serde", + "derive_more 1.0.0", "jsonwebtoken", "rand", "serde", - "thiserror", ] [[package]] name = "alloy-rpc-types-eth" -version = "0.3.1" -source = "git+https://github.com/alloy-rs/alloy?rev=7fab7ee#7fab7ee4b27220e755d21f4b50108d083ea341fd" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "238f494727ff861a803bd73b1274ef788a615bf8f8c4bfada4e6df42afa275d2" dependencies = [ "alloy-consensus", "alloy-eips", @@ -428,16 +436,19 @@ dependencies = [ "alloy-rlp", "alloy-serde", "alloy-sol-types", + "cfg-if", + "derive_more 1.0.0", + "hashbrown 0.14.5", "itertools 0.13.0", "serde", "serde_json", - "thiserror", ] [[package]] name = "alloy-rpc-types-trace" -version = "0.3.1" -source = "git+https://github.com/alloy-rs/alloy?rev=7fab7ee#7fab7ee4b27220e755d21f4b50108d083ea341fd" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64ca08b0ccc0861055ceb83a1db009c4c8a7f52a259e7cda7ca6ca36ec2b5ce8" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -449,8 +460,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-txpool" -version = "0.3.1" -source = "git+https://github.com/alloy-rs/alloy?rev=7fab7ee#7fab7ee4b27220e755d21f4b50108d083ea341fd" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "192ad94fe34c12be8ac4413ea00b1170202faa6fdebaa756b6a33555bf86d902" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -460,8 +472,9 @@ dependencies = [ [[package]] name = "alloy-serde" -version = "0.3.1" -source = "git+https://github.com/alloy-rs/alloy?rev=7fab7ee#7fab7ee4b27220e755d21f4b50108d083ea341fd" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b95b6f024a558593dd3b8628af03f7df2ca50e4c56839293ad0a7546e471db0" dependencies = [ "alloy-primitives", "arbitrary", @@ -471,8 +484,9 @@ dependencies = [ [[package]] name = "alloy-signer" -version = "0.3.1" -source = "git+https://github.com/alloy-rs/alloy?rev=7fab7ee#7fab7ee4b27220e755d21f4b50108d083ea341fd" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da64740ff0518606c514eb0e03dd0a1daa8ff94d6d491a626fd8e50efd6c4f18" dependencies = [ "alloy-dyn-abi", "alloy-primitives", @@ -486,8 +500,9 @@ dependencies = [ [[package]] name = "alloy-signer-aws" -version = "0.3.1" -source = "git+https://github.com/alloy-rs/alloy?rev=7fab7ee#7fab7ee4b27220e755d21f4b50108d083ea341fd" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f187534919dcccebaf92774ad6b17645087b49a8716d49e2db29a2e3229b03f2" dependencies = [ "alloy-consensus", "alloy-network", @@ -503,8 +518,9 @@ dependencies = [ [[package]] name = "alloy-signer-gcp" -version = "0.3.1" -source = "git+https://github.com/alloy-rs/alloy?rev=7fab7ee#7fab7ee4b27220e755d21f4b50108d083ea341fd" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "907e56e2153e785c36e4197f4e254b5087e073a12b686f486d3bd6245c811313" dependencies = [ "alloy-consensus", "alloy-network", @@ -520,8 +536,9 @@ dependencies = [ [[package]] name = "alloy-signer-ledger" -version = "0.3.1" -source = "git+https://github.com/alloy-rs/alloy?rev=7fab7ee#7fab7ee4b27220e755d21f4b50108d083ea341fd" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "221d828bdf1df1e7d490c304eb1425c7adacd6897a4baa2316e3f3054fc8863f" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -539,8 +556,9 @@ dependencies = [ [[package]] name = "alloy-signer-local" -version = "0.3.1" -source = "git+https://github.com/alloy-rs/alloy?rev=7fab7ee#7fab7ee4b27220e755d21f4b50108d083ea341fd" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99e250010dce0e3caf6a6033e809718e5921391d937d1cbbcffe52653b37cc63" dependencies = [ "alloy-consensus", "alloy-network", @@ -558,8 +576,9 @@ dependencies = [ [[package]] name = "alloy-signer-trezor" -version = "0.3.1" -source = "git+https://github.com/alloy-rs/alloy?rev=7fab7ee#7fab7ee4b27220e755d21f4b50108d083ea341fd" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "586b4c42aa61b47591813fca23098e21530470986a00e3dc588baa2d5b8dd111" dependencies = [ "alloy-consensus", "alloy-network", @@ -575,8 +594,6 @@ dependencies = [ [[package]] name = "alloy-sol-macro" version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03f6a68cb762b6feb50cff1a4f81831b8725aa10f5a1afc26c209b7df442fffe" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", @@ -589,8 +606,6 @@ dependencies = [ [[package]] name = "alloy-sol-macro-expander" version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e3d38952d1f54a541c00b1b28582cd112ac02e6302437bd3dead32367a87393" dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", @@ -608,8 +623,6 @@ dependencies = [ [[package]] name = "alloy-sol-macro-input" version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2821c0ce9b217b17c9a52c8dc0dddadb391d0eb7593707da9f12df786510594b" dependencies = [ "alloy-json-abi", "const-hex", @@ -625,8 +638,6 @@ dependencies = [ [[package]] name = "alloy-sol-type-parser" version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f040419382164c509aa60f281e45c6fa295cf88ccffe686bd71d65780bc8d053" dependencies = [ "serde", "winnow", @@ -635,8 +646,6 @@ dependencies = [ [[package]] name = "alloy-sol-types" version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53be2dde91d22bc1e398e26bd42bdac441705f205a4cbaf4f3abb9273867ed39" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -647,8 +656,9 @@ dependencies = [ [[package]] name = "alloy-transport" -version = "0.3.1" -source = "git+https://github.com/alloy-rs/alloy?rev=7fab7ee#7fab7ee4b27220e755d21f4b50108d083ea341fd" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c7a669caa427abe8802184c8776f5103302f9337bb30a5b36bdebc332946c14" dependencies = [ "alloy-json-rpc", "base64 0.22.1", @@ -658,29 +668,31 @@ dependencies = [ "serde_json", "thiserror", "tokio", - "tower 0.4.13", + "tower 0.5.0", "tracing", "url", ] [[package]] name = "alloy-transport-http" -version = "0.3.1" -source = "git+https://github.com/alloy-rs/alloy?rev=7fab7ee#7fab7ee4b27220e755d21f4b50108d083ea341fd" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4433ffa97aab6ae643de81c7bde9a2f043496f27368a607405a5c78a610caf74" dependencies = [ "alloy-json-rpc", "alloy-transport", "reqwest", "serde_json", - "tower 0.4.13", + "tower 0.5.0", "tracing", "url", ] [[package]] name = "alloy-transport-ipc" -version = "0.3.1" -source = "git+https://github.com/alloy-rs/alloy?rev=7fab7ee#7fab7ee4b27220e755d21f4b50108d083ea341fd" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa02db8751f9c0c37caf8c38ad3eb7aa1cfb09cfea3451a13aacaf06846c7a5" dependencies = [ "alloy-json-rpc", "alloy-pubsub", @@ -699,8 +711,9 @@ dependencies = [ [[package]] name = "alloy-transport-ws" -version = "0.3.1" -source = "git+https://github.com/alloy-rs/alloy?rev=7fab7ee#7fab7ee4b27220e755d21f4b50108d083ea341fd" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0a5c4a0929479bcb85a2df628c01173618a71c807b2f499939a236dbde5d008" dependencies = [ "alloy-pubsub", "alloy-transport", @@ -8219,8 +8232,6 @@ dependencies = [ [[package]] name = "syn-solidity" version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03133179a4b51eabc6f1aea6951626a766b8aa3af68b12d150f88095914cb447" dependencies = [ "paste", "proc-macro2", @@ -8673,6 +8684,10 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "36b837f86b25d7c0d7988f00a54e74739be6477f2aac6201b8f429a7569991b7" dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper 0.1.2", "tower-layer", "tower-service", ] @@ -9754,3 +9769,15 @@ dependencies = [ "once_cell", "simd-adler32", ] + +[[patch.unused]] +name = "alloy-core" +version = "0.8.1" + +[[patch.unused]] +name = "revm" +version = "14.0.0" + +[[patch.unused]] +name = "revm-primitives" +version = "9.0.0" diff --git a/Cargo.toml b/Cargo.toml index fe8730a6b..20347e753 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -172,36 +172,36 @@ revm-inspectors = { version = "0.6", features = ["serde"] } ethers-contract-abigen = { version = "2.0.14", default-features = false } ## alloy -alloy-consensus = { version = "0.3.1", default-features = false } -alloy-contract = { version = "0.3.1", default-features = false } -alloy-eips = { version = "0.3.1", default-features = false } -alloy-genesis = { version = "0.3.1", default-features = false } -alloy-json-rpc = { version = "0.3.1", default-features = false } -alloy-network = { version = "0.3.1", default-features = false } -alloy-provider = { version = "0.3.1", default-features = false } -alloy-pubsub = { version = "0.3.1", default-features = false } -alloy-rpc-client = { version = "0.3.1", default-features = false } -alloy-rpc-types = { version = "0.3.1", default-features = true } -alloy-serde = { version = "0.3.1", default-features = false } -alloy-signer = { version = "0.3.1", default-features = false } -alloy-signer-aws = { version = "0.3.1", default-features = false } -alloy-signer-gcp = { version = "0.3.1", default-features = false } -alloy-signer-ledger = { version = "0.3.1", default-features = false } -alloy-signer-local = { version = "0.3.1", default-features = false } -alloy-signer-trezor = { version = "0.3.1", default-features = false } -alloy-transport = { version = "0.3.1", default-features = false } -alloy-transport-http = { version = "0.3.1", default-features = false } -alloy-transport-ipc = { version = "0.3.1", default-features = false } -alloy-transport-ws = { version = "0.3.1", default-features = false } +alloy-consensus = { version = "0.3.5", default-features = false } +alloy-contract = { version = "0.3.5", default-features = false } +alloy-eips = { version = "0.3.5", default-features = false } +alloy-genesis = { version = "0.3.5", default-features = false } +alloy-json-rpc = { version = "0.3.5", default-features = false } +alloy-network = { version = "0.3.5", default-features = false } +alloy-provider = { version = "0.3.5", default-features = false } +alloy-pubsub = { version = "0.3.5", default-features = false } +alloy-rpc-client = { version = "0.3.5", default-features = false } +alloy-rpc-types = { version = "0.3.5", default-features = true } +alloy-serde = { version = "0.3.5", default-features = false } +alloy-signer = { version = "0.3.5", default-features = false } +alloy-signer-aws = { version = "0.3.5", default-features = false } +alloy-signer-gcp = { version = "0.3.5", default-features = false } +alloy-signer-ledger = { version = "0.3.5", default-features = false } +alloy-signer-local = { version = "0.3.5", default-features = false } +alloy-signer-trezor = { version = "0.3.5", default-features = false } +alloy-transport = { version = "0.3.5", default-features = false } +alloy-transport-http = { version = "0.3.5", default-features = false } +alloy-transport-ipc = { version = "0.3.5", default-features = false } +alloy-transport-ws = { version = "0.3.5", default-features = false } ## alloy-core -alloy-dyn-abi = "0.8.1" -alloy-json-abi = "0.8.1" -alloy-primitives = { version = "0.8.1", features = ["getrandom", "rand"] } -alloy-sol-macro-expander = "0.8.1" -alloy-sol-macro-input = "0.8.1" -alloy-sol-types = "0.8.1" -syn-solidity = "0.8.1" +alloy-dyn-abi = { version = "0.8.1", features = ["seismic", "std"] } +alloy-json-abi = { version = "0.8.1", features = ["seismic"] } +alloy-primitives = { path = "../seismic-alloy-core/crates/primitives", features = ["getrandom", "rand", "seismic"] } +alloy-sol-macro-expander = { version = "0.8.1", features = ["seismic"] } +alloy-sol-macro-input = { version = "0.8.1", features = ["seismic"] } +alloy-sol-types = { version = "0.8.1", features = ["seismic"] } +syn-solidity = { version = "0.8.1", features = ["seismic"] } alloy-chains = "0.1" alloy-rlp = "0.3" @@ -268,27 +268,21 @@ proptest = "1" comfy-table = "7" [patch.crates-io] -# https://github.com/alloy-rs/alloy/pull/1229 + https://github.com/alloy-rs/alloy/pull/1243 -alloy-consensus = { git = "https://github.com/alloy-rs/alloy", rev = "7fab7ee" } -alloy-contract = { git = "https://github.com/alloy-rs/alloy", rev = "7fab7ee" } -alloy-eips = { git = "https://github.com/alloy-rs/alloy", rev = "7fab7ee" } -alloy-genesis = { git = "https://github.com/alloy-rs/alloy", rev = "7fab7ee" } -alloy-json-rpc = { git = "https://github.com/alloy-rs/alloy", rev = "7fab7ee" } -alloy-network = { git = "https://github.com/alloy-rs/alloy", rev = "7fab7ee" } -alloy-network-primitives = { git = "https://github.com/alloy-rs/alloy", rev = "7fab7ee" } -alloy-provider = { git = "https://github.com/alloy-rs/alloy", rev = "7fab7ee" } -alloy-pubsub = { git = "https://github.com/alloy-rs/alloy", rev = "7fab7ee" } -alloy-rpc-client = { git = "https://github.com/alloy-rs/alloy", rev = "7fab7ee" } -alloy-rpc-types = { git = "https://github.com/alloy-rs/alloy", rev = "7fab7ee" } -alloy-rpc-types-eth = { git = "https://github.com/alloy-rs/alloy", rev = "7fab7ee" } -alloy-serde = { git = "https://github.com/alloy-rs/alloy", rev = "7fab7ee" } -alloy-signer = { git = "https://github.com/alloy-rs/alloy", rev = "7fab7ee" } -alloy-signer-aws = { git = "https://github.com/alloy-rs/alloy", rev = "7fab7ee" } -alloy-signer-gcp = { git = "https://github.com/alloy-rs/alloy", rev = "7fab7ee" } -alloy-signer-ledger = { git = "https://github.com/alloy-rs/alloy", rev = "7fab7ee" } -alloy-signer-local = { git = "https://github.com/alloy-rs/alloy", rev = "7fab7ee" } -alloy-signer-trezor = { git = "https://github.com/alloy-rs/alloy", rev = "7fab7ee" } -alloy-transport = { git = "https://github.com/alloy-rs/alloy", rev = "7fab7ee" } -alloy-transport-http = { git = "https://github.com/alloy-rs/alloy", rev = "7fab7ee" } -alloy-transport-ipc = { git = "https://github.com/alloy-rs/alloy", rev = "7fab7ee" } -alloy-transport-ws = { git = "https://github.com/alloy-rs/alloy", rev = "7fab7ee" } +# If our dependencies depend on these things, +# then this will override whatever versions they point to +# and instead use our local version + +# seismic-revm +revm = { path = "../seismic-revm/crates/revm" } +revm-primitives = { path = "../seismic-revm/crates/primitives" } + +# seismic-alloy-core +alloy-core = { path = "../seismic-alloy-core/crates/core" } +alloy-dyn-abi = { path = "../seismic-alloy-core/crates/dyn-abi" } +alloy-json-abi = { path = "../seismic-alloy-core/crates/json-abi" } +alloy-primitives = { path = "../seismic-alloy-core/crates/primitives" } +alloy-sol-macro = { path = "../seismic-alloy-core/crates/sol-macro" } +alloy-sol-macro-expander = { path = "../seismic-alloy-core/crates/sol-macro-expander" } +alloy-sol-macro-input = { path = "../seismic-alloy-core/crates/sol-macro-input" } +alloy-sol-types = { path = "../seismic-alloy-core/crates/sol-types" } +alloy-sol-type-parser = { path = "../seismic-alloy-core/crates/sol-type-parser" } diff --git a/README.md b/README.md index 684b33556..5699fd5bf 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,68 @@ Foundry logo +## Seismic + +All Seismic modifications live on the `seismic` branch; the [original](https://github.com/foundry-rs/foundry) repository is on the `master` branch. We do this to always maintain a clear diff the changes it takes to make Foundry work with Seismic + +Make sure that you have added `~/.seismic/bin` to your path: + +```sh +export PATH="$PATH:$HOME/.seismic/bin" +``` + +Finally, make sure you have locally cloned this repository in the same directory as `mantle`. This is a temporary requirement until we are able to specify the mantle dependency in a way that does not involve using local paths. If you are curious about how this is configured, see the Cargo.toml in the root of this repository + +### Seismic Forge +To build `sforge` from source, run this from the root of this repository: + +```sh +git checkout seismic +cargo install --root=$HOME/.seismic --profile dev --path ./crates/forge +``` + +### Seismic Anvil +To build `sanvil` from source, run this from the root of this repository: + +```sh +git checkout seismic +cargo install --root=$HOME/.seismic --profile dev --path ./crates/anvil +``` + +### Merging in upstream foundry-rs/main +First make sure you have set a public origin: +```sh +git remote add public https://github.com/foundry-rs/foundry.git +``` + +Then checkout to `master` and pull in changes from `public/master`, and push to `origin/master` +```sh +git checkout master +git pull public master +git push origin master +``` + +Then checkout to `seismic`, pull in `origin/master`, and checkout to a new branch +```sh +git checkout seismic +git pull origin master +git checkout -b merge-in-public-master +``` + +You will likely see some merge conflicts. For Cargo.lock, simply checkout to `origin/master`: +```sh +git checkout master -- Cargo.lock +``` + +For the rest, resolve them manually. This might be a pain. When you are done, make sure our Seismic-specific tests pass: +```sh +cargo test -- test_seismic_transaction +``` + +And then push your branch to GitHub & merge in the pull request with a squash commit +```sh +git push origin merge-in-public-master # then merge it on the UI +``` + ## Foundry ![Github Actions][gha-badge] [![Telegram Chat][tg-badge]][tg-url] [![Telegram Support][tg-support-badge]][tg-support-url] diff --git a/crates/anvil/Cargo.toml b/crates/anvil/Cargo.toml index 77faec1f1..8821deeb2 100644 --- a/crates/anvil/Cargo.toml +++ b/crates/anvil/Cargo.toml @@ -14,7 +14,7 @@ repository.workspace = true workspace = true [[bin]] -name = "anvil" +name = "sanvil" path = "src/anvil.rs" required-features = ["cli"] diff --git a/crates/anvil/core/Cargo.toml b/crates/anvil/core/Cargo.toml index 8c2720c8f..dc45b4e27 100644 --- a/crates/anvil/core/Cargo.toml +++ b/crates/anvil/core/Cargo.toml @@ -22,13 +22,13 @@ revm = { workspace = true, default-features = false, features = [ "c-kzg", ] } -alloy-primitives = { workspace = true, features = ["serde"] } +alloy-primitives = { workspace = true, features = ["serde", "seismic"] } alloy-rpc-types = { workspace = true, features = ["anvil", "trace"] } alloy-serde.workspace = true alloy-rlp.workspace = true alloy-eips.workspace = true alloy-consensus = { workspace = true, features = ["k256", "kzg"] } -alloy-dyn-abi = { workspace = true, features = ["std", "eip712"] } +alloy-dyn-abi = { workspace = true, features = ["std", "eip712", "seismic"] } alloy-trie.workspace = true serde = { workspace = true, optional = true } diff --git a/crates/anvil/core/src/eth/transaction/mod.rs b/crates/anvil/core/src/eth/transaction/mod.rs index 7d80450f3..d84948eec 100644 --- a/crates/anvil/core/src/eth/transaction/mod.rs +++ b/crates/anvil/core/src/eth/transaction/mod.rs @@ -390,7 +390,7 @@ pub fn to_alloy_transaction_with_hash_and_sender( block_number: None, transaction_index: None, from, - to: t.tx().to.to().copied(), + to: Some(t.tx().to), value: t.tx().value, gas_price: Some(t.tx().max_fee_per_gas), max_fee_per_gas: Some(t.tx().max_fee_per_gas), @@ -602,7 +602,7 @@ impl PendingTransaction { } = tx.tx(); TxEnv { caller, - transact_to: *to, + transact_to: TxKind::Call(*to), data: input.clone(), chain_id: Some(*chain_id), nonce: Some(*nonce), @@ -851,7 +851,7 @@ impl TypedTransaction { access_list: t.tx().tx().access_list.clone(), }, Self::EIP7702(t) => TransactionEssentials { - kind: t.tx().to, + kind: TxKind::Call(t.tx().to), input: t.tx().input.clone(), nonce: t.tx().nonce, gas_limit: t.tx().gas_limit, @@ -975,7 +975,7 @@ impl TypedTransaction { Self::EIP2930(tx) => tx.tx().to, Self::EIP1559(tx) => tx.tx().to, Self::EIP4844(tx) => TxKind::Call(tx.tx().tx().to), - Self::EIP7702(tx) => tx.tx().to, + Self::EIP7702(tx) => TxKind::Call(tx.tx().to), Self::Deposit(tx) => tx.kind, } } @@ -1105,7 +1105,7 @@ impl TryFrom for TypedTransaction { max_priority_fee_per_gas: tx .max_priority_fee_per_gas .ok_or(ConversionError::MissingMaxPriorityFeePerGas)?, - to: tx.to.map_or(TxKind::Create, TxKind::Call), + to: tx.to.unwrap(), value: tx.value, access_list: tx.access_list.ok_or(ConversionError::MissingAccessList)?, input: tx.input, @@ -1406,7 +1406,7 @@ impl From> for OtsReceipt { let receipt = ReceiptWithBloom::::from(value); let status = receipt.status(); let cumulative_gas_used = receipt.cumulative_gas_used() as u64; - let logs = receipt.receipt.logs.into_iter().map(|x| x.inner).collect(); + let logs = receipt.receipt.logs.into_iter().collect(); let logs_bloom = receipt.logs_bloom; Self { status, cumulative_gas_used, logs: Some(logs), logs_bloom: Some(logs_bloom), r#type } diff --git a/crates/cast/src/lib.rs b/crates/cast/src/lib.rs index 03355213d..9b43a6db9 100644 --- a/crates/cast/src/lib.rs +++ b/crates/cast/src/lib.rs @@ -1694,6 +1694,9 @@ impl SimpleCast { DynSolType::CustomStruct { .. } => { eyre::bail!("Type `{v_ty}` is not supported as a mapping key") } + DynSolType::Saddress | DynSolType::Sint(_) | DynSolType::Suint(_) => { + hasher.update(v.as_word().unwrap()) + } } let p = DynSolType::Uint(256) diff --git a/crates/cheatcodes/src/json.rs b/crates/cheatcodes/src/json.rs index dad879e83..dad20125a 100644 --- a/crates/cheatcodes/src/json.rs +++ b/crates/cheatcodes/src/json.rs @@ -2,7 +2,7 @@ use crate::{string, Cheatcode, Cheatcodes, Result, Vm::*}; use alloy_dyn_abi::{eip712_parser::EncodeType, DynSolType, DynSolValue, Resolver}; -use alloy_primitives::{hex, Address, B256, I256}; +use alloy_primitives::{aliases::{SInt, SUInt}, hex, Address, SAddress, B256, I256}; use alloy_sol_types::SolValue; use foundry_common::fs; use foundry_config::fs_permissions::FsAccessKind; @@ -629,6 +629,11 @@ fn serialize_value_as_json(value: DynSolValue) -> Result { values.into_iter().map(serialize_value_as_json).collect::>()?, )), DynSolValue::Function(_) => bail!("cannot serialize function pointer"), + DynSolValue::Saddress(SAddress(c)) | DynSolValue::Sint(SInt(c), _) | DynSolValue::Suint(SUInt(c), _) => { + // let serde handle number parsing + let commitment = serde_json::from_str(&c.to_string())?; + Ok(Value::Number(commitment)) + } } } diff --git a/crates/common/fmt/Cargo.toml b/crates/common/fmt/Cargo.toml index fabe35a7a..21ce88dac 100644 --- a/crates/common/fmt/Cargo.toml +++ b/crates/common/fmt/Cargo.toml @@ -15,7 +15,7 @@ workspace = true [dependencies] alloy-primitives.workspace = true -alloy-dyn-abi = { workspace = true, features = ["eip712"] } +alloy-dyn-abi = { workspace = true, features = ["eip712", "seismic"] } yansi.workspace = true # ui diff --git a/crates/common/fmt/src/dynamic.rs b/crates/common/fmt/src/dynamic.rs index 498d209f7..b56a111fa 100644 --- a/crates/common/fmt/src/dynamic.rs +++ b/crates/common/fmt/src/dynamic.rs @@ -1,6 +1,6 @@ use super::{format_int_exp, format_uint_exp}; use alloy_dyn_abi::{DynSolType, DynSolValue}; -use alloy_primitives::hex; +use alloy_primitives::{aliases::{SInt, SUInt}, hex, SAddress}; use std::fmt; /// [`DynSolValue`] formatter. @@ -70,6 +70,7 @@ impl DynValueFormatter { self.tuple(tuple, f) } } + &DynSolValue::Saddress(SAddress(inner)) | &DynSolValue::Sint(SInt(inner), _) | &DynSolValue::Suint(SUInt(inner), _) => write!(f, "{inner}") } } diff --git a/crates/evm/abi/Cargo.toml b/crates/evm/abi/Cargo.toml index 330ea6626..d20e75f6b 100644 --- a/crates/evm/abi/Cargo.toml +++ b/crates/evm/abi/Cargo.toml @@ -18,7 +18,7 @@ foundry-common-fmt.workspace = true foundry-macros.workspace = true alloy-primitives.workspace = true -alloy-sol-types = { workspace = true, features = ["json"] } +alloy-sol-types = { workspace = true, features = ["json", "seismic"] } derive_more.workspace = true itertools.workspace = true diff --git a/crates/evm/core/Cargo.toml b/crates/evm/core/Cargo.toml index 6fbf67453..188d271bf 100644 --- a/crates/evm/core/Cargo.toml +++ b/crates/evm/core/Cargo.toml @@ -19,7 +19,7 @@ foundry-common.workspace = true foundry-config.workspace = true foundry-evm-abi.workspace = true -alloy-dyn-abi = { workspace = true, features = ["arbitrary", "eip712"] } +alloy-dyn-abi = { workspace = true, features = ["arbitrary", "eip712", "seismic"] } alloy-genesis.workspace = true alloy-json-abi.workspace = true alloy-primitives = { workspace = true, features = [ diff --git a/crates/forge/Cargo.toml b/crates/forge/Cargo.toml index 4f9110ff6..fb7f9b8a1 100644 --- a/crates/forge/Cargo.toml +++ b/crates/forge/Cargo.toml @@ -14,7 +14,7 @@ repository.workspace = true workspace = true [[bin]] -name = "forge" +name = "sforge" path = "bin/main.rs" [build-dependencies] From cb5a163c35dfcbb0ef8b50fb0a2ecc2f2b8ff9c7 Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Mon, 30 Sep 2024 16:18:50 -0400 Subject: [PATCH 002/130] run cargofmt over repo (#31) --- crates/cheatcodes/src/json.rs | 9 +++++++-- crates/common/fmt/src/dynamic.rs | 9 +++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/crates/cheatcodes/src/json.rs b/crates/cheatcodes/src/json.rs index dad20125a..8ff254271 100644 --- a/crates/cheatcodes/src/json.rs +++ b/crates/cheatcodes/src/json.rs @@ -2,7 +2,10 @@ use crate::{string, Cheatcode, Cheatcodes, Result, Vm::*}; use alloy_dyn_abi::{eip712_parser::EncodeType, DynSolType, DynSolValue, Resolver}; -use alloy_primitives::{aliases::{SInt, SUInt}, hex, Address, SAddress, B256, I256}; +use alloy_primitives::{ + aliases::{SInt, SUInt}, + hex, Address, SAddress, B256, I256, +}; use alloy_sol_types::SolValue; use foundry_common::fs; use foundry_config::fs_permissions::FsAccessKind; @@ -629,7 +632,9 @@ fn serialize_value_as_json(value: DynSolValue) -> Result { values.into_iter().map(serialize_value_as_json).collect::>()?, )), DynSolValue::Function(_) => bail!("cannot serialize function pointer"), - DynSolValue::Saddress(SAddress(c)) | DynSolValue::Sint(SInt(c), _) | DynSolValue::Suint(SUInt(c), _) => { + DynSolValue::Saddress(SAddress(c)) | + DynSolValue::Sint(SInt(c), _) | + DynSolValue::Suint(SUInt(c), _) => { // let serde handle number parsing let commitment = serde_json::from_str(&c.to_string())?; Ok(Value::Number(commitment)) diff --git a/crates/common/fmt/src/dynamic.rs b/crates/common/fmt/src/dynamic.rs index b56a111fa..ffaaf2eb5 100644 --- a/crates/common/fmt/src/dynamic.rs +++ b/crates/common/fmt/src/dynamic.rs @@ -1,6 +1,9 @@ use super::{format_int_exp, format_uint_exp}; use alloy_dyn_abi::{DynSolType, DynSolValue}; -use alloy_primitives::{aliases::{SInt, SUInt}, hex, SAddress}; +use alloy_primitives::{ + aliases::{SInt, SUInt}, + hex, SAddress, +}; use std::fmt; /// [`DynSolValue`] formatter. @@ -70,7 +73,9 @@ impl DynValueFormatter { self.tuple(tuple, f) } } - &DynSolValue::Saddress(SAddress(inner)) | &DynSolValue::Sint(SInt(inner), _) | &DynSolValue::Suint(SUInt(inner), _) => write!(f, "{inner}") + &DynSolValue::Saddress(SAddress(inner)) | + &DynSolValue::Sint(SInt(inner), _) | + &DynSolValue::Suint(SUInt(inner), _) => write!(f, "{inner}"), } } From a25706996310a2d95a0ee035018cd14cc1ec166b Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Mon, 30 Sep 2024 19:04:49 -0400 Subject: [PATCH 003/130] Use git commits for seismic deps; setup github actions (#30) --- .github/workflows/seismic.yml | 58 ++ Cargo.lock | 819 +++++++++--------- Cargo.toml | 85 +- crates/anvil/src/eth/backend/db.rs | 21 +- crates/anvil/src/eth/backend/genesis.rs | 6 +- crates/anvil/src/eth/backend/mem/fork_db.rs | 8 +- .../anvil/src/eth/backend/mem/in_memory_db.rs | 12 +- crates/anvil/src/eth/backend/mem/mod.rs | 10 +- crates/anvil/src/eth/backend/mem/state.rs | 19 +- crates/anvil/src/eth/backend/mem/storage.rs | 1 + crates/cast/bin/tx.rs | 4 +- crates/cheatcodes/src/json.rs | 14 +- crates/common/fmt/src/dynamic.rs | 4 +- crates/common/src/compile.rs | 2 +- crates/common/src/provider/mod.rs | 8 +- crates/evm/core/Cargo.toml | 1 + crates/evm/core/src/backend/cow.rs | 8 +- crates/evm/core/src/backend/in_memory_db.rs | 8 +- crates/evm/core/src/backend/mod.rs | 12 +- crates/evm/core/src/backend/snapshot.rs | 5 +- crates/evm/core/src/fork/database.rs | 17 +- crates/evm/fuzz/src/strategies/state.rs | 4 +- crates/forge/tests/it/test_helpers.rs | 2 +- 23 files changed, 611 insertions(+), 517 deletions(-) create mode 100644 .github/workflows/seismic.yml diff --git a/.github/workflows/seismic.yml b/.github/workflows/seismic.yml new file mode 100644 index 000000000..106dd1062 --- /dev/null +++ b/.github/workflows/seismic.yml @@ -0,0 +1,58 @@ +name: Seismic CI + +on: + push: + branches: [ seismic ] + pull_request: + branches: [ seismic ] + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +env: + CARGO_TERM_COLOR: always + CARGO_NET_GIT_FETCH_WITH_CLI: true + +jobs: + rustfmt: + runs-on: ubuntu-latest + timeout-minutes: 5 + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@nightly + with: + components: rustfmt + - run: cargo fmt --all --check + + build: + runs-on: ubuntu-latest + timeout-minutes: 30 + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + - uses: Swatinem/rust-cache@v2 + with: + shared-key: "build-cache" + - name: Install SSH Keys + uses: webfactory/ssh-agent@v0.9.0 + with: + ssh-private-key: | + ${{ secrets.ACTIONS_MANTLE_SSH_ED25519 }} + ${{ secrets.ACTIONS_SFORGESTD_SSH_ED25519 }} + ${{ secrets.ACTIONS_SALLOYCORE_SSH_ED25519 }} + ${{ secrets.ACTIONS_SREVM_SSH_ED25519 }} + ${{ secrets.ACTIONS_SREVMINSPECTORS_SSH_ED25519 }} + ${{ secrets.ACTIONS_SFOUNDRYFDB_SSH_ED25519 }} + - name: sforge build + run: cargo build --bin sforge + - name: sanvil build + run: cargo build --bin sanvil + - name: sforge warnings + run: RUSTFLAGS="-D warnings" cargo check --bin sforge + - name: sanvil warnings + run: RUSTFLAGS="-D warnings" cargo check --bin sanvil + # - name: sforge tests + # run: cargo test --bin sforge + # - name: sanvil tests + # run: cargo test --bin sanvil diff --git a/Cargo.lock b/Cargo.lock index cbceef8fb..65712c1f7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -74,9 +74,9 @@ checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" [[package]] name = "alloy-chains" -version = "0.1.29" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb07629a5d0645d29f68d2fb6f4d0cf15c89ec0965be915f303967180929743f" +checksum = "8158b4878c67837e5413721cc44298e6a2d88d39203175ea025e51892a16ba4c" dependencies = [ "num_enum", "serde", @@ -85,9 +85,9 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28ddd17ffb7e4d66ef3a84e7b179072a9320cdc4b26c7f6f44cbf1081631b36" +checksum = "629b62e38d471cc15fea534eb7283d2f8a4e8bdb1811bcc5d66dda6cfce6fae1" dependencies = [ "alloy-eips", "alloy-primitives", @@ -99,9 +99,9 @@ dependencies = [ [[package]] name = "alloy-contract" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a69257e2ffe1a9f15f20a89cd54d1ca758468c5b3e87979191b8b5fc24d39b37" +checksum = "0eefe64fd344cffa9cf9e3435ec4e93e6e9c3481bc37269af988bf497faf4a6a" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -120,7 +120,8 @@ dependencies = [ [[package]] name = "alloy-dyn-abi" -version = "0.8.1" +version = "0.8.5" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=6641735#6641735e58859b64030a2cce8f0b13653a0f1685" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -152,9 +153,9 @@ dependencies = [ [[package]] name = "alloy-eip7702" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d319bb544ca6caeab58c39cea8921c55d924d4f68f2c60f24f914673f9a74a" +checksum = "ea59dc42102bc9a1905dc57901edc6dd48b9f38115df86c7d252acba70d71d04" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -166,9 +167,9 @@ dependencies = [ [[package]] name = "alloy-eips" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f6c5c0a383f14519531cf58d8440e74f10b938e289f803af870be6f79223110" +checksum = "f923dd5fca5f67a43d81ed3ebad0880bd41f6dd0ada930030353ac356c54cd0f" dependencies = [ "alloy-eip2930", "alloy-eip7702", @@ -185,9 +186,9 @@ dependencies = [ [[package]] name = "alloy-genesis" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7db0ddc76399bb1a4010f630767f027cafe65ab406cfee8e6040128cd65e8325" +checksum = "3a7a18afb0b318616b6b2b0e2e7ac5529d32a966c673b48091c9919e284e6aca" dependencies = [ "alloy-primitives", "alloy-serde", @@ -196,7 +197,8 @@ dependencies = [ [[package]] name = "alloy-json-abi" -version = "0.8.1" +version = "0.8.5" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=6641735#6641735e58859b64030a2cce8f0b13653a0f1685" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -206,9 +208,9 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7111af869909275cffc5c84d16b6c892d6d512773e40cbe83187d0b9c5235e91" +checksum = "d3c717b5298fad078cd3a418335b266eba91b511383ca9bd497f742d5975d5ab" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -220,9 +222,9 @@ dependencies = [ [[package]] name = "alloy-network" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "342028392a2d5050b7b93dd32a0715d3b3b9ce30072ecb69a35dd4895c005495" +checksum = "fb3705ce7d8602132bcf5ac7a1dd293a42adc2f183abf5907c30ac535ceca049" dependencies = [ "alloy-consensus", "alloy-eips", @@ -241,9 +243,9 @@ dependencies = [ [[package]] name = "alloy-network-primitives" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6e66d78c049dcadd065a926a9f2d9a9b2b10981a7889449e694fac7bccd2c6f" +checksum = "94ad40869867ed2d9cd3842b1e800889e5b49e6b92da346e93862b4a741bedf3" dependencies = [ "alloy-eips", "alloy-primitives", @@ -253,7 +255,8 @@ dependencies = [ [[package]] name = "alloy-primitives" -version = "0.8.1" +version = "0.8.5" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=6641735#6641735e58859b64030a2cce8f0b13653a0f1685" dependencies = [ "alloy-rlp", "arbitrary", @@ -277,9 +280,9 @@ dependencies = [ [[package]] name = "alloy-provider" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79f14ccc2a3c575cb17b1b4af8c772cf9b5b93b7ce7047d6640e53954abb558d" +checksum = "927f708dd457ed63420400ee5f06945df9632d5d101851952056840426a10dc5" dependencies = [ "alloy-chains", "alloy-consensus", @@ -316,9 +319,9 @@ dependencies = [ [[package]] name = "alloy-pubsub" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34b9f5e85120aab30b8da23354592f7bd2b208d33d3204ffa1d44ac2e3dd5691" +checksum = "2d05f63677e210d758cd5d6d1ce10f20c980c3560ccfbe79ba1997791862a04f" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -329,7 +332,7 @@ dependencies = [ "serde_json", "tokio", "tokio-stream", - "tower 0.5.0", + "tower 0.5.1", "tracing", ] @@ -352,14 +355,14 @@ checksum = "4d0f2d905ebd295e7effec65e5f6868d153936130ae718352771de3e7d03c75c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] name = "alloy-rpc-client" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dc79aeca84abb122a2fffbc1c91fdf958dca5c95be3875977bc99672bde0027" +checksum = "7d82952dca71173813d4e5733e2c986d8b04aea9e0f3b0a576664c232ad050a5" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -375,16 +378,16 @@ dependencies = [ "serde_json", "tokio", "tokio-stream", - "tower 0.5.0", + "tower 0.5.1", "tracing", "url", ] [[package]] name = "alloy-rpc-types" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22045187a5ebf5b2af3f8b6831b66735b6556c5750ec5790aeeb45935260c1c2" +checksum = "64333d639f2a0cf73491813c629a405744e16343a4bc5640931be707c345ecc5" dependencies = [ "alloy-rpc-types-anvil", "alloy-rpc-types-engine", @@ -397,9 +400,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578d9ccad4e8510d32cc2810d05e01a232ccd79a4a6df60d257466897b43b013" +checksum = "d25cb45ad7c0930dd62eecf164d2afe4c3d2dd2c82af85680ad1f118e1e5cb83" dependencies = [ "alloy-primitives", "alloy-serde", @@ -408,9 +411,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-engine" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c031a91e94a39f928244bc837c953817be5b8cc61759e1a9123b3abd17560dd" +checksum = "1464c4dd646e1bdfde86ae65ce5ba168dbb29180b478011fe87117ae46b1629b" dependencies = [ "alloy-consensus", "alloy-eips", @@ -425,9 +428,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "238f494727ff861a803bd73b1274ef788a615bf8f8c4bfada4e6df42afa275d2" +checksum = "83aa984386deda02482660aa31cb8ca1e63d533f1c31a52d7d181ac5ec68e9b8" dependencies = [ "alloy-consensus", "alloy-eips", @@ -446,9 +449,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-trace" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ca08b0ccc0861055ceb83a1db009c4c8a7f52a259e7cda7ca6ca36ec2b5ce8" +checksum = "98db35cd42c90b484377e6bc44d95377a7a38a5ebee996e67754ac0446d542ab" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -460,9 +463,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-txpool" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "192ad94fe34c12be8ac4413ea00b1170202faa6fdebaa756b6a33555bf86d902" +checksum = "6bac37082c3b21283b3faf5cc0e08974272aee2f756ce1adeb26db56a5fce0d5" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -472,9 +475,9 @@ dependencies = [ [[package]] name = "alloy-serde" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b95b6f024a558593dd3b8628af03f7df2ca50e4c56839293ad0a7546e471db0" +checksum = "731f75ec5d383107fd745d781619bd9cedf145836c51ecb991623d41278e71fa" dependencies = [ "alloy-primitives", "arbitrary", @@ -484,9 +487,9 @@ dependencies = [ [[package]] name = "alloy-signer" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da64740ff0518606c514eb0e03dd0a1daa8ff94d6d491a626fd8e50efd6c4f18" +checksum = "307324cca94354cd654d6713629f0383ec037e1ff9e3e3d547212471209860c0" dependencies = [ "alloy-dyn-abi", "alloy-primitives", @@ -500,9 +503,9 @@ dependencies = [ [[package]] name = "alloy-signer-aws" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f187534919dcccebaf92774ad6b17645087b49a8716d49e2db29a2e3229b03f2" +checksum = "076be69aa26a4c500919f1ad3847662aa6d1e9bc2995e263ed826b1546d1b990" dependencies = [ "alloy-consensus", "alloy-network", @@ -518,9 +521,9 @@ dependencies = [ [[package]] name = "alloy-signer-gcp" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "907e56e2153e785c36e4197f4e254b5087e073a12b686f486d3bd6245c811313" +checksum = "cabd79d4eb954a8c2ae7889a18e2466af186ae68376251cf58525239c156ec54" dependencies = [ "alloy-consensus", "alloy-network", @@ -536,9 +539,9 @@ dependencies = [ [[package]] name = "alloy-signer-ledger" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "221d828bdf1df1e7d490c304eb1425c7adacd6897a4baa2316e3f3054fc8863f" +checksum = "f3df66f5ddcc32d2070485dc702f5f5fb97cfbfa817f6e2e6bac16a4e32ed44c" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -556,9 +559,9 @@ dependencies = [ [[package]] name = "alloy-signer-local" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99e250010dce0e3caf6a6033e809718e5921391d937d1cbbcffe52653b37cc63" +checksum = "9fabe917ab1778e760b4701628d1cae8e028ee9d52ac6307de4e1e9286ab6b5f" dependencies = [ "alloy-consensus", "alloy-network", @@ -576,9 +579,9 @@ dependencies = [ [[package]] name = "alloy-signer-trezor" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "586b4c42aa61b47591813fca23098e21530470986a00e3dc588baa2d5b8dd111" +checksum = "1068949eda889b2c052b29a6e8c7ea2ba16be6d1af83ad165fff2a4e4ad19fcd" dependencies = [ "alloy-consensus", "alloy-network", @@ -593,19 +596,21 @@ dependencies = [ [[package]] name = "alloy-sol-macro" -version = "0.8.1" +version = "0.8.5" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=6641735#6641735e58859b64030a2cce8f0b13653a0f1685" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] name = "alloy-sol-macro-expander" -version = "0.8.1" +version = "0.8.5" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=6641735#6641735e58859b64030a2cce8f0b13653a0f1685" dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", @@ -615,14 +620,15 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", "syn-solidity", "tiny-keccak", ] [[package]] name = "alloy-sol-macro-input" -version = "0.8.1" +version = "0.8.5" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=6641735#6641735e58859b64030a2cce8f0b13653a0f1685" dependencies = [ "alloy-json-abi", "const-hex", @@ -631,13 +637,14 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.77", + "syn 2.0.79", "syn-solidity", ] [[package]] name = "alloy-sol-type-parser" -version = "0.8.1" +version = "0.8.5" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=6641735#6641735e58859b64030a2cce8f0b13653a0f1685" dependencies = [ "serde", "winnow", @@ -645,7 +652,8 @@ dependencies = [ [[package]] name = "alloy-sol-types" -version = "0.8.1" +version = "0.8.5" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=6641735#6641735e58859b64030a2cce8f0b13653a0f1685" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -656,9 +664,9 @@ dependencies = [ [[package]] name = "alloy-transport" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c7a669caa427abe8802184c8776f5103302f9337bb30a5b36bdebc332946c14" +checksum = "33616b2edf7454302a1d48084db185e52c309f73f6c10be99b0fe39354b3f1e9" dependencies = [ "alloy-json-rpc", "base64 0.22.1", @@ -668,31 +676,31 @@ dependencies = [ "serde_json", "thiserror", "tokio", - "tower 0.5.0", + "tower 0.5.1", "tracing", "url", ] [[package]] name = "alloy-transport-http" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4433ffa97aab6ae643de81c7bde9a2f043496f27368a607405a5c78a610caf74" +checksum = "a944f5310c690b62bbb3e7e5ce34527cbd36b2d18532a797af123271ce595a49" dependencies = [ "alloy-json-rpc", "alloy-transport", "reqwest", "serde_json", - "tower 0.5.0", + "tower 0.5.1", "tracing", "url", ] [[package]] name = "alloy-transport-ipc" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aa02db8751f9c0c37caf8c38ad3eb7aa1cfb09cfea3451a13aacaf06846c7a5" +checksum = "09fd8491249f74d16ec979b1f5672377b12ebb818e6056478ffa386954dbd350" dependencies = [ "alloy-json-rpc", "alloy-pubsub", @@ -711,15 +719,15 @@ dependencies = [ [[package]] name = "alloy-transport-ws" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0a5c4a0929479bcb85a2df628c01173618a71c807b2f499939a236dbde5d008" +checksum = "a9704761f6297fe482276bee7f77a93cb42bd541c2bd6c1c560b6f3a9ece672e" dependencies = [ "alloy-pubsub", "alloy-transport", "futures", "http 1.1.0", - "rustls 0.23.12", + "rustls 0.23.13", "serde_json", "tokio", "tokio-tungstenite 0.23.1", @@ -729,9 +737,9 @@ dependencies = [ [[package]] name = "alloy-trie" -version = "0.5.1" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "398a977d774db13446b8cead8cfa9517aebf9e03fc8a1512892dc1e03e70bb04" +checksum = "0a46c9c4fdccda7982e7928904bd85fe235a0404ee3d7e197fff13d61eac8b4f" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -948,9 +956,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.86" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" [[package]] name = "arbitrary" @@ -1140,7 +1148,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -1162,18 +1170,18 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] name = "async-trait" -version = "0.1.82" +version = "0.1.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -1226,20 +1234,20 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "aws-config" -version = "1.5.5" +version = "1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e95816a168520d72c0e7680c405a5a8c1fb6a035b4bc4b9d7b0de8e1a941697" +checksum = "8191fb3091fa0561d1379ef80333c3c7191c6f0435d986e85821bcf7acbd1126" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1279,9 +1287,9 @@ dependencies = [ [[package]] name = "aws-runtime" -version = "1.4.2" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2424565416eef55906f9f8cece2072b6b6a76075e3ff81483ebe938a89a4c05f" +checksum = "a10d5c055aa540164d9561a0e2e74ad30f0dcf7393c3a92f6733ddf9c5762468" dependencies = [ "aws-credential-types", "aws-sigv4", @@ -1304,9 +1312,9 @@ dependencies = [ [[package]] name = "aws-sdk-kms" -version = "1.42.0" +version = "1.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "704ab31904cf70104a3bb023079e201b1353cf132ca674b26ba6f23acbbb53c9" +checksum = "0caf20b8855dbeb458552e6c8f8f9eb92b95e4a131725b93540ec73d60c38eb3" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1326,9 +1334,9 @@ dependencies = [ [[package]] name = "aws-sdk-sso" -version = "1.41.0" +version = "1.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af0a3f676cba2c079c9563acc9233998c8951cdbe38629a0bef3c8c1b02f3658" +checksum = "0b90cfe6504115e13c41d3ea90286ede5aa14da294f3fe077027a6e83850843c" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1348,9 +1356,9 @@ dependencies = [ [[package]] name = "aws-sdk-ssooidc" -version = "1.42.0" +version = "1.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c91b6a04495547162cf52b075e3c15a17ab6608bf9c5785d3e5a5509b3f09f5c" +checksum = "167c0fad1f212952084137308359e8e4c4724d1c643038ce163f06de9662c1d0" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1370,9 +1378,9 @@ dependencies = [ [[package]] name = "aws-sdk-sts" -version = "1.41.0" +version = "1.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99c56bcd6a56cab7933980a54148b476a5a69a7694e3874d9aa2a566f150447d" +checksum = "2cb5f98188ec1435b68097daa2a37d74b9d17c9caa799466338a8d1544e71b9d" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1393,9 +1401,9 @@ dependencies = [ [[package]] name = "aws-sigv4" -version = "1.2.3" +version = "1.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5df1b0fa6be58efe9d4ccc257df0a53b89cd8909e86591a13ca54817c87517be" +checksum = "cc8db6904450bafe7473c6ca9123f88cc11089e41a025408f992db4e22d3be68" dependencies = [ "aws-credential-types", "aws-smithy-http", @@ -1427,9 +1435,9 @@ dependencies = [ [[package]] name = "aws-smithy-http" -version = "0.60.10" +version = "0.60.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01dbcb6e2588fd64cfb6d7529661b06466419e4c54ed1c62d6510d2d0350a728" +checksum = "5c8bc3e8fdc6b8d07d976e301c02fe553f72a39b7a9fea820e023268467d7ab6" dependencies = [ "aws-smithy-runtime-api", "aws-smithy-types", @@ -1510,9 +1518,9 @@ dependencies = [ [[package]] name = "aws-smithy-types" -version = "1.2.4" +version = "1.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "273dcdfd762fae3e1650b8024624e7cd50e484e37abdab73a7a706188ad34543" +checksum = "147100a7bea70fa20ef224a6bad700358305f5dc0f84649c53769761395b355b" dependencies = [ "base64-simd", "bytes", @@ -1533,9 +1541,9 @@ dependencies = [ [[package]] name = "aws-smithy-xml" -version = "0.60.8" +version = "0.60.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d123fbc2a4adc3c301652ba8e149bf4bc1d1725affb9784eb20c953ace06bf55" +checksum = "ab0b0166827aa700d3dc519f72f8b3a91c35d0b8d042dc5d643a91e6f80648fc" dependencies = [ "xmlparser", ] @@ -1556,13 +1564,13 @@ dependencies = [ [[package]] name = "axum" -version = "0.7.5" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf" +checksum = "504e3947307ac8326a5437504c517c4b56716c9d98fac0028c2acc7ca47d70ae" dependencies = [ "async-trait", "axum-core", - "base64 0.21.7", + "base64 0.22.1", "bytes", "futures-util", "http 1.1.0", @@ -1584,8 +1592,8 @@ dependencies = [ "sha1", "sync_wrapper 1.0.1", "tokio", - "tokio-tungstenite 0.21.0", - "tower 0.4.13", + "tokio-tungstenite 0.24.0", + "tower 0.5.1", "tower-layer", "tower-service", "tracing", @@ -1593,9 +1601,9 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3" +checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" dependencies = [ "async-trait", "bytes", @@ -1606,7 +1614,7 @@ dependencies = [ "mime", "pin-project-lite", "rustversion", - "sync_wrapper 0.1.2", + "sync_wrapper 1.0.1", "tower-layer", "tower-service", "tracing", @@ -1755,7 +1763,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" dependencies = [ "memchr", - "regex-automata 0.4.7", + "regex-automata 0.4.8", "serde", ] @@ -1791,9 +1799,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.1" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" +checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" dependencies = [ "serde", ] @@ -1899,9 +1907,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.16" +version = "1.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9d013ecb737093c0e86b151a7b837993cf9ec6c502946cfb44bedc392421e0b" +checksum = "3bbb537bb4a30b90362caddba8f360c0a56bc13d3a5570028e7197204cb54a17" dependencies = [ "shlex", ] @@ -2014,9 +2022,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.17" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e5a21b8495e732f1b3c364c9949b201ca7bae518c502c80256c96ad79eaf6ac" +checksum = "b0956a43b323ac1afaffc053ed5c4b7c1f1800bacd1683c353aabbb752515dd3" dependencies = [ "clap_builder", "clap_derive", @@ -2024,9 +2032,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.17" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cf2dd12af7a047ad9d6da2b6b249759a22a7abc0f474c1dae1777afa4b21a73" +checksum = "4d72166dd41634086d5803a47eb71ae740e61d84709c36f3c34110173db3961b" dependencies = [ "anstream", "anstyle", @@ -2039,9 +2047,9 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.5.26" +version = "4.5.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "205d5ef6d485fa47606b98b0ddc4ead26eb850aaa86abfb562a94fb3280ecba0" +checksum = "8937760c3f4c60871870b8c3ee5f9b30771f792a7045c48bcbba999d7d6b3b8e" dependencies = [ "clap", ] @@ -2058,14 +2066,14 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.13" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" +checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -2263,9 +2271,9 @@ dependencies = [ [[package]] name = "const-hex" -version = "1.12.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94fb8a24a26d37e1ffd45343323dc9fe6654ceea44c12f2fcb3d7ac29e610bc6" +checksum = "0121754e84117e65f9d90648ee6aa4882a6e63110307ab73967a4c5e7e69e586" dependencies = [ "cfg-if", "cpufeatures", @@ -2307,9 +2315,9 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51e852e6dc9a5bed1fae92dd2375037bf2b768725bf3be87811edee3249d09ad" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" dependencies = [ "libc", ] @@ -2501,7 +2509,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -2512,7 +2520,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -2585,7 +2593,7 @@ checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -2606,7 +2614,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -2616,7 +2624,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4abae7035bf79b9877b779505d8cf3749285b80c43941eda66604841889451dc" dependencies = [ "derive_builder_core", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -2627,7 +2635,7 @@ checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -2648,7 +2656,7 @@ dependencies = [ "convert_case", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", "unicode-xid", ] @@ -2756,7 +2764,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -2883,7 +2891,7 @@ checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -2927,9 +2935,9 @@ dependencies = [ [[package]] name = "error-code" -version = "3.2.0" +version = "3.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0474425d51df81997e2f90a21591180b38eccf27292d755f3e30750225c175b" +checksum = "a5d9305ccc6942a704f4335694ecd3de2ea531b114ac2d51f5f843750787a92f" [[package]] name = "eth-keystore" @@ -3018,7 +3026,7 @@ dependencies = [ "regex", "serde", "serde_json", - "syn 2.0.77", + "syn 2.0.79", "toml 0.8.19", "walkdir", ] @@ -3046,7 +3054,7 @@ dependencies = [ "serde", "serde_json", "strum", - "syn 2.0.77", + "syn 2.0.79", "tempfile", "thiserror", "tiny-keccak", @@ -3076,9 +3084,9 @@ dependencies = [ [[package]] name = "evmole" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dc8472e812ff8f53a76946fa70b1cc4bf75c78755beb09df4d1376764769c7d" +checksum = "b6fcfb15a14bc209e2b3d2bd32291ec445b1e348d7d9d986aa61a09149350fd7" dependencies = [ "alloy-dyn-abi", "alloy-primitives", @@ -3196,9 +3204,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.33" +version = "1.0.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" +checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" dependencies = [ "crc32fast", "miniz_oxide 0.8.0", @@ -3410,7 +3418,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -3458,9 +3466,9 @@ dependencies = [ [[package]] name = "foundry-block-explorers" -version = "0.7.1" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "461772f04e5457d6b6501f6aff3a615a032d01368c1cc91c13a06eff172962b6" +checksum = "ff37530e7c5deead0f9d7dc2a27b070e683bef79735ab453849ebdee74fa848f" dependencies = [ "alloy-chains", "alloy-json-abi", @@ -3692,9 +3700,9 @@ dependencies = [ [[package]] name = "foundry-compilers" -version = "0.11.0" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3372aaa89b1653b61fb297dbc24e74ad727ff76cc4415f1a0ec5f802d24e0797" +checksum = "588bc1dd21020966a255a578433016d4637c810ed76127997a469bc4a3311e7f" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -3730,9 +3738,9 @@ dependencies = [ [[package]] name = "foundry-compilers-artifacts" -version = "0.11.0" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76c4f9ac0ed5e695bbeb48ff0758ba31ce3d0d52b752aaa466f311f48ed772c0" +checksum = "3b12c7a7ab554fde7521428b040205569c187995b817481720e99adf524bf7f8" dependencies = [ "foundry-compilers-artifacts-solc", "foundry-compilers-artifacts-vyper", @@ -3740,9 +3748,9 @@ dependencies = [ [[package]] name = "foundry-compilers-artifacts-solc" -version = "0.11.0" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ad6beeb057a8a58993d13841cffcb99e8aefdeb52ed9b368c85518747b467f9" +checksum = "4654933ab983928d8e33e7fdf425bb60553e8a4ac415a6014f1f2e56a5b3741d" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -3764,9 +3772,9 @@ dependencies = [ [[package]] name = "foundry-compilers-artifacts-vyper" -version = "0.11.0" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "442e5eb231aad523f0f3e26f9475ad9eab1aa2173a5991df1b7fa51f589f309f" +checksum = "2271a6689d27f42ffe1259f587196f56251508c6c9e362c585ccf234f5919f96" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -3779,15 +3787,14 @@ dependencies = [ [[package]] name = "foundry-compilers-core" -version = "0.11.0" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92049644ce2745c36be16f6406592155d4be2314306af2543c7d30a32b00d6ed" +checksum = "eb71494112126e7ecb92748913403c35ef949f18734e3ff4566a782ce2c8b986" dependencies = [ "alloy-primitives", "cfg-if", "dunce", "fs_extra", - "memmap2", "once_cell", "path-slash", "regex", @@ -3919,6 +3926,7 @@ dependencies = [ "parking_lot", "revm", "revm-inspectors", + "revm-primitives", "rustc-hash", "serde", "serde_json", @@ -3999,9 +4007,8 @@ dependencies = [ [[package]] name = "foundry-fork-db" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c88cb03fc4bd87856fc4d0ad38fd067f85c7c6306bf794202fc50a897449837b" +version = "0.3.1" +source = "git+ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git?rev=0d2a25e#0d2a25ed60758eb6a1caa897e608ec432ad338c7" dependencies = [ "alloy-primitives", "alloy-provider", @@ -4012,6 +4019,7 @@ dependencies = [ "futures", "parking_lot", "revm", + "revm-primitives", "rustc-hash", "serde", "serde_json", @@ -4038,7 +4046,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -4197,7 +4205,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -4257,7 +4265,7 @@ dependencies = [ "serde_json", "tokio", "tonic", - "tower 0.5.0", + "tower 0.5.1", "tower-layer", "tower-util", "tracing", @@ -4538,15 +4546,15 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "globset" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1" +checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" dependencies = [ "aho-corasick", "bstr", "log", - "regex-automata 0.4.7", - "regex-syntax 0.8.4", + "regex-automata 0.4.8", + "regex-syntax 0.8.5", ] [[package]] @@ -4713,7 +4721,7 @@ dependencies = [ "markup5ever", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -4780,9 +4788,9 @@ checksum = "08a397c49fec283e3d6211adbe480be95aae5f304cfb923e9970e08956d5168a" [[package]] name = "httparse" -version = "1.9.4" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" [[package]] name = "httpdate" @@ -4877,7 +4885,7 @@ dependencies = [ "http 1.1.0", "hyper 1.4.1", "hyper-util", - "rustls 0.23.12", + "rustls 0.23.13", "rustls-native-certs 0.8.0", "rustls-pki-types", "tokio", @@ -4917,9 +4925,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.7" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde7055719c54e36e95e8719f95883f22072a48ede39db7fc17a4e1d5281e9b9" +checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" dependencies = [ "bytes", "futures-channel", @@ -4930,16 +4938,15 @@ dependencies = [ "pin-project-lite", "socket2", "tokio", - "tower 0.4.13", "tower-service", "tracing", ] [[package]] name = "iana-time-zone" -version = "0.1.60" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -4976,15 +4983,15 @@ dependencies = [ [[package]] name = "ignore" -version = "0.4.22" +version = "0.4.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b46810df39e66e925525d6e38ce1e7f6e1d208f72dc39757880fcb66e2c58af1" +checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" dependencies = [ "crossbeam-deque", "globset", "log", "memchr", - "regex-automata 0.4.7", + "regex-automata 0.4.8", "same-file", "walkdir", "winapi-util", @@ -5128,7 +5135,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b23a0c8dfe501baac4adf6ebbfa6eddf8f0c07f56b058cc1288017e32397846c" dependencies = [ "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -5157,9 +5164,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.9.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4" [[package]] name = "is-terminal" @@ -5248,9 +5255,9 @@ dependencies = [ [[package]] name = "k256" -version = "0.13.3" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" dependencies = [ "cfg-if", "ecdsa", @@ -5271,9 +5278,9 @@ dependencies = [ [[package]] name = "keccak-asm" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "422fbc7ff2f2f5bdffeb07718e5a5324dca72b0c9293d50df4026652385e3314" +checksum = "505d1856a39b200489082f90d897c3f07c455563880bc5952e38eabf731c83b6" dependencies = [ "digest 0.10.7", "sha3-asm", @@ -5312,7 +5319,7 @@ dependencies = [ "lalrpop-util", "petgraph", "regex", - "regex-syntax 0.8.4", + "regex-syntax 0.8.5", "string_cache", "term", "tiny-keccak", @@ -5326,7 +5333,7 @@ version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553" dependencies = [ - "regex-automata 0.4.7", + "regex-automata 0.4.8", ] [[package]] @@ -5340,9 +5347,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.158" +version = "0.2.159" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" +checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" [[package]] name = "libdbus-sys" @@ -5520,9 +5527,9 @@ checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "memmap2" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322" +checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" dependencies = [ "libc", ] @@ -5567,7 +5574,7 @@ checksum = "dcf09caffaac8068c346b6df2a7fc27a177fd20b39421a39ce0a211bde679a6c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -5658,7 +5665,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -5908,7 +5915,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -5950,9 +5957,12 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "82881c4be219ab5faaf2ad5e5e5ecdff8c66bd7402ca3160975c93b24961afd1" +dependencies = [ + "portable-atomic", +] [[package]] name = "oorandom" @@ -5962,9 +5972,9 @@ checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9" [[package]] name = "op-alloy-consensus" -version = "0.2.8" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b7fbb0f5c3754c22c6ea30e100dca6aea73b747e693e27763e23ca92fb02f2f" +checksum = "21aad1fbf80d2bcd7406880efc7ba109365f44bbb72896758ddcbfa46bf1592c" dependencies = [ "alloy-consensus", "alloy-eips", @@ -5978,14 +5988,17 @@ dependencies = [ [[package]] name = "op-alloy-rpc-types" -version = "0.2.8" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1fbb93dcb71aba9cd555784375011efce1fdaaea67e01972a0a9bc9eb90c626" +checksum = "e281fbfc2198b7c0c16457d6524f83d192662bc9f3df70f24c3038d4521616df" dependencies = [ - "alloy-network", + "alloy-eips", + "alloy-network-primitives", "alloy-primitives", "alloy-rpc-types-eth", "alloy-serde", + "cfg-if", + "hashbrown 0.14.5", "op-alloy-consensus", "serde", "serde_json", @@ -6051,7 +6064,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -6136,9 +6149,9 @@ dependencies = [ [[package]] name = "parking" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" @@ -6214,7 +6227,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -6244,9 +6257,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.11" +version = "2.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd53dff83f26735fdc1ca837098ccf133605d794cdae66acfc2bfac3ec809d95" +checksum = "fdbef9d1d47087a895abd220ed25eb4ad973a5e26f6a4367b038c25e28dfc2d9" dependencies = [ "memchr", "thiserror", @@ -6255,9 +6268,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.7.11" +version = "2.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a548d2beca6773b1c244554d36fcf8548a8a58e74156968211567250e48e49a" +checksum = "4d3a6e3394ec80feb3b6393c725571754c6188490265c61aaf260810d6b95aa0" dependencies = [ "pest", "pest_generator", @@ -6265,22 +6278,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.11" +version = "2.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c93a82e8d145725dcbaf44e5ea887c8a869efdcc28706df2d08c69e17077183" +checksum = "94429506bde1ca69d1b5601962c73f4172ab4726571a59ea95931218cb0e930e" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] name = "pest_meta" -version = "2.7.11" +version = "2.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a941429fea7e08bedec25e4f6785b6ffaacc6b755da98df5ef3e7dcf4a124c4f" +checksum = "ac8a071862e93690b6e34e9a5fb8e33ff3734473ac0245b27232222c4906a33f" dependencies = [ "once_cell", "pest", @@ -6357,7 +6370,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -6415,7 +6428,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -6442,15 +6455,15 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "plotters" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a15b6eccb8484002195a3e44fe65a4ce8e93a625797a063735536fd59cb01cf3" +checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747" dependencies = [ "num-traits", "plotters-backend", @@ -6461,24 +6474,24 @@ dependencies = [ [[package]] name = "plotters-backend" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "414cec62c6634ae900ea1c56128dfe87cf63e7caece0852ec76aba307cebadb7" +checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a" [[package]] name = "plotters-svg" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81b30686a7d9c3e010b84284bdd26a29f2138574f52f5eb6f794fc0ad924e705" +checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670" dependencies = [ "plotters-backend", ] [[package]] name = "portable-atomic" -version = "1.7.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265" +checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" [[package]] name = "powerfmt" @@ -6534,7 +6547,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" dependencies = [ "proc-macro2", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -6605,14 +6618,14 @@ dependencies = [ [[package]] name = "proc-macro-error2" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74cdd32837fa2e86ec09c8266e5aad92400ac934c6dbca83d54673b298db3e45" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -6632,7 +6645,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", "version_check", "yansi", ] @@ -6682,7 +6695,7 @@ dependencies = [ "rand", "rand_chacha", "rand_xorshift", - "regex-syntax 0.8.4", + "regex-syntax 0.8.5", "rusty-fork", "tempfile", "unarray", @@ -6696,14 +6709,14 @@ checksum = "6ff7ff745a347b87471d859a377a9a404361e7efc2a971d73424a6d183c0fc77" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] name = "prost" -version = "0.13.2" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2ecbe40f08db5c006b5764a2645f7f3f141ce756412ac9e1dd6087e6d32995" +checksum = "7b0487d90e047de87f984913713b85c601c05609aad5b0df4b4573fbf69aa13f" dependencies = [ "bytes", "prost-derive", @@ -6711,22 +6724,22 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.13.2" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acf0c195eebb4af52c752bec4f52f645da98b6e92077a04110c7f349477ae5ac" +checksum = "e9552f850d5f0964a4e4d0bf306459ac29323ddfbae05e35a7c0d35cb0803cc5" dependencies = [ "anyhow", "itertools 0.13.0", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] name = "prost-types" -version = "0.13.2" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60caa6738c7369b940c3d49246a8d1749323674c65cb13010134f5c9bad5b519" +checksum = "4759aa0d3a6232fb8dbdb97b61de2c20047c68aca932c7ed76da9d788508d670" dependencies = [ "prost", ] @@ -6795,7 +6808,7 @@ dependencies = [ "quinn-proto", "quinn-udp", "rustc-hash", - "rustls 0.23.12", + "rustls 0.23.13", "socket2", "thiserror", "tokio", @@ -6812,7 +6825,7 @@ dependencies = [ "rand", "ring", "rustc-hash", - "rustls 0.23.12", + "rustls 0.23.13", "slab", "thiserror", "tinyvec", @@ -6945,9 +6958,9 @@ checksum = "d3edd4d5d42c92f0a659926464d4cce56b562761267ecf0f469d85b7de384175" [[package]] name = "redox_syscall" -version = "0.5.3" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" dependencies = [ "bitflags 2.6.0", ] @@ -6965,14 +6978,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.6" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.7", - "regex-syntax 0.8.4", + "regex-automata 0.4.8", + "regex-syntax 0.8.5", ] [[package]] @@ -6986,13 +6999,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.4", + "regex-syntax 0.8.5", ] [[package]] @@ -7009,15 +7022,15 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" -version = "0.12.7" +version = "0.12.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63" +checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b" dependencies = [ "async-compression", "base64 0.22.1", @@ -7042,9 +7055,9 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.12", - "rustls-native-certs 0.7.3", - "rustls-pemfile 2.1.3", + "rustls 0.23.13", + "rustls-native-certs 0.8.0", + "rustls-pemfile 2.2.0", "rustls-pki-types", "serde", "serde_json", @@ -7067,9 +7080,8 @@ dependencies = [ [[package]] name = "revm" -version = "14.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f719e28cc6fdd086f8bc481429e587740d20ad89729cec3f5f5dd7b655474df" +version = "14.0.0" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=647e76f4#647e76f4a0ecbacfb30fc53d0bfcb9709e4eed44" dependencies = [ "auto_impl", "cfg-if", @@ -7083,8 +7095,7 @@ dependencies = [ [[package]] name = "revm-inspectors" version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48184032103bb23788e42e42c7c85207f5b0b8a248b09ea8f5233077f35ab56e" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git?rev=a77b988#a77b988b82486f521193f01231def7809a38e8b3" dependencies = [ "alloy-primitives", "alloy-rpc-types", @@ -7099,9 +7110,8 @@ dependencies = [ [[package]] name = "revm-interpreter" -version = "10.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "959ecbc36802de6126852479844737f20194cf8e6718e0c30697d306a2cca916" +version = "10.0.0" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=647e76f4#647e76f4a0ecbacfb30fc53d0bfcb9709e4eed44" dependencies = [ "revm-primitives", "serde", @@ -7109,12 +7119,10 @@ dependencies = [ [[package]] name = "revm-precompile" -version = "11.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e25f604cb9db593ca3013be8c00f310d6790ccb1b7d8fbbdd4660ec8888043a" +version = "11.0.0" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=647e76f4#647e76f4a0ecbacfb30fc53d0bfcb9709e4eed44" dependencies = [ "aurora-engine-modexp", - "blst", "c-kzg", "cfg-if", "k256", @@ -7129,9 +7137,8 @@ dependencies = [ [[package]] name = "revm-primitives" -version = "9.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ccb981ede47ccf87c68cebf1ba30cdbb7ec935233ea305f3dfff4c1e10ae541" +version = "9.0.0" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=647e76f4#647e76f4a0ecbacfb30fc53d0bfcb9709e4eed44" dependencies = [ "alloy-eips", "alloy-primitives", @@ -7144,6 +7151,8 @@ dependencies = [ "enumn", "hashbrown 0.14.5", "hex", + "proptest", + "proptest-derive", "serde", ] @@ -7303,9 +7312,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.36" +version = "0.38.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f55e80d50763938498dd5ebb18647174e0c76dc38c5505294bb224624f30f36" +checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" dependencies = [ "bitflags 2.6.0", "errno", @@ -7328,15 +7337,15 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.12" +version = "0.23.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" +checksum = "f2dabaac7466917e566adb06783a81ca48944c6898a1b08b9374106dd671f4c8" dependencies = [ "log", "once_cell", "ring", "rustls-pki-types", - "rustls-webpki 0.102.7", + "rustls-webpki 0.102.8", "subtle", "zeroize", ] @@ -7353,19 +7362,6 @@ dependencies = [ "security-framework", ] -[[package]] -name = "rustls-native-certs" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5" -dependencies = [ - "openssl-probe", - "rustls-pemfile 2.1.3", - "rustls-pki-types", - "schannel", - "security-framework", -] - [[package]] name = "rustls-native-certs" version = "0.8.0" @@ -7373,7 +7369,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcaf18a4f2be7326cd874a5fa579fae794320a0f388d365dca7e480e55f83f8a" dependencies = [ "openssl-probe", - "rustls-pemfile 2.1.3", + "rustls-pemfile 2.2.0", "rustls-pki-types", "schannel", "security-framework", @@ -7390,19 +7386,18 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "2.1.3" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" dependencies = [ - "base64 0.22.1", "rustls-pki-types", ] [[package]] name = "rustls-pki-types" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" +checksum = "0e696e35370c65c9c541198af4543ccd580cf17fc25d8e05c5a242b202488c55" [[package]] name = "rustls-webpki" @@ -7416,9 +7411,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.102.7" +version = "0.102.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84678086bd54edf2b415183ed7a94d0efb049f1b646a33e22a36f3794be6ae56" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" dependencies = [ "ring", "rustls-pki-types", @@ -7525,20 +7520,20 @@ dependencies = [ [[package]] name = "scc" -version = "2.1.16" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aeb7ac86243095b70a7920639507b71d51a63390d1ba26c4f60a552fbb914a37" +checksum = "836f1e0f4963ef5288b539b643b35e043e76a32d0f4e47e67febf69576527f50" dependencies = [ "sdd", ] [[package]] name = "schannel" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -7562,7 +7557,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -7601,9 +7596,9 @@ dependencies = [ [[package]] name = "sdd" -version = "3.0.2" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0495e4577c672de8254beb68d01a9b62d0e8a13c099edecdbedccce3223cd29f" +checksum = "60a7b59a5d9b0099720b417b6325d91a52cbf5b3dcb5041d864be53eefa58abc" [[package]] name = "sec1" @@ -7621,9 +7616,9 @@ dependencies = [ [[package]] name = "secp256k1" -version = "0.29.0" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e0cc0f1cf93f4969faf3ea1c7d8a9faed25918d96affa959720823dfe86d4f3" +checksum = "9465315bc9d4566e1724f0fffcbcc446268cb522e60f9a27bcded6b19c108113" dependencies = [ "rand", "secp256k1-sys", @@ -7631,9 +7626,9 @@ dependencies = [ [[package]] name = "secp256k1-sys" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1433bd67156263443f14d603720b082dd3121779323fce20cba2aa07b874bc1b" +checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" dependencies = [ "cc", ] @@ -7666,9 +7661,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.1" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" +checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" dependencies = [ "core-foundation-sys", "libc", @@ -7709,22 +7704,22 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.209" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99fce0ffe7310761ca6bf9faf5115afbc19688edd00171d81b1bb1b116c63e09" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.209" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -7735,7 +7730,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -7779,14 +7774,14 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] name = "serde_spanned" -version = "0.6.7" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" dependencies = [ "serde", ] @@ -7825,7 +7820,7 @@ checksum = "82fe9db325bcef1fbcde82e078a5cc4efdf787e96b3b9cf45b50b529f2083d67" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -7868,9 +7863,9 @@ dependencies = [ [[package]] name = "sha3-asm" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d79b758b7cb2085612b11a235055e485605a5103faccdd633f35bd7aee69dd" +checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46" dependencies = [ "cc", "cfg-if", @@ -8152,7 +8147,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -8220,9 +8215,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.77" +version = "2.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" +checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" dependencies = [ "proc-macro2", "quote", @@ -8231,12 +8226,13 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "0.8.1" +version = "0.8.5" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=6641735#6641735e58859b64030a2cce8f0b13653a0f1685" dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -8262,9 +8258,9 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.12.0" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" +checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" dependencies = [ "cfg-if", "fastrand", @@ -8326,22 +8322,22 @@ checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" [[package]] name = "thiserror" -version = "1.0.63" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.63" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -8476,7 +8472,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -8505,7 +8501,7 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ - "rustls 0.23.12", + "rustls 0.23.13", "rustls-pki-types", "tokio", ] @@ -8536,30 +8532,30 @@ dependencies = [ [[package]] name = "tokio-tungstenite" -version = "0.21.0" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c83b561d025642014097b66e6c1bb422783339e0909e4429cde4749d1990bc38" +checksum = "c6989540ced10490aaf14e6bad2e3d33728a2813310a0c71d1574304c49631cd" dependencies = [ "futures-util", "log", + "rustls 0.23.13", + "rustls-pki-types", "tokio", - "tungstenite 0.21.0", + "tokio-rustls 0.26.0", + "tungstenite 0.23.0", + "webpki-roots", ] [[package]] name = "tokio-tungstenite" -version = "0.23.1" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6989540ced10490aaf14e6bad2e3d33728a2813310a0c71d1574304c49631cd" +checksum = "edc5f74e248dc973e0dbb7b74c7e0d6fcc301c694ff50049504004ef4d0cdcd9" dependencies = [ "futures-util", "log", - "rustls 0.23.12", - "rustls-pki-types", "tokio", - "tokio-rustls 0.26.0", - "tungstenite 0.23.0", - "webpki-roots", + "tungstenite 0.24.0", ] [[package]] @@ -8608,9 +8604,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.20" +version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ "indexmap 2.5.0", "serde", @@ -8621,9 +8617,9 @@ dependencies = [ [[package]] name = "tonic" -version = "0.12.2" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6f6ba989e4b2c58ae83d862d3a3e27690b6e3ae630d0deb59f3697f32aa88ad" +checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" dependencies = [ "async-stream", "async-trait", @@ -8640,8 +8636,8 @@ dependencies = [ "percent-encoding", "pin-project 1.1.5", "prost", - "rustls-native-certs 0.7.3", - "rustls-pemfile 2.1.3", + "rustls-native-certs 0.8.0", + "rustls-pemfile 2.2.0", "socket2", "tokio", "tokio-rustls 0.26.0", @@ -8680,16 +8676,18 @@ dependencies = [ [[package]] name = "tower" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36b837f86b25d7c0d7988f00a54e74739be6477f2aac6201b8f429a7569991b7" +checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f" dependencies = [ "futures-core", "futures-util", "pin-project-lite", "sync_wrapper 0.1.2", + "tokio", "tower-layer", "tower-service", + "tracing", ] [[package]] @@ -8761,7 +8759,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -8815,9 +8813,9 @@ dependencies = [ [[package]] name = "tracing-tracy" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6a90519f16f55e5c62ffd5976349f10744435a919ecff83d918300575dfb69b" +checksum = "dc775fdaf33c3dfd19dc354729e65e87914bc67dcdc390ca1210807b8bee5902" dependencies = [ "tracing-core", "tracing-subscriber", @@ -8826,9 +8824,9 @@ dependencies = [ [[package]] name = "tracy-client" -version = "0.17.3" +version = "0.17.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "373db47331c3407b343538df77eea2516884a0b126cdfb4b135acfd400015dd7" +checksum = "746b078c6a09ebfd5594609049e07116735c304671eaab06ce749854d23435bc" dependencies = [ "loom", "once_cell", @@ -8837,9 +8835,9 @@ dependencies = [ [[package]] name = "tracy-client-sys" -version = "0.24.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49cf0064dcb31c99aa1244c1b93439359e53f72ed217eef5db50abd442241e9a" +checksum = "68613466112302fdbeabc5fa55f7d57462a0b247d5a6b7d7e09401fb471a144d" dependencies = [ "cc", ] @@ -8866,9 +8864,9 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "tungstenite" -version = "0.21.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ef1a641ea34f399a848dea702823bbecfb4c486f911735368f1f137cb8257e1" +checksum = "6e2e2ce1e47ed2994fd43b04c8f618008d4cabdd5ee34027cf14f9d918edd9c8" dependencies = [ "byteorder", "bytes", @@ -8877,17 +8875,18 @@ dependencies = [ "httparse", "log", "rand", + "rustls 0.23.13", + "rustls-pki-types", "sha1", "thiserror", - "url", "utf-8", ] [[package]] name = "tungstenite" -version = "0.23.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e2e2ce1e47ed2994fd43b04c8f618008d4cabdd5ee34027cf14f9d918edd9c8" +checksum = "18e5b8366ee7a95b16d32197d0b2604b43a0be89dc5fac9f8e96ccafbaedda8a" dependencies = [ "byteorder", "bytes", @@ -8896,8 +8895,6 @@ dependencies = [ "httparse", "log", "rand", - "rustls 0.23.12", - "rustls-pki-types", "sha1", "thiserror", "utf-8", @@ -8911,9 +8908,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "ucd-trie" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" [[package]] name = "uint" @@ -8965,24 +8962,24 @@ checksum = "7eec5d1121208364f6793f7d2e222bf75a915c19557537745b195b253dd64217" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-normalization" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" dependencies = [ "tinyvec", ] [[package]] name = "unicode-segmentation" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-truncate" @@ -8997,15 +8994,15 @@ dependencies = [ [[package]] name = "unicode-width" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "unicode-xid" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "untrusted" @@ -9154,7 +9151,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", "wasm-bindgen-shared", ] @@ -9188,7 +9185,7 @@ checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -9201,9 +9198,9 @@ checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" [[package]] name = "wasm-streams" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129" +checksum = "4e072d4e72f700fb3443d8fe94a39315df013eef1104903cdb0a2abd322bbecd" dependencies = [ "futures-util", "js-sys", @@ -9287,9 +9284,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.5" +version = "0.26.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bd24728e5af82c6c4ec1b66ac4844bdf8156257fccda846ec58b42cd0cdbe6a" +checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" dependencies = [ "rustls-pki-types", ] @@ -9405,7 +9402,7 @@ checksum = "f6fc35f58ecd95a9b71c4f2329b911016e6bec66b3f2e6a4aad86bd2e99e2f9b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -9416,7 +9413,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -9427,7 +9424,7 @@ checksum = "08990546bf4edef8f431fa6326e032865f27138718c587dc21bc0265bbcb57cc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -9438,7 +9435,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -9630,9 +9627,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.6.18" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" dependencies = [ "memchr", ] @@ -9704,7 +9701,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -9724,7 +9721,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -9769,15 +9766,3 @@ dependencies = [ "once_cell", "simd-adler32", ] - -[[patch.unused]] -name = "alloy-core" -version = "0.8.1" - -[[patch.unused]] -name = "revm" -version = "14.0.0" - -[[patch.unused]] -name = "revm-primitives" -version = "9.0.0" diff --git a/Cargo.toml b/Cargo.toml index 20347e753..1eb9452f9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -164,44 +164,44 @@ solang-parser = "=0.3.3" ## revm # no default features to avoid c-kzg -revm = { version = "14.0.1", default-features = false } -revm-primitives = { version = "9.0.1", default-features = false } -revm-inspectors = { version = "0.6", features = ["serde"] } +revm = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "647e76f4", default-features = false } +revm-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "647e76f4", default-features = false } +revm-inspectors = { git = "ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "a77b988", features = ["serde"] } ## ethers ethers-contract-abigen = { version = "2.0.14", default-features = false } ## alloy -alloy-consensus = { version = "0.3.5", default-features = false } -alloy-contract = { version = "0.3.5", default-features = false } -alloy-eips = { version = "0.3.5", default-features = false } -alloy-genesis = { version = "0.3.5", default-features = false } -alloy-json-rpc = { version = "0.3.5", default-features = false } -alloy-network = { version = "0.3.5", default-features = false } -alloy-provider = { version = "0.3.5", default-features = false } -alloy-pubsub = { version = "0.3.5", default-features = false } -alloy-rpc-client = { version = "0.3.5", default-features = false } -alloy-rpc-types = { version = "0.3.5", default-features = true } -alloy-serde = { version = "0.3.5", default-features = false } -alloy-signer = { version = "0.3.5", default-features = false } -alloy-signer-aws = { version = "0.3.5", default-features = false } -alloy-signer-gcp = { version = "0.3.5", default-features = false } -alloy-signer-ledger = { version = "0.3.5", default-features = false } -alloy-signer-local = { version = "0.3.5", default-features = false } -alloy-signer-trezor = { version = "0.3.5", default-features = false } -alloy-transport = { version = "0.3.5", default-features = false } -alloy-transport-http = { version = "0.3.5", default-features = false } -alloy-transport-ipc = { version = "0.3.5", default-features = false } -alloy-transport-ws = { version = "0.3.5", default-features = false } +alloy-consensus = { version = "0.3.6", default-features = false } +alloy-contract = { version = "0.3.6", default-features = false } +alloy-eips = { version = "0.3.6", default-features = false } +alloy-genesis = { version = "0.3.6", default-features = false } +alloy-json-rpc = { version = "0.3.6", default-features = false } +alloy-network = { version = "0.3.6", default-features = false } +alloy-provider = { version = "0.3.6", default-features = false } +alloy-pubsub = { version = "0.3.6", default-features = false } +alloy-rpc-client = { version = "0.3.6", default-features = false } +alloy-rpc-types = { version = "0.3.6", default-features = true } +alloy-serde = { version = "0.3.6", default-features = false } +alloy-signer = { version = "0.3.6", default-features = false } +alloy-signer-aws = { version = "0.3.6", default-features = false } +alloy-signer-gcp = { version = "0.3.6", default-features = false } +alloy-signer-ledger = { version = "0.3.6", default-features = false } +alloy-signer-local = { version = "0.3.6", default-features = false } +alloy-signer-trezor = { version = "0.3.6", default-features = false } +alloy-transport = { version = "0.3.6", default-features = false } +alloy-transport-http = { version = "0.3.6", default-features = false } +alloy-transport-ipc = { version = "0.3.6", default-features = false } +alloy-transport-ws = { version = "0.3.6", default-features = false } ## alloy-core -alloy-dyn-abi = { version = "0.8.1", features = ["seismic", "std"] } -alloy-json-abi = { version = "0.8.1", features = ["seismic"] } -alloy-primitives = { path = "../seismic-alloy-core/crates/primitives", features = ["getrandom", "rand", "seismic"] } -alloy-sol-macro-expander = { version = "0.8.1", features = ["seismic"] } -alloy-sol-macro-input = { version = "0.8.1", features = ["seismic"] } -alloy-sol-types = { version = "0.8.1", features = ["seismic"] } -syn-solidity = { version = "0.8.1", features = ["seismic"] } +alloy-dyn-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6641735", features = ["seismic", "std"] } +alloy-json-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6641735", features = ["seismic"] } +alloy-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6641735", features = ["getrandom", "rand", "seismic"] } +alloy-sol-macro-expander = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6641735", features = ["seismic"] } +alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6641735", features = ["seismic"] } +alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6641735", features = ["seismic"] } +syn-solidity = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6641735", features = ["seismic"] } alloy-chains = "0.1" alloy-rlp = "0.3" @@ -273,16 +273,17 @@ comfy-table = "7" # and instead use our local version # seismic-revm -revm = { path = "../seismic-revm/crates/revm" } -revm-primitives = { path = "../seismic-revm/crates/primitives" } +revm = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "647e76f4" } +revm-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "647e76f4" } + +foundry-fork-db = { git = "ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "0d2a25e" } # seismic-alloy-core -alloy-core = { path = "../seismic-alloy-core/crates/core" } -alloy-dyn-abi = { path = "../seismic-alloy-core/crates/dyn-abi" } -alloy-json-abi = { path = "../seismic-alloy-core/crates/json-abi" } -alloy-primitives = { path = "../seismic-alloy-core/crates/primitives" } -alloy-sol-macro = { path = "../seismic-alloy-core/crates/sol-macro" } -alloy-sol-macro-expander = { path = "../seismic-alloy-core/crates/sol-macro-expander" } -alloy-sol-macro-input = { path = "../seismic-alloy-core/crates/sol-macro-input" } -alloy-sol-types = { path = "../seismic-alloy-core/crates/sol-types" } -alloy-sol-type-parser = { path = "../seismic-alloy-core/crates/sol-type-parser" } +alloy-dyn-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6641735" } +alloy-json-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6641735" } +alloy-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6641735" } +alloy-sol-macro = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6641735" } +alloy-sol-macro-expander = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6641735" } +alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6641735" } +alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6641735" } +alloy-sol-type-parser = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6641735" } diff --git a/crates/anvil/src/eth/backend/db.rs b/crates/anvil/src/eth/backend/db.rs index cf8f1f5c9..a1e89eda6 100644 --- a/crates/anvil/src/eth/backend/db.rs +++ b/crates/anvil/src/eth/backend/db.rs @@ -19,6 +19,7 @@ use foundry_evm::{ Database, DatabaseCommit, }, }; +use revm::primitives::FlaggedStorage; use serde::{Deserialize, Serialize}; use std::{collections::BTreeMap, fmt, path::Path}; @@ -112,7 +113,12 @@ pub trait Db: } /// Sets the balance of the given address - fn set_storage_at(&mut self, address: Address, slot: U256, val: U256) -> DatabaseResult<()>; + fn set_storage_at( + &mut self, + address: Address, + slot: U256, + val: FlaggedStorage, + ) -> DatabaseResult<()>; /// inserts a blockhash for the given number fn insert_block_hash(&mut self, number: U256, hash: B256); @@ -152,7 +158,7 @@ pub trait Db: ); for (k, v) in account.storage.into_iter() { - self.set_storage_at(addr, k, v)?; + self.set_storage_at(addr, k, v.into())?; } } Ok(true) @@ -184,7 +190,12 @@ impl + Send + Sync + Clone + fmt::Debug> D self.insert_account_info(address, account) } - fn set_storage_at(&mut self, address: Address, slot: U256, val: U256) -> DatabaseResult<()> { + fn set_storage_at( + &mut self, + address: Address, + slot: U256, + val: FlaggedStorage, + ) -> DatabaseResult<()> { self.insert_account_storage(address, slot, val) } @@ -292,7 +303,7 @@ impl DatabaseRef for StateDb { self.0.code_by_hash_ref(code_hash) } - fn storage_ref(&self, address: Address, index: U256) -> DatabaseResult { + fn storage_ref(&self, address: Address, index: U256) -> DatabaseResult { self.0.storage_ref(address, index) } @@ -356,7 +367,7 @@ pub struct SerializableAccountRecord { pub nonce: u64, pub balance: U256, pub code: Bytes, - pub storage: BTreeMap, + pub storage: BTreeMap, } /// Defines a backwards-compatible enum for transactions. diff --git a/crates/anvil/src/eth/backend/genesis.rs b/crates/anvil/src/eth/backend/genesis.rs index ee459204d..c5d333ccb 100644 --- a/crates/anvil/src/eth/backend/genesis.rs +++ b/crates/anvil/src/eth/backend/genesis.rs @@ -49,7 +49,11 @@ impl GenesisConfig { db.insert_account(addr, self.genesis_to_account_info(&acc)); // insert all storage values for (k, v) in storage.unwrap_or_default().iter() { - db.set_storage_at(addr, U256::from_be_bytes(k.0), U256::from_be_bytes(v.0))?; + db.set_storage_at( + addr, + U256::from_be_bytes(k.0), + U256::from_be_bytes(v.0).into(), + )?; } } } diff --git a/crates/anvil/src/eth/backend/mem/fork_db.rs b/crates/anvil/src/eth/backend/mem/fork_db.rs index a179f50c3..ea2f54742 100644 --- a/crates/anvil/src/eth/backend/mem/fork_db.rs +++ b/crates/anvil/src/eth/backend/mem/fork_db.rs @@ -12,6 +12,7 @@ use foundry_evm::{ fork::database::ForkDbSnapshot, revm::Database, }; +use revm::primitives::FlaggedStorage; pub use foundry_evm::fork::database::ForkedDatabase; use foundry_evm::revm::primitives::BlockEnv; @@ -22,7 +23,12 @@ impl Db for ForkedDatabase { self.database_mut().insert_account(address, account) } - fn set_storage_at(&mut self, address: Address, slot: U256, val: U256) -> DatabaseResult<()> { + fn set_storage_at( + &mut self, + address: Address, + slot: U256, + val: FlaggedStorage, + ) -> DatabaseResult<()> { // this ensures the account is loaded first let _ = Database::basic(self, address)?; self.database_mut().set_storage_at(address, slot, val) diff --git a/crates/anvil/src/eth/backend/mem/in_memory_db.rs b/crates/anvil/src/eth/backend/mem/in_memory_db.rs index 059c00f32..622e1f570 100644 --- a/crates/anvil/src/eth/backend/mem/in_memory_db.rs +++ b/crates/anvil/src/eth/backend/mem/in_memory_db.rs @@ -14,6 +14,7 @@ use foundry_evm::{ backend::{BlockchainDb, DatabaseResult, StateSnapshot}, hashbrown::HashMap, }; +use revm::primitives::FlaggedStorage; // reexport for convenience pub use foundry_evm::{backend::MemDb, revm::db::DatabaseRef}; @@ -24,7 +25,12 @@ impl Db for MemDb { self.inner.insert_account_info(address, account) } - fn set_storage_at(&mut self, address: Address, slot: U256, val: U256) -> DatabaseResult<()> { + fn set_storage_at( + &mut self, + address: Address, + slot: U256, + val: FlaggedStorage, + ) -> DatabaseResult<()> { self.inner.insert_account_storage(address, slot, val) } @@ -202,8 +208,8 @@ mod tests { }, ); - db.set_storage_at(test_addr, U256::from(1234567), U256::from(1)).unwrap(); - db.set_storage_at(test_addr, U256::from(1234568), U256::from(2)).unwrap(); + db.set_storage_at(test_addr, U256::from(1234567), U256::from(1).into()).unwrap(); + db.set_storage_at(test_addr, U256::from(1234568), U256::from(2).into()).unwrap(); let mut new_state = SerializableState::default(); diff --git a/crates/anvil/src/eth/backend/mem/mod.rs b/crates/anvil/src/eth/backend/mem/mod.rs index 86e8ad039..0b05efb39 100644 --- a/crates/anvil/src/eth/backend/mem/mod.rs +++ b/crates/anvil/src/eth/backend/mem/mod.rs @@ -89,7 +89,8 @@ use parking_lot::{Mutex, RwLock}; use revm::{ db::WrapDatabaseRef, primitives::{ - calc_blob_gasprice, BlobExcessGasAndPrice, HashMap, OptimismFields, ResultAndState, + calc_blob_gasprice, BlobExcessGasAndPrice, FlaggedStorage, HashMap, OptimismFields, + ResultAndState, }, }; use std::{ @@ -562,7 +563,7 @@ impl Backend { slot: U256, val: B256, ) -> DatabaseResult<()> { - self.db.write().await.set_storage_at(address, slot, U256::from_be_bytes(val.0)) + self.db.write().await.set_storage_at(address, slot, U256::from_be_bytes(val.0).into()) } /// Returns the configured specid @@ -1301,6 +1302,7 @@ impl Backend { GethDebugBuiltInTracerType::MuxTracer => { Err(RpcError::invalid_params("unsupported tracer type").into()) } + GethDebugBuiltInTracerType::FlatCallTracer => todo!(), }, GethDebugTracerType::JsTracer(_code) => { @@ -2426,7 +2428,7 @@ impl Backend { .map(|(key, proof)| { let storage_key: U256 = key.into(); let value = account.storage.get(&storage_key).cloned().unwrap_or_default(); - StorageProof { key: JsonStorageKey(key), value, proof } + StorageProof { key: JsonStorageKey(key), value: value.into(), proof } }) .collect(), }; @@ -2767,7 +2769,7 @@ pub fn transaction_build( /// `storage_key` is the hash of the desired storage key, meaning /// this will only work correctly under a secure trie. /// `storage_key` == keccak(key) -pub fn prove_storage(storage: &HashMap, keys: &[B256]) -> Vec> { +pub fn prove_storage(storage: &HashMap, keys: &[B256]) -> Vec> { let keys: Vec<_> = keys.iter().map(|key| Nibbles::unpack(keccak256(key))).collect(); let mut builder = HashBuilder::default().with_proof_retainer(ProofRetainer::new(keys.clone())); diff --git a/crates/anvil/src/eth/backend/mem/state.rs b/crates/anvil/src/eth/backend/mem/state.rs index 9d66fac28..93a37d48d 100644 --- a/crates/anvil/src/eth/backend/mem/state.rs +++ b/crates/anvil/src/eth/backend/mem/state.rs @@ -12,6 +12,7 @@ use foundry_evm::{ primitives::{AccountInfo, Bytecode, HashMap}, }, }; +use revm::primitives::FlaggedStorage; pub fn build_root(values: impl IntoIterator)>) -> B256 { let mut builder = HashBuilder::default(); @@ -27,16 +28,18 @@ pub fn state_root(accounts: &HashMap) -> B256 { } /// Builds storage root from the given storage -pub fn storage_root(storage: &HashMap) -> B256 { +pub fn storage_root(storage: &HashMap) -> B256 { build_root(trie_storage(storage)) } /// Builds iterator over stored key-value pairs ready for storage trie root calculation. -pub fn trie_storage(storage: &HashMap) -> Vec<(Nibbles, Vec)> { +pub fn trie_storage(storage: &HashMap) -> Vec<(Nibbles, Vec)> { let mut storage = storage .iter() .map(|(key, value)| { - let data = alloy_rlp::encode(value); + // TODO: support FlaggedStorage + let value_u256: U256 = value.into(); + let data = alloy_rlp::encode(value_u256); (Nibbles::unpack(keccak256(key.to_be_bytes::<32>())), data) }) .collect::>(); @@ -60,7 +63,7 @@ pub fn trie_accounts(accounts: &HashMap) -> Vec<(Nibbles, Ve } /// Returns the RLP for this account. -pub fn trie_account_rlp(info: &AccountInfo, storage: &HashMap) -> Vec { +pub fn trie_account_rlp(info: &AccountInfo, storage: &HashMap) -> Vec { let mut out: Vec = Vec::new(); let list: [&dyn Encodable; 4] = [&info.nonce, &info.balance, &storage_root(storage), &info.code_hash]; @@ -109,13 +112,17 @@ where *account, new_account_state .iter() - .map(|(key, value)| ((*key).into(), (*value).into())) + .map(|(key, value)| { + let value_u256: U256 = (*value).into(); + ((*key).into(), value_u256.into()) + }) .collect(), )?; } (None, Some(account_state_diff)) => { for (key, value) in account_state_diff.iter() { - cache_db.insert_account_storage(*account, (*key).into(), (*value).into())?; + let value_u256: U256 = (*value).into(); + cache_db.insert_account_storage(*account, (*key).into(), value_u256.into())?; } } }; diff --git a/crates/anvil/src/eth/backend/mem/storage.rs b/crates/anvil/src/eth/backend/mem/storage.rs index 2b5886a6f..af4563f9d 100644 --- a/crates/anvil/src/eth/backend/mem/storage.rs +++ b/crates/anvil/src/eth/backend/mem/storage.rs @@ -507,6 +507,7 @@ impl MinedTransaction { Err(e) => Err(RpcError::invalid_params(e.to_string()).into()), }; } + GethDebugBuiltInTracerType::FlatCallTracer => todo!(), GethDebugBuiltInTracerType::PreStateTracer | GethDebugBuiltInTracerType::NoopTracer | GethDebugBuiltInTracerType::MuxTracer => {} diff --git a/crates/cast/bin/tx.rs b/crates/cast/bin/tx.rs index 419ad5bb6..5a4845d9e 100644 --- a/crates/cast/bin/tx.rs +++ b/crates/cast/bin/tx.rs @@ -1,6 +1,8 @@ use alloy_consensus::{SidecarBuilder, SimpleCoder}; use alloy_json_abi::Function; -use alloy_network::{AnyNetwork, TransactionBuilder}; +use alloy_network::{ + AnyNetwork, TransactionBuilder, TransactionBuilder4844, TransactionBuilder7702, +}; use alloy_primitives::{hex, Address, Bytes, TxKind, U256}; use alloy_provider::Provider; use alloy_rlp::Decodable; diff --git a/crates/cheatcodes/src/json.rs b/crates/cheatcodes/src/json.rs index 8ff254271..d2a0d75aa 100644 --- a/crates/cheatcodes/src/json.rs +++ b/crates/cheatcodes/src/json.rs @@ -632,12 +632,14 @@ fn serialize_value_as_json(value: DynSolValue) -> Result { values.into_iter().map(serialize_value_as_json).collect::>()?, )), DynSolValue::Function(_) => bail!("cannot serialize function pointer"), - DynSolValue::Saddress(SAddress(c)) | - DynSolValue::Sint(SInt(c), _) | - DynSolValue::Suint(SUInt(c), _) => { - // let serde handle number parsing - let commitment = serde_json::from_str(&c.to_string())?; - Ok(Value::Number(commitment)) + DynSolValue::Saddress(SAddress(a)) => Ok(Value::String(a.to_string())), + DynSolValue::Sint(SInt(i), _) => { + let suint = serde_json::from_str(&i.to_string())?; + Ok(Value::Number(suint)) + } + DynSolValue::Suint(SUInt(u), _) => { + let suint = serde_json::from_str(&u.to_string())?; + Ok(Value::Number(suint)) } } } diff --git a/crates/common/fmt/src/dynamic.rs b/crates/common/fmt/src/dynamic.rs index ffaaf2eb5..6adb3dbc8 100644 --- a/crates/common/fmt/src/dynamic.rs +++ b/crates/common/fmt/src/dynamic.rs @@ -73,8 +73,8 @@ impl DynValueFormatter { self.tuple(tuple, f) } } - &DynSolValue::Saddress(SAddress(inner)) | - &DynSolValue::Sint(SInt(inner), _) | + &DynSolValue::Saddress(SAddress(inner)) => write!(f, "{inner}"), + &DynSolValue::Sint(SInt(inner), _) => write!(f, "{inner}"), &DynSolValue::Suint(SUInt(inner), _) => write!(f, "{inner}"), } } diff --git a/crates/common/src/compile.rs b/crates/common/src/compile.rs index 0c39dd873..a75ac0819 100644 --- a/crates/common/src/compile.rs +++ b/crates/common/src/compile.rs @@ -407,7 +407,7 @@ pub fn etherscan_project( Ok(ProjectBuilder::::default() .settings(SolcSettings { - settings: SolcConfig::builder().settings(settings).build().settings, + settings: SolcConfig::builder().settings(settings).build(), ..Default::default() }) .paths(paths) diff --git a/crates/common/src/provider/mod.rs b/crates/common/src/provider/mod.rs index 49cadd95c..280c97e30 100644 --- a/crates/common/src/provider/mod.rs +++ b/crates/common/src/provider/mod.rs @@ -273,7 +273,7 @@ impl ProviderBuilder { } /// Constructs the `RetryProvider` with a wallet. - pub fn build_with_wallet(self, wallet: EthereumWallet) -> Result { + pub fn build_with_wallet(self, _wallet: EthereumWallet) -> Result { let Self { url, chain, @@ -307,9 +307,11 @@ impl ProviderBuilder { ); } + // let provider = AlloyProviderBuilder::<_, _, AnyNetwork>::default() + // .with_recommended_fillers() + // .wallet(wallet) + // .on_provider(RootProvider::new(client)); let provider = AlloyProviderBuilder::<_, _, AnyNetwork>::default() - .with_recommended_fillers() - .wallet(wallet) .on_provider(RootProvider::new(client)); Ok(provider) diff --git a/crates/evm/core/Cargo.toml b/crates/evm/core/Cargo.toml index 188d271bf..202eaa985 100644 --- a/crates/evm/core/Cargo.toml +++ b/crates/evm/core/Cargo.toml @@ -46,6 +46,7 @@ revm = { workspace = true, features = [ "optimism", "c-kzg", ] } +revm-primitives.workspace = true revm-inspectors.workspace = true auto_impl.workspace = true diff --git a/crates/evm/core/src/backend/cow.rs b/crates/evm/core/src/backend/cow.rs index 2dcd985ae..52bdd3094 100644 --- a/crates/evm/core/src/backend/cow.rs +++ b/crates/evm/core/src/backend/cow.rs @@ -16,8 +16,8 @@ use foundry_fork_db::DatabaseError; use revm::{ db::DatabaseRef, primitives::{ - Account, AccountInfo, Bytecode, Env, EnvWithHandlerCfg, HashMap as Map, ResultAndState, - SpecId, + Account, AccountInfo, Bytecode, Env, EnvWithHandlerCfg, FlaggedStorage, HashMap as Map, + ResultAndState, SpecId, }, Database, DatabaseCommit, JournaledState, }; @@ -273,7 +273,7 @@ impl<'a> DatabaseRef for CowBackend<'a> { DatabaseRef::code_by_hash_ref(self.backend.as_ref(), code_hash) } - fn storage_ref(&self, address: Address, index: U256) -> Result { + fn storage_ref(&self, address: Address, index: U256) -> Result { DatabaseRef::storage_ref(self.backend.as_ref(), address, index) } @@ -293,7 +293,7 @@ impl<'a> Database for CowBackend<'a> { DatabaseRef::code_by_hash_ref(self, code_hash) } - fn storage(&mut self, address: Address, index: U256) -> Result { + fn storage(&mut self, address: Address, index: U256) -> Result { DatabaseRef::storage_ref(self, address, index) } diff --git a/crates/evm/core/src/backend/in_memory_db.rs b/crates/evm/core/src/backend/in_memory_db.rs index e819c5313..4bad298e0 100644 --- a/crates/evm/core/src/backend/in_memory_db.rs +++ b/crates/evm/core/src/backend/in_memory_db.rs @@ -5,7 +5,7 @@ use alloy_primitives::{Address, B256, U256}; use foundry_fork_db::DatabaseError; use revm::{ db::{CacheDB, DatabaseRef, EmptyDB}, - primitives::{Account, AccountInfo, Bytecode, HashMap as Map}, + primitives::{Account, AccountInfo, Bytecode, FlaggedStorage, HashMap as Map}, Database, DatabaseCommit, }; @@ -40,7 +40,7 @@ impl DatabaseRef for MemDb { DatabaseRef::code_by_hash_ref(&self.inner, code_hash) } - fn storage_ref(&self, address: Address, index: U256) -> Result { + fn storage_ref(&self, address: Address, index: U256) -> Result { DatabaseRef::storage_ref(&self.inner, address, index) } @@ -61,7 +61,7 @@ impl Database for MemDb { Database::code_by_hash(&mut self.inner, code_hash) } - fn storage(&mut self, address: Address, index: U256) -> Result { + fn storage(&mut self, address: Address, index: U256) -> Result { Database::storage(&mut self.inner, address, index) } @@ -107,7 +107,7 @@ impl DatabaseRef for EmptyDBWrapper { fn code_by_hash_ref(&self, code_hash: B256) -> Result { Ok(self.0.code_by_hash_ref(code_hash)?) } - fn storage_ref(&self, address: Address, index: U256) -> Result { + fn storage_ref(&self, address: Address, index: U256) -> Result { Ok(self.0.storage_ref(address, index)?) } diff --git a/crates/evm/core/src/backend/mod.rs b/crates/evm/core/src/backend/mod.rs index e98ac00c5..b4ace8370 100644 --- a/crates/evm/core/src/backend/mod.rs +++ b/crates/evm/core/src/backend/mod.rs @@ -20,7 +20,7 @@ use revm::{ precompile::{PrecompileSpecId, Precompiles}, primitives::{ Account, AccountInfo, Bytecode, Env, EnvWithHandlerCfg, EvmState, EvmStorageSlot, - HashMap as Map, Log, ResultAndState, SpecId, KECCAK_EMPTY, + FlaggedStorage, HashMap as Map, Log, ResultAndState, SpecId, KECCAK_EMPTY, }, Database, DatabaseCommit, JournaledState, }; @@ -528,7 +528,7 @@ impl Backend { &mut self, address: Address, slot: U256, - value: U256, + value: FlaggedStorage, ) -> Result<(), DatabaseError> { if let Some(db) = self.active_fork_db_mut() { db.insert_account_storage(address, slot, value) @@ -544,7 +544,7 @@ impl Backend { pub fn replace_account_storage( &mut self, address: Address, - storage: Map, + storage: Map, ) -> Result<(), DatabaseError> { if let Some(db) = self.active_fork_db_mut() { db.replace_account_storage(address, storage) @@ -1402,7 +1402,7 @@ impl DatabaseExt for Backend { .get(&slot) .map(|s| s.present_value) .unwrap_or_default(), - U256::from_be_bytes(value.0), + U256::from_be_bytes(value.0).into(), ), ) }) @@ -1475,7 +1475,7 @@ impl DatabaseRef for Backend { } } - fn storage_ref(&self, address: Address, index: U256) -> Result { + fn storage_ref(&self, address: Address, index: U256) -> Result { if let Some(db) = self.active_fork_db() { DatabaseRef::storage_ref(db, address, index) } else { @@ -1520,7 +1520,7 @@ impl Database for Backend { } } - fn storage(&mut self, address: Address, index: U256) -> Result { + fn storage(&mut self, address: Address, index: U256) -> Result { if let Some(db) = self.active_fork_db_mut() { Ok(Database::storage(db, address, index)?) } else { diff --git a/crates/evm/core/src/backend/snapshot.rs b/crates/evm/core/src/backend/snapshot.rs index f8961c7a0..9bd048e12 100644 --- a/crates/evm/core/src/backend/snapshot.rs +++ b/crates/evm/core/src/backend/snapshot.rs @@ -1,15 +1,16 @@ use alloy_primitives::{Address, B256, U256}; use revm::{ - primitives::{AccountInfo, Env, HashMap}, + primitives::{Env, HashMap}, JournaledState, }; +use revm_primitives::{AccountInfo, FlaggedStorage}; use serde::{Deserialize, Serialize}; /// A minimal abstraction of a state at a certain point in time #[derive(Clone, Debug, Default, Serialize, Deserialize)] pub struct StateSnapshot { pub accounts: HashMap, - pub storage: HashMap>, + pub storage: HashMap>, pub block_hashes: HashMap, } diff --git a/crates/evm/core/src/fork/database.rs b/crates/evm/core/src/fork/database.rs index de6b2a6b9..b6e73335b 100644 --- a/crates/evm/core/src/fork/database.rs +++ b/crates/evm/core/src/fork/database.rs @@ -10,7 +10,7 @@ use foundry_fork_db::{BlockchainDb, DatabaseError, SharedBackend}; use parking_lot::Mutex; use revm::{ db::{CacheDB, DatabaseRef}, - primitives::{Account, AccountInfo, Bytecode, HashMap as Map}, + primitives::{Account, AccountInfo, Bytecode, FlaggedStorage, HashMap as Map}, Database, DatabaseCommit, }; use std::sync::Arc; @@ -163,7 +163,7 @@ impl Database for ForkedDatabase { Database::code_by_hash(&mut self.cache_db, code_hash) } - fn storage(&mut self, address: Address, index: U256) -> Result { + fn storage(&mut self, address: Address, index: U256) -> Result { Database::storage(&mut self.cache_db, address, index) } @@ -183,7 +183,7 @@ impl DatabaseRef for ForkedDatabase { self.cache_db.code_by_hash_ref(code_hash) } - fn storage_ref(&self, address: Address, index: U256) -> Result { + fn storage_ref(&self, address: Address, index: U256) -> Result { DatabaseRef::storage_ref(&self.cache_db, address, index) } @@ -208,8 +208,13 @@ pub struct ForkDbSnapshot { } impl ForkDbSnapshot { - fn get_storage(&self, address: Address, index: U256) -> Option { - self.local.accounts.get(&address).and_then(|account| account.storage.get(&index)).copied() + fn get_storage(&self, address: Address, index: U256) -> Option { + self.local + .accounts + .get(&address) + .and_then(|account| account.storage.get(&index)) + .copied() + .into() } } @@ -237,7 +242,7 @@ impl DatabaseRef for ForkDbSnapshot { self.local.code_by_hash_ref(code_hash) } - fn storage_ref(&self, address: Address, index: U256) -> Result { + fn storage_ref(&self, address: Address, index: U256) -> Result { match self.local.accounts.get(&address) { Some(account) => match account.storage.get(&index) { Some(entry) => Ok(*entry), diff --git a/crates/evm/fuzz/src/strategies/state.rs b/crates/evm/fuzz/src/strategies/state.rs index f4f1dde92..78cca7603 100644 --- a/crates/evm/fuzz/src/strategies/state.rs +++ b/crates/evm/fuzz/src/strategies/state.rs @@ -148,7 +148,7 @@ impl FuzzDictionary { // Sort storage values before inserting to ensure deterministic dictionary. let values = account.storage.iter().collect::>(); for (slot, value) in values { - self.insert_storage_value(slot, value); + self.insert_storage_value(slot, &value.into()); } } } @@ -232,7 +232,7 @@ impl FuzzDictionary { // Insert storage values. if self.config.include_storage { for (slot, value) in &account.storage { - self.insert_storage_value(slot, &value.present_value); + self.insert_storage_value(slot, &value.present_value.into()); } } } diff --git a/crates/forge/tests/it/test_helpers.rs b/crates/forge/tests/it/test_helpers.rs index fdef2f2ec..df0ce56a6 100644 --- a/crates/forge/tests/it/test_helpers.rs +++ b/crates/forge/tests/it/test_helpers.rs @@ -70,7 +70,7 @@ impl ForgeTestProfile { settings.evm_version = Some(EvmVersion::Cancun); } - SolcConfig::builder().settings(settings).build() + SolcConfig { settings: SolcConfig::builder().settings(settings).build() } } pub fn project(&self) -> Project { From 2f7d0271224619ccc2b7311731b1523061856f78 Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Wed, 2 Oct 2024 14:47:32 -0400 Subject: [PATCH 004/130] update alloy dep to fix suint tokenizing (#33) --- Cargo.lock | 36 ++++++++++++++++++------------------ Cargo.toml | 30 +++++++++++++++--------------- 2 files changed, 33 insertions(+), 33 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 65712c1f7..d090e9c3b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -120,8 +120,8 @@ dependencies = [ [[package]] name = "alloy-dyn-abi" -version = "0.8.5" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=6641735#6641735e58859b64030a2cce8f0b13653a0f1685" +version = "0.8.1" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=adc0cf2#adc0cf2fb96c9be80df1d71cfe8ba745dc33f1c6" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -197,8 +197,8 @@ dependencies = [ [[package]] name = "alloy-json-abi" -version = "0.8.5" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=6641735#6641735e58859b64030a2cce8f0b13653a0f1685" +version = "0.8.1" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=adc0cf2#adc0cf2fb96c9be80df1d71cfe8ba745dc33f1c6" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -255,8 +255,8 @@ dependencies = [ [[package]] name = "alloy-primitives" -version = "0.8.5" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=6641735#6641735e58859b64030a2cce8f0b13653a0f1685" +version = "0.8.1" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=adc0cf2#adc0cf2fb96c9be80df1d71cfe8ba745dc33f1c6" dependencies = [ "alloy-rlp", "arbitrary", @@ -596,8 +596,8 @@ dependencies = [ [[package]] name = "alloy-sol-macro" -version = "0.8.5" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=6641735#6641735e58859b64030a2cce8f0b13653a0f1685" +version = "0.8.1" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=adc0cf2#adc0cf2fb96c9be80df1d71cfe8ba745dc33f1c6" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", @@ -609,8 +609,8 @@ dependencies = [ [[package]] name = "alloy-sol-macro-expander" -version = "0.8.5" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=6641735#6641735e58859b64030a2cce8f0b13653a0f1685" +version = "0.8.1" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=adc0cf2#adc0cf2fb96c9be80df1d71cfe8ba745dc33f1c6" dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", @@ -627,8 +627,8 @@ dependencies = [ [[package]] name = "alloy-sol-macro-input" -version = "0.8.5" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=6641735#6641735e58859b64030a2cce8f0b13653a0f1685" +version = "0.8.1" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=adc0cf2#adc0cf2fb96c9be80df1d71cfe8ba745dc33f1c6" dependencies = [ "alloy-json-abi", "const-hex", @@ -643,8 +643,8 @@ dependencies = [ [[package]] name = "alloy-sol-type-parser" -version = "0.8.5" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=6641735#6641735e58859b64030a2cce8f0b13653a0f1685" +version = "0.8.1" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=adc0cf2#adc0cf2fb96c9be80df1d71cfe8ba745dc33f1c6" dependencies = [ "serde", "winnow", @@ -652,8 +652,8 @@ dependencies = [ [[package]] name = "alloy-sol-types" -version = "0.8.5" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=6641735#6641735e58859b64030a2cce8f0b13653a0f1685" +version = "0.8.1" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=adc0cf2#adc0cf2fb96c9be80df1d71cfe8ba745dc33f1c6" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -8226,8 +8226,8 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "0.8.5" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=6641735#6641735e58859b64030a2cce8f0b13653a0f1685" +version = "0.8.1" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=adc0cf2#adc0cf2fb96c9be80df1d71cfe8ba745dc33f1c6" dependencies = [ "paste", "proc-macro2", diff --git a/Cargo.toml b/Cargo.toml index 1eb9452f9..1c133922f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -195,13 +195,13 @@ alloy-transport-ipc = { version = "0.3.6", default-features = false } alloy-transport-ws = { version = "0.3.6", default-features = false } ## alloy-core -alloy-dyn-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6641735", features = ["seismic", "std"] } -alloy-json-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6641735", features = ["seismic"] } -alloy-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6641735", features = ["getrandom", "rand", "seismic"] } -alloy-sol-macro-expander = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6641735", features = ["seismic"] } -alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6641735", features = ["seismic"] } -alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6641735", features = ["seismic"] } -syn-solidity = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6641735", features = ["seismic"] } +alloy-dyn-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2", features = ["seismic", "std"] } +alloy-json-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2", features = ["seismic"] } +alloy-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2", features = ["getrandom", "rand", "seismic"] } +alloy-sol-macro-expander = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2", features = ["seismic"] } +alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2", features = ["seismic"] } +alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2", features = ["seismic"] } +syn-solidity = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2", features = ["seismic"] } alloy-chains = "0.1" alloy-rlp = "0.3" @@ -279,11 +279,11 @@ revm-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git" foundry-fork-db = { git = "ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "0d2a25e" } # seismic-alloy-core -alloy-dyn-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6641735" } -alloy-json-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6641735" } -alloy-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6641735" } -alloy-sol-macro = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6641735" } -alloy-sol-macro-expander = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6641735" } -alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6641735" } -alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6641735" } -alloy-sol-type-parser = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6641735" } +alloy-dyn-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2" } +alloy-json-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2" } +alloy-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2" } +alloy-sol-macro = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2" } +alloy-sol-macro-expander = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2" } +alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2" } +alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2" } +alloy-sol-type-parser = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2" } From a7aa40bb83d62d83011184de96b4cfd45b367dcf Mon Sep 17 00:00:00 2001 From: Alex Lindenbaum Date: Mon, 14 Oct 2024 09:51:01 -0400 Subject: [PATCH 005/130] Foundry reset (#34) --- .../anvil/src/eth/backend/mem/in_memory_db.rs | 12 +++--- crates/common/fmt/src/console.rs | 20 +++++++++- crates/evm/abi/src/HardhatConsole.json | 2 +- crates/evm/fuzz/src/strategies/param.rs | 37 ++++++++++++++++++- 4 files changed, 62 insertions(+), 9 deletions(-) diff --git a/crates/anvil/src/eth/backend/mem/in_memory_db.rs b/crates/anvil/src/eth/backend/mem/in_memory_db.rs index 622e1f570..cb0e431c7 100644 --- a/crates/anvil/src/eth/backend/mem/in_memory_db.rs +++ b/crates/anvil/src/eth/backend/mem/in_memory_db.rs @@ -165,7 +165,7 @@ mod tests { nonce: 1234, }, ); - dump_db.set_storage_at(test_addr, U256::from(1234567), U256::from(1)).unwrap(); + dump_db.set_storage_at(test_addr, U256::from(1234567), U256::from(1).into()).unwrap(); // blocks dumping/loading tested in storage.rs let state = dump_db @@ -182,7 +182,7 @@ mod tests { assert_eq!(loaded_account.balance, U256::from(123456)); assert_eq!(load_db.code_by_hash_ref(loaded_account.code_hash).unwrap(), contract_code); assert_eq!(loaded_account.nonce, 1234); - assert_eq!(load_db.storage_ref(test_addr, U256::from(1234567)).unwrap(), U256::from(1)); + assert_eq!(load_db.storage_ref(test_addr, U256::from(1234567)).unwrap(), U256::from(1).into()); } // verifies that multiple accounts can be loaded at a time, and storage is merged within those @@ -224,7 +224,7 @@ mod tests { ); let mut new_storage = BTreeMap::default(); - new_storage.insert(U256::from(1234568), U256::from(5)); + new_storage.insert(U256::from(1234568), U256::from(5).into()); new_state.accounts.insert( test_addr, @@ -232,7 +232,7 @@ mod tests { balance: U256::from(100100), code: contract_code.bytes()[..contract_code.len()].to_vec().into(), nonce: 100, - storage: new_storage, + storage: new_storage.into(), }, ); @@ -246,7 +246,7 @@ mod tests { assert_eq!(loaded_account.balance, U256::from(100100)); assert_eq!(db.code_by_hash_ref(loaded_account.code_hash).unwrap(), contract_code); assert_eq!(loaded_account.nonce, 1234); - assert_eq!(db.storage_ref(test_addr, U256::from(1234567)).unwrap(), U256::from(1)); - assert_eq!(db.storage_ref(test_addr, U256::from(1234568)).unwrap(), U256::from(5)); + assert_eq!(db.storage_ref(test_addr, U256::from(1234567)).unwrap(), U256::from(1).into()); + assert_eq!(db.storage_ref(test_addr, U256::from(1234568)).unwrap(), U256::from(5).into()); } } diff --git a/crates/common/fmt/src/console.rs b/crates/common/fmt/src/console.rs index 7473ccdec..e5ecc7fcc 100644 --- a/crates/common/fmt/src/console.rs +++ b/crates/common/fmt/src/console.rs @@ -1,5 +1,5 @@ use super::UIfmt; -use alloy_primitives::{Address, Bytes, FixedBytes, I256, U256}; +use alloy_primitives::{Address, Bytes, FixedBytes, SAddress, I256, SI256, SU256, U256}; use std::iter::Peekable; /// A format specifier. @@ -187,6 +187,24 @@ impl ConsoleFmt for Address { } } +impl ConsoleFmt for SAddress { + fn fmt(&self, spec: FormatSpec) -> String { + Address::from(self.0).fmt(spec) + } +} + +impl ConsoleFmt for SU256 { + fn fmt(&self, spec: FormatSpec) -> String { + U256::from(self.0).fmt(spec) + } +} + +impl ConsoleFmt for SI256 { + fn fmt(&self, spec: FormatSpec) -> String { + I256::from(self.0).fmt(spec) + } +} + impl ConsoleFmt for Vec { fn fmt(&self, spec: FormatSpec) -> String { self[..].fmt(spec) diff --git a/crates/evm/abi/src/HardhatConsole.json b/crates/evm/abi/src/HardhatConsole.json index 54e6d46df..550604828 100644 --- a/crates/evm/abi/src/HardhatConsole.json +++ b/crates/evm/abi/src/HardhatConsole.json @@ -1 +1 @@ -[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes10","name":"","type":"bytes10"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes11","name":"","type":"bytes11"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes25","name":"","type":"bytes25"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"","type":"bytes"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"int256","name":"","type":"int256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes3","name":"","type":"bytes3"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes17","name":"","type":"bytes17"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes27","name":"","type":"bytes27"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"int256","name":"","type":"int256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes29","name":"","type":"bytes29"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes7","name":"","type":"bytes7"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes8","name":"","type":"bytes8"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes20","name":"","type":"bytes20"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes19","name":"","type":"bytes19"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes16","name":"","type":"bytes16"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes1","name":"","type":"bytes1"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes12","name":"","type":"bytes12"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes9","name":"","type":"bytes9"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes14","name":"","type":"bytes14"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes13","name":"","type":"bytes13"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes5","name":"","type":"bytes5"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes23","name":"","type":"bytes23"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes6","name":"","type":"bytes6"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes31","name":"","type":"bytes31"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes18","name":"","type":"bytes18"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes28","name":"","type":"bytes28"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes22","name":"","type":"bytes22"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes15","name":"","type":"bytes15"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes2","name":"","type":"bytes2"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes21","name":"","type":"bytes21"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes30","name":"","type":"bytes30"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes24","name":"","type":"bytes24"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes26","name":"","type":"bytes26"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"}] \ No newline at end of file +[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes10","name":"","type":"bytes10"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes11","name":"","type":"bytes11"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes25","name":"","type":"bytes25"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"","type":"bytes"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"int256","name":"","type":"int256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes3","name":"","type":"bytes3"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes17","name":"","type":"bytes17"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes27","name":"","type":"bytes27"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"int256","name":"","type":"int256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes29","name":"","type":"bytes29"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes7","name":"","type":"bytes7"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes8","name":"","type":"bytes8"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes20","name":"","type":"bytes20"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes19","name":"","type":"bytes19"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes16","name":"","type":"bytes16"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes1","name":"","type":"bytes1"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes12","name":"","type":"bytes12"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes9","name":"","type":"bytes9"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes14","name":"","type":"bytes14"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes13","name":"","type":"bytes13"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes5","name":"","type":"bytes5"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes23","name":"","type":"bytes23"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes6","name":"","type":"bytes6"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes31","name":"","type":"bytes31"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes18","name":"","type":"bytes18"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes28","name":"","type":"bytes28"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes22","name":"","type":"bytes22"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes15","name":"","type":"bytes15"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes2","name":"","type":"bytes2"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes21","name":"","type":"bytes21"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes30","name":"","type":"bytes30"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes24","name":"","type":"bytes24"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes26","name":"","type":"bytes26"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"saddress","name":"","type":"saddress"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"sint256","name":"","type":"sint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"suint256","name":"","type":"suint256"}],"name":"log","outputs":[],"stateMutability":"pure","type":"function"}] \ No newline at end of file diff --git a/crates/evm/fuzz/src/strategies/param.rs b/crates/evm/fuzz/src/strategies/param.rs index 10b166956..83dceab38 100644 --- a/crates/evm/fuzz/src/strategies/param.rs +++ b/crates/evm/fuzz/src/strategies/param.rs @@ -1,6 +1,6 @@ use super::state::EvmFuzzState; use alloy_dyn_abi::{DynSolType, DynSolValue}; -use alloy_primitives::{Address, B256, I256, U256}; +use alloy_primitives::{Address, B256, I256, U256, aliases::{SUInt, SInt}}; use proptest::prelude::*; /// The max length of arrays we fuzz for is 256. @@ -73,6 +73,13 @@ fn fuzz_param_inner( DynSolType::Uint(n @ 8..=256) => super::UintStrategy::new(n, fuzz_fixtures) .prop_map(move |x| DynSolValue::Uint(x, n)) .boxed(), + // DynSolType::Saddress => value(), // TODO: also implement in `fuzz_param_from_state` + DynSolType::Sint(n @ 8..=256) => super::IntStrategy::new(n, fuzz_fixtures) + .prop_map(move |x| DynSolValue::Sint(SInt(x), n)) + .boxed(), + DynSolType::Suint(n @ 8..=256) => super::UintStrategy::new(n, fuzz_fixtures) + .prop_map(move |x| DynSolValue::Suint(SUInt(x), n)) + .boxed(), DynSolType::Function | DynSolType::Bool => DynSolValue::type_strategy(param).boxed(), DynSolType::Bytes => value(), DynSolType::FixedBytes(_size @ 1..=32) => value(), @@ -170,6 +177,22 @@ pub fn fuzz_param_from_state( .boxed(), _ => unreachable!(), }, + DynSolType::Sint(n @ 8..=256) => match n / 8 { + 32 => value() + .prop_map(move |value| DynSolValue::Sint(SInt(I256::from_raw(value.into())), 256)) + .boxed(), + 1..=31 => value() + .prop_map(move |value| { + // Generate a uintN in the correct range, then shift it to the range of intN + // by subtracting 2^(N-1) + let uint = U256::from_be_bytes(value.0) % U256::from(1).wrapping_shl(n); + let max_int_plus1 = U256::from(1).wrapping_shl(n - 1); + let num = I256::from_raw(uint.wrapping_sub(max_int_plus1)); + DynSolValue::Sint(SInt(num), n) + }) + .boxed(), + _ => unreachable!(), + }, DynSolType::Uint(n @ 8..=256) => match n / 8 { 32 => value() .prop_map(move |value| DynSolValue::Uint(U256::from_be_bytes(value.0), 256)) @@ -182,6 +205,18 @@ pub fn fuzz_param_from_state( .boxed(), _ => unreachable!(), }, + DynSolType::Suint(n @ 8..=256) => match n / 8 { + 32 => value() + .prop_map(move |value| DynSolValue::Suint(SUInt(U256::from_be_bytes(value.0)), 256)) + .boxed(), + 1..=31 => value() + .prop_map(move |value| { + let uint = U256::from_be_bytes(value.0) % U256::from(1).wrapping_shl(n); + DynSolValue::Suint(SUInt(uint), n) + }) + .boxed(), + _ => unreachable!(), + }, DynSolType::Tuple(ref params) => params .iter() .map(|p| fuzz_param_from_state(p, state)) From 919fb95c9fb66f858676e96aa90939586695e1c9 Mon Sep 17 00:00:00 2001 From: Ameya Deshmukh Date: Thu, 5 Dec 2024 02:53:03 +0530 Subject: [PATCH 006/130] One-click install + `ssolc` configured for `sforge` (#36) --- .../anvil/src/eth/backend/mem/in_memory_db.rs | 5 +- crates/config/src/lib.rs | 20 ++ crates/evm/fuzz/src/strategies/param.rs | 5 +- docs/seismic/developers.md | 76 ++++ foundryup/README.md | 67 ---- foundryup/foundryup | 331 ------------------ foundryup/install | 64 ---- sfoundryup/README.md | 45 +++ sfoundryup/install | 74 ++++ sfoundryup/sfoundryup | 219 ++++++++++++ 10 files changed, 442 insertions(+), 464 deletions(-) create mode 100644 docs/seismic/developers.md delete mode 100644 foundryup/README.md delete mode 100755 foundryup/foundryup delete mode 100755 foundryup/install create mode 100644 sfoundryup/README.md create mode 100755 sfoundryup/install create mode 100755 sfoundryup/sfoundryup diff --git a/crates/anvil/src/eth/backend/mem/in_memory_db.rs b/crates/anvil/src/eth/backend/mem/in_memory_db.rs index cb0e431c7..082665ec6 100644 --- a/crates/anvil/src/eth/backend/mem/in_memory_db.rs +++ b/crates/anvil/src/eth/backend/mem/in_memory_db.rs @@ -182,7 +182,10 @@ mod tests { assert_eq!(loaded_account.balance, U256::from(123456)); assert_eq!(load_db.code_by_hash_ref(loaded_account.code_hash).unwrap(), contract_code); assert_eq!(loaded_account.nonce, 1234); - assert_eq!(load_db.storage_ref(test_addr, U256::from(1234567)).unwrap(), U256::from(1).into()); + assert_eq!( + load_db.storage_ref(test_addr, U256::from(1234567)).unwrap(), + U256::from(1).into() + ); } // verifies that multiple accounts can be loaded at a time, and storage is merged within those diff --git a/crates/config/src/lib.rs b/crates/config/src/lib.rs index 34ebe62f5..feabbc37b 100644 --- a/crates/config/src/lib.rs +++ b/crates/config/src/lib.rs @@ -456,6 +456,11 @@ pub struct Config { /// Timeout for transactions in seconds. pub transaction_timeout: u64, + /// Seismic field (default: true) + /// + /// Used for purposes of specifying Seismic-Solidity (solc) + pub seismic: bool, + /// Warnings gathered when loading the Config. See [`WarningsProvider`] for more information #[serde(rename = "__warnings", default, skip_serializing)] pub warnings: Vec, @@ -520,6 +525,9 @@ impl Config { /// Default salt for create2 library deployments pub const DEFAULT_CREATE2_LIBRARY_SALT: FixedBytes<32> = FixedBytes::<32>::ZERO; + /// Default solc path for Seismic-Solidity (solc) + pub const DEFAULT_SSOLC_PATH: &str = "/usr/local/bin/ssolc"; + /// Returns the current `Config` /// /// See [`figment`](Self::figment) for more details. @@ -887,6 +895,17 @@ impl Config { /// /// If `solc` is [`SolcReq::Local`] then this will ensure that the path exists. fn ensure_solc(&self) -> Result, SolcError> { + if self.seismic { + // Define the default solc path when seismic is true + let default_solc_path = PathBuf::from("/usr/local/bin/ssolc"); + if !default_solc_path.is_file() { + return Err(SolcError::msg(format!( + "`solc` {} does not exist", + default_solc_path.display() + ))); + } + return Ok(Some(Solc::new(default_solc_path)?)); + } if let Some(ref solc) = self.solc { let solc = match solc { SolcReq::Version(version) => { @@ -2173,6 +2192,7 @@ impl Default for Config { eof_version: None, alphanet: false, transaction_timeout: 120, + seismic: true, _non_exhaustive: (), } } diff --git a/crates/evm/fuzz/src/strategies/param.rs b/crates/evm/fuzz/src/strategies/param.rs index 83dceab38..0c8bc0301 100644 --- a/crates/evm/fuzz/src/strategies/param.rs +++ b/crates/evm/fuzz/src/strategies/param.rs @@ -1,6 +1,9 @@ use super::state::EvmFuzzState; use alloy_dyn_abi::{DynSolType, DynSolValue}; -use alloy_primitives::{Address, B256, I256, U256, aliases::{SUInt, SInt}}; +use alloy_primitives::{ + aliases::{SInt, SUInt}, + Address, B256, I256, U256, +}; use proptest::prelude::*; /// The max length of arrays we fuzz for is 256. diff --git a/docs/seismic/developers.md b/docs/seismic/developers.md new file mode 100644 index 000000000..77b77c2ce --- /dev/null +++ b/docs/seismic/developers.md @@ -0,0 +1,76 @@ +# Setting Up and Testing Seismic Foundry Tools + +Follow these steps to set up and test the **Seismic Foundry** tools on your system. + +--- + +## 1. Generate a Personal Access Token (PAT) +1. Navigate to [GitHub Developer Settings - Tokens](https://github.com/settings/tokens). +2. Create a **Personal Access Token** (PAT) with the following: + - Enable **all permissions** for the token. + - Set a low granularity (e.g., 7 or 30 days). +3. Save the token somewhere safe for future use. + +--- + +## 2. Export the Token as an Environment Variable +1. Open your terminal. +2. Export the PAT as an environment variable: + ```bash + export SEISMIC_PAT=your_personal_access_token + ``` +Replace your_personal_access_token with the actual token. + +## 3. Download and Execute the Installation Script +Run the following command to download and execute the install script from the Seismic Foundry repository:bash +```bash +curl -L -H "Authorization: token $SEISMIC_PAT" \ + -H "Accept: application/vnd.github.v3.raw" \ + "https://api.github.com/repos/SeismicSystems/seismic-foundry/contents/sfoundryup/install?ref=seismic" | bash +``` +This will install `sfoundryup` on your system. + +## 4. Refresh Your Environment +After installation: + +Either source your environment: + +```bash +source ~/.bashrc +``` +(or the equivalent for your shell, e.g., `~/.zshrc for Zsh`). + +Or open a new terminal session. + +## 5. Run sfoundryup +Run the following command to ensure `seismic-foundry` tools are set up correctly: + +```bash +sfoundryup +``` + +## 6. Refresh your environment again + +## 7. Test the Setup +Clone the early-builds repository: +```bash +git clone https://github.com/SeismicSystems/early-builds +``` + +Navigate to the contracts directory: + +```bash +cd early-builds/brokerage/packages/contracts +``` + +Run the tests using sforge: +```bash +sforge test +``` + +All tests should pass. + +Congratulations! +You have successfully set up and tested the Seismic Foundry tools. If you encounter any issues, ensure the environment variable SEISMIC_PAT is set and the installation steps were followed correctly. + + diff --git a/foundryup/README.md b/foundryup/README.md deleted file mode 100644 index 39a53288c..000000000 --- a/foundryup/README.md +++ /dev/null @@ -1,67 +0,0 @@ -# `foundryup` - -Update or revert to a specific Foundry branch with ease. - -## Installing - -```sh -curl -L https://foundry.paradigm.xyz | bash -``` - -## Usage - -To install the **nightly** version: - -```sh -foundryup -``` - -To install a specific **version** (in this case the `nightly` version): - -```sh -foundryup --version nightly -``` - -To install a specific **branch** (in this case the `release/0.1.0` branch's latest commit): - -```sh -foundryup --branch release/0.1.0 -``` - -To install a **fork's main branch** (in this case `transmissions11/foundry`'s main branch): - -```sh -foundryup --repo transmissions11/foundry -``` - -To install a **specific branch in a fork** (in this case the `patch-10` branch's latest commit in `transmissions11/foundry`): - -```sh -foundryup --repo transmissions11/foundry --branch patch-10 -``` - -To install from a **specific Pull Request**: - -```sh -foundryup --pr 1071 -``` - -To install from a **specific commit**: - -```sh -foundryup -C 94bfdb2 -``` - -To install a local directory or repository (e.g. one located at `~/git/foundry`, assuming you're in the home directory) - -##### Note: --branch, --repo, and --version flags are ignored during local installations. - -```sh -foundryup --path ./git/foundry -``` - ---- - -**Tip**: All flags have a single character shorthand equivalent! You can use `-v` instead of `--version`, etc. - ---- diff --git a/foundryup/foundryup b/foundryup/foundryup deleted file mode 100755 index 2dc94bfb4..000000000 --- a/foundryup/foundryup +++ /dev/null @@ -1,331 +0,0 @@ -#!/usr/bin/env bash -set -eo pipefail - -BASE_DIR=${XDG_CONFIG_HOME:-$HOME} -FOUNDRY_DIR=${FOUNDRY_DIR:-"$BASE_DIR/.foundry"} -FOUNDRY_BIN_DIR="$FOUNDRY_DIR/bin" -FOUNDRY_MAN_DIR="$FOUNDRY_DIR/share/man/man1" - -FOUNDRYUP_JOBS="" - -BINS=(forge cast anvil chisel) - -export RUSTFLAGS="${RUSTFLAGS:--C target-cpu=native}" - -main() { - need_cmd git - need_cmd curl - - while [[ -n $1 ]]; do - case $1 in - --) shift; break;; - - -r|--repo) shift; FOUNDRYUP_REPO=$1;; - -b|--branch) shift; FOUNDRYUP_BRANCH=$1;; - -v|--version) shift; FOUNDRYUP_VERSION=$1;; - -p|--path) shift; FOUNDRYUP_LOCAL_REPO=$1;; - -P|--pr) shift; FOUNDRYUP_PR=$1;; - -C|--commit) shift; FOUNDRYUP_COMMIT=$1;; - -j|--jobs) shift; FOUNDRYUP_JOBS=$1;; - --arch) shift; FOUNDRYUP_ARCH=$1;; - --platform) shift; FOUNDRYUP_PLATFORM=$1;; - -h|--help) - usage - exit 0 - ;; - *) - warn "unknown option: $1" - usage - exit 1 - esac; shift - done - - CARGO_BUILD_ARGS=(--release) - - if [ -n "$FOUNDRYUP_JOBS" ]; then - CARGO_BUILD_ARGS+=(--jobs "$FOUNDRYUP_JOBS") - fi - - # Print the banner after successfully parsing args - banner - - if [ -n "$FOUNDRYUP_PR" ]; then - if [ -z "$FOUNDRYUP_BRANCH" ]; then - FOUNDRYUP_BRANCH="refs/pull/$FOUNDRYUP_PR/head" - else - err "can't use --pr and --branch at the same time" - fi - fi - - # Installs foundry from a local repository if --path parameter is provided - if [[ -n "$FOUNDRYUP_LOCAL_REPO" ]]; then - need_cmd cargo - - # Ignore branches/versions as we do not want to modify local git state - if [ -n "$FOUNDRYUP_REPO" ] || [ -n "$FOUNDRYUP_BRANCH" ] || [ -n "$FOUNDRYUP_VERSION" ]; then - warn "--branch, --version, and --repo arguments are ignored during local install" - fi - - # Enter local repo and build - say "installing from $FOUNDRYUP_LOCAL_REPO" - cd "$FOUNDRYUP_LOCAL_REPO" - ensure cargo build --bins "${CARGO_BUILD_ARGS[@]}" - - for bin in "${BINS[@]}"; do - # Remove prior installations if they exist - rm -f "$FOUNDRY_BIN_DIR/$bin" - # Symlink from local repo binaries to bin dir - ensure ln -s "$PWD/target/release/$bin" "$FOUNDRY_BIN_DIR/$bin" - done - - say "done" - exit 0 - fi - - FOUNDRYUP_REPO=${FOUNDRYUP_REPO:-foundry-rs/foundry} - - # Install by downloading binaries - if [[ "$FOUNDRYUP_REPO" == "foundry-rs/foundry" && -z "$FOUNDRYUP_BRANCH" && -z "$FOUNDRYUP_COMMIT" ]]; then - FOUNDRYUP_VERSION=${FOUNDRYUP_VERSION:-nightly} - FOUNDRYUP_TAG=$FOUNDRYUP_VERSION - - # Normalize versions (handle channels, versions without v prefix - if [[ "$FOUNDRYUP_VERSION" =~ ^nightly ]]; then - FOUNDRYUP_VERSION="nightly" - elif [[ "$FOUNDRYUP_VERSION" == [[:digit:]]* ]]; then - # Add v prefix - FOUNDRYUP_VERSION="v${FOUNDRYUP_VERSION}" - FOUNDRYUP_TAG="${FOUNDRYUP_VERSION}" - fi - - say "installing foundry (version ${FOUNDRYUP_VERSION}, tag ${FOUNDRYUP_TAG})" - - uname_s=$(uname -s) - PLATFORM=$(tolower "${FOUNDRYUP_PLATFORM:-$uname_s}") - EXT="tar.gz" - case $PLATFORM in - linux) ;; - darwin|mac*) - PLATFORM="darwin" - ;; - mingw*|win*) - EXT="zip" - PLATFORM="win32" - ;; - *) - err "unsupported platform: $PLATFORM" - ;; - esac - - uname_m=$(uname -m) - ARCHITECTURE=$(tolower "${FOUNDRYUP_ARCH:-$uname_m}") - if [ "${ARCHITECTURE}" = "x86_64" ]; then - # Redirect stderr to /dev/null to avoid printing errors if non Rosetta. - if [ "$(sysctl -n sysctl.proc_translated 2>/dev/null)" = "1" ]; then - ARCHITECTURE="arm64" # Rosetta. - else - ARCHITECTURE="amd64" # Intel. - fi - elif [ "${ARCHITECTURE}" = "arm64" ] ||[ "${ARCHITECTURE}" = "aarch64" ] ; then - ARCHITECTURE="arm64" # Arm. - else - ARCHITECTURE="amd64" # Amd. - fi - - # Compute the URL of the release tarball in the Foundry repository. - RELEASE_URL="https://github.com/${FOUNDRYUP_REPO}/releases/download/${FOUNDRYUP_TAG}/" - BIN_ARCHIVE_URL="${RELEASE_URL}foundry_${FOUNDRYUP_VERSION}_${PLATFORM}_${ARCHITECTURE}.$EXT" - MAN_TARBALL_URL="${RELEASE_URL}foundry_man_${FOUNDRYUP_VERSION}.tar.gz" - - # Download and extract the binaries archive - say "downloading latest forge, cast, anvil, and chisel" - if [ "$PLATFORM" = "win32" ]; then - tmp="$(mktemp -d 2>/dev/null || echo ".")/foundry.zip" - ensure download "$BIN_ARCHIVE_URL" "$tmp" - ensure unzip "$tmp" -d "$FOUNDRY_BIN_DIR" - rm -f "$tmp" - else - ensure download "$BIN_ARCHIVE_URL" | ensure tar -xzC "$FOUNDRY_BIN_DIR" - fi - - # Optionally download the manuals - if check_cmd tar; then - say "downloading manpages" - mkdir -p "$FOUNDRY_MAN_DIR" - download "$MAN_TARBALL_URL" | tar -xzC "$FOUNDRY_MAN_DIR" - else - say 'skipping manpage download: missing "tar"' - fi - - for bin in "${BINS[@]}"; do - bin_path="$FOUNDRY_BIN_DIR/$bin" - - # Print installed msg - say "installed - $(ensure "$bin_path" --version)" - - # Check if the default path of the binary is not in FOUNDRY_BIN_DIR - which_path="$(command -v "$bin" || true)" - if [ -n "$which_path" ] && [ "$which_path" != "$bin_path" ]; then - warn "" - cat 1>&2 < "$FOUNDRY_MAN_DIR/$bin.1" - done - fi - - say "done" - fi -} - -usage() { - cat 1>&2 < - -OPTIONS: - -h, --help Print help information - -v, --version Install a specific version from built binaries - -b, --branch Build and install a specific branch - -P, --pr Build and install a specific Pull Request - -C, --commit Build and install a specific commit - -r, --repo Build and install from a remote GitHub repo (uses default branch if no other options are set) - -p, --path Build and install a local repository - -j, --jobs Number of CPUs to use for building Foundry (default: all CPUs) - --arch Install a specific architecture (supports amd64 and arm64) - --platform Install a specific platform (supports win32, linux, and darwin) -EOF -} - -say() { - printf "foundryup: %s\n" "$1" -} - -warn() { - say "warning: ${1}" >&2 -} - -err() { - say "$1" >&2 - exit 1 -} - -tolower() { - echo "$1" | awk '{print tolower($0)}' -} - -need_cmd() { - if ! check_cmd "$1"; then - err "need '$1' (command not found)" - fi -} - -check_cmd() { - command -v "$1" &>/dev/null -} - -# Run a command that should never fail. If the command fails execution -# will immediately terminate with an error showing the failing command. -ensure() { - if ! "$@"; then err "command failed: $*"; fi -} - -# Downloads $1 into $2 or stdout -download() { - if [ -n "$2" ]; then - # output into $2 - if check_cmd curl; then - curl -#o "$2" -L "$1" - else - wget --show-progress -qO "$2" "$1" - fi - else - # output to stdout - if check_cmd curl; then - curl -#L "$1" - else - wget --show-progress -qO- "$1" - fi - fi -} - -# Banner Function for Foundry -banner() { - printf ' - -.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx - - ╔═╗ ╔═╗ ╦ ╦ ╔╗╔ ╔╦╗ ╦═╗ ╦ ╦ Portable and modular toolkit - ╠╣ ║ ║ ║ ║ ║║║ ║║ ╠╦╝ ╚╦╝ for Ethereum Application Development - ╚ ╚═╝ ╚═╝ ╝╚╝ ═╩╝ ╩╚═ ╩ written in Rust. - -.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx - -Repo : https://github.com/foundry-rs/ -Book : https://book.getfoundry.sh/ -Chat : https://t.me/foundry_rs/ -Support : https://t.me/foundry_support/ -Contribute : https://github.com/orgs/foundry-rs/projects/2/ - -.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx - -' -} - - -main "$@" diff --git a/foundryup/install b/foundryup/install deleted file mode 100755 index da8156a09..000000000 --- a/foundryup/install +++ /dev/null @@ -1,64 +0,0 @@ -#!/usr/bin/env bash -set -eo pipefail - -echo "Installing foundryup..." - -BASE_DIR="${XDG_CONFIG_HOME:-$HOME}" -FOUNDRY_DIR="${FOUNDRY_DIR-"$BASE_DIR/.foundry"}" -FOUNDRY_BIN_DIR="$FOUNDRY_DIR/bin" -FOUNDRY_MAN_DIR="$FOUNDRY_DIR/share/man/man1" - -BIN_URL="https://raw.githubusercontent.com/foundry-rs/foundry/master/foundryup/foundryup" -BIN_PATH="$FOUNDRY_BIN_DIR/foundryup" - -# Create the .foundry bin directory and foundryup binary if it doesn't exist. -mkdir -p "$FOUNDRY_BIN_DIR" -curl -sSf -L "$BIN_URL" -o "$BIN_PATH" -chmod +x "$BIN_PATH" - -# Create the man directory for future man files if it doesn't exist. -mkdir -p "$FOUNDRY_MAN_DIR" - -# Store the correct profile file (i.e. .profile for bash or .zshenv for ZSH). -case $SHELL in -*/zsh) - PROFILE="${ZDOTDIR-"$HOME"}/.zshenv" - PREF_SHELL=zsh - ;; -*/bash) - PROFILE=$HOME/.bashrc - PREF_SHELL=bash - ;; -*/fish) - PROFILE=$HOME/.config/fish/config.fish - PREF_SHELL=fish - ;; -*/ash) - PROFILE=$HOME/.profile - PREF_SHELL=ash - ;; -*) - echo "foundryup: could not detect shell, manually add ${FOUNDRY_BIN_DIR} to your PATH." - exit 1 -esac - -# Only add foundryup if it isn't already in PATH. -if [[ ":$PATH:" != *":${FOUNDRY_BIN_DIR}:"* ]]; then - # Add the foundryup directory to the path and ensure the old PATH variables remain. - # If the shell is fish, echo fish_add_path instead of export. - if [[ "$PREF_SHELL" == "fish" ]]; then - echo >> "$PROFILE" && echo "fish_add_path -a $FOUNDRY_BIN_DIR" >> "$PROFILE" - else - echo >> "$PROFILE" && echo "export PATH=\"\$PATH:$FOUNDRY_BIN_DIR\"" >> "$PROFILE" - fi -fi - -# Warn MacOS users that they may need to manually install libusb via Homebrew: -if [[ "$OSTYPE" =~ ^darwin ]] && [[ ! -f /usr/local/opt/libusb/lib/libusb-1.0.0.dylib && ! -f /opt/homebrew/opt/libusb/lib/libusb-1.0.0.dylib ]]; then - echo && echo "warning: libusb not found. You may need to install it manually on MacOS via Homebrew (brew install libusb)." -fi - -echo -echo "Detected your preferred shell is $PREF_SHELL and added foundryup to PATH." -echo "Run 'source $PROFILE' or start a new terminal session to use foundryup." -echo "Then, simply run 'foundryup' to install Foundry." diff --git a/sfoundryup/README.md b/sfoundryup/README.md new file mode 100644 index 000000000..bb527b274 --- /dev/null +++ b/sfoundryup/README.md @@ -0,0 +1,45 @@ +# `sfoundryup` +Install, update, or revert to a specific branch, fork, or version of Seismic Foundry tools with ease. +## Installing +Before installing, ensure you have a **GitHub Personal Access Token (PAT)** with repository access. Export the token as an environment variable: +```bash +export SEISMIC_PAT=your_personal_access_token +``` +Then, run the following command to install sfoundryup: +```bash +curl -s https://$SEISMIC_PAT@raw.githubusercontent.com/SeismicSystems/seismic-foundry/main/sfoundryup | bash +``` +## Usage +To install the **nightly** version of Seismic Foundry tools: +```bash +sfoundryup +``` +### Install a specific **version** (in this case the nightly version): +```bash +sfoundryup --version nightly +``` +### Install a specific **branch** (in this case the seismic branch): +```bash +sfoundryup --branch seismic +``` +### Install a **fork's main branch** (in this case YourUser/seismic-foundry's main branch): +```bash +sfoundryup --repo YourUser/seismic-foundry +``` +### Install a **specific branch in a fork** (in this case the custom-branch branch's latest commit in YourUser/seismic-foundry): +```bash +sfoundryup --repo YourUser/seismic-foundry --branch custom-branch +``` +### Install a **specific Pull Request**: +```bash +sfoundryup --pr 123 +``` +### Install from a **specific commit**: +```bash +sfoundryup -C abcdef1234567890 +``` +### Install from a **local directory or repository** (e.g., one located at ~/git/seismic-foundry, assuming you're in the home directory): +```bash +sfoundryup --path ./git/seismic-foundry +``` +**Tip**: All flags have a single-character shorthand equivalent! You can use -v instead of --version, etc. \ No newline at end of file diff --git a/sfoundryup/install b/sfoundryup/install new file mode 100755 index 000000000..39837f114 --- /dev/null +++ b/sfoundryup/install @@ -0,0 +1,74 @@ +#!/usr/bin/env bash +set -eo pipefail + +echo "Installing sfoundryup..." + +# Define paths consistent with sfoundryup +BASE_DIR="${XDG_CONFIG_HOME:-$HOME}" +SEISMIC_DIR="${SEISMIC_DIR:-"$BASE_DIR/.seismic"}" +SEISMIC_BIN_DIR="$SEISMIC_DIR/bin" + +BIN_PATH="$SEISMIC_BIN_DIR/sfoundryup" + +# Ensure SEISMIC_PAT is set +if [[ -z "$SEISMIC_PAT" ]]; then + echo "Error: SEISMIC_PAT environment variable is not set. Please export it with your GitHub Personal Access Token." + echo "Example: export SEISMIC_PAT=your_personal_access_token" + exit 1 +fi + +# GitHub raw URL to sfoundryup in the private repository +RAW_API_URL="https://raw.githubusercontent.com/SeismicSystems/seismic-foundry/seismic/sfoundryup/sfoundryup" + +# Create necessary directories +mkdir -p "$SEISMIC_BIN_DIR" + +# Download sfoundryup using GitHub raw content URL +echo "Fetching sfoundryup from the private repository..." +curl -sSf -H "Authorization: token $SEISMIC_PAT" \ + "$RAW_API_URL" -o "$BIN_PATH" + +# Make the file executable +chmod +x "$BIN_PATH" + +# Update the PATH environment variable +case $SHELL in +*/zsh) + PROFILE="${ZDOTDIR:-$HOME}/.zshenv" + ;; +*/bash) + PROFILE="$HOME/.bashrc" + ;; +*/fish) + PROFILE="$HOME/.config/fish/config.fish" + ;; +*/ash) + PROFILE="$HOME/.profile" + ;; +*) + echo "Could not detect shell. Please manually add $SEISMIC_BIN_DIR to your PATH." + exit 1 +esac + +if [[ ":$PATH:" != *":$SEISMIC_BIN_DIR:"* ]]; then + if [[ "$SHELL" == *fish ]]; then + echo >> "$PROFILE" && echo "fish_add_path $SEISMIC_BIN_DIR" >> "$PROFILE" + else + echo >> "$PROFILE" && echo "export PATH=\"\$PATH:$SEISMIC_BIN_DIR\"" >> "$PROFILE" + fi +fi + +# Ensure prerequisites are installed +echo "Checking prerequisites..." +for cmd in git curl; do + if ! command -v "$cmd" >/dev/null; then + echo "Error: $cmd is required but not installed. Please install it and re-run this script." + exit 1 + fi +done + +# Print completion message +echo +echo "sfoundryup installed successfully at $SEISMIC_BIN_DIR/sfoundryup." +echo "Run 'source $PROFILE' or start a new terminal session to use sfoundryup." +echo "Then, run 'sfoundryup' to install Seismic Foundry tools." diff --git a/sfoundryup/sfoundryup b/sfoundryup/sfoundryup new file mode 100755 index 000000000..87fe6a72e --- /dev/null +++ b/sfoundryup/sfoundryup @@ -0,0 +1,219 @@ +#!/usr/bin/env bash +set -eo pipefail + +BASE_DIR=${XDG_CONFIG_HOME:-$HOME} +SEISMIC_DIR=${SEISMIC_DIR:-"$BASE_DIR/.seismic"} +SEISMIC_BIN_DIR="$SEISMIC_DIR/bin" +SEISMIC_MAN_DIR="$SEISMIC_DIR/share/man/man1" + +SEISMICUP_JOBS="" +BINS=(sforge scast sanvil schisel) + +export RUSTFLAGS="${RUSTFLAGS:--C target-cpu=native}" + +main() { + # Ensure SEISMIC_PAT is set + if [[ -z "$SEISMIC_PAT" ]]; then + echo "Error: SEISMIC_PAT environment variable is not set. Please export it with your GitHub Personal Access Token." + echo "Example: export SEISMIC_PAT=your_personal_access_token" + exit 1 + fi + + need_cmd git + need_cmd curl + need_cmd jq + + while [[ -n $1 ]]; do + case $1 in + --) shift; break;; + -v|--version) shift; SEISMICUP_VERSION=$1;; + -p|--path) shift; SEISMICUP_LOCAL_REPO=$1;; + -j|--jobs) shift; SEISMICUP_JOBS=$1;; + -h|--help) + usage + exit 0 + ;; + *) + warn "unknown option: $1" + usage + exit 1 + ;; + esac + shift + done + + CARGO_BUILD_ARGS=(--release) + + if [ -n "$SEISMICUP_JOBS" ]; then + CARGO_BUILD_ARGS+=(--jobs "$SEISMICUP_JOBS") + fi + + # Print the banner after successfully parsing args + banner + + install_ssolc + + if [[ -n "$SEISMICUP_LOCAL_REPO" ]]; then + install_from_local_repo + else + install_from_remote_repo + fi +} + +install_ssolc() { + echo "Starting ssolc installation..." + + # Ensure SEISMIC_PAT is set + if [[ -z "$SEISMIC_PAT" ]]; then + echo "Error: SEISMIC_PAT environment variable is not set. Please provide a valid GitHub Personal Access Token." + exit 1 + fi + + GITHUB_API_URL="https://api.github.com/repos/SeismicSystems/seismic-solidity-releases/releases/latest" + TARGET_NAME="ssolc-macos-arm64.tar.gz" + INSTALL_DIR="/usr/local/bin" + SSOLC_BIN="$INSTALL_DIR/ssolc" + TEMP_DIR=$(mktemp -d) + + # Fetch the asset ID for the target file + echo "Fetching asset ID for $TARGET_NAME..." + ASSET_ID=$(curl -s -H "Authorization: token $SEISMIC_PAT" "$GITHUB_API_URL" | \ + jq -r --arg name "$TARGET_NAME" '.assets[] | select(.name == $name) | .id') + + if [[ -z "$ASSET_ID" ]]; then + echo "Error: Asset $TARGET_NAME not found in the latest release." + exit 1 + fi + + echo "Found asset ID: $ASSET_ID" + + # Download the file using the asset ID + echo "Downloading $TARGET_NAME..." + curl -L -H "Authorization: token $SEISMIC_PAT" \ + -H "Accept: application/octet-stream" \ + -o "$TEMP_DIR/$TARGET_NAME" \ + "https://api.github.com/repos/SeismicSystems/seismic-solidity-releases/releases/assets/$ASSET_ID" + + # Verify the downloaded file is a valid gzip archive + echo "Verifying the downloaded file..." + if file "$TEMP_DIR/$TARGET_NAME" | grep -q 'gzip compressed data'; then + echo "File verified as a valid gzip archive." + else + echo "Error: Downloaded file is not a valid gzip archive." + exit 1 + fi + + # Extract the gzip archive + echo "Extracting $TARGET_NAME..." + tar -xzf "$TEMP_DIR/$TARGET_NAME" -C "$TEMP_DIR" + + # Ensure the extracted folder exists + EXTRACTED_DIR="$TEMP_DIR/solc" + if [[ ! -d "$EXTRACTED_DIR" ]]; then + echo "Error: Expected directory 'solc' not found in the extracted archive." + exit 1 + fi + + # Move the binary to /usr/local/bin and set permissions + echo "Installing solc binary..." + sudo mv "$EXTRACTED_DIR/solc" "$SSOLC_BIN" + sudo chmod +x "$SSOLC_BIN" + + echo "Installation complete! sscolc installed at $SSOLC_BIN." +} + +install_from_remote_repo() { + SEISMICUP_REPO="SeismicSystems/seismic-foundry" + SEISMICUP_BRANCH="seismic" + + need_cmd cargo + say "Installing Seismic Foundry from $SEISMICUP_REPO (branch: $SEISMICUP_BRANCH)..." + + REPO_PATH="$SEISMIC_DIR/$(basename "$SEISMICUP_REPO")" + + # Clone the repository if it doesn't already exist + if [ ! -d "$REPO_PATH" ]; then + ensure mkdir -p "$SEISMIC_DIR" + say "Cloning the repository using PAT..." + ensure git clone "https://$SEISMIC_PAT@github.com/$SEISMICUP_REPO.git" "$REPO_PATH" + fi + + # Fetch and checkout the branch + cd "$REPO_PATH" + ensure git fetch origin "$SEISMICUP_BRANCH" + ensure git checkout "$SEISMICUP_BRANCH" + + # Build the binaries + ensure cargo build --bins "${CARGO_BUILD_ARGS[@]}" + for bin in "${BINS[@]}"; do + for try_path in target/release/$bin target/release/$bin.exe; do + if [ -f "$try_path" ]; then + [ -e "$SEISMIC_BIN_DIR/$bin" ] && warn "Overwriting existing $bin in $SEISMIC_BIN_DIR" + mv -f "$try_path" "$SEISMIC_BIN_DIR" + fi + done + done + + say "Seismic Foundry installation complete." +} + +usage() { + cat 1>&2 < + +OPTIONS: + -h, --help Print help information + -v, --version Install a specific version from built binaries + -p, --path Build and install a local repository + -j, --jobs Number of CPUs to use for building (default: all CPUs) +EOF +} + +say() { + printf "sfoundryup: %s\n" "$1" +} + +warn() { + say "warning: $1" >&2 +} + +err() { + say "$1" >&2 + exit 1 +} + +need_cmd() { + if ! command -v "$1" &>/dev/null; then + err "Need '$1' (command not found)" + fi +} + +ensure() { + if ! "$@"; then err "Command failed: $*"; fi +} + +banner() { + printf ' + + ##### ####### ###### ##### ## ## ###### ##### ####### ##### ### ### ## ### ###### ###### ### ### +### ## ### ### ## ### ## ### ### ## ### ### ### ## ### ### ### ### ### ### ### ### ### ### ### ### +### ### ## ### ####### ## ### ### ### ### ### ### ####### ### ### ### ### ### ### + ##### ##### ## ##### ####### ## ### ###### ##### ### ### ### ### ####### ### ### ###### ##### + ## ### ## ## ### ### ## ### ### ### ### ### ### ### ### ### ### ### ## ### +### ## ### ### ## ### ## ### ### ## ### ### ### ### ### ### ### ### ### ### ### ### ### ### + ##### ####### ###### ##### ### ### ###### ##### ### ##### ##### ### ### ###### ### ### ### + +Repo : https://github.com/SeismicSystems/seismic-foundry +Book : TODO +Chat : TODO +Support : TODO +Contribute : TODO +' +} + +main "$@" From 74ec9e1ef8cb501bc740515c6a4498f9ff6f4abd Mon Sep 17 00:00:00 2001 From: Ameya Deshmukh Date: Thu, 5 Dec 2024 14:05:36 +0530 Subject: [PATCH 007/130] fix: added in remote fetching for sfoundryup+removed unnecessary docs (#37) --- sfoundryup/README.md | 29 ----------------------------- sfoundryup/sfoundryup | 4 ++-- 2 files changed, 2 insertions(+), 31 deletions(-) diff --git a/sfoundryup/README.md b/sfoundryup/README.md index bb527b274..dac25292b 100644 --- a/sfoundryup/README.md +++ b/sfoundryup/README.md @@ -14,32 +14,3 @@ To install the **nightly** version of Seismic Foundry tools: ```bash sfoundryup ``` -### Install a specific **version** (in this case the nightly version): -```bash -sfoundryup --version nightly -``` -### Install a specific **branch** (in this case the seismic branch): -```bash -sfoundryup --branch seismic -``` -### Install a **fork's main branch** (in this case YourUser/seismic-foundry's main branch): -```bash -sfoundryup --repo YourUser/seismic-foundry -``` -### Install a **specific branch in a fork** (in this case the custom-branch branch's latest commit in YourUser/seismic-foundry): -```bash -sfoundryup --repo YourUser/seismic-foundry --branch custom-branch -``` -### Install a **specific Pull Request**: -```bash -sfoundryup --pr 123 -``` -### Install from a **specific commit**: -```bash -sfoundryup -C abcdef1234567890 -``` -### Install from a **local directory or repository** (e.g., one located at ~/git/seismic-foundry, assuming you're in the home directory): -```bash -sfoundryup --path ./git/seismic-foundry -``` -**Tip**: All flags have a single-character shorthand equivalent! You can use -v instead of --version, etc. \ No newline at end of file diff --git a/sfoundryup/sfoundryup b/sfoundryup/sfoundryup index 87fe6a72e..a8c79e2f8 100755 --- a/sfoundryup/sfoundryup +++ b/sfoundryup/sfoundryup @@ -140,8 +140,8 @@ install_from_remote_repo() { # Fetch and checkout the branch cd "$REPO_PATH" - ensure git fetch origin "$SEISMICUP_BRANCH" - ensure git checkout "$SEISMICUP_BRANCH" + ensure git fetch origin "${SEISMICUP_BRANCH}:remotes/origin/${SEISMICUP_BRANCH}" + ensure git checkout "origin/${SEISMICUP_BRANCH}" # Build the binaries ensure cargo build --bins "${CARGO_BUILD_ARGS[@]}" From 2cea3a9d506fe3b19843c81e927fd0ce875149ee Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Mon, 9 Dec 2024 16:39:00 -0500 Subject: [PATCH 008/130] sfoundryup: Remap SSH => HTTPS for all Seismic repos (#38) --- sfoundryup/sfoundryup | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/sfoundryup/sfoundryup b/sfoundryup/sfoundryup index a8c79e2f8..5f8e36c20 100755 --- a/sfoundryup/sfoundryup +++ b/sfoundryup/sfoundryup @@ -143,6 +143,15 @@ install_from_remote_repo() { ensure git fetch origin "${SEISMICUP_BRANCH}:remotes/origin/${SEISMICUP_BRANCH}" ensure git checkout "origin/${SEISMICUP_BRANCH}" + # Use the git CLI to fetch dependencies + export CARGO_NET_GIT_FETCH_WITH_CLI=true + + # For Seismic dependencies, remap the use of SSH to use HTTPS + access token + # First remove any previous remapping with old access token + ensure git config --global --get-regexp '^url\.https://.*@github\.com/SeismicSystems\.insteadOf' | cut -d' ' -f1 | while read -r key; do git config --global --unset "$key"; done || true + # Then add URL remapping + ensure git config --global url."https://$SEISMIC_PAT@github.com/SeismicSystems".insteadOf "ssh://git@github.com/SeismicSystems" + # Build the binaries ensure cargo build --bins "${CARGO_BUILD_ARGS[@]}" for bin in "${BINS[@]}"; do From c001e087ad4cbe300d3067b38b2ee7c59f916bb1 Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Fri, 13 Dec 2024 16:57:17 -0500 Subject: [PATCH 009/130] anvil: seismic_getTeePublicKey RPC endpoint (#40) --- crates/anvil/core/src/eth/mod.rs | 6 ++++++ crates/anvil/src/eth/api.rs | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/crates/anvil/core/src/eth/mod.rs b/crates/anvil/core/src/eth/mod.rs index 11342b817..57f1f163e 100644 --- a/crates/anvil/core/src/eth/mod.rs +++ b/crates/anvil/core/src/eth/mod.rs @@ -44,6 +44,12 @@ pub struct Params { #[cfg_attr(feature = "serde", derive(serde::Deserialize))] #[cfg_attr(feature = "serde", serde(tag = "method", content = "params"))] pub enum EthRequest { + #[cfg_attr( + feature = "serde", + serde(rename = "seismic_getTeePublicKey", with = "empty_params") + )] + SeismicGetTeePublicKey(()), + #[cfg_attr(feature = "serde", serde(rename = "web3_clientVersion", with = "empty_params"))] Web3ClientVersion(()), diff --git a/crates/anvil/src/eth/api.rs b/crates/anvil/src/eth/api.rs index 90cdc1006..8e1946c0e 100644 --- a/crates/anvil/src/eth/api.rs +++ b/crates/anvil/src/eth/api.rs @@ -158,6 +158,10 @@ impl EthApi { pub async fn execute(&self, request: EthRequest) -> ResponseResult { trace!(target: "rpc::api", "executing eth request"); match request { + EthRequest::SeismicGetTeePublicKey(()) => Ok(Bytes::from(alloy_primitives::hex!( + "0000000000000000000000000000000000000000000000000000000000000000" + ))) + .to_rpc_result(), EthRequest::Web3ClientVersion(()) => self.client_version().to_rpc_result(), EthRequest::Web3Sha3(content) => self.sha3(content).to_rpc_result(), EthRequest::EthGetAccount(addr, block) => { From 88bac4b186c8c1d03e22a5587d2dc790612d3960 Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Fri, 13 Dec 2024 17:01:07 -0500 Subject: [PATCH 010/130] add sfoundryup readme to seismic branch (was only on ameyas) (#41) --- sfoundryup/README.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/sfoundryup/README.md b/sfoundryup/README.md index dac25292b..5329036a5 100644 --- a/sfoundryup/README.md +++ b/sfoundryup/README.md @@ -14,3 +14,33 @@ To install the **nightly** version of Seismic Foundry tools: ```bash sfoundryup ``` + +### Install a specific **version** (in this case the nightly version): +```bash +sfoundryup --version nightly +``` +### Install a specific **branch** (in this case the seismic branch): +```bash +sfoundryup --branch seismic +``` +### Install a **fork's main branch** (in this case YourUser/seismic-foundry's main branch): +```bash +sfoundryup --repo YourUser/seismic-foundry +``` +### Install a **specific branch in a fork** (in this case the custom-branch branch's latest commit in YourUser/seismic-foundry): +```bash +sfoundryup --repo YourUser/seismic-foundry --branch custom-branch +``` +### Install a **specific Pull Request**: +```bash +sfoundryup --pr 123 +``` +### Install from a **specific commit**: +```bash +sfoundryup -C abcdef1234567890 +``` +### Install from a **local directory or repository** (e.g., one located at ~/git/seismic-foundry, assuming you're in the home directory): +```bash +sfoundryup --path ./git/seismic-foundry +``` +**Tip**: All flags have a single-character shorthand equivalent! You can use -v instead of --version, etc. From 2ff64728fc1b391f34061d82885a541927e31970 Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Fri, 13 Dec 2024 17:11:25 -0500 Subject: [PATCH 011/130] anvil: use nonzero key for shared secrets (#42) --- crates/anvil/src/eth/api.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/anvil/src/eth/api.rs b/crates/anvil/src/eth/api.rs index 8e1946c0e..ce19eca39 100644 --- a/crates/anvil/src/eth/api.rs +++ b/crates/anvil/src/eth/api.rs @@ -159,7 +159,7 @@ impl EthApi { trace!(target: "rpc::api", "executing eth request"); match request { EthRequest::SeismicGetTeePublicKey(()) => Ok(Bytes::from(alloy_primitives::hex!( - "0000000000000000000000000000000000000000000000000000000000000000" + "028e76821eb4d77fd30223ca971c49738eb5b5b71eabe93f96b348fdce788ae5a0" ))) .to_rpc_result(), EthRequest::Web3ClientVersion(()) => self.client_version().to_rpc_result(), From 0361d181007ca7ea2bcd91ed7e091a7bb8892d36 Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Mon, 16 Dec 2024 13:43:22 -0500 Subject: [PATCH 012/130] parallelize ci (#44) --- .github/workflows/seismic.yml | 58 ++++++++++++++++++++++++++++++++--- 1 file changed, 54 insertions(+), 4 deletions(-) diff --git a/.github/workflows/seismic.yml b/.github/workflows/seismic.yml index 106dd1062..9ecc6c257 100644 --- a/.github/workflows/seismic.yml +++ b/.github/workflows/seismic.yml @@ -44,6 +44,8 @@ jobs: ${{ secrets.ACTIONS_SREVM_SSH_ED25519 }} ${{ secrets.ACTIONS_SREVMINSPECTORS_SSH_ED25519 }} ${{ secrets.ACTIONS_SFOUNDRYFDB_SSH_ED25519 }} + ${{ secrets.ACTIONS_SRETH_SSH_ED25519 }} + ${{ secrets.ACTIONS_TEESERVICE_SSH_ED25519 }} - name: sforge build run: cargo build --bin sforge - name: sanvil build @@ -52,7 +54,55 @@ jobs: run: RUSTFLAGS="-D warnings" cargo check --bin sforge - name: sanvil warnings run: RUSTFLAGS="-D warnings" cargo check --bin sanvil - # - name: sforge tests - # run: cargo test --bin sforge - # - name: sanvil tests - # run: cargo test --bin sanvil + + warnings: + runs-on: ubuntu-latest + timeout-minutes: 30 + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + - uses: Swatinem/rust-cache@v2 + with: + shared-key: "warnings-cache" + - name: Install SSH Keys + uses: webfactory/ssh-agent@v0.9.0 + with: + ssh-private-key: | + ${{ secrets.ACTIONS_MANTLE_SSH_ED25519 }} + ${{ secrets.ACTIONS_SFORGESTD_SSH_ED25519 }} + ${{ secrets.ACTIONS_SALLOYCORE_SSH_ED25519 }} + ${{ secrets.ACTIONS_SREVM_SSH_ED25519 }} + ${{ secrets.ACTIONS_SREVMINSPECTORS_SSH_ED25519 }} + ${{ secrets.ACTIONS_SFOUNDRYFDB_SSH_ED25519 }} + ${{ secrets.ACTIONS_SRETH_SSH_ED25519 }} + ${{ secrets.ACTIONS_TEESERVICE_SSH_ED25519 }} + - name: sforge warnings + run: RUSTFLAGS="-D warnings" cargo check --bin sforge + - name: sanvil warnings + run: RUSTFLAGS="-D warnings" cargo check --bin sanvil + + # test: + # runs-on: ubuntu-latest + # timeout-minutes: 30 + # steps: + # - uses: actions/checkout@v4 + # - uses: dtolnay/rust-toolchain@stable + # - uses: Swatinem/rust-cache@v2 + # with: + # shared-key: "test-cache" + # - name: Install SSH Keys + # uses: webfactory/ssh-agent@v0.9.0 + # with: + # ssh-private-key: | + # ${{ secrets.ACTIONS_MANTLE_SSH_ED25519 }} + # ${{ secrets.ACTIONS_SFORGESTD_SSH_ED25519 }} + # ${{ secrets.ACTIONS_SALLOYCORE_SSH_ED25519 }} + # ${{ secrets.ACTIONS_SREVM_SSH_ED25519 }} + # ${{ secrets.ACTIONS_SREVMINSPECTORS_SSH_ED25519 }} + # ${{ secrets.ACTIONS_SFOUNDRYFDB_SSH_ED25519 }} + # ${{ secrets.ACTIONS_SRETH_SSH_ED25519 }} + # ${{ secrets.ACTIONS_TEESERVICE_SSH_ED25519 }} + # - name: sforge tests + # run: cargo test --bin sforge + # - name: sanvil tests + # run: cargo test --bin sanvil From 45e613d2aee8e6423c0fb0f335c463b48085624d Mon Sep 17 00:00:00 2001 From: Ameya Date: Fri, 20 Dec 2024 16:37:14 +0530 Subject: [PATCH 013/130] merged upstream --- Cargo.lock | 10544 ---------------------- crates/anvil/src/eth/backend/mem/mod.rs | 4 - 2 files changed, 10548 deletions(-) delete mode 100644 Cargo.lock diff --git a/Cargo.lock b/Cargo.lock deleted file mode 100644 index edb107980..000000000 --- a/Cargo.lock +++ /dev/null @@ -1,10544 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 4 - -[[package]] -name = "Inflector" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" -dependencies = [ - "lazy_static", - "regex", -] - -[[package]] -name = "addr2line" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - -[[package]] -name = "adler2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" - -[[package]] -name = "aes" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" -dependencies = [ - "cfg-if", - "cipher", - "cpufeatures", -] - -[[package]] -name = "ahash" -version = "0.8.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" -dependencies = [ - "cfg-if", - "getrandom", - "once_cell", - "version_check", - "zerocopy", -] - -[[package]] -name = "aho-corasick" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" -dependencies = [ - "memchr", -] - -[[package]] -name = "allocator-api2" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" - -[[package]] -name = "alloy-chains" -version = "0.1.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8158b4878c67837e5413721cc44298e6a2d88d39203175ea025e51892a16ba4c" -dependencies = [ - "alloy-primitives", - "num_enum", - "serde", - "strum", -] - -[[package]] -name = "alloy-consensus" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "629b62e38d471cc15fea534eb7283d2f8a4e8bdb1811bcc5d66dda6cfce6fae1" -dependencies = [ - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "alloy-trie", - "auto_impl", - "c-kzg", - "derive_more", - "k256", - "serde", -] - -[[package]] -name = "alloy-consensus-any" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28666307e76441e7af37a2b90cde7391c28112121bea59f4e0d804df8b20057e" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "serde", -] - -[[package]] -name = "alloy-contract" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eefe64fd344cffa9cf9e3435ec4e93e6e9c3481bc37269af988bf497faf4a6a" -dependencies = [ - "alloy-dyn-abi", - "alloy-json-abi", - "alloy-network", - "alloy-network-primitives", - "alloy-primitives", - "alloy-provider", - "alloy-pubsub", - "alloy-rpc-types-eth", - "alloy-sol-types", - "alloy-transport", - "futures", - "futures-util", - "thiserror 2.0.7", -] - -[[package]] -name = "alloy-dyn-abi" -version = "0.8.1" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=adc0cf2#adc0cf2fb96c9be80df1d71cfe8ba745dc33f1c6" -dependencies = [ - "alloy-json-abi", - "alloy-primitives", - "alloy-sol-type-parser", - "alloy-sol-types", - "arbitrary", - "const-hex", - "derive_arbitrary", - "derive_more", - "itoa", - "proptest", - "serde", - "serde_json", - "winnow", -] - -[[package]] -name = "alloy-eip2930" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0069cf0642457f87a01a014f6dc29d5d893cd4fd8fddf0c3cdfad1bb3ebafc41" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "arbitrary", - "rand", - "serde", -] - -[[package]] -name = "alloy-eip7702" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea59dc42102bc9a1905dc57901edc6dd48b9f38115df86c7d252acba70d71d04" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "arbitrary", - "derive_more", - "k256", - "rand", - "serde", -] - -[[package]] -name = "alloy-eips" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f923dd5fca5f67a43d81ed3ebad0880bd41f6dd0ada930030353ac356c54cd0f" -dependencies = [ - "alloy-eip2930", - "alloy-eip7702", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "c-kzg", - "derive_more", - "once_cell", - "serde", - "sha2", -] - -[[package]] -name = "alloy-genesis" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a7a18afb0b318616b6b2b0e2e7ac5529d32a966c673b48091c9919e284e6aca" -dependencies = [ - "alloy-primitives", - "alloy-serde", - "alloy-trie", - "serde", -] - -[[package]] -name = "alloy-json-abi" -version = "0.8.1" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=adc0cf2#adc0cf2fb96c9be80df1d71cfe8ba745dc33f1c6" -dependencies = [ - "alloy-primitives", - "alloy-sol-type-parser", - "serde", - "serde_json", -] - -[[package]] -name = "alloy-json-rpc" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3c717b5298fad078cd3a418335b266eba91b511383ca9bd497f742d5975d5ab" -dependencies = [ - "alloy-primitives", - "alloy-sol-types", - "serde", - "serde_json", - "thiserror 2.0.7", - "tracing", -] - -[[package]] -name = "alloy-network" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb3705ce7d8602132bcf5ac7a1dd293a42adc2f183abf5907c30ac535ceca049" -dependencies = [ - "alloy-consensus", - "alloy-consensus-any", - "alloy-eips", - "alloy-json-rpc", - "alloy-network-primitives", - "alloy-primitives", - "alloy-rpc-types-any", - "alloy-rpc-types-eth", - "alloy-serde", - "alloy-signer", - "alloy-sol-types", - "async-trait", - "auto_impl", - "futures-utils-wasm", - "serde", - "serde_json", - "thiserror 2.0.7", -] - -[[package]] -name = "alloy-network-primitives" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94ad40869867ed2d9cd3842b1e800889e5b49e6b92da346e93862b4a741bedf3" -dependencies = [ - "alloy-eips", - "alloy-primitives", - "alloy-serde", - "serde", -] - -[[package]] -name = "alloy-node-bindings" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2db5cefbc736b2b26a960dcf82279c70a03695dd11a0032a6dc27601eeb29182" -dependencies = [ - "alloy-genesis", - "alloy-primitives", - "k256", - "rand", - "serde_json", - "tempfile", - "thiserror 2.0.7", - "tracing", - "url", -] - -[[package]] -name = "alloy-primitives" -version = "0.8.1" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=adc0cf2#adc0cf2fb96c9be80df1d71cfe8ba745dc33f1c6" -dependencies = [ - "alloy-rlp", - "arbitrary", - "bytes", - "cfg-if", - "const-hex", - "derive_arbitrary", - "derive_more", - "foldhash", - "getrandom", - "hashbrown 0.15.2", - "hex-literal", - "indexmap 2.7.0", - "itoa", - "k256", - "keccak-asm", - "paste", - "proptest", - "proptest-derive", - "rand", - "ruint", - "rustc-hash", - "serde", - "sha3", - "tiny-keccak", -] - -[[package]] -name = "alloy-provider" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927f708dd457ed63420400ee5f06945df9632d5d101851952056840426a10dc5" -dependencies = [ - "alloy-chains", - "alloy-consensus", - "alloy-eips", - "alloy-json-rpc", - "alloy-network", - "alloy-network-primitives", - "alloy-primitives", - "alloy-pubsub", - "alloy-rpc-client", - "alloy-rpc-types-debug", - "alloy-rpc-types-eth", - "alloy-rpc-types-trace", - "alloy-rpc-types-txpool", - "alloy-transport", - "alloy-transport-http", - "alloy-transport-ipc", - "alloy-transport-ws", - "async-stream", - "async-trait", - "auto_impl", - "dashmap", - "futures", - "futures-utils-wasm", - "lru", - "parking_lot", - "pin-project 1.1.7", - "reqwest", - "schnellru", - "serde", - "serde_json", - "thiserror 2.0.7", - "tokio", - "tracing", - "url", - "wasmtimer", -] - -[[package]] -name = "alloy-pubsub" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d05f63677e210d758cd5d6d1ce10f20c980c3560ccfbe79ba1997791862a04f" -dependencies = [ - "alloy-json-rpc", - "alloy-primitives", - "alloy-transport", - "bimap", - "futures", - "serde", - "serde_json", - "tokio", - "tokio-stream", - "tower 0.5.1", - "tracing", -] - -[[package]] -name = "alloy-rlp" -version = "0.3.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f542548a609dca89fcd72b3b9f355928cf844d4363c5eed9c5273a3dd225e097" -dependencies = [ - "alloy-rlp-derive", - "arrayvec", - "bytes", -] - -[[package]] -name = "alloy-rlp-derive" -version = "0.3.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a833d97bf8a5f0f878daf2c8451fff7de7f9de38baa5a45d936ec718d81255a" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "alloy-rpc-client" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d82952dca71173813d4e5733e2c986d8b04aea9e0f3b0a576664c232ad050a5" -dependencies = [ - "alloy-json-rpc", - "alloy-primitives", - "alloy-pubsub", - "alloy-transport", - "alloy-transport-http", - "alloy-transport-ipc", - "alloy-transport-ws", - "futures", - "pin-project 1.1.7", - "reqwest", - "serde", - "serde_json", - "tokio", - "tokio-stream", - "tower 0.5.1", - "tracing", - "url", - "wasmtimer", -] - -[[package]] -name = "alloy-rpc-types" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64333d639f2a0cf73491813c629a405744e16343a4bc5640931be707c345ecc5" -dependencies = [ - "alloy-primitives", - "alloy-rpc-types-anvil", - "alloy-rpc-types-engine", - "alloy-rpc-types-eth", - "alloy-rpc-types-trace", - "alloy-rpc-types-txpool", - "alloy-serde", - "serde", -] - -[[package]] -name = "alloy-rpc-types-anvil" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d25cb45ad7c0930dd62eecf164d2afe4c3d2dd2c82af85680ad1f118e1e5cb83" -dependencies = [ - "alloy-primitives", - "alloy-rpc-types-eth", - "alloy-serde", - "serde", -] - -[[package]] -name = "alloy-rpc-types-any" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea98f81bcd759dbfa3601565f9d7a02220d8ef1d294ec955948b90aaafbfd857" -dependencies = [ - "alloy-consensus-any", - "alloy-rpc-types-eth", - "alloy-serde", -] - -[[package]] -name = "alloy-rpc-types-debug" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fd14f68a482e67dfba52d404dfff1d3b0d9fc3b4775bd0923f3175d7661c3bd" -dependencies = [ - "alloy-primitives", - "serde", -] - -[[package]] -name = "alloy-rpc-types-engine" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1464c4dd646e1bdfde86ae65ce5ba168dbb29180b478011fe87117ae46b1629b" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "derive_more 1.0.0", - "jsonwebtoken", - "rand", - "serde", -] - -[[package]] -name = "alloy-rpc-types-eth" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83aa984386deda02482660aa31cb8ca1e63d533f1c31a52d7d181ac5ec68e9b8" -dependencies = [ - "alloy-consensus", - "alloy-consensus-any", - "alloy-eips", - "alloy-network-primitives", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "alloy-sol-types", - "cfg-if", - "derive_more 1.0.0", - "hashbrown 0.14.5", - "itertools 0.13.0", - "serde", - "serde_json", -] - -[[package]] -name = "alloy-rpc-types-trace" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98db35cd42c90b484377e6bc44d95377a7a38a5ebee996e67754ac0446d542ab" -dependencies = [ - "alloy-primitives", - "alloy-rpc-types-eth", - "alloy-serde", - "serde", - "serde_json", - "thiserror 2.0.7", -] - -[[package]] -name = "alloy-rpc-types-txpool" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bac37082c3b21283b3faf5cc0e08974272aee2f756ce1adeb26db56a5fce0d5" -dependencies = [ - "alloy-primitives", - "alloy-rpc-types-eth", - "alloy-serde", - "serde", -] - -[[package]] -name = "alloy-serde" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "731f75ec5d383107fd745d781619bd9cedf145836c51ecb991623d41278e71fa" -dependencies = [ - "alloy-primitives", - "serde", - "serde_json", -] - -[[package]] -name = "alloy-signer" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "307324cca94354cd654d6713629f0383ec037e1ff9e3e3d547212471209860c0" -dependencies = [ - "alloy-dyn-abi", - "alloy-primitives", - "alloy-sol-types", - "async-trait", - "auto_impl", - "elliptic-curve", - "k256", - "thiserror 2.0.7", -] - -[[package]] -name = "alloy-signer-aws" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "076be69aa26a4c500919f1ad3847662aa6d1e9bc2995e263ed826b1546d1b990" -dependencies = [ - "alloy-consensus", - "alloy-network", - "alloy-primitives", - "alloy-signer", - "async-trait", - "aws-sdk-kms", - "k256", - "spki", - "thiserror 2.0.7", - "tracing", -] - -[[package]] -name = "alloy-signer-gcp" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cabd79d4eb954a8c2ae7889a18e2466af186ae68376251cf58525239c156ec54" -dependencies = [ - "alloy-consensus", - "alloy-network", - "alloy-primitives", - "alloy-signer", - "async-trait", - "gcloud-sdk", - "k256", - "spki", - "thiserror 2.0.7", - "tracing", -] - -[[package]] -name = "alloy-signer-ledger" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3df66f5ddcc32d2070485dc702f5f5fb97cfbfa817f6e2e6bac16a4e32ed44c" -dependencies = [ - "alloy-consensus", - "alloy-dyn-abi", - "alloy-network", - "alloy-primitives", - "alloy-signer", - "alloy-sol-types", - "async-trait", - "coins-ledger", - "futures-util", - "semver 1.0.24", - "thiserror 2.0.7", - "tracing", -] - -[[package]] -name = "alloy-signer-local" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fabe917ab1778e760b4701628d1cae8e028ee9d52ac6307de4e1e9286ab6b5f" -dependencies = [ - "alloy-consensus", - "alloy-network", - "alloy-primitives", - "alloy-signer", - "async-trait", - "coins-bip32", - "coins-bip39", - "eth-keystore", - "k256", - "rand", - "thiserror 2.0.7", -] - -[[package]] -name = "alloy-signer-trezor" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1068949eda889b2c052b29a6e8c7ea2ba16be6d1af83ad165fff2a4e4ad19fcd" -dependencies = [ - "alloy-consensus", - "alloy-network", - "alloy-primitives", - "alloy-signer", - "async-trait", - "semver 1.0.24", - "thiserror 2.0.7", - "tracing", - "trezor-client", -] - -[[package]] -name = "alloy-sol-macro" -version = "0.8.1" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=adc0cf2#adc0cf2fb96c9be80df1d71cfe8ba745dc33f1c6" -dependencies = [ - "alloy-sol-macro-expander", - "alloy-sol-macro-input", - "proc-macro-error2", - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "alloy-sol-macro-expander" -version = "0.8.1" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=adc0cf2#adc0cf2fb96c9be80df1d71cfe8ba745dc33f1c6" -dependencies = [ - "alloy-json-abi", - "alloy-sol-macro-input", - "const-hex", - "heck", - "indexmap 2.7.0", - "proc-macro-error2", - "proc-macro2", - "quote", - "syn 2.0.79", - "syn-solidity", - "tiny-keccak", -] - -[[package]] -name = "alloy-sol-macro-input" -version = "0.8.1" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=adc0cf2#adc0cf2fb96c9be80df1d71cfe8ba745dc33f1c6" -dependencies = [ - "alloy-json-abi", - "const-hex", - "dunce", - "heck", - "proc-macro2", - "quote", - "serde_json", - "syn 2.0.79", - "syn-solidity", -] - -[[package]] -name = "alloy-sol-type-parser" -version = "0.8.1" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=adc0cf2#adc0cf2fb96c9be80df1d71cfe8ba745dc33f1c6" -dependencies = [ - "serde", - "winnow", -] - -[[package]] -name = "alloy-sol-types" -version = "0.8.1" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=adc0cf2#adc0cf2fb96c9be80df1d71cfe8ba745dc33f1c6" -dependencies = [ - "alloy-json-abi", - "alloy-primitives", - "alloy-sol-macro", - "const-hex", - "serde", -] - -[[package]] -name = "alloy-transport" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33616b2edf7454302a1d48084db185e52c309f73f6c10be99b0fe39354b3f1e9" -dependencies = [ - "alloy-json-rpc", - "base64 0.22.1", - "futures-util", - "futures-utils-wasm", - "serde", - "serde_json", - "thiserror 2.0.7", - "tokio", - "tower 0.5.1", - "tracing", - "url", - "wasmtimer", -] - -[[package]] -name = "alloy-transport-http" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a944f5310c690b62bbb3e7e5ce34527cbd36b2d18532a797af123271ce595a49" -dependencies = [ - "alloy-json-rpc", - "alloy-transport", - "reqwest", - "serde_json", - "tower 0.5.1", - "tracing", - "url", -] - -[[package]] -name = "alloy-transport-ipc" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09fd8491249f74d16ec979b1f5672377b12ebb818e6056478ffa386954dbd350" -dependencies = [ - "alloy-json-rpc", - "alloy-pubsub", - "alloy-transport", - "bytes", - "futures", - "interprocess", - "pin-project 1.1.7", - "serde", - "serde_json", - "tempfile", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "alloy-transport-ws" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9704761f6297fe482276bee7f77a93cb42bd541c2bd6c1c560b6f3a9ece672e" -dependencies = [ - "alloy-pubsub", - "alloy-transport", - "futures", - "http 1.1.0", - "rustls 0.23.13", - "serde_json", - "tokio", - "tokio-tungstenite", - "tracing", - "ws_stream_wasm", -] - -[[package]] -name = "alloy-trie" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a46c9c4fdccda7982e7928904bd85fe235a0404ee3d7e197fff13d61eac8b4f" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "arrayvec", - "derive_more", - "nybbles", - "serde", - "smallvec", - "tracing", -] - -[[package]] -name = "ammonia" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ab99eae5ee58501ab236beb6f20f6ca39be615267b014899c89b2f0bc18a459" -dependencies = [ - "html5ever", - "maplit", - "once_cell", - "tendril", - "url", -] - -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - -[[package]] -name = "android_system_properties" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" -dependencies = [ - "libc", -] - -[[package]] -name = "annotate-snippets" -version = "0.11.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "710e8eae58854cdc1790fcb56cca04d712a17be849eeb81da2a724bf4bae2bc4" -dependencies = [ - "anstyle", - "unicode-width 0.2.0", -] - -[[package]] -name = "anstream" -version = "0.6.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" -dependencies = [ - "anstyle", - "anstyle-parse", - "anstyle-query", - "anstyle-wincon", - "colorchoice", - "is_terminal_polyfill", - "utf8parse", -] - -[[package]] -name = "anstyle" -version = "1.0.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" - -[[package]] -name = "anstyle-parse" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" -dependencies = [ - "utf8parse", -] - -[[package]] -name = "anstyle-query" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" -dependencies = [ - "windows-sys 0.59.0", -] - -[[package]] -name = "anstyle-wincon" -version = "3.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" -dependencies = [ - "anstyle", - "windows-sys 0.59.0", -] - -[[package]] -name = "anvil" -version = "0.3.0" -dependencies = [ - "alloy-chains", - "alloy-consensus", - "alloy-contract", - "alloy-dyn-abi", - "alloy-eips", - "alloy-genesis", - "alloy-json-abi", - "alloy-json-rpc", - "alloy-network", - "alloy-primitives", - "alloy-provider", - "alloy-pubsub", - "alloy-rlp", - "alloy-rpc-client", - "alloy-rpc-types", - "alloy-serde", - "alloy-signer", - "alloy-signer-local", - "alloy-sol-types", - "alloy-transport", - "alloy-transport-ipc", - "alloy-transport-ws", - "alloy-trie", - "anvil-core", - "anvil-rpc", - "anvil-server", - "async-trait", - "axum", - "bytes", - "chrono", - "clap", - "clap_complete", - "clap_complete_fig", - "ctrlc", - "eyre", - "fdlimit", - "flate2", - "foundry-cli", - "foundry-common", - "foundry-config", - "foundry-evm", - "foundry-test-utils", - "futures", - "hyper 1.5.1", - "itertools 0.13.0", - "k256", - "op-alloy-consensus", - "op-alloy-rpc-types", - "parking_lot", - "rand", - "revm", - "serde", - "serde_json", - "serde_repr", - "similar-asserts", - "tempfile", - "thiserror 2.0.7", - "tikv-jemallocator", - "tokio", - "tower 0.4.13", - "tracing", - "tracing-subscriber", - "vergen", - "yansi", -] - -[[package]] -name = "anvil-core" -version = "0.3.0" -dependencies = [ - "alloy-consensus", - "alloy-dyn-abi", - "alloy-eips", - "alloy-network", - "alloy-primitives", - "alloy-rlp", - "alloy-rpc-types", - "alloy-serde", - "alloy-trie", - "bytes", - "foundry-common", - "foundry-evm", - "op-alloy-consensus", - "rand", - "revm", - "serde", - "serde_json", - "thiserror 2.0.7", -] - -[[package]] -name = "anvil-rpc" -version = "0.3.0" -dependencies = [ - "serde", - "serde_json", -] - -[[package]] -name = "anvil-server" -version = "0.3.0" -dependencies = [ - "anvil-rpc", - "async-trait", - "axum", - "bytes", - "clap", - "futures", - "interprocess", - "parking_lot", - "pin-project 1.1.7", - "serde", - "serde_json", - "thiserror 2.0.7", - "tokio-util", - "tower-http", - "tracing", -] - -[[package]] -name = "anyhow" -version = "1.0.89" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" - -[[package]] -name = "arbitrary" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" -dependencies = [ - "derive_arbitrary", -] - -[[package]] -name = "ariadne" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31beedec3ce83ae6da3a79592b3d8d7afd146a5b15bb9bb940279aced60faa89" -dependencies = [ - "unicode-width 0.1.14", - "yansi", -] - -[[package]] -name = "ark-ff" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" -dependencies = [ - "ark-ff-asm 0.3.0", - "ark-ff-macros 0.3.0", - "ark-serialize 0.3.0", - "ark-std 0.3.0", - "derivative", - "num-bigint", - "num-traits", - "paste", - "rustc_version 0.3.3", - "zeroize", -] - -[[package]] -name = "ark-ff" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" -dependencies = [ - "ark-ff-asm 0.4.2", - "ark-ff-macros 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", - "derivative", - "digest 0.10.7", - "itertools 0.10.5", - "num-bigint", - "num-traits", - "paste", - "rustc_version 0.4.1", - "zeroize", -] - -[[package]] -name = "ark-ff-asm" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-asm" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-macros" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" -dependencies = [ - "num-bigint", - "num-traits", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-macros" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" -dependencies = [ - "num-bigint", - "num-traits", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-serialize" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" -dependencies = [ - "ark-std 0.3.0", - "digest 0.9.0", -] - -[[package]] -name = "ark-serialize" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" -dependencies = [ - "ark-std 0.4.0", - "digest 0.10.7", - "num-bigint", -] - -[[package]] -name = "ark-std" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" -dependencies = [ - "num-traits", - "rand", -] - -[[package]] -name = "ark-std" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" -dependencies = [ - "num-traits", - "rand", -] - -[[package]] -name = "arrayvec" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" -dependencies = [ - "serde", -] - -[[package]] -name = "ascii-canvas" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6" -dependencies = [ - "term", -] - -[[package]] -name = "async-compression" -version = "0.4.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df895a515f70646414f4b45c0b79082783b80552b373a68283012928df56f522" -dependencies = [ - "flate2", - "futures-core", - "memchr", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "async-priority-channel" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acde96f444d31031f760c5c43dc786b97d3e1cb2ee49dd06898383fe9a999758" -dependencies = [ - "event-listener", -] - -[[package]] -name = "async-recursion" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "async-stream" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" -dependencies = [ - "async-stream-impl", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-stream-impl" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "async-trait" -version = "0.1.83" -version = "0.1.83" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" -checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "async_io_stream" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c" -dependencies = [ - "futures", - "pharos", - "rustc_version 0.4.1", -] - -[[package]] -name = "atomic" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d818003e740b63afc82337e3160717f4f63078720a810b7b903e70a5d1d2994" -dependencies = [ - "bytemuck", -] - -[[package]] -name = "atomic-take" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8ab6b55fe97976e46f91ddbed8d147d966475dc29b2032757ba47e02376fbc3" - -[[package]] -name = "atomic-waker" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" - -[[package]] -name = "aurora-engine-modexp" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0aef7712851e524f35fbbb74fa6599c5cd8692056a1c36f9ca0d2001b670e7e5" -dependencies = [ - "hex", - "num", -] - -[[package]] -name = "auto_impl" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "autocfg" -version = "1.4.0" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" - -[[package]] -name = "aws-config" -version = "1.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8191fb3091fa0561d1379ef80333c3c7191c6f0435d986e85821bcf7acbd1126" -dependencies = [ - "aws-credential-types", - "aws-runtime", - "aws-sdk-sso", - "aws-sdk-ssooidc", - "aws-sdk-sts", - "aws-smithy-async", - "aws-smithy-http", - "aws-smithy-json 0.60.7", - "aws-smithy-runtime", - "aws-smithy-runtime-api", - "aws-smithy-types", - "aws-types", - "bytes", - "fastrand", - "hex", - "http 0.2.12", - "ring", - "time", - "tokio", - "tracing", - "url", - "zeroize", -] - -[[package]] -name = "aws-credential-types" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60e8f6b615cb5fc60a98132268508ad104310f0cfb25a1c22eee76efdf9154da" -dependencies = [ - "aws-smithy-async", - "aws-smithy-runtime-api", - "aws-smithy-types", - "zeroize", -] - -[[package]] -name = "aws-runtime" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a10d5c055aa540164d9561a0e2e74ad30f0dcf7393c3a92f6733ddf9c5762468" -dependencies = [ - "aws-credential-types", - "aws-sigv4", - "aws-smithy-async", - "aws-smithy-http", - "aws-smithy-runtime", - "aws-smithy-runtime-api", - "aws-smithy-types", - "aws-types", - "bytes", - "fastrand", - "http 0.2.12", - "http-body 0.4.6", - "once_cell", - "percent-encoding", - "pin-project-lite", - "tracing", - "uuid 1.11.0", -] - -[[package]] -name = "aws-sdk-kms" -version = "1.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0caf20b8855dbeb458552e6c8f8f9eb92b95e4a131725b93540ec73d60c38eb3" -dependencies = [ - "aws-credential-types", - "aws-runtime", - "aws-smithy-async", - "aws-smithy-http", - "aws-smithy-json 0.61.1", - "aws-smithy-runtime", - "aws-smithy-runtime-api", - "aws-smithy-types", - "aws-types", - "bytes", - "http 0.2.12", - "once_cell", - "regex-lite", - "tracing", -] - -[[package]] -name = "aws-sdk-sso" -version = "1.44.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b90cfe6504115e13c41d3ea90286ede5aa14da294f3fe077027a6e83850843c" -dependencies = [ - "aws-credential-types", - "aws-runtime", - "aws-smithy-async", - "aws-smithy-http", - "aws-smithy-json 0.61.1", - "aws-smithy-runtime", - "aws-smithy-runtime-api", - "aws-smithy-types", - "aws-types", - "bytes", - "http 0.2.12", - "once_cell", - "regex-lite", - "tracing", -] - -[[package]] -name = "aws-sdk-ssooidc" -version = "1.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "167c0fad1f212952084137308359e8e4c4724d1c643038ce163f06de9662c1d0" -dependencies = [ - "aws-credential-types", - "aws-runtime", - "aws-smithy-async", - "aws-smithy-http", - "aws-smithy-json 0.61.1", - "aws-smithy-runtime", - "aws-smithy-runtime-api", - "aws-smithy-types", - "aws-types", - "bytes", - "http 0.2.12", - "once_cell", - "regex-lite", - "tracing", -] - -[[package]] -name = "aws-sdk-sts" -version = "1.44.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cb5f98188ec1435b68097daa2a37d74b9d17c9caa799466338a8d1544e71b9d" -dependencies = [ - "aws-credential-types", - "aws-runtime", - "aws-smithy-async", - "aws-smithy-http", - "aws-smithy-json 0.61.1", - "aws-smithy-query", - "aws-smithy-runtime", - "aws-smithy-runtime-api", - "aws-smithy-types", - "aws-smithy-xml", - "aws-types", - "http 0.2.12", - "once_cell", - "regex-lite", - "tracing", -] - -[[package]] -name = "aws-sigv4" -version = "1.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc8db6904450bafe7473c6ca9123f88cc11089e41a025408f992db4e22d3be68" -dependencies = [ - "aws-credential-types", - "aws-smithy-http", - "aws-smithy-runtime-api", - "aws-smithy-types", - "bytes", - "form_urlencoded", - "hex", - "hmac", - "http 0.2.12", - "http 1.2.0", - "once_cell", - "percent-encoding", - "sha2", - "time", - "tracing", -] - -[[package]] -name = "aws-smithy-async" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62220bc6e97f946ddd51b5f1361f78996e704677afc518a4ff66b7a72ea1378c" -dependencies = [ - "futures-util", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "aws-smithy-http" -version = "0.60.11" -version = "0.60.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c8bc3e8fdc6b8d07d976e301c02fe553f72a39b7a9fea820e023268467d7ab6" -checksum = "5c8bc3e8fdc6b8d07d976e301c02fe553f72a39b7a9fea820e023268467d7ab6" -dependencies = [ - "aws-smithy-runtime-api", - "aws-smithy-types", - "bytes", - "bytes-utils", - "futures-core", - "http 0.2.12", - "http-body 0.4.6", - "once_cell", - "percent-encoding", - "pin-project-lite", - "pin-utils", - "tracing", -] - -[[package]] -name = "aws-smithy-json" -version = "0.60.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4683df9469ef09468dad3473d129960119a0d3593617542b7d52086c8486f2d6" -dependencies = [ - "aws-smithy-types", -] - -[[package]] -name = "aws-smithy-json" -version = "0.61.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee4e69cc50921eb913c6b662f8d909131bb3e6ad6cb6090d3a39b66fc5c52095" -dependencies = [ - "aws-smithy-types", -] - -[[package]] -name = "aws-smithy-query" -version = "0.60.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2fbd61ceb3fe8a1cb7352e42689cec5335833cd9f94103a61e98f9bb61c64bb" -dependencies = [ - "aws-smithy-types", - "urlencoding", -] - -[[package]] -name = "aws-smithy-runtime" -version = "1.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f20685047ca9d6f17b994a07f629c813f08b5bce65523e47124879e60103d45" -dependencies = [ - "aws-smithy-async", - "aws-smithy-http", - "aws-smithy-runtime-api", - "aws-smithy-types", - "bytes", - "fastrand", - "h2 0.3.26", - "http 0.2.12", - "http-body 0.4.6", - "http-body 1.0.1", - "httparse", - "hyper 0.14.31", - "hyper-rustls 0.24.2", - "once_cell", - "pin-project-lite", - "pin-utils", - "rustls 0.21.12", - "tokio", - "tracing", -] - -[[package]] -name = "aws-smithy-runtime-api" -version = "1.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92165296a47a812b267b4f41032ff8069ab7ff783696d217f0994a0d7ab585cd" -dependencies = [ - "aws-smithy-async", - "aws-smithy-types", - "bytes", - "http 0.2.12", - "http 1.2.0", - "pin-project-lite", - "tokio", - "tracing", - "zeroize", -] - -[[package]] -name = "aws-smithy-types" -version = "1.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147100a7bea70fa20ef224a6bad700358305f5dc0f84649c53769761395b355b" -dependencies = [ - "base64-simd", - "bytes", - "bytes-utils", - "http 0.2.12", - "http 1.2.0", - "http-body 0.4.6", - "http-body 1.0.1", - "http-body-util", - "itoa", - "num-integer", - "pin-project-lite", - "pin-utils", - "ryu", - "serde", - "time", -] - -[[package]] -name = "aws-smithy-xml" -version = "0.60.9" -version = "0.60.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab0b0166827aa700d3dc519f72f8b3a91c35d0b8d042dc5d643a91e6f80648fc" -checksum = "ab0b0166827aa700d3dc519f72f8b3a91c35d0b8d042dc5d643a91e6f80648fc" -dependencies = [ - "xmlparser", -] - -[[package]] -name = "aws-types" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5221b91b3e441e6675310829fd8984801b772cb1546ef6c0e54dec9f1ac13fef" -dependencies = [ - "aws-credential-types", - "aws-smithy-async", - "aws-smithy-runtime-api", - "aws-smithy-types", - "rustc_version 0.4.1", - "tracing", -] - -[[package]] -name = "axum" -version = "0.7.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "504e3947307ac8326a5437504c517c4b56716c9d98fac0028c2acc7ca47d70ae" -dependencies = [ - "async-trait", - "axum-core", - "base64 0.22.1", - "base64 0.22.1", - "bytes", - "futures-util", - "http 1.2.0", - "http-body 1.0.1", - "http-body-util", - "hyper 1.5.1", - "hyper-util", - "itoa", - "matchit", - "memchr", - "mime", - "percent-encoding", - "pin-project-lite", - "rustversion", - "serde", - "serde_json", - "serde_path_to_error", - "serde_urlencoded", - "sha1", - "sync_wrapper", - "tokio", - "tokio-tungstenite 0.24.0", - "tower 0.5.1", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "axum-core" -version = "0.4.5" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" -checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" -dependencies = [ - "async-trait", - "bytes", - "futures-util", - "http 1.2.0", - "http-body 1.0.1", - "http-body-util", - "mime", - "pin-project-lite", - "rustversion", - "sync_wrapper 1.0.1", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "backtrace" -version = "0.3.71" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" -dependencies = [ - "addr2line", - "cc", - "cfg-if", - "libc", - "miniz_oxide 0.7.4", - "object", - "rustc-demangle", -] - -[[package]] -name = "base16ct" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" - -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - -[[package]] -name = "base64" -version = "0.22.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" - -[[package]] -name = "base64-simd" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "339abbe78e73178762e23bea9dfd08e697eb3f3301cd4be981c0f78ba5859195" -dependencies = [ - "outref", - "vsimd", -] - -[[package]] -name = "base64ct" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" - -[[package]] -name = "bech32" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" - -[[package]] -name = "bimap" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "230c5f1ca6a325a32553f8640d31ac9b49f2411e901e427570154868b46da4f7" - -[[package]] -name = "bit-set" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" -dependencies = [ - "arbitrary", - "serde", -] - -[[package]] -name = "bitvec" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" -dependencies = [ - "funty", - "radium", - "serde", - "tap", - "wyz", -] - -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - -[[package]] -name = "blst" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4378725facc195f1a538864863f6de233b500a8862747e7f165078a419d5e874" -dependencies = [ - "cc", - "glob", - "threadpool", - "zeroize", -] - -[[package]] -name = "bon" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f265cdb2e8501f1c952749e78babe8f1937be92c98120e5f78fc72d634682bad" -dependencies = [ - "bon-macros", - "rustversion", -] - -[[package]] -name = "bon-macros" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38aa5c627cd7706490e5b003d685f8b9d69bc343b1a00b9fdd01e75fdf6827cf" -dependencies = [ - "darling", - "ident_case", - "prettyplease", - "proc-macro2", - "quote", - "rustversion", - "syn 2.0.90", -] - -[[package]] -name = "bs58" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" -dependencies = [ - "sha2", - "tinyvec", -] - -[[package]] -name = "bstr" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "786a307d683a5bf92e6fd5fd69a7eb613751668d1d8d67d802846dfe367c62c8" -dependencies = [ - "memchr", - "regex-automata 0.4.8", - "serde", -] - -[[package]] -name = "build_const" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ae4235e6dac0694637c763029ecea1a2ec9e4e06ec2729bd21ba4d9c863eb7" - -[[package]] -name = "bumpalo" -version = "3.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" - -[[package]] -name = "byte-slice-cast" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" - -[[package]] -name = "bytemuck" -version = "1.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b37c88a63ffd85d15b406896cc343916d7cf57838a847b3a6f2ca5d39a5695a" - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "bytes" -version = "1.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" -dependencies = [ - "serde", -] - -[[package]] -name = "bytes-utils" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dafe3a8757b027e2be6e4e5601ed563c55989fcf1546e933c66c8eb3a058d35" -dependencies = [ - "bytes", - "either", -] - -[[package]] -name = "bzip2" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" -dependencies = [ - "bzip2-sys", - "libc", -] - -[[package]] -name = "bzip2-sys" -version = "0.1.11+1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" -dependencies = [ - "cc", - "libc", - "pkg-config", -] - -[[package]] -name = "c-kzg" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0307f72feab3300336fb803a57134159f6e20139af1357f36c54cb90d8e8928" -dependencies = [ - "blst", - "cc", - "glob", - "hex", - "libc", - "once_cell", - "serde", -] - -[[package]] -name = "camino" -version = "1.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo-platform" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo_metadata" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" -dependencies = [ - "camino", - "cargo-platform", - "semver 1.0.24", - "serde", - "serde_json", - "thiserror 1.0.69", -] - -[[package]] -name = "cassowary" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53" - -[[package]] -name = "cast" -version = "0.3.0" -dependencies = [ - "alloy-chains", - "alloy-consensus", - "alloy-contract", - "alloy-dyn-abi", - "alloy-json-abi", - "alloy-json-rpc", - "alloy-network", - "alloy-node-bindings", - "alloy-primitives", - "alloy-provider", - "alloy-rlp", - "alloy-rpc-types", - "alloy-serde", - "alloy-signer", - "alloy-signer-local", - "alloy-sol-types", - "alloy-transport", - "anvil", - "async-trait", - "aws-sdk-kms", - "chrono", - "clap", - "clap_complete", - "clap_complete_fig", - "comfy-table", - "divan", - "dunce", - "evmole", - "eyre", - "foundry-block-explorers", - "foundry-cli", - "foundry-common", - "foundry-compilers", - "foundry-config", - "foundry-evm", - "foundry-test-utils", - "foundry-wallets", - "futures", - "indicatif", - "itertools 0.13.0", - "rand", - "rayon", - "regex", - "rpassword", - "semver 1.0.24", - "serde", - "serde_json", - "tempfile", - "tikv-jemallocator", - "tokio", - "tracing", - "vergen", - "yansi", -] - -[[package]] -name = "castaway" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0abae9be0aaf9ea96a3b1b8b1b55c602ca751eba1b1500220cea4ecbafe7c0d5" -dependencies = [ - "rustversion", -] - -[[package]] -name = "cc" -version = "1.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bbb537bb4a30b90362caddba8f360c0a56bc13d3a5570028e7197204cb54a17" -dependencies = [ - "shlex", -] - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "cfg_aliases" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" - -[[package]] -name = "cfg_aliases" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" - -[[package]] -name = "chisel" -version = "0.3.0" -dependencies = [ - "alloy-dyn-abi", - "alloy-json-abi", - "alloy-primitives", - "alloy-rpc-types", - "clap", - "dirs 5.0.1", - "eyre", - "forge-fmt", - "foundry-block-explorers", - "foundry-cli", - "foundry-common", - "foundry-compilers", - "foundry-config", - "foundry-evm", - "regex", - "reqwest", - "revm", - "rustyline", - "semver 1.0.24", - "serde", - "serde_json", - "serial_test", - "solang-parser", - "solar-parse", - "strum", - "tikv-jemallocator", - "time", - "tokio", - "tracing", - "tracing-subscriber", - "vergen", - "yansi", -] - -[[package]] -name = "chrono" -version = "0.4.39" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" -dependencies = [ - "android-tzdata", - "iana-time-zone", - "num-traits", - "serde", - "windows-targets 0.52.6", -] - -[[package]] -name = "ciborium" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" -dependencies = [ - "ciborium-io", - "ciborium-ll", - "serde", -] - -[[package]] -name = "ciborium-io" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" - -[[package]] -name = "ciborium-ll" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" -dependencies = [ - "ciborium-io", - "half", -] - -[[package]] -name = "cipher" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" -dependencies = [ - "crypto-common", - "inout", -] - -[[package]] -name = "clap" -version = "4.5.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0956a43b323ac1afaffc053ed5c4b7c1f1800bacd1683c353aabbb752515dd3" -dependencies = [ - "clap_builder", - "clap_derive", -] - -[[package]] -name = "clap_builder" -version = "4.5.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d72166dd41634086d5803a47eb71ae740e61d84709c36f3c34110173db3961b" -dependencies = [ - "anstream", - "anstyle", - "clap_lex", - "strsim", - "terminal_size", - "unicase", - "unicode-width 0.2.0", -] - -[[package]] -name = "clap_complete" -version = "4.5.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8937760c3f4c60871870b8c3ee5f9b30771f792a7045c48bcbba999d7d6b3b8e" -dependencies = [ - "clap", -] - -[[package]] -name = "clap_complete_fig" -version = "4.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d494102c8ff3951810c72baf96910b980fb065ca5d3101243e6a8dc19747c86b" -dependencies = [ - "clap", - "clap_complete", -] - -[[package]] -name = "clap_derive" -version = "4.5.18" -version = "4.5.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" -checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "clap_lex" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" - -[[package]] -name = "clearscreen" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f8c93eb5f77c9050c7750e14f13ef1033a40a0aac70c6371535b6763a01438c" -dependencies = [ - "nix 0.28.0", - "terminfo", - "thiserror 1.0.69", - "which", - "winapi", -] - -[[package]] -name = "cliclack" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a80570d35684e725e9d2d4aaaf32bc0cbfcfb8539898f9afea3da0d2e5189e4" -dependencies = [ - "console", - "indicatif", - "once_cell", - "strsim", - "textwrap", - "zeroize", -] - -[[package]] -name = "clipboard-win" -version = "5.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15efe7a882b08f34e38556b14f2fb3daa98769d06c7f0c1b076dfd0d983bc892" -dependencies = [ - "error-code", -] - -[[package]] -name = "coins-bip32" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2073678591747aed4000dd468b97b14d7007f7936851d3f2f01846899f5ebf08" -dependencies = [ - "bs58", - "coins-core", - "digest 0.10.7", - "hmac", - "k256", - "serde", - "sha2", - "thiserror 1.0.69", -] - -[[package]] -name = "coins-bip39" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74b169b26623ff17e9db37a539fe4f15342080df39f129ef7631df7683d6d9d4" -dependencies = [ - "bitvec", - "coins-bip32", - "hmac", - "once_cell", - "pbkdf2 0.12.2", - "rand", - "sha2", - "thiserror 1.0.69", -] - -[[package]] -name = "coins-core" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b962ad8545e43a28e14e87377812ba9ae748dd4fd963f4c10e9fcc6d13475b" -dependencies = [ - "base64 0.21.7", - "bech32", - "bs58", - "const-hex", - "digest 0.10.7", - "generic-array", - "ripemd", - "serde", - "sha2", - "sha3", - "thiserror 1.0.69", -] - -[[package]] -name = "coins-ledger" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab9bc0994d0aa0f4ade5f3a9baf4a8d936f250278c85a1124b401860454246ab" -dependencies = [ - "async-trait", - "byteorder", - "cfg-if", - "const-hex", - "getrandom", - "hidapi-rusb", - "js-sys", - "log", - "nix 0.26.4", - "once_cell", - "thiserror 1.0.69", - "tokio", - "tracing", - "wasm-bindgen", - "wasm-bindgen-futures", -] - -[[package]] -name = "color-eyre" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55146f5e46f237f7423d74111267d4597b59b0dad0ffaf7303bce9945d843ad5" -dependencies = [ - "backtrace", - "color-spantrace", - "eyre", - "indenter", - "once_cell", - "owo-colors", - "tracing-error", -] - -[[package]] -name = "color-spantrace" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd6be1b2a7e382e2b98b43b2adcca6bb0e465af0bdd38123873ae61eb17a72c2" -dependencies = [ - "once_cell", - "owo-colors", - "tracing-core", - "tracing-error", -] - -[[package]] -name = "colorchoice" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" - -[[package]] -name = "comfy-table" -version = "7.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24f165e7b643266ea80cb858aed492ad9280e3e05ce24d4a99d7d7b889b6a4d9" -dependencies = [ - "crossterm", - "strum", - "strum_macros", - "unicode-width 0.2.0", -] - -[[package]] -name = "compact_str" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6050c3a16ddab2e412160b31f2c871015704239bca62f72f6e5f0be631d3f644" -dependencies = [ - "castaway", - "cfg-if", - "itoa", - "rustversion", - "ryu", - "static_assertions", -] - -[[package]] -name = "concurrent-queue" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "condtype" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf0a07a401f374238ab8e2f11a104d2851bf9ce711ec69804834de8af45c7af" - -[[package]] -name = "console" -version = "0.15.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" -dependencies = [ - "encode_unicode", - "lazy_static", - "libc", - "unicode-width 0.1.14", - "windows-sys 0.52.0", -] - -[[package]] -name = "console_error_panic_hook" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" -dependencies = [ - "cfg-if", - "wasm-bindgen", -] - -[[package]] -name = "const-hex" -version = "1.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0121754e84117e65f9d90648ee6aa4882a6e63110307ab73967a4c5e7e69e586" -dependencies = [ - "cfg-if", - "cpufeatures", - "hex", - "proptest", - "serde", -] - -[[package]] -name = "const-oid" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" - -[[package]] -name = "convert_case" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "core-foundation" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" - -[[package]] -name = "cpufeatures" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" -dependencies = [ - "libc", -] - -[[package]] -name = "crc32fast" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "crossbeam-channel" -version = "0.5.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-deque" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" -dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" - -[[package]] -name = "crossterm" -version = "0.28.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" -dependencies = [ - "bitflags 2.6.0", - "crossterm_winapi", - "mio 1.0.3", - "parking_lot", - "rustix", - "signal-hook", - "signal-hook-mio", - "winapi", -] - -[[package]] -name = "crossterm_winapi" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b" -dependencies = [ - "winapi", -] - -[[package]] -name = "crunchy" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" - -[[package]] -name = "crypto-bigint" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" -dependencies = [ - "generic-array", - "rand_core", - "subtle", - "zeroize", -] - -[[package]] -name = "crypto-common" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" -dependencies = [ - "generic-array", - "typenum", -] - -[[package]] -name = "ctr" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" -dependencies = [ - "cipher", -] - -[[package]] -name = "ctrlc" -version = "3.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90eeab0aa92f3f9b4e87f258c72b139c207d251f9cbc1080a0086b86a8870dd3" -dependencies = [ - "nix 0.29.0", - "windows-sys 0.59.0", -] - -[[package]] -name = "darling" -version = "0.20.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" -dependencies = [ - "darling_core", - "darling_macro", -] - -[[package]] -name = "darling_core" -version = "0.20.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 2.0.79", -] - -[[package]] -name = "darling_macro" -version = "0.20.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" -dependencies = [ - "darling_core", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "dashmap" -version = "6.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" -dependencies = [ - "cfg-if", - "crossbeam-utils", - "hashbrown 0.14.5", - "lock_api", - "once_cell", - "parking_lot_core", -] - -[[package]] -name = "data-encoding" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" - -[[package]] -name = "dbus" -version = "0.9.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bb21987b9fb1613058ba3843121dd18b163b254d8a6e797e144cbac14d96d1b" -dependencies = [ - "libc", - "libdbus-sys", - "winapi", -] - -[[package]] -name = "der" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" -dependencies = [ - "const-oid", - "pem-rfc7468", - "zeroize", -] - -[[package]] -name = "deranged" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" -dependencies = [ - "powerfmt", -] - -[[package]] -name = "derivative" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "derive_arbitrary" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "derive_builder" -version = "0.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" -dependencies = [ - "derive_builder_macro", -] - -[[package]] -name = "derive_builder_core" -version = "0.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "derive_builder_macro" -version = "0.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" -dependencies = [ - "derive_builder_core", - "syn 2.0.79", -] - -[[package]] -name = "derive_more" -version = "0.99.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "derive_more" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" -dependencies = [ - "derive_more-impl", -] - -[[package]] -name = "derive_more-impl" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" -dependencies = [ - "convert_case", - "proc-macro2", - "quote", - "syn 2.0.79", - "unicode-xid", -] - -[[package]] -name = "dialoguer" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658bce805d770f407bc62102fca7c2c64ceef2fbcb2b8bd19d2765ce093980de" -dependencies = [ - "console", - "shell-words", - "tempfile", - "thiserror 1.0.69", - "zeroize", -] - -[[package]] -name = "diff" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" - -[[package]] -name = "digest" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" -dependencies = [ - "generic-array", -] - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer", - "const-oid", - "crypto-common", - "subtle", -] - -[[package]] -name = "dirs" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" -dependencies = [ - "dirs-sys 0.3.7", -] - -[[package]] -name = "dirs" -version = "5.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" -dependencies = [ - "dirs-sys 0.4.1", -] - -[[package]] -name = "dirs-next" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" -dependencies = [ - "cfg-if", - "dirs-sys-next", -] - -[[package]] -name = "dirs-sys" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" -dependencies = [ - "libc", - "redox_users", - "winapi", -] - -[[package]] -name = "dirs-sys" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" -dependencies = [ - "libc", - "option-ext", - "redox_users", - "windows-sys 0.48.0", -] - -[[package]] -name = "dirs-sys-next" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" -dependencies = [ - "libc", - "redox_users", - "winapi", -] - -[[package]] -name = "displaydoc" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "doctest-file" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aac81fa3e28d21450aa4d2ac065992ba96a1d7303efbce51a95f4fd175b67562" - -[[package]] -name = "dotenvy" -version = "0.15.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" - -[[package]] -name = "downcast" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" - -[[package]] -name = "dunce" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" - -[[package]] -name = "dyn-clone" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" - -[[package]] -name = "ecdsa" -version = "0.16.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" -dependencies = [ - "der", - "digest 0.10.7", - "elliptic-curve", - "rfc6979", - "signature", - "spki", -] - -[[package]] -name = "either" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" - -[[package]] -name = "elasticlunr-rs" -version = "3.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41e83863a500656dfa214fee6682de9c5b9f03de6860fec531235ed2ae9f6571" -dependencies = [ - "regex", - "serde", - "serde_derive", - "serde_json", -] - -[[package]] -name = "elliptic-curve" -version = "0.13.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" -dependencies = [ - "base16ct", - "crypto-bigint", - "digest 0.10.7", - "ff", - "generic-array", - "group", - "pem-rfc7468", - "pkcs8", - "rand_core", - "sec1", - "subtle", - "zeroize", -] - -[[package]] -name = "email-address-parser" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe19a4967eca30062be4abaf813d929ba48b3bfb21830367f7e1baae37f213a" -dependencies = [ - "console_error_panic_hook", - "pest", - "pest_derive", - "quick-xml 0.18.1", - "wasm-bindgen", -] - -[[package]] -name = "ena" -version = "0.14.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d248bdd43ce613d87415282f69b9bb99d947d290b10962dd6c56233312c2ad5" -dependencies = [ - "log", -] - -[[package]] -name = "encode_unicode" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" - -[[package]] -name = "endian-type" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" - -[[package]] -name = "enumn" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "env_filter" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" -dependencies = [ - "log", - "regex", -] - -[[package]] -name = "env_logger" -version = "0.11.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d" -dependencies = [ - "anstream", - "anstyle", - "env_filter", - "humantime", - "log", -] - -[[package]] -name = "equivalent" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" - -[[package]] -name = "errno" -version = "0.3.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" -dependencies = [ - "libc", - "windows-sys 0.59.0", -] - -[[package]] -name = "error-code" -version = "3.3.1" -version = "3.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5d9305ccc6942a704f4335694ecd3de2ea531b114ac2d51f5f843750787a92f" -checksum = "a5d9305ccc6942a704f4335694ecd3de2ea531b114ac2d51f5f843750787a92f" - -[[package]] -name = "eth-keystore" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab" -dependencies = [ - "aes", - "ctr", - "digest 0.10.7", - "hex", - "hmac", - "pbkdf2 0.11.0", - "rand", - "scrypt", - "serde", - "serde_json", - "sha2", - "sha3", - "thiserror 1.0.69", - "uuid 0.8.2", -] - -[[package]] -name = "ethabi" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" -dependencies = [ - "ethereum-types", - "hex", - "once_cell", - "regex", - "serde", - "serde_json", - "sha3", - "thiserror 1.0.69", - "uint", -] - -[[package]] -name = "ethbloom" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" -dependencies = [ - "crunchy", - "fixed-hash", - "impl-codec", - "impl-rlp", - "impl-serde", - "scale-info", - "tiny-keccak", -] - -[[package]] -name = "ethereum-types" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" -dependencies = [ - "ethbloom", - "fixed-hash", - "impl-codec", - "impl-rlp", - "impl-serde", - "primitive-types", - "scale-info", - "uint", -] - -[[package]] -name = "ethers-contract-abigen" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04ba01fbc2331a38c429eb95d4a570166781f14290ef9fdb144278a90b5a739b" -dependencies = [ - "Inflector", - "const-hex", - "dunce", - "ethers-core", - "eyre", - "prettyplease", - "proc-macro2", - "quote", - "regex", - "serde", - "serde_json", - "syn 2.0.79", - "toml 0.8.19", - "walkdir", -] - -[[package]] -name = "ethers-core" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82d80cc6ad30b14a48ab786523af33b37f28a8623fc06afd55324816ef18fb1f" -dependencies = [ - "arrayvec", - "bytes", - "cargo_metadata", - "chrono", - "const-hex", - "elliptic-curve", - "ethabi", - "generic-array", - "k256", - "num_enum", - "once_cell", - "open-fastrlp", - "rand", - "rlp", - "serde", - "serde_json", - "strum", - "syn 2.0.79", - "tempfile", - "thiserror 1.0.69", - "tiny-keccak", - "unicode-xid", -] - -[[package]] -name = "event-listener" -version = "4.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - -[[package]] -name = "evm-disassembler" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded685d9f07315ff689ba56e7d84e6f1e782db19b531a46c34061a733bba7258" -dependencies = [ - "eyre", - "hex", -] - -[[package]] -name = "evmole" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6fcfb15a14bc209e2b3d2bd32291ec445b1e348d7d9d986aa61a09149350fd7" -dependencies = [ - "alloy-dyn-abi", - "alloy-primitives", -] - -[[package]] -name = "eyre" -version = "0.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" -dependencies = [ - "indenter", - "once_cell", -] - -[[package]] -name = "faster-hex" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2a2b11eda1d40935b26cf18f6833c526845ae8c41e58d09af6adeb6f0269183" - -[[package]] -name = "fastrand" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" - -[[package]] -name = "fastrlp" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" -dependencies = [ - "arrayvec", - "auto_impl", - "bytes", -] - -[[package]] -name = "fd-lock" -version = "4.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e5768da2206272c81ef0b5e951a41862938a6070da63bcea197899942d3b947" -dependencies = [ - "cfg-if", - "rustix", - "windows-sys 0.52.0", -] - -[[package]] -name = "fdlimit" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e182f7dbc2ef73d9ef67351c5fbbea084729c48362d3ce9dd44c28e32e277fe5" -dependencies = [ - "libc", - "thiserror 1.0.69", -] - -[[package]] -name = "ff" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" -dependencies = [ - "rand_core", - "subtle", -] - -[[package]] -name = "figment" -version = "0.10.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cb01cd46b0cf372153850f4c6c272d9cbea2da513e07538405148f95bd789f3" -dependencies = [ - "atomic", - "parking_lot", - "pear", - "serde", - "tempfile", - "toml 0.8.19", - "uncased", - "version_check", -] - -[[package]] -name = "filetime" -version = "0.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" -dependencies = [ - "cfg-if", - "libc", - "libredox", - "windows-sys 0.59.0", -] - -[[package]] -name = "fixed-hash" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" -dependencies = [ - "byteorder", - "rand", - "rustc-hex", - "static_assertions", -] - -[[package]] -name = "fixedbitset" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" - -[[package]] -name = "flate2" -version = "1.0.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" -dependencies = [ - "crc32fast", - "miniz_oxide 0.8.0", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foldhash" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" - -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - -[[package]] -name = "forge" -version = "0.3.0" -dependencies = [ - "alloy-chains", - "alloy-consensus", - "alloy-dyn-abi", - "alloy-json-abi", - "alloy-network", - "alloy-primitives", - "alloy-provider", - "alloy-rpc-types", - "alloy-serde", - "alloy-signer", - "alloy-signer-local", - "alloy-sol-macro-expander", - "alloy-sol-macro-input", - "alloy-transport", - "anvil", - "async-trait", - "axum", - "chrono", - "clap", - "clap_complete", - "clap_complete_fig", - "clearscreen", - "comfy-table", - "dialoguer", - "dunce", - "ethers-contract-abigen", - "evm-disassembler", - "eyre", - "forge-doc", - "forge-fmt", - "forge-script", - "forge-script-sequence", - "forge-sol-macro-gen", - "forge-verify", - "foundry-block-explorers", - "foundry-cli", - "foundry-common", - "foundry-compilers", - "foundry-config", - "foundry-debugger", - "foundry-evm", - "foundry-linking", - "foundry-test-utils", - "foundry-wallets", - "futures", - "globset", - "humantime-serde", - "hyper 1.5.1", - "indicatif", - "inferno", - "itertools 0.13.0", - "mockall", - "opener", - "parking_lot", - "paste", - "path-slash", - "proptest", - "quick-junit", - "rayon", - "regex", - "reqwest", - "revm-inspectors", - "semver 1.0.24", - "serde", - "serde_json", - "similar", - "similar-asserts", - "solang-parser", - "solar-ast", - "solar-parse", - "soldeer-commands", - "strum", - "svm-rs", - "tempfile", - "thiserror 2.0.7", - "tikv-jemallocator", - "tokio", - "toml 0.8.19", - "toml_edit", - "tower-http", - "tracing", - "tracing-subscriber", - "vergen", - "watchexec", - "watchexec-events", - "watchexec-signals", - "yansi", -] - -[[package]] -name = "forge-doc" -version = "0.3.0" -dependencies = [ - "alloy-primitives", - "derive_more", - "eyre", - "forge-fmt", - "foundry-common", - "foundry-compilers", - "foundry-config", - "itertools 0.13.0", - "mdbook", - "rayon", - "regex", - "serde", - "serde_json", - "solang-parser", - "thiserror 2.0.7", - "toml 0.8.19", - "tracing", -] - -[[package]] -name = "forge-fmt" -version = "0.3.0" -dependencies = [ - "alloy-primitives", - "ariadne", - "foundry-config", - "itertools 0.13.0", - "similar-asserts", - "solang-parser", - "thiserror 2.0.7", - "toml 0.8.19", - "tracing", - "tracing-subscriber", -] - -[[package]] -name = "forge-script" -version = "0.3.0" -dependencies = [ - "alloy-chains", - "alloy-consensus", - "alloy-dyn-abi", - "alloy-eips", - "alloy-json-abi", - "alloy-network", - "alloy-primitives", - "alloy-provider", - "alloy-rpc-types", - "alloy-serde", - "alloy-signer", - "alloy-transport", - "clap", - "dialoguer", - "dunce", - "eyre", - "forge-script-sequence", - "forge-verify", - "foundry-cheatcodes", - "foundry-cli", - "foundry-common", - "foundry-compilers", - "foundry-config", - "foundry-debugger", - "foundry-evm", - "foundry-linking", - "foundry-wallets", - "futures", - "indicatif", - "itertools 0.13.0", - "parking_lot", - "revm-inspectors", - "semver 1.0.24", - "serde", - "serde_json", - "tempfile", - "tokio", - "tracing", - "yansi", -] - -[[package]] -name = "forge-script-sequence" -version = "0.3.0" -dependencies = [ - "alloy-network", - "alloy-primitives", - "alloy-rpc-types", - "eyre", - "foundry-common", - "foundry-compilers", - "foundry-config", - "revm-inspectors", - "serde", - "serde_json", - "tracing", - "walkdir", -] - -[[package]] -name = "forge-sol-macro-gen" -version = "0.3.0" -dependencies = [ - "alloy-json-abi", - "alloy-sol-macro-expander", - "alloy-sol-macro-input", - "eyre", - "foundry-common", - "prettyplease", - "proc-macro2", - "quote", - "serde_json", - "syn 2.0.79", -] - -[[package]] -name = "forge-verify" -version = "0.3.0" -dependencies = [ - "alloy-dyn-abi", - "alloy-json-abi", - "alloy-primitives", - "alloy-provider", - "alloy-rpc-types", - "async-trait", - "ciborium", - "clap", - "eyre", - "foundry-block-explorers", - "foundry-cli", - "foundry-common", - "foundry-compilers", - "foundry-config", - "foundry-evm", - "foundry-test-utils", - "futures", - "itertools 0.13.0", - "regex", - "reqwest", - "revm-primitives", - "semver 1.0.24", - "serde", - "serde_json", - "tempfile", - "tokio", - "tracing", - "yansi", -] - -[[package]] -name = "form_urlencoded" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "foundry-block-explorers" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff37530e7c5deead0f9d7dc2a27b070e683bef79735ab453849ebdee74fa848f" -dependencies = [ - "alloy-chains", - "alloy-json-abi", - "alloy-primitives", - "foundry-compilers", - "reqwest", - "semver 1.0.24", - "serde", - "serde_json", - "thiserror 1.0.69", - "tracing", -] - -[[package]] -name = "foundry-cheatcodes" -version = "0.3.0" -dependencies = [ - "alloy-consensus", - "alloy-dyn-abi", - "alloy-genesis", - "alloy-json-abi", - "alloy-network", - "alloy-primitives", - "alloy-provider", - "alloy-rlp", - "alloy-rpc-types", - "alloy-signer", - "alloy-signer-local", - "alloy-sol-types", - "base64 0.22.1", - "chrono", - "dialoguer", - "ecdsa", - "eyre", - "forge-script-sequence", - "foundry-cheatcodes-spec", - "foundry-common", - "foundry-compilers", - "foundry-config", - "foundry-evm-core", - "foundry-evm-traces", - "foundry-wallets", - "itertools 0.13.0", - "jsonpath_lib", - "k256", - "memchr", - "p256", - "parking_lot", - "proptest", - "rand", - "revm", - "revm-inspectors", - "semver 1.0.24", - "serde", - "serde_json", - "thiserror 2.0.7", - "toml 0.8.19", - "tracing", - "vergen", - "walkdir", -] - -[[package]] -name = "foundry-cheatcodes-spec" -version = "0.3.0" -dependencies = [ - "alloy-sol-types", - "foundry-macros", - "schemars", - "serde", - "serde_json", -] - -[[package]] -name = "foundry-cli" -version = "0.3.0" -dependencies = [ - "alloy-chains", - "alloy-dyn-abi", - "alloy-eips", - "alloy-json-abi", - "alloy-primitives", - "alloy-provider", - "alloy-rlp", - "alloy-transport", - "clap", - "color-eyre", - "dotenvy", - "eyre", - "forge-fmt", - "foundry-common", - "foundry-compilers", - "foundry-config", - "foundry-debugger", - "foundry-evm", - "foundry-wallets", - "futures", - "indicatif", - "rayon", - "regex", - "serde", - "serde_json", - "strsim", - "strum", - "tempfile", - "tokio", - "tracing", - "tracing-subscriber", - "tracing-tracy", - "yansi", -] - -[[package]] -name = "foundry-common" -version = "0.3.0" -dependencies = [ - "alloy-consensus", - "alloy-contract", - "alloy-dyn-abi", - "alloy-eips", - "alloy-json-abi", - "alloy-json-rpc", - "alloy-network", - "alloy-primitives", - "alloy-provider", - "alloy-pubsub", - "alloy-rpc-client", - "alloy-rpc-types", - "alloy-serde", - "alloy-sol-types", - "alloy-transport", - "alloy-transport-http", - "alloy-transport-ipc", - "alloy-transport-ws", - "anstream", - "anstyle", - "async-trait", - "clap", - "comfy-table", - "dunce", - "eyre", - "foundry-block-explorers", - "foundry-common-fmt", - "foundry-compilers", - "foundry-config", - "foundry-macros", - "itertools 0.13.0", - "num-format", - "reqwest", - "semver 1.0.24", - "serde", - "serde_json", - "similar-asserts", - "terminal_size", - "thiserror 2.0.7", - "tokio", - "tower 0.4.13", - "tracing", - "url", - "walkdir", - "yansi", -] - -[[package]] -name = "foundry-common-fmt" -version = "0.3.0" -dependencies = [ - "alloy-consensus", - "alloy-dyn-abi", - "alloy-network", - "alloy-primitives", - "alloy-rpc-types", - "alloy-serde", - "chrono", - "comfy-table", - "foundry-macros", - "revm-primitives", - "serde", - "serde_json", - "similar-asserts", - "yansi", -] - -[[package]] -name = "foundry-compilers" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "588bc1dd21020966a255a578433016d4637c810ed76127997a469bc4a3311e7f" -dependencies = [ - "alloy-json-abi", - "alloy-primitives", - "auto_impl", - "derive_more", - "dirs 5.0.1", - "dyn-clone", - "foundry-compilers-artifacts", - "foundry-compilers-core", - "fs_extra", - "futures-util", - "home", - "itertools 0.13.0", - "md-5", - "path-slash", - "rand", - "rayon", - "semver 1.0.24", - "serde", - "serde_json", - "sha2", - "solar-parse", - "svm-rs", - "svm-rs-builds", - "tempfile", - "thiserror 2.0.7", - "tokio", - "tracing", - "winnow", - "yansi", -] - -[[package]] -name = "foundry-compilers-artifacts" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b12c7a7ab554fde7521428b040205569c187995b817481720e99adf524bf7f8" -dependencies = [ - "foundry-compilers-artifacts-solc", - "foundry-compilers-artifacts-vyper", -] - -[[package]] -name = "foundry-compilers-artifacts-solc" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4654933ab983928d8e33e7fdf425bb60553e8a4ac415a6014f1f2e56a5b3741d" -dependencies = [ - "alloy-json-abi", - "alloy-primitives", - "foundry-compilers-core", - "futures-util", - "md-5", - "path-slash", - "rayon", - "semver 1.0.24", - "serde", - "serde_json", - "serde_repr", - "thiserror 2.0.7", - "tokio", - "tracing", - "walkdir", - "yansi", -] - -[[package]] -name = "foundry-compilers-artifacts-vyper" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2271a6689d27f42ffe1259f587196f56251508c6c9e362c585ccf234f5919f96" -dependencies = [ - "alloy-json-abi", - "alloy-primitives", - "foundry-compilers-artifacts-solc", - "foundry-compilers-core", - "path-slash", - "semver 1.0.24", - "serde", -] - -[[package]] -name = "foundry-compilers-core" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb71494112126e7ecb92748913403c35ef949f18734e3ff4566a782ce2c8b986" -dependencies = [ - "alloy-primitives", - "cfg-if", - "dunce", - "fs_extra", - "once_cell", - "path-slash", - "regex", - "semver 1.0.24", - "serde", - "serde_json", - "svm-rs", - "tempfile", - "thiserror 2.0.7", - "tokio", - "walkdir", -] - -[[package]] -name = "foundry-config" -version = "0.3.0" -dependencies = [ - "Inflector", - "alloy-chains", - "alloy-primitives", - "dirs-next", - "dunce", - "eyre", - "figment", - "foundry-block-explorers", - "foundry-compilers", - "glob", - "globset", - "itertools 0.13.0", - "mesc", - "number_prefix", - "path-slash", - "regex", - "reqwest", - "revm-primitives", - "semver 1.0.24", - "serde", - "serde_json", - "serde_regex", - "similar-asserts", - "solang-parser", - "tempfile", - "thiserror 2.0.7", - "toml 0.8.19", - "toml_edit", - "tracing", - "walkdir", - "yansi", -] - -[[package]] -name = "foundry-debugger" -version = "0.3.0" -dependencies = [ - "alloy-primitives", - "crossterm", - "eyre", - "foundry-common", - "foundry-compilers", - "foundry-evm-core", - "foundry-evm-traces", - "ratatui", - "revm", - "revm-inspectors", - "serde", - "tracing", -] - -[[package]] -name = "foundry-evm" -version = "0.3.0" -dependencies = [ - "alloy-dyn-abi", - "alloy-json-abi", - "alloy-primitives", - "alloy-sol-types", - "eyre", - "foundry-cheatcodes", - "foundry-common", - "foundry-compilers", - "foundry-config", - "foundry-evm-core", - "foundry-evm-coverage", - "foundry-evm-fuzz", - "foundry-evm-traces", - "indicatif", - "parking_lot", - "proptest", - "revm", - "revm-inspectors", - "serde", - "thiserror 2.0.7", - "tracing", -] - -[[package]] -name = "foundry-evm-abi" -version = "0.3.0" -dependencies = [ - "alloy-primitives", - "alloy-sol-types", - "derive_more", - "foundry-common-fmt", - "foundry-macros", - "foundry-test-utils", - "itertools 0.13.0", -] - -[[package]] -name = "foundry-evm-core" -version = "0.3.0" -dependencies = [ - "alloy-consensus", - "alloy-dyn-abi", - "alloy-genesis", - "alloy-json-abi", - "alloy-network", - "alloy-primitives", - "alloy-provider", - "alloy-rpc-types", - "alloy-sol-types", - "alloy-transport", - "auto_impl", - "eyre", - "foundry-cheatcodes-spec", - "foundry-common", - "foundry-config", - "foundry-evm-abi", - "foundry-fork-db", - "foundry-test-utils", - "futures", - "itertools 0.13.0", - "parking_lot", - "revm", - "revm-inspectors", - "revm-primitives", - "rustc-hash", - "serde", - "serde_json", - "thiserror 2.0.7", - "tokio", - "tracing", - "url", -] - -[[package]] -name = "foundry-evm-coverage" -version = "0.3.0" -dependencies = [ - "alloy-primitives", - "eyre", - "foundry-common", - "foundry-compilers", - "foundry-evm-core", - "rayon", - "revm", - "semver 1.0.24", - "tracing", -] - -[[package]] -name = "foundry-evm-fuzz" -version = "0.3.0" -dependencies = [ - "ahash", - "alloy-dyn-abi", - "alloy-json-abi", - "alloy-primitives", - "eyre", - "foundry-common", - "foundry-compilers", - "foundry-config", - "foundry-evm-core", - "foundry-evm-coverage", - "foundry-evm-traces", - "indexmap 2.7.0", - "itertools 0.13.0", - "parking_lot", - "proptest", - "rand", - "revm", - "serde", - "thiserror 2.0.7", - "tracing", -] - -[[package]] -name = "foundry-evm-traces" -version = "0.3.0" -dependencies = [ - "alloy-dyn-abi", - "alloy-json-abi", - "alloy-primitives", - "alloy-sol-types", - "eyre", - "foundry-block-explorers", - "foundry-common", - "foundry-compilers", - "foundry-config", - "foundry-evm-core", - "foundry-linking", - "futures", - "itertools 0.13.0", - "rayon", - "revm", - "revm-inspectors", - "serde", - "serde_json", - "solar-parse", - "tempfile", - "tokio", - "tracing", -] - -[[package]] -name = "foundry-fork-db" -version = "0.3.1" -source = "git+ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git?rev=0d2a25e#0d2a25ed60758eb6a1caa897e608ec432ad338c7" -dependencies = [ - "alloy-consensus", - "alloy-primitives", - "alloy-provider", - "alloy-rpc-types", - "alloy-serde", - "alloy-transport", - "eyre", - "futures", - "parking_lot", - "revm", - "revm-primitives", - "rustc-hash", - "serde", - "serde_json", - "thiserror 2.0.7", - "tokio", - "tracing", - "url", -] - -[[package]] -name = "foundry-linking" -version = "0.3.0" -dependencies = [ - "alloy-primitives", - "foundry-compilers", - "semver 1.0.24", - "thiserror 2.0.7", -] - -[[package]] -name = "foundry-macros" -version = "0.3.0" -dependencies = [ - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "foundry-test-utils" -version = "0.3.0" -dependencies = [ - "alloy-primitives", - "alloy-provider", - "eyre", - "fd-lock", - "foundry-block-explorers", - "foundry-common", - "foundry-compilers", - "foundry-config", - "parking_lot", - "rand", - "regex", - "serde_json", - "snapbox", - "tempfile", - "tokio", - "tracing", - "tracing-subscriber", -] - -[[package]] -name = "foundry-wallets" -version = "0.3.0" -dependencies = [ - "alloy-consensus", - "alloy-dyn-abi", - "alloy-network", - "alloy-primitives", - "alloy-signer", - "alloy-signer-aws", - "alloy-signer-gcp", - "alloy-signer-ledger", - "alloy-signer-local", - "alloy-signer-trezor", - "alloy-sol-types", - "async-trait", - "aws-config", - "aws-sdk-kms", - "clap", - "derive_builder", - "eth-keystore", - "eyre", - "foundry-config", - "gcloud-sdk", - "rpassword", - "serde", - "thiserror 2.0.7", - "tokio", - "tracing", -] - -[[package]] -name = "fragile" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" - -[[package]] -name = "fs4" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c6b3bd49c37d2aa3f3f2220233b29a7cd23f79d1fe70e5337d25fb390793de" -dependencies = [ - "rustix", - "windows-sys 0.52.0", -] - -[[package]] -name = "fs_extra" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" - -[[package]] -name = "fsevent-sys" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2" -dependencies = [ - "libc", -] - -[[package]] -name = "funty" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" - -[[package]] -name = "futf" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" -dependencies = [ - "mac", - "new_debug_unreachable", -] - -[[package]] -name = "futures" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" -dependencies = [ - "futures-core", - "futures-sink", -] - -[[package]] -name = "futures-core" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" - -[[package]] -name = "futures-executor" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" - -[[package]] -name = "futures-macro" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "futures-sink" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" - -[[package]] -name = "futures-task" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" - -[[package]] -name = "futures-util" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[package]] -name = "futures-utils-wasm" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" - -[[package]] -name = "gcloud-sdk" -version = "0.25.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0775bfa745cdf7287ae9765a685a813b91049b6b6d5ca3de20a3d5d16a80d8b2" -dependencies = [ - "async-trait", - "bytes", - "chrono", - "futures", - "hyper 1.5.1", - "jsonwebtoken", - "once_cell", - "prost", - "prost-types", - "reqwest", - "secret-vault-value", - "serde", - "serde_json", - "tokio", - "tonic", - "tower 0.5.1", - "tower-layer", - "tower-util", - "tracing", - "url", -] - -[[package]] -name = "generator" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc6bd114ceda131d3b1d665eba35788690ad37f5916457286b32ab6fd3c438dd" -dependencies = [ - "cfg-if", - "libc", - "log", - "rustversion", - "windows 0.58.0", -] - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", - "zeroize", -] - -[[package]] -name = "getrandom" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi", - "wasm-bindgen", -] - -[[package]] -name = "gimli" -version = "0.28.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" - -[[package]] -name = "gix-actor" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc19e312cd45c4a66cd003f909163dc2f8e1623e30a0c0c6df3776e89b308665" -dependencies = [ - "bstr", - "gix-date", - "gix-utils", - "itoa", - "thiserror 1.0.69", - "winnow", -] - -[[package]] -name = "gix-config" -version = "0.40.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78e797487e6ca3552491de1131b4f72202f282fb33f198b1c34406d765b42bb0" -dependencies = [ - "bstr", - "gix-config-value", - "gix-features", - "gix-glob", - "gix-path", - "gix-ref", - "gix-sec", - "memchr", - "once_cell", - "smallvec", - "thiserror 1.0.69", - "unicode-bom", - "winnow", -] - -[[package]] -name = "gix-config-value" -version = "0.14.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49aaeef5d98390a3bcf9dbc6440b520b793d1bf3ed99317dc407b02be995b28e" -dependencies = [ - "bitflags 2.6.0", - "bstr", - "gix-path", - "libc", - "thiserror 2.0.7", -] - -[[package]] -name = "gix-date" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "691142b1a34d18e8ed6e6114bc1a2736516c5ad60ef3aa9bd1b694886e3ca92d" -dependencies = [ - "bstr", - "itoa", - "jiff", - "thiserror 2.0.7", -] - -[[package]] -name = "gix-features" -version = "0.38.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac7045ac9fe5f9c727f38799d002a7ed3583cd777e3322a7c4b43e3cf437dc69" -dependencies = [ - "gix-hash", - "gix-trace", - "gix-utils", - "libc", - "prodash", - "sha1_smol", - "walkdir", -] - -[[package]] -name = "gix-fs" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2bfe6249cfea6d0c0e0990d5226a4cb36f030444ba9e35e0639275db8f98575" -dependencies = [ - "fastrand", - "gix-features", - "gix-utils", -] - -[[package]] -name = "gix-glob" -version = "0.16.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74908b4bbc0a0a40852737e5d7889f676f081e340d5451a16e5b4c50d592f111" -dependencies = [ - "bitflags 2.6.0", - "bstr", - "gix-features", - "gix-path", -] - -[[package]] -name = "gix-hash" -version = "0.14.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93d7df7366121b5018f947a04d37f034717e113dcf9ccd85c34b58e57a74d5e" -dependencies = [ - "faster-hex", - "thiserror 1.0.69", -] - -[[package]] -name = "gix-lock" -version = "14.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bc7fe297f1f4614774989c00ec8b1add59571dc9b024b4c00acb7dedd4e19d" -dependencies = [ - "gix-tempfile", - "gix-utils", - "thiserror 1.0.69", -] - -[[package]] -name = "gix-object" -version = "0.44.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f5b801834f1de7640731820c2df6ba88d95480dc4ab166a5882f8ff12b88efa" -dependencies = [ - "bstr", - "gix-actor", - "gix-date", - "gix-features", - "gix-hash", - "gix-utils", - "gix-validate", - "itoa", - "smallvec", - "thiserror 1.0.69", - "winnow", -] - -[[package]] -name = "gix-path" -version = "0.10.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc292ef1a51e340aeb0e720800338c805975724c1dfbd243185452efd8645b7" -dependencies = [ - "bstr", - "gix-trace", - "home", - "once_cell", - "thiserror 2.0.7", -] - -[[package]] -name = "gix-ref" -version = "0.47.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae0d8406ebf9aaa91f55a57f053c5a1ad1a39f60fdf0303142b7be7ea44311e5" -dependencies = [ - "gix-actor", - "gix-features", - "gix-fs", - "gix-hash", - "gix-lock", - "gix-object", - "gix-path", - "gix-tempfile", - "gix-utils", - "gix-validate", - "memmap2", - "thiserror 1.0.69", - "winnow", -] - -[[package]] -name = "gix-sec" -version = "0.10.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8b876ef997a955397809a2ec398d6a45b7a55b4918f2446344330f778d14fd6" -dependencies = [ - "bitflags 2.6.0", - "gix-path", - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "gix-tempfile" -version = "14.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046b4927969fa816a150a0cda2e62c80016fe11fb3c3184e4dddf4e542f108aa" -dependencies = [ - "gix-fs", - "libc", - "once_cell", - "parking_lot", - "tempfile", -] - -[[package]] -name = "gix-trace" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04bdde120c29f1fc23a24d3e115aeeea3d60d8e65bab92cc5f9d90d9302eb952" - -[[package]] -name = "gix-utils" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba427e3e9599508ed98a6ddf8ed05493db114564e338e41f6a996d2e4790335f" -dependencies = [ - "fastrand", - "unicode-normalization", -] - -[[package]] -name = "gix-validate" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd520d09f9f585b34b32aba1d0b36ada89ab7fefb54a8ca3fe37fc482a750937" -dependencies = [ - "bstr", - "thiserror 2.0.7", -] - -[[package]] -name = "glob" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" - -[[package]] -name = "globset" -version = "0.4.15" -version = "0.4.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" -checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" -dependencies = [ - "aho-corasick", - "bstr", - "log", - "regex-automata 0.4.8", - "regex-syntax 0.8.5", -] - -[[package]] -name = "group" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" -dependencies = [ - "ff", - "rand_core", - "subtle", -] - -[[package]] -name = "h2" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http 0.2.12", - "indexmap 2.7.0", - "slab", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "h2" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e" -dependencies = [ - "atomic-waker", - "bytes", - "fnv", - "futures-core", - "futures-sink", - "http 1.2.0", - "indexmap 2.7.0", - "slab", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "half" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" -dependencies = [ - "cfg-if", - "crunchy", -] - -[[package]] -name = "handlebars" -version = "6.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd4ccde012831f9a071a637b0d4e31df31c0f6c525784b35ae76a9ac6bc1e315" -dependencies = [ - "log", - "num-order", - "pest", - "pest_derive", - "serde", - "serde_json", - "thiserror 1.0.69", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[package]] -name = "hashbrown" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" - -[[package]] -name = "hashbrown" -version = "0.14.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" -dependencies = [ - "ahash", - "allocator-api2", -] - -[[package]] -name = "hashbrown" -version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" -dependencies = [ - "allocator-api2", - "equivalent", - "foldhash", - "serde", -] - -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - -[[package]] -name = "hermit-abi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" - -[[package]] -name = "hermit-abi" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -dependencies = [ - "serde", -] - -[[package]] -name = "hex-literal" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" - -[[package]] -name = "hidapi-rusb" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efdc2ec354929a6e8f3c6b6923a4d97427ec2f764cfee8cd4bfe890946cdf08b" -dependencies = [ - "cc", - "libc", - "pkg-config", - "rusb", -] - -[[package]] -name = "hmac" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" -dependencies = [ - "digest 0.10.7", -] - -[[package]] -name = "home" -version = "0.5.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" -dependencies = [ - "windows-sys 0.52.0", -] - -[[package]] -name = "html5ever" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c13771afe0e6e846f1e67d038d4cb29998a6779f93c809212e4e9c32efd244d4" -dependencies = [ - "log", - "mac", - "markup5ever", - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "http" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http-body" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" -dependencies = [ - "bytes", - "http 0.2.12", - "pin-project-lite", -] - -[[package]] -name = "http-body" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" -dependencies = [ - "bytes", - "http 1.2.0", -] - -[[package]] -name = "http-body-util" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" -dependencies = [ - "bytes", - "futures-util", - "http 1.2.0", - "http-body 1.0.1", - "pin-project-lite", -] - -[[package]] -name = "http-range-header" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c" - -[[package]] -name = "httparse" -version = "1.9.5" -version = "1.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" -checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" - -[[package]] -name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - -[[package]] -name = "humantime" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" - -[[package]] -name = "humantime-serde" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57a3db5ea5923d99402c94e9feb261dc5ee9b4efa158b0315f788cf549cc200c" -dependencies = [ - "humantime", - "serde", -] - -[[package]] -name = "hyper" -version = "0.14.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2 0.3.26", - "http 0.2.12", - "http-body 0.4.6", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", - "want", -] - -[[package]] -name = "hyper" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97818827ef4f364230e16705d4706e2897df2bb60617d6ca15d598025a3c481f" -dependencies = [ - "bytes", - "futures-channel", - "futures-util", - "h2 0.4.7", - "http 1.2.0", - "http-body 1.0.1", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "smallvec", - "tokio", - "want", -] - -[[package]] -name = "hyper-rustls" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" -dependencies = [ - "futures-util", - "http 0.2.12", - "hyper 0.14.31", - "log", - "rustls 0.21.12", - "rustls-native-certs 0.6.3", - "tokio", - "tokio-rustls 0.24.1", -] - -[[package]] -name = "hyper-rustls" -version = "0.27.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" -dependencies = [ - "futures-util", - "http 1.2.0", - "hyper 1.5.1", - "hyper-util", - "rustls 0.23.13", - "rustls-native-certs 0.8.0", - "rustls-pki-types", - "tokio", - "tokio-rustls 0.26.1", - "tower-service", - "webpki-roots", -] - -[[package]] -name = "hyper-timeout" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" -dependencies = [ - "hyper 1.5.1", - "hyper-util", - "pin-project-lite", - "tokio", - "tower-service", -] - -[[package]] -name = "hyper-tls" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" -dependencies = [ - "bytes", - "http-body-util", - "hyper 1.5.1", - "hyper-util", - "native-tls", - "tokio", - "tokio-native-tls", - "tower-service", -] - -[[package]] -name = "hyper-util" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" -dependencies = [ - "bytes", - "futures-channel", - "futures-util", - "http 1.2.0", - "http-body 1.0.1", - "hyper 1.5.1", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", -] - -[[package]] -name = "iana-time-zone" -version = "0.1.61" -version = "0.1.61" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" -checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "wasm-bindgen", - "windows-core 0.52.0", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -dependencies = [ - "cc", -] - -[[package]] -name = "icu_collections" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_locid" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_locid_transform" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_locid_transform_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_locid_transform_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" - -[[package]] -name = "icu_normalizer" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" -dependencies = [ - "displaydoc", - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec", - "utf16_iter", - "utf8_iter", - "write16", - "zerovec", -] - -[[package]] -name = "icu_normalizer_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" - -[[package]] -name = "icu_properties" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" -dependencies = [ - "displaydoc", - "icu_collections", - "icu_locid_transform", - "icu_properties_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_properties_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" - -[[package]] -name = "icu_provider" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_provider_macros", - "stable_deref_trait", - "tinystr", - "writeable", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_provider_macros" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.90", -] - -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - -[[package]] -name = "idna" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" -dependencies = [ - "idna_adapter", - "smallvec", - "utf8_iter", -] - -[[package]] -name = "idna_adapter" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" -dependencies = [ - "icu_normalizer", - "icu_properties", -] - -[[package]] -name = "ignore" -version = "0.4.23" -version = "0.4.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" -checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" -dependencies = [ - "crossbeam-deque", - "globset", - "log", - "memchr", - "regex-automata 0.4.8", - "same-file", - "walkdir", - "winapi-util", -] - -[[package]] -name = "ignore-files" -version = "3.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51ce3a1903263527cf3b6512a12f338ae63f425b66c1a3d7a24c3121e8557dbe" -dependencies = [ - "dunce", - "futures", - "gix-config", - "ignore", - "miette", - "normalize-path", - "project-origins", - "radix_trie", - "thiserror 1.0.69", - "tokio", - "tracing", -] - -[[package]] -name = "impl-codec" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" -dependencies = [ - "parity-scale-codec", -] - -[[package]] -name = "impl-rlp" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" -dependencies = [ - "rlp", -] - -[[package]] -name = "impl-serde" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" -dependencies = [ - "serde", -] - -[[package]] -name = "impl-trait-for-tuples" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.90", -] - -[[package]] -name = "indenter" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" - -[[package]] -name = "index_vec" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44faf5bb8861a9c72e20d3fb0fdbd59233e43056e2b80475ab0aacdc2e781355" - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", -] - -[[package]] -name = "indexmap" -version = "2.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" -dependencies = [ - "arbitrary", - "equivalent", - "hashbrown 0.15.2", - "serde", -] - -[[package]] -name = "indicatif" -version = "0.17.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbf675b85ed934d3c67b5c5469701eec7db22689d0a2139d856e0925fa28b281" -dependencies = [ - "console", - "number_prefix", - "portable-atomic", - "unicode-width 0.2.0", - "web-time", -] - -[[package]] -name = "indoc" -version = "2.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" - -[[package]] -name = "inferno" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75a5d75fee4d36809e6b021e4b96b686e763d365ffdb03af2bd00786353f84fe" -dependencies = [ - "ahash", - "itoa", - "log", - "num-format", - "once_cell", - "quick-xml 0.37.1", - "rgb", - "str_stack", -] - -[[package]] -name = "inlinable_string" -version = "0.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8fae54786f62fb2918dcfae3d568594e50eb9b5c25bf04371af6fe7516452fb" - -[[package]] -name = "inotify" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff" -dependencies = [ - "bitflags 1.3.2", - "inotify-sys", - "libc", -] - -[[package]] -name = "inotify-sys" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" -dependencies = [ - "libc", -] - -[[package]] -name = "inout" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" -dependencies = [ - "generic-array", -] - -[[package]] -name = "instability" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b829f37dead9dc39df40c2d3376c179fdfd2ac771f53f55d3c30dc096a3c0c6e" -dependencies = [ - "darling", - "indoc", - "pretty_assertions", - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "instant" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "interprocess" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "894148491d817cb36b6f778017b8ac46b17408d522dd90f539d677ea938362eb" -dependencies = [ - "doctest-file", - "futures-core", - "libc", - "recvmsg", - "tokio", - "widestring", - "windows-sys 0.52.0", -] - -[[package]] -name = "ipnet" -version = "2.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4" - -[[package]] -name = "is-terminal" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" -dependencies = [ - "hermit-abi 0.4.0", - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "is_terminal_polyfill" -version = "1.70.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" - -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "1.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" - -[[package]] -name = "jiff" -version = "0.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db69f08d4fb10524cacdb074c10b296299d71274ddbc830a8ee65666867002e9" -dependencies = [ - "jiff-tzdb-platform", - "windows-sys 0.59.0", -] - -[[package]] -name = "jiff-tzdb" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91335e575850c5c4c673b9bd467b0e025f164ca59d0564f69d0c2ee0ffad4653" - -[[package]] -name = "jiff-tzdb-platform" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9835f0060a626fe59f160437bc725491a6af23133ea906500027d1bd2f8f4329" -dependencies = [ - "jiff-tzdb", -] - -[[package]] -name = "js-sys" -version = "0.3.76" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" -dependencies = [ - "once_cell", - "wasm-bindgen", -] - -[[package]] -name = "jsonpath_lib" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaa63191d68230cccb81c5aa23abd53ed64d83337cacbb25a7b8c7979523774f" -dependencies = [ - "log", - "serde", - "serde_json", -] - -[[package]] -name = "jsonwebtoken" -version = "9.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9ae10193d25051e74945f1ea2d0b42e03cc3b890f7e4cc5faa44997d808193f" -dependencies = [ - "base64 0.21.7", - "js-sys", - "pem", - "ring", - "serde", - "serde_json", - "simple_asn1", -] - -[[package]] -name = "k256" -version = "0.13.4" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" -checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" -dependencies = [ - "cfg-if", - "ecdsa", - "elliptic-curve", - "once_cell", - "sha2", - "signature", -] - -[[package]] -name = "keccak" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" -dependencies = [ - "cpufeatures", -] - -[[package]] -name = "keccak-asm" -version = "0.1.4" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "505d1856a39b200489082f90d897c3f07c455563880bc5952e38eabf731c83b6" -checksum = "505d1856a39b200489082f90d897c3f07c455563880bc5952e38eabf731c83b6" -dependencies = [ - "digest 0.10.7", - "sha3-asm", -] - -[[package]] -name = "kqueue" -version = "1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7447f1ca1b7b563588a205fe93dea8df60fd981423a768bc1c0ded35ed147d0c" -dependencies = [ - "kqueue-sys", - "libc", -] - -[[package]] -name = "kqueue-sys" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b" -dependencies = [ - "bitflags 1.3.2", - "libc", -] - -[[package]] -name = "lalrpop" -version = "0.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cb077ad656299f160924eb2912aa147d7339ea7d69e1b5517326fdcec3c1ca" -dependencies = [ - "ascii-canvas", - "bit-set", - "ena", - "itertools 0.11.0", - "lalrpop-util", - "petgraph", - "regex", - "regex-syntax 0.8.5", - "regex-syntax 0.8.5", - "string_cache", - "term", - "tiny-keccak", - "unicode-xid", - "walkdir", -] - -[[package]] -name = "lalrpop-util" -version = "0.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553" -dependencies = [ - "regex-automata 0.4.8", -] - -[[package]] -name = "lazy_static" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" -dependencies = [ - "spin", -] - -[[package]] -name = "libc" -version = "0.2.159" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" - -[[package]] -name = "libdbus-sys" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06085512b750d640299b79be4bad3d2fa90a9c00b1fd9e1b46364f66f0485c72" -dependencies = [ - "cc", - "pkg-config", -] - -[[package]] -name = "libm" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" - -[[package]] -name = "libredox" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" -dependencies = [ - "bitflags 2.6.0", - "libc", - "redox_syscall", -] - -[[package]] -name = "libusb1-sys" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da050ade7ac4ff1ba5379af847a10a10a8e284181e060105bf8d86960ce9ce0f" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "linux-raw-sys" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" - -[[package]] -name = "litemap" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" - -[[package]] -name = "lock_api" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" -dependencies = [ - "autocfg", - "scopeguard", -] - -[[package]] -name = "lockfree-object-pool" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9374ef4228402d4b7e403e5838cb880d9ee663314b0a900d5a6aabf0c213552e" - -[[package]] -name = "log" -version = "0.4.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" - -[[package]] -name = "loom" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" -dependencies = [ - "cfg-if", - "generator", - "scoped-tls", - "tracing", - "tracing-subscriber", -] - -[[package]] -name = "lru" -version = "0.12.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" -dependencies = [ - "hashbrown 0.15.2", -] - -[[package]] -name = "mac" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" - -[[package]] -name = "maplit" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" - -[[package]] -name = "markup5ever" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16ce3abbeba692c8b8441d036ef91aea6df8da2c6b6e21c7e14d3c18e526be45" -dependencies = [ - "log", - "phf", - "phf_codegen", - "string_cache", - "string_cache_codegen", - "tendril", -] - -[[package]] -name = "match_cfg" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" - -[[package]] -name = "matchers" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" -dependencies = [ - "regex-automata 0.1.10", -] - -[[package]] -name = "matchit" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" - -[[package]] -name = "md-5" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" -dependencies = [ - "cfg-if", - "digest 0.10.7", -] - -[[package]] -name = "mdbook" -version = "0.4.43" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe1f98b8d66e537d2f0ba06e7dec4f44001deec539a2d18bfc102d6a86189148" -dependencies = [ - "ammonia", - "anyhow", - "chrono", - "clap", - "clap_complete", - "elasticlunr-rs", - "env_logger", - "handlebars", - "log", - "memchr", - "once_cell", - "opener", - "pulldown-cmark", - "regex", - "serde", - "serde_json", - "shlex", - "tempfile", - "toml 0.5.11", - "topological-sort", -] - -[[package]] -name = "memchr" -version = "2.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" - -[[package]] -name = "memmap2" -version = "0.9.5" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" -checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" -dependencies = [ - "libc", -] - -[[package]] -name = "memoffset" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" -dependencies = [ - "autocfg", -] - -[[package]] -name = "mesc" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d04b0347d2799ef17df4623dbcb03531031142105168e0c549e0bf1f980e9e7e" -dependencies = [ - "serde", - "serde_json", - "thiserror 1.0.69", -] - -[[package]] -name = "miette" -version = "7.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317f146e2eb7021892722af37cf1b971f0a70c8406f487e24952667616192c64" -dependencies = [ - "cfg-if", - "miette-derive", - "thiserror 1.0.69", - "unicode-width 0.1.14", -] - -[[package]] -name = "miette-derive" -version = "7.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23c9b935fbe1d6cbd1dac857b54a688145e2d93f48db36010514d0f612d0ad67" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "mime_guess" -version = "2.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" -dependencies = [ - "mime", - "unicase", -] - -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - -[[package]] -name = "miniz_oxide" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" -dependencies = [ - "adler", -] - -[[package]] -name = "miniz_oxide" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" -dependencies = [ - "adler2", -] - -[[package]] -name = "mio" -version = "0.8.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" -dependencies = [ - "libc", - "log", - "wasi", - "windows-sys 0.48.0", -] - -[[package]] -name = "mio" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" -dependencies = [ - "libc", - "log", - "wasi", - "windows-sys 0.52.0", -] - -[[package]] -name = "mockall" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39a6bfcc6c8c7eed5ee98b9c3e33adc726054389233e201c95dab2d41a3839d2" -dependencies = [ - "cfg-if", - "downcast", - "fragile", - "mockall_derive", - "predicates", - "predicates-tree", -] - -[[package]] -name = "mockall_derive" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25ca3004c2efe9011bd4e461bd8256445052b9615405b4f7ea43fc8ca5c20898" -dependencies = [ - "cfg-if", - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "native-tls" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" -dependencies = [ - "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework 2.11.1", - "security-framework-sys", - "tempfile", -] - -[[package]] -name = "new_debug_unreachable" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" - -[[package]] -name = "newtype-uuid" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c8781e2ef64806278a55ad223f0bc875772fd40e1fe6e73e8adbf027817229d" -dependencies = [ - "uuid 1.11.0", -] - -[[package]] -name = "nibble_vec" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43" -dependencies = [ - "smallvec", -] - -[[package]] -name = "nix" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" -dependencies = [ - "bitflags 1.3.2", - "cfg-if", - "libc", - "memoffset", - "pin-utils", -] - -[[package]] -name = "nix" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" -dependencies = [ - "bitflags 2.6.0", - "cfg-if", - "cfg_aliases 0.1.1", - "libc", -] - -[[package]] -name = "nix" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" -dependencies = [ - "bitflags 2.6.0", - "cfg-if", - "cfg_aliases 0.2.1", - "libc", -] - -[[package]] -name = "nom" -version = "7.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" -dependencies = [ - "memchr", - "minimal-lexical", -] - -[[package]] -name = "normalize-line-endings" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" - -[[package]] -name = "normalize-path" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5438dd2b2ff4c6df6e1ce22d825ed2fa93ee2922235cc45186991717f0a892d" - -[[package]] -name = "normpath" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8911957c4b1549ac0dc74e30db9c8b0e66ddcd6d7acc33098f4c63a64a6d7ed" -dependencies = [ - "windows-sys 0.59.0", -] - -[[package]] -name = "notify" -version = "6.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d" -dependencies = [ - "bitflags 2.6.0", - "crossbeam-channel", - "filetime", - "fsevent-sys", - "inotify", - "kqueue", - "libc", - "log", - "mio 0.8.11", - "walkdir", - "windows-sys 0.48.0", -] - -[[package]] -name = "nu-ansi-term" -version = "0.46.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" -dependencies = [ - "overload", - "winapi", -] - -[[package]] -name = "num" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" -dependencies = [ - "num-bigint", - "num-complex", - "num-integer", - "num-iter", - "num-rational", - "num-traits", -] - -[[package]] -name = "num-bigint" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" -dependencies = [ - "num-integer", - "num-traits", -] - -[[package]] -name = "num-complex" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" -dependencies = [ - "num-traits", -] - -[[package]] -name = "num-conv" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" - -[[package]] -name = "num-format" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a652d9771a63711fd3c3deb670acfbe5c30a4072e664d7a3bf5a9e1056ac72c3" -dependencies = [ - "arrayvec", - "itoa", -] - -[[package]] -name = "num-integer" -version = "0.1.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" -dependencies = [ - "num-traits", -] - -[[package]] -name = "num-iter" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-modular" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17bb261bf36fa7d83f4c294f834e91256769097b3cb505d44831e0a179ac647f" - -[[package]] -name = "num-order" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "537b596b97c40fcf8056d153049eb22f481c17ebce72a513ec9286e4986d1bb6" -dependencies = [ - "num-modular", -] - -[[package]] -name = "num-rational" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" -dependencies = [ - "num-bigint", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", - "libm", -] - -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi 0.3.9", - "libc", -] - -[[package]] -name = "num_enum" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" -dependencies = [ - "num_enum_derive", -] - -[[package]] -name = "num_enum_derive" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "num_threads" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" -dependencies = [ - "libc", -] - -[[package]] -name = "number_prefix" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" - -[[package]] -name = "nybbles" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95f06be0417d97f81fe4e5c86d7d01b392655a9cac9c19a848aa033e18937b23" -dependencies = [ - "alloy-rlp", - "const-hex", - "proptest", - "serde", - "smallvec", -] - -[[package]] -name = "object" -version = "0.32.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" -dependencies = [ - "memchr", -] - -[[package]] -name = "once_cell" -version = "1.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82881c4be219ab5faaf2ad5e5e5ecdff8c66bd7402ca3160975c93b24961afd1" -dependencies = [ - "portable-atomic", -] - -[[package]] -name = "oorandom" -version = "11.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9" - -[[package]] -name = "op-alloy-consensus" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21aad1fbf80d2bcd7406880efc7ba109365f44bbb72896758ddcbfa46bf1592c" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "derive_more", - "serde", - "thiserror 2.0.7", -] - -[[package]] -name = "op-alloy-rpc-types" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e281fbfc2198b7c0c16457d6524f83d192662bc9f3df70f24c3038d4521616df" -dependencies = [ - "alloy-eips", - "alloy-network-primitives", - "alloy-primitives", - "alloy-rpc-types-eth", - "alloy-serde", - "cfg-if", - "hashbrown 0.14.5", - "op-alloy-consensus", - "serde", - "serde_json", -] - -[[package]] -name = "open-fastrlp" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce" -dependencies = [ - "arrayvec", - "auto_impl", - "bytes", - "ethereum-types", - "open-fastrlp-derive", -] - -[[package]] -name = "open-fastrlp-derive" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "003b2be5c6c53c1cfeb0a238b8a1c3915cd410feb684457a36c10038f764bb1c" -dependencies = [ - "bytes", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "opener" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0812e5e4df08da354c851a3376fead46db31c2214f849d3de356d774d057681" -dependencies = [ - "bstr", - "dbus", - "normpath", - "windows-sys 0.59.0", -] - -[[package]] -name = "openssl" -version = "0.10.68" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" -dependencies = [ - "bitflags 2.6.0", - "cfg-if", - "foreign-types", - "libc", - "once_cell", - "openssl-macros", - "openssl-sys", -] - -[[package]] -name = "openssl-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "openssl-probe" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" - -[[package]] -name = "openssl-sys" -version = "0.9.104" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "option-ext" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" - -[[package]] -name = "outref" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4030760ffd992bef45b0ae3f10ce1aba99e33464c90d14dd7c039884963ddc7a" - -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - -[[package]] -name = "owo-colors" -version = "3.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" - -[[package]] -name = "p256" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" -dependencies = [ - "ecdsa", - "elliptic-curve", - "primeorder", - "sha2", -] - -[[package]] -name = "parity-scale-codec" -version = "3.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" -dependencies = [ - "arrayvec", - "bitvec", - "byte-slice-cast", - "impl-trait-for-tuples", - "parity-scale-codec-derive", - "serde", -] - -[[package]] -name = "parity-scale-codec-derive" -version = "3.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "parking" -version = "2.2.1" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" -checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" - -[[package]] -name = "parking_lot" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-targets 0.52.6", -] - -[[package]] -name = "paste" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" - -[[package]] -name = "path-slash" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42" - -[[package]] -name = "pbkdf2" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" -dependencies = [ - "digest 0.10.7", -] - -[[package]] -name = "pbkdf2" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" -dependencies = [ - "digest 0.10.7", - "hmac", -] - -[[package]] -name = "pear" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdeeaa00ce488657faba8ebf44ab9361f9365a97bd39ffb8a60663f57ff4b467" -dependencies = [ - "inlinable_string", - "pear_codegen", - "yansi", -] - -[[package]] -name = "pear_codegen" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bab5b985dc082b345f812b7df84e1bef27e7207b39e448439ba8bd69c93f147" -dependencies = [ - "proc-macro2", - "proc-macro2-diagnostics", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "pem" -version = "3.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e459365e590736a54c3fa561947c84837534b8e9af6fc5bf781307e82658fae" -dependencies = [ - "base64 0.22.1", - "serde", -] - -[[package]] -name = "pem-rfc7468" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" -dependencies = [ - "base64ct", -] - -[[package]] -name = "percent-encoding" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" - -[[package]] -name = "pest" -version = "2.7.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdbef9d1d47087a895abd220ed25eb4ad973a5e26f6a4367b038c25e28dfc2d9" -dependencies = [ - "memchr", - "thiserror 2.0.7", - "ucd-trie", -] - -[[package]] -name = "pest_derive" -version = "2.7.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d3a6e3394ec80feb3b6393c725571754c6188490265c61aaf260810d6b95aa0" -dependencies = [ - "pest", - "pest_generator", -] - -[[package]] -name = "pest_generator" -version = "2.7.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94429506bde1ca69d1b5601962c73f4172ab4726571a59ea95931218cb0e930e" -dependencies = [ - "pest", - "pest_meta", - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "pest_meta" -version = "2.7.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac8a071862e93690b6e34e9a5fb8e33ff3734473ac0245b27232222c4906a33f" -dependencies = [ - "once_cell", - "pest", - "sha2", -] - -[[package]] -name = "petgraph" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" -dependencies = [ - "fixedbitset", - "indexmap 2.7.0", -] - -[[package]] -name = "pharos" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414" -dependencies = [ - "futures", - "rustc_version 0.4.1", -] - -[[package]] -name = "phf" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" -dependencies = [ - "phf_macros", - "phf_shared 0.11.2", -] - -[[package]] -name = "phf_codegen" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a" -dependencies = [ - "phf_generator 0.11.2", - "phf_shared 0.11.2", -] - -[[package]] -name = "phf_generator" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" -dependencies = [ - "phf_shared 0.10.0", - "rand", -] - -[[package]] -name = "phf_generator" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" -dependencies = [ - "phf_shared 0.11.2", - "rand", -] - -[[package]] -name = "phf_macros" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" -dependencies = [ - "phf_generator 0.11.2", - "phf_shared 0.11.2", - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "phf_shared" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" -dependencies = [ - "siphasher", -] - -[[package]] -name = "phf_shared" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" -dependencies = [ - "siphasher", -] - -[[package]] -name = "pin-project" -version = "0.4.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ef0f924a5ee7ea9cbcea77529dba45f8a9ba9f622419fe3386ca581a3ae9d5a" -dependencies = [ - "pin-project-internal 0.4.30", -] - -[[package]] -name = "pin-project" -version = "1.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" -dependencies = [ - "pin-project-internal 1.1.7", -] - -[[package]] -name = "pin-project-internal" -version = "0.4.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "851c8d0ce9bebe43790dedfc86614c23494ac9f423dd618d3a61fc693eafe61e" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der", - "spki", -] - -[[package]] -name = "pkg-config" -version = "0.3.31" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" - -[[package]] -name = "plotters" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747" -dependencies = [ - "num-traits", - "plotters-backend", - "plotters-svg", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "plotters-backend" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a" - -[[package]] -name = "plotters-svg" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670" -dependencies = [ - "plotters-backend", -] - -[[package]] -name = "portable-atomic" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" - -[[package]] -name = "powerfmt" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" - -[[package]] -name = "ppv-lite86" -version = "0.2.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" -dependencies = [ - "zerocopy", -] - -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - -[[package]] -name = "predicates" -version = "3.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e9086cc7640c29a356d1a29fd134380bee9d8f79a17410aa76e7ad295f42c97" -dependencies = [ - "anstyle", - "predicates-core", -] - -[[package]] -name = "predicates-core" -version = "1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae8177bee8e75d6846599c6b9ff679ed51e882816914eec639944d7c9aa11931" - -[[package]] -name = "predicates-tree" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41b740d195ed3166cd147c8047ec98db0e22ec019eb8eeb76d343b795304fb13" -dependencies = [ - "predicates-core", - "termtree", -] - -[[package]] -name = "pretty_assertions" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ae130e2f271fbc2ac3a40fb1d07180839cdbbe443c7a27e1e3c13c5cac0116d" -dependencies = [ - "diff", - "yansi", -] - -[[package]] -name = "prettyplease" -version = "0.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" -dependencies = [ - "proc-macro2", - "syn 2.0.79", -] - -[[package]] -name = "primeorder" -version = "0.13.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" -dependencies = [ - "elliptic-curve", -] - -[[package]] -name = "primitive-types" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" -dependencies = [ - "fixed-hash", - "impl-codec", - "impl-rlp", - "impl-serde", - "scale-info", - "uint", -] - -[[package]] -name = "proc-macro-crate" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" -dependencies = [ - "toml_edit", -] - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "proc-macro2" -version = "1.0.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "proc-macro2-diagnostics" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", - "version_check", - "yansi", -] - -[[package]] -name = "process-wrap" -version = "8.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38ee68ae331824036479c84060534b18254c864fa73366c58d86db3b7b811619" -dependencies = [ - "futures", - "indexmap 2.7.0", - "nix 0.28.0", - "tokio", - "tracing", - "windows 0.56.0", -] - -[[package]] -name = "prodash" -version = "28.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "744a264d26b88a6a7e37cbad97953fa233b94d585236310bcbc88474b4092d79" - -[[package]] -name = "project-origins" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "735c6b4b1c67863c2211cac24badb0dca9fabfe1098209834fc5e0f92eda6c2c" -dependencies = [ - "futures", - "tokio", - "tokio-stream", -] - -[[package]] -name = "proptest" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" -dependencies = [ - "bit-set", - "bit-vec", - "bitflags 2.6.0", - "lazy_static", - "num-traits", - "rand", - "rand_chacha", - "rand_xorshift", - "regex-syntax 0.8.5", - "regex-syntax 0.8.5", - "rusty-fork", - "tempfile", - "unarray", -] - -[[package]] -name = "proptest-derive" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff7ff745a347b87471d859a377a9a404361e7efc2a971d73424a6d183c0fc77" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "prost" -version = "0.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b0487d90e047de87f984913713b85c601c05609aad5b0df4b4573fbf69aa13f" -dependencies = [ - "bytes", - "prost-derive", -] - -[[package]] -name = "prost-derive" -version = "0.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9552f850d5f0964a4e4d0bf306459ac29323ddfbae05e35a7c0d35cb0803cc5" -dependencies = [ - "anyhow", - "itertools 0.13.0", - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "prost-types" -version = "0.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4759aa0d3a6232fb8dbdb97b61de2c20047c68aca932c7ed76da9d788508d670" -dependencies = [ - "prost", -] - -[[package]] -name = "protobuf" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b65f4a8ec18723a734e5dc09c173e0abf9690432da5340285d536edcb4dac190" -dependencies = [ - "once_cell", - "protobuf-support", - "thiserror 1.0.69", -] - -[[package]] -name = "protobuf-support" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6872f4d4f4b98303239a2b5838f5bbbb77b01ffc892d627957f37a22d7cfe69c" -dependencies = [ - "thiserror 1.0.69", -] - -[[package]] -name = "pulldown-cmark" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76979bea66e7875e7509c4ec5300112b316af87fa7a252ca91c448b32dfe3993" -dependencies = [ - "bitflags 2.6.0", - "memchr", - "pulldown-cmark-escape", - "unicase", -] - -[[package]] -name = "pulldown-cmark-escape" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd348ff538bc9caeda7ee8cad2d1d48236a1f443c1fa3913c6a02fe0043b1dd3" - -[[package]] -name = "quick-error" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" - -[[package]] -name = "quick-junit" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed1a693391a16317257103ad06a88c6529ac640846021da7c435a06fffdacd7" -dependencies = [ - "chrono", - "indexmap 2.7.0", - "newtype-uuid", - "quick-xml 0.37.1", - "strip-ansi-escapes", - "thiserror 2.0.7", - "uuid 1.11.0", -] - -[[package]] -name = "quick-xml" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cc440ee4802a86e357165021e3e255a9143724da31db1e2ea540214c96a0f82" -dependencies = [ - "memchr", -] - -[[package]] -name = "quick-xml" -version = "0.37.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f22f29bdff3987b4d8632ef95fd6424ec7e4e0a57e2f4fc63e489e75357f6a03" -dependencies = [ - "memchr", -] - -[[package]] -name = "quinn" -version = "0.11.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62e96808277ec6f97351a2380e6c25114bc9e67037775464979f3037c92d05ef" -dependencies = [ - "bytes", - "pin-project-lite", - "quinn-proto", - "quinn-udp", - "rustc-hash", - "rustls 0.23.13", - "socket2", - "thiserror 2.0.7", - "tokio", - "tracing", -] - -[[package]] -name = "quinn-proto" -version = "0.11.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" -dependencies = [ - "bytes", - "getrandom", - "rand", - "ring", - "rustc-hash", - "rustls 0.23.13", - "slab", - "thiserror 2.0.7", - "tinyvec", - "tracing", - "web-time", -] - -[[package]] -name = "quinn-udp" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52cd4b1eff68bf27940dd39811292c49e007f4d0b4c357358dc9b0197be6b527" -dependencies = [ - "cfg_aliases 0.2.1", - "libc", - "once_cell", - "socket2", - "tracing", - "windows-sys 0.59.0", -] - -[[package]] -name = "quote" -version = "1.0.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "radium" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" - -[[package]] -name = "radix_trie" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd" -dependencies = [ - "endian-type", - "nibble_vec", -] - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha", - "rand_core", - "serde", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom", -] - -[[package]] -name = "rand_xorshift" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" -dependencies = [ - "rand_core", -] - -[[package]] -name = "ratatui" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabd94c2f37801c20583fc49dd5cd6b0ba68c716787c2dd6ed18571e1e63117b" -dependencies = [ - "bitflags 2.6.0", - "cassowary", - "compact_str", - "crossterm", - "indoc", - "instability", - "itertools 0.13.0", - "lru", - "paste", - "strum", - "unicode-segmentation", - "unicode-truncate", - "unicode-width 0.2.0", -] - -[[package]] -name = "rayon" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" -dependencies = [ - "crossbeam-deque", - "crossbeam-utils", -] - -[[package]] -name = "recvmsg" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3edd4d5d42c92f0a659926464d4cce56b562761267ecf0f469d85b7de384175" - -[[package]] -name = "redox_syscall" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" -dependencies = [ - "bitflags 2.6.0", -] - -[[package]] -name = "redox_users" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" -dependencies = [ - "getrandom", - "libredox", - "thiserror 1.0.69", -] - -[[package]] -name = "regex" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata 0.4.8", - "regex-syntax 0.8.5", -] - -[[package]] -name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax 0.6.29", -] - -[[package]] -name = "regex-automata" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax 0.8.5", - "regex-syntax 0.8.5", -] - -[[package]] -name = "regex-lite" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53a49587ad06b26609c52e423de037e7f57f20d53535d66e08c695f347df952a" - -[[package]] -name = "regex-syntax" -version = "0.6.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" - -[[package]] -name = "regex-syntax" -version = "0.8.5" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" - -[[package]] -name = "reqwest" -version = "0.12.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b" -dependencies = [ - "async-compression", - "base64 0.22.1", - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "http 1.2.0", - "http-body 1.0.1", - "http-body-util", - "hyper 1.5.1", - "hyper-rustls 0.27.3", - "hyper-tls", - "hyper-util", - "ipnet", - "js-sys", - "log", - "mime", - "mime_guess", - "native-tls", - "once_cell", - "percent-encoding", - "pin-project-lite", - "quinn", - "rustls 0.23.13", - "rustls-native-certs 0.8.0", - "rustls-pemfile 2.2.0", - "rustls-pki-types", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper", - "tokio", - "tokio-native-tls", - "tokio-rustls 0.26.1", - "tokio-socks", - "tokio-util", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "wasm-streams", - "web-sys", - "webpki-roots", - "windows-registry", -] - -[[package]] -name = "revm" -version = "14.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=647e76f4#647e76f4a0ecbacfb30fc53d0bfcb9709e4eed44" -dependencies = [ - "auto_impl", - "cfg-if", - "dyn-clone", - "revm-interpreter", - "revm-precompile", - "serde", - "serde_json", -] - -[[package]] -name = "revm-inspectors" -version = "0.6.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git?rev=a77b988#a77b988b82486f521193f01231def7809a38e8b3" -dependencies = [ - "alloy-primitives", - "alloy-rpc-types-eth", - "alloy-rpc-types-trace", - "alloy-sol-types", - "anstyle", - "colorchoice", - "revm", - "serde", - "serde_json", - "thiserror 2.0.7", -] - -[[package]] -name = "revm-interpreter" -version = "10.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=647e76f4#647e76f4a0ecbacfb30fc53d0bfcb9709e4eed44" -dependencies = [ - "revm-primitives", - "serde", -] - -[[package]] -name = "revm-precompile" -version = "11.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=647e76f4#647e76f4a0ecbacfb30fc53d0bfcb9709e4eed44" -dependencies = [ - "aurora-engine-modexp", - "c-kzg", - "cfg-if", - "k256", - "once_cell", - "p256", - "revm-primitives", - "ripemd", - "secp256k1", - "sha2", - "substrate-bn", -] - -[[package]] -name = "revm-primitives" -version = "9.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=647e76f4#647e76f4a0ecbacfb30fc53d0bfcb9709e4eed44" -dependencies = [ - "alloy-eip2930", - "alloy-eip7702", - "alloy-primitives", - "auto_impl", - "bitflags 2.6.0", - "bitvec", - "c-kzg", - "cfg-if", - "dyn-clone", - "enumn", - "hex", - "proptest", - "proptest-derive", - "serde", -] - -[[package]] -name = "rfc6979" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" -dependencies = [ - "hmac", - "subtle", -] - -[[package]] -name = "rgb" -version = "0.8.50" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57397d16646700483b67d2dd6511d79318f9d057fdbd21a4066aeac8b41d310a" -dependencies = [ - "bytemuck", -] - -[[package]] -name = "ring" -version = "0.17.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" -dependencies = [ - "cc", - "cfg-if", - "getrandom", - "libc", - "spin", - "untrusted", - "windows-sys 0.52.0", -] - -[[package]] -name = "ripemd" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" -dependencies = [ - "digest 0.10.7", -] - -[[package]] -name = "rlp" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" -dependencies = [ - "bytes", - "rlp-derive", - "rustc-hex", -] - -[[package]] -name = "rlp-derive" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "rpassword" -version = "7.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80472be3c897911d0137b2d2b9055faf6eeac5b14e324073d83bc17b191d7e3f" -dependencies = [ - "libc", - "rtoolbox", - "windows-sys 0.48.0", -] - -[[package]] -name = "rtoolbox" -version = "0.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c247d24e63230cdb56463ae328478bd5eac8b8faa8c69461a77e8e323afac90e" -dependencies = [ - "libc", - "windows-sys 0.48.0", -] - -[[package]] -name = "ruint" -version = "1.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c3cc4c2511671f327125da14133d0c5c5d137f006a1017a16f557bc85b16286" -dependencies = [ - "alloy-rlp", - "arbitrary", - "ark-ff 0.3.0", - "ark-ff 0.4.2", - "bytes", - "fastrlp", - "num-bigint", - "num-traits", - "parity-scale-codec", - "primitive-types", - "proptest", - "rand", - "rlp", - "ruint-macro", - "serde", - "valuable", - "zeroize", -] - -[[package]] -name = "ruint-macro" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" - -[[package]] -name = "rusb" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab9f9ff05b63a786553a4c02943b74b34a988448671001e9a27e2f0565cc05a4" -dependencies = [ - "libc", - "libusb1-sys", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" - -[[package]] -name = "rustc-hash" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497" -dependencies = [ - "rand", -] - -[[package]] -name = "rustc-hex" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" - -[[package]] -name = "rustc_version" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" -dependencies = [ - "semver 0.11.0", -] - -[[package]] -name = "rustc_version" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" -dependencies = [ - "semver 1.0.24", -] - -[[package]] -name = "rustix" -version = "0.38.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" -dependencies = [ - "bitflags 2.6.0", - "errno", - "libc", - "linux-raw-sys", - "windows-sys 0.59.0", -] - -[[package]] -name = "rustls" -version = "0.21.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" -dependencies = [ - "log", - "ring", - "rustls-webpki 0.101.7", - "sct", -] - -[[package]] -name = "rustls" -version = "0.23.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2dabaac7466917e566adb06783a81ca48944c6898a1b08b9374106dd671f4c8" -dependencies = [ - "log", - "once_cell", - "ring", - "rustls-pki-types", - "rustls-webpki 0.102.8", - "rustls-webpki 0.102.8", - "subtle", - "zeroize", -] - -[[package]] -name = "rustls-native-certs" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" -dependencies = [ - "openssl-probe", - "rustls-pemfile 1.0.4", - "schannel", - "security-framework 2.11.1", -] - -[[package]] -name = "rustls-native-certs" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcaf18a4f2be7326cd874a5fa579fae794320a0f388d365dca7e480e55f83f8a" -dependencies = [ - "openssl-probe", - "rustls-pemfile 2.2.0", - "rustls-pki-types", - "schannel", - "security-framework", -] - -[[package]] -name = "rustls-pemfile" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" -dependencies = [ - "base64 0.21.7", -] - -[[package]] -name = "rustls-pemfile" -version = "2.2.0" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" -checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" -dependencies = [ - "rustls-pki-types", -] - -[[package]] -name = "rustls-pki-types" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e696e35370c65c9c541198af4543ccd580cf17fc25d8e05c5a242b202488c55" - -[[package]] -name = "rustls-webpki" -version = "0.101.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "rustls-webpki" -version = "0.102.8" -version = "0.102.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" -checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" -dependencies = [ - "ring", - "rustls-pki-types", - "untrusted", -] - -[[package]] -name = "rustversion" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" - -[[package]] -name = "rusty-fork" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" -dependencies = [ - "fnv", - "quick-error", - "tempfile", - "wait-timeout", -] - -[[package]] -name = "rustyline" -version = "15.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ee1e066dc922e513bda599c6ccb5f3bb2b0ea5870a579448f2622993f0a9a2f" -dependencies = [ - "bitflags 2.6.0", - "cfg-if", - "clipboard-win", - "fd-lock", - "home", - "libc", - "log", - "memchr", - "nix 0.29.0", - "radix_trie", - "unicode-segmentation", - "unicode-width 0.2.0", - "utf8parse", - "windows-sys 0.59.0", -] - -[[package]] -name = "ryu" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" - -[[package]] -name = "salsa20" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" -dependencies = [ - "cipher", -] - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "sanitize-filename" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ed72fbaf78e6f2d41744923916966c4fbe3d7c74e3037a8ee482f1115572603" -dependencies = [ - "lazy_static", - "regex", -] - -[[package]] -name = "scale-info" -version = "2.11.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b" -dependencies = [ - "cfg-if", - "derive_more", - "parity-scale-codec", - "scale-info-derive", -] - -[[package]] -name = "scale-info-derive" -version = "2.11.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.90", -] - -[[package]] -name = "scc" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836f1e0f4963ef5288b539b643b35e043e76a32d0f4e47e67febf69576527f50" -dependencies = [ - "sdd", -] - -[[package]] -name = "schannel" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" -dependencies = [ - "windows-sys 0.59.0", - "windows-sys 0.59.0", -] - -[[package]] -name = "schemars" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" -dependencies = [ - "dyn-clone", - "schemars_derive", - "serde", - "serde_json", -] - -[[package]] -name = "schemars_derive" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" -dependencies = [ - "proc-macro2", - "quote", - "serde_derive_internals", - "syn 2.0.79", -] - -[[package]] -name = "scoped-tls" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "scrypt" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f9e24d2b632954ded8ab2ef9fea0a0c769ea56ea98bddbafbad22caeeadf45d" -dependencies = [ - "hmac", - "pbkdf2 0.11.0", - "salsa20", - "sha2", -] - -[[package]] -name = "sct" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "sdd" -version = "3.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60a7b59a5d9b0099720b417b6325d91a52cbf5b3dcb5041d864be53eefa58abc" - -[[package]] -name = "sec1" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" -dependencies = [ - "base16ct", - "der", - "generic-array", - "pkcs8", - "subtle", - "zeroize", -] - -[[package]] -name = "secp256k1" -version = "0.29.1" -version = "0.29.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9465315bc9d4566e1724f0fffcbcc446268cb522e60f9a27bcded6b19c108113" -checksum = "9465315bc9d4566e1724f0fffcbcc446268cb522e60f9a27bcded6b19c108113" -dependencies = [ - "rand", - "secp256k1-sys", -] - -[[package]] -name = "secp256k1-sys" -version = "0.10.1" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" -checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" -dependencies = [ - "cc", -] - -[[package]] -name = "secret-vault-value" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc32a777b53b3433b974c9c26b6d502a50037f8da94e46cb8ce2ced2cfdfaea0" -dependencies = [ - "prost", - "prost-types", - "serde", - "serde_json", - "zeroize", -] - -[[package]] -name = "security-framework" -version = "2.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" -dependencies = [ - "bitflags 2.6.0", - "core-foundation 0.9.4", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework" -version = "3.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1415a607e92bec364ea2cf9264646dcce0f91e6d65281bd6f2819cca3bf39c8" -dependencies = [ - "bitflags 2.6.0", - "core-foundation 0.10.0", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "semver" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" -dependencies = [ - "semver-parser", -] - -[[package]] -name = "semver" -version = "1.0.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" -dependencies = [ - "serde", -] - -[[package]] -name = "semver-parser" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" -dependencies = [ - "pest", -] - -[[package]] -name = "send_wrapper" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" - -[[package]] -name = "serde" -version = "1.0.210" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.210" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "serde_derive_internals" -version = "0.29.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "serde_json" -version = "1.0.133" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" -dependencies = [ - "indexmap 2.7.0", - "itoa", - "memchr", - "ryu", - "serde", -] - -[[package]] -name = "serde_path_to_error" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" -dependencies = [ - "itoa", - "serde", -] - -[[package]] -name = "serde_regex" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8136f1a4ea815d7eac4101cfd0b16dc0cb5e1fe1b8609dfd728058656b7badf" -dependencies = [ - "regex", - "serde", -] - -[[package]] -name = "serde_repr" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "serde_spanned" -version = "0.6.8" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" -checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "serial_test" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b258109f244e1d6891bf1053a55d63a5cd4f8f4c30cf9a1280989f80e7a1fa9" -dependencies = [ - "futures", - "log", - "once_cell", - "parking_lot", - "scc", - "serial_test_derive", -] - -[[package]] -name = "serial_test_derive" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "sha1" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest 0.10.7", -] - -[[package]] -name = "sha1_smol" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" - -[[package]] -name = "sha2" -version = "0.10.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest 0.10.7", -] - -[[package]] -name = "sha3" -version = "0.10.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" -dependencies = [ - "digest 0.10.7", - "keccak", -] - -[[package]] -name = "sha3-asm" -version = "0.1.4" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46" -checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46" -dependencies = [ - "cc", - "cfg-if", -] - -[[package]] -name = "sharded-slab" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "shell-words" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" - -[[package]] -name = "shlex" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - -[[package]] -name = "signal-hook" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" -dependencies = [ - "libc", - "signal-hook-registry", -] - -[[package]] -name = "signal-hook-mio" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd" -dependencies = [ - "libc", - "mio 1.0.3", - "signal-hook", -] - -[[package]] -name = "signal-hook-registry" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" -dependencies = [ - "libc", -] - -[[package]] -name = "signature" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" -dependencies = [ - "digest 0.10.7", - "rand_core", -] - -[[package]] -name = "simd-adler32" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" - -[[package]] -name = "similar" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e" -dependencies = [ - "bstr", - "unicode-segmentation", -] - -[[package]] -name = "similar-asserts" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfe85670573cd6f0fa97940f26e7e6601213c3b0555246c24234131f88c5709e" -dependencies = [ - "console", - "similar", -] - -[[package]] -name = "simple_asn1" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" -dependencies = [ - "num-bigint", - "num-traits", - "thiserror 1.0.69", - "time", -] - -[[package]] -name = "siphasher" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" - -[[package]] -name = "slab" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] - -[[package]] -name = "smallvec" -version = "1.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" -dependencies = [ - "serde", -] - -[[package]] -name = "smawk" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" - -[[package]] -name = "snapbox" -version = "0.6.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1373ce406dfad473059bbc31d807715642182bbc952a811952b58d1c9e41dcfa" -dependencies = [ - "anstream", - "anstyle", - "normalize-line-endings", - "regex", - "serde", - "serde_json", - "similar", - "snapbox-macros", -] - -[[package]] -name = "snapbox-macros" -version = "0.3.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16569f53ca23a41bb6f62e0a5084aa1661f4814a67fa33696a79073e03a664af" -dependencies = [ - "anstream", -] - -[[package]] -name = "socket2" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "solang-parser" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c425ce1c59f4b154717592f0bdf4715c3a1d55058883622d3157e1f0908a5b26" -dependencies = [ - "itertools 0.11.0", - "lalrpop", - "lalrpop-util", - "phf", - "thiserror 1.0.69", - "unicode-xid", -] - -[[package]] -name = "solar-ast" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5aeaf7a4bd326242c909bd287291226a540b62b36fa5824880248f4b1d4d6af" -dependencies = [ - "alloy-primitives", - "bumpalo", - "either", - "num-bigint", - "num-rational", - "semver 1.0.24", - "solar-data-structures", - "solar-interface", - "solar-macros", - "strum", - "typed-arena", -] - -[[package]] -name = "solar-config" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31d00d672a40a1a3620d7696f01a2d3301abf883d8168e1a9da3bf83f0c8e343" -dependencies = [ - "strum", -] - -[[package]] -name = "solar-data-structures" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6e4eb0b72ed7adbb808897c85de08ea99609774a58c72e3dce55c758043ca2" -dependencies = [ - "bumpalo", - "index_vec", - "indexmap 2.7.0", - "parking_lot", - "rayon", - "rustc-hash", - "smallvec", -] - -[[package]] -name = "solar-interface" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21fb8925638f3da1bba7a9a6ebeac3511e5c6354f921f2bb2e1ddce4ac70c107" -dependencies = [ - "annotate-snippets", - "anstream", - "anstyle", - "const-hex", - "derive_builder", - "dunce", - "itertools 0.13.0", - "itoa", - "lasso", - "match_cfg", - "normalize-path", - "rayon", - "scc", - "scoped-tls", - "solar-config", - "solar-data-structures", - "solar-macros", - "thiserror 1.0.69", - "tracing", - "unicode-width 0.2.0", -] - -[[package]] -name = "solar-macros" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0cc54b74e214647c1bbfc098d080cc5deac77f8dcb99aca91747276b01a15ad" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.90", -] - -[[package]] -name = "solar-parse" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b82c3659c15975cd80e5e1c44591278c230c59ad89082d797837499a4784e1b" -dependencies = [ - "alloy-primitives", - "bitflags 2.6.0", - "bumpalo", - "itertools 0.13.0", - "memchr", - "num-bigint", - "num-rational", - "num-traits", - "smallvec", - "solar-ast", - "solar-data-structures", - "solar-interface", - "tracing", -] - -[[package]] -name = "soldeer-commands" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4bd924da31914871820d1404b63a89b100097957f6dc7f3bbb9c094f16d8f4e" -dependencies = [ - "bon", - "clap", - "cliclack", - "derive_more", - "email-address-parser", - "rayon", - "soldeer-core", -] - -[[package]] -name = "soldeer-core" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7a3129568ab6b38132efa9c956b5ae14c09c0a1a1167353e337081d1d7f0c32" -dependencies = [ - "bon", - "chrono", - "cliclack", - "const-hex", - "derive_more", - "dunce", - "home", - "ignore", - "path-slash", - "rayon", - "regex", - "reqwest", - "sanitize-filename", - "semver 1.0.24", - "serde", - "serde_json", - "sha2", - "thiserror 2.0.7", - "tokio", - "toml_edit", - "uuid 1.11.0", - "zip", - "zip-extract", -] - -[[package]] -name = "spin" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" - -[[package]] -name = "spki" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" -dependencies = [ - "base64ct", - "der", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "str_stack" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9091b6114800a5f2141aee1d1b9d6ca3592ac062dc5decb3764ec5895a47b4eb" - -[[package]] -name = "string_cache" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" -dependencies = [ - "new_debug_unreachable", - "once_cell", - "parking_lot", - "phf_shared 0.10.0", - "precomputed-hash", - "serde", -] - -[[package]] -name = "string_cache_codegen" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" -dependencies = [ - "phf_generator 0.10.0", - "phf_shared 0.10.0", - "proc-macro2", - "quote", -] - -[[package]] -name = "strip-ansi-escapes" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55ff8ef943b384c414f54aefa961dd2bd853add74ec75e7ac74cf91dba62bcfa" -dependencies = [ - "vte", -] - -[[package]] -name = "strsim" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" - -[[package]] -name = "strum" -version = "0.26.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" -dependencies = [ - "strum_macros", -] - -[[package]] -name = "strum_macros" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "rustversion", - "syn 2.0.79", -] - -[[package]] -name = "substrate-bn" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b5bbfa79abbae15dd642ea8176a21a635ff3c00059961d1ea27ad04e5b441c" -dependencies = [ - "byteorder", - "crunchy", - "lazy_static", - "rand", - "rustc-hex", -] - -[[package]] -name = "subtle" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" - -[[package]] -name = "svm-rs" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4aebac1b1ef2b46e2e2bdf3c09db304800f2a77c1fa902bd5231490203042be8" -dependencies = [ - "const-hex", - "dirs 5.0.1", - "fs4", - "reqwest", - "semver 1.0.24", - "serde", - "serde_json", - "sha2", - "tempfile", - "thiserror 1.0.69", - "url", - "zip", -] - -[[package]] -name = "svm-rs-builds" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2fa0f145894cb4d1c14446f08098ee5f21fc37ccbd1a7dd9dd355bbc806de3b" -dependencies = [ - "build_const", - "const-hex", - "semver 1.0.24", - "serde_json", - "svm-rs", -] - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn-solidity" -version = "0.8.1" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=adc0cf2#adc0cf2fb96c9be80df1d71cfe8ba745dc33f1c6" -dependencies = [ - "paste", - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "sync_wrapper" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" -dependencies = [ - "futures-core", -] - -[[package]] -name = "synstructure" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.90", -] - -[[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" - -[[package]] -name = "tempfile" -version = "3.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" -dependencies = [ - "cfg-if", - "fastrand", - "once_cell", - "rustix", - "windows-sys 0.59.0", -] - -[[package]] -name = "tendril" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" -dependencies = [ - "futf", - "mac", - "utf-8", -] - -[[package]] -name = "term" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" -dependencies = [ - "dirs-next", - "rustversion", - "winapi", -] - -[[package]] -name = "terminal_size" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5352447f921fda68cf61b4101566c0bdb5104eff6804d0678e5227580ab6a4e9" -dependencies = [ - "rustix", - "windows-sys 0.59.0", -] - -[[package]] -name = "terminfo" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "666cd3a6681775d22b200409aad3b089c5b99fb11ecdd8a204d9d62f8148498f" -dependencies = [ - "dirs 4.0.0", - "fnv", - "nom", - "phf", - "phf_codegen", -] - -[[package]] -name = "termtree" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" - -[[package]] -name = "textwrap" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" -dependencies = [ - "smawk", - "unicode-linebreak", - "unicode-width 0.1.14", -] - -[[package]] -name = "thiserror" -version = "1.0.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" -dependencies = [ - "thiserror-impl 1.0.69", -] - -[[package]] -name = "thiserror" -version = "2.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93605438cbd668185516ab499d589afb7ee1859ea3d5fc8f6b0755e1c7443767" -dependencies = [ - "thiserror-impl 2.0.7", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "thread_local" -version = "1.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" -dependencies = [ - "cfg-if", - "once_cell", -] - -[[package]] -name = "threadpool" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" -dependencies = [ - "num_cpus", -] - -[[package]] -name = "tikv-jemalloc-sys" -version = "0.6.0+5.3.0-1-ge13ca993e8ccb9ba9847cc330696e02839f328f7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd3c60906412afa9c2b5b5a48ca6a5abe5736aec9eb48ad05037a677e52e4e2d" -dependencies = [ - "cc", - "libc", -] - -[[package]] -name = "tikv-jemallocator" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cec5ff18518d81584f477e9bfdf957f5bb0979b0bac3af4ca30b5b3ae2d2865" -dependencies = [ - "libc", - "tikv-jemalloc-sys", -] - -[[package]] -name = "time" -version = "0.3.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" -dependencies = [ - "deranged", - "itoa", - "libc", - "num-conv", - "num_threads", - "powerfmt", - "serde", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" - -[[package]] -name = "time-macros" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" -dependencies = [ - "num-conv", - "time-core", -] - -[[package]] -name = "tiny-keccak" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" -dependencies = [ - "crunchy", -] - -[[package]] -name = "tinystr" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" -dependencies = [ - "displaydoc", - "zerovec", -] - -[[package]] -name = "tinyvec" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - -[[package]] -name = "tokio" -version = "1.42.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" -dependencies = [ - "backtrace", - "bytes", - "libc", - "mio 1.0.3", - "parking_lot", - "pin-project-lite", - "signal-hook-registry", - "socket2", - "tokio-macros", - "windows-sys 0.52.0", -] - -[[package]] -name = "tokio-macros" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "tokio-native-tls" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" -dependencies = [ - "native-tls", - "tokio", -] - -[[package]] -name = "tokio-rustls" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" -dependencies = [ - "rustls 0.21.12", - "tokio", -] - -[[package]] -name = "tokio-rustls" -version = "0.26.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" -dependencies = [ - "rustls 0.23.13", - "rustls-pki-types", - "tokio", -] - -[[package]] -name = "tokio-socks" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d4770b8024672c1101b3f6733eab95b18007dbe0847a8afe341fcf79e06043f" -dependencies = [ - "either", - "futures-util", - "thiserror 1.0.69", - "tokio", -] - -[[package]] -name = "tokio-stream" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" -dependencies = [ - "futures-core", - "pin-project-lite", - "tokio", - "tokio-util", -] - -[[package]] -name = "tokio-tungstenite" -version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6989540ced10490aaf14e6bad2e3d33728a2813310a0c71d1574304c49631cd" -dependencies = [ - "futures-util", - "log", - "rustls 0.23.13", - "rustls-pki-types", - "tokio", - "tokio-rustls 0.26.0", - "tungstenite 0.23.0", - "webpki-roots", -] - -[[package]] -name = "tokio-tungstenite" -version = "0.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edc5f74e248dc973e0dbb7b74c7e0d6fcc301c694ff50049504004ef4d0cdcd9" -dependencies = [ - "futures-util", - "log", - "tokio", - "tungstenite 0.24.0", -] - -[[package]] -name = "tokio-util" -version = "0.7.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - -[[package]] -name = "toml" -version = "0.8.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" -dependencies = [ - "indexmap 2.7.0", - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit", -] - -[[package]] -name = "toml_datetime" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_edit" -version = "0.22.22" -version = "0.22.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" -checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" -dependencies = [ - "indexmap 2.7.0", - "serde", - "serde_spanned", - "toml_datetime", - "winnow", -] - -[[package]] -name = "tonic" -version = "0.12.3" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" -checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" -dependencies = [ - "async-stream", - "async-trait", - "axum", - "base64 0.22.1", - "bytes", - "h2 0.4.7", - "http 1.2.0", - "http-body 1.0.1", - "http-body-util", - "hyper 1.5.1", - "hyper-timeout", - "hyper-util", - "percent-encoding", - "pin-project 1.1.7", - "prost", - "rustls-native-certs 0.8.0", - "rustls-pemfile 2.2.0", - "socket2", - "tokio", - "tokio-rustls 0.26.1", - "tokio-stream", - "tower 0.4.13", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "topological-sort" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea68304e134ecd095ac6c3574494fc62b909f416c4fca77e440530221e549d3d" - -[[package]] -name = "tower" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" -dependencies = [ - "futures-core", - "futures-util", - "indexmap 1.9.3", - "pin-project 1.1.7", - "pin-project-lite", - "rand", - "slab", - "tokio", - "tokio-util", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "tower" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f" -dependencies = [ - "futures-core", - "futures-util", - "pin-project-lite", - "sync_wrapper 0.1.2", - "tokio", - "tower-layer", - "tower-service", - "tracing", - "tracing", -] - -[[package]] -name = "tower-http" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" -dependencies = [ - "bitflags 2.6.0", - "bytes", - "futures-util", - "http 1.2.0", - "http-body 1.0.1", - "http-body-util", - "http-range-header", - "httpdate", - "mime", - "mime_guess", - "percent-encoding", - "pin-project-lite", - "tokio", - "tokio-util", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "tower-layer" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" - -[[package]] -name = "tower-service" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" - -[[package]] -name = "tower-util" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1093c19826d33807c72511e68f73b4a0469a3f22c2bd5f7d5212178b4b89674" -dependencies = [ - "futures-core", - "futures-util", - "pin-project 0.4.30", - "tower-service", -] - -[[package]] -name = "tracing" -version = "0.1.41" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" -dependencies = [ - "log", - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "tracing-core" -version = "0.1.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" -dependencies = [ - "once_cell", - "valuable", -] - -[[package]] -name = "tracing-error" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b1581020d7a273442f5b45074a6a57d5757ad0a47dac0e9f0bd57b81936f3db" -dependencies = [ - "tracing", - "tracing-subscriber", -] - -[[package]] -name = "tracing-log" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" -dependencies = [ - "log", - "once_cell", - "tracing-core", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" -dependencies = [ - "matchers", - "nu-ansi-term", - "once_cell", - "regex", - "sharded-slab", - "smallvec", - "thread_local", - "tracing", - "tracing-core", - "tracing-log", -] - -[[package]] -name = "tracing-tracy" -version = "0.11.3" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc775fdaf33c3dfd19dc354729e65e87914bc67dcdc390ca1210807b8bee5902" -checksum = "dc775fdaf33c3dfd19dc354729e65e87914bc67dcdc390ca1210807b8bee5902" -dependencies = [ - "tracing-core", - "tracing-subscriber", - "tracy-client", -] - -[[package]] -name = "tracy-client" -version = "0.17.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "746b078c6a09ebfd5594609049e07116735c304671eaab06ce749854d23435bc" -dependencies = [ - "loom", - "once_cell", - "tracy-client-sys", -] - -[[package]] -name = "tracy-client-sys" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68613466112302fdbeabc5fa55f7d57462a0b247d5a6b7d7e09401fb471a144d" -dependencies = [ - "cc", - "windows-targets 0.52.6", -] - -[[package]] -name = "trezor-client" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10636211ab89c96ed2824adc5ec0d081e1080aeacc24c37abb318dcb31dcc779" -dependencies = [ - "byteorder", - "hex", - "protobuf", - "rusb", - "thiserror 1.0.69", - "tracing", -] - -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - -[[package]] -name = "tungstenite" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e2e2ce1e47ed2994fd43b04c8f618008d4cabdd5ee34027cf14f9d918edd9c8" -dependencies = [ - "byteorder", - "bytes", - "data-encoding", - "http 1.2.0", - "httparse", - "log", - "rand", - "rustls 0.23.13", - "rustls-pki-types", - "sha1", - "thiserror", - "utf-8", -] - -[[package]] -name = "tungstenite" -version = "0.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18e5b8366ee7a95b16d32197d0b2604b43a0be89dc5fac9f8e96ccafbaedda8a" -dependencies = [ - "byteorder", - "bytes", - "data-encoding", - "http 1.1.0", - "httparse", - "log", - "rand", - "sha1", - "thiserror", - "utf-8", -] - -[[package]] -name = "typenum" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" - -[[package]] -name = "ucd-trie" -version = "0.1.7" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" -checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" - -[[package]] -name = "uint" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" -dependencies = [ - "byteorder", - "crunchy", - "hex", - "static_assertions", -] - -[[package]] -name = "unarray" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" - -[[package]] -name = "uncased" -version = "0.9.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1b88fcfe09e89d3866a5c11019378088af2d24c3fbd4f0543f96b479ec90697" -dependencies = [ - "version_check", -] - -[[package]] -name = "unicase" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df" - -[[package]] -name = "unicode-bom" -version = "2.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eec5d1121208364f6793f7d2e222bf75a915c19557537745b195b253dd64217" - -[[package]] -name = "unicode-ident" -version = "1.0.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" - -[[package]] -name = "unicode-normalization" -version = "0.1.24" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" -checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "unicode-segmentation" -version = "1.12.0" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" - -[[package]] -name = "unicode-truncate" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3644627a5af5fa321c95b9b235a72fd24cd29c648c2c379431e6628655627bf" -dependencies = [ - "itertools 0.13.0", - "unicode-segmentation", - "unicode-width 0.1.14", -] - -[[package]] -name = "unicode-width" -version = "0.1.14" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" - -[[package]] -name = "unicode-xid" -version = "0.2.6" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - -[[package]] -name = "untrusted" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" - -[[package]] -name = "url" -version = "2.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", -] - -[[package]] -name = "urlencoding" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" - -[[package]] -name = "utf-8" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" - -[[package]] -name = "utf16_iter" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" - -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - -[[package]] -name = "utf8parse" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" - -[[package]] -name = "uuid" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" -dependencies = [ - "getrandom", - "serde", -] - -[[package]] -name = "uuid" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" -dependencies = [ - "getrandom", - "serde", -] - -[[package]] -name = "valuable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" - -[[package]] -name = "vcpkg" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" - -[[package]] -name = "vergen" -version = "8.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2990d9ea5967266ea0ccf413a4aa5c42a93dbcfda9cb49a97de6931726b12566" -dependencies = [ - "anyhow", - "cfg-if", - "rustversion", - "time", -] - -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - -[[package]] -name = "vsimd" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64" - -[[package]] -name = "vte" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5022b5fbf9407086c180e9557be968742d839e68346af7792b8592489732197" -dependencies = [ - "utf8parse", - "vte_generate_state_changes", -] - -[[package]] -name = "vte_generate_state_changes" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e369bee1b05d510a7b4ed645f5faa90619e05437111783ea5848f28d97d3c2e" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "wait-timeout" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" -dependencies = [ - "libc", -] - -[[package]] -name = "walkdir" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" -dependencies = [ - "same-file", - "winapi-util", -] - -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "wasm-bindgen" -version = "0.2.99" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" -dependencies = [ - "cfg-if", - "once_cell", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.99" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" -dependencies = [ - "bumpalo", - "log", - "proc-macro2", - "quote", - "syn 2.0.79", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.49" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2" -dependencies = [ - "cfg-if", - "js-sys", - "once_cell", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.99" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.99" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.99" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" - -[[package]] -name = "wasm-streams" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e072d4e72f700fb3443d8fe94a39315df013eef1104903cdb0a2abd322bbecd" -dependencies = [ - "futures-util", - "js-sys", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - -[[package]] -name = "wasmtimer" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0048ad49a55b9deb3953841fa1fc5858f0efbcb7a18868c899a360269fac1b23" -dependencies = [ - "futures", - "js-sys", - "parking_lot", - "pin-utils", - "slab", - "wasm-bindgen", -] - -[[package]] -name = "watchexec" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81e682bb1fe9526a6c78ffcfc6bb662ab36c213764fdd173babfbaf05cc56254" -dependencies = [ - "async-priority-channel", - "async-recursion", - "atomic-take", - "futures", - "ignore-files", - "miette", - "nix 0.29.0", - "normalize-path", - "notify", - "once_cell", - "process-wrap", - "project-origins", - "thiserror 1.0.69", - "tokio", - "tracing", - "watchexec-events", - "watchexec-signals", - "watchexec-supervisor", -] - -[[package]] -name = "watchexec-events" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2404ed3aa5e4a8f6139a2ee137926886c9144234c945102143ef9bf65309a751" -dependencies = [ - "nix 0.29.0", - "notify", - "watchexec-signals", -] - -[[package]] -name = "watchexec-signals" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be07d7855a3617d996ce0c7df4b6232159c526634dff668dd95491c22a9a7262" -dependencies = [ - "miette", - "nix 0.29.0", - "thiserror 1.0.69", -] - -[[package]] -name = "watchexec-supervisor" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6026815bdc9653d7820f6499b83ecadacd97a804dfabf2b2c55b061557f5f1f4" -dependencies = [ - "futures", - "nix 0.29.0", - "process-wrap", - "tokio", - "tracing", - "watchexec-events", - "watchexec-signals", -] - -[[package]] -name = "web-sys" -version = "0.3.76" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "web-time" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "webpki-roots" -version = "0.26.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" -dependencies = [ - "rustls-pki-types", -] - -[[package]] -name = "which" -version = "6.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f" -dependencies = [ - "either", - "home", - "rustix", - "winsafe", -] - -[[package]] -name = "widestring" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311" - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" -dependencies = [ - "windows-sys 0.59.0", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows" -version = "0.56.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1de69df01bdf1ead2f4ac895dc77c9351aefff65b2f3db429a343f9cbf05e132" -dependencies = [ - "windows-core 0.56.0", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" -dependencies = [ - "windows-core 0.58.0", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-core" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-core" -version = "0.56.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4698e52ed2d08f8658ab0c39512a7c00ee5fe2688c65f8c0a4f06750d729f2a6" -dependencies = [ - "windows-implement 0.56.0", - "windows-interface 0.56.0", - "windows-result 0.1.2", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-core" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" -dependencies = [ - "windows-implement 0.58.0", - "windows-interface 0.58.0", - "windows-result 0.2.0", - "windows-strings", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-implement" -version = "0.56.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6fc35f58ecd95a9b71c4f2329b911016e6bec66b3f2e6a4aad86bd2e99e2f9b" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "windows-implement" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "windows-interface" -version = "0.56.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08990546bf4edef8f431fa6326e032865f27138718c587dc21bc0265bbcb57cc" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "windows-interface" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "windows-registry" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" -dependencies = [ - "windows-result 0.2.0", - "windows-strings", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-result" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-result" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-strings" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" -dependencies = [ - "windows-result 0.2.0", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.5", -] - -[[package]] -name = "windows-sys" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", - "windows_i686_msvc 0.52.6", - "windows_x86_64_gnu 0.52.6", - "windows_x86_64_gnullvm 0.52.6", - "windows_x86_64_msvc 0.52.6", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "winnow" -version = "0.6.20" -version = "0.6.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" -checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" -dependencies = [ - "memchr", -] - -[[package]] -name = "winsafe" -version = "0.0.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" - -[[package]] -name = "write16" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" - -[[package]] -name = "writeable" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" - -[[package]] -name = "ws_stream_wasm" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7999f5f4217fe3818726b66257a4475f71e74ffd190776ad053fa159e50737f5" -dependencies = [ - "async_io_stream", - "futures", - "js-sys", - "log", - "pharos", - "rustc_version 0.4.1", - "send_wrapper", - "thiserror 1.0.69", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - -[[package]] -name = "wyz" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" -dependencies = [ - "tap", -] - -[[package]] -name = "xmlparser" -version = "0.13.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4" - -[[package]] -name = "yansi" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" -dependencies = [ - "is-terminal", -] - -[[package]] -name = "yoke" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" -dependencies = [ - "serde", - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.90", - "synstructure", -] - -[[package]] -name = "zerocopy" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" -dependencies = [ - "byteorder", - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "zeroize" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" -dependencies = [ - "zeroize_derive", -] - -[[package]] -name = "zeroize_derive" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "zip" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d52293fc86ea7cf13971b3bb81eb21683636e7ae24c729cdaf1b7c4157a352" -dependencies = [ - "arbitrary", - "bzip2", - "crc32fast", - "crossbeam-utils", - "displaydoc", - "flate2", - "indexmap 2.7.0", - "memchr", - "thiserror 2.0.7", - "zopfli", -] - -[[package]] -name = "zip-extract" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25a8c9e90f27d1435088a7b540b6cc8ae6ee525d992a695f16012d2f365b3d3c" -dependencies = [ - "log", - "thiserror 1.0.69", - "zip", -] - -[[package]] -name = "zopfli" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5019f391bac5cf252e93bbcc53d039ffd62c7bfb7c150414d61369afe57e946" -dependencies = [ - "bumpalo", - "crc32fast", - "lockfree-object-pool", - "log", - "once_cell", - "simd-adler32", -] diff --git a/crates/anvil/src/eth/backend/mem/mod.rs b/crates/anvil/src/eth/backend/mem/mod.rs index d4462b2c3..97f825fbe 100644 --- a/crates/anvil/src/eth/backend/mem/mod.rs +++ b/crates/anvil/src/eth/backend/mem/mod.rs @@ -682,11 +682,7 @@ impl Backend { slot: U256, val: B256, ) -> DatabaseResult<()> { -<<<<<<< HEAD - self.db.write().await.set_storage_at(address, slot, U256::from_be_bytes(val.0).into()) -======= self.db.write().await.set_storage_at(address, slot.into(), val) ->>>>>>> 5a8bd893eeeeb9489ea66dd52a02eeaa580e3af0 } /// Returns the configured specid From 55d7a91c3ef6441fc1456f898df642ebd50f1334 Mon Sep 17 00:00:00 2001 From: Ameya Date: Fri, 20 Dec 2024 17:44:20 +0530 Subject: [PATCH 014/130] latest revm merge + alloy-core merge hash --- Cargo.lock | 11089 ++++++++++++++++++++++ Cargo.toml | 38 +- crates/anvil/src/eth/backend/mem/mod.rs | 4 - crates/common/fmt/Cargo.toml | 1 - 4 files changed, 11108 insertions(+), 24 deletions(-) create mode 100644 Cargo.lock diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 000000000..0f6c01950 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,11089 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +dependencies = [ + "lazy_static", + "regex", +] + +[[package]] +name = "addr2line" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + +[[package]] +name = "aead" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +dependencies = [ + "crypto-common", + "generic-array", +] + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "aes-gcm" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" +dependencies = [ + "aead", + "aes", + "cipher", + "ctr", + "ghash", + "subtle", +] + +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "getrandom", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "alloy-chains" +version = "0.1.49" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830045a4421ee38d3ab570d36d4d2b5152c066e72797139224da8de5d5981fd0" +dependencies = [ + "alloy-primitives 0.8.11", + "num_enum", + "serde", + "strum 0.26.3", +] + +[[package]] +name = "alloy-consensus" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "629b62e38d471cc15fea534eb7283d2f8a4e8bdb1811bcc5d66dda6cfce6fae1" +dependencies = [ + "alloy-eips 0.3.6", + "alloy-primitives 0.8.11", + "alloy-rlp", + "alloy-serde 0.3.6", + "c-kzg", + "serde", +] + +[[package]] +name = "alloy-consensus" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e88e1edea70787c33e11197d3f32ae380f3db19e6e061e539a5bcf8184a6b326" +dependencies = [ + "alloy-eips 0.8.3", + "alloy-primitives 0.8.15", + "alloy-rlp", + "alloy-serde 0.8.3", + "alloy-trie", + "auto_impl", + "c-kzg", + "derive_more", + "k256", + "serde", +] + +[[package]] +name = "alloy-consensus-any" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57b1bb53f40c0273cd1975573cd457b39213e68584e36d1401d25fd0398a1d65" +dependencies = [ + "alloy-consensus 0.8.3", + "alloy-eips 0.8.3", + "alloy-primitives 0.8.15", + "alloy-rlp", + "alloy-serde 0.8.3", + "serde", +] + +[[package]] +name = "alloy-contract" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b668c78c4b1f12f474ede5a85e8ce550d0aa1ef7d49fd1d22855a43b960e725" +dependencies = [ + "alloy-dyn-abi 0.8.15", + "alloy-json-abi 0.8.15", + "alloy-network", + "alloy-network-primitives 0.8.3", + "alloy-primitives 0.8.15", + "alloy-provider", + "alloy-pubsub", + "alloy-rpc-types-eth 0.8.3", + "alloy-sol-types 0.8.15", + "alloy-transport", + "futures", + "futures-util", + "thiserror 2.0.8", +] + +[[package]] +name = "alloy-dyn-abi" +version = "0.8.11" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=96d44f0#96d44f0e18b4bab5b58e0e7f2405514907734a95" +dependencies = [ + "alloy-json-abi 0.8.11", + "alloy-primitives 0.8.11", + "alloy-sol-type-parser 0.8.11", + "alloy-sol-types 0.8.11", + "arbitrary", + "const-hex", + "derive_arbitrary", + "derive_more", + "itoa", + "proptest", + "serde", + "serde_json", + "winnow", +] + +[[package]] +name = "alloy-dyn-abi" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41056bde53ae10ffbbf11618efbe1e0290859e5eab0fe9ef82ebdb62f12a866f" +dependencies = [ + "alloy-json-abi 0.8.15", + "alloy-primitives 0.8.15", + "alloy-sol-type-parser 0.8.15", + "alloy-sol-types 0.8.15", + "const-hex", + "derive_more", + "itoa", + "serde", + "serde_json", + "winnow", +] + +[[package]] +name = "alloy-eip2930" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0069cf0642457f87a01a014f6dc29d5d893cd4fd8fddf0c3cdfad1bb3ebafc41" +dependencies = [ + "alloy-primitives 0.8.11", + "alloy-rlp", + "arbitrary", + "rand", + "serde", +] + +[[package]] +name = "alloy-eip7702" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea59dc42102bc9a1905dc57901edc6dd48b9f38115df86c7d252acba70d71d04" +dependencies = [ + "alloy-primitives 0.8.11", + "alloy-rlp", + "k256", + "serde", +] + +[[package]] +name = "alloy-eip7702" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c986539255fb839d1533c128e190e557e52ff652c9ef62939e233a81dd93f7e" +dependencies = [ + "alloy-primitives 0.8.11", + "alloy-rlp", + "arbitrary", + "derive_more", + "k256", + "rand", + "serde", +] + +[[package]] +name = "alloy-eips" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f923dd5fca5f67a43d81ed3ebad0880bd41f6dd0ada930030353ac356c54cd0f" +dependencies = [ + "alloy-eip2930", + "alloy-eip7702 0.1.1", + "alloy-primitives 0.8.11", + "alloy-rlp", + "alloy-serde 0.3.6", + "c-kzg", + "derive_more", + "once_cell", + "serde", + "sha2", +] + +[[package]] +name = "alloy-eips" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f9fadfe089e9ccc0650473f2d4ef0a28bc015bbca5631d9f0f09e49b557fdb3" +dependencies = [ + "alloy-eip2930", + "alloy-eip7702 0.4.2", + "alloy-primitives 0.8.15", + "alloy-rlp", + "alloy-serde 0.8.3", + "c-kzg", + "derive_more", + "once_cell", + "serde", + "sha2", +] + +[[package]] +name = "alloy-genesis" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b2a4cf7b70f3495788e74ce1c765260ffe38820a2a774ff4aacb62e31ea73f9" +dependencies = [ + "alloy-primitives 0.8.15", + "alloy-serde 0.8.3", + "alloy-trie", + "serde", +] + +[[package]] +name = "alloy-json-abi" +version = "0.8.11" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=96d44f0#96d44f0e18b4bab5b58e0e7f2405514907734a95" +dependencies = [ + "alloy-primitives 0.8.11", + "alloy-sol-type-parser 0.8.11", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-json-abi" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c357da577dfb56998d01f574d81ad7a1958d248740a7981b205d69d65a7da404" +dependencies = [ + "alloy-primitives 0.8.15", + "alloy-sol-type-parser 0.8.15", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-json-rpc" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e29040b9d5fe2fb70415531882685b64f8efd08dfbd6cc907120650504821105" +dependencies = [ + "alloy-primitives 0.8.15", + "alloy-sol-types 0.8.15", + "serde", + "serde_json", + "thiserror 2.0.8", + "tracing", +] + +[[package]] +name = "alloy-network" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "510cc00b318db0dfccfdd2d032411cfae64fc144aef9679409e014145d3dacc4" +dependencies = [ + "alloy-consensus 0.8.3", + "alloy-consensus-any", + "alloy-eips 0.8.3", + "alloy-json-rpc", + "alloy-network-primitives 0.8.3", + "alloy-primitives 0.8.15", + "alloy-rpc-types-any", + "alloy-rpc-types-eth 0.8.3", + "alloy-serde 0.8.3", + "alloy-signer", + "alloy-sol-types 0.8.15", + "async-trait", + "auto_impl", + "futures-utils-wasm", + "serde", + "serde_json", + "thiserror 2.0.8", +] + +[[package]] +name = "alloy-network-primitives" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94ad40869867ed2d9cd3842b1e800889e5b49e6b92da346e93862b4a741bedf3" +dependencies = [ + "alloy-eips 0.3.6", + "alloy-primitives 0.8.11", + "alloy-serde 0.3.6", + "serde", +] + +[[package]] +name = "alloy-network-primitives" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9081c099e798b8a2bba2145eb82a9a146f01fc7a35e9ab6e7b43305051f97550" +dependencies = [ + "alloy-consensus 0.8.3", + "alloy-eips 0.8.3", + "alloy-primitives 0.8.15", + "alloy-serde 0.8.3", + "serde", +] + +[[package]] +name = "alloy-node-bindings" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aef9849fb8bbb28f69f2cbdb4b0dac2f0e35c04f6078a00dfb8486469aed02de" +dependencies = [ + "alloy-genesis", + "alloy-primitives 0.8.15", + "k256", + "rand", + "serde_json", + "tempfile", + "thiserror 2.0.8", + "tracing", + "url", +] + +[[package]] +name = "alloy-primitives" +version = "0.8.11" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=96d44f0#96d44f0e18b4bab5b58e0e7f2405514907734a95" +dependencies = [ + "alloy-rlp", + "arbitrary", + "bytes", + "cfg-if", + "const-hex", + "derive_arbitrary", + "derive_more", + "foldhash", + "getrandom", + "hashbrown 0.15.2", + "hex-literal", + "indexmap 2.7.0", + "itoa", + "k256", + "keccak-asm", + "paste", + "proptest", + "proptest-derive", + "rand", + "ruint", + "rustc-hash", + "serde", + "sha3", + "tiny-keccak", +] + +[[package]] +name = "alloy-primitives" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6259a506ab13e1d658796c31e6e39d2e2ee89243bcc505ddc613b35732e0a430" +dependencies = [ + "alloy-rlp", + "bytes", + "cfg-if", + "const-hex", + "derive_more", + "foldhash", + "hashbrown 0.15.2", + "hex-literal", + "indexmap 2.7.0", + "itoa", + "k256", + "keccak-asm", + "paste", + "proptest", + "rand", + "ruint", + "rustc-hash", + "serde", + "sha3", + "tiny-keccak", +] + +[[package]] +name = "alloy-provider" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc2dfaddd9a30aa870a78a4e1316e3e115ec1e12e552cbc881310456b85c1f24" +dependencies = [ + "alloy-chains", + "alloy-consensus 0.8.3", + "alloy-eips 0.8.3", + "alloy-json-rpc", + "alloy-network", + "alloy-network-primitives 0.8.3", + "alloy-primitives 0.8.15", + "alloy-pubsub", + "alloy-rpc-client", + "alloy-rpc-types-debug", + "alloy-rpc-types-eth 0.8.3", + "alloy-rpc-types-trace 0.8.3", + "alloy-rpc-types-txpool", + "alloy-transport", + "alloy-transport-http", + "alloy-transport-ipc", + "alloy-transport-ws", + "async-stream", + "async-trait", + "auto_impl", + "dashmap", + "futures", + "futures-utils-wasm", + "lru", + "parking_lot", + "pin-project 1.1.7", + "reqwest", + "schnellru", + "serde", + "serde_json", + "thiserror 2.0.8", + "tokio", + "tracing", + "url", + "wasmtimer", +] + +[[package]] +name = "alloy-pubsub" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "695809e743628d54510c294ad17a4645bd9f465aeb0d20ee9ce9877c9712dc9c" +dependencies = [ + "alloy-json-rpc", + "alloy-primitives 0.8.15", + "alloy-transport", + "bimap", + "futures", + "serde", + "serde_json", + "tokio", + "tokio-stream", + "tower 0.5.2", + "tracing", +] + +[[package]] +name = "alloy-rlp" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f542548a609dca89fcd72b3b9f355928cf844d4363c5eed9c5273a3dd225e097" +dependencies = [ + "alloy-rlp-derive", + "arrayvec", + "bytes", +] + +[[package]] +name = "alloy-rlp-derive" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a833d97bf8a5f0f878daf2c8451fff7de7f9de38baa5a45d936ec718d81255a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "alloy-rpc-client" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "531137b283547d5b9a5cafc96b006c64ef76810c681d606f28be9781955293b6" +dependencies = [ + "alloy-json-rpc", + "alloy-primitives 0.8.15", + "alloy-pubsub", + "alloy-transport", + "alloy-transport-http", + "alloy-transport-ipc", + "alloy-transport-ws", + "futures", + "pin-project 1.1.7", + "reqwest", + "serde", + "serde_json", + "tokio", + "tokio-stream", + "tower 0.5.2", + "tracing", + "url", + "wasmtimer", +] + +[[package]] +name = "alloy-rpc-types" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64333d639f2a0cf73491813c629a405744e16343a4bc5640931be707c345ecc5" +dependencies = [ + "alloy-rpc-types-engine 0.3.6", + "alloy-rpc-types-eth 0.3.6", + "alloy-rpc-types-trace 0.3.6", + "alloy-serde 0.3.6", + "serde", +] + +[[package]] +name = "alloy-rpc-types" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3410a472ce26c457e9780f708ee6bd540b30f88f1f31fdab7a11d00bd6aa1aee" +dependencies = [ + "alloy-primitives 0.8.15", + "alloy-rpc-types-anvil", + "alloy-rpc-types-engine 0.8.3", + "alloy-rpc-types-eth 0.8.3", + "alloy-rpc-types-trace 0.8.3", + "alloy-rpc-types-txpool", + "alloy-serde 0.8.3", + "serde", +] + +[[package]] +name = "alloy-rpc-types-anvil" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed06bd8a5fc57b352a6cbac24eec52a4760f08ae2c1eb56ac49c8ed4b02c351" +dependencies = [ + "alloy-primitives 0.8.15", + "alloy-rpc-types-eth 0.8.3", + "alloy-serde 0.8.3", + "serde", +] + +[[package]] +name = "alloy-rpc-types-any" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed98e1af55a7d856bfa385f30f63d8d56be2513593655c904a8f4a7ec963aa3e" +dependencies = [ + "alloy-consensus-any", + "alloy-rpc-types-eth 0.8.3", + "alloy-serde 0.8.3", +] + +[[package]] +name = "alloy-rpc-types-debug" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1dec1c1b65614ebd5834a7dfddf525a186962082023718e10f4f64ed2d02514" +dependencies = [ + "alloy-primitives 0.8.15", + "serde", +] + +[[package]] +name = "alloy-rpc-types-engine" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1464c4dd646e1bdfde86ae65ce5ba168dbb29180b478011fe87117ae46b1629b" +dependencies = [ + "alloy-consensus 0.3.6", + "alloy-eips 0.3.6", + "alloy-primitives 0.8.11", + "alloy-rlp", + "alloy-serde 0.3.6", + "derive_more", + "jsonwebtoken", + "rand", + "serde", +] + +[[package]] +name = "alloy-rpc-types-engine" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03bd16fa4959255ebf4a7702df08f325e5631df5cdca07c8a8e58bdc10fe02e3" +dependencies = [ + "alloy-consensus 0.8.3", + "alloy-eips 0.8.3", + "alloy-primitives 0.8.15", + "alloy-rlp", + "alloy-serde 0.8.3", + "derive_more", + "jsonwebtoken", + "rand", + "serde", + "strum 0.26.3", +] + +[[package]] +name = "alloy-rpc-types-eth" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83aa984386deda02482660aa31cb8ca1e63d533f1c31a52d7d181ac5ec68e9b8" +dependencies = [ + "alloy-consensus 0.3.6", + "alloy-eips 0.3.6", + "alloy-network-primitives 0.3.6", + "alloy-primitives 0.8.11", + "alloy-rlp", + "alloy-serde 0.3.6", + "alloy-sol-types 0.8.11", + "cfg-if", + "derive_more", + "hashbrown 0.14.5", + "itertools 0.13.0", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-rpc-types-eth" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8737d7a6e37ca7bba9c23e9495c6534caec6760eb24abc9d5ffbaaba147818e1" +dependencies = [ + "alloy-consensus 0.8.3", + "alloy-consensus-any", + "alloy-eips 0.8.3", + "alloy-network-primitives 0.8.3", + "alloy-primitives 0.8.15", + "alloy-rlp", + "alloy-serde 0.8.3", + "alloy-sol-types 0.8.15", + "derive_more", + "itertools 0.13.0", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-rpc-types-trace" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98db35cd42c90b484377e6bc44d95377a7a38a5ebee996e67754ac0446d542ab" +dependencies = [ + "alloy-primitives 0.8.11", + "alloy-rpc-types-eth 0.3.6", + "alloy-serde 0.3.6", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "alloy-rpc-types-trace" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db14a83665cd28ffd01939f04c2adf0e0fd9bb648b73ca651dcaa0869dae027f" +dependencies = [ + "alloy-primitives 0.8.15", + "alloy-rpc-types-eth 0.8.3", + "alloy-serde 0.8.3", + "serde", + "serde_json", + "thiserror 2.0.8", +] + +[[package]] +name = "alloy-rpc-types-txpool" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a574e97dff62097d22d6cd360f898f3d069239ca0ca7bfc2e5e7b22815ec572" +dependencies = [ + "alloy-primitives 0.8.15", + "alloy-rpc-types-eth 0.8.3", + "alloy-serde 0.8.3", + "serde", +] + +[[package]] +name = "alloy-serde" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "731f75ec5d383107fd745d781619bd9cedf145836c51ecb991623d41278e71fa" +dependencies = [ + "alloy-primitives 0.8.11", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-serde" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5851bf8d5ad33014bd0c45153c603303e730acc8a209450a7ae6b4a12c2789e2" +dependencies = [ + "alloy-primitives 0.8.15", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-signer" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e10ca565da6500cca015ba35ee424d59798f2e1b85bc0dd8f81dafd401f029a" +dependencies = [ + "alloy-dyn-abi 0.8.15", + "alloy-primitives 0.8.15", + "alloy-sol-types 0.8.15", + "async-trait", + "auto_impl", + "elliptic-curve", + "k256", + "thiserror 2.0.8", +] + +[[package]] +name = "alloy-signer-aws" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e774d4203ad7dbeba06876c8528a169b7cb56770bd900bc061e6a2c2756a736" +dependencies = [ + "alloy-consensus 0.8.3", + "alloy-network", + "alloy-primitives 0.8.15", + "alloy-signer", + "async-trait", + "aws-sdk-kms", + "k256", + "spki", + "thiserror 2.0.8", + "tracing", +] + +[[package]] +name = "alloy-signer-gcp" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9843facd50077d2010ac0ef9e9176f8a06f2e2c8e653d83d82859803c623c6fc" +dependencies = [ + "alloy-consensus 0.8.3", + "alloy-network", + "alloy-primitives 0.8.15", + "alloy-signer", + "async-trait", + "gcloud-sdk", + "k256", + "spki", + "thiserror 2.0.8", + "tracing", +] + +[[package]] +name = "alloy-signer-ledger" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08367716d2eee6f15f0f7ee2e855decbfedd12be12fe5f490a2d2717deda95bf" +dependencies = [ + "alloy-consensus 0.8.3", + "alloy-dyn-abi 0.8.15", + "alloy-network", + "alloy-primitives 0.8.15", + "alloy-signer", + "alloy-sol-types 0.8.15", + "async-trait", + "coins-ledger", + "futures-util", + "semver 1.0.24", + "thiserror 2.0.8", + "tracing", +] + +[[package]] +name = "alloy-signer-local" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47fababf5a745133490cde927d48e50267f97d3d1209b9fc9f1d1d666964d172" +dependencies = [ + "alloy-consensus 0.8.3", + "alloy-network", + "alloy-primitives 0.8.15", + "alloy-signer", + "async-trait", + "coins-bip32", + "coins-bip39", + "eth-keystore", + "k256", + "rand", + "thiserror 2.0.8", +] + +[[package]] +name = "alloy-signer-trezor" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfbd920ad5dc03e1904827d30fd2ed874968c33885e254b2c2f59503b33e4bb8" +dependencies = [ + "alloy-consensus 0.8.3", + "alloy-network", + "alloy-primitives 0.8.15", + "alloy-signer", + "async-trait", + "semver 1.0.24", + "thiserror 2.0.8", + "tracing", + "trezor-client", +] + +[[package]] +name = "alloy-sol-macro" +version = "0.8.11" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=96d44f0#96d44f0e18b4bab5b58e0e7f2405514907734a95" +dependencies = [ + "alloy-sol-macro-expander 0.8.11", + "alloy-sol-macro-input 0.8.11", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "alloy-sol-macro" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9d64f851d95619233f74b310f12bcf16e0cbc27ee3762b6115c14a84809280a" +dependencies = [ + "alloy-sol-macro-expander 0.8.15", + "alloy-sol-macro-input 0.8.15", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "alloy-sol-macro-expander" +version = "0.8.11" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=96d44f0#96d44f0e18b4bab5b58e0e7f2405514907734a95" +dependencies = [ + "alloy-json-abi 0.8.11", + "alloy-sol-macro-input 0.8.11", + "const-hex", + "heck 0.5.0", + "indexmap 2.7.0", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.90", + "syn-solidity 0.8.11", + "tiny-keccak", +] + +[[package]] +name = "alloy-sol-macro-expander" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bf7ed1574b699f48bf17caab4e6e54c6d12bc3c006ab33d58b1e227c1c3559f" +dependencies = [ + "alloy-sol-macro-input 0.8.15", + "const-hex", + "heck 0.5.0", + "indexmap 2.7.0", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.90", + "syn-solidity 0.8.15", + "tiny-keccak", +] + +[[package]] +name = "alloy-sol-macro-input" +version = "0.8.11" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=96d44f0#96d44f0e18b4bab5b58e0e7f2405514907734a95" +dependencies = [ + "alloy-json-abi 0.8.11", + "const-hex", + "dunce", + "heck 0.5.0", + "proc-macro2", + "quote", + "serde_json", + "syn 2.0.90", + "syn-solidity 0.8.11", +] + +[[package]] +name = "alloy-sol-macro-input" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c02997ccef5f34f9c099277d4145f183b422938ed5322dc57a089fe9b9ad9ee" +dependencies = [ + "const-hex", + "dunce", + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.90", + "syn-solidity 0.8.15", +] + +[[package]] +name = "alloy-sol-type-parser" +version = "0.8.11" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=96d44f0#96d44f0e18b4bab5b58e0e7f2405514907734a95" +dependencies = [ + "serde", + "winnow", +] + +[[package]] +name = "alloy-sol-type-parser" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce13ff37285b0870d0a0746992a4ae48efaf34b766ae4c2640fa15e5305f8e73" +dependencies = [ + "serde", + "winnow", +] + +[[package]] +name = "alloy-sol-types" +version = "0.8.11" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=96d44f0#96d44f0e18b4bab5b58e0e7f2405514907734a95" +dependencies = [ + "alloy-json-abi 0.8.11", + "alloy-primitives 0.8.11", + "alloy-sol-macro 0.8.11", + "const-hex", + "serde", +] + +[[package]] +name = "alloy-sol-types" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1174cafd6c6d810711b4e00383037bdb458efc4fe3dbafafa16567e0320c54d8" +dependencies = [ + "alloy-json-abi 0.8.15", + "alloy-primitives 0.8.15", + "alloy-sol-macro 0.8.15", + "const-hex", + "serde", +] + +[[package]] +name = "alloy-transport" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "538a04a37221469cac0ce231b737fd174de2fdfcdd843bdd068cb39ed3e066ad" +dependencies = [ + "alloy-json-rpc", + "base64 0.22.1", + "futures-util", + "futures-utils-wasm", + "serde", + "serde_json", + "thiserror 2.0.8", + "tokio", + "tower 0.5.2", + "tracing", + "url", + "wasmtimer", +] + +[[package]] +name = "alloy-transport-http" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ed40eb1e1265b2911512f6aa1dcece9702d078f5a646730c45e39e2be00ac1c" +dependencies = [ + "alloy-json-rpc", + "alloy-transport", + "reqwest", + "serde_json", + "tower 0.5.2", + "tracing", + "url", +] + +[[package]] +name = "alloy-transport-ipc" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a172a59d24706b26a79a837f86d51745cb26ca6f8524712acd0208a14cff95" +dependencies = [ + "alloy-json-rpc", + "alloy-pubsub", + "alloy-transport", + "bytes", + "futures", + "interprocess", + "pin-project 1.1.7", + "serde", + "serde_json", + "tempfile", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "alloy-transport-ws" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fba0e39d181d13c266dbb8ca54ed584a2c66d6e9279afca89c7a6b1825e98abb" +dependencies = [ + "alloy-pubsub", + "alloy-transport", + "futures", + "http 1.2.0", + "rustls 0.23.20", + "serde_json", + "tokio", + "tokio-tungstenite", + "tracing", + "ws_stream_wasm", +] + +[[package]] +name = "alloy-trie" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a5fd8fea044cc9a8c8a50bb6f28e31f0385d820f116c5b98f6f4e55d6e5590b" +dependencies = [ + "alloy-primitives 0.8.15", + "alloy-rlp", + "arrayvec", + "derive_more", + "nybbles", + "serde", + "smallvec", + "tracing", +] + +[[package]] +name = "ammonia" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ab99eae5ee58501ab236beb6f20f6ca39be615267b014899c89b2f0bc18a459" +dependencies = [ + "html5ever", + "maplit", + "once_cell", + "tendril", + "url", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "annotate-snippets" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "710e8eae58854cdc1790fcb56cca04d712a17be849eeb81da2a724bf4bae2bc4" +dependencies = [ + "anstyle", + "unicode-width 0.2.0", +] + +[[package]] +name = "anstream" +version = "0.6.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" + +[[package]] +name = "anstyle-parse" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" +dependencies = [ + "anstyle", + "windows-sys 0.59.0", +] + +[[package]] +name = "anvil" +version = "0.3.0" +dependencies = [ + "alloy-chains", + "alloy-consensus 0.8.3", + "alloy-contract", + "alloy-dyn-abi 0.8.11", + "alloy-eips 0.8.3", + "alloy-genesis", + "alloy-json-abi 0.8.11", + "alloy-json-rpc", + "alloy-network", + "alloy-primitives 0.8.11", + "alloy-provider", + "alloy-pubsub", + "alloy-rlp", + "alloy-rpc-client", + "alloy-rpc-types 0.8.3", + "alloy-serde 0.8.3", + "alloy-signer", + "alloy-signer-local", + "alloy-sol-types 0.8.11", + "alloy-transport", + "alloy-transport-ipc", + "alloy-transport-ws", + "alloy-trie", + "anvil-core", + "anvil-rpc", + "anvil-server", + "async-trait", + "axum", + "bytes", + "chrono", + "clap", + "clap_complete", + "clap_complete_fig", + "ctrlc", + "eyre", + "fdlimit", + "flate2", + "foundry-cli", + "foundry-common", + "foundry-config", + "foundry-evm", + "foundry-test-utils", + "futures", + "hyper 1.5.2", + "itertools 0.13.0", + "k256", + "op-alloy-consensus", + "op-alloy-rpc-types", + "parking_lot", + "rand", + "revm 18.0.0", + "serde", + "serde_json", + "serde_repr", + "similar-asserts", + "tempfile", + "thiserror 2.0.8", + "tikv-jemallocator", + "tokio", + "tower 0.4.13", + "tracing", + "tracing-subscriber", + "vergen", + "yansi", +] + +[[package]] +name = "anvil-core" +version = "0.3.0" +dependencies = [ + "alloy-consensus 0.8.3", + "alloy-dyn-abi 0.8.11", + "alloy-eips 0.8.3", + "alloy-network", + "alloy-primitives 0.8.11", + "alloy-rlp", + "alloy-rpc-types 0.8.3", + "alloy-serde 0.8.3", + "alloy-trie", + "bytes", + "foundry-common", + "foundry-evm", + "op-alloy-consensus", + "rand", + "revm 18.0.0", + "serde", + "serde_json", + "thiserror 2.0.8", +] + +[[package]] +name = "anvil-rpc" +version = "0.3.0" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "anvil-server" +version = "0.3.0" +dependencies = [ + "anvil-rpc", + "async-trait", + "axum", + "bytes", + "clap", + "futures", + "interprocess", + "parking_lot", + "pin-project 1.1.7", + "serde", + "serde_json", + "thiserror 2.0.8", + "tokio-util", + "tower-http", + "tracing", +] + +[[package]] +name = "anyhow" +version = "1.0.94" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1fd03a028ef38ba2276dce7e33fcd6369c158a1bca17946c4b1b701891c1ff7" + +[[package]] +name = "arbitrary" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" +dependencies = [ + "derive_arbitrary", +] + +[[package]] +name = "ariadne" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31beedec3ce83ae6da3a79592b3d8d7afd146a5b15bb9bb940279aced60faa89" +dependencies = [ + "unicode-width 0.1.14", + "yansi", +] + +[[package]] +name = "ark-ff" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" +dependencies = [ + "ark-ff-asm 0.3.0", + "ark-ff-macros 0.3.0", + "ark-serialize 0.3.0", + "ark-std 0.3.0", + "derivative", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.3.3", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "digest 0.10.7", + "itertools 0.10.5", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.4.1", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" +dependencies = [ + "num-bigint", + "num-traits", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-serialize" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" +dependencies = [ + "ark-std 0.3.0", + "digest 0.9.0", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-std 0.4.0", + "digest 0.10.7", + "num-bigint", +] + +[[package]] +name = "ark-std" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" +dependencies = [ + "num-traits", + "rand", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand", +] + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +dependencies = [ + "serde", +] + +[[package]] +name = "ascii-canvas" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6" +dependencies = [ + "term", +] + +[[package]] +name = "async-compression" +version = "0.4.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df895a515f70646414f4b45c0b79082783b80552b373a68283012928df56f522" +dependencies = [ + "flate2", + "futures-core", + "memchr", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "async-priority-channel" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acde96f444d31031f760c5c43dc786b97d3e1cb2ee49dd06898383fe9a999758" +dependencies = [ + "event-listener", +] + +[[package]] +name = "async-recursion" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "async-stream" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "async-trait" +version = "0.1.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "async_io_stream" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c" +dependencies = [ + "futures", + "pharos", + "rustc_version 0.4.1", +] + +[[package]] +name = "atomic" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d818003e740b63afc82337e3160717f4f63078720a810b7b903e70a5d1d2994" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "atomic-take" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8ab6b55fe97976e46f91ddbed8d147d966475dc29b2032757ba47e02376fbc3" + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "aurora-engine-modexp" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0aef7712851e524f35fbbb74fa6599c5cd8692056a1c36f9ca0d2001b670e7e5" +dependencies = [ + "hex", + "num", +] + +[[package]] +name = "auto_impl" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "aws-config" +version = "1.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5d1c2c88936a73c699225d0bc00684a534166b0cebc2659c3cdf08de8edc64c" +dependencies = [ + "aws-credential-types", + "aws-runtime", + "aws-sdk-sso", + "aws-sdk-ssooidc", + "aws-sdk-sts", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-types", + "bytes", + "fastrand", + "hex", + "http 0.2.12", + "ring", + "time", + "tokio", + "tracing", + "url", + "zeroize", +] + +[[package]] +name = "aws-credential-types" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60e8f6b615cb5fc60a98132268508ad104310f0cfb25a1c22eee76efdf9154da" +dependencies = [ + "aws-smithy-async", + "aws-smithy-runtime-api", + "aws-smithy-types", + "zeroize", +] + +[[package]] +name = "aws-runtime" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "300a12520b4e6d08b73f77680f12c16e8ae43250d55100e0b2be46d78da16a48" +dependencies = [ + "aws-credential-types", + "aws-sigv4", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-types", + "bytes", + "fastrand", + "http 0.2.12", + "http-body 0.4.6", + "once_cell", + "percent-encoding", + "pin-project-lite", + "tracing", + "uuid 1.11.0", +] + +[[package]] +name = "aws-sdk-kms" +version = "1.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ff4c717bf02350576b1542d7534edda68b95299b72700424978afd125b0b507" +dependencies = [ + "aws-credential-types", + "aws-runtime", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-types", + "bytes", + "http 0.2.12", + "once_cell", + "regex-lite", + "tracing", +] + +[[package]] +name = "aws-sdk-sso" +version = "1.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74995133da38f109a0eb8e8c886f9e80c713b6e9f2e6e5a6a1ba4450ce2ffc46" +dependencies = [ + "aws-credential-types", + "aws-runtime", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-types", + "bytes", + "http 0.2.12", + "once_cell", + "regex-lite", + "tracing", +] + +[[package]] +name = "aws-sdk-ssooidc" +version = "1.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7062a779685cbf3b2401eb36151e2c6589fd5f3569b8a6bc2d199e5aaa1d059" +dependencies = [ + "aws-credential-types", + "aws-runtime", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-types", + "bytes", + "http 0.2.12", + "once_cell", + "regex-lite", + "tracing", +] + +[[package]] +name = "aws-sdk-sts" +version = "1.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "299dae7b1dc0ee50434453fa5a229dc4b22bd3ee50409ff16becf1f7346e0193" +dependencies = [ + "aws-credential-types", + "aws-runtime", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-query", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-smithy-xml", + "aws-types", + "http 0.2.12", + "once_cell", + "regex-lite", + "tracing", +] + +[[package]] +name = "aws-sigv4" +version = "1.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d3820e0c08d0737872ff3c7c1f21ebbb6693d832312d6152bf18ef50a5471c2" +dependencies = [ + "aws-credential-types", + "aws-smithy-http", + "aws-smithy-runtime-api", + "aws-smithy-types", + "bytes", + "form_urlencoded", + "hex", + "hmac", + "http 0.2.12", + "http 1.2.0", + "once_cell", + "percent-encoding", + "sha2", + "time", + "tracing", +] + +[[package]] +name = "aws-smithy-async" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8aa8ff1492fd9fb99ae28e8467af0dbbb7c31512b16fabf1a0f10d7bb6ef78bb" +dependencies = [ + "futures-util", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "aws-smithy-http" +version = "0.60.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c8bc3e8fdc6b8d07d976e301c02fe553f72a39b7a9fea820e023268467d7ab6" +dependencies = [ + "aws-smithy-runtime-api", + "aws-smithy-types", + "bytes", + "bytes-utils", + "futures-core", + "http 0.2.12", + "http-body 0.4.6", + "once_cell", + "percent-encoding", + "pin-project-lite", + "pin-utils", + "tracing", +] + +[[package]] +name = "aws-smithy-json" +version = "0.61.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee4e69cc50921eb913c6b662f8d909131bb3e6ad6cb6090d3a39b66fc5c52095" +dependencies = [ + "aws-smithy-types", +] + +[[package]] +name = "aws-smithy-query" +version = "0.60.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2fbd61ceb3fe8a1cb7352e42689cec5335833cd9f94103a61e98f9bb61c64bb" +dependencies = [ + "aws-smithy-types", + "urlencoding", +] + +[[package]] +name = "aws-smithy-runtime" +version = "1.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "431a10d0e07e09091284ef04453dae4069283aa108d209974d67e77ae1caa658" +dependencies = [ + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-runtime-api", + "aws-smithy-types", + "bytes", + "fastrand", + "h2 0.3.26", + "http 0.2.12", + "http-body 0.4.6", + "http-body 1.0.1", + "httparse", + "hyper 0.14.32", + "hyper-rustls 0.24.2", + "once_cell", + "pin-project-lite", + "pin-utils", + "rustls 0.21.12", + "tokio", + "tracing", +] + +[[package]] +name = "aws-smithy-runtime-api" +version = "1.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92165296a47a812b267b4f41032ff8069ab7ff783696d217f0994a0d7ab585cd" +dependencies = [ + "aws-smithy-async", + "aws-smithy-types", + "bytes", + "http 0.2.12", + "http 1.2.0", + "pin-project-lite", + "tokio", + "tracing", + "zeroize", +] + +[[package]] +name = "aws-smithy-types" +version = "1.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecbf4d5dfb169812e2b240a4350f15ad3c6b03a54074e5712818801615f2dc5" +dependencies = [ + "base64-simd", + "bytes", + "bytes-utils", + "http 0.2.12", + "http 1.2.0", + "http-body 0.4.6", + "http-body 1.0.1", + "http-body-util", + "itoa", + "num-integer", + "pin-project-lite", + "pin-utils", + "ryu", + "serde", + "time", +] + +[[package]] +name = "aws-smithy-xml" +version = "0.60.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab0b0166827aa700d3dc519f72f8b3a91c35d0b8d042dc5d643a91e6f80648fc" +dependencies = [ + "xmlparser", +] + +[[package]] +name = "aws-types" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5221b91b3e441e6675310829fd8984801b772cb1546ef6c0e54dec9f1ac13fef" +dependencies = [ + "aws-credential-types", + "aws-smithy-async", + "aws-smithy-runtime-api", + "aws-smithy-types", + "rustc_version 0.4.1", + "tracing", +] + +[[package]] +name = "axum" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" +dependencies = [ + "async-trait", + "axum-core", + "base64 0.22.1", + "bytes", + "futures-util", + "http 1.2.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.5.2", + "hyper-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sha1", + "sync_wrapper", + "tokio", + "tokio-tungstenite", + "tower 0.5.2", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-core" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http 1.2.0", + "http-body 1.0.1", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "backtrace" +version = "0.3.71" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide 0.7.4", + "object", + "rustc-demangle", +] + +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64-simd" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "339abbe78e73178762e23bea9dfd08e697eb3f3301cd4be981c0f78ba5859195" +dependencies = [ + "outref", + "vsimd", +] + +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + +[[package]] +name = "bech32" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" + +[[package]] +name = "bimap" +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 = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +dependencies = [ + "arbitrary", + "serde", +] + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "serde", + "tap", + "wyz", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "blst" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4378725facc195f1a538864863f6de233b500a8862747e7f165078a419d5e874" +dependencies = [ + "cc", + "glob", + "threadpool", + "zeroize", +] + +[[package]] +name = "bon" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f265cdb2e8501f1c952749e78babe8f1937be92c98120e5f78fc72d634682bad" +dependencies = [ + "bon-macros", + "rustversion", +] + +[[package]] +name = "bon-macros" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38aa5c627cd7706490e5b003d685f8b9d69bc343b1a00b9fdd01e75fdf6827cf" +dependencies = [ + "darling", + "ident_case", + "prettyplease", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.90", +] + +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "sha2", + "tinyvec", +] + +[[package]] +name = "bstr" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "786a307d683a5bf92e6fd5fd69a7eb613751668d1d8d67d802846dfe367c62c8" +dependencies = [ + "memchr", + "regex-automata 0.4.9", + "serde", +] + +[[package]] +name = "build_const" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ae4235e6dac0694637c763029ecea1a2ec9e4e06ec2729bd21ba4d9c863eb7" + +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "byte-slice-cast" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" + +[[package]] +name = "bytemuck" +version = "1.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b37c88a63ffd85d15b406896cc343916d7cf57838a847b3a6f2ca5d39a5695a" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" +dependencies = [ + "serde", +] + +[[package]] +name = "bytes-utils" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dafe3a8757b027e2be6e4e5601ed563c55989fcf1546e933c66c8eb3a058d35" +dependencies = [ + "bytes", + "either", +] + +[[package]] +name = "bzip2" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" +dependencies = [ + "bzip2-sys", + "libc", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.11+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + +[[package]] +name = "c-kzg" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0307f72feab3300336fb803a57134159f6e20139af1357f36c54cb90d8e8928" +dependencies = [ + "blst", + "cc", + "glob", + "hex", + "libc", + "once_cell", + "serde", +] + +[[package]] +name = "camino" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +dependencies = [ + "camino", + "cargo-platform", + "semver 1.0.24", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "cassowary" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53" + +[[package]] +name = "cast" +version = "0.3.0" +dependencies = [ + "alloy-chains", + "alloy-consensus 0.8.3", + "alloy-contract", + "alloy-dyn-abi 0.8.11", + "alloy-json-abi 0.8.11", + "alloy-json-rpc", + "alloy-network", + "alloy-node-bindings", + "alloy-primitives 0.8.11", + "alloy-provider", + "alloy-rlp", + "alloy-rpc-types 0.8.3", + "alloy-serde 0.8.3", + "alloy-signer", + "alloy-signer-local", + "alloy-sol-types 0.8.11", + "alloy-transport", + "anvil", + "async-trait", + "aws-sdk-kms", + "chrono", + "clap", + "clap_complete", + "clap_complete_fig", + "comfy-table", + "divan", + "dunce", + "evmole", + "eyre", + "foundry-block-explorers", + "foundry-cli", + "foundry-common", + "foundry-compilers", + "foundry-config", + "foundry-evm", + "foundry-test-utils", + "foundry-wallets", + "futures", + "indicatif", + "itertools 0.13.0", + "rand", + "rayon", + "regex", + "rpassword", + "semver 1.0.24", + "serde", + "serde_json", + "tempfile", + "tikv-jemallocator", + "tokio", + "tracing", + "vergen", + "yansi", +] + +[[package]] +name = "castaway" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0abae9be0aaf9ea96a3b1b8b1b55c602ca751eba1b1500220cea4ecbafe7c0d5" +dependencies = [ + "rustversion", +] + +[[package]] +name = "cc" +version = "1.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31a0499c1dc64f458ad13872de75c0eb7e3fdb0e67964610c914b034fc5956e" +dependencies = [ + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cfg_aliases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "chisel" +version = "0.3.0" +dependencies = [ + "alloy-dyn-abi 0.8.11", + "alloy-json-abi 0.8.11", + "alloy-primitives 0.8.11", + "alloy-rpc-types 0.8.3", + "clap", + "dirs 5.0.1", + "eyre", + "forge-fmt", + "foundry-block-explorers", + "foundry-cli", + "foundry-common", + "foundry-compilers", + "foundry-config", + "foundry-evm", + "regex", + "reqwest", + "revm 18.0.0", + "rustyline", + "semver 1.0.24", + "serde", + "serde_json", + "serial_test", + "solang-parser", + "solar-parse", + "strum 0.26.3", + "tikv-jemallocator", + "time", + "tokio", + "tracing", + "tracing-subscriber", + "vergen", + "yansi", +] + +[[package]] +name = "chrono" +version = "0.4.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "num-traits", + "serde", + "windows-targets 0.52.6", +] + +[[package]] +name = "ciborium" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" +dependencies = [ + "ciborium-io", + "ciborium-ll", + "serde", +] + +[[package]] +name = "ciborium-io" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" + +[[package]] +name = "ciborium-ll" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" +dependencies = [ + "ciborium-io", + "half", +] + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + +[[package]] +name = "clap" +version = "4.5.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3135e7ec2ef7b10c6ed8950f0f792ed96ee093fa088608f1c76e569722700c84" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.5.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30582fc632330df2bd26877bde0c1f4470d57c582bbc070376afcd04d8cb4838" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", + "terminal_size", + "unicase", + "unicode-width 0.2.0", +] + +[[package]] +name = "clap_complete" +version = "4.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac2e663e3e3bed2d32d065a8404024dad306e699a04263ec59919529f803aee9" +dependencies = [ + "clap", +] + +[[package]] +name = "clap_complete_fig" +version = "4.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d494102c8ff3951810c72baf96910b980fb065ca5d3101243e6a8dc19747c86b" +dependencies = [ + "clap", + "clap_complete", +] + +[[package]] +name = "clap_derive" +version = "4.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "clap_lex" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" + +[[package]] +name = "clearscreen" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f8c93eb5f77c9050c7750e14f13ef1033a40a0aac70c6371535b6763a01438c" +dependencies = [ + "nix 0.28.0", + "terminfo", + "thiserror 1.0.69", + "which", + "winapi", +] + +[[package]] +name = "cliclack" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a80570d35684e725e9d2d4aaaf32bc0cbfcfb8539898f9afea3da0d2e5189e4" +dependencies = [ + "console", + "indicatif", + "once_cell", + "strsim", + "textwrap", + "zeroize", +] + +[[package]] +name = "clipboard-win" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15efe7a882b08f34e38556b14f2fb3daa98769d06c7f0c1b076dfd0d983bc892" +dependencies = [ + "error-code", +] + +[[package]] +name = "coins-bip32" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2073678591747aed4000dd468b97b14d7007f7936851d3f2f01846899f5ebf08" +dependencies = [ + "bs58", + "coins-core", + "digest 0.10.7", + "hmac", + "k256", + "serde", + "sha2", + "thiserror 1.0.69", +] + +[[package]] +name = "coins-bip39" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74b169b26623ff17e9db37a539fe4f15342080df39f129ef7631df7683d6d9d4" +dependencies = [ + "bitvec", + "coins-bip32", + "hmac", + "once_cell", + "pbkdf2 0.12.2", + "rand", + "sha2", + "thiserror 1.0.69", +] + +[[package]] +name = "coins-core" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b962ad8545e43a28e14e87377812ba9ae748dd4fd963f4c10e9fcc6d13475b" +dependencies = [ + "base64 0.21.7", + "bech32", + "bs58", + "const-hex", + "digest 0.10.7", + "generic-array", + "ripemd", + "serde", + "sha2", + "sha3", + "thiserror 1.0.69", +] + +[[package]] +name = "coins-ledger" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab9bc0994d0aa0f4ade5f3a9baf4a8d936f250278c85a1124b401860454246ab" +dependencies = [ + "async-trait", + "byteorder", + "cfg-if", + "const-hex", + "getrandom", + "hidapi-rusb", + "js-sys", + "log", + "nix 0.26.4", + "once_cell", + "thiserror 1.0.69", + "tokio", + "tracing", + "wasm-bindgen", + "wasm-bindgen-futures", +] + +[[package]] +name = "color-eyre" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55146f5e46f237f7423d74111267d4597b59b0dad0ffaf7303bce9945d843ad5" +dependencies = [ + "backtrace", + "color-spantrace", + "eyre", + "indenter", + "once_cell", + "owo-colors", + "tracing-error", +] + +[[package]] +name = "color-spantrace" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd6be1b2a7e382e2b98b43b2adcca6bb0e465af0bdd38123873ae61eb17a72c2" +dependencies = [ + "once_cell", + "owo-colors", + "tracing-core", + "tracing-error", +] + +[[package]] +name = "colorchoice" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" + +[[package]] +name = "comfy-table" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24f165e7b643266ea80cb858aed492ad9280e3e05ce24d4a99d7d7b889b6a4d9" +dependencies = [ + "crossterm", + "strum 0.26.3", + "strum_macros 0.26.4", + "unicode-width 0.2.0", +] + +[[package]] +name = "compact_str" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6050c3a16ddab2e412160b31f2c871015704239bca62f72f6e5f0be631d3f644" +dependencies = [ + "castaway", + "cfg-if", + "itoa", + "rustversion", + "ryu", + "static_assertions", +] + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "condtype" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf0a07a401f374238ab8e2f11a104d2851bf9ce711ec69804834de8af45c7af" + +[[package]] +name = "console" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea3c6ecd8059b57859df5c69830340ed3c41d30e3da0c1cbed90a96ac853041b" +dependencies = [ + "encode_unicode", + "libc", + "once_cell", + "unicode-width 0.2.0", + "windows-sys 0.59.0", +] + +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if", + "wasm-bindgen", +] + +[[package]] +name = "const-hex" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b0485bab839b018a8f1723fc5391819fea5f8f0f32288ef8a735fd096b6160c" +dependencies = [ + "cfg-if", + "cpufeatures", + "hex", + "proptest", + "serde", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "convert_case" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crossterm" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" +dependencies = [ + "bitflags 2.6.0", + "crossterm_winapi", + "mio 1.0.3", + "parking_lot", + "rustix", + "signal-hook", + "signal-hook-mio", + "winapi", +] + +[[package]] +name = "crossterm_winapi" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b" +dependencies = [ + "winapi", +] + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "rand_core", + "typenum", +] + +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher", +] + +[[package]] +name = "ctrlc" +version = "3.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90eeab0aa92f3f9b4e87f258c72b139c207d251f9cbc1080a0086b86a8870dd3" +dependencies = [ + "nix 0.29.0", + "windows-sys 0.59.0", +] + +[[package]] +name = "curve25519-dalek" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "digest 0.10.7", + "fiat-crypto", + "rustc_version 0.4.1", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "darling" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.90", +] + +[[package]] +name = "darling_macro" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "dashmap" +version = "6.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" +dependencies = [ + "cfg-if", + "crossbeam-utils", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core", +] + +[[package]] +name = "data-encoding" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" + +[[package]] +name = "dbus" +version = "0.9.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bb21987b9fb1613058ba3843121dd18b163b254d8a6e797e144cbac14d96d1b" +dependencies = [ + "libc", + "libdbus-sys", + "winapi", +] + +[[package]] +name = "der" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +dependencies = [ + "const-oid", + "pem-rfc7468", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_arbitrary" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "derive_builder" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" +dependencies = [ + "derive_builder_macro", +] + +[[package]] +name = "derive_builder_core" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "derive_builder_macro" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" +dependencies = [ + "derive_builder_core", + "syn 2.0.90", +] + +[[package]] +name = "derive_more" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "syn 2.0.90", + "unicode-xid", +] + +[[package]] +name = "dialoguer" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "658bce805d770f407bc62102fca7c2c64ceef2fbcb2b8bd19d2765ce093980de" +dependencies = [ + "console", + "shell-words", + "tempfile", + "thiserror 1.0.69", + "zeroize", +] + +[[package]] +name = "diff" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "dirs" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" +dependencies = [ + "dirs-sys 0.3.7", +] + +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys 0.4.1", +] + +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + +[[package]] +name = "dirs-sys" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "divan" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0583193020b29b03682d8d33bb53a5b0f50df6daacece12ca99b904cfdcb8c4" +dependencies = [ + "cfg-if", + "clap", + "condtype", + "divan-macros", + "libc", + "regex-lite", +] + +[[package]] +name = "divan-macros" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8dc51d98e636f5e3b0759a39257458b22619cac7e96d932da6eeb052891bb67c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "doctest-file" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aac81fa3e28d21450aa4d2ac065992ba96a1d7303efbce51a95f4fd175b67562" + +[[package]] +name = "dotenvy" +version = "0.15.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" + +[[package]] +name = "downcast" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "dyn-clone" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest 0.10.7", + "elliptic-curve", + "rfc6979", + "signature", + "spki", +] + +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + +[[package]] +name = "elasticlunr-rs" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41e83863a500656dfa214fee6682de9c5b9f03de6860fec531235ed2ae9f6571" +dependencies = [ + "regex", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest 0.10.7", + "ff", + "generic-array", + "group", + "pem-rfc7468", + "pkcs8", + "rand_core", + "sec1", + "subtle", + "zeroize", +] + +[[package]] +name = "email-address-parser" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe19a4967eca30062be4abaf813d929ba48b3bfb21830367f7e1baae37f213a" +dependencies = [ + "console_error_panic_hook", + "pest", + "pest_derive", + "quick-xml 0.18.1", + "wasm-bindgen", +] + +[[package]] +name = "ena" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d248bdd43ce613d87415282f69b9bb99d947d290b10962dd6c56233312c2ad5" +dependencies = [ + "log", +] + +[[package]] +name = "encode_unicode" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" + +[[package]] +name = "endian-type" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" + +[[package]] +name = "enumn" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "env_filter" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" +dependencies = [ + "log", + "regex", +] + +[[package]] +name = "env_logger" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d" +dependencies = [ + "anstream", + "anstyle", + "env_filter", + "humantime", + "log", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "error-code" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5d9305ccc6942a704f4335694ecd3de2ea531b114ac2d51f5f843750787a92f" + +[[package]] +name = "eth-keystore" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab" +dependencies = [ + "aes", + "ctr", + "digest 0.10.7", + "hex", + "hmac", + "pbkdf2 0.11.0", + "rand", + "scrypt", + "serde", + "serde_json", + "sha2", + "sha3", + "thiserror 1.0.69", + "uuid 0.8.2", +] + +[[package]] +name = "ethabi" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" +dependencies = [ + "ethereum-types", + "hex", + "once_cell", + "regex", + "serde", + "serde_json", + "sha3", + "thiserror 1.0.69", + "uint", +] + +[[package]] +name = "ethbloom" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" +dependencies = [ + "crunchy", + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "scale-info", + "tiny-keccak", +] + +[[package]] +name = "ethereum-types" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" +dependencies = [ + "ethbloom", + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "primitive-types", + "scale-info", + "uint", +] + +[[package]] +name = "ethers-contract-abigen" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04ba01fbc2331a38c429eb95d4a570166781f14290ef9fdb144278a90b5a739b" +dependencies = [ + "Inflector", + "const-hex", + "dunce", + "ethers-core", + "eyre", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "serde", + "serde_json", + "syn 2.0.90", + "toml 0.8.19", + "walkdir", +] + +[[package]] +name = "ethers-core" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82d80cc6ad30b14a48ab786523af33b37f28a8623fc06afd55324816ef18fb1f" +dependencies = [ + "arrayvec", + "bytes", + "cargo_metadata", + "chrono", + "const-hex", + "elliptic-curve", + "ethabi", + "generic-array", + "k256", + "num_enum", + "once_cell", + "open-fastrlp", + "rand", + "rlp", + "serde", + "serde_json", + "strum 0.26.3", + "syn 2.0.90", + "tempfile", + "thiserror 1.0.69", + "tiny-keccak", + "unicode-xid", +] + +[[package]] +name = "event-listener" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "evm-disassembler" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded685d9f07315ff689ba56e7d84e6f1e782db19b531a46c34061a733bba7258" +dependencies = [ + "eyre", + "hex", +] + +[[package]] +name = "evmole" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c19906a94bb5656904a6c9c0f36d492cb1da96f284d59bb56f555bd472d96e51" +dependencies = [ + "alloy-dyn-abi 0.8.11", + "alloy-primitives 0.8.11", +] + +[[package]] +name = "eyre" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" +dependencies = [ + "indenter", + "once_cell", +] + +[[package]] +name = "faster-hex" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2a2b11eda1d40935b26cf18f6833c526845ae8c41e58d09af6adeb6f0269183" + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fastrlp" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + +[[package]] +name = "fastrlp" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce8dba4714ef14b8274c371879b175aa55b16b30f269663f19d576f380018dc4" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + +[[package]] +name = "fd-lock" +version = "4.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e5768da2206272c81ef0b5e951a41862938a6070da63bcea197899942d3b947" +dependencies = [ + "cfg-if", + "rustix", + "windows-sys 0.52.0", +] + +[[package]] +name = "fdlimit" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e182f7dbc2ef73d9ef67351c5fbbea084729c48362d3ce9dd44c28e32e277fe5" +dependencies = [ + "libc", + "thiserror 1.0.69", +] + +[[package]] +name = "ff" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +dependencies = [ + "rand_core", + "subtle", +] + +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + +[[package]] +name = "figment" +version = "0.10.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cb01cd46b0cf372153850f4c6c272d9cbea2da513e07538405148f95bd789f3" +dependencies = [ + "atomic", + "parking_lot", + "pear", + "serde", + "tempfile", + "toml 0.8.19", + "uncased", + "version_check", +] + +[[package]] +name = "filetime" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" +dependencies = [ + "cfg-if", + "libc", + "libredox", + "windows-sys 0.59.0", +] + +[[package]] +name = "fixed-hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "byteorder", + "rand", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "flate2" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" +dependencies = [ + "crc32fast", + "miniz_oxide 0.8.2", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0d2fde1f7b3d48b8395d5f2de76c18a528bd6a9cdde438df747bfcba3e05d6f" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "forge" +version = "0.3.0" +dependencies = [ + "alloy-chains", + "alloy-consensus 0.8.3", + "alloy-dyn-abi 0.8.11", + "alloy-json-abi 0.8.11", + "alloy-network", + "alloy-primitives 0.8.11", + "alloy-provider", + "alloy-rpc-types 0.8.3", + "alloy-serde 0.8.3", + "alloy-signer", + "alloy-signer-local", + "alloy-sol-macro-expander 0.8.11", + "alloy-sol-macro-input 0.8.11", + "alloy-transport", + "anvil", + "async-trait", + "axum", + "chrono", + "clap", + "clap_complete", + "clap_complete_fig", + "clearscreen", + "comfy-table", + "dialoguer", + "dunce", + "ethers-contract-abigen", + "evm-disassembler", + "eyre", + "forge-doc", + "forge-fmt", + "forge-script", + "forge-script-sequence", + "forge-sol-macro-gen", + "forge-verify", + "foundry-block-explorers", + "foundry-cli", + "foundry-common", + "foundry-compilers", + "foundry-config", + "foundry-debugger", + "foundry-evm", + "foundry-linking", + "foundry-test-utils", + "foundry-wallets", + "futures", + "globset", + "humantime-serde", + "hyper 1.5.2", + "indicatif", + "inferno", + "itertools 0.13.0", + "mockall", + "opener", + "parking_lot", + "paste", + "path-slash", + "proptest", + "quick-junit", + "rayon", + "regex", + "reqwest", + "revm-inspectors", + "semver 1.0.24", + "serde", + "serde_json", + "similar", + "similar-asserts", + "solang-parser", + "solar-ast", + "solar-parse", + "soldeer-commands", + "strum 0.26.3", + "svm-rs", + "tempfile", + "thiserror 2.0.8", + "tikv-jemallocator", + "tokio", + "toml 0.8.19", + "toml_edit", + "tower-http", + "tracing", + "tracing-subscriber", + "vergen", + "watchexec", + "watchexec-events", + "watchexec-signals", + "yansi", +] + +[[package]] +name = "forge-doc" +version = "0.3.0" +dependencies = [ + "alloy-primitives 0.8.11", + "derive_more", + "eyre", + "forge-fmt", + "foundry-common", + "foundry-compilers", + "foundry-config", + "itertools 0.13.0", + "mdbook", + "rayon", + "regex", + "serde", + "serde_json", + "solang-parser", + "thiserror 2.0.8", + "toml 0.8.19", + "tracing", +] + +[[package]] +name = "forge-fmt" +version = "0.3.0" +dependencies = [ + "alloy-primitives 0.8.11", + "ariadne", + "foundry-config", + "itertools 0.13.0", + "similar-asserts", + "solang-parser", + "thiserror 2.0.8", + "toml 0.8.19", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "forge-script" +version = "0.3.0" +dependencies = [ + "alloy-chains", + "alloy-consensus 0.8.3", + "alloy-dyn-abi 0.8.11", + "alloy-eips 0.8.3", + "alloy-json-abi 0.8.11", + "alloy-network", + "alloy-primitives 0.8.11", + "alloy-provider", + "alloy-rpc-types 0.8.3", + "alloy-serde 0.8.3", + "alloy-signer", + "alloy-transport", + "clap", + "dialoguer", + "dunce", + "eyre", + "forge-script-sequence", + "forge-verify", + "foundry-cheatcodes", + "foundry-cli", + "foundry-common", + "foundry-compilers", + "foundry-config", + "foundry-debugger", + "foundry-evm", + "foundry-linking", + "foundry-wallets", + "futures", + "indicatif", + "itertools 0.13.0", + "parking_lot", + "revm-inspectors", + "semver 1.0.24", + "serde", + "serde_json", + "tempfile", + "tokio", + "tracing", + "yansi", +] + +[[package]] +name = "forge-script-sequence" +version = "0.3.0" +dependencies = [ + "alloy-network", + "alloy-primitives 0.8.11", + "alloy-rpc-types 0.8.3", + "eyre", + "foundry-common", + "foundry-compilers", + "foundry-config", + "revm-inspectors", + "serde", + "serde_json", + "tracing", + "walkdir", +] + +[[package]] +name = "forge-sol-macro-gen" +version = "0.3.0" +dependencies = [ + "alloy-json-abi 0.8.11", + "alloy-sol-macro-expander 0.8.11", + "alloy-sol-macro-input 0.8.11", + "eyre", + "foundry-common", + "prettyplease", + "proc-macro2", + "quote", + "serde_json", + "syn 2.0.90", +] + +[[package]] +name = "forge-verify" +version = "0.3.0" +dependencies = [ + "alloy-dyn-abi 0.8.11", + "alloy-json-abi 0.8.11", + "alloy-primitives 0.8.11", + "alloy-provider", + "alloy-rpc-types 0.8.3", + "async-trait", + "ciborium", + "clap", + "eyre", + "foundry-block-explorers", + "foundry-cli", + "foundry-common", + "foundry-compilers", + "foundry-config", + "foundry-evm", + "foundry-test-utils", + "futures", + "itertools 0.13.0", + "regex", + "reqwest", + "revm-primitives 14.0.0", + "semver 1.0.24", + "serde", + "serde_json", + "tempfile", + "tokio", + "tracing", + "yansi", +] + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "foundry-block-explorers" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0faa449506113b4969029da2ac1df3a1b3201bf10c99a4a8e6d684977b80c938" +dependencies = [ + "alloy-chains", + "alloy-json-abi 0.8.11", + "alloy-primitives 0.8.11", + "foundry-compilers", + "reqwest", + "semver 1.0.24", + "serde", + "serde_json", + "thiserror 1.0.69", + "tracing", +] + +[[package]] +name = "foundry-cheatcodes" +version = "0.3.0" +dependencies = [ + "alloy-consensus 0.8.3", + "alloy-dyn-abi 0.8.11", + "alloy-genesis", + "alloy-json-abi 0.8.11", + "alloy-network", + "alloy-primitives 0.8.11", + "alloy-provider", + "alloy-rlp", + "alloy-rpc-types 0.8.3", + "alloy-signer", + "alloy-signer-local", + "alloy-sol-types 0.8.11", + "base64 0.22.1", + "chrono", + "dialoguer", + "ecdsa", + "eyre", + "forge-script-sequence", + "foundry-cheatcodes-spec", + "foundry-common", + "foundry-compilers", + "foundry-config", + "foundry-evm-core", + "foundry-evm-traces", + "foundry-wallets", + "itertools 0.13.0", + "jsonpath_lib", + "k256", + "memchr", + "p256", + "parking_lot", + "proptest", + "rand", + "revm 18.0.0", + "revm-inspectors", + "semver 1.0.24", + "serde", + "serde_json", + "thiserror 2.0.8", + "toml 0.8.19", + "tracing", + "vergen", + "walkdir", +] + +[[package]] +name = "foundry-cheatcodes-spec" +version = "0.3.0" +dependencies = [ + "alloy-sol-types 0.8.11", + "foundry-macros", + "schemars", + "serde", + "serde_json", +] + +[[package]] +name = "foundry-cli" +version = "0.3.0" +dependencies = [ + "alloy-chains", + "alloy-dyn-abi 0.8.11", + "alloy-eips 0.8.3", + "alloy-json-abi 0.8.11", + "alloy-primitives 0.8.11", + "alloy-provider", + "alloy-rlp", + "alloy-transport", + "clap", + "color-eyre", + "dotenvy", + "eyre", + "forge-fmt", + "foundry-common", + "foundry-compilers", + "foundry-config", + "foundry-debugger", + "foundry-evm", + "foundry-wallets", + "futures", + "indicatif", + "rayon", + "regex", + "serde", + "serde_json", + "strsim", + "strum 0.26.3", + "tempfile", + "tokio", + "tracing", + "tracing-subscriber", + "tracing-tracy", + "yansi", +] + +[[package]] +name = "foundry-common" +version = "0.3.0" +dependencies = [ + "alloy-consensus 0.8.3", + "alloy-contract", + "alloy-dyn-abi 0.8.11", + "alloy-eips 0.8.3", + "alloy-json-abi 0.8.11", + "alloy-json-rpc", + "alloy-network", + "alloy-primitives 0.8.11", + "alloy-provider", + "alloy-pubsub", + "alloy-rpc-client", + "alloy-rpc-types 0.8.3", + "alloy-serde 0.8.3", + "alloy-sol-types 0.8.11", + "alloy-transport", + "alloy-transport-http", + "alloy-transport-ipc", + "alloy-transport-ws", + "anstream", + "anstyle", + "async-trait", + "clap", + "comfy-table", + "dunce", + "eyre", + "foundry-block-explorers", + "foundry-common-fmt", + "foundry-compilers", + "foundry-config", + "foundry-macros", + "itertools 0.13.0", + "num-format", + "reqwest", + "semver 1.0.24", + "serde", + "serde_json", + "similar-asserts", + "terminal_size", + "thiserror 2.0.8", + "tokio", + "tower 0.4.13", + "tracing", + "url", + "walkdir", + "yansi", +] + +[[package]] +name = "foundry-common-fmt" +version = "0.3.0" +dependencies = [ + "alloy-consensus 0.8.3", + "alloy-dyn-abi 0.8.11", + "alloy-network", + "alloy-primitives 0.8.11", + "alloy-rpc-types 0.8.3", + "alloy-serde 0.8.3", + "chrono", + "comfy-table", + "foundry-macros", + "revm-primitives 14.0.0", + "serde", + "serde_json", + "similar-asserts", + "yansi", +] + +[[package]] +name = "foundry-compilers" +version = "0.12.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d817beee8c566a99f4267f25ff63d0de46c442948496ecef91ead56e3383090c" +dependencies = [ + "alloy-json-abi 0.8.11", + "alloy-primitives 0.8.11", + "auto_impl", + "derive_more", + "dirs 5.0.1", + "dyn-clone", + "foundry-compilers-artifacts", + "foundry-compilers-core", + "fs_extra", + "futures-util", + "home", + "itertools 0.13.0", + "md-5", + "path-slash", + "rand", + "rayon", + "semver 1.0.24", + "serde", + "serde_json", + "sha2", + "solar-parse", + "svm-rs", + "svm-rs-builds", + "tempfile", + "thiserror 2.0.8", + "tokio", + "tracing", + "winnow", + "yansi", +] + +[[package]] +name = "foundry-compilers-artifacts" +version = "0.12.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bec784a3a809ba2ee723fcfeb737a6ac90b4fd1e4d048c2d49fed6723bd35547" +dependencies = [ + "foundry-compilers-artifacts-solc", + "foundry-compilers-artifacts-vyper", +] + +[[package]] +name = "foundry-compilers-artifacts-solc" +version = "0.12.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44549c33e5a03408c8d40c36d764b7e84d261258ef481c19e4a612e609fdf8a4" +dependencies = [ + "alloy-json-abi 0.8.11", + "alloy-primitives 0.8.11", + "foundry-compilers-core", + "futures-util", + "md-5", + "path-slash", + "rayon", + "semver 1.0.24", + "serde", + "serde_json", + "serde_repr", + "thiserror 2.0.8", + "tokio", + "tracing", + "walkdir", + "yansi", +] + +[[package]] +name = "foundry-compilers-artifacts-vyper" +version = "0.12.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a438605ae74689752b2f717165daac15766f1b2a166d2095715d5f9407084b52" +dependencies = [ + "alloy-json-abi 0.8.11", + "alloy-primitives 0.8.11", + "foundry-compilers-artifacts-solc", + "foundry-compilers-core", + "path-slash", + "semver 1.0.24", + "serde", +] + +[[package]] +name = "foundry-compilers-core" +version = "0.12.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04ac6d85c3e2d12585f8e698b12ed4880b02716ec7fde5d62de9a194e62f4e36" +dependencies = [ + "alloy-primitives 0.8.11", + "cfg-if", + "dunce", + "fs_extra", + "path-slash", + "regex", + "semver 1.0.24", + "serde", + "serde_json", + "svm-rs", + "tempfile", + "thiserror 2.0.8", + "tokio", + "walkdir", +] + +[[package]] +name = "foundry-config" +version = "0.3.0" +dependencies = [ + "Inflector", + "alloy-chains", + "alloy-primitives 0.8.11", + "dirs-next", + "dunce", + "eyre", + "figment", + "foundry-block-explorers", + "foundry-compilers", + "glob", + "globset", + "itertools 0.13.0", + "mesc", + "number_prefix", + "path-slash", + "regex", + "reqwest", + "revm-primitives 14.0.0", + "semver 1.0.24", + "serde", + "serde_json", + "serde_regex", + "similar-asserts", + "solang-parser", + "tempfile", + "thiserror 2.0.8", + "toml 0.8.19", + "toml_edit", + "tracing", + "walkdir", + "yansi", +] + +[[package]] +name = "foundry-debugger" +version = "0.3.0" +dependencies = [ + "alloy-primitives 0.8.11", + "crossterm", + "eyre", + "foundry-common", + "foundry-compilers", + "foundry-evm-core", + "foundry-evm-traces", + "ratatui", + "revm 18.0.0", + "revm-inspectors", + "serde", + "tracing", +] + +[[package]] +name = "foundry-evm" +version = "0.3.0" +dependencies = [ + "alloy-dyn-abi 0.8.11", + "alloy-json-abi 0.8.11", + "alloy-primitives 0.8.11", + "alloy-sol-types 0.8.11", + "eyre", + "foundry-cheatcodes", + "foundry-common", + "foundry-compilers", + "foundry-config", + "foundry-evm-core", + "foundry-evm-coverage", + "foundry-evm-fuzz", + "foundry-evm-traces", + "indicatif", + "parking_lot", + "proptest", + "revm 18.0.0", + "revm-inspectors", + "serde", + "thiserror 2.0.8", + "tracing", +] + +[[package]] +name = "foundry-evm-abi" +version = "0.3.0" +dependencies = [ + "alloy-primitives 0.8.11", + "alloy-sol-types 0.8.11", + "derive_more", + "foundry-common-fmt", + "foundry-macros", + "foundry-test-utils", + "itertools 0.13.0", +] + +[[package]] +name = "foundry-evm-core" +version = "0.3.0" +dependencies = [ + "alloy-consensus 0.8.3", + "alloy-dyn-abi 0.8.11", + "alloy-genesis", + "alloy-json-abi 0.8.11", + "alloy-network", + "alloy-primitives 0.8.11", + "alloy-provider", + "alloy-rpc-types 0.8.3", + "alloy-sol-types 0.8.11", + "alloy-transport", + "auto_impl", + "eyre", + "foundry-cheatcodes-spec", + "foundry-common", + "foundry-config", + "foundry-evm-abi", + "foundry-fork-db", + "foundry-test-utils", + "futures", + "itertools 0.13.0", + "parking_lot", + "revm 18.0.0", + "revm-inspectors", + "revm-primitives 14.0.0", + "serde", + "serde_json", + "thiserror 2.0.8", + "tokio", + "tracing", + "url", +] + +[[package]] +name = "foundry-evm-coverage" +version = "0.3.0" +dependencies = [ + "alloy-primitives 0.8.11", + "eyre", + "foundry-common", + "foundry-compilers", + "foundry-evm-core", + "rayon", + "revm 18.0.0", + "semver 1.0.24", + "tracing", +] + +[[package]] +name = "foundry-evm-fuzz" +version = "0.3.0" +dependencies = [ + "ahash", + "alloy-dyn-abi 0.8.11", + "alloy-json-abi 0.8.11", + "alloy-primitives 0.8.11", + "eyre", + "foundry-common", + "foundry-compilers", + "foundry-config", + "foundry-evm-core", + "foundry-evm-coverage", + "foundry-evm-traces", + "indexmap 2.7.0", + "itertools 0.13.0", + "parking_lot", + "proptest", + "rand", + "revm 18.0.0", + "serde", + "thiserror 2.0.8", + "tracing", +] + +[[package]] +name = "foundry-evm-traces" +version = "0.3.0" +dependencies = [ + "alloy-dyn-abi 0.8.11", + "alloy-json-abi 0.8.11", + "alloy-primitives 0.8.11", + "alloy-sol-types 0.8.11", + "eyre", + "foundry-block-explorers", + "foundry-common", + "foundry-compilers", + "foundry-config", + "foundry-evm-core", + "foundry-linking", + "futures", + "itertools 0.13.0", + "rayon", + "revm 18.0.0", + "revm-inspectors", + "serde", + "serde_json", + "solar-parse", + "tempfile", + "tokio", + "tracing", +] + +[[package]] +name = "foundry-fork-db" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "491e9f9f138086b3627a8c406730dfbb6afcdcf688e6da0eb15df52f0c8ed163" +dependencies = [ + "alloy-consensus 0.8.3", + "alloy-primitives 0.8.11", + "alloy-provider", + "alloy-rpc-types 0.8.3", + "alloy-serde 0.8.3", + "alloy-transport", + "eyre", + "futures", + "parking_lot", + "revm 18.0.0", + "serde", + "serde_json", + "thiserror 2.0.8", + "tokio", + "tracing", + "url", +] + +[[package]] +name = "foundry-linking" +version = "0.3.0" +dependencies = [ + "alloy-primitives 0.8.11", + "foundry-compilers", + "semver 1.0.24", + "thiserror 2.0.8", +] + +[[package]] +name = "foundry-macros" +version = "0.3.0" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "foundry-test-utils" +version = "0.3.0" +dependencies = [ + "alloy-primitives 0.8.11", + "alloy-provider", + "eyre", + "fd-lock", + "foundry-block-explorers", + "foundry-common", + "foundry-compilers", + "foundry-config", + "parking_lot", + "rand", + "regex", + "serde_json", + "snapbox", + "tempfile", + "tokio", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "foundry-wallets" +version = "0.3.0" +dependencies = [ + "alloy-consensus 0.8.3", + "alloy-dyn-abi 0.8.11", + "alloy-network", + "alloy-primitives 0.8.11", + "alloy-signer", + "alloy-signer-aws", + "alloy-signer-gcp", + "alloy-signer-ledger", + "alloy-signer-local", + "alloy-signer-trezor", + "alloy-sol-types 0.8.11", + "async-trait", + "aws-config", + "aws-sdk-kms", + "clap", + "derive_builder", + "eth-keystore", + "eyre", + "foundry-config", + "gcloud-sdk", + "rpassword", + "serde", + "thiserror 2.0.8", + "tokio", + "tracing", +] + +[[package]] +name = "fragile" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" + +[[package]] +name = "fs4" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8c6b3bd49c37d2aa3f3f2220233b29a7cd23f79d1fe70e5337d25fb390793de" +dependencies = [ + "rustix", + "windows-sys 0.52.0", +] + +[[package]] +name = "fs_extra" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" + +[[package]] +name = "fsevent-sys" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2" +dependencies = [ + "libc", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futf" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" +dependencies = [ + "mac", + "new_debug_unreachable", +] + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "futures-utils-wasm" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" + +[[package]] +name = "gcloud-sdk" +version = "0.25.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0775bfa745cdf7287ae9765a685a813b91049b6b6d5ca3de20a3d5d16a80d8b2" +dependencies = [ + "async-trait", + "bytes", + "chrono", + "futures", + "hyper 1.5.2", + "jsonwebtoken", + "once_cell", + "prost", + "prost-types", + "reqwest", + "secret-vault-value", + "serde", + "serde_json", + "tokio", + "tonic", + "tower 0.5.2", + "tower-layer", + "tower-util", + "tracing", + "url", +] + +[[package]] +name = "generator" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc6bd114ceda131d3b1d665eba35788690ad37f5916457286b32ab6fd3c438dd" +dependencies = [ + "cfg-if", + "libc", + "log", + "rustversion", + "windows 0.58.0", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", + "zeroize", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "getrandom_or_panic" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea1015b5a70616b688dc230cfe50c8af89d972cb132d5a622814d29773b10b9" +dependencies = [ + "rand", + "rand_core", +] + +[[package]] +name = "ghash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" +dependencies = [ + "opaque-debug", + "polyval", +] + +[[package]] +name = "gimli" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + +[[package]] +name = "gix-actor" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc19e312cd45c4a66cd003f909163dc2f8e1623e30a0c0c6df3776e89b308665" +dependencies = [ + "bstr", + "gix-date", + "gix-utils", + "itoa", + "thiserror 1.0.69", + "winnow", +] + +[[package]] +name = "gix-config" +version = "0.40.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78e797487e6ca3552491de1131b4f72202f282fb33f198b1c34406d765b42bb0" +dependencies = [ + "bstr", + "gix-config-value", + "gix-features", + "gix-glob", + "gix-path", + "gix-ref", + "gix-sec", + "memchr", + "once_cell", + "smallvec", + "thiserror 1.0.69", + "unicode-bom", + "winnow", +] + +[[package]] +name = "gix-config-value" +version = "0.14.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49aaeef5d98390a3bcf9dbc6440b520b793d1bf3ed99317dc407b02be995b28e" +dependencies = [ + "bitflags 2.6.0", + "bstr", + "gix-path", + "libc", + "thiserror 2.0.8", +] + +[[package]] +name = "gix-date" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "691142b1a34d18e8ed6e6114bc1a2736516c5ad60ef3aa9bd1b694886e3ca92d" +dependencies = [ + "bstr", + "itoa", + "jiff", + "thiserror 2.0.8", +] + +[[package]] +name = "gix-features" +version = "0.38.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac7045ac9fe5f9c727f38799d002a7ed3583cd777e3322a7c4b43e3cf437dc69" +dependencies = [ + "gix-hash", + "gix-trace", + "gix-utils", + "libc", + "prodash", + "sha1_smol", + "walkdir", +] + +[[package]] +name = "gix-fs" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2bfe6249cfea6d0c0e0990d5226a4cb36f030444ba9e35e0639275db8f98575" +dependencies = [ + "fastrand", + "gix-features", + "gix-utils", +] + +[[package]] +name = "gix-glob" +version = "0.16.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74908b4bbc0a0a40852737e5d7889f676f081e340d5451a16e5b4c50d592f111" +dependencies = [ + "bitflags 2.6.0", + "bstr", + "gix-features", + "gix-path", +] + +[[package]] +name = "gix-hash" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93d7df7366121b5018f947a04d37f034717e113dcf9ccd85c34b58e57a74d5e" +dependencies = [ + "faster-hex", + "thiserror 1.0.69", +] + +[[package]] +name = "gix-lock" +version = "14.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bc7fe297f1f4614774989c00ec8b1add59571dc9b024b4c00acb7dedd4e19d" +dependencies = [ + "gix-tempfile", + "gix-utils", + "thiserror 1.0.69", +] + +[[package]] +name = "gix-object" +version = "0.44.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f5b801834f1de7640731820c2df6ba88d95480dc4ab166a5882f8ff12b88efa" +dependencies = [ + "bstr", + "gix-actor", + "gix-date", + "gix-features", + "gix-hash", + "gix-utils", + "gix-validate", + "itoa", + "smallvec", + "thiserror 1.0.69", + "winnow", +] + +[[package]] +name = "gix-path" +version = "0.10.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afc292ef1a51e340aeb0e720800338c805975724c1dfbd243185452efd8645b7" +dependencies = [ + "bstr", + "gix-trace", + "home", + "once_cell", + "thiserror 2.0.8", +] + +[[package]] +name = "gix-ref" +version = "0.47.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae0d8406ebf9aaa91f55a57f053c5a1ad1a39f60fdf0303142b7be7ea44311e5" +dependencies = [ + "gix-actor", + "gix-features", + "gix-fs", + "gix-hash", + "gix-lock", + "gix-object", + "gix-path", + "gix-tempfile", + "gix-utils", + "gix-validate", + "memmap2", + "thiserror 1.0.69", + "winnow", +] + +[[package]] +name = "gix-sec" +version = "0.10.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8b876ef997a955397809a2ec398d6a45b7a55b4918f2446344330f778d14fd6" +dependencies = [ + "bitflags 2.6.0", + "gix-path", + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "gix-tempfile" +version = "14.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "046b4927969fa816a150a0cda2e62c80016fe11fb3c3184e4dddf4e542f108aa" +dependencies = [ + "gix-fs", + "libc", + "once_cell", + "parking_lot", + "tempfile", +] + +[[package]] +name = "gix-trace" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04bdde120c29f1fc23a24d3e115aeeea3d60d8e65bab92cc5f9d90d9302eb952" + +[[package]] +name = "gix-utils" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba427e3e9599508ed98a6ddf8ed05493db114564e338e41f6a996d2e4790335f" +dependencies = [ + "fastrand", + "unicode-normalization", +] + +[[package]] +name = "gix-validate" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd520d09f9f585b34b32aba1d0b36ada89ab7fefb54a8ca3fe37fc482a750937" +dependencies = [ + "bstr", + "thiserror 2.0.8", +] + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "globset" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" +dependencies = [ + "aho-corasick", + "bstr", + "log", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", +] + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand_core", + "subtle", +] + +[[package]] +name = "h2" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 0.2.12", + "indexmap 2.7.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "h2" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.2.0", + "indexmap 2.7.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "half" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" +dependencies = [ + "cfg-if", + "crunchy", +] + +[[package]] +name = "handlebars" +version = "6.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd4ccde012831f9a071a637b0d4e31df31c0f6c525784b35ae76a9ac6bc1e315" +dependencies = [ + "log", + "num-order", + "pest", + "pest_derive", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", + "allocator-api2", + "serde", +] + +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", + "serde", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +dependencies = [ + "serde", +] + +[[package]] +name = "hex-literal" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + +[[package]] +name = "hidapi-rusb" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efdc2ec354929a6e8f3c6b6923a4d97427ec2f764cfee8cd4bfe890946cdf08b" +dependencies = [ + "cc", + "libc", + "pkg-config", + "rusb", +] + +[[package]] +name = "hkdf" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +dependencies = [ + "hmac", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "home" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "html5ever" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c13771afe0e6e846f1e67d038d4cb29998a6779f93c809212e4e9c32efd244d4" +dependencies = [ + "log", + "mac", + "markup5ever", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http 0.2.12", + "pin-project-lite", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http 1.2.0", +] + +[[package]] +name = "http-body-util" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +dependencies = [ + "bytes", + "futures-util", + "http 1.2.0", + "http-body 1.0.1", + "pin-project-lite", +] + +[[package]] +name = "http-range-header" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c" + +[[package]] +name = "httparse" +version = "1.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "humantime-serde" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57a3db5ea5923d99402c94e9feb261dc5ee9b4efa158b0315f788cf549cc200c" +dependencies = [ + "humantime", + "serde", +] + +[[package]] +name = "hyper" +version = "0.14.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.3.26", + "http 0.2.12", + "http-body 0.4.6", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "256fb8d4bd6413123cc9d91832d78325c48ff41677595be797d90f42969beae0" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2 0.4.7", + "http 1.2.0", + "http-body 1.0.1", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" +dependencies = [ + "futures-util", + "http 0.2.12", + "hyper 0.14.32", + "log", + "rustls 0.21.12", + "rustls-native-certs 0.6.3", + "tokio", + "tokio-rustls 0.24.1", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6884a48c6826ec44f524c7456b163cebe9e55a18d7b5e307cb4f100371cc767" +dependencies = [ + "futures-util", + "http 1.2.0", + "hyper 1.5.2", + "hyper-util", + "rustls 0.23.20", + "rustls-native-certs 0.8.1", + "rustls-pki-types", + "tokio", + "tokio-rustls 0.26.1", + "tower-service", + "webpki-roots", +] + +[[package]] +name = "hyper-timeout" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" +dependencies = [ + "hyper 1.5.2", + "hyper-util", + "pin-project-lite", + "tokio", + "tower-service", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper 1.5.2", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http 1.2.0", + "http-body 1.0.1", + "hyper 1.5.2", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core 0.52.0", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "ignore" +version = "0.4.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" +dependencies = [ + "crossbeam-deque", + "globset", + "log", + "memchr", + "regex-automata 0.4.9", + "same-file", + "walkdir", + "winapi-util", +] + +[[package]] +name = "ignore-files" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51ce3a1903263527cf3b6512a12f338ae63f425b66c1a3d7a24c3121e8557dbe" +dependencies = [ + "dunce", + "futures", + "gix-config", + "ignore", + "miette", + "normalize-path", + "project-origins", + "radix_trie", + "thiserror 1.0.69", + "tokio", + "tracing", +] + +[[package]] +name = "impl-codec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-rlp" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" +dependencies = [ + "rlp", +] + +[[package]] +name = "impl-serde" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" +dependencies = [ + "serde", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "indenter" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" + +[[package]] +name = "index_vec" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44faf5bb8861a9c72e20d3fb0fdbd59233e43056e2b80475ab0aacdc2e781355" + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + +[[package]] +name = "indexmap" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" +dependencies = [ + "arbitrary", + "equivalent", + "hashbrown 0.15.2", + "serde", +] + +[[package]] +name = "indicatif" +version = "0.17.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbf675b85ed934d3c67b5c5469701eec7db22689d0a2139d856e0925fa28b281" +dependencies = [ + "console", + "number_prefix", + "portable-atomic", + "unicode-width 0.2.0", + "web-time", +] + +[[package]] +name = "indoc" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" + +[[package]] +name = "inferno" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75a5d75fee4d36809e6b021e4b96b686e763d365ffdb03af2bd00786353f84fe" +dependencies = [ + "ahash", + "itoa", + "log", + "num-format", + "once_cell", + "quick-xml 0.37.1", + "rgb", + "str_stack", +] + +[[package]] +name = "inlinable_string" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8fae54786f62fb2918dcfae3d568594e50eb9b5c25bf04371af6fe7516452fb" + +[[package]] +name = "inotify" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff" +dependencies = [ + "bitflags 1.3.2", + "inotify-sys", + "libc", +] + +[[package]] +name = "inotify-sys" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" +dependencies = [ + "libc", +] + +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array", +] + +[[package]] +name = "instability" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b829f37dead9dc39df40c2d3376c179fdfd2ac771f53f55d3c30dc096a3c0c6e" +dependencies = [ + "darling", + "indoc", + "pretty_assertions", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "interprocess" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "894148491d817cb36b6f778017b8ac46b17408d522dd90f539d677ea938362eb" +dependencies = [ + "doctest-file", + "futures-core", + "libc", + "recvmsg", + "tokio", + "widestring", + "windows-sys 0.52.0", +] + +[[package]] +name = "ipnet" +version = "2.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" + +[[package]] +name = "is-terminal" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" +dependencies = [ + "hermit-abi 0.4.0", + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" + +[[package]] +name = "jiff" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db69f08d4fb10524cacdb074c10b296299d71274ddbc830a8ee65666867002e9" +dependencies = [ + "jiff-tzdb-platform", + "windows-sys 0.59.0", +] + +[[package]] +name = "jiff-tzdb" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91335e575850c5c4c673b9bd467b0e025f164ca59d0564f69d0c2ee0ffad4653" + +[[package]] +name = "jiff-tzdb-platform" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9835f0060a626fe59f160437bc725491a6af23133ea906500027d1bd2f8f4329" +dependencies = [ + "jiff-tzdb", +] + +[[package]] +name = "js-sys" +version = "0.3.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "jsonpath_lib" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaa63191d68230cccb81c5aa23abd53ed64d83337cacbb25a7b8c7979523774f" +dependencies = [ + "log", + "serde", + "serde_json", +] + +[[package]] +name = "jsonwebtoken" +version = "9.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9ae10193d25051e74945f1ea2d0b42e03cc3b890f7e4cc5faa44997d808193f" +dependencies = [ + "base64 0.21.7", + "js-sys", + "pem", + "ring", + "serde", + "serde_json", + "simple_asn1", +] + +[[package]] +name = "k256" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +dependencies = [ + "cfg-if", + "ecdsa", + "elliptic-curve", + "once_cell", + "sha2", + "signature", +] + +[[package]] +name = "kbs-types" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b6441ed73b0faa50707d4de41c6b45c76654b661b96aaf7b26a41331eedc0a5" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "keccak-asm" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "505d1856a39b200489082f90d897c3f07c455563880bc5952e38eabf731c83b6" +dependencies = [ + "digest 0.10.7", + "sha3-asm", +] + +[[package]] +name = "kqueue" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7447f1ca1b7b563588a205fe93dea8df60fd981423a768bc1c0ded35ed147d0c" +dependencies = [ + "kqueue-sys", + "libc", +] + +[[package]] +name = "kqueue-sys" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b" +dependencies = [ + "bitflags 1.3.2", + "libc", +] + +[[package]] +name = "lalrpop" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55cb077ad656299f160924eb2912aa147d7339ea7d69e1b5517326fdcec3c1ca" +dependencies = [ + "ascii-canvas", + "bit-set", + "ena", + "itertools 0.11.0", + "lalrpop-util", + "petgraph", + "regex", + "regex-syntax 0.8.5", + "string_cache", + "term", + "tiny-keccak", + "unicode-xid", + "walkdir", +] + +[[package]] +name = "lalrpop-util" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553" +dependencies = [ + "regex-automata 0.4.9", +] + +[[package]] +name = "lasso" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e14eda50a3494b3bf7b9ce51c52434a761e383d7238ce1dd5dcec2fbc13e9fb" +dependencies = [ + "dashmap", + "hashbrown 0.14.5", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +dependencies = [ + "spin", +] + +[[package]] +name = "libc" +version = "0.2.169" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" + +[[package]] +name = "libdbus-sys" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06085512b750d640299b79be4bad3d2fa90a9c00b1fd9e1b46364f66f0485c72" +dependencies = [ + "cc", + "pkg-config", +] + +[[package]] +name = "libm" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" + +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags 2.6.0", + "libc", + "redox_syscall", +] + +[[package]] +name = "libusb1-sys" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da050ade7ac4ff1ba5379af847a10a10a8e284181e060105bf8d86960ce9ce0f" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "litemap" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "lockfree-object-pool" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9374ef4228402d4b7e403e5838cb880d9ee663314b0a900d5a6aabf0c213552e" + +[[package]] +name = "log" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" + +[[package]] +name = "loom" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" +dependencies = [ + "cfg-if", + "generator", + "scoped-tls", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "lru" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" +dependencies = [ + "hashbrown 0.15.2", +] + +[[package]] +name = "mac" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" + +[[package]] +name = "maplit" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" + +[[package]] +name = "markup5ever" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16ce3abbeba692c8b8441d036ef91aea6df8da2c6b6e21c7e14d3c18e526be45" +dependencies = [ + "log", + "phf", + "phf_codegen", + "string_cache", + "string_cache_codegen", + "tendril", +] + +[[package]] +name = "match_cfg" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "matchit" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" + +[[package]] +name = "md-5" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +dependencies = [ + "cfg-if", + "digest 0.10.7", +] + +[[package]] +name = "mdbook" +version = "0.4.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe1f98b8d66e537d2f0ba06e7dec4f44001deec539a2d18bfc102d6a86189148" +dependencies = [ + "ammonia", + "anyhow", + "chrono", + "clap", + "clap_complete", + "elasticlunr-rs", + "env_logger", + "handlebars", + "log", + "memchr", + "once_cell", + "opener", + "pulldown-cmark", + "regex", + "serde", + "serde_json", + "shlex", + "tempfile", + "toml 0.5.11", + "topological-sort", +] + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "memmap2" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +dependencies = [ + "autocfg", +] + +[[package]] +name = "merlin" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" +dependencies = [ + "byteorder", + "keccak", + "rand_core", + "zeroize", +] + +[[package]] +name = "mesc" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d04b0347d2799ef17df4623dbcb03531031142105168e0c549e0bf1f980e9e7e" +dependencies = [ + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "miette" +version = "7.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "317f146e2eb7021892722af37cf1b971f0a70c8406f487e24952667616192c64" +dependencies = [ + "cfg-if", + "miette-derive", + "thiserror 1.0.69", + "unicode-width 0.1.14", +] + +[[package]] +name = "miette-derive" +version = "7.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23c9b935fbe1d6cbd1dac857b54a688145e2d93f48db36010514d0f612d0ad67" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" +dependencies = [ + "adler", +] + +[[package]] +name = "miniz_oxide" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +dependencies = [ + "libc", + "log", + "wasi", + "windows-sys 0.48.0", +] + +[[package]] +name = "mio" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +dependencies = [ + "libc", + "log", + "wasi", + "windows-sys 0.52.0", +] + +[[package]] +name = "mockall" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39a6bfcc6c8c7eed5ee98b9c3e33adc726054389233e201c95dab2d41a3839d2" +dependencies = [ + "cfg-if", + "downcast", + "fragile", + "mockall_derive", + "predicates", + "predicates-tree", +] + +[[package]] +name = "mockall_derive" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25ca3004c2efe9011bd4e461bd8256445052b9615405b4f7ea43fc8ca5c20898" +dependencies = [ + "cfg-if", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "native-tls" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework 2.11.1", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + +[[package]] +name = "newtype-uuid" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c8781e2ef64806278a55ad223f0bc875772fd40e1fe6e73e8adbf027817229d" +dependencies = [ + "uuid 1.11.0", +] + +[[package]] +name = "nibble_vec" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43" +dependencies = [ + "smallvec", +] + +[[package]] +name = "nix" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "libc", + "memoffset", + "pin-utils", +] + +[[package]] +name = "nix" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" +dependencies = [ + "bitflags 2.6.0", + "cfg-if", + "cfg_aliases 0.1.1", + "libc", +] + +[[package]] +name = "nix" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" +dependencies = [ + "bitflags 2.6.0", + "cfg-if", + "cfg_aliases 0.2.1", + "libc", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "normalize-line-endings" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" + +[[package]] +name = "normalize-path" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5438dd2b2ff4c6df6e1ce22d825ed2fa93ee2922235cc45186991717f0a892d" + +[[package]] +name = "normpath" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8911957c4b1549ac0dc74e30db9c8b0e66ddcd6d7acc33098f4c63a64a6d7ed" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "notify" +version = "6.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d" +dependencies = [ + "bitflags 2.6.0", + "crossbeam-channel", + "filetime", + "fsevent-sys", + "inotify", + "kqueue", + "libc", + "log", + "mio 0.8.11", + "walkdir", + "windows-sys 0.48.0", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-format" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a652d9771a63711fd3c3deb670acfbe5c30a4072e664d7a3bf5a9e1056ac72c3" +dependencies = [ + "arrayvec", + "itoa", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-modular" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17bb261bf36fa7d83f4c294f834e91256769097b3cb505d44831e0a179ac647f" + +[[package]] +name = "num-order" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "537b596b97c40fcf8056d153049eb22f481c17ebce72a513ec9286e4986d1bb6" +dependencies = [ + "num-modular", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi 0.3.9", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "num_threads" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" +dependencies = [ + "libc", +] + +[[package]] +name = "number_prefix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" + +[[package]] +name = "nybbles" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95f06be0417d97f81fe4e5c86d7d01b392655a9cac9c19a848aa033e18937b23" +dependencies = [ + "alloy-rlp", + "const-hex", + "proptest", + "serde", + "smallvec", +] + +[[package]] +name = "object" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" + +[[package]] +name = "op-alloy-consensus" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c698f80ee53e56d1b60a97e9d90ad09788b516c964c9c97fb5927860b812ef0d" +dependencies = [ + "alloy-consensus 0.8.3", + "alloy-eips 0.8.3", + "alloy-primitives 0.8.15", + "alloy-rlp", + "alloy-serde 0.8.3", + "derive_more", + "serde", + "thiserror 2.0.8", +] + +[[package]] +name = "op-alloy-rpc-types" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5aef2128fe8979596b3a1f79a2454f3e32fd239889a03d50fe686b9a2f30a16" +dependencies = [ + "alloy-consensus 0.8.3", + "alloy-eips 0.8.3", + "alloy-network-primitives 0.8.3", + "alloy-primitives 0.8.15", + "alloy-rpc-types-eth 0.8.3", + "alloy-serde 0.8.3", + "derive_more", + "op-alloy-consensus", + "serde", + "serde_json", +] + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "open-fastrlp" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", + "ethereum-types", + "open-fastrlp-derive", +] + +[[package]] +name = "open-fastrlp-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "003b2be5c6c53c1cfeb0a238b8a1c3915cd410feb684457a36c10038f764bb1c" +dependencies = [ + "bytes", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "opener" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0812e5e4df08da354c851a3376fead46db31c2214f849d3de356d774d057681" +dependencies = [ + "bstr", + "dbus", + "normpath", + "windows-sys 0.59.0", +] + +[[package]] +name = "openssl" +version = "0.10.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" +dependencies = [ + "bitflags 2.6.0", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "outref" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4030760ffd992bef45b0ae3f10ce1aba99e33464c90d14dd7c039884963ddc7a" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "owo-colors" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" + +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2", +] + +[[package]] +name = "parity-scale-codec" +version = "3.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" +dependencies = [ + "arrayvec", + "bitvec", + "byte-slice-cast", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "path-slash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42" + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "pbkdf2" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest 0.10.7", + "hmac", +] + +[[package]] +name = "pear" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdeeaa00ce488657faba8ebf44ab9361f9365a97bd39ffb8a60663f57ff4b467" +dependencies = [ + "inlinable_string", + "pear_codegen", + "yansi", +] + +[[package]] +name = "pear_codegen" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bab5b985dc082b345f812b7df84e1bef27e7207b39e448439ba8bd69c93f147" +dependencies = [ + "proc-macro2", + "proc-macro2-diagnostics", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "pem" +version = "3.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e459365e590736a54c3fa561947c84837534b8e9af6fc5bf781307e82658fae" +dependencies = [ + "base64 0.22.1", + "serde", +] + +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pest" +version = "2.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc" +dependencies = [ + "memchr", + "thiserror 2.0.8", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "816518421cfc6887a0d62bf441b6ffb4536fcc926395a69e1a85852d4363f57e" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d1396fd3a870fc7838768d171b4616d5c91f6cc25e377b673d714567d99377b" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "pest_meta" +version = "2.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1e58089ea25d717bfd31fb534e4f3afcc2cc569c70de3e239778991ea3b7dea" +dependencies = [ + "once_cell", + "pest", + "sha2", +] + +[[package]] +name = "petgraph" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +dependencies = [ + "fixedbitset", + "indexmap 2.7.0", +] + +[[package]] +name = "pharos" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414" +dependencies = [ + "futures", + "rustc_version 0.4.1", +] + +[[package]] +name = "phf" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +dependencies = [ + "phf_macros", + "phf_shared 0.11.2", +] + +[[package]] +name = "phf_codegen" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a" +dependencies = [ + "phf_generator 0.11.2", + "phf_shared 0.11.2", +] + +[[package]] +name = "phf_generator" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" +dependencies = [ + "phf_shared 0.10.0", + "rand", +] + +[[package]] +name = "phf_generator" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" +dependencies = [ + "phf_shared 0.11.2", + "rand", +] + +[[package]] +name = "phf_macros" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" +dependencies = [ + "phf_generator 0.11.2", + "phf_shared 0.11.2", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher", +] + +[[package]] +name = "phf_shared" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ef0f924a5ee7ea9cbcea77529dba45f8a9ba9f622419fe3386ca581a3ae9d5a" +dependencies = [ + "pin-project-internal 0.4.30", +] + +[[package]] +name = "pin-project" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" +dependencies = [ + "pin-project-internal 1.1.7", +] + +[[package]] +name = "pin-project-internal" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "851c8d0ce9bebe43790dedfc86614c23494ac9f423dd618d3a61fc693eafe61e" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" + +[[package]] +name = "polyval" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" +dependencies = [ + "cfg-if", + "cpufeatures", + "opaque-debug", + "universal-hash", +] + +[[package]] +name = "portable-atomic" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "predicates" +version = "3.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5d19ee57562043d37e82899fade9a22ebab7be9cef5026b07fda9cdd4293573" +dependencies = [ + "anstyle", + "predicates-core", +] + +[[package]] +name = "predicates-core" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "727e462b119fe9c93fd0eb1429a5f7647394014cf3c04ab2c0350eeb09095ffa" + +[[package]] +name = "predicates-tree" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72dd2d6d381dfb73a193c7fca536518d7caee39fc8503f74e7dc0be0531b425c" +dependencies = [ + "predicates-core", + "termtree", +] + +[[package]] +name = "pretty_assertions" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ae130e2f271fbc2ac3a40fb1d07180839cdbbe443c7a27e1e3c13c5cac0116d" +dependencies = [ + "diff", + "yansi", +] + +[[package]] +name = "prettyplease" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" +dependencies = [ + "proc-macro2", + "syn 2.0.90", +] + +[[package]] +name = "primeorder" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" +dependencies = [ + "elliptic-curve", +] + +[[package]] +name = "primitive-types" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" +dependencies = [ + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "scale-info", + "uint", +] + +[[package]] +name = "proc-macro-crate" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "proc-macro2" +version = "1.0.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "proc-macro2-diagnostics" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", + "version_check", + "yansi", +] + +[[package]] +name = "process-wrap" +version = "8.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38ee68ae331824036479c84060534b18254c864fa73366c58d86db3b7b811619" +dependencies = [ + "futures", + "indexmap 2.7.0", + "nix 0.28.0", + "tokio", + "tracing", + "windows 0.56.0", +] + +[[package]] +name = "prodash" +version = "28.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "744a264d26b88a6a7e37cbad97953fa233b94d585236310bcbc88474b4092d79" + +[[package]] +name = "project-origins" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "735c6b4b1c67863c2211cac24badb0dca9fabfe1098209834fc5e0f92eda6c2c" +dependencies = [ + "futures", + "tokio", + "tokio-stream", +] + +[[package]] +name = "proptest" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" +dependencies = [ + "bit-set", + "bit-vec", + "bitflags 2.6.0", + "lazy_static", + "num-traits", + "rand", + "rand_chacha", + "rand_xorshift", + "regex-syntax 0.8.5", + "rusty-fork", + "tempfile", + "unarray", +] + +[[package]] +name = "proptest-derive" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee1c9ac207483d5e7db4940700de86a9aae46ef90c48b57f99fe7edb8345e49" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "prost" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c0fef6c4230e4ccf618a35c59d7ede15dea37de8427500f50aff708806e42ec" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-derive" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "157c5a9d7ea5c2ed2d9fb8f495b64759f7816c7eaea54ba3978f0d63000162e3" +dependencies = [ + "anyhow", + "itertools 0.13.0", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "prost-types" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2f1e56baa61e93533aebc21af4d2134b70f66275e0fcdf3cbe43d77ff7e8fc" +dependencies = [ + "prost", +] + +[[package]] +name = "protobuf" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b65f4a8ec18723a734e5dc09c173e0abf9690432da5340285d536edcb4dac190" +dependencies = [ + "once_cell", + "protobuf-support", + "thiserror 1.0.69", +] + +[[package]] +name = "protobuf-support" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6872f4d4f4b98303239a2b5838f5bbbb77b01ffc892d627957f37a22d7cfe69c" +dependencies = [ + "thiserror 1.0.69", +] + +[[package]] +name = "pulldown-cmark" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76979bea66e7875e7509c4ec5300112b316af87fa7a252ca91c448b32dfe3993" +dependencies = [ + "bitflags 2.6.0", + "memchr", + "pulldown-cmark-escape", + "unicase", +] + +[[package]] +name = "pulldown-cmark-escape" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd348ff538bc9caeda7ee8cad2d1d48236a1f443c1fa3913c6a02fe0043b1dd3" + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quick-junit" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed1a693391a16317257103ad06a88c6529ac640846021da7c435a06fffdacd7" +dependencies = [ + "chrono", + "indexmap 2.7.0", + "newtype-uuid", + "quick-xml 0.37.1", + "strip-ansi-escapes", + "thiserror 2.0.8", + "uuid 1.11.0", +] + +[[package]] +name = "quick-xml" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cc440ee4802a86e357165021e3e255a9143724da31db1e2ea540214c96a0f82" +dependencies = [ + "memchr", +] + +[[package]] +name = "quick-xml" +version = "0.37.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f22f29bdff3987b4d8632ef95fd6424ec7e4e0a57e2f4fc63e489e75357f6a03" +dependencies = [ + "memchr", +] + +[[package]] +name = "quinn" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62e96808277ec6f97351a2380e6c25114bc9e67037775464979f3037c92d05ef" +dependencies = [ + "bytes", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls 0.23.20", + "socket2", + "thiserror 2.0.8", + "tokio", + "tracing", +] + +[[package]] +name = "quinn-proto" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" +dependencies = [ + "bytes", + "getrandom", + "rand", + "ring", + "rustc-hash", + "rustls 0.23.20", + "rustls-pki-types", + "slab", + "thiserror 2.0.8", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c40286217b4ba3a71d644d752e6a0b71f13f1b6a2c5311acfcbe0c2418ed904" +dependencies = [ + "cfg_aliases 0.2.1", + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "quote" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "radix_trie" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd" +dependencies = [ + "endian-type", + "nibble_vec", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", + "serde", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core", +] + +[[package]] +name = "ratatui" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eabd94c2f37801c20583fc49dd5cd6b0ba68c716787c2dd6ed18571e1e63117b" +dependencies = [ + "bitflags 2.6.0", + "cassowary", + "compact_str", + "crossterm", + "indoc", + "instability", + "itertools 0.13.0", + "lru", + "paste", + "strum 0.26.3", + "unicode-segmentation", + "unicode-truncate", + "unicode-width 0.2.0", +] + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "recvmsg" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3edd4d5d42c92f0a659926464d4cce56b562761267ecf0f469d85b7de384175" + +[[package]] +name = "redox_syscall" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom", + "libredox", + "thiserror 1.0.69", +] + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-lite" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53a49587ad06b26609c52e423de037e7f57f20d53535d66e08c695f347df952a" + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "reqwest" +version = "0.12.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" +dependencies = [ + "async-compression", + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http 1.2.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.5.2", + "hyper-rustls 0.27.4", + "hyper-tls", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "mime_guess", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls 0.23.20", + "rustls-native-certs 0.8.1", + "rustls-pemfile 2.2.0", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-native-tls", + "tokio-rustls 0.26.1", + "tokio-socks", + "tokio-util", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "webpki-roots", + "windows-registry", +] + +[[package]] +name = "revm" +version = "14.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "641702b12847f9ed418d552f4fcabe536d867a2c980e96b6e7e25d7b992f929f" +dependencies = [ + "auto_impl", + "cfg-if", + "dyn-clone", + "revm-interpreter 10.0.3", + "revm-precompile 11.0.3", + "serde", + "serde_json", +] + +[[package]] +name = "revm" +version = "18.0.0" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=e5b8feb#e5b8feb415155a4d698bb45fd04b5ba31c2cd9ce" +dependencies = [ + "aes-gcm", + "alloy-primitives 0.8.11", + "alloy-rlp", + "anyhow", + "auto_impl", + "bincode", + "cfg-if", + "dyn-clone", + "merlin", + "rand_core", + "revm-interpreter 14.0.0", + "revm-precompile 15.0.0", + "schnorrkel", + "secp256k1", + "serde", + "serde_json", + "tee_service_api", + "tiny-keccak", +] + +[[package]] +name = "revm-inspectors" +version = "0.6.0" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git?rev=a77b988#a77b988b82486f521193f01231def7809a38e8b3" +dependencies = [ + "alloy-primitives 0.8.11", + "alloy-rpc-types 0.3.6", + "alloy-sol-types 0.8.11", + "anstyle", + "colorchoice", + "revm 14.0.3", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "revm-interpreter" +version = "10.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e5e14002afae20b5bf1566f22316122f42f57517000e559c55b25bf7a49cba2" +dependencies = [ + "revm-primitives 10.0.0", + "serde", +] + +[[package]] +name = "revm-interpreter" +version = "14.0.0" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=e5b8feb#e5b8feb415155a4d698bb45fd04b5ba31c2cd9ce" +dependencies = [ + "revm-primitives 14.0.0", + "serde", +] + +[[package]] +name = "revm-precompile" +version = "11.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3198c06247e8d4ad0d1312591edf049b0de4ddffa9fecb625c318fd67db8639b" +dependencies = [ + "aurora-engine-modexp", + "c-kzg", + "cfg-if", + "k256", + "once_cell", + "revm-primitives 10.0.0", + "ripemd", + "secp256k1", + "sha2", + "substrate-bn", +] + +[[package]] +name = "revm-precompile" +version = "15.0.0" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=e5b8feb#e5b8feb415155a4d698bb45fd04b5ba31c2cd9ce" +dependencies = [ + "aurora-engine-modexp", + "blst", + "c-kzg", + "cfg-if", + "k256", + "once_cell", + "p256", + "revm-primitives 14.0.0", + "ripemd", + "secp256k1", + "sha2", + "substrate-bn", +] + +[[package]] +name = "revm-primitives" +version = "10.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f1525851a03aff9a9d6a1d018b414d76252d6802ab54695b27093ecd7e7a101" +dependencies = [ + "alloy-eip2930", + "alloy-eip7702 0.1.1", + "alloy-primitives 0.8.11", + "auto_impl", + "bitflags 2.6.0", + "bitvec", + "c-kzg", + "cfg-if", + "dyn-clone", + "enumn", + "hex", + "serde", +] + +[[package]] +name = "revm-primitives" +version = "14.0.0" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=e5b8feb#e5b8feb415155a4d698bb45fd04b5ba31c2cd9ce" +dependencies = [ + "alloy-eip2930", + "alloy-eip7702 0.4.2", + "alloy-primitives 0.8.11", + "auto_impl", + "bitflags 2.6.0", + "bitvec", + "c-kzg", + "cfg-if", + "dyn-clone", + "enumn", + "hex", + "serde", +] + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + +[[package]] +name = "rgb" +version = "0.8.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57397d16646700483b67d2dd6511d79318f9d057fdbd21a4066aeac8b41d310a" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if", + "getrandom", + "libc", + "spin", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "ripemd" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "rlp" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +dependencies = [ + "bytes", + "rlp-derive", + "rustc-hex", +] + +[[package]] +name = "rlp-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "rpassword" +version = "7.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80472be3c897911d0137b2d2b9055faf6eeac5b14e324073d83bc17b191d7e3f" +dependencies = [ + "libc", + "rtoolbox", + "windows-sys 0.48.0", +] + +[[package]] +name = "rtoolbox" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c247d24e63230cdb56463ae328478bd5eac8b8faa8c69461a77e8e323afac90e" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "ruint" +version = "1.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5ef8fb1dd8de3870cb8400d51b4c2023854bbafd5431a3ac7e7317243e22d2f" +dependencies = [ + "alloy-rlp", + "arbitrary", + "ark-ff 0.3.0", + "ark-ff 0.4.2", + "bytes", + "fastrlp 0.3.1", + "fastrlp 0.4.0", + "num-bigint", + "num-integer", + "num-traits", + "parity-scale-codec", + "primitive-types", + "proptest", + "rand", + "rlp", + "ruint-macro", + "serde", + "valuable", + "zeroize", +] + +[[package]] +name = "ruint-macro" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" + +[[package]] +name = "rusb" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab9f9ff05b63a786553a4c02943b74b34a988448671001e9a27e2f0565cc05a4" +dependencies = [ + "libc", + "libusb1-sys", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustc-hash" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497" +dependencies = [ + "rand", +] + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", +] + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver 1.0.24", +] + +[[package]] +name = "rustix" +version = "0.38.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" +dependencies = [ + "bitflags 2.6.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustls" +version = "0.21.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" +dependencies = [ + "log", + "ring", + "rustls-webpki 0.101.7", + "sct", +] + +[[package]] +name = "rustls" +version = "0.23.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5065c3f250cbd332cd894be57c40fa52387247659b14a2d6041d121547903b1b" +dependencies = [ + "log", + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki 0.102.8", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-native-certs" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" +dependencies = [ + "openssl-probe", + "rustls-pemfile 1.0.4", + "schannel", + "security-framework 2.11.1", +] + +[[package]] +name = "rustls-native-certs" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" +dependencies = [ + "openssl-probe", + "rustls-pki-types", + "schannel", + "security-framework 3.1.0", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.7", +] + +[[package]] +name = "rustls-pemfile" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37" +dependencies = [ + "web-time", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "rustls-webpki" +version = "0.102.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" + +[[package]] +name = "rusty-fork" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +dependencies = [ + "fnv", + "quick-error", + "tempfile", + "wait-timeout", +] + +[[package]] +name = "rustyline" +version = "15.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ee1e066dc922e513bda599c6ccb5f3bb2b0ea5870a579448f2622993f0a9a2f" +dependencies = [ + "bitflags 2.6.0", + "cfg-if", + "clipboard-win", + "fd-lock", + "home", + "libc", + "log", + "memchr", + "nix 0.29.0", + "radix_trie", + "unicode-segmentation", + "unicode-width 0.2.0", + "utf8parse", + "windows-sys 0.59.0", +] + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "salsa20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" +dependencies = [ + "cipher", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "sanitize-filename" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ed72fbaf78e6f2d41744923916966c4fbe3d7c74e3037a8ee482f1115572603" +dependencies = [ + "lazy_static", + "regex", +] + +[[package]] +name = "scale-info" +version = "2.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b" +dependencies = [ + "cfg-if", + "derive_more", + "parity-scale-codec", + "scale-info-derive", +] + +[[package]] +name = "scale-info-derive" +version = "2.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "scc" +version = "2.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94b13f8ea6177672c49d12ed964cca44836f59621981b04a3e26b87e675181de" +dependencies = [ + "sdd", +] + +[[package]] +name = "schannel" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "schemars" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" +dependencies = [ + "dyn-clone", + "schemars_derive", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.90", +] + +[[package]] +name = "schnellru" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9a8ef13a93c54d20580de1e5c413e624e53121d42fc7e2c11d10ef7f8b02367" +dependencies = [ + "ahash", + "cfg-if", + "hashbrown 0.13.2", +] + +[[package]] +name = "schnorrkel" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de18f6d8ba0aad7045f5feae07ec29899c1112584a38509a84ad7b04451eaa0" +dependencies = [ + "aead", + "arrayref", + "arrayvec", + "curve25519-dalek", + "getrandom_or_panic", + "merlin", + "rand_core", + "serde_bytes", + "sha2", + "subtle", + "zeroize", +] + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scrypt" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f9e24d2b632954ded8ab2ef9fea0a0c769ea56ea98bddbafbad22caeeadf45d" +dependencies = [ + "hmac", + "pbkdf2 0.11.0", + "salsa20", + "sha2", +] + +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "sdd" +version = "3.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "478f121bb72bbf63c52c93011ea1791dca40140dfe13f8336c4c5ac952c33aa9" + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "subtle", + "zeroize", +] + +[[package]] +name = "secp256k1" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9465315bc9d4566e1724f0fffcbcc446268cb522e60f9a27bcded6b19c108113" +dependencies = [ + "rand", + "secp256k1-sys", + "serde", +] + +[[package]] +name = "secp256k1-sys" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" +dependencies = [ + "cc", +] + +[[package]] +name = "secret-vault-value" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc32a777b53b3433b974c9c26b6d502a50037f8da94e46cb8ce2ced2cfdfaea0" +dependencies = [ + "prost", + "prost-types", + "serde", + "serde_json", + "zeroize", +] + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.6.0", + "core-foundation 0.9.4", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81d3f8c9bfcc3cbb6b0179eb57042d75b1582bdc65c3cb95f3fa999509c03cbc" +dependencies = [ + "bitflags 2.6.0", + "core-foundation 0.10.0", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1863fd3768cd83c56a7f60faa4dc0d403f1b6df0a38c3c25f44b7894e45370d5" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" +dependencies = [ + "serde", +] + +[[package]] +name = "semver-parser" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" +dependencies = [ + "pest", +] + +[[package]] +name = "send_wrapper" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" + +[[package]] +name = "serde" +version = "1.0.216" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_bytes" +version = "0.11.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.216" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "serde_json" +version = "1.0.133" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" +dependencies = [ + "indexmap 2.7.0", + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" +dependencies = [ + "itoa", + "serde", +] + +[[package]] +name = "serde_regex" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8136f1a4ea815d7eac4101cfd0b16dc0cb5e1fe1b8609dfd728058656b7badf" +dependencies = [ + "regex", + "serde", +] + +[[package]] +name = "serde_repr" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "serde_spanned" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serial_test" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b258109f244e1d6891bf1053a55d63a5cd4f8f4c30cf9a1280989f80e7a1fa9" +dependencies = [ + "futures", + "log", + "once_cell", + "parking_lot", + "scc", + "serial_test_derive", +] + +[[package]] +name = "serial_test_derive" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha1_smol" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "sha3-asm" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46" +dependencies = [ + "cc", + "cfg-if", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shell-words" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-mio" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd" +dependencies = [ + "libc", + "mio 1.0.3", + "signal-hook", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest 0.10.7", + "rand_core", +] + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "similar" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e" +dependencies = [ + "bstr", + "unicode-segmentation", +] + +[[package]] +name = "similar-asserts" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfe85670573cd6f0fa97940f26e7e6601213c3b0555246c24234131f88c5709e" +dependencies = [ + "console", + "similar", +] + +[[package]] +name = "simple_asn1" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" +dependencies = [ + "num-bigint", + "num-traits", + "thiserror 1.0.69", + "time", +] + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +dependencies = [ + "serde", +] + +[[package]] +name = "smawk" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" + +[[package]] +name = "snapbox" +version = "0.6.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96dcfc4581e3355d70ac2ee14cfdf81dce3d85c85f1ed9e2c1d3013f53b3436b" +dependencies = [ + "anstream", + "anstyle", + "normalize-line-endings", + "regex", + "serde", + "serde_json", + "similar", + "snapbox-macros", +] + +[[package]] +name = "snapbox-macros" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16569f53ca23a41bb6f62e0a5084aa1661f4814a67fa33696a79073e03a664af" +dependencies = [ + "anstream", +] + +[[package]] +name = "socket2" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "solang-parser" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c425ce1c59f4b154717592f0bdf4715c3a1d55058883622d3157e1f0908a5b26" +dependencies = [ + "itertools 0.11.0", + "lalrpop", + "lalrpop-util", + "phf", + "thiserror 1.0.69", + "unicode-xid", +] + +[[package]] +name = "solar-ast" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5aeaf7a4bd326242c909bd287291226a540b62b36fa5824880248f4b1d4d6af" +dependencies = [ + "alloy-primitives 0.8.11", + "bumpalo", + "either", + "num-bigint", + "num-rational", + "semver 1.0.24", + "solar-data-structures", + "solar-interface", + "solar-macros", + "strum 0.26.3", + "typed-arena", +] + +[[package]] +name = "solar-config" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31d00d672a40a1a3620d7696f01a2d3301abf883d8168e1a9da3bf83f0c8e343" +dependencies = [ + "strum 0.26.3", +] + +[[package]] +name = "solar-data-structures" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6e4eb0b72ed7adbb808897c85de08ea99609774a58c72e3dce55c758043ca2" +dependencies = [ + "bumpalo", + "index_vec", + "indexmap 2.7.0", + "parking_lot", + "rayon", + "rustc-hash", + "smallvec", +] + +[[package]] +name = "solar-interface" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21fb8925638f3da1bba7a9a6ebeac3511e5c6354f921f2bb2e1ddce4ac70c107" +dependencies = [ + "annotate-snippets", + "anstream", + "anstyle", + "const-hex", + "derive_builder", + "dunce", + "itertools 0.13.0", + "itoa", + "lasso", + "match_cfg", + "normalize-path", + "rayon", + "scc", + "scoped-tls", + "solar-config", + "solar-data-structures", + "solar-macros", + "thiserror 1.0.69", + "tracing", + "unicode-width 0.2.0", +] + +[[package]] +name = "solar-macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0cc54b74e214647c1bbfc098d080cc5deac77f8dcb99aca91747276b01a15ad" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "solar-parse" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b82c3659c15975cd80e5e1c44591278c230c59ad89082d797837499a4784e1b" +dependencies = [ + "alloy-primitives 0.8.11", + "bitflags 2.6.0", + "bumpalo", + "itertools 0.13.0", + "memchr", + "num-bigint", + "num-rational", + "num-traits", + "smallvec", + "solar-ast", + "solar-data-structures", + "solar-interface", + "tracing", +] + +[[package]] +name = "soldeer-commands" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4bd924da31914871820d1404b63a89b100097957f6dc7f3bbb9c094f16d8f4e" +dependencies = [ + "bon", + "clap", + "cliclack", + "derive_more", + "email-address-parser", + "rayon", + "soldeer-core", +] + +[[package]] +name = "soldeer-core" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7a3129568ab6b38132efa9c956b5ae14c09c0a1a1167353e337081d1d7f0c32" +dependencies = [ + "bon", + "chrono", + "cliclack", + "const-hex", + "derive_more", + "dunce", + "home", + "ignore", + "path-slash", + "rayon", + "regex", + "reqwest", + "sanitize-filename", + "semver 1.0.24", + "serde", + "serde_json", + "sha2", + "thiserror 2.0.8", + "tokio", + "toml_edit", + "uuid 1.11.0", + "zip", + "zip-extract", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "str_stack" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9091b6114800a5f2141aee1d1b9d6ca3592ac062dc5decb3764ec5895a47b4eb" + +[[package]] +name = "string_cache" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +dependencies = [ + "new_debug_unreachable", + "once_cell", + "parking_lot", + "phf_shared 0.10.0", + "precomputed-hash", + "serde", +] + +[[package]] +name = "string_cache_codegen" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" +dependencies = [ + "phf_generator 0.10.0", + "phf_shared 0.10.0", + "proc-macro2", + "quote", +] + +[[package]] +name = "strip-ansi-escapes" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55ff8ef943b384c414f54aefa961dd2bd853add74ec75e7ac74cf91dba62bcfa" +dependencies = [ + "vte", +] + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" +dependencies = [ + "strum_macros 0.25.3", +] + +[[package]] +name = "strum" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +dependencies = [ + "strum_macros 0.26.4", +] + +[[package]] +name = "strum_macros" +version = "0.25.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.90", +] + +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.90", +] + +[[package]] +name = "substrate-bn" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b5bbfa79abbae15dd642ea8176a21a635ff3c00059961d1ea27ad04e5b441c" +dependencies = [ + "byteorder", + "crunchy", + "lazy_static", + "rand", + "rustc-hex", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "svm-rs" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4aebac1b1ef2b46e2e2bdf3c09db304800f2a77c1fa902bd5231490203042be8" +dependencies = [ + "const-hex", + "dirs 5.0.1", + "fs4", + "reqwest", + "semver 1.0.24", + "serde", + "serde_json", + "sha2", + "tempfile", + "thiserror 1.0.69", + "url", + "zip", +] + +[[package]] +name = "svm-rs-builds" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2fa0f145894cb4d1c14446f08098ee5f21fc37ccbd1a7dd9dd355bbc806de3b" +dependencies = [ + "build_const", + "const-hex", + "semver 1.0.24", + "serde_json", + "svm-rs", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.90" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn-solidity" +version = "0.8.11" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=96d44f0#96d44f0e18b4bab5b58e0e7f2405514907734a95" +dependencies = [ + "paste", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "syn-solidity" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219389c1ebe89f8333df8bdfb871f6631c552ff399c23cac02480b6088aad8f0" +dependencies = [ + "paste", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tee_service_api" +version = "0.1.0" +source = "git+ssh://git@github.com/SeismicSystems/TEEService.git?rev=544b83711c53c8d72cd339718097f324add7adfc#544b83711c53c8d72cd339718097f324add7adfc" +dependencies = [ + "aes-gcm", + "anyhow", + "bincode", + "byteorder", + "bytes", + "hkdf", + "hyper 0.14.32", + "kbs-types", + "once_cell", + "reqwest", + "secp256k1", + "serde", + "serde_json", + "sha2", + "strum 0.25.0", + "tokio", +] + +[[package]] +name = "tempfile" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" +dependencies = [ + "cfg-if", + "fastrand", + "once_cell", + "rustix", + "windows-sys 0.59.0", +] + +[[package]] +name = "tendril" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" +dependencies = [ + "futf", + "mac", + "utf-8", +] + +[[package]] +name = "term" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" +dependencies = [ + "dirs-next", + "rustversion", + "winapi", +] + +[[package]] +name = "terminal_size" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5352447f921fda68cf61b4101566c0bdb5104eff6804d0678e5227580ab6a4e9" +dependencies = [ + "rustix", + "windows-sys 0.59.0", +] + +[[package]] +name = "terminfo" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "666cd3a6681775d22b200409aad3b089c5b99fb11ecdd8a204d9d62f8148498f" +dependencies = [ + "dirs 4.0.0", + "fnv", + "nom", + "phf", + "phf_codegen", +] + +[[package]] +name = "termtree" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f50febec83f5ee1df3015341d8bd429f2d1cc62bcba7ea2076759d315084683" + +[[package]] +name = "textwrap" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" +dependencies = [ + "smawk", + "unicode-linebreak", + "unicode-width 0.1.14", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f5383f3e0071702bf93ab5ee99b52d26936be9dedd9413067cbdcddcb6141a" +dependencies = [ + "thiserror-impl 2.0.8", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f357fcec90b3caef6623a099691be676d033b40a058ac95d2a6ade6fa0c943" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "threadpool" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" +dependencies = [ + "num_cpus", +] + +[[package]] +name = "tikv-jemalloc-sys" +version = "0.6.0+5.3.0-1-ge13ca993e8ccb9ba9847cc330696e02839f328f7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd3c60906412afa9c2b5b5a48ca6a5abe5736aec9eb48ad05037a677e52e4e2d" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "tikv-jemallocator" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cec5ff18518d81584f477e9bfdf957f5bb0979b0bac3af4ca30b5b3ae2d2865" +dependencies = [ + "libc", + "tikv-jemalloc-sys", +] + +[[package]] +name = "time" +version = "0.3.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" +dependencies = [ + "deranged", + "itoa", + "libc", + "num-conv", + "num_threads", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio 1.0.3", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-macros" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls 0.21.12", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" +dependencies = [ + "rustls 0.23.20", + "tokio", +] + +[[package]] +name = "tokio-socks" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d4770b8024672c1101b3f6733eab95b18007dbe0847a8afe341fcf79e06043f" +dependencies = [ + "either", + "futures-util", + "thiserror 1.0.69", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", + "tokio-util", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edc5f74e248dc973e0dbb7b74c7e0d6fcc301c694ff50049504004ef4d0cdcd9" +dependencies = [ + "futures-util", + "log", + "rustls 0.23.20", + "rustls-pki-types", + "tokio", + "tokio-rustls 0.26.1", + "tungstenite", + "webpki-roots", +] + +[[package]] +name = "tokio-util" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + +[[package]] +name = "toml" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +dependencies = [ + "indexmap 2.7.0", + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.22.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +dependencies = [ + "indexmap 2.7.0", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tonic" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" +dependencies = [ + "async-stream", + "async-trait", + "axum", + "base64 0.22.1", + "bytes", + "h2 0.4.7", + "http 1.2.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.5.2", + "hyper-timeout", + "hyper-util", + "percent-encoding", + "pin-project 1.1.7", + "prost", + "rustls-native-certs 0.8.1", + "rustls-pemfile 2.2.0", + "socket2", + "tokio", + "tokio-rustls 0.26.1", + "tokio-stream", + "tower 0.4.13", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "topological-sort" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea68304e134ecd095ac6c3574494fc62b909f416c4fca77e440530221e549d3d" + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "indexmap 1.9.3", + "pin-project 1.1.7", + "pin-project-lite", + "rand", + "slab", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-http" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" +dependencies = [ + "bitflags 2.6.0", + "bytes", + "futures-util", + "http 1.2.0", + "http-body 1.0.1", + "http-body-util", + "http-range-header", + "httpdate", + "mime", + "mime_guess", + "percent-encoding", + "pin-project-lite", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tower-util" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1093c19826d33807c72511e68f73b4a0469a3f22c2bd5f7d5212178b4b89674" +dependencies = [ + "futures-core", + "futures-util", + "pin-project 0.4.30", + "tower-service", +] + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "tracing-core" +version = "0.1.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-error" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b1581020d7a273442f5b45074a6a57d5757ad0a47dac0e9f0bd57b81936f3db" +dependencies = [ + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "tracing-tracy" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc775fdaf33c3dfd19dc354729e65e87914bc67dcdc390ca1210807b8bee5902" +dependencies = [ + "tracing-core", + "tracing-subscriber", + "tracy-client", +] + +[[package]] +name = "tracy-client" +version = "0.17.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73202d787346a5418f8222eddb5a00f29ea47caf3c7d38a8f2f69f8455fa7c7e" +dependencies = [ + "loom", + "once_cell", + "tracy-client-sys", +] + +[[package]] +name = "tracy-client-sys" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69fff37da548239c3bf9e64a12193d261e8b22b660991c6fd2df057c168f435f" +dependencies = [ + "cc", + "windows-targets 0.52.6", +] + +[[package]] +name = "trezor-client" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10636211ab89c96ed2824adc5ec0d081e1080aeacc24c37abb318dcb31dcc779" +dependencies = [ + "byteorder", + "hex", + "protobuf", + "rusb", + "thiserror 1.0.69", + "tracing", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "tungstenite" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18e5b8366ee7a95b16d32197d0b2604b43a0be89dc5fac9f8e96ccafbaedda8a" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http 1.2.0", + "httparse", + "log", + "rand", + "rustls 0.23.20", + "rustls-pki-types", + "sha1", + "thiserror 1.0.69", + "utf-8", +] + +[[package]] +name = "typed-arena" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "ucd-trie" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" + +[[package]] +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + +[[package]] +name = "uncased" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1b88fcfe09e89d3866a5c11019378088af2d24c3fbd4f0543f96b479ec90697" +dependencies = [ + "version_check", +] + +[[package]] +name = "unicase" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df" + +[[package]] +name = "unicode-bom" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7eec5d1121208364f6793f7d2e222bf75a915c19557537745b195b253dd64217" + +[[package]] +name = "unicode-ident" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" + +[[package]] +name = "unicode-linebreak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" + +[[package]] +name = "unicode-normalization" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "unicode-truncate" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3644627a5af5fa321c95b9b235a72fd24cd29c648c2c379431e6628655627bf" +dependencies = [ + "itertools 0.13.0", + "unicode-segmentation", + "unicode-width 0.1.14", +] + +[[package]] +name = "unicode-width" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" + +[[package]] +name = "unicode-width" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "universal-hash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +dependencies = [ + "crypto-common", + "subtle", +] + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "urlencoding" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +dependencies = [ + "getrandom", + "serde", +] + +[[package]] +name = "uuid" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" +dependencies = [ + "getrandom", + "serde", +] + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "vergen" +version = "8.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2990d9ea5967266ea0ccf413a4aa5c42a93dbcfda9cb49a97de6931726b12566" +dependencies = [ + "anyhow", + "cfg-if", + "rustversion", + "time", +] + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "vsimd" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64" + +[[package]] +name = "vte" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5022b5fbf9407086c180e9557be968742d839e68346af7792b8592489732197" +dependencies = [ + "utf8parse", + "vte_generate_state_changes", +] + +[[package]] +name = "vte_generate_state_changes" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e369bee1b05d510a7b4ed645f5faa90619e05437111783ea5848f28d97d3c2e" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "wait-timeout" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +dependencies = [ + "libc", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" +dependencies = [ + "cfg-if", + "once_cell", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn 2.0.90", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.49" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" + +[[package]] +name = "wasm-streams" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "wasmtimer" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0048ad49a55b9deb3953841fa1fc5858f0efbcb7a18868c899a360269fac1b23" +dependencies = [ + "futures", + "js-sys", + "parking_lot", + "pin-utils", + "slab", + "wasm-bindgen", +] + +[[package]] +name = "watchexec" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81e682bb1fe9526a6c78ffcfc6bb662ab36c213764fdd173babfbaf05cc56254" +dependencies = [ + "async-priority-channel", + "async-recursion", + "atomic-take", + "futures", + "ignore-files", + "miette", + "nix 0.29.0", + "normalize-path", + "notify", + "once_cell", + "process-wrap", + "project-origins", + "thiserror 1.0.69", + "tokio", + "tracing", + "watchexec-events", + "watchexec-signals", + "watchexec-supervisor", +] + +[[package]] +name = "watchexec-events" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2404ed3aa5e4a8f6139a2ee137926886c9144234c945102143ef9bf65309a751" +dependencies = [ + "nix 0.29.0", + "notify", + "watchexec-signals", +] + +[[package]] +name = "watchexec-signals" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be07d7855a3617d996ce0c7df4b6232159c526634dff668dd95491c22a9a7262" +dependencies = [ + "miette", + "nix 0.29.0", + "thiserror 1.0.69", +] + +[[package]] +name = "watchexec-supervisor" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6026815bdc9653d7820f6499b83ecadacd97a804dfabf2b2c55b061557f5f1f4" +dependencies = [ + "futures", + "nix 0.29.0", + "process-wrap", + "tokio", + "tracing", + "watchexec-events", + "watchexec-signals", +] + +[[package]] +name = "web-sys" +version = "0.3.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "0.26.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d642ff16b7e79272ae451b7322067cdc17cadf68c23264be9d94a32319efe7e" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "which" +version = "6.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f" +dependencies = [ + "either", + "home", + "rustix", + "winsafe", +] + +[[package]] +name = "widestring" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.56.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1de69df01bdf1ead2f4ac895dc77c9351aefff65b2f3db429a343f9cbf05e132" +dependencies = [ + "windows-core 0.56.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +dependencies = [ + "windows-core 0.58.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.56.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4698e52ed2d08f8658ab0c39512a7c00ee5fe2688c65f8c0a4f06750d729f2a6" +dependencies = [ + "windows-implement 0.56.0", + "windows-interface 0.56.0", + "windows-result 0.1.2", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +dependencies = [ + "windows-implement 0.58.0", + "windows-interface 0.58.0", + "windows-result 0.2.0", + "windows-strings", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-implement" +version = "0.56.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6fc35f58ecd95a9b71c4f2329b911016e6bec66b3f2e6a4aad86bd2e99e2f9b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "windows-implement" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "windows-interface" +version = "0.56.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08990546bf4edef8f431fa6326e032865f27138718c587dc21bc0265bbcb57cc" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "windows-interface" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "windows-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +dependencies = [ + "windows-result 0.2.0", + "windows-strings", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result 0.2.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winnow" +version = "0.6.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +dependencies = [ + "memchr", +] + +[[package]] +name = "winsafe" +version = "0.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" + +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + +[[package]] +name = "ws_stream_wasm" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7999f5f4217fe3818726b66257a4475f71e74ffd190776ad053fa159e50737f5" +dependencies = [ + "async_io_stream", + "futures", + "js-sys", + "log", + "pharos", + "rustc_version 0.4.1", + "send_wrapper", + "thiserror 1.0.69", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "xmlparser" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4" + +[[package]] +name = "yansi" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" +dependencies = [ + "is-terminal", +] + +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "zerofrom" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "zip" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae9c1ea7b3a5e1f4b922ff856a129881167511563dc219869afe3787fc0c1a45" +dependencies = [ + "arbitrary", + "bzip2", + "crc32fast", + "crossbeam-utils", + "displaydoc", + "flate2", + "indexmap 2.7.0", + "memchr", + "thiserror 2.0.8", + "zopfli", +] + +[[package]] +name = "zip-extract" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25a8c9e90f27d1435088a7b540b6cc8ae6ee525d992a695f16012d2f365b3d3c" +dependencies = [ + "log", + "thiserror 1.0.69", + "zip", +] + +[[package]] +name = "zopfli" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5019f391bac5cf252e93bbcc53d039ffd62c7bfb7c150414d61369afe57e946" +dependencies = [ + "bumpalo", + "crc32fast", + "lockfree-object-pool", + "log", + "once_cell", + "simd-adler32", +] + +[[patch.unused]] +name = "foundry-fork-db" +version = "0.3.1" +source = "git+ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git?rev=0d2a25e#0d2a25ed60758eb6a1caa897e608ec432ad338c7" diff --git a/Cargo.toml b/Cargo.toml index 7475ee5fe..06ddf4b94 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -177,8 +177,8 @@ solar-parse = { version = "=0.1.0", default-features = false } ## revm # no default features to avoid c-kzg -revm = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "647e76f4", default-features = false } -revm-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "647e76f4", default-features = false } +revm = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "659ee7f", default-features = false } +revm-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "659ee7f", default-features = false } revm-inspectors = { git = "ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "a77b988", features = ["serde"] } ## ethers @@ -210,13 +210,13 @@ alloy-node-bindings = { version = "0.8.0", default-features = false } alloy-network-primitives = { version = "0.8.0", default-features = false } ## alloy-core -alloy-dyn-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2", features = ["seismic", "std"] } -alloy-json-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2", features = ["seismic"] } -alloy-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2", features = ["getrandom", "rand", "seismic"] } -alloy-sol-macro-expander = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2", features = ["seismic"] } -alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2", features = ["seismic"] } -alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2", features = ["seismic"] } -syn-solidity = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2", features = ["seismic"] } +alloy-dyn-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "96d44f0", features = ["seismic", "std"] } +alloy-json-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "96d44f0", features = ["seismic"] } +alloy-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "96d44f0", features = ["getrandom", "rand", "seismic"] } +alloy-sol-macro-expander = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "96d44f0", features = ["seismic"] } +alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "96d44f0", features = ["seismic"] } +alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "96d44f0", features = ["seismic"] } +syn-solidity = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "96d44f0", features = ["seismic"] } alloy-chains = "0.1" alloy-rlp = "0.3" @@ -299,17 +299,17 @@ yansi = { version = "1.0", features = ["detect-tty", "detect-env"] } # and instead use our local version # seismic-revm -revm = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "647e76f4" } -revm-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "647e76f4" } +revm = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "659ee7f" } +revm-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "659ee7f" } foundry-fork-db = { git = "ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "0d2a25e" } # seismic-alloy-core -alloy-dyn-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2" } -alloy-json-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2" } -alloy-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2" } -alloy-sol-macro = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2" } -alloy-sol-macro-expander = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2" } -alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2" } -alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2" } -alloy-sol-type-parser = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2" } +alloy-dyn-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "96d44f0" } +alloy-json-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "96d44f0" } +alloy-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "96d44f0" } +alloy-sol-macro = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "96d44f0" } +alloy-sol-macro-expander = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "96d44f0" } +alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "96d44f0" } +alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "96d44f0" } +alloy-sol-type-parser = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "96d44f0" } diff --git a/crates/anvil/src/eth/backend/mem/mod.rs b/crates/anvil/src/eth/backend/mem/mod.rs index 97f825fbe..59255805b 100644 --- a/crates/anvil/src/eth/backend/mem/mod.rs +++ b/crates/anvil/src/eth/backend/mem/mod.rs @@ -2589,11 +2589,7 @@ impl Backend { .map(|(key, proof)| { let storage_key: U256 = key.into(); let value = account.storage.get(&storage_key).cloned().unwrap_or_default(); -<<<<<<< HEAD StorageProof { key: JsonStorageKey(key), value: value.into(), proof } -======= - StorageProof { key: JsonStorageKey::Hash(key), value, proof } ->>>>>>> 5a8bd893eeeeb9489ea66dd52a02eeaa580e3af0 }) .collect(), }; diff --git a/crates/common/fmt/Cargo.toml b/crates/common/fmt/Cargo.toml index e9e7077c2..2a713d0a0 100644 --- a/crates/common/fmt/Cargo.toml +++ b/crates/common/fmt/Cargo.toml @@ -16,7 +16,6 @@ workspace = true [dependencies] alloy-primitives.workspace = true alloy-dyn-abi = { workspace = true, features = ["eip712", "seismic"] } -yansi.workspace = true # ui alloy-consensus.workspace = true From b7027639f37260dfd0f86e76f18b0f5d8ba95dfa Mon Sep 17 00:00:00 2001 From: Ameya Date: Fri, 20 Dec 2024 18:13:54 +0530 Subject: [PATCH 015/130] fmt --- Cargo.lock | 12 ++-- crates/anvil/core/src/eth/serde_helpers.rs | 4 +- crates/anvil/core/src/eth/transaction/mod.rs | 4 +- crates/anvil/server/src/ipc.rs | 2 +- crates/anvil/server/src/pubsub.rs | 16 ++--- crates/anvil/src/anvil.rs | 2 +- crates/anvil/src/cmd.rs | 12 ++-- crates/anvil/src/eth/api.rs | 30 +++++----- crates/anvil/src/eth/backend/cheats.rs | 2 +- crates/anvil/src/eth/backend/executor.rs | 14 ++--- crates/anvil/src/eth/backend/mem/fork_db.rs | 3 +- crates/anvil/src/eth/backend/mem/mod.rs | 34 +++++------ crates/anvil/src/eth/backend/time.rs | 2 +- crates/anvil/src/eth/fees.rs | 8 +-- crates/anvil/src/eth/miner.rs | 8 +-- crates/anvil/src/eth/pool/mod.rs | 14 ++--- crates/anvil/src/eth/pool/transactions.rs | 8 +-- crates/anvil/src/filter.rs | 6 +- crates/anvil/src/service.rs | 4 +- crates/anvil/src/tasks/block_listener.rs | 4 +- crates/anvil/tests/it/transaction.rs | 2 +- crates/cast/bin/cmd/logs.rs | 2 +- crates/cast/bin/cmd/run.rs | 2 +- crates/cheatcodes/spec/src/lib.rs | 2 +- crates/cheatcodes/src/evm.rs | 6 +- crates/cheatcodes/src/evm/mapping.rs | 2 +- crates/cheatcodes/src/inspector.rs | 2 +- crates/cheatcodes/src/json.rs | 4 +- crates/cheatcodes/src/test/assert.rs | 8 +-- crates/cheatcodes/src/test/expect.rs | 20 +++---- crates/cheatcodes/src/utils.rs | 12 ++-- crates/chisel/bin/main.rs | 14 ++--- crates/chisel/src/dispatcher.rs | 46 +++++++-------- crates/chisel/src/executor.rs | 36 ++++++------ crates/chisel/src/session.rs | 2 +- crates/chisel/src/solidity_helper.rs | 4 +- crates/cli/src/handler.rs | 2 +- crates/cli/src/opts/dependency.rs | 2 +- crates/cli/src/utils/abi.rs | 2 +- crates/cli/src/utils/cmd.rs | 2 +- crates/common/fmt/src/exp.rs | 2 +- crates/common/fmt/src/ui.rs | 2 +- crates/common/src/abi.rs | 2 +- crates/common/src/ens.rs | 2 +- crates/common/src/term.rs | 4 +- crates/common/src/transactions.rs | 2 +- crates/config/src/cache.rs | 2 +- crates/config/src/endpoints.rs | 2 +- crates/config/src/fix.rs | 10 ++-- crates/config/src/inline/natspec.rs | 12 ++-- crates/config/src/providers/remappings.rs | 4 +- crates/debugger/src/node.rs | 2 +- crates/debugger/src/tui/context.rs | 2 +- crates/doc/src/builder.rs | 4 +- crates/doc/src/document.rs | 8 +-- crates/doc/src/parser/comment.rs | 2 +- .../src/preprocessor/contract_inheritance.rs | 2 +- .../doc/src/preprocessor/infer_hyperlinks.rs | 20 ++++--- crates/doc/src/preprocessor/inheritdoc.rs | 2 +- crates/doc/src/writer/buf_writer.rs | 2 +- crates/evm/core/src/backend/cow.rs | 6 +- crates/evm/core/src/backend/mod.rs | 4 +- crates/evm/core/src/utils.rs | 4 +- crates/evm/coverage/src/anchors.rs | 2 +- crates/evm/evm/src/executors/fuzz/mod.rs | 2 +- crates/evm/evm/src/executors/invariant/mod.rs | 14 ++--- crates/evm/evm/src/inspectors/stack.rs | 4 +- crates/evm/fuzz/src/invariant/filters.rs | 6 +- crates/evm/fuzz/src/strategies/int.rs | 10 ++-- crates/evm/fuzz/src/strategies/uint.rs | 6 +- crates/evm/traces/src/debug/mod.rs | 2 +- crates/evm/traces/src/identifier/etherscan.rs | 12 ++-- crates/fmt/src/buffer.rs | 18 +++--- crates/fmt/src/comments.rs | 8 +-- crates/fmt/src/formatter.rs | 58 +++++++++---------- crates/fmt/src/helpers.rs | 2 +- crates/fmt/src/macros.rs | 4 +- crates/fmt/src/solang_ext/ast_eq.rs | 4 +- crates/fmt/src/string.rs | 6 +- crates/fmt/tests/formatter.rs | 2 +- crates/forge/bin/cmd/bind.rs | 6 +- crates/forge/bin/cmd/bind_json.rs | 2 +- crates/forge/bin/cmd/cache.rs | 2 +- crates/forge/bin/cmd/config.rs | 2 +- crates/forge/bin/cmd/eip712.rs | 14 ++--- crates/forge/bin/cmd/fmt.rs | 6 +- crates/forge/bin/cmd/inspect.rs | 2 +- crates/forge/bin/cmd/install.rs | 22 +++---- crates/forge/bin/cmd/selectors.rs | 4 +- crates/forge/bin/cmd/snapshot.rs | 4 +- crates/forge/bin/cmd/watch.rs | 4 +- crates/forge/src/runner.rs | 6 +- crates/forge/tests/cli/verify.rs | 2 +- crates/macros/src/cheatcodes.rs | 10 ++-- crates/macros/src/console_fmt.rs | 2 +- crates/script-sequence/src/sequence.rs | 6 +- crates/script/src/receipts.rs | 2 +- crates/script/src/transaction.rs | 2 +- crates/script/src/verify.rs | 4 +- crates/verify/src/etherscan/mod.rs | 20 +++---- crates/verify/src/utils.rs | 4 +- crates/verify/src/verify.rs | 2 +- 102 files changed, 379 insertions(+), 372 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0f6c01950..bcafb5e23 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "Inflector" @@ -7908,7 +7908,7 @@ dependencies = [ [[package]] name = "revm" version = "18.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=e5b8feb#e5b8feb415155a4d698bb45fd04b5ba31c2cd9ce" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=659ee7f#659ee7f4f77c3c92cc461293f0271eec4a3ee006" dependencies = [ "aes-gcm", "alloy-primitives 0.8.11", @@ -7959,7 +7959,7 @@ dependencies = [ [[package]] name = "revm-interpreter" version = "14.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=e5b8feb#e5b8feb415155a4d698bb45fd04b5ba31c2cd9ce" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=659ee7f#659ee7f4f77c3c92cc461293f0271eec4a3ee006" dependencies = [ "revm-primitives 14.0.0", "serde", @@ -7986,7 +7986,7 @@ dependencies = [ [[package]] name = "revm-precompile" version = "15.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=e5b8feb#e5b8feb415155a4d698bb45fd04b5ba31c2cd9ce" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=659ee7f#659ee7f4f77c3c92cc461293f0271eec4a3ee006" dependencies = [ "aurora-engine-modexp", "blst", @@ -8025,7 +8025,7 @@ dependencies = [ [[package]] name = "revm-primitives" version = "14.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=e5b8feb#e5b8feb415155a4d698bb45fd04b5ba31c2cd9ce" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=659ee7f#659ee7f4f77c3c92cc461293f0271eec4a3ee006" dependencies = [ "alloy-eip2930", "alloy-eip7702 0.4.2", @@ -8038,6 +8038,8 @@ dependencies = [ "dyn-clone", "enumn", "hex", + "proptest", + "proptest-derive", "serde", ] diff --git a/crates/anvil/core/src/eth/serde_helpers.rs b/crates/anvil/core/src/eth/serde_helpers.rs index f7d5bd46d..d2071aeb5 100644 --- a/crates/anvil/core/src/eth/serde_helpers.rs +++ b/crates/anvil/core/src/eth/serde_helpers.rs @@ -27,7 +27,7 @@ pub mod sequence { return Err(serde::de::Error::custom(format!( "expected params sequence with length 1 but got {}", seq.len() - ))) + ))); } Ok(seq.remove(0)) } @@ -46,7 +46,7 @@ pub mod empty_params { return Err(serde::de::Error::custom(format!( "expected params sequence with length 0 but got {}", seq.len() - ))) + ))); } Ok(()) } diff --git a/crates/anvil/core/src/eth/transaction/mod.rs b/crates/anvil/core/src/eth/transaction/mod.rs index 29b8aee88..f2b13b7c8 100644 --- a/crates/anvil/core/src/eth/transaction/mod.rs +++ b/crates/anvil/core/src/eth/transaction/mod.rs @@ -221,7 +221,7 @@ impl MaybeImpersonatedTransaction { #[cfg(feature = "impersonated-tx")] pub fn hash(&self) -> B256 { if let Some(sender) = self.impersonated_sender { - return self.transaction.impersonated_hash(sender) + return self.transaction.impersonated_hash(sender); } self.transaction.hash() } @@ -1045,7 +1045,7 @@ impl Encodable2718 for TypedTransaction { impl Decodable2718 for TypedTransaction { fn typed_decode(ty: u8, buf: &mut &[u8]) -> Result { if ty == 0x7E { - return Ok(Self::Deposit(DepositTransaction::decode(buf)?)) + return Ok(Self::Deposit(DepositTransaction::decode(buf)?)); } match TxEnvelope::typed_decode(ty, buf)? { TxEnvelope::Eip2930(tx) => Ok(Self::EIP2930(tx)), diff --git a/crates/anvil/server/src/ipc.rs b/crates/anvil/server/src/ipc.rs index 8743f0642..5df345452 100644 --- a/crates/anvil/server/src/ipc.rs +++ b/crates/anvil/server/src/ipc.rs @@ -159,7 +159,7 @@ impl tokio_util::codec::Decoder for JsonRpcCodec { return match String::from_utf8(bts.as_ref().to_vec()) { Ok(val) => Ok(Some(val)), Err(_) => Ok(None), - } + }; } } Ok(None) diff --git a/crates/anvil/server/src/pubsub.rs b/crates/anvil/server/src/pubsub.rs index 8e5ac9b38..24476f67b 100644 --- a/crates/anvil/server/src/pubsub.rs +++ b/crates/anvil/server/src/pubsub.rs @@ -68,7 +68,7 @@ impl PubSubContext { let mut subscriptions = self.subscriptions.lock(); if let Some(idx) = subscriptions.iter().position(|(i, _)| id == i) { trace!(target: "rpc", ?id, "removed subscription"); - return Some(subscriptions.swap_remove(idx).1) + return Some(subscriptions.swap_remove(idx).1); } None } @@ -174,7 +174,7 @@ where error!(target: "rpc", ?err, "Failed to send message"); } } else { - break + break; } } @@ -183,7 +183,7 @@ where if let Poll::Ready(Err(err)) = pin.connection.poll_flush_unpin(cx) { trace!(target: "rpc", ?err, "websocket err"); // close the connection - return Poll::Ready(()) + return Poll::Ready(()); } loop { @@ -195,25 +195,25 @@ where Err(err) => match err { RequestError::Axum(err) => { trace!(target: "rpc", ?err, "client disconnected"); - return Poll::Ready(()) + return Poll::Ready(()); } RequestError::Io(err) => { trace!(target: "rpc", ?err, "client disconnected"); - return Poll::Ready(()) + return Poll::Ready(()); } RequestError::Serde(err) => { pin.process_request(Err(err)); } RequestError::Disconnect => { trace!(target: "rpc", "client disconnected"); - return Poll::Ready(()) + return Poll::Ready(()); } }, _ => {} }, Poll::Ready(None) => { trace!(target: "rpc", "socket connection finished"); - return Poll::Ready(()) + return Poll::Ready(()); } Poll::Pending => break, } @@ -256,7 +256,7 @@ where } if !progress { - return Poll::Pending + return Poll::Pending; } } } diff --git a/crates/anvil/src/anvil.rs b/crates/anvil/src/anvil.rs index 48e17ed44..63b3b20c8 100644 --- a/crates/anvil/src/anvil.rs +++ b/crates/anvil/src/anvil.rs @@ -69,7 +69,7 @@ fn run() -> Result<()> { &mut std::io::stdout(), ), } - return Ok(()) + return Ok(()); } let _ = fdlimit::raise_fd_limit(); diff --git a/crates/anvil/src/cmd.rs b/crates/anvil/src/cmd.rs index 19e9193f9..dde82f19b 100644 --- a/crates/anvil/src/cmd.rs +++ b/crates/anvil/src/cmd.rs @@ -661,7 +661,7 @@ impl Future for PeriodicStateDumper { fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { let this = self.get_mut(); if this.dump_state.is_none() { - return Poll::Pending + return Poll::Pending; } loop { @@ -672,7 +672,7 @@ impl Future for PeriodicStateDumper { } Poll::Pending => { this.in_progress_dump = Some(flush); - return Poll::Pending + return Poll::Pending; } } } @@ -683,7 +683,7 @@ impl Future for PeriodicStateDumper { this.in_progress_dump = Some(Box::pin(Self::dump_state(api, path, this.preserve_historical_states))); } else { - break + break; } } @@ -713,7 +713,7 @@ impl StateFile { } let mut state = Self { path, state: None }; if !state.path.exists() { - return Ok(state) + return Ok(state); } state.state = Some(SerializableState::load(&state.path).map_err(|err| err.to_string())?); @@ -748,14 +748,14 @@ impl FromStr for ForkUrl { fn from_str(s: &str) -> Result { if let Some((url, block)) = s.rsplit_once('@') { if block == "latest" { - return Ok(Self { url: url.to_string(), block: None }) + return Ok(Self { url: url.to_string(), block: None }); } // this will prevent false positives for auths `user:password@example.com` if !block.is_empty() && !block.contains(':') && !block.contains('.') { let block: u64 = block .parse() .map_err(|_| format!("Failed to parse block number: `{block}`"))?; - return Ok(Self { url: url.to_string(), block: Some(block) }) + return Ok(Self { url: url.to_string(), block: Some(block) }); } } Ok(Self { url: s.to_string(), block: None }) diff --git a/crates/anvil/src/eth/api.rs b/crates/anvil/src/eth/api.rs index fdc6fa92e..b44d5d205 100644 --- a/crates/anvil/src/eth/api.rs +++ b/crates/anvil/src/eth/api.rs @@ -374,7 +374,7 @@ impl EthApi { if time >= U256::from(u64::MAX) { return ResponseResult::Error(RpcError::invalid_params( "The timestamp is too big", - )) + )); } let time = time.to::(); self.evm_set_next_block_timestamp(time).to_rpc_result() @@ -383,7 +383,7 @@ impl EthApi { if timestamp >= U256::from(u64::MAX) { return ResponseResult::Error(RpcError::invalid_params( "The timestamp is too big", - )) + )); } let time = timestamp.to::(); self.evm_set_time(time).to_rpc_result() @@ -483,13 +483,13 @@ impl EthApi { B256::with_last_byte(1), false, ); - return build_typed_transaction(request, nil_signature) + return build_typed_transaction(request, nil_signature); } _ => { for signer in self.signers.iter() { if signer.accounts().contains(from) { let signature = signer.sign_transaction(request.clone(), from)?; - return build_typed_transaction(request, signature) + return build_typed_transaction(request, signature); } } } @@ -680,7 +680,7 @@ impl EthApi { if let BlockRequest::Number(number) = block_request { if let Some(fork) = self.get_fork() { if fork.predates_fork(number) { - return Ok(fork.get_balance(address, number).await?) + return Ok(fork.get_balance(address, number).await?); } } } @@ -703,7 +703,7 @@ impl EthApi { if let BlockRequest::Number(number) = block_request { if let Some(fork) = self.get_fork() { if fork.predates_fork(number) { - return Ok(fork.get_account(address, number).await?) + return Ok(fork.get_account(address, number).await?); } } } @@ -860,7 +860,7 @@ impl EthApi { if let BlockRequest::Number(number) = block_request { if let Some(fork) = self.get_fork() { if fork.predates_fork(number) { - return Ok(fork.get_code(address, number).await?) + return Ok(fork.get_code(address, number).await?); } } } @@ -885,7 +885,7 @@ impl EthApi { if let BlockRequest::Number(number) = block_request { if let Some(fork) = self.get_fork() { if fork.predates_fork_inclusive(number) { - return Ok(fork.get_proof(address, keys, Some(number.into())).await?) + return Ok(fork.get_proof(address, keys, Some(number.into())).await?); } } } @@ -1071,7 +1071,7 @@ impl EthApi { "not available on past forked blocks".to_string(), )); } - return Ok(fork.call(&request, Some(number.into())).await?) + return Ok(fork.call(&request, Some(number.into())).await?); } } } @@ -1119,7 +1119,7 @@ impl EthApi { if let BlockRequest::Number(number) = block_request { if let Some(fork) = self.get_fork() { if fork.predates_fork(number) { - return Ok(fork.create_access_list(&request, Some(number.into())).await?) + return Ok(fork.create_access_list(&request, Some(number.into())).await?); } } } @@ -1260,7 +1260,7 @@ impl EthApi { self.backend.ensure_block_number(Some(BlockId::Hash(block_hash.into()))).await?; if let Some(fork) = self.get_fork() { if fork.predates_fork_inclusive(number) { - return Ok(fork.uncle_by_block_hash_and_index(block_hash, idx.into()).await?) + return Ok(fork.uncle_by_block_hash_and_index(block_hash, idx.into()).await?); } } // It's impossible to have uncles outside of fork mode @@ -1279,7 +1279,7 @@ impl EthApi { let number = self.backend.ensure_block_number(Some(BlockId::Number(block_number))).await?; if let Some(fork) = self.get_fork() { if fork.predates_fork_inclusive(number) { - return Ok(fork.uncle_by_block_number_and_index(number, idx.into()).await?) + return Ok(fork.uncle_by_block_number_and_index(number, idx.into()).await?); } } // It's impossible to have uncles outside of fork mode @@ -2404,7 +2404,7 @@ impl EthApi { // Validate the request // reject transactions that have a non-zero value to prevent draining the executor. if request.value.is_some_and(|val| val > U256::ZERO) { - return Err(WalletError::ValueNotZero.into()) + return Err(WalletError::ValueNotZero.into()); } // reject transactions that have from set, as this will be the executor. @@ -2578,7 +2578,7 @@ impl EthApi { "not available on past forked blocks".to_string(), )); } - return Ok(fork.estimate_gas(&request, Some(number.into())).await?) + return Ok(fork.estimate_gas(&request, Some(number.into())).await?); } } } @@ -2939,7 +2939,7 @@ impl EthApi { if let BlockRequest::Number(number) = block_request { if let Some(fork) = self.get_fork() { if fork.predates_fork(number) { - return Ok(fork.get_nonce(address, number).await?) + return Ok(fork.get_nonce(address, number).await?); } } } diff --git a/crates/anvil/src/eth/backend/cheats.rs b/crates/anvil/src/eth/backend/cheats.rs index 32115cf41..64673040f 100644 --- a/crates/anvil/src/eth/backend/cheats.rs +++ b/crates/anvil/src/eth/backend/cheats.rs @@ -27,7 +27,7 @@ impl CheatsManager { // which does not check that list when auto impersonation is enabled. if state.impersonated_accounts.contains(&addr) { // need to check if already impersonated, so we don't overwrite the code - return true + return true; } state.impersonated_accounts.insert(addr) } diff --git a/crates/anvil/src/eth/backend/executor.rs b/crates/anvil/src/eth/backend/executor.rs index f4b20868f..81a714ce1 100644 --- a/crates/anvil/src/eth/backend/executor.rs +++ b/crates/anvil/src/eth/backend/executor.rs @@ -148,22 +148,22 @@ impl TransactionExecutor<'_, DB, V> { } TransactionExecutionOutcome::Exhausted(tx) => { trace!(target: "backend", tx_gas_limit = %tx.pending_transaction.transaction.gas_limit(), ?tx, "block gas limit exhausting, skipping transaction"); - continue + continue; } TransactionExecutionOutcome::BlobGasExhausted(tx) => { trace!(target: "backend", blob_gas = %tx.pending_transaction.transaction.blob_gas().unwrap_or_default(), ?tx, "block blob gas limit exhausting, skipping transaction"); - continue + continue; } TransactionExecutionOutcome::Invalid(tx, _) => { trace!(target: "backend", ?tx, "skipping invalid transaction"); invalid.push(tx); - continue + continue; } TransactionExecutionOutcome::DatabaseError(_, err) => { // Note: this is only possible in forking mode, if for example a rpc request // failed trace!(target: "backend", ?err, "Failed to execute transaction due to database error"); - continue + continue; } }; if is_cancun { @@ -281,7 +281,7 @@ impl Iterator for &mut TransactionExec // check that we comply with the block's gas limit, if not disabled let max_gas = self.gas_used.saturating_add(env.tx.gas_limit); if !env.cfg.disable_block_gas_limit && max_gas > env.block.gas_limit.to::() { - return Some(TransactionExecutionOutcome::Exhausted(transaction)) + return Some(TransactionExecutionOutcome::Exhausted(transaction)); } // check that we comply with the block's blob gas limit @@ -289,7 +289,7 @@ impl Iterator for &mut TransactionExec transaction.pending_transaction.transaction.transaction.blob_gas().unwrap_or(0), ); if max_blob_gas > MAX_BLOB_GAS_PER_BLOCK { - return Some(TransactionExecutionOutcome::BlobGasExhausted(transaction)) + return Some(TransactionExecutionOutcome::BlobGasExhausted(transaction)); } // validate before executing @@ -299,7 +299,7 @@ impl Iterator for &mut TransactionExec &env, ) { warn!(target: "backend", "Skipping invalid tx execution [{:?}] {}", transaction.hash(), err); - return Some(TransactionExecutionOutcome::Invalid(transaction, err)) + return Some(TransactionExecutionOutcome::Invalid(transaction, err)); } let nonce = account.nonce; diff --git a/crates/anvil/src/eth/backend/mem/fork_db.rs b/crates/anvil/src/eth/backend/mem/fork_db.rs index ebd47045f..462257e0b 100644 --- a/crates/anvil/src/eth/backend/mem/fork_db.rs +++ b/crates/anvil/src/eth/backend/mem/fork_db.rs @@ -14,8 +14,7 @@ use foundry_evm::{ fork::database::ForkDbStateSnapshot, revm::{primitives::BlockEnv, Database}, }; -use revm::primitives::FlaggedStorage; -use revm::{db::DbAccount, DatabaseRef}; +use revm::{db::DbAccount, primitives::FlaggedStorage, DatabaseRef}; pub use foundry_evm::fork::database::ForkedDatabase; diff --git a/crates/anvil/src/eth/backend/mem/mod.rs b/crates/anvil/src/eth/backend/mem/mod.rs index 59255805b..5185c3114 100644 --- a/crates/anvil/src/eth/backend/mem/mod.rs +++ b/crates/anvil/src/eth/backend/mem/mod.rs @@ -445,7 +445,7 @@ impl Backend { /// Returns `true` if the account is already impersonated pub fn impersonate(&self, addr: Address) -> bool { if self.cheats.impersonated_accounts().contains(&addr) { - return true + return true; } // Ensure EIP-3607 is disabled let mut env = self.env.write(); @@ -753,7 +753,7 @@ impl Backend { /// Returns an error if op-stack deposits are not active pub fn ensure_op_deposits_active(&self) -> Result<(), BlockchainError> { if self.is_optimism() { - return Ok(()) + return Ok(()); } Err(BlockchainError::DepositTransactionUnsupported) } @@ -1524,7 +1524,7 @@ impl Backend { GethDebugTracerType::JsTracer(_code) => { Err(RpcError::invalid_params("unsupported tracer type").into()) } - } + }; } // defaults to StructLog tracer used since no tracer is specified @@ -1762,7 +1762,7 @@ impl Backend { } if let Some(fork) = self.get_fork() { - return Ok(fork.block_by_hash_full(hash).await?) + return Ok(fork.block_by_hash_full(hash).await?); } Ok(None) @@ -1813,7 +1813,7 @@ impl Backend { if let Some(fork) = self.get_fork() { let number = self.convert_block_number(Some(number)); if fork.predates_fork_inclusive(number) { - return Ok(fork.block_by_number(number).await?) + return Ok(fork.block_by_number(number).await?); } } @@ -1832,7 +1832,7 @@ impl Backend { if let Some(fork) = self.get_fork() { let number = self.convert_block_number(Some(number)); if fork.predates_fork_inclusive(number) { - return Ok(fork.block_by_number_full(number).await?) + return Ok(fork.block_by_number_full(number).await?); } } @@ -2160,7 +2160,7 @@ impl Backend { } if let Some(fork) = self.get_fork() { - return Ok(fork.trace_transaction(hash).await?) + return Ok(fork.trace_transaction(hash).await?); } Ok(vec![]) @@ -2204,7 +2204,7 @@ impl Backend { } if let Some(fork) = self.get_fork() { - return Ok(fork.debug_trace_transaction(hash, opts).await?) + return Ok(fork.debug_trace_transaction(hash, opts).await?); } Ok(GethTrace::Default(Default::default())) @@ -2230,7 +2230,7 @@ impl Backend { if let Some(fork) = self.get_fork() { if fork.predates_fork(number) { - return Ok(fork.trace_block(number).await?) + return Ok(fork.trace_block(number).await?); } } @@ -2462,7 +2462,7 @@ impl Backend { if let Some(fork) = self.get_fork() { let number = self.convert_block_number(Some(number)); if fork.predates_fork(number) { - return Ok(fork.transaction_by_block_number_and_index(number, index.into()).await?) + return Ok(fork.transaction_by_block_number_and_index(number, index.into()).await?); } } @@ -2479,7 +2479,7 @@ impl Backend { } if let Some(fork) = self.get_fork() { - return Ok(fork.transaction_by_block_hash_and_index(hash, index.into()).await?) + return Ok(fork.transaction_by_block_hash_and_index(hash, index.into()).await?); } Ok(None) @@ -2518,7 +2518,7 @@ impl Backend { } if let Some(fork) = self.get_fork() { - return fork.transaction_by_hash(hash).await.map_err(BlockchainError::AlloyForkProvider) + return fork.transaction_by_hash(hash).await.map_err(BlockchainError::AlloyForkProvider); } Ok(None) @@ -2703,7 +2703,7 @@ fn get_pool_transactions_nonce( .max() { let tx_count = highest_nonce.saturating_add(1); - return Some(tx_count) + return Some(tx_count); } None } @@ -2806,17 +2806,17 @@ impl TransactionValidator for Backend { // Ensure there are blob hashes. if blob_count == 0 { - return Err(InvalidTransactionError::NoBlobHashes) + return Err(InvalidTransactionError::NoBlobHashes); } // Ensure the tx does not exceed the max blobs per block. if blob_count > MAX_BLOBS_PER_BLOCK { - return Err(InvalidTransactionError::TooManyBlobs(MAX_BLOBS_PER_BLOCK, blob_count)) + return Err(InvalidTransactionError::TooManyBlobs(MAX_BLOBS_PER_BLOCK, blob_count)); } // Check for any blob validation errors if let Err(err) = tx.validate(env.cfg.kzg_settings.get()) { - return Err(InvalidTransactionError::BlobTransactionValidationError(err)) + return Err(InvalidTransactionError::BlobTransactionValidationError(err)); } } @@ -3035,7 +3035,7 @@ pub fn prove_storage(storage: &HashMap, keys: &[B256]) -> pub fn is_arbitrum(chain_id: u64) -> bool { if let Ok(chain) = NamedChain::try_from(chain_id) { - return chain.is_arbitrum() + return chain.is_arbitrum(); } false } diff --git a/crates/anvil/src/eth/backend/time.rs b/crates/anvil/src/eth/backend/time.rs index 3ae9524f0..175f27924 100644 --- a/crates/anvil/src/eth/backend/time.rs +++ b/crates/anvil/src/eth/backend/time.rs @@ -73,7 +73,7 @@ impl TimeManager { if timestamp < *self.last_timestamp.read() { return Err(BlockchainError::TimestampError(format!( "{timestamp} is lower than previous block's timestamp" - ))) + ))); } self.next_exact_timestamp.write().replace(timestamp); Ok(()) diff --git a/crates/anvil/src/eth/fees.rs b/crates/anvil/src/eth/fees.rs index f41c51505..d9bf815a6 100644 --- a/crates/anvil/src/eth/fees.rs +++ b/crates/anvil/src/eth/fees.rs @@ -165,7 +165,7 @@ impl FeeManager { // It means it was set by the user deliberately and therefore we treat it as a constant. // Therefore, we skip the base fee calculation altogether and we return 0. if self.base_fee() == 0 { - return 0 + return 0; } calculate_next_block_base_fee(gas_used, gas_limit, last_fee_per_gas) } @@ -317,7 +317,7 @@ impl FeeHistoryService { for (gas_used, effective_reward) in transactions.iter().cloned() { sum_gas += gas_used; if target_gas <= sum_gas { - return Some(effective_reward) + return Some(effective_reward); } } None @@ -439,7 +439,7 @@ impl FeeDetails { if let Some(max_priority) = max_priority { let max_fee = max_fee.unwrap_or_default(); if max_priority > max_fee { - return Err(BlockchainError::InvalidFeeInput) + return Err(BlockchainError::InvalidFeeInput); } } Ok(Self { @@ -455,7 +455,7 @@ impl FeeDetails { if let Some(max_priority) = max_priority { let max_fee = max_fee.unwrap_or_default(); if max_priority > max_fee { - return Err(BlockchainError::InvalidFeeInput) + return Err(BlockchainError::InvalidFeeInput); } } Ok(Self { diff --git a/crates/anvil/src/eth/miner.rs b/crates/anvil/src/eth/miner.rs index 90c455090..96034e5a7 100644 --- a/crates/anvil/src/eth/miner.rs +++ b/crates/anvil/src/eth/miner.rs @@ -67,7 +67,7 @@ impl Miner { pub fn get_interval(&self) -> Option { let mode = self.mode.read(); if let MiningMode::FixedBlockTime(ref mm) = *mode { - return Some(mm.interval.period().as_secs()) + return Some(mm.interval.period().as_secs()); } None } @@ -221,7 +221,7 @@ impl FixedBlockTimeMiner { fn poll(&mut self, pool: &Arc, cx: &mut Context<'_>) -> Poll>> { if self.interval.poll_tick(cx).is_ready() { // drain the pool - return Poll::Ready(pool.ready_transactions().collect()) + return Poll::Ready(pool.ready_transactions().collect()); } Poll::Pending } @@ -251,7 +251,7 @@ impl ReadyTransactionMiner { } if self.has_pending_txs == Some(false) { - return Poll::Pending + return Poll::Pending; } let transactions = @@ -261,7 +261,7 @@ impl ReadyTransactionMiner { self.has_pending_txs = Some(transactions.len() >= self.max_transactions); if transactions.is_empty() { - return Poll::Pending + return Poll::Pending; } Poll::Ready(transactions) diff --git a/crates/anvil/src/eth/pool/mod.rs b/crates/anvil/src/eth/pool/mod.rs index 544d7eac9..9d105fc69 100644 --- a/crates/anvil/src/eth/pool/mod.rs +++ b/crates/anvil/src/eth/pool/mod.rs @@ -228,7 +228,7 @@ impl PoolInner { /// Returns `None` if the transaction does not exist in the pool fn get_transaction(&self, hash: TxHash) -> Option { if let Some(pending) = self.pending_transactions.get(&hash) { - return Some(pending.transaction.pending_transaction.clone()) + return Some(pending.transaction.pending_transaction.clone()); } Some( self.ready_transactions.get(&hash)?.transaction.transaction.pending_transaction.clone(), @@ -261,7 +261,7 @@ impl PoolInner { fn add_transaction(&mut self, tx: PoolTransaction) -> Result { if self.contains(&tx.hash()) { warn!(target: "txpool", "[{:?}] Already imported", tx.hash()); - return Err(PoolError::AlreadyImported(Box::new(tx))) + return Err(PoolError::AlreadyImported(Box::new(tx))); } let tx = PendingPoolTransaction::new(tx, self.ready_transactions.provided_markers()); @@ -271,7 +271,7 @@ impl PoolInner { if !tx.is_ready() { let hash = tx.transaction.hash(); self.pending_transactions.add_transaction(tx)?; - return Ok(AddedTransaction::Pending { hash }) + return Ok(AddedTransaction::Pending { hash }); } self.add_ready_transaction(tx) } @@ -311,7 +311,7 @@ impl PoolInner { if is_new_tx { debug!(target: "txpool", "[{:?}] Failed to add tx: {:?}", current_hash, err); - return Err(err) + return Err(err); } else { ready.discarded.push(current_hash); } @@ -325,7 +325,7 @@ impl PoolInner { // the pending queue if ready.removed.iter().any(|tx| *tx.hash() == hash) { self.ready_transactions.clear_transactions(&ready.promoted); - return Err(PoolError::CyclicTransaction) + return Err(PoolError::CyclicTransaction); } Ok(AddedTransaction::Ready(ready)) @@ -366,7 +366,7 @@ impl PoolInner { pub fn remove_invalid(&mut self, tx_hashes: Vec) -> Vec> { // early exit in case there is no invalid transactions. if tx_hashes.is_empty() { - return vec![] + return vec![]; } trace!(target: "txpool", "Removing invalid transactions: {:?}", tx_hashes); @@ -384,7 +384,7 @@ impl PoolInner { self.transactions_by_sender(sender).map(move |tx| tx.hash()).collect::>(); if tx_hashes.is_empty() { - return vec![] + return vec![]; } trace!(target: "txpool", "Removing transactions: {:?}", tx_hashes); diff --git a/crates/anvil/src/eth/pool/transactions.rs b/crates/anvil/src/eth/pool/transactions.rs index 36e421d7a..acde71c96 100644 --- a/crates/anvil/src/eth/pool/transactions.rs +++ b/crates/anvil/src/eth/pool/transactions.rs @@ -180,7 +180,7 @@ impl PendingTransactions { warn!(target: "txpool", "pending replacement transaction underpriced [{:?}]", tx.transaction.hash()); return Err(PoolError::ReplacementUnderpriced(Box::new( tx.transaction.as_ref().clone(), - ))) + ))); } } @@ -366,7 +366,7 @@ impl Iterator for TransactionsIterator { } } - return Some(best.transaction) + return Some(best.transaction); } } } @@ -493,7 +493,7 @@ impl ReadyTransactions { // early exit if we are not replacing anything. if remove_hashes.is_empty() { - return Ok((Vec::new(), Vec::new())) + return Ok((Vec::new(), Vec::new())); } // check if we're replacing the same transaction and if it can be replaced @@ -510,7 +510,7 @@ impl ReadyTransactions { // check if underpriced if tx.pending_transaction.transaction.gas_price() <= to_remove.gas_price() { warn!(target: "txpool", "ready replacement transaction underpriced [{:?}]", tx.hash()); - return Err(PoolError::ReplacementUnderpriced(Box::new(tx.clone()))) + return Err(PoolError::ReplacementUnderpriced(Box::new(tx.clone()))); } else { trace!(target: "txpool", "replacing ready transaction [{:?}] with higher gas price [{:?}]", to_remove.transaction.transaction.hash(), tx.hash()); } diff --git a/crates/anvil/src/filter.rs b/crates/anvil/src/filter.rs index c0c8e7aef..8fb068111 100644 --- a/crates/anvil/src/filter.rs +++ b/crates/anvil/src/filter.rs @@ -51,7 +51,7 @@ impl Filters { .await .unwrap_or_else(|| ResponseResult::success(Vec::<()>::new())); *deadline = self.next_deadline(); - return resp + return resp; } } warn!(target: "node::filter", "No filter found for {}", id); @@ -62,7 +62,7 @@ impl Filters { pub async fn get_log_filter(&self, id: &str) -> Option { let filters = self.active_filters.lock().await; if let Some((EthFilter::Logs(ref log), _)) = filters.get(id) { - return log.filter.filter.clone() + return log.filter.filter.clone(); } None } @@ -91,7 +91,7 @@ impl Filters { active_filters.retain(|id, (_, deadline)| { if now > *deadline { trace!(target: "node::filter",?id, "Evicting stale filter"); - return false + return false; } true }); diff --git a/crates/anvil/src/service.rs b/crates/anvil/src/service.rs index 0f70ad3b0..390438054 100644 --- a/crates/anvil/src/service.rs +++ b/crates/anvil/src/service.rs @@ -82,7 +82,7 @@ impl Future for NodeService { pin.block_producer.queued.push_back(transactions); } else { // no progress made - break + break; } } @@ -153,7 +153,7 @@ impl Stream for BlockProducer { Err(err) => { panic!("miner task failed: {err}"); } - } + }; } else { pin.block_mining = Some(mining) } diff --git a/crates/anvil/src/tasks/block_listener.rs b/crates/anvil/src/tasks/block_listener.rs index 0b9388224..2b3e2cb57 100644 --- a/crates/anvil/src/tasks/block_listener.rs +++ b/crates/anvil/src/tasks/block_listener.rs @@ -38,7 +38,7 @@ where let pin = self.get_mut(); if pin.on_shutdown.poll_unpin(cx).is_ready() { - return Poll::Ready(()) + return Poll::Ready(()); } let mut block = None; @@ -46,7 +46,7 @@ where while let Poll::Ready(maybe_block) = pin.stream.poll_next_unpin(cx) { if maybe_block.is_none() { // stream complete - return Poll::Ready(()) + return Poll::Ready(()); } block = maybe_block; } diff --git a/crates/anvil/tests/it/transaction.rs b/crates/anvil/tests/it/transaction.rs index 0afce986b..a8eb284cb 100644 --- a/crates/anvil/tests/it/transaction.rs +++ b/crates/anvil/tests/it/transaction.rs @@ -953,7 +953,7 @@ async fn can_stream_pending_transactions() { let sent_txs = sent.iter().map(|tx| tx.transaction_hash).collect::(); assert_eq!(sent_txs, watch_received.iter().copied().collect()); assert_eq!(sent_txs, sub_received.iter().copied().collect()); - break + break; } } } diff --git a/crates/cast/bin/cmd/logs.rs b/crates/cast/bin/cmd/logs.rs index 154b5c9d2..1e0688a5b 100644 --- a/crates/cast/bin/cmd/logs.rs +++ b/crates/cast/bin/cmd/logs.rs @@ -78,7 +78,7 @@ impl LogsArgs { if !subscribe { let logs = cast.filter_logs(filter).await?; sh_println!("{logs}")?; - return Ok(()) + return Ok(()); } // FIXME: this is a hotfix for diff --git a/crates/cast/bin/cmd/run.rs b/crates/cast/bin/cmd/run.rs index 7ab5ddd51..3ac50cec7 100644 --- a/crates/cast/bin/cmd/run.rs +++ b/crates/cast/bin/cmd/run.rs @@ -193,7 +193,7 @@ impl RunArgs { pb.set_position(0); let BlockTransactions::Full(ref txs) = block.transactions else { - return Err(eyre::eyre!("Could not get block txs")) + return Err(eyre::eyre!("Could not get block txs")); }; for (index, tx) in txs.iter().enumerate() { diff --git a/crates/cheatcodes/spec/src/lib.rs b/crates/cheatcodes/spec/src/lib.rs index c4d7e9868..d87faad6a 100644 --- a/crates/cheatcodes/spec/src/lib.rs +++ b/crates/cheatcodes/spec/src/lib.rs @@ -169,7 +169,7 @@ interface Vm {{ if let Ok(old_contents) = fs::read_to_string(file) { if normalize_newlines(&old_contents) == normalize_newlines(contents) { // File is already up to date. - return + return; } } diff --git a/crates/cheatcodes/src/evm.rs b/crates/cheatcodes/src/evm.rs index 9f8eb27a4..03878f633 100644 --- a/crates/cheatcodes/src/evm.rs +++ b/crates/cheatcodes/src/evm.rs @@ -811,7 +811,7 @@ impl Cheatcode for setBlockhashCall { impl Cheatcode for startDebugTraceRecordingCall { fn apply_full(&self, ccx: &mut CheatsCtxt, executor: &mut dyn CheatcodesExecutor) -> Result { let Some(tracer) = executor.tracing_inspector().and_then(|t| t.as_mut()) else { - return Err(Error::from("no tracer initiated, consider adding -vvv flag")) + return Err(Error::from("no tracer initiated, consider adding -vvv flag")); }; let mut info = RecordDebugStepInfo { @@ -842,11 +842,11 @@ impl Cheatcode for startDebugTraceRecordingCall { impl Cheatcode for stopAndReturnDebugTraceRecordingCall { fn apply_full(&self, ccx: &mut CheatsCtxt, executor: &mut dyn CheatcodesExecutor) -> Result { let Some(tracer) = executor.tracing_inspector().and_then(|t| t.as_mut()) else { - return Err(Error::from("no tracer initiated, consider adding -vvv flag")) + return Err(Error::from("no tracer initiated, consider adding -vvv flag")); }; let Some(record_info) = ccx.state.record_debug_steps_info else { - return Err(Error::from("nothing recorded")) + return Err(Error::from("nothing recorded")); }; // Use the trace nodes to flatten the call trace diff --git a/crates/cheatcodes/src/evm/mapping.rs b/crates/cheatcodes/src/evm/mapping.rs index e8525908e..47ff56cd2 100644 --- a/crates/cheatcodes/src/evm/mapping.rs +++ b/crates/cheatcodes/src/evm/mapping.rs @@ -32,7 +32,7 @@ impl MappingSlots { match self.seen_sha3.get(&slot).copied() { Some((key, parent)) => { if self.keys.contains_key(&slot) { - return false + return false; } self.keys.insert(slot, key); self.parent_slots.insert(slot, parent); diff --git a/crates/cheatcodes/src/inspector.rs b/crates/cheatcodes/src/inspector.rs index a0695d0d2..3703654c3 100644 --- a/crates/cheatcodes/src/inspector.rs +++ b/crates/cheatcodes/src/inspector.rs @@ -1730,7 +1730,7 @@ impl Cheatcodes { let (key, target_address) = if interpreter.current_opcode() == op::SLOAD { (try_or_return!(interpreter.stack().peek(0)), interpreter.contract().target_address) } else { - return + return; }; let Ok(value) = ecx.sload(target_address, key) else { diff --git a/crates/cheatcodes/src/json.rs b/crates/cheatcodes/src/json.rs index 6efae2e5a..7bd4c56ea 100644 --- a/crates/cheatcodes/src/json.rs +++ b/crates/cheatcodes/src/json.rs @@ -573,7 +573,7 @@ pub(super) fn json_value_to_token(value: &Value) -> Result { if let Some(mut val) = string.strip_prefix("0x") { let s; if val.len() == 39 { - return Err(format!("Cannot parse \"{val}\" as an address. If you want to specify address, prepend zero to the value.").into()) + return Err(format!("Cannot parse \"{val}\" as an address. If you want to specify address, prepend zero to the value.").into()); } if val.len() % 2 != 0 { s = format!("0{val}"); @@ -678,7 +678,7 @@ pub(super) fn resolve_type(type_description: &str) -> Result { resolver.ingest(t.to_owned()); } - return Ok(resolver.resolve(main_type)?) + return Ok(resolver.resolve(main_type)?); }; bail!("type description should be a valid Solidity type or a EIP712 `encodeType` string") diff --git a/crates/cheatcodes/src/test/assert.rs b/crates/cheatcodes/src/test/assert.rs index b4b6652ac..3588a3347 100644 --- a/crates/cheatcodes/src/test/assert.rs +++ b/crates/cheatcodes/src/test/assert.rs @@ -537,14 +537,14 @@ fn uint_assert_approx_eq_rel( ) -> Result, EqRelAssertionError> { if right.is_zero() { if left.is_zero() { - return Ok(Default::default()) + return Ok(Default::default()); } else { return Err(EqRelAssertionError::Failure(Box::new(EqRelAssertionFailure { left, right, max_delta, real_delta: EqRelDelta::Undefined, - }))) + }))); }; } @@ -572,14 +572,14 @@ fn int_assert_approx_eq_rel( ) -> Result, EqRelAssertionError> { if right.is_zero() { if left.is_zero() { - return Ok(Default::default()) + return Ok(Default::default()); } else { return Err(EqRelAssertionError::Failure(Box::new(EqRelAssertionFailure { left, right, max_delta, real_delta: EqRelDelta::Undefined, - }))) + }))); } } diff --git a/crates/cheatcodes/src/test/expect.rs b/crates/cheatcodes/src/test/expect.rs index e45298923..8fe881f9c 100644 --- a/crates/cheatcodes/src/test/expect.rs +++ b/crates/cheatcodes/src/test/expect.rs @@ -727,7 +727,7 @@ pub(crate) fn handle_expect_emit( // This allows a contract to arbitrarily emit more events than expected (additive behavior), // as long as all the previous events were matched in the order they were expected to be. if state.expected_emits.iter().all(|(expected, _)| expected.found) { - return + return; } let should_fill_logs = state.expected_emits.iter().any(|(expected, _)| expected.log.is_none()); @@ -770,7 +770,7 @@ pub(crate) fn handle_expect_emit( }, }; } - return + return; }; // Increment/set `count` for `log.address` and `log.data` @@ -795,7 +795,7 @@ pub(crate) fn handle_expect_emit( event_to_fill_or_check.found = || -> bool { if !checks_topics_and_data(event_to_fill_or_check.checks, expected, log) { - return false + return false; } // Maybe match source address. @@ -860,11 +860,11 @@ impl LogCountMap { if self.map.contains_key(log) { self.map.entry(log.clone()).and_modify(|c| *c += 1); - return true + return true; } if !self.satisfies_checks(log) { - return false + return false; } self.map.entry(log.clone()).and_modify(|c| *c += 1).or_insert(1); @@ -879,7 +879,7 @@ impl LogCountMap { pub fn count(&self, log: &RawLog) -> u64 { if !self.satisfies_checks(log) { - return 0 + return 0; } self.count_unchecked() @@ -1025,7 +1025,7 @@ pub(crate) fn handle_expect_revert( // Compare only the first 4 bytes if partial match. if expected_revert.partial_match && actual_revert.get(..4) == expected_reason.get(..4) { - return Ok(success_return()) + return Ok(success_return()); } // Try decoding as known errors. @@ -1052,7 +1052,7 @@ pub(crate) fn handle_expect_revert( fn checks_topics_and_data(checks: [bool; 5], expected: &RawLog, log: &RawLog) -> bool { if log.topics().len() != expected.topics().len() { - return false + return false; } // Check topics. @@ -1063,12 +1063,12 @@ fn checks_topics_and_data(checks: [bool; 5], expected: &RawLog, log: &RawLog) -> .filter(|(i, _)| checks[*i]) .all(|(i, topic)| topic == &expected.topics()[i]) { - return false + return false; } // Check data if checks[4] && expected.data.as_ref() != log.data.as_ref() { - return false + return false; } true diff --git a/crates/cheatcodes/src/utils.rs b/crates/cheatcodes/src/utils.rs index 79299d9fd..45bd943d6 100644 --- a/crates/cheatcodes/src/utils.rs +++ b/crates/cheatcodes/src/utils.rs @@ -155,12 +155,12 @@ impl Cheatcode for pauseTracingCall { ) -> Result { let Some(tracer) = executor.tracing_inspector().and_then(|t| t.as_ref()) else { // No tracer -> nothing to pause - return Ok(Default::default()) + return Ok(Default::default()); }; // If paused earlier, ignore the call if ccx.state.ignored_traces.last_pause_call.is_some() { - return Ok(Default::default()) + return Ok(Default::default()); } let cur_node = &tracer.traces().nodes().last().expect("no trace nodes"); @@ -178,12 +178,12 @@ impl Cheatcode for resumeTracingCall { ) -> Result { let Some(tracer) = executor.tracing_inspector().and_then(|t| t.as_ref()) else { // No tracer -> nothing to unpause - return Ok(Default::default()) + return Ok(Default::default()); }; let Some(start) = ccx.state.ignored_traces.last_pause_call.take() else { // Nothing to unpause - return Ok(Default::default()) + return Ok(Default::default()); }; let node = &tracer.traces().nodes().last().expect("no trace nodes"); @@ -235,7 +235,7 @@ fn random_uint(state: &mut Cheatcodes, bits: Option, bounds: Option<(U256, .new_tree(state.test_runner()) .unwrap() .current() - .abi_encode()) + .abi_encode()); } if let Some((min, max)) = bounds { @@ -248,7 +248,7 @@ fn random_uint(state: &mut Cheatcodes, bits: Option, bounds: Option<(U256, random_number %= inclusive_modulo; } random_number += min; - return Ok(random_number.abi_encode()) + return Ok(random_number.abi_encode()); } // Generate random `uint256` value. diff --git a/crates/chisel/bin/main.rs b/crates/chisel/bin/main.rs index ca3fc1ff5..1120a6e68 100644 --- a/crates/chisel/bin/main.rs +++ b/crates/chisel/bin/main.rs @@ -158,7 +158,7 @@ async fn main_args(args: Chisel) -> eyre::Result<()> { DispatchResult::CommandFailed(e) => sh_err!("{e}")?, _ => panic!("Unexpected result: Please report this bug."), } - return Ok(()) + return Ok(()); } Some(ChiselSubcommand::Load { id }) | Some(ChiselSubcommand::View { id }) => { // For both of these subcommands, we need to attempt to load the session from cache @@ -166,7 +166,7 @@ async fn main_args(args: Chisel) -> eyre::Result<()> { DispatchResult::CommandSuccess(_) => { /* Continue */ } DispatchResult::CommandFailed(e) => { sh_err!("{e}")?; - return Ok(()) + return Ok(()); } _ => panic!("Unexpected result! Please report this bug."), } @@ -179,7 +179,7 @@ async fn main_args(args: Chisel) -> eyre::Result<()> { } _ => panic!("Unexpected result! Please report this bug."), } - return Ok(()) + return Ok(()); } } Some(ChiselSubcommand::ClearCache) => { @@ -188,11 +188,11 @@ async fn main_args(args: Chisel) -> eyre::Result<()> { DispatchResult::CommandFailed(e) => sh_err!("{e}")?, _ => panic!("Unexpected result! Please report this bug."), } - return Ok(()) + return Ok(()); } Some(ChiselSubcommand::Eval { command }) => { dispatch_repl_line(&mut dispatcher, command).await?; - return Ok(()) + return Ok(()); } None => { /* No chisel subcommand present; Continue */ } } @@ -234,7 +234,7 @@ async fn main_args(args: Chisel) -> eyre::Result<()> { } Err(ReadlineError::Interrupted) => { if interrupt { - break + break; } else { sh_println!("(To exit, press Ctrl+C again)")?; interrupt = true; @@ -243,7 +243,7 @@ async fn main_args(args: Chisel) -> eyre::Result<()> { Err(ReadlineError::Eof) => break, Err(err) => { sh_err!("{err:?}")?; - break + break; } } } diff --git a/crates/chisel/src/dispatcher.rs b/crates/chisel/src/dispatcher.rs index a445e99e7..f75187f7a 100644 --- a/crates/chisel/src/dispatcher.rs +++ b/crates/chisel/src/dispatcher.rs @@ -251,7 +251,7 @@ impl ChiselDispatcher { } if let Err(e) = self.session.write() { - return DispatchResult::FileIoError(e.into()) + return DispatchResult::FileIoError(e.into()); } DispatchResult::CommandSuccess(Some(format!( "Saved session to cache with ID = {}", @@ -266,7 +266,7 @@ impl ChiselDispatcher { // Must supply a session ID as the argument. return DispatchResult::CommandFailed(Self::make_error( "Must supply a session ID as the argument.", - )) + )); } // Use args as the name @@ -275,7 +275,7 @@ impl ChiselDispatcher { // Don't save an empty session if !self.source().run_code.is_empty() { if let Err(e) = self.session.write() { - return DispatchResult::FileIoError(e.into()) + return DispatchResult::FileIoError(e.into()); } let _ = sh_println!("{}", "Saved current session!".green()); } @@ -340,12 +340,12 @@ impl ChiselDispatcher { self.source_mut().config.evm_opts.fork_url = None; return DispatchResult::CommandSuccess(Some( "Now using local environment.".to_string(), - )) + )); } if args.len() != 1 { return DispatchResult::CommandFailed(Self::make_error( "Must supply a session ID as the argument.", - )) + )); } let arg = *args.first().unwrap(); @@ -371,7 +371,7 @@ impl ChiselDispatcher { // Check validity of URL if Url::parse(&fork_url).is_err() { - return DispatchResult::CommandFailed(Self::make_error("Invalid fork URL!")) + return DispatchResult::CommandFailed(Self::make_error("Invalid fork URL!")); } // Create success message before moving the fork_url @@ -404,7 +404,7 @@ impl ChiselDispatcher { if arg.is_empty() { self.source_mut().config.calldata = None; - return DispatchResult::CommandSuccess(Some("Calldata cleared.".to_string())) + return DispatchResult::CommandSuccess(Some("Calldata cleared.".to_string())); } let calldata = hex::decode(arg); @@ -467,7 +467,7 @@ impl ChiselDispatcher { // Create "script" dir if it does not already exist. if !Path::new("script").exists() { if let Err(e) = std::fs::create_dir_all("script") { - return DispatchResult::CommandFailed(Self::make_error(e.to_string())) + return DispatchResult::CommandFailed(Self::make_error(e.to_string())); } } @@ -477,7 +477,7 @@ impl ChiselDispatcher { if let Err(e) = std::fs::write(PathBuf::from("script/REPL.s.sol"), formatted_source) { - return DispatchResult::CommandFailed(Self::make_error(e.to_string())) + return DispatchResult::CommandFailed(Self::make_error(e.to_string())); } DispatchResult::CommandSuccess(Some(String::from( @@ -493,7 +493,7 @@ impl ChiselDispatcher { if args.len() != 2 { return DispatchResult::CommandFailed(Self::make_error( "Incorrect number of arguments supplied. Expected:
", - )) + )); } let request_url = format!( @@ -634,7 +634,7 @@ impl ChiselDispatcher { } ChiselCommand::Exec => { if args.is_empty() { - return DispatchResult::CommandFailed(Self::make_error("No command supplied!")) + return DispatchResult::CommandFailed(Self::make_error("No command supplied!")); } let mut cmd = Command::new(args[0]); @@ -660,7 +660,7 @@ impl ChiselDispatcher { if let Err(e) = result { return DispatchResult::CommandFailed(format!( "Could not write to a temporary file: {e}" - )) + )); } // open the temp file with the editor @@ -674,11 +674,11 @@ impl ChiselDispatcher { if let Some(status_code) = status.code() { return DispatchResult::CommandFailed(format!( "Editor exited with status {status_code}" - )) + )); } else { return DispatchResult::CommandFailed( "Editor exited without a status code".to_string(), - ) + ); } } } @@ -696,7 +696,7 @@ impl ChiselDispatcher { } else { return DispatchResult::CommandFailed( "Could not read the edited file".to_string(), - ) + ); } // if the editor exited successfully, try to compile the new code @@ -708,7 +708,7 @@ impl ChiselDispatcher { Self::decode_traces(&new_session_source.config, &mut res).await { if let Err(e) = Self::show_traces(&decoder, &mut res).await { - return DispatchResult::CommandFailed(e.to_string()) + return DispatchResult::CommandFailed(e.to_string()); }; // Show console logs, if there are any @@ -748,7 +748,7 @@ impl ChiselDispatcher { 0 => "No variable supplied!", _ => "!rawstack only takes one argument.", }; - return DispatchResult::CommandFailed(Self::make_error(msg)) + return DispatchResult::CommandFailed(Self::make_error(msg)); } // Store the variable that we want to inspect @@ -786,11 +786,11 @@ impl ChiselDispatcher { return match raw_cmd.parse::() { Ok(cmd) => self.dispatch_command(cmd, &split[1..]).await, Err(e) => DispatchResult::UnrecognizedCommand(e), - } + }; } if input.trim().is_empty() { debug!("empty dispatch input"); - return DispatchResult::Success(None) + return DispatchResult::Success(None); } // Get a mutable reference to the session source @@ -800,7 +800,7 @@ impl ChiselDispatcher { if COMMENT_RE.is_match(input) { debug!(%input, "matched comment"); source.with_run_code(input); - return DispatchResult::Success(None) + return DispatchResult::Success(None); } // If there is an address (or multiple addresses) in the input, ensure that they are @@ -839,7 +839,7 @@ impl ChiselDispatcher { // Return successfully Ok((false, res)) => { debug!(%input, ?res, "inspect success"); - return DispatchResult::Success(res) + return DispatchResult::Success(res); } // Return with the error @@ -857,7 +857,7 @@ impl ChiselDispatcher { if let Ok(decoder) = Self::decode_traces(&new_source.config, &mut res).await { if let Err(e) = Self::show_traces(&decoder, &mut res).await { - return DispatchResult::CommandFailed(e.to_string()) + return DispatchResult::CommandFailed(e.to_string()); }; // Show console logs, if there are any @@ -874,7 +874,7 @@ impl ChiselDispatcher { if failed { return DispatchResult::Failure(Some(Self::make_error( "Failed to execute REPL contract!", - ))) + ))); } } } diff --git a/crates/chisel/src/executor.rs b/crates/chisel/src/executor.rs index 71bf18e1a..26c63d1b7 100644 --- a/crates/chisel/src/executor.rs +++ b/crates/chisel/src/executor.rs @@ -57,7 +57,7 @@ impl SessionSource { if let Some(statement) = block.statements.last() { if let pt::YulStatement::FunctionCall(yul_call) = statement { if yul_call.id.name == "return" { - return Some(statement.loc()) + return Some(statement.loc()); } } } @@ -163,7 +163,7 @@ impl SessionSource { Ok((source, _)) => source, Err(err) => { debug!(%err, "failed to build new source"); - return Ok((true, None)) + return Ok((true, None)); } }; @@ -181,7 +181,7 @@ impl SessionSource { if self.config.foundry_config.verbosity >= 3 { sh_err!("Could not inspect: {err}")?; } - return Ok((true, None)) + return Ok((true, None)); } } } @@ -202,7 +202,7 @@ impl SessionSource { if let Some(event_definition) = intermediate_contract.event_definitions.get(input) { let formatted = format_event_definition(event_definition)?; - return Ok((false, Some(formatted))) + return Ok((false, Some(formatted))); } // we were unable to check the event @@ -211,7 +211,7 @@ impl SessionSource { } debug!(%err, %input, "failed abi encode input"); - return Ok((false, None)) + return Ok((false, None)); } let Some((stack, memory, _)) = &res.state else { @@ -227,7 +227,7 @@ impl SessionSource { } } - return Err(eyre::eyre!("Failed to inspect expression")) + return Err(eyre::eyre!("Failed to inspect expression")); }; let generated_output = source @@ -789,7 +789,7 @@ impl Type { /// See: fn map_special(self) -> Self { if !matches!(self, Self::Function(_, _, _) | Self::Access(_, _) | Self::Custom(_)) { - return self + return self; } let mut types = Vec::with_capacity(5); @@ -798,7 +798,7 @@ impl Type { let len = types.len(); if len == 0 { - return self + return self; } // Type members, like array, bytes etc @@ -958,7 +958,7 @@ impl Type { custom_type.pop(); } if custom_type.is_empty() { - return Ok(None) + return Ok(None); } // If a contract exists with the given name, check its definitions for a match. @@ -973,7 +973,7 @@ impl Type { if let Some(func) = intermediate_contract.function_definitions.get(cur_type) { // Check if the custom type is a function pointer member access if let res @ Some(_) = func_members(func, custom_type) { - return Ok(res) + return Ok(res); } // Because tuple types cannot be passed to `abi.encode`, we will only be @@ -994,7 +994,7 @@ impl Type { // struct, array, etc. if let pt::Expression::Variable(ident) = return_ty { custom_type.push(ident.name.clone()); - return Self::infer_custom_type(intermediate, custom_type, Some(contract_name)) + return Self::infer_custom_type(intermediate, custom_type, Some(contract_name)); } // Check if our final function call alters the state. If it does, we bail so that it @@ -1033,7 +1033,7 @@ impl Type { // anything. If it is, we can stop here. if let Ok(res) = Self::infer_custom_type(intermediate, custom_type, Some("REPL".into())) { - return Ok(res) + return Ok(res); } // Check if the first element of the custom type is a known contract. If it is, begin @@ -1042,13 +1042,13 @@ impl Type { let contract = intermediate.intermediate_contracts.get(name); if contract.is_some() { let contract_name = custom_type.pop(); - return Self::infer_custom_type(intermediate, custom_type, contract_name) + return Self::infer_custom_type(intermediate, custom_type, contract_name); } // See [`Type::infer_var_expr`] let name = custom_type.last().unwrap(); if let Some(expr) = intermediate.repl_contract_expressions.get(name) { - return Self::infer_var_expr(expr, Some(intermediate), custom_type) + return Self::infer_var_expr(expr, Some(intermediate), custom_type); } // The first element of our custom type was neither a variable or a function within the @@ -1176,7 +1176,7 @@ impl Type { let pt::Expression::Variable(contract_name) = intermediate.repl_contract_expressions.get(&contract_name.name)? else { - return None + return None; }; let contract = intermediate @@ -1265,7 +1265,7 @@ impl Type { #[inline] fn func_members(func: &pt::FunctionDefinition, custom_type: &[String]) -> Option { if !matches!(func.ty, pt::FunctionTy::Function) { - return None + return None; } let vis = func.attributes.iter().find_map(|attr| match attr { @@ -1710,7 +1710,7 @@ mod tests { Ok((v, solc)) => { // successfully installed let _ = sh_println!("found installed Solc v{v} @ {}", solc.solc.display()); - break + break; } Err(e) => { // try reinstalling @@ -1718,7 +1718,7 @@ mod tests { let solc = Solc::blocking_install(&version.parse().unwrap()); if solc.map_err(SolcError::from).is_ok() { *is_preinstalled = true; - break + break; } } } diff --git a/crates/chisel/src/session.rs b/crates/chisel/src/session.rs index 2f293c1cd..b20fb8ff5 100644 --- a/crates/chisel/src/session.rs +++ b/crates/chisel/src/session.rs @@ -116,7 +116,7 @@ impl ChiselSession { let mut latest = if let Some(e) = entries.next() { e? } else { - return Ok((String::from("0"), format!("{cache_dir}chisel-0.json"))) + return Ok((String::from("0"), format!("{cache_dir}chisel-0.json"))); }; let mut session_num = 1; diff --git a/crates/chisel/src/solidity_helper.rs b/crates/chisel/src/solidity_helper.rs index 465b7b535..cd99254f1 100644 --- a/crates/chisel/src/solidity_helper.rs +++ b/crates/chisel/src/solidity_helper.rs @@ -71,7 +71,7 @@ impl SolidityHelper { /// Highlights a Solidity source string. pub fn highlight<'a>(&self, input: &'a str) -> Cow<'a, str> { if !self.do_paint() { - return Cow::Borrowed(input) + return Cow::Borrowed(input); } // Highlight commands separately @@ -198,7 +198,7 @@ impl Highlighter for SolidityHelper { _default: bool, ) -> Cow<'b, str> { if !self.do_paint() { - return Cow::Borrowed(prompt) + return Cow::Borrowed(prompt); } let mut out = prompt.to_string(); diff --git a/crates/cli/src/handler.rs b/crates/cli/src/handler.rs index ed32fa16b..4715c1e27 100644 --- a/crates/cli/src/handler.rs +++ b/crates/cli/src/handler.rs @@ -8,7 +8,7 @@ pub struct Handler; impl EyreHandler for Handler { fn debug(&self, error: &(dyn Error + 'static), f: &mut fmt::Formatter<'_>) -> fmt::Result { if f.alternate() { - return fmt::Debug::fmt(error, f) + return fmt::Debug::fmt(error, f); } write!(f, "{error}")?; diff --git a/crates/cli/src/opts/dependency.rs b/crates/cli/src/opts/dependency.rs index 6783e32d2..5a0d504e1 100644 --- a/crates/cli/src/opts/dependency.rs +++ b/crates/cli/src/opts/dependency.rs @@ -68,7 +68,7 @@ impl FromStr for Dependency { for (alias, real_org) in COMMON_ORG_ALIASES.iter() { if dependency.starts_with(alias) { dependency = dependency.replacen(alias, real_org, 1); - break + break; } } diff --git a/crates/cli/src/utils/abi.rs b/crates/cli/src/utils/abi.rs index e903804de..a582eb152 100644 --- a/crates/cli/src/utils/abi.rs +++ b/crates/cli/src/utils/abi.rs @@ -43,7 +43,7 @@ pub async fn parse_function_args String { if num < U256::from(10_000) { - return num.to_string() + return num.to_string(); } let exp = to_exp_notation(num, 4, true, Sign::Positive); diff --git a/crates/common/fmt/src/ui.rs b/crates/common/fmt/src/ui.rs index 9962a8583..790d98397 100644 --- a/crates/common/fmt/src/ui.rs +++ b/crates/common/fmt/src/ui.rs @@ -864,7 +864,7 @@ pub fn get_pretty_block_attr(block: &AnyRpcBlock, attr: &str) -> Option other => { if let Some(value) = block.other.get(other) { let val = EthValue::from(value.clone()); - return Some(val.pretty()) + return Some(val.pretty()); } None } diff --git a/crates/common/src/abi.rs b/crates/common/src/abi.rs index fa9f24171..11296dbd4 100644 --- a/crates/common/src/abi.rs +++ b/crates/common/src/abi.rs @@ -131,7 +131,7 @@ pub async fn get_func_etherscan( for func in funcs { let res = encode_function_args(&func, args); if res.is_ok() { - return Ok(func) + return Ok(func); } } diff --git a/crates/common/src/ens.rs b/crates/common/src/ens.rs index 1c4eadeac..8d4a60235 100644 --- a/crates/common/src/ens.rs +++ b/crates/common/src/ens.rs @@ -164,7 +164,7 @@ where /// Returns the ENS namehash as specified in [EIP-137](https://eips.ethereum.org/EIPS/eip-137) pub fn namehash(name: &str) -> B256 { if name.is_empty() { - return B256::ZERO + return B256::ZERO; } // Remove the variation selector `U+FE0F` if present. diff --git a/crates/common/src/term.rs b/crates/common/src/term.rs index e67398745..5390ddf53 100644 --- a/crates/common/src/term.rs +++ b/crates/common/src/term.rs @@ -71,7 +71,7 @@ impl Spinner { pub fn tick(&mut self) { if self.no_progress { - return + return; } let indicator = self.indicator[self.idx % self.indicator.len()].green(); @@ -122,7 +122,7 @@ impl SpinnerReporter { // end with a newline let _ = sh_println!(); let _ = ack.send(()); - break + break; } Err(TryRecvError::Disconnected) => break, Err(TryRecvError::Empty) => thread::sleep(Duration::from_millis(100)), diff --git a/crates/common/src/transactions.rs b/crates/common/src/transactions.rs index b725fc068..54cd39e27 100644 --- a/crates/common/src/transactions.rs +++ b/crates/common/src/transactions.rs @@ -48,7 +48,7 @@ impl TransactionReceiptWithRevertReason { provider: &P, ) -> Result> { if !self.is_failure() { - return Ok(None) + return Ok(None); } let transaction = provider diff --git a/crates/config/src/cache.rs b/crates/config/src/cache.rs index d087b5e6a..229af4cf8 100644 --- a/crates/config/src/cache.rs +++ b/crates/config/src/cache.rs @@ -24,7 +24,7 @@ impl StorageCachingConfig { pub fn enable_for_chain_id(&self, chain_id: u64) -> bool { // ignore dev chains if [99, 1337, 31337].contains(&chain_id) { - return false + return false; } self.chains.is_match(chain_id) } diff --git a/crates/config/src/endpoints.rs b/crates/config/src/endpoints.rs index 1758e6a48..c535367c0 100644 --- a/crates/config/src/endpoints.rs +++ b/crates/config/src/endpoints.rs @@ -438,7 +438,7 @@ impl ResolvedRpcEndpoint { // Attempts to resolve unresolved environment variables into a new instance pub fn try_resolve(mut self) -> Self { if !self.is_unresolved() { - return self + return self; } if let Err(err) = self.endpoint { self.endpoint = err.try_resolve() diff --git a/crates/config/src/fix.rs b/crates/config/src/fix.rs index f3ec1271f..a6d18c651 100644 --- a/crates/config/src/fix.rs +++ b/crates/config/src/fix.rs @@ -79,7 +79,7 @@ impl TomlFile { return Err(InsertProfileError { message: format!("Expected [{profile_str}] to be a Table"), value, - }) + }); } // get or create the profile section let profile_map = if let Some(map) = self.get_mut(Config::PROFILE_SECTION) { @@ -99,7 +99,7 @@ impl TomlFile { return Err(InsertProfileError { message: format!("Expected [{}] to be a Table", Config::PROFILE_SECTION), value, - }) + }); }; // check the profile map for structure and existing keys if let Some(profile) = profile_map.get(profile_str) { @@ -112,7 +112,7 @@ impl TomlFile { profile_str ), value, - }) + }); } } else { return Err(InsertProfileError { @@ -122,7 +122,7 @@ impl TomlFile { profile_str ), value, - }) + }); } } // insert the profile @@ -187,7 +187,7 @@ pub fn fix_tomls() -> Vec { Ok(toml_file) => toml_file, Err(err) => { warnings.push(Warning::CouldNotReadToml { path: toml, err: err.to_string() }); - continue + continue; } }; diff --git a/crates/config/src/inline/natspec.rs b/crates/config/src/inline/natspec.rs index 5774d9e19..e1f119fc9 100644 --- a/crates/config/src/inline/natspec.rs +++ b/crates/config/src/inline/natspec.rs @@ -122,7 +122,7 @@ impl SolcParser { let contract_data = &n.other; if let Value::String(contract_name) = contract_data.get("name")? { if contract_id.ends_with(contract_name) { - return Some(n) + return Some(n); } } } @@ -164,7 +164,7 @@ impl SolcParser { let fn_data = &node.other; let fn_name: String = self.get_fn_name(fn_data)?; let (fn_docs, docs_src_line) = self.get_node_docs(fn_data)?; - return Some((fn_name, fn_docs, docs_src_line)) + return Some((fn_name, fn_docs, docs_src_line)); } None @@ -193,7 +193,7 @@ impl SolcParser { .unwrap_or_else(|| String::from("")); src_line.retain(|c| c != '"'); - return Some((comment.into(), src_line)) + return Some((comment.into(), src_line)); } } } @@ -246,15 +246,15 @@ impl SolangParser { for item in &pt.0 { let pt::SourceUnitPart::ContractDefinition(c) = item else { prev_item_end = item.loc().end(); - continue + continue; }; let Some(id) = c.name.as_ref() else { prev_item_end = item.loc().end(); - continue + continue; }; if id.name != contract_name { prev_item_end = item.loc().end(); - continue + continue; }; // Handle doc comments in between the previous contract and the current one. diff --git a/crates/config/src/providers/remappings.rs b/crates/config/src/providers/remappings.rs index 1d8a7b163..f6091345a 100644 --- a/crates/config/src/providers/remappings.rs +++ b/crates/config/src/providers/remappings.rs @@ -205,7 +205,7 @@ impl RemappingsProvider<'_> { // this is an additional safety check for weird auto-detected remappings if ["lib/", "src/", "contracts/"].contains(&r.name.as_str()) { trace!(target: "forge", "- skipping the remapping"); - continue + continue; } insert_closest(&mut lib_remappings, r.context, r.name, r.path.into()); } @@ -287,7 +287,7 @@ impl Provider for RemappingsProvider<'_> { if let figment::error::Kind::MissingField(_) = err.kind { self.get_remappings(vec![]) } else { - return Err(err.clone()) + return Err(err.clone()); } } }?; diff --git a/crates/debugger/src/node.rs b/crates/debugger/src/node.rs index 83477f006..7165e5efa 100644 --- a/crates/debugger/src/node.rs +++ b/crates/debugger/src/node.rs @@ -73,7 +73,7 @@ pub fn flatten_call_trace(arena: CallTraceArena, out: &mut Vec) { // Skip nodes with empty steps as there's nothing to display for them. if steps.is_empty() { - continue + continue; } let call = &arena_nodes[pending.node_idx].trace; diff --git a/crates/debugger/src/tui/context.rs b/crates/debugger/src/tui/context.rs index 0c61a1fcd..68a141206 100644 --- a/crates/debugger/src/tui/context.rs +++ b/crates/debugger/src/tui/context.rs @@ -341,7 +341,7 @@ fn is_jump(step: &CallTraceStep, prev: &CallTraceStep) -> bool { OpCode::CALLF | OpCode::RETF ) { - return false + return false; } let immediate_len = prev.immediate_bytes.as_ref().map_or(0, |b| b.len()); diff --git a/crates/doc/src/builder.rs b/crates/doc/src/builder.rs index 02a23ace5..0764c44f7 100644 --- a/crates/doc/src/builder.rs +++ b/crates/doc/src/builder.rs @@ -106,7 +106,7 @@ impl DocBuilder { if sources.is_empty() { sh_println!("No sources detected at {}", self.sources.display())?; - return Ok(()) + return Ok(()); } let library_sources = self @@ -385,7 +385,7 @@ impl DocBuilder { depth: usize, ) -> eyre::Result<()> { if files.is_empty() { - return Ok(()) + return Ok(()); } if let Some(path) = base_path { diff --git a/crates/doc/src/document.rs b/crates/doc/src/document.rs index 10f72a672..6896205ed 100644 --- a/crates/doc/src/document.rs +++ b/crates/doc/src/document.rs @@ -148,10 +148,10 @@ impl<'a> Iterator for ParseItemIter<'a> { fn next(&mut self) -> Option { if let Some(next) = self.next.take() { - return Some(next) + return Some(next); } if let Some(other) = self.other.as_mut() { - return other.next() + return other.next(); } None @@ -169,10 +169,10 @@ impl<'a> Iterator for ParseItemIterMut<'a> { fn next(&mut self) -> Option { if let Some(next) = self.next.take() { - return Some(next) + return Some(next); } if let Some(other) = self.other.as_mut() { - return other.next() + return other.next(); } None diff --git a/crates/doc/src/parser/comment.rs b/crates/doc/src/parser/comment.rs index bf2b0ad7b..fa63bd6d0 100644 --- a/crates/doc/src/parser/comment.rs +++ b/crates/doc/src/parser/comment.rs @@ -46,7 +46,7 @@ impl CommentTag { } _ => { warn!(target: "forge::doc", tag=trimmed, "unknown comment tag. custom tags must be preceded by `custom:`"); - return None + return None; } }; Some(tag) diff --git a/crates/doc/src/preprocessor/contract_inheritance.rs b/crates/doc/src/preprocessor/contract_inheritance.rs index ac229a434..8ac9c0026 100644 --- a/crates/doc/src/preprocessor/contract_inheritance.rs +++ b/crates/doc/src/preprocessor/contract_inheritance.rs @@ -61,7 +61,7 @@ impl ContractInheritance { if let DocumentContent::Single(ref item) = candidate.content { if let ParseSource::Contract(ref contract) = item.source { if base == contract.name.safe_unwrap().name { - return Some(candidate.target_path.clone()) + return Some(candidate.target_path.clone()); } } } diff --git a/crates/doc/src/preprocessor/infer_hyperlinks.rs b/crates/doc/src/preprocessor/infer_hyperlinks.rs index 25fafc032..a5ccd4079 100644 --- a/crates/doc/src/preprocessor/infer_hyperlinks.rs +++ b/crates/doc/src/preprocessor/infer_hyperlinks.rs @@ -88,10 +88,13 @@ impl InferInlineHyperlinks { let name = &contract.name.safe_unwrap().name; if name == link.identifier { if link.part.is_none() { - return Some(InlineLinkTarget::borrowed(name, target_path.to_path_buf())) + return Some(InlineLinkTarget::borrowed( + name, + target_path.to_path_buf(), + )); } // try to find the referenced item in the contract's children - return Self::find_match(link, target_path, item.children.iter()) + return Self::find_match(link, target_path, item.children.iter()); } } ParseSource::Function(fun) => { @@ -104,26 +107,29 @@ impl InferInlineHyperlinks { return Some(InlineLinkTarget::borrowed( &id.name, target_path.to_path_buf(), - )) + )); } } else if link.ref_name() == "constructor" { return Some(InlineLinkTarget::borrowed( "constructor", target_path.to_path_buf(), - )) + )); } } ParseSource::Variable(_) => {} ParseSource::Event(ev) => { let ev_name = &ev.name.safe_unwrap().name; if ev_name == link.ref_name() { - return Some(InlineLinkTarget::borrowed(ev_name, target_path.to_path_buf())) + return Some(InlineLinkTarget::borrowed(ev_name, target_path.to_path_buf())); } } ParseSource::Error(err) => { let err_name = &err.name.safe_unwrap().name; if err_name == link.ref_name() { - return Some(InlineLinkTarget::borrowed(err_name, target_path.to_path_buf())) + return Some(InlineLinkTarget::borrowed( + err_name, + target_path.to_path_buf(), + )); } } ParseSource::Struct(structdef) => { @@ -132,7 +138,7 @@ impl InferInlineHyperlinks { return Some(InlineLinkTarget::borrowed( struct_name, target_path.to_path_buf(), - )) + )); } } ParseSource::Enum(_) => {} diff --git a/crates/doc/src/preprocessor/inheritdoc.rs b/crates/doc/src/preprocessor/inheritdoc.rs index 65cbb688c..05a9d646e 100644 --- a/crates/doc/src/preprocessor/inheritdoc.rs +++ b/crates/doc/src/preprocessor/inheritdoc.rs @@ -80,7 +80,7 @@ impl Inheritdoc { // TODO: improve matching logic if source.ident() == children.source.ident() { let key = format!("{}.{}", base, source.ident()); - return Some((key, children.comments.clone())) + return Some((key, children.comments.clone())); } } } diff --git a/crates/doc/src/writer/buf_writer.rs b/crates/doc/src/writer/buf_writer.rs index e6109c338..58ecdca60 100644 --- a/crates/doc/src/writer/buf_writer.rs +++ b/crates/doc/src/writer/buf_writer.rs @@ -132,7 +132,7 @@ impl BufWriter { // There is nothing to write. if params.is_empty() || comments.is_empty() { - return Ok(()) + return Ok(()); } self.write_bold(heading)?; diff --git a/crates/evm/core/src/backend/cow.rs b/crates/evm/core/src/backend/cow.rs index bbad1915c..d4f67d7e1 100644 --- a/crates/evm/core/src/backend/cow.rs +++ b/crates/evm/core/src/backend/cow.rs @@ -96,7 +96,7 @@ impl<'a> CowBackend<'a> { let env = EnvWithHandlerCfg::new_with_spec_id(Box::new(env.clone()), self.spec_id); backend.initialize(&env); self.is_initialized = true; - return backend + return backend; } self.backend.to_mut() } @@ -104,7 +104,7 @@ impl<'a> CowBackend<'a> { /// Returns a mutable instance of the Backend if it is initialized. fn initialized_backend_mut(&mut self) -> Option<&mut Backend> { if self.is_initialized { - return Some(self.backend.to_mut()) + return Some(self.backend.to_mut()); } None } @@ -128,7 +128,7 @@ impl DatabaseExt for CowBackend<'_> { fn delete_state_snapshot(&mut self, id: U256) -> bool { // delete state snapshot requires a previous snapshot to be initialized if let Some(backend) = self.initialized_backend_mut() { - return backend.delete_state_snapshot(id) + return backend.delete_state_snapshot(id); } false } diff --git a/crates/evm/core/src/backend/mod.rs b/crates/evm/core/src/backend/mod.rs index 88055ddb5..c17e19d7a 100644 --- a/crates/evm/core/src/backend/mod.rs +++ b/crates/evm/core/src/backend/mod.rs @@ -820,7 +820,7 @@ impl Backend { // created account takes precedence: for example contract creation in setups if init_account.is_created() { trace!(?loaded_account, "skipping created account"); - continue + continue; } // otherwise we need to replace the account's info with the one from the fork's @@ -891,7 +891,7 @@ impl Backend { if tx.tx_hash() == tx_hash { // found the target transaction - return Ok(Some(tx.inner)) + return Ok(Some(tx.inner)); } trace!(tx=?tx.tx_hash(), "committing transaction"); diff --git a/crates/evm/core/src/utils.rs b/crates/evm/core/src/utils.rs index 0f29ec2a4..90e349852 100644 --- a/crates/evm/core/src/utils.rs +++ b/crates/evm/core/src/utils.rs @@ -230,7 +230,7 @@ pub fn create2_handler_register( gas: Gas::new(gas_limit), }, memory_offset: 0..0, - }))) + }))); } else if code_hash != DEFAULT_CREATE2_DEPLOYER_CODEHASH { return Ok(FrameOrResult::Result(FrameResult::Call(CallOutcome { result: InterpreterResult { @@ -239,7 +239,7 @@ pub fn create2_handler_register( gas: Gas::new(gas_limit), }, memory_offset: 0..0, - }))) + }))); } // Handle potential inspector override. diff --git a/crates/evm/coverage/src/anchors.rs b/crates/evm/coverage/src/anchors.rs index ee723d95c..b99dd137c 100644 --- a/crates/evm/coverage/src/anchors.rs +++ b/crates/evm/coverage/src/anchors.rs @@ -130,7 +130,7 @@ pub fn find_anchor_branch( } else { // NOTE(onbjerg): For some reason the last few bytes of the bytecode do not have // a source map associated, so at that point we just stop searching - break + break; }; // Do push byte accounting diff --git a/crates/evm/evm/src/executors/fuzz/mod.rs b/crates/evm/evm/src/executors/fuzz/mod.rs index b99499cf3..5fa5d5d5a 100644 --- a/crates/evm/evm/src/executors/fuzz/mod.rs +++ b/crates/evm/evm/src/executors/fuzz/mod.rs @@ -248,7 +248,7 @@ impl FuzzedExecutor { // Handle `vm.assume`. if call.result.as_ref() == MAGIC_ASSUME { - return Err(TestCaseError::reject(FuzzError::AssumeReject)) + return Err(TestCaseError::reject(FuzzError::AssumeReject)); } let (breakpoints, deprecated_cheatcodes) = diff --git a/crates/evm/evm/src/executors/invariant/mod.rs b/crates/evm/evm/src/executors/invariant/mod.rs index 4582e4682..0c44b2fda 100644 --- a/crates/evm/evm/src/executors/invariant/mod.rs +++ b/crates/evm/evm/src/executors/invariant/mod.rs @@ -328,7 +328,7 @@ impl<'a> InvariantExecutor<'a> { ) -> Result { // Throw an error to abort test run if the invariant function accepts input params if !invariant_contract.invariant_function.inputs.is_empty() { - return Err(eyre!("Invariant test function should have no inputs")) + return Err(eyre!("Invariant test function should have no inputs")); } let (invariant_test, invariant_strategy) = @@ -348,7 +348,7 @@ impl<'a> InvariantExecutor<'a> { // We stop the run immediately if we have reverted, and `fail_on_revert` is set. if self.config.fail_on_revert && invariant_test.reverts() > 0 { - return Err(TestCaseError::fail("Revert occurred.")) + return Err(TestCaseError::fail("Revert occurred.")); } while current_run.depth < self.config.depth { @@ -394,7 +394,7 @@ impl<'a> InvariantExecutor<'a> { invariant_test.set_error(InvariantFuzzError::MaxAssumeRejects( self.config.max_assume_rejects, )); - return Err(TestCaseError::fail("Max number of vm.assume rejects reached.")) + return Err(TestCaseError::fail("Max number of vm.assume rejects reached.")); } } else { // Commit executed call result. @@ -446,7 +446,7 @@ impl<'a> InvariantExecutor<'a> { } // If test cannot continue then stop current run and exit test suite. if !result.can_continue { - return Err(TestCaseError::fail("Test cannot continue.")) + return Err(TestCaseError::fail("Test cannot continue.")); } invariant_test.set_last_call_results(result.call_result); @@ -567,7 +567,7 @@ impl<'a> InvariantExecutor<'a> { &mut failures, )?; if let Some(error) = failures.error { - return Err(eyre!(error.revert_reason().unwrap_or_default())) + return Err(eyre!(error.revert_reason().unwrap_or_default())); } Ok(( @@ -673,7 +673,7 @@ impl<'a> InvariantExecutor<'a> { .wrap_err(format!("{contract} does not have the selector {selector:?}"))?; } - return Ok(artifact.identifier()) + return Ok(artifact.identifier()); } eyre::bail!("{contract} not found in the project. Allowed format: `contract_name` or `contract_path:contract_name`."); } @@ -831,7 +831,7 @@ impl<'a> InvariantExecutor<'a> { ) -> eyre::Result<()> { // Do not add address in target contracts if no function selected. if selectors.is_empty() { - return Ok(()) + return Ok(()); } let contract = match targeted_contracts.entry(address) { diff --git a/crates/evm/evm/src/inspectors/stack.rs b/crates/evm/evm/src/inspectors/stack.rs index 385623f5a..3bf9fd9b7 100644 --- a/crates/evm/evm/src/inspectors/stack.rs +++ b/crates/evm/evm/src/inspectors/stack.rs @@ -650,7 +650,7 @@ impl InspectorStackRefMut<'_> { for (addr, mut acc) in res.state { let Some(acc_mut) = ecx.journaled_state.state.get_mut(&addr) else { ecx.journaled_state.state.insert(addr, acc); - continue + continue; }; // make sure accounts that were warmed earlier do not become cold @@ -665,7 +665,7 @@ impl InspectorStackRefMut<'_> { for (key, val) in acc.storage { let Some(slot_mut) = acc_mut.storage.get_mut(&key) else { acc_mut.storage.insert(key, val); - continue + continue; }; slot_mut.present_value = val.present_value; slot_mut.is_cold &= val.is_cold; diff --git a/crates/evm/fuzz/src/invariant/filters.rs b/crates/evm/fuzz/src/invariant/filters.rs index 520e5b5af..1acd73995 100644 --- a/crates/evm/fuzz/src/invariant/filters.rs +++ b/crates/evm/fuzz/src/invariant/filters.rs @@ -38,14 +38,14 @@ impl ArtifactFilters { .collect::>>()?; // targetArtifactSelectors > excludeArtifacts > targetArtifacts if functions.is_empty() && self.excluded.contains(&artifact.identifier()) { - return Ok(None) + return Ok(None); } - return Ok(Some(functions)) + return Ok(Some(functions)); } // If no contract is specifically targeted, and this contract is not excluded, then accept // all functions. if self.targeted.is_empty() && !self.excluded.contains(&artifact.identifier()) { - return Ok(Some(vec![])) + return Ok(Some(vec![])); } Ok(None) } diff --git a/crates/evm/fuzz/src/strategies/int.rs b/crates/evm/fuzz/src/strategies/int.rs index 3732de061..943eca652 100644 --- a/crates/evm/fuzz/src/strategies/int.rs +++ b/crates/evm/fuzz/src/strategies/int.rs @@ -41,7 +41,7 @@ impl IntValueTree { fn magnitude_greater(lhs: I256, rhs: I256) -> bool { if lhs.is_zero() { - return false + return false; } (lhs > rhs) ^ (lhs.is_negative()) } @@ -56,7 +56,7 @@ impl ValueTree for IntValueTree { fn simplify(&mut self) -> bool { if self.fixed || !Self::magnitude_greater(self.hi, self.lo) { - return false + return false; } self.hi = self.curr; self.reposition() @@ -64,7 +64,7 @@ impl ValueTree for IntValueTree { fn complicate(&mut self) -> bool { if self.fixed || !Self::magnitude_greater(self.hi, self.lo) { - return false + return false; } self.lo = if self.curr != I256::MIN && self.curr != I256::MAX { @@ -142,7 +142,7 @@ impl IntStrategy { fn generate_fixtures_tree(&self, runner: &mut TestRunner) -> NewTree { // generate random cases if there's no fixtures if self.fixtures.is_empty() { - return self.generate_random_tree(runner) + return self.generate_random_tree(runner); } // Generate value tree from fixture. @@ -165,7 +165,7 @@ impl IntStrategy { let bits = rng.gen_range(0..=self.bits); if bits == 0 { - return Ok(IntValueTree::new(I256::ZERO, false)) + return Ok(IntValueTree::new(I256::ZERO, false)); } // init 2 128-bit randoms diff --git a/crates/evm/fuzz/src/strategies/uint.rs b/crates/evm/fuzz/src/strategies/uint.rs index af133efa0..fab664566 100644 --- a/crates/evm/fuzz/src/strategies/uint.rs +++ b/crates/evm/fuzz/src/strategies/uint.rs @@ -49,7 +49,7 @@ impl ValueTree for UintValueTree { fn simplify(&mut self) -> bool { if self.fixed || (self.hi <= self.lo) { - return false + return false; } self.hi = self.curr; self.reposition() @@ -57,7 +57,7 @@ impl ValueTree for UintValueTree { fn complicate(&mut self) -> bool { if self.fixed || (self.hi <= self.lo) { - return false + return false; } self.lo = self.curr + U256::from(1); @@ -120,7 +120,7 @@ impl UintStrategy { fn generate_fixtures_tree(&self, runner: &mut TestRunner) -> NewTree { // generate random cases if there's no fixtures if self.fixtures.is_empty() { - return self.generate_random_tree(runner) + return self.generate_random_tree(runner); } // Generate value tree from fixture. diff --git a/crates/evm/traces/src/debug/mod.rs b/crates/evm/traces/src/debug/mod.rs index a56f4ab2b..0233d5e5c 100644 --- a/crates/evm/traces/src/debug/mod.rs +++ b/crates/evm/traces/src/debug/mod.rs @@ -134,7 +134,7 @@ impl<'a> DebugStepsWalker<'a> { self.is_same_loc(*step_idx, self.current_step) || self.is_same_loc(step_idx + 1, self.current_step - 1) }) else { - return + return; }; // We've found a match, remove all records between start and end, those // are considered invalid. diff --git a/crates/evm/traces/src/identifier/etherscan.rs b/crates/evm/traces/src/identifier/etherscan.rs index 96e4b6966..4a17e10de 100644 --- a/crates/evm/traces/src/identifier/etherscan.rs +++ b/crates/evm/traces/src/identifier/etherscan.rs @@ -103,7 +103,7 @@ impl TraceIdentifier for EtherscanIdentifier { if self.invalid_api_key.load(Ordering::Relaxed) { // api key was marked as invalid - return Vec::new() + return Vec::new(); } let mut identities = Vec::new(); @@ -222,7 +222,7 @@ impl Stream for EtherscanFetcher { if let Some(mut backoff) = pin.backoff.take() { if backoff.poll_tick(cx).is_pending() { pin.backoff = Some(backoff); - return Poll::Pending + return Poll::Pending; } } @@ -237,7 +237,7 @@ impl Stream for EtherscanFetcher { match res { Ok(mut metadata) => { if let Some(item) = metadata.items.pop() { - return Poll::Ready(Some((addr, item))) + return Poll::Ready(Some((addr, item))); } } Err(EtherscanError::RateLimitExceeded) => { @@ -249,13 +249,13 @@ impl Stream for EtherscanFetcher { warn!(target: "traces::etherscan", "invalid api key"); // mark key as invalid pin.invalid_api_key.store(true, Ordering::Relaxed); - return Poll::Ready(None) + return Poll::Ready(None); } Err(EtherscanError::BlockedByCloudflare) => { warn!(target: "traces::etherscan", "blocked by cloudflare"); // mark key as invalid pin.invalid_api_key.store(true, Ordering::Relaxed); - return Poll::Ready(None) + return Poll::Ready(None); } Err(err) => { warn!(target: "traces::etherscan", "could not get etherscan info: {:?}", err); @@ -265,7 +265,7 @@ impl Stream for EtherscanFetcher { } if !made_progress_this_iter { - return Poll::Pending + return Poll::Pending; } } } diff --git a/crates/fmt/src/buffer.rs b/crates/fmt/src/buffer.rs index 9226d5f6b..95b736148 100644 --- a/crates/fmt/src/buffer.rs +++ b/crates/fmt/src/buffer.rs @@ -193,7 +193,7 @@ impl FormatBuffer { } if lines.peek().is_some() || s.ends_with('\n') { if self.restrict_to_single_line { - return Err(std::fmt::Error) + return Err(std::fmt::Error); } self.w.write_char('\n')?; self.handle_newline(comment_state); @@ -206,7 +206,7 @@ impl FormatBuffer { impl Write for FormatBuffer { fn write_str(&mut self, mut s: &str) -> std::fmt::Result { if s.is_empty() { - return Ok(()) + return Ok(()); } let mut indent = " ".repeat(self.current_indent_len()); @@ -221,7 +221,7 @@ impl Write for FormatBuffer { self.w.write_str(s)?; self.handle_newline(comment_state); } - break + break; } // We can see the next non-empty line. Write up to the @@ -250,7 +250,7 @@ impl Write for FormatBuffer { } WriteState::WriteTokens(comment_state) => { if s.is_empty() { - break + break; } // find the next newline or non-comment string separator (e.g. ' or ") @@ -261,13 +261,13 @@ impl Write for FormatBuffer { len = idx; if ch == '\n' { if self.restrict_to_single_line { - return Err(std::fmt::Error) + return Err(std::fmt::Error); } new_state = WriteState::LineStart(state); - break + break; } else if state == CommentState::None && (ch == '\'' || ch == '"') { new_state = WriteState::WriteString(ch); - break + break; } else { new_state = WriteState::WriteTokens(state); } @@ -279,7 +279,7 @@ impl Write for FormatBuffer { self.current_line_len += s.len(); self.last_char = s.chars().next_back(); self.state = new_state; - break + break; } else { // A newline or string has been found. Write up to that character and // continue on the tail @@ -305,7 +305,7 @@ impl Write for FormatBuffer { self.w.write_str(s)?; self.current_line_len += s.len(); self.last_char = s.chars().next_back(); - break + break; } // String end found, write the string and continue to add tokens after Some((_, _, len)) => { diff --git a/crates/fmt/src/comments.rs b/crates/fmt/src/comments.rs index eafdb9989..439588f4a 100644 --- a/crates/fmt/src/comments.rs +++ b/crates/fmt/src/comments.rs @@ -75,7 +75,7 @@ impl CommentWithMetadata { fn from_comment_and_src(comment: Comment, src: &str, last_comment: Option<&Self>) -> Self { let src_before = &src[..comment.loc().start()]; if src_before.is_empty() { - return Self::new(comment, CommentPosition::Prefix, false, 0) + return Self::new(comment, CommentPosition::Prefix, false, 0); } let mut lines_before = src_before.lines().rev(); @@ -90,7 +90,7 @@ impl CommentWithMetadata { CommentPosition::Prefix, last_line.is_none_or(str::is_empty), indent_len, - ) + ); } // TODO: this loop takes almost the entirety of the time spent in parsing, which is up to @@ -241,7 +241,7 @@ impl Comments { .map(|(idx, _)| idx) .unwrap_or_else(|| comments.len()); if pos == 0 { - return Vec::new() + return Vec::new(); } comments.rotate_left(pos); comments.split_off(comments.len() - pos).into() @@ -416,7 +416,7 @@ impl Iterator for NonCommentChars<'_> { fn next(&mut self) -> Option { for (state, _, ch) in self.0.by_ref() { if state == CommentState::None { - return Some(ch) + return Some(ch); } } None diff --git a/crates/fmt/src/formatter.rs b/crates/fmt/src/formatter.rs index 8f52d9e25..9b85bd1f8 100644 --- a/crates/fmt/src/formatter.rs +++ b/crates/fmt/src/formatter.rs @@ -176,12 +176,12 @@ impl<'a, W: Write> Formatter<'a, W> { /// Does the next written character require whitespace before fn next_char_needs_space(&self, next_char: char) -> bool { if self.is_beginning_of_line() { - return false + return false; } let last_char = if let Some(last_char) = self.last_char() { last_char } else { return false }; if last_char.is_whitespace() || next_char.is_whitespace() { - return false + return false; } match last_char { '{' => match next_char { @@ -203,10 +203,10 @@ impl<'a, W: Write> Formatter<'a, W> { fn will_it_fit(&self, text: impl AsRef) -> bool { let text = text.as_ref(); if text.is_empty() { - return true + return true; } if text.contains('\n') { - return false + return false; } let space: usize = self.next_char_needs_space(text.chars().next().unwrap()).into(); self.config.line_length >= @@ -261,7 +261,7 @@ impl<'a, W: Write> Formatter<'a, W> { fn blank_lines(&self, start: usize, end: usize) -> usize { // because of sorting import statements, start can be greater than end if start > end { - return 0 + return 0; } self.source[start..end].trim_comments().matches('\n').count() } @@ -461,7 +461,7 @@ impl<'a, W: Write> Formatter<'a, W> { /// or if the comment are wrapped fn write_comment(&mut self, comment: &CommentWithMetadata, is_first: bool) -> Result<()> { if self.inline_config.is_disabled(comment.loc) { - return self.write_raw_comment(comment) + return self.write_raw_comment(comment); } match comment.position { @@ -489,7 +489,7 @@ impl<'a, W: Write> Formatter<'a, W> { lines.try_for_each(|l| self.write_doc_block_line(comment, l))?; write!(self.buf(), " {}", comment.end_token().unwrap())?; self.write_preserved_line()?; - return Ok(()) + return Ok(()); } write!(self.buf(), "{}", comment.start_token())?; @@ -564,7 +564,7 @@ impl<'a, W: Write> Formatter<'a, W> { write!(self.buf(), " *{}", if needs_space { " " } else { "" })?; self.write_comment_line(comment, line)?; self.write_whitespace_separator(true)?; - return Ok(()) + return Ok(()); } let indent_whitespace_count = line @@ -590,7 +590,7 @@ impl<'a, W: Write> Formatter<'a, W> { line.chars().next().map(|ch| ch.is_whitespace()).unwrap_or_default(); if !self.is_beginning_of_line() || !start_with_ws { write!(self.buf(), "{line}")?; - return Ok(false) + return Ok(false); } // if this is the beginning of the line, @@ -602,7 +602,7 @@ impl<'a, W: Write> Formatter<'a, W> { .map(|(_, ch)| ch); let padded = format!("{}{}", " ".repeat(indent), chars.join("")); self.write_raw(padded)?; - return Ok(false) + return Ok(false); } let mut words = line.split(' ').peekable(); @@ -621,7 +621,7 @@ impl<'a, W: Write> Formatter<'a, W> { // write newline wrap token write!(self.buf(), "{}", comment.wrap_token())?; self.write_comment_line(comment, &words.join(" "))?; - return Ok(true) + return Ok(true); } self.write_whitespace_separator(false)?; @@ -1128,14 +1128,14 @@ impl<'a, W: Write> Formatter<'a, W> { /// expression decide how to split itself on multiple lines fn visit_assignment(&mut self, expr: &mut Expression) -> Result<()> { if self.try_on_single_line(|fmt| expr.visit(fmt))? { - return Ok(()) + return Ok(()); } self.write_postfix_comments_before(expr.loc().start())?; self.write_prefix_comments_before(expr.loc().start())?; if self.try_on_single_line(|fmt| fmt.indented(1, |fmt| expr.visit(fmt)))? { - return Ok(()) + return Ok(()); } let mut fit_on_next_line = false; @@ -1227,7 +1227,7 @@ impl<'a, W: Write> Formatter<'a, W> { })?; if fits_on_single { - return Ok(true) + return Ok(true); } } @@ -1255,7 +1255,7 @@ impl<'a, W: Write> Formatter<'a, W> { })?; write_chunk!(self, "}}")?; - return Ok(false) + return Ok(false); } // Determine writable statements by excluding statements from disabled start / end lines. @@ -1484,7 +1484,7 @@ impl<'a, W: Write> Formatter<'a, W> { let add_underscores = |string: &str, reversed: bool| -> String { if !config.is_thousands() || string.len() < 5 { - return string.to_string() + return string.to_string(); } if reversed { Box::new(string.as_bytes().chunks(3)) as Box> @@ -1845,7 +1845,7 @@ impl<'a, W: Write> Formatter<'a, W> { if import_groups.is_empty() { // nothing to sort - return + return; } // order all groups alphabetically @@ -2014,7 +2014,7 @@ impl Visitor for Formatter<'_, W> { fmt.write_postfix_comments_before(first.loc().start())?; fmt.write_whitespace_separator(true)?; } else { - return Ok(()) + return Ok(()); } if fmt.config.contract_new_lines { @@ -2162,7 +2162,7 @@ impl Visitor for Formatter<'_, W> { fmt.write_semicolon()?; Ok(()) })?; - return Ok(()) + return Ok(()); } let imports_start = imports.first().unwrap().0.loc.start(); @@ -2698,7 +2698,7 @@ impl Visitor for Formatter<'_, W> { #[instrument(name = "ident_path", skip_all)] fn visit_ident_path(&mut self, idents: &mut IdentifierPath) -> Result<(), Self::Error> { if idents.identifiers.is_empty() { - return Ok(()) + return Ok(()); } return_source_if_disabled!(self, idents.loc); @@ -2806,7 +2806,7 @@ impl Visitor for Formatter<'_, W> { if expr.is_none() { write_chunk!(self, loc.end(), "return;")?; - return Ok(()) + return Ok(()); } let expr = expr.as_mut().unwrap(); @@ -2823,7 +2823,7 @@ impl Visitor for Formatter<'_, W> { expr.visit(fmt) })?; if fits_on_single { - return Ok(()) + return Ok(()); } let mut fit_on_next_line = false; @@ -2840,7 +2840,7 @@ impl Visitor for Formatter<'_, W> { })?; if fit_on_next_line { tx.commit()?; - return Ok(()) + return Ok(()); } write_return(fmt)?; @@ -2891,7 +2891,7 @@ impl Visitor for Formatter<'_, W> { if args.is_empty() { write!(self.buf(), "({{}});")?; - return Ok(()) + return Ok(()); } write!(self.buf(), "(")?; @@ -2997,7 +2997,7 @@ impl Visitor for Formatter<'_, W> { let multiline = self.are_chunks_separated_multiline("{}", &chunks, "")?; if !multiline { self.write_chunks_separated(&chunks, "", false)?; - return Ok(()) + return Ok(()); } let mut chunks = chunks.iter_mut().peekable(); @@ -3045,7 +3045,7 @@ impl Visitor for Formatter<'_, W> { if !is_first_stmt { self.write_if_stmt(loc, cond, if_branch, else_branch)?; - return Ok(()) + return Ok(()); } self.context.if_stmt_single_line = Some(true); @@ -3200,7 +3200,7 @@ impl Visitor for Formatter<'_, W> { Statement::Block { statements, .. } if !statements.is_empty() => { fmt.write_whitespace_separator(false)?; fmt.visit_block(body_loc, statements, false, false)?; - return Ok(()) + return Ok(()); } _ => { // Attrs should be written on same line if first line is disabled @@ -3342,7 +3342,7 @@ impl Visitor for Formatter<'_, W> { name.content.push_str("()"); } self.write_chunk(&name)?; - return Ok(()) + return Ok(()); } let args = base.args.as_mut().unwrap(); @@ -3396,7 +3396,7 @@ impl Visitor for Formatter<'_, W> { write_chunk!(fmt, struct_name.loc.start(), "struct")?; struct_name.visit(fmt)?; if structure.fields.is_empty() { - return fmt.write_empty_brackets() + return fmt.write_empty_brackets(); } write!(fmt.buf(), " {{")?; diff --git a/crates/fmt/src/helpers.rs b/crates/fmt/src/helpers.rs index 1d036ba6b..21f8c4587 100644 --- a/crates/fmt/src/helpers.rs +++ b/crates/fmt/src/helpers.rs @@ -76,7 +76,7 @@ pub fn offset_to_line_column(content: &str, start: usize) -> (usize, usize) { line_counter += 1; } if offset > start { - return (line_counter, offset - start) + return (line_counter, offset - start); } } diff --git a/crates/fmt/src/macros.rs b/crates/fmt/src/macros.rs index c5c9d31a7..68305d9f2 100644 --- a/crates/fmt/src/macros.rs +++ b/crates/fmt/src/macros.rs @@ -91,7 +91,7 @@ macro_rules! return_source_if_disabled { let loc = $loc; if $self.inline_config.is_disabled(loc) { trace!("Returning because disabled: {loc:?}"); - return $self.visit_source(loc) + return $self.visit_source(loc); } }}; ($self:expr, $loc:expr, $suffix:literal) => {{ @@ -103,7 +103,7 @@ macro_rules! return_source_if_disabled { if !has_suffix { write!($self.buf(), "{}", $suffix)?; } - return Ok(()) + return Ok(()); } }}; } diff --git a/crates/fmt/src/solang_ext/ast_eq.rs b/crates/fmt/src/solang_ext/ast_eq.rs index 2640008e2..497a49596 100644 --- a/crates/fmt/src/solang_ext/ast_eq.rs +++ b/crates/fmt/src/solang_ext/ast_eq.rs @@ -5,7 +5,7 @@ use std::str::FromStr; /// Helper to convert a string number into a comparable one fn to_num(string: &str) -> I256 { if string.is_empty() { - return I256::ZERO + return I256::ZERO; } string.replace('_', "").trim().parse().unwrap() } @@ -14,7 +14,7 @@ fn to_num(string: &str) -> I256 { /// This will reverse the number so that 0's can be ignored fn to_num_reversed(string: &str) -> U256 { if string.is_empty() { - return U256::from(0) + return U256::from(0); } string.replace('_', "").trim().chars().rev().collect::().parse().unwrap() } diff --git a/crates/fmt/src/string.rs b/crates/fmt/src/string.rs index ae570a39b..d6be5fb22 100644 --- a/crates/fmt/src/string.rs +++ b/crates/fmt/src/string.rs @@ -91,7 +91,7 @@ impl Iterator for QuotedRanges<'_> { }; for (state, idx, _) in self.0.by_ref() { if matches!(state, QuoteState::Closing(_)) { - return Some((quote, start, idx)) + return Some((quote, start, idx)); } } None @@ -113,11 +113,11 @@ pub trait QuotedStringExt { fn is_quoted(&self) -> bool { let mut iter = self.quote_state_char_indices(); if !matches!(iter.next(), Some((QuoteState::Opening(_), _, _))) { - return false + return false; } while let Some((state, _, _)) = iter.next() { if matches!(state, QuoteState::Closing(_)) { - return iter.next().is_none() + return iter.next().is_none(); } } false diff --git a/crates/fmt/tests/formatter.rs b/crates/fmt/tests/formatter.rs index ba1d9216d..a2177032a 100644 --- a/crates/fmt/tests/formatter.rs +++ b/crates/fmt/tests/formatter.rs @@ -60,7 +60,7 @@ fn test_directory(base_name: &str, test_config: TestConfig) { .try_into() .unwrap_or_else(|err| panic!("Invalid config for {filename}: {err}")); - return Some((filename.to_string(), config, lines.join("\n"))) + return Some((filename.to_string(), config, lines.join("\n"))); } } diff --git a/crates/forge/bin/cmd/bind.rs b/crates/forge/bin/cmd/bind.rs index ec6b13dfd..84a9c2106 100644 --- a/crates/forge/bin/cmd/bind.rs +++ b/crates/forge/bin/cmd/bind.rs @@ -134,10 +134,10 @@ impl BindArgs { /// Returns the filter to use for `MultiAbigen` fn get_filter(&self) -> Result { if self.select_all { - return Ok(ContractFilter::All) + return Ok(ContractFilter::All); } if !self.select.is_empty() { - return Ok(SelectContracts::default().extend_regex(self.select.clone()).into()) + return Ok(SelectContracts::default().extend_regex(self.select.clone()).into()); } if let Some(skip) = self.build_args.skip.as_ref().filter(|s| !s.is_empty()) { return Ok(ExcludeContracts::default() @@ -147,7 +147,7 @@ impl BindArgs { .map(|s| Regex::new(s.file_pattern())) .collect::, _>>()?, ) - .into()) + .into()); } // This excludes all Test/Script and forge-std contracts Ok(ExcludeContracts::default() diff --git a/crates/forge/bin/cmd/bind_json.rs b/crates/forge/bin/cmd/bind_json.rs index d8a361134..ba35efcc0 100644 --- a/crates/forge/bin/cmd/bind_json.rs +++ b/crates/forge/bin/cmd/bind_json.rs @@ -375,7 +375,7 @@ impl StructsState { for (name, paths) in names_to_paths { if paths.len() <= 1 { // no alias needed - continue + continue; } for (i, path) in paths.into_iter().enumerate() { diff --git a/crates/forge/bin/cmd/cache.rs b/crates/forge/bin/cmd/cache.rs index efbdde5cb..c68bcb66b 100644 --- a/crates/forge/bin/cmd/cache.rs +++ b/crates/forge/bin/cmd/cache.rs @@ -131,7 +131,7 @@ fn clean_chain_cache(chain: impl Into, blocks: Vec, etherscan: bool) if blocks.is_empty() { Config::clean_foundry_etherscan_chain_cache(chain)?; if etherscan { - return Ok(()) + return Ok(()); } Config::clean_foundry_chain_cache(chain)?; } else { diff --git a/crates/forge/bin/cmd/config.rs b/crates/forge/bin/cmd/config.rs index 0aa1fdb63..7f529d1dd 100644 --- a/crates/forge/bin/cmd/config.rs +++ b/crates/forge/bin/cmd/config.rs @@ -32,7 +32,7 @@ impl ConfigArgs { for warning in fix_tomls() { sh_warn!("{warning}")?; } - return Ok(()) + return Ok(()); } let config = self diff --git a/crates/forge/bin/cmd/eip712.rs b/crates/forge/bin/cmd/eip712.rs index eb1d8dc1d..103f7aa61 100644 --- a/crates/forge/bin/cmd/eip712.rs +++ b/crates/forge/bin/cmd/eip712.rs @@ -143,7 +143,7 @@ impl Resolver { subtypes, )? else { - return Ok(None) + return Ok(None); }; write!(result, "{ty} {name}", name = member.name)?; @@ -156,19 +156,19 @@ impl Resolver { result.push(')'); if !append_subtypes { - return Ok(Some(result)) + return Ok(Some(result)); } for (subtype_name, subtype_id) in subtypes.iter().map(|(name, id)| (name.clone(), *id)).collect::>() { if subtype_id == id { - continue + continue; } let Some(encoded_subtype) = self.resolve_eip712_inner(subtype_id, subtypes, false, Some(&subtype_name))? else { - return Ok(None) + return Ok(None); }; result.push_str(&encoded_subtype); } @@ -189,7 +189,7 @@ impl Resolver { TypeName::ElementaryTypeName(ty) => Ok(Some(ty.name.clone())), TypeName::ArrayTypeName(ty) => { let Some(inner) = self.resolve_type(&ty.base_type, subtypes)? else { - return Ok(None) + return Ok(None); }; let len = parse_array_length(&ty.type_descriptions)?; @@ -228,9 +228,9 @@ impl Resolver { name }; - return Ok(Some(name)) + return Ok(Some(name)); } else { - return Ok(None) + return Ok(None); } } } diff --git a/crates/forge/bin/cmd/fmt.rs b/crates/forge/bin/cmd/fmt.rs index 137e139e6..b441461ed 100644 --- a/crates/forge/bin/cmd/fmt.rs +++ b/crates/forge/bin/cmd/fmt.rs @@ -76,7 +76,7 @@ impl FmtArgs { ((path.is_absolute() && ignored.contains(path)) || ignored.contains(&cwd.join(path))) { - continue + continue; } if path.is_dir() { @@ -132,7 +132,7 @@ impl FmtArgs { // If new format then compute diff summary. if new_format { - return Ok(Some(format_diff_summary(&name, &diff))) + return Ok(Some(format_diff_summary(&name, &diff))); } } else if let Some(path) = path { // If new format then write it on disk. @@ -152,7 +152,7 @@ impl FmtArgs { HINT: If you are working outside of the project, \ try providing paths to your source files: `forge fmt `" )?; - return Ok(()) + return Ok(()); } paths .par_iter() diff --git a/crates/forge/bin/cmd/inspect.rs b/crates/forge/bin/cmd/inspect.rs index 426a8b36e..ff49dad60 100644 --- a/crates/forge/bin/cmd/inspect.rs +++ b/crates/forge/bin/cmd/inspect.rs @@ -182,7 +182,7 @@ pub fn print_storage_layout(storage_layout: Option<&StorageLayout>) -> Result<() }; if shell::is_json() { - return print_json(&storage_layout) + return print_json(&storage_layout); } let mut table = Table::new(); diff --git a/crates/forge/bin/cmd/install.rs b/crates/forge/bin/cmd/install.rs index 3543caeea..65b714d53 100644 --- a/crates/forge/bin/cmd/install.rs +++ b/crates/forge/bin/cmd/install.rs @@ -301,7 +301,7 @@ impl Installer<'_> { for &prefix in common_prefixes { if let Some(rem) = tag.strip_prefix(prefix) { maybe_semver = rem; - break + break; } } match Version::parse(maybe_semver) { @@ -357,7 +357,7 @@ impl Installer<'_> { if e.to_string().contains("did not match any file(s) known to git") { e = eyre::eyre!("Tag: \"{tag}\" not found for repo \"{url}\"!") } - return Err(e) + return Err(e); } if is_branch { @@ -371,7 +371,7 @@ impl Installer<'_> { fn match_tag(self, tag: &str, path: &Path) -> Result { // only try to match if it looks like a version tag if !DEPENDENCY_VERSION_TAG_REGEX.is_match(tag) { - return Ok(tag.into()) + return Ok(tag.into()); } // generate candidate list by filtering `git tag` output, valid ones are those "starting @@ -389,13 +389,13 @@ impl Installer<'_> { // no match found, fall back to the user-provided tag if candidates.is_empty() { - return Ok(tag.into()) + return Ok(tag.into()); } // have exact match for candidate in candidates.iter() { if candidate == tag { - return Ok(tag.into()) + return Ok(tag.into()); } } @@ -405,7 +405,7 @@ impl Installer<'_> { let input = prompt!( "Found a similar version tag: {matched_tag}, do you want to use this instead? [Y/n] " )?; - return if match_yn(input) { Ok(matched_tag.clone()) } else { Ok(tag.into()) } + return if match_yn(input) { Ok(matched_tag.clone()) } else { Ok(tag.into()) }; } // multiple candidates, ask the user to choose one or skip @@ -428,7 +428,7 @@ impl Installer<'_> { Ok(i) if (1..=n_candidates).contains(&i) => { let c = &candidates[i]; sh_println!("[{i}] {c} selected")?; - return Ok(c.clone()) + return Ok(c.clone()); } _ => continue, } @@ -451,13 +451,13 @@ impl Installer<'_> { // no match found, fall back to the user-provided tag if candidates.is_empty() { - return Ok(None) + return Ok(None); } // have exact match for candidate in candidates.iter() { if candidate == tag { - return Ok(Some(tag.to_string())) + return Ok(Some(tag.to_string())); } } @@ -467,7 +467,7 @@ impl Installer<'_> { let input = prompt!( "Found a similar branch: {matched_tag}, do you want to use this instead? [Y/n] " )?; - return if match_yn(input) { Ok(Some(matched_tag.clone())) } else { Ok(None) } + return if match_yn(input) { Ok(Some(matched_tag.clone())) } else { Ok(None) }; } // multiple candidates, ask the user to choose one or skip @@ -487,7 +487,7 @@ impl Installer<'_> { // default selection, return None if input.is_empty() { sh_println!("Canceled branch matching")?; - return Ok(None) + return Ok(None); } // match user input, 0 indicates skipping and use original tag diff --git a/crates/forge/bin/cmd/selectors.rs b/crates/forge/bin/cmd/selectors.rs index 31992983d..d04438ae2 100644 --- a/crates/forge/bin/cmd/selectors.rs +++ b/crates/forge/bin/cmd/selectors.rs @@ -141,7 +141,7 @@ impl SelectorsSubcommands { while let Some((contract, artifact)) = artifacts.next() { let abi = artifact.abi.ok_or_else(|| eyre::eyre!("Unable to fetch abi"))?; if abi.functions.is_empty() && abi.events.is_empty() && abi.errors.is_empty() { - continue + continue; } sh_println!("Uploading selectors for {contract}...")?; @@ -262,7 +262,7 @@ impl SelectorsSubcommands { while let Some((contract, artifact)) = artifacts.next() { let abi = artifact.abi.ok_or_else(|| eyre::eyre!("Unable to fetch abi"))?; if abi.functions.is_empty() && abi.events.is_empty() && abi.errors.is_empty() { - continue + continue; } sh_println!("{contract}")?; diff --git a/crates/forge/bin/cmd/snapshot.rs b/crates/forge/bin/cmd/snapshot.rs index 872a53138..d0ee21d8a 100644 --- a/crates/forge/bin/cmd/snapshot.rs +++ b/crates/forge/bin/cmd/snapshot.rs @@ -159,12 +159,12 @@ impl GasSnapshotConfig { fn is_in_gas_range(&self, gas_used: u64) -> bool { if let Some(min) = self.min { if gas_used < min { - return false + return false; } } if let Some(max) = self.max { if gas_used > max { - return false + return false; } } true diff --git a/crates/forge/bin/cmd/watch.rs b/crates/forge/bin/cmd/watch.rs index 926aecdba..e75513318 100644 --- a/crates/forge/bin/cmd/watch.rs +++ b/crates/forge/bin/cmd/watch.rs @@ -356,11 +356,11 @@ fn clean_cmd_args(num: usize, mut cmd_args: Vec) -> Vec { fn contains_w_in_short(arg: &str) -> Option { let mut iter = arg.chars().peekable(); if *iter.peek()? != '-' { - return None + return None; } iter.next(); if *iter.peek()? == '-' { - return None + return None; } Some(iter.any(|c| c == 'w')) } diff --git a/crates/forge/src/runner.rs b/crates/forge/src/runner.rs index 467f1acd6..b68743747 100644 --- a/crates/forge/src/runner.rs +++ b/crates/forge/src/runner.rs @@ -294,7 +294,7 @@ impl<'a> ContractRunner<'a> { [("setUp()".to_string(), TestResult::fail("multiple setUp functions".to_string()))] .into(), warnings, - ) + ); } // Check if `afterInvariant` function with valid signature declared. @@ -310,7 +310,7 @@ impl<'a> ContractRunner<'a> { )] .into(), warnings, - ) + ); } let call_after_invariant = after_invariant_fns.first().is_some_and(|after_invariant_fn| { let match_sig = after_invariant_fn.name == "afterInvariant"; @@ -344,7 +344,7 @@ impl<'a> ContractRunner<'a> { start.elapsed(), [("setUp()".to_string(), TestResult::setup_result(setup))].into(), warnings, - ) + ); } // Filter out functions sequentially since it's very fast and there is no need to do it diff --git a/crates/forge/tests/cli/verify.rs b/crates/forge/tests/cli/verify.rs index 60a794477..7bddb291a 100644 --- a/crates/forge/tests/cli/verify.rs +++ b/crates/forge/tests/cli/verify.rs @@ -81,7 +81,7 @@ fn parse_verification_result(cmd: &mut TestCommand, retries: u32) -> eyre::Resul let out = String::from_utf8_lossy(&output.stdout); println!("{out}"); if out.contains("Contract successfully verified") { - return Ok(()) + return Ok(()); } eyre::bail!( "Failed to get verification, stdout: {}, stderr: {}", diff --git a/crates/macros/src/cheatcodes.rs b/crates/macros/src/cheatcodes.rs index 4d0f260c2..e78cf7796 100644 --- a/crates/macros/src/cheatcodes.rs +++ b/crates/macros/src/cheatcodes.rs @@ -102,7 +102,7 @@ fn derive_call(name: &Ident, data: &DataStruct, attrs: &[Attribute]) -> Result Result { if input.variants.iter().any(|v| v.fields.len() != 1) { - return Err(syn::Error::new(name.span(), "expected all variants to have a single field")) + return Err(syn::Error::new(name.span(), "expected all variants to have a single field")); } // keep original order for matching @@ -135,7 +135,7 @@ fn derive_errors_events_enum( events: bool, ) -> Result { if input.variants.iter().any(|v| v.fields.len() != 1) { - return Err(syn::Error::new(name.span(), "expected all variants to have a single field")) + return Err(syn::Error::new(name.span(), "expected all variants to have a single field")); } let (ident, ty_assoc_name, ty, doc) = if events { @@ -325,14 +325,14 @@ fn get_docstring(attrs: &[Attribute]) -> String { let mut doc = String::new(); for attr in attrs { if !attr.path().is_ident("doc") { - continue + continue; } let syn::Meta::NameValue(syn::MetaNameValue { value: syn::Expr::Lit(syn::ExprLit { lit: syn::Lit::Str(s), .. }), .. }) = &attr.meta else { - continue + continue; }; let value = s.value(); @@ -406,7 +406,7 @@ fn func_docstring(doc: &str) -> (&str, &str, &str, &str) { /// Returns `(visibility, mutability)` from a given Solidity function declaration. fn parse_function_attrs(f: &str, span: Span) -> Result<(&str, &str)> { let Some(ext_start) = f.find("external") else { - return Err(Error::new(span, "functions must have `external` visibility")) + return Err(Error::new(span, "functions must have `external` visibility")); }; let visibility = "External"; diff --git a/crates/macros/src/console_fmt.rs b/crates/macros/src/console_fmt.rs index 2522afb2c..414c33282 100644 --- a/crates/macros/src/console_fmt.rs +++ b/crates/macros/src/console_fmt.rs @@ -33,7 +33,7 @@ fn impl_struct(s: &DataStruct) -> Option { }; if fields.is_empty() { - return None + return None; } let first_ty = match &fields.first().unwrap().ty { diff --git a/crates/script-sequence/src/sequence.rs b/crates/script-sequence/src/sequence.rs index 4b2b434e1..05dd271d8 100644 --- a/crates/script-sequence/src/sequence.rs +++ b/crates/script-sequence/src/sequence.rs @@ -96,7 +96,7 @@ impl ScriptSequence { self.sort_receipts(); if self.transactions.is_empty() { - return Ok(()) + return Ok(()); } let Some((path, sensitive_path)) = self.paths.clone() else { return Ok(()) }; @@ -225,12 +225,12 @@ impl ScriptSequence { pub fn sig_to_file_name(sig: &str) -> String { if let Some((name, _)) = sig.split_once('(') { // strip until call argument parenthesis - return name.to_string() + return name.to_string(); } // assume calldata if `sig` is hex if let Ok(calldata) = hex::decode(sig) { // in which case we return the function signature - return hex::encode(&calldata[..SELECTOR_LEN]) + return hex::encode(&calldata[..SELECTOR_LEN]); } // return sig as is diff --git a/crates/script/src/receipts.rs b/crates/script/src/receipts.rs index cff893b55..1827e0c56 100644 --- a/crates/script/src/receipts.rs +++ b/crates/script/src/receipts.rs @@ -56,7 +56,7 @@ pub async fn check_tx_status( trace!("tx is still known to the node, waiting for receipt"); } else { trace!("eth_getTransactionByHash returned null, assuming dropped"); - break + break; } } diff --git a/crates/script/src/transaction.rs b/crates/script/src/transaction.rs index 2cf480b9b..43ebf125f 100644 --- a/crates/script/src/transaction.rs +++ b/crates/script/src/transaction.rs @@ -111,7 +111,7 @@ impl ScriptTransactionBuilder { // `create2` transactions are prefixed by a 32 byte salt. let creation_code = if is_create2 { if data.len() < 32 { - return Ok(()) + return Ok(()); } &data[32..] } else { diff --git a/crates/script/src/verify.rs b/crates/script/src/verify.rs index 220991703..3b4a51c5a 100644 --- a/crates/script/src/verify.rs +++ b/crates/script/src/verify.rs @@ -158,7 +158,7 @@ impl VerifyBundle { compilation_profile: Some(artifact.profile.to_string()), }; - return Some(verify) + return Some(verify); } } None @@ -231,7 +231,7 @@ async fn verify_contracts( } if num_of_successful_verifications < num_verifications { - return Err(eyre!("Not all ({num_of_successful_verifications} / {num_verifications}) contracts were verified!")) + return Err(eyre!("Not all ({num_of_successful_verifications} / {num_verifications}) contracts were verified!")); } sh_println!("All ({num_verifications}) contracts were verified!")?; diff --git a/crates/verify/src/etherscan/mod.rs b/crates/verify/src/etherscan/mod.rs index 26832e3b4..0546e3682 100644 --- a/crates/verify/src/etherscan/mod.rs +++ b/crates/verify/src/etherscan/mod.rs @@ -68,7 +68,7 @@ impl VerificationProvider for EtherscanVerificationProvider { verify_args.address.to_checksum(None) )?; - return Ok(()) + return Ok(()); } trace!(?verify_args, "submitting verification request"); @@ -99,12 +99,12 @@ impl VerificationProvider for EtherscanVerificationProvider { // specific for blockscout response || resp.result == "Smart-contract already verified." { - return Ok(None) + return Ok(None); } if resp.result.starts_with("Unable to locate ContractCode at") { warn!("{}", resp.result); - return Err(eyre!("Etherscan could not detect the deployment.")) + return Err(eyre!("Etherscan could not detect the deployment.")); } warn!("Failed verify submission: {:?}", resp); @@ -136,7 +136,7 @@ impl VerificationProvider for EtherscanVerificationProvider { retry: RETRY_CHECK_ON_VERIFY, verifier: args.verifier, }; - return self.check(check_args).await + return self.check(check_args).await; } } else { sh_println!("Contract source code already verified")?; @@ -172,20 +172,20 @@ impl VerificationProvider for EtherscanVerificationProvider { ); if resp.result == "Pending in queue" { - return Err(RetryError::Retry(eyre!("Verification is still pending..."))) + return Err(RetryError::Retry(eyre!("Verification is still pending..."))); } if resp.result == "Unable to verify" { - return Err(RetryError::Retry(eyre!("Unable to verify."))) + return Err(RetryError::Retry(eyre!("Unable to verify."))); } if resp.result == "Already Verified" { let _ = sh_println!("Contract source code already verified"); - return Ok(()) + return Ok(()); } if resp.status == "0" { - return Err(RetryError::Break(eyre!("Contract failed to verify."))) + return Err(RetryError::Break(eyre!("Contract failed to verify."))); } if resp.result == "Pass - Verified" { @@ -359,10 +359,10 @@ impl EtherscanVerificationProvider { read_constructor_args_file(constructor_args_path.to_path_buf())?, )?; let encoded_args = hex::encode(encoded_args); - return Ok(Some(encoded_args[8..].into())) + return Ok(Some(encoded_args[8..].into())); } if args.guess_constructor_args { - return Ok(Some(self.guess_constructor_args(args, context).await?)) + return Ok(Some(self.guess_constructor_args(args, context).await?)); } Ok(args.constructor_args.clone()) diff --git a/crates/verify/src/utils.rs b/crates/verify/src/utils.rs index 6165fa718..68ad045f8 100644 --- a/crates/verify/src/utils.rs +++ b/crates/verify/src/utils.rs @@ -131,7 +131,7 @@ pub fn build_using_cache( } } - return Ok(artifact.artifact) + return Ok(artifact.artifact); } } } @@ -186,7 +186,7 @@ fn is_partial_match( // 1. Check length of constructor args if constructor_args.is_empty() || is_runtime { // Assume metadata is at the end of the bytecode - return try_extract_and_compare_bytecode(local_bytecode, bytecode) + return try_extract_and_compare_bytecode(local_bytecode, bytecode); } // If not runtime, extract constructor args from the end of the bytecode diff --git a/crates/verify/src/verify.rs b/crates/verify/src/verify.rs index c2ac28770..28aaaf021 100644 --- a/crates/verify/src/verify.rs +++ b/crates/verify/src/verify.rs @@ -216,7 +216,7 @@ impl VerifyArgs { .create_verify_request(&self, &context) .await?; sh_println!("{}", args.source)?; - return Ok(()) + return Ok(()); } let verifier_url = self.verifier.verifier_url.clone(); From 193be39c5341f41b830473921d1cd0c8fc7056fc Mon Sep 17 00:00:00 2001 From: Ameya Deshmukh Date: Fri, 20 Dec 2024 18:53:00 +0530 Subject: [PATCH 016/130] Supporting `Seismic` specific transactions (#35) --- .github/workflows/seismic.yml | 52 +- Cargo.lock | 2213 +++++++++++------ Cargo.toml | 44 +- crates/anvil/Cargo.toml | 3 + crates/anvil/core/Cargo.toml | 9 + .../anvil/core/src/eth/transaction/crypto.rs | 100 + crates/anvil/core/src/eth/transaction/mod.rs | 220 +- crates/anvil/src/eth/api.rs | 18 +- crates/anvil/src/eth/backend/executor.rs | 1 + crates/anvil/src/eth/backend/mem/mod.rs | 3 +- crates/anvil/src/eth/fees.rs | 1 + crates/anvil/src/eth/sign.rs | 6 + crates/anvil/tests/it/eip4844.rs | 2 +- crates/anvil/tests/it/eip7702.rs | 4 +- crates/anvil/tests/it/main.rs | 1 + crates/anvil/tests/it/seismic.rs | 147 ++ .../anvil/tests/it/seismic_test_bytecode.txt | 1 + crates/anvil/tests/it/utils.rs | 9 +- crates/common/src/provider/mod.rs | 19 +- crates/forge/tests/cli/config.rs | 1 + 20 files changed, 2042 insertions(+), 812 deletions(-) create mode 100644 crates/anvil/core/src/eth/transaction/crypto.rs create mode 100644 crates/anvil/tests/it/seismic.rs create mode 100644 crates/anvil/tests/it/seismic_test_bytecode.txt diff --git a/.github/workflows/seismic.yml b/.github/workflows/seismic.yml index 9ecc6c257..05488877a 100644 --- a/.github/workflows/seismic.yml +++ b/.github/workflows/seismic.yml @@ -81,28 +81,30 @@ jobs: - name: sanvil warnings run: RUSTFLAGS="-D warnings" cargo check --bin sanvil - # test: - # runs-on: ubuntu-latest - # timeout-minutes: 30 - # steps: - # - uses: actions/checkout@v4 - # - uses: dtolnay/rust-toolchain@stable - # - uses: Swatinem/rust-cache@v2 - # with: - # shared-key: "test-cache" - # - name: Install SSH Keys - # uses: webfactory/ssh-agent@v0.9.0 - # with: - # ssh-private-key: | - # ${{ secrets.ACTIONS_MANTLE_SSH_ED25519 }} - # ${{ secrets.ACTIONS_SFORGESTD_SSH_ED25519 }} - # ${{ secrets.ACTIONS_SALLOYCORE_SSH_ED25519 }} - # ${{ secrets.ACTIONS_SREVM_SSH_ED25519 }} - # ${{ secrets.ACTIONS_SREVMINSPECTORS_SSH_ED25519 }} - # ${{ secrets.ACTIONS_SFOUNDRYFDB_SSH_ED25519 }} - # ${{ secrets.ACTIONS_SRETH_SSH_ED25519 }} - # ${{ secrets.ACTIONS_TEESERVICE_SSH_ED25519 }} - # - name: sforge tests - # run: cargo test --bin sforge - # - name: sanvil tests - # run: cargo test --bin sanvil + test: + runs-on: ubuntu-latest + timeout-minutes: 30 + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + - uses: Swatinem/rust-cache@v2 + with: + shared-key: "test-cache" + - name: Install SSH Keys + uses: webfactory/ssh-agent@v0.9.0 + with: + ssh-private-key: | + ${{ secrets.ACTIONS_MANTLE_SSH_ED25519 }} + ${{ secrets.ACTIONS_SFORGESTD_SSH_ED25519 }} + ${{ secrets.ACTIONS_SALLOYCORE_SSH_ED25519 }} + ${{ secrets.ACTIONS_SREVM_SSH_ED25519 }} + ${{ secrets.ACTIONS_SREVMINSPECTORS_SSH_ED25519 }} + ${{ secrets.ACTIONS_SFOUNDRYFDB_SSH_ED25519 }} + ${{ secrets.ACTIONS_SRETH_SSH_ED25519 }} + ${{ secrets.ACTIONS_TEESERVICE_SSH_ED25519 }} + - name: seismic transaction + run: cargo test test_seismic_transaction + # - name: sforge tests + # run: cargo test --bin sforge + # - name: sanvil tests + # run: cargo test --bin sanvil diff --git a/Cargo.lock b/Cargo.lock index d090e9c3b..520985115 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -33,6 +33,16 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +[[package]] +name = "aead" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +dependencies = [ + "crypto-common", + "generic-array", +] + [[package]] name = "aes" version = "0.8.4" @@ -44,6 +54,20 @@ dependencies = [ "cpufeatures", ] +[[package]] +name = "aes-gcm" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" +dependencies = [ + "aead", + "aes", + "cipher", + "ctr", + "ghash", + "subtle", +] + [[package]] name = "ahash" version = "0.8.11" @@ -68,19 +92,20 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.18" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy-chains" -version = "0.1.34" +version = "0.1.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8158b4878c67837e5413721cc44298e6a2d88d39203175ea025e51892a16ba4c" +checksum = "18c5c520273946ecf715c0010b4e3503d7eba9893cd9ce6b7fff5654c4a3c470" dependencies = [ + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "num_enum", "serde", - "strum", + "strum 0.26.3", ] [[package]] @@ -90,7 +115,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "629b62e38d471cc15fea534eb7283d2f8a4e8bdb1811bcc5d66dda6cfce6fae1" dependencies = [ "alloy-eips", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-rlp", "alloy-serde", "c-kzg", @@ -107,7 +132,7 @@ dependencies = [ "alloy-json-abi", "alloy-network", "alloy-network-primitives", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-provider", "alloy-pubsub", "alloy-rpc-types-eth", @@ -115,22 +140,22 @@ dependencies = [ "alloy-transport", "futures", "futures-util", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "alloy-dyn-abi" version = "0.8.1" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=adc0cf2#adc0cf2fb96c9be80df1d71cfe8ba745dc33f1c6" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606#00316061227374bb57f01baac2c47e5587afa5cb" dependencies = [ "alloy-json-abi", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-sol-type-parser", "alloy-sol-types", "arbitrary", "const-hex", "derive_arbitrary", - "derive_more 1.0.0", + "derive_more", "itoa", "proptest", "serde", @@ -144,7 +169,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0069cf0642457f87a01a014f6dc29d5d893cd4fd8fddf0c3cdfad1bb3ebafc41" dependencies = [ - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-rlp", "arbitrary", "rand", @@ -157,7 +182,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea59dc42102bc9a1905dc57901edc6dd48b9f38115df86c7d252acba70d71d04" dependencies = [ - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-rlp", "arbitrary", "k256", @@ -173,12 +198,12 @@ checksum = "f923dd5fca5f67a43d81ed3ebad0880bd41f6dd0ada930030353ac356c54cd0f" dependencies = [ "alloy-eip2930", "alloy-eip7702", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-rlp", "alloy-serde", "arbitrary", "c-kzg", - "derive_more 1.0.0", + "derive_more", "once_cell", "serde", "sha2", @@ -190,7 +215,7 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a7a18afb0b318616b6b2b0e2e7ac5529d32a966c673b48091c9919e284e6aca" dependencies = [ - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-serde", "serde", ] @@ -198,9 +223,9 @@ dependencies = [ [[package]] name = "alloy-json-abi" version = "0.8.1" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=adc0cf2#adc0cf2fb96c9be80df1d71cfe8ba745dc33f1c6" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606#00316061227374bb57f01baac2c47e5587afa5cb" dependencies = [ - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-sol-type-parser", "serde", "serde_json", @@ -212,11 +237,11 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3c717b5298fad078cd3a418335b266eba91b511383ca9bd497f742d5975d5ab" dependencies = [ - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-sol-types", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tracing", ] @@ -230,7 +255,7 @@ dependencies = [ "alloy-eips", "alloy-json-rpc", "alloy-network-primitives", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-rpc-types-eth", "alloy-serde", "alloy-signer", @@ -238,7 +263,7 @@ dependencies = [ "async-trait", "auto_impl", "futures-utils-wasm", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -248,7 +273,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94ad40869867ed2d9cd3842b1e800889e5b49e6b92da346e93862b4a741bedf3" dependencies = [ "alloy-eips", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-serde", "serde", ] @@ -256,7 +281,7 @@ dependencies = [ [[package]] name = "alloy-primitives" version = "0.8.1" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=adc0cf2#adc0cf2fb96c9be80df1d71cfe8ba745dc33f1c6" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606#00316061227374bb57f01baac2c47e5587afa5cb" dependencies = [ "alloy-rlp", "arbitrary", @@ -264,7 +289,7 @@ dependencies = [ "cfg-if", "const-hex", "derive_arbitrary", - "derive_more 1.0.0", + "derive_more", "getrandom", "hex-literal", "itoa", @@ -278,6 +303,25 @@ dependencies = [ "tiny-keccak", ] +[[package]] +name = "alloy-primitives" +version = "0.8.1" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=93e5949#93e5949f20f8c701351aa4134d9fa03cbc4ad1ef" +dependencies = [ + "alloy-rlp", + "bytes", + "cfg-if", + "const-hex", + "derive_more", + "getrandom", + "hex-literal", + "itoa", + "rand", + "ruint", + "serde", + "tiny-keccak", +] + [[package]] name = "alloy-provider" version = "0.3.6" @@ -290,7 +334,7 @@ dependencies = [ "alloy-json-rpc", "alloy-network", "alloy-network-primitives", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-pubsub", "alloy-rpc-client", "alloy-rpc-types-eth", @@ -307,11 +351,11 @@ dependencies = [ "futures", "futures-utils-wasm", "lru", - "pin-project 1.1.5", + "pin-project 1.1.7", "reqwest", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", "url", @@ -324,7 +368,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d05f63677e210d758cd5d6d1ce10f20c980c3560ccfbe79ba1997791862a04f" dependencies = [ "alloy-json-rpc", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-transport", "bimap", "futures", @@ -338,9 +382,9 @@ dependencies = [ [[package]] name = "alloy-rlp" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26154390b1d205a4a7ac7352aa2eb4f81f391399d4e2f546fb81a2f8bb383f62" +checksum = "da0822426598f95e45dd1ea32a738dac057529a709ee645fcc516ffa4cbde08f" dependencies = [ "alloy-rlp-derive", "arrayvec", @@ -349,13 +393,13 @@ dependencies = [ [[package]] name = "alloy-rlp-derive" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d0f2d905ebd295e7effec65e5f6868d153936130ae718352771de3e7d03c75c" +checksum = "2b09cae092c27b6f1bde952653a22708691802e57bfef4a2973b80bea21efd3f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -365,14 +409,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d82952dca71173813d4e5733e2c986d8b04aea9e0f3b0a576664c232ad050a5" dependencies = [ "alloy-json-rpc", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-pubsub", "alloy-transport", "alloy-transport-http", "alloy-transport-ipc", "alloy-transport-ws", "futures", - "pin-project 1.1.5", + "pin-project 1.1.7", "reqwest", "serde", "serde_json", @@ -398,17 +442,43 @@ dependencies = [ "serde", ] +[[package]] +name = "alloy-rpc-types-admin" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fefd12e99dd6b7de387ed13ad047ce2c90d8950ca62fc48b8a457ebb8f936c61" +dependencies = [ + "alloy-genesis", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", + "serde", + "serde_json", +] + [[package]] name = "alloy-rpc-types-anvil" version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d25cb45ad7c0930dd62eecf164d2afe4c3d2dd2c82af85680ad1f118e1e5cb83" dependencies = [ - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-serde", "serde", ] +[[package]] +name = "alloy-rpc-types-beacon" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e7081d2206dca51ce23a06338d78d9b536931cc3f15134fc1c6535eb2b77f18" +dependencies = [ + "alloy-eips", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", + "alloy-rpc-types-engine", + "serde", + "serde_with", + "thiserror 1.0.69", +] + [[package]] name = "alloy-rpc-types-engine" version = "0.3.6" @@ -417,10 +487,11 @@ checksum = "1464c4dd646e1bdfde86ae65ce5ba168dbb29180b478011fe87117ae46b1629b" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-rlp", "alloy-serde", - "derive_more 1.0.0", + "derive_more", + "jsonrpsee-types", "jsonwebtoken", "rand", "serde", @@ -435,14 +506,28 @@ dependencies = [ "alloy-consensus", "alloy-eips", "alloy-network-primitives", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-rlp", "alloy-serde", "alloy-sol-types", "cfg-if", - "derive_more 1.0.0", + "derive_more", "hashbrown 0.14.5", "itertools 0.13.0", + "jsonrpsee-types", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-rpc-types-mev" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "922d92389e5022650c4c60ffd2f9b2467c3f853764f0f74ff16a23106f9017d5" +dependencies = [ + "alloy-eips", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", + "alloy-serde", "serde", "serde_json", ] @@ -453,12 +538,12 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98db35cd42c90b484377e6bc44d95377a7a38a5ebee996e67754ac0446d542ab" dependencies = [ - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-rpc-types-eth", "alloy-serde", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -467,7 +552,7 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6bac37082c3b21283b3faf5cc0e08974272aee2f756ce1adeb26db56a5fce0d5" dependencies = [ - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-rpc-types-eth", "alloy-serde", "serde", @@ -479,7 +564,7 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "731f75ec5d383107fd745d781619bd9cedf145836c51ecb991623d41278e71fa" dependencies = [ - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "arbitrary", "serde", "serde_json", @@ -492,13 +577,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "307324cca94354cd654d6713629f0383ec037e1ff9e3e3d547212471209860c0" dependencies = [ "alloy-dyn-abi", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-sol-types", "async-trait", "auto_impl", "elliptic-curve", "k256", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -509,13 +594,13 @@ checksum = "076be69aa26a4c500919f1ad3847662aa6d1e9bc2995e263ed826b1546d1b990" dependencies = [ "alloy-consensus", "alloy-network", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-signer", "async-trait", "aws-sdk-kms", "k256", "spki", - "thiserror", + "thiserror 1.0.69", "tracing", ] @@ -527,13 +612,13 @@ checksum = "cabd79d4eb954a8c2ae7889a18e2466af186ae68376251cf58525239c156ec54" dependencies = [ "alloy-consensus", "alloy-network", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-signer", "async-trait", "gcloud-sdk", "k256", "spki", - "thiserror", + "thiserror 1.0.69", "tracing", ] @@ -546,14 +631,14 @@ dependencies = [ "alloy-consensus", "alloy-dyn-abi", "alloy-network", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-signer", "alloy-sol-types", "async-trait", "coins-ledger", "futures-util", "semver 1.0.23", - "thiserror", + "thiserror 1.0.69", "tracing", ] @@ -565,7 +650,7 @@ checksum = "9fabe917ab1778e760b4701628d1cae8e028ee9d52ac6307de4e1e9286ab6b5f" dependencies = [ "alloy-consensus", "alloy-network", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-signer", "async-trait", "coins-bip32", @@ -574,7 +659,7 @@ dependencies = [ "eth-keystore", "k256", "rand", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -585,11 +670,11 @@ checksum = "1068949eda889b2c052b29a6e8c7ea2ba16be6d1af83ad165fff2a4e4ad19fcd" dependencies = [ "alloy-consensus", "alloy-network", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-signer", "async-trait", "semver 1.0.23", - "thiserror", + "thiserror 1.0.69", "tracing", "trezor-client", ] @@ -597,30 +682,30 @@ dependencies = [ [[package]] name = "alloy-sol-macro" version = "0.8.1" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=adc0cf2#adc0cf2fb96c9be80df1d71cfe8ba745dc33f1c6" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606#00316061227374bb57f01baac2c47e5587afa5cb" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] name = "alloy-sol-macro-expander" version = "0.8.1" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=adc0cf2#adc0cf2fb96c9be80df1d71cfe8ba745dc33f1c6" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606#00316061227374bb57f01baac2c47e5587afa5cb" dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", "const-hex", - "heck", - "indexmap 2.5.0", + "heck 0.5.0", + "indexmap 2.7.0", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", "syn-solidity", "tiny-keccak", ] @@ -628,23 +713,23 @@ dependencies = [ [[package]] name = "alloy-sol-macro-input" version = "0.8.1" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=adc0cf2#adc0cf2fb96c9be80df1d71cfe8ba745dc33f1c6" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606#00316061227374bb57f01baac2c47e5587afa5cb" dependencies = [ "alloy-json-abi", "const-hex", "dunce", - "heck", + "heck 0.5.0", "proc-macro2", "quote", "serde_json", - "syn 2.0.79", + "syn 2.0.90", "syn-solidity", ] [[package]] name = "alloy-sol-type-parser" version = "0.8.1" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=adc0cf2#adc0cf2fb96c9be80df1d71cfe8ba745dc33f1c6" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606#00316061227374bb57f01baac2c47e5587afa5cb" dependencies = [ "serde", "winnow", @@ -653,10 +738,10 @@ dependencies = [ [[package]] name = "alloy-sol-types" version = "0.8.1" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=adc0cf2#adc0cf2fb96c9be80df1d71cfe8ba745dc33f1c6" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606#00316061227374bb57f01baac2c47e5587afa5cb" dependencies = [ "alloy-json-abi", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-sol-macro", "const-hex", "serde", @@ -674,7 +759,7 @@ dependencies = [ "futures-utils-wasm", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", "tower 0.5.1", "tracing", @@ -708,7 +793,7 @@ dependencies = [ "bytes", "futures", "interprocess", - "pin-project 1.1.5", + "pin-project 1.1.7", "serde", "serde_json", "tempfile", @@ -726,8 +811,8 @@ dependencies = [ "alloy-pubsub", "alloy-transport", "futures", - "http 1.1.0", - "rustls 0.23.13", + "http 1.2.0", + "rustls 0.23.19", "serde_json", "tokio", "tokio-tungstenite 0.23.1", @@ -741,9 +826,9 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0a46c9c4fdccda7982e7928904bd85fe235a0404ee3d7e197fff13d61eac8b4f" dependencies = [ - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-rlp", - "derive_more 1.0.0", + "derive_more", "hashbrown 0.14.5", "nybbles", "serde", @@ -787,9 +872,9 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" [[package]] name = "anstream" -version = "0.6.15" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" dependencies = [ "anstyle", "anstyle-parse", @@ -802,36 +887,36 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.8" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" [[package]] name = "anstyle-parse" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.4" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -847,7 +932,7 @@ dependencies = [ "alloy-json-abi", "alloy-json-rpc", "alloy-network", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-provider", "alloy-pubsub", "alloy-rlp", @@ -882,19 +967,21 @@ dependencies = [ "foundry-evm", "foundry-test-utils", "futures", - "hyper 1.4.1", + "hyper 1.5.1", "itertools 0.13.0", "k256", "op-alloy-rpc-types", "parking_lot", "rand", "revm", + "seismic-transaction", "serde", "serde_json", "serde_repr", "similar-asserts", + "tee_service_api", "tempfile", - "thiserror", + "thiserror 1.0.69", "tikv-jemallocator", "tokio", "tower 0.4.13", @@ -911,18 +998,23 @@ dependencies = [ "alloy-consensus", "alloy-dyn-abi", "alloy-eips", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-rlp", "alloy-rpc-types", "alloy-serde", "alloy-trie", + "anyhow", "bytes", "foundry-common", "foundry-evm", + "once_cell", "rand", "revm", + "secp256k1", + "seismic-transaction", "serde", "serde_json", + "tee_service_api", ] [[package]] @@ -945,10 +1037,10 @@ dependencies = [ "futures", "interprocess", "parking_lot", - "pin-project 1.1.5", + "pin-project 1.1.7", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio-util", "tower-http", "tracing", @@ -956,15 +1048,15 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.89" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" +checksum = "c1fd03a028ef38ba2276dce7e33fcd6369c158a1bca17946c4b1b701891c1ff7" [[package]] name = "arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" dependencies = [ "derive_arbitrary", ] @@ -975,7 +1067,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44055e597c674aef7cb903b2b9f6e4cba1277ed0d2d61dae7cd52d7ffa81f8e2" dependencies = [ - "unicode-width", + "unicode-width 0.1.14", "yansi", ] @@ -1120,9 +1212,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.12" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fec134f64e2bc57411226dfc4e52dec859ddfc7e711fc5e07b612584f000e4aa" +checksum = "df895a515f70646414f4b45c0b79082783b80552b373a68283012928df56f522" dependencies = [ "flate2", "futures-core", @@ -1148,14 +1240,14 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] name = "async-stream" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" dependencies = [ "async-stream-impl", "futures-core", @@ -1164,13 +1256,13 @@ dependencies = [ [[package]] name = "async-stream-impl" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -1181,7 +1273,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -1234,7 +1326,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -1245,9 +1337,9 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "aws-config" -version = "1.5.7" +version = "1.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8191fb3091fa0561d1379ef80333c3c7191c6f0435d986e85821bcf7acbd1126" +checksum = "9b49afaa341e8dd8577e1a2200468f98956d6eda50bcf4a53246cc00174ba924" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1256,7 +1348,7 @@ dependencies = [ "aws-sdk-sts", "aws-smithy-async", "aws-smithy-http", - "aws-smithy-json", + "aws-smithy-json 0.60.7", "aws-smithy-runtime", "aws-smithy-runtime-api", "aws-smithy-types", @@ -1287,9 +1379,9 @@ dependencies = [ [[package]] name = "aws-runtime" -version = "1.4.3" +version = "1.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a10d5c055aa540164d9561a0e2e74ad30f0dcf7393c3a92f6733ddf9c5762468" +checksum = "b5ac934720fbb46206292d2c75b57e67acfc56fe7dfd34fb9a02334af08409ea" dependencies = [ "aws-credential-types", "aws-sigv4", @@ -1307,20 +1399,20 @@ dependencies = [ "percent-encoding", "pin-project-lite", "tracing", - "uuid 1.10.0", + "uuid 1.11.0", ] [[package]] name = "aws-sdk-kms" -version = "1.45.0" +version = "1.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0caf20b8855dbeb458552e6c8f8f9eb92b95e4a131725b93540ec73d60c38eb3" +checksum = "3c30f6fd5646b99d9b45ec3a0c22e67112c175b2383100c960d7ee39d96c8d96" dependencies = [ "aws-credential-types", "aws-runtime", "aws-smithy-async", "aws-smithy-http", - "aws-smithy-json", + "aws-smithy-json 0.61.1", "aws-smithy-runtime", "aws-smithy-runtime-api", "aws-smithy-types", @@ -1334,15 +1426,15 @@ dependencies = [ [[package]] name = "aws-sdk-sso" -version = "1.44.0" +version = "1.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b90cfe6504115e13c41d3ea90286ede5aa14da294f3fe077027a6e83850843c" +checksum = "05ca43a4ef210894f93096039ef1d6fa4ad3edfabb3be92b80908b9f2e4b4eab" dependencies = [ "aws-credential-types", "aws-runtime", "aws-smithy-async", "aws-smithy-http", - "aws-smithy-json", + "aws-smithy-json 0.61.1", "aws-smithy-runtime", "aws-smithy-runtime-api", "aws-smithy-types", @@ -1356,15 +1448,15 @@ dependencies = [ [[package]] name = "aws-sdk-ssooidc" -version = "1.45.0" +version = "1.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "167c0fad1f212952084137308359e8e4c4724d1c643038ce163f06de9662c1d0" +checksum = "abaf490c2e48eed0bb8e2da2fb08405647bd7f253996e0f93b981958ea0f73b0" dependencies = [ "aws-credential-types", "aws-runtime", "aws-smithy-async", "aws-smithy-http", - "aws-smithy-json", + "aws-smithy-json 0.61.1", "aws-smithy-runtime", "aws-smithy-runtime-api", "aws-smithy-types", @@ -1378,15 +1470,15 @@ dependencies = [ [[package]] name = "aws-sdk-sts" -version = "1.44.0" +version = "1.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cb5f98188ec1435b68097daa2a37d74b9d17c9caa799466338a8d1544e71b9d" +checksum = "b68fde0d69c8bfdc1060ea7da21df3e39f6014da316783336deff0a9ec28f4bf" dependencies = [ "aws-credential-types", "aws-runtime", "aws-smithy-async", "aws-smithy-http", - "aws-smithy-json", + "aws-smithy-json 0.61.1", "aws-smithy-query", "aws-smithy-runtime", "aws-smithy-runtime-api", @@ -1401,9 +1493,9 @@ dependencies = [ [[package]] name = "aws-sigv4" -version = "1.2.4" +version = "1.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc8db6904450bafe7473c6ca9123f88cc11089e41a025408f992db4e22d3be68" +checksum = "7d3820e0c08d0737872ff3c7c1f21ebbb6693d832312d6152bf18ef50a5471c2" dependencies = [ "aws-credential-types", "aws-smithy-http", @@ -1414,7 +1506,7 @@ dependencies = [ "hex", "hmac", "http 0.2.12", - "http 1.1.0", + "http 1.2.0", "once_cell", "percent-encoding", "sha2", @@ -1462,6 +1554,15 @@ dependencies = [ "aws-smithy-types", ] +[[package]] +name = "aws-smithy-json" +version = "0.61.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee4e69cc50921eb913c6b662f8d909131bb3e6ad6cb6090d3a39b66fc5c52095" +dependencies = [ + "aws-smithy-types", +] + [[package]] name = "aws-smithy-query" version = "0.60.7" @@ -1474,9 +1575,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime" -version = "1.7.1" +version = "1.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1ce695746394772e7000b39fe073095db6d45a862d0767dd5ad0ac0d7f8eb87" +checksum = "9f20685047ca9d6f17b994a07f629c813f08b5bce65523e47124879e60103d45" dependencies = [ "aws-smithy-async", "aws-smithy-http", @@ -1489,7 +1590,7 @@ dependencies = [ "http-body 0.4.6", "http-body 1.0.1", "httparse", - "hyper 0.14.30", + "hyper 0.14.31", "hyper-rustls 0.24.2", "once_cell", "pin-project-lite", @@ -1501,15 +1602,15 @@ dependencies = [ [[package]] name = "aws-smithy-runtime-api" -version = "1.7.2" +version = "1.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e086682a53d3aa241192aa110fa8dfce98f2f5ac2ead0de84d41582c7e8fdb96" +checksum = "92165296a47a812b267b4f41032ff8069ab7ff783696d217f0994a0d7ab585cd" dependencies = [ "aws-smithy-async", "aws-smithy-types", "bytes", "http 0.2.12", - "http 1.1.0", + "http 1.2.0", "pin-project-lite", "tokio", "tracing", @@ -1518,15 +1619,15 @@ dependencies = [ [[package]] name = "aws-smithy-types" -version = "1.2.7" +version = "1.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147100a7bea70fa20ef224a6bad700358305f5dc0f84649c53769761395b355b" +checksum = "4fbd94a32b3a7d55d3806fe27d98d3ad393050439dd05eb53ece36ec5e3d3510" dependencies = [ "base64-simd", "bytes", "bytes-utils", "http 0.2.12", - "http 1.1.0", + "http 1.2.0", "http-body 0.4.6", "http-body 1.0.1", "http-body-util", @@ -1564,19 +1665,19 @@ dependencies = [ [[package]] name = "axum" -version = "0.7.7" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "504e3947307ac8326a5437504c517c4b56716c9d98fac0028c2acc7ca47d70ae" +checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" dependencies = [ "async-trait", "axum-core", "base64 0.22.1", "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.1", "hyper-util", "itoa", "matchit", @@ -1590,7 +1691,7 @@ dependencies = [ "serde_path_to_error", "serde_urlencoded", "sha1", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "tokio", "tokio-tungstenite 0.24.0", "tower 0.5.1", @@ -1608,13 +1709,13 @@ dependencies = [ "async-trait", "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "mime", "pin-project-lite", "rustversion", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "tower-layer", "tower-service", "tracing", @@ -1681,6 +1782,15 @@ 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 = "bit-set" version = "0.5.3" @@ -1758,12 +1868,12 @@ dependencies = [ [[package]] name = "bstr" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" +checksum = "1a68f1f47cdf0ec8ee4b941b2eee2a80cb796db73118c0dd09ac63fbe405be22" dependencies = [ "memchr", - "regex-automata 0.4.8", + "regex-automata 0.4.9", "serde", ] @@ -1787,9 +1897,9 @@ checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" [[package]] name = "bytemuck" -version = "1.18.0" +version = "1.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae" +checksum = "8b37c88a63ffd85d15b406896cc343916d7cf57838a847b3a6f2ca5d39a5695a" [[package]] name = "byteorder" @@ -1799,9 +1909,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" dependencies = [ "serde", ] @@ -1863,9 +1973,9 @@ dependencies = [ [[package]] name = "cargo-platform" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" dependencies = [ "serde", ] @@ -1881,7 +1991,7 @@ dependencies = [ "semver 1.0.23", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -1907,9 +2017,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.23" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bbb537bb4a30b90362caddba8f360c0a56bc13d3a5570028e7197204cb54a17" +checksum = "f34d93e62b03caf570cccc334cbc6c2fceca82f39211051345108adcba3eebdc" dependencies = [ "shlex", ] @@ -1938,7 +2048,7 @@ version = "0.2.0" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-rpc-types", "clap", "criterion", @@ -1960,7 +2070,7 @@ dependencies = [ "serde_json", "serial_test", "solang-parser", - "strum", + "strum 0.26.3", "tikv-jemallocator", "time", "tokio", @@ -2022,9 +2132,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.18" +version = "4.5.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0956a43b323ac1afaffc053ed5c4b7c1f1800bacd1683c353aabbb752515dd3" +checksum = "69371e34337c4c984bbe322360c2547210bf632eb2814bbe78a6e87a2935bd2b" dependencies = [ "clap_builder", "clap_derive", @@ -2032,9 +2142,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.18" +version = "4.5.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d72166dd41634086d5803a47eb71ae740e61d84709c36f3c34110173db3961b" +checksum = "6e24c1b4099818523236a8ca881d2b45db98dadfb4625cf6608c12069fcbbde1" dependencies = [ "anstream", "anstyle", @@ -2042,14 +2152,14 @@ dependencies = [ "strsim", "terminal_size", "unicase", - "unicode-width", + "unicode-width 0.2.0", ] [[package]] name = "clap_complete" -version = "4.5.29" +version = "4.5.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8937760c3f4c60871870b8c3ee5f9b30771f792a7045c48bcbba999d7d6b3b8e" +checksum = "d9647a559c112175f17cf724dc72d3645680a883c58481332779192b0d8e7a01" dependencies = [ "clap", ] @@ -2070,17 +2180,17 @@ version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] name = "clap_lex" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" +checksum = "afb84c814227b90d6895e01398aee0d8033c00e7466aca416fb6a8e0eb19d8a7" [[package]] name = "clearscreen" @@ -2090,7 +2200,7 @@ checksum = "2f8c93eb5f77c9050c7750e14f13ef1033a40a0aac70c6371535b6763a01438c" dependencies = [ "nix 0.28.0", "terminfo", - "thiserror", + "thiserror 1.0.69", "which", "winapi", ] @@ -2117,7 +2227,7 @@ dependencies = [ "k256", "serde", "sha2", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -2133,7 +2243,7 @@ dependencies = [ "pbkdf2 0.12.2", "rand", "sha2", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -2152,7 +2262,7 @@ dependencies = [ "serde", "sha2", "sha3", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -2171,7 +2281,7 @@ dependencies = [ "log", "nix 0.26.4", "once_cell", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", "wasm-bindgen", @@ -2207,20 +2317,20 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "comfy-table" -version = "7.1.1" +version = "7.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b34115915337defe99b2aff5c2ce6771e5fbc4079f4b506301f5cf394c8452f7" +checksum = "24f165e7b643266ea80cb858aed492ad9280e3e05ce24d4a99d7d7b889b6a4d9" dependencies = [ - "crossterm 0.27.0", - "strum", - "strum_macros", - "unicode-width", + "crossterm", + "strum 0.26.3", + "strum_macros 0.26.4", + "unicode-width 0.2.0", ] [[package]] @@ -2255,7 +2365,7 @@ dependencies = [ "encode_unicode", "lazy_static", "libc", - "unicode-width", + "unicode-width 0.1.14", "windows-sys 0.52.0", ] @@ -2271,9 +2381,9 @@ dependencies = [ [[package]] name = "const-hex" -version = "1.13.1" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0121754e84117e65f9d90648ee6aa4882a6e63110307ab73967a4c5e7e69e586" +checksum = "4b0485bab839b018a8f1723fc5391819fea5f8f0f32288ef8a735fd096b6160c" dependencies = [ "cfg-if", "cpufeatures", @@ -2307,6 +2417,16 @@ dependencies = [ "libc", ] +[[package]] +name = "core-foundation" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "core-foundation-sys" version = "0.8.7" @@ -2315,9 +2435,9 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.14" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" dependencies = [ "libc", ] @@ -2403,19 +2523,6 @@ version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" -[[package]] -name = "crossterm" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df" -dependencies = [ - "bitflags 2.6.0", - "crossterm_winapi", - "libc", - "parking_lot", - "winapi", -] - [[package]] name = "crossterm" version = "0.28.1" @@ -2424,7 +2531,7 @@ checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" dependencies = [ "bitflags 2.6.0", "crossterm_winapi", - "mio 1.0.2", + "mio 1.0.3", "parking_lot", "rustix", "signal-hook", @@ -2466,6 +2573,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ "generic-array", + "rand_core", "typenum", ] @@ -2509,7 +2617,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -2520,7 +2628,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -2572,6 +2680,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ "powerfmt", + "serde", ] [[package]] @@ -2587,55 +2696,44 @@ dependencies = [ [[package]] name = "derive_arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] name = "derive_builder" -version = "0.20.1" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd33f37ee6a119146a1781d3356a7c26028f83d779b2e04ecd45fdc75c76877b" +checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" dependencies = [ "derive_builder_macro", ] [[package]] name = "derive_builder_core" -version = "0.20.1" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7431fa049613920234f22c47fdc33e6cf3ee83067091ea4277a3f8c4587aae38" +checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] name = "derive_builder_macro" -version = "0.20.1" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4abae7035bf79b9877b779505d8cf3749285b80c43941eda66604841889451dc" +checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 2.0.79", -] - -[[package]] -name = "derive_more" -version = "0.99.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -2656,7 +2754,7 @@ dependencies = [ "convert_case", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", "unicode-xid", ] @@ -2669,10 +2767,16 @@ dependencies = [ "console", "shell-words", "tempfile", - "thiserror", + "thiserror 1.0.69", "zeroize", ] +[[package]] +name = "diff" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" + [[package]] name = "digest" version = "0.9.0" @@ -2764,7 +2868,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -2891,7 +2995,7 @@ checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -2925,12 +3029,12 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -2957,7 +3061,7 @@ dependencies = [ "serde_json", "sha2", "sha3", - "thiserror", + "thiserror 1.0.69", "uuid 0.8.2", ] @@ -2974,7 +3078,7 @@ dependencies = [ "serde", "serde_json", "sha3", - "thiserror", + "thiserror 1.0.69", "uint", ] @@ -3026,7 +3130,7 @@ dependencies = [ "regex", "serde", "serde_json", - "syn 2.0.79", + "syn 2.0.90", "toml 0.8.19", "walkdir", ] @@ -3053,10 +3157,10 @@ dependencies = [ "rlp", "serde", "serde_json", - "strum", - "syn 2.0.79", + "strum 0.26.3", + "syn 2.0.90", "tempfile", - "thiserror", + "thiserror 1.0.69", "tiny-keccak", "unicode-xid", ] @@ -3089,7 +3193,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6fcfb15a14bc209e2b3d2bd32291ec445b1e348d7d9d986aa61a09149350fd7" dependencies = [ "alloy-dyn-abi", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", ] [[package]] @@ -3110,9 +3214,9 @@ checksum = "a2a2b11eda1d40935b26cf18f6833c526845ae8c41e58d09af6adeb6f0269183" [[package]] name = "fastrand" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" +checksum = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4" [[package]] name = "fastrlp" @@ -3143,7 +3247,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e182f7dbc2ef73d9ef67351c5fbbea084729c48362d3ce9dd44c28e32e277fe5" dependencies = [ "libc", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -3204,9 +3308,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.34" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" +checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" dependencies = [ "crc32fast", "miniz_oxide 0.8.0", @@ -3218,6 +3322,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" + [[package]] name = "foreign-types" version = "0.3.2" @@ -3242,7 +3352,7 @@ dependencies = [ "alloy-dyn-abi", "alloy-json-abi", "alloy-network", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-provider", "alloy-rpc-types", "alloy-serde", @@ -3283,7 +3393,7 @@ dependencies = [ "futures", "globset", "humantime-serde", - "hyper 1.4.1", + "hyper 1.5.1", "indicatif", "itertools 0.13.0", "mockall", @@ -3304,10 +3414,10 @@ dependencies = [ "similar-asserts", "solang-parser", "soldeer", - "strum", + "strum 0.26.3", "svm-rs", "tempfile", - "thiserror", + "thiserror 1.0.69", "tikv-jemallocator", "tokio", "toml 0.8.19", @@ -3326,9 +3436,9 @@ dependencies = [ name = "forge-doc" version = "0.2.0" dependencies = [ - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "auto_impl", - "derive_more 1.0.0", + "derive_more", "eyre", "forge-fmt", "foundry-compilers", @@ -3340,7 +3450,7 @@ dependencies = [ "serde", "serde_json", "solang-parser", - "thiserror", + "thiserror 1.0.69", "toml 0.8.19", "tracing", ] @@ -3349,13 +3459,13 @@ dependencies = [ name = "forge-fmt" version = "0.2.0" dependencies = [ - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "ariadne", "foundry-config", "itertools 0.13.0", "similar-asserts", "solang-parser", - "thiserror", + "thiserror 1.0.69", "toml 0.8.19", "tracing", "tracing-subscriber", @@ -3371,7 +3481,7 @@ dependencies = [ "alloy-eips", "alloy-json-abi", "alloy-network", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-provider", "alloy-rpc-types", "alloy-serde", @@ -3418,7 +3528,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -3427,7 +3537,7 @@ version = "0.2.0" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-provider", "alloy-rpc-types", "async-trait", @@ -3472,13 +3582,13 @@ checksum = "ff37530e7c5deead0f9d7dc2a27b070e683bef79735ab453849ebdee74fa848f" dependencies = [ "alloy-chains", "alloy-json-abi", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "foundry-compilers", "reqwest", "semver 1.0.23", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tracing", ] @@ -3493,7 +3603,7 @@ dependencies = [ "alloy-json-abi", "alloy-json-rpc", "alloy-network", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-provider", "alloy-rlp", "alloy-rpc-types", @@ -3549,7 +3659,7 @@ dependencies = [ "alloy-dyn-abi", "alloy-genesis", "alloy-json-abi", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-provider", "alloy-rlp", "alloy-rpc-types", @@ -3580,7 +3690,7 @@ dependencies = [ "rustc-hash", "semver 1.0.23", "serde_json", - "thiserror", + "thiserror 1.0.69", "toml 0.8.19", "tracing", "vergen", @@ -3605,7 +3715,7 @@ dependencies = [ "alloy-chains", "alloy-dyn-abi", "alloy-json-abi", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-provider", "alloy-transport", "clap", @@ -3624,7 +3734,7 @@ dependencies = [ "regex", "serde", "strsim", - "strum", + "strum 0.26.3", "tempfile", "tokio", "tracing", @@ -3642,7 +3752,7 @@ dependencies = [ "alloy-dyn-abi", "alloy-json-abi", "alloy-json-rpc", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-provider", "alloy-pubsub", "alloy-rpc-client", @@ -3670,7 +3780,7 @@ dependencies = [ "serde", "serde_json", "similar-asserts", - "thiserror", + "thiserror 1.0.69", "tokio", "tower 0.4.13", "tracing", @@ -3685,7 +3795,7 @@ version = "0.2.0" dependencies = [ "alloy-consensus", "alloy-dyn-abi", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-rpc-types", "alloy-serde", "chrono", @@ -3700,12 +3810,12 @@ dependencies = [ [[package]] name = "foundry-compilers" -version = "0.11.3" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "588bc1dd21020966a255a578433016d4637c810ed76127997a469bc4a3311e7f" +checksum = "4754b3f3bb924202b29bd7f0584ea1446018926342884c86029a7d56ef1a22c1" dependencies = [ "alloy-json-abi", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "auto_impl", "derivative", "dirs 5.0.1", @@ -3729,7 +3839,7 @@ dependencies = [ "svm-rs", "svm-rs-builds", "tempfile", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", "winnow", @@ -3738,9 +3848,9 @@ dependencies = [ [[package]] name = "foundry-compilers-artifacts" -version = "0.11.3" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b12c7a7ab554fde7521428b040205569c187995b817481720e99adf524bf7f8" +checksum = "e6289da0f17fdb5a0454020dce595502b0abd2a56c15a36d4f6c05bd6c4ff864" dependencies = [ "foundry-compilers-artifacts-solc", "foundry-compilers-artifacts-vyper", @@ -3748,12 +3858,12 @@ dependencies = [ [[package]] name = "foundry-compilers-artifacts-solc" -version = "0.11.3" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4654933ab983928d8e33e7fdf425bb60553e8a4ac415a6014f1f2e56a5b3741d" +checksum = "e1cf322ab7b726f2bafe9a7e6fb67db02801b35584a2b1d122b4feb52d8e9e7f" dependencies = [ "alloy-json-abi", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "foundry-compilers-core", "futures-util", "md-5", @@ -3763,7 +3873,7 @@ dependencies = [ "serde", "serde_json", "serde_repr", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", "walkdir", @@ -3772,12 +3882,12 @@ dependencies = [ [[package]] name = "foundry-compilers-artifacts-vyper" -version = "0.11.3" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2271a6689d27f42ffe1259f587196f56251508c6c9e362c585ccf234f5919f96" +checksum = "ec47f94c7833adfe8049c819d9e31a60c3f440a68cf5baf34c318413d3eb0700" dependencies = [ "alloy-json-abi", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "foundry-compilers-artifacts-solc", "foundry-compilers-core", "path-slash", @@ -3787,11 +3897,11 @@ dependencies = [ [[package]] name = "foundry-compilers-core" -version = "0.11.3" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb71494112126e7ecb92748913403c35ef949f18734e3ff4566a782ce2c8b986" +checksum = "61971b34545e8ea01502df9d076e811ad3926f27d31adf2641e0c931ca646933" dependencies = [ - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "cfg-if", "dunce", "fs_extra", @@ -3803,7 +3913,7 @@ dependencies = [ "serde_json", "svm-rs", "tempfile", - "thiserror", + "thiserror 1.0.69", "tokio", "walkdir", ] @@ -3814,7 +3924,7 @@ version = "0.2.0" dependencies = [ "Inflector", "alloy-chains", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "dirs-next", "dunce", "eyre", @@ -3836,7 +3946,7 @@ dependencies = [ "similar-asserts", "solang-parser", "tempfile", - "thiserror", + "thiserror 1.0.69", "toml 0.8.19", "toml_edit", "tracing", @@ -3847,8 +3957,8 @@ dependencies = [ name = "foundry-debugger" version = "0.2.0" dependencies = [ - "alloy-primitives", - "crossterm 0.28.1", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", + "crossterm", "eyre", "foundry-common", "foundry-compilers", @@ -3866,7 +3976,7 @@ version = "0.2.0" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-sol-types", "eyre", "foundry-cheatcodes", @@ -3882,7 +3992,7 @@ dependencies = [ "proptest", "revm", "revm-inspectors", - "thiserror", + "thiserror 1.0.69", "tracing", ] @@ -3890,9 +4000,9 @@ dependencies = [ name = "foundry-evm-abi" version = "0.2.0" dependencies = [ - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-sol-types", - "derive_more 1.0.0", + "derive_more", "foundry-common-fmt", "foundry-macros", "foundry-test-utils", @@ -3907,7 +4017,7 @@ dependencies = [ "alloy-dyn-abi", "alloy-genesis", "alloy-json-abi", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-provider", "alloy-rpc-types", "alloy-serde", @@ -3930,7 +4040,7 @@ dependencies = [ "rustc-hash", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", ] @@ -3939,7 +4049,7 @@ dependencies = [ name = "foundry-evm-coverage" version = "0.2.0" dependencies = [ - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "eyre", "foundry-common", "foundry-compilers", @@ -3958,7 +4068,7 @@ dependencies = [ "ahash", "alloy-dyn-abi", "alloy-json-abi", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "eyre", "foundry-common", "foundry-compilers", @@ -3966,14 +4076,14 @@ dependencies = [ "foundry-evm-core", "foundry-evm-coverage", "foundry-evm-traces", - "indexmap 2.5.0", + "indexmap 2.7.0", "itertools 0.13.0", "parking_lot", "proptest", "rand", "revm", "serde", - "thiserror", + "thiserror 1.0.69", "tracing", ] @@ -3983,7 +4093,7 @@ version = "0.2.0" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-sol-types", "eyre", "foundry-block-explorers", @@ -4008,9 +4118,9 @@ dependencies = [ [[package]] name = "foundry-fork-db" version = "0.3.1" -source = "git+ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git?rev=0d2a25e#0d2a25ed60758eb6a1caa897e608ec432ad338c7" +source = "git+ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git?rev=58ee49a#58ee49ac2ce9aeda42e68e7ade3e97733b60a9c0" dependencies = [ - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-provider", "alloy-rpc-types", "alloy-serde", @@ -4023,7 +4133,7 @@ dependencies = [ "rustc-hash", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", "url", @@ -4033,10 +4143,10 @@ dependencies = [ name = "foundry-linking" version = "0.2.0" dependencies = [ - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "foundry-compilers", "semver 1.0.23", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -4046,14 +4156,14 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] name = "foundry-test-utils" version = "0.2.0" dependencies = [ - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-provider", "eyre", "fd-lock", @@ -4078,7 +4188,7 @@ dependencies = [ "alloy-consensus", "alloy-dyn-abi", "alloy-network", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-signer", "alloy-signer-aws", "alloy-signer-gcp", @@ -4097,7 +4207,7 @@ dependencies = [ "gcloud-sdk", "rpassword", "serde", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", ] @@ -4151,9 +4261,9 @@ dependencies = [ [[package]] name = "futures" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ "futures-channel", "futures-core", @@ -4166,9 +4276,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -4176,15 +4286,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-executor" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" dependencies = [ "futures-core", "futures-task", @@ -4193,38 +4303,38 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-macro" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-channel", "futures-core", @@ -4246,15 +4356,15 @@ checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" [[package]] name = "gcloud-sdk" -version = "0.25.6" +version = "0.25.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d92f38cbe5b8796d2ab3f3c5f3bc286aa778015d5c5f67e2d0cbbe5d348473f" +checksum = "0775bfa745cdf7287ae9765a685a813b91049b6b6d5ca3de20a3d5d16a80d8b2" dependencies = [ "async-trait", "bytes", "chrono", "futures", - "hyper 1.4.1", + "hyper 1.5.1", "jsonwebtoken", "once_cell", "prost", @@ -4274,9 +4384,9 @@ dependencies = [ [[package]] name = "generator" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb949699c3e4df3a183b1d2142cb24277057055ed23c68ed58894f76c517223" +checksum = "cc6bd114ceda131d3b1d665eba35788690ad37f5916457286b32ab6fd3c438dd" dependencies = [ "cfg-if", "libc", @@ -4309,6 +4419,16 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "ghash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" +dependencies = [ + "opaque-debug", + "polyval", +] + [[package]] name = "gimli" version = "0.28.1" @@ -4317,23 +4437,23 @@ checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" [[package]] name = "gix-actor" -version = "0.31.5" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0e454357e34b833cc3a00b6efbbd3dd4d18b24b9fb0c023876ec2645e8aa3f2" +checksum = "fc19e312cd45c4a66cd003f909163dc2f8e1623e30a0c0c6df3776e89b308665" dependencies = [ "bstr", "gix-date", "gix-utils", "itoa", - "thiserror", + "thiserror 1.0.69", "winnow", ] [[package]] name = "gix-config" -version = "0.36.1" +version = "0.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7580e05996e893347ad04e1eaceb92e1c0e6a3ffe517171af99bf6b6df0ca6e5" +checksum = "78e797487e6ca3552491de1131b4f72202f282fb33f198b1c34406d765b42bb0" dependencies = [ "bstr", "gix-config-value", @@ -4345,34 +4465,34 @@ dependencies = [ "memchr", "once_cell", "smallvec", - "thiserror", + "thiserror 1.0.69", "unicode-bom", "winnow", ] [[package]] name = "gix-config-value" -version = "0.14.8" +version = "0.14.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03f76169faa0dec598eac60f83d7fcdd739ec16596eca8fb144c88973dbe6f8c" +checksum = "49aaeef5d98390a3bcf9dbc6440b520b793d1bf3ed99317dc407b02be995b28e" dependencies = [ "bitflags 2.6.0", "bstr", "gix-path", "libc", - "thiserror", + "thiserror 2.0.4", ] [[package]] name = "gix-date" -version = "0.8.7" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9eed6931f21491ee0aeb922751bd7ec97b4b2fe8fbfedcb678e2a2dce5f3b8c0" +checksum = "691142b1a34d18e8ed6e6114bc1a2736516c5ad60ef3aa9bd1b694886e3ca92d" dependencies = [ "bstr", "itoa", - "thiserror", - "time", + "jiff", + "thiserror 2.0.4", ] [[package]] @@ -4392,10 +4512,11 @@ dependencies = [ [[package]] name = "gix-fs" -version = "0.10.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2184c40e7910529677831c8b481acf788ffd92427ed21fad65b6aa637e631b8" +checksum = "f2bfe6249cfea6d0c0e0990d5226a4cb36f030444ba9e35e0639275db8f98575" dependencies = [ + "fastrand", "gix-features", "gix-utils", ] @@ -4419,25 +4540,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f93d7df7366121b5018f947a04d37f034717e113dcf9ccd85c34b58e57a74d5e" dependencies = [ "faster-hex", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "gix-lock" -version = "13.1.1" +version = "14.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c359f81f01b8352063319bcb39789b7ea0887b406406381106e38c4a34d049" +checksum = "e3bc7fe297f1f4614774989c00ec8b1add59571dc9b024b4c00acb7dedd4e19d" dependencies = [ "gix-tempfile", "gix-utils", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "gix-object" -version = "0.42.3" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25da2f46b4e7c2fa7b413ce4dffb87f69eaf89c2057e386491f4c55cadbfe386" +checksum = "2f5b801834f1de7640731820c2df6ba88d95480dc4ab166a5882f8ff12b88efa" dependencies = [ "bstr", "gix-actor", @@ -4448,31 +4569,30 @@ dependencies = [ "gix-validate", "itoa", "smallvec", - "thiserror", + "thiserror 1.0.69", "winnow", ] [[package]] name = "gix-path" -version = "0.10.11" +version = "0.10.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebfc4febd088abdcbc9f1246896e57e37b7a34f6909840045a1767c6dafac7af" +checksum = "afc292ef1a51e340aeb0e720800338c805975724c1dfbd243185452efd8645b7" dependencies = [ "bstr", "gix-trace", "home", "once_cell", - "thiserror", + "thiserror 2.0.4", ] [[package]] name = "gix-ref" -version = "0.43.0" +version = "0.47.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd4aba68b925101cb45d6df328979af0681364579db889098a0de75b36c77b65" +checksum = "ae0d8406ebf9aaa91f55a57f053c5a1ad1a39f60fdf0303142b7be7ea44311e5" dependencies = [ "gix-actor", - "gix-date", "gix-features", "gix-fs", "gix-hash", @@ -4483,15 +4603,15 @@ dependencies = [ "gix-utils", "gix-validate", "memmap2", - "thiserror", + "thiserror 1.0.69", "winnow", ] [[package]] name = "gix-sec" -version = "0.10.8" +version = "0.10.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fe4d52f30a737bbece5276fab5d3a8b276dc2650df963e293d0673be34e7a5f" +checksum = "a8b876ef997a955397809a2ec398d6a45b7a55b4918f2446344330f778d14fd6" dependencies = [ "bitflags 2.6.0", "gix-path", @@ -4501,9 +4621,9 @@ dependencies = [ [[package]] name = "gix-tempfile" -version = "13.1.1" +version = "14.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a761d76594f4443b675e85928e4902dec333273836bd386906f01e7e346a0d11" +checksum = "046b4927969fa816a150a0cda2e62c80016fe11fb3c3184e4dddf4e542f108aa" dependencies = [ "gix-fs", "libc", @@ -4514,15 +4634,15 @@ dependencies = [ [[package]] name = "gix-trace" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cae0e8661c3ff92688ce1c8b8058b3efb312aba9492bbe93661a21705ab431b" +checksum = "04bdde120c29f1fc23a24d3e115aeeea3d60d8e65bab92cc5f9d90d9302eb952" [[package]] name = "gix-utils" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35192df7fd0fa112263bad8021e2df7167df4cc2a6e6d15892e1e55621d3d4dc" +checksum = "ba427e3e9599508ed98a6ddf8ed05493db114564e338e41f6a996d2e4790335f" dependencies = [ "fastrand", "unicode-normalization", @@ -4530,12 +4650,12 @@ dependencies = [ [[package]] name = "gix-validate" -version = "0.8.5" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82c27dd34a49b1addf193c92070bcbf3beaf6e10f16a78544de6372e146a0acf" +checksum = "cd520d09f9f585b34b32aba1d0b36ada89ab7fefb54a8ca3fe37fc482a750937" dependencies = [ "bstr", - "thiserror", + "thiserror 2.0.4", ] [[package]] @@ -4553,7 +4673,7 @@ dependencies = [ "aho-corasick", "bstr", "log", - "regex-automata 0.4.8", + "regex-automata 0.4.9", "regex-syntax 0.8.5", ] @@ -4580,7 +4700,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.5.0", + "indexmap 2.7.0", "slab", "tokio", "tokio-util", @@ -4589,17 +4709,17 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" +checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e" dependencies = [ "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", - "http 1.1.0", - "indexmap 2.5.0", + "http 1.2.0", + "indexmap 2.7.0", "slab", "tokio", "tokio-util", @@ -4618,16 +4738,17 @@ dependencies = [ [[package]] name = "handlebars" -version = "5.1.2" +version = "6.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d08485b96a0e6393e9e4d1b8d48cf74ad6c063cd905eb33f42c1ce3f0377539b" +checksum = "fd4ccde012831f9a071a637b0d4e31df31c0f6c525784b35ae76a9ac6bc1e315" dependencies = [ "log", + "num-order", "pest", "pest_derive", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -4647,6 +4768,23 @@ dependencies = [ "serde", ] +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + [[package]] name = "heck" version = "0.5.0" @@ -4692,6 +4830,15 @@ dependencies = [ "rusb", ] +[[package]] +name = "hkdf" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +dependencies = [ + "hmac", +] + [[package]] name = "hmac" version = "0.12.1" @@ -4721,7 +4868,7 @@ dependencies = [ "markup5ever", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -4737,9 +4884,9 @@ dependencies = [ [[package]] name = "http" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" dependencies = [ "bytes", "fnv", @@ -4764,7 +4911,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.1.0", + "http 1.2.0", ] [[package]] @@ -4775,16 +4922,16 @@ checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "pin-project-lite", ] [[package]] name = "http-range-header" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08a397c49fec283e3d6211adbe480be95aae5f304cfb923e9970e08956d5168a" +checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c" [[package]] name = "httparse" @@ -4816,9 +4963,9 @@ dependencies = [ [[package]] name = "hyper" -version = "0.14.30" +version = "0.14.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" +checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" dependencies = [ "bytes", "futures-channel", @@ -4840,15 +4987,15 @@ dependencies = [ [[package]] name = "hyper" -version = "1.4.1" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" +checksum = "97818827ef4f364230e16705d4706e2897df2bb60617d6ca15d598025a3c481f" dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.6", - "http 1.1.0", + "h2 0.4.7", + "http 1.2.0", "http-body 1.0.1", "httparse", "httpdate", @@ -4867,7 +5014,7 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http 0.2.12", - "hyper 0.14.30", + "hyper 0.14.31", "log", "rustls 0.21.12", "rustls-native-certs 0.6.3", @@ -4882,11 +5029,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" dependencies = [ "futures-util", - "http 1.1.0", - "hyper 1.4.1", + "http 1.2.0", + "hyper 1.5.1", "hyper-util", - "rustls 0.23.13", - "rustls-native-certs 0.8.0", + "rustls 0.23.19", + "rustls-native-certs 0.8.1", "rustls-pki-types", "tokio", "tokio-rustls 0.26.0", @@ -4896,11 +5043,11 @@ dependencies = [ [[package]] name = "hyper-timeout" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3203a961e5c83b6f5498933e78b6b263e208c197b63e9c6c53cc82ffd3f63793" +checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" dependencies = [ - "hyper 1.4.1", + "hyper 1.5.1", "hyper-util", "pin-project-lite", "tokio", @@ -4915,7 +5062,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.1", "hyper-util", "native-tls", "tokio", @@ -4925,16 +5072,16 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" +checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" dependencies = [ "bytes", "futures-channel", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", - "hyper 1.4.1", + "hyper 1.5.1", "pin-project-lite", "socket2", "tokio", @@ -4966,52 +5113,181 @@ dependencies = [ ] [[package]] -name = "ident_case" -version = "1.0.1" +name = "icu_collections" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] [[package]] -name = "idna" -version = "0.5.0" +name = "icu_locid" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", ] [[package]] -name = "ignore" -version = "0.4.23" +name = "icu_locid_transform" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" dependencies = [ - "crossbeam-deque", - "globset", - "log", - "memchr", - "regex-automata 0.4.8", - "same-file", - "walkdir", - "winapi-util", + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", ] [[package]] -name = "ignore-files" -version = "3.0.1" +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99f84e7f847462c582abc4c2aef6ede285ad6e8f66aeec83b47f5481706ddeba" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" dependencies = [ - "dunce", - "futures", + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "ignore" +version = "0.4.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" +dependencies = [ + "crossbeam-deque", + "globset", + "log", + "memchr", + "regex-automata 0.4.9", + "same-file", + "walkdir", + "winapi-util", +] + +[[package]] +name = "ignore-files" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51ce3a1903263527cf3b6512a12f338ae63f425b66c1a3d7a24c3121e8557dbe" +dependencies = [ + "dunce", + "futures", "gix-config", "ignore", "miette", "normalize-path", "project-origins", "radix_trie", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", ] @@ -5045,13 +5321,13 @@ dependencies = [ [[package]] name = "impl-trait-for-tuples" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.90", ] [[package]] @@ -5068,31 +5344,39 @@ checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown 0.12.3", + "serde", ] [[package]] name = "indexmap" -version = "2.5.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" +checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" dependencies = [ "equivalent", - "hashbrown 0.14.5", + "hashbrown 0.15.2", + "serde", ] [[package]] name = "indicatif" -version = "0.17.8" +version = "0.17.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" +checksum = "cbf675b85ed934d3c67b5c5469701eec7db22689d0a2139d856e0925fa28b281" dependencies = [ "console", - "instant", "number_prefix", "portable-atomic", - "unicode-width", + "unicode-width 0.2.0", + "web-time", ] +[[package]] +name = "indoc" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" + [[package]] name = "inlinable_string" version = "0.1.15" @@ -5130,28 +5414,23 @@ dependencies = [ [[package]] name = "instability" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b23a0c8dfe501baac4adf6ebbfa6eddf8f0c07f56b058cc1288017e32397846c" +checksum = "b829f37dead9dc39df40c2d3376c179fdfd2ac771f53f55d3c30dc096a3c0c6e" dependencies = [ + "darling", + "indoc", + "pretty_assertions", + "proc-macro2", "quote", - "syn 2.0.79", -] - -[[package]] -name = "instant" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" -dependencies = [ - "cfg-if", + "syn 2.0.90", ] [[package]] name = "interprocess" -version = "2.2.1" +version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2f4e4a06d42fab3e85ab1b419ad32b09eab58b901d40c57935ff92db3287a13" +checksum = "894148491d817cb36b6f778017b8ac46b17408d522dd90f539d677ea938362eb" dependencies = [ "doctest-file", "futures-core", @@ -5164,9 +5443,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.10.0" +version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" [[package]] name = "is-terminal" @@ -5214,16 +5493,42 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" + +[[package]] +name = "jiff" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db69f08d4fb10524cacdb074c10b296299d71274ddbc830a8ee65666867002e9" +dependencies = [ + "jiff-tzdb-platform", + "windows-sys 0.59.0", +] + +[[package]] +name = "jiff-tzdb" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "91335e575850c5c4c673b9bd467b0e025f164ca59d0564f69d0c2ee0ffad4653" + +[[package]] +name = "jiff-tzdb-platform" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9835f0060a626fe59f160437bc725491a6af23133ea906500027d1bd2f8f4329" +dependencies = [ + "jiff-tzdb", +] [[package]] name = "js-sys" -version = "0.3.70" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" +checksum = "a865e038f7f6ed956f788f0d7d60c541fff74c7bd74272c5d4cf15c63743e705" dependencies = [ + "once_cell", "wasm-bindgen", ] @@ -5238,6 +5543,18 @@ dependencies = [ "serde_json", ] +[[package]] +name = "jsonrpsee-types" +version = "0.24.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a178c60086f24cc35bb82f57c651d0d25d99c4742b4d335de04e97fa1f08a8a1" +dependencies = [ + "http 1.2.0", + "serde", + "serde_json", + "thiserror 1.0.69", +] + [[package]] name = "jsonwebtoken" version = "9.3.0" @@ -5267,6 +5584,16 @@ dependencies = [ "signature", ] +[[package]] +name = "kbs-types" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b6441ed73b0faa50707d4de41c6b45c76654b661b96aaf7b26a41331eedc0a5" +dependencies = [ + "serde", + "serde_json", +] + [[package]] name = "keccak" version = "0.1.5" @@ -5333,7 +5660,7 @@ version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553" dependencies = [ - "regex-automata 0.4.8", + "regex-automata 0.4.9", ] [[package]] @@ -5347,9 +5674,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.159" +version = "0.2.167" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" +checksum = "09d6582e104315a817dff97f75133544b2e094ee22447d2acf4a74e189ba06fc" [[package]] name = "libdbus-sys" @@ -5363,9 +5690,9 @@ dependencies = [ [[package]] name = "libm" -version = "0.2.8" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" [[package]] name = "libredox" @@ -5396,6 +5723,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "litemap" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" + [[package]] name = "lock_api" version = "0.4.12" @@ -5433,11 +5766,11 @@ dependencies = [ [[package]] name = "lru" -version = "0.12.4" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904" +checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" dependencies = [ - "hashbrown 0.14.5", + "hashbrown 0.15.2", ] [[package]] @@ -5493,9 +5826,9 @@ dependencies = [ [[package]] name = "mdbook" -version = "0.4.40" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45a38e19bd200220ef07c892b0157ad3d2365e5b5a267ca01ad12182491eea5" +checksum = "fe1f98b8d66e537d2f0ba06e7dec4f44001deec539a2d18bfc102d6a86189148" dependencies = [ "ammonia", "anyhow", @@ -5551,30 +5884,30 @@ checksum = "0d340f1a6bfcd3ea5075231fb04b74c8bf7cb3be25ee6480976c8500fcd2949f" dependencies = [ "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "miette" -version = "7.2.0" +version = "7.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4edc8853320c2a0dab800fbda86253c8938f6ea88510dc92c5f1ed20e794afc1" +checksum = "317f146e2eb7021892722af37cf1b971f0a70c8406f487e24952667616192c64" dependencies = [ "cfg-if", "miette-derive", - "thiserror", - "unicode-width", + "thiserror 1.0.69", + "unicode-width 0.1.14", ] [[package]] name = "miette-derive" -version = "7.2.0" +version = "7.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf09caffaac8068c346b6df2a7fc27a177fd20b39421a39ce0a211bde679a6c" +checksum = "23c9b935fbe1d6cbd1dac857b54a688145e2d93f48db36010514d0f612d0ad67" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -5631,11 +5964,10 @@ dependencies = [ [[package]] name = "mio" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ - "hermit-abi 0.3.9", "libc", "log", "wasi", @@ -5644,9 +5976,9 @@ dependencies = [ [[package]] name = "mockall" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c28b3fb6d753d28c20e826cd46ee611fda1cf3cde03a443a974043247c065a" +checksum = "39a6bfcc6c8c7eed5ee98b9c3e33adc726054389233e201c95dab2d41a3839d2" dependencies = [ "cfg-if", "downcast", @@ -5658,14 +5990,14 @@ dependencies = [ [[package]] name = "mockall_derive" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "341014e7f530314e9a1fdbc7400b244efea7122662c96bfa248c31da5bfb2020" +checksum = "25ca3004c2efe9011bd4e461bd8256445052b9615405b4f7ea43fc8ca5c20898" dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -5680,7 +6012,7 @@ dependencies = [ "openssl-probe", "openssl-sys", "schannel", - "security-framework", + "security-framework 2.11.1", "security-framework-sys", "tempfile", ] @@ -5866,6 +6198,21 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-modular" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17bb261bf36fa7d83f4c294f834e91256769097b3cb505d44831e0a179ac647f" + +[[package]] +name = "num-order" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "537b596b97c40fcf8056d153049eb22f481c17ebce72a513ec9286e4986d1bb6" +dependencies = [ + "num-modular", +] + [[package]] name = "num-rational" version = "0.4.2" @@ -5915,7 +6262,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -5957,12 +6304,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.20.1" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82881c4be219ab5faaf2ad5e5e5ecdff8c66bd7402ca3160975c93b24961afd1" -dependencies = [ - "portable-atomic", -] +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "oorandom" @@ -5978,14 +6322,45 @@ checksum = "21aad1fbf80d2bcd7406880efc7ba109365f44bbb72896758ddcbfa46bf1592c" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-rlp", "alloy-serde", - "derive_more 1.0.0", + "derive_more", "serde", "spin", ] +[[package]] +name = "op-alloy-genesis" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e1b8a9b70da0e027242ec1762f0f3a386278b6291d00d12ff5a64929dc19f68" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", + "alloy-sol-types", + "serde", + "serde_repr", +] + +[[package]] +name = "op-alloy-protocol" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf300a82ae2d30e2255bfea87a2259da49f63a25a44db561ae64cc9e3084139f" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", + "alloy-rlp", + "alloy-serde", + "hashbrown 0.14.5", + "op-alloy-consensus", + "op-alloy-genesis", + "serde", +] + [[package]] name = "op-alloy-rpc-types" version = "0.2.12" @@ -5994,7 +6369,7 @@ checksum = "e281fbfc2198b7c0c16457d6524f83d192662bc9f3df70f24c3038d4521616df" dependencies = [ "alloy-eips", "alloy-network-primitives", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-rpc-types-eth", "alloy-serde", "cfg-if", @@ -6004,6 +6379,29 @@ dependencies = [ "serde_json", ] +[[package]] +name = "op-alloy-rpc-types-engine" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2947272a81ebf988f4804b6f0f6a7c0b2f6f89a908cb410e36f8f3828f81c778" +dependencies = [ + "alloy-eips", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", + "alloy-rpc-types-engine", + "alloy-serde", + "derive_more", + "op-alloy-consensus", + "op-alloy-genesis", + "op-alloy-protocol", + "serde", +] + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + [[package]] name = "open-fastrlp" version = "0.1.4" @@ -6043,9 +6441,9 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.66" +version = "0.10.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" +checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" dependencies = [ "bitflags 2.6.0", "cfg-if", @@ -6064,7 +6462,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -6075,9 +6473,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.103" +version = "0.9.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" +checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" dependencies = [ "cc", "libc", @@ -6227,7 +6625,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -6257,20 +6655,20 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.13" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdbef9d1d47087a895abd220ed25eb4ad973a5e26f6a4367b038c25e28dfc2d9" +checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442" dependencies = [ "memchr", - "thiserror", + "thiserror 1.0.69", "ucd-trie", ] [[package]] name = "pest_derive" -version = "2.7.13" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d3a6e3394ec80feb3b6393c725571754c6188490265c61aaf260810d6b95aa0" +checksum = "d214365f632b123a47fd913301e14c946c61d1c183ee245fa76eb752e59a02dd" dependencies = [ "pest", "pest_generator", @@ -6278,22 +6676,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.13" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94429506bde1ca69d1b5601962c73f4172ab4726571a59ea95931218cb0e930e" +checksum = "eb55586734301717aea2ac313f50b2eb8f60d2fc3dc01d190eefa2e625f60c4e" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] name = "pest_meta" -version = "2.7.13" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac8a071862e93690b6e34e9a5fb8e33ff3734473ac0245b27232222c4906a33f" +checksum = "b75da2a70cf4d9cb76833c990ac9cd3923c9a8905a8929789ce347c84564d03d" dependencies = [ "once_cell", "pest", @@ -6307,7 +6705,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.5.0", + "indexmap 2.7.0", ] [[package]] @@ -6370,7 +6768,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -6402,11 +6800,11 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.5" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" dependencies = [ - "pin-project-internal 1.1.5", + "pin-project-internal 1.1.7", ] [[package]] @@ -6422,20 +6820,20 @@ dependencies = [ [[package]] name = "pin-project-internal" -version = "1.1.5" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -6487,11 +6885,23 @@ dependencies = [ "plotters-backend", ] +[[package]] +name = "polyval" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" +dependencies = [ + "cfg-if", + "cpufeatures", + "opaque-debug", + "universal-hash", +] + [[package]] name = "portable-atomic" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" +checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" [[package]] name = "powerfmt" @@ -6540,14 +6950,24 @@ dependencies = [ "termtree", ] +[[package]] +name = "pretty_assertions" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ae130e2f271fbc2ac3a40fb1d07180839cdbbe443c7a27e1e3c13c5cac0116d" +dependencies = [ + "diff", + "yansi", +] + [[package]] name = "prettyplease" -version = "0.2.22" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" +checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" dependencies = [ "proc-macro2", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -6625,14 +7045,14 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" dependencies = [ "unicode-ident", ] @@ -6645,7 +7065,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", "version_check", "yansi", ] @@ -6657,7 +7077,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38ee68ae331824036479c84060534b18254c864fa73366c58d86db3b7b811619" dependencies = [ "futures", - "indexmap 2.5.0", + "indexmap 2.7.0", "nix 0.28.0", "tokio", "tracing", @@ -6709,7 +7129,7 @@ checksum = "6ff7ff745a347b87471d859a377a9a404361e7efc2a971d73424a6d183c0fc77" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -6732,7 +7152,7 @@ dependencies = [ "itertools 0.13.0", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -6752,7 +7172,7 @@ checksum = "b65f4a8ec18723a734e5dc09c173e0abf9690432da5340285d536edcb4dac190" dependencies = [ "once_cell", "protobuf-support", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -6761,7 +7181,7 @@ version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6872f4d4f4b98303239a2b5838f5bbbb77b01ffc892d627957f37a22d7cfe69c" dependencies = [ - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -6799,45 +7219,49 @@ dependencies = [ [[package]] name = "quinn" -version = "0.11.5" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684" +checksum = "62e96808277ec6f97351a2380e6c25114bc9e67037775464979f3037c92d05ef" dependencies = [ "bytes", "pin-project-lite", "quinn-proto", "quinn-udp", "rustc-hash", - "rustls 0.23.13", + "rustls 0.23.19", "socket2", - "thiserror", + "thiserror 2.0.4", "tokio", "tracing", ] [[package]] name = "quinn-proto" -version = "0.11.8" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fadfaed2cd7f389d0161bb73eeb07b7b78f8691047a6f3e73caaeae55310a4a6" +checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" dependencies = [ "bytes", + "getrandom", "rand", "ring", "rustc-hash", - "rustls 0.23.13", + "rustls 0.23.19", + "rustls-pki-types", "slab", - "thiserror", + "thiserror 2.0.4", "tinyvec", "tracing", + "web-time", ] [[package]] name = "quinn-udp" -version = "0.5.5" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fe68c2e9e1a1234e218683dbdf9f9dfcb094113c5ac2b938dfcb9bab4c4140b" +checksum = "7d5a626c6807713b15cac82a6acaccd6043c9a5408c24baae07611fec3f243da" dependencies = [ + "cfg_aliases 0.2.1", "libc", "once_cell", "socket2", @@ -6918,16 +7342,16 @@ dependencies = [ "bitflags 2.6.0", "cassowary", "compact_str", - "crossterm 0.28.1", + "crossterm", "instability", "itertools 0.13.0", "lru", "paste", - "strum", - "strum_macros", + "strum 0.26.3", + "strum_macros 0.26.4", "unicode-segmentation", "unicode-truncate", - "unicode-width", + "unicode-width 0.1.14", ] [[package]] @@ -6973,18 +7397,18 @@ checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom", "libredox", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "regex" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.8", + "regex-automata 0.4.9", "regex-syntax 0.8.5", ] @@ -6999,9 +7423,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", @@ -7028,9 +7452,9 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" -version = "0.12.8" +version = "0.12.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b" +checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" dependencies = [ "async-compression", "base64 0.22.1", @@ -7038,10 +7462,10 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.1", "hyper-rustls 0.27.3", "hyper-tls", "hyper-util", @@ -7055,14 +7479,14 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.13", - "rustls-native-certs 0.8.0", + "rustls 0.23.19", + "rustls-native-certs 0.8.1", "rustls-pemfile 2.2.0", "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "tokio", "tokio-native-tls", "tokio-rustls 0.26.0", @@ -7078,10 +7502,30 @@ dependencies = [ "windows-registry", ] +[[package]] +name = "reth-rpc-types" +version = "1.0.6" +source = "git+ssh://git@github.com/SeismicSystems/seismic-reth.git?rev=de5cfa3#de5cfa32d68a15618b4d0e32433dfca22ffd5972" +dependencies = [ + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=93e5949)", + "alloy-rpc-types", + "alloy-rpc-types-admin", + "alloy-rpc-types-anvil", + "alloy-rpc-types-beacon", + "alloy-rpc-types-engine", + "alloy-rpc-types-mev", + "alloy-rpc-types-trace", + "alloy-rpc-types-txpool", + "alloy-serde", + "jsonrpsee-types", + "op-alloy-rpc-types", + "op-alloy-rpc-types-engine", +] + [[package]] name = "revm" version = "14.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=647e76f4#647e76f4a0ecbacfb30fc53d0bfcb9709e4eed44" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=7f8d4e6#7f8d4e6e1b6aa59344be145afc4734c7bca55400" dependencies = [ "auto_impl", "cfg-if", @@ -7097,7 +7541,7 @@ name = "revm-inspectors" version = "0.6.0" source = "git+ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git?rev=a77b988#a77b988b82486f521193f01231def7809a38e8b3" dependencies = [ - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "alloy-rpc-types", "alloy-sol-types", "anstyle", @@ -7105,13 +7549,13 @@ dependencies = [ "revm", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "revm-interpreter" version = "10.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=647e76f4#647e76f4a0ecbacfb30fc53d0bfcb9709e4eed44" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=7f8d4e6#7f8d4e6e1b6aa59344be145afc4734c7bca55400" dependencies = [ "revm-primitives", "serde", @@ -7120,7 +7564,7 @@ dependencies = [ [[package]] name = "revm-precompile" version = "11.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=647e76f4#647e76f4a0ecbacfb30fc53d0bfcb9709e4eed44" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=7f8d4e6#7f8d4e6e1b6aa59344be145afc4734c7bca55400" dependencies = [ "aurora-engine-modexp", "c-kzg", @@ -7138,10 +7582,10 @@ dependencies = [ [[package]] name = "revm-primitives" version = "9.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=647e76f4#647e76f4a0ecbacfb30fc53d0bfcb9709e4eed44" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=7f8d4e6#7f8d4e6e1b6aa59344be145afc4734c7bca55400" dependencies = [ "alloy-eips", - "alloy-primitives", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", "auto_impl", "bitflags 2.6.0", "bitvec", @@ -7282,9 +7726,9 @@ checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" +checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497" [[package]] name = "rustc-hex" @@ -7312,9 +7756,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.37" +version = "0.38.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +checksum = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6" dependencies = [ "bitflags 2.6.0", "errno", @@ -7337,9 +7781,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.13" +version = "0.23.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2dabaac7466917e566adb06783a81ca48944c6898a1b08b9374106dd671f4c8" +checksum = "934b404430bb06b3fae2cba809eb45a1ab1aecd64491213d7c3301b88393f8d1" dependencies = [ "log", "once_cell", @@ -7359,20 +7803,19 @@ dependencies = [ "openssl-probe", "rustls-pemfile 1.0.4", "schannel", - "security-framework", + "security-framework 2.11.1", ] [[package]] name = "rustls-native-certs" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcaf18a4f2be7326cd874a5fa579fae794320a0f388d365dca7e480e55f83f8a" +checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" dependencies = [ "openssl-probe", - "rustls-pemfile 2.2.0", "rustls-pki-types", "schannel", - "security-framework", + "security-framework 3.0.1", ] [[package]] @@ -7395,9 +7838,12 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e696e35370c65c9c541198af4543ccd580cf17fc25d8e05c5a242b202488c55" +checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" +dependencies = [ + "web-time", +] [[package]] name = "rustls-webpki" @@ -7422,9 +7868,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" [[package]] name = "rusty-fork" @@ -7455,7 +7901,7 @@ dependencies = [ "nix 0.28.0", "radix_trie", "unicode-segmentation", - "unicode-width", + "unicode-width 0.1.14", "utf8parse", "windows-sys 0.52.0", ] @@ -7496,42 +7942,42 @@ dependencies = [ [[package]] name = "scale-info" -version = "2.11.3" +version = "2.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca070c12893629e2cc820a9761bedf6ce1dcddc9852984d1dc734b8bd9bd024" +checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b" dependencies = [ "cfg-if", - "derive_more 0.99.18", + "derive_more", "parity-scale-codec", "scale-info-derive", ] [[package]] name = "scale-info-derive" -version = "2.11.3" +version = "2.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d35494501194174bda522a32605929eefc9ecf7e0a326c26db1fdd85881eb62" +checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.90", ] [[package]] name = "scc" -version = "2.2.0" +version = "2.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836f1e0f4963ef5288b539b643b35e043e76a32d0f4e47e67febf69576527f50" +checksum = "66b202022bb57c049555430e11fc22fea12909276a80a4c3d368da36ac1d88ed" dependencies = [ "sdd", ] [[package]] name = "schannel" -version = "0.1.24" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" dependencies = [ "windows-sys 0.59.0", ] @@ -7557,7 +8003,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -7596,9 +8042,9 @@ dependencies = [ [[package]] name = "sdd" -version = "3.0.3" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60a7b59a5d9b0099720b417b6325d91a52cbf5b3dcb5041d864be53eefa58abc" +checksum = "49c1eeaf4b6a87c7479688c6d52b9f1153cedd3c489300564f932b065c6eab95" [[package]] name = "sec1" @@ -7622,6 +8068,7 @@ checksum = "9465315bc9d4566e1724f0fffcbcc446268cb522e60f9a27bcded6b19c108113" dependencies = [ "rand", "secp256k1-sys", + "serde", ] [[package]] @@ -7653,7 +8100,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ "bitflags 2.6.0", - "core-foundation", + "core-foundation 0.9.4", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1415a607e92bec364ea2cf9264646dcce0f91e6d65281bd6f2819cca3bf39c8" +dependencies = [ + "bitflags 2.6.0", + "core-foundation 0.10.0", "core-foundation-sys", "libc", "security-framework-sys", @@ -7661,14 +8121,47 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.12.0" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" +checksum = "fa39c7303dc58b5543c94d22c1766b0d31f2ee58306363ea622b10bbc075eaa2" dependencies = [ "core-foundation-sys", "libc", ] +[[package]] +name = "seismic-transaction" +version = "0.8.1" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606#00316061227374bb57f01baac2c47e5587afa5cb" +dependencies = [ + "aes-gcm", + "alloy-consensus", + "alloy-eips", + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", + "alloy-rlp", + "alloy-serde", + "lazy_static", + "once_cell", + "paste", + "reth-rpc-types", + "seismic-types", + "serde", + "serde_json", +] + +[[package]] +name = "seismic-types" +version = "0.1.0" +source = "git+ssh://git@github.com/SeismicSystems/mantle.git?rev=90277e21#90277e21888c166b24966c7f27e5b269f42172f6" +dependencies = [ + "alloy-primitives 0.8.1 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606)", + "lazy_static", + "once_cell", + "rand", + "serde", + "serde_json", +] + [[package]] name = "semver" version = "0.11.0" @@ -7689,9 +8182,9 @@ dependencies = [ [[package]] name = "semver-parser" -version = "0.10.2" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" +checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" dependencies = [ "pest", ] @@ -7704,22 +8197,22 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.210" +version = "1.0.215" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.210" +version = "1.0.215" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -7730,16 +8223,16 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] name = "serde_json" -version = "1.0.128" +version = "1.0.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.7.0", "itoa", "memchr", "ryu", @@ -7774,7 +8267,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -7798,11 +8291,41 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_with" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.7.0", + "serde", + "serde_derive", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.90", +] + [[package]] name = "serial_test" -version = "3.1.1" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b4b487fe2acf240a021cf57c6b2b4903b1e78ca0ecd862a71b71d2a51fed77d" +checksum = "1b258109f244e1d6891bf1053a55d63a5cd4f8f4c30cf9a1280989f80e7a1fa9" dependencies = [ "futures", "log", @@ -7814,13 +8337,13 @@ dependencies = [ [[package]] name = "serial_test_derive" -version = "3.1.1" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82fe9db325bcef1fbcde82e078a5cc4efdf787e96b3b9cf45b50b529f2083d67" +checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -7909,7 +8432,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd" dependencies = [ "libc", - "mio 1.0.2", + "mio 1.0.3", "signal-hook", ] @@ -7966,7 +8489,7 @@ checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" dependencies = [ "num-bigint", "num-traits", - "thiserror", + "thiserror 1.0.69", "time", ] @@ -7993,9 +8516,9 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "snapbox" -version = "0.6.17" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "840b73eb3148bc3cbc10ebe00ec9bc6d96033e658d022c4adcbf3f35596fd64a" +checksum = "1373ce406dfad473059bbc31d807715642182bbc952a811952b58d1c9e41dcfa" dependencies = [ "anstream", "anstyle", @@ -8018,9 +8541,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" dependencies = [ "libc", "windows-sys 0.52.0", @@ -8036,7 +8559,7 @@ dependencies = [ "lalrpop", "lalrpop-util", "phf", - "thiserror", + "thiserror 1.0.69", "unicode-xid", ] @@ -8062,10 +8585,10 @@ dependencies = [ "serde", "serde_json", "sha2", - "thiserror", + "thiserror 1.0.69", "tokio", "toml_edit", - "uuid 1.10.0", + "uuid 1.11.0", "yansi", "zip", "zip-extract", @@ -8090,6 +8613,12 @@ dependencies = [ "der", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + [[package]] name = "static_assertions" version = "1.1.0" @@ -8128,13 +8657,35 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +[[package]] +name = "strum" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" +dependencies = [ + "strum_macros 0.25.3", +] + [[package]] name = "strum" version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" dependencies = [ - "strum_macros", + "strum_macros 0.26.4", +] + +[[package]] +name = "strum_macros" +version = "0.25.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.90", ] [[package]] @@ -8143,11 +8694,11 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", "rustversion", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -8184,7 +8735,7 @@ dependencies = [ "serde_json", "sha2", "tempfile", - "thiserror", + "thiserror 1.0.69", "url", "zip", ] @@ -8215,9 +8766,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.79" +version = "2.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" +checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" dependencies = [ "proc-macro2", "quote", @@ -8227,12 +8778,12 @@ dependencies = [ [[package]] name = "syn-solidity" version = "0.8.1" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=adc0cf2#adc0cf2fb96c9be80df1d71cfe8ba745dc33f1c6" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=0031606#00316061227374bb57f01baac2c47e5587afa5cb" dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -8243,24 +8794,58 @@ checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" [[package]] name = "sync_wrapper" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" dependencies = [ "futures-core", ] +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + [[package]] name = "tap" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" +[[package]] +name = "tee_service_api" +version = "0.1.0" +source = "git+ssh://git@github.com/SeismicSystems/TEEService.git?rev=9ab28c87247b876f5875c470f39bd3a3b07b3e8b#9ab28c87247b876f5875c470f39bd3a3b07b3e8b" +dependencies = [ + "aes-gcm", + "anyhow", + "bincode", + "byteorder", + "bytes", + "hkdf", + "hyper 0.14.31", + "kbs-types", + "once_cell", + "reqwest", + "secp256k1", + "serde", + "serde_json", + "sha2", + "strum 0.25.0", + "tokio", +] + [[package]] name = "tempfile" -version = "3.13.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" +checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" dependencies = [ "cfg-if", "fastrand", @@ -8293,12 +8878,12 @@ dependencies = [ [[package]] name = "terminal_size" -version = "0.3.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7" +checksum = "5352447f921fda68cf61b4101566c0bdb5104eff6804d0678e5227580ab6a4e9" dependencies = [ "rustix", - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] @@ -8322,22 +8907,42 @@ checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" [[package]] name = "thiserror" -version = "1.0.64" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f49a1853cf82743e3b7950f77e0f4d622ca36cf4317cba00c767838bac8d490" +dependencies = [ + "thiserror-impl 2.0.4", ] [[package]] name = "thiserror-impl" -version = "1.0.64" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8381894bb3efe0c4acac3ded651301ceee58a15d47c2e34885ed1908ad667061" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", ] [[package]] @@ -8381,9 +8986,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.36" +version = "0.3.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" dependencies = [ "deranged", "itoa", @@ -8404,9 +9009,9 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" dependencies = [ "num-conv", "time-core", @@ -8421,6 +9026,16 @@ dependencies = [ "crunchy", ] +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinytemplate" version = "1.2.1" @@ -8448,14 +9063,14 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.40.0" +version = "1.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" dependencies = [ "backtrace", "bytes", "libc", - "mio 1.0.2", + "mio 1.0.3", "parking_lot", "pin-project-lite", "signal-hook-registry", @@ -8472,7 +9087,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -8501,7 +9116,7 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ - "rustls 0.23.13", + "rustls 0.23.19", "rustls-pki-types", "tokio", ] @@ -8514,7 +9129,7 @@ checksum = "0d4770b8024672c1101b3f6733eab95b18007dbe0847a8afe341fcf79e06043f" dependencies = [ "either", "futures-util", - "thiserror", + "thiserror 1.0.69", "tokio", ] @@ -8538,7 +9153,7 @@ checksum = "c6989540ced10490aaf14e6bad2e3d33728a2813310a0c71d1574304c49631cd" dependencies = [ "futures-util", "log", - "rustls 0.23.13", + "rustls 0.23.19", "rustls-pki-types", "tokio", "tokio-rustls 0.26.0", @@ -8560,9 +9175,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.12" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" dependencies = [ "bytes", "futures-core", @@ -8586,7 +9201,7 @@ version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.7.0", "serde", "serde_spanned", "toml_datetime", @@ -8608,7 +9223,7 @@ version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.7.0", "serde", "serde_spanned", "toml_datetime", @@ -8626,17 +9241,17 @@ dependencies = [ "axum", "base64 0.22.1", "bytes", - "h2 0.4.6", - "http 1.1.0", + "h2 0.4.7", + "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.1", "hyper-timeout", "hyper-util", "percent-encoding", - "pin-project 1.1.5", + "pin-project 1.1.7", "prost", - "rustls-native-certs 0.8.0", + "rustls-native-certs 0.8.1", "rustls-pemfile 2.2.0", "socket2", "tokio", @@ -8663,7 +9278,7 @@ dependencies = [ "futures-core", "futures-util", "indexmap 1.9.3", - "pin-project 1.1.5", + "pin-project 1.1.7", "pin-project-lite", "rand", "slab", @@ -8699,7 +9314,7 @@ dependencies = [ "bitflags 2.6.0", "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "http-range-header", @@ -8741,9 +9356,9 @@ dependencies = [ [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "log", "pin-project-lite", @@ -8753,20 +9368,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", "valuable", @@ -8774,9 +9389,9 @@ dependencies = [ [[package]] name = "tracing-error" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d686ec1c0f384b1277f097b2f279a2ecc11afe8c133c1aabf036a27cb4cd206e" +checksum = "8b1581020d7a273442f5b45074a6a57d5757ad0a47dac0e9f0bd57b81936f3db" dependencies = [ "tracing", "tracing-subscriber", @@ -8795,9 +9410,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.18" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" dependencies = [ "matchers", "nu-ansi-term", @@ -8835,11 +9450,12 @@ dependencies = [ [[package]] name = "tracy-client-sys" -version = "0.24.1" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68613466112302fdbeabc5fa55f7d57462a0b247d5a6b7d7e09401fb471a144d" +checksum = "3637e734239e12ab152cd269302500bd063f37624ee210cd04b4936ed671f3b1" dependencies = [ "cc", + "windows-targets 0.52.6", ] [[package]] @@ -8852,7 +9468,7 @@ dependencies = [ "hex", "protobuf", "rusb", - "thiserror", + "thiserror 1.0.69", "tracing", ] @@ -8871,14 +9487,14 @@ dependencies = [ "byteorder", "bytes", "data-encoding", - "http 1.1.0", + "http 1.2.0", "httparse", "log", "rand", - "rustls 0.23.13", + "rustls 0.23.19", "rustls-pki-types", "sha1", - "thiserror", + "thiserror 1.0.69", "utf-8", ] @@ -8891,12 +9507,12 @@ dependencies = [ "byteorder", "bytes", "data-encoding", - "http 1.1.0", + "http 1.2.0", "httparse", "log", "rand", "sha1", - "thiserror", + "thiserror 1.0.69", "utf-8", ] @@ -8941,18 +9557,9 @@ dependencies = [ [[package]] name = "unicase" -version = "2.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" -dependencies = [ - "version_check", -] - -[[package]] -name = "unicode-bidi" -version = "0.3.15" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" +checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df" [[package]] name = "unicode-bom" @@ -8962,9 +9569,9 @@ checksum = "7eec5d1121208364f6793f7d2e222bf75a915c19557537745b195b253dd64217" [[package]] name = "unicode-ident" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" [[package]] name = "unicode-normalization" @@ -8989,7 +9596,7 @@ checksum = "b3644627a5af5fa321c95b9b235a72fd24cd29c648c2c379431e6628655627bf" dependencies = [ "itertools 0.13.0", "unicode-segmentation", - "unicode-width", + "unicode-width 0.1.14", ] [[package]] @@ -8998,12 +9605,28 @@ version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" +[[package]] +name = "unicode-width" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" + [[package]] name = "unicode-xid" version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" +[[package]] +name = "universal-hash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +dependencies = [ + "crypto-common", + "subtle", +] + [[package]] name = "untrusted" version = "0.9.0" @@ -9012,9 +9635,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.2" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", "idna", @@ -9033,6 +9656,18 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.2" @@ -9051,9 +9686,9 @@ dependencies = [ [[package]] name = "uuid" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" +checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" dependencies = [ "getrandom", "serde", @@ -9131,9 +9766,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.93" +version = "0.2.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" +checksum = "d15e63b4482863c109d70a7b8706c1e364eb6ea449b201a76c5b89cedcec2d5c" dependencies = [ "cfg-if", "once_cell", @@ -9142,36 +9777,37 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.93" +version = "0.2.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" +checksum = "8d36ef12e3aaca16ddd3f67922bc63e48e953f126de60bd33ccc0101ef9998cd" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.43" +version = "0.4.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" +checksum = "9dfaf8f50e5f293737ee323940c7d8b08a66a95a419223d9f41610ca08b0833d" dependencies = [ "cfg-if", "js-sys", + "once_cell", "wasm-bindgen", "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.93" +version = "0.2.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" +checksum = "705440e08b42d3e4b36de7d66c944be628d579796b8090bfa3471478a2260051" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -9179,28 +9815,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.93" +version = "0.2.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" +checksum = "98c9ae5a76e46f4deecd0f0255cc223cfa18dc9b261213b8aa0c7b36f61b3f1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.93" +version = "0.2.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" +checksum = "6ee99da9c5ba11bd675621338ef6fa52296b76b83305e9b6e5c77d4c286d6d49" [[package]] name = "wasm-streams" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e072d4e72f700fb3443d8fe94a39315df013eef1104903cdb0a2abd322bbecd" +checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" dependencies = [ "futures-util", "js-sys", @@ -9227,7 +9863,7 @@ dependencies = [ "once_cell", "process-wrap", "project-origins", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", "watchexec-events", @@ -9254,7 +9890,7 @@ checksum = "8f7ccc54db7df8cbbe3251508321e46986ce179af4c4a03b4c70bda539d72755" dependencies = [ "miette", "nix 0.28.0", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -9274,9 +9910,19 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.70" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" +checksum = "a98bc3c33f0fe7e59ad7cd041b89034fa82a7c2d4365ca538dda6cdaf513863c" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" dependencies = [ "js-sys", "wasm-bindgen", @@ -9284,9 +9930,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.6" +version = "0.26.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" +checksum = "5d642ff16b7e79272ae451b7322067cdc17cadf68c23264be9d94a32319efe7e" dependencies = [ "rustls-pki-types", ] @@ -9402,7 +10048,7 @@ checksum = "f6fc35f58ecd95a9b71c4f2329b911016e6bec66b3f2e6a4aad86bd2e99e2f9b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -9413,7 +10059,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -9424,7 +10070,7 @@ checksum = "08990546bf4edef8f431fa6326e032865f27138718c587dc21bc0265bbcb57cc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -9435,7 +10081,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -9640,6 +10286,18 @@ version = "0.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + [[package]] name = "ws_stream_wasm" version = "0.7.4" @@ -9653,7 +10311,7 @@ dependencies = [ "pharos", "rustc_version 0.4.1", "send_wrapper", - "thiserror", + "thiserror 1.0.69", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -9683,6 +10341,30 @@ dependencies = [ "is-terminal", ] +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", + "synstructure", +] + [[package]] name = "zerocopy" version = "0.7.35" @@ -9701,7 +10383,28 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", +] + +[[package]] +name = "zerofrom" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", + "synstructure", ] [[package]] @@ -9721,14 +10424,36 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", +] + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", ] [[package]] name = "zip" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc5e4288ea4057ae23afc69a4472434a87a2495cafce6632fd1c4ec9f5cf3494" +checksum = "99d52293fc86ea7cf13971b3bb81eb21683636e7ae24c729cdaf1b7c4157a352" dependencies = [ "arbitrary", "bzip2", @@ -9736,9 +10461,9 @@ dependencies = [ "crossbeam-utils", "displaydoc", "flate2", - "indexmap 2.5.0", + "indexmap 2.7.0", "memchr", - "thiserror", + "thiserror 2.0.4", "zopfli", ] @@ -9749,7 +10474,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25a8c9e90f27d1435088a7b540b6cc8ae6ee525d992a695f16012d2f365b3d3c" dependencies = [ "log", - "thiserror", + "thiserror 1.0.69", "zip", ] diff --git a/Cargo.toml b/Cargo.toml index 1c133922f..36ab5b8ac 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -164,8 +164,8 @@ solang-parser = "=0.3.3" ## revm # no default features to avoid c-kzg -revm = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "647e76f4", default-features = false } -revm-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "647e76f4", default-features = false } +revm = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "7f8d4e6", default-features = false } +revm-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "7f8d4e6", default-features = false } revm-inspectors = { git = "ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "a77b988", features = ["serde"] } ## ethers @@ -195,13 +195,16 @@ alloy-transport-ipc = { version = "0.3.6", default-features = false } alloy-transport-ws = { version = "0.3.6", default-features = false } ## alloy-core -alloy-dyn-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2", features = ["seismic", "std"] } -alloy-json-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2", features = ["seismic"] } -alloy-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2", features = ["getrandom", "rand", "seismic"] } -alloy-sol-macro-expander = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2", features = ["seismic"] } -alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2", features = ["seismic"] } -alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2", features = ["seismic"] } -syn-solidity = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2", features = ["seismic"] } +alloy-dyn-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "0031606", features = ["seismic", "std"] } +alloy-json-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "0031606", features = ["seismic"] } +alloy-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "0031606", features = ["getrandom", "rand", "seismic"] } +alloy-sol-macro-expander = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "0031606", features = ["seismic"] } +alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "0031606", features = ["seismic"] } +alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "0031606", features = ["seismic"] } +syn-solidity = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "0031606", features = ["seismic"] } + +# seismic-transaction +seismic-transaction = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "0031606"} alloy-chains = "0.1" alloy-rlp = "0.3" @@ -273,17 +276,18 @@ comfy-table = "7" # and instead use our local version # seismic-revm -revm = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "647e76f4" } -revm-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "647e76f4" } +revm = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "7f8d4e6" } +revm-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "7f8d4e6" } + -foundry-fork-db = { git = "ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "0d2a25e" } +foundry-fork-db = { git = "ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "58ee49a" } # seismic-alloy-core -alloy-dyn-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2" } -alloy-json-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2" } -alloy-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2" } -alloy-sol-macro = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2" } -alloy-sol-macro-expander = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2" } -alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2" } -alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2" } -alloy-sol-type-parser = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "adc0cf2" } +alloy-dyn-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "0031606" } +alloy-json-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "0031606" } +alloy-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "0031606" } +alloy-sol-macro = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "0031606" } +alloy-sol-macro-expander = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "0031606" } +alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "0031606" } +alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "0031606" } +alloy-sol-type-parser = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "0031606" } diff --git a/crates/anvil/Cargo.toml b/crates/anvil/Cargo.toml index 8821deeb2..72bd47997 100644 --- a/crates/anvil/Cargo.toml +++ b/crates/anvil/Cargo.toml @@ -67,6 +67,7 @@ alloy-transport.workspace = true alloy-chains.workspace = true alloy-genesis.workspace = true alloy-trie.workspace = true +seismic-transaction.workspace = true # axum related axum.workspace = true @@ -108,6 +109,8 @@ ctrlc = { version = "3", optional = true } fdlimit = { version = "0.3", optional = true } clap_complete_fig = "4" +tee_service_api = { git = "ssh://git@github.com/SeismicSystems/TEEService.git", package = "tee_service_api", rev = "9ab28c87247b876f5875c470f39bd3a3b07b3e8b"} + [target.'cfg(unix)'.dependencies] tikv-jemallocator = { workspace = true, optional = true } diff --git a/crates/anvil/core/Cargo.toml b/crates/anvil/core/Cargo.toml index dc45b4e27..2d3bf1b40 100644 --- a/crates/anvil/core/Cargo.toml +++ b/crates/anvil/core/Cargo.toml @@ -30,6 +30,7 @@ alloy-eips.workspace = true alloy-consensus = { workspace = true, features = ["k256", "kzg"] } alloy-dyn-abi = { workspace = true, features = ["std", "eip712", "seismic"] } alloy-trie.workspace = true +seismic-transaction.workspace = true serde = { workspace = true, optional = true } serde_json.workspace = true @@ -38,6 +39,14 @@ bytes = "1.4" # misc rand = "0.8" +anyhow = "1.0" +once_cell = "1" +secp256k1 = { version = "0.29", default-features = false, features = [ + "global-context", + "recovery", +] } +tee_service_api = { git = "ssh://git@github.com/SeismicSystems/TEEService.git", package = "tee_service_api", rev = "9ab28c87247b876f5875c470f39bd3a3b07b3e8b"} + [features] default = ["serde"] impersonated-tx = [] diff --git a/crates/anvil/core/src/eth/transaction/crypto.rs b/crates/anvil/core/src/eth/transaction/crypto.rs new file mode 100644 index 000000000..2a592fb85 --- /dev/null +++ b/crates/anvil/core/src/eth/transaction/crypto.rs @@ -0,0 +1,100 @@ +use alloy_consensus::Signed; +use alloy_primitives::{FixedBytes, SignatureError}; +use once_cell::sync::Lazy; +use secp256k1::{ecdh::SharedSecret, PublicKey, SecretKey}; +use seismic_transaction::transaction::SeismicTransaction; +use tee_service_api::{ + aes_decrypt, aes_encrypt, derive_aes_key, get_sample_secp256k1_pk, get_sample_secp256k1_sk, +}; + +static ENCRYPTION_KEY: Lazy = Lazy::new(|| get_sample_secp256k1_sk()); +static PUBLIC_KEY: Lazy = Lazy::new(|| get_sample_secp256k1_pk()); + +pub fn encrypt( + secret_key: &SecretKey, + public_key: &PublicKey, + plaintext: &[u8], + nonce: u64, +) -> anyhow::Result> { + let shared_secret = SharedSecret::new(public_key, secret_key); + let aes_key = derive_aes_key(&shared_secret) + .map_err(|e| anyhow::anyhow!("Error deriving AES key: {:?}", e))?; + aes_encrypt(&aes_key, plaintext, nonce) +} + +pub fn decrypt( + secret_key: &SecretKey, + public_key: &PublicKey, + ciphertext: &[u8], + nonce: u64, +) -> anyhow::Result> { + let shared_secret = SharedSecret::new(public_key, secret_key); + let aes_key = derive_aes_key(&shared_secret) + .map_err(|e| anyhow::anyhow!("Error deriving AES key: {:?}", e))?; + aes_decrypt(&aes_key, ciphertext, nonce) +} + +pub fn server_decrypt( + public_key: &PublicKey, + ciphertext: &[u8], + nonce: u64, +) -> anyhow::Result> { + decrypt(&ENCRYPTION_KEY, public_key, ciphertext, nonce) +} + +pub fn server_encrypt( + public_key: &PublicKey, + plaintext: &[u8], + nonce: u64, +) -> anyhow::Result> { + encrypt(&ENCRYPTION_KEY, public_key, plaintext, nonce) +} + +pub fn client_decrypt( + secret_key: &SecretKey, + ciphertext: &[u8], + nonce: u64, +) -> anyhow::Result> { + decrypt(secret_key, &PUBLIC_KEY, ciphertext, nonce) +} + +pub fn client_encrypt( + secret_key: &SecretKey, + plaintext: &[u8], + nonce: u64, +) -> anyhow::Result> { + encrypt(secret_key, &PUBLIC_KEY, plaintext, nonce) +} + +pub fn secret_key(fixed_bytes: &FixedBytes<32>) -> SecretKey { + SecretKey::from_slice(&fixed_bytes.to_vec()[..]).unwrap() +} + +#[derive(Debug)] +pub enum RecoverPublicKeyError { + Secp256K1(secp256k1::Error), + SignatureError(SignatureError), +} + +impl From for RecoverPublicKeyError { + fn from(value: SignatureError) -> Self { + RecoverPublicKeyError::SignatureError(value) + } +} + +impl From for RecoverPublicKeyError { + fn from(value: secp256k1::Error) -> Self { + RecoverPublicKeyError::Secp256K1(value) + } +} + +/// Recover the public key from a signed seismic transaction +pub fn recover_public_key( + tx: &Signed, +) -> Result { + let sighash = tx.signature_hash(); + let verifying_key = tx.signature().recover_from_prehash(&sighash)?; + let pk_bytes = verifying_key.to_sec1_bytes(); + let public_key = secp256k1::PublicKey::from_slice(&pk_bytes)?; + Ok(public_key) +} diff --git a/crates/anvil/core/src/eth/transaction/mod.rs b/crates/anvil/core/src/eth/transaction/mod.rs index d84948eec..bb66bc0bc 100644 --- a/crates/anvil/core/src/eth/transaction/mod.rs +++ b/crates/anvil/core/src/eth/transaction/mod.rs @@ -25,11 +25,39 @@ use revm::{ interpreter::InstructionResult, primitives::{OptimismFields, TxEnv}, }; +use seismic_transaction::{ + encoding_decoding::{ + decode_signed_seismic_fields, encode_2718_len, encode_2718_seismic_transaction, + }, + transaction::SeismicTransaction, + transaction_request::SeismicTransactionRequest, +}; use serde::{Deserialize, Serialize}; -use std::ops::{Deref, Mul}; +use std::{ + fmt::Debug, + hash::Hash, + ops::{Deref, Mul}, +}; +pub mod crypto; pub mod optimism; +pub trait SeismicCompatible: + Encodable + + Decodable + + Debug + + Clone + + PartialEq + + Eq + + Send + + Sync + + 'static + + Serialize + + for<'de> Deserialize<'de> + + Hash +{ +} + /// Converts a [TransactionRequest] into a [TypedTransactionRequest]. /// Should be removed once the call builder abstraction for providers is in place. pub fn transaction_request_to_typed( @@ -69,8 +97,19 @@ pub fn transaction_request_to_typed( is_system_tx: other.get_deserialized::("isSystemTx")?.ok()?, input: input.into_input().unwrap_or_default(), })); + } else if transaction_type == Some(SeismicTransaction::TRANSACTION_TYPE) || + has_seismic_fields(&other) + { + return Some(TypedTransactionRequest::Seismic(SeismicTransactionRequest { + nonce: nonce.unwrap_or_default(), + gas_price: gas_price.unwrap_or_default(), + gas_limit: gas.unwrap_or_default() as u64, + kind: to.unwrap_or_default(), + value: value.unwrap_or_default(), + chain_id: 0, + seismic_input: other.get_deserialized::("seismicInput")?.ok()?, + })); } - match ( transaction_type, gas_price, @@ -159,6 +198,10 @@ fn has_optimism_fields(other: &OtherFields) -> bool { other.contains_key("isSystemTx") } +fn has_seismic_fields(other: &OtherFields) -> bool { + other.contains_key("seismicInput") +} + #[derive(Clone, Debug, PartialEq, Eq)] pub enum TypedTransactionRequest { Legacy(TxLegacy), @@ -166,6 +209,7 @@ pub enum TypedTransactionRequest { EIP1559(TxEip1559), EIP4844(TxEip4844Variant), Deposit(DepositTransactionRequest), + Seismic(SeismicTransactionRequest), } /// A wrapper for [TypedTransaction] that allows impersonating accounts. @@ -431,6 +475,32 @@ pub fn to_alloy_transaction_with_hash_and_sender( blob_versioned_hashes: None, authorization_list: None, }, + TypedTransaction::Seismic(t) => RpcTransaction { + hash, + nonce: t.tx().tx.nonce, + block_hash: None, + block_number: None, + transaction_index: None, + from, + to: t.tx().tx.kind.to().copied(), + value: t.tx().tx.value, + gas_price: None, + max_fee_per_gas: None, + max_priority_fee_per_gas: None, + gas: u128::try_from(t.tx().tx.gas_limit).unwrap(), + input: t.tx().tx.seismic_input.clone(), + chain_id: Some(t.tx().tx.chain_id), + signature: Some(RpcSignature { + r: t.signature().r(), + s: t.signature().s(), + v: U256::from(t.signature().v().to_u64()), + y_parity: Some(alloy_rpc_types::Parity::from(t.signature().v().y_parity())), + }), + access_list: None, + transaction_type: Some(4), + authorization_list: None, + ..Default::default() + }, } } @@ -491,7 +561,7 @@ impl PendingTransaction { let TxLegacy { nonce, gas_price, gas_limit, value, to, input, .. } = tx.tx(); TxEnv { caller, - transact_to: transact_to(to), + transact_to: transact_to(&to), data: input.clone(), chain_id, nonce: Some(*nonce), @@ -517,7 +587,7 @@ impl PendingTransaction { } = tx.tx(); TxEnv { caller, - transact_to: transact_to(to), + transact_to: transact_to(&to), data: input.clone(), chain_id: Some(*chain_id), nonce: Some(*nonce), @@ -544,7 +614,7 @@ impl PendingTransaction { } = tx.tx(); TxEnv { caller, - transact_to: transact_to(to), + transact_to: transact_to(&to), data: input.clone(), chain_id: Some(*chain_id), nonce: Some(*nonce), @@ -648,6 +718,39 @@ impl PendingTransaction { ..Default::default() } } + TypedTransaction::Seismic(tx) => { + let SeismicTransactionRequest { + nonce, + gas_price, + gas_limit, + kind, + value, + chain_id, + seismic_input, + .. + } = &tx.tx().tx; + + let public_key = + crypto::recover_public_key(tx).expect("Failed to recover public key"); + let decrypted_input = + crypto::server_decrypt(&public_key, &seismic_input.as_ref(), *nonce) + .expect("Failed to decrypt seismic tx"); + let data = Bytes::decode(&mut decrypted_input.as_slice()) + .expect("Failed to RLP decode decrypted input"); + TxEnv { + caller, + transact_to: transact_to(&kind), + data, + chain_id: Some(*chain_id), + nonce: Some(*nonce), + value: *value, + gas_price: U256::from(*gas_price), + gas_priority_fee: None, + gas_limit: *gas_limit, + access_list: vec![], + ..Default::default() + } + } } } } @@ -667,6 +770,8 @@ pub enum TypedTransaction { EIP7702(Signed), /// op-stack deposit transaction Deposit(DepositTransaction), + /// Seismic transaction + Seismic(Signed), } /// This is a function that demotes TypedTransaction to TransactionRequest for greater flexibility @@ -713,6 +818,7 @@ impl TypedTransaction { Self::EIP4844(tx) => tx.tx().tx().max_fee_per_gas, Self::EIP7702(tx) => tx.tx().max_fee_per_gas, Self::Deposit(_) => 0, + Self::Seismic(req) => u128::try_from(req.tx().tx.gas_price).unwrap(), } } @@ -724,6 +830,7 @@ impl TypedTransaction { Self::EIP4844(tx) => tx.tx().tx().gas_limit, Self::EIP7702(tx) => tx.tx().gas_limit, Self::Deposit(tx) => tx.gas_limit, + Self::Seismic(tx) => u128::try_from(tx.tx().tx.gas_limit).unwrap(), } } @@ -735,6 +842,7 @@ impl TypedTransaction { Self::EIP4844(tx) => tx.tx().tx().value, Self::EIP7702(tx) => tx.tx().value, Self::Deposit(tx) => tx.value, + Self::Seismic(tx) => tx.tx().tx.value, }) } @@ -746,6 +854,7 @@ impl TypedTransaction { Self::EIP4844(tx) => &tx.tx().tx().input, Self::EIP7702(tx) => &tx.tx().input, Self::Deposit(tx) => &tx.input, + Self::Seismic(tx) => &tx.tx().tx.seismic_input, } } @@ -758,6 +867,7 @@ impl TypedTransaction { Self::EIP4844(_) => Some(3), Self::EIP7702(_) => Some(4), Self::Deposit(_) => Some(0x7E), + Self::Seismic(_) => Some(SeismicTransaction::TRANSACTION_TYPE), } } @@ -878,6 +988,20 @@ impl TypedTransaction { chain_id: t.chain_id(), access_list: Default::default(), }, + Self::Seismic(t) => TransactionEssentials { + kind: t.tx().tx.kind, + input: t.tx().tx.seismic_input.clone(), + nonce: t.tx().tx.nonce, + gas_limit: u128::try_from(t.tx().tx.gas_limit).unwrap(), + gas_price: Some(u128::try_from(t.tx().tx.gas_price).unwrap()), + max_fee_per_gas: None, + max_priority_fee_per_gas: None, + max_fee_per_blob_gas: None, + blob_versioned_hashes: None, + value: t.tx().tx.value, + chain_id: Some(t.tx().tx.chain_id), + access_list: Default::default(), + }, } } @@ -889,6 +1013,7 @@ impl TypedTransaction { Self::EIP4844(t) => t.tx().tx().nonce, Self::EIP7702(t) => t.tx().nonce, Self::Deposit(t) => t.nonce, + Self::Seismic(t) => t.tx().tx.nonce, } } @@ -900,6 +1025,7 @@ impl TypedTransaction { Self::EIP4844(t) => Some(t.tx().tx().chain_id), Self::EIP7702(t) => Some(t.tx().chain_id), Self::Deposit(t) => t.chain_id(), + Self::Seismic(t) => Some(t.tx().tx.chain_id), } } @@ -942,6 +1068,7 @@ impl TypedTransaction { Self::EIP4844(t) => *t.hash(), Self::EIP7702(t) => *t.hash(), Self::Deposit(t) => t.hash(), + Self::Seismic(t) => *t.hash(), } } @@ -965,6 +1092,7 @@ impl TypedTransaction { Self::EIP4844(tx) => tx.recover_signer(), Self::EIP7702(tx) => tx.recover_signer(), Self::Deposit(tx) => tx.recover(), + Self::Seismic(tx) => tx.recover_signer(), } } @@ -977,6 +1105,7 @@ impl TypedTransaction { Self::EIP4844(tx) => TxKind::Call(tx.tx().tx().to), Self::EIP7702(tx) => TxKind::Call(tx.tx().to), Self::Deposit(tx) => tx.kind, + Self::Seismic(tx) => tx.tx().tx.kind, } } @@ -999,6 +1128,7 @@ impl TypedTransaction { Parity::Parity(false), ) .unwrap(), + Self::Seismic(tx) => *tx.signature(), } } } @@ -1168,6 +1298,8 @@ impl Encodable2718 for TypedTransaction { let payload_length = tx.tx().fields_len() + tx.signature().rlp_vrs_len(); Header { list: true, payload_length }.length() + payload_length + 1 } + // under the hood, encode_2718_len(), if not a legacy transaction, is r.length()+1 + Self::Seismic(tx) => encode_2718_len(tx), Self::Deposit(tx) => 1 + tx.length(), } } @@ -1182,6 +1314,7 @@ impl Encodable2718 for TypedTransaction { Self::Deposit(tx) => { tx.encode_2718(out); } + Self::Seismic(tx) => encode_2718_seismic_transaction(tx, out), } } } @@ -1191,6 +1324,9 @@ impl Decodable2718 for TypedTransaction { match ty { 0x04 => return Ok(Self::EIP7702(TxEip7702::decode_signed_fields(buf)?)), 0x7E => return Ok(Self::Deposit(DepositTransaction::decode(buf)?)), + SeismicTransaction::TRANSACTION_TYPE => { + return Ok(Self::Seismic(decode_signed_seismic_fields(buf)?)) + } _ => {} } match TxEnvelope::typed_decode(ty, buf)? { @@ -1257,9 +1393,9 @@ pub struct TransactionInfo { pub struct DepositReceipt { #[serde(flatten)] pub inner: ReceiptWithBloom, - #[serde(default, with = "alloy_serde::num::u64_opt_via_ruint")] + #[serde(default, with = "alloy_serde::quantity::opt")] pub deposit_nonce: Option, - #[serde(default, with = "alloy_serde::num::u64_opt_via_ruint")] + #[serde(default, with = "alloy_serde::quantity::opt")] pub deposit_receipt_version: Option, } @@ -1365,6 +1501,8 @@ pub enum TypedReceipt { EIP7702(ReceiptWithBloom), #[serde(rename = "0x7E", alias = "0x7e")] Deposit(DepositReceipt), + #[serde(rename = "0x4A", alias = "0x4a")] + Seismic(ReceiptWithBloom), } impl TypedReceipt { @@ -1374,7 +1512,8 @@ impl TypedReceipt { Self::EIP1559(r) | Self::EIP2930(r) | Self::EIP4844(r) | - Self::EIP7702(r) => r, + Self::EIP7702(r) | + Self::Seismic(r) => r, Self::Deposit(r) => &r.inner, } } @@ -1387,7 +1526,8 @@ impl From> for ReceiptWithBloom { TypedReceipt::EIP1559(r) | TypedReceipt::EIP2930(r) | TypedReceipt::EIP4844(r) | - TypedReceipt::EIP7702(r) => r, + TypedReceipt::EIP7702(r) | + TypedReceipt::Seismic(r) => r, TypedReceipt::Deposit(r) => r.inner, } } @@ -1402,6 +1542,7 @@ impl From> for OtsReceipt { TypedReceipt::EIP4844(_) => 0x03, TypedReceipt::EIP7702(_) => 0x04, TypedReceipt::Deposit(_) => 0x7E, + TypedReceipt::Seismic(_) => SeismicTransaction::TRANSACTION_TYPE, } as u8; let receipt = ReceiptWithBloom::::from(value); let status = receipt.status(); @@ -1534,6 +1675,7 @@ impl Encodable2718 for TypedReceipt { Self::EIP4844(_) => Some(3), Self::EIP7702(_) => Some(4), Self::Deposit(_) => Some(0x7E), + Self::Seismic(_) => Some(SeismicTransaction::TRANSACTION_TYPE), } } @@ -1545,6 +1687,7 @@ impl Encodable2718 for TypedReceipt { Self::EIP4844(r) => ReceiptEnvelope::Eip4844(r.clone()).encode_2718_len(), Self::EIP7702(r) => 1 + r.length(), Self::Deposit(r) => 1 + r.length(), + Self::Seismic(r) => 1 + r.length(), } } @@ -1559,6 +1702,7 @@ impl Encodable2718 for TypedReceipt { Self::EIP4844(r) | Self::EIP7702(r) => r.encode(out), Self::Deposit(r) => r.encode(out), + Self::Seismic(r) => r.encode(out), } } } @@ -1647,7 +1791,8 @@ pub fn convert_to_anvil_receipt(receipt: AnyTransactionReceipt) -> Option = orig_decoded_tx.into_signed(signature); + + let signed_tt = TypedTransaction::Seismic(signed_tx); + + let mut encoded_tx = Vec::new(); + signed_tt.encode(&mut encoded_tx); + + let encoded_bytes = Bytes::from(encoded_tx); + let reth_encoded = Bytes::from_str("0xb8b04af8ad0402843b9aca00830186a094d3e8763675e4c425df46cc3b5c0f6cbdac39604687038d7ea4c68000b840fc3c2cf4943c327f19af0efaf3b07201f608dd5c8e3954399a919b72588d3872b6819ac3d13d3656cbb38833a39ffd1e73963196a1ddfa9e4a5d595fdbebb87580a00eb96ca19e8a77102767a41fc85a36afd5c61ccb09911cec5d3e86e193d9c5aea03a456401896b1b6055311536bf00a718568c744d8c1f9df59879e8350220ca18").unwrap(); + assert_eq!(reth_encoded, encoded_bytes); + } + + #[test] + fn test_seismic_tx_decoding() { + // from viem sendRawTransaction + let encoded = Bytes::from_str("0x4af89d827a69018504a817c80083033450945fbdb2315678afecb367f032d93f642f64180aa380b5cb387d170552f2fb7885ddf93294c66944d5a81e89116220f7d473ccac13a62be7763c96a24a15e40d293ac4eb2497d60737c552f101a02e74bea92f40298316cbeff63d9b9be58a1f6a84610dd873510670b9ec3d1beda07c46b32555ba225d375b0b0be549c81fca2fa86cd3e7c2530543693930fc184b").unwrap(); + let mut buf = encoded.as_ref(); + let decoded_tx = TypedTransaction::decode_2718(&mut buf).unwrap(); + let sighash = match &decoded_tx { + TypedTransaction::Seismic(tx) => tx.signature_hash(), + _ => unreachable!(), + }; + let expected_sighash = FixedBytes::<32>::from_str( + "cb3b67b55eea90d2970fc853d63d2ffb0867da325e94f66f75cddc8b2ce4de0b", + ) + .unwrap(); + assert_eq!(sighash, expected_sighash); + let sender = decoded_tx.recover().unwrap(); + let expected_sender = + Address::from_str("f39fd6e51aad88f6f4ce6ab8827279cfffb92266").unwrap(); + assert_eq!(sender, expected_sender); + } } diff --git a/crates/anvil/src/eth/api.rs b/crates/anvil/src/eth/api.rs index ce19eca39..d7ca1395f 100644 --- a/crates/anvil/src/eth/api.rs +++ b/crates/anvil/src/eth/api.rs @@ -2748,6 +2748,14 @@ impl EthApi { m.gas_limit = gas_limit; TypedTransactionRequest::Deposit(m) } + Some(TypedTransactionRequest::Seismic(mut m)) => { + m.gas_limit = gas_limit as u64; + if gas_price.is_none() { + m.gas_price = self.gas_price(); + } + m.chain_id = chain_id; + TypedTransactionRequest::Seismic(m) + } None => return Err(BlockchainError::FailedToDecodeTransaction), }; Ok(request) @@ -2771,7 +2779,8 @@ impl EthApi { TypedTransactionRequest::EIP2930(_) | TypedTransactionRequest::EIP1559(_) | TypedTransactionRequest::EIP4844(_) | - TypedTransactionRequest::Deposit(_) => Signature::from_scalars_and_parity( + TypedTransactionRequest::Deposit(_) | + TypedTransactionRequest::Seismic(_) => Signature::from_scalars_and_parity( B256::with_last_byte(1), B256::with_last_byte(1), Parity::Parity(false), @@ -2848,6 +2857,7 @@ impl EthApi { TypedTransaction::EIP7702(_) => self.backend.ensure_eip7702_active(), TypedTransaction::Deposit(_) => self.backend.ensure_op_deposits_active(), TypedTransaction::Legacy(_) => Ok(()), + TypedTransaction::Seismic(_) => Ok(()), } } } @@ -2903,6 +2913,10 @@ fn determine_base_gas_by_kind(request: &WithOtherFields) -> TxKind::Call(_) => MIN_TRANSACTION_GAS, TxKind::Create => MIN_CREATE_GAS, }, + TypedTransactionRequest::Seismic(req) => match req.kind { + TxKind::Call(_) => MIN_TRANSACTION_GAS, + TxKind::Create => MIN_CREATE_GAS, + }, }, // Tighten the gas limit upwards if we don't know the transaction type to avoid deployments // failing. @@ -2970,6 +2984,8 @@ impl TryFrom, u128, State)>> for GasEs InstructionResult::InvalidEOFInitCode | InstructionResult::EofAuxDataOverflow | InstructionResult::EofAuxDataTooSmall => Ok(Self::EvmError(exit)), + InstructionResult::InvalidPrivateStorageAccess | + InstructionResult::InvalidPublicStorageAccess => todo!(), }, } } diff --git a/crates/anvil/src/eth/backend/executor.rs b/crates/anvil/src/eth/backend/executor.rs index c84ad5200..a7eab53be 100644 --- a/crates/anvil/src/eth/backend/executor.rs +++ b/crates/anvil/src/eth/backend/executor.rs @@ -72,6 +72,7 @@ impl ExecutedTransaction { deposit_nonce: Some(tx.nonce), deposit_receipt_version: Some(1), }), + TypedTransaction::Seismic(_) => TypedReceipt::Seismic(receipt_with_bloom), } } } diff --git a/crates/anvil/src/eth/backend/mem/mod.rs b/crates/anvil/src/eth/backend/mem/mod.rs index 0b05efb39..fa64a7eae 100644 --- a/crates/anvil/src/eth/backend/mem/mod.rs +++ b/crates/anvil/src/eth/backend/mem/mod.rs @@ -938,7 +938,6 @@ impl Backend { ) -> MinedBlockOutcome { let _mining_guard = self.mining.lock().await; trace!(target: "backend", "creating new block with {} transactions", pool_transactions.len()); - let (outcome, header, block_hash) = { let current_base_fee = self.base_fee(); let current_excess_blob_gas_and_price = self.excess_blob_gas_and_price(); @@ -2208,6 +2207,7 @@ impl Backend { .unwrap_or_else(|| self.base_fee()) .saturating_add(t.tx().max_priority_fee_per_gas), TypedTransaction::Deposit(_) => 0_u128, + TypedTransaction::Seismic(_) => 0_u128, }; let receipts = self.get_receipts(block.transactions.iter().map(|tx| tx.hash())); @@ -2247,6 +2247,7 @@ impl Backend { deposit_nonce: r.deposit_nonce, deposit_receipt_version: r.deposit_receipt_version, }), + TypedReceipt::Seismic(_) => TypedReceipt::Seismic(receipt_with_bloom), }; let inner = TransactionReceipt { diff --git a/crates/anvil/src/eth/fees.rs b/crates/anvil/src/eth/fees.rs index 45b33ad0f..1bfcfe673 100644 --- a/crates/anvil/src/eth/fees.rs +++ b/crates/anvil/src/eth/fees.rs @@ -290,6 +290,7 @@ impl FeeHistoryService { .max_priority_fee_per_gas .min(t.tx().max_fee_per_gas.saturating_sub(base_fee)), Some(TypedTransaction::Deposit(_)) => 0, + Some(TypedTransaction::Seismic(_)) => 0, None => 0, }; diff --git a/crates/anvil/src/eth/sign.rs b/crates/anvil/src/eth/sign.rs index d921b18d3..ae0bc557f 100644 --- a/crates/anvil/src/eth/sign.rs +++ b/crates/anvil/src/eth/sign.rs @@ -9,6 +9,7 @@ use anvil_core::eth::transaction::{ optimism::{DepositTransaction, DepositTransactionRequest}, TypedTransaction, TypedTransactionRequest, }; +use seismic_transaction::transaction::SeismicTransaction; use std::collections::HashMap; /// A transaction signer @@ -107,6 +108,7 @@ impl Signer for DevSigner { TypedTransactionRequest::EIP1559(mut tx) => Ok(signer.sign_transaction_sync(&mut tx)?), TypedTransactionRequest::EIP4844(mut tx) => Ok(signer.sign_transaction_sync(&mut tx)?), TypedTransactionRequest::Deposit(mut tx) => Ok(signer.sign_transaction_sync(&mut tx)?), + TypedTransactionRequest::Seismic(mut tx) => Ok(signer.sign_transaction_sync(&mut tx)?), } } } @@ -155,6 +157,10 @@ pub fn build_typed_transaction( nonce: 0, }) } + TypedTransactionRequest::Seismic(tx) => { + let seismic_tx = SeismicTransaction { tx: tx.clone() }; + TypedTransaction::Seismic(seismic_tx.into_signed(signature)) + } }; Ok(tx) diff --git a/crates/anvil/tests/it/eip4844.rs b/crates/anvil/tests/it/eip4844.rs index 2da74da65..353083409 100644 --- a/crates/anvil/tests/it/eip4844.rs +++ b/crates/anvil/tests/it/eip4844.rs @@ -1,7 +1,7 @@ use crate::utils::http_provider; use alloy_consensus::{SidecarBuilder, SimpleCoder}; use alloy_eips::eip4844::{DATA_GAS_PER_BLOB, MAX_DATA_GAS_PER_BLOCK}; -use alloy_network::TransactionBuilder; +use alloy_network::{TransactionBuilder, TransactionBuilder4844}; use alloy_primitives::U256; use alloy_provider::Provider; use alloy_rpc_types::{BlockId, TransactionRequest}; diff --git a/crates/anvil/tests/it/eip7702.rs b/crates/anvil/tests/it/eip7702.rs index 828e0d351..2a0cc0e43 100644 --- a/crates/anvil/tests/it/eip7702.rs +++ b/crates/anvil/tests/it/eip7702.rs @@ -1,7 +1,7 @@ use crate::utils::http_provider; use alloy_consensus::{transaction::TxEip7702, SignableTransaction}; use alloy_network::{ReceiptResponse, TransactionBuilder, TxSignerSync}; -use alloy_primitives::{bytes, TxKind, U256}; +use alloy_primitives::{bytes, U256}; use alloy_provider::Provider; use alloy_rpc_types::{Authorization, TransactionRequest}; use alloy_serde::WithOtherFields; @@ -57,7 +57,7 @@ async fn can_send_eip7702_tx() { max_priority_fee_per_gas: eip1559_est.max_priority_fee_per_gas, gas_limit: 100000, chain_id: 31337, - to: TxKind::Call(from), + to: from, input: bytes!("11112222"), authorization_list: vec![authorization], ..Default::default() diff --git a/crates/anvil/tests/it/main.rs b/crates/anvil/tests/it/main.rs index f3f5eca15..e80964b4f 100644 --- a/crates/anvil/tests/it/main.rs +++ b/crates/anvil/tests/it/main.rs @@ -14,6 +14,7 @@ mod otterscan; mod proof; mod pubsub; mod revert; +mod seismic; mod sign; mod state; mod traces; diff --git a/crates/anvil/tests/it/seismic.rs b/crates/anvil/tests/it/seismic.rs new file mode 100644 index 000000000..dc0fd9ae5 --- /dev/null +++ b/crates/anvil/tests/it/seismic.rs @@ -0,0 +1,147 @@ +use alloy_network::TransactionBuilder; +use alloy_primitives::{hex, Bytes, B256, U256}; +use alloy_provider::Provider; +use alloy_rlp::Encodable; +use alloy_rpc_types::TransactionRequest; +use alloy_serde::WithOtherFields; +use anvil::{spawn, NodeConfig}; +use anvil_core::eth::transaction::crypto; +use seismic_transaction::types::SeismicTransactionFields; +use std::fs; + +// common utils +pub const TEST_BYTECODE_PATH: &str = "/tests/it/seismic_test_bytecode.txt"; +pub const SET_NUMBER_SELECTOR: &str = "3fb5c1cb"; // setNumber(uint256) +pub const INCREMENT_SELECTOR: &str = "d09de08a"; // increment() +pub const GET_NUMBER_SELECTOR: &str = "f2c9ecd8"; // getNumber() + +/// Loads the bytecode from a file and returns it as a vector of bytes. +pub fn load_bytecode_from_file(file_path: &str) -> Vec { + let path = format!("{}{}", env!("CARGO_MANIFEST_DIR"), file_path); + let bytecode_str = fs::read_to_string(path).expect("Failed to read bytecode file"); + hex::decode(bytecode_str.trim()).expect("Failed to decode bytecode") +} + +/// Gets the input data for a given selector function and one B256 value +pub fn get_input_data(selector: &str, value: B256) -> Bytes { + let selector_bytes: Vec = hex::decode(&selector[0..8]).expect("Invalid selector"); + + // Convert value to bytes + let value_bytes: Bytes = value.into(); + + // Initialize the input data with the selector and value + let mut input_data = Vec::new(); + input_data.extend_from_slice(&selector_bytes); + input_data.extend_from_slice(&value_bytes); + + input_data.into() +} + +fn rlp_encode(plaintext: Bytes) -> Vec { + let mut out = Vec::new(); + plaintext.encode(&mut out); + out +} + +#[tokio::test(flavor = "multi_thread")] +async fn test_seismic_transaction() { + let (api, handle) = spawn(NodeConfig::test()).await; + let provider = handle.http_provider(); + let deployer = handle.dev_accounts().next().unwrap(); + + let bytecode = load_bytecode_from_file(TEST_BYTECODE_PATH); + + let deploy_tx = TransactionRequest::default().from(deployer).with_deploy_code(bytecode.clone()); + let deploy_tx = WithOtherFields::new(deploy_tx); + + let pending = provider.send_transaction(deploy_tx).await.unwrap(); + + // mine block + api.evm_mine(None).await.unwrap(); + + let receipt = + provider.get_transaction_receipt(pending.tx_hash().to_owned()).await.unwrap().unwrap(); + assert!(receipt.contract_address.is_some()); + + let accounts: Vec<_> = handle.dev_wallets().collect(); + + let from = accounts[0].address(); + let secret_key = crypto::secret_key(&accounts[0].to_bytes()); + + let to = receipt.contract_address.unwrap(); + + let encoded_setnumber_data = + rlp_encode(get_input_data(SET_NUMBER_SELECTOR, B256::from(U256::from(10)))); + let set_data = crypto::client_encrypt(&secret_key, &encoded_setnumber_data, 1).unwrap(); + + let tx = TransactionRequest::default() + .with_from(from) + .with_to(to) + .with_nonce(1) + .with_gas_limit(210000) + .with_chain_id(31337); + + let seismic_tx = WithOtherFields { + inner: tx, + other: SeismicTransactionFields { seismic_input: set_data.into() }.into(), + }; + + let pending_set = provider.send_transaction(seismic_tx).await.unwrap(); + + api.evm_mine(None).await.unwrap(); + + let receipt: Option< + WithOtherFields< + alloy_rpc_types::TransactionReceipt< + alloy_consensus::AnyReceiptEnvelope, + >, + >, + > = provider.get_transaction_receipt(pending_set.tx_hash().to_owned()).await.unwrap(); + assert!(receipt.is_some()); + + let encoded_increment_data = + rlp_encode(get_input_data(INCREMENT_SELECTOR, B256::from(U256::from(10)))); + let increment_data = crypto::client_encrypt(&secret_key, &encoded_increment_data, 2).unwrap(); + + let tx = TransactionRequest::default() + .with_from(from) + .with_to(to) + .with_nonce(2) + .with_gas_limit(210000) + .with_chain_id(31337); + + let seismic_tx = WithOtherFields { + inner: tx, + other: SeismicTransactionFields { seismic_input: increment_data.into() }.into(), + }; + + let pending_increment = provider.send_transaction(seismic_tx).await.unwrap(); + + api.evm_mine(None).await.unwrap(); + + let receipt = + provider.get_transaction_receipt(pending_increment.tx_hash().to_owned()).await.unwrap(); + assert!(receipt.is_some()); + + let encoded_getnumber_data = rlp_encode(hex::decode(GET_NUMBER_SELECTOR).unwrap().into()); + let get_data = crypto::client_encrypt(&secret_key, &encoded_getnumber_data, 3).unwrap(); + + let tx = TransactionRequest::default() + .with_from(from) + .with_to(to) + .with_nonce(3) + .with_gas_limit(210000) + .with_chain_id(31337); + + let seismic_tx = WithOtherFields { + inner: tx, + other: SeismicTransactionFields { seismic_input: get_data.into() }.into(), + }; + + let pending_get = provider.send_transaction(seismic_tx).await.unwrap(); + + api.evm_mine(None).await.unwrap(); + + let receipt = provider.get_transaction_receipt(pending_get.tx_hash().to_owned()).await.unwrap(); + assert!(receipt.is_some()); +} diff --git a/crates/anvil/tests/it/seismic_test_bytecode.txt b/crates/anvil/tests/it/seismic_test_bytecode.txt new file mode 100644 index 000000000..03a503f0a --- /dev/null +++ b/crates/anvil/tests/it/seismic_test_bytecode.txt @@ -0,0 +1 @@ +6080604052348015600f57600080fd5b5061010c8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060465760003560e01c80633fb5c1cb14604b5780638381f58a14605d578063d09de08a146077578063f2c9ecd814607d575b600080fd5b605b60563660046098565b600055565b005b606560005481565b60405190815260200160405180910390f35b605b6084565b6000546065565b60008054908060918360b0565b9190505550565b60006020828403121560a957600080fd5b5035919050565b60006001820160cf57634e487b7160e01b600052601160045260246000fd5b506001019056fea264697066735822122031f4ba31b88803e6c32f3c311cd7ba7ce05fcd03aa6408db00b5952c092ce21f64736f6c63430008190033 \ No newline at end of file diff --git a/crates/anvil/tests/it/utils.rs b/crates/anvil/tests/it/utils.rs index 368377513..7419d561d 100644 --- a/crates/anvil/tests/it/utils.rs +++ b/crates/anvil/tests/it/utils.rs @@ -31,14 +31,19 @@ pub async fn connect_pubsub(conn_str: &str) -> RootProvider { } use alloy_provider::{ - fillers::{ChainIdFiller, FillProvider, GasFiller, JoinFill, NonceFiller, WalletFiller}, + fillers::{ + BlobGasFiller, ChainIdFiller, FillProvider, GasFiller, JoinFill, NonceFiller, WalletFiller, + }, Identity, RootProvider, }; use alloy_transport::BoxTransport; type PubsubSigner = FillProvider< JoinFill< - JoinFill, NonceFiller>, ChainIdFiller>, + JoinFill< + Identity, + JoinFill>>, + >, WalletFiller, >, RootProvider, diff --git a/crates/common/src/provider/mod.rs b/crates/common/src/provider/mod.rs index 280c97e30..fe7fd4ccc 100644 --- a/crates/common/src/provider/mod.rs +++ b/crates/common/src/provider/mod.rs @@ -40,7 +40,16 @@ pub type RetryProvider = RootProvider = FillProvider< JoinFill< - JoinFill, NonceFiller>, ChainIdFiller>, + JoinFill< + Identity, + JoinFill< + GasFiller, + JoinFill< + alloy_provider::fillers::BlobGasFiller, + JoinFill, + >, + >, + >, WalletFiller, >, RootProvider, N>, @@ -273,7 +282,7 @@ impl ProviderBuilder { } /// Constructs the `RetryProvider` with a wallet. - pub fn build_with_wallet(self, _wallet: EthereumWallet) -> Result { + pub fn build_with_wallet(self, wallet: EthereumWallet) -> Result { let Self { url, chain, @@ -307,11 +316,9 @@ impl ProviderBuilder { ); } - // let provider = AlloyProviderBuilder::<_, _, AnyNetwork>::default() - // .with_recommended_fillers() - // .wallet(wallet) - // .on_provider(RootProvider::new(client)); let provider = AlloyProviderBuilder::<_, _, AnyNetwork>::default() + .with_recommended_fillers() + .wallet(wallet) .on_provider(RootProvider::new(client)); Ok(provider) diff --git a/crates/forge/tests/cli/config.rs b/crates/forge/tests/cli/config.rs index b597ce439..28b700a5a 100644 --- a/crates/forge/tests/cli/config.rs +++ b/crates/forge/tests/cli/config.rs @@ -152,6 +152,7 @@ forgetest!(can_extract_config_values, |prj, cmd| { alphanet: false, transaction_timeout: 120, _non_exhaustive: (), + seismic: true, }; prj.write_config(input.clone()); let config = cmd.config(); From b23ebf99377e9364a4bf7276b94196d275586aff Mon Sep 17 00:00:00 2001 From: cdrappi Date: Fri, 20 Dec 2024 10:49:36 -0500 Subject: [PATCH 017/130] christian upstream merge --- Cargo.lock | 272 +++++++++++++++++++++++++++-------------------------- Cargo.toml | 30 +++--- 2 files changed, 153 insertions(+), 149 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bcafb5e23..4c1808430 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -102,7 +102,7 @@ version = "0.1.49" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830045a4421ee38d3ab570d36d4d2b5152c066e72797139224da8de5d5981fd0" dependencies = [ - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.15", "num_enum", "serde", "strum 0.26.3", @@ -115,7 +115,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "629b62e38d471cc15fea534eb7283d2f8a4e8bdb1811bcc5d66dda6cfce6fae1" dependencies = [ "alloy-eips 0.3.6", - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.15", "alloy-rlp", "alloy-serde 0.3.6", "c-kzg", @@ -177,13 +177,13 @@ dependencies = [ [[package]] name = "alloy-dyn-abi" -version = "0.8.11" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=96d44f0#96d44f0e18b4bab5b58e0e7f2405514907734a95" +version = "0.8.14" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=d585650#d585650ea16bfdc94764be388ce0941875e1b3fe" dependencies = [ - "alloy-json-abi 0.8.11", - "alloy-primitives 0.8.11", - "alloy-sol-type-parser 0.8.11", - "alloy-sol-types 0.8.11", + "alloy-json-abi 0.8.14", + "alloy-primitives 0.8.14", + "alloy-sol-type-parser 0.8.14", + "alloy-sol-types 0.8.14", "arbitrary", "const-hex", "derive_arbitrary", @@ -219,7 +219,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0069cf0642457f87a01a014f6dc29d5d893cd4fd8fddf0c3cdfad1bb3ebafc41" dependencies = [ - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.15", "alloy-rlp", "arbitrary", "rand", @@ -232,7 +232,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea59dc42102bc9a1905dc57901edc6dd48b9f38115df86c7d252acba70d71d04" dependencies = [ - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.15", "alloy-rlp", "k256", "serde", @@ -244,7 +244,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c986539255fb839d1533c128e190e557e52ff652c9ef62939e233a81dd93f7e" dependencies = [ - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.15", "alloy-rlp", "arbitrary", "derive_more", @@ -261,7 +261,7 @@ checksum = "f923dd5fca5f67a43d81ed3ebad0880bd41f6dd0ada930030353ac356c54cd0f" dependencies = [ "alloy-eip2930", "alloy-eip7702 0.1.1", - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.15", "alloy-rlp", "alloy-serde 0.3.6", "c-kzg", @@ -303,11 +303,11 @@ dependencies = [ [[package]] name = "alloy-json-abi" -version = "0.8.11" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=96d44f0#96d44f0e18b4bab5b58e0e7f2405514907734a95" +version = "0.8.14" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=d585650#d585650ea16bfdc94764be388ce0941875e1b3fe" dependencies = [ - "alloy-primitives 0.8.11", - "alloy-sol-type-parser 0.8.11", + "alloy-primitives 0.8.14", + "alloy-sol-type-parser 0.8.14", "serde", "serde_json", ] @@ -370,7 +370,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94ad40869867ed2d9cd3842b1e800889e5b49e6b92da346e93862b4a741bedf3" dependencies = [ "alloy-eips 0.3.6", - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.15", "alloy-serde 0.3.6", "serde", ] @@ -407,8 +407,8 @@ dependencies = [ [[package]] name = "alloy-primitives" -version = "0.8.11" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=96d44f0#96d44f0e18b4bab5b58e0e7f2405514907734a95" +version = "0.8.14" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=d585650#d585650ea16bfdc94764be388ce0941875e1b3fe" dependencies = [ "alloy-rlp", "arbitrary", @@ -443,11 +443,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6259a506ab13e1d658796c31e6e39d2e2ee89243bcc505ddc613b35732e0a430" dependencies = [ "alloy-rlp", + "arbitrary", "bytes", "cfg-if", "const-hex", + "derive_arbitrary", "derive_more", "foldhash", + "getrandom", "hashbrown 0.15.2", "hex-literal", "indexmap 2.7.0", @@ -456,6 +459,7 @@ dependencies = [ "keccak-asm", "paste", "proptest", + "proptest-derive", "rand", "ruint", "rustc-hash", @@ -644,7 +648,7 @@ checksum = "1464c4dd646e1bdfde86ae65ce5ba168dbb29180b478011fe87117ae46b1629b" dependencies = [ "alloy-consensus 0.3.6", "alloy-eips 0.3.6", - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.15", "alloy-rlp", "alloy-serde 0.3.6", "derive_more", @@ -680,10 +684,10 @@ dependencies = [ "alloy-consensus 0.3.6", "alloy-eips 0.3.6", "alloy-network-primitives 0.3.6", - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.15", "alloy-rlp", "alloy-serde 0.3.6", - "alloy-sol-types 0.8.11", + "alloy-sol-types 0.8.15", "cfg-if", "derive_more", "hashbrown 0.14.5", @@ -718,7 +722,7 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98db35cd42c90b484377e6bc44d95377a7a38a5ebee996e67754ac0446d542ab" dependencies = [ - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.15", "alloy-rpc-types-eth 0.3.6", "alloy-serde 0.3.6", "serde", @@ -758,7 +762,7 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "731f75ec5d383107fd745d781619bd9cedf145836c51ecb991623d41278e71fa" dependencies = [ - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.15", "serde", "serde_json", ] @@ -884,11 +888,11 @@ dependencies = [ [[package]] name = "alloy-sol-macro" -version = "0.8.11" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=96d44f0#96d44f0e18b4bab5b58e0e7f2405514907734a95" +version = "0.8.14" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=d585650#d585650ea16bfdc94764be388ce0941875e1b3fe" dependencies = [ - "alloy-sol-macro-expander 0.8.11", - "alloy-sol-macro-input 0.8.11", + "alloy-sol-macro-expander 0.8.14", + "alloy-sol-macro-input 0.8.14", "proc-macro-error2", "proc-macro2", "quote", @@ -911,11 +915,11 @@ dependencies = [ [[package]] name = "alloy-sol-macro-expander" -version = "0.8.11" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=96d44f0#96d44f0e18b4bab5b58e0e7f2405514907734a95" +version = "0.8.14" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=d585650#d585650ea16bfdc94764be388ce0941875e1b3fe" dependencies = [ - "alloy-json-abi 0.8.11", - "alloy-sol-macro-input 0.8.11", + "alloy-json-abi 0.8.14", + "alloy-sol-macro-input 0.8.14", "const-hex", "heck 0.5.0", "indexmap 2.7.0", @@ -923,7 +927,7 @@ dependencies = [ "proc-macro2", "quote", "syn 2.0.90", - "syn-solidity 0.8.11", + "syn-solidity 0.8.14", "tiny-keccak", ] @@ -947,10 +951,10 @@ dependencies = [ [[package]] name = "alloy-sol-macro-input" -version = "0.8.11" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=96d44f0#96d44f0e18b4bab5b58e0e7f2405514907734a95" +version = "0.8.14" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=d585650#d585650ea16bfdc94764be388ce0941875e1b3fe" dependencies = [ - "alloy-json-abi 0.8.11", + "alloy-json-abi 0.8.14", "const-hex", "dunce", "heck 0.5.0", @@ -958,7 +962,7 @@ dependencies = [ "quote", "serde_json", "syn 2.0.90", - "syn-solidity 0.8.11", + "syn-solidity 0.8.14", ] [[package]] @@ -978,8 +982,8 @@ dependencies = [ [[package]] name = "alloy-sol-type-parser" -version = "0.8.11" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=96d44f0#96d44f0e18b4bab5b58e0e7f2405514907734a95" +version = "0.8.14" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=d585650#d585650ea16bfdc94764be388ce0941875e1b3fe" dependencies = [ "serde", "winnow", @@ -997,12 +1001,12 @@ dependencies = [ [[package]] name = "alloy-sol-types" -version = "0.8.11" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=96d44f0#96d44f0e18b4bab5b58e0e7f2405514907734a95" +version = "0.8.14" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=d585650#d585650ea16bfdc94764be388ce0941875e1b3fe" dependencies = [ - "alloy-json-abi 0.8.11", - "alloy-primitives 0.8.11", - "alloy-sol-macro 0.8.11", + "alloy-json-abi 0.8.14", + "alloy-primitives 0.8.14", + "alloy-sol-macro 0.8.14", "const-hex", "serde", ] @@ -1204,13 +1208,13 @@ dependencies = [ "alloy-chains", "alloy-consensus 0.8.3", "alloy-contract", - "alloy-dyn-abi 0.8.11", + "alloy-dyn-abi 0.8.14", "alloy-eips 0.8.3", "alloy-genesis", - "alloy-json-abi 0.8.11", + "alloy-json-abi 0.8.14", "alloy-json-rpc", "alloy-network", - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.14", "alloy-provider", "alloy-pubsub", "alloy-rlp", @@ -1219,7 +1223,7 @@ dependencies = [ "alloy-serde 0.8.3", "alloy-signer", "alloy-signer-local", - "alloy-sol-types 0.8.11", + "alloy-sol-types 0.8.14", "alloy-transport", "alloy-transport-ipc", "alloy-transport-ws", @@ -1272,10 +1276,10 @@ name = "anvil-core" version = "0.3.0" dependencies = [ "alloy-consensus 0.8.3", - "alloy-dyn-abi 0.8.11", + "alloy-dyn-abi 0.8.14", "alloy-eips 0.8.3", "alloy-network", - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.14", "alloy-rlp", "alloy-rpc-types 0.8.3", "alloy-serde 0.8.3", @@ -2306,19 +2310,19 @@ dependencies = [ "alloy-chains", "alloy-consensus 0.8.3", "alloy-contract", - "alloy-dyn-abi 0.8.11", - "alloy-json-abi 0.8.11", + "alloy-dyn-abi 0.8.14", + "alloy-json-abi 0.8.14", "alloy-json-rpc", "alloy-network", "alloy-node-bindings", - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.14", "alloy-provider", "alloy-rlp", "alloy-rpc-types 0.8.3", "alloy-serde 0.8.3", "alloy-signer", "alloy-signer-local", - "alloy-sol-types 0.8.11", + "alloy-sol-types 0.8.14", "alloy-transport", "anvil", "async-trait", @@ -2398,9 +2402,9 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" name = "chisel" version = "0.3.0" dependencies = [ - "alloy-dyn-abi 0.8.11", - "alloy-json-abi 0.8.11", - "alloy-primitives 0.8.11", + "alloy-dyn-abi 0.8.14", + "alloy-json-abi 0.8.14", + "alloy-primitives 0.8.14", "alloy-rpc-types 0.8.3", "clap", "dirs 5.0.1", @@ -3577,8 +3581,8 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c19906a94bb5656904a6c9c0f36d492cb1da96f284d59bb56f555bd472d96e51" dependencies = [ - "alloy-dyn-abi 0.8.11", - "alloy-primitives 0.8.11", + "alloy-dyn-abi 0.8.15", + "alloy-primitives 0.8.15", ] [[package]] @@ -3751,17 +3755,17 @@ version = "0.3.0" dependencies = [ "alloy-chains", "alloy-consensus 0.8.3", - "alloy-dyn-abi 0.8.11", - "alloy-json-abi 0.8.11", + "alloy-dyn-abi 0.8.14", + "alloy-json-abi 0.8.14", "alloy-network", - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.14", "alloy-provider", "alloy-rpc-types 0.8.3", "alloy-serde 0.8.3", "alloy-signer", "alloy-signer-local", - "alloy-sol-macro-expander 0.8.11", - "alloy-sol-macro-input 0.8.11", + "alloy-sol-macro-expander 0.8.14", + "alloy-sol-macro-input 0.8.14", "alloy-transport", "anvil", "async-trait", @@ -3842,7 +3846,7 @@ dependencies = [ name = "forge-doc" version = "0.3.0" dependencies = [ - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.14", "derive_more", "eyre", "forge-fmt", @@ -3865,7 +3869,7 @@ dependencies = [ name = "forge-fmt" version = "0.3.0" dependencies = [ - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.14", "ariadne", "foundry-config", "itertools 0.13.0", @@ -3883,11 +3887,11 @@ version = "0.3.0" dependencies = [ "alloy-chains", "alloy-consensus 0.8.3", - "alloy-dyn-abi 0.8.11", + "alloy-dyn-abi 0.8.14", "alloy-eips 0.8.3", - "alloy-json-abi 0.8.11", + "alloy-json-abi 0.8.14", "alloy-network", - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.14", "alloy-provider", "alloy-rpc-types 0.8.3", "alloy-serde 0.8.3", @@ -3927,7 +3931,7 @@ name = "forge-script-sequence" version = "0.3.0" dependencies = [ "alloy-network", - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.14", "alloy-rpc-types 0.8.3", "eyre", "foundry-common", @@ -3944,9 +3948,9 @@ dependencies = [ name = "forge-sol-macro-gen" version = "0.3.0" dependencies = [ - "alloy-json-abi 0.8.11", - "alloy-sol-macro-expander 0.8.11", - "alloy-sol-macro-input 0.8.11", + "alloy-json-abi 0.8.14", + "alloy-sol-macro-expander 0.8.14", + "alloy-sol-macro-input 0.8.14", "eyre", "foundry-common", "prettyplease", @@ -3960,9 +3964,9 @@ dependencies = [ name = "forge-verify" version = "0.3.0" dependencies = [ - "alloy-dyn-abi 0.8.11", - "alloy-json-abi 0.8.11", - "alloy-primitives 0.8.11", + "alloy-dyn-abi 0.8.14", + "alloy-json-abi 0.8.14", + "alloy-primitives 0.8.14", "alloy-provider", "alloy-rpc-types 0.8.3", "async-trait", @@ -4006,8 +4010,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0faa449506113b4969029da2ac1df3a1b3201bf10c99a4a8e6d684977b80c938" dependencies = [ "alloy-chains", - "alloy-json-abi 0.8.11", - "alloy-primitives 0.8.11", + "alloy-json-abi 0.8.15", + "alloy-primitives 0.8.15", "foundry-compilers", "reqwest", "semver 1.0.24", @@ -4022,17 +4026,17 @@ name = "foundry-cheatcodes" version = "0.3.0" dependencies = [ "alloy-consensus 0.8.3", - "alloy-dyn-abi 0.8.11", + "alloy-dyn-abi 0.8.14", "alloy-genesis", - "alloy-json-abi 0.8.11", + "alloy-json-abi 0.8.14", "alloy-network", - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.14", "alloy-provider", "alloy-rlp", "alloy-rpc-types 0.8.3", "alloy-signer", "alloy-signer-local", - "alloy-sol-types 0.8.11", + "alloy-sol-types 0.8.14", "base64 0.22.1", "chrono", "dialoguer", @@ -4070,7 +4074,7 @@ dependencies = [ name = "foundry-cheatcodes-spec" version = "0.3.0" dependencies = [ - "alloy-sol-types 0.8.11", + "alloy-sol-types 0.8.14", "foundry-macros", "schemars", "serde", @@ -4082,10 +4086,10 @@ name = "foundry-cli" version = "0.3.0" dependencies = [ "alloy-chains", - "alloy-dyn-abi 0.8.11", + "alloy-dyn-abi 0.8.14", "alloy-eips 0.8.3", - "alloy-json-abi 0.8.11", - "alloy-primitives 0.8.11", + "alloy-json-abi 0.8.14", + "alloy-primitives 0.8.14", "alloy-provider", "alloy-rlp", "alloy-transport", @@ -4122,18 +4126,18 @@ version = "0.3.0" dependencies = [ "alloy-consensus 0.8.3", "alloy-contract", - "alloy-dyn-abi 0.8.11", + "alloy-dyn-abi 0.8.14", "alloy-eips 0.8.3", - "alloy-json-abi 0.8.11", + "alloy-json-abi 0.8.14", "alloy-json-rpc", "alloy-network", - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.14", "alloy-provider", "alloy-pubsub", "alloy-rpc-client", "alloy-rpc-types 0.8.3", "alloy-serde 0.8.3", - "alloy-sol-types 0.8.11", + "alloy-sol-types 0.8.14", "alloy-transport", "alloy-transport-http", "alloy-transport-ipc", @@ -4172,9 +4176,9 @@ name = "foundry-common-fmt" version = "0.3.0" dependencies = [ "alloy-consensus 0.8.3", - "alloy-dyn-abi 0.8.11", + "alloy-dyn-abi 0.8.14", "alloy-network", - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.14", "alloy-rpc-types 0.8.3", "alloy-serde 0.8.3", "chrono", @@ -4193,8 +4197,8 @@ version = "0.12.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d817beee8c566a99f4267f25ff63d0de46c442948496ecef91ead56e3383090c" dependencies = [ - "alloy-json-abi 0.8.11", - "alloy-primitives 0.8.11", + "alloy-json-abi 0.8.15", + "alloy-primitives 0.8.15", "auto_impl", "derive_more", "dirs 5.0.1", @@ -4240,8 +4244,8 @@ version = "0.12.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44549c33e5a03408c8d40c36d764b7e84d261258ef481c19e4a612e609fdf8a4" dependencies = [ - "alloy-json-abi 0.8.11", - "alloy-primitives 0.8.11", + "alloy-json-abi 0.8.15", + "alloy-primitives 0.8.15", "foundry-compilers-core", "futures-util", "md-5", @@ -4264,8 +4268,8 @@ version = "0.12.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a438605ae74689752b2f717165daac15766f1b2a166d2095715d5f9407084b52" dependencies = [ - "alloy-json-abi 0.8.11", - "alloy-primitives 0.8.11", + "alloy-json-abi 0.8.15", + "alloy-primitives 0.8.15", "foundry-compilers-artifacts-solc", "foundry-compilers-core", "path-slash", @@ -4279,7 +4283,7 @@ version = "0.12.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04ac6d85c3e2d12585f8e698b12ed4880b02716ec7fde5d62de9a194e62f4e36" dependencies = [ - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.15", "cfg-if", "dunce", "fs_extra", @@ -4301,7 +4305,7 @@ version = "0.3.0" dependencies = [ "Inflector", "alloy-chains", - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.14", "dirs-next", "dunce", "eyre", @@ -4336,7 +4340,7 @@ dependencies = [ name = "foundry-debugger" version = "0.3.0" dependencies = [ - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.14", "crossterm", "eyre", "foundry-common", @@ -4354,10 +4358,10 @@ dependencies = [ name = "foundry-evm" version = "0.3.0" dependencies = [ - "alloy-dyn-abi 0.8.11", - "alloy-json-abi 0.8.11", - "alloy-primitives 0.8.11", - "alloy-sol-types 0.8.11", + "alloy-dyn-abi 0.8.14", + "alloy-json-abi 0.8.14", + "alloy-primitives 0.8.14", + "alloy-sol-types 0.8.14", "eyre", "foundry-cheatcodes", "foundry-common", @@ -4381,8 +4385,8 @@ dependencies = [ name = "foundry-evm-abi" version = "0.3.0" dependencies = [ - "alloy-primitives 0.8.11", - "alloy-sol-types 0.8.11", + "alloy-primitives 0.8.14", + "alloy-sol-types 0.8.14", "derive_more", "foundry-common-fmt", "foundry-macros", @@ -4395,14 +4399,14 @@ name = "foundry-evm-core" version = "0.3.0" dependencies = [ "alloy-consensus 0.8.3", - "alloy-dyn-abi 0.8.11", + "alloy-dyn-abi 0.8.14", "alloy-genesis", - "alloy-json-abi 0.8.11", + "alloy-json-abi 0.8.14", "alloy-network", - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.14", "alloy-provider", "alloy-rpc-types 0.8.3", - "alloy-sol-types 0.8.11", + "alloy-sol-types 0.8.14", "alloy-transport", "auto_impl", "eyre", @@ -4430,7 +4434,7 @@ dependencies = [ name = "foundry-evm-coverage" version = "0.3.0" dependencies = [ - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.14", "eyre", "foundry-common", "foundry-compilers", @@ -4446,9 +4450,9 @@ name = "foundry-evm-fuzz" version = "0.3.0" dependencies = [ "ahash", - "alloy-dyn-abi 0.8.11", - "alloy-json-abi 0.8.11", - "alloy-primitives 0.8.11", + "alloy-dyn-abi 0.8.14", + "alloy-json-abi 0.8.14", + "alloy-primitives 0.8.14", "eyre", "foundry-common", "foundry-compilers", @@ -4471,10 +4475,10 @@ dependencies = [ name = "foundry-evm-traces" version = "0.3.0" dependencies = [ - "alloy-dyn-abi 0.8.11", - "alloy-json-abi 0.8.11", - "alloy-primitives 0.8.11", - "alloy-sol-types 0.8.11", + "alloy-dyn-abi 0.8.14", + "alloy-json-abi 0.8.14", + "alloy-primitives 0.8.14", + "alloy-sol-types 0.8.14", "eyre", "foundry-block-explorers", "foundry-common", @@ -4502,7 +4506,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "491e9f9f138086b3627a8c406730dfbb6afcdcf688e6da0eb15df52f0c8ed163" dependencies = [ "alloy-consensus 0.8.3", - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.15", "alloy-provider", "alloy-rpc-types 0.8.3", "alloy-serde 0.8.3", @@ -4523,7 +4527,7 @@ dependencies = [ name = "foundry-linking" version = "0.3.0" dependencies = [ - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.14", "foundry-compilers", "semver 1.0.24", "thiserror 2.0.8", @@ -4543,7 +4547,7 @@ dependencies = [ name = "foundry-test-utils" version = "0.3.0" dependencies = [ - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.14", "alloy-provider", "eyre", "fd-lock", @@ -4567,16 +4571,16 @@ name = "foundry-wallets" version = "0.3.0" dependencies = [ "alloy-consensus 0.8.3", - "alloy-dyn-abi 0.8.11", + "alloy-dyn-abi 0.8.14", "alloy-network", - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.14", "alloy-signer", "alloy-signer-aws", "alloy-signer-gcp", "alloy-signer-ledger", "alloy-signer-local", "alloy-signer-trezor", - "alloy-sol-types 0.8.11", + "alloy-sol-types 0.8.14", "async-trait", "aws-config", "aws-sdk-kms", @@ -7911,7 +7915,7 @@ version = "18.0.0" source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=659ee7f#659ee7f4f77c3c92cc461293f0271eec4a3ee006" dependencies = [ "aes-gcm", - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.15", "alloy-rlp", "anyhow", "auto_impl", @@ -7935,9 +7939,9 @@ name = "revm-inspectors" version = "0.6.0" source = "git+ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git?rev=a77b988#a77b988b82486f521193f01231def7809a38e8b3" dependencies = [ - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.15", "alloy-rpc-types 0.3.6", - "alloy-sol-types 0.8.11", + "alloy-sol-types 0.8.15", "anstyle", "colorchoice", "revm 14.0.3", @@ -8010,7 +8014,7 @@ checksum = "6f1525851a03aff9a9d6a1d018b414d76252d6802ab54695b27093ecd7e7a101" dependencies = [ "alloy-eip2930", "alloy-eip7702 0.1.1", - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.15", "auto_impl", "bitflags 2.6.0", "bitvec", @@ -8029,7 +8033,7 @@ source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=659ee7f#6 dependencies = [ "alloy-eip2930", "alloy-eip7702 0.4.2", - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.15", "auto_impl", "bitflags 2.6.0", "bitvec", @@ -9011,7 +9015,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a5aeaf7a4bd326242c909bd287291226a540b62b36fa5824880248f4b1d4d6af" dependencies = [ - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.15", "bumpalo", "either", "num-bigint", @@ -9093,7 +9097,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b82c3659c15975cd80e5e1c44591278c230c59ad89082d797837499a4784e1b" dependencies = [ - "alloy-primitives 0.8.11", + "alloy-primitives 0.8.15", "bitflags 2.6.0", "bumpalo", "itertools 0.13.0", @@ -9349,8 +9353,8 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "0.8.11" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=96d44f0#96d44f0e18b4bab5b58e0e7f2405514907734a95" +version = "0.8.14" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=d585650#d585650ea16bfdc94764be388ce0941875e1b3fe" dependencies = [ "paste", "proc-macro2", diff --git a/Cargo.toml b/Cargo.toml index 06ddf4b94..7fa823665 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -210,13 +210,13 @@ alloy-node-bindings = { version = "0.8.0", default-features = false } alloy-network-primitives = { version = "0.8.0", default-features = false } ## alloy-core -alloy-dyn-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "96d44f0", features = ["seismic", "std"] } -alloy-json-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "96d44f0", features = ["seismic"] } -alloy-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "96d44f0", features = ["getrandom", "rand", "seismic"] } -alloy-sol-macro-expander = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "96d44f0", features = ["seismic"] } -alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "96d44f0", features = ["seismic"] } -alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "96d44f0", features = ["seismic"] } -syn-solidity = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "96d44f0", features = ["seismic"] } +alloy-dyn-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "d585650", features = ["seismic", "std"] } +alloy-json-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "d585650", features = ["seismic"] } +alloy-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "d585650", features = ["getrandom", "rand", "seismic"] } +alloy-sol-macro-expander = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "d585650", features = ["seismic"] } +alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "d585650", features = ["seismic"] } +alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "d585650", features = ["seismic"] } +syn-solidity = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "d585650", features = ["seismic"] } alloy-chains = "0.1" alloy-rlp = "0.3" @@ -305,11 +305,11 @@ revm-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git" foundry-fork-db = { git = "ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "0d2a25e" } # seismic-alloy-core -alloy-dyn-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "96d44f0" } -alloy-json-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "96d44f0" } -alloy-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "96d44f0" } -alloy-sol-macro = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "96d44f0" } -alloy-sol-macro-expander = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "96d44f0" } -alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "96d44f0" } -alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "96d44f0" } -alloy-sol-type-parser = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "96d44f0" } +alloy-dyn-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "d585650" } +alloy-json-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "d585650" } +alloy-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "d585650" } +alloy-sol-macro = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "d585650" } +alloy-sol-macro-expander = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "d585650" } +alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "d585650" } +alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "d585650" } +alloy-sol-type-parser = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "d585650" } From f37c6162e378ac456b47592c24f5aabc317dee97 Mon Sep 17 00:00:00 2001 From: cdrappi Date: Fri, 20 Dec 2024 10:54:48 -0500 Subject: [PATCH 018/130] update alloy --- Cargo.lock | 496 +++++++++++++++++++---------------------------------- Cargo.toml | 30 ++-- 2 files changed, 191 insertions(+), 335 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4c1808430..532cf30a6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -102,7 +102,7 @@ version = "0.1.49" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830045a4421ee38d3ab570d36d4d2b5152c066e72797139224da8de5d5981fd0" dependencies = [ - "alloy-primitives 0.8.15", + "alloy-primitives", "num_enum", "serde", "strum 0.26.3", @@ -115,7 +115,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "629b62e38d471cc15fea534eb7283d2f8a4e8bdb1811bcc5d66dda6cfce6fae1" dependencies = [ "alloy-eips 0.3.6", - "alloy-primitives 0.8.15", + "alloy-primitives", "alloy-rlp", "alloy-serde 0.3.6", "c-kzg", @@ -129,7 +129,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e88e1edea70787c33e11197d3f32ae380f3db19e6e061e539a5bcf8184a6b326" dependencies = [ "alloy-eips 0.8.3", - "alloy-primitives 0.8.15", + "alloy-primitives", "alloy-rlp", "alloy-serde 0.8.3", "alloy-trie", @@ -148,7 +148,7 @@ checksum = "57b1bb53f40c0273cd1975573cd457b39213e68584e36d1401d25fd0398a1d65" dependencies = [ "alloy-consensus 0.8.3", "alloy-eips 0.8.3", - "alloy-primitives 0.8.15", + "alloy-primitives", "alloy-rlp", "alloy-serde 0.8.3", "serde", @@ -160,15 +160,15 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b668c78c4b1f12f474ede5a85e8ce550d0aa1ef7d49fd1d22855a43b960e725" dependencies = [ - "alloy-dyn-abi 0.8.15", - "alloy-json-abi 0.8.15", + "alloy-dyn-abi", + "alloy-json-abi", "alloy-network", "alloy-network-primitives 0.8.3", - "alloy-primitives 0.8.15", + "alloy-primitives", "alloy-provider", "alloy-pubsub", "alloy-rpc-types-eth 0.8.3", - "alloy-sol-types 0.8.15", + "alloy-sol-types", "alloy-transport", "futures", "futures-util", @@ -177,13 +177,13 @@ dependencies = [ [[package]] name = "alloy-dyn-abi" -version = "0.8.14" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=d585650#d585650ea16bfdc94764be388ce0941875e1b3fe" +version = "0.8.15" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=a772c2e#a772c2edde6bedd31a29c9ff28ffc3d83860b9f2" dependencies = [ - "alloy-json-abi 0.8.14", - "alloy-primitives 0.8.14", - "alloy-sol-type-parser 0.8.14", - "alloy-sol-types 0.8.14", + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-type-parser", + "alloy-sol-types", "arbitrary", "const-hex", "derive_arbitrary", @@ -195,31 +195,13 @@ dependencies = [ "winnow", ] -[[package]] -name = "alloy-dyn-abi" -version = "0.8.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41056bde53ae10ffbbf11618efbe1e0290859e5eab0fe9ef82ebdb62f12a866f" -dependencies = [ - "alloy-json-abi 0.8.15", - "alloy-primitives 0.8.15", - "alloy-sol-type-parser 0.8.15", - "alloy-sol-types 0.8.15", - "const-hex", - "derive_more", - "itoa", - "serde", - "serde_json", - "winnow", -] - [[package]] name = "alloy-eip2930" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0069cf0642457f87a01a014f6dc29d5d893cd4fd8fddf0c3cdfad1bb3ebafc41" dependencies = [ - "alloy-primitives 0.8.15", + "alloy-primitives", "alloy-rlp", "arbitrary", "rand", @@ -232,7 +214,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea59dc42102bc9a1905dc57901edc6dd48b9f38115df86c7d252acba70d71d04" dependencies = [ - "alloy-primitives 0.8.15", + "alloy-primitives", "alloy-rlp", "k256", "serde", @@ -244,7 +226,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c986539255fb839d1533c128e190e557e52ff652c9ef62939e233a81dd93f7e" dependencies = [ - "alloy-primitives 0.8.15", + "alloy-primitives", "alloy-rlp", "arbitrary", "derive_more", @@ -261,7 +243,7 @@ checksum = "f923dd5fca5f67a43d81ed3ebad0880bd41f6dd0ada930030353ac356c54cd0f" dependencies = [ "alloy-eip2930", "alloy-eip7702 0.1.1", - "alloy-primitives 0.8.15", + "alloy-primitives", "alloy-rlp", "alloy-serde 0.3.6", "c-kzg", @@ -279,7 +261,7 @@ checksum = "5f9fadfe089e9ccc0650473f2d4ef0a28bc015bbca5631d9f0f09e49b557fdb3" dependencies = [ "alloy-eip2930", "alloy-eip7702 0.4.2", - "alloy-primitives 0.8.15", + "alloy-primitives", "alloy-rlp", "alloy-serde 0.8.3", "c-kzg", @@ -295,31 +277,19 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b2a4cf7b70f3495788e74ce1c765260ffe38820a2a774ff4aacb62e31ea73f9" dependencies = [ - "alloy-primitives 0.8.15", + "alloy-primitives", "alloy-serde 0.8.3", "alloy-trie", "serde", ] -[[package]] -name = "alloy-json-abi" -version = "0.8.14" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=d585650#d585650ea16bfdc94764be388ce0941875e1b3fe" -dependencies = [ - "alloy-primitives 0.8.14", - "alloy-sol-type-parser 0.8.14", - "serde", - "serde_json", -] - [[package]] name = "alloy-json-abi" version = "0.8.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c357da577dfb56998d01f574d81ad7a1958d248740a7981b205d69d65a7da404" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=a772c2e#a772c2edde6bedd31a29c9ff28ffc3d83860b9f2" dependencies = [ - "alloy-primitives 0.8.15", - "alloy-sol-type-parser 0.8.15", + "alloy-primitives", + "alloy-sol-type-parser", "serde", "serde_json", ] @@ -330,8 +300,8 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e29040b9d5fe2fb70415531882685b64f8efd08dfbd6cc907120650504821105" dependencies = [ - "alloy-primitives 0.8.15", - "alloy-sol-types 0.8.15", + "alloy-primitives", + "alloy-sol-types", "serde", "serde_json", "thiserror 2.0.8", @@ -349,12 +319,12 @@ dependencies = [ "alloy-eips 0.8.3", "alloy-json-rpc", "alloy-network-primitives 0.8.3", - "alloy-primitives 0.8.15", + "alloy-primitives", "alloy-rpc-types-any", "alloy-rpc-types-eth 0.8.3", "alloy-serde 0.8.3", "alloy-signer", - "alloy-sol-types 0.8.15", + "alloy-sol-types", "async-trait", "auto_impl", "futures-utils-wasm", @@ -370,7 +340,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94ad40869867ed2d9cd3842b1e800889e5b49e6b92da346e93862b4a741bedf3" dependencies = [ "alloy-eips 0.3.6", - "alloy-primitives 0.8.15", + "alloy-primitives", "alloy-serde 0.3.6", "serde", ] @@ -383,7 +353,7 @@ checksum = "9081c099e798b8a2bba2145eb82a9a146f01fc7a35e9ab6e7b43305051f97550" dependencies = [ "alloy-consensus 0.8.3", "alloy-eips 0.8.3", - "alloy-primitives 0.8.15", + "alloy-primitives", "alloy-serde 0.8.3", "serde", ] @@ -395,7 +365,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aef9849fb8bbb28f69f2cbdb4b0dac2f0e35c04f6078a00dfb8486469aed02de" dependencies = [ "alloy-genesis", - "alloy-primitives 0.8.15", + "alloy-primitives", "k256", "rand", "serde_json", @@ -405,42 +375,10 @@ dependencies = [ "url", ] -[[package]] -name = "alloy-primitives" -version = "0.8.14" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=d585650#d585650ea16bfdc94764be388ce0941875e1b3fe" -dependencies = [ - "alloy-rlp", - "arbitrary", - "bytes", - "cfg-if", - "const-hex", - "derive_arbitrary", - "derive_more", - "foldhash", - "getrandom", - "hashbrown 0.15.2", - "hex-literal", - "indexmap 2.7.0", - "itoa", - "k256", - "keccak-asm", - "paste", - "proptest", - "proptest-derive", - "rand", - "ruint", - "rustc-hash", - "serde", - "sha3", - "tiny-keccak", -] - [[package]] name = "alloy-primitives" version = "0.8.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6259a506ab13e1d658796c31e6e39d2e2ee89243bcc505ddc613b35732e0a430" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=a772c2e#a772c2edde6bedd31a29c9ff28ffc3d83860b9f2" dependencies = [ "alloy-rlp", "arbitrary", @@ -480,7 +418,7 @@ dependencies = [ "alloy-json-rpc", "alloy-network", "alloy-network-primitives 0.8.3", - "alloy-primitives 0.8.15", + "alloy-primitives", "alloy-pubsub", "alloy-rpc-client", "alloy-rpc-types-debug", @@ -518,7 +456,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "695809e743628d54510c294ad17a4645bd9f465aeb0d20ee9ce9877c9712dc9c" dependencies = [ "alloy-json-rpc", - "alloy-primitives 0.8.15", + "alloy-primitives", "alloy-transport", "bimap", "futures", @@ -559,7 +497,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "531137b283547d5b9a5cafc96b006c64ef76810c681d606f28be9781955293b6" dependencies = [ "alloy-json-rpc", - "alloy-primitives 0.8.15", + "alloy-primitives", "alloy-pubsub", "alloy-transport", "alloy-transport-http", @@ -597,7 +535,7 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3410a472ce26c457e9780f708ee6bd540b30f88f1f31fdab7a11d00bd6aa1aee" dependencies = [ - "alloy-primitives 0.8.15", + "alloy-primitives", "alloy-rpc-types-anvil", "alloy-rpc-types-engine 0.8.3", "alloy-rpc-types-eth 0.8.3", @@ -613,7 +551,7 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed06bd8a5fc57b352a6cbac24eec52a4760f08ae2c1eb56ac49c8ed4b02c351" dependencies = [ - "alloy-primitives 0.8.15", + "alloy-primitives", "alloy-rpc-types-eth 0.8.3", "alloy-serde 0.8.3", "serde", @@ -636,7 +574,7 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1dec1c1b65614ebd5834a7dfddf525a186962082023718e10f4f64ed2d02514" dependencies = [ - "alloy-primitives 0.8.15", + "alloy-primitives", "serde", ] @@ -648,7 +586,7 @@ checksum = "1464c4dd646e1bdfde86ae65ce5ba168dbb29180b478011fe87117ae46b1629b" dependencies = [ "alloy-consensus 0.3.6", "alloy-eips 0.3.6", - "alloy-primitives 0.8.15", + "alloy-primitives", "alloy-rlp", "alloy-serde 0.3.6", "derive_more", @@ -665,7 +603,7 @@ checksum = "03bd16fa4959255ebf4a7702df08f325e5631df5cdca07c8a8e58bdc10fe02e3" dependencies = [ "alloy-consensus 0.8.3", "alloy-eips 0.8.3", - "alloy-primitives 0.8.15", + "alloy-primitives", "alloy-rlp", "alloy-serde 0.8.3", "derive_more", @@ -684,10 +622,10 @@ dependencies = [ "alloy-consensus 0.3.6", "alloy-eips 0.3.6", "alloy-network-primitives 0.3.6", - "alloy-primitives 0.8.15", + "alloy-primitives", "alloy-rlp", "alloy-serde 0.3.6", - "alloy-sol-types 0.8.15", + "alloy-sol-types", "cfg-if", "derive_more", "hashbrown 0.14.5", @@ -706,10 +644,10 @@ dependencies = [ "alloy-consensus-any", "alloy-eips 0.8.3", "alloy-network-primitives 0.8.3", - "alloy-primitives 0.8.15", + "alloy-primitives", "alloy-rlp", "alloy-serde 0.8.3", - "alloy-sol-types 0.8.15", + "alloy-sol-types", "derive_more", "itertools 0.13.0", "serde", @@ -722,7 +660,7 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98db35cd42c90b484377e6bc44d95377a7a38a5ebee996e67754ac0446d542ab" dependencies = [ - "alloy-primitives 0.8.15", + "alloy-primitives", "alloy-rpc-types-eth 0.3.6", "alloy-serde 0.3.6", "serde", @@ -736,7 +674,7 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db14a83665cd28ffd01939f04c2adf0e0fd9bb648b73ca651dcaa0869dae027f" dependencies = [ - "alloy-primitives 0.8.15", + "alloy-primitives", "alloy-rpc-types-eth 0.8.3", "alloy-serde 0.8.3", "serde", @@ -750,7 +688,7 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0a574e97dff62097d22d6cd360f898f3d069239ca0ca7bfc2e5e7b22815ec572" dependencies = [ - "alloy-primitives 0.8.15", + "alloy-primitives", "alloy-rpc-types-eth 0.8.3", "alloy-serde 0.8.3", "serde", @@ -762,7 +700,7 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "731f75ec5d383107fd745d781619bd9cedf145836c51ecb991623d41278e71fa" dependencies = [ - "alloy-primitives 0.8.15", + "alloy-primitives", "serde", "serde_json", ] @@ -773,7 +711,7 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5851bf8d5ad33014bd0c45153c603303e730acc8a209450a7ae6b4a12c2789e2" dependencies = [ - "alloy-primitives 0.8.15", + "alloy-primitives", "serde", "serde_json", ] @@ -784,9 +722,9 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7e10ca565da6500cca015ba35ee424d59798f2e1b85bc0dd8f81dafd401f029a" dependencies = [ - "alloy-dyn-abi 0.8.15", - "alloy-primitives 0.8.15", - "alloy-sol-types 0.8.15", + "alloy-dyn-abi", + "alloy-primitives", + "alloy-sol-types", "async-trait", "auto_impl", "elliptic-curve", @@ -802,7 +740,7 @@ checksum = "1e774d4203ad7dbeba06876c8528a169b7cb56770bd900bc061e6a2c2756a736" dependencies = [ "alloy-consensus 0.8.3", "alloy-network", - "alloy-primitives 0.8.15", + "alloy-primitives", "alloy-signer", "async-trait", "aws-sdk-kms", @@ -820,7 +758,7 @@ checksum = "9843facd50077d2010ac0ef9e9176f8a06f2e2c8e653d83d82859803c623c6fc" dependencies = [ "alloy-consensus 0.8.3", "alloy-network", - "alloy-primitives 0.8.15", + "alloy-primitives", "alloy-signer", "async-trait", "gcloud-sdk", @@ -837,11 +775,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08367716d2eee6f15f0f7ee2e855decbfedd12be12fe5f490a2d2717deda95bf" dependencies = [ "alloy-consensus 0.8.3", - "alloy-dyn-abi 0.8.15", + "alloy-dyn-abi", "alloy-network", - "alloy-primitives 0.8.15", + "alloy-primitives", "alloy-signer", - "alloy-sol-types 0.8.15", + "alloy-sol-types", "async-trait", "coins-ledger", "futures-util", @@ -858,7 +796,7 @@ checksum = "47fababf5a745133490cde927d48e50267f97d3d1209b9fc9f1d1d666964d172" dependencies = [ "alloy-consensus 0.8.3", "alloy-network", - "alloy-primitives 0.8.15", + "alloy-primitives", "alloy-signer", "async-trait", "coins-bip32", @@ -877,7 +815,7 @@ checksum = "cfbd920ad5dc03e1904827d30fd2ed874968c33885e254b2c2f59503b33e4bb8" dependencies = [ "alloy-consensus 0.8.3", "alloy-network", - "alloy-primitives 0.8.15", + "alloy-primitives", "alloy-signer", "async-trait", "semver 1.0.24", @@ -886,58 +824,26 @@ dependencies = [ "trezor-client", ] -[[package]] -name = "alloy-sol-macro" -version = "0.8.14" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=d585650#d585650ea16bfdc94764be388ce0941875e1b3fe" -dependencies = [ - "alloy-sol-macro-expander 0.8.14", - "alloy-sol-macro-input 0.8.14", - "proc-macro-error2", - "proc-macro2", - "quote", - "syn 2.0.90", -] - [[package]] name = "alloy-sol-macro" version = "0.8.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9d64f851d95619233f74b310f12bcf16e0cbc27ee3762b6115c14a84809280a" -dependencies = [ - "alloy-sol-macro-expander 0.8.15", - "alloy-sol-macro-input 0.8.15", - "proc-macro-error2", - "proc-macro2", - "quote", - "syn 2.0.90", -] - -[[package]] -name = "alloy-sol-macro-expander" -version = "0.8.14" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=d585650#d585650ea16bfdc94764be388ce0941875e1b3fe" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=a772c2e#a772c2edde6bedd31a29c9ff28ffc3d83860b9f2" dependencies = [ - "alloy-json-abi 0.8.14", - "alloy-sol-macro-input 0.8.14", - "const-hex", - "heck 0.5.0", - "indexmap 2.7.0", + "alloy-sol-macro-expander", + "alloy-sol-macro-input", "proc-macro-error2", "proc-macro2", "quote", "syn 2.0.90", - "syn-solidity 0.8.14", - "tiny-keccak", ] [[package]] name = "alloy-sol-macro-expander" version = "0.8.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bf7ed1574b699f48bf17caab4e6e54c6d12bc3c006ab33d58b1e227c1c3559f" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=a772c2e#a772c2edde6bedd31a29c9ff28ffc3d83860b9f2" dependencies = [ - "alloy-sol-macro-input 0.8.15", + "alloy-json-abi", + "alloy-sol-macro-input", "const-hex", "heck 0.5.0", "indexmap 2.7.0", @@ -945,81 +851,43 @@ dependencies = [ "proc-macro2", "quote", "syn 2.0.90", - "syn-solidity 0.8.15", + "syn-solidity", "tiny-keccak", ] -[[package]] -name = "alloy-sol-macro-input" -version = "0.8.14" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=d585650#d585650ea16bfdc94764be388ce0941875e1b3fe" -dependencies = [ - "alloy-json-abi 0.8.14", - "const-hex", - "dunce", - "heck 0.5.0", - "proc-macro2", - "quote", - "serde_json", - "syn 2.0.90", - "syn-solidity 0.8.14", -] - [[package]] name = "alloy-sol-macro-input" version = "0.8.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c02997ccef5f34f9c099277d4145f183b422938ed5322dc57a089fe9b9ad9ee" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=a772c2e#a772c2edde6bedd31a29c9ff28ffc3d83860b9f2" dependencies = [ + "alloy-json-abi", "const-hex", "dunce", "heck 0.5.0", "proc-macro2", "quote", + "serde_json", "syn 2.0.90", - "syn-solidity 0.8.15", -] - -[[package]] -name = "alloy-sol-type-parser" -version = "0.8.14" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=d585650#d585650ea16bfdc94764be388ce0941875e1b3fe" -dependencies = [ - "serde", - "winnow", + "syn-solidity", ] [[package]] name = "alloy-sol-type-parser" version = "0.8.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce13ff37285b0870d0a0746992a4ae48efaf34b766ae4c2640fa15e5305f8e73" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=a772c2e#a772c2edde6bedd31a29c9ff28ffc3d83860b9f2" dependencies = [ "serde", "winnow", ] -[[package]] -name = "alloy-sol-types" -version = "0.8.14" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=d585650#d585650ea16bfdc94764be388ce0941875e1b3fe" -dependencies = [ - "alloy-json-abi 0.8.14", - "alloy-primitives 0.8.14", - "alloy-sol-macro 0.8.14", - "const-hex", - "serde", -] - [[package]] name = "alloy-sol-types" version = "0.8.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1174cafd6c6d810711b4e00383037bdb458efc4fe3dbafafa16567e0320c54d8" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=a772c2e#a772c2edde6bedd31a29c9ff28ffc3d83860b9f2" dependencies = [ - "alloy-json-abi 0.8.15", - "alloy-primitives 0.8.15", - "alloy-sol-macro 0.8.15", + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-macro", "const-hex", "serde", ] @@ -1104,7 +972,7 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a5fd8fea044cc9a8c8a50bb6f28e31f0385d820f116c5b98f6f4e55d6e5590b" dependencies = [ - "alloy-primitives 0.8.15", + "alloy-primitives", "alloy-rlp", "arrayvec", "derive_more", @@ -1208,13 +1076,13 @@ dependencies = [ "alloy-chains", "alloy-consensus 0.8.3", "alloy-contract", - "alloy-dyn-abi 0.8.14", + "alloy-dyn-abi", "alloy-eips 0.8.3", "alloy-genesis", - "alloy-json-abi 0.8.14", + "alloy-json-abi", "alloy-json-rpc", "alloy-network", - "alloy-primitives 0.8.14", + "alloy-primitives", "alloy-provider", "alloy-pubsub", "alloy-rlp", @@ -1223,7 +1091,7 @@ dependencies = [ "alloy-serde 0.8.3", "alloy-signer", "alloy-signer-local", - "alloy-sol-types 0.8.14", + "alloy-sol-types", "alloy-transport", "alloy-transport-ipc", "alloy-transport-ws", @@ -1276,10 +1144,10 @@ name = "anvil-core" version = "0.3.0" dependencies = [ "alloy-consensus 0.8.3", - "alloy-dyn-abi 0.8.14", + "alloy-dyn-abi", "alloy-eips 0.8.3", "alloy-network", - "alloy-primitives 0.8.14", + "alloy-primitives", "alloy-rlp", "alloy-rpc-types 0.8.3", "alloy-serde 0.8.3", @@ -2310,19 +2178,19 @@ dependencies = [ "alloy-chains", "alloy-consensus 0.8.3", "alloy-contract", - "alloy-dyn-abi 0.8.14", - "alloy-json-abi 0.8.14", + "alloy-dyn-abi", + "alloy-json-abi", "alloy-json-rpc", "alloy-network", "alloy-node-bindings", - "alloy-primitives 0.8.14", + "alloy-primitives", "alloy-provider", "alloy-rlp", "alloy-rpc-types 0.8.3", "alloy-serde 0.8.3", "alloy-signer", "alloy-signer-local", - "alloy-sol-types 0.8.14", + "alloy-sol-types", "alloy-transport", "anvil", "async-trait", @@ -2402,9 +2270,9 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" name = "chisel" version = "0.3.0" dependencies = [ - "alloy-dyn-abi 0.8.14", - "alloy-json-abi 0.8.14", - "alloy-primitives 0.8.14", + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-primitives", "alloy-rpc-types 0.8.3", "clap", "dirs 5.0.1", @@ -3581,8 +3449,8 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c19906a94bb5656904a6c9c0f36d492cb1da96f284d59bb56f555bd472d96e51" dependencies = [ - "alloy-dyn-abi 0.8.15", - "alloy-primitives 0.8.15", + "alloy-dyn-abi", + "alloy-primitives", ] [[package]] @@ -3755,17 +3623,17 @@ version = "0.3.0" dependencies = [ "alloy-chains", "alloy-consensus 0.8.3", - "alloy-dyn-abi 0.8.14", - "alloy-json-abi 0.8.14", + "alloy-dyn-abi", + "alloy-json-abi", "alloy-network", - "alloy-primitives 0.8.14", + "alloy-primitives", "alloy-provider", "alloy-rpc-types 0.8.3", "alloy-serde 0.8.3", "alloy-signer", "alloy-signer-local", - "alloy-sol-macro-expander 0.8.14", - "alloy-sol-macro-input 0.8.14", + "alloy-sol-macro-expander", + "alloy-sol-macro-input", "alloy-transport", "anvil", "async-trait", @@ -3846,7 +3714,7 @@ dependencies = [ name = "forge-doc" version = "0.3.0" dependencies = [ - "alloy-primitives 0.8.14", + "alloy-primitives", "derive_more", "eyre", "forge-fmt", @@ -3869,7 +3737,7 @@ dependencies = [ name = "forge-fmt" version = "0.3.0" dependencies = [ - "alloy-primitives 0.8.14", + "alloy-primitives", "ariadne", "foundry-config", "itertools 0.13.0", @@ -3887,11 +3755,11 @@ version = "0.3.0" dependencies = [ "alloy-chains", "alloy-consensus 0.8.3", - "alloy-dyn-abi 0.8.14", + "alloy-dyn-abi", "alloy-eips 0.8.3", - "alloy-json-abi 0.8.14", + "alloy-json-abi", "alloy-network", - "alloy-primitives 0.8.14", + "alloy-primitives", "alloy-provider", "alloy-rpc-types 0.8.3", "alloy-serde 0.8.3", @@ -3931,7 +3799,7 @@ name = "forge-script-sequence" version = "0.3.0" dependencies = [ "alloy-network", - "alloy-primitives 0.8.14", + "alloy-primitives", "alloy-rpc-types 0.8.3", "eyre", "foundry-common", @@ -3948,9 +3816,9 @@ dependencies = [ name = "forge-sol-macro-gen" version = "0.3.0" dependencies = [ - "alloy-json-abi 0.8.14", - "alloy-sol-macro-expander 0.8.14", - "alloy-sol-macro-input 0.8.14", + "alloy-json-abi", + "alloy-sol-macro-expander", + "alloy-sol-macro-input", "eyre", "foundry-common", "prettyplease", @@ -3964,9 +3832,9 @@ dependencies = [ name = "forge-verify" version = "0.3.0" dependencies = [ - "alloy-dyn-abi 0.8.14", - "alloy-json-abi 0.8.14", - "alloy-primitives 0.8.14", + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-primitives", "alloy-provider", "alloy-rpc-types 0.8.3", "async-trait", @@ -4010,8 +3878,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0faa449506113b4969029da2ac1df3a1b3201bf10c99a4a8e6d684977b80c938" dependencies = [ "alloy-chains", - "alloy-json-abi 0.8.15", - "alloy-primitives 0.8.15", + "alloy-json-abi", + "alloy-primitives", "foundry-compilers", "reqwest", "semver 1.0.24", @@ -4026,17 +3894,17 @@ name = "foundry-cheatcodes" version = "0.3.0" dependencies = [ "alloy-consensus 0.8.3", - "alloy-dyn-abi 0.8.14", + "alloy-dyn-abi", "alloy-genesis", - "alloy-json-abi 0.8.14", + "alloy-json-abi", "alloy-network", - "alloy-primitives 0.8.14", + "alloy-primitives", "alloy-provider", "alloy-rlp", "alloy-rpc-types 0.8.3", "alloy-signer", "alloy-signer-local", - "alloy-sol-types 0.8.14", + "alloy-sol-types", "base64 0.22.1", "chrono", "dialoguer", @@ -4074,7 +3942,7 @@ dependencies = [ name = "foundry-cheatcodes-spec" version = "0.3.0" dependencies = [ - "alloy-sol-types 0.8.14", + "alloy-sol-types", "foundry-macros", "schemars", "serde", @@ -4086,10 +3954,10 @@ name = "foundry-cli" version = "0.3.0" dependencies = [ "alloy-chains", - "alloy-dyn-abi 0.8.14", + "alloy-dyn-abi", "alloy-eips 0.8.3", - "alloy-json-abi 0.8.14", - "alloy-primitives 0.8.14", + "alloy-json-abi", + "alloy-primitives", "alloy-provider", "alloy-rlp", "alloy-transport", @@ -4126,18 +3994,18 @@ version = "0.3.0" dependencies = [ "alloy-consensus 0.8.3", "alloy-contract", - "alloy-dyn-abi 0.8.14", + "alloy-dyn-abi", "alloy-eips 0.8.3", - "alloy-json-abi 0.8.14", + "alloy-json-abi", "alloy-json-rpc", "alloy-network", - "alloy-primitives 0.8.14", + "alloy-primitives", "alloy-provider", "alloy-pubsub", "alloy-rpc-client", "alloy-rpc-types 0.8.3", "alloy-serde 0.8.3", - "alloy-sol-types 0.8.14", + "alloy-sol-types", "alloy-transport", "alloy-transport-http", "alloy-transport-ipc", @@ -4176,9 +4044,9 @@ name = "foundry-common-fmt" version = "0.3.0" dependencies = [ "alloy-consensus 0.8.3", - "alloy-dyn-abi 0.8.14", + "alloy-dyn-abi", "alloy-network", - "alloy-primitives 0.8.14", + "alloy-primitives", "alloy-rpc-types 0.8.3", "alloy-serde 0.8.3", "chrono", @@ -4197,8 +4065,8 @@ version = "0.12.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d817beee8c566a99f4267f25ff63d0de46c442948496ecef91ead56e3383090c" dependencies = [ - "alloy-json-abi 0.8.15", - "alloy-primitives 0.8.15", + "alloy-json-abi", + "alloy-primitives", "auto_impl", "derive_more", "dirs 5.0.1", @@ -4244,8 +4112,8 @@ version = "0.12.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44549c33e5a03408c8d40c36d764b7e84d261258ef481c19e4a612e609fdf8a4" dependencies = [ - "alloy-json-abi 0.8.15", - "alloy-primitives 0.8.15", + "alloy-json-abi", + "alloy-primitives", "foundry-compilers-core", "futures-util", "md-5", @@ -4268,8 +4136,8 @@ version = "0.12.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a438605ae74689752b2f717165daac15766f1b2a166d2095715d5f9407084b52" dependencies = [ - "alloy-json-abi 0.8.15", - "alloy-primitives 0.8.15", + "alloy-json-abi", + "alloy-primitives", "foundry-compilers-artifacts-solc", "foundry-compilers-core", "path-slash", @@ -4283,7 +4151,7 @@ version = "0.12.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04ac6d85c3e2d12585f8e698b12ed4880b02716ec7fde5d62de9a194e62f4e36" dependencies = [ - "alloy-primitives 0.8.15", + "alloy-primitives", "cfg-if", "dunce", "fs_extra", @@ -4305,7 +4173,7 @@ version = "0.3.0" dependencies = [ "Inflector", "alloy-chains", - "alloy-primitives 0.8.14", + "alloy-primitives", "dirs-next", "dunce", "eyre", @@ -4340,7 +4208,7 @@ dependencies = [ name = "foundry-debugger" version = "0.3.0" dependencies = [ - "alloy-primitives 0.8.14", + "alloy-primitives", "crossterm", "eyre", "foundry-common", @@ -4358,10 +4226,10 @@ dependencies = [ name = "foundry-evm" version = "0.3.0" dependencies = [ - "alloy-dyn-abi 0.8.14", - "alloy-json-abi 0.8.14", - "alloy-primitives 0.8.14", - "alloy-sol-types 0.8.14", + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-types", "eyre", "foundry-cheatcodes", "foundry-common", @@ -4385,8 +4253,8 @@ dependencies = [ name = "foundry-evm-abi" version = "0.3.0" dependencies = [ - "alloy-primitives 0.8.14", - "alloy-sol-types 0.8.14", + "alloy-primitives", + "alloy-sol-types", "derive_more", "foundry-common-fmt", "foundry-macros", @@ -4399,14 +4267,14 @@ name = "foundry-evm-core" version = "0.3.0" dependencies = [ "alloy-consensus 0.8.3", - "alloy-dyn-abi 0.8.14", + "alloy-dyn-abi", "alloy-genesis", - "alloy-json-abi 0.8.14", + "alloy-json-abi", "alloy-network", - "alloy-primitives 0.8.14", + "alloy-primitives", "alloy-provider", "alloy-rpc-types 0.8.3", - "alloy-sol-types 0.8.14", + "alloy-sol-types", "alloy-transport", "auto_impl", "eyre", @@ -4434,7 +4302,7 @@ dependencies = [ name = "foundry-evm-coverage" version = "0.3.0" dependencies = [ - "alloy-primitives 0.8.14", + "alloy-primitives", "eyre", "foundry-common", "foundry-compilers", @@ -4450,9 +4318,9 @@ name = "foundry-evm-fuzz" version = "0.3.0" dependencies = [ "ahash", - "alloy-dyn-abi 0.8.14", - "alloy-json-abi 0.8.14", - "alloy-primitives 0.8.14", + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-primitives", "eyre", "foundry-common", "foundry-compilers", @@ -4475,10 +4343,10 @@ dependencies = [ name = "foundry-evm-traces" version = "0.3.0" dependencies = [ - "alloy-dyn-abi 0.8.14", - "alloy-json-abi 0.8.14", - "alloy-primitives 0.8.14", - "alloy-sol-types 0.8.14", + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-types", "eyre", "foundry-block-explorers", "foundry-common", @@ -4506,7 +4374,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "491e9f9f138086b3627a8c406730dfbb6afcdcf688e6da0eb15df52f0c8ed163" dependencies = [ "alloy-consensus 0.8.3", - "alloy-primitives 0.8.15", + "alloy-primitives", "alloy-provider", "alloy-rpc-types 0.8.3", "alloy-serde 0.8.3", @@ -4527,7 +4395,7 @@ dependencies = [ name = "foundry-linking" version = "0.3.0" dependencies = [ - "alloy-primitives 0.8.14", + "alloy-primitives", "foundry-compilers", "semver 1.0.24", "thiserror 2.0.8", @@ -4547,7 +4415,7 @@ dependencies = [ name = "foundry-test-utils" version = "0.3.0" dependencies = [ - "alloy-primitives 0.8.14", + "alloy-primitives", "alloy-provider", "eyre", "fd-lock", @@ -4571,16 +4439,16 @@ name = "foundry-wallets" version = "0.3.0" dependencies = [ "alloy-consensus 0.8.3", - "alloy-dyn-abi 0.8.14", + "alloy-dyn-abi", "alloy-network", - "alloy-primitives 0.8.14", + "alloy-primitives", "alloy-signer", "alloy-signer-aws", "alloy-signer-gcp", "alloy-signer-ledger", "alloy-signer-local", "alloy-signer-trezor", - "alloy-sol-types 0.8.14", + "alloy-sol-types", "async-trait", "aws-config", "aws-sdk-kms", @@ -4605,9 +4473,9 @@ checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" [[package]] name = "fs4" -version = "0.9.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c6b3bd49c37d2aa3f3f2220233b29a7cd23f79d1fe70e5337d25fb390793de" +checksum = "c29c30684418547d476f0b48e84f4821639119c483b1eccd566c8cd0cd05f521" dependencies = [ "rustix", "windows-sys 0.52.0", @@ -5426,9 +5294,9 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.4" +version = "0.27.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6884a48c6826ec44f524c7456b163cebe9e55a18d7b5e307cb4f100371cc767" +checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" dependencies = [ "futures-util", "http 1.2.0", @@ -6765,7 +6633,7 @@ checksum = "c698f80ee53e56d1b60a97e9d90ad09788b516c964c9c97fb5927860b812ef0d" dependencies = [ "alloy-consensus 0.8.3", "alloy-eips 0.8.3", - "alloy-primitives 0.8.15", + "alloy-primitives", "alloy-rlp", "alloy-serde 0.8.3", "derive_more", @@ -6782,7 +6650,7 @@ dependencies = [ "alloy-consensus 0.8.3", "alloy-eips 0.8.3", "alloy-network-primitives 0.8.3", - "alloy-primitives 0.8.15", + "alloy-primitives", "alloy-rpc-types-eth 0.8.3", "alloy-serde 0.8.3", "derive_more", @@ -7858,7 +7726,7 @@ dependencies = [ "http-body 1.0.1", "http-body-util", "hyper 1.5.2", - "hyper-rustls 0.27.4", + "hyper-rustls 0.27.5", "hyper-tls", "hyper-util", "ipnet", @@ -7915,7 +7783,7 @@ version = "18.0.0" source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=659ee7f#659ee7f4f77c3c92cc461293f0271eec4a3ee006" dependencies = [ "aes-gcm", - "alloy-primitives 0.8.15", + "alloy-primitives", "alloy-rlp", "anyhow", "auto_impl", @@ -7939,9 +7807,9 @@ name = "revm-inspectors" version = "0.6.0" source = "git+ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git?rev=a77b988#a77b988b82486f521193f01231def7809a38e8b3" dependencies = [ - "alloy-primitives 0.8.15", + "alloy-primitives", "alloy-rpc-types 0.3.6", - "alloy-sol-types 0.8.15", + "alloy-sol-types", "anstyle", "colorchoice", "revm 14.0.3", @@ -8014,7 +7882,7 @@ checksum = "6f1525851a03aff9a9d6a1d018b414d76252d6802ab54695b27093ecd7e7a101" dependencies = [ "alloy-eip2930", "alloy-eip7702 0.1.1", - "alloy-primitives 0.8.15", + "alloy-primitives", "auto_impl", "bitflags 2.6.0", "bitvec", @@ -8033,7 +7901,7 @@ source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=659ee7f#6 dependencies = [ "alloy-eip2930", "alloy-eip7702 0.4.2", - "alloy-primitives 0.8.15", + "alloy-primitives", "auto_impl", "bitflags 2.6.0", "bitvec", @@ -9015,7 +8883,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a5aeaf7a4bd326242c909bd287291226a540b62b36fa5824880248f4b1d4d6af" dependencies = [ - "alloy-primitives 0.8.15", + "alloy-primitives", "bumpalo", "either", "num-bigint", @@ -9097,7 +8965,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b82c3659c15975cd80e5e1c44591278c230c59ad89082d797837499a4784e1b" dependencies = [ - "alloy-primitives 0.8.15", + "alloy-primitives", "bitflags 2.6.0", "bumpalo", "itertools 0.13.0", @@ -9298,9 +9166,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "svm-rs" -version = "0.5.7" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4aebac1b1ef2b46e2e2bdf3c09db304800f2a77c1fa902bd5231490203042be8" +checksum = "a1e9bc6b09b8a7a919128f8c029ae4048d83f814af557e948115273c75864acf" dependencies = [ "const-hex", "dirs 5.0.1", @@ -9311,16 +9179,16 @@ dependencies = [ "serde_json", "sha2", "tempfile", - "thiserror 1.0.69", + "thiserror 2.0.8", "url", "zip", ] [[package]] name = "svm-rs-builds" -version = "0.5.7" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2fa0f145894cb4d1c14446f08098ee5f21fc37ccbd1a7dd9dd355bbc806de3b" +checksum = "34d0964cd9dfcbf8bd21057c1a4aa293fefab208306461989ce723dd9c51e71e" dependencies = [ "build_const", "const-hex", @@ -9351,22 +9219,10 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "syn-solidity" -version = "0.8.14" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=d585650#d585650ea16bfdc94764be388ce0941875e1b3fe" -dependencies = [ - "paste", - "proc-macro2", - "quote", - "syn 2.0.90", -] - [[package]] name = "syn-solidity" version = "0.8.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "219389c1ebe89f8333df8bdfb871f6631c552ff399c23cac02480b6088aad8f0" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=a772c2e#a772c2edde6bedd31a29c9ff28ffc3d83860b9f2" dependencies = [ "paste", "proc-macro2", diff --git a/Cargo.toml b/Cargo.toml index 7fa823665..2064660cc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -210,13 +210,13 @@ alloy-node-bindings = { version = "0.8.0", default-features = false } alloy-network-primitives = { version = "0.8.0", default-features = false } ## alloy-core -alloy-dyn-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "d585650", features = ["seismic", "std"] } -alloy-json-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "d585650", features = ["seismic"] } -alloy-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "d585650", features = ["getrandom", "rand", "seismic"] } -alloy-sol-macro-expander = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "d585650", features = ["seismic"] } -alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "d585650", features = ["seismic"] } -alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "d585650", features = ["seismic"] } -syn-solidity = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "d585650", features = ["seismic"] } +alloy-dyn-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a772c2e", features = ["seismic", "std"] } +alloy-json-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a772c2e", features = ["seismic"] } +alloy-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a772c2e", features = ["getrandom", "rand", "seismic"] } +alloy-sol-macro-expander = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a772c2e", features = ["seismic"] } +alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a772c2e", features = ["seismic"] } +alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a772c2e", features = ["seismic"] } +syn-solidity = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a772c2e", features = ["seismic"] } alloy-chains = "0.1" alloy-rlp = "0.3" @@ -305,11 +305,11 @@ revm-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git" foundry-fork-db = { git = "ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "0d2a25e" } # seismic-alloy-core -alloy-dyn-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "d585650" } -alloy-json-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "d585650" } -alloy-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "d585650" } -alloy-sol-macro = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "d585650" } -alloy-sol-macro-expander = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "d585650" } -alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "d585650" } -alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "d585650" } -alloy-sol-type-parser = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "d585650" } +alloy-dyn-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a772c2e" } +alloy-json-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a772c2e" } +alloy-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a772c2e" } +alloy-sol-macro = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a772c2e" } +alloy-sol-macro-expander = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a772c2e" } +alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a772c2e" } +alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a772c2e" } +alloy-sol-type-parser = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a772c2e" } From 892bd507c8a721ba2968b9b911189e3109b5a147 Mon Sep 17 00:00:00 2001 From: cdrappi Date: Fri, 20 Dec 2024 11:29:24 -0500 Subject: [PATCH 019/130] upgrade seismic foundry fork db --- Cargo.lock | 8 +------- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 532cf30a6..1cbe80f9f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4370,8 +4370,7 @@ dependencies = [ [[package]] name = "foundry-fork-db" version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "491e9f9f138086b3627a8c406730dfbb6afcdcf688e6da0eb15df52f0c8ed163" +source = "git+ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git?rev=ad124ad2#ad124ad28c6b08ebf0ae448bf33cd3d11bcc5b19" dependencies = [ "alloy-consensus 0.8.3", "alloy-primitives", @@ -10944,8 +10943,3 @@ dependencies = [ "once_cell", "simd-adler32", ] - -[[patch.unused]] -name = "foundry-fork-db" -version = "0.3.1" -source = "git+ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git?rev=0d2a25e#0d2a25ed60758eb6a1caa897e608ec432ad338c7" diff --git a/Cargo.toml b/Cargo.toml index 2064660cc..ce0bc9209 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -302,7 +302,7 @@ yansi = { version = "1.0", features = ["detect-tty", "detect-env"] } revm = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "659ee7f" } revm-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "659ee7f" } -foundry-fork-db = { git = "ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "0d2a25e" } +foundry-fork-db = { git = "ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "ad124ad2" } # seismic-alloy-core alloy-dyn-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a772c2e" } From 02eb4620e0fea3cef83343ad30155c8b4acd8464 Mon Sep 17 00:00:00 2001 From: cdrappi Date: Fri, 20 Dec 2024 12:52:03 -0500 Subject: [PATCH 020/130] finally builds no errors --- Cargo.lock | 725 ++++---------------- Cargo.toml | 12 +- crates/anvil/src/eth/api.rs | 2 + crates/anvil/src/eth/backend/db.rs | 5 +- crates/anvil/src/eth/backend/mem/mod.rs | 6 +- crates/anvil/src/eth/backend/mem/storage.rs | 1 - crates/cast/bin/tx.rs | 2 +- crates/cheatcodes/src/inspector.rs | 6 +- crates/common/src/provider/mod.rs | 8 +- crates/evm/core/src/backend/mod.rs | 2 +- crates/evm/core/src/fork/database.rs | 6 +- crates/forge/tests/cli/config.rs | 1 + 12 files changed, 168 insertions(+), 608 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1cbe80f9f..7cd38c912 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -33,16 +33,6 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" -[[package]] -name = "aead" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" -dependencies = [ - "crypto-common", - "generic-array", -] - [[package]] name = "aes" version = "0.8.4" @@ -54,20 +44,6 @@ dependencies = [ "cpufeatures", ] -[[package]] -name = "aes-gcm" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" -dependencies = [ - "aead", - "aes", - "cipher", - "ctr", - "ghash", - "subtle", -] - [[package]] name = "ahash" version = "0.8.11" @@ -105,21 +81,7 @@ dependencies = [ "alloy-primitives", "num_enum", "serde", - "strum 0.26.3", -] - -[[package]] -name = "alloy-consensus" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "629b62e38d471cc15fea534eb7283d2f8a4e8bdb1811bcc5d66dda6cfce6fae1" -dependencies = [ - "alloy-eips 0.3.6", - "alloy-primitives", - "alloy-rlp", - "alloy-serde 0.3.6", - "c-kzg", - "serde", + "strum", ] [[package]] @@ -128,10 +90,10 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e88e1edea70787c33e11197d3f32ae380f3db19e6e061e539a5bcf8184a6b326" dependencies = [ - "alloy-eips 0.8.3", + "alloy-eips", "alloy-primitives", "alloy-rlp", - "alloy-serde 0.8.3", + "alloy-serde", "alloy-trie", "auto_impl", "c-kzg", @@ -146,11 +108,11 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57b1bb53f40c0273cd1975573cd457b39213e68584e36d1401d25fd0398a1d65" dependencies = [ - "alloy-consensus 0.8.3", - "alloy-eips 0.8.3", + "alloy-consensus", + "alloy-eips", "alloy-primitives", "alloy-rlp", - "alloy-serde 0.8.3", + "alloy-serde", "serde", ] @@ -163,11 +125,11 @@ dependencies = [ "alloy-dyn-abi", "alloy-json-abi", "alloy-network", - "alloy-network-primitives 0.8.3", + "alloy-network-primitives", "alloy-primitives", "alloy-provider", "alloy-pubsub", - "alloy-rpc-types-eth 0.8.3", + "alloy-rpc-types-eth", "alloy-sol-types", "alloy-transport", "futures", @@ -208,18 +170,6 @@ dependencies = [ "serde", ] -[[package]] -name = "alloy-eip7702" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea59dc42102bc9a1905dc57901edc6dd48b9f38115df86c7d252acba70d71d04" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "k256", - "serde", -] - [[package]] name = "alloy-eip7702" version = "0.4.2" @@ -235,24 +185,6 @@ dependencies = [ "serde", ] -[[package]] -name = "alloy-eips" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f923dd5fca5f67a43d81ed3ebad0880bd41f6dd0ada930030353ac356c54cd0f" -dependencies = [ - "alloy-eip2930", - "alloy-eip7702 0.1.1", - "alloy-primitives", - "alloy-rlp", - "alloy-serde 0.3.6", - "c-kzg", - "derive_more", - "once_cell", - "serde", - "sha2", -] - [[package]] name = "alloy-eips" version = "0.8.3" @@ -260,10 +192,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f9fadfe089e9ccc0650473f2d4ef0a28bc015bbca5631d9f0f09e49b557fdb3" dependencies = [ "alloy-eip2930", - "alloy-eip7702 0.4.2", + "alloy-eip7702", "alloy-primitives", "alloy-rlp", - "alloy-serde 0.8.3", + "alloy-serde", "c-kzg", "derive_more", "once_cell", @@ -278,7 +210,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b2a4cf7b70f3495788e74ce1c765260ffe38820a2a774ff4aacb62e31ea73f9" dependencies = [ "alloy-primitives", - "alloy-serde 0.8.3", + "alloy-serde", "alloy-trie", "serde", ] @@ -314,15 +246,15 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "510cc00b318db0dfccfdd2d032411cfae64fc144aef9679409e014145d3dacc4" dependencies = [ - "alloy-consensus 0.8.3", + "alloy-consensus", "alloy-consensus-any", - "alloy-eips 0.8.3", + "alloy-eips", "alloy-json-rpc", - "alloy-network-primitives 0.8.3", + "alloy-network-primitives", "alloy-primitives", "alloy-rpc-types-any", - "alloy-rpc-types-eth 0.8.3", - "alloy-serde 0.8.3", + "alloy-rpc-types-eth", + "alloy-serde", "alloy-signer", "alloy-sol-types", "async-trait", @@ -333,28 +265,16 @@ dependencies = [ "thiserror 2.0.8", ] -[[package]] -name = "alloy-network-primitives" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94ad40869867ed2d9cd3842b1e800889e5b49e6b92da346e93862b4a741bedf3" -dependencies = [ - "alloy-eips 0.3.6", - "alloy-primitives", - "alloy-serde 0.3.6", - "serde", -] - [[package]] name = "alloy-network-primitives" version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9081c099e798b8a2bba2145eb82a9a146f01fc7a35e9ab6e7b43305051f97550" dependencies = [ - "alloy-consensus 0.8.3", - "alloy-eips 0.8.3", + "alloy-consensus", + "alloy-eips", "alloy-primitives", - "alloy-serde 0.8.3", + "alloy-serde", "serde", ] @@ -413,17 +333,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc2dfaddd9a30aa870a78a4e1316e3e115ec1e12e552cbc881310456b85c1f24" dependencies = [ "alloy-chains", - "alloy-consensus 0.8.3", - "alloy-eips 0.8.3", + "alloy-consensus", + "alloy-eips", "alloy-json-rpc", "alloy-network", - "alloy-network-primitives 0.8.3", + "alloy-network-primitives", "alloy-primitives", "alloy-pubsub", "alloy-rpc-client", "alloy-rpc-types-debug", - "alloy-rpc-types-eth 0.8.3", - "alloy-rpc-types-trace 0.8.3", + "alloy-rpc-types-eth", + "alloy-rpc-types-trace", "alloy-rpc-types-txpool", "alloy-transport", "alloy-transport-http", @@ -516,19 +436,6 @@ dependencies = [ "wasmtimer", ] -[[package]] -name = "alloy-rpc-types" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64333d639f2a0cf73491813c629a405744e16343a4bc5640931be707c345ecc5" -dependencies = [ - "alloy-rpc-types-engine 0.3.6", - "alloy-rpc-types-eth 0.3.6", - "alloy-rpc-types-trace 0.3.6", - "alloy-serde 0.3.6", - "serde", -] - [[package]] name = "alloy-rpc-types" version = "0.8.3" @@ -537,11 +444,11 @@ checksum = "3410a472ce26c457e9780f708ee6bd540b30f88f1f31fdab7a11d00bd6aa1aee" dependencies = [ "alloy-primitives", "alloy-rpc-types-anvil", - "alloy-rpc-types-engine 0.8.3", - "alloy-rpc-types-eth 0.8.3", - "alloy-rpc-types-trace 0.8.3", + "alloy-rpc-types-engine", + "alloy-rpc-types-eth", + "alloy-rpc-types-trace", "alloy-rpc-types-txpool", - "alloy-serde 0.8.3", + "alloy-serde", "serde", ] @@ -552,8 +459,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed06bd8a5fc57b352a6cbac24eec52a4760f08ae2c1eb56ac49c8ed4b02c351" dependencies = [ "alloy-primitives", - "alloy-rpc-types-eth 0.8.3", - "alloy-serde 0.8.3", + "alloy-rpc-types-eth", + "alloy-serde", "serde", ] @@ -564,8 +471,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed98e1af55a7d856bfa385f30f63d8d56be2513593655c904a8f4a7ec963aa3e" dependencies = [ "alloy-consensus-any", - "alloy-rpc-types-eth 0.8.3", - "alloy-serde 0.8.3", + "alloy-rpc-types-eth", + "alloy-serde", ] [[package]] @@ -578,60 +485,22 @@ dependencies = [ "serde", ] -[[package]] -name = "alloy-rpc-types-engine" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1464c4dd646e1bdfde86ae65ce5ba168dbb29180b478011fe87117ae46b1629b" -dependencies = [ - "alloy-consensus 0.3.6", - "alloy-eips 0.3.6", - "alloy-primitives", - "alloy-rlp", - "alloy-serde 0.3.6", - "derive_more", - "jsonwebtoken", - "rand", - "serde", -] - [[package]] name = "alloy-rpc-types-engine" version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03bd16fa4959255ebf4a7702df08f325e5631df5cdca07c8a8e58bdc10fe02e3" dependencies = [ - "alloy-consensus 0.8.3", - "alloy-eips 0.8.3", + "alloy-consensus", + "alloy-eips", "alloy-primitives", "alloy-rlp", - "alloy-serde 0.8.3", + "alloy-serde", "derive_more", "jsonwebtoken", "rand", "serde", - "strum 0.26.3", -] - -[[package]] -name = "alloy-rpc-types-eth" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83aa984386deda02482660aa31cb8ca1e63d533f1c31a52d7d181ac5ec68e9b8" -dependencies = [ - "alloy-consensus 0.3.6", - "alloy-eips 0.3.6", - "alloy-network-primitives 0.3.6", - "alloy-primitives", - "alloy-rlp", - "alloy-serde 0.3.6", - "alloy-sol-types", - "cfg-if", - "derive_more", - "hashbrown 0.14.5", - "itertools 0.13.0", - "serde", - "serde_json", + "strum", ] [[package]] @@ -640,13 +509,13 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8737d7a6e37ca7bba9c23e9495c6534caec6760eb24abc9d5ffbaaba147818e1" dependencies = [ - "alloy-consensus 0.8.3", + "alloy-consensus", "alloy-consensus-any", - "alloy-eips 0.8.3", - "alloy-network-primitives 0.8.3", + "alloy-eips", + "alloy-network-primitives", "alloy-primitives", "alloy-rlp", - "alloy-serde 0.8.3", + "alloy-serde", "alloy-sol-types", "derive_more", "itertools 0.13.0", @@ -654,20 +523,6 @@ dependencies = [ "serde_json", ] -[[package]] -name = "alloy-rpc-types-trace" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98db35cd42c90b484377e6bc44d95377a7a38a5ebee996e67754ac0446d542ab" -dependencies = [ - "alloy-primitives", - "alloy-rpc-types-eth 0.3.6", - "alloy-serde 0.3.6", - "serde", - "serde_json", - "thiserror 1.0.69", -] - [[package]] name = "alloy-rpc-types-trace" version = "0.8.3" @@ -675,8 +530,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db14a83665cd28ffd01939f04c2adf0e0fd9bb648b73ca651dcaa0869dae027f" dependencies = [ "alloy-primitives", - "alloy-rpc-types-eth 0.8.3", - "alloy-serde 0.8.3", + "alloy-rpc-types-eth", + "alloy-serde", "serde", "serde_json", "thiserror 2.0.8", @@ -689,22 +544,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0a574e97dff62097d22d6cd360f898f3d069239ca0ca7bfc2e5e7b22815ec572" dependencies = [ "alloy-primitives", - "alloy-rpc-types-eth 0.8.3", - "alloy-serde 0.8.3", + "alloy-rpc-types-eth", + "alloy-serde", "serde", ] -[[package]] -name = "alloy-serde" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "731f75ec5d383107fd745d781619bd9cedf145836c51ecb991623d41278e71fa" -dependencies = [ - "alloy-primitives", - "serde", - "serde_json", -] - [[package]] name = "alloy-serde" version = "0.8.3" @@ -738,7 +582,7 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e774d4203ad7dbeba06876c8528a169b7cb56770bd900bc061e6a2c2756a736" dependencies = [ - "alloy-consensus 0.8.3", + "alloy-consensus", "alloy-network", "alloy-primitives", "alloy-signer", @@ -756,7 +600,7 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9843facd50077d2010ac0ef9e9176f8a06f2e2c8e653d83d82859803c623c6fc" dependencies = [ - "alloy-consensus 0.8.3", + "alloy-consensus", "alloy-network", "alloy-primitives", "alloy-signer", @@ -774,7 +618,7 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08367716d2eee6f15f0f7ee2e855decbfedd12be12fe5f490a2d2717deda95bf" dependencies = [ - "alloy-consensus 0.8.3", + "alloy-consensus", "alloy-dyn-abi", "alloy-network", "alloy-primitives", @@ -794,7 +638,7 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "47fababf5a745133490cde927d48e50267f97d3d1209b9fc9f1d1d666964d172" dependencies = [ - "alloy-consensus 0.8.3", + "alloy-consensus", "alloy-network", "alloy-primitives", "alloy-signer", @@ -813,7 +657,7 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfbd920ad5dc03e1904827d30fd2ed874968c33885e254b2c2f59503b33e4bb8" dependencies = [ - "alloy-consensus 0.8.3", + "alloy-consensus", "alloy-network", "alloy-primitives", "alloy-signer", @@ -845,7 +689,7 @@ dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", "const-hex", - "heck 0.5.0", + "heck", "indexmap 2.7.0", "proc-macro-error2", "proc-macro2", @@ -863,7 +707,7 @@ dependencies = [ "alloy-json-abi", "const-hex", "dunce", - "heck 0.5.0", + "heck", "proc-macro2", "quote", "serde_json", @@ -1074,10 +918,10 @@ name = "anvil" version = "0.3.0" dependencies = [ "alloy-chains", - "alloy-consensus 0.8.3", + "alloy-consensus", "alloy-contract", "alloy-dyn-abi", - "alloy-eips 0.8.3", + "alloy-eips", "alloy-genesis", "alloy-json-abi", "alloy-json-rpc", @@ -1087,8 +931,8 @@ dependencies = [ "alloy-pubsub", "alloy-rlp", "alloy-rpc-client", - "alloy-rpc-types 0.8.3", - "alloy-serde 0.8.3", + "alloy-rpc-types", + "alloy-serde", "alloy-signer", "alloy-signer-local", "alloy-sol-types", @@ -1123,7 +967,7 @@ dependencies = [ "op-alloy-rpc-types", "parking_lot", "rand", - "revm 18.0.0", + "revm", "serde", "serde_json", "serde_repr", @@ -1143,21 +987,21 @@ dependencies = [ name = "anvil-core" version = "0.3.0" dependencies = [ - "alloy-consensus 0.8.3", + "alloy-consensus", "alloy-dyn-abi", - "alloy-eips 0.8.3", + "alloy-eips", "alloy-network", "alloy-primitives", "alloy-rlp", - "alloy-rpc-types 0.8.3", - "alloy-serde 0.8.3", + "alloy-rpc-types", + "alloy-serde", "alloy-trie", "bytes", "foundry-common", "foundry-evm", "op-alloy-consensus", "rand", - "revm 18.0.0", + "revm", "serde", "serde_json", "thiserror 2.0.8", @@ -1341,12 +1185,6 @@ dependencies = [ "rand", ] -[[package]] -name = "arrayref" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" - [[package]] name = "arrayvec" version = "0.7.6" @@ -1928,15 +1766,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 = "bit-set" version = "0.5.3" @@ -2176,7 +2005,7 @@ name = "cast" version = "0.3.0" dependencies = [ "alloy-chains", - "alloy-consensus 0.8.3", + "alloy-consensus", "alloy-contract", "alloy-dyn-abi", "alloy-json-abi", @@ -2186,8 +2015,8 @@ dependencies = [ "alloy-primitives", "alloy-provider", "alloy-rlp", - "alloy-rpc-types 0.8.3", - "alloy-serde 0.8.3", + "alloy-rpc-types", + "alloy-serde", "alloy-signer", "alloy-signer-local", "alloy-sol-types", @@ -2273,7 +2102,7 @@ dependencies = [ "alloy-dyn-abi", "alloy-json-abi", "alloy-primitives", - "alloy-rpc-types 0.8.3", + "alloy-rpc-types", "clap", "dirs 5.0.1", "eyre", @@ -2286,7 +2115,7 @@ dependencies = [ "foundry-evm", "regex", "reqwest", - "revm 18.0.0", + "revm", "rustyline", "semver 1.0.24", "serde", @@ -2294,7 +2123,7 @@ dependencies = [ "serial_test", "solang-parser", "solar-parse", - "strum 0.26.3", + "strum", "tikv-jemallocator", "time", "tokio", @@ -2404,7 +2233,7 @@ version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", "syn 2.0.90", @@ -2566,8 +2395,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24f165e7b643266ea80cb858aed492ad9280e3e05ce24d4a99d7d7b889b6a4d9" dependencies = [ "crossterm", - "strum 0.26.3", - "strum_macros 0.26.4", + "strum", + "strum_macros", "unicode-width 0.2.0", ] @@ -2779,7 +2608,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ "generic-array", - "rand_core", "typenum", ] @@ -2802,33 +2630,6 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "curve25519-dalek" -version = "4.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" -dependencies = [ - "cfg-if", - "cpufeatures", - "curve25519-dalek-derive", - "digest 0.10.7", - "fiat-crypto", - "rustc_version 0.4.1", - "subtle", - "zeroize", -] - -[[package]] -name = "curve25519-dalek-derive" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.90", -] - [[package]] name = "darling" version = "0.20.10" @@ -3257,9 +3058,9 @@ dependencies = [ [[package]] name = "env_filter" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" +checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0" dependencies = [ "log", "regex", @@ -3267,9 +3068,9 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.5" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d" +checksum = "dcaee3d8e3cfc3fd92428d477bc97fc29ec8716d180c0d74c643bb26166660e0" dependencies = [ "anstream", "anstyle", @@ -3414,7 +3215,7 @@ dependencies = [ "rlp", "serde", "serde_json", - "strum 0.26.3", + "strum", "syn 2.0.90", "tempfile", "thiserror 1.0.69", @@ -3528,12 +3329,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "fiat-crypto" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" - [[package]] name = "figment" version = "0.10.19" @@ -3622,14 +3417,14 @@ name = "forge" version = "0.3.0" dependencies = [ "alloy-chains", - "alloy-consensus 0.8.3", + "alloy-consensus", "alloy-dyn-abi", "alloy-json-abi", "alloy-network", "alloy-primitives", "alloy-provider", - "alloy-rpc-types 0.8.3", - "alloy-serde 0.8.3", + "alloy-rpc-types", + "alloy-serde", "alloy-signer", "alloy-signer-local", "alloy-sol-macro-expander", @@ -3692,7 +3487,7 @@ dependencies = [ "solar-ast", "solar-parse", "soldeer-commands", - "strum 0.26.3", + "strum", "svm-rs", "tempfile", "thiserror 2.0.8", @@ -3754,15 +3549,15 @@ name = "forge-script" version = "0.3.0" dependencies = [ "alloy-chains", - "alloy-consensus 0.8.3", + "alloy-consensus", "alloy-dyn-abi", - "alloy-eips 0.8.3", + "alloy-eips", "alloy-json-abi", "alloy-network", "alloy-primitives", "alloy-provider", - "alloy-rpc-types 0.8.3", - "alloy-serde 0.8.3", + "alloy-rpc-types", + "alloy-serde", "alloy-signer", "alloy-transport", "clap", @@ -3800,7 +3595,7 @@ version = "0.3.0" dependencies = [ "alloy-network", "alloy-primitives", - "alloy-rpc-types 0.8.3", + "alloy-rpc-types", "eyre", "foundry-common", "foundry-compilers", @@ -3836,7 +3631,7 @@ dependencies = [ "alloy-json-abi", "alloy-primitives", "alloy-provider", - "alloy-rpc-types 0.8.3", + "alloy-rpc-types", "async-trait", "ciborium", "clap", @@ -3852,7 +3647,7 @@ dependencies = [ "itertools 0.13.0", "regex", "reqwest", - "revm-primitives 14.0.0", + "revm-primitives", "semver 1.0.24", "serde", "serde_json", @@ -3893,7 +3688,7 @@ dependencies = [ name = "foundry-cheatcodes" version = "0.3.0" dependencies = [ - "alloy-consensus 0.8.3", + "alloy-consensus", "alloy-dyn-abi", "alloy-genesis", "alloy-json-abi", @@ -3901,7 +3696,7 @@ dependencies = [ "alloy-primitives", "alloy-provider", "alloy-rlp", - "alloy-rpc-types 0.8.3", + "alloy-rpc-types", "alloy-signer", "alloy-signer-local", "alloy-sol-types", @@ -3926,7 +3721,7 @@ dependencies = [ "parking_lot", "proptest", "rand", - "revm 18.0.0", + "revm", "revm-inspectors", "semver 1.0.24", "serde", @@ -3955,7 +3750,7 @@ version = "0.3.0" dependencies = [ "alloy-chains", "alloy-dyn-abi", - "alloy-eips 0.8.3", + "alloy-eips", "alloy-json-abi", "alloy-primitives", "alloy-provider", @@ -3979,7 +3774,7 @@ dependencies = [ "serde", "serde_json", "strsim", - "strum 0.26.3", + "strum", "tempfile", "tokio", "tracing", @@ -3992,10 +3787,10 @@ dependencies = [ name = "foundry-common" version = "0.3.0" dependencies = [ - "alloy-consensus 0.8.3", + "alloy-consensus", "alloy-contract", "alloy-dyn-abi", - "alloy-eips 0.8.3", + "alloy-eips", "alloy-json-abi", "alloy-json-rpc", "alloy-network", @@ -4003,8 +3798,8 @@ dependencies = [ "alloy-provider", "alloy-pubsub", "alloy-rpc-client", - "alloy-rpc-types 0.8.3", - "alloy-serde 0.8.3", + "alloy-rpc-types", + "alloy-serde", "alloy-sol-types", "alloy-transport", "alloy-transport-http", @@ -4043,16 +3838,16 @@ dependencies = [ name = "foundry-common-fmt" version = "0.3.0" dependencies = [ - "alloy-consensus 0.8.3", + "alloy-consensus", "alloy-dyn-abi", "alloy-network", "alloy-primitives", - "alloy-rpc-types 0.8.3", - "alloy-serde 0.8.3", + "alloy-rpc-types", + "alloy-serde", "chrono", "comfy-table", "foundry-macros", - "revm-primitives 14.0.0", + "revm-primitives", "serde", "serde_json", "similar-asserts", @@ -4188,7 +3983,7 @@ dependencies = [ "path-slash", "regex", "reqwest", - "revm-primitives 14.0.0", + "revm-primitives", "semver 1.0.24", "serde", "serde_json", @@ -4216,7 +4011,7 @@ dependencies = [ "foundry-evm-core", "foundry-evm-traces", "ratatui", - "revm 18.0.0", + "revm", "revm-inspectors", "serde", "tracing", @@ -4242,7 +4037,7 @@ dependencies = [ "indicatif", "parking_lot", "proptest", - "revm 18.0.0", + "revm", "revm-inspectors", "serde", "thiserror 2.0.8", @@ -4266,14 +4061,14 @@ dependencies = [ name = "foundry-evm-core" version = "0.3.0" dependencies = [ - "alloy-consensus 0.8.3", + "alloy-consensus", "alloy-dyn-abi", "alloy-genesis", "alloy-json-abi", "alloy-network", "alloy-primitives", "alloy-provider", - "alloy-rpc-types 0.8.3", + "alloy-rpc-types", "alloy-sol-types", "alloy-transport", "auto_impl", @@ -4287,9 +4082,9 @@ dependencies = [ "futures", "itertools 0.13.0", "parking_lot", - "revm 18.0.0", + "revm", "revm-inspectors", - "revm-primitives 14.0.0", + "revm-primitives", "serde", "serde_json", "thiserror 2.0.8", @@ -4308,7 +4103,7 @@ dependencies = [ "foundry-compilers", "foundry-evm-core", "rayon", - "revm 18.0.0", + "revm", "semver 1.0.24", "tracing", ] @@ -4333,7 +4128,7 @@ dependencies = [ "parking_lot", "proptest", "rand", - "revm 18.0.0", + "revm", "serde", "thiserror 2.0.8", "tracing", @@ -4357,7 +4152,7 @@ dependencies = [ "futures", "itertools 0.13.0", "rayon", - "revm 18.0.0", + "revm", "revm-inspectors", "serde", "serde_json", @@ -4370,18 +4165,18 @@ dependencies = [ [[package]] name = "foundry-fork-db" version = "0.9.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git?rev=ad124ad2#ad124ad28c6b08ebf0ae448bf33cd3d11bcc5b19" +source = "git+ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git?rev=835f3a3#835f3a3173330e0fa8746ed3d08de63a64c59440" dependencies = [ - "alloy-consensus 0.8.3", + "alloy-consensus", "alloy-primitives", "alloy-provider", - "alloy-rpc-types 0.8.3", - "alloy-serde 0.8.3", + "alloy-rpc-types", + "alloy-serde", "alloy-transport", "eyre", "futures", "parking_lot", - "revm 18.0.0", + "revm", "serde", "serde_json", "thiserror 2.0.8", @@ -4437,7 +4232,7 @@ dependencies = [ name = "foundry-wallets" version = "0.3.0" dependencies = [ - "alloy-consensus 0.8.3", + "alloy-consensus", "alloy-dyn-abi", "alloy-network", "alloy-primitives", @@ -4671,26 +4466,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "getrandom_or_panic" -version = "0.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea1015b5a70616b688dc230cfe50c8af89d972cb132d5a622814d29773b10b9" -dependencies = [ - "rand", - "rand_core", -] - -[[package]] -name = "ghash" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" -dependencies = [ - "opaque-debug", - "polyval", -] - [[package]] name = "gimli" version = "0.28.1" @@ -5033,7 +4808,6 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ "ahash", "allocator-api2", - "serde", ] [[package]] @@ -5048,12 +4822,6 @@ dependencies = [ "serde", ] -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - [[package]] name = "heck" version = "0.5.0" @@ -5099,15 +4867,6 @@ dependencies = [ "rusb", ] -[[package]] -name = "hkdf" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" -dependencies = [ - "hmac", -] - [[package]] name = "hmac" version = "0.12.1" @@ -5863,16 +5622,6 @@ dependencies = [ "signature", ] -[[package]] -name = "kbs-types" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6441ed73b0faa50707d4de41c6b45c76654b661b96aaf7b26a41331eedc0a5" -dependencies = [ - "serde", - "serde_json", -] - [[package]] name = "keccak" version = "0.1.5" @@ -6171,18 +5920,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "merlin" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" -dependencies = [ - "byteorder", - "keccak", - "rand_core", - "zeroize", -] - [[package]] name = "mesc" version = "0.3.0" @@ -6630,11 +6367,11 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c698f80ee53e56d1b60a97e9d90ad09788b516c964c9c97fb5927860b812ef0d" dependencies = [ - "alloy-consensus 0.8.3", - "alloy-eips 0.8.3", + "alloy-consensus", + "alloy-eips", "alloy-primitives", "alloy-rlp", - "alloy-serde 0.8.3", + "alloy-serde", "derive_more", "serde", "thiserror 2.0.8", @@ -6646,24 +6383,18 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5aef2128fe8979596b3a1f79a2454f3e32fd239889a03d50fe686b9a2f30a16" dependencies = [ - "alloy-consensus 0.8.3", - "alloy-eips 0.8.3", - "alloy-network-primitives 0.8.3", + "alloy-consensus", + "alloy-eips", + "alloy-network-primitives", "alloy-primitives", - "alloy-rpc-types-eth 0.8.3", - "alloy-serde 0.8.3", + "alloy-rpc-types-eth", + "alloy-serde", "derive_more", "op-alloy-consensus", "serde", "serde_json", ] -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - [[package]] name = "open-fastrlp" version = "0.1.4" @@ -7119,18 +6850,6 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" -[[package]] -name = "polyval" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" -dependencies = [ - "cfg-if", - "cpufeatures", - "opaque-debug", - "universal-hash", -] - [[package]] name = "portable-atomic" version = "1.10.0" @@ -7607,7 +7326,7 @@ dependencies = [ "itertools 0.13.0", "lru", "paste", - "strum 0.26.3", + "strum", "unicode-segmentation", "unicode-truncate", "unicode-width 0.2.0", @@ -7761,103 +7480,51 @@ dependencies = [ "windows-registry", ] -[[package]] -name = "revm" -version = "14.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "641702b12847f9ed418d552f4fcabe536d867a2c980e96b6e7e25d7b992f929f" -dependencies = [ - "auto_impl", - "cfg-if", - "dyn-clone", - "revm-interpreter 10.0.3", - "revm-precompile 11.0.3", - "serde", - "serde_json", -] - [[package]] name = "revm" version = "18.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=659ee7f#659ee7f4f77c3c92cc461293f0271eec4a3ee006" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=caf5496f#caf5496f75a164f1caf92a1d77e13d2808ce873e" dependencies = [ - "aes-gcm", - "alloy-primitives", - "alloy-rlp", - "anyhow", "auto_impl", - "bincode", "cfg-if", "dyn-clone", - "merlin", - "rand_core", - "revm-interpreter 14.0.0", - "revm-precompile 15.0.0", - "schnorrkel", - "secp256k1", + "revm-interpreter", + "revm-precompile", "serde", "serde_json", - "tee_service_api", - "tiny-keccak", ] [[package]] name = "revm-inspectors" -version = "0.6.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git?rev=a77b988#a77b988b82486f521193f01231def7809a38e8b3" +version = "0.13.0" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git?rev=37ce994#37ce994d25d159d1d74c8f7d46940b5ba8d8b297" dependencies = [ "alloy-primitives", - "alloy-rpc-types 0.3.6", + "alloy-rpc-types-eth", + "alloy-rpc-types-trace", "alloy-sol-types", "anstyle", "colorchoice", - "revm 14.0.3", + "revm", + "revm-primitives", "serde", "serde_json", - "thiserror 1.0.69", -] - -[[package]] -name = "revm-interpreter" -version = "10.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e5e14002afae20b5bf1566f22316122f42f57517000e559c55b25bf7a49cba2" -dependencies = [ - "revm-primitives 10.0.0", - "serde", + "thiserror 2.0.8", ] [[package]] name = "revm-interpreter" version = "14.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=659ee7f#659ee7f4f77c3c92cc461293f0271eec4a3ee006" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=caf5496f#caf5496f75a164f1caf92a1d77e13d2808ce873e" dependencies = [ - "revm-primitives 14.0.0", + "revm-primitives", "serde", ] -[[package]] -name = "revm-precompile" -version = "11.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3198c06247e8d4ad0d1312591edf049b0de4ddffa9fecb625c318fd67db8639b" -dependencies = [ - "aurora-engine-modexp", - "c-kzg", - "cfg-if", - "k256", - "once_cell", - "revm-primitives 10.0.0", - "ripemd", - "secp256k1", - "sha2", - "substrate-bn", -] - [[package]] name = "revm-precompile" version = "15.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=659ee7f#659ee7f4f77c3c92cc461293f0271eec4a3ee006" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=caf5496f#caf5496f75a164f1caf92a1d77e13d2808ce873e" dependencies = [ "aurora-engine-modexp", "blst", @@ -7866,40 +7533,20 @@ dependencies = [ "k256", "once_cell", "p256", - "revm-primitives 14.0.0", + "revm-primitives", "ripemd", "secp256k1", "sha2", "substrate-bn", ] -[[package]] -name = "revm-primitives" -version = "10.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f1525851a03aff9a9d6a1d018b414d76252d6802ab54695b27093ecd7e7a101" -dependencies = [ - "alloy-eip2930", - "alloy-eip7702 0.1.1", - "alloy-primitives", - "auto_impl", - "bitflags 2.6.0", - "bitvec", - "c-kzg", - "cfg-if", - "dyn-clone", - "enumn", - "hex", - "serde", -] - [[package]] name = "revm-primitives" version = "14.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=659ee7f#659ee7f4f77c3c92cc461293f0271eec4a3ee006" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=caf5496f#caf5496f75a164f1caf92a1d77e13d2808ce873e" dependencies = [ "alloy-eip2930", - "alloy-eip7702 0.4.2", + "alloy-eip7702", "alloy-primitives", "auto_impl", "bitflags 2.6.0", @@ -8345,25 +7992,6 @@ dependencies = [ "hashbrown 0.13.2", ] -[[package]] -name = "schnorrkel" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de18f6d8ba0aad7045f5feae07ec29899c1112584a38509a84ad7b04451eaa0" -dependencies = [ - "aead", - "arrayref", - "arrayvec", - "curve25519-dalek", - "getrandom_or_panic", - "merlin", - "rand_core", - "serde_bytes", - "sha2", - "subtle", - "zeroize", -] - [[package]] name = "scoped-tls" version = "1.0.1" @@ -8426,7 +8054,6 @@ checksum = "9465315bc9d4566e1724f0fffcbcc446268cb522e60f9a27bcded6b19c108113" dependencies = [ "rand", "secp256k1-sys", - "serde", ] [[package]] @@ -8529,15 +8156,6 @@ dependencies = [ "serde_derive", ] -[[package]] -name = "serde_bytes" -version = "0.11.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a" -dependencies = [ - "serde", -] - [[package]] name = "serde_derive" version = "1.0.216" @@ -8891,7 +8509,7 @@ dependencies = [ "solar-data-structures", "solar-interface", "solar-macros", - "strum 0.26.3", + "strum", "typed-arena", ] @@ -8901,7 +8519,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "31d00d672a40a1a3620d7696f01a2d3301abf883d8168e1a9da3bf83f0c8e343" dependencies = [ - "strum 0.26.3", + "strum", ] [[package]] @@ -9100,35 +8718,13 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" -[[package]] -name = "strum" -version = "0.25.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" -dependencies = [ - "strum_macros 0.25.3", -] - [[package]] name = "strum" version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" dependencies = [ - "strum_macros 0.26.4", -] - -[[package]] -name = "strum_macros" -version = "0.25.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" -dependencies = [ - "heck 0.4.1", - "proc-macro2", - "quote", - "rustversion", - "syn 2.0.90", + "strum_macros", ] [[package]] @@ -9137,7 +8733,7 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", "rustversion", @@ -9255,29 +8851,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" -[[package]] -name = "tee_service_api" -version = "0.1.0" -source = "git+ssh://git@github.com/SeismicSystems/TEEService.git?rev=544b83711c53c8d72cd339718097f324add7adfc#544b83711c53c8d72cd339718097f324add7adfc" -dependencies = [ - "aes-gcm", - "anyhow", - "bincode", - "byteorder", - "bytes", - "hkdf", - "hyper 0.14.32", - "kbs-types", - "once_cell", - "reqwest", - "secp256k1", - "serde", - "serde_json", - "sha2", - "strum 0.25.0", - "tokio", -] - [[package]] name = "tempfile" version = "3.14.0" @@ -10036,16 +9609,6 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" -[[package]] -name = "universal-hash" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" -dependencies = [ - "crypto-common", - "subtle", -] - [[package]] name = "untrusted" version = "0.9.0" diff --git a/Cargo.toml b/Cargo.toml index ce0bc9209..fb76e8f7e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -177,9 +177,9 @@ solar-parse = { version = "=0.1.0", default-features = false } ## revm # no default features to avoid c-kzg -revm = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "659ee7f", default-features = false } -revm-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "659ee7f", default-features = false } -revm-inspectors = { git = "ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "a77b988", features = ["serde"] } +revm = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "caf5496f", default-features = false } +revm-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "caf5496f", default-features = false } +revm-inspectors = { git = "ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "37ce994", features = ["serde"] } ## ethers ethers-contract-abigen = { version = "2.0.14", default-features = false } @@ -299,10 +299,10 @@ yansi = { version = "1.0", features = ["detect-tty", "detect-env"] } # and instead use our local version # seismic-revm -revm = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "659ee7f" } -revm-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "659ee7f" } +revm = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "caf5496f" } +revm-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "caf5496f" } -foundry-fork-db = { git = "ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "ad124ad2" } +foundry-fork-db = { git = "ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "835f3a3" } # seismic-alloy-core alloy-dyn-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a772c2e" } diff --git a/crates/anvil/src/eth/api.rs b/crates/anvil/src/eth/api.rs index b44d5d205..1a9da277e 100644 --- a/crates/anvil/src/eth/api.rs +++ b/crates/anvil/src/eth/api.rs @@ -3082,6 +3082,8 @@ impl TryFrom, u128, State)>> for GasEs InstructionResult::Revert => Ok(Self::Revert(output.map(|o| o.into_data()))), + InstructionResult::InvalidPublicStorageAccess | + InstructionResult::InvalidPrivateStorageAccess | InstructionResult::OutOfGas | InstructionResult::MemoryOOG | InstructionResult::MemoryLimitOOG | diff --git a/crates/anvil/src/eth/backend/db.rs b/crates/anvil/src/eth/backend/db.rs index 40b34accb..450e26a92 100644 --- a/crates/anvil/src/eth/backend/db.rs +++ b/crates/anvil/src/eth/backend/db.rs @@ -21,10 +21,7 @@ use foundry_evm::{ }, }; use revm::primitives::FlaggedStorage; -use serde::{ - de::{MapAccess, Visitor}, - Deserialize, Deserializer, Serialize, -}; +use serde::{Deserialize, Serialize}; use std::{collections::BTreeMap, fmt, path::Path}; /// Helper trait get access to the full state data of the database diff --git a/crates/anvil/src/eth/backend/mem/mod.rs b/crates/anvil/src/eth/backend/mem/mod.rs index 5185c3114..ef6997fd7 100644 --- a/crates/anvil/src/eth/backend/mem/mod.rs +++ b/crates/anvil/src/eth/backend/mem/mod.rs @@ -682,7 +682,8 @@ impl Backend { slot: U256, val: B256, ) -> DatabaseResult<()> { - self.db.write().await.set_storage_at(address, slot.into(), val) + let val_u256: U256 = val.into(); + self.db.write().await.set_storage_at(address, slot.into(), val_u256.into()) } /// Returns the configured specid @@ -1518,7 +1519,6 @@ impl Backend { GethDebugBuiltInTracerType::FlatCallTracer => { Err(RpcError::invalid_params("unsupported tracer type").into()) } - GethDebugBuiltInTracerType::FlatCallTracer => todo!(), }, GethDebugTracerType::JsTracer(_code) => { @@ -2589,7 +2589,7 @@ impl Backend { .map(|(key, proof)| { let storage_key: U256 = key.into(); let value = account.storage.get(&storage_key).cloned().unwrap_or_default(); - StorageProof { key: JsonStorageKey(key), value: value.into(), proof } + StorageProof { key: JsonStorageKey::Hash(key), value: value.into(), proof } }) .collect(), }; diff --git a/crates/anvil/src/eth/backend/mem/storage.rs b/crates/anvil/src/eth/backend/mem/storage.rs index 340be170f..5635a7acc 100644 --- a/crates/anvil/src/eth/backend/mem/storage.rs +++ b/crates/anvil/src/eth/backend/mem/storage.rs @@ -564,7 +564,6 @@ impl MinedTransaction { Err(e) => Err(RpcError::invalid_params(e.to_string()).into()), }; } - GethDebugBuiltInTracerType::FlatCallTracer => todo!(), GethDebugBuiltInTracerType::PreStateTracer | GethDebugBuiltInTracerType::NoopTracer | GethDebugBuiltInTracerType::MuxTracer | diff --git a/crates/cast/bin/tx.rs b/crates/cast/bin/tx.rs index 7f3ca43fa..29f8e2435 100644 --- a/crates/cast/bin/tx.rs +++ b/crates/cast/bin/tx.rs @@ -3,7 +3,7 @@ use alloy_json_abi::Function; use alloy_network::{ AnyNetwork, TransactionBuilder, TransactionBuilder4844, TransactionBuilder7702, }; -use alloy_primitives::{hex, Address, Bytes, TxKind, U256}; +use alloy_primitives::{hex, Address, Bytes, TxKind}; use alloy_provider::Provider; use alloy_rpc_types::{AccessList, Authorization, TransactionInput, TransactionRequest}; use alloy_serde::WithOtherFields; diff --git a/crates/cheatcodes/src/inspector.rs b/crates/cheatcodes/src/inspector.rs index 3703654c3..929ae4896 100644 --- a/crates/cheatcodes/src/inspector.rs +++ b/crates/cheatcodes/src/inspector.rs @@ -317,7 +317,7 @@ impl ArbitraryStorage { pub fn save(&mut self, ecx: InnerEcx, address: Address, slot: U256, data: U256) { self.values.get_mut(&address).expect("missing arbitrary address entry").insert(slot, data); if let Ok(mut account) = ecx.load_account(address) { - account.storage.insert(slot, EvmStorageSlot::new(data)); + account.storage.insert(slot, EvmStorageSlot::new(data.into())); } } @@ -335,14 +335,14 @@ impl ArbitraryStorage { storage_cache.insert(slot, new_value); // Update source storage with new value. if let Ok(mut source_account) = ecx.load_account(*source) { - source_account.storage.insert(slot, EvmStorageSlot::new(new_value)); + source_account.storage.insert(slot, EvmStorageSlot::new(new_value.into())); } new_value } }; // Update target storage with new value. if let Ok(mut target_account) = ecx.load_account(target) { - target_account.storage.insert(slot, EvmStorageSlot::new(value)); + target_account.storage.insert(slot, EvmStorageSlot::new(value.into())); } value } diff --git a/crates/common/src/provider/mod.rs b/crates/common/src/provider/mod.rs index f206d12e0..cd34f94e9 100644 --- a/crates/common/src/provider/mod.rs +++ b/crates/common/src/provider/mod.rs @@ -291,7 +291,7 @@ impl ProviderBuilder { } /// Constructs the `RetryProvider` with a wallet. - pub fn build_with_wallet(self, _wallet: EthereumWallet) -> Result { + pub fn build_with_wallet(self, wallet: EthereumWallet) -> Result { let Self { url, chain, @@ -325,11 +325,9 @@ impl ProviderBuilder { ); } - // let provider = AlloyProviderBuilder::<_, _, AnyNetwork>::default() - // .with_recommended_fillers() - // .wallet(wallet) - // .on_provider(RootProvider::new(client)); let provider = AlloyProviderBuilder::<_, _, AnyNetwork>::default() + .with_recommended_fillers() + .wallet(wallet) .on_provider(RootProvider::new(client)); Ok(provider) diff --git a/crates/evm/core/src/backend/mod.rs b/crates/evm/core/src/backend/mod.rs index c17e19d7a..b08707962 100644 --- a/crates/evm/core/src/backend/mod.rs +++ b/crates/evm/core/src/backend/mod.rs @@ -1417,7 +1417,7 @@ impl DatabaseExt for Backend { .get(&slot) .map(|s| s.present_value) .unwrap_or_default(), - U256::from_be_bytes(value.0), + U256::from_be_bytes(value.0).into(), ), ) }) diff --git a/crates/evm/core/src/fork/database.rs b/crates/evm/core/src/fork/database.rs index 12ecb41ac..fc03c3e7f 100644 --- a/crates/evm/core/src/fork/database.rs +++ b/crates/evm/core/src/fork/database.rs @@ -10,7 +10,7 @@ use foundry_fork_db::{BlockchainDb, DatabaseError, SharedBackend}; use parking_lot::Mutex; use revm::{ db::{CacheDB, DatabaseRef}, - primitives::{Account, AccountInfo, Bytecode, FlaggedStorage, HashMap as Map}, + primitives::{Account, AccountInfo, Bytecode, FlaggedStorage}, Database, DatabaseCommit, }; use std::sync::Arc; @@ -96,7 +96,7 @@ impl ForkedDatabase { let db = self.db.db(); let state_snapshot = StateSnapshot { accounts: db.accounts.read().clone(), - storage: db.storage.read().clone(), + storage: db.storage.read().clone().into(), block_hashes: db.block_hashes.read().clone(), }; ForkDbStateSnapshot { local: self.cache_db.clone(), state_snapshot } @@ -207,7 +207,7 @@ pub struct ForkDbStateSnapshot { pub state_snapshot: StateSnapshot, } -impl ForkDbSnapshot { +impl ForkDbStateSnapshot { fn get_storage(&self, address: Address, index: U256) -> Option { self.local .accounts diff --git a/crates/forge/tests/cli/config.rs b/crates/forge/tests/cli/config.rs index 545cebac8..55857a606 100644 --- a/crates/forge/tests/cli/config.rs +++ b/crates/forge/tests/cli/config.rs @@ -162,6 +162,7 @@ forgetest!(can_extract_config_values, |prj, cmd| { compilation_restrictions: Default::default(), eof: false, _non_exhaustive: (), + seismic: true, }; prj.write_config(input.clone()); let config = cmd.config(); From a2c046e888cd3fe4a618f3561ecefd693001d54c Mon Sep 17 00:00:00 2001 From: cdrappi Date: Fri, 20 Dec 2024 15:01:35 -0500 Subject: [PATCH 021/130] add deploy key for salloy --- .github/workflows/seismic.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/seismic.yml b/.github/workflows/seismic.yml index 05488877a..5f23bb377 100644 --- a/.github/workflows/seismic.yml +++ b/.github/workflows/seismic.yml @@ -40,6 +40,7 @@ jobs: ssh-private-key: | ${{ secrets.ACTIONS_MANTLE_SSH_ED25519 }} ${{ secrets.ACTIONS_SFORGESTD_SSH_ED25519 }} + ${{ secrets.ACTIONS_SALLOY_SSH_ED25519 }} ${{ secrets.ACTIONS_SALLOYCORE_SSH_ED25519 }} ${{ secrets.ACTIONS_SREVM_SSH_ED25519 }} ${{ secrets.ACTIONS_SREVMINSPECTORS_SSH_ED25519 }} @@ -70,6 +71,7 @@ jobs: ssh-private-key: | ${{ secrets.ACTIONS_MANTLE_SSH_ED25519 }} ${{ secrets.ACTIONS_SFORGESTD_SSH_ED25519 }} + ${{ secrets.ACTIONS_SALLOY_SSH_ED25519 }} ${{ secrets.ACTIONS_SALLOYCORE_SSH_ED25519 }} ${{ secrets.ACTIONS_SREVM_SSH_ED25519 }} ${{ secrets.ACTIONS_SREVMINSPECTORS_SSH_ED25519 }} @@ -96,6 +98,7 @@ jobs: ssh-private-key: | ${{ secrets.ACTIONS_MANTLE_SSH_ED25519 }} ${{ secrets.ACTIONS_SFORGESTD_SSH_ED25519 }} + ${{ secrets.ACTIONS_SALLOY_SSH_ED25519 }} ${{ secrets.ACTIONS_SALLOYCORE_SSH_ED25519 }} ${{ secrets.ACTIONS_SREVM_SSH_ED25519 }} ${{ secrets.ACTIONS_SREVMINSPECTORS_SSH_ED25519 }} From 29d36bbebca8eb68985379f7f0a4d77eee7fb851 Mon Sep 17 00:00:00 2001 From: cdrappi Date: Fri, 20 Dec 2024 15:02:50 -0500 Subject: [PATCH 022/130] rustfmt --- crates/anvil/core/src/eth/transaction/mod.rs | 72 ++++++++++---------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/crates/anvil/core/src/eth/transaction/mod.rs b/crates/anvil/core/src/eth/transaction/mod.rs index cec7889d9..c842b9e18 100644 --- a/crates/anvil/core/src/eth/transaction/mod.rs +++ b/crates/anvil/core/src/eth/transaction/mod.rs @@ -96,8 +96,8 @@ pub fn transaction_request_to_typed( is_system_transaction: other.get_deserialized::("isSystemTx")?.ok()?, input: input.into_input().unwrap_or_default(), })); - } else if transaction_type == Some(SeismicTransaction::TRANSACTION_TYPE) - || has_seismic_fields(&other) + } else if transaction_type == Some(SeismicTransaction::TRANSACTION_TYPE) || + has_seismic_fields(&other) { return Some(TypedTransactionRequest::Seismic(TxSeismic { nonce: nonce.unwrap_or_default(), @@ -121,8 +121,8 @@ pub fn transaction_request_to_typed( to, ) { // legacy transaction - (Some(0), _, None, None, None, None, None, None, _) - | (None, Some(_), None, None, None, None, None, None, _) => { + (Some(0), _, None, None, None, None, None, None, _) | + (None, Some(_), None, None, None, None, None, None, _) => { Some(TypedTransactionRequest::Legacy(TxLegacy { nonce: nonce.unwrap_or_default(), gas_price: gas_price.unwrap_or_default(), @@ -134,8 +134,8 @@ pub fn transaction_request_to_typed( })) } // EIP2930 - (Some(1), _, None, None, _, None, None, None, _) - | (None, _, None, None, Some(_), None, None, None, _) => { + (Some(1), _, None, None, _, None, None, None, _) | + (None, _, None, None, Some(_), None, None, None, _) => { Some(TypedTransactionRequest::EIP2930(TxEip2930 { nonce: nonce.unwrap_or_default(), gas_price: gas_price.unwrap_or_default(), @@ -148,10 +148,10 @@ pub fn transaction_request_to_typed( })) } // EIP1559 - (Some(2), None, _, _, _, _, None, None, _) - | (None, None, Some(_), _, _, _, None, None, _) - | (None, None, _, Some(_), _, _, None, None, _) - | (None, None, None, None, None, _, None, None, _) => { + (Some(2), None, _, _, _, _, None, None, _) | + (None, None, Some(_), _, _, _, None, None, _) | + (None, None, _, Some(_), _, _, None, None, _) | + (None, None, None, None, None, _, None, None, _) => { // Empty fields fall back to the canonical transaction schema. Some(TypedTransactionRequest::EIP1559(TxEip1559 { nonce: nonce.unwrap_or_default(), @@ -192,9 +192,9 @@ pub fn transaction_request_to_typed( } fn has_optimism_fields(other: &OtherFields) -> bool { - other.contains_key("sourceHash") - && other.contains_key("mint") - && other.contains_key("isSystemTx") + other.contains_key("sourceHash") && + other.contains_key("mint") && + other.contains_key("isSystemTx") } fn has_seismic_fields(other: &OtherFields) -> bool { @@ -1224,12 +1224,12 @@ pub struct DepositReceipt> { impl DepositReceipt { fn payload_len(&self) -> usize { - self.inner.receipt.status.length() - + self.inner.receipt.cumulative_gas_used.length() - + self.inner.logs_bloom.length() - + self.inner.receipt.logs.length() - + self.deposit_nonce.map_or(0, |n| n.length()) - + self.deposit_receipt_version.map_or(0, |n| n.length()) + self.inner.receipt.status.length() + + self.inner.receipt.cumulative_gas_used.length() + + self.inner.logs_bloom.length() + + self.inner.receipt.logs.length() + + self.deposit_nonce.map_or(0, |n| n.length()) + + self.deposit_receipt_version.map_or(0, |n| n.length()) } /// Returns the rlp header for the receipt payload. @@ -1331,12 +1331,12 @@ pub enum TypedReceipt> { impl TypedReceipt { pub fn as_receipt_with_bloom(&self) -> &ReceiptWithBloom { match self { - Self::Legacy(r) - | Self::EIP1559(r) - | Self::EIP2930(r) - | Self::EIP4844(r) - | Self::EIP7702(r) - | Self::Seismic(r) => r, + Self::Legacy(r) | + Self::EIP1559(r) | + Self::EIP2930(r) | + Self::EIP4844(r) | + Self::EIP7702(r) | + Self::Seismic(r) => r, Self::Deposit(r) => &r.inner, } } @@ -1345,12 +1345,12 @@ impl TypedReceipt { impl From> for ReceiptWithBloom { fn from(value: TypedReceipt) -> Self { match value { - TypedReceipt::Legacy(r) - | TypedReceipt::EIP1559(r) - | TypedReceipt::EIP2930(r) - | TypedReceipt::EIP4844(r) - | TypedReceipt::EIP7702(r) - | TypedReceipt::Seismic(r) => r, + TypedReceipt::Legacy(r) | + TypedReceipt::EIP1559(r) | + TypedReceipt::EIP2930(r) | + TypedReceipt::EIP4844(r) | + TypedReceipt::EIP7702(r) | + TypedReceipt::Seismic(r) => r, TypedReceipt::Deposit(r) => r.inner, } } @@ -1519,11 +1519,11 @@ impl Encodable2718 for TypedReceipt { out.put_u8(ty); } match self { - Self::Legacy(r) - | Self::EIP2930(r) - | Self::EIP1559(r) - | Self::EIP4844(r) - | Self::EIP7702(r) => r.encode(out), + Self::Legacy(r) | + Self::EIP2930(r) | + Self::EIP1559(r) | + Self::EIP4844(r) | + Self::EIP7702(r) => r.encode(out), Self::Deposit(r) => r.encode(out), Self::Seismic(r) => r.encode(out), } From eef8a3ba36c5ca58bf7bc42da287eceaf22d4b19 Mon Sep 17 00:00:00 2001 From: cdrappi Date: Fri, 20 Dec 2024 15:27:52 -0500 Subject: [PATCH 023/130] fix cargo test build --- Cargo.lock | 21 +-------------------- crates/anvil/Cargo.toml | 2 +- crates/anvil/tests/it/main.rs | 2 +- crates/anvil/tests/it/seismic.rs | 2 +- 4 files changed, 4 insertions(+), 23 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8b680367d..a3f5f3bfe 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1183,7 +1183,6 @@ dependencies = [ "itertools 0.13.0", "k256", "op-alloy-consensus 0.8.3", - "op-alloy-rpc-types 0.8.3", "parking_lot", "rand", "revm", @@ -6728,24 +6727,6 @@ dependencies = [ "serde_json", ] -[[package]] -name = "op-alloy-rpc-types" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a555dd1bd39cbcdd60b92f03a21871767a16e3a2ce2f82a26cff9aade56d35f" -dependencies = [ - "alloy-consensus 0.8.0", - "alloy-eips 0.8.0", - "alloy-network-primitives 0.8.0", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", - "alloy-rpc-types-eth 0.8.0", - "alloy-serde 0.8.0", - "derive_more", - "op-alloy-consensus 0.8.3", - "serde", - "serde_json", -] - [[package]] name = "op-alloy-rpc-types-engine" version = "0.2.12" @@ -7882,7 +7863,7 @@ dependencies = [ "alloy-rpc-types-txpool 0.3.6", "alloy-serde 0.3.6", "jsonrpsee-types", - "op-alloy-rpc-types 0.2.12", + "op-alloy-rpc-types", "op-alloy-rpc-types-engine", ] diff --git a/crates/anvil/Cargo.toml b/crates/anvil/Cargo.toml index a2b6f6a9e..a5d736d64 100644 --- a/crates/anvil/Cargo.toml +++ b/crates/anvil/Cargo.toml @@ -126,7 +126,7 @@ foundry-test-utils.workspace = true similar-asserts.workspace = true tokio = { workspace = true, features = ["full"] } -op-alloy-rpc-types.workspace = true +# op-alloy-rpc-types.workspace = true [features] diff --git a/crates/anvil/tests/it/main.rs b/crates/anvil/tests/it/main.rs index 380ea9a58..5ff313362 100644 --- a/crates/anvil/tests/it/main.rs +++ b/crates/anvil/tests/it/main.rs @@ -11,7 +11,7 @@ mod gas; mod genesis; mod ipc; mod logs; -mod optimism; +// mod optimism; mod otterscan; mod proof; mod pubsub; diff --git a/crates/anvil/tests/it/seismic.rs b/crates/anvil/tests/it/seismic.rs index dc0fd9ae5..96d5048ef 100644 --- a/crates/anvil/tests/it/seismic.rs +++ b/crates/anvil/tests/it/seismic.rs @@ -93,7 +93,7 @@ async fn test_seismic_transaction() { let receipt: Option< WithOtherFields< alloy_rpc_types::TransactionReceipt< - alloy_consensus::AnyReceiptEnvelope, + alloy_network::AnyReceiptEnvelope, >, >, > = provider.get_transaction_receipt(pending_set.tx_hash().to_owned()).await.unwrap(); From c5f67c763fc963db16676316c4763f98239ea24d Mon Sep 17 00:00:00 2001 From: Ameya Deshmukh Date: Thu, 2 Jan 2025 07:58:10 +0530 Subject: [PATCH 024/130] `eth_call` with signature verificiation/unspoofing + accepting formatted requests (#49) Co-authored-by: Christian Drappi --- Cargo.lock | 259 ++++++++++--------- crates/anvil/Cargo.toml | 5 + crates/anvil/core/src/eth/mod.rs | 8 +- crates/anvil/core/src/eth/transaction/mod.rs | 10 + crates/anvil/src/eth/api.rs | 67 ++++- crates/anvil/src/eth/backend/mem/mod.rs | 176 ++++++++++++- crates/anvil/tests/it/fork.rs | 10 +- 7 files changed, 385 insertions(+), 150 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a3f5f3bfe..6c7092202 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -169,7 +169,7 @@ dependencies = [ "alloy-transport", "futures", "futures-util", - "thiserror 2.0.8", + "thiserror 2.0.9", ] [[package]] @@ -308,7 +308,7 @@ dependencies = [ "alloy-sol-types", "serde", "serde_json", - "thiserror 2.0.8", + "thiserror 2.0.9", "tracing", ] @@ -333,7 +333,7 @@ dependencies = [ "futures-utils-wasm", "serde", "serde_json", - "thiserror 2.0.8", + "thiserror 2.0.9", ] [[package]] @@ -371,7 +371,7 @@ dependencies = [ "rand", "serde_json", "tempfile", - "thiserror 2.0.8", + "thiserror 2.0.9", "tracing", "url", ] @@ -465,7 +465,7 @@ dependencies = [ "schnellru", "serde", "serde_json", - "thiserror 2.0.8", + "thiserror 2.0.9", "tokio", "tracing", "url", @@ -509,7 +509,7 @@ checksum = "5a833d97bf8a5f0f878daf2c8451fff7de7f9de38baa5a45d936ec718d81255a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -742,7 +742,7 @@ dependencies = [ "alloy-serde 0.8.0", "serde", "serde_json", - "thiserror 2.0.8", + "thiserror 2.0.9", ] [[package]] @@ -801,7 +801,7 @@ dependencies = [ "auto_impl", "elliptic-curve", "k256", - "thiserror 2.0.8", + "thiserror 2.0.9", ] [[package]] @@ -817,7 +817,7 @@ dependencies = [ "aws-sdk-kms", "k256", "spki", - "thiserror 2.0.8", + "thiserror 2.0.9", "tracing", ] @@ -834,7 +834,7 @@ dependencies = [ "gcloud-sdk", "k256", "spki", - "thiserror 2.0.8", + "thiserror 2.0.9", "tracing", ] @@ -853,7 +853,7 @@ dependencies = [ "coins-ledger", "futures-util", "semver 1.0.24", - "thiserror 2.0.8", + "thiserror 2.0.9", "tracing", ] @@ -872,7 +872,7 @@ dependencies = [ "eth-keystore", "k256", "rand", - "thiserror 2.0.8", + "thiserror 2.0.9", ] [[package]] @@ -886,7 +886,7 @@ dependencies = [ "alloy-signer", "async-trait", "semver 1.0.24", - "thiserror 2.0.8", + "thiserror 2.0.9", "tracing", "trezor-client", ] @@ -901,7 +901,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -917,7 +917,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", "syn-solidity", "tiny-keccak", ] @@ -934,7 +934,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.90", + "syn 2.0.91", "syn-solidity", ] @@ -970,7 +970,7 @@ dependencies = [ "futures-utils-wasm", "serde", "serde_json", - "thiserror 2.0.8", + "thiserror 2.0.9", "tokio", "tower 0.5.2", "tracing", @@ -1186,6 +1186,7 @@ dependencies = [ "parking_lot", "rand", "revm", + "secp256k1", "seismic-transaction", "serde", "serde_json", @@ -1193,7 +1194,7 @@ dependencies = [ "similar-asserts", "tee_service_api", "tempfile", - "thiserror 2.0.8", + "thiserror 2.0.9", "tikv-jemallocator", "tokio", "tower 0.4.13", @@ -1229,7 +1230,7 @@ dependencies = [ "serde", "serde_json", "tee_service_api", - "thiserror 2.0.8", + "thiserror 2.0.9", ] [[package]] @@ -1255,7 +1256,7 @@ dependencies = [ "pin-project 1.1.7", "serde", "serde_json", - "thiserror 2.0.8", + "thiserror 2.0.9", "tokio-util", "tower-http", "tracing", @@ -1263,9 +1264,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.94" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1fd03a028ef38ba2276dce7e33fcd6369c158a1bca17946c4b1b701891c1ff7" +checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" [[package]] name = "arbitrary" @@ -1458,7 +1459,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -1480,7 +1481,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -1491,7 +1492,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -1544,7 +1545,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -2087,7 +2088,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -2470,7 +2471,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -2886,7 +2887,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -2897,7 +2898,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -2971,7 +2972,7 @@ checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -2992,7 +2993,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -3002,7 +3003,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -3023,7 +3024,7 @@ dependencies = [ "convert_case", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", "unicode-xid", ] @@ -3137,7 +3138,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -3162,7 +3163,7 @@ checksum = "8dc51d98e636f5e3b0759a39257458b22619cac7e96d932da6eeb052891bb67c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -3289,7 +3290,7 @@ checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -3424,7 +3425,7 @@ dependencies = [ "regex", "serde", "serde_json", - "syn 2.0.90", + "syn 2.0.91", "toml 0.8.19", "walkdir", ] @@ -3452,7 +3453,7 @@ dependencies = [ "serde", "serde_json", "strum 0.26.3", - "syn 2.0.90", + "syn 2.0.91", "tempfile", "thiserror 1.0.69", "tiny-keccak", @@ -3726,7 +3727,7 @@ dependencies = [ "strum 0.26.3", "svm-rs", "tempfile", - "thiserror 2.0.8", + "thiserror 2.0.9", "tikv-jemallocator", "tokio", "toml 0.8.19", @@ -3759,7 +3760,7 @@ dependencies = [ "serde", "serde_json", "solang-parser", - "thiserror 2.0.8", + "thiserror 2.0.9", "toml 0.8.19", "tracing", ] @@ -3774,7 +3775,7 @@ dependencies = [ "itertools 0.13.0", "similar-asserts", "solang-parser", - "thiserror 2.0.8", + "thiserror 2.0.9", "toml 0.8.19", "tracing", "tracing-subscriber", @@ -3856,7 +3857,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -3962,7 +3963,7 @@ dependencies = [ "semver 1.0.24", "serde", "serde_json", - "thiserror 2.0.8", + "thiserror 2.0.9", "toml 0.8.19", "tracing", "vergen", @@ -4061,7 +4062,7 @@ dependencies = [ "serde_json", "similar-asserts", "terminal_size", - "thiserror 2.0.8", + "thiserror 2.0.9", "tokio", "tower 0.4.13", "tracing", @@ -4120,7 +4121,7 @@ dependencies = [ "svm-rs", "svm-rs-builds", "tempfile", - "thiserror 2.0.8", + "thiserror 2.0.9", "tokio", "tracing", "winnow", @@ -4154,7 +4155,7 @@ dependencies = [ "serde", "serde_json", "serde_repr", - "thiserror 2.0.8", + "thiserror 2.0.9", "tokio", "tracing", "walkdir", @@ -4193,7 +4194,7 @@ dependencies = [ "serde_json", "svm-rs", "tempfile", - "thiserror 2.0.8", + "thiserror 2.0.9", "tokio", "walkdir", ] @@ -4227,7 +4228,7 @@ dependencies = [ "similar-asserts", "solang-parser", "tempfile", - "thiserror 2.0.8", + "thiserror 2.0.9", "toml 0.8.19", "toml_edit", "tracing", @@ -4276,7 +4277,7 @@ dependencies = [ "revm", "revm-inspectors", "serde", - "thiserror 2.0.8", + "thiserror 2.0.9", "tracing", ] @@ -4323,7 +4324,7 @@ dependencies = [ "revm-primitives", "serde", "serde_json", - "thiserror 2.0.8", + "thiserror 2.0.9", "tokio", "tracing", "url", @@ -4366,7 +4367,7 @@ dependencies = [ "rand", "revm", "serde", - "thiserror 2.0.8", + "thiserror 2.0.9", "tracing", ] @@ -4415,7 +4416,7 @@ dependencies = [ "revm", "serde", "serde_json", - "thiserror 2.0.8", + "thiserror 2.0.9", "tokio", "tracing", "url", @@ -4428,7 +4429,7 @@ dependencies = [ "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", "foundry-compilers", "semver 1.0.24", - "thiserror 2.0.8", + "thiserror 2.0.9", ] [[package]] @@ -4438,7 +4439,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -4490,7 +4491,7 @@ dependencies = [ "gcloud-sdk", "rpassword", "serde", - "thiserror 2.0.8", + "thiserror 2.0.9", "tokio", "tracing", ] @@ -4598,7 +4599,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -4763,19 +4764,19 @@ dependencies = [ "bstr", "gix-path", "libc", - "thiserror 2.0.8", + "thiserror 2.0.9", ] [[package]] name = "gix-date" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "691142b1a34d18e8ed6e6114bc1a2736516c5ad60ef3aa9bd1b694886e3ca92d" +checksum = "c57c477b645ee248b173bb1176b52dd528872f12c50375801a58aaf5ae91113f" dependencies = [ "bstr", "itoa", "jiff", - "thiserror 2.0.8", + "thiserror 2.0.9", ] [[package]] @@ -4866,7 +4867,7 @@ dependencies = [ "gix-trace", "home", "once_cell", - "thiserror 2.0.8", + "thiserror 2.0.9", ] [[package]] @@ -4938,7 +4939,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd520d09f9f585b34b32aba1d0b36ada89ab7fefb54a8ca3fe37fc482a750937" dependencies = [ "bstr", - "thiserror 2.0.8", + "thiserror 2.0.9", ] [[package]] @@ -5158,7 +5159,7 @@ dependencies = [ "markup5ever", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -5517,7 +5518,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -5617,7 +5618,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -5727,16 +5728,16 @@ dependencies = [ [[package]] name = "instability" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b829f37dead9dc39df40c2d3376c179fdfd2ac771f53f55d3c30dc096a3c0c6e" +checksum = "898e106451f7335950c9cc64f8ec67b5f65698679ac67ed00619aeef14e1cf75" dependencies = [ "darling", "indoc", "pretty_assertions", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -6236,7 +6237,7 @@ checksum = "23c9b935fbe1d6cbd1dac857b54a688145e2d93f48db36010514d0f612d0ad67" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -6326,7 +6327,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -6600,7 +6601,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -6675,7 +6676,7 @@ dependencies = [ "alloy-serde 0.8.0", "derive_more", "serde", - "thiserror 2.0.8", + "thiserror 2.0.9", ] [[package]] @@ -6810,7 +6811,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -6973,7 +6974,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -7008,7 +7009,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc" dependencies = [ "memchr", - "thiserror 2.0.8", + "thiserror 2.0.9", "ucd-trie", ] @@ -7032,7 +7033,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -7116,7 +7117,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -7174,7 +7175,7 @@ checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -7287,7 +7288,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" dependencies = [ "proc-macro2", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -7365,7 +7366,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -7385,7 +7386,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", "version_check", "yansi", ] @@ -7449,7 +7450,7 @@ checksum = "4ee1c9ac207483d5e7db4940700de86a9aae46ef90c48b57f99fe7edb8345e49" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -7472,7 +7473,7 @@ dependencies = [ "itertools 0.13.0", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -7539,7 +7540,7 @@ dependencies = [ "newtype-uuid", "quick-xml 0.37.1", "strip-ansi-escapes", - "thiserror 2.0.8", + "thiserror 2.0.9", "uuid 1.11.0", ] @@ -7574,7 +7575,7 @@ dependencies = [ "rustc-hash", "rustls 0.23.20", "socket2", - "thiserror 2.0.8", + "thiserror 2.0.9", "tokio", "tracing", ] @@ -7593,7 +7594,7 @@ dependencies = [ "rustls 0.23.20", "rustls-pki-types", "slab", - "thiserror 2.0.8", + "thiserror 2.0.9", "tinyvec", "tracing", "web-time", @@ -7896,7 +7897,7 @@ dependencies = [ "revm-primitives", "serde", "serde_json", - "thiserror 2.0.8", + "thiserror 2.0.9", ] [[package]] @@ -8323,7 +8324,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -8365,7 +8366,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -8585,7 +8586,7 @@ checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -8596,14 +8597,14 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] name = "serde_json" -version = "1.0.133" +version = "1.0.134" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" +checksum = "d00f4175c42ee48b15416f6193a959ba3a0d67fc699a0db9ad12df9f83991c7d" dependencies = [ "indexmap 2.7.0", "itoa", @@ -8640,7 +8641,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -8691,7 +8692,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -8716,7 +8717,7 @@ checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -9024,7 +9025,7 @@ checksum = "f0cc54b74e214647c1bbfc098d080cc5deac77f8dcb99aca91747276b01a15ad" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -9086,7 +9087,7 @@ dependencies = [ "serde", "serde_json", "sha2", - "thiserror 2.0.8", + "thiserror 2.0.9", "tokio", "toml_edit", "uuid 1.11.0", @@ -9200,7 +9201,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -9213,7 +9214,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -9250,7 +9251,7 @@ dependencies = [ "serde_json", "sha2", "tempfile", - "thiserror 2.0.8", + "thiserror 2.0.9", "url", "zip", ] @@ -9281,9 +9282,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.90" +version = "2.0.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" +checksum = "d53cbcb5a243bd33b7858b1d7f4aca2153490815872d86d955d6ea29f743c035" dependencies = [ "proc-macro2", "quote", @@ -9298,7 +9299,7 @@ dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -9318,7 +9319,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -9436,11 +9437,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.8" +version = "2.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f5383f3e0071702bf93ab5ee99b52d26936be9dedd9413067cbdcddcb6141a" +checksum = "f072643fd0190df67a8bab670c20ef5d8737177d6ac6b2e9a236cb096206b2cc" dependencies = [ - "thiserror-impl 2.0.8", + "thiserror-impl 2.0.9", ] [[package]] @@ -9451,18 +9452,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] name = "thiserror-impl" -version = "2.0.8" +version = "2.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f357fcec90b3caef6623a099691be676d033b40a058ac95d2a6ade6fa0c943" +checksum = "7b50fa271071aae2e6ee85f842e2e28ba8cd2c5fb67f11fcb1fd70b276f9e7d4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -9558,9 +9559,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" dependencies = [ "tinyvec_macros", ] @@ -9597,7 +9598,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -9871,7 +9872,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -10296,7 +10297,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", "wasm-bindgen-shared", ] @@ -10331,7 +10332,7 @@ checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -10572,7 +10573,7 @@ checksum = "f6fc35f58ecd95a9b71c4f2329b911016e6bec66b3f2e6a4aad86bd2e99e2f9b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -10583,7 +10584,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -10594,7 +10595,7 @@ checksum = "08990546bf4edef8f431fa6326e032865f27138718c587dc21bc0265bbcb57cc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -10605,7 +10606,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -10885,7 +10886,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", "synstructure", ] @@ -10907,7 +10908,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -10927,7 +10928,7 @@ checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", "synstructure", ] @@ -10948,7 +10949,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -10970,7 +10971,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.91", ] [[package]] @@ -10987,7 +10988,7 @@ dependencies = [ "flate2", "indexmap 2.7.0", "memchr", - "thiserror 2.0.8", + "thiserror 2.0.9", "zopfli", ] diff --git a/crates/anvil/Cargo.toml b/crates/anvil/Cargo.toml index a5d736d64..090cdda33 100644 --- a/crates/anvil/Cargo.toml +++ b/crates/anvil/Cargo.toml @@ -69,6 +69,11 @@ alloy-genesis.workspace = true alloy-trie.workspace = true op-alloy-consensus = { workspace = true, features = ["serde"] } +secp256k1 = { version = "0.29", default-features = false, features = [ + "global-context", + "recovery", +] } + # axum related axum.workspace = true hyper.workspace = true diff --git a/crates/anvil/core/src/eth/mod.rs b/crates/anvil/core/src/eth/mod.rs index 80e438c6c..de4149006 100644 --- a/crates/anvil/core/src/eth/mod.rs +++ b/crates/anvil/core/src/eth/mod.rs @@ -1,4 +1,7 @@ -use crate::{eth::subscription::SubscriptionId, types::ReorgOptions}; +use crate::{ + eth::{subscription::SubscriptionId, transaction::SeismicCallRequest}, + types::ReorgOptions, +}; use alloy_primitives::{Address, Bytes, TxHash, B256, B64, U256}; use alloy_rpc_types::{ anvil::{Forking, MineOptions}, @@ -12,7 +15,6 @@ use alloy_rpc_types::{ BlockId, BlockNumberOrTag as BlockNumber, Filter, Index, }; use alloy_serde::WithOtherFields; - pub mod block; pub mod proof; pub mod subscription; @@ -184,7 +186,7 @@ pub enum EthRequest { #[cfg_attr(feature = "serde", serde(rename = "eth_call"))] EthCall( - WithOtherFields, + SeismicCallRequest, #[cfg_attr(feature = "serde", serde(default))] Option, #[cfg_attr(feature = "serde", serde(default))] Option, ), diff --git a/crates/anvil/core/src/eth/transaction/mod.rs b/crates/anvil/core/src/eth/transaction/mod.rs index c842b9e18..83b6550f0 100644 --- a/crates/anvil/core/src/eth/transaction/mod.rs +++ b/crates/anvil/core/src/eth/transaction/mod.rs @@ -1611,6 +1611,16 @@ pub fn convert_to_anvil_receipt(receipt: AnyTransactionReceipt) -> Option), +} + #[cfg(test)] mod tests { use alloy_consensus::SignableTransaction; diff --git a/crates/anvil/src/eth/api.rs b/crates/anvil/src/eth/api.rs index 9e5cb228c..c8b18ee28 100644 --- a/crates/anvil/src/eth/api.rs +++ b/crates/anvil/src/eth/api.rs @@ -66,8 +66,8 @@ use anvil_core::{ eth::{ block::BlockInfo, transaction::{ - transaction_request_to_typed, PendingTransaction, ReceiptResponse, TypedTransaction, - TypedTransactionRequest, + transaction_request_to_typed, PendingTransaction, ReceiptResponse, SeismicCallRequest, + TypedTransaction, TypedTransactionRequest, }, wallet::{WalletCapabilities, WalletError}, EthRequest, @@ -88,7 +88,9 @@ use foundry_evm::{ use futures::channel::{mpsc::Receiver, oneshot}; use parking_lot::RwLock; use revm::primitives::Bytecode; +use secp256k1::PublicKey; use std::{future::Future, sync::Arc, time::Duration}; +use yansi::Paint; /// The client version: `anvil/v{major}.{minor}.{patch}` pub const CLIENT_VERSION: &str = concat!("anvil/v", env!("CARGO_PKG_VERSION")); @@ -1056,11 +1058,43 @@ impl EthApi { /// Handler for ETH RPC call: `eth_call` pub async fn call( &self, - request: WithOtherFields, + request: SeismicCallRequest, block_number: Option, overrides: Option, ) -> Result { node_info!("eth_call"); + + let (constructed_request, seismic_pub_key): ( + WithOtherFields, + Option, + ) = match request { + SeismicCallRequest::Bytes(bytes) => { + let mut pub_key = None; + let typed_tx = TypedTransaction::decode_2718(&mut bytes.as_ref()) + .map_err(|_| BlockchainError::FailedToDecodeSignedTransaction)?; + let tx = TransactionRequest::try_from(typed_tx.clone()).map_err(|_| { + BlockchainError::Message( + "Failed to decode bytes to transaction request".to_string(), + ) + })?; + if let TypedTransaction::Seismic(seismic_tx) = typed_tx { + let public_key = + anvil_core::eth::transaction::crypto::recover_public_key(&seismic_tx) + .map_err(|_| { + BlockchainError::Message( + "Failed to get public key from seismic transaction".to_string(), + ) + })?; + pub_key = Some(public_key); + } + (WithOtherFields::new(tx), pub_key) + } + SeismicCallRequest::TransactionRequest(mut tx) => { + tx.from = None; + (tx, None) + } + }; + let block_request = self.block_request(block_number).await?; // check if the number predates the fork, if in fork mode if let BlockRequest::Number(number) = block_request { @@ -1071,30 +1105,37 @@ impl EthApi { "not available on past forked blocks".to_string(), )); } - return Ok(fork.call(&request, Some(number.into())).await?); + return Ok(fork.call(&constructed_request, Some(number.into())).await?); } } } let fees = FeeDetails::new( - request.gas_price, - request.max_fee_per_gas, - request.max_priority_fee_per_gas, - request.max_fee_per_blob_gas, + constructed_request.gas_price, + constructed_request.max_fee_per_gas, + constructed_request.max_priority_fee_per_gas, + constructed_request.max_fee_per_blob_gas, )? .or_zero_fees(); + // this can be blocking for a bit, especially in forking mode // self.on_blocking_task(|this| async move { - let (exit, out, gas, _) = - this.backend.call(request, fees, Some(block_request), overrides).await?; + let (exit, out, gas, _) = this + .backend + .seismic_call( + constructed_request, + seismic_pub_key, + fees, + Some(block_request), + overrides, + ) + .await?; trace!(target : "node", "Call status {:?}, gas {}", exit, gas); - ensure_return_ok(exit, &out) }) .await } - /// This method creates an EIP2930 type accessList based on a given Transaction. The accessList /// contains all storage slots and addresses read and written by the transaction, except for the /// sender account and the precompiles. @@ -1741,7 +1782,7 @@ impl EthApi { /// Handler for RPC call: `anvil_dropAllTransactions` pub async fn anvil_drop_all_transactions(&self) -> Result<()> { node_info!("anvil_dropAllTransactions"); - self.pool.clear(); + self.pool.resetting(); Ok(()) } diff --git a/crates/anvil/src/eth/backend/mem/mod.rs b/crates/anvil/src/eth/backend/mem/mod.rs index 1eb07de8c..efcb59d6e 100644 --- a/crates/anvil/src/eth/backend/mem/mod.rs +++ b/crates/anvil/src/eth/backend/mem/mod.rs @@ -45,6 +45,7 @@ use alloy_network::{ use alloy_primitives::{ address, hex, keccak256, utils::Unit, Address, Bytes, TxHash, TxKind, B256, U256, U64, }; +use alloy_rlp::Decodable; use alloy_rpc_types::{ anvil::Forking, request::TransactionRequest, @@ -111,6 +112,10 @@ use std::{ }; use storage::{Blockchain, MinedTransaction, DEFAULT_HISTORY_LIMIT}; use tokio::sync::RwLock as AsyncRwLock; + +use secp256k1::PublicKey; +use seismic_transaction::transaction::SeismicTransaction; + pub mod cache; pub mod fork_db; pub mod in_memory_db; @@ -1325,6 +1330,33 @@ impl Backend { }).await? } + /// Executes the [TransactionRequest] without writing to the DB + /// + /// # Errors + /// + /// Returns an error if the `block_number` is greater than the current height + pub async fn seismic_call( + &self, + request: WithOtherFields, + seismic_pub_key: Option, + fee_details: FeeDetails, + block_request: Option, + overrides: Option, + ) -> Result<(InstructionResult, Option, u128, State), BlockchainError> { + self.with_database_at(block_request, |state, block| { + let block_number = block.number.to::(); + let (exit, out, gas, state) = match overrides { + None => self.seismic_call_with_state(state.as_dyn(), request, seismic_pub_key, fee_details, block), + Some(overrides) => { + let state = state::apply_state_override(overrides.into_iter().collect(), state)?; + self.seismic_call_with_state(state.as_dyn(), request, seismic_pub_key, fee_details, block) + }, + }?; + trace!(target: "backend", "call return {:?} out: {:?} gas {} on block {}", exit, out, gas, block_number); + Ok((exit, out, gas, state)) + }).await? + } + /// ## EVM settings /// /// This modifies certain EVM settings to mirror geth's `SkipAccountChecks` when transacting requests, see also: : @@ -1357,7 +1389,7 @@ impl Backend { .. // Rest of the gas fees related fields are taken from `fee_details` }, .. - } = request; + } = request.clone(); let FeeDetails { gas_price, @@ -1425,6 +1457,121 @@ impl Backend { env } + /// ## EVM settings + /// + /// This modifies certain EVM settings to mirror geth's `SkipAccountChecks` when transacting requests, see also: : + /// + /// - `disable_eip3607` is set to `true` + /// - `disable_base_fee` is set to `true` + /// - `nonce` is set to `None` + fn seismic_build_call_env( + &self, + request: WithOtherFields, + seismic_pub_key: Option, + fee_details: FeeDetails, + block_env: BlockEnv, + ) -> EnvWithHandlerCfg { + let WithOtherFields:: { + inner: + TransactionRequest { + from, + to, + gas, + value, + mut input, + access_list, + blob_versioned_hashes, + authorization_list, + // nonce is always ignored for calls + nonce: _, + sidecar: _, + chain_id: _, + transaction_type: _, + .. // Rest of the gas fees related fields are taken from `fee_details` + }, + .. + } = request.clone(); + + let FeeDetails { + gas_price, + max_fee_per_gas, + max_priority_fee_per_gas, + max_fee_per_blob_gas, + } = fee_details; + + let gas_limit = gas.unwrap_or(block_env.gas_limit.to()); + let mut env = self.env.read().clone(); + env.block = block_env; + // we want to disable this in eth_call, since this is common practice used by other node + // impls and providers + env.cfg.disable_block_gas_limit = true; + + // The basefee should be ignored for calls against state for + // - eth_call + // - eth_estimateGas + // - eth_createAccessList + // - tracing + env.cfg.disable_base_fee = true; + + let gas_price = gas_price.or(max_fee_per_gas).unwrap_or_else(|| { + self.fees().raw_gas_price().saturating_add(MIN_SUGGESTED_PRIORITY_FEE) + }); + let caller = from.unwrap_or_default(); + let to = to.as_ref().and_then(TxKind::to); + let blob_hashes = blob_versioned_hashes.unwrap_or_default(); + if Some(SeismicTransaction::TRANSACTION_TYPE) == request.transaction_type && + seismic_pub_key.is_some() + { + let public_key = seismic_pub_key.unwrap(); + let decrypted_input = anvil_core::eth::transaction::crypto::server_decrypt( + &public_key, + input.input().unwrap_or_default().as_ref(), + request.clone().nonce.unwrap_or_default(), + ) + .expect("Failed to decrypt seismic tx"); + let data = Bytes::decode(&mut decrypted_input.as_slice()) + .expect("Failed to RLP decode decrypted input"); + input = data.into(); + }; + env.tx = + TxEnv { + caller, + gas_limit, + gas_price: U256::from(gas_price), + gas_priority_fee: max_priority_fee_per_gas.map(U256::from), + max_fee_per_blob_gas: max_fee_per_blob_gas + .or_else(|| { + if !blob_hashes.is_empty() { + env.block.get_blob_gasprice() + } else { + None + } + }) + .map(U256::from), + transact_to: match to { + Some(addr) => TxKind::Call(*addr), + None => TxKind::Create, + }, + value: value.unwrap_or_default(), + data: input.into_input().unwrap_or_default(), + chain_id: None, + // set nonce to None so that the correct nonce is chosen by the EVM + nonce: None, + access_list: access_list.unwrap_or_default().into(), + blob_hashes, + optimism: OptimismFields { enveloped_tx: Some(Bytes::new()), ..Default::default() }, + authorization_list: authorization_list.map(Into::into), + }; + + if env.block.basefee.is_zero() { + // this is an edge case because the evm fails if `tx.effective_gas_price < base_fee` + // 0 is only possible if it's manually set + env.cfg.disable_base_fee = true; + } + + env + } + /// Builds [`Inspector`] with the configured options fn build_inspector(&self) -> Inspector { let mut inspector = Inspector::default(); @@ -1462,6 +1609,33 @@ impl Backend { Ok((exit_reason, out, gas_used as u128, state)) } + pub fn seismic_call_with_state( + &self, + state: &dyn DatabaseRef, + request: WithOtherFields, + seismic_pub_key: Option, + fee_details: FeeDetails, + block_env: BlockEnv, + ) -> Result<(InstructionResult, Option, u128, State), BlockchainError> { + let mut inspector = self.build_inspector(); + + let env = self.seismic_build_call_env(request, seismic_pub_key, fee_details, block_env); + let mut evm = self.new_evm_with_inspector_ref(state, env, &mut inspector); + let ResultAndState { result, state } = evm.transact()?; + let (exit_reason, gas_used, out) = match result { + ExecutionResult::Success { reason, gas_used, output, .. } => { + (reason.into(), gas_used, Some(output)) + } + ExecutionResult::Revert { gas_used, output } => { + (InstructionResult::Revert, gas_used, Some(Output::Call(output))) + } + ExecutionResult::Halt { reason, gas_used } => (reason.into(), gas_used, None), + }; + drop(evm); + inspector.print_logs(); + Ok((exit_reason, out, gas_used as u128, state)) + } + pub async fn call_with_tracing( &self, request: WithOtherFields, diff --git a/crates/anvil/tests/it/fork.rs b/crates/anvil/tests/it/fork.rs index 8e7736b0d..c30186960 100644 --- a/crates/anvil/tests/it/fork.rs +++ b/crates/anvil/tests/it/fork.rs @@ -22,6 +22,8 @@ use foundry_test_utils::rpc::{self, next_http_rpc_endpoint, next_rpc_endpoint}; use futures::StreamExt; use std::{sync::Arc, thread::sleep, time::Duration}; +use anvil_core::eth::transaction::SeismicCallRequest; + const BLOCK_NUMBER: u64 = 14_608_400u64; const DEAD_BALANCE_AT_BLOCK_NUMBER: u128 = 12_556_069_338_441_120_059_867u128; @@ -872,11 +874,11 @@ async fn test_fork_call() { let res1 = api .call( - WithOtherFields::new(TransactionRequest { + SeismicCallRequest::TransactionRequest(WithOtherFields::new(TransactionRequest { to: Some(TxKind::from(to)), input: input.into(), ..Default::default() - }), + })), None, None, ) @@ -1318,11 +1320,11 @@ async fn test_fork_execution_reverted() { let resp = api .call( - WithOtherFields::new(TransactionRequest { + SeismicCallRequest::TransactionRequest(WithOtherFields::new(TransactionRequest { to: Some(TxKind::from(address!("Fd6CC4F251eaE6d02f9F7B41D1e80464D3d2F377"))), input: TransactionInput::new(bytes!("8f283b3c")), ..Default::default() - }), + })), Some(target.into()), None, ) From b9622e9ebc665cc4af6e8be511bbacc40f22514a Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Wed, 8 Jan 2025 19:14:40 -0500 Subject: [PATCH 025/130] Update commits to seismic dependencies (#52) --- Cargo.lock | 841 +++++-------------- Cargo.toml | 99 ++- crates/anvil/Cargo.toml | 1 - crates/anvil/core/Cargo.toml | 1 - crates/anvil/core/src/eth/transaction/mod.rs | 14 +- crates/anvil/src/eth/backend/mem/mod.rs | 8 +- crates/anvil/tests/it/seismic.rs | 18 +- 7 files changed, 286 insertions(+), 696 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6c7092202..622a7edcd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -102,35 +102,21 @@ version = "0.1.49" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830045a4421ee38d3ab570d36d4d2b5152c066e72797139224da8de5d5981fd0" dependencies = [ - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "num_enum", "serde", "strum 0.26.3", ] -[[package]] -name = "alloy-consensus" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "629b62e38d471cc15fea534eb7283d2f8a4e8bdb1811bcc5d66dda6cfce6fae1" -dependencies = [ - "alloy-eips 0.3.6", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", - "alloy-rlp", - "alloy-serde 0.3.6", - "c-kzg", - "serde", -] - [[package]] name = "alloy-consensus" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=97710dc#97710dc2e220a50e453e2beabbc13556f6201afc" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" dependencies = [ - "alloy-eips 0.8.0", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-eips", + "alloy-primitives", "alloy-rlp", - "alloy-serde 0.8.0", + "alloy-serde", "alloy-trie", "auto_impl", "c-kzg", @@ -142,29 +128,29 @@ dependencies = [ [[package]] name = "alloy-consensus-any" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=97710dc#97710dc2e220a50e453e2beabbc13556f6201afc" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" dependencies = [ - "alloy-consensus 0.8.0", - "alloy-eips 0.8.0", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-consensus", + "alloy-eips", + "alloy-primitives", "alloy-rlp", - "alloy-serde 0.8.0", + "alloy-serde", "serde", ] [[package]] name = "alloy-contract" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=97710dc#97710dc2e220a50e453e2beabbc13556f6201afc" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", "alloy-network", - "alloy-network-primitives 0.8.0", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-network-primitives", + "alloy-primitives", "alloy-provider", "alloy-pubsub", - "alloy-rpc-types-eth 0.8.0", + "alloy-rpc-types-eth", "alloy-sol-types", "alloy-transport", "futures", @@ -175,10 +161,10 @@ dependencies = [ [[package]] name = "alloy-dyn-abi" version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60#e6f5a603c58fea980735ca3c811b9f2db45487e0" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=397aa22#397aa2228658d502f7033336cead6811e03a8f6e" dependencies = [ "alloy-json-abi", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "alloy-sol-type-parser", "alloy-sol-types", "arbitrary", @@ -198,31 +184,20 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0069cf0642457f87a01a014f6dc29d5d893cd4fd8fddf0c3cdfad1bb3ebafc41" dependencies = [ - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "alloy-rlp", "arbitrary", "rand", "serde", ] -[[package]] -name = "alloy-eip7702" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea59dc42102bc9a1905dc57901edc6dd48b9f38115df86c7d252acba70d71d04" -dependencies = [ - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", - "alloy-rlp", - "serde", -] - [[package]] name = "alloy-eip7702" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c986539255fb839d1533c128e190e557e52ff652c9ef62939e233a81dd93f7e" dependencies = [ - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "alloy-rlp", "arbitrary", "derive_more", @@ -231,34 +206,16 @@ dependencies = [ "serde", ] -[[package]] -name = "alloy-eips" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f923dd5fca5f67a43d81ed3ebad0880bd41f6dd0ada930030353ac356c54cd0f" -dependencies = [ - "alloy-eip2930", - "alloy-eip7702 0.1.1", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", - "alloy-rlp", - "alloy-serde 0.3.6", - "c-kzg", - "derive_more", - "once_cell", - "serde", - "sha2", -] - [[package]] name = "alloy-eips" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=97710dc#97710dc2e220a50e453e2beabbc13556f6201afc" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" dependencies = [ "alloy-eip2930", - "alloy-eip7702 0.4.2", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-eip7702", + "alloy-primitives", "alloy-rlp", - "alloy-serde 0.8.0", + "alloy-serde", "c-kzg", "derive_more", "once_cell", @@ -266,24 +223,13 @@ dependencies = [ "sha2", ] -[[package]] -name = "alloy-genesis" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a7a18afb0b318616b6b2b0e2e7ac5529d32a966c673b48091c9919e284e6aca" -dependencies = [ - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", - "alloy-serde 0.3.6", - "serde", -] - [[package]] name = "alloy-genesis" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=97710dc#97710dc2e220a50e453e2beabbc13556f6201afc" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" dependencies = [ - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", - "alloy-serde 0.8.0", + "alloy-primitives", + "alloy-serde", "alloy-trie", "serde", ] @@ -291,9 +237,9 @@ dependencies = [ [[package]] name = "alloy-json-abi" version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60#e6f5a603c58fea980735ca3c811b9f2db45487e0" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=397aa22#397aa2228658d502f7033336cead6811e03a8f6e" dependencies = [ - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "alloy-sol-type-parser", "serde", "serde_json", @@ -302,9 +248,9 @@ dependencies = [ [[package]] name = "alloy-json-rpc" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=97710dc#97710dc2e220a50e453e2beabbc13556f6201afc" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" dependencies = [ - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "alloy-sol-types", "serde", "serde_json", @@ -315,17 +261,17 @@ dependencies = [ [[package]] name = "alloy-network" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=97710dc#97710dc2e220a50e453e2beabbc13556f6201afc" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" dependencies = [ - "alloy-consensus 0.8.0", + "alloy-consensus", "alloy-consensus-any", - "alloy-eips 0.8.0", + "alloy-eips", "alloy-json-rpc", - "alloy-network-primitives 0.8.0", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-network-primitives", + "alloy-primitives", "alloy-rpc-types-any", - "alloy-rpc-types-eth 0.8.0", - "alloy-serde 0.8.0", + "alloy-rpc-types-eth", + "alloy-serde", "alloy-signer", "alloy-sol-types", "async-trait", @@ -336,37 +282,25 @@ dependencies = [ "thiserror 2.0.9", ] -[[package]] -name = "alloy-network-primitives" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94ad40869867ed2d9cd3842b1e800889e5b49e6b92da346e93862b4a741bedf3" -dependencies = [ - "alloy-eips 0.3.6", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", - "alloy-serde 0.3.6", - "serde", -] - [[package]] name = "alloy-network-primitives" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=97710dc#97710dc2e220a50e453e2beabbc13556f6201afc" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" dependencies = [ - "alloy-consensus 0.8.0", - "alloy-eips 0.8.0", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", - "alloy-serde 0.8.0", + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-serde", "serde", ] [[package]] name = "alloy-node-bindings" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=97710dc#97710dc2e220a50e453e2beabbc13556f6201afc" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" dependencies = [ - "alloy-genesis 0.8.0", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-genesis", + "alloy-primitives", "k256", "rand", "serde_json", @@ -379,30 +313,7 @@ dependencies = [ [[package]] name = "alloy-primitives" version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=a772c2e#a772c2edde6bedd31a29c9ff28ffc3d83860b9f2" -dependencies = [ - "alloy-rlp", - "bytes", - "cfg-if", - "const-hex", - "derive_more", - "getrandom", - "hashbrown 0.15.2", - "hex-literal", - "indexmap 2.7.0", - "itoa", - "paste", - "rand", - "ruint", - "rustc-hash", - "serde", - "tiny-keccak", -] - -[[package]] -name = "alloy-primitives" -version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60#e6f5a603c58fea980735ca3c811b9f2db45487e0" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=397aa22#397aa2228658d502f7033336cead6811e03a8f6e" dependencies = [ "alloy-rlp", "arbitrary", @@ -433,21 +344,21 @@ dependencies = [ [[package]] name = "alloy-provider" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=97710dc#97710dc2e220a50e453e2beabbc13556f6201afc" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" dependencies = [ "alloy-chains", - "alloy-consensus 0.8.0", - "alloy-eips 0.8.0", + "alloy-consensus", + "alloy-eips", "alloy-json-rpc", "alloy-network", - "alloy-network-primitives 0.8.0", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-network-primitives", + "alloy-primitives", "alloy-pubsub", "alloy-rpc-client", "alloy-rpc-types-debug", - "alloy-rpc-types-eth 0.8.0", - "alloy-rpc-types-trace 0.8.0", - "alloy-rpc-types-txpool 0.8.0", + "alloy-rpc-types-eth", + "alloy-rpc-types-trace", + "alloy-rpc-types-txpool", "alloy-transport", "alloy-transport-http", "alloy-transport-ipc", @@ -475,10 +386,10 @@ dependencies = [ [[package]] name = "alloy-pubsub" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=97710dc#97710dc2e220a50e453e2beabbc13556f6201afc" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" dependencies = [ "alloy-json-rpc", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "alloy-transport", "bimap", "futures", @@ -515,10 +426,10 @@ dependencies = [ [[package]] name = "alloy-rpc-client" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=97710dc#97710dc2e220a50e453e2beabbc13556f6201afc" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" dependencies = [ "alloy-json-rpc", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "alloy-pubsub", "alloy-transport", "alloy-transport-http", @@ -537,126 +448,61 @@ dependencies = [ "wasmtimer", ] -[[package]] -name = "alloy-rpc-types" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64333d639f2a0cf73491813c629a405744e16343a4bc5640931be707c345ecc5" -dependencies = [ - "alloy-rpc-types-engine 0.3.6", - "alloy-rpc-types-eth 0.3.6", - "alloy-serde 0.3.6", - "serde", -] - [[package]] name = "alloy-rpc-types" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=97710dc#97710dc2e220a50e453e2beabbc13556f6201afc" -dependencies = [ - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", - "alloy-rpc-types-anvil 0.8.0", - "alloy-rpc-types-engine 0.8.0", - "alloy-rpc-types-eth 0.8.0", - "alloy-rpc-types-trace 0.8.0", - "alloy-rpc-types-txpool 0.8.0", - "alloy-serde 0.8.0", - "serde", -] - -[[package]] -name = "alloy-rpc-types-admin" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fefd12e99dd6b7de387ed13ad047ce2c90d8950ca62fc48b8a457ebb8f936c61" -dependencies = [ - "alloy-genesis 0.3.6", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", - "serde", - "serde_json", -] - -[[package]] -name = "alloy-rpc-types-anvil" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d25cb45ad7c0930dd62eecf164d2afe4c3d2dd2c82af85680ad1f118e1e5cb83" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" dependencies = [ - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", - "alloy-serde 0.3.6", + "alloy-primitives", + "alloy-rpc-types-anvil", + "alloy-rpc-types-engine", + "alloy-rpc-types-eth", + "alloy-rpc-types-trace", + "alloy-rpc-types-txpool", + "alloy-serde", "serde", ] [[package]] name = "alloy-rpc-types-anvil" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=97710dc#97710dc2e220a50e453e2beabbc13556f6201afc" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" dependencies = [ - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", - "alloy-rpc-types-eth 0.8.0", - "alloy-serde 0.8.0", + "alloy-primitives", + "alloy-rpc-types-eth", + "alloy-serde", "serde", ] [[package]] name = "alloy-rpc-types-any" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=97710dc#97710dc2e220a50e453e2beabbc13556f6201afc" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" dependencies = [ "alloy-consensus-any", - "alloy-rpc-types-eth 0.8.0", - "alloy-serde 0.8.0", -] - -[[package]] -name = "alloy-rpc-types-beacon" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e7081d2206dca51ce23a06338d78d9b536931cc3f15134fc1c6535eb2b77f18" -dependencies = [ - "alloy-eips 0.3.6", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", - "alloy-rpc-types-engine 0.3.6", - "serde", - "serde_with", - "thiserror 1.0.69", + "alloy-rpc-types-eth", + "alloy-serde", ] [[package]] name = "alloy-rpc-types-debug" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=97710dc#97710dc2e220a50e453e2beabbc13556f6201afc" -dependencies = [ - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", - "serde", -] - -[[package]] -name = "alloy-rpc-types-engine" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1464c4dd646e1bdfde86ae65ce5ba168dbb29180b478011fe87117ae46b1629b" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" dependencies = [ - "alloy-consensus 0.3.6", - "alloy-eips 0.3.6", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", - "alloy-rlp", - "alloy-serde 0.3.6", - "derive_more", - "jsonrpsee-types", + "alloy-primitives", "serde", ] [[package]] name = "alloy-rpc-types-engine" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=97710dc#97710dc2e220a50e453e2beabbc13556f6201afc" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" dependencies = [ - "alloy-consensus 0.8.0", - "alloy-eips 0.8.0", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-consensus", + "alloy-eips", + "alloy-primitives", "alloy-rlp", - "alloy-serde 0.8.0", + "alloy-serde", "derive_more", "jsonwebtoken", "rand", @@ -664,40 +510,18 @@ dependencies = [ "strum 0.26.3", ] -[[package]] -name = "alloy-rpc-types-eth" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83aa984386deda02482660aa31cb8ca1e63d533f1c31a52d7d181ac5ec68e9b8" -dependencies = [ - "alloy-consensus 0.3.6", - "alloy-eips 0.3.6", - "alloy-network-primitives 0.3.6", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", - "alloy-rlp", - "alloy-serde 0.3.6", - "alloy-sol-types", - "cfg-if", - "derive_more", - "hashbrown 0.14.5", - "itertools 0.13.0", - "jsonrpsee-types", - "serde", - "serde_json", -] - [[package]] name = "alloy-rpc-types-eth" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=97710dc#97710dc2e220a50e453e2beabbc13556f6201afc" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" dependencies = [ - "alloy-consensus 0.8.0", + "alloy-consensus", "alloy-consensus-any", - "alloy-eips 0.8.0", - "alloy-network-primitives 0.8.0", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-eips", + "alloy-network-primitives", + "alloy-primitives", "alloy-rlp", - "alloy-serde 0.8.0", + "alloy-serde", "alloy-sol-types", "derive_more", "itertools 0.13.0", @@ -705,86 +529,36 @@ dependencies = [ "serde_json", ] -[[package]] -name = "alloy-rpc-types-mev" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "922d92389e5022650c4c60ffd2f9b2467c3f853764f0f74ff16a23106f9017d5" -dependencies = [ - "alloy-eips 0.3.6", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", - "alloy-serde 0.3.6", - "serde", - "serde_json", -] - -[[package]] -name = "alloy-rpc-types-trace" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98db35cd42c90b484377e6bc44d95377a7a38a5ebee996e67754ac0446d542ab" -dependencies = [ - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", - "alloy-rpc-types-eth 0.3.6", - "alloy-serde 0.3.6", - "serde", - "serde_json", - "thiserror 1.0.69", -] - [[package]] name = "alloy-rpc-types-trace" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=97710dc#97710dc2e220a50e453e2beabbc13556f6201afc" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" dependencies = [ - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", - "alloy-rpc-types-eth 0.8.0", - "alloy-serde 0.8.0", + "alloy-primitives", + "alloy-rpc-types-eth", + "alloy-serde", "serde", "serde_json", "thiserror 2.0.9", ] -[[package]] -name = "alloy-rpc-types-txpool" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bac37082c3b21283b3faf5cc0e08974272aee2f756ce1adeb26db56a5fce0d5" -dependencies = [ - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", - "alloy-rpc-types-eth 0.3.6", - "alloy-serde 0.3.6", - "serde", -] - [[package]] name = "alloy-rpc-types-txpool" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=97710dc#97710dc2e220a50e453e2beabbc13556f6201afc" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" dependencies = [ - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", - "alloy-rpc-types-eth 0.8.0", - "alloy-serde 0.8.0", + "alloy-primitives", + "alloy-rpc-types-eth", + "alloy-serde", "serde", ] -[[package]] -name = "alloy-serde" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "731f75ec5d383107fd745d781619bd9cedf145836c51ecb991623d41278e71fa" -dependencies = [ - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", - "serde", - "serde_json", -] - [[package]] name = "alloy-serde" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=97710dc#97710dc2e220a50e453e2beabbc13556f6201afc" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" dependencies = [ - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "serde", "serde_json", ] @@ -792,10 +566,10 @@ dependencies = [ [[package]] name = "alloy-signer" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=97710dc#97710dc2e220a50e453e2beabbc13556f6201afc" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" dependencies = [ "alloy-dyn-abi", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "alloy-sol-types", "async-trait", "auto_impl", @@ -807,11 +581,11 @@ dependencies = [ [[package]] name = "alloy-signer-aws" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=97710dc#97710dc2e220a50e453e2beabbc13556f6201afc" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" dependencies = [ - "alloy-consensus 0.8.0", + "alloy-consensus", "alloy-network", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "alloy-signer", "async-trait", "aws-sdk-kms", @@ -824,11 +598,11 @@ dependencies = [ [[package]] name = "alloy-signer-gcp" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=97710dc#97710dc2e220a50e453e2beabbc13556f6201afc" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" dependencies = [ - "alloy-consensus 0.8.0", + "alloy-consensus", "alloy-network", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "alloy-signer", "async-trait", "gcloud-sdk", @@ -841,12 +615,12 @@ dependencies = [ [[package]] name = "alloy-signer-ledger" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=97710dc#97710dc2e220a50e453e2beabbc13556f6201afc" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" dependencies = [ - "alloy-consensus 0.8.0", + "alloy-consensus", "alloy-dyn-abi", "alloy-network", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "alloy-signer", "alloy-sol-types", "async-trait", @@ -860,11 +634,11 @@ dependencies = [ [[package]] name = "alloy-signer-local" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=97710dc#97710dc2e220a50e453e2beabbc13556f6201afc" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" dependencies = [ - "alloy-consensus 0.8.0", + "alloy-consensus", "alloy-network", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "alloy-signer", "async-trait", "coins-bip32", @@ -878,11 +652,11 @@ dependencies = [ [[package]] name = "alloy-signer-trezor" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=97710dc#97710dc2e220a50e453e2beabbc13556f6201afc" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" dependencies = [ - "alloy-consensus 0.8.0", + "alloy-consensus", "alloy-network", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "alloy-signer", "async-trait", "semver 1.0.24", @@ -894,7 +668,7 @@ dependencies = [ [[package]] name = "alloy-sol-macro" version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60#e6f5a603c58fea980735ca3c811b9f2db45487e0" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=397aa22#397aa2228658d502f7033336cead6811e03a8f6e" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", @@ -907,7 +681,7 @@ dependencies = [ [[package]] name = "alloy-sol-macro-expander" version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60#e6f5a603c58fea980735ca3c811b9f2db45487e0" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=397aa22#397aa2228658d502f7033336cead6811e03a8f6e" dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", @@ -925,7 +699,7 @@ dependencies = [ [[package]] name = "alloy-sol-macro-input" version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60#e6f5a603c58fea980735ca3c811b9f2db45487e0" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=397aa22#397aa2228658d502f7033336cead6811e03a8f6e" dependencies = [ "alloy-json-abi", "const-hex", @@ -941,7 +715,7 @@ dependencies = [ [[package]] name = "alloy-sol-type-parser" version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60#e6f5a603c58fea980735ca3c811b9f2db45487e0" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=397aa22#397aa2228658d502f7033336cead6811e03a8f6e" dependencies = [ "serde", "winnow", @@ -950,10 +724,10 @@ dependencies = [ [[package]] name = "alloy-sol-types" version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60#e6f5a603c58fea980735ca3c811b9f2db45487e0" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=397aa22#397aa2228658d502f7033336cead6811e03a8f6e" dependencies = [ "alloy-json-abi", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "alloy-sol-macro", "const-hex", "serde", @@ -962,7 +736,7 @@ dependencies = [ [[package]] name = "alloy-transport" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=97710dc#97710dc2e220a50e453e2beabbc13556f6201afc" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" dependencies = [ "alloy-json-rpc", "base64 0.22.1", @@ -981,7 +755,7 @@ dependencies = [ [[package]] name = "alloy-transport-http" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=97710dc#97710dc2e220a50e453e2beabbc13556f6201afc" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -995,7 +769,7 @@ dependencies = [ [[package]] name = "alloy-transport-ipc" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=97710dc#97710dc2e220a50e453e2beabbc13556f6201afc" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" dependencies = [ "alloy-json-rpc", "alloy-pubsub", @@ -1015,7 +789,7 @@ dependencies = [ [[package]] name = "alloy-transport-ws" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=97710dc#97710dc2e220a50e453e2beabbc13556f6201afc" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" dependencies = [ "alloy-pubsub", "alloy-transport", @@ -1035,7 +809,7 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a5fd8fea044cc9a8c8a50bb6f28e31f0385d820f116c5b98f6f4e55d6e5590b" dependencies = [ - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "alloy-rlp", "arrayvec", "derive_more", @@ -1137,21 +911,21 @@ name = "anvil" version = "0.3.0" dependencies = [ "alloy-chains", - "alloy-consensus 0.8.0", + "alloy-consensus", "alloy-contract", "alloy-dyn-abi", - "alloy-eips 0.8.0", - "alloy-genesis 0.8.0", + "alloy-eips", + "alloy-genesis", "alloy-json-abi", "alloy-json-rpc", "alloy-network", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "alloy-provider", "alloy-pubsub", "alloy-rlp", "alloy-rpc-client", - "alloy-rpc-types 0.8.0", - "alloy-serde 0.8.0", + "alloy-rpc-types", + "alloy-serde", "alloy-signer", "alloy-signer-local", "alloy-sol-types", @@ -1182,12 +956,11 @@ dependencies = [ "hyper 1.5.2", "itertools 0.13.0", "k256", - "op-alloy-consensus 0.8.3", + "op-alloy-consensus", "parking_lot", "rand", "revm", "secp256k1", - "seismic-transaction", "serde", "serde_json", "serde_repr", @@ -1208,25 +981,24 @@ dependencies = [ name = "anvil-core" version = "0.3.0" dependencies = [ - "alloy-consensus 0.8.0", + "alloy-consensus", "alloy-dyn-abi", - "alloy-eips 0.8.0", + "alloy-eips", "alloy-network", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "alloy-rlp", - "alloy-rpc-types 0.8.0", - "alloy-serde 0.8.0", + "alloy-rpc-types", + "alloy-serde", "alloy-trie", "anyhow", "bytes", "foundry-common", "foundry-evm", "once_cell", - "op-alloy-consensus 0.8.3", + "op-alloy-consensus", "rand", "revm", "secp256k1", - "seismic-transaction", "serde", "serde_json", "tee_service_api", @@ -2240,18 +2012,18 @@ name = "cast" version = "0.3.0" dependencies = [ "alloy-chains", - "alloy-consensus 0.8.0", + "alloy-consensus", "alloy-contract", "alloy-dyn-abi", "alloy-json-abi", "alloy-json-rpc", "alloy-network", "alloy-node-bindings", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "alloy-provider", "alloy-rlp", - "alloy-rpc-types 0.8.0", - "alloy-serde 0.8.0", + "alloy-rpc-types", + "alloy-serde", "alloy-signer", "alloy-signer-local", "alloy-sol-types", @@ -2336,8 +2108,8 @@ version = "0.3.0" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", - "alloy-rpc-types 0.8.0", + "alloy-primitives", + "alloy-rpc-types", "clap", "dirs 5.0.1", "eyre", @@ -2950,7 +2722,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ "powerfmt", - "serde", ] [[package]] @@ -3488,7 +3259,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c19906a94bb5656904a6c9c0f36d492cb1da96f284d59bb56f555bd472d96e51" dependencies = [ "alloy-dyn-abi", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", ] [[package]] @@ -3654,14 +3425,14 @@ name = "forge" version = "0.3.0" dependencies = [ "alloy-chains", - "alloy-consensus 0.8.0", + "alloy-consensus", "alloy-dyn-abi", "alloy-json-abi", "alloy-network", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "alloy-provider", - "alloy-rpc-types 0.8.0", - "alloy-serde 0.8.0", + "alloy-rpc-types", + "alloy-serde", "alloy-signer", "alloy-signer-local", "alloy-sol-macro-expander", @@ -3746,7 +3517,7 @@ dependencies = [ name = "forge-doc" version = "0.3.0" dependencies = [ - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "derive_more", "eyre", "forge-fmt", @@ -3769,7 +3540,7 @@ dependencies = [ name = "forge-fmt" version = "0.3.0" dependencies = [ - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "ariadne", "foundry-config", "itertools 0.13.0", @@ -3786,15 +3557,15 @@ name = "forge-script" version = "0.3.0" dependencies = [ "alloy-chains", - "alloy-consensus 0.8.0", + "alloy-consensus", "alloy-dyn-abi", - "alloy-eips 0.8.0", + "alloy-eips", "alloy-json-abi", "alloy-network", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "alloy-provider", - "alloy-rpc-types 0.8.0", - "alloy-serde 0.8.0", + "alloy-rpc-types", + "alloy-serde", "alloy-signer", "alloy-transport", "clap", @@ -3831,8 +3602,8 @@ name = "forge-script-sequence" version = "0.3.0" dependencies = [ "alloy-network", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", - "alloy-rpc-types 0.8.0", + "alloy-primitives", + "alloy-rpc-types", "eyre", "foundry-common", "foundry-compilers", @@ -3866,9 +3637,9 @@ version = "0.3.0" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "alloy-provider", - "alloy-rpc-types 0.8.0", + "alloy-rpc-types", "async-trait", "ciborium", "clap", @@ -3911,7 +3682,7 @@ checksum = "0faa449506113b4969029da2ac1df3a1b3201bf10c99a4a8e6d684977b80c938" dependencies = [ "alloy-chains", "alloy-json-abi", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "foundry-compilers", "reqwest", "semver 1.0.24", @@ -3925,15 +3696,15 @@ dependencies = [ name = "foundry-cheatcodes" version = "0.3.0" dependencies = [ - "alloy-consensus 0.8.0", + "alloy-consensus", "alloy-dyn-abi", - "alloy-genesis 0.8.0", + "alloy-genesis", "alloy-json-abi", "alloy-network", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "alloy-provider", "alloy-rlp", - "alloy-rpc-types 0.8.0", + "alloy-rpc-types", "alloy-signer", "alloy-signer-local", "alloy-sol-types", @@ -3987,9 +3758,9 @@ version = "0.3.0" dependencies = [ "alloy-chains", "alloy-dyn-abi", - "alloy-eips 0.8.0", + "alloy-eips", "alloy-json-abi", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "alloy-provider", "alloy-rlp", "alloy-transport", @@ -4024,19 +3795,19 @@ dependencies = [ name = "foundry-common" version = "0.3.0" dependencies = [ - "alloy-consensus 0.8.0", + "alloy-consensus", "alloy-contract", "alloy-dyn-abi", - "alloy-eips 0.8.0", + "alloy-eips", "alloy-json-abi", "alloy-json-rpc", "alloy-network", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "alloy-provider", "alloy-pubsub", "alloy-rpc-client", - "alloy-rpc-types 0.8.0", - "alloy-serde 0.8.0", + "alloy-rpc-types", + "alloy-serde", "alloy-sol-types", "alloy-transport", "alloy-transport-http", @@ -4075,12 +3846,12 @@ dependencies = [ name = "foundry-common-fmt" version = "0.3.0" dependencies = [ - "alloy-consensus 0.8.0", + "alloy-consensus", "alloy-dyn-abi", "alloy-network", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", - "alloy-rpc-types 0.8.0", - "alloy-serde 0.8.0", + "alloy-primitives", + "alloy-rpc-types", + "alloy-serde", "chrono", "comfy-table", "foundry-macros", @@ -4098,7 +3869,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d817beee8c566a99f4267f25ff63d0de46c442948496ecef91ead56e3383090c" dependencies = [ "alloy-json-abi", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "auto_impl", "derive_more", "dirs 5.0.1", @@ -4145,7 +3916,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44549c33e5a03408c8d40c36d764b7e84d261258ef481c19e4a612e609fdf8a4" dependencies = [ "alloy-json-abi", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "foundry-compilers-core", "futures-util", "md-5", @@ -4169,7 +3940,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a438605ae74689752b2f717165daac15766f1b2a166d2095715d5f9407084b52" dependencies = [ "alloy-json-abi", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "foundry-compilers-artifacts-solc", "foundry-compilers-core", "path-slash", @@ -4183,7 +3954,7 @@ version = "0.12.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04ac6d85c3e2d12585f8e698b12ed4880b02716ec7fde5d62de9a194e62f4e36" dependencies = [ - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "cfg-if", "dunce", "fs_extra", @@ -4205,7 +3976,7 @@ version = "0.3.0" dependencies = [ "Inflector", "alloy-chains", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "dirs-next", "dunce", "eyre", @@ -4240,7 +4011,7 @@ dependencies = [ name = "foundry-debugger" version = "0.3.0" dependencies = [ - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "crossterm", "eyre", "foundry-common", @@ -4260,7 +4031,7 @@ version = "0.3.0" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "alloy-sol-types", "eyre", "foundry-cheatcodes", @@ -4285,7 +4056,7 @@ dependencies = [ name = "foundry-evm-abi" version = "0.3.0" dependencies = [ - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "alloy-sol-types", "derive_more", "foundry-common-fmt", @@ -4298,14 +4069,14 @@ dependencies = [ name = "foundry-evm-core" version = "0.3.0" dependencies = [ - "alloy-consensus 0.8.0", + "alloy-consensus", "alloy-dyn-abi", - "alloy-genesis 0.8.0", + "alloy-genesis", "alloy-json-abi", "alloy-network", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "alloy-provider", - "alloy-rpc-types 0.8.0", + "alloy-rpc-types", "alloy-sol-types", "alloy-transport", "auto_impl", @@ -4334,7 +4105,7 @@ dependencies = [ name = "foundry-evm-coverage" version = "0.3.0" dependencies = [ - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "eyre", "foundry-common", "foundry-compilers", @@ -4352,7 +4123,7 @@ dependencies = [ "ahash", "alloy-dyn-abi", "alloy-json-abi", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "eyre", "foundry-common", "foundry-compilers", @@ -4377,7 +4148,7 @@ version = "0.3.0" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "alloy-sol-types", "eyre", "foundry-block-explorers", @@ -4402,13 +4173,13 @@ dependencies = [ [[package]] name = "foundry-fork-db" version = "0.9.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git?rev=835f3a3#835f3a3173330e0fa8746ed3d08de63a64c59440" +source = "git+ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git?rev=3afb7fa#3afb7fac1aba5b2fb0f38d85dd8a877abd8a477b" dependencies = [ - "alloy-consensus 0.8.0", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-consensus", + "alloy-primitives", "alloy-provider", - "alloy-rpc-types 0.8.0", - "alloy-serde 0.8.0", + "alloy-rpc-types", + "alloy-serde", "alloy-transport", "eyre", "futures", @@ -4426,7 +4197,7 @@ dependencies = [ name = "foundry-linking" version = "0.3.0" dependencies = [ - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "foundry-compilers", "semver 1.0.24", "thiserror 2.0.9", @@ -4446,7 +4217,7 @@ dependencies = [ name = "foundry-test-utils" version = "0.3.0" dependencies = [ - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "alloy-provider", "eyre", "fd-lock", @@ -4469,10 +4240,10 @@ dependencies = [ name = "foundry-wallets" version = "0.3.0" dependencies = [ - "alloy-consensus 0.8.0", + "alloy-consensus", "alloy-dyn-abi", "alloy-network", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "alloy-signer", "alloy-signer-aws", "alloy-signer-gcp", @@ -5055,7 +4826,6 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ "ahash", "allocator-api2", - "serde", ] [[package]] @@ -5641,7 +5411,6 @@ checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown 0.12.3", - "serde", ] [[package]] @@ -5857,18 +5626,6 @@ dependencies = [ "serde_json", ] -[[package]] -name = "jsonrpsee-types" -version = "0.24.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a178c60086f24cc35bb82f57c651d0d25d99c4742b4d335de04e97fa1f08a8a1" -dependencies = [ - "http 1.2.0", - "serde", - "serde_json", - "thiserror 1.0.69", -] - [[package]] name = "jsonwebtoken" version = "9.3.0" @@ -6647,104 +6404,22 @@ version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" -[[package]] -name = "op-alloy-consensus" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21aad1fbf80d2bcd7406880efc7ba109365f44bbb72896758ddcbfa46bf1592c" -dependencies = [ - "alloy-consensus 0.3.6", - "alloy-eips 0.3.6", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", - "alloy-rlp", - "alloy-serde 0.3.6", - "derive_more", - "serde", - "spin", -] - [[package]] name = "op-alloy-consensus" version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "848b3567a9a469ab0c9c712fca0fd6bbce13a9a0b723c94cb81214f53507cf07" dependencies = [ - "alloy-consensus 0.8.0", - "alloy-eips 0.8.0", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-consensus", + "alloy-eips", + "alloy-primitives", "alloy-rlp", - "alloy-serde 0.8.0", + "alloy-serde", "derive_more", "serde", "thiserror 2.0.9", ] -[[package]] -name = "op-alloy-genesis" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1b8a9b70da0e027242ec1762f0f3a386278b6291d00d12ff5a64929dc19f68" -dependencies = [ - "alloy-consensus 0.3.6", - "alloy-eips 0.3.6", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", - "alloy-sol-types", - "serde", - "serde_repr", -] - -[[package]] -name = "op-alloy-protocol" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf300a82ae2d30e2255bfea87a2259da49f63a25a44db561ae64cc9e3084139f" -dependencies = [ - "alloy-consensus 0.3.6", - "alloy-eips 0.3.6", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", - "alloy-rlp", - "alloy-serde 0.3.6", - "hashbrown 0.14.5", - "op-alloy-consensus 0.2.12", - "op-alloy-genesis", - "serde", -] - -[[package]] -name = "op-alloy-rpc-types" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e281fbfc2198b7c0c16457d6524f83d192662bc9f3df70f24c3038d4521616df" -dependencies = [ - "alloy-eips 0.3.6", - "alloy-network-primitives 0.3.6", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", - "alloy-rpc-types-eth 0.3.6", - "alloy-serde 0.3.6", - "cfg-if", - "hashbrown 0.14.5", - "op-alloy-consensus 0.2.12", - "serde", - "serde_json", -] - -[[package]] -name = "op-alloy-rpc-types-engine" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2947272a81ebf988f4804b6f0f6a7c0b2f6f89a908cb410e36f8f3828f81c778" -dependencies = [ - "alloy-eips 0.3.6", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", - "alloy-rpc-types-engine 0.3.6", - "alloy-serde 0.3.6", - "derive_more", - "op-alloy-consensus 0.2.12", - "op-alloy-genesis", - "op-alloy-protocol", - "serde", -] - [[package]] name = "opaque-debug" version = "0.3.1" @@ -7848,30 +7523,10 @@ dependencies = [ "windows-registry", ] -[[package]] -name = "reth-rpc-types" -version = "1.0.6" -source = "git+ssh://git@github.com/SeismicSystems/seismic-reth.git?rev=8e4dc37#8e4dc37d98d9056d094820b027d7c0b7b56cd400" -dependencies = [ - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=a772c2e)", - "alloy-rpc-types 0.3.6", - "alloy-rpc-types-admin", - "alloy-rpc-types-anvil 0.3.6", - "alloy-rpc-types-beacon", - "alloy-rpc-types-engine 0.3.6", - "alloy-rpc-types-mev", - "alloy-rpc-types-trace 0.3.6", - "alloy-rpc-types-txpool 0.3.6", - "alloy-serde 0.3.6", - "jsonrpsee-types", - "op-alloy-rpc-types", - "op-alloy-rpc-types-engine", -] - [[package]] name = "revm" version = "18.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=caf5496f#caf5496f75a164f1caf92a1d77e13d2808ce873e" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=b504083#b504083f3373815e02966c1013a02c68ea9f8a90" dependencies = [ "auto_impl", "cfg-if", @@ -7885,11 +7540,11 @@ dependencies = [ [[package]] name = "revm-inspectors" version = "0.13.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git?rev=37ce994#37ce994d25d159d1d74c8f7d46940b5ba8d8b297" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git?rev=5d2952e#5d2952e43cc75d4e94e8679d95d4f1f671239df9" dependencies = [ - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", - "alloy-rpc-types-eth 0.8.0", - "alloy-rpc-types-trace 0.8.0", + "alloy-primitives", + "alloy-rpc-types-eth", + "alloy-rpc-types-trace", "alloy-sol-types", "anstyle", "colorchoice", @@ -7903,7 +7558,7 @@ dependencies = [ [[package]] name = "revm-interpreter" version = "14.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=caf5496f#caf5496f75a164f1caf92a1d77e13d2808ce873e" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=b504083#b504083f3373815e02966c1013a02c68ea9f8a90" dependencies = [ "revm-primitives", "serde", @@ -7912,7 +7567,7 @@ dependencies = [ [[package]] name = "revm-precompile" version = "15.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=caf5496f#caf5496f75a164f1caf92a1d77e13d2808ce873e" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=b504083#b504083f3373815e02966c1013a02c68ea9f8a90" dependencies = [ "aurora-engine-modexp", "blst", @@ -7931,11 +7586,11 @@ dependencies = [ [[package]] name = "revm-primitives" version = "14.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=caf5496f#caf5496f75a164f1caf92a1d77e13d2808ce873e" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=b504083#b504083f3373815e02966c1013a02c68ea9f8a90" dependencies = [ "alloy-eip2930", - "alloy-eip7702 0.4.2", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-eip7702", + "alloy-primitives", "auto_impl", "bitflags 2.6.0", "bitvec", @@ -8503,39 +8158,6 @@ dependencies = [ "libc", ] -[[package]] -name = "seismic-transaction" -version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60#e6f5a603c58fea980735ca3c811b9f2db45487e0" -dependencies = [ - "aes-gcm", - "alloy-consensus 0.8.0", - "alloy-eips 0.8.0", - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", - "alloy-rlp", - "alloy-serde 0.8.0", - "lazy_static", - "once_cell", - "paste", - "reth-rpc-types", - "seismic-types", - "serde", - "serde_json", -] - -[[package]] -name = "seismic-types" -version = "0.1.0" -source = "git+ssh://git@github.com/SeismicSystems/mantle.git?rev=90277e21#90277e21888c166b24966c7f27e5b269f42172f6" -dependencies = [ - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", - "lazy_static", - "once_cell", - "rand", - "serde", - "serde_json", -] - [[package]] name = "semver" version = "0.11.0" @@ -8665,36 +8287,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_with" -version = "3.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" -dependencies = [ - "base64 0.22.1", - "chrono", - "hex", - "indexmap 1.9.3", - "indexmap 2.7.0", - "serde", - "serde_derive", - "serde_json", - "serde_with_macros", - "time", -] - -[[package]] -name = "serde_with_macros" -version = "3.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 2.0.91", -] - [[package]] name = "serial_test" version = "3.2.0" @@ -8952,7 +8544,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a5aeaf7a4bd326242c909bd287291226a540b62b36fa5824880248f4b1d4d6af" dependencies = [ - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "bumpalo", "either", "num-bigint", @@ -9034,7 +8626,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b82c3659c15975cd80e5e1c44591278c230c59ad89082d797837499a4784e1b" dependencies = [ - "alloy-primitives 0.8.15 (git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60)", + "alloy-primitives", "bitflags 2.6.0", "bumpalo", "itertools 0.13.0", @@ -9100,9 +8692,6 @@ name = "spin" version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" -dependencies = [ - "lock_api", -] [[package]] name = "spki" @@ -9294,7 +8883,7 @@ dependencies = [ [[package]] name = "syn-solidity" version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=e6f5a60#e6f5a603c58fea980735ca3c811b9f2db45487e0" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=397aa22#397aa2228658d502f7033336cead6811e03a8f6e" dependencies = [ "paste", "proc-macro2", diff --git a/Cargo.toml b/Cargo.toml index cfe0701ab..141ab5c70 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -170,16 +170,16 @@ foundry-linking = { path = "crates/linking" } # solc & compilation utilities foundry-block-explorers = { version = "0.9.0", default-features = false } foundry-compilers = { version = "0.12.8", default-features = false } -foundry-fork-db = "0.9.0" +foundry-fork-db = { git = "ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "3afb7fa" } solang-parser = "=0.3.3" solar-ast = { version = "=0.1.0", default-features = false } solar-parse = { version = "=0.1.0", default-features = false } ## revm # no default features to avoid c-kzg -revm = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "caf5496f", default-features = false } -revm-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "caf5496f", default-features = false } -revm-inspectors = { git = "ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "37ce994", features = ["serde"] } +revm = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "b504083", default-features = false } +revm-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "b504083", default-features = false } +revm-inspectors = { git = "ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "5d2952e", features = ["serde"] } ## ethers ethers-contract-abigen = { version = "2.0.14", default-features = false } @@ -210,13 +210,13 @@ alloy-node-bindings = { version = "0.8.0", default-features = false } alloy-network-primitives = { version = "0.8.0", default-features = false } ## alloy-core -alloy-dyn-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "e6f5a60", features = ["seismic", "std"] } -alloy-json-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "e6f5a60", features = ["seismic"] } -alloy-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "e6f5a60", features = ["getrandom", "rand", "seismic"] } -alloy-sol-macro-expander = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "e6f5a60", features = ["seismic"] } -alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "e6f5a60", features = ["seismic"] } -alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "e6f5a60", features = ["seismic"] } -syn-solidity = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "e6f5a60", features = ["seismic"] } +alloy-dyn-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "397aa22", features = ["seismic", "std"] } +alloy-json-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "397aa22", features = ["seismic"] } +alloy-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "397aa22", features = ["getrandom", "rand", "seismic"] } +alloy-sol-macro-expander = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "397aa22", features = ["seismic"] } +alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "397aa22", features = ["seismic"] } +alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "397aa22", features = ["seismic"] } +syn-solidity = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "397aa22", features = ["seismic"] } alloy-chains = "0.1" alloy-rlp = "0.3" @@ -293,52 +293,47 @@ url = "2" vergen = { version = "8", default-features = false } yansi = { version = "1.0", features = ["detect-tty", "detect-env"] } -# seismic-transaction -seismic-transaction = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "e6f5a60"} - [patch.crates-io] # If our dependencies depend on these things, # then this will override whatever versions they point to # and instead use our local version # seismic-revm -revm = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "caf5496f" } -revm-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "caf5496f" } - -foundry-fork-db = { git = "ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "835f3a3" } +revm = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "b504083" } +revm-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "b504083" } # seismic-alloy-core -alloy-dyn-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "e6f5a60" } -alloy-json-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "e6f5a60" } -alloy-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "e6f5a60" } -alloy-sol-macro = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "e6f5a60" } -alloy-sol-macro-expander = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "e6f5a60" } -alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "e6f5a60" } -alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "e6f5a60" } -alloy-sol-type-parser = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "e6f5a60" } - -alloy-consensus = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "97710dc" } -alloy-contract = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "97710dc" } -alloy-eips = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "97710dc" } -alloy-genesis = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "97710dc" } -alloy-json-rpc = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "97710dc" } -alloy-network = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "97710dc" } -alloy-provider = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "97710dc" } -alloy-pubsub = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "97710dc" } -alloy-rpc-client = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "97710dc" } -alloy-rpc-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "97710dc" } -alloy-rpc-types-trace = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "97710dc" } -alloy-rpc-types-eth = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "97710dc" } -alloy-serde = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "97710dc" } -alloy-signer = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "97710dc" } -alloy-signer-aws = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "97710dc" } -alloy-signer-gcp = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "97710dc" } -alloy-signer-ledger = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "97710dc" } -alloy-signer-local = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "97710dc" } -alloy-signer-trezor = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "97710dc" } -alloy-transport = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "97710dc" } -alloy-transport-http = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "97710dc" } -alloy-transport-ipc = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "97710dc" } -alloy-transport-ws = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "97710dc" } -alloy-node-bindings = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "97710dc" } -alloy-network-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "97710dc" } +alloy-dyn-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "397aa22" } +alloy-json-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "397aa22" } +alloy-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "397aa22" } +alloy-sol-macro = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "397aa22" } +alloy-sol-macro-expander = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "397aa22" } +alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "397aa22" } +alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "397aa22" } +alloy-sol-type-parser = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "397aa22" } + +alloy-consensus = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } +alloy-contract = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } +alloy-eips = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } +alloy-genesis = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } +alloy-json-rpc = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } +alloy-network = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } +alloy-provider = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } +alloy-pubsub = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } +alloy-rpc-client = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } +alloy-rpc-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } +alloy-rpc-types-trace = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } +alloy-rpc-types-eth = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } +alloy-serde = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } +alloy-signer = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } +alloy-signer-aws = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } +alloy-signer-gcp = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } +alloy-signer-ledger = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } +alloy-signer-local = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } +alloy-signer-trezor = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } +alloy-transport = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } +alloy-transport-http = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } +alloy-transport-ipc = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } +alloy-transport-ws = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } +alloy-node-bindings = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } +alloy-network-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } diff --git a/crates/anvil/Cargo.toml b/crates/anvil/Cargo.toml index 090cdda33..3343a71f8 100644 --- a/crates/anvil/Cargo.toml +++ b/crates/anvil/Cargo.toml @@ -113,7 +113,6 @@ ctrlc = { version = "3", optional = true } fdlimit = { version = "0.3", optional = true } clap_complete_fig = "4" -seismic-transaction.workspace = true tee_service_api = { git = "ssh://git@github.com/SeismicSystems/TEEService.git", package = "tee_service_api", rev = "9ab28c87247b876f5875c470f39bd3a3b07b3e8b"} [target.'cfg(unix)'.dependencies] diff --git a/crates/anvil/core/Cargo.toml b/crates/anvil/core/Cargo.toml index 12c9c28f2..c222c39f7 100644 --- a/crates/anvil/core/Cargo.toml +++ b/crates/anvil/core/Cargo.toml @@ -47,7 +47,6 @@ secp256k1 = { version = "0.29", default-features = false, features = [ "recovery", ] } -seismic-transaction.workspace = true tee_service_api = { git = "ssh://git@github.com/SeismicSystems/TEEService.git", package = "tee_service_api", rev = "9ab28c87247b876f5875c470f39bd3a3b07b3e8b"} [features] diff --git a/crates/anvil/core/src/eth/transaction/mod.rs b/crates/anvil/core/src/eth/transaction/mod.rs index 83b6550f0..a5f93360b 100644 --- a/crates/anvil/core/src/eth/transaction/mod.rs +++ b/crates/anvil/core/src/eth/transaction/mod.rs @@ -34,8 +34,6 @@ use std::{ ops::{Deref, Mul}, }; -use seismic_transaction::transaction::SeismicTransaction; - pub mod crypto; pub mod optimism; @@ -96,9 +94,7 @@ pub fn transaction_request_to_typed( is_system_transaction: other.get_deserialized::("isSystemTx")?.ok()?, input: input.into_input().unwrap_or_default(), })); - } else if transaction_type == Some(SeismicTransaction::TRANSACTION_TYPE) || - has_seismic_fields(&other) - { + } else if transaction_type == Some(TxSeismic::TX_TYPE) || has_seismic_fields(&other) { return Some(TypedTransactionRequest::Seismic(TxSeismic { nonce: nonce.unwrap_or_default(), gas_price: gas_price.unwrap_or_default(), @@ -814,7 +810,7 @@ impl TypedTransaction { Self::EIP4844(_) => Some(3), Self::EIP7702(_) => Some(4), Self::Deposit(_) => Some(0x7E), - Self::Seismic(_) => Some(SeismicTransaction::TRANSACTION_TYPE), + Self::Seismic(_) => Some(TxSeismic::TX_TYPE), } } @@ -1365,7 +1361,7 @@ impl From>> for OtsReceipt { TypedReceipt::EIP4844(_) => 0x03, TypedReceipt::EIP7702(_) => 0x04, TypedReceipt::Deposit(_) => 0x7E, - TypedReceipt::Seismic(_) => SeismicTransaction::TRANSACTION_TYPE, + TypedReceipt::Seismic(_) => TxSeismic::TX_TYPE, } as u8; let receipt = ReceiptWithBloom::>::from(value); let status = receipt.status(); @@ -1498,7 +1494,7 @@ impl Encodable2718 for TypedReceipt { Self::EIP4844(_) => Some(3), Self::EIP7702(_) => Some(4), Self::Deposit(_) => Some(0x7E), - Self::Seismic(_) => Some(SeismicTransaction::TRANSACTION_TYPE), + Self::Seismic(_) => Some(TxSeismic::TX_TYPE), } } @@ -1605,7 +1601,7 @@ pub fn convert_to_anvil_receipt(receipt: AnyTransactionReceipt) -> Option TypedReceipt::Seismic(receipt_with_bloom), + TxSeismic::TX_TYPE => TypedReceipt::Seismic(receipt_with_bloom), _ => return None, }, }) diff --git a/crates/anvil/src/eth/backend/mem/mod.rs b/crates/anvil/src/eth/backend/mem/mod.rs index efcb59d6e..52902940d 100644 --- a/crates/anvil/src/eth/backend/mem/mod.rs +++ b/crates/anvil/src/eth/backend/mem/mod.rs @@ -35,7 +35,8 @@ use crate::{ }; use alloy_chains::NamedChain; use alloy_consensus::{ - Account, Header, Receipt, ReceiptWithBloom, Signed, Transaction as TransactionTrait, TxEnvelope, + transaction::TxSeismic, Account, Header, Receipt, ReceiptWithBloom, Signed, + Transaction as TransactionTrait, TxEnvelope, }; use alloy_eips::eip4844::MAX_BLOBS_PER_BLOCK; use alloy_network::{ @@ -114,7 +115,6 @@ use storage::{Blockchain, MinedTransaction, DEFAULT_HISTORY_LIMIT}; use tokio::sync::RwLock as AsyncRwLock; use secp256k1::PublicKey; -use seismic_transaction::transaction::SeismicTransaction; pub mod cache; pub mod fork_db; @@ -1519,9 +1519,7 @@ impl Backend { let caller = from.unwrap_or_default(); let to = to.as_ref().and_then(TxKind::to); let blob_hashes = blob_versioned_hashes.unwrap_or_default(); - if Some(SeismicTransaction::TRANSACTION_TYPE) == request.transaction_type && - seismic_pub_key.is_some() - { + if Some(TxSeismic::TX_TYPE) == request.transaction_type && seismic_pub_key.is_some() { let public_key = seismic_pub_key.unwrap(); let decrypted_input = anvil_core::eth::transaction::crypto::server_decrypt( &public_key, diff --git a/crates/anvil/tests/it/seismic.rs b/crates/anvil/tests/it/seismic.rs index 96d5048ef..1e0350c04 100644 --- a/crates/anvil/tests/it/seismic.rs +++ b/crates/anvil/tests/it/seismic.rs @@ -3,12 +3,26 @@ use alloy_primitives::{hex, Bytes, B256, U256}; use alloy_provider::Provider; use alloy_rlp::Encodable; use alloy_rpc_types::TransactionRequest; -use alloy_serde::WithOtherFields; +use alloy_serde::{OtherFields, WithOtherFields}; use anvil::{spawn, NodeConfig}; use anvil_core::eth::transaction::crypto; -use seismic_transaction::types::SeismicTransactionFields; +use serde::{Deserialize, Serialize}; use std::fs; +/// Seismic specific transaction field(s) +#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)] +struct SeismicTransactionFields { + /// The secret data for the transaction + #[serde(rename = "seismicInput")] + pub seismic_input: Bytes, +} + +impl From for OtherFields { + fn from(value: SeismicTransactionFields) -> Self { + serde_json::to_value(value).unwrap().try_into().unwrap() + } +} + // common utils pub const TEST_BYTECODE_PATH: &str = "/tests/it/seismic_test_bytecode.txt"; pub const SET_NUMBER_SELECTOR: &str = "3fb5c1cb"; // setNumber(uint256) From b333b35451ea813f29a0cb203e0ef18f76876bde Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Thu, 9 Jan 2025 12:52:30 -0500 Subject: [PATCH 026/130] update commits to revm-inspectors and foundry-fork-db (#56) --- Cargo.lock | 4 ++-- Cargo.toml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 622a7edcd..83da10da1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4173,7 +4173,7 @@ dependencies = [ [[package]] name = "foundry-fork-db" version = "0.9.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git?rev=3afb7fa#3afb7fac1aba5b2fb0f38d85dd8a877abd8a477b" +source = "git+ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git?rev=fe0e531#fe0e531f56441613d96695f2b2be0605818ab495" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -7540,7 +7540,7 @@ dependencies = [ [[package]] name = "revm-inspectors" version = "0.13.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git?rev=5d2952e#5d2952e43cc75d4e94e8679d95d4f1f671239df9" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git?rev=c5afa19#c5afa19a5ac405cb5cb761fe1af13cac4128a781" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", diff --git a/Cargo.toml b/Cargo.toml index 141ab5c70..282599d42 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -170,7 +170,7 @@ foundry-linking = { path = "crates/linking" } # solc & compilation utilities foundry-block-explorers = { version = "0.9.0", default-features = false } foundry-compilers = { version = "0.12.8", default-features = false } -foundry-fork-db = { git = "ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "3afb7fa" } +foundry-fork-db = { git = "ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "fe0e531" } solang-parser = "=0.3.3" solar-ast = { version = "=0.1.0", default-features = false } solar-parse = { version = "=0.1.0", default-features = false } @@ -179,7 +179,7 @@ solar-parse = { version = "=0.1.0", default-features = false } # no default features to avoid c-kzg revm = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "b504083", default-features = false } revm-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "b504083", default-features = false } -revm-inspectors = { git = "ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "5d2952e", features = ["serde"] } +revm-inspectors = { git = "ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "c5afa19", features = ["serde"] } ## ethers ethers-contract-abigen = { version = "2.0.14", default-features = false } From 9c5bb54bc2056ec0a451d6f513c6a0984318a136 Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Thu, 9 Jan 2025 14:42:24 -0500 Subject: [PATCH 027/130] deps: remove ssh-based dependencies, only use patch.crates-io (#57) --- Cargo.lock | 22 +++++++++++----------- Cargo.toml | 43 ++++++++++++++++++++++++------------------- 2 files changed, 35 insertions(+), 30 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 83da10da1..893e7b3e4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -161,7 +161,7 @@ dependencies = [ [[package]] name = "alloy-dyn-abi" version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=397aa22#397aa2228658d502f7033336cead6811e03a8f6e" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=a273736#a273736b8410f1ec81cfd45ca4c080a72143a43c" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -237,7 +237,7 @@ dependencies = [ [[package]] name = "alloy-json-abi" version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=397aa22#397aa2228658d502f7033336cead6811e03a8f6e" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=a273736#a273736b8410f1ec81cfd45ca4c080a72143a43c" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -313,7 +313,7 @@ dependencies = [ [[package]] name = "alloy-primitives" version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=397aa22#397aa2228658d502f7033336cead6811e03a8f6e" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=a273736#a273736b8410f1ec81cfd45ca4c080a72143a43c" dependencies = [ "alloy-rlp", "arbitrary", @@ -668,7 +668,7 @@ dependencies = [ [[package]] name = "alloy-sol-macro" version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=397aa22#397aa2228658d502f7033336cead6811e03a8f6e" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=a273736#a273736b8410f1ec81cfd45ca4c080a72143a43c" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", @@ -681,7 +681,7 @@ dependencies = [ [[package]] name = "alloy-sol-macro-expander" version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=397aa22#397aa2228658d502f7033336cead6811e03a8f6e" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=a273736#a273736b8410f1ec81cfd45ca4c080a72143a43c" dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", @@ -699,7 +699,7 @@ dependencies = [ [[package]] name = "alloy-sol-macro-input" version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=397aa22#397aa2228658d502f7033336cead6811e03a8f6e" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=a273736#a273736b8410f1ec81cfd45ca4c080a72143a43c" dependencies = [ "alloy-json-abi", "const-hex", @@ -715,7 +715,7 @@ dependencies = [ [[package]] name = "alloy-sol-type-parser" version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=397aa22#397aa2228658d502f7033336cead6811e03a8f6e" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=a273736#a273736b8410f1ec81cfd45ca4c080a72143a43c" dependencies = [ "serde", "winnow", @@ -724,7 +724,7 @@ dependencies = [ [[package]] name = "alloy-sol-types" version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=397aa22#397aa2228658d502f7033336cead6811e03a8f6e" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=a273736#a273736b8410f1ec81cfd45ca4c080a72143a43c" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -4173,7 +4173,7 @@ dependencies = [ [[package]] name = "foundry-fork-db" version = "0.9.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git?rev=fe0e531#fe0e531f56441613d96695f2b2be0605818ab495" +source = "git+ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git?rev=cd54596#cd54596038b5bb3ad86c28c293fc5e4c5e1ddf52" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -7540,7 +7540,7 @@ dependencies = [ [[package]] name = "revm-inspectors" version = "0.13.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git?rev=c5afa19#c5afa19a5ac405cb5cb761fe1af13cac4128a781" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git?rev=19828b8#19828b8cf93a3b918324f8ef70e8f3411f516846" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -8883,7 +8883,7 @@ dependencies = [ [[package]] name = "syn-solidity" version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=397aa22#397aa2228658d502f7033336cead6811e03a8f6e" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=a273736#a273736b8410f1ec81cfd45ca4c080a72143a43c" dependencies = [ "paste", "proc-macro2", diff --git a/Cargo.toml b/Cargo.toml index 282599d42..0345d56b8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -170,16 +170,16 @@ foundry-linking = { path = "crates/linking" } # solc & compilation utilities foundry-block-explorers = { version = "0.9.0", default-features = false } foundry-compilers = { version = "0.12.8", default-features = false } -foundry-fork-db = { git = "ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "fe0e531" } +foundry-fork-db = "0.9.0" solang-parser = "=0.3.3" solar-ast = { version = "=0.1.0", default-features = false } solar-parse = { version = "=0.1.0", default-features = false } ## revm # no default features to avoid c-kzg -revm = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "b504083", default-features = false } -revm-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "b504083", default-features = false } -revm-inspectors = { git = "ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "c5afa19", features = ["serde"] } +revm = { version = "18.0.0", default-features = false } +revm-primitives = { version = "14.0.0", default-features = false } +revm-inspectors = { version = "0.13.0", features = ["serde"] } ## ethers ethers-contract-abigen = { version = "2.0.14", default-features = false } @@ -210,13 +210,13 @@ alloy-node-bindings = { version = "0.8.0", default-features = false } alloy-network-primitives = { version = "0.8.0", default-features = false } ## alloy-core -alloy-dyn-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "397aa22", features = ["seismic", "std"] } -alloy-json-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "397aa22", features = ["seismic"] } -alloy-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "397aa22", features = ["getrandom", "rand", "seismic"] } -alloy-sol-macro-expander = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "397aa22", features = ["seismic"] } -alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "397aa22", features = ["seismic"] } -alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "397aa22", features = ["seismic"] } -syn-solidity = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "397aa22", features = ["seismic"] } +alloy-dyn-abi = { version = "0.8.15", features = ["seismic", "std"] } +alloy-json-abi = { version = "0.8.15", features = ["seismic"] } +alloy-primitives = { version = "0.8.15", features = ["getrandom", "rand", "seismic"] } +alloy-sol-macro-expander = { version = "0.8.15", features = ["seismic"] } +alloy-sol-macro-input = { version = "0.8.15", features = ["seismic"] } +alloy-sol-types = { version = "0.8.15", features = ["seismic"] } +syn-solidity = { version = "0.8.15", features = ["seismic"] } alloy-chains = "0.1" alloy-rlp = "0.3" @@ -297,20 +297,25 @@ yansi = { version = "1.0", features = ["detect-tty", "detect-env"] } # If our dependencies depend on these things, # then this will override whatever versions they point to # and instead use our local version +foundry-fork-db = { git = "ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "cd54596" } # seismic-revm revm = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "b504083" } revm-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "b504083" } +revm-interpreter = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "b504083" } + +# seismic-revm-inspectors +revm-inspectors = { git = "ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "19828b8" } # seismic-alloy-core -alloy-dyn-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "397aa22" } -alloy-json-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "397aa22" } -alloy-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "397aa22" } -alloy-sol-macro = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "397aa22" } -alloy-sol-macro-expander = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "397aa22" } -alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "397aa22" } -alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "397aa22" } -alloy-sol-type-parser = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "397aa22" } +alloy-dyn-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a273736" } +alloy-json-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a273736" } +alloy-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a273736" } +alloy-sol-macro = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a273736" } +alloy-sol-macro-expander = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a273736" } +alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a273736" } +alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a273736" } +alloy-sol-type-parser = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a273736" } alloy-consensus = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } alloy-contract = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } From a00e7414ae5f23e6cac578c9146a42f85fc5190f Mon Sep 17 00:00:00 2001 From: Ameya Deshmukh Date: Sat, 11 Jan 2025 02:17:26 +0530 Subject: [PATCH 028/130] Conditional `sfoundryup` (#54) Co-authored-by: Christian Drappi --- sfoundryup/README.md | 48 +++++++++++++++++++++++--------------- sfoundryup/sfoundryup | 54 ++++++++++++++++++++++++++++++------------- 2 files changed, 68 insertions(+), 34 deletions(-) diff --git a/sfoundryup/README.md b/sfoundryup/README.md index 5329036a5..9584f1c64 100644 --- a/sfoundryup/README.md +++ b/sfoundryup/README.md @@ -1,46 +1,58 @@ # `sfoundryup` Install, update, or revert to a specific branch, fork, or version of Seismic Foundry tools with ease. -## Installing +## For developers building on top of Seismic +### Installing Before installing, ensure you have a **GitHub Personal Access Token (PAT)** with repository access. Export the token as an environment variable: ```bash export SEISMIC_PAT=your_personal_access_token ``` Then, run the following command to install sfoundryup: ```bash -curl -s https://$SEISMIC_PAT@raw.githubusercontent.com/SeismicSystems/seismic-foundry/main/sfoundryup | bash +curl -s https://$SEISMIC_PAT@raw.githubusercontent.com/SeismicSystems/seismic-foundry/seismic/sfoundryup | bash ``` ## Usage -To install the **nightly** version of Seismic Foundry tools: +### Install Seismic Foundry as a developer building on top of Seismic: ```bash sfoundryup ``` -### Install a specific **version** (in this case the nightly version): +## For Seismic core team members +Create the `~/.seismic/bin` directory if not already created ```bash -sfoundryup --version nightly +mkdir -p ~/.seismic/bin ``` -### Install a specific **branch** (in this case the seismic branch): +Add `~/.seismic/bin` to your shell (`~/.bashrc`, `~/.zshrc`, etc.) ```bash -sfoundryup --branch seismic +echo 'export PATH="$PATH:$HOME/.seismic/bin"' >> ~/.bashrc ## Replace this with your shell configuration file ``` -### Install a **fork's main branch** (in this case YourUser/seismic-foundry's main branch): +Clone the Seismic Foundry Repository if not already cloned to your local machine ```bash -sfoundryup --repo YourUser/seismic-foundry +git clone git@github.com:SeismicSystems/seismic-foundry.git ``` -### Install a **specific branch in a fork** (in this case the custom-branch branch's latest commit in YourUser/seismic-foundry): +Navigate to the Repository ```bash -sfoundryup --repo YourUser/seismic-foundry --branch custom-branch +cd seismic-foundry ``` -### Install a **specific Pull Request**: +Pull the Latest Changes on the `seismic` Branch: ```bash -sfoundryup --pr 123 + git checkout seismic + git pull origin seismic ``` -### Install from a **specific commit**: +Copy `sfoundryup` to `~/.seismic/bin`: ```bash -sfoundryup -C abcdef1234567890 + cp sfoundryup/sfoundryup ~/.seismic/bin/ ``` -### Install from a **local directory or repository** (e.g., one located at ~/git/seismic-foundry, assuming you're in the home directory): +Make the Script Executable: ```bash -sfoundryup --path ./git/seismic-foundry + chmod +x ~/.seismic/bin/sfoundryup ``` -**Tip**: All flags have a single-character shorthand equivalent! You can use -v instead of --version, etc. +Reload Your Shell Configuration or start another terminal instance: +```bash + source ~/.bashrc ## Replace this with your shell configuration file + ``` +## Usage +### Install Seismic Foundry as a Seismic core team member: +```bash +sfoundryup --core +``` +**Tip**: All flags except `--core` have a single-character shorthand equivalent! You can use -v instead of --version, etc. diff --git a/sfoundryup/sfoundryup b/sfoundryup/sfoundryup index 5f8e36c20..959c39517 100755 --- a/sfoundryup/sfoundryup +++ b/sfoundryup/sfoundryup @@ -12,20 +12,12 @@ BINS=(sforge scast sanvil schisel) export RUSTFLAGS="${RUSTFLAGS:--C target-cpu=native}" main() { - # Ensure SEISMIC_PAT is set - if [[ -z "$SEISMIC_PAT" ]]; then - echo "Error: SEISMIC_PAT environment variable is not set. Please export it with your GitHub Personal Access Token." - echo "Example: export SEISMIC_PAT=your_personal_access_token" - exit 1 - fi - - need_cmd git - need_cmd curl - need_cmd jq - + # Default to devs mode + SEISMIC_MODE="devs" while [[ -n $1 ]]; do case $1 in --) shift; break;; + --core) SEISMIC_MODE="core";; -v|--version) shift; SEISMICUP_VERSION=$1;; -p|--path) shift; SEISMICUP_LOCAL_REPO=$1;; -j|--jobs) shift; SEISMICUP_JOBS=$1;; @@ -42,6 +34,19 @@ main() { shift done + echo "SEISMIC_MODE: $SEISMIC_MODE" + + # Ensure SEISMIC_PAT is set if not using seismic-core + if [[ -z "$SEISMIC_PAT" && "$SEISMIC_MODE" != "core" ]]; then + echo "Error: SEISMIC_PAT environment variable is not set. Please export it with your GitHub Personal Access Token." + echo "Example: export SEISMIC_PAT=your_personal_access_token" + exit 1 + fi + + need_cmd git + need_cmd curl + need_cmd jq + CARGO_BUILD_ARGS=(--release) if [ -n "$SEISMICUP_JOBS" ]; then @@ -63,6 +68,11 @@ main() { install_ssolc() { echo "Starting ssolc installation..." + if [[ "$SEISMIC_MODE" == "core" ]]; then + echo "Please ensure you have 'ssolc' installed in /usr/local/bin." + return + fi + # Ensure SEISMIC_PAT is set if [[ -z "$SEISMIC_PAT" ]]; then echo "Error: SEISMIC_PAT environment variable is not set. Please provide a valid GitHub Personal Access Token." @@ -135,7 +145,13 @@ install_from_remote_repo() { if [ ! -d "$REPO_PATH" ]; then ensure mkdir -p "$SEISMIC_DIR" say "Cloning the repository using PAT..." + if [[ "$SEISMIC_MODE" == "core" ]]; then + # Use SSH for core + ensure git clone "git@github.com:$SEISMICUP_REPO.git" "$REPO_PATH" + else + # Use HTTPS for devs ensure git clone "https://$SEISMIC_PAT@github.com/$SEISMICUP_REPO.git" "$REPO_PATH" + fi fi # Fetch and checkout the branch @@ -146,11 +162,16 @@ install_from_remote_repo() { # Use the git CLI to fetch dependencies export CARGO_NET_GIT_FETCH_WITH_CLI=true - # For Seismic dependencies, remap the use of SSH to use HTTPS + access token - # First remove any previous remapping with old access token - ensure git config --global --get-regexp '^url\.https://.*@github\.com/SeismicSystems\.insteadOf' | cut -d' ' -f1 | while read -r key; do git config --global --unset "$key"; done || true - # Then add URL remapping - ensure git config --global url."https://$SEISMIC_PAT@github.com/SeismicSystems".insteadOf "ssh://git@github.com/SeismicSystems" + if [[ "$SEISMIC_MODE" == "core" ]]; then + echo "Using SSH dependencies for Seismic core team members" + else + echo "Using HTTPS dependencies for Seismic developers" + # For Seismic dependencies, remap the use of SSH to use HTTPS + access token + # First remove any previous remapping with old access token + ensure git config --global --get-regexp '^url\.https://.*@github\.com/SeismicSystems\.insteadOf' | cut -d' ' -f1 | while read -r key; do git config --global --unset "$key"; done || true + # Then add URL remapping + ensure git config --global url."https://$SEISMIC_PAT@github.com/SeismicSystems".insteadOf "ssh://git@github.com/SeismicSystems" + fi # Build the binaries ensure cargo build --bins "${CARGO_BUILD_ARGS[@]}" @@ -176,6 +197,7 @@ USAGE: sfoundryup OPTIONS: + --core Install Seismic Foundry for core Seismic team members (SSH dependencies) -h, --help Print help information -v, --version Install a specific version from built binaries -p, --path Build and install a local repository From 4f17e58f95671371a870525485778572537c0208 Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Mon, 13 Jan 2025 09:58:23 -0500 Subject: [PATCH 029/130] Seismic TX: don't RLP encode plaintext (#59) --- crates/anvil/core/src/eth/transaction/mod.rs | 8 ++++---- crates/anvil/tests/it/seismic.rs | 14 +++----------- 2 files changed, 7 insertions(+), 15 deletions(-) diff --git a/crates/anvil/core/src/eth/transaction/mod.rs b/crates/anvil/core/src/eth/transaction/mod.rs index a5f93360b..659b0cbf3 100644 --- a/crates/anvil/core/src/eth/transaction/mod.rs +++ b/crates/anvil/core/src/eth/transaction/mod.rs @@ -606,10 +606,10 @@ impl PendingTransaction { let public_key = crypto::recover_public_key(tx).expect("Failed to recover public key"); - let decrypted_input = crypto::server_decrypt(&public_key, &input.as_ref(), *nonce) - .expect("Failed to decrypt seismic tx"); - let data = Bytes::decode(&mut decrypted_input.as_slice()) - .expect("Failed to RLP decode decrypted input"); + let data = Bytes::from( + crypto::server_decrypt(&public_key, &input.as_ref(), *nonce) + .expect("Failed to decrypt seismic tx"), + ); TxEnv { caller, transact_to: transact_to(&to), diff --git a/crates/anvil/tests/it/seismic.rs b/crates/anvil/tests/it/seismic.rs index 1e0350c04..524234b70 100644 --- a/crates/anvil/tests/it/seismic.rs +++ b/crates/anvil/tests/it/seismic.rs @@ -51,12 +51,6 @@ pub fn get_input_data(selector: &str, value: B256) -> Bytes { input_data.into() } -fn rlp_encode(plaintext: Bytes) -> Vec { - let mut out = Vec::new(); - plaintext.encode(&mut out); - out -} - #[tokio::test(flavor = "multi_thread")] async fn test_seismic_transaction() { let (api, handle) = spawn(NodeConfig::test()).await; @@ -84,8 +78,7 @@ async fn test_seismic_transaction() { let to = receipt.contract_address.unwrap(); - let encoded_setnumber_data = - rlp_encode(get_input_data(SET_NUMBER_SELECTOR, B256::from(U256::from(10)))); + let encoded_setnumber_data = get_input_data(SET_NUMBER_SELECTOR, B256::from(U256::from(10))); let set_data = crypto::client_encrypt(&secret_key, &encoded_setnumber_data, 1).unwrap(); let tx = TransactionRequest::default() @@ -113,8 +106,7 @@ async fn test_seismic_transaction() { > = provider.get_transaction_receipt(pending_set.tx_hash().to_owned()).await.unwrap(); assert!(receipt.is_some()); - let encoded_increment_data = - rlp_encode(get_input_data(INCREMENT_SELECTOR, B256::from(U256::from(10)))); + let encoded_increment_data = get_input_data(INCREMENT_SELECTOR, B256::from(U256::from(10))); let increment_data = crypto::client_encrypt(&secret_key, &encoded_increment_data, 2).unwrap(); let tx = TransactionRequest::default() @@ -137,7 +129,7 @@ async fn test_seismic_transaction() { provider.get_transaction_receipt(pending_increment.tx_hash().to_owned()).await.unwrap(); assert!(receipt.is_some()); - let encoded_getnumber_data = rlp_encode(hex::decode(GET_NUMBER_SELECTOR).unwrap().into()); + let encoded_getnumber_data = hex::decode(GET_NUMBER_SELECTOR).unwrap(); let get_data = crypto::client_encrypt(&secret_key, &encoded_getnumber_data, 3).unwrap(); let tx = TransactionRequest::default() From 959fb9a2c86049ef878c3914c81fce88d7b8a448 Mon Sep 17 00:00:00 2001 From: ssolit <49683577+ssolit@users.noreply.github.com> Date: Tue, 14 Jan 2025 17:26:46 -0500 Subject: [PATCH 030/130] (README) Manual install instructions: add --locked to cargo command (#61) --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3a0cbb953..cf0fc406f 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ To build `sforge` from source, run this from the root of this repository: ```sh git checkout seismic -cargo install --root=$HOME/.seismic --profile dev --path ./crates/forge +cargo install --root=$HOME/.seismic --profile dev --path ./crates/forge --locked ``` ### Seismic Anvil @@ -25,7 +25,7 @@ To build `sanvil` from source, run this from the root of this repository: ```sh git checkout seismic -cargo install --root=$HOME/.seismic --profile dev --path ./crates/anvil +cargo install --root=$HOME/.seismic --profile dev --path ./crates/anvil --locked ``` ### Merging in upstream foundry-rs/main From b2692aae4f853e91996e1ea00129826daf91258c Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Tue, 14 Jan 2025 18:17:35 -0500 Subject: [PATCH 031/130] seismic tx: encrypt/decrypt with ephemeral key (#60) --- Cargo.lock | 62 +++++++-------- Cargo.toml | 50 ++++++------ .../anvil/core/src/eth/transaction/crypto.rs | 44 +++++++++++ crates/anvil/core/src/eth/transaction/mod.rs | 77 +++++++++++++------ crates/anvil/tests/it/seismic.rs | 37 +++++---- crates/evm/core/src/utils.rs | 1 + 6 files changed, 177 insertions(+), 94 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 893e7b3e4..421757964 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "alloy-consensus" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" dependencies = [ "alloy-eips", "alloy-primitives", @@ -128,7 +128,7 @@ dependencies = [ [[package]] name = "alloy-consensus-any" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" dependencies = [ "alloy-consensus", "alloy-eips", @@ -141,7 +141,7 @@ dependencies = [ [[package]] name = "alloy-contract" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -209,7 +209,7 @@ dependencies = [ [[package]] name = "alloy-eips" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" dependencies = [ "alloy-eip2930", "alloy-eip7702", @@ -226,7 +226,7 @@ dependencies = [ [[package]] name = "alloy-genesis" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" dependencies = [ "alloy-primitives", "alloy-serde", @@ -248,7 +248,7 @@ dependencies = [ [[package]] name = "alloy-json-rpc" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -261,7 +261,7 @@ dependencies = [ [[package]] name = "alloy-network" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -285,7 +285,7 @@ dependencies = [ [[package]] name = "alloy-network-primitives" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" dependencies = [ "alloy-consensus", "alloy-eips", @@ -297,7 +297,7 @@ dependencies = [ [[package]] name = "alloy-node-bindings" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" dependencies = [ "alloy-genesis", "alloy-primitives", @@ -344,7 +344,7 @@ dependencies = [ [[package]] name = "alloy-provider" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" dependencies = [ "alloy-chains", "alloy-consensus", @@ -386,7 +386,7 @@ dependencies = [ [[package]] name = "alloy-pubsub" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -426,7 +426,7 @@ dependencies = [ [[package]] name = "alloy-rpc-client" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -451,7 +451,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" dependencies = [ "alloy-primitives", "alloy-rpc-types-anvil", @@ -466,7 +466,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -477,7 +477,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -487,7 +487,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-debug" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" dependencies = [ "alloy-primitives", "serde", @@ -496,7 +496,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-engine" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" dependencies = [ "alloy-consensus", "alloy-eips", @@ -513,7 +513,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -532,7 +532,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-trace" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -545,7 +545,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-txpool" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -556,7 +556,7 @@ dependencies = [ [[package]] name = "alloy-serde" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" dependencies = [ "alloy-primitives", "serde", @@ -566,7 +566,7 @@ dependencies = [ [[package]] name = "alloy-signer" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" dependencies = [ "alloy-dyn-abi", "alloy-primitives", @@ -581,7 +581,7 @@ dependencies = [ [[package]] name = "alloy-signer-aws" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" dependencies = [ "alloy-consensus", "alloy-network", @@ -598,7 +598,7 @@ dependencies = [ [[package]] name = "alloy-signer-gcp" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" dependencies = [ "alloy-consensus", "alloy-network", @@ -615,7 +615,7 @@ dependencies = [ [[package]] name = "alloy-signer-ledger" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -634,7 +634,7 @@ dependencies = [ [[package]] name = "alloy-signer-local" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" dependencies = [ "alloy-consensus", "alloy-network", @@ -652,7 +652,7 @@ dependencies = [ [[package]] name = "alloy-signer-trezor" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" dependencies = [ "alloy-consensus", "alloy-network", @@ -736,7 +736,7 @@ dependencies = [ [[package]] name = "alloy-transport" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" dependencies = [ "alloy-json-rpc", "base64 0.22.1", @@ -755,7 +755,7 @@ dependencies = [ [[package]] name = "alloy-transport-http" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -769,7 +769,7 @@ dependencies = [ [[package]] name = "alloy-transport-ipc" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" dependencies = [ "alloy-json-rpc", "alloy-pubsub", @@ -789,7 +789,7 @@ dependencies = [ [[package]] name = "alloy-transport-ws" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=3206d90#3206d9064cf8e527c7349c5eeb5271f1da508912" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" dependencies = [ "alloy-pubsub", "alloy-transport", diff --git a/Cargo.toml b/Cargo.toml index 0345d56b8..c7390ae26 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -317,28 +317,28 @@ alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-all alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a273736" } alloy-sol-type-parser = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a273736" } -alloy-consensus = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } -alloy-contract = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } -alloy-eips = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } -alloy-genesis = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } -alloy-json-rpc = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } -alloy-network = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } -alloy-provider = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } -alloy-pubsub = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } -alloy-rpc-client = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } -alloy-rpc-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } -alloy-rpc-types-trace = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } -alloy-rpc-types-eth = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } -alloy-serde = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } -alloy-signer = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } -alloy-signer-aws = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } -alloy-signer-gcp = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } -alloy-signer-ledger = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } -alloy-signer-local = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } -alloy-signer-trezor = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } -alloy-transport = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } -alloy-transport-http = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } -alloy-transport-ipc = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } -alloy-transport-ws = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } -alloy-node-bindings = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } -alloy-network-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "3206d90" } +alloy-consensus = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } +alloy-contract = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } +alloy-eips = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } +alloy-genesis = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } +alloy-json-rpc = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } +alloy-network = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } +alloy-provider = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } +alloy-pubsub = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } +alloy-rpc-client = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } +alloy-rpc-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } +alloy-rpc-types-trace = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } +alloy-rpc-types-eth = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } +alloy-serde = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } +alloy-signer = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } +alloy-signer-aws = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } +alloy-signer-gcp = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } +alloy-signer-ledger = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } +alloy-signer-local = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } +alloy-signer-trezor = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } +alloy-transport = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } +alloy-transport-http = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } +alloy-transport-ipc = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } +alloy-transport-ws = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } +alloy-node-bindings = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } +alloy-network-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } diff --git a/crates/anvil/core/src/eth/transaction/crypto.rs b/crates/anvil/core/src/eth/transaction/crypto.rs index d02a8dd8a..a9bd5614e 100644 --- a/crates/anvil/core/src/eth/transaction/crypto.rs +++ b/crates/anvil/core/src/eth/transaction/crypto.rs @@ -95,3 +95,47 @@ pub fn recover_public_key(tx: &Signed) -> Result { inner: TransactionRequest { + chain_id, from, to, gas_price, @@ -75,6 +77,7 @@ pub fn transaction_request_to_typed( access_list, sidecar, transaction_type, + encryption_pubkey, .. }, other, @@ -94,15 +97,20 @@ pub fn transaction_request_to_typed( is_system_transaction: other.get_deserialized::("isSystemTx")?.ok()?, input: input.into_input().unwrap_or_default(), })); - } else if transaction_type == Some(TxSeismic::TX_TYPE) || has_seismic_fields(&other) { + } else if transaction_type == Some(TxSeismic::TX_TYPE) { + let encryption_pubkey = match encryption_pubkey { + Some(epk) => epk, + None => panic!("Seismic transaction is missing 'encryption_pubkey' field"), + }; return Some(TypedTransactionRequest::Seismic(TxSeismic { nonce: nonce.unwrap_or_default(), gas_price: gas_price.unwrap_or_default(), gas_limit: gas.unwrap_or_default() as u64, to: to.unwrap_or_default(), value: value.unwrap_or_default(), - chain_id: 0, - input: other.get_deserialized::("seismicInput")?.ok()?, + chain_id: chain_id.unwrap(), + input: input.input.unwrap_or_default(), + encryption_pubkey, })); } match ( @@ -193,10 +201,6 @@ fn has_optimism_fields(other: &OtherFields) -> bool { other.contains_key("isSystemTx") } -fn has_seismic_fields(other: &OtherFields) -> bool { - other.contains_key("seismicInput") -} - #[derive(Clone, Debug, PartialEq, Eq)] pub enum TypedTransactionRequest { Legacy(TxLegacy), @@ -601,11 +605,19 @@ impl PendingTransaction { } } TypedTransaction::Seismic(tx) => { - let TxSeismic { nonce, gas_price, gas_limit, to, value, chain_id, input, .. } = - &tx.tx(); + let TxSeismic { + nonce, + gas_price, + gas_limit, + to, + value, + chain_id, + input, + encryption_pubkey, + } = &tx.tx(); - let public_key = - crypto::recover_public_key(tx).expect("Failed to recover public key"); + let public_key = PublicKey::from_slice(encryption_pubkey.as_slice()) + .expect("failed to parse public key from bytes"); let data = Bytes::from( crypto::server_decrypt(&public_key, &input.as_ref(), *nonce) .expect("Failed to decrypt seismic tx"), @@ -1622,6 +1634,7 @@ mod tests { use alloy_consensus::SignableTransaction; use alloy_primitives::{b256, hex, FixedBytes, LogData}; use std::str::FromStr; + use tee_service_api::get_sample_secp256k1_pk; use super::*; @@ -1858,26 +1871,32 @@ mod tests { let _typed_tx: TypedTransaction = serde_json::from_str(tx).unwrap(); } + fn test_pubkey() -> alloy_consensus::transaction::EncryptionPublicKey { + get_sample_secp256k1_pk().serialize().into() + } + #[test] fn test_seismic_tx_encoding() { let decrypted_input = Bytes::from_str("0xfc3c2cf4943c327f19af0efaf3b07201f608dd5c8e3954399a919b72588d3872b6819ac3d13d3656cbb38833a39ffd1e73963196a1ddfa9e4a5d595fdbebb875").unwrap(); let orig_decoded_tx = TxSeismic { - chain_id: 4u64, + chain_id: 31337u64, nonce: 2, gas_price: 1000000000, gas_limit: 100000, to: Address::from_str("d3e8763675e4c425df46cc3b5c0f6cbdac396046").unwrap().into(), value: U256::from(1000000000000000u64), input: decrypted_input.clone(), + encryption_pubkey: test_pubkey(), }; - let r = U256::from_str("0xeb96ca19e8a77102767a41fc85a36afd5c61ccb09911cec5d3e86e193d9c5ae") - .unwrap(); + let r = + U256::from_str("0x1e7a28fd3647ab10173d940fe7e561f7b06185d3d6a93b83b2f210055dd27f04") + .unwrap(); let s = - U256::from_str("0x3a456401896b1b6055311536bf00a718568c744d8c1f9df59879e8350220ca18") + U256::from_str("0x779d1157c4734323923df2f41073ecb016719a577ce774ef4478c9b443caacb3") .unwrap(); - let signature = PrimitiveSignature::new(r, s, false); + let signature = PrimitiveSignature::new(r, s, true); let signed_tx: Signed = orig_decoded_tx.into_signed(signature); let signed_tt = TypedTransaction::Seismic(signed_tx); @@ -1886,25 +1905,35 @@ mod tests { signed_tt.encode(&mut encoded_tx); let encoded_bytes = Bytes::from(encoded_tx); - let reth_encoded = Bytes::from_str("0xb8b04af8ad0402843b9aca00830186a094d3e8763675e4c425df46cc3b5c0f6cbdac39604687038d7ea4c68000b840fc3c2cf4943c327f19af0efaf3b07201f608dd5c8e3954399a919b72588d3872b6819ac3d13d3656cbb38833a39ffd1e73963196a1ddfa9e4a5d595fdbebb87580a00eb96ca19e8a77102767a41fc85a36afd5c61ccb09911cec5d3e86e193d9c5aea03a456401896b1b6055311536bf00a718568c744d8c1f9df59879e8350220ca18").unwrap(); + let reth_encoded = Bytes::from_str("0xb8d44af8d1827a6902843b9aca00830186a094d3e8763675e4c425df46cc3b5c0f6cbdac39604687038d7ea4c68000b840fc3c2cf4943c327f19af0efaf3b07201f608dd5c8e3954399a919b72588d3872b6819ac3d13d3656cbb38833a39ffd1e73963196a1ddfa9e4a5d595fdbebb875a1028e76821eb4d77fd30223ca971c49738eb5b5b71eabe93f96b348fdce788ae5a001a01e7a28fd3647ab10173d940fe7e561f7b06185d3d6a93b83b2f210055dd27f04a0779d1157c4734323923df2f41073ecb016719a577ce774ef4478c9b443caacb3").unwrap(); assert_eq!(reth_encoded, encoded_bytes); } #[test] fn test_seismic_tx_decoding() { // from viem sendRawTransaction - let encoded = Bytes::from_str("0x4af89d827a69018504a817c80083033450945fbdb2315678afecb367f032d93f642f64180aa380b5cb387d170552f2fb7885ddf93294c66944d5a81e89116220f7d473ccac13a62be7763c96a24a15e40d293ac4eb2497d60737c552f101a02e74bea92f40298316cbeff63d9b9be58a1f6a84610dd873510670b9ec3d1beda07c46b32555ba225d375b0b0be549c81fca2fa86cd3e7c2530543693930fc184b").unwrap(); + let encoded = Bytes::from_str("0x4af8d1827a6902843b9aca00830186a094d3e8763675e4c425df46cc3b5c0f6cbdac39604687038d7ea4c68000b840fc3c2cf4943c327f19af0efaf3b07201f608dd5c8e3954399a919b72588d3872b6819ac3d13d3656cbb38833a39ffd1e73963196a1ddfa9e4a5d595fdbebb875a1028e76821eb4d77fd30223ca971c49738eb5b5b71eabe93f96b348fdce788ae5a001a01e7a28fd3647ab10173d940fe7e561f7b06185d3d6a93b83b2f210055dd27f04a0779d1157c4734323923df2f41073ecb016719a577ce774ef4478c9b443caacb3").unwrap(); let mut buf = encoded.as_ref(); let decoded_tx = TypedTransaction::decode_2718(&mut buf).unwrap(); - let sighash = match &decoded_tx { - TypedTransaction::Seismic(tx) => tx.signature_hash(), - _ => unreachable!(), - }; + let expected_sighash = FixedBytes::<32>::from_str( - "cb3b67b55eea90d2970fc853d63d2ffb0867da325e94f66f75cddc8b2ce4de0b", + "ab1ddfbb9c83e88fae2eb3d14835d0ede2a791072d920a57bc2ffab83564c765", ) .unwrap(); - assert_eq!(sighash, expected_sighash); + match &decoded_tx { + TypedTransaction::Seismic(tx) => { + assert_eq!(tx.signature_hash(), expected_sighash); + assert_eq!( + tx.tx().encryption_pubkey, + alloy_consensus::transaction::EncryptionPublicKey::from_str( + "0x028e76821eb4d77fd30223ca971c49738eb5b5b71eabe93f96b348fdce788ae5a0" + ) + .unwrap() + ); + } + _ => unreachable!(), + }; + let sender = decoded_tx.recover().unwrap(); let expected_sender = Address::from_str("f39fd6e51aad88f6f4ce6ab8827279cfffb92266").unwrap(); diff --git a/crates/anvil/tests/it/seismic.rs b/crates/anvil/tests/it/seismic.rs index 524234b70..b75da5b1e 100644 --- a/crates/anvil/tests/it/seismic.rs +++ b/crates/anvil/tests/it/seismic.rs @@ -1,20 +1,21 @@ +use alloy_consensus::transaction::TxSeismic; use alloy_network::TransactionBuilder; use alloy_primitives::{hex, Bytes, B256, U256}; use alloy_provider::Provider; -use alloy_rlp::Encodable; use alloy_rpc_types::TransactionRequest; use alloy_serde::{OtherFields, WithOtherFields}; use anvil::{spawn, NodeConfig}; use anvil_core::eth::transaction::crypto; use serde::{Deserialize, Serialize}; use std::fs; +use tee_service_api::{get_sample_secp256k1_pk, get_sample_secp256k1_sk}; /// Seismic specific transaction field(s) #[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)] struct SeismicTransactionFields { - /// The secret data for the transaction - #[serde(rename = "seismicInput")] - pub seismic_input: Bytes, + /// Encryption public key + #[serde(rename = "encryptionPubkey")] + pub encryption_pubkey: Bytes, } impl From for OtherFields { @@ -74,23 +75,26 @@ async fn test_seismic_transaction() { let accounts: Vec<_> = handle.dev_wallets().collect(); let from = accounts[0].address(); - let secret_key = crypto::secret_key(&accounts[0].to_bytes()); + let encryption_sk = get_sample_secp256k1_sk(); + let encryption_pk = Bytes::from(get_sample_secp256k1_pk().serialize()); let to = receipt.contract_address.unwrap(); let encoded_setnumber_data = get_input_data(SET_NUMBER_SELECTOR, B256::from(U256::from(10))); - let set_data = crypto::client_encrypt(&secret_key, &encoded_setnumber_data, 1).unwrap(); + let set_data = crypto::client_encrypt(&encryption_sk, &encoded_setnumber_data, 1).unwrap(); let tx = TransactionRequest::default() + .transaction_type(TxSeismic::TX_TYPE) .with_from(from) .with_to(to) .with_nonce(1) .with_gas_limit(210000) - .with_chain_id(31337); + .with_chain_id(31337) + .with_input(set_data); let seismic_tx = WithOtherFields { inner: tx, - other: SeismicTransactionFields { seismic_input: set_data.into() }.into(), + other: SeismicTransactionFields { encryption_pubkey: encryption_pk.clone() }.into(), }; let pending_set = provider.send_transaction(seismic_tx).await.unwrap(); @@ -107,18 +111,21 @@ async fn test_seismic_transaction() { assert!(receipt.is_some()); let encoded_increment_data = get_input_data(INCREMENT_SELECTOR, B256::from(U256::from(10))); - let increment_data = crypto::client_encrypt(&secret_key, &encoded_increment_data, 2).unwrap(); + let increment_data = + crypto::client_encrypt(&encryption_sk, &encoded_increment_data, 2).unwrap(); let tx = TransactionRequest::default() + .transaction_type(TxSeismic::TX_TYPE) .with_from(from) .with_to(to) .with_nonce(2) .with_gas_limit(210000) - .with_chain_id(31337); + .with_chain_id(31337) + .with_input(increment_data); let seismic_tx = WithOtherFields { inner: tx, - other: SeismicTransactionFields { seismic_input: increment_data.into() }.into(), + other: SeismicTransactionFields { encryption_pubkey: encryption_pk.clone() }.into(), }; let pending_increment = provider.send_transaction(seismic_tx).await.unwrap(); @@ -130,18 +137,20 @@ async fn test_seismic_transaction() { assert!(receipt.is_some()); let encoded_getnumber_data = hex::decode(GET_NUMBER_SELECTOR).unwrap(); - let get_data = crypto::client_encrypt(&secret_key, &encoded_getnumber_data, 3).unwrap(); + let get_data = crypto::client_encrypt(&encryption_sk, &encoded_getnumber_data, 3).unwrap(); let tx = TransactionRequest::default() + .transaction_type(TxSeismic::TX_TYPE) .with_from(from) .with_to(to) .with_nonce(3) .with_gas_limit(210000) - .with_chain_id(31337); + .with_chain_id(31337) + .with_input(get_data); let seismic_tx = WithOtherFields { inner: tx, - other: SeismicTransactionFields { seismic_input: get_data.into() }.into(), + other: SeismicTransactionFields { encryption_pubkey: encryption_pk.clone() }.into(), }; let pending_get = provider.send_transaction(seismic_tx).await.unwrap(); diff --git a/crates/evm/core/src/utils.rs b/crates/evm/core/src/utils.rs index 90e349852..380bed197 100644 --- a/crates/evm/core/src/utils.rs +++ b/crates/evm/core/src/utils.rs @@ -122,6 +122,7 @@ pub fn configure_tx_req_env( transaction_type: _, ref authorization_list, sidecar: _, + encryption_pubkey: _, } = *tx; // If no `to` field then set create kind: https://eips.ethereum.org/EIPS/eip-2470#deployment-transaction From 7a2c19108164772774cabeb9618f81825c3bb6fe Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Thu, 16 Jan 2025 17:53:50 -0500 Subject: [PATCH 032/130] Signed calls should use encryption (#62) --- Cargo.lock | 62 ++++---- Cargo.toml | 50 +++--- crates/anvil/core/src/eth/transaction/mod.rs | 8 + crates/anvil/src/eth/api.rs | 124 +++++++++------ crates/anvil/src/eth/backend/mem/mod.rs | 154 ++++--------------- 5 files changed, 171 insertions(+), 227 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 421757964..819509872 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "alloy-consensus" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" dependencies = [ "alloy-eips", "alloy-primitives", @@ -128,7 +128,7 @@ dependencies = [ [[package]] name = "alloy-consensus-any" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" dependencies = [ "alloy-consensus", "alloy-eips", @@ -141,7 +141,7 @@ dependencies = [ [[package]] name = "alloy-contract" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -209,7 +209,7 @@ dependencies = [ [[package]] name = "alloy-eips" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" dependencies = [ "alloy-eip2930", "alloy-eip7702", @@ -226,7 +226,7 @@ dependencies = [ [[package]] name = "alloy-genesis" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" dependencies = [ "alloy-primitives", "alloy-serde", @@ -248,7 +248,7 @@ dependencies = [ [[package]] name = "alloy-json-rpc" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -261,7 +261,7 @@ dependencies = [ [[package]] name = "alloy-network" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -285,7 +285,7 @@ dependencies = [ [[package]] name = "alloy-network-primitives" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" dependencies = [ "alloy-consensus", "alloy-eips", @@ -297,7 +297,7 @@ dependencies = [ [[package]] name = "alloy-node-bindings" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" dependencies = [ "alloy-genesis", "alloy-primitives", @@ -344,7 +344,7 @@ dependencies = [ [[package]] name = "alloy-provider" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" dependencies = [ "alloy-chains", "alloy-consensus", @@ -386,7 +386,7 @@ dependencies = [ [[package]] name = "alloy-pubsub" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -426,7 +426,7 @@ dependencies = [ [[package]] name = "alloy-rpc-client" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -451,7 +451,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" dependencies = [ "alloy-primitives", "alloy-rpc-types-anvil", @@ -466,7 +466,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -477,7 +477,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -487,7 +487,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-debug" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" dependencies = [ "alloy-primitives", "serde", @@ -496,7 +496,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-engine" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" dependencies = [ "alloy-consensus", "alloy-eips", @@ -513,7 +513,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -532,7 +532,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-trace" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -545,7 +545,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-txpool" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -556,7 +556,7 @@ dependencies = [ [[package]] name = "alloy-serde" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" dependencies = [ "alloy-primitives", "serde", @@ -566,7 +566,7 @@ dependencies = [ [[package]] name = "alloy-signer" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" dependencies = [ "alloy-dyn-abi", "alloy-primitives", @@ -581,7 +581,7 @@ dependencies = [ [[package]] name = "alloy-signer-aws" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" dependencies = [ "alloy-consensus", "alloy-network", @@ -598,7 +598,7 @@ dependencies = [ [[package]] name = "alloy-signer-gcp" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" dependencies = [ "alloy-consensus", "alloy-network", @@ -615,7 +615,7 @@ dependencies = [ [[package]] name = "alloy-signer-ledger" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -634,7 +634,7 @@ dependencies = [ [[package]] name = "alloy-signer-local" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" dependencies = [ "alloy-consensus", "alloy-network", @@ -652,7 +652,7 @@ dependencies = [ [[package]] name = "alloy-signer-trezor" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" dependencies = [ "alloy-consensus", "alloy-network", @@ -736,7 +736,7 @@ dependencies = [ [[package]] name = "alloy-transport" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" dependencies = [ "alloy-json-rpc", "base64 0.22.1", @@ -755,7 +755,7 @@ dependencies = [ [[package]] name = "alloy-transport-http" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -769,7 +769,7 @@ dependencies = [ [[package]] name = "alloy-transport-ipc" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" dependencies = [ "alloy-json-rpc", "alloy-pubsub", @@ -789,7 +789,7 @@ dependencies = [ [[package]] name = "alloy-transport-ws" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=7729fb0#7729fb001464637bbd65db2674041a66412a5184" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" dependencies = [ "alloy-pubsub", "alloy-transport", diff --git a/Cargo.toml b/Cargo.toml index c7390ae26..573e792d9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -317,28 +317,28 @@ alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-all alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a273736" } alloy-sol-type-parser = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a273736" } -alloy-consensus = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } -alloy-contract = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } -alloy-eips = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } -alloy-genesis = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } -alloy-json-rpc = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } -alloy-network = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } -alloy-provider = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } -alloy-pubsub = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } -alloy-rpc-client = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } -alloy-rpc-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } -alloy-rpc-types-trace = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } -alloy-rpc-types-eth = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } -alloy-serde = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } -alloy-signer = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } -alloy-signer-aws = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } -alloy-signer-gcp = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } -alloy-signer-ledger = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } -alloy-signer-local = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } -alloy-signer-trezor = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } -alloy-transport = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } -alloy-transport-http = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } -alloy-transport-ipc = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } -alloy-transport-ws = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } -alloy-node-bindings = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } -alloy-network-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "7729fb0" } +alloy-consensus = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } +alloy-contract = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } +alloy-eips = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } +alloy-genesis = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } +alloy-json-rpc = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } +alloy-network = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } +alloy-provider = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } +alloy-pubsub = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } +alloy-rpc-client = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } +alloy-rpc-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } +alloy-rpc-types-trace = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } +alloy-rpc-types-eth = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } +alloy-serde = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } +alloy-signer = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } +alloy-signer-aws = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } +alloy-signer-gcp = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } +alloy-signer-ledger = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } +alloy-signer-local = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } +alloy-signer-trezor = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } +alloy-transport = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } +alloy-transport-http = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } +alloy-transport-ipc = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } +alloy-transport-ws = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } +alloy-node-bindings = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } +alloy-network-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } diff --git a/crates/anvil/core/src/eth/transaction/mod.rs b/crates/anvil/core/src/eth/transaction/mod.rs index e60e2c9e9..8721f7c23 100644 --- a/crates/anvil/core/src/eth/transaction/mod.rs +++ b/crates/anvil/core/src/eth/transaction/mod.rs @@ -1088,6 +1088,14 @@ impl TypedTransaction { Self::Seismic(tx) => *tx.signature(), } } + + /// If this is a seismic transaction, return it + pub fn seismic(self) -> Option> { + match self { + Self::Seismic(tx) => Some(tx), + _ => None, + } + } } impl Encodable for TypedTransaction { diff --git a/crates/anvil/src/eth/api.rs b/crates/anvil/src/eth/api.rs index c8b18ee28..1b2927653 100644 --- a/crates/anvil/src/eth/api.rs +++ b/crates/anvil/src/eth/api.rs @@ -1053,48 +1053,13 @@ impl EthApi { Ok(*tx.hash()) } - /// Call contract, returning the output data. - /// - /// Handler for ETH RPC call: `eth_call` - pub async fn call( + async fn unsigned_call( &self, - request: SeismicCallRequest, + request: WithOtherFields, block_number: Option, overrides: Option, ) -> Result { node_info!("eth_call"); - - let (constructed_request, seismic_pub_key): ( - WithOtherFields, - Option, - ) = match request { - SeismicCallRequest::Bytes(bytes) => { - let mut pub_key = None; - let typed_tx = TypedTransaction::decode_2718(&mut bytes.as_ref()) - .map_err(|_| BlockchainError::FailedToDecodeSignedTransaction)?; - let tx = TransactionRequest::try_from(typed_tx.clone()).map_err(|_| { - BlockchainError::Message( - "Failed to decode bytes to transaction request".to_string(), - ) - })?; - if let TypedTransaction::Seismic(seismic_tx) = typed_tx { - let public_key = - anvil_core::eth::transaction::crypto::recover_public_key(&seismic_tx) - .map_err(|_| { - BlockchainError::Message( - "Failed to get public key from seismic transaction".to_string(), - ) - })?; - pub_key = Some(public_key); - } - (WithOtherFields::new(tx), pub_key) - } - SeismicCallRequest::TransactionRequest(mut tx) => { - tx.from = None; - (tx, None) - } - }; - let block_request = self.block_request(block_number).await?; // check if the number predates the fork, if in fork mode if let BlockRequest::Number(number) = block_request { @@ -1105,37 +1070,96 @@ impl EthApi { "not available on past forked blocks".to_string(), )); } - return Ok(fork.call(&constructed_request, Some(number.into())).await?); + return Ok(fork.call(&request, Some(number.into())).await?) } } } let fees = FeeDetails::new( - constructed_request.gas_price, - constructed_request.max_fee_per_gas, - constructed_request.max_priority_fee_per_gas, - constructed_request.max_fee_per_blob_gas, + request.gas_price, + request.max_fee_per_gas, + request.max_priority_fee_per_gas, + request.max_fee_per_blob_gas, )? .or_zero_fees(); - // this can be blocking for a bit, especially in forking mode // + self.on_blocking_task(|this| async move { + let (exit, out, gas, _) = + this.backend.call(request, fees, Some(block_request), overrides).await?; + trace!(target : "node", "Call status {:?}, gas {}", exit, gas); + + ensure_return_ok(exit, &out) + }) + .await + } + + async fn seismic_call( + &self, + request: WithOtherFields, + block_number: Option, + overrides: Option, + encryption_pubkey: PublicKey, + ) -> Result { + node_info!("eth_call (signed)"); + let fees = FeeDetails::new( + request.gas_price, + request.max_fee_per_gas, + request.max_priority_fee_per_gas, + request.max_fee_per_blob_gas, + )? + .or_zero_fees(); + + let block_request = self.block_request(block_number).await?; self.on_blocking_task(|this| async move { let (exit, out, gas, _) = this .backend - .seismic_call( - constructed_request, - seismic_pub_key, - fees, - Some(block_request), - overrides, - ) + .seismic_call(request, fees, Some(block_request), overrides, encryption_pubkey) .await?; trace!(target : "node", "Call status {:?}, gas {}", exit, gas); ensure_return_ok(exit, &out) }) .await } + + /// Call contract, returning the output data. + /// + /// Handler for ETH RPC call: `eth_call` + pub async fn call( + &self, + request: SeismicCallRequest, + block_number: Option, + overrides: Option, + ) -> Result { + match request { + SeismicCallRequest::TransactionRequest(mut tx) => { + // don't let them spoof msg.sender with unsigned calls + tx.from = None; + return self.unsigned_call(tx, block_number, overrides).await + } + SeismicCallRequest::Bytes(bytes) => { + let typed_tx = TypedTransaction::decode_2718(&mut bytes.as_ref()) + .map_err(|_| BlockchainError::FailedToDecodeSignedTransaction)?; + let tx = TransactionRequest::try_from(typed_tx.clone()).map_err(|_| { + BlockchainError::Message( + "Failed to decode bytes to transaction request".to_string(), + ) + })?; + let signed_seismic_tx = typed_tx.seismic().ok_or(BlockchainError::Message( + "Can only make signedCall with Seismic Transactions".to_string(), + ))?; + let seismic_tx = signed_seismic_tx.tx(); + let encryption_pubkey_bytes = seismic_tx.encryption_pubkey; + let encryption_pubkey = PublicKey::from_slice(encryption_pubkey_bytes.as_slice()) + .map_err(|_| { + BlockchainError::Message("Failed to parse encryption public key".to_string()) + })?; + let request = WithOtherFields::new(tx); + self.seismic_call(request, block_number, overrides, encryption_pubkey).await + } + } + } + /// This method creates an EIP2930 type accessList based on a given Transaction. The accessList /// contains all storage slots and addresses read and written by the transaction, except for the /// sender account and the precompiles. diff --git a/crates/anvil/src/eth/backend/mem/mod.rs b/crates/anvil/src/eth/backend/mem/mod.rs index 52902940d..3857bda43 100644 --- a/crates/anvil/src/eth/backend/mem/mod.rs +++ b/crates/anvil/src/eth/backend/mem/mod.rs @@ -46,7 +46,6 @@ use alloy_network::{ use alloy_primitives::{ address, hex, keccak256, utils::Unit, Address, Bytes, TxHash, TxKind, B256, U256, U64, }; -use alloy_rlp::Decodable; use alloy_rpc_types::{ anvil::Forking, request::TransactionRequest, @@ -1338,21 +1337,21 @@ impl Backend { pub async fn seismic_call( &self, request: WithOtherFields, - seismic_pub_key: Option, fee_details: FeeDetails, block_request: Option, overrides: Option, + encryption_pubkey: PublicKey, ) -> Result<(InstructionResult, Option, u128, State), BlockchainError> { self.with_database_at(block_request, |state, block| { let block_number = block.number.to::(); let (exit, out, gas, state) = match overrides { - None => self.seismic_call_with_state(state.as_dyn(), request, seismic_pub_key, fee_details, block), + None => self.seismic_call_with_state(state.as_dyn(), request, fee_details, block, encryption_pubkey), Some(overrides) => { let state = state::apply_state_override(overrides.into_iter().collect(), state)?; - self.seismic_call_with_state(state.as_dyn(), request, seismic_pub_key, fee_details, block) + self.seismic_call_with_state(state.as_dyn(), request, fee_details, block, encryption_pubkey) }, }?; - trace!(target: "backend", "call return {:?} out: {:?} gas {} on block {}", exit, out, gas, block_number); + trace!(target: "backend", "seismic call return {:?} out: {:?} gas {} on block {}", exit, out, gas, block_number); Ok((exit, out, gas, state)) }).await? } @@ -1457,119 +1456,6 @@ impl Backend { env } - /// ## EVM settings - /// - /// This modifies certain EVM settings to mirror geth's `SkipAccountChecks` when transacting requests, see also: : - /// - /// - `disable_eip3607` is set to `true` - /// - `disable_base_fee` is set to `true` - /// - `nonce` is set to `None` - fn seismic_build_call_env( - &self, - request: WithOtherFields, - seismic_pub_key: Option, - fee_details: FeeDetails, - block_env: BlockEnv, - ) -> EnvWithHandlerCfg { - let WithOtherFields:: { - inner: - TransactionRequest { - from, - to, - gas, - value, - mut input, - access_list, - blob_versioned_hashes, - authorization_list, - // nonce is always ignored for calls - nonce: _, - sidecar: _, - chain_id: _, - transaction_type: _, - .. // Rest of the gas fees related fields are taken from `fee_details` - }, - .. - } = request.clone(); - - let FeeDetails { - gas_price, - max_fee_per_gas, - max_priority_fee_per_gas, - max_fee_per_blob_gas, - } = fee_details; - - let gas_limit = gas.unwrap_or(block_env.gas_limit.to()); - let mut env = self.env.read().clone(); - env.block = block_env; - // we want to disable this in eth_call, since this is common practice used by other node - // impls and providers - env.cfg.disable_block_gas_limit = true; - - // The basefee should be ignored for calls against state for - // - eth_call - // - eth_estimateGas - // - eth_createAccessList - // - tracing - env.cfg.disable_base_fee = true; - - let gas_price = gas_price.or(max_fee_per_gas).unwrap_or_else(|| { - self.fees().raw_gas_price().saturating_add(MIN_SUGGESTED_PRIORITY_FEE) - }); - let caller = from.unwrap_or_default(); - let to = to.as_ref().and_then(TxKind::to); - let blob_hashes = blob_versioned_hashes.unwrap_or_default(); - if Some(TxSeismic::TX_TYPE) == request.transaction_type && seismic_pub_key.is_some() { - let public_key = seismic_pub_key.unwrap(); - let decrypted_input = anvil_core::eth::transaction::crypto::server_decrypt( - &public_key, - input.input().unwrap_or_default().as_ref(), - request.clone().nonce.unwrap_or_default(), - ) - .expect("Failed to decrypt seismic tx"); - let data = Bytes::decode(&mut decrypted_input.as_slice()) - .expect("Failed to RLP decode decrypted input"); - input = data.into(); - }; - env.tx = - TxEnv { - caller, - gas_limit, - gas_price: U256::from(gas_price), - gas_priority_fee: max_priority_fee_per_gas.map(U256::from), - max_fee_per_blob_gas: max_fee_per_blob_gas - .or_else(|| { - if !blob_hashes.is_empty() { - env.block.get_blob_gasprice() - } else { - None - } - }) - .map(U256::from), - transact_to: match to { - Some(addr) => TxKind::Call(*addr), - None => TxKind::Create, - }, - value: value.unwrap_or_default(), - data: input.into_input().unwrap_or_default(), - chain_id: None, - // set nonce to None so that the correct nonce is chosen by the EVM - nonce: None, - access_list: access_list.unwrap_or_default().into(), - blob_hashes, - optimism: OptimismFields { enveloped_tx: Some(Bytes::new()), ..Default::default() }, - authorization_list: authorization_list.map(Into::into), - }; - - if env.block.basefee.is_zero() { - // this is an edge case because the evm fails if `tx.effective_gas_price < base_fee` - // 0 is only possible if it's manually set - env.cfg.disable_base_fee = true; - } - - env - } - /// Builds [`Inspector`] with the configured options fn build_inspector(&self) -> Inspector { let mut inspector = Inspector::default(); @@ -1611,13 +1497,28 @@ impl Backend { &self, state: &dyn DatabaseRef, request: WithOtherFields, - seismic_pub_key: Option, fee_details: FeeDetails, block_env: BlockEnv, + encryption_pubkey: PublicKey, ) -> Result<(InstructionResult, Option, u128, State), BlockchainError> { + let nonce = request.nonce.unwrap_or_default(); + let is_seismic_tx = Some(TxSeismic::TX_TYPE) == request.transaction_type; + let mut inspector = self.build_inspector(); + let mut env = self.build_call_env(request, fee_details, block_env); + if is_seismic_tx { + let decrypted_input = anvil_core::eth::transaction::crypto::server_decrypt( + &encryption_pubkey, + &env.tx.data.as_ref(), + nonce, + ) + .expect("Failed to decrypt seismic tx"); + env.tx.data = decrypted_input.into(); + } else { + // this should never happen + warn!("Non-seismic tx passed to seismic_call. Likely a bug"); + } - let env = self.seismic_build_call_env(request, seismic_pub_key, fee_details, block_env); let mut evm = self.new_evm_with_inspector_ref(state, env, &mut inspector); let ResultAndState { result, state } = evm.transact()?; let (exit_reason, gas_used, out) = match result { @@ -1631,7 +1532,18 @@ impl Backend { }; drop(evm); inspector.print_logs(); - Ok((exit_reason, out, gas_used as u128, state)) + + if !is_seismic_tx || out.is_none() { + return Ok((exit_reason, out, gas_used as u128, state)); + } + + let encrypted = anvil_core::eth::transaction::crypto::server_encrypt( + &encryption_pubkey, + out.unwrap().data().as_ref(), + nonce, + ) + .map_err(|e| BlockchainError::Message(format!("Failed to encrypt output: {}", e)))?; + Ok((exit_reason, Some(Output::Call(Bytes::from(encrypted))), gas_used as u128, state)) } pub async fn call_with_tracing( From 081a97bbfb3fbe9788ed04813c3c1b082c7dbd8d Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Tue, 21 Jan 2025 15:11:28 -0500 Subject: [PATCH 033/130] TEEService: update commit & adapt nonce (#64) --- Cargo.lock | 2 +- Cargo.toml | 2 ++ crates/anvil/Cargo.toml | 3 ++- crates/anvil/core/Cargo.toml | 2 +- crates/anvil/core/src/eth/transaction/crypto.rs | 13 +++++++------ 5 files changed, 13 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 819509872..46121e22e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8920,7 +8920,7 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tee_service_api" version = "0.1.0" -source = "git+ssh://git@github.com/SeismicSystems/TEEService.git?rev=9ab28c87247b876f5875c470f39bd3a3b07b3e8b#9ab28c87247b876f5875c470f39bd3a3b07b3e8b" +source = "git+ssh://git@github.com/SeismicSystems/TEEService.git?rev=cb0fb08#cb0fb08fc447f838159ae22a36dd62efa8f52653" dependencies = [ "aes-gcm", "anyhow", diff --git a/Cargo.toml b/Cargo.toml index 573e792d9..1b4d06c3e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -293,6 +293,8 @@ url = "2" vergen = { version = "8", default-features = false } yansi = { version = "1.0", features = ["detect-tty", "detect-env"] } +tee_service_api = { git = "ssh://git@github.com/SeismicSystems/TEEService.git", package = "tee_service_api", rev = "cb0fb08" } + [patch.crates-io] # If our dependencies depend on these things, # then this will override whatever versions they point to diff --git a/crates/anvil/Cargo.toml b/crates/anvil/Cargo.toml index 3343a71f8..9458b01c6 100644 --- a/crates/anvil/Cargo.toml +++ b/crates/anvil/Cargo.toml @@ -113,7 +113,8 @@ ctrlc = { version = "3", optional = true } fdlimit = { version = "0.3", optional = true } clap_complete_fig = "4" -tee_service_api = { git = "ssh://git@github.com/SeismicSystems/TEEService.git", package = "tee_service_api", rev = "9ab28c87247b876f5875c470f39bd3a3b07b3e8b"} +tee_service_api.workspace = true + [target.'cfg(unix)'.dependencies] tikv-jemallocator = { workspace = true, optional = true } diff --git a/crates/anvil/core/Cargo.toml b/crates/anvil/core/Cargo.toml index c222c39f7..f03ca3b2d 100644 --- a/crates/anvil/core/Cargo.toml +++ b/crates/anvil/core/Cargo.toml @@ -47,7 +47,7 @@ secp256k1 = { version = "0.29", default-features = false, features = [ "recovery", ] } -tee_service_api = { git = "ssh://git@github.com/SeismicSystems/TEEService.git", package = "tee_service_api", rev = "9ab28c87247b876f5875c470f39bd3a3b07b3e8b"} +tee_service_api.workspace = true [features] default = ["serde"] diff --git a/crates/anvil/core/src/eth/transaction/crypto.rs b/crates/anvil/core/src/eth/transaction/crypto.rs index a9bd5614e..b271b5731 100644 --- a/crates/anvil/core/src/eth/transaction/crypto.rs +++ b/crates/anvil/core/src/eth/transaction/crypto.rs @@ -4,6 +4,7 @@ use once_cell::sync::Lazy; use secp256k1::{ecdh::SharedSecret, PublicKey, SecretKey}; use tee_service_api::{ aes_decrypt, aes_encrypt, derive_aes_key, get_sample_secp256k1_pk, get_sample_secp256k1_sk, + nonce::Nonce, }; static ENCRYPTION_KEY: Lazy = Lazy::new(|| get_sample_secp256k1_sk()); @@ -13,7 +14,7 @@ pub fn encrypt( secret_key: &SecretKey, public_key: &PublicKey, plaintext: &[u8], - nonce: u64, + nonce: impl Into, ) -> anyhow::Result> { let shared_secret = SharedSecret::new(public_key, secret_key); let aes_key = derive_aes_key(&shared_secret) @@ -25,7 +26,7 @@ pub fn decrypt( secret_key: &SecretKey, public_key: &PublicKey, ciphertext: &[u8], - nonce: u64, + nonce: impl Into, ) -> anyhow::Result> { let shared_secret = SharedSecret::new(public_key, secret_key); let aes_key = derive_aes_key(&shared_secret) @@ -36,7 +37,7 @@ pub fn decrypt( pub fn server_decrypt( public_key: &PublicKey, ciphertext: &[u8], - nonce: u64, + nonce: impl Into, ) -> anyhow::Result> { decrypt(&ENCRYPTION_KEY, public_key, ciphertext, nonce) } @@ -44,7 +45,7 @@ pub fn server_decrypt( pub fn server_encrypt( public_key: &PublicKey, plaintext: &[u8], - nonce: u64, + nonce: impl Into, ) -> anyhow::Result> { encrypt(&ENCRYPTION_KEY, public_key, plaintext, nonce) } @@ -52,7 +53,7 @@ pub fn server_encrypt( pub fn client_decrypt( secret_key: &SecretKey, ciphertext: &[u8], - nonce: u64, + nonce: impl Into, ) -> anyhow::Result> { decrypt(secret_key, &PUBLIC_KEY, ciphertext, nonce) } @@ -60,7 +61,7 @@ pub fn client_decrypt( pub fn client_encrypt( secret_key: &SecretKey, plaintext: &[u8], - nonce: u64, + nonce: impl Into, ) -> anyhow::Result> { encrypt(secret_key, &PUBLIC_KEY, plaintext, nonce) } From 68366a6135aee07543e33db964eba25433cfef39 Mon Sep 17 00:00:00 2001 From: Ameya Deshmukh Date: Wed, 22 Jan 2025 06:46:36 -0500 Subject: [PATCH 034/130] fixed test warnings (#65) --- crates/anvil/tests/it/seismic.rs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/crates/anvil/tests/it/seismic.rs b/crates/anvil/tests/it/seismic.rs index b75da5b1e..3ff50a0f0 100644 --- a/crates/anvil/tests/it/seismic.rs +++ b/crates/anvil/tests/it/seismic.rs @@ -55,6 +55,10 @@ pub fn get_input_data(selector: &str, value: B256) -> Bytes { #[tokio::test(flavor = "multi_thread")] async fn test_seismic_transaction() { let (api, handle) = spawn(NodeConfig::test()).await; + + // set automine to false + api.anvil_set_auto_mine(false).await.unwrap(); + let provider = handle.http_provider(); let deployer = handle.dev_accounts().next().unwrap(); @@ -66,7 +70,7 @@ async fn test_seismic_transaction() { let pending = provider.send_transaction(deploy_tx).await.unwrap(); // mine block - api.evm_mine(None).await.unwrap(); + api.mine_one().await; let receipt = provider.get_transaction_receipt(pending.tx_hash().to_owned()).await.unwrap().unwrap(); @@ -99,7 +103,7 @@ async fn test_seismic_transaction() { let pending_set = provider.send_transaction(seismic_tx).await.unwrap(); - api.evm_mine(None).await.unwrap(); + api.mine_one().await; let receipt: Option< WithOtherFields< @@ -130,7 +134,7 @@ async fn test_seismic_transaction() { let pending_increment = provider.send_transaction(seismic_tx).await.unwrap(); - api.evm_mine(None).await.unwrap(); + api.mine_one().await; let receipt = provider.get_transaction_receipt(pending_increment.tx_hash().to_owned()).await.unwrap(); @@ -155,7 +159,7 @@ async fn test_seismic_transaction() { let pending_get = provider.send_transaction(seismic_tx).await.unwrap(); - api.evm_mine(None).await.unwrap(); + api.mine_one().await; let receipt = provider.get_transaction_receipt(pending_get.tx_hash().to_owned()).await.unwrap(); assert!(receipt.is_some()); From da2b7631300a911a8edc93a2ec056195631aefb0 Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Fri, 24 Jan 2025 12:53:15 -0500 Subject: [PATCH 035/130] (Santiago): add better error handling to failed unsigned calls that spoof from address (#70) --- crates/anvil/src/eth/api.rs | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/crates/anvil/src/eth/api.rs b/crates/anvil/src/eth/api.rs index 1b2927653..b18a3f803 100644 --- a/crates/anvil/src/eth/api.rs +++ b/crates/anvil/src/eth/api.rs @@ -1053,7 +1053,7 @@ impl EthApi { Ok(*tx.hash()) } - async fn unsigned_call( + pub async fn unsigned_call( &self, request: WithOtherFields, block_number: Option, @@ -1133,9 +1133,31 @@ impl EthApi { ) -> Result { match request { SeismicCallRequest::TransactionRequest(mut tx) => { + let user_provided_from = tx.from; + // don't let them spoof msg.sender with unsigned calls tx.from = None; - return self.unsigned_call(tx, block_number, overrides).await + + match self.unsigned_call(tx, block_number, overrides).await { + Ok(bytes) => Ok(bytes), + Err(original_err) => { + // Only attach a custom message if user tried to set `from` != zero + let tried_to_spoof_from = + user_provided_from.map_or(false, |addr| !addr.is_zero()); + + if tried_to_spoof_from { + // We’ll embed the original error’s text (which may include + // revert data) plus a multiline explanation: + Err(BlockchainError::Message(format!( +"Unsigned call failed: {orig}. The call included a non-zero 'from' address, which is not allowed in unsigned calls. If you need to set 'from', please use a signed call.", + orig = original_err + ))) + } else { + // Otherwise bubble up the original error + Err(original_err) + } + } + } } SeismicCallRequest::Bytes(bytes) => { let typed_tx = TypedTransaction::decode_2718(&mut bytes.as_ref()) From 7c56fc6bec871a7e8902905fa8a5d853f23dd3a4 Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Fri, 24 Jan 2025 13:00:04 -0500 Subject: [PATCH 036/130] update alloy commit: SeismicTx / TxRequest compat (#71) --- Cargo.lock | 62 +++++++++++++++++++++++++++--------------------------- Cargo.toml | 50 +++++++++++++++++++++---------------------- 2 files changed, 56 insertions(+), 56 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 46121e22e..c578e9d7c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "alloy-consensus" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" dependencies = [ "alloy-eips", "alloy-primitives", @@ -128,7 +128,7 @@ dependencies = [ [[package]] name = "alloy-consensus-any" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" dependencies = [ "alloy-consensus", "alloy-eips", @@ -141,7 +141,7 @@ dependencies = [ [[package]] name = "alloy-contract" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -209,7 +209,7 @@ dependencies = [ [[package]] name = "alloy-eips" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" dependencies = [ "alloy-eip2930", "alloy-eip7702", @@ -226,7 +226,7 @@ dependencies = [ [[package]] name = "alloy-genesis" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" dependencies = [ "alloy-primitives", "alloy-serde", @@ -248,7 +248,7 @@ dependencies = [ [[package]] name = "alloy-json-rpc" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -261,7 +261,7 @@ dependencies = [ [[package]] name = "alloy-network" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -285,7 +285,7 @@ dependencies = [ [[package]] name = "alloy-network-primitives" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" dependencies = [ "alloy-consensus", "alloy-eips", @@ -297,7 +297,7 @@ dependencies = [ [[package]] name = "alloy-node-bindings" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" dependencies = [ "alloy-genesis", "alloy-primitives", @@ -344,7 +344,7 @@ dependencies = [ [[package]] name = "alloy-provider" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" dependencies = [ "alloy-chains", "alloy-consensus", @@ -386,7 +386,7 @@ dependencies = [ [[package]] name = "alloy-pubsub" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -426,7 +426,7 @@ dependencies = [ [[package]] name = "alloy-rpc-client" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -451,7 +451,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" dependencies = [ "alloy-primitives", "alloy-rpc-types-anvil", @@ -466,7 +466,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -477,7 +477,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -487,7 +487,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-debug" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" dependencies = [ "alloy-primitives", "serde", @@ -496,7 +496,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-engine" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" dependencies = [ "alloy-consensus", "alloy-eips", @@ -513,7 +513,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -532,7 +532,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-trace" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -545,7 +545,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-txpool" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -556,7 +556,7 @@ dependencies = [ [[package]] name = "alloy-serde" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" dependencies = [ "alloy-primitives", "serde", @@ -566,7 +566,7 @@ dependencies = [ [[package]] name = "alloy-signer" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" dependencies = [ "alloy-dyn-abi", "alloy-primitives", @@ -581,7 +581,7 @@ dependencies = [ [[package]] name = "alloy-signer-aws" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" dependencies = [ "alloy-consensus", "alloy-network", @@ -598,7 +598,7 @@ dependencies = [ [[package]] name = "alloy-signer-gcp" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" dependencies = [ "alloy-consensus", "alloy-network", @@ -615,7 +615,7 @@ dependencies = [ [[package]] name = "alloy-signer-ledger" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -634,7 +634,7 @@ dependencies = [ [[package]] name = "alloy-signer-local" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" dependencies = [ "alloy-consensus", "alloy-network", @@ -652,7 +652,7 @@ dependencies = [ [[package]] name = "alloy-signer-trezor" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" dependencies = [ "alloy-consensus", "alloy-network", @@ -736,7 +736,7 @@ dependencies = [ [[package]] name = "alloy-transport" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" dependencies = [ "alloy-json-rpc", "base64 0.22.1", @@ -755,7 +755,7 @@ dependencies = [ [[package]] name = "alloy-transport-http" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -769,7 +769,7 @@ dependencies = [ [[package]] name = "alloy-transport-ipc" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" dependencies = [ "alloy-json-rpc", "alloy-pubsub", @@ -789,7 +789,7 @@ dependencies = [ [[package]] name = "alloy-transport-ws" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=437ce34#437ce34661c380cfe71fd4990936404b260dd704" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" dependencies = [ "alloy-pubsub", "alloy-transport", diff --git a/Cargo.toml b/Cargo.toml index 1b4d06c3e..f5535d9fa 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -319,28 +319,28 @@ alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-all alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a273736" } alloy-sol-type-parser = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a273736" } -alloy-consensus = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } -alloy-contract = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } -alloy-eips = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } -alloy-genesis = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } -alloy-json-rpc = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } -alloy-network = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } -alloy-provider = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } -alloy-pubsub = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } -alloy-rpc-client = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } -alloy-rpc-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } -alloy-rpc-types-trace = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } -alloy-rpc-types-eth = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } -alloy-serde = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } -alloy-signer = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } -alloy-signer-aws = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } -alloy-signer-gcp = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } -alloy-signer-ledger = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } -alloy-signer-local = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } -alloy-signer-trezor = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } -alloy-transport = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } -alloy-transport-http = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } -alloy-transport-ipc = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } -alloy-transport-ws = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } -alloy-node-bindings = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } -alloy-network-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "437ce34" } +alloy-consensus = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } +alloy-contract = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } +alloy-eips = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } +alloy-genesis = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } +alloy-json-rpc = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } +alloy-network = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } +alloy-provider = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } +alloy-pubsub = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } +alloy-rpc-client = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } +alloy-rpc-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } +alloy-rpc-types-trace = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } +alloy-rpc-types-eth = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } +alloy-serde = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } +alloy-signer = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } +alloy-signer-aws = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } +alloy-signer-gcp = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } +alloy-signer-ledger = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } +alloy-signer-local = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } +alloy-signer-trezor = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } +alloy-transport = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } +alloy-transport-http = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } +alloy-transport-ipc = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } +alloy-transport-ws = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } +alloy-node-bindings = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } +alloy-network-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } From ec675826d61489b088cf1d104b777b3840de48a4 Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Fri, 24 Jan 2025 13:45:23 -0500 Subject: [PATCH 037/130] Validate seismic decryption before txenv (#73) --- crates/anvil/core/src/eth/transaction/mod.rs | 12 ++++----- crates/anvil/src/eth/backend/mem/mod.rs | 27 +++++++++++++++++++- crates/anvil/src/eth/error.rs | 3 +++ 3 files changed, 34 insertions(+), 8 deletions(-) diff --git a/crates/anvil/core/src/eth/transaction/mod.rs b/crates/anvil/core/src/eth/transaction/mod.rs index 8721f7c23..ecaa48033 100644 --- a/crates/anvil/core/src/eth/transaction/mod.rs +++ b/crates/anvil/core/src/eth/transaction/mod.rs @@ -616,16 +616,14 @@ impl PendingTransaction { encryption_pubkey, } = &tx.tx(); - let public_key = PublicKey::from_slice(encryption_pubkey.as_slice()) - .expect("failed to parse public key from bytes"); - let data = Bytes::from( - crypto::server_decrypt(&public_key, &input.as_ref(), *nonce) - .expect("Failed to decrypt seismic tx"), - ); + // these two have already been validated in TransactionValidator, + // so we simply unwrap here + let public_key = PublicKey::from_slice(encryption_pubkey.as_slice()).unwrap(); + let data = crypto::server_decrypt(&public_key, &input.as_ref(), *nonce).unwrap(); TxEnv { caller, transact_to: transact_to(&to), - data, + data: Bytes::from(data), chain_id: Some(*chain_id), nonce: Some(*nonce), value: *value, diff --git a/crates/anvil/src/eth/backend/mem/mod.rs b/crates/anvil/src/eth/backend/mem/mod.rs index 3857bda43..e73411ccd 100644 --- a/crates/anvil/src/eth/backend/mem/mod.rs +++ b/crates/anvil/src/eth/backend/mem/mod.rs @@ -1512,7 +1512,11 @@ impl Backend { &env.tx.data.as_ref(), nonce, ) - .expect("Failed to decrypt seismic tx"); + .map_err(|_e| { + InvalidTransactionError::SeismicDecryptionFailed(format!( + "Failed to decrypt seismic calldata" + )) + })?; env.tx.data = decrypted_input.into(); } else { // this should never happen @@ -2933,6 +2937,27 @@ impl TransactionValidator for Backend { } } + if let TypedTransaction::Seismic(seismic_tx) = &tx.transaction { + // check that decryption works before we create tx env for it + let inner = seismic_tx.tx(); + let public_key = + PublicKey::from_slice(inner.encryption_pubkey.as_slice()).map_err(|_e| { + InvalidTransactionError::SeismicDecryptionFailed(format!( + "Failed to parse encryption_pubkey" + )) + })?; + let _decrypted_data = anvil_core::eth::transaction::crypto::server_decrypt( + &public_key, + &inner.input.as_ref(), + inner.nonce, + ) + .map_err(|_e| { + InvalidTransactionError::SeismicDecryptionFailed(format!( + "Failed to decrypt seismic calldata" + )) + })?; + } + Ok(()) } diff --git a/crates/anvil/src/eth/error.rs b/crates/anvil/src/eth/error.rs index dda9b8bb2..d23278482 100644 --- a/crates/anvil/src/eth/error.rs +++ b/crates/anvil/src/eth/error.rs @@ -266,6 +266,9 @@ pub enum InvalidTransactionError { /// Forwards error from the revm #[error(transparent)] Revm(revm::primitives::InvalidTransaction), + /// Thrown when a seismic transaction is invalid + #[error("Seismic decryption failed: {0}")] + SeismicDecryptionFailed(String), } impl From for InvalidTransactionError { From d5f55944da4fa3ef344e2b0c02eb45327ebafaeb Mon Sep 17 00:00:00 2001 From: phexyz <32248504+phexyz@users.noreply.github.com> Date: Fri, 24 Jan 2025 14:28:26 -0500 Subject: [PATCH 038/130] Fixing estimate gas, create access list, call for seismic transaction (#72) --- Cargo.lock | 62 ++++++++++++------------- Cargo.toml | 50 ++++++++++---------- crates/anvil/src/eth/backend/mem/mod.rs | 26 +++++++++-- 3 files changed, 77 insertions(+), 61 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c578e9d7c..d8ec68458 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "alloy-consensus" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" dependencies = [ "alloy-eips", "alloy-primitives", @@ -128,7 +128,7 @@ dependencies = [ [[package]] name = "alloy-consensus-any" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" dependencies = [ "alloy-consensus", "alloy-eips", @@ -141,7 +141,7 @@ dependencies = [ [[package]] name = "alloy-contract" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -209,7 +209,7 @@ dependencies = [ [[package]] name = "alloy-eips" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" dependencies = [ "alloy-eip2930", "alloy-eip7702", @@ -226,7 +226,7 @@ dependencies = [ [[package]] name = "alloy-genesis" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" dependencies = [ "alloy-primitives", "alloy-serde", @@ -248,7 +248,7 @@ dependencies = [ [[package]] name = "alloy-json-rpc" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -261,7 +261,7 @@ dependencies = [ [[package]] name = "alloy-network" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -285,7 +285,7 @@ dependencies = [ [[package]] name = "alloy-network-primitives" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" dependencies = [ "alloy-consensus", "alloy-eips", @@ -297,7 +297,7 @@ dependencies = [ [[package]] name = "alloy-node-bindings" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" dependencies = [ "alloy-genesis", "alloy-primitives", @@ -344,7 +344,7 @@ dependencies = [ [[package]] name = "alloy-provider" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" dependencies = [ "alloy-chains", "alloy-consensus", @@ -386,7 +386,7 @@ dependencies = [ [[package]] name = "alloy-pubsub" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -426,7 +426,7 @@ dependencies = [ [[package]] name = "alloy-rpc-client" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -451,7 +451,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" dependencies = [ "alloy-primitives", "alloy-rpc-types-anvil", @@ -466,7 +466,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -477,7 +477,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -487,7 +487,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-debug" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" dependencies = [ "alloy-primitives", "serde", @@ -496,7 +496,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-engine" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" dependencies = [ "alloy-consensus", "alloy-eips", @@ -513,7 +513,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -532,7 +532,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-trace" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -545,7 +545,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-txpool" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -556,7 +556,7 @@ dependencies = [ [[package]] name = "alloy-serde" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" dependencies = [ "alloy-primitives", "serde", @@ -566,7 +566,7 @@ dependencies = [ [[package]] name = "alloy-signer" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" dependencies = [ "alloy-dyn-abi", "alloy-primitives", @@ -581,7 +581,7 @@ dependencies = [ [[package]] name = "alloy-signer-aws" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" dependencies = [ "alloy-consensus", "alloy-network", @@ -598,7 +598,7 @@ dependencies = [ [[package]] name = "alloy-signer-gcp" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" dependencies = [ "alloy-consensus", "alloy-network", @@ -615,7 +615,7 @@ dependencies = [ [[package]] name = "alloy-signer-ledger" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -634,7 +634,7 @@ dependencies = [ [[package]] name = "alloy-signer-local" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" dependencies = [ "alloy-consensus", "alloy-network", @@ -652,7 +652,7 @@ dependencies = [ [[package]] name = "alloy-signer-trezor" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" dependencies = [ "alloy-consensus", "alloy-network", @@ -736,7 +736,7 @@ dependencies = [ [[package]] name = "alloy-transport" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" dependencies = [ "alloy-json-rpc", "base64 0.22.1", @@ -755,7 +755,7 @@ dependencies = [ [[package]] name = "alloy-transport-http" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -769,7 +769,7 @@ dependencies = [ [[package]] name = "alloy-transport-ipc" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" dependencies = [ "alloy-json-rpc", "alloy-pubsub", @@ -789,7 +789,7 @@ dependencies = [ [[package]] name = "alloy-transport-ws" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=0108a19#0108a19b9fca991a6e63a25fcfb3077ffbee31d3" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" dependencies = [ "alloy-pubsub", "alloy-transport", diff --git a/Cargo.toml b/Cargo.toml index f5535d9fa..ecbf3a53e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -319,28 +319,28 @@ alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-all alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a273736" } alloy-sol-type-parser = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a273736" } -alloy-consensus = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } -alloy-contract = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } -alloy-eips = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } -alloy-genesis = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } -alloy-json-rpc = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } -alloy-network = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } -alloy-provider = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } -alloy-pubsub = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } -alloy-rpc-client = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } -alloy-rpc-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } -alloy-rpc-types-trace = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } -alloy-rpc-types-eth = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } -alloy-serde = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } -alloy-signer = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } -alloy-signer-aws = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } -alloy-signer-gcp = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } -alloy-signer-ledger = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } -alloy-signer-local = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } -alloy-signer-trezor = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } -alloy-transport = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } -alloy-transport-http = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } -alloy-transport-ipc = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } -alloy-transport-ws = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } -alloy-node-bindings = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } -alloy-network-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "0108a19" } +alloy-consensus = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } +alloy-contract = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } +alloy-eips = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } +alloy-genesis = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } +alloy-json-rpc = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } +alloy-network = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } +alloy-provider = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } +alloy-pubsub = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } +alloy-rpc-client = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } +alloy-rpc-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } +alloy-rpc-types-trace = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } +alloy-rpc-types-eth = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } +alloy-serde = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } +alloy-signer = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } +alloy-signer-aws = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } +alloy-signer-gcp = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } +alloy-signer-ledger = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } +alloy-signer-local = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } +alloy-signer-trezor = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } +alloy-transport = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } +alloy-transport-http = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } +alloy-transport-ipc = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } +alloy-transport-ws = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } +alloy-node-bindings = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } +alloy-network-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } \ No newline at end of file diff --git a/crates/anvil/src/eth/backend/mem/mod.rs b/crates/anvil/src/eth/backend/mem/mod.rs index e73411ccd..277381b11 100644 --- a/crates/anvil/src/eth/backend/mem/mod.rs +++ b/crates/anvil/src/eth/backend/mem/mod.rs @@ -69,7 +69,7 @@ use alloy_trie::{proof::ProofRetainer, HashBuilder, Nibbles}; use anvil_core::eth::{ block::{Block, BlockInfo}, transaction::{ - optimism::DepositTransaction, DepositReceipt, MaybeImpersonatedTransaction, + crypto, optimism::DepositTransaction, DepositReceipt, MaybeImpersonatedTransaction, PendingTransaction, ReceiptResponse, TransactionInfo, TypedReceipt, TypedTransaction, }, wallet::{Capabilities, DelegationCapability, WalletCapabilities}, @@ -1380,11 +1380,11 @@ impl Backend { access_list, blob_versioned_hashes, authorization_list, - // nonce is always ignored for calls - nonce: _, + nonce, sidecar: _, chain_id: _, - transaction_type: _, + transaction_type, + encryption_pubkey, .. // Rest of the gas fees related fields are taken from `fee_details` }, .. @@ -1417,6 +1417,22 @@ impl Backend { let caller = from.unwrap_or_default(); let to = to.as_ref().and_then(TxKind::to); let blob_hashes = blob_versioned_hashes.unwrap_or_default(); + + let mut data = input.into_input().unwrap_or_default(); + + if transaction_type == Some(TxSeismic::TX_TYPE) && !data.is_empty() { + let nonce = nonce.expect("nonce is required for seismic transactions"); + let encryption_pubkey = + encryption_pubkey.expect("encryption pubkey is required for seismic transactions"); + + let public_key = PublicKey::from_slice(encryption_pubkey.as_slice()) + .expect("failed to parse public key from bytes"); + data = Bytes::from( + crypto::server_decrypt(&public_key, &data.as_ref(), nonce) + .expect("Failed to decrypt seismic tx"), + ); + } + env.tx = TxEnv { caller, @@ -1437,7 +1453,7 @@ impl Backend { None => TxKind::Create, }, value: value.unwrap_or_default(), - data: input.into_input().unwrap_or_default(), + data, chain_id: None, // set nonce to None so that the correct nonce is chosen by the EVM nonce: None, From eae4d4453ce8bbbec4d075fc2b04caa1699d4a07 Mon Sep 17 00:00:00 2001 From: phexyz <32248504+phexyz@users.noreply.github.com> Date: Fri, 24 Jan 2025 15:46:23 -0500 Subject: [PATCH 039/130] Fixing unsigned eth_call (#74) --- crates/anvil/core/src/eth/transaction/mod.rs | 12 +++++++++++- crates/anvil/src/eth/api.rs | 1 + crates/anvil/src/eth/backend/mem/mod.rs | 18 +----------------- 3 files changed, 13 insertions(+), 18 deletions(-) diff --git a/crates/anvil/core/src/eth/transaction/mod.rs b/crates/anvil/core/src/eth/transaction/mod.rs index ecaa48033..6430edbc4 100644 --- a/crates/anvil/core/src/eth/transaction/mod.rs +++ b/crates/anvil/core/src/eth/transaction/mod.rs @@ -4,7 +4,7 @@ use crate::eth::transaction::optimism::DepositTransaction; use alloy_consensus::{ transaction::{ eip4844::{TxEip4844, TxEip4844Variant, TxEip4844WithSidecar}, - TxEip7702, TxSeismic, + EncryptionPublicKey, TxEip7702, TxSeismic, }, Receipt, ReceiptEnvelope, ReceiptWithBloom, Signed, Transaction, TxEip1559, TxEip2930, TxEnvelope, TxLegacy, TxReceipt, Typed2718, @@ -683,6 +683,7 @@ impl TryFrom for TransactionRequest { nonce: Some(essentials.nonce), chain_id: essentials.chain_id, transaction_type: tx_type, + encryption_pubkey: essentials.encryption_pubkey, ..Default::default() }) } @@ -873,6 +874,7 @@ impl TypedTransaction { value: t.tx().value, chain_id: t.tx().chain_id, access_list: Default::default(), + encryption_pubkey: None, }, Self::EIP2930(t) => TransactionEssentials { kind: t.tx().to, @@ -887,6 +889,7 @@ impl TypedTransaction { value: t.tx().value, chain_id: Some(t.tx().chain_id), access_list: t.tx().access_list.clone(), + encryption_pubkey: None, }, Self::EIP1559(t) => TransactionEssentials { kind: t.tx().to, @@ -901,6 +904,7 @@ impl TypedTransaction { value: t.tx().value, chain_id: Some(t.tx().chain_id), access_list: t.tx().access_list.clone(), + encryption_pubkey: None, }, Self::EIP4844(t) => TransactionEssentials { kind: TxKind::Call(t.tx().tx().to), @@ -915,6 +919,7 @@ impl TypedTransaction { value: t.tx().tx().value, chain_id: Some(t.tx().tx().chain_id), access_list: t.tx().tx().access_list.clone(), + encryption_pubkey: None, }, Self::EIP7702(t) => TransactionEssentials { kind: TxKind::Call(t.tx().to), @@ -929,6 +934,7 @@ impl TypedTransaction { value: t.tx().value, chain_id: Some(t.tx().chain_id), access_list: t.tx().access_list.clone(), + encryption_pubkey: None, }, Self::Deposit(t) => TransactionEssentials { kind: t.kind, @@ -943,6 +949,7 @@ impl TypedTransaction { value: t.value, chain_id: t.chain_id(), access_list: Default::default(), + encryption_pubkey: None, }, Self::Seismic(t) => TransactionEssentials { kind: t.tx().kind(), @@ -957,6 +964,7 @@ impl TypedTransaction { value: t.tx().value, chain_id: Some(t.tx().chain_id), access_list: Default::default(), + encryption_pubkey: Some(t.tx().encryption_pubkey), }, } } @@ -1189,6 +1197,7 @@ impl From for TypedTransaction { TxEnvelope::Eip2930(tx) => Self::EIP2930(tx), TxEnvelope::Eip1559(tx) => Self::EIP1559(tx), TxEnvelope::Eip4844(tx) => Self::EIP4844(tx), + TxEnvelope::Seismic(tx) => Self::Seismic(tx), _ => unreachable!(), } } @@ -1208,6 +1217,7 @@ pub struct TransactionEssentials { pub value: U256, pub chain_id: Option, pub access_list: AccessList, + pub encryption_pubkey: Option, } /// Represents all relevant information of an executed transaction diff --git a/crates/anvil/src/eth/api.rs b/crates/anvil/src/eth/api.rs index b18a3f803..edb112ec4 100644 --- a/crates/anvil/src/eth/api.rs +++ b/crates/anvil/src/eth/api.rs @@ -1167,6 +1167,7 @@ impl EthApi { "Failed to decode bytes to transaction request".to_string(), ) })?; + let signed_seismic_tx = typed_tx.seismic().ok_or(BlockchainError::Message( "Can only make signedCall with Seismic Transactions".to_string(), ))?; diff --git a/crates/anvil/src/eth/backend/mem/mod.rs b/crates/anvil/src/eth/backend/mem/mod.rs index 277381b11..e11afc25d 100644 --- a/crates/anvil/src/eth/backend/mem/mod.rs +++ b/crates/anvil/src/eth/backend/mem/mod.rs @@ -1521,23 +1521,7 @@ impl Backend { let is_seismic_tx = Some(TxSeismic::TX_TYPE) == request.transaction_type; let mut inspector = self.build_inspector(); - let mut env = self.build_call_env(request, fee_details, block_env); - if is_seismic_tx { - let decrypted_input = anvil_core::eth::transaction::crypto::server_decrypt( - &encryption_pubkey, - &env.tx.data.as_ref(), - nonce, - ) - .map_err(|_e| { - InvalidTransactionError::SeismicDecryptionFailed(format!( - "Failed to decrypt seismic calldata" - )) - })?; - env.tx.data = decrypted_input.into(); - } else { - // this should never happen - warn!("Non-seismic tx passed to seismic_call. Likely a bug"); - } + let env = self.build_call_env(request, fee_details, block_env); let mut evm = self.new_evm_with_inspector_ref(state, env, &mut inspector); let ResultAndState { result, state } = evm.transact()?; From 7b0b4e836305a4f1a00ce805dcab8b86fb49e1f9 Mon Sep 17 00:00:00 2001 From: sfyll <39958632+sfyll@users.noreply.github.com> Date: Tue, 28 Jan 2025 17:55:49 +0100 Subject: [PATCH 040/130] Seismic evm (#63) Co-authored-by: cdrappi Co-authored-by: Spencer Solit --- Cargo.lock | 131 ++++++++- Cargo.toml | 8 +- crates/anvil/Cargo.toml | 4 +- crates/anvil/core/Cargo.toml | 1 + crates/anvil/src/cmd.rs | 9 +- crates/anvil/src/config.rs | 15 +- crates/anvil/src/eth/api.rs | 4 +- crates/anvil/src/eth/backend/executor.rs | 8 +- crates/anvil/src/eth/backend/mem/mod.rs | 1 + crates/anvil/src/hardfork.rs | 38 +++ crates/anvil/tests/it/main.rs | 1 + crates/anvil/tests/it/seismic.rs | 277 +++++++++++++++++- .../it/seismic_precompiles_test_bytecode.txt | 1 + crates/cheatcodes/src/inspector.rs | 1 + crates/config/src/lib.rs | 15 + crates/evm/core/Cargo.toml | 1 + crates/evm/core/src/utils.rs | 5 + crates/forge/src/multi_runner.rs | 11 +- crates/forge/tests/cli/config.rs | 2 + 19 files changed, 510 insertions(+), 23 deletions(-) create mode 100644 crates/anvil/tests/it/seismic_precompiles_test_bytecode.txt diff --git a/Cargo.lock b/Cargo.lock index d8ec68458..e21157ae0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -965,7 +965,7 @@ dependencies = [ "serde_json", "serde_repr", "similar-asserts", - "tee_service_api", + "tee_service_api 0.1.0 (git+ssh://git@github.com/SeismicSystems/TEEService.git?rev=cb0fb08)", "tempfile", "thiserror 2.0.9", "tikv-jemallocator", @@ -1001,7 +1001,7 @@ dependencies = [ "secp256k1", "serde", "serde_json", - "tee_service_api", + "tee_service_api 0.1.0 (git+ssh://git@github.com/SeismicSystems/TEEService.git?rev=cb0fb08)", "thiserror 2.0.9", ] @@ -1183,6 +1183,12 @@ dependencies = [ "rand", ] +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + [[package]] name = "arrayvec" version = "0.7.6" @@ -2638,6 +2644,33 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "curve25519-dalek" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "digest 0.10.7", + "fiat-crypto", + "rustc_version 0.4.1", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.91", +] + [[package]] name = "darling" version = "0.20.10" @@ -3337,6 +3370,12 @@ dependencies = [ "subtle", ] +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + [[package]] name = "figment" version = "0.10.19" @@ -4474,6 +4513,16 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "getrandom_or_panic" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea1015b5a70616b688dc230cfe50c8af89d972cb132d5a622814d29773b10b9" +dependencies = [ + "rand", + "rand_core", +] + [[package]] name = "ghash" version = "0.5.1" @@ -5963,6 +6012,18 @@ dependencies = [ "autocfg", ] +[[package]] +name = "merlin" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" +dependencies = [ + "byteorder", + "keccak", + "rand_core", + "zeroize", +] + [[package]] name = "mesc" version = "0.3.0" @@ -7526,15 +7587,22 @@ dependencies = [ [[package]] name = "revm" version = "18.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=b504083#b504083f3373815e02966c1013a02c68ea9f8a90" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=8cc39db#8cc39db85670d3c1534dc91253c833aa61b51171" dependencies = [ "auto_impl", "cfg-if", "dyn-clone", + "hkdf", + "merlin", + "rand_core", "revm-interpreter", "revm-precompile", + "schnorrkel", + "secp256k1", "serde", "serde_json", + "sha2", + "tee_service_api 0.1.0 (git+ssh://git@github.com/SeismicSystems/TEEService.git?rev=c3243bf)", ] [[package]] @@ -7558,7 +7626,7 @@ dependencies = [ [[package]] name = "revm-interpreter" version = "14.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=b504083#b504083f3373815e02966c1013a02c68ea9f8a90" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=8cc39db#8cc39db85670d3c1534dc91253c833aa61b51171" dependencies = [ "revm-primitives", "serde", @@ -7567,7 +7635,7 @@ dependencies = [ [[package]] name = "revm-precompile" version = "15.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=b504083#b504083f3373815e02966c1013a02c68ea9f8a90" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=8cc39db#8cc39db85670d3c1534dc91253c833aa61b51171" dependencies = [ "aurora-engine-modexp", "blst", @@ -7586,7 +7654,7 @@ dependencies = [ [[package]] name = "revm-primitives" version = "14.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=b504083#b504083f3373815e02966c1013a02c68ea9f8a90" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=8cc39db#8cc39db85670d3c1534dc91253c833aa61b51171" dependencies = [ "alloy-eip2930", "alloy-eip7702", @@ -8035,6 +8103,25 @@ dependencies = [ "hashbrown 0.13.2", ] +[[package]] +name = "schnorrkel" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de18f6d8ba0aad7045f5feae07ec29899c1112584a38509a84ad7b04451eaa0" +dependencies = [ + "aead", + "arrayref", + "arrayvec", + "curve25519-dalek", + "getrandom_or_panic", + "merlin", + "rand_core", + "serde_bytes", + "sha2", + "subtle", + "zeroize", +] + [[package]] name = "scoped-tls" version = "1.0.1" @@ -8200,6 +8287,15 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde_bytes" +version = "0.11.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a" +dependencies = [ + "serde", +] + [[package]] name = "serde_derive" version = "1.0.216" @@ -8917,6 +9013,29 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" +[[package]] +name = "tee_service_api" +version = "0.1.0" +source = "git+ssh://git@github.com/SeismicSystems/TEEService.git?rev=c3243bf#c3243bf1df8d52e832b58a31abd81e5bb01f54af" +dependencies = [ + "aes-gcm", + "anyhow", + "bincode", + "byteorder", + "bytes", + "hkdf", + "hyper 0.14.32", + "kbs-types", + "once_cell", + "reqwest", + "secp256k1", + "serde", + "serde_json", + "sha2", + "strum 0.25.0", + "tokio", +] + [[package]] name = "tee_service_api" version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml index ecbf3a53e..6b0a9eb06 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -302,9 +302,9 @@ tee_service_api = { git = "ssh://git@github.com/SeismicSystems/TEEService.git", foundry-fork-db = { git = "ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "cd54596" } # seismic-revm -revm = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "b504083" } -revm-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "b504083" } -revm-interpreter = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "b504083" } +revm = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "8cc39db" } +revm-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "8cc39db" } +revm-interpreter = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "8cc39db" } # seismic-revm-inspectors revm-inspectors = { git = "ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "19828b8" } @@ -343,4 +343,4 @@ alloy-transport-http = { git = "ssh://git@github.com/SeismicSystems/seismic-allo alloy-transport-ipc = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } alloy-transport-ws = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } alloy-node-bindings = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } -alloy-network-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } \ No newline at end of file +alloy-network-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } diff --git a/crates/anvil/Cargo.toml b/crates/anvil/Cargo.toml index 9458b01c6..dd7e2f1a8 100644 --- a/crates/anvil/Cargo.toml +++ b/crates/anvil/Cargo.toml @@ -43,6 +43,7 @@ revm = { workspace = true, features = [ "serde", "memory_limit", "c-kzg", + "seismic" ] } alloy-primitives = { workspace = true, features = ["serde"] } alloy-consensus = { workspace = true, features = ["k256", "kzg"] } @@ -135,8 +136,9 @@ tokio = { workspace = true, features = ["full"] } [features] -default = ["cli", "jemalloc"] +default = ["cli", "jemalloc", "seismic"] cmd = ["clap", "clap_complete", "ctrlc", "anvil-server/clap"] cli = ["tokio/full", "cmd", "fdlimit"] asm-keccak = ["alloy-primitives/asm-keccak"] jemalloc = ["dep:tikv-jemallocator"] +seismic = [] diff --git a/crates/anvil/core/Cargo.toml b/crates/anvil/core/Cargo.toml index f03ca3b2d..dd595707f 100644 --- a/crates/anvil/core/Cargo.toml +++ b/crates/anvil/core/Cargo.toml @@ -20,6 +20,7 @@ revm = { workspace = true, default-features = false, features = [ "serde", "memory_limit", "c-kzg", + "seismic" ] } alloy-primitives = { workspace = true, features = ["serde", "seismic", "rlp"] } diff --git a/crates/anvil/src/cmd.rs b/crates/anvil/src/cmd.rs index dde82f19b..28a750987 100644 --- a/crates/anvil/src/cmd.rs +++ b/crates/anvil/src/cmd.rs @@ -1,7 +1,7 @@ use crate::{ config::{ForkChoice, DEFAULT_MNEMONIC}, eth::{backend::db::SerializableState, pool::transactions::TransactionOrder, EthApi}, - hardfork::OptimismHardfork, + hardfork::{OptimismHardfork, SeismicHardfork}, AccountGenerator, EthereumHardfork, NodeConfig, CHAIN_ID, }; use alloy_genesis::Genesis; @@ -219,6 +219,8 @@ impl NodeArgs { Some(hf) => { if self.evm_opts.optimism { Some(OptimismHardfork::from_str(hf)?.into()) + } else if self.evm_opts.seismic { + Some(SeismicHardfork::from_str(hf)?.into()) } else { Some(EthereumHardfork::from_str(hf)?.into()) } @@ -275,6 +277,7 @@ impl NodeArgs { .with_transaction_block_keeper(self.transaction_block_keeper) .with_max_persisted_states(self.max_persisted_states) .with_optimism(self.evm_opts.optimism) + .with_seismic(self.evm_opts.seismic) .with_odyssey(self.evm_opts.odyssey) .with_disable_default_create2_deployer(self.evm_opts.disable_default_create2_deployer) .with_slots_in_an_epoch(self.slots_in_an_epoch) @@ -575,6 +578,10 @@ pub struct AnvilEvmArgs { #[arg(long, visible_alias = "optimism")] pub optimism: bool, + /// Run a Seismic chain + #[arg(long, visible_alias = "seismic")] + pub seismic: bool, + /// Disable the default create2 deployer #[arg(long, visible_alias = "no-create2")] pub disable_default_create2_deployer: bool, diff --git a/crates/anvil/src/config.rs b/crates/anvil/src/config.rs index 9e22adeed..a4833d5b4 100644 --- a/crates/anvil/src/config.rs +++ b/crates/anvil/src/config.rs @@ -11,7 +11,7 @@ use crate::{ fees::{INITIAL_BASE_FEE, INITIAL_GAS_PRICE}, pool::transactions::{PoolTransaction, TransactionOrder}, }, - hardfork::{ChainHardfork, OptimismHardfork}, + hardfork::{ChainHardfork, OptimismHardfork, SeismicHardfork}, mem::{self, in_memory_db::MemDb}, EthereumHardfork, FeeManager, PrecompileFactory, }; @@ -181,6 +181,8 @@ pub struct NodeConfig { pub disable_default_create2_deployer: bool, /// Enable Optimism deposit transaction pub enable_optimism: bool, + /// Enable Seismic EVM Specs + pub enable_seismic: bool, /// Slots in an epoch pub slots_in_an_epoch: u64, /// The memory limit per EVM execution in bytes. @@ -464,6 +466,7 @@ impl Default for NodeConfig { transaction_block_keeper: None, disable_default_create2_deployer: false, enable_optimism: false, + enable_seismic: false, slots_in_an_epoch: 32, memory_limit: None, precompile_factory: None, @@ -516,6 +519,9 @@ impl NodeConfig { if self.enable_optimism { return OptimismHardfork::default().into(); } + if self.enable_seismic || cfg!(feature = "seismic") { + return SeismicHardfork::default().into(); + } EthereumHardfork::default().into() } @@ -938,6 +944,13 @@ impl NodeConfig { self } + /// Sets whether to enable seismic support + #[must_use] + pub fn with_seismic(mut self, enable_seismic: bool) -> Self { + self.enable_seismic = enable_seismic; + self + } + /// Sets whether to disable the default create2 deployer #[must_use] pub fn with_disable_default_create2_deployer(mut self, yes: bool) -> Self { diff --git a/crates/anvil/src/eth/api.rs b/crates/anvil/src/eth/api.rs index edb112ec4..6ce4deccc 100644 --- a/crates/anvil/src/eth/api.rs +++ b/crates/anvil/src/eth/api.rs @@ -1053,7 +1053,7 @@ impl EthApi { Ok(*tx.hash()) } - pub async fn unsigned_call( + async fn unsigned_call( &self, request: WithOtherFields, block_number: Option, @@ -1070,7 +1070,7 @@ impl EthApi { "not available on past forked blocks".to_string(), )); } - return Ok(fork.call(&request, Some(number.into())).await?) + return Ok(fork.call(&request, Some(number.into())).await?); } } } diff --git a/crates/anvil/src/eth/backend/executor.rs b/crates/anvil/src/eth/backend/executor.rs index 8d90ff948..1bffb230a 100644 --- a/crates/anvil/src/eth/backend/executor.rs +++ b/crates/anvil/src/eth/backend/executor.rs @@ -30,7 +30,9 @@ use foundry_evm::{ traces::CallTraceNode, utils::odyssey_handler_register, }; -use revm::{db::WrapDatabaseRef, primitives::MAX_BLOB_GAS_PER_BLOCK}; +use revm::{ + db::WrapDatabaseRef, primitives::MAX_BLOB_GAS_PER_BLOCK, seismic::seismic_handle_register, +}; use std::sync::Arc; /// Represents an executed transaction (transacted on the DB) @@ -415,6 +417,10 @@ pub fn new_evm_with_inspector( handler.append_handler_register_plain(odyssey_handler_register); } + if handler.is_seismic() { + handler.append_handler_register_plain(seismic_handle_register); + } + let context = revm::Context::new(revm::EvmContext::new_with_env(db, env), inspector); revm::Evm::new(context, handler) diff --git a/crates/anvil/src/eth/backend/mem/mod.rs b/crates/anvil/src/eth/backend/mem/mod.rs index e11afc25d..c7be3ad4d 100644 --- a/crates/anvil/src/eth/backend/mem/mod.rs +++ b/crates/anvil/src/eth/backend/mem/mod.rs @@ -1461,6 +1461,7 @@ impl Backend { blob_hashes, optimism: OptimismFields { enveloped_tx: Some(Bytes::new()), ..Default::default() }, authorization_list: authorization_list.map(Into::into), + tx_hash: B256::ZERO, }; if env.block.basefee.is_zero() { diff --git a/crates/anvil/src/hardfork.rs b/crates/anvil/src/hardfork.rs index 2aedb7986..6fca11ba4 100644 --- a/crates/anvil/src/hardfork.rs +++ b/crates/anvil/src/hardfork.rs @@ -7,6 +7,7 @@ use std::str::FromStr; pub enum ChainHardfork { Ethereum(EthereumHardfork), Optimism(OptimismHardfork), + Seismic(SeismicHardfork), } impl From for ChainHardfork { @@ -21,11 +22,18 @@ impl From for ChainHardfork { } } +impl From for ChainHardfork { + fn from(value: SeismicHardfork) -> Self { + Self::Seismic(value) + } +} + impl From for SpecId { fn from(fork: ChainHardfork) -> Self { match fork { ChainHardfork::Ethereum(hardfork) => hardfork.into(), ChainHardfork::Optimism(hardfork) => hardfork.into(), + ChainHardfork::Seismic(hardfork) => hardfork.into(), } } } @@ -214,6 +222,36 @@ impl From for SpecId { } } +#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub enum SeismicHardfork { + Mercury, + #[default] + Latest, +} + +impl FromStr for SeismicHardfork { + type Err = eyre::Report; + + fn from_str(s: &str) -> Result { + let s = s.to_lowercase(); + let hardfork = match s.as_str() { + "mercury" => Self::Mercury, + "latest" => Self::Latest, + _ => bail!("Unknown hardfork {s}"), + }; + Ok(hardfork) + } +} + +impl From for SpecId { + fn from(fork: SeismicHardfork) -> Self { + match fork { + SeismicHardfork::Mercury => Self::MERCURY, + SeismicHardfork::Latest => Self::LATEST, + } + } +} + #[cfg(test)] mod tests { use crate::EthereumHardfork; diff --git a/crates/anvil/tests/it/main.rs b/crates/anvil/tests/it/main.rs index 5ff313362..825ae988f 100644 --- a/crates/anvil/tests/it/main.rs +++ b/crates/anvil/tests/it/main.rs @@ -16,6 +16,7 @@ mod otterscan; mod proof; mod pubsub; mod revert; +#[cfg(feature = "seismic")] mod seismic; mod sign; mod state; diff --git a/crates/anvil/tests/it/seismic.rs b/crates/anvil/tests/it/seismic.rs index 3ff50a0f0..af98a592d 100644 --- a/crates/anvil/tests/it/seismic.rs +++ b/crates/anvil/tests/it/seismic.rs @@ -1,14 +1,23 @@ use alloy_consensus::transaction::TxSeismic; -use alloy_network::TransactionBuilder; -use alloy_primitives::{hex, Bytes, B256, U256}; +use alloy_dyn_abi::EventExt; +use alloy_json_abi::{Event, EventParam}; +use alloy_network::{ReceiptResponse, TransactionBuilder}; +use alloy_primitives::{ + aliases::{B96, U96}, + hex::{self, FromHex}, + Address, Bytes, FixedBytes, IntoLogData, B256, U256, +}; use alloy_provider::Provider; use alloy_rpc_types::TransactionRequest; use alloy_serde::{OtherFields, WithOtherFields}; -use anvil::{spawn, NodeConfig}; -use anvil_core::eth::transaction::crypto; +use alloy_sol_types::{sol, SolCall, SolValue}; +use anvil::{eth::EthApi, spawn, NodeConfig}; +use anvil_core::eth::transaction::{crypto, SeismicCallRequest}; +use foundry_common::provider::RetryProvider; +use secp256k1::SecretKey; use serde::{Deserialize, Serialize}; use std::fs; -use tee_service_api::{get_sample_secp256k1_pk, get_sample_secp256k1_sk}; +use tee_service_api::{aes_decrypt, get_sample_secp256k1_pk, get_sample_secp256k1_sk}; /// Seismic specific transaction field(s) #[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)] @@ -26,9 +35,12 @@ impl From for OtherFields { // common utils pub const TEST_BYTECODE_PATH: &str = "/tests/it/seismic_test_bytecode.txt"; +pub const TEST_PRECOMPILES_BYTECODE_PATH: &str = "/tests/it/seismic_precompiles_test_bytecode.txt"; pub const SET_NUMBER_SELECTOR: &str = "3fb5c1cb"; // setNumber(uint256) pub const INCREMENT_SELECTOR: &str = "d09de08a"; // increment() pub const GET_NUMBER_SELECTOR: &str = "f2c9ecd8"; // getNumber() +pub const PRECOMPILES_TEST_SET_AES_KEY_SELECTOR: &str = "a0619040"; // setAESKey(suint256) +pub const PRECOMPILES_TEST_ENCRYPTED_LOG_SELECTOR: &str = "28696e36"; // submitMessage(bytes) /// Loads the bytecode from a file and returns it as a vector of bytes. pub fn load_bytecode_from_file(file_path: &str) -> Vec { @@ -52,6 +64,20 @@ pub fn get_input_data(selector: &str, value: B256) -> Bytes { input_data.into() } +pub fn concat_input_data(selector: &str, value: Bytes) -> Bytes { + let selector_bytes: Vec = hex::decode(&selector[0..8]).expect("Invalid selector"); + + // Convert value to bytes + let value_bytes: Bytes = value.into(); + + // Initialize the input data with the selector and value + let mut input_data = Vec::new(); + input_data.extend_from_slice(&selector_bytes); + input_data.extend_from_slice(&value_bytes); + + input_data.into() +} + #[tokio::test(flavor = "multi_thread")] async fn test_seismic_transaction() { let (api, handle) = spawn(NodeConfig::test()).await; @@ -164,3 +190,244 @@ async fn test_seismic_transaction() { let receipt = provider.get_transaction_receipt(pending_get.tx_hash().to_owned()).await.unwrap(); assert!(receipt.is_some()); } + +// Helpful type alias for the receipt you retrieve +type SeismicReceipt = WithOtherFields< + alloy_rpc_types::TransactionReceipt>, +>; + +// 1. Deploy a contract from bytecode. Returns its deployed address. +async fn deploy_contract( + api: &EthApi, + provider: &RetryProvider, + deployer: Address, + bytecode: Bytes, +) -> Address { + let deploy_tx = TransactionRequest::default().from(deployer).with_deploy_code(bytecode); + let deploy_tx = WithOtherFields::new(deploy_tx); + + let pending = provider.send_transaction(deploy_tx).await.unwrap(); + api.mine_one().await; + + let receipt = provider + .get_transaction_receipt(pending.tx_hash().clone()) + .await + .unwrap() + .expect("No deployment receipt found"); + + assert!(receipt.contract_address.is_some(), "Contract address missing in receipt"); + assert!(receipt.status(), "Contract deployment failed"); + + receipt.contract_address.unwrap() +} + +// 2. Sends an encrypted transaction, mines a block, and returns the receipt. +async fn send_encrypted_tx( + api: &EthApi, + provider: &RetryProvider, + from: Address, + to: Address, + encryption_sk: &SecretKey, + encryption_pk: Bytes, + unencrypted_data: &[u8], + encryption_nonce: u64, +) -> SeismicReceipt { + let encrypted_input = crypto::client_encrypt(encryption_sk, unencrypted_data, encryption_nonce) + .expect("Encryption failed"); + + let nonce = provider.get_transaction_count(from).await.unwrap(); + let tx = TransactionRequest::default() + .transaction_type(TxSeismic::TX_TYPE) + .with_from(from) + .with_to(to) + .with_nonce(nonce) + .with_gas_limit(410000) + .with_chain_id(31337) + .with_input(encrypted_input); + + let seismic_tx = WithOtherFields { + inner: tx, + other: SeismicTransactionFields { encryption_pubkey: encryption_pk }.into(), + }; + + let pending = provider.send_transaction(seismic_tx).await.unwrap(); + api.mine_one().await; + + let maybe_receipt: Option = + provider.get_transaction_receipt(pending.tx_hash().clone()).await.unwrap(); + + let receipt = maybe_receipt.expect("No transaction receipt returned"); + assert!(receipt.status(), "Encrypted transaction failed"); + receipt +} + +// 3. Helper to build the final “call” with encryption for read-only methods (e.g. your decrypt). +async fn seismic_read_call( + api: &EthApi, + provider: &RetryProvider, + from: Address, + to: Address, + encryption_sk: &SecretKey, + encryption_pk_write_tx: FixedBytes<33>, + unencrypted_data: &[u8], + encryption_nonce: u64, +) -> Bytes { + let encrypted_call = crypto::client_encrypt(encryption_sk, unencrypted_data, encryption_nonce) + .expect("Encryption for read call failed"); + + let nonce = provider.get_transaction_count(from).await.unwrap(); + let mut tx = TransactionRequest::default() + .transaction_type(TxSeismic::TX_TYPE as u8) + .with_from(from) + .with_to(to) + .with_nonce(nonce) + .with_gas_limit(410000) + .with_chain_id(31337) + .with_input(encrypted_call); + + tx.set_encryption_pubkey(encryption_pk_write_tx); + + let seismic_tx = WithOtherFields::new(tx); + + // The signing step + let transaction = api.sign_transaction(seismic_tx).await.unwrap(); + let final_call = SeismicCallRequest::Bytes(Bytes::from_hex(transaction).unwrap()); + + // Off-chain call + api.call(final_call, None, None).await.unwrap() +} + +// Actual contract being tested: +// https://github.com/SeismicSystems/early-builds/blob/main/encrypted_logs/src/end-to-end-mvp/EncryptedLogs.sol +#[tokio::test(flavor = "multi_thread")] +async fn test_seismic_precompiles_end_to_end() { + // Spin up node, get provider & deployer + let (api, handle) = spawn(NodeConfig::test()).await; + api.anvil_set_auto_mine(false).await.unwrap(); + let provider = handle.http_provider(); + let deployer = handle.dev_accounts().next().unwrap(); + + // 1. Deploy test contract + let bytecode = Bytes::from(load_bytecode_from_file(TEST_PRECOMPILES_BYTECODE_PATH)); + let contract_addr = deploy_contract(&api, &provider, deployer, bytecode).await; + + // Prepare addresses & keys + let accounts: Vec<_> = handle.dev_wallets().collect(); + let from = accounts[0].address(); + let encryption_sk = get_sample_secp256k1_sk(); + let encryption_pk = Bytes::from(get_sample_secp256k1_pk().serialize()); + let encryption_pk_write_tx = FixedBytes::<33>::from(get_sample_secp256k1_pk().serialize()); + let private_key = + B256::from_hex("7e34abdcd62eade2e803e0a8123a0015ce542b380537eff288d6da420bcc2d3b").unwrap(); + + // + // 2. Tx #1: Set AES key in the contract + // + let unencrypted_aes_key = get_input_data(PRECOMPILES_TEST_SET_AES_KEY_SELECTOR, private_key); + send_encrypted_tx( + &api, + &provider, + from, + contract_addr, + &encryption_sk, + encryption_pk.clone(), + &unencrypted_aes_key, + /* encryption_nonce */ 1, + ) + .await; + + // + // 3. Tx #2: Encrypt & send "hello world" + // + let message = Bytes::from("hello world"); + type PlaintextType = Bytes; // used for AbiEncode / AbiDecode + + let encoded_message = PlaintextType::abi_encode(&message); + let unencrypted_input = + concat_input_data(PRECOMPILES_TEST_ENCRYPTED_LOG_SELECTOR, encoded_message.into()); + let receipt = send_encrypted_tx( + &api, + &provider, + from, + contract_addr, + &encryption_sk, + encryption_pk.clone(), + &unencrypted_input, + /* encryption_nonce */ 2, + ) + .await; + + // + // 4. Tx #3: On-chain decrypt + // + let logs = receipt.inner.inner.logs(); + assert_eq!(logs.len(), 1); + assert_eq!(logs[0].inner.address, contract_addr); + + // Decode the EncryptedMessage event + let log_data = logs[0].inner.data.clone(); + let event = Event { + name: "EncryptedMessage".into(), + inputs: vec![ + EventParam { ty: "int96".into(), indexed: true, ..Default::default() }, + EventParam { ty: "bytes".into(), indexed: false, ..Default::default() }, + ], + anonymous: false, + }; + let decoded = event.decode_log(&log_data.into_log_data(), false).unwrap(); + + sol! { + #[derive(Debug, PartialEq)] + interface Encryption { + function decrypt(uint96 nonce, bytes calldata ciphertext) + external + view + onlyOwner + returns (bytes memory plaintext); + } + } + + // Extract (nonce, ciphertext) + let nonce: U96 = + U96::from_be_bytes(B96::from_slice(&decoded.indexed[0].abi_encode_packed()).into()); + let ciphertext = Bytes::from(decoded.body[0].abi_encode_packed()); + + let call = Encryption::decryptCall { nonce, ciphertext: ciphertext.clone() }; + let unencrypted_decrypt_call = call.abi_encode(); + + // Perform the read call with encryption + let output = seismic_read_call( + &api, + &provider, + from, + contract_addr, + &encryption_sk, + encryption_pk_write_tx, + &unencrypted_decrypt_call, + /* encryption_nonce */ 3, + ) + .await; + + // + // 5. Locally decrypt to cross-check + // + // 5a. AES decryption with your local private key + let secp_private = secp256k1::SecretKey::from_slice(private_key.as_ref()).unwrap(); + let aes_key: &[u8; 32] = &secp_private.secret_bytes()[0..32].try_into().unwrap(); + let decrypted_locally = + aes_decrypt(aes_key.into(), &ciphertext, decoded.indexed[0].abi_encode_packed()) + .expect("AES decryption failed"); + assert_eq!(decrypted_locally, message); + + // 5b. Decrypt the "output" from the read call + let call_nonce = provider.get_transaction_count(from).await.unwrap(); + let decrypted_output = crypto::client_decrypt(&encryption_sk, output.as_ref(), call_nonce) + .expect("client_decrypt of read-output failed"); + + let result_bytes = PlaintextType::abi_decode(&Bytes::from(decrypted_output), false) + .expect("failed to decode the bytes"); + let final_string = + String::from_utf8(result_bytes.to_vec()).expect("invalid utf8 in decrypted bytes"); + + assert_eq!(final_string, "hello world"); +} diff --git a/crates/anvil/tests/it/seismic_precompiles_test_bytecode.txt b/crates/anvil/tests/it/seismic_precompiles_test_bytecode.txt new file mode 100644 index 000000000..0ad027bda --- /dev/null +++ b/crates/anvil/tests/it/seismic_precompiles_test_bytecode.txt @@ -0,0 +1 @@ +6080604052348015600e575f5ffd5b50335f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610dce8061005b5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806328696e361461004e5780638da5cb5b1461006a578063a061904014610088578063ce75255b146100a4575b5f5ffd5b61006860048036038101906100639190610687565b6100d4565b005b61007261019a565b60405161007f9190610711565b60405180910390f35b6100a2600480360381019061009d919061075d565b6101be565b005b6100be60048036038101906100b991906107c9565b610256565b6040516100cb9190610896565b60405180910390f35b5f6100dd610412565b90505f61012d8285858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050506104f5565b9050816bffffffffffffffffffffffff167f093a34a48cc07b4bf1355d9c15ec71077c85342d872753188302f99341f961008260405160200161017091906108f0565b60405160208183030381529060405260405161018c9190610896565b60405180910390a250505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461024c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024390610986565b60405180910390fd5b8060018190b15050565b60605f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102dd90610986565b60405180910390fd5b5f838390501161032b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610322906109ee565b60405180910390fd5b5f606790505f6001b086868660405160200161034a9493929190610a92565b60405160208183030381529060405290505f5f8373ffffffffffffffffffffffffffffffffffffffff168360405161038291906108f0565b5f60405180830381855afa9150503d805f81146103ba576040519150601f19603f3d011682016040523d82523d5f602084013e6103bf565b606091505b509150915081610404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103fb90610b3c565b60405180910390fd5b809450505050509392505050565b5f5f606490505f5f8273ffffffffffffffffffffffffffffffffffffffff1660206040516020016104439190610b9d565b60405160208183030381529060405260405161045f91906108f0565b5f60405180830381855afa9150503d805f8114610497576040519150601f19603f3d011682016040523d82523d5f602084013e61049c565b606091505b5091509150816104e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d890610c01565b60405180910390fd5b5f60208201519050805f1c94505050505090565b60605f606690505f6001b0858560405160200161051493929190610c1f565b60405160208183030381529060405290505f5f8373ffffffffffffffffffffffffffffffffffffffff168360405161054c91906108f0565b5f60405180830381855afa9150503d805f8114610584576040519150601f19603f3d011682016040523d82523d5f602084013e610589565b606091505b5091509150816105ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c590610cc7565b60405180910390fd5b5f815111610611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060890610d55565b60405180910390fd5b8094505050505092915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f84011261064757610646610626565b5b8235905067ffffffffffffffff8111156106645761066361062a565b5b6020830191508360018202830111156106805761067f61062e565b5b9250929050565b5f5f6020838503121561069d5761069c61061e565b5b5f83013567ffffffffffffffff8111156106ba576106b9610622565b5b6106c685828601610632565b92509250509250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6106fb826106d2565b9050919050565b61070b816106f1565b82525050565b5f6020820190506107245f830184610702565b92915050565b5f819050919050565b61073c8161072a565b8114610746575f5ffd5b50565b5f8135905061075781610733565b92915050565b5f602082840312156107725761077161061e565b5b5f61077f84828501610749565b91505092915050565b5f6bffffffffffffffffffffffff82169050919050565b6107a881610788565b81146107b2575f5ffd5b50565b5f813590506107c38161079f565b92915050565b5f5f5f604084860312156107e0576107df61061e565b5b5f6107ed868287016107b5565b935050602084013567ffffffffffffffff81111561080e5761080d610622565b5b61081a86828701610632565b92509250509250925092565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61086882610826565b6108728185610830565b9350610882818560208601610840565b61088b8161084e565b840191505092915050565b5f6020820190508181035f8301526108ae818461085e565b905092915050565b5f81905092915050565b5f6108ca82610826565b6108d481856108b6565b93506108e4818560208601610840565b80840191505092915050565b5f6108fb82846108c0565b915081905092915050565b5f82825260208201905092915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f5f8201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b5f610970602183610906565b915061097b82610916565b604082019050919050565b5f6020820190508181035f83015261099d81610964565b9050919050565b7f436970686572746578742063616e6e6f7420626520656d7074790000000000005f82015250565b5f6109d8601a83610906565b91506109e3826109a4565b602082019050919050565b5f6020820190508181035f830152610a05816109cc565b9050919050565b5f819050919050565b610a26610a218261072a565b610a0c565b82525050565b5f8160a01b9050919050565b5f610a4282610a2c565b9050919050565b610a5a610a5582610788565b610a38565b82525050565b828183375f83830152505050565b5f610a7983856108b6565b9350610a86838584610a60565b82840190509392505050565b5f610a9d8287610a15565b602082019150610aad8286610a49565b600c82019150610abe828486610a6e565b915081905095945050505050565b7f414553206465637279707420707265636f6d70696c652063616c6c206661696c5f8201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b5f610b26602283610906565b9150610b3182610acc565b604082019050919050565b5f6020820190508181035f830152610b5381610b1a565b9050919050565b5f63ffffffff82169050919050565b5f8160e01b9050919050565b5f610b7f82610b69565b9050919050565b610b97610b9282610b5a565b610b75565b82525050565b5f610ba88284610b86565b60048201915081905092915050565b7f524e4720507265636f6d70696c652063616c6c206661696c65640000000000005f82015250565b5f610beb601a83610906565b9150610bf682610bb7565b602082019050919050565b5f6020820190508181035f830152610c1881610bdf565b9050919050565b5f610c2a8286610a15565b602082019150610c3a8285610a49565b600c82019150610c4a82846108c0565b9150819050949350505050565b7f41455320656e637279707420707265636f6d70696c652063616c6c206661696c5f8201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b5f610cb1602283610906565b9150610cbc82610c57565b604082019050919050565b5f6020820190508181035f830152610cde81610ca5565b9050919050565b7f456e6372797074696f6e2063616c6c2072657475726e6564206e6f206f7574705f8201527f7574000000000000000000000000000000000000000000000000000000000000602082015250565b5f610d3f602283610906565b9150610d4a82610ce5565b604082019050919050565b5f6020820190508181035f830152610d6c81610d33565b905091905056fea2646970667358221220553b2859c11717354ee46bc62fff8e03281ba856427b18f568a346936c735b8264736f6c637827302e382e32382d63692e323032342e31312e342b636f6d6d69742e32306261666332392e6d6f640058 diff --git a/crates/cheatcodes/src/inspector.rs b/crates/cheatcodes/src/inspector.rs index 929ae4896..92c9c3ef1 100644 --- a/crates/cheatcodes/src/inspector.rs +++ b/crates/cheatcodes/src/inspector.rs @@ -157,6 +157,7 @@ where db: &mut ccx.ecx.db as &mut dyn DatabaseExt, error, l1_block_info, + kernel: revm::seismic::Kernel::test_default(), }; let mut evm = new_evm_with_existing_context(inner, &mut *inspector); diff --git a/crates/config/src/lib.rs b/crates/config/src/lib.rs index a4646b5a0..c47607672 100644 --- a/crates/config/src/lib.rs +++ b/crates/config/src/lib.rs @@ -213,6 +213,8 @@ pub struct Config { /// evm version to use #[serde(with = "from_str_lowercase")] pub evm_version: EvmVersion, + /// Seismic version to use. Will overwrite EVM version if set. + pub seismic_version: SpecId, /// list of contracts to report gas of pub gas_reports: Vec, /// list of contracts to ignore for gas reports @@ -875,9 +877,21 @@ impl Config { config.sanitize_eof_settings(); + config.sanitize_seismic_settings(); + config } + // Turn on seismic flag if evm version is seismic. For now this logic works. + pub fn sanitize_seismic_settings(&mut self) { + if self.seismic_version == SpecId::MERCURY { + self.seismic = true; + } + if self.seismic { + self.seismic_version = SpecId::MERCURY; + } + } + /// Cleans up any duplicate `Remapping` and sorts them /// /// On windows this will convert any `\` in the remapping path into a `/` @@ -2316,6 +2330,7 @@ impl Default for Config { include_paths: vec![], force: false, evm_version: EvmVersion::Cancun, + seismic_version: SpecId::MERCURY, gas_reports: vec!["*".to_string()], gas_reports_ignore: vec![], gas_reports_include_tests: false, diff --git a/crates/evm/core/Cargo.toml b/crates/evm/core/Cargo.toml index b29cb4deb..07a70dff6 100644 --- a/crates/evm/core/Cargo.toml +++ b/crates/evm/core/Cargo.toml @@ -45,6 +45,7 @@ revm = { workspace = true, features = [ "optional_no_base_fee", "arbitrary", "optimism", + "seismic", "c-kzg", "blst", ] } diff --git a/crates/evm/core/src/utils.rs b/crates/evm/core/src/utils.rs index 380bed197..e58171c68 100644 --- a/crates/evm/core/src/utils.rs +++ b/crates/evm/core/src/utils.rs @@ -19,6 +19,7 @@ use revm::{ Gas, InstructionResult, InterpreterResult, }, primitives::{CreateScheme, EVMError, HandlerCfg, SpecId, KECCAK_EMPTY}, + seismic::seismic_handle_register, FrameOrResult, FrameResult, }; use std::{cell::RefCell, rc::Rc, sync::Arc}; @@ -333,6 +334,8 @@ pub fn new_evm_with_inspector<'evm, 'i, 'db, I: InspectorExt + ?Sized>( handler.append_handler_register_plain(revm::inspector_handle_register); if inspector.is_odyssey() { handler.append_handler_register_plain(odyssey_handler_register); + } else if handler.is_seismic() { + handler.append_handler_register_plain(seismic_handle_register); } handler.append_handler_register_plain(create2_handler_register); @@ -351,6 +354,8 @@ pub fn new_evm_with_existing_context<'a>( handler.append_handler_register_plain(revm::inspector_handle_register); if inspector.is_odyssey() { handler.append_handler_register_plain(odyssey_handler_register); + } else if handler.is_seismic() { + handler.append_handler_register_plain(seismic_handle_register); } handler.append_handler_register_plain(create2_handler_register); diff --git a/crates/forge/src/multi_runner.rs b/crates/forge/src/multi_runner.rs index 4de95d7b6..678544ecc 100644 --- a/crates/forge/src/multi_runner.rs +++ b/crates/forge/src/multi_runner.rs @@ -296,9 +296,12 @@ impl TestRunnerConfig { /// Reconfigures all fields using the given `config`. pub fn reconfigure_with(&mut self, config: Arc) { debug_assert!(!Arc::ptr_eq(&self.config, &config)); - // TODO: self.evm_opts // TODO: self.env + if config.seismic { + println!("Reconfiguring with seismic version"); + self.spec_id = config.seismic_version; + } self.spec_id = config.evm_spec_id(); self.sender = config.sender; // self.coverage = N/A; @@ -525,7 +528,11 @@ impl MultiContractRunnerBuilder { tcfg: TestRunnerConfig { evm_opts, env, - spec_id: self.evm_spec.unwrap_or_else(|| self.config.evm_spec_id()), + spec_id: if self.config.seismic { + self.config.seismic_version + } else { + self.evm_spec.unwrap_or_else(|| self.config.evm_spec_id()) + }, sender: self.sender.unwrap_or(self.config.sender), coverage: self.coverage, diff --git a/crates/forge/tests/cli/config.rs b/crates/forge/tests/cli/config.rs index 55857a606..213bc0835 100644 --- a/crates/forge/tests/cli/config.rs +++ b/crates/forge/tests/cli/config.rs @@ -1,6 +1,7 @@ //! Contains various tests for checking forge commands related to config values use alloy_primitives::{Address, B256, U256}; +use forge::revm::primitives::SpecId; use foundry_cli::utils as forge_utils; use foundry_compilers::{ artifacts::{BytecodeHash, OptimizerDetails, RevertStrings, YulDetails}, @@ -43,6 +44,7 @@ forgetest!(can_extract_config_values, |prj, cmd| { broadcast: "broadcast".into(), force: true, evm_version: EvmVersion::Byzantium, + seismic_version: SpecId::MERCURY, gas_reports: vec!["Contract".to_string()], gas_reports_ignore: vec![], gas_reports_include_tests: false, From f99a9b9138c3a711b638b13752988d777fe53df6 Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Mon, 3 Feb 2025 16:06:56 -0500 Subject: [PATCH 041/130] Metamask compatibility with EIP712 (#66) --- Cargo.lock | 1469 +++++++++-------- Cargo.toml | 75 +- crates/anvil/core/src/eth/mod.rs | 9 +- .../anvil/core/src/eth/transaction/crypto.rs | 12 + crates/anvil/core/src/eth/transaction/mod.rs | 50 +- crates/anvil/src/eth/api.rs | 117 +- crates/anvil/src/eth/backend/executor.rs | 2 +- crates/anvil/src/eth/backend/mem/mod.rs | 42 +- crates/anvil/tests/it/fork.rs | 10 +- crates/anvil/tests/it/seismic.rs | 4 +- crates/chisel/src/solidity_helper.rs | 2 +- crates/evm/core/src/utils.rs | 1 + crates/evm/traces/src/debug/sources.rs | 5 +- crates/forge/bin/cmd/geiger.rs | 11 +- 14 files changed, 1004 insertions(+), 805 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e21157ae0..1e1a917ba 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -75,7 +75,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", - "getrandom", + "getrandom 0.2.15", "once_cell", "version_check", "zerocopy", @@ -98,9 +98,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy-chains" -version = "0.1.49" +version = "0.1.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830045a4421ee38d3ab570d36d4d2b5152c066e72797139224da8de5d5981fd0" +checksum = "56f15afc5993458b42739ab3b69bdb6b4c8112acd3997dbea9bc092c9517137c" dependencies = [ "alloy-primitives", "num_enum", @@ -111,8 +111,9 @@ dependencies = [ [[package]] name = "alloy-consensus" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" dependencies = [ + "alloy-dyn-abi", "alloy-eips", "alloy-primitives", "alloy-rlp", @@ -123,12 +124,13 @@ dependencies = [ "derive_more", "k256", "serde", + "serde_json", ] [[package]] name = "alloy-consensus-any" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" dependencies = [ "alloy-consensus", "alloy-eips", @@ -141,7 +143,7 @@ dependencies = [ [[package]] name = "alloy-contract" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -155,13 +157,13 @@ dependencies = [ "alloy-transport", "futures", "futures-util", - "thiserror 2.0.9", + "thiserror 2.0.11", ] [[package]] name = "alloy-dyn-abi" version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=a273736#a273736b8410f1ec81cfd45ca4c080a72143a43c" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=6e1c0e9#6e1c0e9e6c4f955e2f0c01d859932adb46952a3c" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -175,7 +177,7 @@ dependencies = [ "proptest", "serde", "serde_json", - "winnow", + "winnow 0.6.24", ] [[package]] @@ -209,8 +211,9 @@ dependencies = [ [[package]] name = "alloy-eips" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" dependencies = [ + "alloy-dyn-abi", "alloy-eip2930", "alloy-eip7702", "alloy-primitives", @@ -226,7 +229,7 @@ dependencies = [ [[package]] name = "alloy-genesis" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" dependencies = [ "alloy-primitives", "alloy-serde", @@ -237,7 +240,7 @@ dependencies = [ [[package]] name = "alloy-json-abi" version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=a273736#a273736b8410f1ec81cfd45ca4c080a72143a43c" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=6e1c0e9#6e1c0e9e6c4f955e2f0c01d859932adb46952a3c" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -248,20 +251,20 @@ dependencies = [ [[package]] name = "alloy-json-rpc" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" dependencies = [ "alloy-primitives", "alloy-sol-types", "serde", "serde_json", - "thiserror 2.0.9", + "thiserror 2.0.11", "tracing", ] [[package]] name = "alloy-network" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -279,13 +282,13 @@ dependencies = [ "futures-utils-wasm", "serde", "serde_json", - "thiserror 2.0.9", + "thiserror 2.0.11", ] [[package]] name = "alloy-network-primitives" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" dependencies = [ "alloy-consensus", "alloy-eips", @@ -297,7 +300,7 @@ dependencies = [ [[package]] name = "alloy-node-bindings" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" dependencies = [ "alloy-genesis", "alloy-primitives", @@ -305,7 +308,7 @@ dependencies = [ "rand", "serde_json", "tempfile", - "thiserror 2.0.9", + "thiserror 2.0.11", "tracing", "url", ] @@ -313,7 +316,7 @@ dependencies = [ [[package]] name = "alloy-primitives" version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=a273736#a273736b8410f1ec81cfd45ca4c080a72143a43c" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=6e1c0e9#6e1c0e9e6c4f955e2f0c01d859932adb46952a3c" dependencies = [ "alloy-rlp", "arbitrary", @@ -323,10 +326,10 @@ dependencies = [ "derive_arbitrary", "derive_more", "foldhash", - "getrandom", + "getrandom 0.2.15", "hashbrown 0.15.2", "hex-literal", - "indexmap 2.7.0", + "indexmap 2.7.1", "itoa", "k256", "keccak-asm", @@ -344,7 +347,7 @@ dependencies = [ [[package]] name = "alloy-provider" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" dependencies = [ "alloy-chains", "alloy-consensus", @@ -371,12 +374,13 @@ dependencies = [ "futures-utils-wasm", "lru", "parking_lot", - "pin-project 1.1.7", + "pin-project 1.1.9", "reqwest", "schnellru", "serde", "serde_json", - "thiserror 2.0.9", + "tee_service_api 0.1.0 (git+ssh://git@github.com/SeismicSystems/TEEService.git?rev=21218a3)", + "thiserror 2.0.11", "tokio", "tracing", "url", @@ -386,7 +390,7 @@ dependencies = [ [[package]] name = "alloy-pubsub" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -403,9 +407,9 @@ dependencies = [ [[package]] name = "alloy-rlp" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f542548a609dca89fcd72b3b9f355928cf844d4363c5eed9c5273a3dd225e097" +checksum = "3d6c1d995bff8d011f7cd6c81820d51825e6e06d6db73914c1630ecf544d83d6" dependencies = [ "alloy-rlp-derive", "arrayvec", @@ -414,19 +418,19 @@ dependencies = [ [[package]] name = "alloy-rlp-derive" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a833d97bf8a5f0f878daf2c8451fff7de7f9de38baa5a45d936ec718d81255a" +checksum = "a40e1ef334153322fd878d07e86af7a529bcb86b2439525920a88eba87bcf943" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] name = "alloy-rpc-client" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -436,7 +440,7 @@ dependencies = [ "alloy-transport-ipc", "alloy-transport-ws", "futures", - "pin-project 1.1.7", + "pin-project 1.1.9", "reqwest", "serde", "serde_json", @@ -451,7 +455,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" dependencies = [ "alloy-primitives", "alloy-rpc-types-anvil", @@ -466,7 +470,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -477,7 +481,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -487,7 +491,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-debug" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" dependencies = [ "alloy-primitives", "serde", @@ -496,7 +500,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-engine" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" dependencies = [ "alloy-consensus", "alloy-eips", @@ -513,7 +517,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -532,20 +536,20 @@ dependencies = [ [[package]] name = "alloy-rpc-types-trace" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", "alloy-serde", "serde", "serde_json", - "thiserror 2.0.9", + "thiserror 2.0.11", ] [[package]] name = "alloy-rpc-types-txpool" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -556,7 +560,7 @@ dependencies = [ [[package]] name = "alloy-serde" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" dependencies = [ "alloy-primitives", "serde", @@ -566,7 +570,7 @@ dependencies = [ [[package]] name = "alloy-signer" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" dependencies = [ "alloy-dyn-abi", "alloy-primitives", @@ -575,13 +579,13 @@ dependencies = [ "auto_impl", "elliptic-curve", "k256", - "thiserror 2.0.9", + "thiserror 2.0.11", ] [[package]] name = "alloy-signer-aws" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" dependencies = [ "alloy-consensus", "alloy-network", @@ -591,14 +595,14 @@ dependencies = [ "aws-sdk-kms", "k256", "spki", - "thiserror 2.0.9", + "thiserror 2.0.11", "tracing", ] [[package]] name = "alloy-signer-gcp" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" dependencies = [ "alloy-consensus", "alloy-network", @@ -608,14 +612,14 @@ dependencies = [ "gcloud-sdk", "k256", "spki", - "thiserror 2.0.9", + "thiserror 2.0.11", "tracing", ] [[package]] name = "alloy-signer-ledger" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -626,15 +630,15 @@ dependencies = [ "async-trait", "coins-ledger", "futures-util", - "semver 1.0.24", - "thiserror 2.0.9", + "semver 1.0.25", + "thiserror 2.0.11", "tracing", ] [[package]] name = "alloy-signer-local" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" dependencies = [ "alloy-consensus", "alloy-network", @@ -646,21 +650,21 @@ dependencies = [ "eth-keystore", "k256", "rand", - "thiserror 2.0.9", + "thiserror 2.0.11", ] [[package]] name = "alloy-signer-trezor" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" dependencies = [ "alloy-consensus", "alloy-network", "alloy-primitives", "alloy-signer", "async-trait", - "semver 1.0.24", - "thiserror 2.0.9", + "semver 1.0.25", + "thiserror 2.0.11", "tracing", "trezor-client", ] @@ -668,30 +672,30 @@ dependencies = [ [[package]] name = "alloy-sol-macro" version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=a273736#a273736b8410f1ec81cfd45ca4c080a72143a43c" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=6e1c0e9#6e1c0e9e6c4f955e2f0c01d859932adb46952a3c" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] name = "alloy-sol-macro-expander" version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=a273736#a273736b8410f1ec81cfd45ca4c080a72143a43c" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=6e1c0e9#6e1c0e9e6c4f955e2f0c01d859932adb46952a3c" dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", "const-hex", "heck 0.5.0", - "indexmap 2.7.0", + "indexmap 2.7.1", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", "syn-solidity", "tiny-keccak", ] @@ -699,7 +703,7 @@ dependencies = [ [[package]] name = "alloy-sol-macro-input" version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=a273736#a273736b8410f1ec81cfd45ca4c080a72143a43c" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=6e1c0e9#6e1c0e9e6c4f955e2f0c01d859932adb46952a3c" dependencies = [ "alloy-json-abi", "const-hex", @@ -708,23 +712,23 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.91", + "syn 2.0.98", "syn-solidity", ] [[package]] name = "alloy-sol-type-parser" version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=a273736#a273736b8410f1ec81cfd45ca4c080a72143a43c" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=6e1c0e9#6e1c0e9e6c4f955e2f0c01d859932adb46952a3c" dependencies = [ "serde", - "winnow", + "winnow 0.6.24", ] [[package]] name = "alloy-sol-types" version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=a273736#a273736b8410f1ec81cfd45ca4c080a72143a43c" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=6e1c0e9#6e1c0e9e6c4f955e2f0c01d859932adb46952a3c" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -736,7 +740,7 @@ dependencies = [ [[package]] name = "alloy-transport" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" dependencies = [ "alloy-json-rpc", "base64 0.22.1", @@ -744,7 +748,7 @@ dependencies = [ "futures-utils-wasm", "serde", "serde_json", - "thiserror 2.0.9", + "thiserror 2.0.11", "tokio", "tower 0.5.2", "tracing", @@ -755,7 +759,7 @@ dependencies = [ [[package]] name = "alloy-transport-http" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -769,7 +773,7 @@ dependencies = [ [[package]] name = "alloy-transport-ipc" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" dependencies = [ "alloy-json-rpc", "alloy-pubsub", @@ -777,7 +781,7 @@ dependencies = [ "bytes", "futures", "interprocess", - "pin-project 1.1.7", + "pin-project 1.1.9", "serde", "serde_json", "tempfile", @@ -789,13 +793,13 @@ dependencies = [ [[package]] name = "alloy-transport-ws" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=350d891#350d8918f1cffb3a90e9ac2c59bb2834ff94cd30" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" dependencies = [ "alloy-pubsub", "alloy-transport", "futures", "http 1.2.0", - "rustls 0.23.20", + "rustls 0.23.22", "serde_json", "tokio", "tokio-tungstenite", @@ -805,9 +809,9 @@ dependencies = [ [[package]] name = "alloy-trie" -version = "0.7.6" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a5fd8fea044cc9a8c8a50bb6f28e31f0385d820f116c5b98f6f4e55d6e5590b" +checksum = "6917c79e837aa7b77b7a6dae9f89cbe15313ac161c4d3cfaf8909ef21f3d22d8" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -854,6 +858,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "710e8eae58854cdc1790fcb56cca04d712a17be849eeb81da2a724bf4bae2bc4" dependencies = [ "anstyle", + "memchr", "unicode-width 0.2.0", ] @@ -898,11 +903,12 @@ dependencies = [ [[package]] name = "anstyle-wincon" -version = "3.0.6" +version = "3.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" +checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" dependencies = [ "anstyle", + "once_cell", "windows-sys 0.59.0", ] @@ -953,7 +959,7 @@ dependencies = [ "foundry-evm", "foundry-test-utils", "futures", - "hyper 1.5.2", + "hyper 1.6.0", "itertools 0.13.0", "k256", "op-alloy-consensus", @@ -965,9 +971,9 @@ dependencies = [ "serde_json", "serde_repr", "similar-asserts", - "tee_service_api 0.1.0 (git+ssh://git@github.com/SeismicSystems/TEEService.git?rev=cb0fb08)", + "tee_service_api 0.1.0 (git+ssh://git@github.com/SeismicSystems/TEEService.git?rev=39b2865)", "tempfile", - "thiserror 2.0.9", + "thiserror 2.0.11", "tikv-jemallocator", "tokio", "tower 0.4.13", @@ -1001,8 +1007,8 @@ dependencies = [ "secp256k1", "serde", "serde_json", - "tee_service_api 0.1.0 (git+ssh://git@github.com/SeismicSystems/TEEService.git?rev=cb0fb08)", - "thiserror 2.0.9", + "tee_service_api 0.1.0 (git+ssh://git@github.com/SeismicSystems/TEEService.git?rev=39b2865)", + "thiserror 2.0.11", ] [[package]] @@ -1025,10 +1031,10 @@ dependencies = [ "futures", "interprocess", "parking_lot", - "pin-project 1.1.7", + "pin-project 1.1.9", "serde", "serde_json", - "thiserror 2.0.9", + "thiserror 2.0.11", "tokio-util", "tower-http", "tracing", @@ -1237,7 +1243,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -1259,18 +1265,18 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] name = "async-trait" -version = "0.1.83" +version = "0.1.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +checksum = "644dd749086bf3771a2fbc5f256fdb982d53f011c7d5d560304eafeecebce79d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -1317,13 +1323,13 @@ dependencies = [ [[package]] name = "auto_impl" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" +checksum = "e12882f59de5360c748c4cbf569a042d5fb0eb515f7bea9c1f470b47f6ffbd73" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -1334,9 +1340,9 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "aws-config" -version = "1.5.11" +version = "1.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5d1c2c88936a73c699225d0bc00684a534166b0cebc2659c3cdf08de8edc64c" +checksum = "dc47e70fc35d054c8fcd296d47a61711f043ac80534a10b4f741904f81e73a90" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1376,9 +1382,9 @@ dependencies = [ [[package]] name = "aws-runtime" -version = "1.5.1" +version = "1.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "300a12520b4e6d08b73f77680f12c16e8ae43250d55100e0b2be46d78da16a48" +checksum = "bee7643696e7fdd74c10f9eb42848a87fe469d35eae9c3323f80aa98f350baac" dependencies = [ "aws-credential-types", "aws-sigv4", @@ -1396,14 +1402,14 @@ dependencies = [ "percent-encoding", "pin-project-lite", "tracing", - "uuid 1.11.0", + "uuid 1.12.1", ] [[package]] name = "aws-sdk-kms" -version = "1.52.0" +version = "1.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ff4c717bf02350576b1542d7534edda68b95299b72700424978afd125b0b507" +checksum = "40b7a24700ac548025a47a5c579886f5198895bb1eccd8964dfd71cd66c16912" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1423,9 +1429,9 @@ dependencies = [ [[package]] name = "aws-sdk-sso" -version = "1.51.0" +version = "1.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74995133da38f109a0eb8e8c886f9e80c713b6e9f2e6e5a6a1ba4450ce2ffc46" +checksum = "c54bab121fe1881a74c338c5f723d1592bf3b53167f80268a1274f404e1acc38" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1445,9 +1451,9 @@ dependencies = [ [[package]] name = "aws-sdk-ssooidc" -version = "1.52.0" +version = "1.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7062a779685cbf3b2401eb36151e2c6589fd5f3569b8a6bc2d199e5aaa1d059" +checksum = "8c8234fd024f7ac61c4e44ea008029bde934250f371efe7d4a39708397b1080c" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1467,9 +1473,9 @@ dependencies = [ [[package]] name = "aws-sdk-sts" -version = "1.52.0" +version = "1.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "299dae7b1dc0ee50434453fa5a229dc4b22bd3ee50409ff16becf1f7346e0193" +checksum = "ba60e1d519d6f23a9df712c04fdeadd7872ac911c84b2f62a8bda92e129b7962" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1490,9 +1496,9 @@ dependencies = [ [[package]] name = "aws-sigv4" -version = "1.2.6" +version = "1.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d3820e0c08d0737872ff3c7c1f21ebbb6693d832312d6152bf18ef50a5471c2" +checksum = "690118821e46967b3c4501d67d7d52dd75106a9c54cf36cefa1985cedbe94e05" dependencies = [ "aws-credential-types", "aws-smithy-http", @@ -1513,9 +1519,9 @@ dependencies = [ [[package]] name = "aws-smithy-async" -version = "1.2.2" +version = "1.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8aa8ff1492fd9fb99ae28e8467af0dbbb7c31512b16fabf1a0f10d7bb6ef78bb" +checksum = "fa59d1327d8b5053c54bf2eaae63bf629ba9e904434d0835a28ed3c0ed0a614e" dependencies = [ "futures-util", "pin-project-lite", @@ -1524,9 +1530,9 @@ dependencies = [ [[package]] name = "aws-smithy-http" -version = "0.60.11" +version = "0.60.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c8bc3e8fdc6b8d07d976e301c02fe553f72a39b7a9fea820e023268467d7ab6" +checksum = "7809c27ad8da6a6a68c454e651d4962479e81472aa19ae99e59f9aba1f9713cc" dependencies = [ "aws-smithy-runtime-api", "aws-smithy-types", @@ -1544,9 +1550,9 @@ dependencies = [ [[package]] name = "aws-smithy-json" -version = "0.61.1" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee4e69cc50921eb913c6b662f8d909131bb3e6ad6cb6090d3a39b66fc5c52095" +checksum = "623a51127f24c30776c8b374295f2df78d92517386f77ba30773f15a30ce1422" dependencies = [ "aws-smithy-types", ] @@ -1563,9 +1569,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime" -version = "1.7.5" +version = "1.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "431a10d0e07e09091284ef04453dae4069283aa108d209974d67e77ae1caa658" +checksum = "865f7050bbc7107a6c98a397a9fcd9413690c27fa718446967cf03b2d3ac517e" dependencies = [ "aws-smithy-async", "aws-smithy-http", @@ -1607,9 +1613,9 @@ dependencies = [ [[package]] name = "aws-smithy-types" -version = "1.2.10" +version = "1.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecbf4d5dfb169812e2b240a4350f15ad3c6b03a54074e5712818801615f2dc5" +checksum = "a28f6feb647fb5e0d5b50f0472c19a7db9462b74e2fec01bb0b44eedcc834e97" dependencies = [ "base64-simd", "bytes", @@ -1639,9 +1645,9 @@ dependencies = [ [[package]] name = "aws-types" -version = "1.3.3" +version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5221b91b3e441e6675310829fd8984801b772cb1546ef6c0e54dec9f1ac13fef" +checksum = "b0df5a18c4f951c645300d365fec53a61418bcf4650f604f85fe2a665bfaa0c2" dependencies = [ "aws-credential-types", "aws-smithy-async", @@ -1665,7 +1671,7 @@ dependencies = [ "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.5.2", + "hyper 1.6.0", "hyper-util", "itoa", "matchit", @@ -1785,7 +1791,16 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" dependencies = [ - "bit-vec", + "bit-vec 0.6.3", +] + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec 0.8.0", ] [[package]] @@ -1794,6 +1809,12 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + [[package]] name = "bitflags" version = "1.3.2" @@ -1802,9 +1823,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.6.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" dependencies = [ "arbitrary", "serde", @@ -1846,9 +1867,9 @@ dependencies = [ [[package]] name = "bon" -version = "3.3.0" +version = "3.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f265cdb2e8501f1c952749e78babe8f1937be92c98120e5f78fc72d634682bad" +checksum = "fe7acc34ff59877422326db7d6f2d845a582b16396b6b08194942bf34c6528ab" dependencies = [ "bon-macros", "rustversion", @@ -1856,9 +1877,9 @@ dependencies = [ [[package]] name = "bon-macros" -version = "3.3.0" +version = "3.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38aa5c627cd7706490e5b003d685f8b9d69bc343b1a00b9fdd01e75fdf6827cf" +checksum = "4159dd617a7fbc9be6a692fe69dc2954f8e6bb6bb5e4d7578467441390d77fd0" dependencies = [ "darling", "ident_case", @@ -1866,7 +1887,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -1881,9 +1902,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.11.1" +version = "1.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "786a307d683a5bf92e6fd5fd69a7eb613751668d1d8d67d802846dfe367c62c8" +checksum = "531a9155a481e2ee699d4f98f43c0ca4ff8ee1bfd55c31e9e98fb29d2b176fe0" dependencies = [ "memchr", "regex-automata 0.4.9", @@ -1898,9 +1919,9 @@ checksum = "b4ae4235e6dac0694637c763029ecea1a2ec9e4e06ec2729bd21ba4d9c863eb7" [[package]] name = "bumpalo" -version = "3.16.0" +version = "3.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" [[package]] name = "byte-slice-cast" @@ -1922,9 +1943,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" +checksum = "f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9" dependencies = [ "serde", ] @@ -2001,7 +2022,7 @@ checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" dependencies = [ "camino", "cargo-platform", - "semver 1.0.24", + "semver 1.0.25", "serde", "serde_json", "thiserror 1.0.69", @@ -2061,7 +2082,7 @@ dependencies = [ "rayon", "regex", "rpassword", - "semver 1.0.24", + "semver 1.0.25", "serde", "serde_json", "tempfile", @@ -2083,9 +2104,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.5" +version = "1.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31a0499c1dc64f458ad13872de75c0eb7e3fdb0e67964610c914b034fc5956e" +checksum = "e4730490333d58093109dc02c23174c3f4d490998c3fed3cc8e82d57afedb9cf" dependencies = [ "shlex", ] @@ -2130,7 +2151,7 @@ dependencies = [ "reqwest", "revm", "rustyline", - "semver 1.0.24", + "semver 1.0.25", "serde", "serde_json", "serial_test", @@ -2198,9 +2219,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.23" +version = "4.5.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3135e7ec2ef7b10c6ed8950f0f792ed96ee093fa088608f1c76e569722700c84" +checksum = "769b0145982b4b48713e01ec42d61614425f27b7058bda7180a3a41f30104796" dependencies = [ "clap_builder", "clap_derive", @@ -2208,9 +2229,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.23" +version = "4.5.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30582fc632330df2bd26877bde0c1f4470d57c582bbc070376afcd04d8cb4838" +checksum = "1b26884eb4b57140e4d2d93652abfa49498b938b3c9179f9fc487b0acc3edad7" dependencies = [ "anstream", "anstyle", @@ -2223,9 +2244,9 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.5.40" +version = "4.5.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac2e663e3e3bed2d32d065a8404024dad306e699a04263ec59919529f803aee9" +checksum = "375f9d8255adeeedd51053574fd8d4ba875ea5fa558e86617b07f09f1680c8b6" dependencies = [ "clap", ] @@ -2242,14 +2263,14 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.18" +version = "4.5.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" +checksum = "54b755194d6389280185988721fffba69495eed5ee9feeee9a599b53db80318c" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -2355,7 +2376,7 @@ dependencies = [ "byteorder", "cfg-if", "const-hex", - "getrandom", + "getrandom 0.2.15", "hidapi-rusb", "js-sys", "log", @@ -2415,9 +2436,9 @@ dependencies = [ [[package]] name = "compact_str" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6050c3a16ddab2e412160b31f2c871015704239bca62f72f6e5f0be631d3f644" +checksum = "3b79c4069c6cad78e2e0cdfcbd26275770669fb39fd308a752dc110e83b9af32" dependencies = [ "castaway", "cfg-if", @@ -2521,9 +2542,9 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] @@ -2577,7 +2598,7 @@ version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "crossterm_winapi", "mio 1.0.3", "parking_lot", @@ -2598,9 +2619,9 @@ dependencies = [ [[package]] name = "crunchy" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" [[package]] name = "crypto-bigint" @@ -2668,7 +2689,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -2692,7 +2713,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -2703,7 +2724,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -2722,9 +2743,9 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" +checksum = "0e60eed09d8c01d3cee5b7d30acb059b76614c918fa0f992e0dd6eeb10daad6f" [[package]] name = "dbus" @@ -2776,7 +2797,7 @@ checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -2797,7 +2818,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -2807,7 +2828,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -2828,7 +2849,7 @@ dependencies = [ "convert_case", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", "unicode-xid", ] @@ -2845,12 +2866,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "diff" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" - [[package]] name = "digest" version = "0.9.0" @@ -2942,7 +2957,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -2967,7 +2982,7 @@ checksum = "8dc51d98e636f5e3b0759a39257458b22619cac7e96d932da6eeb052891bb67c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -2996,9 +3011,9 @@ checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "dyn-clone" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" +checksum = "feeef44e73baff3a26d371801df019877a9866a8c493d315ab00177843314f35" [[package]] name = "ecdsa" @@ -3094,7 +3109,7 @@ checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -3229,7 +3244,7 @@ dependencies = [ "regex", "serde", "serde_json", - "syn 2.0.91", + "syn 2.0.98", "toml 0.8.19", "walkdir", ] @@ -3257,7 +3272,7 @@ dependencies = [ "serde", "serde_json", "strum 0.26.3", - "syn 2.0.91", + "syn 2.0.98", "tempfile", "thiserror 1.0.69", "tiny-keccak", @@ -3328,17 +3343,6 @@ dependencies = [ "bytes", ] -[[package]] -name = "fastrlp" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce8dba4714ef14b8274c371879b175aa55b16b30f269663f19d576f380018dc4" -dependencies = [ - "arrayvec", - "auto_impl", - "bytes", -] - [[package]] name = "fd-lock" version = "4.0.2" @@ -3429,7 +3433,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" dependencies = [ "crc32fast", - "miniz_oxide 0.8.2", + "miniz_oxide 0.8.3", ] [[package]] @@ -3510,7 +3514,7 @@ dependencies = [ "futures", "globset", "humantime-serde", - "hyper 1.5.2", + "hyper 1.6.0", "indicatif", "inferno", "itertools 0.13.0", @@ -3525,7 +3529,7 @@ dependencies = [ "regex", "reqwest", "revm-inspectors", - "semver 1.0.24", + "semver 1.0.25", "serde", "serde_json", "similar", @@ -3537,7 +3541,7 @@ dependencies = [ "strum 0.26.3", "svm-rs", "tempfile", - "thiserror 2.0.9", + "thiserror 2.0.11", "tikv-jemallocator", "tokio", "toml 0.8.19", @@ -3570,7 +3574,7 @@ dependencies = [ "serde", "serde_json", "solang-parser", - "thiserror 2.0.9", + "thiserror 2.0.11", "toml 0.8.19", "tracing", ] @@ -3585,7 +3589,7 @@ dependencies = [ "itertools 0.13.0", "similar-asserts", "solang-parser", - "thiserror 2.0.9", + "thiserror 2.0.11", "toml 0.8.19", "tracing", "tracing-subscriber", @@ -3627,7 +3631,7 @@ dependencies = [ "itertools 0.13.0", "parking_lot", "revm-inspectors", - "semver 1.0.24", + "semver 1.0.25", "serde", "serde_json", "tempfile", @@ -3667,7 +3671,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -3695,7 +3699,7 @@ dependencies = [ "regex", "reqwest", "revm-primitives", - "semver 1.0.24", + "semver 1.0.25", "serde", "serde_json", "tempfile", @@ -3724,7 +3728,7 @@ dependencies = [ "alloy-primitives", "foundry-compilers", "reqwest", - "semver 1.0.24", + "semver 1.0.25", "serde", "serde_json", "thiserror 1.0.69", @@ -3770,10 +3774,10 @@ dependencies = [ "rand", "revm", "revm-inspectors", - "semver 1.0.24", + "semver 1.0.25", "serde", "serde_json", - "thiserror 2.0.9", + "thiserror 2.0.11", "toml 0.8.19", "tracing", "vergen", @@ -3867,12 +3871,12 @@ dependencies = [ "itertools 0.13.0", "num-format", "reqwest", - "semver 1.0.24", + "semver 1.0.25", "serde", "serde_json", "similar-asserts", "terminal_size", - "thiserror 2.0.9", + "thiserror 2.0.11", "tokio", "tower 0.4.13", "tracing", @@ -3903,9 +3907,9 @@ dependencies = [ [[package]] name = "foundry-compilers" -version = "0.12.8" +version = "0.12.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d817beee8c566a99f4267f25ff63d0de46c442948496ecef91ead56e3383090c" +checksum = "f67e3eab56847dcf269eb186226f95874b171e262952cff6c910da36b1469e10" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -3923,7 +3927,7 @@ dependencies = [ "path-slash", "rand", "rayon", - "semver 1.0.24", + "semver 1.0.25", "serde", "serde_json", "sha2", @@ -3931,18 +3935,18 @@ dependencies = [ "svm-rs", "svm-rs-builds", "tempfile", - "thiserror 2.0.9", + "thiserror 2.0.11", "tokio", "tracing", - "winnow", + "winnow 0.6.24", "yansi", ] [[package]] name = "foundry-compilers-artifacts" -version = "0.12.8" +version = "0.12.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec784a3a809ba2ee723fcfeb737a6ac90b4fd1e4d048c2d49fed6723bd35547" +checksum = "865b00448dc2a5d56bae287c36fa716379ffcdd937aefb7758bd20b62024d234" dependencies = [ "foundry-compilers-artifacts-solc", "foundry-compilers-artifacts-vyper", @@ -3950,9 +3954,9 @@ dependencies = [ [[package]] name = "foundry-compilers-artifacts-solc" -version = "0.12.8" +version = "0.12.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44549c33e5a03408c8d40c36d764b7e84d261258ef481c19e4a612e609fdf8a4" +checksum = "668972ba511f80895ea12c75cd12fccd6627c26e64763799d83978b4e0916cae" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -3961,11 +3965,11 @@ dependencies = [ "md-5", "path-slash", "rayon", - "semver 1.0.24", + "semver 1.0.25", "serde", "serde_json", "serde_repr", - "thiserror 2.0.9", + "thiserror 2.0.11", "tokio", "tracing", "walkdir", @@ -3974,24 +3978,24 @@ dependencies = [ [[package]] name = "foundry-compilers-artifacts-vyper" -version = "0.12.8" +version = "0.12.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a438605ae74689752b2f717165daac15766f1b2a166d2095715d5f9407084b52" +checksum = "5a24f7f2a7458171e055c0cb33272f5eccaefbd96d791d74177d9a1fca048f74" dependencies = [ "alloy-json-abi", "alloy-primitives", "foundry-compilers-artifacts-solc", "foundry-compilers-core", "path-slash", - "semver 1.0.24", + "semver 1.0.25", "serde", ] [[package]] name = "foundry-compilers-core" -version = "0.12.8" +version = "0.12.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04ac6d85c3e2d12585f8e698b12ed4880b02716ec7fde5d62de9a194e62f4e36" +checksum = "8005271a079bc6470c61d4145d2e390a827b1ccbb96abb7b69b088f17ffb95e0" dependencies = [ "alloy-primitives", "cfg-if", @@ -3999,12 +4003,12 @@ dependencies = [ "fs_extra", "path-slash", "regex", - "semver 1.0.24", + "semver 1.0.25", "serde", "serde_json", "svm-rs", "tempfile", - "thiserror 2.0.9", + "thiserror 2.0.11", "tokio", "walkdir", ] @@ -4031,14 +4035,14 @@ dependencies = [ "regex", "reqwest", "revm-primitives", - "semver 1.0.24", + "semver 1.0.25", "serde", "serde_json", "serde_regex", "similar-asserts", "solang-parser", "tempfile", - "thiserror 2.0.9", + "thiserror 2.0.11", "toml 0.8.19", "toml_edit", "tracing", @@ -4087,7 +4091,7 @@ dependencies = [ "revm", "revm-inspectors", "serde", - "thiserror 2.0.9", + "thiserror 2.0.11", "tracing", ] @@ -4134,7 +4138,7 @@ dependencies = [ "revm-primitives", "serde", "serde_json", - "thiserror 2.0.9", + "thiserror 2.0.11", "tokio", "tracing", "url", @@ -4151,7 +4155,7 @@ dependencies = [ "foundry-evm-core", "rayon", "revm", - "semver 1.0.24", + "semver 1.0.25", "tracing", ] @@ -4170,14 +4174,14 @@ dependencies = [ "foundry-evm-core", "foundry-evm-coverage", "foundry-evm-traces", - "indexmap 2.7.0", + "indexmap 2.7.1", "itertools 0.13.0", "parking_lot", "proptest", "rand", "revm", "serde", - "thiserror 2.0.9", + "thiserror 2.0.11", "tracing", ] @@ -4226,7 +4230,7 @@ dependencies = [ "revm", "serde", "serde_json", - "thiserror 2.0.9", + "thiserror 2.0.11", "tokio", "tracing", "url", @@ -4238,8 +4242,8 @@ version = "0.3.0" dependencies = [ "alloy-primitives", "foundry-compilers", - "semver 1.0.24", - "thiserror 2.0.9", + "semver 1.0.25", + "thiserror 2.0.11", ] [[package]] @@ -4249,7 +4253,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -4301,7 +4305,7 @@ dependencies = [ "gcloud-sdk", "rpassword", "serde", - "thiserror 2.0.9", + "thiserror 2.0.11", "tokio", "tracing", ] @@ -4409,7 +4413,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -4458,7 +4462,7 @@ dependencies = [ "bytes", "chrono", "futures", - "hyper 1.5.2", + "hyper 1.6.0", "jsonwebtoken", "once_cell", "prost", @@ -4509,10 +4513,22 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "wasm-bindgen", ] +[[package]] +name = "getrandom" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.13.3+wasi-0.2.2", + "windows-targets 0.52.6", +] + [[package]] name = "getrandom_or_panic" version = "0.0.3" @@ -4550,7 +4566,7 @@ dependencies = [ "gix-utils", "itoa", "thiserror 1.0.69", - "winnow", + "winnow 0.6.24", ] [[package]] @@ -4571,20 +4587,20 @@ dependencies = [ "smallvec", "thiserror 1.0.69", "unicode-bom", - "winnow", + "winnow 0.6.24", ] [[package]] name = "gix-config-value" -version = "0.14.10" +version = "0.14.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49aaeef5d98390a3bcf9dbc6440b520b793d1bf3ed99317dc407b02be995b28e" +checksum = "11365144ef93082f3403471dbaa94cfe4b5e72743bdb9560719a251d439f4cee" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "bstr", "gix-path", "libc", - "thiserror 2.0.9", + "thiserror 2.0.11", ] [[package]] @@ -4596,7 +4612,7 @@ dependencies = [ "bstr", "itoa", "jiff", - "thiserror 2.0.9", + "thiserror 2.0.11", ] [[package]] @@ -4631,7 +4647,7 @@ version = "0.16.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74908b4bbc0a0a40852737e5d7889f676f081e340d5451a16e5b4c50d592f111" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "bstr", "gix-features", "gix-path", @@ -4674,20 +4690,20 @@ dependencies = [ "itoa", "smallvec", "thiserror 1.0.69", - "winnow", + "winnow 0.6.24", ] [[package]] name = "gix-path" -version = "0.10.13" +version = "0.10.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc292ef1a51e340aeb0e720800338c805975724c1dfbd243185452efd8645b7" +checksum = "c40f12bb65a8299be0cfb90fe718e3be236b7a94b434877012980863a883a99f" dependencies = [ "bstr", "gix-trace", "home", "once_cell", - "thiserror 2.0.9", + "thiserror 2.0.11", ] [[package]] @@ -4708,16 +4724,16 @@ dependencies = [ "gix-validate", "memmap2", "thiserror 1.0.69", - "winnow", + "winnow 0.6.24", ] [[package]] name = "gix-sec" -version = "0.10.10" +version = "0.10.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8b876ef997a955397809a2ec398d6a45b7a55b4918f2446344330f778d14fd6" +checksum = "d84dae13271f4313f8d60a166bf27e54c968c7c33e2ffd31c48cafe5da649875" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "gix-path", "libc", "windows-sys 0.52.0", @@ -4738,15 +4754,15 @@ dependencies = [ [[package]] name = "gix-trace" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04bdde120c29f1fc23a24d3e115aeeea3d60d8e65bab92cc5f9d90d9302eb952" +checksum = "7c396a2036920c69695f760a65e7f2677267ccf483f25046977d87e4cb2665f7" [[package]] name = "gix-utils" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba427e3e9599508ed98a6ddf8ed05493db114564e338e41f6a996d2e4790335f" +checksum = "ff08f24e03ac8916c478c8419d7d3c33393da9bb41fa4c24455d5406aeefd35f" dependencies = [ "fastrand", "unicode-normalization", @@ -4754,19 +4770,19 @@ dependencies = [ [[package]] name = "gix-validate" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd520d09f9f585b34b32aba1d0b36ada89ab7fefb54a8ca3fe37fc482a750937" +checksum = "9eaa01c3337d885617c0a42e92823922a2aea71f4caeace6fe87002bdcadbd90" dependencies = [ "bstr", - "thiserror 2.0.9", + "thiserror 2.0.11", ] [[package]] name = "glob" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" [[package]] name = "globset" @@ -4804,7 +4820,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.7.0", + "indexmap 2.7.1", "slab", "tokio", "tokio-util", @@ -4823,7 +4839,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.2.0", - "indexmap 2.7.0", + "indexmap 2.7.1", "slab", "tokio", "tokio-util", @@ -4842,17 +4858,18 @@ dependencies = [ [[package]] name = "handlebars" -version = "6.2.0" +version = "6.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd4ccde012831f9a071a637b0d4e31df31c0f6c525784b35ae76a9ac6bc1e315" +checksum = "3d6b224b95c1e668ac0270325ad563b2eef1469fbbb8959bc7c692c844b813d9" dependencies = [ + "derive_builder", "log", "num-order", "pest", "pest_derive", "serde", "serde_json", - "thiserror 1.0.69", + "thiserror 2.0.11", ] [[package]] @@ -4978,7 +4995,7 @@ dependencies = [ "markup5ever", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -5045,9 +5062,9 @@ checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c" [[package]] name = "httparse" -version = "1.9.5" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" +checksum = "f2d708df4e7140240a16cd6ab0ab65c972d7433ab77819ea693fde9c43811e2a" [[package]] name = "httpdate" @@ -5097,9 +5114,9 @@ dependencies = [ [[package]] name = "hyper" -version = "1.5.2" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "256fb8d4bd6413123cc9d91832d78325c48ff41677595be797d90f42969beae0" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" dependencies = [ "bytes", "futures-channel", @@ -5140,9 +5157,9 @@ checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" dependencies = [ "futures-util", "http 1.2.0", - "hyper 1.5.2", + "hyper 1.6.0", "hyper-util", - "rustls 0.23.20", + "rustls 0.23.22", "rustls-native-certs 0.8.1", "rustls-pki-types", "tokio", @@ -5157,7 +5174,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" dependencies = [ - "hyper 1.5.2", + "hyper 1.6.0", "hyper-util", "pin-project-lite", "tokio", @@ -5172,7 +5189,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.5.2", + "hyper 1.6.0", "hyper-util", "native-tls", "tokio", @@ -5191,7 +5208,7 @@ dependencies = [ "futures-util", "http 1.2.0", "http-body 1.0.1", - "hyper 1.5.2", + "hyper 1.6.0", "pin-project-lite", "socket2", "tokio", @@ -5337,7 +5354,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -5437,7 +5454,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -5464,9 +5481,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.7.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" +checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" dependencies = [ "arbitrary", "equivalent", @@ -5476,9 +5493,9 @@ dependencies = [ [[package]] name = "indicatif" -version = "0.17.9" +version = "0.17.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbf675b85ed934d3c67b5c5469701eec7db22689d0a2139d856e0925fa28b281" +checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" dependencies = [ "console", "number_prefix", @@ -5495,16 +5512,16 @@ checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" [[package]] name = "inferno" -version = "0.12.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75a5d75fee4d36809e6b021e4b96b686e763d365ffdb03af2bd00786353f84fe" +checksum = "692eda1cc790750b9f5a5e3921ef9c117fd5498b97cfacbc910693e5b29002dc" dependencies = [ "ahash", "itoa", "log", "num-format", "once_cell", - "quick-xml 0.37.1", + "quick-xml 0.37.2", "rgb", "str_stack", ] @@ -5546,16 +5563,15 @@ dependencies = [ [[package]] name = "instability" -version = "0.3.5" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "898e106451f7335950c9cc64f8ec67b5f65698679ac67ed00619aeef14e1cf75" +checksum = "0bf9fed6d91cfb734e7476a06bde8300a1b94e217e1b523b6f0cd1a01998c71d" dependencies = [ "darling", "indoc", - "pretty_assertions", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -5575,19 +5591,19 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.10.1" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "is-terminal" -version = "0.4.13" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" +checksum = "e19b23d53f35ce9f56aebc7d1bb4e6ac1e9c0db7ac85c8d1760c04379edced37" dependencies = [ "hermit-abi 0.4.0", "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -5623,6 +5639,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.14" @@ -5631,34 +5656,38 @@ checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "jiff" -version = "0.1.15" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db69f08d4fb10524cacdb074c10b296299d71274ddbc830a8ee65666867002e9" +checksum = "c04ef77ae73f3cf50510712722f0c4e8b46f5aaa1bf5ffad2ae213e6495e78e5" dependencies = [ "jiff-tzdb-platform", + "log", + "portable-atomic", + "portable-atomic-util", + "serde", "windows-sys 0.59.0", ] [[package]] name = "jiff-tzdb" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91335e575850c5c4c673b9bd467b0e025f164ca59d0564f69d0c2ee0ffad4653" +checksum = "cf2cec2f5d266af45a071ece48b1fb89f3b00b2421ac3a5fe10285a6caaa60d3" [[package]] name = "jiff-tzdb-platform" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9835f0060a626fe59f160437bc725491a6af23133ea906500027d1bd2f8f4329" +checksum = "a63c62e404e7b92979d2792352d885a7f8f83fd1d0d31eea582d77b2ceca697e" dependencies = [ "jiff-tzdb", ] [[package]] name = "js-sys" -version = "0.3.76" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ "once_cell", "wasm-bindgen", @@ -5760,7 +5789,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55cb077ad656299f160924eb2912aa147d7339ea7d69e1b5517326fdcec3c1ca" dependencies = [ "ascii-canvas", - "bit-set", + "bit-set 0.5.3", "ena", "itertools 0.11.0", "lalrpop-util", @@ -5818,19 +5847,13 @@ dependencies = [ "pkg-config", ] -[[package]] -name = "libm" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" - [[package]] name = "libredox" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "libc", "redox_syscall", ] @@ -5849,9 +5872,9 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "litemap" @@ -5877,9 +5900,9 @@ checksum = "9374ef4228402d4b7e403e5838cb880d9ee663314b0a900d5a6aabf0c213552e" [[package]] name = "log" -version = "0.4.22" +version = "0.4.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" [[package]] name = "loom" @@ -5962,9 +5985,9 @@ dependencies = [ [[package]] name = "mdbook" -version = "0.4.43" +version = "0.4.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe1f98b8d66e537d2f0ba06e7dec4f44001deec539a2d18bfc102d6a86189148" +checksum = "f9da1e54401fe5d45a664c57e112e70f18e8c5a73e268c179305b932ee864574" dependencies = [ "ammonia", "anyhow", @@ -6037,9 +6060,9 @@ dependencies = [ [[package]] name = "miette" -version = "7.4.0" +version = "7.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317f146e2eb7021892722af37cf1b971f0a70c8406f487e24952667616192c64" +checksum = "1a955165f87b37fd1862df2a59547ac542c77ef6d17c666f619d1ad22dd89484" dependencies = [ "cfg-if", "miette-derive", @@ -6049,13 +6072,13 @@ dependencies = [ [[package]] name = "miette-derive" -version = "7.4.0" +version = "7.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23c9b935fbe1d6cbd1dac857b54a688145e2d93f48db36010514d0f612d0ad67" +checksum = "bf45bf44ab49be92fd1227a3be6fc6f617f1a337c06af54981048574d8783147" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -6091,9 +6114,9 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" +checksum = "b8402cab7aefae129c6977bb0ff1b8fd9a04eb5b51efc50a70bea51cda0c7924" dependencies = [ "adler2", ] @@ -6106,7 +6129,7 @@ checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", "log", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys 0.48.0", ] @@ -6118,7 +6141,7 @@ checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ "libc", "log", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys 0.52.0", ] @@ -6145,14 +6168,14 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] name = "native-tls" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +checksum = "0dab59f8e050d5df8e4dd87d9206fb6f65a483e20ac9fda365ade4fab353196c" dependencies = [ "libc", "log", @@ -6173,11 +6196,11 @@ checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" [[package]] name = "newtype-uuid" -version = "1.1.3" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c8781e2ef64806278a55ad223f0bc875772fd40e1fe6e73e8adbf027817229d" +checksum = "ee3224f0e8be7c2a1ebc77ef9c3eecb90f55c6594399ee825de964526b3c9056" dependencies = [ - "uuid 1.11.0", + "uuid 1.12.1", ] [[package]] @@ -6208,7 +6231,7 @@ version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "cfg-if", "cfg_aliases 0.1.1", "libc", @@ -6220,7 +6243,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "cfg-if", "cfg_aliases 0.2.1", "libc", @@ -6263,7 +6286,7 @@ version = "6.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "crossbeam-channel", "filetime", "fsevent-sys", @@ -6388,7 +6411,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", - "libm", ] [[package]] @@ -6419,7 +6441,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -6439,9 +6461,9 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "nybbles" -version = "0.2.1" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95f06be0417d97f81fe4e5c86d7d01b392655a9cac9c19a848aa033e18937b23" +checksum = "8983bb634df7248924ee0c4c3a749609b5abcb082c28fffe3254b3eb3602b307" dependencies = [ "alloy-rlp", "const-hex", @@ -6478,7 +6500,7 @@ dependencies = [ "alloy-serde", "derive_more", "serde", - "thiserror 2.0.9", + "thiserror 2.0.11", ] [[package]] @@ -6526,11 +6548,11 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.68" +version = "0.10.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" +checksum = "61cfb4e166a8bb8c9b55c500bc2308550148ece889be90f609377e58140f42c6" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "cfg-if", "foreign-types", "libc", @@ -6547,20 +6569,20 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] name = "openssl-probe" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" -version = "0.9.104" +version = "0.9.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" +checksum = "8b22d5b84be05a8d6947c7cb71f7c849aa0f112acd4bf51c2a7c1c988ac0a9dc" dependencies = [ "cc", "libc", @@ -6576,9 +6598,9 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "outref" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4030760ffd992bef45b0ae3f10ce1aba99e33464c90d14dd7c039884963ddc7a" +checksum = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e" [[package]] name = "overload" @@ -6710,7 +6732,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -6745,7 +6767,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc" dependencies = [ "memchr", - "thiserror 2.0.9", + "thiserror 2.0.11", "ucd-trie", ] @@ -6769,7 +6791,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -6790,7 +6812,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.7.0", + "indexmap 2.7.1", ] [[package]] @@ -6805,71 +6827,52 @@ dependencies = [ [[package]] name = "phf" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" dependencies = [ "phf_macros", - "phf_shared 0.11.2", + "phf_shared", ] [[package]] name = "phf_codegen" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a" -dependencies = [ - "phf_generator 0.11.2", - "phf_shared 0.11.2", -] - -[[package]] -name = "phf_generator" -version = "0.10.0" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" +checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" dependencies = [ - "phf_shared 0.10.0", - "rand", + "phf_generator", + "phf_shared", ] [[package]] name = "phf_generator" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" dependencies = [ - "phf_shared 0.11.2", + "phf_shared", "rand", ] [[package]] name = "phf_macros" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" dependencies = [ - "phf_generator 0.11.2", - "phf_shared 0.11.2", + "phf_generator", + "phf_shared", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] name = "phf_shared" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" -dependencies = [ - "siphasher", -] - -[[package]] -name = "phf_shared" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" dependencies = [ "siphasher", ] @@ -6885,11 +6888,11 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.7" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" +checksum = "dfe2e71e1471fe07709406bf725f710b02927c9c54b2b5b2ec0e8087d97c327d" dependencies = [ - "pin-project-internal 1.1.7", + "pin-project-internal 1.1.9", ] [[package]] @@ -6905,20 +6908,20 @@ dependencies = [ [[package]] name = "pin-project-internal" -version = "1.1.7" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" +checksum = "f6e859e6e5bd50440ab63c47e3ebabc90f26251f7c73c3d3e837b74a1cc3fa67" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] name = "pin-project-lite" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -6960,6 +6963,15 @@ version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" +[[package]] +name = "portable-atomic-util" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +dependencies = [ + "portable-atomic", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -7007,24 +7019,14 @@ dependencies = [ "termtree", ] -[[package]] -name = "pretty_assertions" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ae130e2f271fbc2ac3a40fb1d07180839cdbbe443c7a27e1e3c13c5cac0116d" -dependencies = [ - "diff", - "yansi", -] - [[package]] name = "prettyplease" -version = "0.2.25" +version = "0.2.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" +checksum = "6924ced06e1f7dfe3fa48d57b9f74f55d8915f5036121bef647ef4b204895fac" dependencies = [ "proc-macro2", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -7102,14 +7104,14 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] name = "proc-macro2" -version = "1.0.92" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" dependencies = [ "unicode-ident", ] @@ -7122,23 +7124,23 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", "version_check", "yansi", ] [[package]] name = "process-wrap" -version = "8.0.2" +version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38ee68ae331824036479c84060534b18254c864fa73366c58d86db3b7b811619" +checksum = "d35f4dc9988d1326b065b4def5e950c3ed727aa03e3151b86cc9e2aec6b03f54" dependencies = [ "futures", - "indexmap 2.7.0", - "nix 0.28.0", + "indexmap 2.7.1", + "nix 0.29.0", "tokio", "tracing", - "windows 0.56.0", + "windows 0.59.0", ] [[package]] @@ -7160,13 +7162,13 @@ dependencies = [ [[package]] name = "proptest" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" +checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50" dependencies = [ - "bit-set", - "bit-vec", - "bitflags 2.6.0", + "bit-set 0.8.0", + "bit-vec 0.8.0", + "bitflags 2.8.0", "lazy_static", "num-traits", "rand", @@ -7186,7 +7188,7 @@ checksum = "4ee1c9ac207483d5e7db4940700de86a9aae46ef90c48b57f99fe7edb8345e49" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -7209,7 +7211,7 @@ dependencies = [ "itertools 0.13.0", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -7247,7 +7249,7 @@ version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76979bea66e7875e7509c4ec5300112b316af87fa7a252ca91c448b32dfe3993" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "memchr", "pulldown-cmark-escape", "unicase", @@ -7272,12 +7274,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3ed1a693391a16317257103ad06a88c6529ac640846021da7c435a06fffdacd7" dependencies = [ "chrono", - "indexmap 2.7.0", + "indexmap 2.7.1", "newtype-uuid", - "quick-xml 0.37.1", + "quick-xml 0.37.2", "strip-ansi-escapes", - "thiserror 2.0.9", - "uuid 1.11.0", + "thiserror 2.0.11", + "uuid 1.12.1", ] [[package]] @@ -7291,9 +7293,9 @@ dependencies = [ [[package]] name = "quick-xml" -version = "0.37.1" +version = "0.37.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f22f29bdff3987b4d8632ef95fd6424ec7e4e0a57e2f4fc63e489e75357f6a03" +checksum = "165859e9e55f79d67b96c5d96f4e88b6f2695a1972849c15a6a3f5c59fc2c003" dependencies = [ "memchr", ] @@ -7309,9 +7311,9 @@ dependencies = [ "quinn-proto", "quinn-udp", "rustc-hash", - "rustls 0.23.20", + "rustls 0.23.22", "socket2", - "thiserror 2.0.9", + "thiserror 2.0.11", "tokio", "tracing", ] @@ -7323,14 +7325,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" dependencies = [ "bytes", - "getrandom", + "getrandom 0.2.15", "rand", "ring", "rustc-hash", - "rustls 0.23.20", + "rustls 0.23.22", "rustls-pki-types", "slab", - "thiserror 2.0.9", + "thiserror 2.0.11", "tinyvec", "tracing", "web-time", @@ -7352,9 +7354,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.37" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" dependencies = [ "proc-macro2", ] @@ -7403,7 +7405,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.15", ] [[package]] @@ -7421,7 +7423,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eabd94c2f37801c20583fc49dd5cd6b0ba68c716787c2dd6ed18571e1e63117b" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "cassowary", "compact_str", "crossterm", @@ -7468,7 +7470,7 @@ version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", ] [[package]] @@ -7477,7 +7479,7 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "getrandom", + "getrandom 0.2.15", "libredox", "thiserror 1.0.69", ] @@ -7534,9 +7536,9 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" -version = "0.12.9" +version = "0.12.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" +checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" dependencies = [ "async-compression", "base64 0.22.1", @@ -7547,7 +7549,7 @@ dependencies = [ "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.5.2", + "hyper 1.6.0", "hyper-rustls 0.27.5", "hyper-tls", "hyper-util", @@ -7561,7 +7563,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.20", + "rustls 0.23.22", "rustls-native-certs 0.8.1", "rustls-pemfile 2.2.0", "rustls-pki-types", @@ -7574,6 +7576,7 @@ dependencies = [ "tokio-rustls 0.26.1", "tokio-socks", "tokio-util", + "tower 0.5.2", "tower-service", "url", "wasm-bindgen", @@ -7620,7 +7623,7 @@ dependencies = [ "revm-primitives", "serde", "serde_json", - "thiserror 2.0.9", + "thiserror 2.0.11", ] [[package]] @@ -7660,7 +7663,7 @@ dependencies = [ "alloy-eip7702", "alloy-primitives", "auto_impl", - "bitflags 2.6.0", + "bitflags 2.8.0", "bitvec", "c-kzg", "cfg-if", @@ -7699,7 +7702,7 @@ checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", "cfg-if", - "getrandom", + "getrandom 0.2.15", "libc", "spin", "untrusted", @@ -7760,19 +7763,17 @@ dependencies = [ [[package]] name = "ruint" -version = "1.12.4" +version = "1.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5ef8fb1dd8de3870cb8400d51b4c2023854bbafd5431a3ac7e7317243e22d2f" +checksum = "2c3cc4c2511671f327125da14133d0c5c5d137f006a1017a16f557bc85b16286" dependencies = [ "alloy-rlp", "arbitrary", "ark-ff 0.3.0", "ark-ff 0.4.2", "bytes", - "fastrlp 0.3.1", - "fastrlp 0.4.0", + "fastrlp", "num-bigint", - "num-integer", "num-traits", "parity-scale-codec", "primitive-types", @@ -7837,16 +7838,16 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.24", + "semver 1.0.25", ] [[package]] name = "rustix" -version = "0.38.42" +version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "errno", "libc", "linux-raw-sys", @@ -7867,9 +7868,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.20" +version = "0.23.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5065c3f250cbd332cd894be57c40fa52387247659b14a2d6041d121547903b1b" +checksum = "9fb9263ab4eb695e42321db096e3b8fbd715a59b154d5c88d82db2175b681ba7" dependencies = [ "log", "once_cell", @@ -7901,7 +7902,7 @@ dependencies = [ "openssl-probe", "rustls-pki-types", "schannel", - "security-framework 3.1.0", + "security-framework 3.2.0", ] [[package]] @@ -7924,9 +7925,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37" +checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" dependencies = [ "web-time", ] @@ -7954,9 +7955,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" +checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" [[package]] name = "rusty-fork" @@ -7976,7 +7977,7 @@ version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2ee1e066dc922e513bda599c6ccb5f3bb2b0ea5870a579448f2622993f0a9a2f" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "cfg-if", "clipboard-win", "fd-lock", @@ -7994,9 +7995,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" [[package]] name = "salsa20" @@ -8047,14 +8048,14 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] name = "scc" -version = "2.2.6" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94b13f8ea6177672c49d12ed964cca44836f59621981b04a3e26b87e675181de" +checksum = "28e1c91382686d21b5ac7959341fcb9780fa7c03773646995a87c950fa7be640" dependencies = [ "sdd", ] @@ -8089,14 +8090,14 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] name = "schnellru" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9a8ef13a93c54d20580de1e5c413e624e53121d42fc7e2c11d10ef7f8b02367" +checksum = "356285bbf17bea63d9e52e96bd18f039672ac92b55b8cb997d6162a2a37d1649" dependencies = [ "ahash", "cfg-if", @@ -8215,7 +8216,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -8224,11 +8225,11 @@ dependencies = [ [[package]] name = "security-framework" -version = "3.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81d3f8c9bfcc3cbb6b0179eb57042d75b1582bdc65c3cb95f3fa999509c03cbc" +checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "core-foundation 0.10.0", "core-foundation-sys", "libc", @@ -8237,9 +8238,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.13.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1863fd3768cd83c56a7f60faa4dc0d403f1b6df0a38c3c25f44b7894e45370d5" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" dependencies = [ "core-foundation-sys", "libc", @@ -8256,9 +8257,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.24" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" +checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" dependencies = [ "serde", ] @@ -8280,9 +8281,9 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.216" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e" +checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" dependencies = [ "serde_derive", ] @@ -8298,13 +8299,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.216" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e" +checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -8315,16 +8316,16 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] name = "serde_json" -version = "1.0.134" +version = "1.0.138" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d00f4175c42ee48b15416f6193a959ba3a0d67fc699a0db9ad12df9f83991c7d" +checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949" dependencies = [ - "indexmap 2.7.0", + "indexmap 2.7.1", "itoa", "memchr", "ryu", @@ -8359,7 +8360,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -8405,7 +8406,7 @@ checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -8525,9 +8526,9 @@ checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" [[package]] name = "similar" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e" +checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa" dependencies = [ "bstr", "unicode-segmentation", @@ -8535,9 +8536,9 @@ dependencies = [ [[package]] name = "similar-asserts" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfe85670573cd6f0fa97940f26e7e6601213c3b0555246c24234131f88c5709e" +checksum = "9f08357795f0d604ea7d7130f22c74b03838c959bdb14adde3142aab4d18a293" dependencies = [ "console", "similar", @@ -8545,21 +8546,21 @@ dependencies = [ [[package]] name = "simple_asn1" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" +checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" dependencies = [ "num-bigint", "num-traits", - "thiserror 1.0.69", + "thiserror 2.0.11", "time", ] [[package]] name = "siphasher" -version = "0.3.11" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" [[package]] name = "slab" @@ -8636,16 +8637,16 @@ dependencies = [ [[package]] name = "solar-ast" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5aeaf7a4bd326242c909bd287291226a540b62b36fa5824880248f4b1d4d6af" +checksum = "5d3f6c4a476a16dcd36933a70ecdb0a807f8949cc5f3c4c1984e3748666bd714" dependencies = [ "alloy-primitives", "bumpalo", "either", "num-bigint", "num-rational", - "semver 1.0.24", + "semver 1.0.25", "solar-data-structures", "solar-interface", "solar-macros", @@ -8655,22 +8656,22 @@ dependencies = [ [[package]] name = "solar-config" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31d00d672a40a1a3620d7696f01a2d3301abf883d8168e1a9da3bf83f0c8e343" +checksum = "d40434a61f2c14a9e3777fbc478167bddee9828532fc26c57e416e9277916b09" dependencies = [ "strum 0.26.3", ] [[package]] name = "solar-data-structures" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6e4eb0b72ed7adbb808897c85de08ea99609774a58c72e3dce55c758043ca2" +checksum = "71d07263243b313296eca18f18eda3a190902dc3284bf67ceff29b8b54dac3e6" dependencies = [ "bumpalo", "index_vec", - "indexmap 2.7.0", + "indexmap 2.7.1", "parking_lot", "rayon", "rustc-hash", @@ -8679,9 +8680,9 @@ dependencies = [ [[package]] name = "solar-interface" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21fb8925638f3da1bba7a9a6ebeac3511e5c6354f921f2bb2e1ddce4ac70c107" +checksum = "9a87009b6989b2cc44d8381e3b86ff3b90280d54a60321919b6416214cd602f3" dependencies = [ "annotate-snippets", "anstream", @@ -8689,7 +8690,7 @@ dependencies = [ "const-hex", "derive_builder", "dunce", - "itertools 0.13.0", + "itertools 0.14.0", "itoa", "lasso", "match_cfg", @@ -8700,32 +8701,32 @@ dependencies = [ "solar-config", "solar-data-structures", "solar-macros", - "thiserror 1.0.69", + "thiserror 2.0.11", "tracing", "unicode-width 0.2.0", ] [[package]] name = "solar-macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0cc54b74e214647c1bbfc098d080cc5deac77f8dcb99aca91747276b01a15ad" +checksum = "970d7c774741f786d62cab78290e47d845b0b9c0c9d094a1642aced1d7946036" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] name = "solar-parse" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b82c3659c15975cd80e5e1c44591278c230c59ad89082d797837499a4784e1b" +checksum = "2e1e2d07fae218aca1b4cca81216e5c9ad7822516d48a28f11e2eaa8ffa5b249" dependencies = [ "alloy-primitives", - "bitflags 2.6.0", + "bitflags 2.8.0", "bumpalo", - "itertools 0.13.0", + "itertools 0.14.0", "memchr", "num-bigint", "num-rational", @@ -8771,14 +8772,14 @@ dependencies = [ "regex", "reqwest", "sanitize-filename", - "semver 1.0.24", + "semver 1.0.25", "serde", "serde_json", "sha2", - "thiserror 2.0.9", + "thiserror 2.0.11", "tokio", "toml_edit", - "uuid 1.11.0", + "uuid 1.12.1", "zip", "zip-extract", ] @@ -8819,35 +8820,34 @@ checksum = "9091b6114800a5f2141aee1d1b9d6ca3592ac062dc5decb3764ec5895a47b4eb" [[package]] name = "string_cache" -version = "0.8.7" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +checksum = "938d512196766101d333398efde81bc1f37b00cb42c2f8350e5df639f040bbbe" dependencies = [ "new_debug_unreachable", - "once_cell", "parking_lot", - "phf_shared 0.10.0", + "phf_shared", "precomputed-hash", "serde", ] [[package]] name = "string_cache_codegen" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" +checksum = "244292f3441c89febe5b5bdfbb6863aeaf4f64da810ea3050fd927b27b8d92ce" dependencies = [ - "phf_generator 0.10.0", - "phf_shared 0.10.0", + "phf_generator", + "phf_shared", "proc-macro2", "quote", ] [[package]] name = "strip-ansi-escapes" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55ff8ef943b384c414f54aefa961dd2bd853add74ec75e7ac74cf91dba62bcfa" +checksum = "2a8f8038e7e7969abb3f1b7c2a811225e9296da208539e0f79c5251d6cac0025" dependencies = [ "vte", ] @@ -8886,7 +8886,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -8899,7 +8899,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -8923,33 +8923,33 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "svm-rs" -version = "0.5.9" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1e9bc6b09b8a7a919128f8c029ae4048d83f814af557e948115273c75864acf" +checksum = "4197826bb07b996788b9860a95a1fe2c1307b2404a8c66f5ba825c42532b7c3c" dependencies = [ "const-hex", "dirs 5.0.1", "fs4", "reqwest", - "semver 1.0.24", + "semver 1.0.25", "serde", "serde_json", "sha2", "tempfile", - "thiserror 2.0.9", + "thiserror 2.0.11", "url", "zip", ] [[package]] name = "svm-rs-builds" -version = "0.5.9" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34d0964cd9dfcbf8bd21057c1a4aa293fefab208306461989ce723dd9c51e71e" +checksum = "074faea21171905847a96135b3896e2e0b74373758ca07b96a41c646cc04a8e5" dependencies = [ "build_const", "const-hex", - "semver 1.0.24", + "semver 1.0.25", "serde_json", "svm-rs", ] @@ -8967,9 +8967,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.91" +version = "2.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53cbcb5a243bd33b7858b1d7f4aca2153490815872d86d955d6ea29f743c035" +checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" dependencies = [ "proc-macro2", "quote", @@ -8979,12 +8979,12 @@ dependencies = [ [[package]] name = "syn-solidity" version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=a273736#a273736b8410f1ec81cfd45ca4c080a72143a43c" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=6e1c0e9#6e1c0e9e6c4f955e2f0c01d859932adb46952a3c" dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -9004,7 +9004,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -9016,7 +9016,7 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tee_service_api" version = "0.1.0" -source = "git+ssh://git@github.com/SeismicSystems/TEEService.git?rev=c3243bf#c3243bf1df8d52e832b58a31abd81e5bb01f54af" +source = "git+ssh://git@github.com/SeismicSystems/TEEService.git?rev=21218a3#21218a3c1ff32f07ee05f9fa5310d9cecbb0d820" dependencies = [ "aes-gcm", "anyhow", @@ -9039,7 +9039,31 @@ dependencies = [ [[package]] name = "tee_service_api" version = "0.1.0" -source = "git+ssh://git@github.com/SeismicSystems/TEEService.git?rev=cb0fb08#cb0fb08fc447f838159ae22a36dd62efa8f52653" +source = "git+ssh://git@github.com/SeismicSystems/TEEService.git?rev=39b2865#39b286548069755498c16a4b4f0242945c8b363c" +dependencies = [ + "aes-gcm", + "anyhow", + "bincode", + "byteorder", + "bytes", + "hkdf", + "hyper 0.14.32", + "kbs-types", + "once_cell", + "reqwest", + "schnorrkel", + "secp256k1", + "serde", + "serde_json", + "sha2", + "strum 0.25.0", + "tokio", +] + +[[package]] +name = "tee_service_api" +version = "0.1.0" +source = "git+ssh://git@github.com/SeismicSystems/TEEService.git?rev=c3243bf#c3243bf1df8d52e832b58a31abd81e5bb01f54af" dependencies = [ "aes-gcm", "anyhow", @@ -9061,12 +9085,13 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.14.0" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" +checksum = "38c246215d7d24f48ae091a2902398798e05d978b24315d6efbc00ede9a8bb91" dependencies = [ "cfg-if", "fastrand", + "getrandom 0.3.1", "once_cell", "rustix", "windows-sys 0.59.0", @@ -9145,11 +9170,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.9" +version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f072643fd0190df67a8bab670c20ef5d8737177d6ac6b2e9a236cb096206b2cc" +checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" dependencies = [ - "thiserror-impl 2.0.9", + "thiserror-impl 2.0.11", ] [[package]] @@ -9160,18 +9185,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] name = "thiserror-impl" -version = "2.0.9" +version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b50fa271071aae2e6ee85f842e2e28ba8cd2c5fb67f11fcb1fd70b276f9e7d4" +checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -9282,9 +9307,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.42.0" +version = "1.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" +checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e" dependencies = [ "backtrace", "bytes", @@ -9300,13 +9325,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -9335,7 +9360,7 @@ version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" dependencies = [ - "rustls 0.23.20", + "rustls 0.23.22", "tokio", ] @@ -9371,7 +9396,7 @@ checksum = "edc5f74e248dc973e0dbb7b74c7e0d6fcc301c694ff50049504004ef4d0cdcd9" dependencies = [ "futures-util", "log", - "rustls 0.23.20", + "rustls 0.23.22", "rustls-pki-types", "tokio", "tokio-rustls 0.26.1", @@ -9407,7 +9432,7 @@ version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" dependencies = [ - "indexmap 2.7.0", + "indexmap 2.7.1", "serde", "serde_spanned", "toml_datetime", @@ -9425,15 +9450,15 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.22" +version = "0.22.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +checksum = "02a8b472d1a3d7c18e2d61a489aee3453fd9031c33e4f55bd533f4a7adca1bee" dependencies = [ - "indexmap 2.7.0", + "indexmap 2.7.1", "serde", "serde_spanned", "toml_datetime", - "winnow", + "winnow 0.7.1", ] [[package]] @@ -9451,11 +9476,11 @@ dependencies = [ "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.5.2", + "hyper 1.6.0", "hyper-timeout", "hyper-util", "percent-encoding", - "pin-project 1.1.7", + "pin-project 1.1.9", "prost", "rustls-native-certs 0.8.1", "rustls-pemfile 2.2.0", @@ -9484,7 +9509,7 @@ dependencies = [ "futures-core", "futures-util", "indexmap 1.9.3", - "pin-project 1.1.7", + "pin-project 1.1.9", "pin-project-lite", "rand", "slab", @@ -9517,7 +9542,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "bytes", "futures-util", "http 1.2.0", @@ -9580,7 +9605,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -9634,9 +9659,9 @@ dependencies = [ [[package]] name = "tracing-tracy" -version = "0.11.3" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc775fdaf33c3dfd19dc354729e65e87914bc67dcdc390ca1210807b8bee5902" +checksum = "0eaa1852afa96e0fe9e44caa53dc0bd2d9d05e0f2611ce09f97f8677af56e4ba" dependencies = [ "tracing-core", "tracing-subscriber", @@ -9645,9 +9670,9 @@ dependencies = [ [[package]] name = "tracy-client" -version = "0.17.6" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73202d787346a5418f8222eddb5a00f29ea47caf3c7d38a8f2f69f8455fa7c7e" +checksum = "d90a2c01305b02b76fdd89ac8608bae27e173c829a35f7d76a345ab5d33836db" dependencies = [ "loom", "once_cell", @@ -9697,7 +9722,7 @@ dependencies = [ "httparse", "log", "rand", - "rustls 0.23.20", + "rustls 0.23.22", "rustls-pki-types", "sha1", "thiserror 1.0.69", @@ -9751,9 +9776,9 @@ dependencies = [ [[package]] name = "unicase" -version = "2.8.0" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df" +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" [[package]] name = "unicode-bom" @@ -9763,9 +9788,9 @@ checksum = "7eec5d1121208364f6793f7d2e222bf75a915c19557537745b195b253dd64217" [[package]] name = "unicode-ident" -version = "1.0.14" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" +checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034" [[package]] name = "unicode-linebreak" @@ -9880,25 +9905,25 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" dependencies = [ - "getrandom", + "getrandom 0.2.15", "serde", ] [[package]] name = "uuid" -version = "1.11.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" +checksum = "b3758f5e68192bb96cc8f9b7e2c2cfdabb435499a28499a42f8f984092adad4b" dependencies = [ - "getrandom", + "getrandom 0.2.15", "serde", ] [[package]] name = "valuable" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "vcpkg" @@ -9932,29 +9957,18 @@ checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64" [[package]] name = "vte" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5022b5fbf9407086c180e9557be968742d839e68346af7792b8592489732197" -dependencies = [ - "utf8parse", - "vte_generate_state_changes", -] - -[[package]] -name = "vte_generate_state_changes" -version = "0.1.2" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e369bee1b05d510a7b4ed645f5faa90619e05437111783ea5848f28d97d3c2e" +checksum = "231fdcd7ef3037e8330d8e17e61011a2c244126acc0a982f4040ac3f9f0bc077" dependencies = [ - "proc-macro2", - "quote", + "memchr", ] [[package]] name = "wait-timeout" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" dependencies = [ "libc", ] @@ -9984,36 +9998,46 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.13.3+wasi-0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasm-bindgen" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.49" +version = "0.4.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" dependencies = [ "cfg-if", "js-sys", @@ -10024,9 +10048,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -10034,22 +10058,25 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] name = "wasm-streams" @@ -10143,9 +10170,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.76" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" dependencies = [ "js-sys", "wasm-bindgen", @@ -10163,9 +10190,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.7" +version = "0.26.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d642ff16b7e79272ae451b7322067cdc17cadf68c23264be9d94a32319efe7e" +checksum = "2210b291f7ea53617fbafcc4939f10914214ec15aace5ba62293a668f322c5c9" dependencies = [ "rustls-pki-types", ] @@ -10221,22 +10248,22 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.56.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1de69df01bdf1ead2f4ac895dc77c9351aefff65b2f3db429a343f9cbf05e132" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" dependencies = [ - "windows-core 0.56.0", + "windows-core 0.58.0", "windows-targets 0.52.6", ] [[package]] name = "windows" -version = "0.58.0" +version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +checksum = "7f919aee0a93304be7f62e8e5027811bbba96bcb1de84d6618be56e43f8a32a1" dependencies = [ - "windows-core 0.58.0", - "windows-targets 0.52.6", + "windows-core 0.59.0", + "windows-targets 0.53.0", ] [[package]] @@ -10250,71 +10277,72 @@ dependencies = [ [[package]] name = "windows-core" -version = "0.56.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4698e52ed2d08f8658ab0c39512a7c00ee5fe2688c65f8c0a4f06750d729f2a6" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" dependencies = [ - "windows-implement 0.56.0", - "windows-interface 0.56.0", - "windows-result 0.1.2", + "windows-implement 0.58.0", + "windows-interface 0.58.0", + "windows-result 0.2.0", + "windows-strings 0.1.0", "windows-targets 0.52.6", ] [[package]] name = "windows-core" -version = "0.58.0" +version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +checksum = "810ce18ed2112484b0d4e15d022e5f598113e220c53e373fb31e67e21670c1ce" dependencies = [ - "windows-implement 0.58.0", - "windows-interface 0.58.0", - "windows-result 0.2.0", - "windows-strings", - "windows-targets 0.52.6", + "windows-implement 0.59.0", + "windows-interface 0.59.0", + "windows-result 0.3.0", + "windows-strings 0.3.0", + "windows-targets 0.53.0", ] [[package]] name = "windows-implement" -version = "0.56.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6fc35f58ecd95a9b71c4f2329b911016e6bec66b3f2e6a4aad86bd2e99e2f9b" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] name = "windows-implement" -version = "0.58.0" +version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +checksum = "83577b051e2f49a058c308f17f273b570a6a758386fc291b5f6a934dd84e48c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] name = "windows-interface" -version = "0.56.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08990546bf4edef8f431fa6326e032865f27138718c587dc21bc0265bbcb57cc" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] name = "windows-interface" -version = "0.58.0" +version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +checksum = "cb26fd936d991781ea39e87c3a27285081e3c0da5ca0fcbc02d368cc6f52ff01" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -10324,26 +10352,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" dependencies = [ "windows-result 0.2.0", - "windows-strings", + "windows-strings 0.1.0", "windows-targets 0.52.6", ] [[package]] name = "windows-result" -version = "0.1.2" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" dependencies = [ "windows-targets 0.52.6", ] [[package]] name = "windows-result" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +checksum = "d08106ce80268c4067c0571ca55a9b4e9516518eaa1a1fe9b37ca403ae1d1a34" dependencies = [ - "windows-targets 0.52.6", + "windows-targets 0.53.0", ] [[package]] @@ -10356,6 +10384,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-strings" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b888f919960b42ea4e11c2f408fadb55f78a9f236d5eef084103c8ce52893491" +dependencies = [ + "windows-targets 0.53.0", +] + [[package]] name = "windows-sys" version = "0.48.0" @@ -10407,13 +10444,29 @@ dependencies = [ "windows_aarch64_gnullvm 0.52.6", "windows_aarch64_msvc 0.52.6", "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", + "windows_i686_gnullvm 0.52.6", "windows_i686_msvc 0.52.6", "windows_x86_64_gnu 0.52.6", "windows_x86_64_gnullvm 0.52.6", "windows_x86_64_msvc 0.52.6", ] +[[package]] +name = "windows-targets" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" +dependencies = [ + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -10426,6 +10479,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" @@ -10438,6 +10497,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + [[package]] name = "windows_i686_gnu" version = "0.48.5" @@ -10450,12 +10515,24 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + [[package]] name = "windows_i686_msvc" version = "0.48.5" @@ -10468,6 +10545,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" @@ -10480,6 +10563,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" @@ -10492,6 +10581,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -10504,11 +10599,26 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + +[[package]] +name = "winnow" +version = "0.6.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8d71a593cc5c42ad7876e2c1fda56f314f3754c084128833e64f1345ff8a03a" +dependencies = [ + "memchr", +] + [[package]] name = "winnow" -version = "0.6.20" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +checksum = "86e376c75f4f43f44db463cf729e0d3acbf954d13e22c51e26e4c264b4ab545f" dependencies = [ "memchr", ] @@ -10519,6 +10629,15 @@ version = "0.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" +[[package]] +name = "wit-bindgen-rt" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" +dependencies = [ + "bitflags 2.8.0", +] + [[package]] name = "write16" version = "1.0.0" @@ -10594,7 +10713,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", "synstructure", ] @@ -10616,7 +10735,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -10636,7 +10755,7 @@ checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", "synstructure", ] @@ -10657,7 +10776,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -10679,7 +10798,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.98", ] [[package]] @@ -10694,9 +10813,9 @@ dependencies = [ "crossbeam-utils", "displaydoc", "flate2", - "indexmap 2.7.0", + "indexmap 2.7.1", "memchr", - "thiserror 2.0.9", + "thiserror 2.0.11", "zopfli", ] diff --git a/Cargo.toml b/Cargo.toml index 6b0a9eb06..d6df6bfc4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -172,8 +172,9 @@ foundry-block-explorers = { version = "0.9.0", default-features = false } foundry-compilers = { version = "0.12.8", default-features = false } foundry-fork-db = "0.9.0" solang-parser = "=0.3.3" -solar-ast = { version = "=0.1.0", default-features = false } -solar-parse = { version = "=0.1.0", default-features = false } +solar-ast = { version = "=0.1.1", default-features = false } +solar-parse = { version = "=0.1.1", default-features = false } +solar-interface = "=0.1.1" ## revm # no default features to avoid c-kzg @@ -293,7 +294,7 @@ url = "2" vergen = { version = "8", default-features = false } yansi = { version = "1.0", features = ["detect-tty", "detect-env"] } -tee_service_api = { git = "ssh://git@github.com/SeismicSystems/TEEService.git", package = "tee_service_api", rev = "cb0fb08" } +tee_service_api = { git = "ssh://git@github.com/SeismicSystems/TEEService.git", package = "tee_service_api", rev = "39b2865" } [patch.crates-io] # If our dependencies depend on these things, @@ -310,37 +311,37 @@ revm-interpreter = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git revm-inspectors = { git = "ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "19828b8" } # seismic-alloy-core -alloy-dyn-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a273736" } -alloy-json-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a273736" } -alloy-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a273736" } -alloy-sol-macro = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a273736" } -alloy-sol-macro-expander = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a273736" } -alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a273736" } -alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a273736" } -alloy-sol-type-parser = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "a273736" } - -alloy-consensus = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } -alloy-contract = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } -alloy-eips = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } -alloy-genesis = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } -alloy-json-rpc = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } -alloy-network = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } -alloy-provider = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } -alloy-pubsub = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } -alloy-rpc-client = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } -alloy-rpc-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } -alloy-rpc-types-trace = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } -alloy-rpc-types-eth = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } -alloy-serde = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } -alloy-signer = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } -alloy-signer-aws = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } -alloy-signer-gcp = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } -alloy-signer-ledger = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } -alloy-signer-local = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } -alloy-signer-trezor = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } -alloy-transport = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } -alloy-transport-http = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } -alloy-transport-ipc = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } -alloy-transport-ws = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } -alloy-node-bindings = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } -alloy-network-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "350d891" } +alloy-dyn-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6e1c0e9" } +alloy-json-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6e1c0e9" } +alloy-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6e1c0e9" } +alloy-sol-macro = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6e1c0e9" } +alloy-sol-macro-expander = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6e1c0e9" } +alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6e1c0e9" } +alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6e1c0e9" } +alloy-sol-type-parser = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6e1c0e9" } + +alloy-consensus = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } +alloy-contract = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } +alloy-eips = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } +alloy-genesis = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } +alloy-json-rpc = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } +alloy-network = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } +alloy-provider = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } +alloy-pubsub = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } +alloy-rpc-client = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } +alloy-rpc-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } +alloy-rpc-types-trace = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } +alloy-rpc-types-eth = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } +alloy-serde = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } +alloy-signer = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } +alloy-signer-aws = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } +alloy-signer-gcp = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } +alloy-signer-ledger = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } +alloy-signer-local = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } +alloy-signer-trezor = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } +alloy-transport = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } +alloy-transport-http = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } +alloy-transport-ipc = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } +alloy-transport-ws = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } +alloy-node-bindings = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } +alloy-network-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } diff --git a/crates/anvil/core/src/eth/mod.rs b/crates/anvil/core/src/eth/mod.rs index de4149006..5ae8a1858 100644 --- a/crates/anvil/core/src/eth/mod.rs +++ b/crates/anvil/core/src/eth/mod.rs @@ -1,7 +1,4 @@ -use crate::{ - eth::{subscription::SubscriptionId, transaction::SeismicCallRequest}, - types::ReorgOptions, -}; +use crate::{eth::subscription::SubscriptionId, types::ReorgOptions}; use alloy_primitives::{Address, Bytes, TxHash, B256, B64, U256}; use alloy_rpc_types::{ anvil::{Forking, MineOptions}, @@ -182,11 +179,11 @@ pub enum EthRequest { EthSendTransaction(Box>), #[cfg_attr(feature = "serde", serde(rename = "eth_sendRawTransaction", with = "sequence"))] - EthSendRawTransaction(Bytes), + EthSendRawTransaction(alloy_rpc_types::SeismicRawTxRequest), #[cfg_attr(feature = "serde", serde(rename = "eth_call"))] EthCall( - SeismicCallRequest, + alloy_rpc_types::SeismicCallRequest, #[cfg_attr(feature = "serde", serde(default))] Option, #[cfg_attr(feature = "serde", serde(default))] Option, ), diff --git a/crates/anvil/core/src/eth/transaction/crypto.rs b/crates/anvil/core/src/eth/transaction/crypto.rs index b271b5731..619c23839 100644 --- a/crates/anvil/core/src/eth/transaction/crypto.rs +++ b/crates/anvil/core/src/eth/transaction/crypto.rs @@ -16,6 +16,12 @@ pub fn encrypt( plaintext: &[u8], nonce: impl Into, ) -> anyhow::Result> { + if plaintext.is_empty() { + // in practice if they send empty plaintext, + // they're sending a normal tx (e.g. just send native token). + // we probably want to allow this + return Ok(vec![]) + } let shared_secret = SharedSecret::new(public_key, secret_key); let aes_key = derive_aes_key(&shared_secret) .map_err(|e| anyhow::anyhow!("Error deriving AES key: {:?}", e))?; @@ -28,6 +34,12 @@ pub fn decrypt( ciphertext: &[u8], nonce: impl Into, ) -> anyhow::Result> { + if ciphertext.is_empty() { + // in practice if they send empty plaintext, + // they're sending a normal tx (e.g. just send native token). + // we probably want to allow this + return Ok(vec![]) + } let shared_secret = SharedSecret::new(public_key, secret_key); let aes_key = derive_aes_key(&shared_secret) .map_err(|e| anyhow::anyhow!("Error deriving AES key: {:?}", e))?; diff --git a/crates/anvil/core/src/eth/transaction/mod.rs b/crates/anvil/core/src/eth/transaction/mod.rs index 6430edbc4..f6dfb09cb 100644 --- a/crates/anvil/core/src/eth/transaction/mod.rs +++ b/crates/anvil/core/src/eth/transaction/mod.rs @@ -4,7 +4,7 @@ use crate::eth::transaction::optimism::DepositTransaction; use alloy_consensus::{ transaction::{ eip4844::{TxEip4844, TxEip4844Variant, TxEip4844WithSidecar}, - EncryptionPublicKey, TxEip7702, TxSeismic, + TxEip7702, TxSeismic, }, Receipt, ReceiptEnvelope, ReceiptWithBloom, Signed, Transaction, TxEip1559, TxEip2930, TxEnvelope, TxLegacy, TxReceipt, Typed2718, @@ -78,6 +78,7 @@ pub fn transaction_request_to_typed( sidecar, transaction_type, encryption_pubkey, + message_version, .. }, other, @@ -111,6 +112,7 @@ pub fn transaction_request_to_typed( chain_id: chain_id.unwrap(), input: input.input.unwrap_or_default(), encryption_pubkey, + message_version: message_version.unwrap_or(0), })); } match ( @@ -614,6 +616,7 @@ impl PendingTransaction { chain_id, input, encryption_pubkey, + message_version: _, } = &tx.tx(); // these two have already been validated in TransactionValidator, @@ -670,6 +673,7 @@ impl TryFrom for TransactionRequest { value.recover().map_err(|_| ConversionError::Custom("InvalidSignature".to_string()))?; let essentials = value.essentials(); let tx_type = value.r#type(); + Ok(Self { from: Some(from), to: Some(value.kind()), @@ -683,7 +687,8 @@ impl TryFrom for TransactionRequest { nonce: Some(essentials.nonce), chain_id: essentials.chain_id, transaction_type: tx_type, - encryption_pubkey: essentials.encryption_pubkey, + encryption_pubkey: value.encryption_pubkey(), + message_version: value.message_version(), ..Default::default() }) } @@ -874,7 +879,6 @@ impl TypedTransaction { value: t.tx().value, chain_id: t.tx().chain_id, access_list: Default::default(), - encryption_pubkey: None, }, Self::EIP2930(t) => TransactionEssentials { kind: t.tx().to, @@ -889,7 +893,6 @@ impl TypedTransaction { value: t.tx().value, chain_id: Some(t.tx().chain_id), access_list: t.tx().access_list.clone(), - encryption_pubkey: None, }, Self::EIP1559(t) => TransactionEssentials { kind: t.tx().to, @@ -904,7 +907,6 @@ impl TypedTransaction { value: t.tx().value, chain_id: Some(t.tx().chain_id), access_list: t.tx().access_list.clone(), - encryption_pubkey: None, }, Self::EIP4844(t) => TransactionEssentials { kind: TxKind::Call(t.tx().tx().to), @@ -919,7 +921,6 @@ impl TypedTransaction { value: t.tx().tx().value, chain_id: Some(t.tx().tx().chain_id), access_list: t.tx().tx().access_list.clone(), - encryption_pubkey: None, }, Self::EIP7702(t) => TransactionEssentials { kind: TxKind::Call(t.tx().to), @@ -934,7 +935,6 @@ impl TypedTransaction { value: t.tx().value, chain_id: Some(t.tx().chain_id), access_list: t.tx().access_list.clone(), - encryption_pubkey: None, }, Self::Deposit(t) => TransactionEssentials { kind: t.kind, @@ -949,7 +949,6 @@ impl TypedTransaction { value: t.value, chain_id: t.chain_id(), access_list: Default::default(), - encryption_pubkey: None, }, Self::Seismic(t) => TransactionEssentials { kind: t.tx().kind(), @@ -964,7 +963,6 @@ impl TypedTransaction { value: t.tx().value, chain_id: Some(t.tx().chain_id), access_list: Default::default(), - encryption_pubkey: Some(t.tx().encryption_pubkey), }, } } @@ -1102,6 +1100,20 @@ impl TypedTransaction { _ => None, } } + + pub fn encryption_pubkey(&self) -> Option { + match self { + Self::Seismic(tx) => Some(tx.tx().encryption_pubkey), + _ => None, + } + } + + pub fn message_version(&self) -> Option { + match self { + Self::Seismic(tx) => Some(tx.tx().message_version), + _ => None, + } + } } impl Encodable for TypedTransaction { @@ -1217,7 +1229,6 @@ pub struct TransactionEssentials { pub value: U256, pub chain_id: Option, pub access_list: AccessList, - pub encryption_pubkey: Option, } /// Represents all relevant information of an executed transaction @@ -1635,16 +1646,6 @@ pub fn convert_to_anvil_receipt(receipt: AnyTransactionReceipt) -> Option), -} - #[cfg(test)] mod tests { use alloy_consensus::SignableTransaction; @@ -1901,8 +1902,9 @@ mod tests { gas_limit: 100000, to: Address::from_str("d3e8763675e4c425df46cc3b5c0f6cbdac396046").unwrap().into(), value: U256::from(1000000000000000u64), - input: decrypted_input.clone(), encryption_pubkey: test_pubkey(), + message_version: 0, + input: decrypted_input.clone(), }; let r = @@ -1921,19 +1923,19 @@ mod tests { signed_tt.encode(&mut encoded_tx); let encoded_bytes = Bytes::from(encoded_tx); - let reth_encoded = Bytes::from_str("0xb8d44af8d1827a6902843b9aca00830186a094d3e8763675e4c425df46cc3b5c0f6cbdac39604687038d7ea4c68000b840fc3c2cf4943c327f19af0efaf3b07201f608dd5c8e3954399a919b72588d3872b6819ac3d13d3656cbb38833a39ffd1e73963196a1ddfa9e4a5d595fdbebb875a1028e76821eb4d77fd30223ca971c49738eb5b5b71eabe93f96b348fdce788ae5a001a01e7a28fd3647ab10173d940fe7e561f7b06185d3d6a93b83b2f210055dd27f04a0779d1157c4734323923df2f41073ecb016719a577ce774ef4478c9b443caacb3").unwrap(); + let reth_encoded = Bytes::from_str("0xb8d54af8d2827a6902843b9aca00830186a094d3e8763675e4c425df46cc3b5c0f6cbdac39604687038d7ea4c68000a1028e76821eb4d77fd30223ca971c49738eb5b5b71eabe93f96b348fdce788ae5a080b840fc3c2cf4943c327f19af0efaf3b07201f608dd5c8e3954399a919b72588d3872b6819ac3d13d3656cbb38833a39ffd1e73963196a1ddfa9e4a5d595fdbebb87501a01e7a28fd3647ab10173d940fe7e561f7b06185d3d6a93b83b2f210055dd27f04a0779d1157c4734323923df2f41073ecb016719a577ce774ef4478c9b443caacb3").unwrap(); assert_eq!(reth_encoded, encoded_bytes); } #[test] fn test_seismic_tx_decoding() { // from viem sendRawTransaction - let encoded = Bytes::from_str("0x4af8d1827a6902843b9aca00830186a094d3e8763675e4c425df46cc3b5c0f6cbdac39604687038d7ea4c68000b840fc3c2cf4943c327f19af0efaf3b07201f608dd5c8e3954399a919b72588d3872b6819ac3d13d3656cbb38833a39ffd1e73963196a1ddfa9e4a5d595fdbebb875a1028e76821eb4d77fd30223ca971c49738eb5b5b71eabe93f96b348fdce788ae5a001a01e7a28fd3647ab10173d940fe7e561f7b06185d3d6a93b83b2f210055dd27f04a0779d1157c4734323923df2f41073ecb016719a577ce774ef4478c9b443caacb3").unwrap(); + let encoded = Bytes::from_str("0x4af8d2827a6902843b9aca00830186a094d3e8763675e4c425df46cc3b5c0f6cbdac39604687038d7ea4c68000a1028e76821eb4d77fd30223ca971c49738eb5b5b71eabe93f96b348fdce788ae5a080b840fc3c2cf4943c327f19af0efaf3b07201f608dd5c8e3954399a919b72588d3872b6819ac3d13d3656cbb38833a39ffd1e73963196a1ddfa9e4a5d595fdbebb87501a0a4eae372fd9bd79c17867aa75d905aa90fc2b54deffd176e9cda1de19303a8e6a041ffd254632c4fe0a19f4004a0753a8560c18044dd890913c1d46274824bd6ed").unwrap(); let mut buf = encoded.as_ref(); let decoded_tx = TypedTransaction::decode_2718(&mut buf).unwrap(); let expected_sighash = FixedBytes::<32>::from_str( - "ab1ddfbb9c83e88fae2eb3d14835d0ede2a791072d920a57bc2ffab83564c765", + "d63bc3bdfd863663ce38725a926fdfcb0033b95f55ad434ff058bdc1f62e01cc", ) .unwrap(); match &decoded_tx { diff --git a/crates/anvil/src/eth/api.rs b/crates/anvil/src/eth/api.rs index 6ce4deccc..2545323ec 100644 --- a/crates/anvil/src/eth/api.rs +++ b/crates/anvil/src/eth/api.rs @@ -30,7 +30,9 @@ use crate::{ revm::primitives::{BlobExcessGasAndPrice, Output}, ClientFork, LoggingManager, Miner, MiningMode, StorageInfo, }; -use alloy_consensus::{transaction::eip4844::TxEip4844Variant, Account}; +use alloy_consensus::{ + transaction::eip4844::TxEip4844Variant, Account, SignableTransaction, TxSeismic, +}; use alloy_dyn_abi::TypedData; use alloy_eips::eip2718::Encodable2718; use alloy_network::{ @@ -66,8 +68,8 @@ use anvil_core::{ eth::{ block::BlockInfo, transaction::{ - transaction_request_to_typed, PendingTransaction, ReceiptResponse, SeismicCallRequest, - TypedTransaction, TypedTransactionRequest, + transaction_request_to_typed, PendingTransaction, ReceiptResponse, TypedTransaction, + TypedTransactionRequest, }, wallet::{WalletCapabilities, WalletError}, EthRequest, @@ -88,7 +90,6 @@ use foundry_evm::{ use futures::channel::{mpsc::Receiver, oneshot}; use parking_lot::RwLock; use revm::primitives::Bytecode; -use secp256k1::PublicKey; use std::{future::Future, sync::Arc, time::Duration}; use yansi::Paint; @@ -246,9 +247,14 @@ impl EthApi { EthRequest::EthSignTypedDataV4(addr, data) => { self.sign_typed_data_v4(addr, &data).await.to_rpc_result() } - EthRequest::EthSendRawTransaction(tx) => { - self.send_raw_transaction(tx).await.to_rpc_result() - } + EthRequest::EthSendRawTransaction(req) => match req { + alloy_rpc_types::SeismicRawTxRequest::Bytes(tx) => { + self.send_raw_transaction(tx).await.to_rpc_result() + } + alloy_rpc_types::SeismicRawTxRequest::TypedData(td) => { + self.send_signed_typed_data_tx(td).await.to_rpc_result() + } + }, EthRequest::EthCall(call, block, overrides) => { self.call(call, block, overrides).await.to_rpc_result() } @@ -1053,7 +1059,51 @@ impl EthApi { Ok(*tx.hash()) } - async fn unsigned_call( + /// Sends signed typed data transaction, returning its hash. + /// + /// Handler for ETH RPC call: `eth_sendRawTransaction` + pub async fn send_signed_typed_data_tx( + &self, + td: alloy_eips::eip712::TypedDataRequest, + ) -> Result { + node_info!("eth_sendRawTransaction via eth_signTypedData"); + + let tx: TxSeismic = td.data.try_into().map_err(|e: serde_json::Error| { + BlockchainError::Message(format!( + "Failed to decode typed data into seismic tx: {}", + e.to_string() + )) + })?; + let signed_tx = tx.into_signed(td.signature); + let transaction = TypedTransaction::Seismic(signed_tx); + + // NOTE: rest is copy pasta from send_raw_transaction + self.ensure_typed_transaction_supported(&transaction)?; + + let pending_transaction = PendingTransaction::new(transaction)?; + + // pre-validate + self.backend.validate_pool_transaction(&pending_transaction).await?; + + let on_chain_nonce = self.backend.current_nonce(*pending_transaction.sender()).await?; + let from = *pending_transaction.sender(); + let nonce = pending_transaction.transaction.nonce(); + let requires = required_marker(nonce, on_chain_nonce, from); + + let priority = self.transaction_priority(&pending_transaction.transaction); + let pool_transaction = PoolTransaction { + requires, + provides: vec![to_marker(nonce, *pending_transaction.sender())], + pending_transaction, + priority, + }; + + let tx = self.pool.add_transaction(pool_transaction)?; + trace!(target: "node", "Added transaction: [{:?}] sender={:?}", tx.hash(), from); + Ok(*tx.hash()) + } + + pub async fn unsigned_call( &self, request: WithOtherFields, block_number: Option, @@ -1099,7 +1149,6 @@ impl EthApi { request: WithOtherFields, block_number: Option, overrides: Option, - encryption_pubkey: PublicKey, ) -> Result { node_info!("eth_call (signed)"); let fees = FeeDetails::new( @@ -1112,10 +1161,8 @@ impl EthApi { let block_request = self.block_request(block_number).await?; self.on_blocking_task(|this| async move { - let (exit, out, gas, _) = this - .backend - .seismic_call(request, fees, Some(block_request), overrides, encryption_pubkey) - .await?; + let (exit, out, gas, _) = + this.backend.seismic_call(request, fees, Some(block_request), overrides).await?; trace!(target : "node", "Call status {:?}, gas {}", exit, gas); ensure_return_ok(exit, &out) }) @@ -1127,12 +1174,12 @@ impl EthApi { /// Handler for ETH RPC call: `eth_call` pub async fn call( &self, - request: SeismicCallRequest, + request: impl Into, block_number: Option, overrides: Option, ) -> Result { - match request { - SeismicCallRequest::TransactionRequest(mut tx) => { + match request.into() { + alloy_rpc_types::SeismicCallRequest::TransactionRequest(mut tx) => { let user_provided_from = tx.from; // don't let them spoof msg.sender with unsigned calls @@ -1148,8 +1195,7 @@ impl EthApi { if tried_to_spoof_from { // We’ll embed the original error’s text (which may include // revert data) plus a multiline explanation: - Err(BlockchainError::Message(format!( -"Unsigned call failed: {orig}. The call included a non-zero 'from' address, which is not allowed in unsigned calls. If you need to set 'from', please use a signed call.", + Err(BlockchainError::Message(format!("Unsigned call failed: {orig}. The call included a non-zero 'from' address, which is not allowed in unsigned calls. If you need to set 'from', please use a signed call.", orig = original_err ))) } else { @@ -1159,7 +1205,26 @@ impl EthApi { } } } - SeismicCallRequest::Bytes(bytes) => { + alloy_rpc_types::SeismicCallRequest::TypedData( + alloy_eips::eip712::TypedDataRequest { data, signature }, + ) => { + let tx: TxSeismic = data.try_into().map_err(|e| { + BlockchainError::Message(format!( + "Failed to decode typed data into seismic tx: {e:?}" + )) + })?; + let signed_seismic_tx = tx.into_signed(signature); + // NOTE: this is recover_caller, not recover_signer + let sender = signed_seismic_tx.recover_caller().map_err(|e| { + BlockchainError::Message(format!("Failed to recover signer: {e:?}")) + })?; + let tx = signed_seismic_tx.into_parts().0; + let mut request: WithOtherFields = + WithOtherFields::new(tx.into()); + request.inner.from = Some(sender); + self.seismic_call(request, block_number, overrides).await + } + alloy_rpc_types::SeismicCallRequest::Bytes(bytes) => { let typed_tx = TypedTransaction::decode_2718(&mut bytes.as_ref()) .map_err(|_| BlockchainError::FailedToDecodeSignedTransaction)?; let tx = TransactionRequest::try_from(typed_tx.clone()).map_err(|_| { @@ -1171,14 +1236,14 @@ impl EthApi { let signed_seismic_tx = typed_tx.seismic().ok_or(BlockchainError::Message( "Can only make signedCall with Seismic Transactions".to_string(), ))?; - let seismic_tx = signed_seismic_tx.tx(); - let encryption_pubkey_bytes = seismic_tx.encryption_pubkey; - let encryption_pubkey = PublicKey::from_slice(encryption_pubkey_bytes.as_slice()) - .map_err(|_| { - BlockchainError::Message("Failed to parse encryption public key".to_string()) + // unlike above, this can be either recover_signer or recover_caller, + // since message_version = 0 for these + let sender = signed_seismic_tx.recover_signer().map_err(|e| { + BlockchainError::Message(format!("Failed to recover signer: {e:?}")) })?; - let request = WithOtherFields::new(tx); - self.seismic_call(request, block_number, overrides, encryption_pubkey).await + let mut request = WithOtherFields::new(tx); + request.inner.from = Some(sender); + self.seismic_call(request, block_number, overrides).await } } } diff --git a/crates/anvil/src/eth/backend/executor.rs b/crates/anvil/src/eth/backend/executor.rs index 1bffb230a..5e714364a 100644 --- a/crates/anvil/src/eth/backend/executor.rs +++ b/crates/anvil/src/eth/backend/executor.rs @@ -279,8 +279,8 @@ impl Iterator for &mut TransactionExec Ok(account) => account, Err(err) => return Some(TransactionExecutionOutcome::DatabaseError(transaction, err)), }; - let env = self.env_for(&transaction.pending_transaction); + let env = self.env_for(&transaction.pending_transaction); // check that we comply with the block's gas limit, if not disabled let max_gas = self.gas_used.saturating_add(env.tx.gas_limit); if !env.cfg.disable_block_gas_limit && max_gas > env.block.gas_limit.to::() { diff --git a/crates/anvil/src/eth/backend/mem/mod.rs b/crates/anvil/src/eth/backend/mem/mod.rs index c7be3ad4d..f9777aade 100644 --- a/crates/anvil/src/eth/backend/mem/mod.rs +++ b/crates/anvil/src/eth/backend/mem/mod.rs @@ -1340,15 +1340,14 @@ impl Backend { fee_details: FeeDetails, block_request: Option, overrides: Option, - encryption_pubkey: PublicKey, ) -> Result<(InstructionResult, Option, u128, State), BlockchainError> { self.with_database_at(block_request, |state, block| { let block_number = block.number.to::(); let (exit, out, gas, state) = match overrides { - None => self.seismic_call_with_state(state.as_dyn(), request, fee_details, block, encryption_pubkey), + None => self.seismic_call_with_state(state.as_dyn(), request, fee_details, block), Some(overrides) => { let state = state::apply_state_override(overrides.into_iter().collect(), state)?; - self.seismic_call_with_state(state.as_dyn(), request, fee_details, block, encryption_pubkey) + self.seismic_call_with_state(state.as_dyn(), request, fee_details, block) }, }?; trace!(target: "backend", "seismic call return {:?} out: {:?} gas {} on block {}", exit, out, gas, block_number); @@ -1516,34 +1515,37 @@ impl Backend { request: WithOtherFields, fee_details: FeeDetails, block_env: BlockEnv, - encryption_pubkey: PublicKey, ) -> Result<(InstructionResult, Option, u128, State), BlockchainError> { let nonce = request.nonce.unwrap_or_default(); let is_seismic_tx = Some(TxSeismic::TX_TYPE) == request.transaction_type; - - let mut inspector = self.build_inspector(); - let env = self.build_call_env(request, fee_details, block_env); - - let mut evm = self.new_evm_with_inspector_ref(state, env, &mut inspector); - let ResultAndState { result, state } = evm.transact()?; - let (exit_reason, gas_used, out) = match result { - ExecutionResult::Success { reason, gas_used, output, .. } => { - (reason.into(), gas_used, Some(output)) + let encryption_pubkey = match (is_seismic_tx, request.encryption_pubkey) { + (false, _) => { + warn!("Non-seismic tx passed to seismic_call. Likely a bug"); + None } - ExecutionResult::Revert { gas_used, output } => { - (InstructionResult::Revert, gas_used, Some(Output::Call(output))) + (true, Some(encryption_pubkey)) => { + let pk_res = PublicKey::from_slice(encryption_pubkey.as_slice()); + let pk = pk_res.map_err(|_| { + BlockchainError::Message("Failed to parse encryption public key".to_string()) + })?; + Some(pk) + } + (true, None) => { + return Err(BlockchainError::Message( + "Encryption pubkey is required for seismic transactions".to_string(), + )); } - ExecutionResult::Halt { reason, gas_used } => (reason.into(), gas_used, None), }; - drop(evm); - inspector.print_logs(); + + let (exit_reason, out, gas_used, state) = + self.call_with_state(state, request, fee_details, block_env)?; if !is_seismic_tx || out.is_none() { - return Ok((exit_reason, out, gas_used as u128, state)); + return Ok((exit_reason, out, gas_used, state)); } let encrypted = anvil_core::eth::transaction::crypto::server_encrypt( - &encryption_pubkey, + &encryption_pubkey.unwrap(), out.unwrap().data().as_ref(), nonce, ) diff --git a/crates/anvil/tests/it/fork.rs b/crates/anvil/tests/it/fork.rs index c30186960..8e7736b0d 100644 --- a/crates/anvil/tests/it/fork.rs +++ b/crates/anvil/tests/it/fork.rs @@ -22,8 +22,6 @@ use foundry_test_utils::rpc::{self, next_http_rpc_endpoint, next_rpc_endpoint}; use futures::StreamExt; use std::{sync::Arc, thread::sleep, time::Duration}; -use anvil_core::eth::transaction::SeismicCallRequest; - const BLOCK_NUMBER: u64 = 14_608_400u64; const DEAD_BALANCE_AT_BLOCK_NUMBER: u128 = 12_556_069_338_441_120_059_867u128; @@ -874,11 +872,11 @@ async fn test_fork_call() { let res1 = api .call( - SeismicCallRequest::TransactionRequest(WithOtherFields::new(TransactionRequest { + WithOtherFields::new(TransactionRequest { to: Some(TxKind::from(to)), input: input.into(), ..Default::default() - })), + }), None, None, ) @@ -1320,11 +1318,11 @@ async fn test_fork_execution_reverted() { let resp = api .call( - SeismicCallRequest::TransactionRequest(WithOtherFields::new(TransactionRequest { + WithOtherFields::new(TransactionRequest { to: Some(TxKind::from(address!("Fd6CC4F251eaE6d02f9F7B41D1e80464D3d2F377"))), input: TransactionInput::new(bytes!("8f283b3c")), ..Default::default() - })), + }), Some(target.into()), None, ) diff --git a/crates/anvil/tests/it/seismic.rs b/crates/anvil/tests/it/seismic.rs index af98a592d..a747da33f 100644 --- a/crates/anvil/tests/it/seismic.rs +++ b/crates/anvil/tests/it/seismic.rs @@ -8,11 +8,11 @@ use alloy_primitives::{ Address, Bytes, FixedBytes, IntoLogData, B256, U256, }; use alloy_provider::Provider; -use alloy_rpc_types::TransactionRequest; +use alloy_rpc_types::{SeismicCallRequest, TransactionRequest}; use alloy_serde::{OtherFields, WithOtherFields}; use alloy_sol_types::{sol, SolCall, SolValue}; use anvil::{eth::EthApi, spawn, NodeConfig}; -use anvil_core::eth::transaction::{crypto, SeismicCallRequest}; +use anvil_core::eth::transaction::crypto; use foundry_common::provider::RetryProvider; use secp256k1::SecretKey; use serde::{Deserialize, Serialize}; diff --git a/crates/chisel/src/solidity_helper.rs b/crates/chisel/src/solidity_helper.rs index cd99254f1..411c0b93e 100644 --- a/crates/chisel/src/solidity_helper.rs +++ b/crates/chisel/src/solidity_helper.rs @@ -15,7 +15,7 @@ use rustyline::{ Helper, }; use solar_parse::{ - interface::{Pos, Session, SessionGlobals}, + interface::{Session, SessionGlobals}, token::{Token, TokenKind}, Lexer, }; diff --git a/crates/evm/core/src/utils.rs b/crates/evm/core/src/utils.rs index e58171c68..b3f37721d 100644 --- a/crates/evm/core/src/utils.rs +++ b/crates/evm/core/src/utils.rs @@ -124,6 +124,7 @@ pub fn configure_tx_req_env( ref authorization_list, sidecar: _, encryption_pubkey: _, + message_version: _, } = *tx; // If no `to` field then set create kind: https://eips.ethereum.org/EIPS/eip-2470#deployment-transaction diff --git a/crates/evm/traces/src/debug/sources.rs b/crates/evm/traces/src/debug/sources.rs index b2e37e32d..5c0caa579 100644 --- a/crates/evm/traces/src/debug/sources.rs +++ b/crates/evm/traces/src/debug/sources.rs @@ -11,10 +11,7 @@ use foundry_compilers::{ use foundry_evm_core::utils::PcIcMap; use foundry_linking::Linker; use rayon::prelude::*; -use solar_parse::{ - interface::{Pos, Session}, - Parser, -}; +use solar_parse::{interface::Session, Parser}; use std::{ collections::{BTreeMap, HashMap}, ops::Range, diff --git a/crates/forge/bin/cmd/geiger.rs b/crates/forge/bin/cmd/geiger.rs index 6d4c735a9..196a734b3 100644 --- a/crates/forge/bin/cmd/geiger.rs +++ b/crates/forge/bin/cmd/geiger.rs @@ -6,7 +6,10 @@ use foundry_config::{impl_figment_convert_basic, Config}; use itertools::Itertools; use solar_ast::visit::Visit; use solar_parse::{ast, interface::Session}; -use std::path::{Path, PathBuf}; +use std::{ + ops::ControlFlow, + path::{Path, PathBuf}, +}; /// CLI arguments for `forge geiger`. #[derive(Clone, Debug, Parser)] @@ -144,7 +147,9 @@ impl<'a> Visitor<'a> { } impl<'ast> Visit<'ast> for Visitor<'_> { - fn visit_expr(&mut self, expr: &'ast ast::Expr<'ast>) { + type BreakValue = solar_parse::interface::data_structures::Never; + + fn visit_expr(&mut self, expr: &'ast ast::Expr<'ast>) -> ControlFlow { if let ast::ExprKind::Call(lhs, _args) = &expr.kind { if let ast::ExprKind::Member(_lhs, member) = &lhs.kind { if self.unsafe_cheatcodes.iter().any(|c| c.as_str() == member.as_str()) { @@ -154,6 +159,6 @@ impl<'ast> Visit<'ast> for Visitor<'_> { } } } - self.walk_expr(expr); + self.walk_expr(expr) } } From 974073cd3d1df47948560492e6e161d364ba570b Mon Sep 17 00:00:00 2001 From: ssolit <49683577+ssolit@users.noreply.github.com> Date: Tue, 4 Feb 2025 13:31:00 -0500 Subject: [PATCH 042/130] bumped revm version to enable secp256k1 sign precompile (#75) Co-authored-by: Spencer Solit --- Cargo.lock | 13 +++++++------ Cargo.toml | 6 +++--- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1e1a917ba..fe008d0f8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7590,7 +7590,7 @@ dependencies = [ [[package]] name = "revm" version = "18.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=8cc39db#8cc39db85670d3c1534dc91253c833aa61b51171" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=c7f87df#c7f87dfc7aee8f52061c4d4f3747051ea9a03147" dependencies = [ "auto_impl", "cfg-if", @@ -7605,7 +7605,7 @@ dependencies = [ "serde", "serde_json", "sha2", - "tee_service_api 0.1.0 (git+ssh://git@github.com/SeismicSystems/TEEService.git?rev=c3243bf)", + "tee_service_api 0.1.0 (git+ssh://git@github.com/SeismicSystems/TEEService.git?rev=4036092)", ] [[package]] @@ -7629,7 +7629,7 @@ dependencies = [ [[package]] name = "revm-interpreter" version = "14.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=8cc39db#8cc39db85670d3c1534dc91253c833aa61b51171" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=c7f87df#c7f87dfc7aee8f52061c4d4f3747051ea9a03147" dependencies = [ "revm-primitives", "serde", @@ -7638,7 +7638,7 @@ dependencies = [ [[package]] name = "revm-precompile" version = "15.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=8cc39db#8cc39db85670d3c1534dc91253c833aa61b51171" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=c7f87df#c7f87dfc7aee8f52061c4d4f3747051ea9a03147" dependencies = [ "aurora-engine-modexp", "blst", @@ -7657,7 +7657,7 @@ dependencies = [ [[package]] name = "revm-primitives" version = "14.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=8cc39db#8cc39db85670d3c1534dc91253c833aa61b51171" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=c7f87df#c7f87dfc7aee8f52061c4d4f3747051ea9a03147" dependencies = [ "alloy-eip2930", "alloy-eip7702", @@ -9063,7 +9063,7 @@ dependencies = [ [[package]] name = "tee_service_api" version = "0.1.0" -source = "git+ssh://git@github.com/SeismicSystems/TEEService.git?rev=c3243bf#c3243bf1df8d52e832b58a31abd81e5bb01f54af" +source = "git+ssh://git@github.com/SeismicSystems/TEEService.git?rev=4036092#4036092a11b51fe575a8ea685ee533c10cf9c1d9" dependencies = [ "aes-gcm", "anyhow", @@ -9075,6 +9075,7 @@ dependencies = [ "kbs-types", "once_cell", "reqwest", + "schnorrkel", "secp256k1", "serde", "serde_json", diff --git a/Cargo.toml b/Cargo.toml index d6df6bfc4..db4010830 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -303,9 +303,9 @@ tee_service_api = { git = "ssh://git@github.com/SeismicSystems/TEEService.git", foundry-fork-db = { git = "ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "cd54596" } # seismic-revm -revm = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "8cc39db" } -revm-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "8cc39db" } -revm-interpreter = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "8cc39db" } +revm = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "c7f87df" } +revm-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "c7f87df" } +revm-interpreter = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "c7f87df" } # seismic-revm-inspectors revm-inspectors = { git = "ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "19828b8" } From 0af7b3fa401cd9acc4861c8a34820fa6fed9fdbb Mon Sep 17 00:00:00 2001 From: Ameya Deshmukh Date: Wed, 5 Feb 2025 16:41:59 -0500 Subject: [PATCH 043/130] Detect OS in `sfoundryup` for `ssolc` installation + correct `sfoundryup` installation command (#76) --- sfoundryup/README.md | 4 +++- sfoundryup/sfoundryup | 43 +++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 44 insertions(+), 3 deletions(-) diff --git a/sfoundryup/README.md b/sfoundryup/README.md index 9584f1c64..0dff30d84 100644 --- a/sfoundryup/README.md +++ b/sfoundryup/README.md @@ -8,7 +8,9 @@ export SEISMIC_PAT=your_personal_access_token ``` Then, run the following command to install sfoundryup: ```bash -curl -s https://$SEISMIC_PAT@raw.githubusercontent.com/SeismicSystems/seismic-foundry/seismic/sfoundryup | bash +curl -L -H "Authorization: token $SEISMIC_PAT" \ + -H "Accept: application/vnd.github.v3.raw" \ + "https://api.github.com/repos/SeismicSystems/seismic-foundry/contents/sfoundryup/install?ref=seismic" | bash ``` ## Usage ### Install Seismic Foundry as a developer building on top of Seismic: diff --git a/sfoundryup/sfoundryup b/sfoundryup/sfoundryup index 959c39517..b9406aedf 100755 --- a/sfoundryup/sfoundryup +++ b/sfoundryup/sfoundryup @@ -79,14 +79,53 @@ install_ssolc() { exit 1 fi - GITHUB_API_URL="https://api.github.com/repos/SeismicSystems/seismic-solidity-releases/releases/latest" - TARGET_NAME="ssolc-macos-arm64.tar.gz" + # Detect OS + OS="$(uname -s)" + ARCH="$(uname -m)" + + case "$OS" in + Linux*) + OS_TYPE="linux" + ;; + Darwin*) + OS_TYPE="macos" + ;; + CYGWIN*|MINGW*|MSYS*|Windows_NT) + OS_TYPE="windows" + ;; + *) + echo "Unsupported OS: $OS" + exit 1 + ;; + esac + + case "$ARCH" in + x86_64) + ARCH_TYPE="x86_64" + ;; + arm64|aarch64) + ARCH_TYPE="arm64" + ;; + *) + echo "Unsupported architecture: $ARCH" + exit 1 + ;; + esac + + # Construct target name + if [[ "$OS_TYPE" == "windows" ]]; then + TARGET_NAME="ssolc-windows-$ARCH_TYPE.zip" + else + TARGET_NAME="ssolc-$OS_TYPE-$ARCH_TYPE.tar.gz" + fi + INSTALL_DIR="/usr/local/bin" SSOLC_BIN="$INSTALL_DIR/ssolc" TEMP_DIR=$(mktemp -d) # Fetch the asset ID for the target file echo "Fetching asset ID for $TARGET_NAME..." + GITHUB_API_URL="https://api.github.com/repos/SeismicSystems/seismic-solidity-releases/releases/latest" ASSET_ID=$(curl -s -H "Authorization: token $SEISMIC_PAT" "$GITHUB_API_URL" | \ jq -r --arg name "$TARGET_NAME" '.assets[] | select(.name == $name) | .id') From b05fd187442241ab47ec992c44a105c2ee97f5a8 Mon Sep 17 00:00:00 2001 From: sfyll <39958632+sfyll@users.noreply.github.com> Date: Thu, 6 Feb 2025 16:41:53 +0100 Subject: [PATCH 044/130] working update SEVM (#78) --- Cargo.lock | 8 ++++---- Cargo.toml | 6 +++--- crates/anvil/core/src/eth/transaction/crypto.rs | 4 ++-- crates/anvil/src/eth/backend/mem/mod.rs | 1 + .../anvil/tests/it/seismic_precompiles_test_bytecode.txt | 2 +- crates/cheatcodes/src/inspector.rs | 2 +- crates/forge/src/multi_runner.rs | 1 - 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fe008d0f8..3ac28681b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7590,7 +7590,7 @@ dependencies = [ [[package]] name = "revm" version = "18.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=c7f87df#c7f87dfc7aee8f52061c4d4f3747051ea9a03147" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=501192c#501192cb03c1be4d4d4cb54a610eb97794d21b75" dependencies = [ "auto_impl", "cfg-if", @@ -7629,7 +7629,7 @@ dependencies = [ [[package]] name = "revm-interpreter" version = "14.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=c7f87df#c7f87dfc7aee8f52061c4d4f3747051ea9a03147" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=501192c#501192cb03c1be4d4d4cb54a610eb97794d21b75" dependencies = [ "revm-primitives", "serde", @@ -7638,7 +7638,7 @@ dependencies = [ [[package]] name = "revm-precompile" version = "15.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=c7f87df#c7f87dfc7aee8f52061c4d4f3747051ea9a03147" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=501192c#501192cb03c1be4d4d4cb54a610eb97794d21b75" dependencies = [ "aurora-engine-modexp", "blst", @@ -7657,7 +7657,7 @@ dependencies = [ [[package]] name = "revm-primitives" version = "14.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=c7f87df#c7f87dfc7aee8f52061c4d4f3747051ea9a03147" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=501192c#501192cb03c1be4d4d4cb54a610eb97794d21b75" dependencies = [ "alloy-eip2930", "alloy-eip7702", diff --git a/Cargo.toml b/Cargo.toml index db4010830..d9cc6d09c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -303,9 +303,9 @@ tee_service_api = { git = "ssh://git@github.com/SeismicSystems/TEEService.git", foundry-fork-db = { git = "ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "cd54596" } # seismic-revm -revm = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "c7f87df" } -revm-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "c7f87df" } -revm-interpreter = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "c7f87df" } +revm = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "501192c" } +revm-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "501192c" } +revm-interpreter = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "501192c" } # seismic-revm-inspectors revm-inspectors = { git = "ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "19828b8" } diff --git a/crates/anvil/core/src/eth/transaction/crypto.rs b/crates/anvil/core/src/eth/transaction/crypto.rs index 619c23839..2901c9866 100644 --- a/crates/anvil/core/src/eth/transaction/crypto.rs +++ b/crates/anvil/core/src/eth/transaction/crypto.rs @@ -20,7 +20,7 @@ pub fn encrypt( // in practice if they send empty plaintext, // they're sending a normal tx (e.g. just send native token). // we probably want to allow this - return Ok(vec![]) + return Ok(vec![]); } let shared_secret = SharedSecret::new(public_key, secret_key); let aes_key = derive_aes_key(&shared_secret) @@ -38,7 +38,7 @@ pub fn decrypt( // in practice if they send empty plaintext, // they're sending a normal tx (e.g. just send native token). // we probably want to allow this - return Ok(vec![]) + return Ok(vec![]); } let shared_secret = SharedSecret::new(public_key, secret_key); let aes_key = derive_aes_key(&shared_secret) diff --git a/crates/anvil/src/eth/backend/mem/mod.rs b/crates/anvil/src/eth/backend/mem/mod.rs index f9777aade..1dbe01ed4 100644 --- a/crates/anvil/src/eth/backend/mem/mod.rs +++ b/crates/anvil/src/eth/backend/mem/mod.rs @@ -1461,6 +1461,7 @@ impl Backend { optimism: OptimismFields { enveloped_tx: Some(Bytes::new()), ..Default::default() }, authorization_list: authorization_list.map(Into::into), tx_hash: B256::ZERO, + rng_mode: revm::primitives::RngMode::Execution, }; if env.block.basefee.is_zero() { diff --git a/crates/anvil/tests/it/seismic_precompiles_test_bytecode.txt b/crates/anvil/tests/it/seismic_precompiles_test_bytecode.txt index 0ad027bda..1aa98c8bb 100644 --- a/crates/anvil/tests/it/seismic_precompiles_test_bytecode.txt +++ b/crates/anvil/tests/it/seismic_precompiles_test_bytecode.txt @@ -1 +1 @@ -6080604052348015600e575f5ffd5b50335f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610dce8061005b5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806328696e361461004e5780638da5cb5b1461006a578063a061904014610088578063ce75255b146100a4575b5f5ffd5b61006860048036038101906100639190610687565b6100d4565b005b61007261019a565b60405161007f9190610711565b60405180910390f35b6100a2600480360381019061009d919061075d565b6101be565b005b6100be60048036038101906100b991906107c9565b610256565b6040516100cb9190610896565b60405180910390f35b5f6100dd610412565b90505f61012d8285858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050506104f5565b9050816bffffffffffffffffffffffff167f093a34a48cc07b4bf1355d9c15ec71077c85342d872753188302f99341f961008260405160200161017091906108f0565b60405160208183030381529060405260405161018c9190610896565b60405180910390a250505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461024c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024390610986565b60405180910390fd5b8060018190b15050565b60605f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102dd90610986565b60405180910390fd5b5f838390501161032b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610322906109ee565b60405180910390fd5b5f606790505f6001b086868660405160200161034a9493929190610a92565b60405160208183030381529060405290505f5f8373ffffffffffffffffffffffffffffffffffffffff168360405161038291906108f0565b5f60405180830381855afa9150503d805f81146103ba576040519150601f19603f3d011682016040523d82523d5f602084013e6103bf565b606091505b509150915081610404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103fb90610b3c565b60405180910390fd5b809450505050509392505050565b5f5f606490505f5f8273ffffffffffffffffffffffffffffffffffffffff1660206040516020016104439190610b9d565b60405160208183030381529060405260405161045f91906108f0565b5f60405180830381855afa9150503d805f8114610497576040519150601f19603f3d011682016040523d82523d5f602084013e61049c565b606091505b5091509150816104e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d890610c01565b60405180910390fd5b5f60208201519050805f1c94505050505090565b60605f606690505f6001b0858560405160200161051493929190610c1f565b60405160208183030381529060405290505f5f8373ffffffffffffffffffffffffffffffffffffffff168360405161054c91906108f0565b5f60405180830381855afa9150503d805f8114610584576040519150601f19603f3d011682016040523d82523d5f602084013e610589565b606091505b5091509150816105ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c590610cc7565b60405180910390fd5b5f815111610611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060890610d55565b60405180910390fd5b8094505050505092915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f84011261064757610646610626565b5b8235905067ffffffffffffffff8111156106645761066361062a565b5b6020830191508360018202830111156106805761067f61062e565b5b9250929050565b5f5f6020838503121561069d5761069c61061e565b5b5f83013567ffffffffffffffff8111156106ba576106b9610622565b5b6106c685828601610632565b92509250509250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6106fb826106d2565b9050919050565b61070b816106f1565b82525050565b5f6020820190506107245f830184610702565b92915050565b5f819050919050565b61073c8161072a565b8114610746575f5ffd5b50565b5f8135905061075781610733565b92915050565b5f602082840312156107725761077161061e565b5b5f61077f84828501610749565b91505092915050565b5f6bffffffffffffffffffffffff82169050919050565b6107a881610788565b81146107b2575f5ffd5b50565b5f813590506107c38161079f565b92915050565b5f5f5f604084860312156107e0576107df61061e565b5b5f6107ed868287016107b5565b935050602084013567ffffffffffffffff81111561080e5761080d610622565b5b61081a86828701610632565b92509250509250925092565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61086882610826565b6108728185610830565b9350610882818560208601610840565b61088b8161084e565b840191505092915050565b5f6020820190508181035f8301526108ae818461085e565b905092915050565b5f81905092915050565b5f6108ca82610826565b6108d481856108b6565b93506108e4818560208601610840565b80840191505092915050565b5f6108fb82846108c0565b915081905092915050565b5f82825260208201905092915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f5f8201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b5f610970602183610906565b915061097b82610916565b604082019050919050565b5f6020820190508181035f83015261099d81610964565b9050919050565b7f436970686572746578742063616e6e6f7420626520656d7074790000000000005f82015250565b5f6109d8601a83610906565b91506109e3826109a4565b602082019050919050565b5f6020820190508181035f830152610a05816109cc565b9050919050565b5f819050919050565b610a26610a218261072a565b610a0c565b82525050565b5f8160a01b9050919050565b5f610a4282610a2c565b9050919050565b610a5a610a5582610788565b610a38565b82525050565b828183375f83830152505050565b5f610a7983856108b6565b9350610a86838584610a60565b82840190509392505050565b5f610a9d8287610a15565b602082019150610aad8286610a49565b600c82019150610abe828486610a6e565b915081905095945050505050565b7f414553206465637279707420707265636f6d70696c652063616c6c206661696c5f8201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b5f610b26602283610906565b9150610b3182610acc565b604082019050919050565b5f6020820190508181035f830152610b5381610b1a565b9050919050565b5f63ffffffff82169050919050565b5f8160e01b9050919050565b5f610b7f82610b69565b9050919050565b610b97610b9282610b5a565b610b75565b82525050565b5f610ba88284610b86565b60048201915081905092915050565b7f524e4720507265636f6d70696c652063616c6c206661696c65640000000000005f82015250565b5f610beb601a83610906565b9150610bf682610bb7565b602082019050919050565b5f6020820190508181035f830152610c1881610bdf565b9050919050565b5f610c2a8286610a15565b602082019150610c3a8285610a49565b600c82019150610c4a82846108c0565b9150819050949350505050565b7f41455320656e637279707420707265636f6d70696c652063616c6c206661696c5f8201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b5f610cb1602283610906565b9150610cbc82610c57565b604082019050919050565b5f6020820190508181035f830152610cde81610ca5565b9050919050565b7f456e6372797074696f6e2063616c6c2072657475726e6564206e6f206f7574705f8201527f7574000000000000000000000000000000000000000000000000000000000000602082015250565b5f610d3f602283610906565b9150610d4a82610ce5565b604082019050919050565b5f6020820190508181035f830152610d6c81610d33565b905091905056fea2646970667358221220553b2859c11717354ee46bc62fff8e03281ba856427b18f568a346936c735b8264736f6c637827302e382e32382d63692e323032342e31312e342b636f6d6d69742e32306261666332392e6d6f640058 +6080604052348015600e575f5ffd5b50335f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610dce8061005b5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806328696e361461004e5780638da5cb5b1461006a578063a061904014610088578063ce75255b146100a4575b5f5ffd5b61006860048036038101906100639190610687565b6100d4565b005b61007261019a565b60405161007f9190610711565b60405180910390f35b6100a2600480360381019061009d919061075d565b6101be565b005b6100be60048036038101906100b991906107c9565b610256565b6040516100cb9190610896565b60405180910390f35b5f6100dd610412565b90505f61012d8285858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050506104f5565b9050816bffffffffffffffffffffffff167f093a34a48cc07b4bf1355d9c15ec71077c85342d872753188302f99341f961008260405160200161017091906108f0565b60405160208183030381529060405260405161018c9190610896565b60405180910390a250505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461024c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024390610986565b60405180910390fd5b8060018190b15050565b60605f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102dd90610986565b60405180910390fd5b5f838390501161032b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610322906109ee565b60405180910390fd5b5f606790505f6001b086868660405160200161034a9493929190610a92565b60405160208183030381529060405290505f5f8373ffffffffffffffffffffffffffffffffffffffff168360405161038291906108f0565b5f60405180830381855afa9150503d805f81146103ba576040519150601f19603f3d011682016040523d82523d5f602084013e6103bf565b606091505b509150915081610404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103fb90610b3c565b60405180910390fd5b809450505050509392505050565b5f5f606490505f5f8273ffffffffffffffffffffffffffffffffffffffff1660206040516020016104439190610b9d565b60405160208183030381529060405260405161045f91906108f0565b5f60405180830381855afa9150503d805f8114610497576040519150601f19603f3d011682016040523d82523d5f602084013e61049c565b606091505b5091509150816104e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d890610c01565b60405180910390fd5b5f60208201519050805f1c94505050505090565b60605f606690505f6001b0858560405160200161051493929190610c1f565b60405160208183030381529060405290505f5f8373ffffffffffffffffffffffffffffffffffffffff168360405161054c91906108f0565b5f60405180830381855afa9150503d805f8114610584576040519150601f19603f3d011682016040523d82523d5f602084013e610589565b606091505b5091509150816105ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c590610cc7565b60405180910390fd5b5f815111610611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060890610d55565b60405180910390fd5b8094505050505092915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f84011261064757610646610626565b5b8235905067ffffffffffffffff8111156106645761066361062a565b5b6020830191508360018202830111156106805761067f61062e565b5b9250929050565b5f5f6020838503121561069d5761069c61061e565b5b5f83013567ffffffffffffffff8111156106ba576106b9610622565b5b6106c685828601610632565b92509250509250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6106fb826106d2565b9050919050565b61070b816106f1565b82525050565b5f6020820190506107245f830184610702565b92915050565b5f819050919050565b61073c8161072a565b8114610746575f5ffd5b50565b5f8135905061075781610733565b92915050565b5f602082840312156107725761077161061e565b5b5f61077f84828501610749565b91505092915050565b5f6bffffffffffffffffffffffff82169050919050565b6107a881610788565b81146107b2575f5ffd5b50565b5f813590506107c38161079f565b92915050565b5f5f5f604084860312156107e0576107df61061e565b5b5f6107ed868287016107b5565b935050602084013567ffffffffffffffff81111561080e5761080d610622565b5b61081a86828701610632565b92509250509250925092565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61086882610826565b6108728185610830565b9350610882818560208601610840565b61088b8161084e565b840191505092915050565b5f6020820190508181035f8301526108ae818461085e565b905092915050565b5f81905092915050565b5f6108ca82610826565b6108d481856108b6565b93506108e4818560208601610840565b80840191505092915050565b5f6108fb82846108c0565b915081905092915050565b5f82825260208201905092915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f5f8201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b5f610970602183610906565b915061097b82610916565b604082019050919050565b5f6020820190508181035f83015261099d81610964565b9050919050565b7f436970686572746578742063616e6e6f7420626520656d7074790000000000005f82015250565b5f6109d8601a83610906565b91506109e3826109a4565b602082019050919050565b5f6020820190508181035f830152610a05816109cc565b9050919050565b5f819050919050565b610a26610a218261072a565b610a0c565b82525050565b5f8160a01b9050919050565b5f610a4282610a2c565b9050919050565b610a5a610a5582610788565b610a38565b82525050565b828183375f83830152505050565b5f610a7983856108b6565b9350610a86838584610a60565b82840190509392505050565b5f610a9d8287610a15565b602082019150610aad8286610a49565b600c82019150610abe828486610a6e565b915081905095945050505050565b7f414553206465637279707420707265636f6d70696c652063616c6c206661696c5f8201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b5f610b26602283610906565b9150610b3182610acc565b604082019050919050565b5f6020820190508181035f830152610b5381610b1a565b9050919050565b5f63ffffffff82169050919050565b5f8160e01b9050919050565b5f610b7f82610b69565b9050919050565b610b97610b9282610b5a565b610b75565b82525050565b5f610ba88284610b86565b60048201915081905092915050565b7f524e4720507265636f6d70696c652063616c6c206661696c65640000000000005f82015250565b5f610beb601a83610906565b9150610bf682610bb7565b602082019050919050565b5f6020820190508181035f830152610c1881610bdf565b9050919050565b5f610c2a8286610a15565b602082019150610c3a8285610a49565b600c82019150610c4a82846108c0565b9150819050949350505050565b7f41455320656e637279707420707265636f6d70696c652063616c6c206661696c5f8201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b5f610cb1602283610906565b9150610cbc82610c57565b604082019050919050565b5f6020820190508181035f830152610cde81610ca5565b9050919050565b7f456e6372797074696f6e2063616c6c2072657475726e6564206e6f206f7574705f8201527f7574000000000000000000000000000000000000000000000000000000000000602082015250565b5f610d3f602283610906565b9150610d4a82610ce5565b604082019050919050565b5f6020820190508181035f830152610d6c81610d33565b905091905056fea2646970667358221220cdc3edd7891930a1ad58becbe2b3f7679ecfc78a3b1f8a803d4c381c8318287864736f6c637827302e382e32382d63692e323032342e31312e342b636f6d6d69742e32306261666332392e6d6f640058 diff --git a/crates/cheatcodes/src/inspector.rs b/crates/cheatcodes/src/inspector.rs index 92c9c3ef1..91bb55b22 100644 --- a/crates/cheatcodes/src/inspector.rs +++ b/crates/cheatcodes/src/inspector.rs @@ -157,7 +157,7 @@ where db: &mut ccx.ecx.db as &mut dyn DatabaseExt, error, l1_block_info, - kernel: revm::seismic::Kernel::test_default(), + rng_container: revm::seismic::RngContainer::default(), }; let mut evm = new_evm_with_existing_context(inner, &mut *inspector); diff --git a/crates/forge/src/multi_runner.rs b/crates/forge/src/multi_runner.rs index 678544ecc..4038c15dc 100644 --- a/crates/forge/src/multi_runner.rs +++ b/crates/forge/src/multi_runner.rs @@ -299,7 +299,6 @@ impl TestRunnerConfig { // TODO: self.evm_opts // TODO: self.env if config.seismic { - println!("Reconfiguring with seismic version"); self.spec_id = config.seismic_version; } self.spec_id = config.evm_spec_id(); From 340514c45c64595919175a39be58f53687de8576 Mon Sep 17 00:00:00 2001 From: sfyll <39958632+sfyll@users.noreply.github.com> Date: Sun, 9 Feb 2025 16:12:36 +0100 Subject: [PATCH 045/130] Bug fixes (#79) --- Cargo.lock | 36 +++------------- Cargo.toml | 6 +-- crates/anvil/Cargo.toml | 2 +- crates/anvil/core/src/eth/transaction/mod.rs | 2 +- .../test-data/state-dump-legacy-stress.json | 2 +- crates/anvil/tests/it/anvil_api.rs | 2 +- crates/anvil/tests/it/api.rs | 28 +++++++----- crates/anvil/tests/it/fork.rs | 4 +- crates/anvil/tests/it/revert.rs | 43 ++++++++++++++++--- crates/cast/tests/cli/main.rs | 22 ++++++---- crates/config/src/lib.rs | 5 +-- crates/test-utils/Cargo.toml | 13 +++++- crates/test-utils/src/util.rs | 2 +- 13 files changed, 99 insertions(+), 68 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3ac28681b..ab39b7ea5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -979,6 +979,7 @@ dependencies = [ "tower 0.4.13", "tracing", "tracing-subscriber", + "url", "vergen", "yansi", ] @@ -4271,6 +4272,7 @@ dependencies = [ "parking_lot", "rand", "regex", + "revm", "serde_json", "snapbox", "tempfile", @@ -7590,7 +7592,7 @@ dependencies = [ [[package]] name = "revm" version = "18.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=501192c#501192cb03c1be4d4d4cb54a610eb97794d21b75" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=def99a327a3df3ecf96d5e7d684db6aafde9928e#def99a327a3df3ecf96d5e7d684db6aafde9928e" dependencies = [ "auto_impl", "cfg-if", @@ -7605,7 +7607,7 @@ dependencies = [ "serde", "serde_json", "sha2", - "tee_service_api 0.1.0 (git+ssh://git@github.com/SeismicSystems/TEEService.git?rev=4036092)", + "tee_service_api 0.1.0 (git+ssh://git@github.com/SeismicSystems/TEEService.git?rev=39b2865)", ] [[package]] @@ -7629,7 +7631,7 @@ dependencies = [ [[package]] name = "revm-interpreter" version = "14.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=501192c#501192cb03c1be4d4d4cb54a610eb97794d21b75" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=def99a327a3df3ecf96d5e7d684db6aafde9928e#def99a327a3df3ecf96d5e7d684db6aafde9928e" dependencies = [ "revm-primitives", "serde", @@ -7638,7 +7640,7 @@ dependencies = [ [[package]] name = "revm-precompile" version = "15.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=501192c#501192cb03c1be4d4d4cb54a610eb97794d21b75" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=def99a327a3df3ecf96d5e7d684db6aafde9928e#def99a327a3df3ecf96d5e7d684db6aafde9928e" dependencies = [ "aurora-engine-modexp", "blst", @@ -7657,7 +7659,7 @@ dependencies = [ [[package]] name = "revm-primitives" version = "14.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=501192c#501192cb03c1be4d4d4cb54a610eb97794d21b75" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=def99a327a3df3ecf96d5e7d684db6aafde9928e#def99a327a3df3ecf96d5e7d684db6aafde9928e" dependencies = [ "alloy-eip2930", "alloy-eip7702", @@ -9060,30 +9062,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "tee_service_api" -version = "0.1.0" -source = "git+ssh://git@github.com/SeismicSystems/TEEService.git?rev=4036092#4036092a11b51fe575a8ea685ee533c10cf9c1d9" -dependencies = [ - "aes-gcm", - "anyhow", - "bincode", - "byteorder", - "bytes", - "hkdf", - "hyper 0.14.32", - "kbs-types", - "once_cell", - "reqwest", - "schnorrkel", - "secp256k1", - "serde", - "serde_json", - "sha2", - "strum 0.25.0", - "tokio", -] - [[package]] name = "tempfile" version = "3.16.0" diff --git a/Cargo.toml b/Cargo.toml index d9cc6d09c..6e176694a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -303,9 +303,9 @@ tee_service_api = { git = "ssh://git@github.com/SeismicSystems/TEEService.git", foundry-fork-db = { git = "ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "cd54596" } # seismic-revm -revm = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "501192c" } -revm-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "501192c" } -revm-interpreter = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "501192c" } +revm = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "def99a327a3df3ecf96d5e7d684db6aafde9928e" } +revm-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "def99a327a3df3ecf96d5e7d684db6aafde9928e" } +revm-interpreter = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "def99a327a3df3ecf96d5e7d684db6aafde9928e" } # seismic-revm-inspectors revm-inspectors = { git = "ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "19828b8" } diff --git a/crates/anvil/Cargo.toml b/crates/anvil/Cargo.toml index dd7e2f1a8..2845584e1 100644 --- a/crates/anvil/Cargo.toml +++ b/crates/anvil/Cargo.toml @@ -131,7 +131,7 @@ alloy-pubsub.workspace = true foundry-test-utils.workspace = true similar-asserts.workspace = true tokio = { workspace = true, features = ["full"] } - +url = "2.5" # op-alloy-rpc-types.workspace = true diff --git a/crates/anvil/core/src/eth/transaction/mod.rs b/crates/anvil/core/src/eth/transaction/mod.rs index f6dfb09cb..fb7542a03 100644 --- a/crates/anvil/core/src/eth/transaction/mod.rs +++ b/crates/anvil/core/src/eth/transaction/mod.rs @@ -109,7 +109,7 @@ pub fn transaction_request_to_typed( gas_limit: gas.unwrap_or_default() as u64, to: to.unwrap_or_default(), value: value.unwrap_or_default(), - chain_id: chain_id.unwrap(), + chain_id: chain_id.unwrap_or_default(), input: input.input.unwrap_or_default(), encryption_pubkey, message_version: message_version.unwrap_or(0), diff --git a/crates/anvil/test-data/state-dump-legacy-stress.json b/crates/anvil/test-data/state-dump-legacy-stress.json index f6605d5ad..a29a5d8b1 100644 --- a/crates/anvil/test-data/state-dump-legacy-stress.json +++ b/crates/anvil/test-data/state-dump-legacy-stress.json @@ -1 +1 @@ -{"block":{"number":"0x5","coinbase":"0x0000000000000000000000000000000000000000","timestamp":"0x66b200cb","gas_limit":"0x1c9c380","basefee":"0x12e09c7a","difficulty":"0x0","prevrandao":"0xe7ef87fc7c2090741a6749a087e4ca8092cb4d07136008799e4ebeac3b69e34a","blob_excess_gas_and_price":{"excess_blob_gas":0,"blob_gasprice":1}},"accounts":{"0x0000000000000000000000000000000000000000":{"nonce":0,"balance":"0x1088aa62285a00","code":"0x","storage":{}},"0x108f53faf774d7c4c56f5bce9ca6e605ce8aeadd":{"nonce":1,"balance":"0x0","code":"0x6080604052600080357fffffffff0000000000000000000000000000000000000000000000000000000016905060008160e01c610251565b60006379ba509782101561015e5781631627540c811461009857632a952b2d81146100b457633659cfe681146100d0576350c946fe81146100ec576353a47bb781146101085763625ca21c81146101245763718fe928811461014057610158565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc9150610158565b738138ef7cf908021d117e542120b7a390650161079150610158565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc9150610158565b738138ef7cf908021d117e542120b7a390650161079150610158565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc9150610158565b738138ef7cf908021d117e542120b7a390650161079150610158565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc91505b5061024c565b816379ba509781146101a657638da5cb5b81146101c25763aaf10f4281146101de5763c7f62cda81146101fa5763daa250be81146102165763deba1b9881146102325761024a565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc915061024a565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc915061024a565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc915061024a565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc915061024a565b738138ef7cf908021d117e542120b7a39065016107915061024a565b738138ef7cf908021d117e542120b7a3906501610791505b505b919050565b61025a81610037565b915050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036102ce57816040517fc2a825f50000000000000000000000000000000000000000000000000000000081526004016102c5919061032f565b60405180910390fd5b3660008037600080366000845af43d6000803e80600081146102ef573d6000f35b3d6000fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610329816102f4565b82525050565b60006020820190506103446000830184610320565b9291505056fea264697066735822122017a4b7fdaaab3897a7b47abaed8d2ee92d558883d3bb2a8454f9601b2ab2c3db64736f6c63430008150033","storage":{}},"0x14dc79964da2c08b23698b3d3cc7ca32193d9955":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x15d34aaf54267db7d7c367839aaf71a00a2c6a65":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x19ba1fac55eea44d12a01372a8eb0c2ebbf9ca21":{"nonce":1,"balance":"0x21e19df7c2963f0ac6b","code":"0x","storage":{}},"0x19c6ab860dbe2bc433574193a4409770a8748bf6":{"nonce":1,"balance":"0x21e19df8da6b7bdc410","code":"0x","storage":{}},"0x23618e81e3f5cdf7f54c3d65f7fbc0abf5b21e8f":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x40567ec443c1d1872af5155755ac3803cc3fe61e":{"nonce":1,"balance":"0x21e19da82562f921b40","code":"0x","storage":{}},"0x47d08dad17ccb558b3ea74b1a0e73a9cc804a9dc":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100885760003560e01c806379ba50971161005b57806379ba5097146100ed5780638da5cb5b146100f7578063aaf10f4214610115578063c7f62cda1461013357610088565b80631627540c1461008d5780633659cfe6146100a957806353a47bb7146100c5578063718fe928146100e3575b600080fd5b6100a760048036038101906100a29190610d25565b61014f565b005b6100c360048036038101906100be9190610d25565b6102d0565b005b6100cd6102e4565b6040516100da9190610d61565b60405180910390f35b6100eb610317565b005b6100f56103fe565b005b6100ff61058b565b60405161010c9190610d61565b60405180910390f35b61011d6105be565b60405161012a9190610d61565b60405180910390f35b61014d60048036038101906101489190610d25565b6105f1565b005b61015761084c565b600061016161081b565b9050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036101c9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610252576040517fa88ee57700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce22826040516102c49190610d61565b60405180910390a15050565b6102d861084c565b6102e1816108c5565b50565b60006102ee61081b565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061032161081b565b90503373ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146103b757336040517fa0e5a0d70000000000000000000000000000000000000000000000000000000081526004016103ae9190610d61565b60405180910390fd5b60008160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061040861081b565b905060008160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104a357336040517fa0e5a0d700000000000000000000000000000000000000000000000000000000815260040161049a9190610d61565b60405180910390fd5b7fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c8260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826040516104f8929190610d7c565b60405180910390a1808260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008260010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600061059561081b565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006105c8610b05565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006105fb610b05565b905060018160000160146101000a81548160ff02191690831515021790555060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16633659cfe6846040516024016106cc9190610d61565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161071b9190610e16565b600060405180830381855af49150503d8060008114610756576040519150601f19603f3d011682016040523d82523d6000602084013e61075b565b606091505b505090508015806107c357508173ffffffffffffffffffffffffffffffffffffffff16610786610b05565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b156107fa576040517fa1cfa5a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008360000160146101000a81548160ff0219169083151502179055600080fd5b60008060405160200161082d90610eb0565b6040516020818303038152906040528051906020012090508091505090565b610854610b36565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108c357336040517f8e4a23d60000000000000000000000000000000000000000000000000000000081526004016108ba9190610d61565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361092b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093481610b69565b61097557806040517f8a8b41ec00000000000000000000000000000000000000000000000000000000815260040161096c9190610d61565b60405180910390fd5b600061097f610b05565b90508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a0a576040517fa88ee57700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060000160149054906101000a900460ff16158015610a2e5750610a2d82610b7c565b5b15610a7057816040517f15504301000000000000000000000000000000000000000000000000000000008152600401610a679190610d61565b60405180910390fd5b818160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503073ffffffffffffffffffffffffffffffffffffffff167f5d611f318680d00598bb735d61bacf0c514c6b50e1e5ad30040a4df2b12791c783604051610af99190610d61565b60405180910390a25050565b600080604051602001610b1790610f42565b6040516020818303038152906040528051906020012090508091505090565b6000610b4061081b565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080823b905060008111915050919050565b60008060003073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1663c7f62cda86604051602401610bc59190610d61565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610c149190610e16565b600060405180830381855af49150503d8060008114610c4f576040519150601f19603f3d011682016040523d82523d6000602084013e610c54565b606091505b509150915081158015610cb9575063a1cfa5a860e01b604051602001610c7a9190610faf565b6040516020818303038152906040528051906020012081604051602001610ca19190610e16565b60405160208183030381529060405280519060200120145b92505050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610cf282610cc7565b9050919050565b610d0281610ce7565b8114610d0d57600080fd5b50565b600081359050610d1f81610cf9565b92915050565b600060208284031215610d3b57610d3a610cc2565b5b6000610d4984828501610d10565b91505092915050565b610d5b81610ce7565b82525050565b6000602082019050610d766000830184610d52565b92915050565b6000604082019050610d916000830185610d52565b610d9e6020830184610d52565b9392505050565b600081519050919050565b600081905092915050565b60005b83811015610dd9578082015181840152602081019050610dbe565b60008484015250505050565b6000610df082610da5565b610dfa8185610db0565b9350610e0a818560208601610dbb565b80840191505092915050565b6000610e228284610de5565b915081905092915050565b600082825260208201905092915050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e4f776e6160008201527f626c650000000000000000000000000000000000000000000000000000000000602082015250565b6000610e9a602383610e2d565b9150610ea582610e3e565b604082019050919050565b60006020820190508181036000830152610ec981610e8d565b9050919050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e50726f7860008201527f7900000000000000000000000000000000000000000000000000000000000000602082015250565b6000610f2c602183610e2d565b9150610f3782610ed0565b604082019050919050565b60006020820190508181036000830152610f5b81610f1f565b9050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b610fa9610fa482610f62565b610f8e565b82525050565b6000610fbb8284610f98565b6004820191508190509291505056fea264697066735822122023a7c33d7b91dce35ffbcf8837693364ab22a3905d0fc00016833e5fac45ca2f64736f6c63430008110033","storage":{"0x5c7865864a2a990d80b5bb5c40e7b73a029960dc711fbb56120dfab976e92ea3":"0x0"}},"0x4e59b44847b379578588920ca78fbf26c0b4956c":{"nonce":2,"balance":"0x0","code":"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf3","storage":{}},"0x70997970c51812dc3a010c7d01b50e0d17dc79c8":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x8138ef7cf908021d117e542120b7a39065016107":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100575760003560e01c80632a952b2d1461005c57806350c946fe14610085578063625ca21c146100a5578063daa250be146100c6578063deba1b98146100d9575b600080fd5b61006f61006a366004613a63565b6100ec565b60405161007c9190613a7c565b60405180910390f35b610098610093366004613a63565b61011c565b60405161007c9190613b21565b6100b86100b3366004613c92565b610276565b60405190815260200161007c565b61006f6100d4366004613d5f565b6102bb565b6100b86100e7366004613c92565b6102d6565b6100f46139e4565b6040805160008082526020820190815281830190925261011691849190610310565b92915050565b6101416040805160608101909152806000815260200160608152602001606081525090565b61014a82610ab6565b60408051606081019091528154909190829060ff16600981111561017057610170613aa7565b600981111561018157610181613aa7565b815260200160018201805461019590613dc2565b80601f01602080910402602001604051908101604052809291908181526020018280546101c190613dc2565b801561020e5780601f106101e35761010080835404028352916020019161020e565b820191906000526020600020905b8154815290600101906020018083116101f157829003601f168201915b505050505081526020016002820180548060200260200160405190810160405280929190818152602001828054801561026657602002820191906000526020600020905b815481526020019060010190808311610252575b5050505050815250509050919050565b600080604051806060016040528086600981111561029657610296613aa7565b81526020018581526020018481525090506102b081610ac1565b9150505b9392505050565b6102c36139e4565b6102ce848484610310565b949350505050565b60008060405180606001604052808660098111156102f6576102f6613aa7565b81526020018581526020018481525090506102b081610acc565b6103186139e4565b81518351146103a05760408051634bab873760e11b81526004810191909152600d60448201526c72756e74696d6556616c75657360981b606482015260806024820152602260848201527f6d7573742062652073616d65206c656e6774682061732072756e74696d654b6560a482015261797360f01b60c482015260e4015b60405180910390fd5b60006103ab85610c26565b805490915060ff1660018160098111156103c7576103c7613aa7565b036104755761046c6103da838787610c84565b8360010180546103e990613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461041590613dc2565b80156104625780601f1061043757610100808354040283529160200191610462565b820191906000526020600020905b81548152906001019060200180831161044557829003601f168201915b5050505050610d46565b925050506102b4565b600281600981111561048957610489613aa7565b036105305761046c61049c838787610c84565b8360010180546104ab90613dc2565b80601f01602080910402602001604051908101604052809291908181526020018280546104d790613dc2565b80156105245780601f106104f957610100808354040283529160200191610524565b820191906000526020600020905b81548152906001019060200180831161050757829003601f168201915b50505050508787610ebb565b600381600981111561054457610544613aa7565b036105de5761046c82600101805461055b90613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461058790613dc2565b80156105d45780601f106105a9576101008083540402835291602001916105d4565b820191906000526020600020905b8154815290600101906020018083116105b757829003601f168201915b5050505050610f59565b60048160098111156105f2576105f2613aa7565b0361068c5761046c82600101805461060990613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461063590613dc2565b80156106825780601f1061065757610100808354040283529160200191610682565b820191906000526020600020905b81548152906001019060200180831161066557829003601f168201915b5050505050611087565b60058160098111156106a0576106a0613aa7565b0361073a5761046c8260010180546106b790613dc2565b80601f01602080910402602001604051908101604052809291908181526020018280546106e390613dc2565b80156107305780601f1061070557610100808354040283529160200191610730565b820191906000526020600020905b81548152906001019060200180831161071357829003601f168201915b505050505061131e565b600981600981111561074e5761074e613aa7565b036107ea5761046c82600101805461076590613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461079190613dc2565b80156107de5780601f106107b3576101008083540402835291602001916107de565b820191906000526020600020905b8154815290600101906020018083116107c157829003601f168201915b505050505086866114b5565b60068160098111156107fe576107fe613aa7565b036108a35761046c610811838787610c84565b83600101805461082090613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461084c90613dc2565b80156108995780601f1061086e57610100808354040283529160200191610899565b820191906000526020600020905b81548152906001019060200180831161087c57829003601f168201915b50505050506115c7565b60078160098111156108b7576108b7613aa7565b036109ec576040805160608101909152825461046c91908490829060ff1660098111156108e6576108e6613aa7565b60098111156108f7576108f7613aa7565b815260200160018201805461090b90613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461093790613dc2565b80156109845780601f1061095957610100808354040283529160200191610984565b820191906000526020600020905b81548152906001019060200180831161096757829003601f168201915b50505050508152602001600282018054806020026020016040519081016040528092919081815260200182805480156109dc57602002820191906000526020600020905b8154815260200190600101908083116109c8575b5050505050815250508686611728565b6008816009811115610a0057610a00613aa7565b03610a9a5761046c826001018054610a1790613dc2565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4390613dc2565b8015610a905780601f10610a6557610100808354040283529160200191610a90565b820191906000526020600020905b815481529060010190602001808311610a7357829003601f168201915b50505050506118a5565b6040516323a9bbc960e01b815260048101879052602401610397565b600061011682610c26565b6000610116826118ea565b6000610ad782610ac1565b9050610ae28161192a565b15610b35577fcb64985827770858ec421ad26da7e558c757541643036ce44d6b4eb9e8e5dc5e81836000015184602001518560400151604051610b289493929190613e32565b60405180910390a1919050565b610b3e82611a8c565b610b5d578160405163382bbbc960e11b81526004016103979190613b21565b60005b826040015151811015610bd957610b9383604001518281518110610b8657610b86613e6a565b602002602001015161192a565b610bd15782604001518181518110610bad57610bad613e6a565b6020026020010151604051632f19f96160e11b815260040161039791815260200190565b600101610b60565b50610be382611c31565b8351602085015160408087015190519395507fcb64985827770858ec421ad26da7e558c757541643036ce44d6b4eb9e8e5dc5e9450610b28938693929190613e32565b604080516020808201839052606082018190527f696f2e73796e7468657469782e6f7261636c652d6d616e616765722e4e6f6465608080840191909152828401949094528251808303909401845260a0909101909152815191012090565b600283015460609067ffffffffffffffff811115610ca457610ca4613b9a565b604051908082528060200260200182016040528015610cdd57816020015b610cca6139e4565b815260200190600190039081610cc25790505b50905060005b6002850154811015610d3e57610d19856002018281548110610d0757610d07613e6a565b90600052602060002001548585610310565b828281518110610d2b57610d2b613e6a565b6020908102919091010152600101610ce3565b509392505050565b610d4e6139e4565b600082806020019051810190610d649190613e80565b90506000816008811115610d7a57610d7a613aa7565b03610d9057610d8884611ca5565b915050610116565b6001816008811115610da457610da4613aa7565b03610db257610d8884611d0d565b6002816008811115610dc657610dc6613aa7565b03610dd457610d8884611d90565b6003816008811115610de857610de8613aa7565b03610df657610d8884611e13565b6004816008811115610e0a57610e0a613aa7565b03610e1857610d8884611ec9565b6005816008811115610e2c57610e2c613aa7565b03610e3a57610d8884612009565b6006816008811115610e4e57610e4e613aa7565b03610e5c57610d88846120e4565b6007816008811115610e7057610e70613aa7565b03610e7e57610d888461220c565b6008816008811115610e9257610e92613aa7565b03610ea057610d88846122ce565b80604051631be413d360e11b81526004016103979190613ea1565b610ec36139e4565b600084806020019051810190610ed99190613ed3565b604051631ecba7c360e31b81529091506001600160a01b0382169063f65d3e1890610f0e908990899089908990600401613ef0565b608060405180830381865afa158015610f2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4f9190613f91565b9695505050505050565b610f616139e4565b600080600084806020019051810190610f7a9190613fe8565b92509250925060008390506000806000836001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610fc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fec9190614041565b509350509250925060008660001461100f5761100a8585858a6123c7565b611011565b825b905060128660ff161161103b5761103661102f60ff881660126140a7565b82906124c2565b611053565b61105361104c601260ff89166140a7565b82906124dc565b9050604051806080016040528082815260200183815260200160008152602001600081525098505050505050505050919050565b61108f6139e4565b600080600080600080878060200190518101906110ac91906140ba565b604080516002808252606082018352979d50959b50939950919750955093506000929060208301908036833701905050905081816000815181106110f2576110f2613e6a565b602002602001019063ffffffff16908163ffffffff168152505060008160018151811061112157611121613e6a565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0385169063883bdbfd90611165908590600401614143565b600060405180830381865afa158015611182573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111aa91908101906141f5565b5090506000816000815181106111c2576111c2613e6a565b6020026020010151826001815181106111dd576111dd613e6a565b60200260200101516111ef91906142c1565b9050600061121761120563ffffffff87166124f6565b61120f9084614304565b60060b61252d565b905060008260060b12801561124c575061123b63ffffffff8616612569565b612569565b8260060b6112499190614342565b15155b1561125f578061125b81614356565b9150505b600061126d6012600a61445d565b9050600061128061123684848f8f612593565b905060006112908a60ff16612569565b61129c8c60ff16612569565b6112a6919061446c565b905060008082136112d1576112cc6112c56112c084614493565b612686565b84906124dc565b6112e4565b6112e46112dd83612686565b84906124c2565b905060405180608001604052808281526020014281526020016000815260200160008152509e505050505050505050505050505050919050565b6113266139e4565b60008060008480602001905181019061133f91906144bf565b91945092509050826000826113bc576040516396834ad360e01b8152600481018590526001600160a01b038316906396834ad390602401608060405180830381865afa158015611393573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b791906144f5565b611425565b604051639474f45b60e01b8152600481018590526001600160a01b03831690639474f45b90602401608060405180830381865afa158015611401573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142591906144f5565b90506000816040015160030b601261143d919061456f565b90506000808213611467576114626114576112c084614493565b845160070b906124dc565b61147e565b61147e61147383612686565b845160070b906124c2565b9050604051806080016040528082815260200184606001518152602001600081526020016000815250975050505050505050919050565b6114bd6139e4565b6000806000868060200190518101906114d69190614597565b92509250925060005b8651811015611545578681815181106114fa576114fa613e6a565b6020026020010151717374616c656e657373546f6c6572616e636560701b0361153d5785818151811061152f5761152f613e6a565b602002602001015160001c91505b6001016114df565b5060408051600180825281830190925260009160208083019080368337019050509050828160008151811061157c5761157c613e6a565b602002602001018181525050836001838360405160200161159f939291906145ce565b60408051601f198184030181529082905263cf2cabdf60e01b82526103979291600401614603565b6115cf6139e4565b6000828060200190518101906115e59190614627565b90506000846000815181106115fc576115fc613e6a565b602002602001015160000151905060008560018151811061161f5761161f613e6a565b6020026020010151600001519050808214611702576000611653601261164d611648858761446c565b6126a9565b906124c2565b905082158061167b5750611666836126a9565b6116709082614640565b61167985612569565b125b15611700576002875111156116b0578660028151811061169d5761169d613e6a565b6020026020010151945050505050610116565b826000036116d15760405163014cc07160e01b815260040160405180910390fd5b6116da836126a9565b6116e49082614640565b60405163dcac091960e01b815260040161039791815260200190565b505b8560008151811061171557611715613e6a565b6020026020010151935050505092915050565b6117306139e4565b6000846020015180602001905181019061174a9190614627565b905060005b84518110156117bc5784818151811061176a5761176a613e6a565b6020026020010151717374616c656e657373546f6c6572616e636560701b036117b4576117ad8482815181106117a2576117a2613e6a565b602002602001015190565b91506117bc565b60010161174f565b50600085604001516000815181106117d6576117d6613e6a565b6020026020010151905060006117ed828787610310565b60208101519091506117ff84426140a7565b1161180e5792506102b4915050565b86604001515160010361187157866040015160008151811061183257611832613e6a565b602002602001015181600001518260200151604051631808066560e21b8152600401610397939291909283526020830191909152604082015260600190565b61189a876040015160018151811061188b5761188b613e6a565b60200260200101518787610310565b979650505050505050565b6118ad6139e4565b6040518060800160405280838060200190518101906118cc9190614627565b81526020014281526020016000815260200160008152509050919050565b600081600001518260200151836040015160405160200161190d9392919061466e565b604051602081830303815290604052805190602001209050919050565b60008061193683610c26565b60408051606081019091528154909190829060ff16600981111561195c5761195c613aa7565b600981111561196d5761196d613aa7565b815260200160018201805461198190613dc2565b80601f01602080910402602001604051908101604052809291908181526020018280546119ad90613dc2565b80156119fa5780601f106119cf576101008083540402835291602001916119fa565b820191906000526020600020905b8154815290600101906020018083116119dd57829003601f168201915b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015611a5257602002820191906000526020600020905b815481526020019060010190808311611a3e575b505050505081525050905060006009811115611a7057611a70613aa7565b81516009811115611a8357611a83613aa7565b14159392505050565b6000600182516009811115611aa357611aa3613aa7565b1480611ac15750600682516009811115611abf57611abf613aa7565b145b80611ade5750600782516009811115611adc57611adc613aa7565b145b15611aee57611aec826126c1565b505b600182516009811115611b0357611b03613aa7565b03611b11576101168261284a565b600282516009811115611b2657611b26613aa7565b03611b3457610116826128a5565b600382516009811115611b4957611b49613aa7565b03611b575761011682612973565b600482516009811115611b6c57611b6c613aa7565b03611b7a5761011682612aae565b600582516009811115611b8f57611b8f613aa7565b03611b9d5761011682612e92565b600982516009811115611bb257611bb2613aa7565b03611bc05761011682612fcb565b600682516009811115611bd557611bd5613aa7565b03611be3576101168261300e565b600782516009811115611bf857611bf8613aa7565b03611c065761011682613052565b600882516009811115611c1b57611c1b613aa7565b03611c295761011682613078565b506000919050565b600080611c3d836118ea565b9050611c4881610c26565b8351815491935090839060ff19166001836009811115611c6a57611c6a613aa7565b021790555060208301516001830190611c8390826146ed565b5060408301518051611c9f916002850191602090910190613a0c565b50915091565b611cad6139e4565b60005b8251811015611d07578160200151838281518110611cd057611cd0613e6a565b6020026020010151602001511115611cff57828181518110611cf457611cf4613e6a565b602002602001015191505b600101611cb0565b50919050565b611d156139e4565b81600081518110611d2857611d28613e6a565b602002602001015190506000600190505b8251811015611d07578160000151838281518110611d5957611d59613e6a565b6020026020010151600001511215611d8857828181518110611d7d57611d7d613e6a565b602002602001015191505b600101611d39565b611d986139e4565b81600081518110611dab57611dab613e6a565b602002602001015190506000600190505b8251811015611d07578160000151838281518110611ddc57611ddc613e6a565b6020026020010151600001511315611e0b57828181518110611e0057611e00613e6a565b602002602001015191505b600101611dbc565b611e1b6139e4565b60005b8251811015611e9557828181518110611e3957611e39613e6a565b60200260200101516000015182600001818151611e56919061456f565b9052508251839082908110611e6d57611e6d613e6a565b60200260200101516020015182602001818151611e8a91906147ad565b905250600101611e1e565b50611ea08251612569565b8151611eac9190614640565b815281516020820151611ebf91906147c0565b6020820152919050565b611ed16139e4565b611eed826000611ee86001865161123691906140a7565b6130a4565b60028251611efb91906147d4565b600003611fd65760408051600280825260608201909252600091816020015b611f226139e4565b815260200190600190039081611f1a57905050905082600160028551611f4891906147c0565b611f5291906140a7565b81518110611f6257611f62613e6a565b602002602001015181600081518110611f7d57611f7d613e6a565b60200260200101819052508260028451611f9791906147c0565b81518110611fa757611fa7613e6a565b602002602001015181600181518110611fc257611fc2613e6a565b60200260200101819052506102b481611e13565b8160028351611fe591906147c0565b81518110611ff557611ff5613e6a565b60200260200101519050919050565b919050565b6120116139e4565b8160008151811061202457612024613e6a565b60209081029190910101515181528151829060009061204557612045613e6a565b6020908102919091018101518101519082015260015b82518110156120d25782818151811061207657612076613e6a565b6020026020010151600001518260000181815161209391906147e8565b90525082518390829081106120aa576120aa613e6a565b602002602001015160200151826020018181516120c791906147ad565b90525060010161205b565b5081518160200151611ebf91906147c0565b6120ec6139e4565b816000815181106120ff576120ff613e6a565b60209081029190910101515181528151829060009061212057612120613e6a565b6020908102919091018101518101519082015260015b82518110156120d25782818151811061215157612151613e6a565b60200260200101516000015160000361219e5782818151811061217657612176613e6a565b6020026020010151600001516040516338ee04a760e01b815260040161039791815260200190565b8281815181106121b0576121b0613e6a565b602002602001015160000151826000018181516121cd9190614640565b90525082518390829081106121e4576121e4613e6a565b6020026020010151602001518260200181815161220191906147ad565b905250600101612136565b6122146139e4565b8160008151811061222757612227613e6a565b60209081029190910101515181528151829060009061224857612248613e6a565b6020908102919091018101518101519082015260015b82518110156120d25761229083828151811061227c5761227c613e6a565b602090810291909101015151835190613264565b825282518390829081106122a6576122a6613e6a565b602002602001015160200151826020018181516122c391906147ad565b90525060010161225e565b6122d66139e4565b816000815181106122e9576122e9613e6a565b60209081029190910101515181528151829060009061230a5761230a613e6a565b6020908102919091018101518101519082015260015b82518110156120d25782818151811061233b5761233b613e6a565b6020026020010151600001516000036123605782818151811061217657612176613e6a565b61238983828151811061237557612375613e6a565b602090810291909101015151835190613283565b8252825183908290811061239f5761239f613e6a565b602002602001015160200151826020018181516123bc91906147ad565b905250600101612320565b6000826001826123d785426140a7565b90505b69ffffffffffffffffffff8716156124a3576001600160a01b038816639a6fc8f561240489614818565b6040516001600160e01b031960e084901b16815269ffffffffffffffffffff8216600482015290995060240160a060405180830381865afa925050508015612469575060408051601f3d908101601f1916820190925261246691810190614041565b60015b156124a357858210156124805750505050506124a3565b61248a848961456f565b97508661249681614834565b97505050505050506123da565b6124ac82612569565b6124b69084614640565b98975050505050505050565b60006124d261123683600a61484d565b6102b490846147e8565b60006124ec61123683600a61484d565b6102b49084614640565b6000667fffffffffffff66ffffffffffffff83161115612529576040516329d2678160e21b815260040160405180910390fd5b5090565b6000627fffff19600683900b128061254b5750627fffff600683900b135b1561252957604051630d962f7960e21b815260040160405180910390fd5b60006001600160ff1b038211156125295760405163677c430560e11b815260040160405180910390fd5b60008061259f86613298565b90506fffffffffffffffffffffffffffffffff6001600160a01b0382161161261c5760006125d66001600160a01b03831680614859565b9050836001600160a01b0316856001600160a01b03161061260557612600600160c01b87836136cd565b612614565b6126148187600160c01b6136cd565b92505061267d565b600061263b6001600160a01b03831680680100000000000000006136cd565b9050836001600160a01b0316856001600160a01b03161061266a57612665600160801b87836136cd565b612679565b6126798187600160801b6136cd565b9250505b50949350505050565b6000808212156125295760405163029f024d60e31b815260040160405180910390fd5b600080821215612529576126bc82614493565b610116565b6000805b8260400151518110156128415760006126fa846040015183815181106126ed576126ed613e6a565b6020026020010151610ab6565b60408051606081019091528154909190829060ff16600981111561272057612720613aa7565b600981111561273157612731613aa7565b815260200160018201805461274590613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461277190613dc2565b80156127be5780601f10612793576101008083540402835291602001916127be565b820191906000526020600020905b8154815290600101906020018083116127a157829003601f168201915b505050505081526020016002820180548060200260200160405190810160405280929190818152602001828054801561281657602002820191906000526020600020905b815481526020019060010190808311612802575b505050505081525050905061282a81611a8c565b612838575060009392505050565b506001016126c5565b50600192915050565b60006002826040015151101561286257506000919050565b81602001515160201461287757506000919050565b600082602001518060200190518101906128919190614627565b905060088111156128415750600092915050565b6000602082602001515110156128bd57506000919050565b600082602001518060200190518101906128d79190613ed3565b90506128ea816306e7ea3960e21b6138e2565b6128f75750600092915050565b604051633b70a5bf60e21b81526001600160a01b0382169063edc296fc90612923908690600401613b21565b6020604051808303816000875af1158015612942573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129669190614870565b6128415750600092915050565b6040810151516000901561298957506000919050565b81602001515160601461299e57506000919050565b60008083602001518060200190518101906129b99190613fe8565b92505091506000829050806001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015612a01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a259190614041565b5050505050806001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8c919061488b565b60ff168260ff1614612aa357506000949350505050565b506001949350505050565b60408101515160009015612ac457506000919050565b81602001515160c014612ad957506000919050565b6000806000806000808760200151806020019051810190612afa91906140ba565b9550955095509550955095508360ff16866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6c919061488b565b60ff1614612b8257506000979650505050505050565b8260ff16856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be8919061488b565b60ff1614612bfe57506000979650505050505050565b6000826001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c629190613ed3565b90506000836001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ca4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cc89190613ed3565b9050876001600160a01b0316826001600160a01b0316148015612cfc5750866001600160a01b0316816001600160a01b0316145b158015612d385750866001600160a01b0316826001600160a01b0316148015612d365750876001600160a01b0316816001600160a01b0316145b155b15612d4d575060009998505050505050505050565b60128660ff161180612d62575060128560ff16115b15612d77575060009998505050505050505050565b8263ffffffff16600003612d95575060009998505050505050505050565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110612dca57612dca613e6a565b602002602001019063ffffffff16908163ffffffff1681525050600081600181518110612df957612df9613e6a565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526001600160a01b0386169063883bdbfd90612e3a908490600401614143565b600060405180830381865afa158015612e57573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e7f91908101906141f5565b5060019c9b505050505050505050505050565b60408101515160009015612ea857506000919050565b816020015151606014612ebd57506000919050565b60008060008460200151806020019051810190612eda91906144bf565b919450925090508281612f55576040516396834ad360e01b8152600481018490526001600160a01b038216906396834ad390602401608060405180830381865afa158015612f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5091906144f5565b612fbe565b604051639474f45b60e01b8152600481018490526001600160a01b03821690639474f45b90602401608060405180830381865afa158015612f9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fbe91906144f5565b5060019695505050505050565b60408101515160009015612fe157506000919050565b816020015151606014612ff657506000919050565b8160200151806020019051810190612aa39190614597565b60008160400151516002148061302957508160400151516003145b61303557506000919050565b81602001515160201461304a57506000919050565b506001919050565b600081604001515160011480613029575081604001515160021461303557506000919050565b6040810151516000901561308e57506000919050565b6020826020015151101561304a57506000919050565b81818082036130b4575050505050565b6000856130da60026130c6888861446c565b6130d09190614640565b6112c0908861456f565b815181106130ea576130ea613e6a565b60200260200101516000015190505b818313613236575b808661310c85612686565b8151811061311c5761311c613e6a565b60200260200101516000015112156131405782613138816148a6565b935050613101565b8561314a83612686565b8151811061315a5761315a613e6a565b60200260200101516000015181121561317f5781613177816148be565b925050613140565b818313613231578561319083612686565b815181106131a0576131a0613e6a565b6020026020010151866131b285612686565b815181106131c2576131c2613e6a565b6020026020010151876131d486612686565b815181106131e4576131e4613e6a565b60200260200101886131f586612686565b8151811061320557613205613e6a565b602002602001018290528290525050828061321f906148a6565b935050818061322d906148be565b9250505b6130f9565b81851215613249576132498686846130a4565b8383121561325c5761325c8684866130a4565b505050505050565b6000670de0b6b3a764000061327983856147e8565b6102b49190614640565b600081613279670de0b6b3a7640000856147e8565b60008060008360020b126132b8576132b3600284900b612686565b6132c8565b6132c86112c0600285900b614493565b90506132e36112c06132dd620d89e7196148db565b60020b90565b8111156133165760405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606401610397565b60008160011660000361332d57600160801b61333f565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff169050600282161561337e576080613379826ffff97272373d413259a46990580e213a614859565b901c90505b60048216156133a85760806133a3826ffff2e50f5f656932ef12357cf3c7fdcc614859565b901c90505b60088216156133d25760806133cd826fffe5caca7e10e4e61c3624eaa0941cd0614859565b901c90505b60108216156133fc5760806133f7826fffcb9843d60f6159c9db58835c926644614859565b901c90505b6020821615613426576080613421826fff973b41fa98c081472e6896dfb254c0614859565b901c90505b604082161561345057608061344b826fff2ea16466c96a3843ec78b326b52861614859565b901c90505b608082161561347a576080613475826ffe5dee046a99a2a811c461f1969c3053614859565b901c90505b6101008216156134a55760806134a0826ffcbe86c7900a88aedcffc83b479aa3a4614859565b901c90505b6102008216156134d05760806134cb826ff987a7253ac413176f2b074cf7815e54614859565b901c90505b6104008216156134fb5760806134f6826ff3392b0822b70005940c7a398e4b70f3614859565b901c90505b610800821615613526576080613521826fe7159475a2c29b7443b29c7fa6e889d9614859565b901c90505b61100082161561355157608061354c826fd097f3bdfd2022b8845ad8f792aa5825614859565b901c90505b61200082161561357c576080613577826fa9f746462d870fdf8a65dc1f90e061e5614859565b901c90505b6140008216156135a75760806135a2826f70d869a156d2a1b890bb3df62baf32f7614859565b901c90505b6180008216156135d25760806135cd826f31be135f97d08fd981231505542fcfa6614859565b901c90505b620100008216156135fe5760806135f9826f09aa508b5b7a84e1c677de54f3e99bc9614859565b901c90505b62020000821615613629576080613624826e5d6af8dedb81196699c329225ee604614859565b901c90505b6204000082161561365357608061364e826d2216e584f5fa1ea926041bedfe98614859565b901c90505b6208000082161561367b576080613676826b048a170391f7dc42444e8fa2614859565b901c90505b60008460020b131561369657613693816000196147c0565b90505b6102ce6136a8640100000000836147d4565b156136b45760016136b7565b60005b6136c89060ff16602084901c6147ad565b6139ba565b6000808060001985870985870292508281108382030391505080600003613749576000841161373e5760405162461bcd60e51b815260206004820152601960248201527f48616e646c65206e6f6e2d6f766572666c6f77206361736573000000000000006044820152606401610397565b5082900490506102b4565b8084116137985760405162461bcd60e51b815260206004820152601960248201527f70726576656e74732064656e6f6d696e61746f72203d3d2030000000000000006044820152606401610397565b60008486880980840393811190920391905060006137d06137b887612569565b6137c188612569565b6137ca90614493565b16612686565b9586900495938490049360008190030460010190506137ef8184614859565b909317926000613800876003614859565b600218905061380f8188614859565b61381a9060026140a7565b6138249082614859565b90506138308188614859565b61383b9060026140a7565b6138459082614859565b90506138518188614859565b61385c9060026140a7565b6138669082614859565b90506138728188614859565b61387d9060026140a7565b6138879082614859565b90506138938188614859565b61389e9060026140a7565b6138a89082614859565b90506138b48188614859565b6138bf9060026140a7565b6138c99082614859565b90506138d58186614859565b9998505050505050505050565b604080516001600160e01b0319831660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166301ffc9a760e01b1790529051600091829182916001600160a01b0387169161394391906148fd565b6000604051808303816000865af19150503d8060008114613980576040519150601f19603f3d011682016040523d82523d6000602084013e613985565b606091505b50915091508161399a57600092505050610116565b80516000036139ae57600092505050610116565b60200151949350505050565b60006001600160a01b038211156125295760405163dccde8ed60e01b815260040160405180910390fd5b6040518060800160405280600081526020016000815260200160008152602001600081525090565b828054828255906000526020600020908101928215613a47579160200282015b82811115613a47578251825591602001919060010190613a2c565b506125299291505b808211156125295760008155600101613a4f565b600060208284031215613a7557600080fd5b5035919050565b8151815260208083015190820152604080830151908201526060808301519082015260808101610116565b634e487b7160e01b600052602160045260246000fd5b600a8110613acd57613acd613aa7565b9052565b60005b83811015613aec578181015183820152602001613ad4565b50506000910152565b60008151808452613b0d816020860160208601613ad1565b601f01601f19169290920160200192915050565b60006020808352613b358184018551613abd565b8084015160606040850152613b4d6080850182613af5565b6040860151858203601f19016060870152805180835290840192506000918401905b80831015613b8f5783518252928401926001929092019190840190613b6f565b509695505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613bd357613bd3613b9a565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613c0257613c02613b9a565b604052919050565b600067ffffffffffffffff821115613c2457613c24613b9a565b5060051b60200190565b600082601f830112613c3f57600080fd5b81356020613c54613c4f83613c0a565b613bd9565b8083825260208201915060208460051b870101935086841115613c7657600080fd5b602086015b84811015613b8f5780358352918301918301613c7b565b600080600060608486031215613ca757600080fd5b8335600a8110613cb657600080fd5b925060208481013567ffffffffffffffff80821115613cd457600080fd5b818701915087601f830112613ce857600080fd5b813581811115613cfa57613cfa613b9a565b613d0c601f8201601f19168501613bd9565b8181528985838601011115613d2057600080fd5b818585018683013760009181019094015291935060408601359180831115613d4757600080fd5b5050613d5586828701613c2e565b9150509250925092565b600080600060608486031215613d7457600080fd5b83359250602084013567ffffffffffffffff80821115613d9357600080fd5b613d9f87838801613c2e565b93506040860135915080821115613db557600080fd5b50613d5586828701613c2e565b600181811c90821680613dd657607f821691505b602082108103611d0757634e487b7160e01b600052602260045260246000fd5b60008151808452602080850194506020840160005b83811015613e2757815187529582019590820190600101613e0b565b509495945050505050565b848152613e426020820185613abd565b608060408201526000613e586080830185613af5565b828103606084015261189a8185613df6565b634e487b7160e01b600052603260045260246000fd5b600060208284031215613e9257600080fd5b8151600981106102b457600080fd5b6020810160098310613eb557613eb5613aa7565b91905290565b6001600160a01b0381168114613ed057600080fd5b50565b600060208284031215613ee557600080fd5b81516102b481613ebb565b608080825285518282018190526000919060209060a0850190828a01855b82811015613f5257613f42848351805182526020810151602083015260408101516040830152606081015160608301525050565b9285019290840190600101613f0e565b5050508481036020860152613f678189613af5565b925050508281036040840152613f7d8186613df6565b9050828103606084015261189a8185613df6565b600060808284031215613fa357600080fd5b613fab613bb0565b825181526020830151602082015260408301516040820152606083015160608201528091505092915050565b805160ff8116811461200457600080fd5b600080600060608486031215613ffd57600080fd5b835161400881613ebb565b6020850151909350915061401e60408501613fd7565b90509250925092565b805169ffffffffffffffffffff8116811461200457600080fd5b600080600080600060a0868803121561405957600080fd5b61406286614027565b945060208601519350604086015192506060860151915061408560808701614027565b90509295509295909350565b634e487b7160e01b600052601160045260246000fd5b8181038181111561011657610116614091565b60008060008060008060c087890312156140d357600080fd5b86516140de81613ebb565b60208801519096506140ef81613ebb565b94506140fd60408801613fd7565b935061410b60608801613fd7565b9250608087015161411b81613ebb565b60a088015190925063ffffffff8116811461413557600080fd5b809150509295509295509295565b6020808252825182820181905260009190848201906040850190845b8181101561418157835163ffffffff168352928401929184019160010161415f565b50909695505050505050565b600082601f83011261419e57600080fd5b815160206141ae613c4f83613c0a565b8083825260208201915060208460051b8701019350868411156141d057600080fd5b602086015b84811015613b8f5780516141e881613ebb565b83529183019183016141d5565b6000806040838503121561420857600080fd5b825167ffffffffffffffff8082111561422057600080fd5b818501915085601f83011261423457600080fd5b81516020614244613c4f83613c0a565b82815260059290921b8401810191818101908984111561426357600080fd5b948201945b838610156142915785518060060b81146142825760008081fd5b82529482019490820190614268565b918801519196509093505050808211156142aa57600080fd5b506142b78582860161418d565b9150509250929050565b600682810b9082900b03667fffffffffffff198112667fffffffffffff8213171561011657610116614091565b634e487b7160e01b600052601260045260246000fd5b60008160060b8360060b8061431b5761431b6142ee565b667fffffffffffff1982146000198214161561433957614339614091565b90059392505050565b600082614351576143516142ee565b500790565b60008160020b627fffff19810361436f5761436f614091565b6000190192915050565b600181815b808511156143b457816000190482111561439a5761439a614091565b808516156143a757918102915b93841c939080029061437e565b509250929050565b6000826143cb57506001610116565b816143d857506000610116565b81600181146143ee57600281146143f857614414565b6001915050610116565b60ff84111561440957614409614091565b50506001821b610116565b5060208310610133831016604e8410600b8410161715614437575081810a610116565b6144418383614379565b806000190482111561445557614455614091565b029392505050565b60006102b460ff8416836143bc565b818103600083128015838313168383128216171561448c5761448c614091565b5092915050565b6000600160ff1b82016144a8576144a8614091565b5060000390565b8051801515811461200457600080fd5b6000806000606084860312156144d457600080fd5b83516144df81613ebb565b6020850151909350915061401e604085016144af565b60006080828403121561450757600080fd5b61450f613bb0565b82518060070b811461452057600080fd5b8152602083015167ffffffffffffffff8116811461453d57600080fd5b60208201526040830151600381900b811461455757600080fd5b60408201526060928301519281019290925250919050565b808201828112600083128015821682158216171561458f5761458f614091565b505092915050565b6000806000606084860312156145ac57600080fd5b83516145b781613ebb565b602085015160409095015190969495509392505050565b60ff8416815267ffffffffffffffff831660208201526060604082015260006145fa6060830184613df6565b95945050505050565b6001600160a01b03831681526040602082018190526000906102ce90830184613af5565b60006020828403121561463957600080fd5b5051919050565b60008261464f5761464f6142ee565b600160ff1b82146000198414161561466957614669614091565b500590565b6146788185613abd565b60606020820152600061468e6060830185613af5565b8281036040840152610f4f8185613df6565b601f8211156146e8576000816000526020600020601f850160051c810160208610156146c95750805b601f850160051c820191505b8181101561325c578281556001016146d5565b505050565b815167ffffffffffffffff81111561470757614707613b9a565b61471b816147158454613dc2565b846146a0565b602080601f83116001811461475057600084156147385750858301515b600019600386901b1c1916600185901b17855561325c565b600085815260208120601f198616915b8281101561477f57888601518255948401946001909101908401614760565b508582101561479d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8082018082111561011657610116614091565b6000826147cf576147cf6142ee565b500490565b6000826147e3576147e36142ee565b500690565b80820260008212600160ff1b8414161561480457614804614091565b818105831482151761011657610116614091565b600069ffffffffffffffffffff82168061436f5761436f614091565b60006001820161484657614846614091565b5060010190565b60006102b483836143bc565b808202811582820484141761011657610116614091565b60006020828403121561488257600080fd5b6102b4826144af565b60006020828403121561489d57600080fd5b6102b482613fd7565b60006001600160ff1b01820161484657614846614091565b6000600160ff1b82016148d3576148d3614091565b506000190190565b60008160020b627fffff1981036148f4576148f4614091565b60000392915050565b6000825161490f818460208701613ad1565b919091019291505056fea264697066735822122074f32fef384fdc296b0859f1c1f941c8e736c6cb972aa9e2b894956ebd6a80b364736f6c63430008160033","storage":{}},"0x83a0444b93927c3afcbe46e522280390f748e171":{"nonce":1,"balance":"0x0","code":"0x6080604052366100135761001161001d565b005b61001b61001d565b005b6000610027610093565b90503660008037600080366000845af43d6000803e806000811461004a573d6000f35b3d6000fd5b600080823b905060008111915050919050565b6000806040516020016100749061017a565b6040516020818303038152906040528051906020012090508091505090565b600061009d6100c6565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000806040516020016100d89061020c565b6040516020818303038152906040528051906020012090508091505090565b600082825260208201905092915050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e4f776e6160008201527f626c650000000000000000000000000000000000000000000000000000000000602082015250565b60006101646023836100f7565b915061016f82610108565b604082019050919050565b6000602082019050818103600083015261019381610157565b9050919050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e50726f7860008201527f7900000000000000000000000000000000000000000000000000000000000000602082015250565b60006101f66021836100f7565b91506102018261019a565b604082019050919050565b60006020820190508181036000830152610225816101e9565b905091905056fea2646970667358221220800da1f73cebd5e4afa07496d9bca6b6c4f526bdd3f4014ec15c70fe3a1c441364736f6c63430008110033","storage":{"0x5a648c35a2f5512218b4683cf10e03f5b7c9dc7346e1bf77d304ae97f60f592b":"0x108f53faf774d7c4c56f5bce9ca6e605ce8aeadd","0x5c7865864a2a990d80b5bb5c40e7b73a029960dc711fbb56120dfab976e92ea3":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"}},"0x90f79bf6eb2c4f870365e785982e1f101e93b906":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x976ea74026e726554db657fa54763abd0c3a0aa9":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x9965507d1a55bcc2695c58ba16fb37d819b0a4dc":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0xa0ee7a142d267c1f36714e4a8f75612f20a79720":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0xc67e2bd3108604cf0168c0e5ef9cd6d78b9bb14b":{"nonce":1,"balance":"0x21e19c6edb7e2445f20","code":"0x","storage":{}},"0xeb045d78d273107348b0300c01d29b7552d622ab":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266":{"nonce":1,"balance":"0x21e19e08b86820a43ea","code":"0x","storage":{}}},"best_block_number":"0x5","blocks":[{"header":{"parentHash":"0x08abe6e453727534d8dd708843a7522b7d500338bdfe2402ca105dcdb05eebe9","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xcd346446ed010523161f40a5f2b512def549bfb79e165b4354488738416481f2","transactionsRoot":"0xb3a4689832e0b599260ae70362ffcf224b60571b35ff8836904a3d81e2675d66","receiptsRoot":"0x2d13fdc120ab90536fed583939de7fb68b64926a306c1f629593ca9c2c93b198","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x1","gasLimit":"0x1c9c380","gasUsed":"0x3ea90d","timestamp":"0x66b200ca","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x2e0b6260","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[{"EIP1559":{"chainId":"0x343a","nonce":"0x0","gas":"0x3ea90d","maxFeePerGas":"0x83215600","maxPriorityFeePerGas":"0x3b9aca00","value":"0x0","accessList":[],"input":"0x608060405234801561001057600080fd5b5061494f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80632a952b2d1461005c57806350c946fe14610085578063625ca21c146100a5578063daa250be146100c6578063deba1b98146100d9575b600080fd5b61006f61006a366004613a63565b6100ec565b60405161007c9190613a7c565b60405180910390f35b610098610093366004613a63565b61011c565b60405161007c9190613b21565b6100b86100b3366004613c92565b610276565b60405190815260200161007c565b61006f6100d4366004613d5f565b6102bb565b6100b86100e7366004613c92565b6102d6565b6100f46139e4565b6040805160008082526020820190815281830190925261011691849190610310565b92915050565b6101416040805160608101909152806000815260200160608152602001606081525090565b61014a82610ab6565b60408051606081019091528154909190829060ff16600981111561017057610170613aa7565b600981111561018157610181613aa7565b815260200160018201805461019590613dc2565b80601f01602080910402602001604051908101604052809291908181526020018280546101c190613dc2565b801561020e5780601f106101e35761010080835404028352916020019161020e565b820191906000526020600020905b8154815290600101906020018083116101f157829003601f168201915b505050505081526020016002820180548060200260200160405190810160405280929190818152602001828054801561026657602002820191906000526020600020905b815481526020019060010190808311610252575b5050505050815250509050919050565b600080604051806060016040528086600981111561029657610296613aa7565b81526020018581526020018481525090506102b081610ac1565b9150505b9392505050565b6102c36139e4565b6102ce848484610310565b949350505050565b60008060405180606001604052808660098111156102f6576102f6613aa7565b81526020018581526020018481525090506102b081610acc565b6103186139e4565b81518351146103a05760408051634bab873760e11b81526004810191909152600d60448201526c72756e74696d6556616c75657360981b606482015260806024820152602260848201527f6d7573742062652073616d65206c656e6774682061732072756e74696d654b6560a482015261797360f01b60c482015260e4015b60405180910390fd5b60006103ab85610c26565b805490915060ff1660018160098111156103c7576103c7613aa7565b036104755761046c6103da838787610c84565b8360010180546103e990613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461041590613dc2565b80156104625780601f1061043757610100808354040283529160200191610462565b820191906000526020600020905b81548152906001019060200180831161044557829003601f168201915b5050505050610d46565b925050506102b4565b600281600981111561048957610489613aa7565b036105305761046c61049c838787610c84565b8360010180546104ab90613dc2565b80601f01602080910402602001604051908101604052809291908181526020018280546104d790613dc2565b80156105245780601f106104f957610100808354040283529160200191610524565b820191906000526020600020905b81548152906001019060200180831161050757829003601f168201915b50505050508787610ebb565b600381600981111561054457610544613aa7565b036105de5761046c82600101805461055b90613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461058790613dc2565b80156105d45780601f106105a9576101008083540402835291602001916105d4565b820191906000526020600020905b8154815290600101906020018083116105b757829003601f168201915b5050505050610f59565b60048160098111156105f2576105f2613aa7565b0361068c5761046c82600101805461060990613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461063590613dc2565b80156106825780601f1061065757610100808354040283529160200191610682565b820191906000526020600020905b81548152906001019060200180831161066557829003601f168201915b5050505050611087565b60058160098111156106a0576106a0613aa7565b0361073a5761046c8260010180546106b790613dc2565b80601f01602080910402602001604051908101604052809291908181526020018280546106e390613dc2565b80156107305780601f1061070557610100808354040283529160200191610730565b820191906000526020600020905b81548152906001019060200180831161071357829003601f168201915b505050505061131e565b600981600981111561074e5761074e613aa7565b036107ea5761046c82600101805461076590613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461079190613dc2565b80156107de5780601f106107b3576101008083540402835291602001916107de565b820191906000526020600020905b8154815290600101906020018083116107c157829003601f168201915b505050505086866114b5565b60068160098111156107fe576107fe613aa7565b036108a35761046c610811838787610c84565b83600101805461082090613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461084c90613dc2565b80156108995780601f1061086e57610100808354040283529160200191610899565b820191906000526020600020905b81548152906001019060200180831161087c57829003601f168201915b50505050506115c7565b60078160098111156108b7576108b7613aa7565b036109ec576040805160608101909152825461046c91908490829060ff1660098111156108e6576108e6613aa7565b60098111156108f7576108f7613aa7565b815260200160018201805461090b90613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461093790613dc2565b80156109845780601f1061095957610100808354040283529160200191610984565b820191906000526020600020905b81548152906001019060200180831161096757829003601f168201915b50505050508152602001600282018054806020026020016040519081016040528092919081815260200182805480156109dc57602002820191906000526020600020905b8154815260200190600101908083116109c8575b5050505050815250508686611728565b6008816009811115610a0057610a00613aa7565b03610a9a5761046c826001018054610a1790613dc2565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4390613dc2565b8015610a905780601f10610a6557610100808354040283529160200191610a90565b820191906000526020600020905b815481529060010190602001808311610a7357829003601f168201915b50505050506118a5565b6040516323a9bbc960e01b815260048101879052602401610397565b600061011682610c26565b6000610116826118ea565b6000610ad782610ac1565b9050610ae28161192a565b15610b35577fcb64985827770858ec421ad26da7e558c757541643036ce44d6b4eb9e8e5dc5e81836000015184602001518560400151604051610b289493929190613e32565b60405180910390a1919050565b610b3e82611a8c565b610b5d578160405163382bbbc960e11b81526004016103979190613b21565b60005b826040015151811015610bd957610b9383604001518281518110610b8657610b86613e6a565b602002602001015161192a565b610bd15782604001518181518110610bad57610bad613e6a565b6020026020010151604051632f19f96160e11b815260040161039791815260200190565b600101610b60565b50610be382611c31565b8351602085015160408087015190519395507fcb64985827770858ec421ad26da7e558c757541643036ce44d6b4eb9e8e5dc5e9450610b28938693929190613e32565b604080516020808201839052606082018190527f696f2e73796e7468657469782e6f7261636c652d6d616e616765722e4e6f6465608080840191909152828401949094528251808303909401845260a0909101909152815191012090565b600283015460609067ffffffffffffffff811115610ca457610ca4613b9a565b604051908082528060200260200182016040528015610cdd57816020015b610cca6139e4565b815260200190600190039081610cc25790505b50905060005b6002850154811015610d3e57610d19856002018281548110610d0757610d07613e6a565b90600052602060002001548585610310565b828281518110610d2b57610d2b613e6a565b6020908102919091010152600101610ce3565b509392505050565b610d4e6139e4565b600082806020019051810190610d649190613e80565b90506000816008811115610d7a57610d7a613aa7565b03610d9057610d8884611ca5565b915050610116565b6001816008811115610da457610da4613aa7565b03610db257610d8884611d0d565b6002816008811115610dc657610dc6613aa7565b03610dd457610d8884611d90565b6003816008811115610de857610de8613aa7565b03610df657610d8884611e13565b6004816008811115610e0a57610e0a613aa7565b03610e1857610d8884611ec9565b6005816008811115610e2c57610e2c613aa7565b03610e3a57610d8884612009565b6006816008811115610e4e57610e4e613aa7565b03610e5c57610d88846120e4565b6007816008811115610e7057610e70613aa7565b03610e7e57610d888461220c565b6008816008811115610e9257610e92613aa7565b03610ea057610d88846122ce565b80604051631be413d360e11b81526004016103979190613ea1565b610ec36139e4565b600084806020019051810190610ed99190613ed3565b604051631ecba7c360e31b81529091506001600160a01b0382169063f65d3e1890610f0e908990899089908990600401613ef0565b608060405180830381865afa158015610f2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4f9190613f91565b9695505050505050565b610f616139e4565b600080600084806020019051810190610f7a9190613fe8565b92509250925060008390506000806000836001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610fc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fec9190614041565b509350509250925060008660001461100f5761100a8585858a6123c7565b611011565b825b905060128660ff161161103b5761103661102f60ff881660126140a7565b82906124c2565b611053565b61105361104c601260ff89166140a7565b82906124dc565b9050604051806080016040528082815260200183815260200160008152602001600081525098505050505050505050919050565b61108f6139e4565b600080600080600080878060200190518101906110ac91906140ba565b604080516002808252606082018352979d50959b50939950919750955093506000929060208301908036833701905050905081816000815181106110f2576110f2613e6a565b602002602001019063ffffffff16908163ffffffff168152505060008160018151811061112157611121613e6a565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0385169063883bdbfd90611165908590600401614143565b600060405180830381865afa158015611182573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111aa91908101906141f5565b5090506000816000815181106111c2576111c2613e6a565b6020026020010151826001815181106111dd576111dd613e6a565b60200260200101516111ef91906142c1565b9050600061121761120563ffffffff87166124f6565b61120f9084614304565b60060b61252d565b905060008260060b12801561124c575061123b63ffffffff8616612569565b612569565b8260060b6112499190614342565b15155b1561125f578061125b81614356565b9150505b600061126d6012600a61445d565b9050600061128061123684848f8f612593565b905060006112908a60ff16612569565b61129c8c60ff16612569565b6112a6919061446c565b905060008082136112d1576112cc6112c56112c084614493565b612686565b84906124dc565b6112e4565b6112e46112dd83612686565b84906124c2565b905060405180608001604052808281526020014281526020016000815260200160008152509e505050505050505050505050505050919050565b6113266139e4565b60008060008480602001905181019061133f91906144bf565b91945092509050826000826113bc576040516396834ad360e01b8152600481018590526001600160a01b038316906396834ad390602401608060405180830381865afa158015611393573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b791906144f5565b611425565b604051639474f45b60e01b8152600481018590526001600160a01b03831690639474f45b90602401608060405180830381865afa158015611401573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142591906144f5565b90506000816040015160030b601261143d919061456f565b90506000808213611467576114626114576112c084614493565b845160070b906124dc565b61147e565b61147e61147383612686565b845160070b906124c2565b9050604051806080016040528082815260200184606001518152602001600081526020016000815250975050505050505050919050565b6114bd6139e4565b6000806000868060200190518101906114d69190614597565b92509250925060005b8651811015611545578681815181106114fa576114fa613e6a565b6020026020010151717374616c656e657373546f6c6572616e636560701b0361153d5785818151811061152f5761152f613e6a565b602002602001015160001c91505b6001016114df565b5060408051600180825281830190925260009160208083019080368337019050509050828160008151811061157c5761157c613e6a565b602002602001018181525050836001838360405160200161159f939291906145ce565b60408051601f198184030181529082905263cf2cabdf60e01b82526103979291600401614603565b6115cf6139e4565b6000828060200190518101906115e59190614627565b90506000846000815181106115fc576115fc613e6a565b602002602001015160000151905060008560018151811061161f5761161f613e6a565b6020026020010151600001519050808214611702576000611653601261164d611648858761446c565b6126a9565b906124c2565b905082158061167b5750611666836126a9565b6116709082614640565b61167985612569565b125b15611700576002875111156116b0578660028151811061169d5761169d613e6a565b6020026020010151945050505050610116565b826000036116d15760405163014cc07160e01b815260040160405180910390fd5b6116da836126a9565b6116e49082614640565b60405163dcac091960e01b815260040161039791815260200190565b505b8560008151811061171557611715613e6a565b6020026020010151935050505092915050565b6117306139e4565b6000846020015180602001905181019061174a9190614627565b905060005b84518110156117bc5784818151811061176a5761176a613e6a565b6020026020010151717374616c656e657373546f6c6572616e636560701b036117b4576117ad8482815181106117a2576117a2613e6a565b602002602001015190565b91506117bc565b60010161174f565b50600085604001516000815181106117d6576117d6613e6a565b6020026020010151905060006117ed828787610310565b60208101519091506117ff84426140a7565b1161180e5792506102b4915050565b86604001515160010361187157866040015160008151811061183257611832613e6a565b602002602001015181600001518260200151604051631808066560e21b8152600401610397939291909283526020830191909152604082015260600190565b61189a876040015160018151811061188b5761188b613e6a565b60200260200101518787610310565b979650505050505050565b6118ad6139e4565b6040518060800160405280838060200190518101906118cc9190614627565b81526020014281526020016000815260200160008152509050919050565b600081600001518260200151836040015160405160200161190d9392919061466e565b604051602081830303815290604052805190602001209050919050565b60008061193683610c26565b60408051606081019091528154909190829060ff16600981111561195c5761195c613aa7565b600981111561196d5761196d613aa7565b815260200160018201805461198190613dc2565b80601f01602080910402602001604051908101604052809291908181526020018280546119ad90613dc2565b80156119fa5780601f106119cf576101008083540402835291602001916119fa565b820191906000526020600020905b8154815290600101906020018083116119dd57829003601f168201915b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015611a5257602002820191906000526020600020905b815481526020019060010190808311611a3e575b505050505081525050905060006009811115611a7057611a70613aa7565b81516009811115611a8357611a83613aa7565b14159392505050565b6000600182516009811115611aa357611aa3613aa7565b1480611ac15750600682516009811115611abf57611abf613aa7565b145b80611ade5750600782516009811115611adc57611adc613aa7565b145b15611aee57611aec826126c1565b505b600182516009811115611b0357611b03613aa7565b03611b11576101168261284a565b600282516009811115611b2657611b26613aa7565b03611b3457610116826128a5565b600382516009811115611b4957611b49613aa7565b03611b575761011682612973565b600482516009811115611b6c57611b6c613aa7565b03611b7a5761011682612aae565b600582516009811115611b8f57611b8f613aa7565b03611b9d5761011682612e92565b600982516009811115611bb257611bb2613aa7565b03611bc05761011682612fcb565b600682516009811115611bd557611bd5613aa7565b03611be3576101168261300e565b600782516009811115611bf857611bf8613aa7565b03611c065761011682613052565b600882516009811115611c1b57611c1b613aa7565b03611c295761011682613078565b506000919050565b600080611c3d836118ea565b9050611c4881610c26565b8351815491935090839060ff19166001836009811115611c6a57611c6a613aa7565b021790555060208301516001830190611c8390826146ed565b5060408301518051611c9f916002850191602090910190613a0c565b50915091565b611cad6139e4565b60005b8251811015611d07578160200151838281518110611cd057611cd0613e6a565b6020026020010151602001511115611cff57828181518110611cf457611cf4613e6a565b602002602001015191505b600101611cb0565b50919050565b611d156139e4565b81600081518110611d2857611d28613e6a565b602002602001015190506000600190505b8251811015611d07578160000151838281518110611d5957611d59613e6a565b6020026020010151600001511215611d8857828181518110611d7d57611d7d613e6a565b602002602001015191505b600101611d39565b611d986139e4565b81600081518110611dab57611dab613e6a565b602002602001015190506000600190505b8251811015611d07578160000151838281518110611ddc57611ddc613e6a565b6020026020010151600001511315611e0b57828181518110611e0057611e00613e6a565b602002602001015191505b600101611dbc565b611e1b6139e4565b60005b8251811015611e9557828181518110611e3957611e39613e6a565b60200260200101516000015182600001818151611e56919061456f565b9052508251839082908110611e6d57611e6d613e6a565b60200260200101516020015182602001818151611e8a91906147ad565b905250600101611e1e565b50611ea08251612569565b8151611eac9190614640565b815281516020820151611ebf91906147c0565b6020820152919050565b611ed16139e4565b611eed826000611ee86001865161123691906140a7565b6130a4565b60028251611efb91906147d4565b600003611fd65760408051600280825260608201909252600091816020015b611f226139e4565b815260200190600190039081611f1a57905050905082600160028551611f4891906147c0565b611f5291906140a7565b81518110611f6257611f62613e6a565b602002602001015181600081518110611f7d57611f7d613e6a565b60200260200101819052508260028451611f9791906147c0565b81518110611fa757611fa7613e6a565b602002602001015181600181518110611fc257611fc2613e6a565b60200260200101819052506102b481611e13565b8160028351611fe591906147c0565b81518110611ff557611ff5613e6a565b60200260200101519050919050565b919050565b6120116139e4565b8160008151811061202457612024613e6a565b60209081029190910101515181528151829060009061204557612045613e6a565b6020908102919091018101518101519082015260015b82518110156120d25782818151811061207657612076613e6a565b6020026020010151600001518260000181815161209391906147e8565b90525082518390829081106120aa576120aa613e6a565b602002602001015160200151826020018181516120c791906147ad565b90525060010161205b565b5081518160200151611ebf91906147c0565b6120ec6139e4565b816000815181106120ff576120ff613e6a565b60209081029190910101515181528151829060009061212057612120613e6a565b6020908102919091018101518101519082015260015b82518110156120d25782818151811061215157612151613e6a565b60200260200101516000015160000361219e5782818151811061217657612176613e6a565b6020026020010151600001516040516338ee04a760e01b815260040161039791815260200190565b8281815181106121b0576121b0613e6a565b602002602001015160000151826000018181516121cd9190614640565b90525082518390829081106121e4576121e4613e6a565b6020026020010151602001518260200181815161220191906147ad565b905250600101612136565b6122146139e4565b8160008151811061222757612227613e6a565b60209081029190910101515181528151829060009061224857612248613e6a565b6020908102919091018101518101519082015260015b82518110156120d25761229083828151811061227c5761227c613e6a565b602090810291909101015151835190613264565b825282518390829081106122a6576122a6613e6a565b602002602001015160200151826020018181516122c391906147ad565b90525060010161225e565b6122d66139e4565b816000815181106122e9576122e9613e6a565b60209081029190910101515181528151829060009061230a5761230a613e6a565b6020908102919091018101518101519082015260015b82518110156120d25782818151811061233b5761233b613e6a565b6020026020010151600001516000036123605782818151811061217657612176613e6a565b61238983828151811061237557612375613e6a565b602090810291909101015151835190613283565b8252825183908290811061239f5761239f613e6a565b602002602001015160200151826020018181516123bc91906147ad565b905250600101612320565b6000826001826123d785426140a7565b90505b69ffffffffffffffffffff8716156124a3576001600160a01b038816639a6fc8f561240489614818565b6040516001600160e01b031960e084901b16815269ffffffffffffffffffff8216600482015290995060240160a060405180830381865afa925050508015612469575060408051601f3d908101601f1916820190925261246691810190614041565b60015b156124a357858210156124805750505050506124a3565b61248a848961456f565b97508661249681614834565b97505050505050506123da565b6124ac82612569565b6124b69084614640565b98975050505050505050565b60006124d261123683600a61484d565b6102b490846147e8565b60006124ec61123683600a61484d565b6102b49084614640565b6000667fffffffffffff66ffffffffffffff83161115612529576040516329d2678160e21b815260040160405180910390fd5b5090565b6000627fffff19600683900b128061254b5750627fffff600683900b135b1561252957604051630d962f7960e21b815260040160405180910390fd5b60006001600160ff1b038211156125295760405163677c430560e11b815260040160405180910390fd5b60008061259f86613298565b90506fffffffffffffffffffffffffffffffff6001600160a01b0382161161261c5760006125d66001600160a01b03831680614859565b9050836001600160a01b0316856001600160a01b03161061260557612600600160c01b87836136cd565b612614565b6126148187600160c01b6136cd565b92505061267d565b600061263b6001600160a01b03831680680100000000000000006136cd565b9050836001600160a01b0316856001600160a01b03161061266a57612665600160801b87836136cd565b612679565b6126798187600160801b6136cd565b9250505b50949350505050565b6000808212156125295760405163029f024d60e31b815260040160405180910390fd5b600080821215612529576126bc82614493565b610116565b6000805b8260400151518110156128415760006126fa846040015183815181106126ed576126ed613e6a565b6020026020010151610ab6565b60408051606081019091528154909190829060ff16600981111561272057612720613aa7565b600981111561273157612731613aa7565b815260200160018201805461274590613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461277190613dc2565b80156127be5780601f10612793576101008083540402835291602001916127be565b820191906000526020600020905b8154815290600101906020018083116127a157829003601f168201915b505050505081526020016002820180548060200260200160405190810160405280929190818152602001828054801561281657602002820191906000526020600020905b815481526020019060010190808311612802575b505050505081525050905061282a81611a8c565b612838575060009392505050565b506001016126c5565b50600192915050565b60006002826040015151101561286257506000919050565b81602001515160201461287757506000919050565b600082602001518060200190518101906128919190614627565b905060088111156128415750600092915050565b6000602082602001515110156128bd57506000919050565b600082602001518060200190518101906128d79190613ed3565b90506128ea816306e7ea3960e21b6138e2565b6128f75750600092915050565b604051633b70a5bf60e21b81526001600160a01b0382169063edc296fc90612923908690600401613b21565b6020604051808303816000875af1158015612942573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129669190614870565b6128415750600092915050565b6040810151516000901561298957506000919050565b81602001515160601461299e57506000919050565b60008083602001518060200190518101906129b99190613fe8565b92505091506000829050806001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015612a01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a259190614041565b5050505050806001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8c919061488b565b60ff168260ff1614612aa357506000949350505050565b506001949350505050565b60408101515160009015612ac457506000919050565b81602001515160c014612ad957506000919050565b6000806000806000808760200151806020019051810190612afa91906140ba565b9550955095509550955095508360ff16866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6c919061488b565b60ff1614612b8257506000979650505050505050565b8260ff16856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be8919061488b565b60ff1614612bfe57506000979650505050505050565b6000826001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c629190613ed3565b90506000836001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ca4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cc89190613ed3565b9050876001600160a01b0316826001600160a01b0316148015612cfc5750866001600160a01b0316816001600160a01b0316145b158015612d385750866001600160a01b0316826001600160a01b0316148015612d365750876001600160a01b0316816001600160a01b0316145b155b15612d4d575060009998505050505050505050565b60128660ff161180612d62575060128560ff16115b15612d77575060009998505050505050505050565b8263ffffffff16600003612d95575060009998505050505050505050565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110612dca57612dca613e6a565b602002602001019063ffffffff16908163ffffffff1681525050600081600181518110612df957612df9613e6a565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526001600160a01b0386169063883bdbfd90612e3a908490600401614143565b600060405180830381865afa158015612e57573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e7f91908101906141f5565b5060019c9b505050505050505050505050565b60408101515160009015612ea857506000919050565b816020015151606014612ebd57506000919050565b60008060008460200151806020019051810190612eda91906144bf565b919450925090508281612f55576040516396834ad360e01b8152600481018490526001600160a01b038216906396834ad390602401608060405180830381865afa158015612f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5091906144f5565b612fbe565b604051639474f45b60e01b8152600481018490526001600160a01b03821690639474f45b90602401608060405180830381865afa158015612f9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fbe91906144f5565b5060019695505050505050565b60408101515160009015612fe157506000919050565b816020015151606014612ff657506000919050565b8160200151806020019051810190612aa39190614597565b60008160400151516002148061302957508160400151516003145b61303557506000919050565b81602001515160201461304a57506000919050565b506001919050565b600081604001515160011480613029575081604001515160021461303557506000919050565b6040810151516000901561308e57506000919050565b6020826020015151101561304a57506000919050565b81818082036130b4575050505050565b6000856130da60026130c6888861446c565b6130d09190614640565b6112c0908861456f565b815181106130ea576130ea613e6a565b60200260200101516000015190505b818313613236575b808661310c85612686565b8151811061311c5761311c613e6a565b60200260200101516000015112156131405782613138816148a6565b935050613101565b8561314a83612686565b8151811061315a5761315a613e6a565b60200260200101516000015181121561317f5781613177816148be565b925050613140565b818313613231578561319083612686565b815181106131a0576131a0613e6a565b6020026020010151866131b285612686565b815181106131c2576131c2613e6a565b6020026020010151876131d486612686565b815181106131e4576131e4613e6a565b60200260200101886131f586612686565b8151811061320557613205613e6a565b602002602001018290528290525050828061321f906148a6565b935050818061322d906148be565b9250505b6130f9565b81851215613249576132498686846130a4565b8383121561325c5761325c8684866130a4565b505050505050565b6000670de0b6b3a764000061327983856147e8565b6102b49190614640565b600081613279670de0b6b3a7640000856147e8565b60008060008360020b126132b8576132b3600284900b612686565b6132c8565b6132c86112c0600285900b614493565b90506132e36112c06132dd620d89e7196148db565b60020b90565b8111156133165760405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606401610397565b60008160011660000361332d57600160801b61333f565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff169050600282161561337e576080613379826ffff97272373d413259a46990580e213a614859565b901c90505b60048216156133a85760806133a3826ffff2e50f5f656932ef12357cf3c7fdcc614859565b901c90505b60088216156133d25760806133cd826fffe5caca7e10e4e61c3624eaa0941cd0614859565b901c90505b60108216156133fc5760806133f7826fffcb9843d60f6159c9db58835c926644614859565b901c90505b6020821615613426576080613421826fff973b41fa98c081472e6896dfb254c0614859565b901c90505b604082161561345057608061344b826fff2ea16466c96a3843ec78b326b52861614859565b901c90505b608082161561347a576080613475826ffe5dee046a99a2a811c461f1969c3053614859565b901c90505b6101008216156134a55760806134a0826ffcbe86c7900a88aedcffc83b479aa3a4614859565b901c90505b6102008216156134d05760806134cb826ff987a7253ac413176f2b074cf7815e54614859565b901c90505b6104008216156134fb5760806134f6826ff3392b0822b70005940c7a398e4b70f3614859565b901c90505b610800821615613526576080613521826fe7159475a2c29b7443b29c7fa6e889d9614859565b901c90505b61100082161561355157608061354c826fd097f3bdfd2022b8845ad8f792aa5825614859565b901c90505b61200082161561357c576080613577826fa9f746462d870fdf8a65dc1f90e061e5614859565b901c90505b6140008216156135a75760806135a2826f70d869a156d2a1b890bb3df62baf32f7614859565b901c90505b6180008216156135d25760806135cd826f31be135f97d08fd981231505542fcfa6614859565b901c90505b620100008216156135fe5760806135f9826f09aa508b5b7a84e1c677de54f3e99bc9614859565b901c90505b62020000821615613629576080613624826e5d6af8dedb81196699c329225ee604614859565b901c90505b6204000082161561365357608061364e826d2216e584f5fa1ea926041bedfe98614859565b901c90505b6208000082161561367b576080613676826b048a170391f7dc42444e8fa2614859565b901c90505b60008460020b131561369657613693816000196147c0565b90505b6102ce6136a8640100000000836147d4565b156136b45760016136b7565b60005b6136c89060ff16602084901c6147ad565b6139ba565b6000808060001985870985870292508281108382030391505080600003613749576000841161373e5760405162461bcd60e51b815260206004820152601960248201527f48616e646c65206e6f6e2d6f766572666c6f77206361736573000000000000006044820152606401610397565b5082900490506102b4565b8084116137985760405162461bcd60e51b815260206004820152601960248201527f70726576656e74732064656e6f6d696e61746f72203d3d2030000000000000006044820152606401610397565b60008486880980840393811190920391905060006137d06137b887612569565b6137c188612569565b6137ca90614493565b16612686565b9586900495938490049360008190030460010190506137ef8184614859565b909317926000613800876003614859565b600218905061380f8188614859565b61381a9060026140a7565b6138249082614859565b90506138308188614859565b61383b9060026140a7565b6138459082614859565b90506138518188614859565b61385c9060026140a7565b6138669082614859565b90506138728188614859565b61387d9060026140a7565b6138879082614859565b90506138938188614859565b61389e9060026140a7565b6138a89082614859565b90506138b48188614859565b6138bf9060026140a7565b6138c99082614859565b90506138d58186614859565b9998505050505050505050565b604080516001600160e01b0319831660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166301ffc9a760e01b1790529051600091829182916001600160a01b0387169161394391906148fd565b6000604051808303816000865af19150503d8060008114613980576040519150601f19603f3d011682016040523d82523d6000602084013e613985565b606091505b50915091508161399a57600092505050610116565b80516000036139ae57600092505050610116565b60200151949350505050565b60006001600160a01b038211156125295760405163dccde8ed60e01b815260040160405180910390fd5b6040518060800160405280600081526020016000815260200160008152602001600081525090565b828054828255906000526020600020908101928215613a47579160200282015b82811115613a47578251825591602001919060010190613a2c565b506125299291505b808211156125295760008155600101613a4f565b600060208284031215613a7557600080fd5b5035919050565b8151815260208083015190820152604080830151908201526060808301519082015260808101610116565b634e487b7160e01b600052602160045260246000fd5b600a8110613acd57613acd613aa7565b9052565b60005b83811015613aec578181015183820152602001613ad4565b50506000910152565b60008151808452613b0d816020860160208601613ad1565b601f01601f19169290920160200192915050565b60006020808352613b358184018551613abd565b8084015160606040850152613b4d6080850182613af5565b6040860151858203601f19016060870152805180835290840192506000918401905b80831015613b8f5783518252928401926001929092019190840190613b6f565b509695505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613bd357613bd3613b9a565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613c0257613c02613b9a565b604052919050565b600067ffffffffffffffff821115613c2457613c24613b9a565b5060051b60200190565b600082601f830112613c3f57600080fd5b81356020613c54613c4f83613c0a565b613bd9565b8083825260208201915060208460051b870101935086841115613c7657600080fd5b602086015b84811015613b8f5780358352918301918301613c7b565b600080600060608486031215613ca757600080fd5b8335600a8110613cb657600080fd5b925060208481013567ffffffffffffffff80821115613cd457600080fd5b818701915087601f830112613ce857600080fd5b813581811115613cfa57613cfa613b9a565b613d0c601f8201601f19168501613bd9565b8181528985838601011115613d2057600080fd5b818585018683013760009181019094015291935060408601359180831115613d4757600080fd5b5050613d5586828701613c2e565b9150509250925092565b600080600060608486031215613d7457600080fd5b83359250602084013567ffffffffffffffff80821115613d9357600080fd5b613d9f87838801613c2e565b93506040860135915080821115613db557600080fd5b50613d5586828701613c2e565b600181811c90821680613dd657607f821691505b602082108103611d0757634e487b7160e01b600052602260045260246000fd5b60008151808452602080850194506020840160005b83811015613e2757815187529582019590820190600101613e0b565b509495945050505050565b848152613e426020820185613abd565b608060408201526000613e586080830185613af5565b828103606084015261189a8185613df6565b634e487b7160e01b600052603260045260246000fd5b600060208284031215613e9257600080fd5b8151600981106102b457600080fd5b6020810160098310613eb557613eb5613aa7565b91905290565b6001600160a01b0381168114613ed057600080fd5b50565b600060208284031215613ee557600080fd5b81516102b481613ebb565b608080825285518282018190526000919060209060a0850190828a01855b82811015613f5257613f42848351805182526020810151602083015260408101516040830152606081015160608301525050565b9285019290840190600101613f0e565b5050508481036020860152613f678189613af5565b925050508281036040840152613f7d8186613df6565b9050828103606084015261189a8185613df6565b600060808284031215613fa357600080fd5b613fab613bb0565b825181526020830151602082015260408301516040820152606083015160608201528091505092915050565b805160ff8116811461200457600080fd5b600080600060608486031215613ffd57600080fd5b835161400881613ebb565b6020850151909350915061401e60408501613fd7565b90509250925092565b805169ffffffffffffffffffff8116811461200457600080fd5b600080600080600060a0868803121561405957600080fd5b61406286614027565b945060208601519350604086015192506060860151915061408560808701614027565b90509295509295909350565b634e487b7160e01b600052601160045260246000fd5b8181038181111561011657610116614091565b60008060008060008060c087890312156140d357600080fd5b86516140de81613ebb565b60208801519096506140ef81613ebb565b94506140fd60408801613fd7565b935061410b60608801613fd7565b9250608087015161411b81613ebb565b60a088015190925063ffffffff8116811461413557600080fd5b809150509295509295509295565b6020808252825182820181905260009190848201906040850190845b8181101561418157835163ffffffff168352928401929184019160010161415f565b50909695505050505050565b600082601f83011261419e57600080fd5b815160206141ae613c4f83613c0a565b8083825260208201915060208460051b8701019350868411156141d057600080fd5b602086015b84811015613b8f5780516141e881613ebb565b83529183019183016141d5565b6000806040838503121561420857600080fd5b825167ffffffffffffffff8082111561422057600080fd5b818501915085601f83011261423457600080fd5b81516020614244613c4f83613c0a565b82815260059290921b8401810191818101908984111561426357600080fd5b948201945b838610156142915785518060060b81146142825760008081fd5b82529482019490820190614268565b918801519196509093505050808211156142aa57600080fd5b506142b78582860161418d565b9150509250929050565b600682810b9082900b03667fffffffffffff198112667fffffffffffff8213171561011657610116614091565b634e487b7160e01b600052601260045260246000fd5b60008160060b8360060b8061431b5761431b6142ee565b667fffffffffffff1982146000198214161561433957614339614091565b90059392505050565b600082614351576143516142ee565b500790565b60008160020b627fffff19810361436f5761436f614091565b6000190192915050565b600181815b808511156143b457816000190482111561439a5761439a614091565b808516156143a757918102915b93841c939080029061437e565b509250929050565b6000826143cb57506001610116565b816143d857506000610116565b81600181146143ee57600281146143f857614414565b6001915050610116565b60ff84111561440957614409614091565b50506001821b610116565b5060208310610133831016604e8410600b8410161715614437575081810a610116565b6144418383614379565b806000190482111561445557614455614091565b029392505050565b60006102b460ff8416836143bc565b818103600083128015838313168383128216171561448c5761448c614091565b5092915050565b6000600160ff1b82016144a8576144a8614091565b5060000390565b8051801515811461200457600080fd5b6000806000606084860312156144d457600080fd5b83516144df81613ebb565b6020850151909350915061401e604085016144af565b60006080828403121561450757600080fd5b61450f613bb0565b82518060070b811461452057600080fd5b8152602083015167ffffffffffffffff8116811461453d57600080fd5b60208201526040830151600381900b811461455757600080fd5b60408201526060928301519281019290925250919050565b808201828112600083128015821682158216171561458f5761458f614091565b505092915050565b6000806000606084860312156145ac57600080fd5b83516145b781613ebb565b602085015160409095015190969495509392505050565b60ff8416815267ffffffffffffffff831660208201526060604082015260006145fa6060830184613df6565b95945050505050565b6001600160a01b03831681526040602082018190526000906102ce90830184613af5565b60006020828403121561463957600080fd5b5051919050565b60008261464f5761464f6142ee565b600160ff1b82146000198414161561466957614669614091565b500590565b6146788185613abd565b60606020820152600061468e6060830185613af5565b8281036040840152610f4f8185613df6565b601f8211156146e8576000816000526020600020601f850160051c810160208610156146c95750805b601f850160051c820191505b8181101561325c578281556001016146d5565b505050565b815167ffffffffffffffff81111561470757614707613b9a565b61471b816147158454613dc2565b846146a0565b602080601f83116001811461475057600084156147385750858301515b600019600386901b1c1916600185901b17855561325c565b600085815260208120601f198616915b8281101561477f57888601518255948401946001909101908401614760565b508582101561479d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8082018082111561011657610116614091565b6000826147cf576147cf6142ee565b500490565b6000826147e3576147e36142ee565b500690565b80820260008212600160ff1b8414161561480457614804614091565b818105831482151761011657610116614091565b600069ffffffffffffffffffff82168061436f5761436f614091565b60006001820161484657614846614091565b5060010190565b60006102b483836143bc565b808202811582820484141761011657610116614091565b60006020828403121561488257600080fd5b6102b4826144af565b60006020828403121561489d57600080fd5b6102b482613fd7565b60006001600160ff1b01820161484657614846614091565b6000600160ff1b82016148d3576148d3614091565b506000190190565b60008160020b627fffff1981036148f4576148f4614091565b60000392915050565b6000825161490f818460208701613ad1565b919091019291505056fea264697066735822122074f32fef384fdc296b0859f1c1f941c8e736c6cb972aa9e2b894956ebd6a80b364736f6c63430008160033","r":"0x1","s":"0x1","yParity":"0x0","hash":"0xbc73db80bf4b8784ba10a8910a0b7ef85f6846d102b41dd990969ea205335354"}}],"ommers":[]},{"header":{"parentHash":"0x026ae0c6ae91f186a9befa1ac8be30eea35e30e77de51a731085221e5cd39209","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xb6003e7ba07a15a9e35f63daa484728ec4ceeded0c4d10ac1b04e9552d412b3c","transactionsRoot":"0x6e4969a136061ca7a390d12830d47a151585325a8d396819fb2b958ff85e9f8f","receiptsRoot":"0xc3e81df67d3e2a6c8345a954ef250cfcc41abcc2292a5aa263071124533fc9ad","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x3","gasLimit":"0x1c9c380","gasUsed":"0x3c0f6","timestamp":"0x66b200ce","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x18993a68","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[{"EIP1559":{"chainId":"0x343a","nonce":"0x0","gas":"0x3c0f6","maxFeePerGas":"0x5d4285cd","maxPriorityFeePerGas":"0x3b9aca00","value":"0x0","accessList":[],"input":"0x608060405234801561001057600080fd5b50610380806100206000396000f3fe6080604052600080357fffffffff0000000000000000000000000000000000000000000000000000000016905060008160e01c610251565b60006379ba509782101561015e5781631627540c811461009857632a952b2d81146100b457633659cfe681146100d0576350c946fe81146100ec576353a47bb781146101085763625ca21c81146101245763718fe928811461014057610158565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc9150610158565b738138ef7cf908021d117e542120b7a390650161079150610158565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc9150610158565b738138ef7cf908021d117e542120b7a390650161079150610158565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc9150610158565b738138ef7cf908021d117e542120b7a390650161079150610158565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc91505b5061024c565b816379ba509781146101a657638da5cb5b81146101c25763aaf10f4281146101de5763c7f62cda81146101fa5763daa250be81146102165763deba1b9881146102325761024a565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc915061024a565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc915061024a565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc915061024a565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc915061024a565b738138ef7cf908021d117e542120b7a39065016107915061024a565b738138ef7cf908021d117e542120b7a3906501610791505b505b919050565b61025a81610037565b915050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036102ce57816040517fc2a825f50000000000000000000000000000000000000000000000000000000081526004016102c5919061032f565b60405180910390fd5b3660008037600080366000845af43d6000803e80600081146102ef573d6000f35b3d6000fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610329816102f4565b82525050565b60006020820190506103446000830184610320565b9291505056fea264697066735822122017a4b7fdaaab3897a7b47abaed8d2ee92d558883d3bb2a8454f9601b2ab2c3db64736f6c63430008150033","r":"0x1","s":"0x1","yParity":"0x0","hash":"0x2476e039803622aeb040f924f04c493f559aed3d6c9372ab405cb33c8c695328"}}],"ommers":[]},{"header":{"parentHash":"0x3d22100ac0ee8d5cde334f7f926191a861b0648971ebc179547df28a0224c6d0","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x9511d4711e5c30a72b0bff38a261daa75dcc5ba8b772d970a5c742244b4c861b","transactionsRoot":"0xba5fff578d3d6c2cd63acbe9bca353eaa6fe22a5c408956eff49106e0a96c507","receiptsRoot":"0xbae111f01cb07677e3a8c5031546138407c01bc964d3493d732dc4edf47d36d3","logsBloom":"0x00000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000020000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000001000000000000000000000400000001000010000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x5","gasLimit":"0x1c9c380","gasUsed":"0xcae7","timestamp":"0x66b200cb","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x12e09c7a","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[{"EIP1559":{"chainId":"0x343a","nonce":"0x0","gas":"0xcc4d","maxFeePerGas":"0x557e5ec4","maxPriorityFeePerGas":"0x3b9aca00","to":"0x83a0444b93927c3afcbe46e522280390f748e171","value":"0x0","accessList":[],"input":"0x3659cfe6000000000000000000000000108f53faf774d7c4c56f5bce9ca6e605ce8aeadd","r":"0x1","s":"0x1","yParity":"0x0","hash":"0xf88e7b19ee347145c257e0cf7ac4ecc2bae83ca79d7edaa231e71d3213aeb151"}}],"ommers":[]},{"header":{"parentHash":"0x08abe6e453727534d8dd708843a7522b7d500338bdfe2402ca105dcdb05eebe9","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x9c8eaf493f8b4edce2ba1647343eadcc0989cf461e712c0a6253ff2ca1842bb7","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","receiptsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x1","gasLimit":"0x1c9c380","gasUsed":"0x0","timestamp":"0x66b200ca","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x3b9aca00","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[],"ommers":[]},{"header":{"parentHash":"0xdd07c07470e1deff3749831f0f1ad8d4b6e35505e83b3c6ea14181716197cd8a","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x29aa352e71b139e83b397bdd3dcf9b65d74770edaf3a9624d0dbc4f96f868680","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","receiptsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x2","gasLimit":"0x1c9c380","gasUsed":"0x0","timestamp":"0x66b200cb","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x24a1ab52","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[],"ommers":[]},{"header":{"parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","receiptsRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x0","gasLimit":"0x1c9c380","gasUsed":"0x0","timestamp":"0x66b200c9","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x3b9aca00","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[],"ommers":[]},{"header":{"parentHash":"0xf6930be4847cac5017bbcbec2756eed19f36b4196526a98a88e311c296e3a9be","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x29aa352e71b139e83b397bdd3dcf9b65d74770edaf3a9624d0dbc4f96f868680","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","receiptsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x1","gasLimit":"0x1c9c380","gasUsed":"0x0","timestamp":"0x66b200cc","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x200d75e8","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[],"ommers":[]},{"header":{"parentHash":"0x08abe6e453727534d8dd708843a7522b7d500338bdfe2402ca105dcdb05eebe9","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xb6003e7ba07a15a9e35f63daa484728ec4ceeded0c4d10ac1b04e9552d412b3c","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","receiptsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x4","gasLimit":"0x1c9c380","gasUsed":"0x0","timestamp":"0x66b200ca","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x1592fbf9","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[],"ommers":[]},{"header":{"parentHash":"0x149d41e3b89d8324cef3feff98ef308e97bafe8745cc8461c60172bc7d4c44ba","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x510f2275449c013534a25ad0b13c867caf720947b68bcbcd4863f7b172a5d023","transactionsRoot":"0x0b44110186e52ff0ceb6b0776ca2992c94144a4ed712eef65ea038260ef0fcc7","receiptsRoot":"0xc2823b8eb4730d9f2657137cc2ddc2c4f22ab68e0ab826236cf6a1551ca2b3a5","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x2","gasLimit":"0x1c9c380","gasUsed":"0xe61f9","timestamp":"0x66b200cb","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x342770c0","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[{"EIP1559":{"chainId":"0x343a","nonce":"0x0","gas":"0xe94d1","maxFeePerGas":"0x83215600","maxPriorityFeePerGas":"0x3b9aca00","to":"0x4e59b44847b379578588920ca78fbf26c0b4956c","value":"0x0","accessList":[],"input":"0x4786e4342646b3ba97c1790b6cf5a55087a36240b22570f5d3a5d6bcc929d93b608060405234801561001057600080fd5b5060008061002661006d60201b61081b1760201c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610141565b60008060405160200161007f90610121565b6040516020818303038152906040528051906020012090508091505090565b600082825260208201905092915050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e4f776e6160008201527f626c650000000000000000000000000000000000000000000000000000000000602082015250565b600061010b60238361009e565b9150610116826100af565b604082019050919050565b6000602082019050818103600083015261013a816100fe565b9050919050565b611000806101506000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806379ba50971161005b57806379ba5097146100ed5780638da5cb5b146100f7578063aaf10f4214610115578063c7f62cda1461013357610088565b80631627540c1461008d5780633659cfe6146100a957806353a47bb7146100c5578063718fe928146100e3575b600080fd5b6100a760048036038101906100a29190610d25565b61014f565b005b6100c360048036038101906100be9190610d25565b6102d0565b005b6100cd6102e4565b6040516100da9190610d61565b60405180910390f35b6100eb610317565b005b6100f56103fe565b005b6100ff61058b565b60405161010c9190610d61565b60405180910390f35b61011d6105be565b60405161012a9190610d61565b60405180910390f35b61014d60048036038101906101489190610d25565b6105f1565b005b61015761084c565b600061016161081b565b9050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036101c9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610252576040517fa88ee57700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce22826040516102c49190610d61565b60405180910390a15050565b6102d861084c565b6102e1816108c5565b50565b60006102ee61081b565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061032161081b565b90503373ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146103b757336040517fa0e5a0d70000000000000000000000000000000000000000000000000000000081526004016103ae9190610d61565b60405180910390fd5b60008160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061040861081b565b905060008160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104a357336040517fa0e5a0d700000000000000000000000000000000000000000000000000000000815260040161049a9190610d61565b60405180910390fd5b7fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c8260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826040516104f8929190610d7c565b60405180910390a1808260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008260010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600061059561081b565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006105c8610b05565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006105fb610b05565b905060018160000160146101000a81548160ff02191690831515021790555060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16633659cfe6846040516024016106cc9190610d61565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161071b9190610e16565b600060405180830381855af49150503d8060008114610756576040519150601f19603f3d011682016040523d82523d6000602084013e61075b565b606091505b505090508015806107c357508173ffffffffffffffffffffffffffffffffffffffff16610786610b05565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b156107fa576040517fa1cfa5a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008360000160146101000a81548160ff0219169083151502179055600080fd5b60008060405160200161082d90610eb0565b6040516020818303038152906040528051906020012090508091505090565b610854610b36565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108c357336040517f8e4a23d60000000000000000000000000000000000000000000000000000000081526004016108ba9190610d61565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361092b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093481610b69565b61097557806040517f8a8b41ec00000000000000000000000000000000000000000000000000000000815260040161096c9190610d61565b60405180910390fd5b600061097f610b05565b90508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a0a576040517fa88ee57700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060000160149054906101000a900460ff16158015610a2e5750610a2d82610b7c565b5b15610a7057816040517f15504301000000000000000000000000000000000000000000000000000000008152600401610a679190610d61565b60405180910390fd5b818160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503073ffffffffffffffffffffffffffffffffffffffff167f5d611f318680d00598bb735d61bacf0c514c6b50e1e5ad30040a4df2b12791c783604051610af99190610d61565b60405180910390a25050565b600080604051602001610b1790610f42565b6040516020818303038152906040528051906020012090508091505090565b6000610b4061081b565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080823b905060008111915050919050565b60008060003073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1663c7f62cda86604051602401610bc59190610d61565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610c149190610e16565b600060405180830381855af49150503d8060008114610c4f576040519150601f19603f3d011682016040523d82523d6000602084013e610c54565b606091505b509150915081158015610cb9575063a1cfa5a860e01b604051602001610c7a9190610faf565b6040516020818303038152906040528051906020012081604051602001610ca19190610e16565b60405160208183030381529060405280519060200120145b92505050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610cf282610cc7565b9050919050565b610d0281610ce7565b8114610d0d57600080fd5b50565b600081359050610d1f81610cf9565b92915050565b600060208284031215610d3b57610d3a610cc2565b5b6000610d4984828501610d10565b91505092915050565b610d5b81610ce7565b82525050565b6000602082019050610d766000830184610d52565b92915050565b6000604082019050610d916000830185610d52565b610d9e6020830184610d52565b9392505050565b600081519050919050565b600081905092915050565b60005b83811015610dd9578082015181840152602081019050610dbe565b60008484015250505050565b6000610df082610da5565b610dfa8185610db0565b9350610e0a818560208601610dbb565b80840191505092915050565b6000610e228284610de5565b915081905092915050565b600082825260208201905092915050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e4f776e6160008201527f626c650000000000000000000000000000000000000000000000000000000000602082015250565b6000610e9a602383610e2d565b9150610ea582610e3e565b604082019050919050565b60006020820190508181036000830152610ec981610e8d565b9050919050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e50726f7860008201527f7900000000000000000000000000000000000000000000000000000000000000602082015250565b6000610f2c602183610e2d565b9150610f3782610ed0565b604082019050919050565b60006020820190508181036000830152610f5b81610f1f565b9050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b610fa9610fa482610f62565b610f8e565b82525050565b6000610fbb8284610f98565b6004820191508190509291505056fea264697066735822122023a7c33d7b91dce35ffbcf8837693364ab22a3905d0fc00016833e5fac45ca2f64736f6c63430008110033","r":"0x1","s":"0x1","yParity":"0x0","hash":"0x4feae6769d748b4f0f7c9bf21d782236c88f13906789a3ec602961296e4c3e43"}}],"ommers":[]},{"header":{"parentHash":"0xb3535af5103fd1c2bbd6dc7ff23f0799037a6542c231ebcb85abd776560fa512","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x23d74fb99ff6e42cbb5c33f92b078e37be6af2b6092459b103ff7059a6517ebc","transactionsRoot":"0x9eab45eca206fe11c107ea985c7d02fcfa442836aea3e04ba11dc4df587d5aa6","receiptsRoot":"0xe25abcfa973db8c55f73292137c626430de130a382ad4466337fefb0f7c8fde0","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x2","gasLimit":"0x1c9c380","gasUsed":"0x3ce3f","timestamp":"0x66b200cd","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x1c0bc72b","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[{"EIP1559":{"chainId":"0x343a","nonce":"0x0","gas":"0x3d8a8","maxFeePerGas":"0x6211577c","maxPriorityFeePerGas":"0x3b9aca00","to":"0x4e59b44847b379578588920ca78fbf26c0b4956c","value":"0x0","accessList":[],"input":"0x4786e4342646b3ba97c1790b6cf5a55087a36240b22570f5d3a5d6bcc929d93b608060405234801561001057600080fd5b5060405161068538038061068583398181016040528101906100329190610275565b818181600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361009b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100ae8161019d60201b61004f1760201c565b6100ef57806040517f8a8b41ec0000000000000000000000000000000000000000000000000000000081526004016100e691906102c4565b60405180910390fd5b806100fe6101b060201b60201c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050806101536101e160201b6100621760201c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050610414565b600080823b905060008111915050919050565b6000806040516020016101c290610362565b6040516020818303038152906040528051906020012090508091505090565b6000806040516020016101f3906103f4565b6040516020818303038152906040528051906020012090508091505090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061024282610217565b9050919050565b61025281610237565b811461025d57600080fd5b50565b60008151905061026f81610249565b92915050565b6000806040838503121561028c5761028b610212565b5b600061029a85828601610260565b92505060206102ab85828601610260565b9150509250929050565b6102be81610237565b82525050565b60006020820190506102d960008301846102b5565b92915050565b600082825260208201905092915050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e50726f7860008201527f7900000000000000000000000000000000000000000000000000000000000000602082015250565b600061034c6021836102df565b9150610357826102f0565b604082019050919050565b6000602082019050818103600083015261037b8161033f565b9050919050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e4f776e6160008201527f626c650000000000000000000000000000000000000000000000000000000000602082015250565b60006103de6023836102df565b91506103e982610382565b604082019050919050565b6000602082019050818103600083015261040d816103d1565b9050919050565b610262806104236000396000f3fe6080604052366100135761001161001d565b005b61001b61001d565b005b6000610027610093565b90503660008037600080366000845af43d6000803e806000811461004a573d6000f35b3d6000fd5b600080823b905060008111915050919050565b6000806040516020016100749061017a565b6040516020818303038152906040528051906020012090508091505090565b600061009d6100c6565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000806040516020016100d89061020c565b6040516020818303038152906040528051906020012090508091505090565b600082825260208201905092915050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e4f776e6160008201527f626c650000000000000000000000000000000000000000000000000000000000602082015250565b60006101646023836100f7565b915061016f82610108565b604082019050919050565b6000602082019050818103600083015261019381610157565b9050919050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e50726f7860008201527f7900000000000000000000000000000000000000000000000000000000000000602082015250565b60006101f66021836100f7565b91506102018261019a565b604082019050919050565b60006020820190508181036000830152610225816101e9565b905091905056fea2646970667358221220800da1f73cebd5e4afa07496d9bca6b6c4f526bdd3f4014ec15c70fe3a1c441364736f6c6343000811003300000000000000000000000047d08dad17ccb558b3ea74b1a0e73a9cc804a9dc000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","r":"0x1","s":"0x1","yParity":"0x0","hash":"0xb6794d5c7abed6f91d447e8efb72ef2580595a6d7c8dee57ba1dbb330970146a"}}],"ommers":[]},{"header":{"parentHash":"0x08abe6e453727534d8dd708843a7522b7d500338bdfe2402ca105dcdb05eebe9","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x510f2275449c013534a25ad0b13c867caf720947b68bcbcd4863f7b172a5d023","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","receiptsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x3","gasLimit":"0x1c9c380","gasUsed":"0x0","timestamp":"0x66b200ca","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x29dd5614","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[],"ommers":[]}]} \ No newline at end of file +{"block":{"number":"0x5","coinbase":"0x0000000000000000000000000000000000000000","timestamp":"0x66b200cb","gas_limit":"0x1c9c380","basefee":"0x12e09c7a","difficulty":"0x0","prevrandao":"0xe7ef87fc7c2090741a6749a087e4ca8092cb4d07136008799e4ebeac3b69e34a","blob_excess_gas_and_price":{"excess_blob_gas":0,"blob_gasprice":1}},"accounts":{"0x0000000000000000000000000000000000000000":{"nonce":0,"balance":"0x1088aa62285a00","code":"0x","storage":{}},"0x108f53faf774d7c4c56f5bce9ca6e605ce8aeadd":{"nonce":1,"balance":"0x0","code":"0x6080604052600080357fffffffff0000000000000000000000000000000000000000000000000000000016905060008160e01c610251565b60006379ba509782101561015e5781631627540c811461009857632a952b2d81146100b457633659cfe681146100d0576350c946fe81146100ec576353a47bb781146101085763625ca21c81146101245763718fe928811461014057610158565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc9150610158565b738138ef7cf908021d117e542120b7a390650161079150610158565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc9150610158565b738138ef7cf908021d117e542120b7a390650161079150610158565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc9150610158565b738138ef7cf908021d117e542120b7a390650161079150610158565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc91505b5061024c565b816379ba509781146101a657638da5cb5b81146101c25763aaf10f4281146101de5763c7f62cda81146101fa5763daa250be81146102165763deba1b9881146102325761024a565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc915061024a565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc915061024a565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc915061024a565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc915061024a565b738138ef7cf908021d117e542120b7a39065016107915061024a565b738138ef7cf908021d117e542120b7a3906501610791505b505b919050565b61025a81610037565b915050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036102ce57816040517fc2a825f50000000000000000000000000000000000000000000000000000000081526004016102c5919061032f565b60405180910390fd5b3660008037600080366000845af43d6000803e80600081146102ef573d6000f35b3d6000fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610329816102f4565b82525050565b60006020820190506103446000830184610320565b9291505056fea264697066735822122017a4b7fdaaab3897a7b47abaed8d2ee92d558883d3bb2a8454f9601b2ab2c3db64736f6c63430008150033","storage":{}},"0x14dc79964da2c08b23698b3d3cc7ca32193d9955":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x15d34aaf54267db7d7c367839aaf71a00a2c6a65":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x19ba1fac55eea44d12a01372a8eb0c2ebbf9ca21":{"nonce":1,"balance":"0x21e19df7c2963f0ac6b","code":"0x","storage":{}},"0x19c6ab860dbe2bc433574193a4409770a8748bf6":{"nonce":1,"balance":"0x21e19df8da6b7bdc410","code":"0x","storage":{}},"0x23618e81e3f5cdf7f54c3d65f7fbc0abf5b21e8f":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x40567ec443c1d1872af5155755ac3803cc3fe61e":{"nonce":1,"balance":"0x21e19da82562f921b40","code":"0x","storage":{}},"0x47d08dad17ccb558b3ea74b1a0e73a9cc804a9dc":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100885760003560e01c806379ba50971161005b57806379ba5097146100ed5780638da5cb5b146100f7578063aaf10f4214610115578063c7f62cda1461013357610088565b80631627540c1461008d5780633659cfe6146100a957806353a47bb7146100c5578063718fe928146100e3575b600080fd5b6100a760048036038101906100a29190610d25565b61014f565b005b6100c360048036038101906100be9190610d25565b6102d0565b005b6100cd6102e4565b6040516100da9190610d61565b60405180910390f35b6100eb610317565b005b6100f56103fe565b005b6100ff61058b565b60405161010c9190610d61565b60405180910390f35b61011d6105be565b60405161012a9190610d61565b60405180910390f35b61014d60048036038101906101489190610d25565b6105f1565b005b61015761084c565b600061016161081b565b9050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036101c9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610252576040517fa88ee57700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce22826040516102c49190610d61565b60405180910390a15050565b6102d861084c565b6102e1816108c5565b50565b60006102ee61081b565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061032161081b565b90503373ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146103b757336040517fa0e5a0d70000000000000000000000000000000000000000000000000000000081526004016103ae9190610d61565b60405180910390fd5b60008160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061040861081b565b905060008160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104a357336040517fa0e5a0d700000000000000000000000000000000000000000000000000000000815260040161049a9190610d61565b60405180910390fd5b7fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c8260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826040516104f8929190610d7c565b60405180910390a1808260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008260010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600061059561081b565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006105c8610b05565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006105fb610b05565b905060018160000160146101000a81548160ff02191690831515021790555060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16633659cfe6846040516024016106cc9190610d61565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161071b9190610e16565b600060405180830381855af49150503d8060008114610756576040519150601f19603f3d011682016040523d82523d6000602084013e61075b565b606091505b505090508015806107c357508173ffffffffffffffffffffffffffffffffffffffff16610786610b05565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b156107fa576040517fa1cfa5a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008360000160146101000a81548160ff0219169083151502179055600080fd5b60008060405160200161082d90610eb0565b6040516020818303038152906040528051906020012090508091505090565b610854610b36565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108c357336040517f8e4a23d60000000000000000000000000000000000000000000000000000000081526004016108ba9190610d61565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361092b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093481610b69565b61097557806040517f8a8b41ec00000000000000000000000000000000000000000000000000000000815260040161096c9190610d61565b60405180910390fd5b600061097f610b05565b90508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a0a576040517fa88ee57700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060000160149054906101000a900460ff16158015610a2e5750610a2d82610b7c565b5b15610a7057816040517f15504301000000000000000000000000000000000000000000000000000000008152600401610a679190610d61565b60405180910390fd5b818160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503073ffffffffffffffffffffffffffffffffffffffff167f5d611f318680d00598bb735d61bacf0c514c6b50e1e5ad30040a4df2b12791c783604051610af99190610d61565b60405180910390a25050565b600080604051602001610b1790610f42565b6040516020818303038152906040528051906020012090508091505090565b6000610b4061081b565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080823b905060008111915050919050565b60008060003073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1663c7f62cda86604051602401610bc59190610d61565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610c149190610e16565b600060405180830381855af49150503d8060008114610c4f576040519150601f19603f3d011682016040523d82523d6000602084013e610c54565b606091505b509150915081158015610cb9575063a1cfa5a860e01b604051602001610c7a9190610faf565b6040516020818303038152906040528051906020012081604051602001610ca19190610e16565b60405160208183030381529060405280519060200120145b92505050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610cf282610cc7565b9050919050565b610d0281610ce7565b8114610d0d57600080fd5b50565b600081359050610d1f81610cf9565b92915050565b600060208284031215610d3b57610d3a610cc2565b5b6000610d4984828501610d10565b91505092915050565b610d5b81610ce7565b82525050565b6000602082019050610d766000830184610d52565b92915050565b6000604082019050610d916000830185610d52565b610d9e6020830184610d52565b9392505050565b600081519050919050565b600081905092915050565b60005b83811015610dd9578082015181840152602081019050610dbe565b60008484015250505050565b6000610df082610da5565b610dfa8185610db0565b9350610e0a818560208601610dbb565b80840191505092915050565b6000610e228284610de5565b915081905092915050565b600082825260208201905092915050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e4f776e6160008201527f626c650000000000000000000000000000000000000000000000000000000000602082015250565b6000610e9a602383610e2d565b9150610ea582610e3e565b604082019050919050565b60006020820190508181036000830152610ec981610e8d565b9050919050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e50726f7860008201527f7900000000000000000000000000000000000000000000000000000000000000602082015250565b6000610f2c602183610e2d565b9150610f3782610ed0565b604082019050919050565b60006020820190508181036000830152610f5b81610f1f565b9050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b610fa9610fa482610f62565b610f8e565b82525050565b6000610fbb8284610f98565b6004820191508190509291505056fea264697066735822122023a7c33d7b91dce35ffbcf8837693364ab22a3905d0fc00016833e5fac45ca2f64736f6c63430008110033","storage":{"0x5c7865864a2a990d80b5bb5c40e7b73a029960dc711fbb56120dfab976e92ea3":{"value":"0x0","is_private":false}}},"0x4e59b44847b379578588920ca78fbf26c0b4956c":{"nonce":2,"balance":"0x0","code":"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf3","storage":{}},"0x70997970c51812dc3a010c7d01b50e0d17dc79c8":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x8138ef7cf908021d117e542120b7a39065016107":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100575760003560e01c80632a952b2d1461005c57806350c946fe14610085578063625ca21c146100a5578063daa250be146100c6578063deba1b98146100d9575b600080fd5b61006f61006a366004613a63565b6100ec565b60405161007c9190613a7c565b60405180910390f35b610098610093366004613a63565b61011c565b60405161007c9190613b21565b6100b86100b3366004613c92565b610276565b60405190815260200161007c565b61006f6100d4366004613d5f565b6102bb565b6100b86100e7366004613c92565b6102d6565b6100f46139e4565b6040805160008082526020820190815281830190925261011691849190610310565b92915050565b6101416040805160608101909152806000815260200160608152602001606081525090565b61014a82610ab6565b60408051606081019091528154909190829060ff16600981111561017057610170613aa7565b600981111561018157610181613aa7565b815260200160018201805461019590613dc2565b80601f01602080910402602001604051908101604052809291908181526020018280546101c190613dc2565b801561020e5780601f106101e35761010080835404028352916020019161020e565b820191906000526020600020905b8154815290600101906020018083116101f157829003601f168201915b505050505081526020016002820180548060200260200160405190810160405280929190818152602001828054801561026657602002820191906000526020600020905b815481526020019060010190808311610252575b5050505050815250509050919050565b600080604051806060016040528086600981111561029657610296613aa7565b81526020018581526020018481525090506102b081610ac1565b9150505b9392505050565b6102c36139e4565b6102ce848484610310565b949350505050565b60008060405180606001604052808660098111156102f6576102f6613aa7565b81526020018581526020018481525090506102b081610acc565b6103186139e4565b81518351146103a05760408051634bab873760e11b81526004810191909152600d60448201526c72756e74696d6556616c75657360981b606482015260806024820152602260848201527f6d7573742062652073616d65206c656e6774682061732072756e74696d654b6560a482015261797360f01b60c482015260e4015b60405180910390fd5b60006103ab85610c26565b805490915060ff1660018160098111156103c7576103c7613aa7565b036104755761046c6103da838787610c84565b8360010180546103e990613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461041590613dc2565b80156104625780601f1061043757610100808354040283529160200191610462565b820191906000526020600020905b81548152906001019060200180831161044557829003601f168201915b5050505050610d46565b925050506102b4565b600281600981111561048957610489613aa7565b036105305761046c61049c838787610c84565b8360010180546104ab90613dc2565b80601f01602080910402602001604051908101604052809291908181526020018280546104d790613dc2565b80156105245780601f106104f957610100808354040283529160200191610524565b820191906000526020600020905b81548152906001019060200180831161050757829003601f168201915b50505050508787610ebb565b600381600981111561054457610544613aa7565b036105de5761046c82600101805461055b90613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461058790613dc2565b80156105d45780601f106105a9576101008083540402835291602001916105d4565b820191906000526020600020905b8154815290600101906020018083116105b757829003601f168201915b5050505050610f59565b60048160098111156105f2576105f2613aa7565b0361068c5761046c82600101805461060990613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461063590613dc2565b80156106825780601f1061065757610100808354040283529160200191610682565b820191906000526020600020905b81548152906001019060200180831161066557829003601f168201915b5050505050611087565b60058160098111156106a0576106a0613aa7565b0361073a5761046c8260010180546106b790613dc2565b80601f01602080910402602001604051908101604052809291908181526020018280546106e390613dc2565b80156107305780601f1061070557610100808354040283529160200191610730565b820191906000526020600020905b81548152906001019060200180831161071357829003601f168201915b505050505061131e565b600981600981111561074e5761074e613aa7565b036107ea5761046c82600101805461076590613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461079190613dc2565b80156107de5780601f106107b3576101008083540402835291602001916107de565b820191906000526020600020905b8154815290600101906020018083116107c157829003601f168201915b505050505086866114b5565b60068160098111156107fe576107fe613aa7565b036108a35761046c610811838787610c84565b83600101805461082090613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461084c90613dc2565b80156108995780601f1061086e57610100808354040283529160200191610899565b820191906000526020600020905b81548152906001019060200180831161087c57829003601f168201915b50505050506115c7565b60078160098111156108b7576108b7613aa7565b036109ec576040805160608101909152825461046c91908490829060ff1660098111156108e6576108e6613aa7565b60098111156108f7576108f7613aa7565b815260200160018201805461090b90613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461093790613dc2565b80156109845780601f1061095957610100808354040283529160200191610984565b820191906000526020600020905b81548152906001019060200180831161096757829003601f168201915b50505050508152602001600282018054806020026020016040519081016040528092919081815260200182805480156109dc57602002820191906000526020600020905b8154815260200190600101908083116109c8575b5050505050815250508686611728565b6008816009811115610a0057610a00613aa7565b03610a9a5761046c826001018054610a1790613dc2565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4390613dc2565b8015610a905780601f10610a6557610100808354040283529160200191610a90565b820191906000526020600020905b815481529060010190602001808311610a7357829003601f168201915b50505050506118a5565b6040516323a9bbc960e01b815260048101879052602401610397565b600061011682610c26565b6000610116826118ea565b6000610ad782610ac1565b9050610ae28161192a565b15610b35577fcb64985827770858ec421ad26da7e558c757541643036ce44d6b4eb9e8e5dc5e81836000015184602001518560400151604051610b289493929190613e32565b60405180910390a1919050565b610b3e82611a8c565b610b5d578160405163382bbbc960e11b81526004016103979190613b21565b60005b826040015151811015610bd957610b9383604001518281518110610b8657610b86613e6a565b602002602001015161192a565b610bd15782604001518181518110610bad57610bad613e6a565b6020026020010151604051632f19f96160e11b815260040161039791815260200190565b600101610b60565b50610be382611c31565b8351602085015160408087015190519395507fcb64985827770858ec421ad26da7e558c757541643036ce44d6b4eb9e8e5dc5e9450610b28938693929190613e32565b604080516020808201839052606082018190527f696f2e73796e7468657469782e6f7261636c652d6d616e616765722e4e6f6465608080840191909152828401949094528251808303909401845260a0909101909152815191012090565b600283015460609067ffffffffffffffff811115610ca457610ca4613b9a565b604051908082528060200260200182016040528015610cdd57816020015b610cca6139e4565b815260200190600190039081610cc25790505b50905060005b6002850154811015610d3e57610d19856002018281548110610d0757610d07613e6a565b90600052602060002001548585610310565b828281518110610d2b57610d2b613e6a565b6020908102919091010152600101610ce3565b509392505050565b610d4e6139e4565b600082806020019051810190610d649190613e80565b90506000816008811115610d7a57610d7a613aa7565b03610d9057610d8884611ca5565b915050610116565b6001816008811115610da457610da4613aa7565b03610db257610d8884611d0d565b6002816008811115610dc657610dc6613aa7565b03610dd457610d8884611d90565b6003816008811115610de857610de8613aa7565b03610df657610d8884611e13565b6004816008811115610e0a57610e0a613aa7565b03610e1857610d8884611ec9565b6005816008811115610e2c57610e2c613aa7565b03610e3a57610d8884612009565b6006816008811115610e4e57610e4e613aa7565b03610e5c57610d88846120e4565b6007816008811115610e7057610e70613aa7565b03610e7e57610d888461220c565b6008816008811115610e9257610e92613aa7565b03610ea057610d88846122ce565b80604051631be413d360e11b81526004016103979190613ea1565b610ec36139e4565b600084806020019051810190610ed99190613ed3565b604051631ecba7c360e31b81529091506001600160a01b0382169063f65d3e1890610f0e908990899089908990600401613ef0565b608060405180830381865afa158015610f2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4f9190613f91565b9695505050505050565b610f616139e4565b600080600084806020019051810190610f7a9190613fe8565b92509250925060008390506000806000836001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610fc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fec9190614041565b509350509250925060008660001461100f5761100a8585858a6123c7565b611011565b825b905060128660ff161161103b5761103661102f60ff881660126140a7565b82906124c2565b611053565b61105361104c601260ff89166140a7565b82906124dc565b9050604051806080016040528082815260200183815260200160008152602001600081525098505050505050505050919050565b61108f6139e4565b600080600080600080878060200190518101906110ac91906140ba565b604080516002808252606082018352979d50959b50939950919750955093506000929060208301908036833701905050905081816000815181106110f2576110f2613e6a565b602002602001019063ffffffff16908163ffffffff168152505060008160018151811061112157611121613e6a565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0385169063883bdbfd90611165908590600401614143565b600060405180830381865afa158015611182573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111aa91908101906141f5565b5090506000816000815181106111c2576111c2613e6a565b6020026020010151826001815181106111dd576111dd613e6a565b60200260200101516111ef91906142c1565b9050600061121761120563ffffffff87166124f6565b61120f9084614304565b60060b61252d565b905060008260060b12801561124c575061123b63ffffffff8616612569565b612569565b8260060b6112499190614342565b15155b1561125f578061125b81614356565b9150505b600061126d6012600a61445d565b9050600061128061123684848f8f612593565b905060006112908a60ff16612569565b61129c8c60ff16612569565b6112a6919061446c565b905060008082136112d1576112cc6112c56112c084614493565b612686565b84906124dc565b6112e4565b6112e46112dd83612686565b84906124c2565b905060405180608001604052808281526020014281526020016000815260200160008152509e505050505050505050505050505050919050565b6113266139e4565b60008060008480602001905181019061133f91906144bf565b91945092509050826000826113bc576040516396834ad360e01b8152600481018590526001600160a01b038316906396834ad390602401608060405180830381865afa158015611393573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b791906144f5565b611425565b604051639474f45b60e01b8152600481018590526001600160a01b03831690639474f45b90602401608060405180830381865afa158015611401573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142591906144f5565b90506000816040015160030b601261143d919061456f565b90506000808213611467576114626114576112c084614493565b845160070b906124dc565b61147e565b61147e61147383612686565b845160070b906124c2565b9050604051806080016040528082815260200184606001518152602001600081526020016000815250975050505050505050919050565b6114bd6139e4565b6000806000868060200190518101906114d69190614597565b92509250925060005b8651811015611545578681815181106114fa576114fa613e6a565b6020026020010151717374616c656e657373546f6c6572616e636560701b0361153d5785818151811061152f5761152f613e6a565b602002602001015160001c91505b6001016114df565b5060408051600180825281830190925260009160208083019080368337019050509050828160008151811061157c5761157c613e6a565b602002602001018181525050836001838360405160200161159f939291906145ce565b60408051601f198184030181529082905263cf2cabdf60e01b82526103979291600401614603565b6115cf6139e4565b6000828060200190518101906115e59190614627565b90506000846000815181106115fc576115fc613e6a565b602002602001015160000151905060008560018151811061161f5761161f613e6a565b6020026020010151600001519050808214611702576000611653601261164d611648858761446c565b6126a9565b906124c2565b905082158061167b5750611666836126a9565b6116709082614640565b61167985612569565b125b15611700576002875111156116b0578660028151811061169d5761169d613e6a565b6020026020010151945050505050610116565b826000036116d15760405163014cc07160e01b815260040160405180910390fd5b6116da836126a9565b6116e49082614640565b60405163dcac091960e01b815260040161039791815260200190565b505b8560008151811061171557611715613e6a565b6020026020010151935050505092915050565b6117306139e4565b6000846020015180602001905181019061174a9190614627565b905060005b84518110156117bc5784818151811061176a5761176a613e6a565b6020026020010151717374616c656e657373546f6c6572616e636560701b036117b4576117ad8482815181106117a2576117a2613e6a565b602002602001015190565b91506117bc565b60010161174f565b50600085604001516000815181106117d6576117d6613e6a565b6020026020010151905060006117ed828787610310565b60208101519091506117ff84426140a7565b1161180e5792506102b4915050565b86604001515160010361187157866040015160008151811061183257611832613e6a565b602002602001015181600001518260200151604051631808066560e21b8152600401610397939291909283526020830191909152604082015260600190565b61189a876040015160018151811061188b5761188b613e6a565b60200260200101518787610310565b979650505050505050565b6118ad6139e4565b6040518060800160405280838060200190518101906118cc9190614627565b81526020014281526020016000815260200160008152509050919050565b600081600001518260200151836040015160405160200161190d9392919061466e565b604051602081830303815290604052805190602001209050919050565b60008061193683610c26565b60408051606081019091528154909190829060ff16600981111561195c5761195c613aa7565b600981111561196d5761196d613aa7565b815260200160018201805461198190613dc2565b80601f01602080910402602001604051908101604052809291908181526020018280546119ad90613dc2565b80156119fa5780601f106119cf576101008083540402835291602001916119fa565b820191906000526020600020905b8154815290600101906020018083116119dd57829003601f168201915b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015611a5257602002820191906000526020600020905b815481526020019060010190808311611a3e575b505050505081525050905060006009811115611a7057611a70613aa7565b81516009811115611a8357611a83613aa7565b14159392505050565b6000600182516009811115611aa357611aa3613aa7565b1480611ac15750600682516009811115611abf57611abf613aa7565b145b80611ade5750600782516009811115611adc57611adc613aa7565b145b15611aee57611aec826126c1565b505b600182516009811115611b0357611b03613aa7565b03611b11576101168261284a565b600282516009811115611b2657611b26613aa7565b03611b3457610116826128a5565b600382516009811115611b4957611b49613aa7565b03611b575761011682612973565b600482516009811115611b6c57611b6c613aa7565b03611b7a5761011682612aae565b600582516009811115611b8f57611b8f613aa7565b03611b9d5761011682612e92565b600982516009811115611bb257611bb2613aa7565b03611bc05761011682612fcb565b600682516009811115611bd557611bd5613aa7565b03611be3576101168261300e565b600782516009811115611bf857611bf8613aa7565b03611c065761011682613052565b600882516009811115611c1b57611c1b613aa7565b03611c295761011682613078565b506000919050565b600080611c3d836118ea565b9050611c4881610c26565b8351815491935090839060ff19166001836009811115611c6a57611c6a613aa7565b021790555060208301516001830190611c8390826146ed565b5060408301518051611c9f916002850191602090910190613a0c565b50915091565b611cad6139e4565b60005b8251811015611d07578160200151838281518110611cd057611cd0613e6a565b6020026020010151602001511115611cff57828181518110611cf457611cf4613e6a565b602002602001015191505b600101611cb0565b50919050565b611d156139e4565b81600081518110611d2857611d28613e6a565b602002602001015190506000600190505b8251811015611d07578160000151838281518110611d5957611d59613e6a565b6020026020010151600001511215611d8857828181518110611d7d57611d7d613e6a565b602002602001015191505b600101611d39565b611d986139e4565b81600081518110611dab57611dab613e6a565b602002602001015190506000600190505b8251811015611d07578160000151838281518110611ddc57611ddc613e6a565b6020026020010151600001511315611e0b57828181518110611e0057611e00613e6a565b602002602001015191505b600101611dbc565b611e1b6139e4565b60005b8251811015611e9557828181518110611e3957611e39613e6a565b60200260200101516000015182600001818151611e56919061456f565b9052508251839082908110611e6d57611e6d613e6a565b60200260200101516020015182602001818151611e8a91906147ad565b905250600101611e1e565b50611ea08251612569565b8151611eac9190614640565b815281516020820151611ebf91906147c0565b6020820152919050565b611ed16139e4565b611eed826000611ee86001865161123691906140a7565b6130a4565b60028251611efb91906147d4565b600003611fd65760408051600280825260608201909252600091816020015b611f226139e4565b815260200190600190039081611f1a57905050905082600160028551611f4891906147c0565b611f5291906140a7565b81518110611f6257611f62613e6a565b602002602001015181600081518110611f7d57611f7d613e6a565b60200260200101819052508260028451611f9791906147c0565b81518110611fa757611fa7613e6a565b602002602001015181600181518110611fc257611fc2613e6a565b60200260200101819052506102b481611e13565b8160028351611fe591906147c0565b81518110611ff557611ff5613e6a565b60200260200101519050919050565b919050565b6120116139e4565b8160008151811061202457612024613e6a565b60209081029190910101515181528151829060009061204557612045613e6a565b6020908102919091018101518101519082015260015b82518110156120d25782818151811061207657612076613e6a565b6020026020010151600001518260000181815161209391906147e8565b90525082518390829081106120aa576120aa613e6a565b602002602001015160200151826020018181516120c791906147ad565b90525060010161205b565b5081518160200151611ebf91906147c0565b6120ec6139e4565b816000815181106120ff576120ff613e6a565b60209081029190910101515181528151829060009061212057612120613e6a565b6020908102919091018101518101519082015260015b82518110156120d25782818151811061215157612151613e6a565b60200260200101516000015160000361219e5782818151811061217657612176613e6a565b6020026020010151600001516040516338ee04a760e01b815260040161039791815260200190565b8281815181106121b0576121b0613e6a565b602002602001015160000151826000018181516121cd9190614640565b90525082518390829081106121e4576121e4613e6a565b6020026020010151602001518260200181815161220191906147ad565b905250600101612136565b6122146139e4565b8160008151811061222757612227613e6a565b60209081029190910101515181528151829060009061224857612248613e6a565b6020908102919091018101518101519082015260015b82518110156120d25761229083828151811061227c5761227c613e6a565b602090810291909101015151835190613264565b825282518390829081106122a6576122a6613e6a565b602002602001015160200151826020018181516122c391906147ad565b90525060010161225e565b6122d66139e4565b816000815181106122e9576122e9613e6a565b60209081029190910101515181528151829060009061230a5761230a613e6a565b6020908102919091018101518101519082015260015b82518110156120d25782818151811061233b5761233b613e6a565b6020026020010151600001516000036123605782818151811061217657612176613e6a565b61238983828151811061237557612375613e6a565b602090810291909101015151835190613283565b8252825183908290811061239f5761239f613e6a565b602002602001015160200151826020018181516123bc91906147ad565b905250600101612320565b6000826001826123d785426140a7565b90505b69ffffffffffffffffffff8716156124a3576001600160a01b038816639a6fc8f561240489614818565b6040516001600160e01b031960e084901b16815269ffffffffffffffffffff8216600482015290995060240160a060405180830381865afa925050508015612469575060408051601f3d908101601f1916820190925261246691810190614041565b60015b156124a357858210156124805750505050506124a3565b61248a848961456f565b97508661249681614834565b97505050505050506123da565b6124ac82612569565b6124b69084614640565b98975050505050505050565b60006124d261123683600a61484d565b6102b490846147e8565b60006124ec61123683600a61484d565b6102b49084614640565b6000667fffffffffffff66ffffffffffffff83161115612529576040516329d2678160e21b815260040160405180910390fd5b5090565b6000627fffff19600683900b128061254b5750627fffff600683900b135b1561252957604051630d962f7960e21b815260040160405180910390fd5b60006001600160ff1b038211156125295760405163677c430560e11b815260040160405180910390fd5b60008061259f86613298565b90506fffffffffffffffffffffffffffffffff6001600160a01b0382161161261c5760006125d66001600160a01b03831680614859565b9050836001600160a01b0316856001600160a01b03161061260557612600600160c01b87836136cd565b612614565b6126148187600160c01b6136cd565b92505061267d565b600061263b6001600160a01b03831680680100000000000000006136cd565b9050836001600160a01b0316856001600160a01b03161061266a57612665600160801b87836136cd565b612679565b6126798187600160801b6136cd565b9250505b50949350505050565b6000808212156125295760405163029f024d60e31b815260040160405180910390fd5b600080821215612529576126bc82614493565b610116565b6000805b8260400151518110156128415760006126fa846040015183815181106126ed576126ed613e6a565b6020026020010151610ab6565b60408051606081019091528154909190829060ff16600981111561272057612720613aa7565b600981111561273157612731613aa7565b815260200160018201805461274590613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461277190613dc2565b80156127be5780601f10612793576101008083540402835291602001916127be565b820191906000526020600020905b8154815290600101906020018083116127a157829003601f168201915b505050505081526020016002820180548060200260200160405190810160405280929190818152602001828054801561281657602002820191906000526020600020905b815481526020019060010190808311612802575b505050505081525050905061282a81611a8c565b612838575060009392505050565b506001016126c5565b50600192915050565b60006002826040015151101561286257506000919050565b81602001515160201461287757506000919050565b600082602001518060200190518101906128919190614627565b905060088111156128415750600092915050565b6000602082602001515110156128bd57506000919050565b600082602001518060200190518101906128d79190613ed3565b90506128ea816306e7ea3960e21b6138e2565b6128f75750600092915050565b604051633b70a5bf60e21b81526001600160a01b0382169063edc296fc90612923908690600401613b21565b6020604051808303816000875af1158015612942573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129669190614870565b6128415750600092915050565b6040810151516000901561298957506000919050565b81602001515160601461299e57506000919050565b60008083602001518060200190518101906129b99190613fe8565b92505091506000829050806001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015612a01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a259190614041565b5050505050806001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8c919061488b565b60ff168260ff1614612aa357506000949350505050565b506001949350505050565b60408101515160009015612ac457506000919050565b81602001515160c014612ad957506000919050565b6000806000806000808760200151806020019051810190612afa91906140ba565b9550955095509550955095508360ff16866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6c919061488b565b60ff1614612b8257506000979650505050505050565b8260ff16856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be8919061488b565b60ff1614612bfe57506000979650505050505050565b6000826001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c629190613ed3565b90506000836001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ca4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cc89190613ed3565b9050876001600160a01b0316826001600160a01b0316148015612cfc5750866001600160a01b0316816001600160a01b0316145b158015612d385750866001600160a01b0316826001600160a01b0316148015612d365750876001600160a01b0316816001600160a01b0316145b155b15612d4d575060009998505050505050505050565b60128660ff161180612d62575060128560ff16115b15612d77575060009998505050505050505050565b8263ffffffff16600003612d95575060009998505050505050505050565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110612dca57612dca613e6a565b602002602001019063ffffffff16908163ffffffff1681525050600081600181518110612df957612df9613e6a565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526001600160a01b0386169063883bdbfd90612e3a908490600401614143565b600060405180830381865afa158015612e57573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e7f91908101906141f5565b5060019c9b505050505050505050505050565b60408101515160009015612ea857506000919050565b816020015151606014612ebd57506000919050565b60008060008460200151806020019051810190612eda91906144bf565b919450925090508281612f55576040516396834ad360e01b8152600481018490526001600160a01b038216906396834ad390602401608060405180830381865afa158015612f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5091906144f5565b612fbe565b604051639474f45b60e01b8152600481018490526001600160a01b03821690639474f45b90602401608060405180830381865afa158015612f9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fbe91906144f5565b5060019695505050505050565b60408101515160009015612fe157506000919050565b816020015151606014612ff657506000919050565b8160200151806020019051810190612aa39190614597565b60008160400151516002148061302957508160400151516003145b61303557506000919050565b81602001515160201461304a57506000919050565b506001919050565b600081604001515160011480613029575081604001515160021461303557506000919050565b6040810151516000901561308e57506000919050565b6020826020015151101561304a57506000919050565b81818082036130b4575050505050565b6000856130da60026130c6888861446c565b6130d09190614640565b6112c0908861456f565b815181106130ea576130ea613e6a565b60200260200101516000015190505b818313613236575b808661310c85612686565b8151811061311c5761311c613e6a565b60200260200101516000015112156131405782613138816148a6565b935050613101565b8561314a83612686565b8151811061315a5761315a613e6a565b60200260200101516000015181121561317f5781613177816148be565b925050613140565b818313613231578561319083612686565b815181106131a0576131a0613e6a565b6020026020010151866131b285612686565b815181106131c2576131c2613e6a565b6020026020010151876131d486612686565b815181106131e4576131e4613e6a565b60200260200101886131f586612686565b8151811061320557613205613e6a565b602002602001018290528290525050828061321f906148a6565b935050818061322d906148be565b9250505b6130f9565b81851215613249576132498686846130a4565b8383121561325c5761325c8684866130a4565b505050505050565b6000670de0b6b3a764000061327983856147e8565b6102b49190614640565b600081613279670de0b6b3a7640000856147e8565b60008060008360020b126132b8576132b3600284900b612686565b6132c8565b6132c86112c0600285900b614493565b90506132e36112c06132dd620d89e7196148db565b60020b90565b8111156133165760405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606401610397565b60008160011660000361332d57600160801b61333f565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff169050600282161561337e576080613379826ffff97272373d413259a46990580e213a614859565b901c90505b60048216156133a85760806133a3826ffff2e50f5f656932ef12357cf3c7fdcc614859565b901c90505b60088216156133d25760806133cd826fffe5caca7e10e4e61c3624eaa0941cd0614859565b901c90505b60108216156133fc5760806133f7826fffcb9843d60f6159c9db58835c926644614859565b901c90505b6020821615613426576080613421826fff973b41fa98c081472e6896dfb254c0614859565b901c90505b604082161561345057608061344b826fff2ea16466c96a3843ec78b326b52861614859565b901c90505b608082161561347a576080613475826ffe5dee046a99a2a811c461f1969c3053614859565b901c90505b6101008216156134a55760806134a0826ffcbe86c7900a88aedcffc83b479aa3a4614859565b901c90505b6102008216156134d05760806134cb826ff987a7253ac413176f2b074cf7815e54614859565b901c90505b6104008216156134fb5760806134f6826ff3392b0822b70005940c7a398e4b70f3614859565b901c90505b610800821615613526576080613521826fe7159475a2c29b7443b29c7fa6e889d9614859565b901c90505b61100082161561355157608061354c826fd097f3bdfd2022b8845ad8f792aa5825614859565b901c90505b61200082161561357c576080613577826fa9f746462d870fdf8a65dc1f90e061e5614859565b901c90505b6140008216156135a75760806135a2826f70d869a156d2a1b890bb3df62baf32f7614859565b901c90505b6180008216156135d25760806135cd826f31be135f97d08fd981231505542fcfa6614859565b901c90505b620100008216156135fe5760806135f9826f09aa508b5b7a84e1c677de54f3e99bc9614859565b901c90505b62020000821615613629576080613624826e5d6af8dedb81196699c329225ee604614859565b901c90505b6204000082161561365357608061364e826d2216e584f5fa1ea926041bedfe98614859565b901c90505b6208000082161561367b576080613676826b048a170391f7dc42444e8fa2614859565b901c90505b60008460020b131561369657613693816000196147c0565b90505b6102ce6136a8640100000000836147d4565b156136b45760016136b7565b60005b6136c89060ff16602084901c6147ad565b6139ba565b6000808060001985870985870292508281108382030391505080600003613749576000841161373e5760405162461bcd60e51b815260206004820152601960248201527f48616e646c65206e6f6e2d6f766572666c6f77206361736573000000000000006044820152606401610397565b5082900490506102b4565b8084116137985760405162461bcd60e51b815260206004820152601960248201527f70726576656e74732064656e6f6d696e61746f72203d3d2030000000000000006044820152606401610397565b60008486880980840393811190920391905060006137d06137b887612569565b6137c188612569565b6137ca90614493565b16612686565b9586900495938490049360008190030460010190506137ef8184614859565b909317926000613800876003614859565b600218905061380f8188614859565b61381a9060026140a7565b6138249082614859565b90506138308188614859565b61383b9060026140a7565b6138459082614859565b90506138518188614859565b61385c9060026140a7565b6138669082614859565b90506138728188614859565b61387d9060026140a7565b6138879082614859565b90506138938188614859565b61389e9060026140a7565b6138a89082614859565b90506138b48188614859565b6138bf9060026140a7565b6138c99082614859565b90506138d58186614859565b9998505050505050505050565b604080516001600160e01b0319831660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166301ffc9a760e01b1790529051600091829182916001600160a01b0387169161394391906148fd565b6000604051808303816000865af19150503d8060008114613980576040519150601f19603f3d011682016040523d82523d6000602084013e613985565b606091505b50915091508161399a57600092505050610116565b80516000036139ae57600092505050610116565b60200151949350505050565b60006001600160a01b038211156125295760405163dccde8ed60e01b815260040160405180910390fd5b6040518060800160405280600081526020016000815260200160008152602001600081525090565b828054828255906000526020600020908101928215613a47579160200282015b82811115613a47578251825591602001919060010190613a2c565b506125299291505b808211156125295760008155600101613a4f565b600060208284031215613a7557600080fd5b5035919050565b8151815260208083015190820152604080830151908201526060808301519082015260808101610116565b634e487b7160e01b600052602160045260246000fd5b600a8110613acd57613acd613aa7565b9052565b60005b83811015613aec578181015183820152602001613ad4565b50506000910152565b60008151808452613b0d816020860160208601613ad1565b601f01601f19169290920160200192915050565b60006020808352613b358184018551613abd565b8084015160606040850152613b4d6080850182613af5565b6040860151858203601f19016060870152805180835290840192506000918401905b80831015613b8f5783518252928401926001929092019190840190613b6f565b509695505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613bd357613bd3613b9a565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613c0257613c02613b9a565b604052919050565b600067ffffffffffffffff821115613c2457613c24613b9a565b5060051b60200190565b600082601f830112613c3f57600080fd5b81356020613c54613c4f83613c0a565b613bd9565b8083825260208201915060208460051b870101935086841115613c7657600080fd5b602086015b84811015613b8f5780358352918301918301613c7b565b600080600060608486031215613ca757600080fd5b8335600a8110613cb657600080fd5b925060208481013567ffffffffffffffff80821115613cd457600080fd5b818701915087601f830112613ce857600080fd5b813581811115613cfa57613cfa613b9a565b613d0c601f8201601f19168501613bd9565b8181528985838601011115613d2057600080fd5b818585018683013760009181019094015291935060408601359180831115613d4757600080fd5b5050613d5586828701613c2e565b9150509250925092565b600080600060608486031215613d7457600080fd5b83359250602084013567ffffffffffffffff80821115613d9357600080fd5b613d9f87838801613c2e565b93506040860135915080821115613db557600080fd5b50613d5586828701613c2e565b600181811c90821680613dd657607f821691505b602082108103611d0757634e487b7160e01b600052602260045260246000fd5b60008151808452602080850194506020840160005b83811015613e2757815187529582019590820190600101613e0b565b509495945050505050565b848152613e426020820185613abd565b608060408201526000613e586080830185613af5565b828103606084015261189a8185613df6565b634e487b7160e01b600052603260045260246000fd5b600060208284031215613e9257600080fd5b8151600981106102b457600080fd5b6020810160098310613eb557613eb5613aa7565b91905290565b6001600160a01b0381168114613ed057600080fd5b50565b600060208284031215613ee557600080fd5b81516102b481613ebb565b608080825285518282018190526000919060209060a0850190828a01855b82811015613f5257613f42848351805182526020810151602083015260408101516040830152606081015160608301525050565b9285019290840190600101613f0e565b5050508481036020860152613f678189613af5565b925050508281036040840152613f7d8186613df6565b9050828103606084015261189a8185613df6565b600060808284031215613fa357600080fd5b613fab613bb0565b825181526020830151602082015260408301516040820152606083015160608201528091505092915050565b805160ff8116811461200457600080fd5b600080600060608486031215613ffd57600080fd5b835161400881613ebb565b6020850151909350915061401e60408501613fd7565b90509250925092565b805169ffffffffffffffffffff8116811461200457600080fd5b600080600080600060a0868803121561405957600080fd5b61406286614027565b945060208601519350604086015192506060860151915061408560808701614027565b90509295509295909350565b634e487b7160e01b600052601160045260246000fd5b8181038181111561011657610116614091565b60008060008060008060c087890312156140d357600080fd5b86516140de81613ebb565b60208801519096506140ef81613ebb565b94506140fd60408801613fd7565b935061410b60608801613fd7565b9250608087015161411b81613ebb565b60a088015190925063ffffffff8116811461413557600080fd5b809150509295509295509295565b6020808252825182820181905260009190848201906040850190845b8181101561418157835163ffffffff168352928401929184019160010161415f565b50909695505050505050565b600082601f83011261419e57600080fd5b815160206141ae613c4f83613c0a565b8083825260208201915060208460051b8701019350868411156141d057600080fd5b602086015b84811015613b8f5780516141e881613ebb565b83529183019183016141d5565b6000806040838503121561420857600080fd5b825167ffffffffffffffff8082111561422057600080fd5b818501915085601f83011261423457600080fd5b81516020614244613c4f83613c0a565b82815260059290921b8401810191818101908984111561426357600080fd5b948201945b838610156142915785518060060b81146142825760008081fd5b82529482019490820190614268565b918801519196509093505050808211156142aa57600080fd5b506142b78582860161418d565b9150509250929050565b600682810b9082900b03667fffffffffffff198112667fffffffffffff8213171561011657610116614091565b634e487b7160e01b600052601260045260246000fd5b60008160060b8360060b8061431b5761431b6142ee565b667fffffffffffff1982146000198214161561433957614339614091565b90059392505050565b600082614351576143516142ee565b500790565b60008160020b627fffff19810361436f5761436f614091565b6000190192915050565b600181815b808511156143b457816000190482111561439a5761439a614091565b808516156143a757918102915b93841c939080029061437e565b509250929050565b6000826143cb57506001610116565b816143d857506000610116565b81600181146143ee57600281146143f857614414565b6001915050610116565b60ff84111561440957614409614091565b50506001821b610116565b5060208310610133831016604e8410600b8410161715614437575081810a610116565b6144418383614379565b806000190482111561445557614455614091565b029392505050565b60006102b460ff8416836143bc565b818103600083128015838313168383128216171561448c5761448c614091565b5092915050565b6000600160ff1b82016144a8576144a8614091565b5060000390565b8051801515811461200457600080fd5b6000806000606084860312156144d457600080fd5b83516144df81613ebb565b6020850151909350915061401e604085016144af565b60006080828403121561450757600080fd5b61450f613bb0565b82518060070b811461452057600080fd5b8152602083015167ffffffffffffffff8116811461453d57600080fd5b60208201526040830151600381900b811461455757600080fd5b60408201526060928301519281019290925250919050565b808201828112600083128015821682158216171561458f5761458f614091565b505092915050565b6000806000606084860312156145ac57600080fd5b83516145b781613ebb565b602085015160409095015190969495509392505050565b60ff8416815267ffffffffffffffff831660208201526060604082015260006145fa6060830184613df6565b95945050505050565b6001600160a01b03831681526040602082018190526000906102ce90830184613af5565b60006020828403121561463957600080fd5b5051919050565b60008261464f5761464f6142ee565b600160ff1b82146000198414161561466957614669614091565b500590565b6146788185613abd565b60606020820152600061468e6060830185613af5565b8281036040840152610f4f8185613df6565b601f8211156146e8576000816000526020600020601f850160051c810160208610156146c95750805b601f850160051c820191505b8181101561325c578281556001016146d5565b505050565b815167ffffffffffffffff81111561470757614707613b9a565b61471b816147158454613dc2565b846146a0565b602080601f83116001811461475057600084156147385750858301515b600019600386901b1c1916600185901b17855561325c565b600085815260208120601f198616915b8281101561477f57888601518255948401946001909101908401614760565b508582101561479d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8082018082111561011657610116614091565b6000826147cf576147cf6142ee565b500490565b6000826147e3576147e36142ee565b500690565b80820260008212600160ff1b8414161561480457614804614091565b818105831482151761011657610116614091565b600069ffffffffffffffffffff82168061436f5761436f614091565b60006001820161484657614846614091565b5060010190565b60006102b483836143bc565b808202811582820484141761011657610116614091565b60006020828403121561488257600080fd5b6102b4826144af565b60006020828403121561489d57600080fd5b6102b482613fd7565b60006001600160ff1b01820161484657614846614091565b6000600160ff1b82016148d3576148d3614091565b506000190190565b60008160020b627fffff1981036148f4576148f4614091565b60000392915050565b6000825161490f818460208701613ad1565b919091019291505056fea264697066735822122074f32fef384fdc296b0859f1c1f941c8e736c6cb972aa9e2b894956ebd6a80b364736f6c63430008160033","storage":{}},"0x83a0444b93927c3afcbe46e522280390f748e171":{"nonce":1,"balance":"0x0","code":"0x6080604052366100135761001161001d565b005b61001b61001d565b005b6000610027610093565b90503660008037600080366000845af43d6000803e806000811461004a573d6000f35b3d6000fd5b600080823b905060008111915050919050565b6000806040516020016100749061017a565b6040516020818303038152906040528051906020012090508091505090565b600061009d6100c6565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000806040516020016100d89061020c565b6040516020818303038152906040528051906020012090508091505090565b600082825260208201905092915050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e4f776e6160008201527f626c650000000000000000000000000000000000000000000000000000000000602082015250565b60006101646023836100f7565b915061016f82610108565b604082019050919050565b6000602082019050818103600083015261019381610157565b9050919050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e50726f7860008201527f7900000000000000000000000000000000000000000000000000000000000000602082015250565b60006101f66021836100f7565b91506102018261019a565b604082019050919050565b60006020820190508181036000830152610225816101e9565b905091905056fea2646970667358221220800da1f73cebd5e4afa07496d9bca6b6c4f526bdd3f4014ec15c70fe3a1c441364736f6c63430008110033","storage":{"0x5a648c35a2f5512218b4683cf10e03f5b7c9dc7346e1bf77d304ae97f60f592b":{"value":"0x108f53faf774d7c4c56f5bce9ca6e605ce8aeadd","is_private":false},"0x5c7865864a2a990d80b5bb5c40e7b73a029960dc711fbb56120dfab976e92ea3":{"value":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","is_private":false}}},"0x90f79bf6eb2c4f870365e785982e1f101e93b906":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x976ea74026e726554db657fa54763abd0c3a0aa9":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x9965507d1a55bcc2695c58ba16fb37d819b0a4dc":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0xa0ee7a142d267c1f36714e4a8f75612f20a79720":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0xc67e2bd3108604cf0168c0e5ef9cd6d78b9bb14b":{"nonce":1,"balance":"0x21e19c6edb7e2445f20","code":"0x","storage":{}},"0xeb045d78d273107348b0300c01d29b7552d622ab":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266":{"nonce":1,"balance":"0x21e19e08b86820a43ea","code":"0x","storage":{}}},"best_block_number":"0x5","blocks":[{"header":{"parentHash":"0x08abe6e453727534d8dd708843a7522b7d500338bdfe2402ca105dcdb05eebe9","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xcd346446ed010523161f40a5f2b512def549bfb79e165b4354488738416481f2","transactionsRoot":"0xb3a4689832e0b599260ae70362ffcf224b60571b35ff8836904a3d81e2675d66","receiptsRoot":"0x2d13fdc120ab90536fed583939de7fb68b64926a306c1f629593ca9c2c93b198","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x1","gasLimit":"0x1c9c380","gasUsed":"0x3ea90d","timestamp":"0x66b200ca","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x2e0b6260","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[{"EIP1559":{"chainId":"0x343a","nonce":"0x0","gas":"0x3ea90d","maxFeePerGas":"0x83215600","maxPriorityFeePerGas":"0x3b9aca00","value":"0x0","accessList":[],"input":"0x608060405234801561001057600080fd5b5061494f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80632a952b2d1461005c57806350c946fe14610085578063625ca21c146100a5578063daa250be146100c6578063deba1b98146100d9575b600080fd5b61006f61006a366004613a63565b6100ec565b60405161007c9190613a7c565b60405180910390f35b610098610093366004613a63565b61011c565b60405161007c9190613b21565b6100b86100b3366004613c92565b610276565b60405190815260200161007c565b61006f6100d4366004613d5f565b6102bb565b6100b86100e7366004613c92565b6102d6565b6100f46139e4565b6040805160008082526020820190815281830190925261011691849190610310565b92915050565b6101416040805160608101909152806000815260200160608152602001606081525090565b61014a82610ab6565b60408051606081019091528154909190829060ff16600981111561017057610170613aa7565b600981111561018157610181613aa7565b815260200160018201805461019590613dc2565b80601f01602080910402602001604051908101604052809291908181526020018280546101c190613dc2565b801561020e5780601f106101e35761010080835404028352916020019161020e565b820191906000526020600020905b8154815290600101906020018083116101f157829003601f168201915b505050505081526020016002820180548060200260200160405190810160405280929190818152602001828054801561026657602002820191906000526020600020905b815481526020019060010190808311610252575b5050505050815250509050919050565b600080604051806060016040528086600981111561029657610296613aa7565b81526020018581526020018481525090506102b081610ac1565b9150505b9392505050565b6102c36139e4565b6102ce848484610310565b949350505050565b60008060405180606001604052808660098111156102f6576102f6613aa7565b81526020018581526020018481525090506102b081610acc565b6103186139e4565b81518351146103a05760408051634bab873760e11b81526004810191909152600d60448201526c72756e74696d6556616c75657360981b606482015260806024820152602260848201527f6d7573742062652073616d65206c656e6774682061732072756e74696d654b6560a482015261797360f01b60c482015260e4015b60405180910390fd5b60006103ab85610c26565b805490915060ff1660018160098111156103c7576103c7613aa7565b036104755761046c6103da838787610c84565b8360010180546103e990613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461041590613dc2565b80156104625780601f1061043757610100808354040283529160200191610462565b820191906000526020600020905b81548152906001019060200180831161044557829003601f168201915b5050505050610d46565b925050506102b4565b600281600981111561048957610489613aa7565b036105305761046c61049c838787610c84565b8360010180546104ab90613dc2565b80601f01602080910402602001604051908101604052809291908181526020018280546104d790613dc2565b80156105245780601f106104f957610100808354040283529160200191610524565b820191906000526020600020905b81548152906001019060200180831161050757829003601f168201915b50505050508787610ebb565b600381600981111561054457610544613aa7565b036105de5761046c82600101805461055b90613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461058790613dc2565b80156105d45780601f106105a9576101008083540402835291602001916105d4565b820191906000526020600020905b8154815290600101906020018083116105b757829003601f168201915b5050505050610f59565b60048160098111156105f2576105f2613aa7565b0361068c5761046c82600101805461060990613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461063590613dc2565b80156106825780601f1061065757610100808354040283529160200191610682565b820191906000526020600020905b81548152906001019060200180831161066557829003601f168201915b5050505050611087565b60058160098111156106a0576106a0613aa7565b0361073a5761046c8260010180546106b790613dc2565b80601f01602080910402602001604051908101604052809291908181526020018280546106e390613dc2565b80156107305780601f1061070557610100808354040283529160200191610730565b820191906000526020600020905b81548152906001019060200180831161071357829003601f168201915b505050505061131e565b600981600981111561074e5761074e613aa7565b036107ea5761046c82600101805461076590613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461079190613dc2565b80156107de5780601f106107b3576101008083540402835291602001916107de565b820191906000526020600020905b8154815290600101906020018083116107c157829003601f168201915b505050505086866114b5565b60068160098111156107fe576107fe613aa7565b036108a35761046c610811838787610c84565b83600101805461082090613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461084c90613dc2565b80156108995780601f1061086e57610100808354040283529160200191610899565b820191906000526020600020905b81548152906001019060200180831161087c57829003601f168201915b50505050506115c7565b60078160098111156108b7576108b7613aa7565b036109ec576040805160608101909152825461046c91908490829060ff1660098111156108e6576108e6613aa7565b60098111156108f7576108f7613aa7565b815260200160018201805461090b90613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461093790613dc2565b80156109845780601f1061095957610100808354040283529160200191610984565b820191906000526020600020905b81548152906001019060200180831161096757829003601f168201915b50505050508152602001600282018054806020026020016040519081016040528092919081815260200182805480156109dc57602002820191906000526020600020905b8154815260200190600101908083116109c8575b5050505050815250508686611728565b6008816009811115610a0057610a00613aa7565b03610a9a5761046c826001018054610a1790613dc2565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4390613dc2565b8015610a905780601f10610a6557610100808354040283529160200191610a90565b820191906000526020600020905b815481529060010190602001808311610a7357829003601f168201915b50505050506118a5565b6040516323a9bbc960e01b815260048101879052602401610397565b600061011682610c26565b6000610116826118ea565b6000610ad782610ac1565b9050610ae28161192a565b15610b35577fcb64985827770858ec421ad26da7e558c757541643036ce44d6b4eb9e8e5dc5e81836000015184602001518560400151604051610b289493929190613e32565b60405180910390a1919050565b610b3e82611a8c565b610b5d578160405163382bbbc960e11b81526004016103979190613b21565b60005b826040015151811015610bd957610b9383604001518281518110610b8657610b86613e6a565b602002602001015161192a565b610bd15782604001518181518110610bad57610bad613e6a565b6020026020010151604051632f19f96160e11b815260040161039791815260200190565b600101610b60565b50610be382611c31565b8351602085015160408087015190519395507fcb64985827770858ec421ad26da7e558c757541643036ce44d6b4eb9e8e5dc5e9450610b28938693929190613e32565b604080516020808201839052606082018190527f696f2e73796e7468657469782e6f7261636c652d6d616e616765722e4e6f6465608080840191909152828401949094528251808303909401845260a0909101909152815191012090565b600283015460609067ffffffffffffffff811115610ca457610ca4613b9a565b604051908082528060200260200182016040528015610cdd57816020015b610cca6139e4565b815260200190600190039081610cc25790505b50905060005b6002850154811015610d3e57610d19856002018281548110610d0757610d07613e6a565b90600052602060002001548585610310565b828281518110610d2b57610d2b613e6a565b6020908102919091010152600101610ce3565b509392505050565b610d4e6139e4565b600082806020019051810190610d649190613e80565b90506000816008811115610d7a57610d7a613aa7565b03610d9057610d8884611ca5565b915050610116565b6001816008811115610da457610da4613aa7565b03610db257610d8884611d0d565b6002816008811115610dc657610dc6613aa7565b03610dd457610d8884611d90565b6003816008811115610de857610de8613aa7565b03610df657610d8884611e13565b6004816008811115610e0a57610e0a613aa7565b03610e1857610d8884611ec9565b6005816008811115610e2c57610e2c613aa7565b03610e3a57610d8884612009565b6006816008811115610e4e57610e4e613aa7565b03610e5c57610d88846120e4565b6007816008811115610e7057610e70613aa7565b03610e7e57610d888461220c565b6008816008811115610e9257610e92613aa7565b03610ea057610d88846122ce565b80604051631be413d360e11b81526004016103979190613ea1565b610ec36139e4565b600084806020019051810190610ed99190613ed3565b604051631ecba7c360e31b81529091506001600160a01b0382169063f65d3e1890610f0e908990899089908990600401613ef0565b608060405180830381865afa158015610f2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4f9190613f91565b9695505050505050565b610f616139e4565b600080600084806020019051810190610f7a9190613fe8565b92509250925060008390506000806000836001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610fc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fec9190614041565b509350509250925060008660001461100f5761100a8585858a6123c7565b611011565b825b905060128660ff161161103b5761103661102f60ff881660126140a7565b82906124c2565b611053565b61105361104c601260ff89166140a7565b82906124dc565b9050604051806080016040528082815260200183815260200160008152602001600081525098505050505050505050919050565b61108f6139e4565b600080600080600080878060200190518101906110ac91906140ba565b604080516002808252606082018352979d50959b50939950919750955093506000929060208301908036833701905050905081816000815181106110f2576110f2613e6a565b602002602001019063ffffffff16908163ffffffff168152505060008160018151811061112157611121613e6a565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0385169063883bdbfd90611165908590600401614143565b600060405180830381865afa158015611182573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111aa91908101906141f5565b5090506000816000815181106111c2576111c2613e6a565b6020026020010151826001815181106111dd576111dd613e6a565b60200260200101516111ef91906142c1565b9050600061121761120563ffffffff87166124f6565b61120f9084614304565b60060b61252d565b905060008260060b12801561124c575061123b63ffffffff8616612569565b612569565b8260060b6112499190614342565b15155b1561125f578061125b81614356565b9150505b600061126d6012600a61445d565b9050600061128061123684848f8f612593565b905060006112908a60ff16612569565b61129c8c60ff16612569565b6112a6919061446c565b905060008082136112d1576112cc6112c56112c084614493565b612686565b84906124dc565b6112e4565b6112e46112dd83612686565b84906124c2565b905060405180608001604052808281526020014281526020016000815260200160008152509e505050505050505050505050505050919050565b6113266139e4565b60008060008480602001905181019061133f91906144bf565b91945092509050826000826113bc576040516396834ad360e01b8152600481018590526001600160a01b038316906396834ad390602401608060405180830381865afa158015611393573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b791906144f5565b611425565b604051639474f45b60e01b8152600481018590526001600160a01b03831690639474f45b90602401608060405180830381865afa158015611401573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142591906144f5565b90506000816040015160030b601261143d919061456f565b90506000808213611467576114626114576112c084614493565b845160070b906124dc565b61147e565b61147e61147383612686565b845160070b906124c2565b9050604051806080016040528082815260200184606001518152602001600081526020016000815250975050505050505050919050565b6114bd6139e4565b6000806000868060200190518101906114d69190614597565b92509250925060005b8651811015611545578681815181106114fa576114fa613e6a565b6020026020010151717374616c656e657373546f6c6572616e636560701b0361153d5785818151811061152f5761152f613e6a565b602002602001015160001c91505b6001016114df565b5060408051600180825281830190925260009160208083019080368337019050509050828160008151811061157c5761157c613e6a565b602002602001018181525050836001838360405160200161159f939291906145ce565b60408051601f198184030181529082905263cf2cabdf60e01b82526103979291600401614603565b6115cf6139e4565b6000828060200190518101906115e59190614627565b90506000846000815181106115fc576115fc613e6a565b602002602001015160000151905060008560018151811061161f5761161f613e6a565b6020026020010151600001519050808214611702576000611653601261164d611648858761446c565b6126a9565b906124c2565b905082158061167b5750611666836126a9565b6116709082614640565b61167985612569565b125b15611700576002875111156116b0578660028151811061169d5761169d613e6a565b6020026020010151945050505050610116565b826000036116d15760405163014cc07160e01b815260040160405180910390fd5b6116da836126a9565b6116e49082614640565b60405163dcac091960e01b815260040161039791815260200190565b505b8560008151811061171557611715613e6a565b6020026020010151935050505092915050565b6117306139e4565b6000846020015180602001905181019061174a9190614627565b905060005b84518110156117bc5784818151811061176a5761176a613e6a565b6020026020010151717374616c656e657373546f6c6572616e636560701b036117b4576117ad8482815181106117a2576117a2613e6a565b602002602001015190565b91506117bc565b60010161174f565b50600085604001516000815181106117d6576117d6613e6a565b6020026020010151905060006117ed828787610310565b60208101519091506117ff84426140a7565b1161180e5792506102b4915050565b86604001515160010361187157866040015160008151811061183257611832613e6a565b602002602001015181600001518260200151604051631808066560e21b8152600401610397939291909283526020830191909152604082015260600190565b61189a876040015160018151811061188b5761188b613e6a565b60200260200101518787610310565b979650505050505050565b6118ad6139e4565b6040518060800160405280838060200190518101906118cc9190614627565b81526020014281526020016000815260200160008152509050919050565b600081600001518260200151836040015160405160200161190d9392919061466e565b604051602081830303815290604052805190602001209050919050565b60008061193683610c26565b60408051606081019091528154909190829060ff16600981111561195c5761195c613aa7565b600981111561196d5761196d613aa7565b815260200160018201805461198190613dc2565b80601f01602080910402602001604051908101604052809291908181526020018280546119ad90613dc2565b80156119fa5780601f106119cf576101008083540402835291602001916119fa565b820191906000526020600020905b8154815290600101906020018083116119dd57829003601f168201915b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015611a5257602002820191906000526020600020905b815481526020019060010190808311611a3e575b505050505081525050905060006009811115611a7057611a70613aa7565b81516009811115611a8357611a83613aa7565b14159392505050565b6000600182516009811115611aa357611aa3613aa7565b1480611ac15750600682516009811115611abf57611abf613aa7565b145b80611ade5750600782516009811115611adc57611adc613aa7565b145b15611aee57611aec826126c1565b505b600182516009811115611b0357611b03613aa7565b03611b11576101168261284a565b600282516009811115611b2657611b26613aa7565b03611b3457610116826128a5565b600382516009811115611b4957611b49613aa7565b03611b575761011682612973565b600482516009811115611b6c57611b6c613aa7565b03611b7a5761011682612aae565b600582516009811115611b8f57611b8f613aa7565b03611b9d5761011682612e92565b600982516009811115611bb257611bb2613aa7565b03611bc05761011682612fcb565b600682516009811115611bd557611bd5613aa7565b03611be3576101168261300e565b600782516009811115611bf857611bf8613aa7565b03611c065761011682613052565b600882516009811115611c1b57611c1b613aa7565b03611c295761011682613078565b506000919050565b600080611c3d836118ea565b9050611c4881610c26565b8351815491935090839060ff19166001836009811115611c6a57611c6a613aa7565b021790555060208301516001830190611c8390826146ed565b5060408301518051611c9f916002850191602090910190613a0c565b50915091565b611cad6139e4565b60005b8251811015611d07578160200151838281518110611cd057611cd0613e6a565b6020026020010151602001511115611cff57828181518110611cf457611cf4613e6a565b602002602001015191505b600101611cb0565b50919050565b611d156139e4565b81600081518110611d2857611d28613e6a565b602002602001015190506000600190505b8251811015611d07578160000151838281518110611d5957611d59613e6a565b6020026020010151600001511215611d8857828181518110611d7d57611d7d613e6a565b602002602001015191505b600101611d39565b611d986139e4565b81600081518110611dab57611dab613e6a565b602002602001015190506000600190505b8251811015611d07578160000151838281518110611ddc57611ddc613e6a565b6020026020010151600001511315611e0b57828181518110611e0057611e00613e6a565b602002602001015191505b600101611dbc565b611e1b6139e4565b60005b8251811015611e9557828181518110611e3957611e39613e6a565b60200260200101516000015182600001818151611e56919061456f565b9052508251839082908110611e6d57611e6d613e6a565b60200260200101516020015182602001818151611e8a91906147ad565b905250600101611e1e565b50611ea08251612569565b8151611eac9190614640565b815281516020820151611ebf91906147c0565b6020820152919050565b611ed16139e4565b611eed826000611ee86001865161123691906140a7565b6130a4565b60028251611efb91906147d4565b600003611fd65760408051600280825260608201909252600091816020015b611f226139e4565b815260200190600190039081611f1a57905050905082600160028551611f4891906147c0565b611f5291906140a7565b81518110611f6257611f62613e6a565b602002602001015181600081518110611f7d57611f7d613e6a565b60200260200101819052508260028451611f9791906147c0565b81518110611fa757611fa7613e6a565b602002602001015181600181518110611fc257611fc2613e6a565b60200260200101819052506102b481611e13565b8160028351611fe591906147c0565b81518110611ff557611ff5613e6a565b60200260200101519050919050565b919050565b6120116139e4565b8160008151811061202457612024613e6a565b60209081029190910101515181528151829060009061204557612045613e6a565b6020908102919091018101518101519082015260015b82518110156120d25782818151811061207657612076613e6a565b6020026020010151600001518260000181815161209391906147e8565b90525082518390829081106120aa576120aa613e6a565b602002602001015160200151826020018181516120c791906147ad565b90525060010161205b565b5081518160200151611ebf91906147c0565b6120ec6139e4565b816000815181106120ff576120ff613e6a565b60209081029190910101515181528151829060009061212057612120613e6a565b6020908102919091018101518101519082015260015b82518110156120d25782818151811061215157612151613e6a565b60200260200101516000015160000361219e5782818151811061217657612176613e6a565b6020026020010151600001516040516338ee04a760e01b815260040161039791815260200190565b8281815181106121b0576121b0613e6a565b602002602001015160000151826000018181516121cd9190614640565b90525082518390829081106121e4576121e4613e6a565b6020026020010151602001518260200181815161220191906147ad565b905250600101612136565b6122146139e4565b8160008151811061222757612227613e6a565b60209081029190910101515181528151829060009061224857612248613e6a565b6020908102919091018101518101519082015260015b82518110156120d25761229083828151811061227c5761227c613e6a565b602090810291909101015151835190613264565b825282518390829081106122a6576122a6613e6a565b602002602001015160200151826020018181516122c391906147ad565b90525060010161225e565b6122d66139e4565b816000815181106122e9576122e9613e6a565b60209081029190910101515181528151829060009061230a5761230a613e6a565b6020908102919091018101518101519082015260015b82518110156120d25782818151811061233b5761233b613e6a565b6020026020010151600001516000036123605782818151811061217657612176613e6a565b61238983828151811061237557612375613e6a565b602090810291909101015151835190613283565b8252825183908290811061239f5761239f613e6a565b602002602001015160200151826020018181516123bc91906147ad565b905250600101612320565b6000826001826123d785426140a7565b90505b69ffffffffffffffffffff8716156124a3576001600160a01b038816639a6fc8f561240489614818565b6040516001600160e01b031960e084901b16815269ffffffffffffffffffff8216600482015290995060240160a060405180830381865afa925050508015612469575060408051601f3d908101601f1916820190925261246691810190614041565b60015b156124a357858210156124805750505050506124a3565b61248a848961456f565b97508661249681614834565b97505050505050506123da565b6124ac82612569565b6124b69084614640565b98975050505050505050565b60006124d261123683600a61484d565b6102b490846147e8565b60006124ec61123683600a61484d565b6102b49084614640565b6000667fffffffffffff66ffffffffffffff83161115612529576040516329d2678160e21b815260040160405180910390fd5b5090565b6000627fffff19600683900b128061254b5750627fffff600683900b135b1561252957604051630d962f7960e21b815260040160405180910390fd5b60006001600160ff1b038211156125295760405163677c430560e11b815260040160405180910390fd5b60008061259f86613298565b90506fffffffffffffffffffffffffffffffff6001600160a01b0382161161261c5760006125d66001600160a01b03831680614859565b9050836001600160a01b0316856001600160a01b03161061260557612600600160c01b87836136cd565b612614565b6126148187600160c01b6136cd565b92505061267d565b600061263b6001600160a01b03831680680100000000000000006136cd565b9050836001600160a01b0316856001600160a01b03161061266a57612665600160801b87836136cd565b612679565b6126798187600160801b6136cd565b9250505b50949350505050565b6000808212156125295760405163029f024d60e31b815260040160405180910390fd5b600080821215612529576126bc82614493565b610116565b6000805b8260400151518110156128415760006126fa846040015183815181106126ed576126ed613e6a565b6020026020010151610ab6565b60408051606081019091528154909190829060ff16600981111561272057612720613aa7565b600981111561273157612731613aa7565b815260200160018201805461274590613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461277190613dc2565b80156127be5780601f10612793576101008083540402835291602001916127be565b820191906000526020600020905b8154815290600101906020018083116127a157829003601f168201915b505050505081526020016002820180548060200260200160405190810160405280929190818152602001828054801561281657602002820191906000526020600020905b815481526020019060010190808311612802575b505050505081525050905061282a81611a8c565b612838575060009392505050565b506001016126c5565b50600192915050565b60006002826040015151101561286257506000919050565b81602001515160201461287757506000919050565b600082602001518060200190518101906128919190614627565b905060088111156128415750600092915050565b6000602082602001515110156128bd57506000919050565b600082602001518060200190518101906128d79190613ed3565b90506128ea816306e7ea3960e21b6138e2565b6128f75750600092915050565b604051633b70a5bf60e21b81526001600160a01b0382169063edc296fc90612923908690600401613b21565b6020604051808303816000875af1158015612942573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129669190614870565b6128415750600092915050565b6040810151516000901561298957506000919050565b81602001515160601461299e57506000919050565b60008083602001518060200190518101906129b99190613fe8565b92505091506000829050806001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015612a01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a259190614041565b5050505050806001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8c919061488b565b60ff168260ff1614612aa357506000949350505050565b506001949350505050565b60408101515160009015612ac457506000919050565b81602001515160c014612ad957506000919050565b6000806000806000808760200151806020019051810190612afa91906140ba565b9550955095509550955095508360ff16866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6c919061488b565b60ff1614612b8257506000979650505050505050565b8260ff16856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be8919061488b565b60ff1614612bfe57506000979650505050505050565b6000826001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c629190613ed3565b90506000836001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ca4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cc89190613ed3565b9050876001600160a01b0316826001600160a01b0316148015612cfc5750866001600160a01b0316816001600160a01b0316145b158015612d385750866001600160a01b0316826001600160a01b0316148015612d365750876001600160a01b0316816001600160a01b0316145b155b15612d4d575060009998505050505050505050565b60128660ff161180612d62575060128560ff16115b15612d77575060009998505050505050505050565b8263ffffffff16600003612d95575060009998505050505050505050565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110612dca57612dca613e6a565b602002602001019063ffffffff16908163ffffffff1681525050600081600181518110612df957612df9613e6a565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526001600160a01b0386169063883bdbfd90612e3a908490600401614143565b600060405180830381865afa158015612e57573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e7f91908101906141f5565b5060019c9b505050505050505050505050565b60408101515160009015612ea857506000919050565b816020015151606014612ebd57506000919050565b60008060008460200151806020019051810190612eda91906144bf565b919450925090508281612f55576040516396834ad360e01b8152600481018490526001600160a01b038216906396834ad390602401608060405180830381865afa158015612f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5091906144f5565b612fbe565b604051639474f45b60e01b8152600481018490526001600160a01b03821690639474f45b90602401608060405180830381865afa158015612f9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fbe91906144f5565b5060019695505050505050565b60408101515160009015612fe157506000919050565b816020015151606014612ff657506000919050565b8160200151806020019051810190612aa39190614597565b60008160400151516002148061302957508160400151516003145b61303557506000919050565b81602001515160201461304a57506000919050565b506001919050565b600081604001515160011480613029575081604001515160021461303557506000919050565b6040810151516000901561308e57506000919050565b6020826020015151101561304a57506000919050565b81818082036130b4575050505050565b6000856130da60026130c6888861446c565b6130d09190614640565b6112c0908861456f565b815181106130ea576130ea613e6a565b60200260200101516000015190505b818313613236575b808661310c85612686565b8151811061311c5761311c613e6a565b60200260200101516000015112156131405782613138816148a6565b935050613101565b8561314a83612686565b8151811061315a5761315a613e6a565b60200260200101516000015181121561317f5781613177816148be565b925050613140565b818313613231578561319083612686565b815181106131a0576131a0613e6a565b6020026020010151866131b285612686565b815181106131c2576131c2613e6a565b6020026020010151876131d486612686565b815181106131e4576131e4613e6a565b60200260200101886131f586612686565b8151811061320557613205613e6a565b602002602001018290528290525050828061321f906148a6565b935050818061322d906148be565b9250505b6130f9565b81851215613249576132498686846130a4565b8383121561325c5761325c8684866130a4565b505050505050565b6000670de0b6b3a764000061327983856147e8565b6102b49190614640565b600081613279670de0b6b3a7640000856147e8565b60008060008360020b126132b8576132b3600284900b612686565b6132c8565b6132c86112c0600285900b614493565b90506132e36112c06132dd620d89e7196148db565b60020b90565b8111156133165760405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606401610397565b60008160011660000361332d57600160801b61333f565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff169050600282161561337e576080613379826ffff97272373d413259a46990580e213a614859565b901c90505b60048216156133a85760806133a3826ffff2e50f5f656932ef12357cf3c7fdcc614859565b901c90505b60088216156133d25760806133cd826fffe5caca7e10e4e61c3624eaa0941cd0614859565b901c90505b60108216156133fc5760806133f7826fffcb9843d60f6159c9db58835c926644614859565b901c90505b6020821615613426576080613421826fff973b41fa98c081472e6896dfb254c0614859565b901c90505b604082161561345057608061344b826fff2ea16466c96a3843ec78b326b52861614859565b901c90505b608082161561347a576080613475826ffe5dee046a99a2a811c461f1969c3053614859565b901c90505b6101008216156134a55760806134a0826ffcbe86c7900a88aedcffc83b479aa3a4614859565b901c90505b6102008216156134d05760806134cb826ff987a7253ac413176f2b074cf7815e54614859565b901c90505b6104008216156134fb5760806134f6826ff3392b0822b70005940c7a398e4b70f3614859565b901c90505b610800821615613526576080613521826fe7159475a2c29b7443b29c7fa6e889d9614859565b901c90505b61100082161561355157608061354c826fd097f3bdfd2022b8845ad8f792aa5825614859565b901c90505b61200082161561357c576080613577826fa9f746462d870fdf8a65dc1f90e061e5614859565b901c90505b6140008216156135a75760806135a2826f70d869a156d2a1b890bb3df62baf32f7614859565b901c90505b6180008216156135d25760806135cd826f31be135f97d08fd981231505542fcfa6614859565b901c90505b620100008216156135fe5760806135f9826f09aa508b5b7a84e1c677de54f3e99bc9614859565b901c90505b62020000821615613629576080613624826e5d6af8dedb81196699c329225ee604614859565b901c90505b6204000082161561365357608061364e826d2216e584f5fa1ea926041bedfe98614859565b901c90505b6208000082161561367b576080613676826b048a170391f7dc42444e8fa2614859565b901c90505b60008460020b131561369657613693816000196147c0565b90505b6102ce6136a8640100000000836147d4565b156136b45760016136b7565b60005b6136c89060ff16602084901c6147ad565b6139ba565b6000808060001985870985870292508281108382030391505080600003613749576000841161373e5760405162461bcd60e51b815260206004820152601960248201527f48616e646c65206e6f6e2d6f766572666c6f77206361736573000000000000006044820152606401610397565b5082900490506102b4565b8084116137985760405162461bcd60e51b815260206004820152601960248201527f70726576656e74732064656e6f6d696e61746f72203d3d2030000000000000006044820152606401610397565b60008486880980840393811190920391905060006137d06137b887612569565b6137c188612569565b6137ca90614493565b16612686565b9586900495938490049360008190030460010190506137ef8184614859565b909317926000613800876003614859565b600218905061380f8188614859565b61381a9060026140a7565b6138249082614859565b90506138308188614859565b61383b9060026140a7565b6138459082614859565b90506138518188614859565b61385c9060026140a7565b6138669082614859565b90506138728188614859565b61387d9060026140a7565b6138879082614859565b90506138938188614859565b61389e9060026140a7565b6138a89082614859565b90506138b48188614859565b6138bf9060026140a7565b6138c99082614859565b90506138d58186614859565b9998505050505050505050565b604080516001600160e01b0319831660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166301ffc9a760e01b1790529051600091829182916001600160a01b0387169161394391906148fd565b6000604051808303816000865af19150503d8060008114613980576040519150601f19603f3d011682016040523d82523d6000602084013e613985565b606091505b50915091508161399a57600092505050610116565b80516000036139ae57600092505050610116565b60200151949350505050565b60006001600160a01b038211156125295760405163dccde8ed60e01b815260040160405180910390fd5b6040518060800160405280600081526020016000815260200160008152602001600081525090565b828054828255906000526020600020908101928215613a47579160200282015b82811115613a47578251825591602001919060010190613a2c565b506125299291505b808211156125295760008155600101613a4f565b600060208284031215613a7557600080fd5b5035919050565b8151815260208083015190820152604080830151908201526060808301519082015260808101610116565b634e487b7160e01b600052602160045260246000fd5b600a8110613acd57613acd613aa7565b9052565b60005b83811015613aec578181015183820152602001613ad4565b50506000910152565b60008151808452613b0d816020860160208601613ad1565b601f01601f19169290920160200192915050565b60006020808352613b358184018551613abd565b8084015160606040850152613b4d6080850182613af5565b6040860151858203601f19016060870152805180835290840192506000918401905b80831015613b8f5783518252928401926001929092019190840190613b6f565b509695505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613bd357613bd3613b9a565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613c0257613c02613b9a565b604052919050565b600067ffffffffffffffff821115613c2457613c24613b9a565b5060051b60200190565b600082601f830112613c3f57600080fd5b81356020613c54613c4f83613c0a565b613bd9565b8083825260208201915060208460051b870101935086841115613c7657600080fd5b602086015b84811015613b8f5780358352918301918301613c7b565b600080600060608486031215613ca757600080fd5b8335600a8110613cb657600080fd5b925060208481013567ffffffffffffffff80821115613cd457600080fd5b818701915087601f830112613ce857600080fd5b813581811115613cfa57613cfa613b9a565b613d0c601f8201601f19168501613bd9565b8181528985838601011115613d2057600080fd5b818585018683013760009181019094015291935060408601359180831115613d4757600080fd5b5050613d5586828701613c2e565b9150509250925092565b600080600060608486031215613d7457600080fd5b83359250602084013567ffffffffffffffff80821115613d9357600080fd5b613d9f87838801613c2e565b93506040860135915080821115613db557600080fd5b50613d5586828701613c2e565b600181811c90821680613dd657607f821691505b602082108103611d0757634e487b7160e01b600052602260045260246000fd5b60008151808452602080850194506020840160005b83811015613e2757815187529582019590820190600101613e0b565b509495945050505050565b848152613e426020820185613abd565b608060408201526000613e586080830185613af5565b828103606084015261189a8185613df6565b634e487b7160e01b600052603260045260246000fd5b600060208284031215613e9257600080fd5b8151600981106102b457600080fd5b6020810160098310613eb557613eb5613aa7565b91905290565b6001600160a01b0381168114613ed057600080fd5b50565b600060208284031215613ee557600080fd5b81516102b481613ebb565b608080825285518282018190526000919060209060a0850190828a01855b82811015613f5257613f42848351805182526020810151602083015260408101516040830152606081015160608301525050565b9285019290840190600101613f0e565b5050508481036020860152613f678189613af5565b925050508281036040840152613f7d8186613df6565b9050828103606084015261189a8185613df6565b600060808284031215613fa357600080fd5b613fab613bb0565b825181526020830151602082015260408301516040820152606083015160608201528091505092915050565b805160ff8116811461200457600080fd5b600080600060608486031215613ffd57600080fd5b835161400881613ebb565b6020850151909350915061401e60408501613fd7565b90509250925092565b805169ffffffffffffffffffff8116811461200457600080fd5b600080600080600060a0868803121561405957600080fd5b61406286614027565b945060208601519350604086015192506060860151915061408560808701614027565b90509295509295909350565b634e487b7160e01b600052601160045260246000fd5b8181038181111561011657610116614091565b60008060008060008060c087890312156140d357600080fd5b86516140de81613ebb565b60208801519096506140ef81613ebb565b94506140fd60408801613fd7565b935061410b60608801613fd7565b9250608087015161411b81613ebb565b60a088015190925063ffffffff8116811461413557600080fd5b809150509295509295509295565b6020808252825182820181905260009190848201906040850190845b8181101561418157835163ffffffff168352928401929184019160010161415f565b50909695505050505050565b600082601f83011261419e57600080fd5b815160206141ae613c4f83613c0a565b8083825260208201915060208460051b8701019350868411156141d057600080fd5b602086015b84811015613b8f5780516141e881613ebb565b83529183019183016141d5565b6000806040838503121561420857600080fd5b825167ffffffffffffffff8082111561422057600080fd5b818501915085601f83011261423457600080fd5b81516020614244613c4f83613c0a565b82815260059290921b8401810191818101908984111561426357600080fd5b948201945b838610156142915785518060060b81146142825760008081fd5b82529482019490820190614268565b918801519196509093505050808211156142aa57600080fd5b506142b78582860161418d565b9150509250929050565b600682810b9082900b03667fffffffffffff198112667fffffffffffff8213171561011657610116614091565b634e487b7160e01b600052601260045260246000fd5b60008160060b8360060b8061431b5761431b6142ee565b667fffffffffffff1982146000198214161561433957614339614091565b90059392505050565b600082614351576143516142ee565b500790565b60008160020b627fffff19810361436f5761436f614091565b6000190192915050565b600181815b808511156143b457816000190482111561439a5761439a614091565b808516156143a757918102915b93841c939080029061437e565b509250929050565b6000826143cb57506001610116565b816143d857506000610116565b81600181146143ee57600281146143f857614414565b6001915050610116565b60ff84111561440957614409614091565b50506001821b610116565b5060208310610133831016604e8410600b8410161715614437575081810a610116565b6144418383614379565b806000190482111561445557614455614091565b029392505050565b60006102b460ff8416836143bc565b818103600083128015838313168383128216171561448c5761448c614091565b5092915050565b6000600160ff1b82016144a8576144a8614091565b5060000390565b8051801515811461200457600080fd5b6000806000606084860312156144d457600080fd5b83516144df81613ebb565b6020850151909350915061401e604085016144af565b60006080828403121561450757600080fd5b61450f613bb0565b82518060070b811461452057600080fd5b8152602083015167ffffffffffffffff8116811461453d57600080fd5b60208201526040830151600381900b811461455757600080fd5b60408201526060928301519281019290925250919050565b808201828112600083128015821682158216171561458f5761458f614091565b505092915050565b6000806000606084860312156145ac57600080fd5b83516145b781613ebb565b602085015160409095015190969495509392505050565b60ff8416815267ffffffffffffffff831660208201526060604082015260006145fa6060830184613df6565b95945050505050565b6001600160a01b03831681526040602082018190526000906102ce90830184613af5565b60006020828403121561463957600080fd5b5051919050565b60008261464f5761464f6142ee565b600160ff1b82146000198414161561466957614669614091565b500590565b6146788185613abd565b60606020820152600061468e6060830185613af5565b8281036040840152610f4f8185613df6565b601f8211156146e8576000816000526020600020601f850160051c810160208610156146c95750805b601f850160051c820191505b8181101561325c578281556001016146d5565b505050565b815167ffffffffffffffff81111561470757614707613b9a565b61471b816147158454613dc2565b846146a0565b602080601f83116001811461475057600084156147385750858301515b600019600386901b1c1916600185901b17855561325c565b600085815260208120601f198616915b8281101561477f57888601518255948401946001909101908401614760565b508582101561479d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8082018082111561011657610116614091565b6000826147cf576147cf6142ee565b500490565b6000826147e3576147e36142ee565b500690565b80820260008212600160ff1b8414161561480457614804614091565b818105831482151761011657610116614091565b600069ffffffffffffffffffff82168061436f5761436f614091565b60006001820161484657614846614091565b5060010190565b60006102b483836143bc565b808202811582820484141761011657610116614091565b60006020828403121561488257600080fd5b6102b4826144af565b60006020828403121561489d57600080fd5b6102b482613fd7565b60006001600160ff1b01820161484657614846614091565b6000600160ff1b82016148d3576148d3614091565b506000190190565b60008160020b627fffff1981036148f4576148f4614091565b60000392915050565b6000825161490f818460208701613ad1565b919091019291505056fea264697066735822122074f32fef384fdc296b0859f1c1f941c8e736c6cb972aa9e2b894956ebd6a80b364736f6c63430008160033","r":"0x1","s":"0x1","yParity":"0x0","hash":"0xbc73db80bf4b8784ba10a8910a0b7ef85f6846d102b41dd990969ea205335354"}}],"ommers":[]},{"header":{"parentHash":"0x026ae0c6ae91f186a9befa1ac8be30eea35e30e77de51a731085221e5cd39209","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xb6003e7ba07a15a9e35f63daa484728ec4ceeded0c4d10ac1b04e9552d412b3c","transactionsRoot":"0x6e4969a136061ca7a390d12830d47a151585325a8d396819fb2b958ff85e9f8f","receiptsRoot":"0xc3e81df67d3e2a6c8345a954ef250cfcc41abcc2292a5aa263071124533fc9ad","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x3","gasLimit":"0x1c9c380","gasUsed":"0x3c0f6","timestamp":"0x66b200ce","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x18993a68","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[{"EIP1559":{"chainId":"0x343a","nonce":"0x0","gas":"0x3c0f6","maxFeePerGas":"0x5d4285cd","maxPriorityFeePerGas":"0x3b9aca00","value":"0x0","accessList":[],"input":"0x608060405234801561001057600080fd5b50610380806100206000396000f3fe6080604052600080357fffffffff0000000000000000000000000000000000000000000000000000000016905060008160e01c610251565b60006379ba509782101561015e5781631627540c811461009857632a952b2d81146100b457633659cfe681146100d0576350c946fe81146100ec576353a47bb781146101085763625ca21c81146101245763718fe928811461014057610158565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc9150610158565b738138ef7cf908021d117e542120b7a390650161079150610158565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc9150610158565b738138ef7cf908021d117e542120b7a390650161079150610158565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc9150610158565b738138ef7cf908021d117e542120b7a390650161079150610158565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc91505b5061024c565b816379ba509781146101a657638da5cb5b81146101c25763aaf10f4281146101de5763c7f62cda81146101fa5763daa250be81146102165763deba1b9881146102325761024a565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc915061024a565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc915061024a565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc915061024a565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc915061024a565b738138ef7cf908021d117e542120b7a39065016107915061024a565b738138ef7cf908021d117e542120b7a3906501610791505b505b919050565b61025a81610037565b915050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036102ce57816040517fc2a825f50000000000000000000000000000000000000000000000000000000081526004016102c5919061032f565b60405180910390fd5b3660008037600080366000845af43d6000803e80600081146102ef573d6000f35b3d6000fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610329816102f4565b82525050565b60006020820190506103446000830184610320565b9291505056fea264697066735822122017a4b7fdaaab3897a7b47abaed8d2ee92d558883d3bb2a8454f9601b2ab2c3db64736f6c63430008150033","r":"0x1","s":"0x1","yParity":"0x0","hash":"0x2476e039803622aeb040f924f04c493f559aed3d6c9372ab405cb33c8c695328"}}],"ommers":[]},{"header":{"parentHash":"0x3d22100ac0ee8d5cde334f7f926191a861b0648971ebc179547df28a0224c6d0","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x9511d4711e5c30a72b0bff38a261daa75dcc5ba8b772d970a5c742244b4c861b","transactionsRoot":"0xba5fff578d3d6c2cd63acbe9bca353eaa6fe22a5c408956eff49106e0a96c507","receiptsRoot":"0xbae111f01cb07677e3a8c5031546138407c01bc964d3493d732dc4edf47d36d3","logsBloom":"0x00000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000020000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000001000000000000000000000400000001000010000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x5","gasLimit":"0x1c9c380","gasUsed":"0xcae7","timestamp":"0x66b200cb","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x12e09c7a","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[{"EIP1559":{"chainId":"0x343a","nonce":"0x0","gas":"0xcc4d","maxFeePerGas":"0x557e5ec4","maxPriorityFeePerGas":"0x3b9aca00","to":"0x83a0444b93927c3afcbe46e522280390f748e171","value":"0x0","accessList":[],"input":"0x3659cfe6000000000000000000000000108f53faf774d7c4c56f5bce9ca6e605ce8aeadd","r":"0x1","s":"0x1","yParity":"0x0","hash":"0xf88e7b19ee347145c257e0cf7ac4ecc2bae83ca79d7edaa231e71d3213aeb151"}}],"ommers":[]},{"header":{"parentHash":"0x08abe6e453727534d8dd708843a7522b7d500338bdfe2402ca105dcdb05eebe9","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x9c8eaf493f8b4edce2ba1647343eadcc0989cf461e712c0a6253ff2ca1842bb7","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","receiptsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x1","gasLimit":"0x1c9c380","gasUsed":"0x0","timestamp":"0x66b200ca","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x3b9aca00","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[],"ommers":[]},{"header":{"parentHash":"0xdd07c07470e1deff3749831f0f1ad8d4b6e35505e83b3c6ea14181716197cd8a","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x29aa352e71b139e83b397bdd3dcf9b65d74770edaf3a9624d0dbc4f96f868680","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","receiptsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x2","gasLimit":"0x1c9c380","gasUsed":"0x0","timestamp":"0x66b200cb","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x24a1ab52","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[],"ommers":[]},{"header":{"parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","receiptsRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x0","gasLimit":"0x1c9c380","gasUsed":"0x0","timestamp":"0x66b200c9","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x3b9aca00","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[],"ommers":[]},{"header":{"parentHash":"0xf6930be4847cac5017bbcbec2756eed19f36b4196526a98a88e311c296e3a9be","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x29aa352e71b139e83b397bdd3dcf9b65d74770edaf3a9624d0dbc4f96f868680","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","receiptsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x1","gasLimit":"0x1c9c380","gasUsed":"0x0","timestamp":"0x66b200cc","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x200d75e8","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[],"ommers":[]},{"header":{"parentHash":"0x08abe6e453727534d8dd708843a7522b7d500338bdfe2402ca105dcdb05eebe9","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xb6003e7ba07a15a9e35f63daa484728ec4ceeded0c4d10ac1b04e9552d412b3c","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","receiptsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x4","gasLimit":"0x1c9c380","gasUsed":"0x0","timestamp":"0x66b200ca","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x1592fbf9","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[],"ommers":[]},{"header":{"parentHash":"0x149d41e3b89d8324cef3feff98ef308e97bafe8745cc8461c60172bc7d4c44ba","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x510f2275449c013534a25ad0b13c867caf720947b68bcbcd4863f7b172a5d023","transactionsRoot":"0x0b44110186e52ff0ceb6b0776ca2992c94144a4ed712eef65ea038260ef0fcc7","receiptsRoot":"0xc2823b8eb4730d9f2657137cc2ddc2c4f22ab68e0ab826236cf6a1551ca2b3a5","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x2","gasLimit":"0x1c9c380","gasUsed":"0xe61f9","timestamp":"0x66b200cb","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x342770c0","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[{"EIP1559":{"chainId":"0x343a","nonce":"0x0","gas":"0xe94d1","maxFeePerGas":"0x83215600","maxPriorityFeePerGas":"0x3b9aca00","to":"0x4e59b44847b379578588920ca78fbf26c0b4956c","value":"0x0","accessList":[],"input":"0x4786e4342646b3ba97c1790b6cf5a55087a36240b22570f5d3a5d6bcc929d93b608060405234801561001057600080fd5b5060008061002661006d60201b61081b1760201c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610141565b60008060405160200161007f90610121565b6040516020818303038152906040528051906020012090508091505090565b600082825260208201905092915050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e4f776e6160008201527f626c650000000000000000000000000000000000000000000000000000000000602082015250565b600061010b60238361009e565b9150610116826100af565b604082019050919050565b6000602082019050818103600083015261013a816100fe565b9050919050565b611000806101506000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806379ba50971161005b57806379ba5097146100ed5780638da5cb5b146100f7578063aaf10f4214610115578063c7f62cda1461013357610088565b80631627540c1461008d5780633659cfe6146100a957806353a47bb7146100c5578063718fe928146100e3575b600080fd5b6100a760048036038101906100a29190610d25565b61014f565b005b6100c360048036038101906100be9190610d25565b6102d0565b005b6100cd6102e4565b6040516100da9190610d61565b60405180910390f35b6100eb610317565b005b6100f56103fe565b005b6100ff61058b565b60405161010c9190610d61565b60405180910390f35b61011d6105be565b60405161012a9190610d61565b60405180910390f35b61014d60048036038101906101489190610d25565b6105f1565b005b61015761084c565b600061016161081b565b9050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036101c9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610252576040517fa88ee57700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce22826040516102c49190610d61565b60405180910390a15050565b6102d861084c565b6102e1816108c5565b50565b60006102ee61081b565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061032161081b565b90503373ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146103b757336040517fa0e5a0d70000000000000000000000000000000000000000000000000000000081526004016103ae9190610d61565b60405180910390fd5b60008160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061040861081b565b905060008160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104a357336040517fa0e5a0d700000000000000000000000000000000000000000000000000000000815260040161049a9190610d61565b60405180910390fd5b7fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c8260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826040516104f8929190610d7c565b60405180910390a1808260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008260010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600061059561081b565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006105c8610b05565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006105fb610b05565b905060018160000160146101000a81548160ff02191690831515021790555060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16633659cfe6846040516024016106cc9190610d61565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161071b9190610e16565b600060405180830381855af49150503d8060008114610756576040519150601f19603f3d011682016040523d82523d6000602084013e61075b565b606091505b505090508015806107c357508173ffffffffffffffffffffffffffffffffffffffff16610786610b05565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b156107fa576040517fa1cfa5a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008360000160146101000a81548160ff0219169083151502179055600080fd5b60008060405160200161082d90610eb0565b6040516020818303038152906040528051906020012090508091505090565b610854610b36565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108c357336040517f8e4a23d60000000000000000000000000000000000000000000000000000000081526004016108ba9190610d61565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361092b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093481610b69565b61097557806040517f8a8b41ec00000000000000000000000000000000000000000000000000000000815260040161096c9190610d61565b60405180910390fd5b600061097f610b05565b90508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a0a576040517fa88ee57700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060000160149054906101000a900460ff16158015610a2e5750610a2d82610b7c565b5b15610a7057816040517f15504301000000000000000000000000000000000000000000000000000000008152600401610a679190610d61565b60405180910390fd5b818160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503073ffffffffffffffffffffffffffffffffffffffff167f5d611f318680d00598bb735d61bacf0c514c6b50e1e5ad30040a4df2b12791c783604051610af99190610d61565b60405180910390a25050565b600080604051602001610b1790610f42565b6040516020818303038152906040528051906020012090508091505090565b6000610b4061081b565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080823b905060008111915050919050565b60008060003073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1663c7f62cda86604051602401610bc59190610d61565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610c149190610e16565b600060405180830381855af49150503d8060008114610c4f576040519150601f19603f3d011682016040523d82523d6000602084013e610c54565b606091505b509150915081158015610cb9575063a1cfa5a860e01b604051602001610c7a9190610faf565b6040516020818303038152906040528051906020012081604051602001610ca19190610e16565b60405160208183030381529060405280519060200120145b92505050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610cf282610cc7565b9050919050565b610d0281610ce7565b8114610d0d57600080fd5b50565b600081359050610d1f81610cf9565b92915050565b600060208284031215610d3b57610d3a610cc2565b5b6000610d4984828501610d10565b91505092915050565b610d5b81610ce7565b82525050565b6000602082019050610d766000830184610d52565b92915050565b6000604082019050610d916000830185610d52565b610d9e6020830184610d52565b9392505050565b600081519050919050565b600081905092915050565b60005b83811015610dd9578082015181840152602081019050610dbe565b60008484015250505050565b6000610df082610da5565b610dfa8185610db0565b9350610e0a818560208601610dbb565b80840191505092915050565b6000610e228284610de5565b915081905092915050565b600082825260208201905092915050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e4f776e6160008201527f626c650000000000000000000000000000000000000000000000000000000000602082015250565b6000610e9a602383610e2d565b9150610ea582610e3e565b604082019050919050565b60006020820190508181036000830152610ec981610e8d565b9050919050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e50726f7860008201527f7900000000000000000000000000000000000000000000000000000000000000602082015250565b6000610f2c602183610e2d565b9150610f3782610ed0565b604082019050919050565b60006020820190508181036000830152610f5b81610f1f565b9050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b610fa9610fa482610f62565b610f8e565b82525050565b6000610fbb8284610f98565b6004820191508190509291505056fea264697066735822122023a7c33d7b91dce35ffbcf8837693364ab22a3905d0fc00016833e5fac45ca2f64736f6c63430008110033","r":"0x1","s":"0x1","yParity":"0x0","hash":"0x4feae6769d748b4f0f7c9bf21d782236c88f13906789a3ec602961296e4c3e43"}}],"ommers":[]},{"header":{"parentHash":"0xb3535af5103fd1c2bbd6dc7ff23f0799037a6542c231ebcb85abd776560fa512","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x23d74fb99ff6e42cbb5c33f92b078e37be6af2b6092459b103ff7059a6517ebc","transactionsRoot":"0x9eab45eca206fe11c107ea985c7d02fcfa442836aea3e04ba11dc4df587d5aa6","receiptsRoot":"0xe25abcfa973db8c55f73292137c626430de130a382ad4466337fefb0f7c8fde0","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x2","gasLimit":"0x1c9c380","gasUsed":"0x3ce3f","timestamp":"0x66b200cd","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x1c0bc72b","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[{"EIP1559":{"chainId":"0x343a","nonce":"0x0","gas":"0x3d8a8","maxFeePerGas":"0x6211577c","maxPriorityFeePerGas":"0x3b9aca00","to":"0x4e59b44847b379578588920ca78fbf26c0b4956c","value":"0x0","accessList":[],"input":"0x4786e4342646b3ba97c1790b6cf5a55087a36240b22570f5d3a5d6bcc929d93b608060405234801561001057600080fd5b5060405161068538038061068583398181016040528101906100329190610275565b818181600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361009b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100ae8161019d60201b61004f1760201c565b6100ef57806040517f8a8b41ec0000000000000000000000000000000000000000000000000000000081526004016100e691906102c4565b60405180910390fd5b806100fe6101b060201b60201c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050806101536101e160201b6100621760201c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050610414565b600080823b905060008111915050919050565b6000806040516020016101c290610362565b6040516020818303038152906040528051906020012090508091505090565b6000806040516020016101f3906103f4565b6040516020818303038152906040528051906020012090508091505090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061024282610217565b9050919050565b61025281610237565b811461025d57600080fd5b50565b60008151905061026f81610249565b92915050565b6000806040838503121561028c5761028b610212565b5b600061029a85828601610260565b92505060206102ab85828601610260565b9150509250929050565b6102be81610237565b82525050565b60006020820190506102d960008301846102b5565b92915050565b600082825260208201905092915050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e50726f7860008201527f7900000000000000000000000000000000000000000000000000000000000000602082015250565b600061034c6021836102df565b9150610357826102f0565b604082019050919050565b6000602082019050818103600083015261037b8161033f565b9050919050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e4f776e6160008201527f626c650000000000000000000000000000000000000000000000000000000000602082015250565b60006103de6023836102df565b91506103e982610382565b604082019050919050565b6000602082019050818103600083015261040d816103d1565b9050919050565b610262806104236000396000f3fe6080604052366100135761001161001d565b005b61001b61001d565b005b6000610027610093565b90503660008037600080366000845af43d6000803e806000811461004a573d6000f35b3d6000fd5b600080823b905060008111915050919050565b6000806040516020016100749061017a565b6040516020818303038152906040528051906020012090508091505090565b600061009d6100c6565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000806040516020016100d89061020c565b6040516020818303038152906040528051906020012090508091505090565b600082825260208201905092915050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e4f776e6160008201527f626c650000000000000000000000000000000000000000000000000000000000602082015250565b60006101646023836100f7565b915061016f82610108565b604082019050919050565b6000602082019050818103600083015261019381610157565b9050919050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e50726f7860008201527f7900000000000000000000000000000000000000000000000000000000000000602082015250565b60006101f66021836100f7565b91506102018261019a565b604082019050919050565b60006020820190508181036000830152610225816101e9565b905091905056fea2646970667358221220800da1f73cebd5e4afa07496d9bca6b6c4f526bdd3f4014ec15c70fe3a1c441364736f6c6343000811003300000000000000000000000047d08dad17ccb558b3ea74b1a0e73a9cc804a9dc000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","r":"0x1","s":"0x1","yParity":"0x0","hash":"0xb6794d5c7abed6f91d447e8efb72ef2580595a6d7c8dee57ba1dbb330970146a"}}],"ommers":[]},{"header":{"parentHash":"0x08abe6e453727534d8dd708843a7522b7d500338bdfe2402ca105dcdb05eebe9","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x510f2275449c013534a25ad0b13c867caf720947b68bcbcd4863f7b172a5d023","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","receiptsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x3","gasLimit":"0x1c9c380","gasUsed":"0x0","timestamp":"0x66b200ca","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x29dd5614","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[],"ommers":[]}]} diff --git a/crates/anvil/tests/it/anvil_api.rs b/crates/anvil/tests/it/anvil_api.rs index 9eb44c69b..46e6b8793 100644 --- a/crates/anvil/tests/it/anvil_api.rs +++ b/crates/anvil/tests/it/anvil_api.rs @@ -451,7 +451,7 @@ async fn can_get_node_info() { let block_number = provider.get_block_number().await.unwrap(); let block = provider.get_block(BlockId::from(block_number), false.into()).await.unwrap().unwrap(); - let hard_fork: &str = SpecId::CANCUN.into(); + let hard_fork: &str = SpecId::LATEST.into(); let expected_node_info = NodeInfo { current_block_number: 0_u64, diff --git a/crates/anvil/tests/it/api.rs b/crates/anvil/tests/it/api.rs index 946118af8..6adc53570 100644 --- a/crates/anvil/tests/it/api.rs +++ b/crates/anvil/tests/it/api.rs @@ -7,9 +7,9 @@ use crate::{ use alloy_network::{EthereumWallet, TransactionBuilder}; use alloy_primitives::{ map::{AddressHashMap, B256HashMap, HashMap}, - Address, ChainId, B256, U256, + Address, ChainId, TxKind, B256, U256, }; -use alloy_provider::Provider; +use alloy_provider::{create_seismic_provider, test_utils, Provider, SendableTx}; use alloy_rpc_types::{ request::TransactionRequest, state::AccountOverride, BlockId, BlockNumberOrTag, BlockTransactions, @@ -18,6 +18,7 @@ use alloy_serde::WithOtherFields; use anvil::{eth::api::CLIENT_VERSION, spawn, NodeConfig, CHAIN_ID}; use futures::join; use std::time::Duration; +use url::Url; #[tokio::test(flavor = "multi_thread")] async fn can_get_block_number() { @@ -276,7 +277,10 @@ async fn can_call_with_undersized_max_fee_per_gas() { let wallet = handle.dev_wallets().next().unwrap(); let signer: EthereumWallet = wallet.clone().into(); - let provider = http_provider_with_signer(&handle.http_endpoint(), signer); + let node_url = Url::parse(&handle.http_endpoint()).unwrap(); + + let provider = http_provider_with_signer(&handle.http_endpoint(), signer.clone()); + let seismic_provider = create_seismic_provider(signer.clone(), node_url); api.anvil_set_auto_mine(true).await.unwrap(); @@ -291,15 +295,17 @@ async fn can_call_with_undersized_max_fee_per_gas() { assert!(undersized_max_fee_per_gas < latest_block_base_fee_per_gas); - let last_sender = simple_storage_contract - .lastSender() - .max_fee_per_gas(undersized_max_fee_per_gas.into()) - .from(wallet.address()) - .call() + let last_sender_tx = simple_storage_contract.lastSender().into_transaction_request(); + let raw_input = last_sender_tx.input().unwrap(); + let output = seismic_provider + .seismic_call(SendableTx::Builder(test_utils::get_seismic_tx_builder( + raw_input.clone(), + TxKind::Call(simple_storage_contract.address().clone()), + wallet.address(), + ))) .await - .unwrap() - ._0; - assert_eq!(last_sender, Address::ZERO); + .unwrap(); + assert_eq!(**output, B256::ZERO.to_vec()); } #[tokio::test(flavor = "multi_thread")] diff --git a/crates/anvil/tests/it/fork.rs b/crates/anvil/tests/it/fork.rs index 8e7736b0d..c0b784219 100644 --- a/crates/anvil/tests/it/fork.rs +++ b/crates/anvil/tests/it/fork.rs @@ -1306,8 +1306,8 @@ async fn test_base_fork_gas_limit() { .unwrap() .unwrap(); - assert!(api.gas_limit() >= uint!(132_000_000_U256)); - assert!(block.header.gas_limit >= 132_000_000_u64); + assert!(api.gas_limit() >= uint!(96_000_000_U256)); + assert!(block.header.gas_limit >= 96_000_000_u64); } // diff --git a/crates/anvil/tests/it/revert.rs b/crates/anvil/tests/it/revert.rs index 55762fd0f..2e788c3ba 100644 --- a/crates/anvil/tests/it/revert.rs +++ b/crates/anvil/tests/it/revert.rs @@ -1,11 +1,13 @@ use crate::abi::VendingMachine; +use alloy_consensus::TxSeismic; use alloy_network::TransactionBuilder; -use alloy_primitives::{bytes, U256}; -use alloy_provider::Provider; -use alloy_rpc_types::TransactionRequest; +use alloy_primitives::{bytes, Address, Bytes, TxKind, U256}; +use alloy_provider::{create_seismic_provider, Provider, SendableTx}; +use alloy_rpc_types::{TransactionInput, TransactionRequest}; use alloy_serde::WithOtherFields; use alloy_sol_types::sol; use anvil::{spawn, NodeConfig}; +use url::Url; #[tokio::test(flavor = "multi_thread")] async fn test_deploy_reverting() { @@ -65,16 +67,47 @@ async fn test_revert_messages() { async fn test_solc_revert_example() { let (_api, handle) = spawn(NodeConfig::test()).await; let sender = handle.dev_accounts().next().unwrap(); + let wallet = handle.dev_wallets().next().unwrap(); let provider = handle.http_provider(); + let node_url = Url::parse(&handle.http_endpoint()).unwrap(); + + let seismic_provider = create_seismic_provider(wallet.clone().into(), node_url); let contract = VendingMachine::deploy(&provider).await.unwrap(); + let tx = contract.buy(U256::from(100)).into_transaction_request(); + let input = tx.input().unwrap(); + let err = seismic_provider + .seismic_call(SendableTx::Builder(get_seismic_tx_builder( + input.clone(), + TxKind::Call(contract.address().clone()), + sender, + U256::from(1), + ))) + .await + .unwrap_err(); - let err = - contract.buy(U256::from(100)).value(U256::from(1)).from(sender).call().await.unwrap_err(); let s = err.to_string(); assert!(s.contains("Not enough Ether provided."), "{s:?}"); } +pub fn get_seismic_tx_builder( + plaintext: Bytes, + to: TxKind, + from: Address, + value: U256, +) -> TransactionRequest { + TransactionRequest { + from: Some(from), + to: Some(to), + input: TransactionInput { input: Some(plaintext), data: None }, + transaction_type: Some(TxSeismic::TX_TYPE), + gas_price: Some(20e9 as u128), /* make seismic tx treated as legacy tx when estimate + * for gas */ + value: Some(value), + ..Default::default() + } +} + // #[tokio::test(flavor = "multi_thread")] async fn test_another_revert_message() { diff --git a/crates/cast/tests/cli/main.rs b/crates/cast/tests/cli/main.rs index 3c3096a36..c55877050 100644 --- a/crates/cast/tests/cli/main.rs +++ b/crates/cast/tests/cli/main.rs @@ -1600,6 +1600,7 @@ forgetest!(error_event_decode_with_cache, |prj, cmd| { prj.add_source( "LocalProjectContract", r#" +pragma solidity ^0.8.27; contract ContractWithCustomError { error AnotherValueTooHigh(uint256, address); event MyUniqueEventWithinLocalProject(uint256 a, address b); @@ -1766,6 +1767,7 @@ forgetest_async!(decode_traces_with_project_artifacts, |prj, cmd| { prj.add_source( "LocalProjectContract", r#" +pragma solidity ^0.8.27; contract LocalProjectContract { event LocalProjectContractCreated(address owner); @@ -1779,6 +1781,7 @@ contract LocalProjectContract { prj.add_script( "LocalProjectScript", r#" +pragma solidity ^0.8.27; import "forge-std/Script.sol"; import {LocalProjectContract} from "../src/LocalProjectContract.sol"; @@ -1833,10 +1836,10 @@ Nothing to compile .stdout_eq(str![[r#" Executing previous transactions from the block. Traces: - [13520] → new @0x5FbDB2315678afecb367f032d93F642f64180aa3 + [21326] → new @0x5FbDB2315678afecb367f032d93F642f64180aa3 ├─ emit topic 0: 0xa7263295d3a687d750d1fd377b5df47de69d7db8decc745aaa4bbee44dc1688d │ data: 0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266 - └─ ← [Return] 62 bytes of code + └─ ← [Return] 101 bytes of code Transaction successfully executed. @@ -1853,9 +1856,9 @@ Executing previous transactions from the block. Compiling project to generate artifacts No files changed, compilation skipped Traces: - [13520] → new LocalProjectContract@0x5FbDB2315678afecb367f032d93F642f64180aa3 + [21326] → new LocalProjectContract@0x5FbDB2315678afecb367f032d93F642f64180aa3 ├─ emit LocalProjectContractCreated(owner: 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266) - └─ ← [Return] 62 bytes of code + └─ ← [Return] 101 bytes of code Transaction successfully executed. @@ -1917,7 +1920,7 @@ Executing previous transactions from the block. Traces: [22287] 0x5FbDB2315678afecb367f032d93F642f64180aa3::setNumber(111) ├─ storage changes: - │ @ 0: 0 → 111 + │ @ 0: 0, false → 111, false └─ ← [Stop] @@ -1935,6 +1938,7 @@ forgetest_async!(decode_external_libraries_with_cached_selectors, |prj, cmd| { prj.add_source( "ExternalLib", r#" +pragma solidity ^0.8.27; import "./CounterInExternalLib.sol"; library ExternalLib { function updateCounterInExternalLib(CounterInExternalLib.Info storage counterInfo, uint256 counter) public { @@ -1947,6 +1951,7 @@ library ExternalLib { prj.add_source( "CounterInExternalLib", r#" +pragma solidity ^0.8.27; import "./ExternalLib.sol"; contract CounterInExternalLib { struct Info { @@ -1963,6 +1968,7 @@ contract CounterInExternalLib { prj.add_script( "CounterInExternalLibScript", r#" +pragma solidity ^0.8.27; import "forge-std/Script.sol"; import {CounterInExternalLib} from "../src/CounterInExternalLib.sol"; contract CounterInExternalLibScript is Script { @@ -2006,10 +2012,10 @@ contract CounterInExternalLibScript is Script { .stdout_eq(str![[r#" ... Traces: - [37739] → new @0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512 - ├─ [22411] 0xfAb06527117d29EA121998AC4fAB9Fc88bF5f979::updateCounterInExternalLib(0, 100) [delegatecall] + [45545] → new @0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512 + ├─ [22411] 0x9910ce36aA931aD4D5383C90B962a459C2eC71BB::updateCounterInExternalLib(0, 100) [delegatecall] │ └─ ← [Stop] - └─ ← [Return] 62 bytes of code + └─ ← [Return] 101 bytes of code Transaction successfully executed. diff --git a/crates/config/src/lib.rs b/crates/config/src/lib.rs index c47607672..87b5346ea 100644 --- a/crates/config/src/lib.rs +++ b/crates/config/src/lib.rs @@ -884,12 +884,9 @@ impl Config { // Turn on seismic flag if evm version is seismic. For now this logic works. pub fn sanitize_seismic_settings(&mut self) { - if self.seismic_version == SpecId::MERCURY { + if SpecId::MERCURY.is_enabled_in(self.seismic_version) { self.seismic = true; } - if self.seismic { - self.seismic_version = SpecId::MERCURY; - } } /// Cleans up any duplicate `Remapping` and sorts them diff --git a/crates/test-utils/Cargo.toml b/crates/test-utils/Cargo.toml index efe6d288f..a16ac2624 100644 --- a/crates/test-utils/Cargo.toml +++ b/crates/test-utils/Cargo.toml @@ -20,7 +20,17 @@ foundry-compilers = { workspace = true, features = ["project-util"] } foundry-config.workspace = true alloy-primitives.workspace = true -alloy-provider.workspace = true +alloy-provider = { workspace = true, features = [ + "reqwest", +] } + +revm = { workspace = true, features = [ + "std", + "serde", + "memory_limit", + "c-kzg", + "seismic" +] } eyre.workspace = true fd-lock = "4.0" @@ -40,3 +50,4 @@ foundry-block-explorers.workspace = true [features] # feature for integration tests that test external projects external-integration-tests = [] +seismic = [] diff --git a/crates/test-utils/src/util.rs b/crates/test-utils/src/util.rs index e7410ed60..ad0608769 100644 --- a/crates/test-utils/src/util.rs +++ b/crates/test-utils/src/util.rs @@ -657,7 +657,7 @@ impl TestProject { /// Returns the path to the forge executable. pub fn forge_bin(&self) -> Command { - let forge = self.exe_root.join(format!("../forge{}", env::consts::EXE_SUFFIX)); + let forge = self.exe_root.join(format!("../sforge{}", env::consts::EXE_SUFFIX)); let forge = forge.canonicalize().unwrap_or_else(|_| forge.clone()); let mut cmd = Command::new(forge); cmd.current_dir(self.inner.root()); From e62daa1b9f6ebce7658d2f93f5de7945272ceafb Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Mon, 10 Feb 2025 10:10:34 -0500 Subject: [PATCH 046/130] set codeowner to ameya and christian (#80) --- .github/CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 63b25bbbc..799a202ac 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1 @@ -* @danipopes @klkvr @mattsse @grandizzy @yash-atreya @zerosnacks +* @ameya-deshmukh @cdrappi From 341cc79d72c21765973b784e25aec0265bcd75f7 Mon Sep 17 00:00:00 2001 From: sfyll <39958632+sfyll@users.noreply.github.com> Date: Mon, 10 Feb 2025 18:29:42 +0100 Subject: [PATCH 047/130] Fix compilers (#81) --- .github/workflows/seismic.yml | 3 + Cargo.lock | 282 +++++++++++++++++-------------- Cargo.toml | 8 +- crates/config/src/lib.rs | 7 +- crates/config/src/utils.rs | 1 + crates/forge/src/multi_runner.rs | 9 +- crates/forge/tests/cli/config.rs | 2 - crates/test-utils/Cargo.toml | 9 - 8 files changed, 168 insertions(+), 153 deletions(-) diff --git a/.github/workflows/seismic.yml b/.github/workflows/seismic.yml index 5f23bb377..2605837e7 100644 --- a/.github/workflows/seismic.yml +++ b/.github/workflows/seismic.yml @@ -47,6 +47,7 @@ jobs: ${{ secrets.ACTIONS_SFOUNDRYFDB_SSH_ED25519 }} ${{ secrets.ACTIONS_SRETH_SSH_ED25519 }} ${{ secrets.ACTIONS_TEESERVICE_SSH_ED25519 }} + ${{ secrets.ACTIONS_SCOMPILERS_SSH_ED25519 }} - name: sforge build run: cargo build --bin sforge - name: sanvil build @@ -78,6 +79,7 @@ jobs: ${{ secrets.ACTIONS_SFOUNDRYFDB_SSH_ED25519 }} ${{ secrets.ACTIONS_SRETH_SSH_ED25519 }} ${{ secrets.ACTIONS_TEESERVICE_SSH_ED25519 }} + ${{ secrets.ACTIONS_SCOMPILERS_SSH_ED25519 }} - name: sforge warnings run: RUSTFLAGS="-D warnings" cargo check --bin sforge - name: sanvil warnings @@ -105,6 +107,7 @@ jobs: ${{ secrets.ACTIONS_SFOUNDRYFDB_SSH_ED25519 }} ${{ secrets.ACTIONS_SRETH_SSH_ED25519 }} ${{ secrets.ACTIONS_TEESERVICE_SSH_ED25519 }} + ${{ secrets.ACTIONS_SCOMPILERS_SSH_ED25519 }} - name: seismic transaction run: cargo test test_seismic_transaction # - name: sforge tests diff --git a/Cargo.lock b/Cargo.lock index ab39b7ea5..9f53e0ac3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -809,9 +809,9 @@ dependencies = [ [[package]] name = "alloy-trie" -version = "0.7.8" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6917c79e837aa7b77b7a6dae9f89cbe15313ac161c4d3cfaf8909ef21f3d22d8" +checksum = "d95a94854e420f07e962f7807485856cde359ab99ab6413883e15235ad996e8b" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -1314,9 +1314,9 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "aurora-engine-modexp" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0aef7712851e524f35fbbb74fa6599c5cd8692056a1c36f9ca0d2001b670e7e5" +checksum = "518bc5745a6264b5fd7b09dffb9667e400ee9e2bbe18555fac75e1fe9afa0df9" dependencies = [ "hex", "num", @@ -1341,9 +1341,9 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "aws-config" -version = "1.5.15" +version = "1.5.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc47e70fc35d054c8fcd296d47a61711f043ac80534a10b4f741904f81e73a90" +checksum = "50236e4d60fe8458de90a71c0922c761e41755adf091b1b03de1cef537179915" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1383,9 +1383,9 @@ dependencies = [ [[package]] name = "aws-runtime" -version = "1.5.4" +version = "1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bee7643696e7fdd74c10f9eb42848a87fe469d35eae9c3323f80aa98f350baac" +checksum = "76dd04d39cc12844c0994f2c9c5a6f5184c22e9188ec1ff723de41910a21dcad" dependencies = [ "aws-credential-types", "aws-sigv4", @@ -1403,14 +1403,14 @@ dependencies = [ "percent-encoding", "pin-project-lite", "tracing", - "uuid 1.12.1", + "uuid 1.13.1", ] [[package]] name = "aws-sdk-kms" -version = "1.58.0" +version = "1.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40b7a24700ac548025a47a5c579886f5198895bb1eccd8964dfd71cd66c16912" +checksum = "2da21a543bfc06001637785ec6ed7b4bec9a3d737f0abca3ddd8d7b962e71fb1" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1430,9 +1430,9 @@ dependencies = [ [[package]] name = "aws-sdk-sso" -version = "1.57.0" +version = "1.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c54bab121fe1881a74c338c5f723d1592bf3b53167f80268a1274f404e1acc38" +checksum = "16ff718c9ee45cc1ebd4774a0e086bb80a6ab752b4902edf1c9f56b86ee1f770" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1452,9 +1452,9 @@ dependencies = [ [[package]] name = "aws-sdk-ssooidc" -version = "1.58.0" +version = "1.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c8234fd024f7ac61c4e44ea008029bde934250f371efe7d4a39708397b1080c" +checksum = "5183e088715cc135d8d396fdd3bc02f018f0da4c511f53cb8d795b6a31c55809" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1474,9 +1474,9 @@ dependencies = [ [[package]] name = "aws-sdk-sts" -version = "1.58.0" +version = "1.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba60e1d519d6f23a9df712c04fdeadd7872ac911c84b2f62a8bda92e129b7962" +checksum = "c9f944ef032717596639cea4a2118a3a457268ef51bbb5fde9637e54c465da00" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1497,9 +1497,9 @@ dependencies = [ [[package]] name = "aws-sigv4" -version = "1.2.7" +version = "1.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "690118821e46967b3c4501d67d7d52dd75106a9c54cf36cefa1985cedbe94e05" +checksum = "0bc5bbd1e4a2648fd8c5982af03935972c24a2f9846b396de661d351ee3ce837" dependencies = [ "aws-credential-types", "aws-smithy-http", @@ -1570,9 +1570,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime" -version = "1.7.7" +version = "1.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "865f7050bbc7107a6c98a397a9fcd9413690c27fa718446967cf03b2d3ac517e" +checksum = "d526a12d9ed61fadefda24abe2e682892ba288c2018bcb38b1b4c111d13f6d92" dependencies = [ "aws-smithy-async", "aws-smithy-http", @@ -1614,9 +1614,9 @@ dependencies = [ [[package]] name = "aws-smithy-types" -version = "1.2.12" +version = "1.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28f6feb647fb5e0d5b50f0472c19a7db9462b74e2fec01bb0b44eedcc834e97" +checksum = "c7b8a53819e42f10d0821f56da995e1470b199686a1809168db6ca485665f042" dependencies = [ "base64-simd", "bytes", @@ -1646,9 +1646,9 @@ dependencies = [ [[package]] name = "aws-types" -version = "1.3.4" +version = "1.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0df5a18c4f951c645300d365fec53a61418bcf4650f604f85fe2a665bfaa0c2" +checksum = "dfbd0a668309ec1f66c0f6bda4840dd6d4796ae26d699ebc266d7cc95c6d040f" dependencies = [ "aws-credential-types", "aws-smithy-async", @@ -2105,9 +2105,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.11" +version = "1.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4730490333d58093109dc02c23174c3f4d490998c3fed3cc8e82d57afedb9cf" +checksum = "c7777341816418c02e033934a09f20dc0ccaf65a5201ef8a450ae0105a573fda" dependencies = [ "shlex", ] @@ -2220,9 +2220,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.27" +version = "4.5.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "769b0145982b4b48713e01ec42d61614425f27b7058bda7180a3a41f30104796" +checksum = "3e77c3243bd94243c03672cb5154667347c457ca271254724f9f393aee1c05ff" dependencies = [ "clap_builder", "clap_derive", @@ -2264,9 +2264,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.24" +version = "4.5.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54b755194d6389280185988721fffba69495eed5ee9feeee9a599b53db80318c" +checksum = "bf4ced95c6f4a675af3da73304b9ac4ed991640c36374e4b46795c49e17cf1ed" dependencies = [ "heck 0.5.0", "proc-macro2", @@ -2425,13 +2425,12 @@ checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "comfy-table" -version = "7.1.3" +version = "7.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24f165e7b643266ea80cb858aed492ad9280e3e05ce24d4a99d7d7b889b6a4d9" +checksum = "4a65ebfec4fb190b6f90e944a817d60499ee0744e582530e2c9900a22e591d9a" dependencies = [ "crossterm", - "strum 0.26.3", - "strum_macros 0.26.4", + "unicode-segmentation", "unicode-width 0.2.0", ] @@ -2506,6 +2505,26 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "const_format" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + [[package]] name = "convert_case" version = "0.6.0" @@ -2744,9 +2763,9 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.7.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e60eed09d8c01d3cee5b7d30acb059b76614c918fa0f992e0dd6eeb10daad6f" +checksum = "575f75dfd25738df5b91b8e43e14d44bda14637a58fae779fd2b064f8bf3e010" [[package]] name = "dbus" @@ -3246,7 +3265,7 @@ dependencies = [ "serde", "serde_json", "syn 2.0.98", - "toml 0.8.19", + "toml 0.8.20", "walkdir", ] @@ -3326,6 +3345,9 @@ name = "faster-hex" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2a2b11eda1d40935b26cf18f6833c526845ae8c41e58d09af6adeb6f0269183" +dependencies = [ + "serde", +] [[package]] name = "fastrand" @@ -3392,7 +3414,7 @@ dependencies = [ "pear", "serde", "tempfile", - "toml 0.8.19", + "toml 0.8.20", "uncased", "version_check", ] @@ -3545,7 +3567,7 @@ dependencies = [ "thiserror 2.0.11", "tikv-jemallocator", "tokio", - "toml 0.8.19", + "toml 0.8.20", "toml_edit", "tower-http", "tracing", @@ -3576,7 +3598,7 @@ dependencies = [ "serde_json", "solang-parser", "thiserror 2.0.11", - "toml 0.8.19", + "toml 0.8.20", "tracing", ] @@ -3591,7 +3613,7 @@ dependencies = [ "similar-asserts", "solang-parser", "thiserror 2.0.11", - "toml 0.8.19", + "toml 0.8.20", "tracing", "tracing-subscriber", ] @@ -3779,7 +3801,7 @@ dependencies = [ "serde", "serde_json", "thiserror 2.0.11", - "toml 0.8.19", + "toml 0.8.20", "tracing", "vergen", "walkdir", @@ -3909,8 +3931,7 @@ dependencies = [ [[package]] name = "foundry-compilers" version = "0.12.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f67e3eab56847dcf269eb186226f95874b171e262952cff6c910da36b1469e10" +source = "git+ssh://git@github.com/SeismicSystems/seismic-compilers.git?rev=b1cf865#b1cf8651f8958d93c70f8240073354f3867cc18e" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -3946,8 +3967,7 @@ dependencies = [ [[package]] name = "foundry-compilers-artifacts" version = "0.12.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "865b00448dc2a5d56bae287c36fa716379ffcdd937aefb7758bd20b62024d234" +source = "git+ssh://git@github.com/SeismicSystems/seismic-compilers.git?rev=b1cf865#b1cf8651f8958d93c70f8240073354f3867cc18e" dependencies = [ "foundry-compilers-artifacts-solc", "foundry-compilers-artifacts-vyper", @@ -3956,8 +3976,7 @@ dependencies = [ [[package]] name = "foundry-compilers-artifacts-solc" version = "0.12.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668972ba511f80895ea12c75cd12fccd6627c26e64763799d83978b4e0916cae" +source = "git+ssh://git@github.com/SeismicSystems/seismic-compilers.git?rev=b1cf865#b1cf8651f8958d93c70f8240073354f3867cc18e" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -3980,8 +3999,7 @@ dependencies = [ [[package]] name = "foundry-compilers-artifacts-vyper" version = "0.12.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a24f7f2a7458171e055c0cb33272f5eccaefbd96d791d74177d9a1fca048f74" +source = "git+ssh://git@github.com/SeismicSystems/seismic-compilers.git?rev=b1cf865#b1cf8651f8958d93c70f8240073354f3867cc18e" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -3995,8 +4013,7 @@ dependencies = [ [[package]] name = "foundry-compilers-core" version = "0.12.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8005271a079bc6470c61d4145d2e390a827b1ccbb96abb7b69b088f17ffb95e0" +source = "git+ssh://git@github.com/SeismicSystems/seismic-compilers.git?rev=b1cf865#b1cf8651f8958d93c70f8240073354f3867cc18e" dependencies = [ "alloy-primitives", "cfg-if", @@ -4044,7 +4061,7 @@ dependencies = [ "solang-parser", "tempfile", "thiserror 2.0.11", - "toml 0.8.19", + "toml 0.8.20", "toml_edit", "tracing", "walkdir", @@ -4272,7 +4289,6 @@ dependencies = [ "parking_lot", "rand", "regex", - "revm", "serde_json", "snapbox", "tempfile", @@ -4559,23 +4575,23 @@ checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" [[package]] name = "gix-actor" -version = "0.32.0" +version = "0.33.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc19e312cd45c4a66cd003f909163dc2f8e1623e30a0c0c6df3776e89b308665" +checksum = "20018a1a6332e065f1fcc8305c1c932c6b8c9985edea2284b3c79dc6fa3ee4b2" dependencies = [ "bstr", "gix-date", "gix-utils", "itoa", - "thiserror 1.0.69", + "thiserror 2.0.11", "winnow 0.6.24", ] [[package]] name = "gix-config" -version = "0.40.0" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78e797487e6ca3552491de1131b4f72202f282fb33f198b1c34406d765b42bb0" +checksum = "6649b406ca1f99cb148959cf00468b231f07950f8ec438cc0903cda563606f19" dependencies = [ "bstr", "gix-config-value", @@ -4587,7 +4603,7 @@ dependencies = [ "memchr", "once_cell", "smallvec", - "thiserror 1.0.69", + "thiserror 2.0.11", "unicode-bom", "winnow 0.6.24", ] @@ -4619,9 +4635,9 @@ dependencies = [ [[package]] name = "gix-features" -version = "0.38.2" +version = "0.39.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac7045ac9fe5f9c727f38799d002a7ed3583cd777e3322a7c4b43e3cf437dc69" +checksum = "7d85d673f2e022a340dba4713bed77ef2cf4cd737d2f3e0f159d45e0935fd81f" dependencies = [ "gix-hash", "gix-trace", @@ -4634,9 +4650,9 @@ dependencies = [ [[package]] name = "gix-fs" -version = "0.11.3" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2bfe6249cfea6d0c0e0990d5226a4cb36f030444ba9e35e0639275db8f98575" +checksum = "3b3d4fac505a621f97e5ce2c69fdc425742af00c0920363ca4074f0eb48b1db9" dependencies = [ "fastrand", "gix-features", @@ -4645,9 +4661,9 @@ dependencies = [ [[package]] name = "gix-glob" -version = "0.16.5" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74908b4bbc0a0a40852737e5d7889f676f081e340d5451a16e5b4c50d592f111" +checksum = "aaf69a6bec0a3581567484bf99a4003afcaf6c469fd4214352517ea355cf3435" dependencies = [ "bitflags 2.8.0", "bstr", @@ -4657,41 +4673,54 @@ dependencies = [ [[package]] name = "gix-hash" -version = "0.14.2" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93d7df7366121b5018f947a04d37f034717e113dcf9ccd85c34b58e57a74d5e" +checksum = "0b5eccc17194ed0e67d49285e4853307e4147e95407f91c1c3e4a13ba9f4e4ce" dependencies = [ "faster-hex", - "thiserror 1.0.69", + "thiserror 2.0.11", +] + +[[package]] +name = "gix-hashtable" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ef65b256631078ef733bc5530c4e6b1c2e7d5c2830b75d4e9034ab3997d18fe" +dependencies = [ + "gix-hash", + "hashbrown 0.14.5", + "parking_lot", ] [[package]] name = "gix-lock" -version = "14.0.0" +version = "15.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bc7fe297f1f4614774989c00ec8b1add59571dc9b024b4c00acb7dedd4e19d" +checksum = "1cd3ab68a452db63d9f3ebdacb10f30dba1fa0d31ac64f4203d395ed1102d940" dependencies = [ "gix-tempfile", "gix-utils", - "thiserror 1.0.69", + "thiserror 2.0.11", ] [[package]] name = "gix-object" -version = "0.44.0" +version = "0.46.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f5b801834f1de7640731820c2df6ba88d95480dc4ab166a5882f8ff12b88efa" +checksum = "e42d58010183ef033f31088479b4eb92b44fe341b35b62d39eb8b185573d77ea" dependencies = [ "bstr", "gix-actor", "gix-date", "gix-features", "gix-hash", + "gix-hashtable", + "gix-path", "gix-utils", "gix-validate", "itoa", "smallvec", - "thiserror 1.0.69", + "thiserror 2.0.11", "winnow 0.6.24", ] @@ -4710,9 +4739,9 @@ dependencies = [ [[package]] name = "gix-ref" -version = "0.47.0" +version = "0.49.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae0d8406ebf9aaa91f55a57f053c5a1ad1a39f60fdf0303142b7be7ea44311e5" +checksum = "a91b61776c839d0f1b7114901179afb0947aa7f4d30793ca1c56d335dfef485f" dependencies = [ "gix-actor", "gix-features", @@ -4725,7 +4754,7 @@ dependencies = [ "gix-utils", "gix-validate", "memmap2", - "thiserror 1.0.69", + "thiserror 2.0.11", "winnow 0.6.24", ] @@ -4743,9 +4772,9 @@ dependencies = [ [[package]] name = "gix-tempfile" -version = "14.0.2" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046b4927969fa816a150a0cda2e62c80016fe11fb3c3184e4dddf4e542f108aa" +checksum = "2feb86ef094cc77a4a9a5afbfe5de626897351bbbd0de3cb9314baf3049adb82" dependencies = [ "gix-fs", "libc", @@ -4860,9 +4889,9 @@ dependencies = [ [[package]] name = "handlebars" -version = "6.3.0" +version = "6.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6b224b95c1e668ac0270325ad563b2eef1469fbbb8959bc7c692c844b813d9" +checksum = "d752747ddabc4c1a70dd28e72f2e3c218a816773e0d7faf67433f1acfa6cba7c" dependencies = [ "derive_builder", "log", @@ -5404,9 +5433,9 @@ dependencies = [ [[package]] name = "ignore-files" -version = "3.0.2" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51ce3a1903263527cf3b6512a12f338ae63f425b66c1a3d7a24c3121e8557dbe" +checksum = "0a20552979c32c84b0c7f6bb8d3e235627011e68eb9f6d59592f14a76b6b48ea" dependencies = [ "dunce", "futures", @@ -5416,7 +5445,7 @@ dependencies = [ "normalize-path", "project-origins", "radix_trie", - "thiserror 1.0.69", + "thiserror 2.0.11", "tokio", "tracing", ] @@ -5641,15 +5670,6 @@ dependencies = [ "either", ] -[[package]] -name = "itertools" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" -dependencies = [ - "either", -] - [[package]] name = "itoa" version = "1.0.14" @@ -5708,11 +5728,11 @@ dependencies = [ [[package]] name = "jsonwebtoken" -version = "9.3.0" +version = "9.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9ae10193d25051e74945f1ea2d0b42e03cc3b890f7e4cc5faa44997d808193f" +checksum = "5a87cc7a48537badeae96744432de36f4be2b4a34a05a5ef32e9dd8a1c169dde" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "js-sys", "pem", "ring", @@ -6202,7 +6222,7 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee3224f0e8be7c2a1ebc77ef9c3eecb90f55c6594399ee825de964526b3c9056" dependencies = [ - "uuid 1.12.1", + "uuid 1.13.1", ] [[package]] @@ -6485,9 +6505,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.20.2" +version = "1.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" [[package]] name = "op-alloy-consensus" @@ -6630,28 +6650,30 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "3.6.12" +version = "3.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" +checksum = "c9fde3d0718baf5bc92f577d652001da0f8d54cd03a7974e118d04fc888dc23d" dependencies = [ "arrayvec", "bitvec", "byte-slice-cast", + "const_format", "impl-trait-for-tuples", "parity-scale-codec-derive", + "rustversion", "serde", ] [[package]] name = "parity-scale-codec-derive" -version = "3.6.12" +version = "3.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" +checksum = "581c837bb6b9541ce7faa9377c20616e4fb7650f6b0f68bc93c827ee504fb7b3" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.98", ] [[package]] @@ -7147,15 +7169,19 @@ dependencies = [ [[package]] name = "prodash" -version = "28.0.0" +version = "29.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "744a264d26b88a6a7e37cbad97953fa233b94d585236310bcbc88474b4092d79" +checksum = "a266d8d6020c61a437be704c5e618037588e1985c7dbb7bf8d265db84cffe325" +dependencies = [ + "log", + "parking_lot", +] [[package]] name = "project-origins" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "735c6b4b1c67863c2211cac24badb0dca9fabfe1098209834fc5e0f92eda6c2c" +checksum = "f1a0207163ace81dd9ff23a5225188a4eef8eb7de7b570f609407e521a8c9c2c" dependencies = [ "futures", "tokio", @@ -7281,7 +7307,7 @@ dependencies = [ "quick-xml 0.37.2", "strip-ansi-escapes", "thiserror 2.0.11", - "uuid 1.12.1", + "uuid 1.13.1", ] [[package]] @@ -7812,9 +7838,9 @@ checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" dependencies = [ "rand", ] @@ -8055,9 +8081,9 @@ dependencies = [ [[package]] name = "scc" -version = "2.3.0" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28e1c91382686d21b5ac7959341fcb9780fa7c03773646995a87c950fa7be640" +checksum = "ea091f6cac2595aa38993f04f4ee692ed43757035c36e67c180b6828356385b1" dependencies = [ "sdd", ] @@ -8161,9 +8187,9 @@ dependencies = [ [[package]] name = "sdd" -version = "3.0.5" +version = "3.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "478f121bb72bbf63c52c93011ea1791dca40140dfe13f8336c4c5ac952c33aa9" +checksum = "b07779b9b918cc05650cb30f404d4d7835d26df37c235eded8a6832e2fb82cca" [[package]] name = "sec1" @@ -8692,7 +8718,7 @@ dependencies = [ "const-hex", "derive_builder", "dunce", - "itertools 0.14.0", + "itertools 0.13.0", "itoa", "lasso", "match_cfg", @@ -8728,7 +8754,7 @@ dependencies = [ "alloy-primitives", "bitflags 2.8.0", "bumpalo", - "itertools 0.14.0", + "itertools 0.13.0", "memchr", "num-bigint", "num-rational", @@ -8781,7 +8807,7 @@ dependencies = [ "thiserror 2.0.11", "tokio", "toml_edit", - "uuid 1.12.1", + "uuid 1.13.1", "zip", "zip-extract", ] @@ -9407,9 +9433,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" dependencies = [ "indexmap 2.7.1", "serde", @@ -9890,11 +9916,11 @@ dependencies = [ [[package]] name = "uuid" -version = "1.12.1" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3758f5e68192bb96cc8f9b7e2c2cfdabb435499a28499a42f8f984092adad4b" +checksum = "ced87ca4be083373936a67f8de945faa23b6b42384bd5b64434850802c6dccd0" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.3.1", "serde", ] @@ -10123,13 +10149,13 @@ dependencies = [ [[package]] name = "watchexec-signals" -version = "4.0.0" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be07d7855a3617d996ce0c7df4b6232159c526634dff668dd95491c22a9a7262" +checksum = "8834ddd08f1ce18ea85e4ccbdafaea733851c7dc6afefd50037aea17845a861a" dependencies = [ "miette", "nix 0.29.0", - "thiserror 1.0.69", + "thiserror 2.0.11", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 6e176694a..fd308691a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -169,7 +169,7 @@ foundry-linking = { path = "crates/linking" } # solc & compilation utilities foundry-block-explorers = { version = "0.9.0", default-features = false } -foundry-compilers = { version = "0.12.8", default-features = false } +foundry-compilers = { version = "=0.12.9", default-features = false } foundry-fork-db = "0.9.0" solang-parser = "=0.3.3" solar-ast = { version = "=0.1.1", default-features = false } @@ -345,3 +345,9 @@ alloy-transport-ipc = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy alloy-transport-ws = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } alloy-node-bindings = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } alloy-network-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } + +foundry-compilers = { git = "ssh://git@github.com/SeismicSystems/seismic-compilers.git", rev = "b1cf865" } +foundry-compilers-artifacts = { git = "ssh://git@github.com/SeismicSystems/seismic-compilers.git", rev = "b1cf865", package = "foundry-compilers-artifacts" } +foundry-compilers-artifacts-solc = { git = "ssh://git@github.com/SeismicSystems/seismic-compilers.git", rev = "b1cf865", package = "foundry-compilers-artifacts-solc" } +foundry-compilers-artifacts-vyper = { git = "ssh://git@github.com/SeismicSystems/seismic-compilers.git", rev = "b1cf865", package = "foundry-compilers-artifacts-vyper" } +foundry-compilers-core = { git = "ssh://git@github.com/SeismicSystems/seismic-compilers.git", rev = "b1cf865", package = "foundry-compilers-core" } diff --git a/crates/config/src/lib.rs b/crates/config/src/lib.rs index 87b5346ea..96124c985 100644 --- a/crates/config/src/lib.rs +++ b/crates/config/src/lib.rs @@ -213,8 +213,6 @@ pub struct Config { /// evm version to use #[serde(with = "from_str_lowercase")] pub evm_version: EvmVersion, - /// Seismic version to use. Will overwrite EVM version if set. - pub seismic_version: SpecId, /// list of contracts to report gas of pub gas_reports: Vec, /// list of contracts to ignore for gas reports @@ -884,7 +882,7 @@ impl Config { // Turn on seismic flag if evm version is seismic. For now this logic works. pub fn sanitize_seismic_settings(&mut self) { - if SpecId::MERCURY.is_enabled_in(self.seismic_version) { + if self.evm_version == EvmVersion::Mercury { self.seismic = true; } } @@ -2326,8 +2324,7 @@ impl Default for Config { allow_paths: vec![], include_paths: vec![], force: false, - evm_version: EvmVersion::Cancun, - seismic_version: SpecId::MERCURY, + evm_version: EvmVersion::Mercury, gas_reports: vec!["*".to_string()], gas_reports_ignore: vec![], gas_reports_include_tests: false, diff --git a/crates/config/src/utils.rs b/crates/config/src/utils.rs index 43b9b7468..dc2a5b057 100644 --- a/crates/config/src/utils.rs +++ b/crates/config/src/utils.rs @@ -276,6 +276,7 @@ pub fn evm_spec_id(evm_version: EvmVersion, odyssey: bool) -> SpecId { EvmVersion::Paris => SpecId::MERGE, EvmVersion::Shanghai => SpecId::SHANGHAI, EvmVersion::Cancun => SpecId::CANCUN, + EvmVersion::Mercury => SpecId::MERCURY, EvmVersion::Prague => SpecId::OSAKA, // Osaka enables EOF } } diff --git a/crates/forge/src/multi_runner.rs b/crates/forge/src/multi_runner.rs index 4038c15dc..0da651350 100644 --- a/crates/forge/src/multi_runner.rs +++ b/crates/forge/src/multi_runner.rs @@ -298,9 +298,6 @@ impl TestRunnerConfig { debug_assert!(!Arc::ptr_eq(&self.config, &config)); // TODO: self.evm_opts // TODO: self.env - if config.seismic { - self.spec_id = config.seismic_version; - } self.spec_id = config.evm_spec_id(); self.sender = config.sender; // self.coverage = N/A; @@ -527,11 +524,7 @@ impl MultiContractRunnerBuilder { tcfg: TestRunnerConfig { evm_opts, env, - spec_id: if self.config.seismic { - self.config.seismic_version - } else { - self.evm_spec.unwrap_or_else(|| self.config.evm_spec_id()) - }, + spec_id: self.evm_spec.unwrap_or_else(|| self.config.evm_spec_id()), sender: self.sender.unwrap_or(self.config.sender), coverage: self.coverage, diff --git a/crates/forge/tests/cli/config.rs b/crates/forge/tests/cli/config.rs index 213bc0835..55857a606 100644 --- a/crates/forge/tests/cli/config.rs +++ b/crates/forge/tests/cli/config.rs @@ -1,7 +1,6 @@ //! Contains various tests for checking forge commands related to config values use alloy_primitives::{Address, B256, U256}; -use forge::revm::primitives::SpecId; use foundry_cli::utils as forge_utils; use foundry_compilers::{ artifacts::{BytecodeHash, OptimizerDetails, RevertStrings, YulDetails}, @@ -44,7 +43,6 @@ forgetest!(can_extract_config_values, |prj, cmd| { broadcast: "broadcast".into(), force: true, evm_version: EvmVersion::Byzantium, - seismic_version: SpecId::MERCURY, gas_reports: vec!["Contract".to_string()], gas_reports_ignore: vec![], gas_reports_include_tests: false, diff --git a/crates/test-utils/Cargo.toml b/crates/test-utils/Cargo.toml index a16ac2624..d96774570 100644 --- a/crates/test-utils/Cargo.toml +++ b/crates/test-utils/Cargo.toml @@ -18,20 +18,11 @@ workspace = true foundry-common.workspace = true foundry-compilers = { workspace = true, features = ["project-util"] } foundry-config.workspace = true - alloy-primitives.workspace = true alloy-provider = { workspace = true, features = [ "reqwest", ] } -revm = { workspace = true, features = [ - "std", - "serde", - "memory_limit", - "c-kzg", - "seismic" -] } - eyre.workspace = true fd-lock = "4.0" parking_lot.workspace = true From 64e479b6fb20b5793c07044d407afa0c8a789e8a Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Tue, 11 Feb 2025 11:24:34 -0500 Subject: [PATCH 048/130] update urls to seismic & authors to seismic developers (#84) --- .github/workflows/docker-publish.yml | 2 +- Cargo.toml | 6 +++--- crates/anvil/README.md | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index a4d2543c2..576dd15c3 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -12,7 +12,7 @@ on: env: REGISTRY: ghcr.io - # Will resolve to foundry-rs/foundry + # Will resolve to SeismicSystems/seismic-foundry IMAGE_NAME: ${{ github.repository }} jobs: diff --git a/Cargo.toml b/Cargo.toml index fd308691a..99c089539 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,10 +31,10 @@ version = "0.3.0" edition = "2021" # Remember to update clippy.toml as well rust-version = "1.83" -authors = ["Foundry Contributors"] +authors = ["Foundry Contributors", "Seismic Developers"] license = "MIT OR Apache-2.0" -homepage = "https://github.com/foundry-rs/foundry" -repository = "https://github.com/foundry-rs/foundry" +homepage = "https://github.com/SeismicSystems/seismic-foundry" +repository = "https://github.com/SeismicSystems/seismic-foundry" exclude = ["benches/", "tests/", "test-data/", "testdata/"] [workspace.lints.clippy] diff --git a/crates/anvil/README.md b/crates/anvil/README.md index efb0f9e2e..c3e98cd5a 100644 --- a/crates/anvil/README.md +++ b/crates/anvil/README.md @@ -27,13 +27,13 @@ A local Ethereum node, akin to Ganache, designed for development with [**Forge** ### Installing from source ```sh -cargo install --git https://github.com/foundry-rs/foundry anvil --locked --force +cargo install --git https://github.com/SeismicSystems/seismic-foundry anvil --locked --force ``` ## Getting started ```console -$ anvil +$ sanvil _ _ (_) | | From cf502b71599f7194756657767f4cb0b5765aa506 Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Tue, 11 Feb 2025 14:27:31 -0500 Subject: [PATCH 049/130] seismic readme (#86) --- README.md | 199 ++++-------------------------------------------------- 1 file changed, 15 insertions(+), 184 deletions(-) diff --git a/README.md b/README.md index cf0fc406f..7e0549c61 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,22 @@ -Foundry logo +# seismic-foundry -## Seismic +Seismic Foundry is a fork of [Foundry](https://github.com/foundry-rs/foundry), customized to work with the Seismic blockchain. It provides a testing toolchain specifically designed for Seismic's [modified version](https://github.com/SeismicSystems/seismic-reth) of reth -All Seismic modifications live on the `seismic` branch; the [original](https://github.com/foundry-rs/foundry) repository is on the `master` branch. We do this to always maintain a clear diff the changes it takes to make Foundry work with Seismic +## Overview -Make sure that you have added `~/.seismic/bin` to your path: +This repository contains modified versions of Foundry's core tools: +- [`sforge`](https://github.com/SeismicSystems/seismic-foundry/tree/seismic/crates/forge): Seismic's version of `forge`, for testing Ethereum smart contracts +- [`sanvil`](https://github.com/SeismicSystems/seismic-foundry/tree/seismic/crates/anvil): Seismic's version of `anvil`, for running local Ethereum test networks +> **NOTE:** seismic-foundry does not yet support foundry's `cast` or `chisel` -```sh -export PATH="$PATH:$HOME/.seismic/bin" -``` +For details about Seismic's modifications to reth, please see: +- seismic-reth's [README](https://github.com/SeismicSystems/seismic-reth/blob/seismic/README.md) +- Seismic's [Features](https://github.com/SeismicSystems/seismic-reth/blob/seismic/seismic-features.md) -Finally, make sure you have locally cloned this repository in the same directory as `mantle`. This is a temporary requirement until we are able to specify the mantle dependency in a way that does not involve using local paths. If you are curious about how this is configured, see the Cargo.toml in the root of this repository +## Installation ### Seismic Forge To build `sforge` from source, run this from the root of this repository: - ```sh git checkout seismic cargo install --root=$HOME/.seismic --profile dev --path ./crates/forge --locked @@ -22,186 +24,15 @@ cargo install --root=$HOME/.seismic --profile dev --path ./crates/forge --locked ### Seismic Anvil To build `sanvil` from source, run this from the root of this repository: - ```sh git checkout seismic cargo install --root=$HOME/.seismic --profile dev --path ./crates/anvil --locked ``` -### Merging in upstream foundry-rs/main -First make sure you have set a public origin: -```sh -git remote add public https://github.com/foundry-rs/foundry.git -``` - -Then checkout to `master` and pull in changes from `public/master`, and push to `origin/master` -```sh -git checkout master -git pull public master -git push origin master -``` - -Then checkout to `seismic`, pull in `origin/master`, and checkout to a new branch -```sh -git checkout seismic -git pull origin master -git checkout -b merge-in-public-master -``` - -You will likely see some merge conflicts. For Cargo.lock, simply checkout to `origin/master`: -```sh -git checkout master -- Cargo.lock -``` - -For the rest, resolve them manually. This might be a pain. When you are done, make sure our Seismic-specific tests pass: -```sh -cargo test -- test_seismic_transaction -``` - -And then push your branch to GitHub & merge in the pull request with a squash commit -```sh -git push origin merge-in-public-master # then merge it on the UI -``` - -## Foundry - -![Github Actions][gha-badge] [![Telegram Chat][tg-badge]][tg-url] [![Telegram Support][tg-support-badge]][tg-support-url] -![Foundry](https://img.shields.io/badge/Foundry-grey?style=flat&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAElElEQVR4nH1VUUhUaRg9984YdzBpkqR0Z210rIESIXSabEbcHgydrpNRRj00kWaztj0U1MOW0MOIbD300IvLMqBpMTGYxdoqyoRNDUESBDWwUuPugCSSsTM7u0Oj1/+efdiMcmnP2/fDd77D4f/OB6xCa2urQZbllVICYGtqanK1tLS4AdgAyAAgyzJaW1sNq/ulT4twOGw4fPiwAGDp7Ow8VV1d7bVarRWxWCw/k8mgsbExm0wmZ+Lx+M/Xr1//CcAsSVmSJH01McLhsAEAnE5nx+Tk5B/xeJxOp5N9fX2sqqqixWLhnTt36HA4GIvFGI1GU3V1df5Pe/9D1t7eHkgkEuzo6GBPT49WWloq7Ha7fujQITocDu7atUs3m83i6tWr2okTJ/jixQuePn265zPScDhskGUZe/fubXv8+DFv3rypbdiwQaxbt46RSIT79u3j0NAQb926RVVVOT4+TqvVyvz8fD0YDC5NTk6ysbHxlCRJ/5KSlAAURyKRTFNTkwAg7t69S5/Px76+Pq7GyMgI9+/fz9HRUQIQO3bsEKOjo38DsJCUJADw+/0BVVW7otHo8ps3b4yvXr3CxMQETCYTTCYTNE0DAOTl5SGXy0FRFOzZswdmsxkVFRXLNTU1xmg0+kNvb+/3AGAcGBiI7969Wwcg6urq+OTJE967d49btmzh9PT0R3WJRIKBQIDBYJBTU1NsaGggAGGz2fTe3t5fAeQZAWwuLi4uP3nypOT1emEwGFBeXo7a2losLCygoaEB/f39MJlMCIVCkCQJBw8ehNVqhcfjQXNzs1RSUiKtX7++DEAZqqqq3KFQiABYUFDAM2fOkCQXFxdJkvfv32dhYSG9Xi+vXbvG2dnZj4oDgQCLioqoKAqHhobodDq/Mc7NzUklJSUIBoOw2WzYtm0blpeXsWbNGkxMTODp06doa2vD4OAgNm7cCIvFApLQdR3nzp3Dzp078fLlSxQVFeHdu3cAgIpHjx69/zBUX5k+MDBAt9vNY8eOsbu7m6lUigcOHKDL5WImkyHJz9TGYrEcALsMIPn69esZTdMIgM+ePUNXVxdu376NsrIyuN1uXLp0CWazGcPDw3C5XFBVFWfPnkVNTQ18Pp+ezWY5MzPzO4DfAABHjhzpJslUKqVdvHiR4+PjbG9vZy6XI0kuLS0xmUxSCEGS9Pv9LC0tpdFoZGVlpSaEoM/nuwIAKx/7q5GRkb9CoZBQVVWcP3+ez58/J0mm02kODg7ywoULjMViTKfTtNvtXLt2LTdt2qTncrnlsbGxLICvSUqfrl5HJBLh1NTUkhBCJ8mFhQX29/dTVVUWFBTwwYMH1HWdly9fpqIoeiKRWJqfn2d1dXWnLMuf7zMAHD16tGd+fn7FZy2bzYrKykodAAFQVVV9cXFRkNTevn3Lubk5trS0XPnfxHE4HN8ODw+nV/yanp6mx+Ohx+P5aIMQgmNjY3/W1tZ+t5rsSwG7+fjx4/76+vrm7du32woLC00AkE6n38fj8ZmHDx/+cuPGjR8BJL8YsCtYdQIMALYqilKvKEo9APuHty+egH8A3GfFDJXmxmMAAAAASUVORK5CYII%3D&link=https%3A%2F%2Fbook.getfoundry.sh%2F) - -[gha-badge]: https://img.shields.io/github/actions/workflow/status/foundry-rs/foundry/test.yml?branch=master -[tg-badge]: https://img.shields.io/endpoint?color=neon&logo=telegram&label=chat&style=flat-square&url=https%3A%2F%2Ftg.sumanjay.workers.dev%2Ffoundry_rs -[tg-url]: https://t.me/foundry_rs -[tg-support-badge]: https://img.shields.io/endpoint?color=neon&logo=telegram&label=support&style=flat-square&url=https%3A%2F%2Ftg.sumanjay.workers.dev%2Ffoundry_support -[tg-support-url]: https://t.me/foundry_support - -**[Install](https://book.getfoundry.sh/getting-started/installation)** -| [User Book](https://book.getfoundry.sh) -| [Developer Docs](./docs/dev/) -| [Crate Docs](https://foundry-rs.github.io/foundry) - -**Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.** - -Foundry consists of: - -- [**Forge**](./crates/forge): Ethereum testing framework (like Truffle, Hardhat and DappTools). -- [**Cast**](./crates/cast): Swiss army knife for interacting with EVM smart contracts, sending transactions and getting chain data. -- [**Anvil**](./crates/anvil): Local Ethereum node, akin to Ganache, Hardhat Network. -- [**Chisel**](./crates/chisel): Fast, utilitarian, and verbose solidity REPL. - -**Need help getting started with Foundry? Read the [📖 Foundry Book][foundry-book] (WIP)!** - -![Demo](.github/demo.gif) - -## Installation - -See the [installation guide](https://book.getfoundry.sh/getting-started/installation) in the book. - -If you're experiencing any issues while installing, check out [Getting Help](#getting-help) and the [FAQ](https://book.getfoundry.sh/faq). - -## Forge - -### Features - -- **Fast & flexible compilation pipeline** - - Automatic Solidity compiler version detection & installation - - **Incremental compilation & caching**: Only changed files are re-compiled - - Parallel compilation - - Non-standard directory structures support (e.g. [Hardhat repos](https://twitter.com/gakonst/status/1461289225337421829)) -- **Tests are written in Solidity** (like in DappTools) -- **Fast fuzz testing** with shrinking of inputs & printing of counter-examples -- **Fast remote RPC forking mode**, leveraging Rust's async infrastructure like tokio -- **Flexible debug logging** - - DappTools-style, using `DsTest`'s emitted logs - - Hardhat-style, using the popular `console.sol` contract -- **Portable (5-10MB) & easy to install** without requiring Nix or any other package manager -- **Fast CI** with the [Foundry GitHub action][foundry-gha]. - -### How Fast? - -Forge is quite fast at both compiling (leveraging [ethers-solc]) and testing. - -See the benchmarks below. More benchmarks can be found in the [v0.2.0 announcement post][benchmark-post] and in the [Convex Shutdown Simulation][convex] repository. - -**Testing Benchmarks** - -| Project | Forge | DappTools | Speedup | -| ---------------------------------- | ----- | --------- | ------- | -| [transmissions11/solmate][solmate] | 2.8s | 6m34s | 140x | -| [reflexer-labs/geb][geb] | 0.4s | 23s | 57.5x | -| [Rari-Capital/vaults][vaults] | 0.28s | 6.5s | 23x | - -_Note: In the above benchmarks, compilation was always skipped_ - -**Compilation Benchmarks** - -Compilation benchmarks - -**Takeaway: Forge compilation is consistently faster by a factor of 1.7-11.3x, depending on the amount of caching involved.** - -## Cast - -Cast is a swiss army knife for interacting with Ethereum applications from the command line. - -More documentation can be found in the [cast package](./crates/cast). - -## Configuration - -### Using `foundry.toml` - -Foundry is designed to be very configurable. You can configure Foundry using a file called [`foundry.toml`](./crates/config) in the root of your project, or any other parent directory. See [config package](./crates/config/README.md#all-options) for all available options. - -Configuration can be arbitrarily namespaced by profiles. The default profile is named `default` (see ["Default Profile"](./crates/config/README.md#default-profile)). - -You can select another profile using the `FOUNDRY_PROFILE` environment variable. You can also override parts of your configuration using `FOUNDRY_` or `DAPP_` prefixed environment variables, like `FOUNDRY_SRC`. - -`forge init` creates a basic, extendable `foundry.toml` file. - -To see your current configuration, run `forge config`. To see only basic options (as set with `forge init`), run `forge config --basic`. This can be used to create a new `foundry.toml` file with `forge config --basic > foundry.toml`. - -By default `forge config` shows the currently selected foundry profile and its values. It also accepts the same arguments as `forge build`. - -### DappTools Compatibility - -You can reuse your `.dapprc` environment variables by running `source .dapprc` before using a Foundry tool. - -### Additional Configuration - -You can find additional setup and configurations guides in the [Foundry Book][foundry-book]: - -- [Setting up VSCode][vscode-setup] -- [Shell autocompletions][shell-setup] - -## Contributing - -See our [contributing guidelines](./CONTRIBUTING.md). - -## Getting Help - -First, see if the answer to your question can be found in [book][foundry-book], or in the relevant crate. - -If the answer is not there: - -- Join the [support Telegram][tg-support-url] to get help, or -- Open a [discussion](https://github.com/foundry-rs/foundry/discussions/new) with your question, or -- Open an issue with [the bug](https://github.com/foundry-rs/foundry/issues/new) - -If you want to contribute, or follow along with contributor discussion, you can use our [main telegram](https://t.me/foundry_rs) to chat with us about the development of Foundry! +## Acknowledgments -## Acknowledgements +This project is built upon the excellent work of the [Foundry](https://github.com/foundry-rs/foundry) Contributors. We are grateful for their contributions to the Ethereum development ecosystem. -- Foundry is a clean-room rewrite of the testing framework [DappTools](https://github.com/dapphub/dapptools). None of this would have been possible without the DappHub team's work over the years. -- [Matthias Seitz](https://twitter.com/mattsse_): Created [ethers-solc] which is the backbone of our compilation pipeline, as well as countless contributions to ethers, in particular the `abigen` macros. -- [Rohit Narurkar](https://twitter.com/rohitnarurkar): Created the Rust Solidity version manager [svm-rs](https://github.com/roynalnaruto/svm-rs) which we use to auto-detect and manage multiple Solidity versions. -- [Brock Elmore](https://twitter.com/brockjelmore): For extending the VM's cheatcodes and implementing [structured call tracing](https://github.com/foundry-rs/foundry/pull/192), a critical feature for debugging smart contract calls. -- All the other [contributors](https://github.com/foundry-rs/foundry/graphs/contributors) to the [ethers-rs](https://github.com/gakonst/ethers-rs) & [foundry](https://github.com/foundry-rs/foundry) repositories and chatrooms. +## License -[foundry-book]: https://book.getfoundry.sh -[foundry-gha]: https://github.com/foundry-rs/foundry-toolchain -[ethers-solc]: https://github.com/gakonst/ethers-rs/tree/master/ethers-solc/ -[solmate]: https://github.com/transmissions11/solmate/ -[geb]: https://github.com/reflexer-labs/geb -[vaults]: https://github.com/rari-capital/vaults -[benchmark-post]: https://www.paradigm.xyz/2022/03/foundry-02#blazing-fast-compilation--testing -[convex]: https://github.com/mds1/convex-shutdown-simulation -[vscode-setup]: https://book.getfoundry.sh/config/vscode.html -[shell-setup]: https://book.getfoundry.sh/config/shell-autocompletion.html +This project is distributed under the same license as Foundry. From f0eaaafebac721342d3f4f0660fec30dccd071e9 Mon Sep 17 00:00:00 2001 From: phexyz <32248504+phexyz@users.noreply.github.com> Date: Tue, 11 Feb 2025 16:38:05 -0500 Subject: [PATCH 050/130] Fix `eth_call` with transaction overrides for unsigned transactions (#87) --- crates/anvil/src/eth/api.rs | 49 +++++-------------------------------- 1 file changed, 6 insertions(+), 43 deletions(-) diff --git a/crates/anvil/src/eth/api.rs b/crates/anvil/src/eth/api.rs index 2545323ec..0619eb663 100644 --- a/crates/anvil/src/eth/api.rs +++ b/crates/anvil/src/eth/api.rs @@ -1103,47 +1103,6 @@ impl EthApi { Ok(*tx.hash()) } - pub async fn unsigned_call( - &self, - request: WithOtherFields, - block_number: Option, - overrides: Option, - ) -> Result { - node_info!("eth_call"); - let block_request = self.block_request(block_number).await?; - // check if the number predates the fork, if in fork mode - if let BlockRequest::Number(number) = block_request { - if let Some(fork) = self.get_fork() { - if fork.predates_fork(number) { - if overrides.is_some() { - return Err(BlockchainError::StateOverrideError( - "not available on past forked blocks".to_string(), - )); - } - return Ok(fork.call(&request, Some(number.into())).await?); - } - } - } - - let fees = FeeDetails::new( - request.gas_price, - request.max_fee_per_gas, - request.max_priority_fee_per_gas, - request.max_fee_per_blob_gas, - )? - .or_zero_fees(); - // this can be blocking for a bit, especially in forking mode - // - self.on_blocking_task(|this| async move { - let (exit, out, gas, _) = - this.backend.call(request, fees, Some(block_request), overrides).await?; - trace!(target : "node", "Call status {:?}, gas {}", exit, gas); - - ensure_return_ok(exit, &out) - }) - .await - } - async fn seismic_call( &self, request: WithOtherFields, @@ -1182,10 +1141,14 @@ impl EthApi { alloy_rpc_types::SeismicCallRequest::TransactionRequest(mut tx) => { let user_provided_from = tx.from; - // don't let them spoof msg.sender with unsigned calls tx.from = None; + tx.gas_price = None; // preventing InsufficientFunds error + tx.max_fee_per_gas = None; // preventing InsufficientFunds error + tx.max_priority_fee_per_gas = None; // preventing InsufficientFunds error + tx.max_fee_per_blob_gas = None; // preventing InsufficientFunds error + tx.value = None; // preventing InsufficientFunds error - match self.unsigned_call(tx, block_number, overrides).await { + match self.seismic_call(tx, block_number, overrides).await { Ok(bytes) => Ok(bytes), Err(original_err) => { // Only attach a custom message if user tried to set `from` != zero From 8f89a1070fd4beac5c1dbc7df0ed170ef69758cd Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Tue, 11 Feb 2025 19:17:22 -0500 Subject: [PATCH 051/130] rename teeservice => enclave (#88) --- Cargo.lock | 176 +++++++++--------- Cargo.toml | 58 +++--- crates/anvil/Cargo.toml | 2 +- crates/anvil/core/Cargo.toml | 2 +- .../anvil/core/src/eth/transaction/crypto.rs | 2 +- crates/anvil/core/src/eth/transaction/mod.rs | 2 +- crates/anvil/tests/it/seismic.rs | 2 +- 7 files changed, 124 insertions(+), 120 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9f53e0ac3..6d758eae9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "alloy-consensus" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-dyn-abi", "alloy-eips", @@ -130,7 +130,7 @@ dependencies = [ [[package]] name = "alloy-consensus-any" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-consensus", "alloy-eips", @@ -143,7 +143,7 @@ dependencies = [ [[package]] name = "alloy-contract" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -211,7 +211,7 @@ dependencies = [ [[package]] name = "alloy-eips" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-dyn-abi", "alloy-eip2930", @@ -229,7 +229,7 @@ dependencies = [ [[package]] name = "alloy-genesis" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-primitives", "alloy-serde", @@ -251,7 +251,7 @@ dependencies = [ [[package]] name = "alloy-json-rpc" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -264,7 +264,7 @@ dependencies = [ [[package]] name = "alloy-network" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -288,7 +288,7 @@ dependencies = [ [[package]] name = "alloy-network-primitives" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-consensus", "alloy-eips", @@ -300,7 +300,7 @@ dependencies = [ [[package]] name = "alloy-node-bindings" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-genesis", "alloy-primitives", @@ -347,7 +347,7 @@ dependencies = [ [[package]] name = "alloy-provider" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-chains", "alloy-consensus", @@ -377,9 +377,9 @@ dependencies = [ "pin-project 1.1.9", "reqwest", "schnellru", + "seismic-enclave 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde", "serde_json", - "tee_service_api 0.1.0 (git+ssh://git@github.com/SeismicSystems/TEEService.git?rev=21218a3)", "thiserror 2.0.11", "tokio", "tracing", @@ -390,7 +390,7 @@ dependencies = [ [[package]] name = "alloy-pubsub" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -430,7 +430,7 @@ dependencies = [ [[package]] name = "alloy-rpc-client" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -455,7 +455,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-primitives", "alloy-rpc-types-anvil", @@ -470,7 +470,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -481,7 +481,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -491,7 +491,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-debug" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-primitives", "serde", @@ -500,7 +500,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-engine" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-consensus", "alloy-eips", @@ -517,7 +517,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -536,7 +536,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-trace" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -549,7 +549,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-txpool" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -560,7 +560,7 @@ dependencies = [ [[package]] name = "alloy-serde" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-primitives", "serde", @@ -570,7 +570,7 @@ dependencies = [ [[package]] name = "alloy-signer" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-dyn-abi", "alloy-primitives", @@ -585,7 +585,7 @@ dependencies = [ [[package]] name = "alloy-signer-aws" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-consensus", "alloy-network", @@ -602,7 +602,7 @@ dependencies = [ [[package]] name = "alloy-signer-gcp" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-consensus", "alloy-network", @@ -619,7 +619,7 @@ dependencies = [ [[package]] name = "alloy-signer-ledger" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -638,7 +638,7 @@ dependencies = [ [[package]] name = "alloy-signer-local" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-consensus", "alloy-network", @@ -656,7 +656,7 @@ dependencies = [ [[package]] name = "alloy-signer-trezor" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-consensus", "alloy-network", @@ -740,7 +740,7 @@ dependencies = [ [[package]] name = "alloy-transport" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-json-rpc", "base64 0.22.1", @@ -759,7 +759,7 @@ dependencies = [ [[package]] name = "alloy-transport-http" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -773,7 +773,7 @@ dependencies = [ [[package]] name = "alloy-transport-ipc" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-json-rpc", "alloy-pubsub", @@ -793,7 +793,7 @@ dependencies = [ [[package]] name = "alloy-transport-ws" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=f9ff836#f9ff836421349d1c12211acd19156b4bbfdb8f94" +source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-pubsub", "alloy-transport", @@ -967,11 +967,11 @@ dependencies = [ "rand", "revm", "secp256k1", + "seismic-enclave 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde", "serde_json", "serde_repr", "similar-asserts", - "tee_service_api 0.1.0 (git+ssh://git@github.com/SeismicSystems/TEEService.git?rev=39b2865)", "tempfile", "thiserror 2.0.11", "tikv-jemallocator", @@ -1006,9 +1006,9 @@ dependencies = [ "rand", "revm", "secp256k1", + "seismic-enclave 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde", "serde_json", - "tee_service_api 0.1.0 (git+ssh://git@github.com/SeismicSystems/TEEService.git?rev=39b2865)", "thiserror 2.0.11", ] @@ -7618,7 +7618,7 @@ dependencies = [ [[package]] name = "revm" version = "18.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=def99a327a3df3ecf96d5e7d684db6aafde9928e#def99a327a3df3ecf96d5e7d684db6aafde9928e" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=77a08e9#77a08e9b70e2a29e83f1a15aacaecb5dfc7d7b70" dependencies = [ "auto_impl", "cfg-if", @@ -7630,10 +7630,10 @@ dependencies = [ "revm-precompile", "schnorrkel", "secp256k1", + "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/enclave.git?rev=f2c0757)", "serde", "serde_json", "sha2", - "tee_service_api 0.1.0 (git+ssh://git@github.com/SeismicSystems/TEEService.git?rev=39b2865)", ] [[package]] @@ -7657,7 +7657,7 @@ dependencies = [ [[package]] name = "revm-interpreter" version = "14.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=def99a327a3df3ecf96d5e7d684db6aafde9928e#def99a327a3df3ecf96d5e7d684db6aafde9928e" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=77a08e9#77a08e9b70e2a29e83f1a15aacaecb5dfc7d7b70" dependencies = [ "revm-primitives", "serde", @@ -7666,7 +7666,7 @@ dependencies = [ [[package]] name = "revm-precompile" version = "15.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=def99a327a3df3ecf96d5e7d684db6aafde9928e#def99a327a3df3ecf96d5e7d684db6aafde9928e" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=77a08e9#77a08e9b70e2a29e83f1a15aacaecb5dfc7d7b70" dependencies = [ "aurora-engine-modexp", "blst", @@ -7685,7 +7685,7 @@ dependencies = [ [[package]] name = "revm-primitives" version = "14.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=def99a327a3df3ecf96d5e7d684db6aafde9928e#def99a327a3df3ecf96d5e7d684db6aafde9928e" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=77a08e9#77a08e9b70e2a29e83f1a15aacaecb5dfc7d7b70" dependencies = [ "alloy-eip2930", "alloy-eip7702", @@ -8274,6 +8274,57 @@ dependencies = [ "libc", ] +[[package]] +name = "seismic-enclave" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "038ecbb935f63d62ba9590c54f185bb35f1086580566ac4332fc3840c4b585bd" +dependencies = [ + "aes-gcm", + "anyhow", + "bincode", + "byteorder", + "bytes", + "hkdf", + "http-body-util", + "hyper 0.14.32", + "kbs-types", + "once_cell", + "reqwest", + "schnorrkel", + "secp256k1", + "serde", + "serde_json", + "sha2", + "strum 0.25.0", + "tokio", +] + +[[package]] +name = "seismic-enclave" +version = "0.1.0" +source = "git+https://github.com/SeismicSystems/enclave.git?rev=f2c0757#f2c0757cf12208049a758f797f263912b00cf842" +dependencies = [ + "aes-gcm", + "anyhow", + "bincode", + "byteorder", + "bytes", + "hkdf", + "http-body-util", + "hyper 0.14.32", + "kbs-types", + "once_cell", + "reqwest", + "schnorrkel", + "secp256k1", + "serde", + "serde_json", + "sha2", + "strum 0.25.0", + "tokio", +] + [[package]] name = "semver" version = "0.11.0" @@ -9041,53 +9092,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" -[[package]] -name = "tee_service_api" -version = "0.1.0" -source = "git+ssh://git@github.com/SeismicSystems/TEEService.git?rev=21218a3#21218a3c1ff32f07ee05f9fa5310d9cecbb0d820" -dependencies = [ - "aes-gcm", - "anyhow", - "bincode", - "byteorder", - "bytes", - "hkdf", - "hyper 0.14.32", - "kbs-types", - "once_cell", - "reqwest", - "secp256k1", - "serde", - "serde_json", - "sha2", - "strum 0.25.0", - "tokio", -] - -[[package]] -name = "tee_service_api" -version = "0.1.0" -source = "git+ssh://git@github.com/SeismicSystems/TEEService.git?rev=39b2865#39b286548069755498c16a4b4f0242945c8b363c" -dependencies = [ - "aes-gcm", - "anyhow", - "bincode", - "byteorder", - "bytes", - "hkdf", - "hyper 0.14.32", - "kbs-types", - "once_cell", - "reqwest", - "schnorrkel", - "secp256k1", - "serde", - "serde_json", - "sha2", - "strum 0.25.0", - "tokio", -] - [[package]] name = "tempfile" version = "3.16.0" diff --git a/Cargo.toml b/Cargo.toml index 99c089539..a908add5b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -294,7 +294,7 @@ url = "2" vergen = { version = "8", default-features = false } yansi = { version = "1.0", features = ["detect-tty", "detect-env"] } -tee_service_api = { git = "ssh://git@github.com/SeismicSystems/TEEService.git", package = "tee_service_api", rev = "39b2865" } +seismic-enclave = "0.1.0" [patch.crates-io] # If our dependencies depend on these things, @@ -303,9 +303,9 @@ tee_service_api = { git = "ssh://git@github.com/SeismicSystems/TEEService.git", foundry-fork-db = { git = "ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "cd54596" } # seismic-revm -revm = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "def99a327a3df3ecf96d5e7d684db6aafde9928e" } -revm-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "def99a327a3df3ecf96d5e7d684db6aafde9928e" } -revm-interpreter = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "def99a327a3df3ecf96d5e7d684db6aafde9928e" } +revm = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "77a08e9" } +revm-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "77a08e9" } +revm-interpreter = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "77a08e9" } # seismic-revm-inspectors revm-inspectors = { git = "ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "19828b8" } @@ -320,31 +320,31 @@ alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-all alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6e1c0e9" } alloy-sol-type-parser = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6e1c0e9" } -alloy-consensus = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } -alloy-contract = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } -alloy-eips = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } -alloy-genesis = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } -alloy-json-rpc = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } -alloy-network = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } -alloy-provider = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } -alloy-pubsub = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } -alloy-rpc-client = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } -alloy-rpc-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } -alloy-rpc-types-trace = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } -alloy-rpc-types-eth = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } -alloy-serde = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } -alloy-signer = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } -alloy-signer-aws = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } -alloy-signer-gcp = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } -alloy-signer-ledger = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } -alloy-signer-local = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } -alloy-signer-trezor = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } -alloy-transport = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } -alloy-transport-http = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } -alloy-transport-ipc = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } -alloy-transport-ws = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } -alloy-node-bindings = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } -alloy-network-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "f9ff836" } +alloy-consensus = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-contract = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-eips = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-genesis = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-json-rpc = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-network = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-provider = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-pubsub = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-rpc-client = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-rpc-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-rpc-types-trace = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-rpc-types-eth = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-serde = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-signer = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-signer-aws = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-signer-gcp = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-signer-ledger = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-signer-local = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-signer-trezor = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-transport = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-transport-http = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-transport-ipc = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-transport-ws = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-node-bindings = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-network-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } foundry-compilers = { git = "ssh://git@github.com/SeismicSystems/seismic-compilers.git", rev = "b1cf865" } foundry-compilers-artifacts = { git = "ssh://git@github.com/SeismicSystems/seismic-compilers.git", rev = "b1cf865", package = "foundry-compilers-artifacts" } diff --git a/crates/anvil/Cargo.toml b/crates/anvil/Cargo.toml index 2845584e1..36f4e5811 100644 --- a/crates/anvil/Cargo.toml +++ b/crates/anvil/Cargo.toml @@ -114,7 +114,7 @@ ctrlc = { version = "3", optional = true } fdlimit = { version = "0.3", optional = true } clap_complete_fig = "4" -tee_service_api.workspace = true +seismic-enclave.workspace = true [target.'cfg(unix)'.dependencies] diff --git a/crates/anvil/core/Cargo.toml b/crates/anvil/core/Cargo.toml index dd595707f..d91717119 100644 --- a/crates/anvil/core/Cargo.toml +++ b/crates/anvil/core/Cargo.toml @@ -48,7 +48,7 @@ secp256k1 = { version = "0.29", default-features = false, features = [ "recovery", ] } -tee_service_api.workspace = true +seismic-enclave.workspace = true [features] default = ["serde"] diff --git a/crates/anvil/core/src/eth/transaction/crypto.rs b/crates/anvil/core/src/eth/transaction/crypto.rs index 2901c9866..f464cf3e7 100644 --- a/crates/anvil/core/src/eth/transaction/crypto.rs +++ b/crates/anvil/core/src/eth/transaction/crypto.rs @@ -2,7 +2,7 @@ use alloy_consensus::{transaction::TxSeismic, Signed}; use alloy_primitives::{FixedBytes, SignatureError}; use once_cell::sync::Lazy; use secp256k1::{ecdh::SharedSecret, PublicKey, SecretKey}; -use tee_service_api::{ +use seismic_enclave::{ aes_decrypt, aes_encrypt, derive_aes_key, get_sample_secp256k1_pk, get_sample_secp256k1_sk, nonce::Nonce, }; diff --git a/crates/anvil/core/src/eth/transaction/mod.rs b/crates/anvil/core/src/eth/transaction/mod.rs index fb7542a03..870bdaa64 100644 --- a/crates/anvil/core/src/eth/transaction/mod.rs +++ b/crates/anvil/core/src/eth/transaction/mod.rs @@ -1650,8 +1650,8 @@ pub fn convert_to_anvil_receipt(receipt: AnyTransactionReceipt) -> Option Date: Tue, 11 Feb 2025 19:22:17 -0500 Subject: [PATCH 052/130] Adding `sanvil` ASCII art + colors + changing link (#89) --- crates/anvil/src/config.rs | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/crates/anvil/src/config.rs b/crates/anvil/src/config.rs index a4833d5b4..54612be0e 100644 --- a/crates/anvil/src/config.rs +++ b/crates/anvil/src/config.rs @@ -80,12 +80,14 @@ pub const VERSION_MESSAGE: &str = concat!( ); const BANNER: &str = r" - _ _ - (_) | | - __ _ _ __ __ __ _ | | - / _` | | '_ \ \ \ / / | | | | - | (_| | | | | | \ V / | | | | - \__,_| |_| |_| \_/ |_| |_| + +░██████╗░█████╗░███╗░░██╗██╗░░░██╗██╗██╗░░░░░ +██╔════╝██╔══██╗████╗░██║██║░░░██║██║██║░░░░░ +╚█████╗░███████║██╔██╗██║╚██╗░██╔╝██║██║░░░░░ +░╚═══██╗██╔══██║██║╚████║░╚████╔╝░██║██║░░░░░ +██████╔╝██║░░██║██║░╚███║░░╚██╔╝░░██║███████╗ +╚═════╝░╚═╝░░╚═╝╚═╝░░╚══╝░░░╚═╝░░░╚═╝╚══════╝ + "; /// Configurations of the EVM node @@ -200,9 +202,13 @@ pub struct NodeConfig { impl NodeConfig { fn as_string(&self, fork: Option<&ClientFork>) -> String { let mut s: String = String::new(); - let _ = write!(s, "\n{}", BANNER.green()); + let _ = write!(s, "\n{}", BANNER.rgb(172, 103, 42)); let _ = write!(s, "\n {VERSION_MESSAGE}"); - let _ = write!(s, "\n {}", "https://github.com/foundry-rs/foundry".green()); + let _ = write!( + s, + "\n {}", + "https://github.com/SeismicSystems/seismic-foundry".rgb(172, 103, 42) + ); let _ = write!( s, @@ -277,7 +283,7 @@ Chain ID {} "#, - self.get_chain_id().green() + self.get_chain_id().rgb(172, 103, 42) ); } @@ -290,7 +296,7 @@ Gas Price {} "#, - self.get_gas_price().green() + self.get_gas_price().rgb(172, 103, 42) ); } else { let _ = write!( @@ -301,7 +307,7 @@ Base Fee {} "#, - self.get_base_fee().green() + self.get_base_fee().rgb(172, 103, 42) ); } @@ -326,7 +332,7 @@ Gas Limit }) } } - .green() + .rgb(172, 103, 42) ); let _ = write!( @@ -337,7 +343,7 @@ Genesis Timestamp {} "#, - self.get_genesis_timestamp().green() + self.get_genesis_timestamp().rgb(172, 103, 42) ); s From c10e0b625cd3c7154ea7ea3d00cdaa68eeea7d89 Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Tue, 11 Feb 2025 22:44:23 -0500 Subject: [PATCH 053/130] CI: use large-github-runner to speed up builds (#90) --- .github/workflows/seismic.yml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/.github/workflows/seismic.yml b/.github/workflows/seismic.yml index 2605837e7..00ca13800 100644 --- a/.github/workflows/seismic.yml +++ b/.github/workflows/seismic.yml @@ -26,7 +26,7 @@ jobs: - run: cargo fmt --all --check build: - runs-on: ubuntu-latest + runs-on: large-github-runner timeout-minutes: 30 steps: - uses: actions/checkout@v4 @@ -52,10 +52,6 @@ jobs: run: cargo build --bin sforge - name: sanvil build run: cargo build --bin sanvil - - name: sforge warnings - run: RUSTFLAGS="-D warnings" cargo check --bin sforge - - name: sanvil warnings - run: RUSTFLAGS="-D warnings" cargo check --bin sanvil warnings: runs-on: ubuntu-latest @@ -86,7 +82,7 @@ jobs: run: RUSTFLAGS="-D warnings" cargo check --bin sanvil test: - runs-on: ubuntu-latest + runs-on: large-github-runner timeout-minutes: 30 steps: - uses: actions/checkout@v4 From 48ea3f5d0453ff2bf06059f745139d5e413151e8 Mon Sep 17 00:00:00 2001 From: Ameya Deshmukh Date: Wed, 12 Feb 2025 10:47:10 -0500 Subject: [PATCH 054/130] Removing `SEISMIC_PAT` from `install` and `sfoundryup` scripts (#91) Co-authored-by: Ameya Deshmukh --- sfoundryup/README.md | 67 +++++++++++++++---------------------------- sfoundryup/install | 9 +----- sfoundryup/sfoundryup | 50 +++----------------------------- 3 files changed, 28 insertions(+), 98 deletions(-) diff --git a/sfoundryup/README.md b/sfoundryup/README.md index 0dff30d84..15ca2f009 100644 --- a/sfoundryup/README.md +++ b/sfoundryup/README.md @@ -1,60 +1,39 @@ # `sfoundryup` -Install, update, or revert to a specific branch, fork, or version of Seismic Foundry tools with ease. -## For developers building on top of Seismic +Install and update the Seismic Foundry suite of developer tools with ease. ### Installing -Before installing, ensure you have a **GitHub Personal Access Token (PAT)** with repository access. Export the token as an environment variable: +Run the following command to install `sfoundryup`: ```bash -export SEISMIC_PAT=your_personal_access_token -``` -Then, run the following command to install sfoundryup: -```bash -curl -L -H "Authorization: token $SEISMIC_PAT" \ - -H "Accept: application/vnd.github.v3.raw" \ - "https://api.github.com/repos/SeismicSystems/seismic-foundry/contents/sfoundryup/install?ref=seismic" | bash -``` -## Usage -### Install Seismic Foundry as a developer building on top of Seismic: -```bash -sfoundryup +curl -L -H "Accept: application/vnd.github.v3.raw" \ + "https://raw.githubusercontent.com/SeismicSystems/seismic-foundry/seismic/sfoundryup/install" | bash ``` +Now, either open a new terminal or reload your shell configuration to start using sfoundryup: -## For Seismic core team members -Create the `~/.seismic/bin` directory if not already created -```bash -mkdir -p ~/.seismic/bin -``` -Add `~/.seismic/bin` to your shell (`~/.bashrc`, `~/.zshrc`, etc.) -```bash -echo 'export PATH="$PATH:$HOME/.seismic/bin"' >> ~/.bashrc ## Replace this with your shell configuration file -``` -Clone the Seismic Foundry Repository if not already cloned to your local machine +For `bash` users: ```bash -git clone git@github.com:SeismicSystems/seismic-foundry.git +source ~/.bashrc ``` -Navigate to the Repository -```bash -cd seismic-foundry -``` -Pull the Latest Changes on the `seismic` Branch: + +For `zsh` users: ```bash - git checkout seismic - git pull origin seismic +source ~/.zshrc ``` -Copy `sfoundryup` to `~/.seismic/bin`: + +For `fish` users: ```bash - cp sfoundryup/sfoundryup ~/.seismic/bin/ +source ~/.config/fish/config.fish ``` -Make the Script Executable: + +For `ash` users: ```bash - chmod +x ~/.seismic/bin/sfoundryup +source ~/.profile ``` -Reload Your Shell Configuration or start another terminal instance: -```bash - source ~/.bashrc ## Replace this with your shell configuration file - ``` + ## Usage -### Install Seismic Foundry as a Seismic core team member: +### Install Seismic Foundry: +Run the following in your terminal to install the Seismic Foundry suite of developer tools: ```bash -sfoundryup --core +sfoundryup +``` + ``` -**Tip**: All flags except `--core` have a single-character shorthand equivalent! You can use -v instead of --version, etc. +**Tip**: All flags have a single-character shorthand equivalent! You can use -v instead of --version, etc. diff --git a/sfoundryup/install b/sfoundryup/install index 39837f114..2b4291c9e 100755 --- a/sfoundryup/install +++ b/sfoundryup/install @@ -10,12 +10,6 @@ SEISMIC_BIN_DIR="$SEISMIC_DIR/bin" BIN_PATH="$SEISMIC_BIN_DIR/sfoundryup" -# Ensure SEISMIC_PAT is set -if [[ -z "$SEISMIC_PAT" ]]; then - echo "Error: SEISMIC_PAT environment variable is not set. Please export it with your GitHub Personal Access Token." - echo "Example: export SEISMIC_PAT=your_personal_access_token" - exit 1 -fi # GitHub raw URL to sfoundryup in the private repository RAW_API_URL="https://raw.githubusercontent.com/SeismicSystems/seismic-foundry/seismic/sfoundryup/sfoundryup" @@ -25,8 +19,7 @@ mkdir -p "$SEISMIC_BIN_DIR" # Download sfoundryup using GitHub raw content URL echo "Fetching sfoundryup from the private repository..." -curl -sSf -H "Authorization: token $SEISMIC_PAT" \ - "$RAW_API_URL" -o "$BIN_PATH" +curl -sSf "$RAW_API_URL" -o "$BIN_PATH" # Make the file executable chmod +x "$BIN_PATH" diff --git a/sfoundryup/sfoundryup b/sfoundryup/sfoundryup index b9406aedf..eb7b00726 100755 --- a/sfoundryup/sfoundryup +++ b/sfoundryup/sfoundryup @@ -12,12 +12,9 @@ BINS=(sforge scast sanvil schisel) export RUSTFLAGS="${RUSTFLAGS:--C target-cpu=native}" main() { - # Default to devs mode - SEISMIC_MODE="devs" while [[ -n $1 ]]; do case $1 in --) shift; break;; - --core) SEISMIC_MODE="core";; -v|--version) shift; SEISMICUP_VERSION=$1;; -p|--path) shift; SEISMICUP_LOCAL_REPO=$1;; -j|--jobs) shift; SEISMICUP_JOBS=$1;; @@ -34,15 +31,6 @@ main() { shift done - echo "SEISMIC_MODE: $SEISMIC_MODE" - - # Ensure SEISMIC_PAT is set if not using seismic-core - if [[ -z "$SEISMIC_PAT" && "$SEISMIC_MODE" != "core" ]]; then - echo "Error: SEISMIC_PAT environment variable is not set. Please export it with your GitHub Personal Access Token." - echo "Example: export SEISMIC_PAT=your_personal_access_token" - exit 1 - fi - need_cmd git need_cmd curl need_cmd jq @@ -68,17 +56,6 @@ main() { install_ssolc() { echo "Starting ssolc installation..." - if [[ "$SEISMIC_MODE" == "core" ]]; then - echo "Please ensure you have 'ssolc' installed in /usr/local/bin." - return - fi - - # Ensure SEISMIC_PAT is set - if [[ -z "$SEISMIC_PAT" ]]; then - echo "Error: SEISMIC_PAT environment variable is not set. Please provide a valid GitHub Personal Access Token." - exit 1 - fi - # Detect OS OS="$(uname -s)" ARCH="$(uname -m)" @@ -126,7 +103,7 @@ install_ssolc() { # Fetch the asset ID for the target file echo "Fetching asset ID for $TARGET_NAME..." GITHUB_API_URL="https://api.github.com/repos/SeismicSystems/seismic-solidity-releases/releases/latest" - ASSET_ID=$(curl -s -H "Authorization: token $SEISMIC_PAT" "$GITHUB_API_URL" | \ + ASSET_ID=$(curl -s "$GITHUB_API_URL" | \ jq -r --arg name "$TARGET_NAME" '.assets[] | select(.name == $name) | .id') if [[ -z "$ASSET_ID" ]]; then @@ -138,8 +115,7 @@ install_ssolc() { # Download the file using the asset ID echo "Downloading $TARGET_NAME..." - curl -L -H "Authorization: token $SEISMIC_PAT" \ - -H "Accept: application/octet-stream" \ + curl -L -H "Accept: application/octet-stream" \ -o "$TEMP_DIR/$TARGET_NAME" \ "https://api.github.com/repos/SeismicSystems/seismic-solidity-releases/releases/assets/$ASSET_ID" @@ -183,14 +159,8 @@ install_from_remote_repo() { # Clone the repository if it doesn't already exist if [ ! -d "$REPO_PATH" ]; then ensure mkdir -p "$SEISMIC_DIR" - say "Cloning the repository using PAT..." - if [[ "$SEISMIC_MODE" == "core" ]]; then - # Use SSH for core - ensure git clone "git@github.com:$SEISMICUP_REPO.git" "$REPO_PATH" - else - # Use HTTPS for devs - ensure git clone "https://$SEISMIC_PAT@github.com/$SEISMICUP_REPO.git" "$REPO_PATH" - fi + say "Cloning the repository..." + ensure git clone "https://github.com/$SEISMICUP_REPO.git" "$REPO_PATH" fi # Fetch and checkout the branch @@ -201,17 +171,6 @@ install_from_remote_repo() { # Use the git CLI to fetch dependencies export CARGO_NET_GIT_FETCH_WITH_CLI=true - if [[ "$SEISMIC_MODE" == "core" ]]; then - echo "Using SSH dependencies for Seismic core team members" - else - echo "Using HTTPS dependencies for Seismic developers" - # For Seismic dependencies, remap the use of SSH to use HTTPS + access token - # First remove any previous remapping with old access token - ensure git config --global --get-regexp '^url\.https://.*@github\.com/SeismicSystems\.insteadOf' | cut -d' ' -f1 | while read -r key; do git config --global --unset "$key"; done || true - # Then add URL remapping - ensure git config --global url."https://$SEISMIC_PAT@github.com/SeismicSystems".insteadOf "ssh://git@github.com/SeismicSystems" - fi - # Build the binaries ensure cargo build --bins "${CARGO_BUILD_ARGS[@]}" for bin in "${BINS[@]}"; do @@ -236,7 +195,6 @@ USAGE: sfoundryup OPTIONS: - --core Install Seismic Foundry for core Seismic team members (SSH dependencies) -h, --help Print help information -v, --version Install a specific version from built binaries -p, --path Build and install a local repository From 00f2124d654fb5b56cfd91a7db2968e49c8cd566 Mon Sep 17 00:00:00 2001 From: sfyll <39958632+sfyll@users.noreply.github.com> Date: Wed, 12 Feb 2025 16:59:59 +0100 Subject: [PATCH 055/130] update dependencies to use HTTPS instead of SSH (#82) Co-authored-by: Christian Drappi --- Cargo.lock | 102 ++++++++++++++++++++++++++--------------------------- Cargo.toml | 92 +++++++++++++++++++++++------------------------ 2 files changed, 97 insertions(+), 97 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6d758eae9..5383b3789 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "alloy-consensus" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-dyn-abi", "alloy-eips", @@ -130,7 +130,7 @@ dependencies = [ [[package]] name = "alloy-consensus-any" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-consensus", "alloy-eips", @@ -143,7 +143,7 @@ dependencies = [ [[package]] name = "alloy-contract" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -163,7 +163,7 @@ dependencies = [ [[package]] name = "alloy-dyn-abi" version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=6e1c0e9#6e1c0e9e6c4f955e2f0c01d859932adb46952a3c" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=77693d2#77693d2debe65066ec9955b65bfe4fb2b0e83608" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -211,7 +211,7 @@ dependencies = [ [[package]] name = "alloy-eips" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-dyn-abi", "alloy-eip2930", @@ -229,7 +229,7 @@ dependencies = [ [[package]] name = "alloy-genesis" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-primitives", "alloy-serde", @@ -240,7 +240,7 @@ dependencies = [ [[package]] name = "alloy-json-abi" version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=6e1c0e9#6e1c0e9e6c4f955e2f0c01d859932adb46952a3c" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=77693d2#77693d2debe65066ec9955b65bfe4fb2b0e83608" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -251,7 +251,7 @@ dependencies = [ [[package]] name = "alloy-json-rpc" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -264,7 +264,7 @@ dependencies = [ [[package]] name = "alloy-network" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -288,7 +288,7 @@ dependencies = [ [[package]] name = "alloy-network-primitives" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-consensus", "alloy-eips", @@ -300,7 +300,7 @@ dependencies = [ [[package]] name = "alloy-node-bindings" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-genesis", "alloy-primitives", @@ -316,7 +316,7 @@ dependencies = [ [[package]] name = "alloy-primitives" version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=6e1c0e9#6e1c0e9e6c4f955e2f0c01d859932adb46952a3c" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=77693d2#77693d2debe65066ec9955b65bfe4fb2b0e83608" dependencies = [ "alloy-rlp", "arbitrary", @@ -347,7 +347,7 @@ dependencies = [ [[package]] name = "alloy-provider" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-chains", "alloy-consensus", @@ -390,7 +390,7 @@ dependencies = [ [[package]] name = "alloy-pubsub" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -430,7 +430,7 @@ dependencies = [ [[package]] name = "alloy-rpc-client" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -455,7 +455,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-primitives", "alloy-rpc-types-anvil", @@ -470,7 +470,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -481,7 +481,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -491,7 +491,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-debug" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-primitives", "serde", @@ -500,7 +500,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-engine" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-consensus", "alloy-eips", @@ -517,7 +517,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -536,7 +536,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-trace" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -549,7 +549,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-txpool" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -560,7 +560,7 @@ dependencies = [ [[package]] name = "alloy-serde" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-primitives", "serde", @@ -570,7 +570,7 @@ dependencies = [ [[package]] name = "alloy-signer" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-dyn-abi", "alloy-primitives", @@ -585,7 +585,7 @@ dependencies = [ [[package]] name = "alloy-signer-aws" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-consensus", "alloy-network", @@ -602,7 +602,7 @@ dependencies = [ [[package]] name = "alloy-signer-gcp" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-consensus", "alloy-network", @@ -619,7 +619,7 @@ dependencies = [ [[package]] name = "alloy-signer-ledger" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -638,7 +638,7 @@ dependencies = [ [[package]] name = "alloy-signer-local" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-consensus", "alloy-network", @@ -656,7 +656,7 @@ dependencies = [ [[package]] name = "alloy-signer-trezor" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-consensus", "alloy-network", @@ -672,7 +672,7 @@ dependencies = [ [[package]] name = "alloy-sol-macro" version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=6e1c0e9#6e1c0e9e6c4f955e2f0c01d859932adb46952a3c" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=77693d2#77693d2debe65066ec9955b65bfe4fb2b0e83608" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", @@ -685,7 +685,7 @@ dependencies = [ [[package]] name = "alloy-sol-macro-expander" version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=6e1c0e9#6e1c0e9e6c4f955e2f0c01d859932adb46952a3c" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=77693d2#77693d2debe65066ec9955b65bfe4fb2b0e83608" dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", @@ -703,7 +703,7 @@ dependencies = [ [[package]] name = "alloy-sol-macro-input" version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=6e1c0e9#6e1c0e9e6c4f955e2f0c01d859932adb46952a3c" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=77693d2#77693d2debe65066ec9955b65bfe4fb2b0e83608" dependencies = [ "alloy-json-abi", "const-hex", @@ -719,7 +719,7 @@ dependencies = [ [[package]] name = "alloy-sol-type-parser" version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=6e1c0e9#6e1c0e9e6c4f955e2f0c01d859932adb46952a3c" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=77693d2#77693d2debe65066ec9955b65bfe4fb2b0e83608" dependencies = [ "serde", "winnow 0.6.24", @@ -728,7 +728,7 @@ dependencies = [ [[package]] name = "alloy-sol-types" version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=6e1c0e9#6e1c0e9e6c4f955e2f0c01d859932adb46952a3c" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=77693d2#77693d2debe65066ec9955b65bfe4fb2b0e83608" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -740,7 +740,7 @@ dependencies = [ [[package]] name = "alloy-transport" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-json-rpc", "base64 0.22.1", @@ -759,7 +759,7 @@ dependencies = [ [[package]] name = "alloy-transport-http" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -773,7 +773,7 @@ dependencies = [ [[package]] name = "alloy-transport-ipc" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-json-rpc", "alloy-pubsub", @@ -793,7 +793,7 @@ dependencies = [ [[package]] name = "alloy-transport-ws" version = "0.8.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" dependencies = [ "alloy-pubsub", "alloy-transport", @@ -3931,7 +3931,7 @@ dependencies = [ [[package]] name = "foundry-compilers" version = "0.12.9" -source = "git+ssh://git@github.com/SeismicSystems/seismic-compilers.git?rev=b1cf865#b1cf8651f8958d93c70f8240073354f3867cc18e" +source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=352264d#352264d7f84c1b66d3f6e456c78c07fb9695b718" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -3967,7 +3967,7 @@ dependencies = [ [[package]] name = "foundry-compilers-artifacts" version = "0.12.9" -source = "git+ssh://git@github.com/SeismicSystems/seismic-compilers.git?rev=b1cf865#b1cf8651f8958d93c70f8240073354f3867cc18e" +source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=352264d#352264d7f84c1b66d3f6e456c78c07fb9695b718" dependencies = [ "foundry-compilers-artifacts-solc", "foundry-compilers-artifacts-vyper", @@ -3976,7 +3976,7 @@ dependencies = [ [[package]] name = "foundry-compilers-artifacts-solc" version = "0.12.9" -source = "git+ssh://git@github.com/SeismicSystems/seismic-compilers.git?rev=b1cf865#b1cf8651f8958d93c70f8240073354f3867cc18e" +source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=352264d#352264d7f84c1b66d3f6e456c78c07fb9695b718" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -3999,7 +3999,7 @@ dependencies = [ [[package]] name = "foundry-compilers-artifacts-vyper" version = "0.12.9" -source = "git+ssh://git@github.com/SeismicSystems/seismic-compilers.git?rev=b1cf865#b1cf8651f8958d93c70f8240073354f3867cc18e" +source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=352264d#352264d7f84c1b66d3f6e456c78c07fb9695b718" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -4013,7 +4013,7 @@ dependencies = [ [[package]] name = "foundry-compilers-core" version = "0.12.9" -source = "git+ssh://git@github.com/SeismicSystems/seismic-compilers.git?rev=b1cf865#b1cf8651f8958d93c70f8240073354f3867cc18e" +source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=352264d#352264d7f84c1b66d3f6e456c78c07fb9695b718" dependencies = [ "alloy-primitives", "cfg-if", @@ -4234,7 +4234,7 @@ dependencies = [ [[package]] name = "foundry-fork-db" version = "0.9.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git?rev=cd54596#cd54596038b5bb3ad86c28c293fc5e4c5e1ddf52" +source = "git+https://github.com/SeismicSystems/seismic-foundry-fork-db.git?rev=86fa364#86fa36401508eb87d8ac7b5cbd0af21f6e22e9a0" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -7618,7 +7618,7 @@ dependencies = [ [[package]] name = "revm" version = "18.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=77a08e9#77a08e9b70e2a29e83f1a15aacaecb5dfc7d7b70" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=77a08e9#77a08e9b70e2a29e83f1a15aacaecb5dfc7d7b70" dependencies = [ "auto_impl", "cfg-if", @@ -7639,7 +7639,7 @@ dependencies = [ [[package]] name = "revm-inspectors" version = "0.13.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git?rev=19828b8#19828b8cf93a3b918324f8ef70e8f3411f516846" +source = "git+ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git?rev=9868b93#9868b93ab3edc0c5e495f85f1474a8ef23208f88" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -7657,7 +7657,7 @@ dependencies = [ [[package]] name = "revm-interpreter" version = "14.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=77a08e9#77a08e9b70e2a29e83f1a15aacaecb5dfc7d7b70" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=77a08e9#77a08e9b70e2a29e83f1a15aacaecb5dfc7d7b70" dependencies = [ "revm-primitives", "serde", @@ -7666,7 +7666,7 @@ dependencies = [ [[package]] name = "revm-precompile" version = "15.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=77a08e9#77a08e9b70e2a29e83f1a15aacaecb5dfc7d7b70" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=77a08e9#77a08e9b70e2a29e83f1a15aacaecb5dfc7d7b70" dependencies = [ "aurora-engine-modexp", "blst", @@ -7685,7 +7685,7 @@ dependencies = [ [[package]] name = "revm-primitives" version = "14.0.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm.git?rev=77a08e9#77a08e9b70e2a29e83f1a15aacaecb5dfc7d7b70" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=77a08e9#77a08e9b70e2a29e83f1a15aacaecb5dfc7d7b70" dependencies = [ "alloy-eip2930", "alloy-eip7702", @@ -9058,7 +9058,7 @@ dependencies = [ [[package]] name = "syn-solidity" version = "0.8.15" -source = "git+ssh://git@github.com/SeismicSystems/seismic-alloy-core.git?rev=6e1c0e9#6e1c0e9e6c4f955e2f0c01d859932adb46952a3c" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=77693d2#77693d2debe65066ec9955b65bfe4fb2b0e83608" dependencies = [ "paste", "proc-macro2", diff --git a/Cargo.toml b/Cargo.toml index a908add5b..1f58c3138 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,7 +31,7 @@ version = "0.3.0" edition = "2021" # Remember to update clippy.toml as well rust-version = "1.83" -authors = ["Foundry Contributors", "Seismic Developers"] +authors = ["Foundry Contributors", "Seismic Systems"] license = "MIT OR Apache-2.0" homepage = "https://github.com/SeismicSystems/seismic-foundry" repository = "https://github.com/SeismicSystems/seismic-foundry" @@ -300,54 +300,54 @@ seismic-enclave = "0.1.0" # If our dependencies depend on these things, # then this will override whatever versions they point to # and instead use our local version -foundry-fork-db = { git = "ssh://git@github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "cd54596" } +foundry-fork-db = { git = "https://github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "86fa364" } # seismic-revm -revm = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "77a08e9" } -revm-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "77a08e9" } -revm-interpreter = { git = "ssh://git@github.com/SeismicSystems/seismic-revm.git", rev = "77a08e9" } +revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "77a08e9" } +revm-primitives = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "77a08e9" } +revm-interpreter = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "77a08e9" } # seismic-revm-inspectors -revm-inspectors = { git = "ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "19828b8" } +revm-inspectors = { git = "ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "9868b93" } # seismic-alloy-core -alloy-dyn-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6e1c0e9" } -alloy-json-abi = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6e1c0e9" } -alloy-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6e1c0e9" } -alloy-sol-macro = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6e1c0e9" } -alloy-sol-macro-expander = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6e1c0e9" } -alloy-sol-macro-input = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6e1c0e9" } -alloy-sol-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6e1c0e9" } -alloy-sol-type-parser = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy-core.git", rev = "6e1c0e9" } - -alloy-consensus = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-contract = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-eips = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-genesis = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-json-rpc = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-network = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-provider = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-pubsub = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-rpc-client = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-rpc-types = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-rpc-types-trace = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-rpc-types-eth = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-serde = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-signer = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-signer-aws = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-signer-gcp = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-signer-ledger = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-signer-local = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-signer-trezor = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-transport = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-transport-http = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-transport-ipc = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-transport-ws = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-node-bindings = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-network-primitives = { git = "ssh://git@github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } - -foundry-compilers = { git = "ssh://git@github.com/SeismicSystems/seismic-compilers.git", rev = "b1cf865" } -foundry-compilers-artifacts = { git = "ssh://git@github.com/SeismicSystems/seismic-compilers.git", rev = "b1cf865", package = "foundry-compilers-artifacts" } -foundry-compilers-artifacts-solc = { git = "ssh://git@github.com/SeismicSystems/seismic-compilers.git", rev = "b1cf865", package = "foundry-compilers-artifacts-solc" } -foundry-compilers-artifacts-vyper = { git = "ssh://git@github.com/SeismicSystems/seismic-compilers.git", rev = "b1cf865", package = "foundry-compilers-artifacts-vyper" } -foundry-compilers-core = { git = "ssh://git@github.com/SeismicSystems/seismic-compilers.git", rev = "b1cf865", package = "foundry-compilers-core" } +alloy-dyn-abi = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "77693d2" } +alloy-json-abi = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "77693d2" } +alloy-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "77693d2" } +alloy-sol-macro = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "77693d2" } +alloy-sol-macro-expander = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "77693d2" } +alloy-sol-macro-input = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "77693d2" } +alloy-sol-types = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "77693d2" } +alloy-sol-type-parser = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "77693d2" } + +alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-contract = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-eips = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-genesis = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-json-rpc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-pubsub = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-rpc-client = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-rpc-types-trace = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-rpc-types-eth = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-serde = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-signer = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-signer-aws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-signer-gcp = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-signer-ledger = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-signer-local = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-signer-trezor = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-transport = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-transport-http = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-transport-ipc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-transport-ws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-node-bindings = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +alloy-network-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } + +foundry-compilers = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } +foundry-compilers-artifacts = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } +foundry-compilers-artifacts-solc = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } +foundry-compilers-artifacts-vyper = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } +foundry-compilers-core = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } From abfedc721ddf301604a7bf4cf251fa2abbe2cf74 Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Wed, 12 Feb 2025 13:26:51 -0500 Subject: [PATCH 056/130] remove ssh from ci; fix revm-inspectors dep (#92) --- .github/workflows/seismic.yml | 42 ----------------------------------- Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 2 insertions(+), 44 deletions(-) diff --git a/.github/workflows/seismic.yml b/.github/workflows/seismic.yml index 00ca13800..220f860ca 100644 --- a/.github/workflows/seismic.yml +++ b/.github/workflows/seismic.yml @@ -34,20 +34,6 @@ jobs: - uses: Swatinem/rust-cache@v2 with: shared-key: "build-cache" - - name: Install SSH Keys - uses: webfactory/ssh-agent@v0.9.0 - with: - ssh-private-key: | - ${{ secrets.ACTIONS_MANTLE_SSH_ED25519 }} - ${{ secrets.ACTIONS_SFORGESTD_SSH_ED25519 }} - ${{ secrets.ACTIONS_SALLOY_SSH_ED25519 }} - ${{ secrets.ACTIONS_SALLOYCORE_SSH_ED25519 }} - ${{ secrets.ACTIONS_SREVM_SSH_ED25519 }} - ${{ secrets.ACTIONS_SREVMINSPECTORS_SSH_ED25519 }} - ${{ secrets.ACTIONS_SFOUNDRYFDB_SSH_ED25519 }} - ${{ secrets.ACTIONS_SRETH_SSH_ED25519 }} - ${{ secrets.ACTIONS_TEESERVICE_SSH_ED25519 }} - ${{ secrets.ACTIONS_SCOMPILERS_SSH_ED25519 }} - name: sforge build run: cargo build --bin sforge - name: sanvil build @@ -62,20 +48,6 @@ jobs: - uses: Swatinem/rust-cache@v2 with: shared-key: "warnings-cache" - - name: Install SSH Keys - uses: webfactory/ssh-agent@v0.9.0 - with: - ssh-private-key: | - ${{ secrets.ACTIONS_MANTLE_SSH_ED25519 }} - ${{ secrets.ACTIONS_SFORGESTD_SSH_ED25519 }} - ${{ secrets.ACTIONS_SALLOY_SSH_ED25519 }} - ${{ secrets.ACTIONS_SALLOYCORE_SSH_ED25519 }} - ${{ secrets.ACTIONS_SREVM_SSH_ED25519 }} - ${{ secrets.ACTIONS_SREVMINSPECTORS_SSH_ED25519 }} - ${{ secrets.ACTIONS_SFOUNDRYFDB_SSH_ED25519 }} - ${{ secrets.ACTIONS_SRETH_SSH_ED25519 }} - ${{ secrets.ACTIONS_TEESERVICE_SSH_ED25519 }} - ${{ secrets.ACTIONS_SCOMPILERS_SSH_ED25519 }} - name: sforge warnings run: RUSTFLAGS="-D warnings" cargo check --bin sforge - name: sanvil warnings @@ -90,20 +62,6 @@ jobs: - uses: Swatinem/rust-cache@v2 with: shared-key: "test-cache" - - name: Install SSH Keys - uses: webfactory/ssh-agent@v0.9.0 - with: - ssh-private-key: | - ${{ secrets.ACTIONS_MANTLE_SSH_ED25519 }} - ${{ secrets.ACTIONS_SFORGESTD_SSH_ED25519 }} - ${{ secrets.ACTIONS_SALLOY_SSH_ED25519 }} - ${{ secrets.ACTIONS_SALLOYCORE_SSH_ED25519 }} - ${{ secrets.ACTIONS_SREVM_SSH_ED25519 }} - ${{ secrets.ACTIONS_SREVMINSPECTORS_SSH_ED25519 }} - ${{ secrets.ACTIONS_SFOUNDRYFDB_SSH_ED25519 }} - ${{ secrets.ACTIONS_SRETH_SSH_ED25519 }} - ${{ secrets.ACTIONS_TEESERVICE_SSH_ED25519 }} - ${{ secrets.ACTIONS_SCOMPILERS_SSH_ED25519 }} - name: seismic transaction run: cargo test test_seismic_transaction # - name: sforge tests diff --git a/Cargo.lock b/Cargo.lock index 5383b3789..04477be6f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7639,7 +7639,7 @@ dependencies = [ [[package]] name = "revm-inspectors" version = "0.13.0" -source = "git+ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git?rev=9868b93#9868b93ab3edc0c5e495f85f1474a8ef23208f88" +source = "git+https://github.com/SeismicSystems/seismic-revm-inspectors.git?rev=9868b93#9868b93ab3edc0c5e495f85f1474a8ef23208f88" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", diff --git a/Cargo.toml b/Cargo.toml index 1f58c3138..242772bd2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -308,7 +308,7 @@ revm-primitives = { git = "https://github.com/SeismicSystems/seismic-revm.git", revm-interpreter = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "77a08e9" } # seismic-revm-inspectors -revm-inspectors = { git = "ssh://git@github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "9868b93" } +revm-inspectors = { git = "https://github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "9868b93" } # seismic-alloy-core alloy-dyn-abi = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "77693d2" } From 5b97fb6574eff815b87975f8e18ec63c1665bf40 Mon Sep 17 00:00:00 2001 From: Ameya Deshmukh Date: Wed, 12 Feb 2025 22:31:50 -0500 Subject: [PATCH 057/130] fix: `anvil` and `forge` terminal message to `sanvil` and `sforge` (#93) --- crates/anvil/src/anvil.rs | 2 +- crates/forge/bin/opts.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/anvil/src/anvil.rs b/crates/anvil/src/anvil.rs index 63b3b20c8..cc160959d 100644 --- a/crates/anvil/src/anvil.rs +++ b/crates/anvil/src/anvil.rs @@ -11,7 +11,7 @@ static ALLOC: tikv_jemallocator::Jemalloc = tikv_jemallocator::Jemalloc; /// A fast local Ethereum development node. #[derive(Parser)] -#[command(name = "anvil", version = anvil::VERSION_MESSAGE, next_display_order = None)] +#[command(name = "sanvil", version = anvil::VERSION_MESSAGE, next_display_order = None)] pub struct Anvil { /// Include the global options. #[command(flatten)] diff --git a/crates/forge/bin/opts.rs b/crates/forge/bin/opts.rs index 380cb61d4..83f233e0e 100644 --- a/crates/forge/bin/opts.rs +++ b/crates/forge/bin/opts.rs @@ -23,7 +23,7 @@ const VERSION_MESSAGE: &str = concat!( /// Build, test, fuzz, debug and deploy Solidity contracts. #[derive(Parser)] #[command( - name = "forge", + name = "sforge", version = VERSION_MESSAGE, after_help = "Find more information in the book: http://book.getfoundry.sh/reference/forge/forge.html", next_display_order = None, From f99c6dd8b92a8bdde9a1c8d02d430582928b4cfd Mon Sep 17 00:00:00 2001 From: phexyz <32248504+phexyz@users.noreply.github.com> Date: Thu, 13 Feb 2025 13:37:03 -0500 Subject: [PATCH 058/130] Added integration test for typed data request (#94) --- .github/workflows/seismic.yml | 7 +- Cargo.lock | 63 ++-- Cargo.toml | 51 ++-- crates/anvil/Cargo.toml | 1 + crates/anvil/core/src/eth/transaction/mod.rs | 11 +- crates/anvil/src/eth/api.rs | 43 +-- crates/anvil/tests/it/seismic.rs | 293 +++++++++++-------- 7 files changed, 275 insertions(+), 194 deletions(-) diff --git a/.github/workflows/seismic.yml b/.github/workflows/seismic.yml index 220f860ca..c83f38134 100644 --- a/.github/workflows/seismic.yml +++ b/.github/workflows/seismic.yml @@ -2,9 +2,9 @@ name: Seismic CI on: push: - branches: [ seismic ] + branches: [seismic] pull_request: - branches: [ seismic ] + branches: [seismic] concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} @@ -59,11 +59,12 @@ jobs: steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable + - uses: taiki-e/install-action@nextest - uses: Swatinem/rust-cache@v2 with: shared-key: "test-cache" - name: seismic transaction - run: cargo test test_seismic_transaction + run: cargo nextest run test_seismic_transaction # - name: sforge tests # run: cargo test --bin sforge # - name: sanvil tests diff --git a/Cargo.lock b/Cargo.lock index 04477be6f..82cf3404f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "alloy-consensus" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" dependencies = [ "alloy-dyn-abi", "alloy-eips", @@ -130,7 +130,7 @@ dependencies = [ [[package]] name = "alloy-consensus-any" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" dependencies = [ "alloy-consensus", "alloy-eips", @@ -143,7 +143,7 @@ dependencies = [ [[package]] name = "alloy-contract" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -211,7 +211,7 @@ dependencies = [ [[package]] name = "alloy-eips" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" dependencies = [ "alloy-dyn-abi", "alloy-eip2930", @@ -229,7 +229,7 @@ dependencies = [ [[package]] name = "alloy-genesis" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" dependencies = [ "alloy-primitives", "alloy-serde", @@ -251,7 +251,7 @@ dependencies = [ [[package]] name = "alloy-json-rpc" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -264,7 +264,7 @@ dependencies = [ [[package]] name = "alloy-network" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -288,7 +288,7 @@ dependencies = [ [[package]] name = "alloy-network-primitives" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" dependencies = [ "alloy-consensus", "alloy-eips", @@ -300,7 +300,7 @@ dependencies = [ [[package]] name = "alloy-node-bindings" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" dependencies = [ "alloy-genesis", "alloy-primitives", @@ -347,7 +347,7 @@ dependencies = [ [[package]] name = "alloy-provider" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" dependencies = [ "alloy-chains", "alloy-consensus", @@ -390,7 +390,7 @@ dependencies = [ [[package]] name = "alloy-pubsub" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -430,7 +430,7 @@ dependencies = [ [[package]] name = "alloy-rpc-client" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -455,7 +455,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" dependencies = [ "alloy-primitives", "alloy-rpc-types-anvil", @@ -470,7 +470,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -481,7 +481,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -491,7 +491,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-debug" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" dependencies = [ "alloy-primitives", "serde", @@ -500,7 +500,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-engine" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" dependencies = [ "alloy-consensus", "alloy-eips", @@ -517,7 +517,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -536,7 +536,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-trace" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -549,7 +549,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-txpool" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -560,7 +560,7 @@ dependencies = [ [[package]] name = "alloy-serde" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" dependencies = [ "alloy-primitives", "serde", @@ -570,7 +570,7 @@ dependencies = [ [[package]] name = "alloy-signer" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" dependencies = [ "alloy-dyn-abi", "alloy-primitives", @@ -585,7 +585,7 @@ dependencies = [ [[package]] name = "alloy-signer-aws" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" dependencies = [ "alloy-consensus", "alloy-network", @@ -602,7 +602,7 @@ dependencies = [ [[package]] name = "alloy-signer-gcp" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" dependencies = [ "alloy-consensus", "alloy-network", @@ -619,7 +619,7 @@ dependencies = [ [[package]] name = "alloy-signer-ledger" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -638,7 +638,7 @@ dependencies = [ [[package]] name = "alloy-signer-local" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" dependencies = [ "alloy-consensus", "alloy-network", @@ -656,7 +656,7 @@ dependencies = [ [[package]] name = "alloy-signer-trezor" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" dependencies = [ "alloy-consensus", "alloy-network", @@ -740,7 +740,7 @@ dependencies = [ [[package]] name = "alloy-transport" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" dependencies = [ "alloy-json-rpc", "base64 0.22.1", @@ -759,7 +759,7 @@ dependencies = [ [[package]] name = "alloy-transport-http" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -773,7 +773,7 @@ dependencies = [ [[package]] name = "alloy-transport-ipc" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" dependencies = [ "alloy-json-rpc", "alloy-pubsub", @@ -793,7 +793,7 @@ dependencies = [ [[package]] name = "alloy-transport-ws" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=15971ef#15971efa665242a11930eaa563ae8f76272b04f7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" dependencies = [ "alloy-pubsub", "alloy-transport", @@ -965,6 +965,7 @@ dependencies = [ "op-alloy-consensus", "parking_lot", "rand", + "reqwest", "revm", "secp256k1", "seismic-enclave 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/Cargo.toml b/Cargo.toml index 242772bd2..dfa22c66a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -320,31 +320,32 @@ alloy-sol-macro-input = { git = "https://github.com/SeismicSystems/seismic-alloy alloy-sol-types = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "77693d2" } alloy-sol-type-parser = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "77693d2" } -alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-contract = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-eips = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-genesis = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-json-rpc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-pubsub = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-rpc-client = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-rpc-types-trace = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-rpc-types-eth = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-serde = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-signer = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-signer-aws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-signer-gcp = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-signer-ledger = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-signer-local = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-signer-trezor = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-transport = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-transport-http = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-transport-ipc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-transport-ws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-node-bindings = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } -alloy-network-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "15971ef" } +# seismic-alloy +alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } +alloy-contract = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } +alloy-eips = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } +alloy-genesis = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } +alloy-json-rpc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } +alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } +alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } +alloy-pubsub = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } +alloy-rpc-client = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } +alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } +alloy-rpc-types-trace = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } +alloy-rpc-types-eth = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } +alloy-serde = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } +alloy-signer = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } +alloy-signer-aws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } +alloy-signer-gcp = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } +alloy-signer-ledger = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } +alloy-signer-local = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } +alloy-signer-trezor = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } +alloy-transport = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } +alloy-transport-http = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } +alloy-transport-ipc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } +alloy-transport-ws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } +alloy-node-bindings = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } +alloy-network-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } foundry-compilers = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } foundry-compilers-artifacts = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } diff --git a/crates/anvil/Cargo.toml b/crates/anvil/Cargo.toml index 36f4e5811..64b319cde 100644 --- a/crates/anvil/Cargo.toml +++ b/crates/anvil/Cargo.toml @@ -132,6 +132,7 @@ foundry-test-utils.workspace = true similar-asserts.workspace = true tokio = { workspace = true, features = ["full"] } url = "2.5" +reqwest.workspace = true # op-alloy-rpc-types.workspace = true diff --git a/crates/anvil/core/src/eth/transaction/mod.rs b/crates/anvil/core/src/eth/transaction/mod.rs index 870bdaa64..99f68b742 100644 --- a/crates/anvil/core/src/eth/transaction/mod.rs +++ b/crates/anvil/core/src/eth/transaction/mod.rs @@ -9,7 +9,10 @@ use alloy_consensus::{ Receipt, ReceiptEnvelope, ReceiptWithBloom, Signed, Transaction, TxEip1559, TxEip2930, TxEnvelope, TxLegacy, TxReceipt, Typed2718, }; -use alloy_eips::eip2718::{Decodable2718, Eip2718Error, Encodable2718}; +use alloy_eips::{ + eip2718::{Decodable2718, Eip2718Error, Encodable2718}, + eip712::{Decodable712, Eip712Result, TypedDataRequest}, +}; use alloy_network::{AnyReceiptEnvelope, AnyRpcTransaction, AnyTransactionReceipt, AnyTxEnvelope}; use alloy_primitives::{ Address, Bloom, Bytes, Log, PrimitiveSignature, TxHash, TxKind, B256, U256, U64, @@ -1202,6 +1205,12 @@ impl Decodable2718 for TypedTransaction { } } +impl Decodable712 for TypedTransaction { + fn decode_712(typed_data: &TypedDataRequest) -> Eip712Result { + TxEnvelope::decode_712(typed_data).map(Self::from) + } +} + impl From for TypedTransaction { fn from(value: TxEnvelope) -> Self { match value { diff --git a/crates/anvil/src/eth/api.rs b/crates/anvil/src/eth/api.rs index 0619eb663..b117f9ef3 100644 --- a/crates/anvil/src/eth/api.rs +++ b/crates/anvil/src/eth/api.rs @@ -30,11 +30,9 @@ use crate::{ revm::primitives::{BlobExcessGasAndPrice, Output}, ClientFork, LoggingManager, Miner, MiningMode, StorageInfo, }; -use alloy_consensus::{ - transaction::eip4844::TxEip4844Variant, Account, SignableTransaction, TxSeismic, -}; +use alloy_consensus::{transaction::eip4844::TxEip4844Variant, Account}; use alloy_dyn_abi::TypedData; -use alloy_eips::eip2718::Encodable2718; +use alloy_eips::{eip2718::Encodable2718, eip712::Decodable712}; use alloy_network::{ eip2718::Decodable2718, AnyRpcBlock, AnyRpcTransaction, BlockResponse, Ethereum, NetworkWallet, TransactionBuilder, TransactionResponse, @@ -1068,14 +1066,12 @@ impl EthApi { ) -> Result { node_info!("eth_sendRawTransaction via eth_signTypedData"); - let tx: TxSeismic = td.data.try_into().map_err(|e: serde_json::Error| { + let transaction = TypedTransaction::decode_712(&td).map_err(|e| { BlockchainError::Message(format!( - "Failed to decode typed data into seismic tx: {}", - e.to_string() + "Failed to decode typed data into seismic tx: {:?}", + e )) })?; - let signed_tx = tx.into_signed(td.signature); - let transaction = TypedTransaction::Seismic(signed_tx); // NOTE: rest is copy pasta from send_raw_transaction self.ensure_typed_transaction_supported(&transaction)?; @@ -1168,22 +1164,29 @@ impl EthApi { } } } - alloy_rpc_types::SeismicCallRequest::TypedData( - alloy_eips::eip712::TypedDataRequest { data, signature }, - ) => { - let tx: TxSeismic = data.try_into().map_err(|e| { + alloy_rpc_types::SeismicCallRequest::TypedData(td) => { + println!("call typed data: {:?}", td); + let typed_tx = TypedTransaction::decode_712(&td).map_err(|e| { BlockchainError::Message(format!( - "Failed to decode typed data into seismic tx: {e:?}" + "Failed to decode typed data into seismic tx: {:?}", + e )) })?; - let signed_seismic_tx = tx.into_signed(signature); - // NOTE: this is recover_caller, not recover_signer - let sender = signed_seismic_tx.recover_caller().map_err(|e| { + let tx = TransactionRequest::try_from(typed_tx.clone()).map_err(|_| { + BlockchainError::Message( + "Failed to decode bytes to transaction request".to_string(), + ) + })?; + + let signed_seismic_tx = typed_tx.seismic().ok_or(BlockchainError::Message( + "Can only make signedCall with Seismic Transactions".to_string(), + ))?; + // unlike above, this can be either recover_signer or recover_caller, + // since message_version = 0 for these + let sender = signed_seismic_tx.recover_signer().map_err(|e| { BlockchainError::Message(format!("Failed to recover signer: {e:?}")) })?; - let tx = signed_seismic_tx.into_parts().0; - let mut request: WithOtherFields = - WithOtherFields::new(tx.into()); + let mut request = WithOtherFields::new(tx); request.inner.from = Some(sender); self.seismic_call(request, block_number, overrides).await } diff --git a/crates/anvil/tests/it/seismic.rs b/crates/anvil/tests/it/seismic.rs index 02bb799fc..79f42ffbf 100644 --- a/crates/anvil/tests/it/seismic.rs +++ b/crates/anvil/tests/it/seismic.rs @@ -1,21 +1,28 @@ -use alloy_consensus::transaction::TxSeismic; +use alloy_consensus::{transaction::TxSeismic, TxEnvelope}; use alloy_dyn_abi::EventExt; +use alloy_eips::eip712::TypedDataRequest; use alloy_json_abi::{Event, EventParam}; -use alloy_network::{ReceiptResponse, TransactionBuilder}; +use alloy_network::{Ethereum, EthereumWallet, ReceiptResponse, TransactionBuilder}; use alloy_primitives::{ aliases::{B96, U96}, hex::{self, FromHex}, - Address, Bytes, FixedBytes, IntoLogData, B256, U256, + Address, Bytes, FixedBytes, IntoLogData, TxKind, B256, U256, }; -use alloy_provider::Provider; -use alloy_rpc_types::{SeismicCallRequest, TransactionRequest}; +use alloy_provider::{ + create_seismic_provider, create_seismic_provider_without_wallet, test_utils, Provider, + SendableTx, +}; +use alloy_rpc_types::{SeismicCallRequest, TransactionInput, TransactionRequest}; use alloy_serde::{OtherFields, WithOtherFields}; +use alloy_signer_local::PrivateKeySigner; use alloy_sol_types::{sol, SolCall, SolValue}; use anvil::{eth::EthApi, spawn, NodeConfig}; use anvil_core::eth::transaction::crypto; use foundry_common::provider::RetryProvider; -use secp256k1::SecretKey; -use seismic_enclave::{aes_decrypt, get_sample_secp256k1_pk, get_sample_secp256k1_sk}; +use secp256k1::{PublicKey, SecretKey}; +use seismic_enclave::{ + aes_decrypt, ecdh_decrypt, ecdh_encrypt, get_sample_secp256k1_pk, get_sample_secp256k1_sk, +}; use serde::{Deserialize, Serialize}; use std::fs; @@ -34,11 +41,7 @@ impl From for OtherFields { } // common utils -pub const TEST_BYTECODE_PATH: &str = "/tests/it/seismic_test_bytecode.txt"; pub const TEST_PRECOMPILES_BYTECODE_PATH: &str = "/tests/it/seismic_precompiles_test_bytecode.txt"; -pub const SET_NUMBER_SELECTOR: &str = "3fb5c1cb"; // setNumber(uint256) -pub const INCREMENT_SELECTOR: &str = "d09de08a"; // increment() -pub const GET_NUMBER_SELECTOR: &str = "f2c9ecd8"; // getNumber() pub const PRECOMPILES_TEST_SET_AES_KEY_SELECTOR: &str = "a0619040"; // setAESKey(suint256) pub const PRECOMPILES_TEST_ENCRYPTED_LOG_SELECTOR: &str = "28696e36"; // submitMessage(bytes) @@ -78,117 +81,179 @@ pub fn concat_input_data(selector: &str, value: Bytes) -> Bytes { input_data.into() } -#[tokio::test(flavor = "multi_thread")] -async fn test_seismic_transaction() { - let (api, handle) = spawn(NodeConfig::test()).await; - - // set automine to false - api.anvil_set_auto_mine(false).await.unwrap(); - - let provider = handle.http_provider(); - let deployer = handle.dev_accounts().next().unwrap(); - - let bytecode = load_bytecode_from_file(TEST_BYTECODE_PATH); - - let deploy_tx = TransactionRequest::default().from(deployer).with_deploy_code(bytecode.clone()); - let deploy_tx = WithOtherFields::new(deploy_tx); - - let pending = provider.send_transaction(deploy_tx).await.unwrap(); - - // mine block - api.mine_one().await; - - let receipt = - provider.get_transaction_receipt(pending.tx_hash().to_owned()).await.unwrap().unwrap(); - assert!(receipt.contract_address.is_some()); - - let accounts: Vec<_> = handle.dev_wallets().collect(); - - let from = accounts[0].address(); - let encryption_sk = get_sample_secp256k1_sk(); - let encryption_pk = Bytes::from(get_sample_secp256k1_pk().serialize()); - - let to = receipt.contract_address.unwrap(); - - let encoded_setnumber_data = get_input_data(SET_NUMBER_SELECTOR, B256::from(U256::from(10))); - let set_data = crypto::client_encrypt(&encryption_sk, &encoded_setnumber_data, 1).unwrap(); - - let tx = TransactionRequest::default() - .transaction_type(TxSeismic::TX_TYPE) - .with_from(from) - .with_to(to) - .with_nonce(1) - .with_gas_limit(210000) - .with_chain_id(31337) - .with_input(set_data); - - let seismic_tx = WithOtherFields { - inner: tx, - other: SeismicTransactionFields { encryption_pubkey: encryption_pk.clone() }.into(), - }; - - let pending_set = provider.send_transaction(seismic_tx).await.unwrap(); - - api.mine_one().await; - - let receipt: Option< - WithOtherFields< - alloy_rpc_types::TransactionReceipt< - alloy_network::AnyReceiptEnvelope, - >, - >, - > = provider.get_transaction_receipt(pending_set.tx_hash().to_owned()).await.unwrap(); - assert!(receipt.is_some()); - - let encoded_increment_data = get_input_data(INCREMENT_SELECTOR, B256::from(U256::from(10))); - let increment_data = - crypto::client_encrypt(&encryption_sk, &encoded_increment_data, 2).unwrap(); - - let tx = TransactionRequest::default() - .transaction_type(TxSeismic::TX_TYPE) - .with_from(from) - .with_to(to) - .with_nonce(2) - .with_gas_limit(210000) - .with_chain_id(31337) - .with_input(increment_data); - - let seismic_tx = WithOtherFields { - inner: tx, - other: SeismicTransactionFields { encryption_pubkey: encryption_pk.clone() }.into(), - }; - - let pending_increment = provider.send_transaction(seismic_tx).await.unwrap(); +pub fn get_sk(sk_wallet: &PrivateKeySigner) -> SecretKey { + SecretKey::from_slice(&sk_wallet.credential().to_bytes()).expect("32 bytes, within curve order") +} - api.mine_one().await; +pub fn get_pk(sk_wallet: &PrivateKeySigner) -> PublicKey { + PublicKey::from_secret_key_global(&get_sk(sk_wallet)) +} - let receipt = - provider.get_transaction_receipt(pending_increment.tx_hash().to_owned()).await.unwrap(); - assert!(receipt.is_some()); +pub async fn get_unsigned_seismic_tx_request( + signer: &PrivateKeySigner, + pk: &PublicKey, + nonce: u64, + to: TxKind, + chain_id: u64, + plaintext: Bytes, +) -> TransactionRequest { + let encryption_sk = get_sk(signer); + let encryption_pk = get_pk(signer); + + let encrypted_input = ecdh_encrypt(&pk, &encryption_sk, plaintext.to_vec(), nonce).unwrap(); + + TransactionRequest { + from: Some(signer.address()), + nonce: Some(nonce), + value: Some(U256::from(0)), + to: Some(to), + gas: Some(6000000), + gas_price: Some(20e9 as u128), + chain_id: Some(chain_id), + input: TransactionInput { input: Some(Bytes::from(encrypted_input)), data: None }, + transaction_type: Some(TxSeismic::TX_TYPE), + encryption_pubkey: Some(alloy_consensus::transaction::EncryptionPublicKey::from( + encryption_pk.serialize(), + )), + ..Default::default() + } +} - let encoded_getnumber_data = hex::decode(GET_NUMBER_SELECTOR).unwrap(); - let get_data = crypto::client_encrypt(&encryption_sk, &encoded_getnumber_data, 3).unwrap(); +pub async fn sign_tx(wallet: PrivateKeySigner, tx: TransactionRequest) -> TxEnvelope { + let signer = EthereumWallet::from(wallet); + >::build(tx, &signer).await.unwrap() +} - let tx = TransactionRequest::default() - .transaction_type(TxSeismic::TX_TYPE) - .with_from(from) - .with_to(to) - .with_nonce(3) - .with_gas_limit(210000) - .with_chain_id(31337) - .with_input(get_data); +/// Create a seismic transaction with typed data +pub async fn get_signed_seismic_tx_typed_data( + signer: &PrivateKeySigner, + pk: &PublicKey, + nonce: u64, + to: TxKind, + chain_id: u64, + plaintext: Bytes, +) -> TypedDataRequest { + let tx = get_unsigned_seismic_tx_request(signer, pk, nonce, to, chain_id, plaintext) + .await + .with_message_version(2); //message version makes it a typed data + let signed = sign_tx(signer.clone(), tx).await; - let seismic_tx = WithOtherFields { - inner: tx, - other: SeismicTransactionFields { encryption_pubkey: encryption_pk.clone() }.into(), - }; + match signed { + TxEnvelope::Seismic(tx) => tx.into(), + _ => panic!("Signed transaction is not a seismic transaction"), + } +} - let pending_get = provider.send_transaction(seismic_tx).await.unwrap(); +#[tokio::test(flavor = "multi_thread")] +async fn test_seismic_transaction_rpc() { + // send a send_raw_transaction bytes + // send a unsigned call with transactionrequest type + // send a send_raw_transaction typeddata type + // send a call bytes + // send a call typeddata + let (api, handle) = spawn(NodeConfig::test()).await; + api.anvil_set_auto_mine(true).await.unwrap(); + let signer = handle.dev_wallets().next().unwrap(); + let provider = create_seismic_provider( + EthereumWallet::new(signer.clone()), + reqwest::Url::parse(handle.http_endpoint().as_str()).unwrap(), + ); + let unsigned_provider = create_seismic_provider_without_wallet( + reqwest::Url::parse(handle.http_endpoint().as_str()).unwrap(), + ); + let deployer = handle.dev_accounts().next().unwrap(); + let network_pubkey = + PublicKey::from_slice(&provider.get_tee_pubkey().await.unwrap().0).unwrap(); + let plaintext_bytecode = test_utils::ContractTestContext::get_deploy_input_plaintext(); + + // send a send_raw_transaction bytes + let contract_address = provider + .send_transaction(test_utils::get_seismic_tx_builder( + plaintext_bytecode.clone(), + TxKind::Create, + deployer, + )) + .await + .unwrap() + .get_receipt() + .await + .unwrap() + .contract_address + .unwrap(); + let code = provider.get_code_at(contract_address).await.unwrap(); + assert_eq!(code, test_utils::ContractTestContext::get_code()); + + // send a call bytes + let res = provider + .seismic_call(SendableTx::Builder(test_utils::get_seismic_tx_builder( + plaintext_bytecode.clone(), + TxKind::Create, + deployer, + ))) + .await + .unwrap(); + assert_eq!(res, test_utils::ContractTestContext::get_code()); + + // send a usngiend call + let res = unsigned_provider + .seismic_call(SendableTx::Builder(test_utils::get_seismic_tx_builder( + plaintext_bytecode.clone(), + TxKind::Create, + deployer, + ))) + .await + .unwrap(); + assert_eq!(res, test_utils::ContractTestContext::get_code()); + + // send a signed typed data transaction + let tx_hash = api + .send_signed_typed_data_tx( + get_signed_seismic_tx_typed_data( + &signer, + &network_pubkey, + provider.get_transaction_count(deployer).await.unwrap(), + TxKind::Create, + provider.get_chain_id().await.unwrap(), + plaintext_bytecode.clone(), + ) + .await, + ) + .await + .unwrap(); api.mine_one().await; - - let receipt = provider.get_transaction_receipt(pending_get.tx_hash().to_owned()).await.unwrap(); - assert!(receipt.is_some()); + let receipt = provider.get_transaction_receipt(tx_hash).await.unwrap().unwrap(); + assert!(receipt.status()); + let code = provider.get_code_at(receipt.contract_address.unwrap()).await.unwrap(); + assert_eq!(code, test_utils::ContractTestContext::get_code()); + + // a signed data call + let res = api + .call( + SeismicCallRequest::TypedData( + get_signed_seismic_tx_typed_data( + &signer, + &network_pubkey, + provider.get_transaction_count(deployer).await.unwrap(), + TxKind::Create, + provider.get_chain_id().await.unwrap(), + plaintext_bytecode.clone(), + ) + .await, + ), + None, + None, + ) + .await + .unwrap(); + let decrypted = ecdh_decrypt( + &network_pubkey, + &get_sk(&signer), + res.to_vec(), + provider.get_transaction_count(deployer).await.unwrap(), + ) + .unwrap(); + assert_eq!(Bytes::from(decrypted), test_utils::ContractTestContext::get_code()); } // Helpful type alias for the receipt you retrieve From 9870c4e49c6bed95d90a480ac8ea16c5686c85e9 Mon Sep 17 00:00:00 2001 From: Ameya Deshmukh Date: Thu, 20 Feb 2025 00:40:59 +0530 Subject: [PATCH 059/130] windows fixes (#95) --- crates/config/src/lib.rs | 6 +- sfoundryup/README.md | 13 ++ sfoundryup/sfoundryup | 371 ++++++++++++++++++++------------------- 3 files changed, 210 insertions(+), 180 deletions(-) diff --git a/crates/config/src/lib.rs b/crates/config/src/lib.rs index 96124c985..989a8ceae 100644 --- a/crates/config/src/lib.rs +++ b/crates/config/src/lib.rs @@ -1131,7 +1131,11 @@ impl Config { } if self.seismic { // Define the default solc path when seismic is true - let default_solc_path = PathBuf::from("/usr/local/bin/ssolc"); + let default_solc_path = if cfg!(windows) { + PathBuf::from("C:\\Program Files\\Seismic\\bin\\ssolc.exe") + } else { + PathBuf::from("/usr/local/bin/ssolc") + }; if !default_solc_path.is_file() { return Err(SolcError::msg(format!( "`solc` {} does not exist", diff --git a/sfoundryup/README.md b/sfoundryup/README.md index 15ca2f009..3f1c83cef 100644 --- a/sfoundryup/README.md +++ b/sfoundryup/README.md @@ -1,39 +1,52 @@ # `sfoundryup` + Install and update the Seismic Foundry suite of developer tools with ease. + ### Installing + Run the following command to install `sfoundryup`: + ```bash curl -L -H "Accept: application/vnd.github.v3.raw" \ "https://raw.githubusercontent.com/SeismicSystems/seismic-foundry/seismic/sfoundryup/install" | bash ``` + Now, either open a new terminal or reload your shell configuration to start using sfoundryup: For `bash` users: + ```bash source ~/.bashrc ``` For `zsh` users: + ```bash source ~/.zshrc ``` For `fish` users: + ```bash source ~/.config/fish/config.fish ``` For `ash` users: + ```bash source ~/.profile ``` ## Usage + ### Install Seismic Foundry: + Run the following in your terminal to install the Seismic Foundry suite of developer tools: + ```bash sfoundryup ``` ``` **Tip**: All flags have a single-character shorthand equivalent! You can use -v instead of --version, etc. +``` diff --git a/sfoundryup/sfoundryup b/sfoundryup/sfoundryup index eb7b00726..21a74891b 100755 --- a/sfoundryup/sfoundryup +++ b/sfoundryup/sfoundryup @@ -12,221 +12,237 @@ BINS=(sforge scast sanvil schisel) export RUSTFLAGS="${RUSTFLAGS:--C target-cpu=native}" main() { - while [[ -n $1 ]]; do - case $1 in - --) shift; break;; - -v|--version) shift; SEISMICUP_VERSION=$1;; - -p|--path) shift; SEISMICUP_LOCAL_REPO=$1;; - -j|--jobs) shift; SEISMICUP_JOBS=$1;; - -h|--help) - usage - exit 0 - ;; - *) - warn "unknown option: $1" - usage - exit 1 - ;; - esac - shift - done - - need_cmd git - need_cmd curl - need_cmd jq - - CARGO_BUILD_ARGS=(--release) - - if [ -n "$SEISMICUP_JOBS" ]; then - CARGO_BUILD_ARGS+=(--jobs "$SEISMICUP_JOBS") - fi - - # Print the banner after successfully parsing args - banner - - install_ssolc - - if [[ -n "$SEISMICUP_LOCAL_REPO" ]]; then - install_from_local_repo - else - install_from_remote_repo - fi + while [[ -n $1 ]]; do + case $1 in + --) shift; break;; + -v|--version) shift; SEISMICUP_VERSION=$1;; + -p|--path) shift; SEISMICUP_LOCAL_REPO=$1;; + -j|--jobs) shift; SEISMICUP_JOBS=$1;; + -h|--help) + usage + exit 0 + ;; + *) + warn "unknown option: $1" + usage + exit 1 + ;; + esac + shift + done + + need_cmd git + need_cmd curl + need_cmd jq + + CARGO_BUILD_ARGS=(--release) + + if [ -n "$SEISMICUP_JOBS" ]; then + CARGO_BUILD_ARGS+=(--jobs "$SEISMICUP_JOBS") + fi + + banner + install_ssolc + + if [[ -n "$SEISMICUP_LOCAL_REPO" ]]; then + install_from_local_repo + else + install_from_remote_repo + fi } install_ssolc() { - echo "Starting ssolc installation..." - - # Detect OS - OS="$(uname -s)" - ARCH="$(uname -m)" - - case "$OS" in - Linux*) - OS_TYPE="linux" - ;; - Darwin*) - OS_TYPE="macos" - ;; - CYGWIN*|MINGW*|MSYS*|Windows_NT) - OS_TYPE="windows" - ;; - *) - echo "Unsupported OS: $OS" - exit 1 - ;; - esac - - case "$ARCH" in - x86_64) - ARCH_TYPE="x86_64" - ;; - arm64|aarch64) - ARCH_TYPE="arm64" - ;; - *) - echo "Unsupported architecture: $ARCH" - exit 1 - ;; - esac - - # Construct target name + echo "Starting ssolc installation..." + + # Detect OS and set installation paths + OS="$(uname -s)" + ARCH="$(uname -m)" + + case "$OS" in + Linux*) + OS_TYPE="linux" + INSTALL_DIR="/usr/local/bin" + ;; + Darwin*) + OS_TYPE="macos" + INSTALL_DIR="/usr/local/bin" + ;; + CYGWIN*|MINGW*|MSYS*|Windows_NT) + OS_TYPE="windows" + INSTALL_DIR="$PROGRAMFILES/Seismic/bin" + ;; + *) + echo "Unsupported OS: $OS" + exit 1 + ;; + esac + + case "$ARCH" in + x86_64) ARCH_TYPE="x86_64" ;; + arm64|aarch64) ARCH_TYPE="arm64" ;; + *) + echo "Unsupported architecture: $ARCH" + exit 1 + ;; + esac + + # Set target info + TARGET_NAME="ssolc-${OS_TYPE}-${ARCH_TYPE}" if [[ "$OS_TYPE" == "windows" ]]; then - TARGET_NAME="ssolc-windows-$ARCH_TYPE.zip" + TARGET_NAME="${TARGET_NAME}.zip" else - TARGET_NAME="ssolc-$OS_TYPE-$ARCH_TYPE.tar.gz" + TARGET_NAME="${TARGET_NAME}.tar.gz" fi - - INSTALL_DIR="/usr/local/bin" - SSOLC_BIN="$INSTALL_DIR/ssolc" - TEMP_DIR=$(mktemp -d) - - # Fetch the asset ID for the target file - echo "Fetching asset ID for $TARGET_NAME..." - GITHUB_API_URL="https://api.github.com/repos/SeismicSystems/seismic-solidity-releases/releases/latest" - ASSET_ID=$(curl -s "$GITHUB_API_URL" | \ - jq -r --arg name "$TARGET_NAME" '.assets[] | select(.name == $name) | .id') - - if [[ -z "$ASSET_ID" ]]; then - echo "Error: Asset $TARGET_NAME not found in the latest release." - exit 1 - fi - - echo "Found asset ID: $ASSET_ID" - - # Download the file using the asset ID - echo "Downloading $TARGET_NAME..." - curl -L -H "Accept: application/octet-stream" \ - -o "$TEMP_DIR/$TARGET_NAME" \ - "https://api.github.com/repos/SeismicSystems/seismic-solidity-releases/releases/assets/$ASSET_ID" - - # Verify the downloaded file is a valid gzip archive - echo "Verifying the downloaded file..." - if file "$TEMP_DIR/$TARGET_NAME" | grep -q 'gzip compressed data'; then - echo "File verified as a valid gzip archive." + + if [[ "$OS_TYPE" == "windows" ]]; then + SSOLC_BIN="${INSTALL_DIR}/ssolc.exe" else - echo "Error: Downloaded file is not a valid gzip archive." - exit 1 - fi - - # Extract the gzip archive - echo "Extracting $TARGET_NAME..." - tar -xzf "$TEMP_DIR/$TARGET_NAME" -C "$TEMP_DIR" - - # Ensure the extracted folder exists - EXTRACTED_DIR="$TEMP_DIR/solc" - if [[ ! -d "$EXTRACTED_DIR" ]]; then - echo "Error: Expected directory 'solc' not found in the extracted archive." - exit 1 + SSOLC_BIN="${INSTALL_DIR}/ssolc" fi - # Move the binary to /usr/local/bin and set permissions - echo "Installing solc binary..." - sudo mv "$EXTRACTED_DIR/solc" "$SSOLC_BIN" - sudo chmod +x "$SSOLC_BIN" - - echo "Installation complete! sscolc installed at $SSOLC_BIN." + TEMP_DIR=$(mktemp -d) + trap 'rm -rf "$TEMP_DIR"' EXIT + + # Download the release + echo "Fetching latest release information..." + GITHUB_API_URL="https://api.github.com/repos/SeismicSystems/seismic-solidity-releases/releases/latest" + ASSET_ID=$(curl -s "$GITHUB_API_URL" | \ + jq -r --arg name "$TARGET_NAME" '.assets[] | select(.name == $name) | .id') + + if [[ -z "$ASSET_ID" ]]; then + echo "Error: Asset $TARGET_NAME not found in the latest release." + exit 1 + fi + + echo "Downloading $TARGET_NAME..." + DOWNLOAD_PATH="$TEMP_DIR/$TARGET_NAME" + curl -L -H "Accept: application/octet-stream" \ + -o "$DOWNLOAD_PATH" \ + "https://api.github.com/repos/SeismicSystems/seismic-solidity-releases/releases/assets/$ASSET_ID" + + # Extract and install + echo "Extracting archive..." + mkdir -p "$TEMP_DIR/extract" + + if [[ "$OS_TYPE" == "windows" ]]; then + if ! file "$DOWNLOAD_PATH" | grep -q 'Zip archive data'; then + echo "Error: Invalid zip archive" + exit 1 + fi + unzip -q "$DOWNLOAD_PATH" -d "$TEMP_DIR/extract" + BINARY_PATH="$TEMP_DIR/extract/solc.exe" + else + if ! file "$DOWNLOAD_PATH" | grep -q 'gzip compressed data'; then + echo "Error: Invalid gzip archive" + exit 1 + fi + tar -xzf "$DOWNLOAD_PATH" -C "$TEMP_DIR/extract" + BINARY_PATH="$TEMP_DIR/extract/solc/solc" + fi + + if [[ ! -f "$BINARY_PATH" ]]; then + echo "Error: Binary not found in extracted archive" + exit 1 + fi + + # Install the binary + echo "Installing binary to $SSOLC_BIN..." + mkdir -p "$(dirname "$SSOLC_BIN")" + + if [[ "$OS_TYPE" == "windows" ]]; then + mv "$BINARY_PATH" "$SSOLC_BIN" + chmod +x "$SSOLC_BIN" + echo "Adding $INSTALL_DIR to PATH..." + setx PATH "%PATH%;$INSTALL_DIR" + echo "Please restart your terminal for PATH changes to take effect." + else + sudo mv "$BINARY_PATH" "$SSOLC_BIN" + sudo chmod +x "$SSOLC_BIN" + fi + + echo "Installation complete! ssolc installed at $SSOLC_BIN" } install_from_remote_repo() { - SEISMICUP_REPO="SeismicSystems/seismic-foundry" - SEISMICUP_BRANCH="seismic" - - need_cmd cargo - say "Installing Seismic Foundry from $SEISMICUP_REPO (branch: $SEISMICUP_BRANCH)..." - - REPO_PATH="$SEISMIC_DIR/$(basename "$SEISMICUP_REPO")" - - # Clone the repository if it doesn't already exist - if [ ! -d "$REPO_PATH" ]; then - ensure mkdir -p "$SEISMIC_DIR" - say "Cloning the repository..." - ensure git clone "https://github.com/$SEISMICUP_REPO.git" "$REPO_PATH" - fi - - # Fetch and checkout the branch - cd "$REPO_PATH" - ensure git fetch origin "${SEISMICUP_BRANCH}:remotes/origin/${SEISMICUP_BRANCH}" - ensure git checkout "origin/${SEISMICUP_BRANCH}" - - # Use the git CLI to fetch dependencies - export CARGO_NET_GIT_FETCH_WITH_CLI=true - - # Build the binaries - ensure cargo build --bins "${CARGO_BUILD_ARGS[@]}" - for bin in "${BINS[@]}"; do - for try_path in target/release/$bin target/release/$bin.exe; do - if [ -f "$try_path" ]; then - [ -e "$SEISMIC_BIN_DIR/$bin" ] && warn "Overwriting existing $bin in $SEISMIC_BIN_DIR" - mv -f "$try_path" "$SEISMIC_BIN_DIR" - fi - done - done - - say "Seismic Foundry installation complete." + SEISMICUP_REPO="SeismicSystems/seismic-foundry" + SEISMICUP_BRANCH="seismic" + + need_cmd cargo + say "Installing Seismic Foundry from $SEISMICUP_REPO (branch: $SEISMICUP_BRANCH)..." + + REPO_PATH="$SEISMIC_DIR/$(basename "$SEISMICUP_REPO")" + + # Clone the repository if it doesn't already exist + if [ ! -d "$REPO_PATH" ]; then + ensure mkdir -p "$SEISMIC_DIR" + say "Cloning the repository..." + ensure git clone "https://github.com/$SEISMICUP_REPO.git" "$REPO_PATH" + fi + + # Fetch and checkout the branch + cd "$REPO_PATH" + ensure git fetch origin "${SEISMICUP_BRANCH}:remotes/origin/${SEISMICUP_BRANCH}" + ensure git checkout "origin/${SEISMICUP_BRANCH}" + + # Use the git CLI to fetch dependencies + export CARGO_NET_GIT_FETCH_WITH_CLI=true + + # Build the binaries + ensure cargo build --bins "${CARGO_BUILD_ARGS[@]}" + for bin in "${BINS[@]}"; do + for try_path in target/release/$bin target/release/$bin.exe; do + if [ -f "$try_path" ]; then + [ -e "$SEISMIC_BIN_DIR/$bin" ] && warn "Overwriting existing $bin in $SEISMIC_BIN_DIR" + mv -f "$try_path" "$SEISMIC_BIN_DIR" + fi + done + done + + say "Seismic Foundry installation complete." } usage() { - cat 1>&2 <&2 < + sfoundryup OPTIONS: - -h, --help Print help information - -v, --version Install a specific version from built binaries - -p, --path Build and install a local repository - -j, --jobs Number of CPUs to use for building (default: all CPUs) + -h, --help Print help information + -v, --version Install a specific version from built binaries + -p, --path Build and install a local repository + -j, --jobs Number of CPUs to use for building (default: all CPUs) EOF } say() { - printf "sfoundryup: %s\n" "$1" + printf "sfoundryup: %s\n" "$1" } warn() { - say "warning: $1" >&2 + say "warning: $1" >&2 } err() { - say "$1" >&2 - exit 1 + say "$1" >&2 + exit 1 } need_cmd() { - if ! command -v "$1" &>/dev/null; then - err "Need '$1' (command not found)" - fi + if ! command -v "$1" &>/dev/null; then + err "Need '$1' (command not found)" + fi } ensure() { - if ! "$@"; then err "Command failed: $*"; fi + if ! "$@"; then err "Command failed: $*"; fi } banner() { - printf ' + printf ' ##### ####### ###### ##### ## ## ###### ##### ####### ##### ### ### ## ### ###### ###### ### ### ### ## ### ### ## ### ## ### ### ## ### ### ### ## ### ### ### ### ### ### ### ### ### ### ### ### @@ -234,13 +250,10 @@ banner() { ##### ##### ## ##### ####### ## ### ###### ##### ### ### ### ### ####### ### ### ###### ##### ## ### ## ## ### ### ## ### ### ### ### ### ### ### ### ### ### ### ## ### ### ## ### ### ## ### ## ### ### ## ### ### ### ### ### ### ### ### ### ### ### ### ### ### - ##### ####### ###### ##### ### ### ###### ##### ### ##### ##### ### ### ###### ### ### ### + ##### ####### ###### ##### ### ### ###### ##### ### ##### ##### ### ### ###### ### ### ### Repo : https://github.com/SeismicSystems/seismic-foundry -Book : TODO -Chat : TODO -Support : TODO -Contribute : TODO +Chat : https://t.me/+xpzfNO4pmRoyM2Ux ' } From 60d908f5a72060297527c510fcd1421173b991f2 Mon Sep 17 00:00:00 2001 From: phexyz <32248504+phexyz@users.noreply.github.com> Date: Tue, 11 Mar 2025 12:32:21 -0400 Subject: [PATCH 060/130] Update: use `is_seismic` to determine decryption in eth_call (#97) --- Cargo.lock | 62 ++++++++++++------------- Cargo.toml | 50 ++++++++++---------- crates/anvil/src/eth/backend/mem/mod.rs | 9 ++-- crates/anvil/tests/it/api.rs | 17 +++---- crates/anvil/tests/it/revert.rs | 34 ++++---------- crates/anvil/tests/it/seismic.rs | 43 ++++++++--------- 6 files changed, 99 insertions(+), 116 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 82cf3404f..2388b8946 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "alloy-consensus" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" dependencies = [ "alloy-dyn-abi", "alloy-eips", @@ -130,7 +130,7 @@ dependencies = [ [[package]] name = "alloy-consensus-any" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" dependencies = [ "alloy-consensus", "alloy-eips", @@ -143,7 +143,7 @@ dependencies = [ [[package]] name = "alloy-contract" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -211,7 +211,7 @@ dependencies = [ [[package]] name = "alloy-eips" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" dependencies = [ "alloy-dyn-abi", "alloy-eip2930", @@ -229,7 +229,7 @@ dependencies = [ [[package]] name = "alloy-genesis" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" dependencies = [ "alloy-primitives", "alloy-serde", @@ -251,7 +251,7 @@ dependencies = [ [[package]] name = "alloy-json-rpc" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -264,7 +264,7 @@ dependencies = [ [[package]] name = "alloy-network" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -288,7 +288,7 @@ dependencies = [ [[package]] name = "alloy-network-primitives" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" dependencies = [ "alloy-consensus", "alloy-eips", @@ -300,7 +300,7 @@ dependencies = [ [[package]] name = "alloy-node-bindings" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" dependencies = [ "alloy-genesis", "alloy-primitives", @@ -347,7 +347,7 @@ dependencies = [ [[package]] name = "alloy-provider" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" dependencies = [ "alloy-chains", "alloy-consensus", @@ -390,7 +390,7 @@ dependencies = [ [[package]] name = "alloy-pubsub" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -430,7 +430,7 @@ dependencies = [ [[package]] name = "alloy-rpc-client" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -455,7 +455,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" dependencies = [ "alloy-primitives", "alloy-rpc-types-anvil", @@ -470,7 +470,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -481,7 +481,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -491,7 +491,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-debug" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" dependencies = [ "alloy-primitives", "serde", @@ -500,7 +500,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-engine" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" dependencies = [ "alloy-consensus", "alloy-eips", @@ -517,7 +517,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -536,7 +536,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-trace" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -549,7 +549,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-txpool" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -560,7 +560,7 @@ dependencies = [ [[package]] name = "alloy-serde" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" dependencies = [ "alloy-primitives", "serde", @@ -570,7 +570,7 @@ dependencies = [ [[package]] name = "alloy-signer" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" dependencies = [ "alloy-dyn-abi", "alloy-primitives", @@ -585,7 +585,7 @@ dependencies = [ [[package]] name = "alloy-signer-aws" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" dependencies = [ "alloy-consensus", "alloy-network", @@ -602,7 +602,7 @@ dependencies = [ [[package]] name = "alloy-signer-gcp" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" dependencies = [ "alloy-consensus", "alloy-network", @@ -619,7 +619,7 @@ dependencies = [ [[package]] name = "alloy-signer-ledger" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -638,7 +638,7 @@ dependencies = [ [[package]] name = "alloy-signer-local" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" dependencies = [ "alloy-consensus", "alloy-network", @@ -656,7 +656,7 @@ dependencies = [ [[package]] name = "alloy-signer-trezor" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" dependencies = [ "alloy-consensus", "alloy-network", @@ -740,7 +740,7 @@ dependencies = [ [[package]] name = "alloy-transport" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" dependencies = [ "alloy-json-rpc", "base64 0.22.1", @@ -759,7 +759,7 @@ dependencies = [ [[package]] name = "alloy-transport-http" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -773,7 +773,7 @@ dependencies = [ [[package]] name = "alloy-transport-ipc" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" dependencies = [ "alloy-json-rpc", "alloy-pubsub", @@ -793,7 +793,7 @@ dependencies = [ [[package]] name = "alloy-transport-ws" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5ade923#5ade923ff2f5ee4281c97683f2c3ecbb336d8df1" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" dependencies = [ "alloy-pubsub", "alloy-transport", diff --git a/Cargo.toml b/Cargo.toml index dfa22c66a..9d05d0d68 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -321,31 +321,31 @@ alloy-sol-types = { git = "https://github.com/SeismicSystems/seismic-alloy-core. alloy-sol-type-parser = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "77693d2" } # seismic-alloy -alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } -alloy-contract = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } -alloy-eips = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } -alloy-genesis = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } -alloy-json-rpc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } -alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } -alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } -alloy-pubsub = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } -alloy-rpc-client = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } -alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } -alloy-rpc-types-trace = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } -alloy-rpc-types-eth = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } -alloy-serde = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } -alloy-signer = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } -alloy-signer-aws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } -alloy-signer-gcp = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } -alloy-signer-ledger = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } -alloy-signer-local = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } -alloy-signer-trezor = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } -alloy-transport = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } -alloy-transport-http = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } -alloy-transport-ipc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } -alloy-transport-ws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } -alloy-node-bindings = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } -alloy-network-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5ade923" } +alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } +alloy-contract = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } +alloy-eips = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } +alloy-genesis = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } +alloy-json-rpc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } +alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } +alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } +alloy-pubsub = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } +alloy-rpc-client = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } +alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } +alloy-rpc-types-trace = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } +alloy-rpc-types-eth = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } +alloy-serde = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } +alloy-signer = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } +alloy-signer-aws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } +alloy-signer-gcp = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } +alloy-signer-ledger = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } +alloy-signer-local = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } +alloy-signer-trezor = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } +alloy-transport = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } +alloy-transport-http = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } +alloy-transport-ipc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } +alloy-transport-ws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } +alloy-node-bindings = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } +alloy-network-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } foundry-compilers = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } foundry-compilers-artifacts = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } diff --git a/crates/anvil/src/eth/backend/mem/mod.rs b/crates/anvil/src/eth/backend/mem/mod.rs index 1dbe01ed4..19a4f6472 100644 --- a/crates/anvil/src/eth/backend/mem/mod.rs +++ b/crates/anvil/src/eth/backend/mem/mod.rs @@ -35,8 +35,7 @@ use crate::{ }; use alloy_chains::NamedChain; use alloy_consensus::{ - transaction::TxSeismic, Account, Header, Receipt, ReceiptWithBloom, Signed, - Transaction as TransactionTrait, TxEnvelope, + Account, Header, Receipt, ReceiptWithBloom, Signed, Transaction as TransactionTrait, TxEnvelope, }; use alloy_eips::eip4844::MAX_BLOBS_PER_BLOCK; use alloy_network::{ @@ -1382,7 +1381,7 @@ impl Backend { nonce, sidecar: _, chain_id: _, - transaction_type, + transaction_type: _, encryption_pubkey, .. // Rest of the gas fees related fields are taken from `fee_details` }, @@ -1419,7 +1418,7 @@ impl Backend { let mut data = input.into_input().unwrap_or_default(); - if transaction_type == Some(TxSeismic::TX_TYPE) && !data.is_empty() { + if request.inner.is_seismic() && !data.is_empty() { let nonce = nonce.expect("nonce is required for seismic transactions"); let encryption_pubkey = encryption_pubkey.expect("encryption pubkey is required for seismic transactions"); @@ -1518,7 +1517,7 @@ impl Backend { block_env: BlockEnv, ) -> Result<(InstructionResult, Option, u128, State), BlockchainError> { let nonce = request.nonce.unwrap_or_default(); - let is_seismic_tx = Some(TxSeismic::TX_TYPE) == request.transaction_type; + let is_seismic_tx = request.inner.is_seismic(); let encryption_pubkey = match (is_seismic_tx, request.encryption_pubkey) { (false, _) => { warn!("Non-seismic tx passed to seismic_call. Likely a bug"); diff --git a/crates/anvil/tests/it/api.rs b/crates/anvil/tests/it/api.rs index 6adc53570..79283a559 100644 --- a/crates/anvil/tests/it/api.rs +++ b/crates/anvil/tests/it/api.rs @@ -7,9 +7,9 @@ use crate::{ use alloy_network::{EthereumWallet, TransactionBuilder}; use alloy_primitives::{ map::{AddressHashMap, B256HashMap, HashMap}, - Address, ChainId, TxKind, B256, U256, + Address, ChainId, B256, U256, }; -use alloy_provider::{create_seismic_provider, test_utils, Provider, SendableTx}; +use alloy_provider::{Provider, SeismicSignedProvider, SendableTx}; use alloy_rpc_types::{ request::TransactionRequest, state::AccountOverride, BlockId, BlockNumberOrTag, BlockTransactions, @@ -280,7 +280,7 @@ async fn can_call_with_undersized_max_fee_per_gas() { let node_url = Url::parse(&handle.http_endpoint()).unwrap(); let provider = http_provider_with_signer(&handle.http_endpoint(), signer.clone()); - let seismic_provider = create_seismic_provider(signer.clone(), node_url); + let seismic_provider = SeismicSignedProvider::new(signer.clone(), node_url); api.anvil_set_auto_mine(true).await.unwrap(); @@ -298,11 +298,12 @@ async fn can_call_with_undersized_max_fee_per_gas() { let last_sender_tx = simple_storage_contract.lastSender().into_transaction_request(); let raw_input = last_sender_tx.input().unwrap(); let output = seismic_provider - .seismic_call(SendableTx::Builder(test_utils::get_seismic_tx_builder( - raw_input.clone(), - TxKind::Call(simple_storage_contract.address().clone()), - wallet.address(), - ))) + .seismic_call(SendableTx::Builder( + TransactionRequest::default() + .with_from(wallet.address()) + .with_to(*simple_storage_contract.address()) + .with_input(raw_input.clone()), + )) .await .unwrap(); assert_eq!(**output, B256::ZERO.to_vec()); diff --git a/crates/anvil/tests/it/revert.rs b/crates/anvil/tests/it/revert.rs index 2e788c3ba..2b658fbee 100644 --- a/crates/anvil/tests/it/revert.rs +++ b/crates/anvil/tests/it/revert.rs @@ -2,7 +2,7 @@ use crate::abi::VendingMachine; use alloy_consensus::TxSeismic; use alloy_network::TransactionBuilder; use alloy_primitives::{bytes, Address, Bytes, TxKind, U256}; -use alloy_provider::{create_seismic_provider, Provider, SendableTx}; +use alloy_provider::{Provider, SeismicSignedProvider, SendableTx}; use alloy_rpc_types::{TransactionInput, TransactionRequest}; use alloy_serde::WithOtherFields; use alloy_sol_types::sol; @@ -71,18 +71,18 @@ async fn test_solc_revert_example() { let provider = handle.http_provider(); let node_url = Url::parse(&handle.http_endpoint()).unwrap(); - let seismic_provider = create_seismic_provider(wallet.clone().into(), node_url); + let seismic_provider = SeismicSignedProvider::new(wallet.clone().into(), node_url); let contract = VendingMachine::deploy(&provider).await.unwrap(); let tx = contract.buy(U256::from(100)).into_transaction_request(); let input = tx.input().unwrap(); let err = seismic_provider - .seismic_call(SendableTx::Builder(get_seismic_tx_builder( - input.clone(), - TxKind::Call(contract.address().clone()), - sender, - U256::from(1), - ))) + .seismic_call(SendableTx::Builder( + TransactionRequest::default() + .with_from(sender) + .with_to(*contract.address()) + .with_input(input.clone()), + )) .await .unwrap_err(); @@ -90,24 +90,6 @@ async fn test_solc_revert_example() { assert!(s.contains("Not enough Ether provided."), "{s:?}"); } -pub fn get_seismic_tx_builder( - plaintext: Bytes, - to: TxKind, - from: Address, - value: U256, -) -> TransactionRequest { - TransactionRequest { - from: Some(from), - to: Some(to), - input: TransactionInput { input: Some(plaintext), data: None }, - transaction_type: Some(TxSeismic::TX_TYPE), - gas_price: Some(20e9 as u128), /* make seismic tx treated as legacy tx when estimate - * for gas */ - value: Some(value), - ..Default::default() - } -} - // #[tokio::test(flavor = "multi_thread")] async fn test_another_revert_message() { diff --git a/crates/anvil/tests/it/seismic.rs b/crates/anvil/tests/it/seismic.rs index 79f42ffbf..155677f24 100644 --- a/crates/anvil/tests/it/seismic.rs +++ b/crates/anvil/tests/it/seismic.rs @@ -9,8 +9,7 @@ use alloy_primitives::{ Address, Bytes, FixedBytes, IntoLogData, TxKind, B256, U256, }; use alloy_provider::{ - create_seismic_provider, create_seismic_provider_without_wallet, test_utils, Provider, - SendableTx, + test_utils, Provider, SeismicSignedProvider, SeismicUnsignedProvider, SendableTx, }; use alloy_rpc_types::{SeismicCallRequest, TransactionInput, TransactionRequest}; use alloy_serde::{OtherFields, WithOtherFields}; @@ -155,13 +154,12 @@ async fn test_seismic_transaction_rpc() { let (api, handle) = spawn(NodeConfig::test()).await; api.anvil_set_auto_mine(true).await.unwrap(); let signer = handle.dev_wallets().next().unwrap(); - let provider = create_seismic_provider( + let provider = SeismicSignedProvider::new( EthereumWallet::new(signer.clone()), reqwest::Url::parse(handle.http_endpoint().as_str()).unwrap(), ); - let unsigned_provider = create_seismic_provider_without_wallet( - reqwest::Url::parse(handle.http_endpoint().as_str()).unwrap(), - ); + let unsigned_provider = + SeismicUnsignedProvider::new(reqwest::Url::parse(handle.http_endpoint().as_str()).unwrap()); let deployer = handle.dev_accounts().next().unwrap(); let network_pubkey = PublicKey::from_slice(&provider.get_tee_pubkey().await.unwrap().0).unwrap(); @@ -169,11 +167,12 @@ async fn test_seismic_transaction_rpc() { // send a send_raw_transaction bytes let contract_address = provider - .send_transaction(test_utils::get_seismic_tx_builder( - plaintext_bytecode.clone(), - TxKind::Create, - deployer, - )) + .send_transaction( + TransactionRequest::default() + .with_from(deployer) + .with_kind(TxKind::Create) + .with_input(plaintext_bytecode.clone()), + ) .await .unwrap() .get_receipt() @@ -186,22 +185,24 @@ async fn test_seismic_transaction_rpc() { // send a call bytes let res = provider - .seismic_call(SendableTx::Builder(test_utils::get_seismic_tx_builder( - plaintext_bytecode.clone(), - TxKind::Create, - deployer, - ))) + .seismic_call(SendableTx::Builder( + TransactionRequest::default() + .with_from(deployer) + .with_kind(TxKind::Create) + .with_input(plaintext_bytecode.clone()), + )) .await .unwrap(); assert_eq!(res, test_utils::ContractTestContext::get_code()); // send a usngiend call let res = unsigned_provider - .seismic_call(SendableTx::Builder(test_utils::get_seismic_tx_builder( - plaintext_bytecode.clone(), - TxKind::Create, - deployer, - ))) + .seismic_call(SendableTx::Builder( + TransactionRequest::default() + .with_from(deployer) + .with_kind(TxKind::Create) + .with_input(plaintext_bytecode.clone()), + )) .await .unwrap(); assert_eq!(res, test_utils::ContractTestContext::get_code()); From b10914a2f017fb75a4c8a2382e74325bfc1386b4 Mon Sep 17 00:00:00 2001 From: sfyll <39958632+sfyll@users.noreply.github.com> Date: Wed, 12 Mar 2025 09:44:25 +0100 Subject: [PATCH 061/130] forge -> sforge (#99) --- crates/forge/assets/workflowTemplate.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/crates/forge/assets/workflowTemplate.yml b/crates/forge/assets/workflowTemplate.yml index 34a4a527b..396eff202 100644 --- a/crates/forge/assets/workflowTemplate.yml +++ b/crates/forge/assets/workflowTemplate.yml @@ -23,21 +23,21 @@ jobs: - name: Install Foundry uses: foundry-rs/foundry-toolchain@v1 - - name: Show Forge version + - name: Show Sforge version run: | - forge --version + sforge --version - - name: Run Forge fmt + - name: Run Sforge fmt run: | - forge fmt --check + sforge fmt --check id: fmt - - name: Run Forge build + - name: Run Sforge build run: | - forge build --sizes + sforge build --sizes id: build - - name: Run Forge tests + - name: Run Sforge tests run: | - forge test -vvv + sforge test -vvv id: test From a62af02df34004b518f7673fee52cc557fba355f Mon Sep 17 00:00:00 2001 From: Ameya Deshmukh Date: Wed, 12 Mar 2025 18:16:33 +0530 Subject: [PATCH 062/130] fix: rename `seismic-solidity-releases` -> `seismic-solidity` for `ssolc` binaries in `sfoundryup` (#100) --- sfoundryup/sfoundryup | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sfoundryup/sfoundryup b/sfoundryup/sfoundryup index 21a74891b..bb3028d57 100755 --- a/sfoundryup/sfoundryup +++ b/sfoundryup/sfoundryup @@ -105,7 +105,7 @@ install_ssolc() { # Download the release echo "Fetching latest release information..." - GITHUB_API_URL="https://api.github.com/repos/SeismicSystems/seismic-solidity-releases/releases/latest" + GITHUB_API_URL="https://api.github.com/repos/SeismicSystems/seismic-solidity/releases/latest" ASSET_ID=$(curl -s "$GITHUB_API_URL" | \ jq -r --arg name "$TARGET_NAME" '.assets[] | select(.name == $name) | .id') From f283a0b05b8554c294572d1171ac905ed818883e Mon Sep 17 00:00:00 2001 From: Ameya Deshmukh Date: Wed, 12 Mar 2025 18:23:27 +0530 Subject: [PATCH 063/130] fix: typos in `sfoundryup` and `install` scripts (#101) --- sfoundryup/install | 4 ++-- sfoundryup/sfoundryup | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sfoundryup/install b/sfoundryup/install index 2b4291c9e..2ba9a3071 100755 --- a/sfoundryup/install +++ b/sfoundryup/install @@ -11,14 +11,14 @@ SEISMIC_BIN_DIR="$SEISMIC_DIR/bin" BIN_PATH="$SEISMIC_BIN_DIR/sfoundryup" -# GitHub raw URL to sfoundryup in the private repository +# GitHub raw URL to sfoundryup RAW_API_URL="https://raw.githubusercontent.com/SeismicSystems/seismic-foundry/seismic/sfoundryup/sfoundryup" # Create necessary directories mkdir -p "$SEISMIC_BIN_DIR" # Download sfoundryup using GitHub raw content URL -echo "Fetching sfoundryup from the private repository..." +echo "Fetching sfoundryup..." curl -sSf "$RAW_API_URL" -o "$BIN_PATH" # Make the file executable diff --git a/sfoundryup/sfoundryup b/sfoundryup/sfoundryup index bb3028d57..873ba45c2 100755 --- a/sfoundryup/sfoundryup +++ b/sfoundryup/sfoundryup @@ -118,7 +118,7 @@ install_ssolc() { DOWNLOAD_PATH="$TEMP_DIR/$TARGET_NAME" curl -L -H "Accept: application/octet-stream" \ -o "$DOWNLOAD_PATH" \ - "https://api.github.com/repos/SeismicSystems/seismic-solidity-releases/releases/assets/$ASSET_ID" + "https://api.github.com/repos/SeismicSystems/seismic-solidity/releases/assets/$ASSET_ID" # Extract and install echo "Extracting archive..." From 86379796502893c5292b54e43c24e88d7fc665f4 Mon Sep 17 00:00:00 2001 From: sfyll <39958632+sfyll@users.noreply.github.com> Date: Wed, 12 Mar 2025 16:19:36 +0100 Subject: [PATCH 064/130] default to 0.8.28 temp fix (#102) --- crates/config/src/lib.rs | 58 +++++++++++++++++++++++++++++++--------- 1 file changed, 45 insertions(+), 13 deletions(-) diff --git a/crates/config/src/lib.rs b/crates/config/src/lib.rs index 989a8ceae..3f10c2998 100644 --- a/crates/config/src/lib.rs +++ b/crates/config/src/lib.rs @@ -1130,19 +1130,34 @@ impl Config { }; } if self.seismic { - // Define the default solc path when seismic is true - let default_solc_path = if cfg!(windows) { - PathBuf::from("C:\\Program Files\\Seismic\\bin\\ssolc.exe") - } else { - PathBuf::from("/usr/local/bin/ssolc") - }; - if !default_solc_path.is_file() { - return Err(SolcError::msg(format!( - "`solc` {} does not exist", - default_solc_path.display() - ))); + if let Some(ref solc_req) = self.solc { + match solc_req { + SolcReq::Version(version) => { + if version.to_string() == "0.8.28" { + let default_solc_path = self.get_default_ssolc_path()?; + return Ok(Some(Solc::new(default_solc_path)?)); + } else { + if let Some(solc) = Solc::find_svm_installed_version(version)? { + return Ok(Some(solc)); + } else if self.offline { + return Err(SolcError::msg(format!( + "can't install missing solc {version} in offline mode" + ))); + } + return Ok(Some(Solc::blocking_install(version)?)); + } + } + SolcReq::Local(local_solc_path) => { + if !local_solc_path.is_file() { + return Err(SolcError::msg(format!( + "`solc` {} does not exist", + local_solc_path.display() + ))); + } + return Ok(Some(Solc::new(local_solc_path)?)); + } + } } - return Ok(Some(Solc::new(default_solc_path)?)); } if let Some(ref solc) = self.solc { let solc = match solc { @@ -1176,6 +1191,23 @@ impl Config { /// Returns the [SpecId] derived from the configured [EvmVersion] #[inline] + pub fn get_default_ssolc_path(&self) -> Result { + let default_solc_path = if cfg!(windows) { + PathBuf::from("C:\\Program Files\\Seismic\\bin\\ssolc.exe") + } else { + PathBuf::from("/usr/local/bin/ssolc") + }; + if !default_solc_path.is_file() { + return Err(SolcError::msg(format!( + "`solc` {} does not exist", + default_solc_path.display() + ))); + } + Ok(default_solc_path) + } + + /// Get default ssolc path + #[inline] pub fn evm_spec_id(&self) -> SpecId { evm_spec_id(self.evm_version, self.odyssey) } @@ -2332,7 +2364,7 @@ impl Default for Config { gas_reports: vec!["*".to_string()], gas_reports_ignore: vec![], gas_reports_include_tests: false, - solc: None, + solc: Some(SolcReq::Version(Version::parse("0.8.28").unwrap())), vyper: Default::default(), auto_detect_solc: true, offline: false, From 9cdf62f26b72ae26328fa23f35ac5fa15538cd88 Mon Sep 17 00:00:00 2001 From: phexyz <32248504+phexyz@users.noreply.github.com> Date: Thu, 13 Mar 2025 16:53:07 -0400 Subject: [PATCH 065/130] Integrate `TxSeismicElements` (#104) --- Cargo.lock | 1898 +++++++++++------ Cargo.toml | 52 +- crates/anvil/core/Cargo.toml | 7 - .../anvil/core/src/eth/transaction/crypto.rs | 154 -- crates/anvil/core/src/eth/transaction/mod.rs | 95 +- crates/anvil/src/eth/api.rs | 13 +- crates/anvil/src/eth/backend/mem/mod.rs | 94 +- crates/anvil/tests/it/revert.rs | 5 +- crates/anvil/tests/it/seismic.rs | 261 +-- crates/evm/core/src/utils.rs | 3 +- 10 files changed, 1448 insertions(+), 1134 deletions(-) delete mode 100644 crates/anvil/core/src/eth/transaction/crypto.rs diff --git a/Cargo.lock b/Cargo.lock index 2388b8946..911bc4ad5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -78,7 +78,7 @@ dependencies = [ "getrandom 0.2.15", "once_cell", "version_check", - "zerocopy", + "zerocopy 0.7.35", ] [[package]] @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "alloy-consensus" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" dependencies = [ "alloy-dyn-abi", "alloy-eips", @@ -119,10 +119,13 @@ dependencies = [ "alloy-rlp", "alloy-serde", "alloy-trie", + "anyhow", "auto_impl", "c-kzg", "derive_more", + "jsonrpsee", "k256", + "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=4a9a812)", "serde", "serde_json", ] @@ -130,7 +133,7 @@ dependencies = [ [[package]] name = "alloy-consensus-any" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" dependencies = [ "alloy-consensus", "alloy-eips", @@ -143,7 +146,7 @@ dependencies = [ [[package]] name = "alloy-contract" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -157,7 +160,7 @@ dependencies = [ "alloy-transport", "futures", "futures-util", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] @@ -189,7 +192,7 @@ dependencies = [ "alloy-primitives", "alloy-rlp", "arbitrary", - "rand", + "rand 0.8.5", "serde", ] @@ -204,14 +207,14 @@ dependencies = [ "arbitrary", "derive_more", "k256", - "rand", + "rand 0.8.5", "serde", ] [[package]] name = "alloy-eips" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" dependencies = [ "alloy-dyn-abi", "alloy-eip2930", @@ -229,7 +232,7 @@ dependencies = [ [[package]] name = "alloy-genesis" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" dependencies = [ "alloy-primitives", "alloy-serde", @@ -251,20 +254,20 @@ dependencies = [ [[package]] name = "alloy-json-rpc" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" dependencies = [ "alloy-primitives", "alloy-sol-types", "serde", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", ] [[package]] name = "alloy-network" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -282,13 +285,13 @@ dependencies = [ "futures-utils-wasm", "serde", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] name = "alloy-network-primitives" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" dependencies = [ "alloy-consensus", "alloy-eips", @@ -300,15 +303,15 @@ dependencies = [ [[package]] name = "alloy-node-bindings" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" dependencies = [ "alloy-genesis", "alloy-primitives", "k256", - "rand", + "rand 0.8.5", "serde_json", "tempfile", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", "url", ] @@ -329,16 +332,16 @@ dependencies = [ "getrandom 0.2.15", "hashbrown 0.15.2", "hex-literal", - "indexmap 2.7.1", + "indexmap 2.8.0", "itoa", "k256", "keccak-asm", "paste", "proptest", "proptest-derive", - "rand", + "rand 0.8.5", "ruint", - "rustc-hash", + "rustc-hash 2.1.1", "serde", "sha3", "tiny-keccak", @@ -347,7 +350,7 @@ dependencies = [ [[package]] name = "alloy-provider" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" dependencies = [ "alloy-chains", "alloy-consensus", @@ -374,13 +377,13 @@ dependencies = [ "futures-utils-wasm", "lru", "parking_lot", - "pin-project 1.1.9", + "pin-project 1.1.10", "reqwest", "schnellru", - "seismic-enclave 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=4a9a812)", "serde", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tracing", "url", @@ -390,7 +393,7 @@ dependencies = [ [[package]] name = "alloy-pubsub" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -424,13 +427,13 @@ checksum = "a40e1ef334153322fd878d07e86af7a529bcb86b2439525920a88eba87bcf943" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] name = "alloy-rpc-client" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -440,7 +443,7 @@ dependencies = [ "alloy-transport-ipc", "alloy-transport-ws", "futures", - "pin-project 1.1.9", + "pin-project 1.1.10", "reqwest", "serde", "serde_json", @@ -455,7 +458,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" dependencies = [ "alloy-primitives", "alloy-rpc-types-anvil", @@ -470,7 +473,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -481,7 +484,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -491,7 +494,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-debug" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" dependencies = [ "alloy-primitives", "serde", @@ -500,7 +503,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-engine" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" dependencies = [ "alloy-consensus", "alloy-eips", @@ -509,7 +512,7 @@ dependencies = [ "alloy-serde", "derive_more", "jsonwebtoken", - "rand", + "rand 0.8.5", "serde", "strum 0.26.3", ] @@ -517,7 +520,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -536,20 +539,20 @@ dependencies = [ [[package]] name = "alloy-rpc-types-trace" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", "alloy-serde", "serde", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] name = "alloy-rpc-types-txpool" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -560,7 +563,7 @@ dependencies = [ [[package]] name = "alloy-serde" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" dependencies = [ "alloy-primitives", "serde", @@ -570,7 +573,7 @@ dependencies = [ [[package]] name = "alloy-signer" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" dependencies = [ "alloy-dyn-abi", "alloy-primitives", @@ -579,13 +582,13 @@ dependencies = [ "auto_impl", "elliptic-curve", "k256", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] name = "alloy-signer-aws" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" dependencies = [ "alloy-consensus", "alloy-network", @@ -595,14 +598,14 @@ dependencies = [ "aws-sdk-kms", "k256", "spki", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", ] [[package]] name = "alloy-signer-gcp" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" dependencies = [ "alloy-consensus", "alloy-network", @@ -612,14 +615,14 @@ dependencies = [ "gcloud-sdk", "k256", "spki", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", ] [[package]] name = "alloy-signer-ledger" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -630,15 +633,15 @@ dependencies = [ "async-trait", "coins-ledger", "futures-util", - "semver 1.0.25", - "thiserror 2.0.11", + "semver 1.0.26", + "thiserror 2.0.12", "tracing", ] [[package]] name = "alloy-signer-local" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" dependencies = [ "alloy-consensus", "alloy-network", @@ -649,22 +652,22 @@ dependencies = [ "coins-bip39", "eth-keystore", "k256", - "rand", - "thiserror 2.0.11", + "rand 0.8.5", + "thiserror 2.0.12", ] [[package]] name = "alloy-signer-trezor" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" dependencies = [ "alloy-consensus", "alloy-network", "alloy-primitives", "alloy-signer", "async-trait", - "semver 1.0.25", - "thiserror 2.0.11", + "semver 1.0.26", + "thiserror 2.0.12", "tracing", "trezor-client", ] @@ -679,7 +682,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -691,11 +694,11 @@ dependencies = [ "alloy-sol-macro-input", "const-hex", "heck 0.5.0", - "indexmap 2.7.1", + "indexmap 2.8.0", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", "syn-solidity", "tiny-keccak", ] @@ -712,7 +715,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.98", + "syn 2.0.100", "syn-solidity", ] @@ -740,7 +743,7 @@ dependencies = [ [[package]] name = "alloy-transport" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" dependencies = [ "alloy-json-rpc", "base64 0.22.1", @@ -748,7 +751,7 @@ dependencies = [ "futures-utils-wasm", "serde", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tower 0.5.2", "tracing", @@ -759,7 +762,7 @@ dependencies = [ [[package]] name = "alloy-transport-http" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -773,7 +776,7 @@ dependencies = [ [[package]] name = "alloy-transport-ipc" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" dependencies = [ "alloy-json-rpc", "alloy-pubsub", @@ -781,7 +784,7 @@ dependencies = [ "bytes", "futures", "interprocess", - "pin-project 1.1.9", + "pin-project 1.1.10", "serde", "serde_json", "tempfile", @@ -793,13 +796,13 @@ dependencies = [ [[package]] name = "alloy-transport-ws" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=5de3c63#5de3c6316ae50044de07b9d418752ad6603385df" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" dependencies = [ "alloy-pubsub", "alloy-transport", "futures", - "http 1.2.0", - "rustls 0.23.22", + "http 1.3.1", + "rustls 0.23.23", "serde_json", "tokio", "tokio-tungstenite", @@ -964,17 +967,17 @@ dependencies = [ "k256", "op-alloy-consensus", "parking_lot", - "rand", + "rand 0.8.5", "reqwest", "revm", "secp256k1", - "seismic-enclave 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=4a9a812)", "serde", "serde_json", "serde_repr", "similar-asserts", "tempfile", - "thiserror 2.0.11", + "thiserror 2.0.12", "tikv-jemallocator", "tokio", "tower 0.4.13", @@ -998,19 +1001,16 @@ dependencies = [ "alloy-rpc-types", "alloy-serde", "alloy-trie", - "anyhow", "bytes", "foundry-common", "foundry-evm", - "once_cell", "op-alloy-consensus", - "rand", + "rand 0.8.5", "revm", - "secp256k1", - "seismic-enclave 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=4a9a812)", "serde", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] @@ -1033,10 +1033,10 @@ dependencies = [ "futures", "interprocess", "parking_lot", - "pin-project 1.1.9", + "pin-project 1.1.10", "serde", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio-util", "tower-http", "tracing", @@ -1044,9 +1044,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.95" +version = "1.0.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" +checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f" [[package]] name = "arbitrary" @@ -1178,7 +1178,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" dependencies = [ "num-traits", - "rand", + "rand 0.8.5", ] [[package]] @@ -1188,7 +1188,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" dependencies = [ "num-traits", - "rand", + "rand 0.8.5", ] [[package]] @@ -1217,9 +1217,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.18" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df895a515f70646414f4b45c0b79082783b80552b373a68283012928df56f522" +checksum = "310c9bcae737a48ef5cdee3174184e6d548b292739ede61a1f955ef76a738861" dependencies = [ "flate2", "futures-core", @@ -1245,7 +1245,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -1267,18 +1267,18 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] name = "async-trait" -version = "0.1.86" +version = "0.1.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "644dd749086bf3771a2fbc5f256fdb982d53f011c7d5d560304eafeecebce79d" +checksum = "d556ec1359574147ec0c4fc5eb525f3f23263a592b1a9c07e0a75b427de55c97" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -1331,7 +1331,7 @@ checksum = "e12882f59de5360c748c4cbf569a042d5fb0eb515f7bea9c1f470b47f6ffbd73" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -1342,9 +1342,9 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "aws-config" -version = "1.5.16" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50236e4d60fe8458de90a71c0922c761e41755adf091b1b03de1cef537179915" +checksum = "6a84fe2c5e9965fba0fbc2001db252f1d57527d82a905cca85127df227bca748" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1361,7 +1361,7 @@ dependencies = [ "bytes", "fastrand", "hex", - "http 0.2.12", + "http 1.3.1", "ring", "time", "tokio", @@ -1372,9 +1372,9 @@ dependencies = [ [[package]] name = "aws-credential-types" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60e8f6b615cb5fc60a98132268508ad104310f0cfb25a1c22eee76efdf9154da" +checksum = "4471bef4c22a06d2c7a1b6492493d3fdf24a805323109d6874f9c94d5906ac14" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", @@ -1382,11 +1382,34 @@ dependencies = [ "zeroize", ] +[[package]] +name = "aws-lc-rs" +version = "1.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dabb68eb3a7aa08b46fddfd59a3d55c978243557a90ab804769f7e20e67d2b01" +dependencies = [ + "aws-lc-sys", + "zeroize", +] + +[[package]] +name = "aws-lc-sys" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bbe221bbf523b625a4dd8585c7f38166e31167ec2ca98051dbcb4c3b6e825d2" +dependencies = [ + "bindgen", + "cc", + "cmake", + "dunce", + "fs_extra", +] + [[package]] name = "aws-runtime" -version = "1.5.5" +version = "1.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76dd04d39cc12844c0994f2c9c5a6f5184c22e9188ec1ff723de41910a21dcad" +checksum = "0aff45ffe35196e593ea3b9dd65b320e51e2dda95aff4390bc459e461d09c6ad" dependencies = [ "aws-credential-types", "aws-sigv4", @@ -1404,14 +1427,14 @@ dependencies = [ "percent-encoding", "pin-project-lite", "tracing", - "uuid 1.13.1", + "uuid 1.15.1", ] [[package]] name = "aws-sdk-kms" -version = "1.59.0" +version = "1.63.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2da21a543bfc06001637785ec6ed7b4bec9a3d737f0abca3ddd8d7b962e71fb1" +checksum = "a971bfe62ca4a228627a1b74a87a7a142979b20b168d2e2884f4893212ebb715" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1431,9 +1454,9 @@ dependencies = [ [[package]] name = "aws-sdk-sso" -version = "1.58.0" +version = "1.62.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16ff718c9ee45cc1ebd4774a0e086bb80a6ab752b4902edf1c9f56b86ee1f770" +checksum = "1d5330ad4e8a1ff49e9f26b738611caa72b105c41d41733801d1a36e8f9de936" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1453,9 +1476,9 @@ dependencies = [ [[package]] name = "aws-sdk-ssooidc" -version = "1.59.0" +version = "1.63.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5183e088715cc135d8d396fdd3bc02f018f0da4c511f53cb8d795b6a31c55809" +checksum = "7956b1a85d49082347a7d17daa2e32df191f3e23c03d47294b99f95413026a78" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1475,9 +1498,9 @@ dependencies = [ [[package]] name = "aws-sdk-sts" -version = "1.59.0" +version = "1.63.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9f944ef032717596639cea4a2118a3a457268ef51bbb5fde9637e54c465da00" +checksum = "065c533fbe6f84962af33fcf02b0350b7c1f79285baab5924615d2be3b232855" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1498,9 +1521,9 @@ dependencies = [ [[package]] name = "aws-sigv4" -version = "1.2.8" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bc5bbd1e4a2648fd8c5982af03935972c24a2f9846b396de661d351ee3ce837" +checksum = "69d03c3c05ff80d54ff860fe38c726f6f494c639ae975203a101335f223386db" dependencies = [ "aws-credential-types", "aws-smithy-http", @@ -1511,7 +1534,7 @@ dependencies = [ "hex", "hmac", "http 0.2.12", - "http 1.2.0", + "http 1.3.1", "once_cell", "percent-encoding", "sha2", @@ -1521,9 +1544,9 @@ dependencies = [ [[package]] name = "aws-smithy-async" -version = "1.2.4" +version = "1.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa59d1327d8b5053c54bf2eaae63bf629ba9e904434d0835a28ed3c0ed0a614e" +checksum = "1e190749ea56f8c42bf15dd76c65e14f8f765233e6df9b0506d9d934ebef867c" dependencies = [ "futures-util", "pin-project-lite", @@ -1532,9 +1555,9 @@ dependencies = [ [[package]] name = "aws-smithy-http" -version = "0.60.12" +version = "0.62.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7809c27ad8da6a6a68c454e651d4962479e81472aa19ae99e59f9aba1f9713cc" +checksum = "c5949124d11e538ca21142d1fba61ab0a2a2c1bc3ed323cdb3e4b878bfb83166" dependencies = [ "aws-smithy-runtime-api", "aws-smithy-types", @@ -1542,6 +1565,7 @@ dependencies = [ "bytes-utils", "futures-core", "http 0.2.12", + "http 1.3.1", "http-body 0.4.6", "once_cell", "percent-encoding", @@ -1550,11 +1574,39 @@ dependencies = [ "tracing", ] +[[package]] +name = "aws-smithy-http-client" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0497ef5d53065b7cd6a35e9c1654bd1fefeae5c52900d91d1b188b0af0f29324" +dependencies = [ + "aws-smithy-async", + "aws-smithy-runtime-api", + "aws-smithy-types", + "h2 0.4.8", + "http 0.2.12", + "http 1.3.1", + "http-body 0.4.6", + "hyper 0.14.32", + "hyper 1.6.0", + "hyper-rustls 0.24.2", + "hyper-rustls 0.27.5", + "hyper-util", + "pin-project-lite", + "rustls 0.21.12", + "rustls 0.23.23", + "rustls-native-certs 0.8.1", + "rustls-pki-types", + "tokio", + "tower 0.5.2", + "tracing", +] + [[package]] name = "aws-smithy-json" -version = "0.61.2" +version = "0.61.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "623a51127f24c30776c8b374295f2df78d92517386f77ba30773f15a30ce1422" +checksum = "92144e45819cae7dc62af23eac5a038a58aa544432d2102609654376a900bd07" dependencies = [ "aws-smithy-types", ] @@ -1571,42 +1623,39 @@ dependencies = [ [[package]] name = "aws-smithy-runtime" -version = "1.7.8" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d526a12d9ed61fadefda24abe2e682892ba288c2018bcb38b1b4c111d13f6d92" +checksum = "f6328865e36c6fd970094ead6b05efd047d3a80ec5fc3be5e743910da9f2ebf8" dependencies = [ "aws-smithy-async", "aws-smithy-http", + "aws-smithy-http-client", "aws-smithy-runtime-api", "aws-smithy-types", "bytes", "fastrand", - "h2 0.3.26", "http 0.2.12", + "http 1.3.1", "http-body 0.4.6", "http-body 1.0.1", - "httparse", - "hyper 0.14.32", - "hyper-rustls 0.24.2", "once_cell", "pin-project-lite", "pin-utils", - "rustls 0.21.12", "tokio", "tracing", ] [[package]] name = "aws-smithy-runtime-api" -version = "1.7.3" +version = "1.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92165296a47a812b267b4f41032ff8069ab7ff783696d217f0994a0d7ab585cd" +checksum = "3da37cf5d57011cb1753456518ec76e31691f1f474b73934a284eb2a1c76510f" dependencies = [ "aws-smithy-async", "aws-smithy-types", "bytes", "http 0.2.12", - "http 1.2.0", + "http 1.3.1", "pin-project-lite", "tokio", "tracing", @@ -1615,15 +1664,15 @@ dependencies = [ [[package]] name = "aws-smithy-types" -version = "1.2.13" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7b8a53819e42f10d0821f56da995e1470b199686a1809168db6ca485665f042" +checksum = "836155caafba616c0ff9b07944324785de2ab016141c3550bd1c07882f8cee8f" dependencies = [ "base64-simd", "bytes", "bytes-utils", "http 0.2.12", - "http 1.2.0", + "http 1.3.1", "http-body 0.4.6", "http-body 1.0.1", "http-body-util", @@ -1647,9 +1696,9 @@ dependencies = [ [[package]] name = "aws-types" -version = "1.3.5" +version = "1.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbd0a668309ec1f66c0f6bda4840dd6d4796ae26d699ebc266d7cc95c6d040f" +checksum = "3873f8deed8927ce8d04487630dc9ff73193bab64742a61d050e57a68dec4125" dependencies = [ "aws-credential-types", "aws-smithy-async", @@ -1670,7 +1719,7 @@ dependencies = [ "base64 0.22.1", "bytes", "futures-util", - "http 1.2.0", + "http 1.3.1", "http-body 1.0.1", "http-body-util", "hyper 1.6.0", @@ -1705,7 +1754,7 @@ dependencies = [ "async-trait", "bytes", "futures-util", - "http 1.2.0", + "http 1.3.1", "http-body 1.0.1", "http-body-util", "mime", @@ -1762,9 +1811,9 @@ dependencies = [ [[package]] name = "base64ct" -version = "1.6.0" +version = "1.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +checksum = "89e25b6adfb930f02d1981565a6e5d9c547ac15a96606256d3b59040e5cd4ca3" [[package]] name = "bech32" @@ -1787,6 +1836,29 @@ dependencies = [ "serde", ] +[[package]] +name = "bindgen" +version = "0.69.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" +dependencies = [ + "bitflags 2.9.0", + "cexpr", + "clang-sys", + "itertools 0.12.1", + "lazy_static", + "lazycell", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash 1.1.0", + "shlex", + "syn 2.0.100", + "which 4.4.2", +] + [[package]] name = "bit-set" version = "0.5.3" @@ -1825,9 +1897,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.8.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" +checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" dependencies = [ "arbitrary", "serde", @@ -1857,9 +1929,9 @@ dependencies = [ [[package]] name = "blst" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4378725facc195f1a538864863f6de233b500a8862747e7f165078a419d5e874" +checksum = "47c79a94619fade3c0b887670333513a67ac28a6a7e653eb260bf0d4103db38d" dependencies = [ "cc", "glob", @@ -1869,9 +1941,9 @@ dependencies = [ [[package]] name = "bon" -version = "3.3.2" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe7acc34ff59877422326db7d6f2d845a582b16396b6b08194942bf34c6528ab" +checksum = "8a8a41e51fda5f7d87152d00f50d08ce24bf5cee8a962facf7f2526a66f8a5fa" dependencies = [ "bon-macros", "rustversion", @@ -1879,9 +1951,9 @@ dependencies = [ [[package]] name = "bon-macros" -version = "3.3.2" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4159dd617a7fbc9be6a692fe69dc2954f8e6bb6bb5e4d7578467441390d77fd0" +checksum = "6b592add4016ac26ca340298fed5cc2524abe8bacae78ebca3780286da588304" dependencies = [ "darling", "ident_case", @@ -1889,7 +1961,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -1927,15 +1999,15 @@ checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" [[package]] name = "byte-slice-cast" -version = "1.2.2" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" +checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" [[package]] name = "bytemuck" -version = "1.21.0" +version = "1.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef657dfab802224e671f5818e9a4935f9b1957ed18e58292690cc39e7a4092a3" +checksum = "b6b1fc10dbac614ebc03540c9dbd60e83887fda27794998c6528f1782047d540" [[package]] name = "byteorder" @@ -1945,9 +2017,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.10.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" dependencies = [ "serde", ] @@ -1964,22 +2036,20 @@ dependencies = [ [[package]] name = "bzip2" -version = "0.4.4" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" +checksum = "49ecfb22d906f800d4fe833b6282cf4dc1c298f5057ca0b5445e5c209735ca47" dependencies = [ "bzip2-sys", - "libc", ] [[package]] name = "bzip2-sys" -version = "0.1.11+1.0.8" +version = "0.1.13+1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" dependencies = [ "cc", - "libc", "pkg-config", ] @@ -2024,7 +2094,7 @@ checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" dependencies = [ "camino", "cargo-platform", - "semver 1.0.25", + "semver 1.0.26", "serde", "serde_json", "thiserror 1.0.69", @@ -2080,11 +2150,11 @@ dependencies = [ "futures", "indicatif", "itertools 0.13.0", - "rand", + "rand 0.8.5", "rayon", "regex", "rpassword", - "semver 1.0.25", + "semver 1.0.26", "serde", "serde_json", "tempfile", @@ -2106,13 +2176,30 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.13" +version = "1.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7777341816418c02e033934a09f20dc0ccaf65a5201ef8a450ae0105a573fda" +checksum = "be714c154be609ec7f5dad223a33bf1482fff90472de28f7362806e6d4832b8c" dependencies = [ + "jobserver", + "libc", "shlex", ] +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + [[package]] name = "cfg-if" version = "1.0.0" @@ -2153,7 +2240,7 @@ dependencies = [ "reqwest", "revm", "rustyline", - "semver 1.0.25", + "semver 1.0.26", "serde", "serde_json", "serial_test", @@ -2171,15 +2258,15 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.39" +version = "0.4.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" +checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c" dependencies = [ "android-tzdata", "iana-time-zone", "num-traits", "serde", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -2219,11 +2306,22 @@ dependencies = [ "inout", ] +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] + [[package]] name = "clap" -version = "4.5.28" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e77c3243bd94243c03672cb5154667347c457ca271254724f9f393aee1c05ff" +checksum = "6088f3ae8c3608d19260cd7445411865a485688711b78b5be70d78cd96136f83" dependencies = [ "clap_builder", "clap_derive", @@ -2231,9 +2329,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.27" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b26884eb4b57140e4d2d93652abfa49498b938b3c9179f9fc487b0acc3edad7" +checksum = "22a7ef7f676155edfb82daa97f99441f3ebf4a58d5e32f295a56259f1b6facc8" dependencies = [ "anstream", "anstyle", @@ -2246,9 +2344,9 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.5.44" +version = "4.5.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "375f9d8255adeeedd51053574fd8d4ba875ea5fa558e86617b07f09f1680c8b6" +checksum = "f5c5508ea23c5366f77e53f5a0070e5a84e51687ec3ef9e0464c86dc8d13ce98" dependencies = [ "clap", ] @@ -2265,14 +2363,14 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.28" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4ced95c6f4a675af3da73304b9ac4ed991640c36374e4b46795c49e17cf1ed" +checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -2290,7 +2388,7 @@ dependencies = [ "nix 0.28.0", "terminfo", "thiserror 1.0.69", - "which", + "which 6.0.3", "winapi", ] @@ -2317,6 +2415,15 @@ dependencies = [ "error-code", ] +[[package]] +name = "cmake" +version = "0.1.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0" +dependencies = [ + "cc", +] + [[package]] name = "coins-bip32" version = "0.12.0" @@ -2344,7 +2451,7 @@ dependencies = [ "hmac", "once_cell", "pbkdf2 0.12.2", - "rand", + "rand 0.8.5", "sha2", "thiserror 1.0.69", ] @@ -2424,6 +2531,16 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + [[package]] name = "comfy-table" version = "7.1.4" @@ -2466,9 +2583,9 @@ checksum = "baf0a07a401f374238ab8e2f11a104d2851bf9ce711ec69804834de8af45c7af" [[package]] name = "console" -version = "0.15.10" +version = "0.15.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea3c6ecd8059b57859df5c69830340ed3c41d30e3da0c1cbed90a96ac853041b" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" dependencies = [ "encode_unicode", "libc", @@ -2619,11 +2736,11 @@ version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "crossterm_winapi", "mio 1.0.3", "parking_lot", - "rustix", + "rustix 0.38.44", "signal-hook", "signal-hook-mio", "winapi", @@ -2651,7 +2768,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ "generic-array", - "rand_core", + "rand_core 0.6.4", "subtle", "zeroize", ] @@ -2663,7 +2780,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ "generic-array", - "rand_core", + "rand_core 0.6.4", "typenum", ] @@ -2710,7 +2827,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -2734,7 +2851,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -2745,7 +2862,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -2818,7 +2935,7 @@ checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -2839,7 +2956,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -2849,7 +2966,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -2870,7 +2987,7 @@ dependencies = [ "convert_case", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", "unicode-xid", ] @@ -2926,6 +3043,15 @@ dependencies = [ "dirs-sys 0.4.1", ] +[[package]] +name = "dirs" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" +dependencies = [ + "dirs-sys 0.5.0", +] + [[package]] name = "dirs-next" version = "2.0.0" @@ -2943,7 +3069,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" dependencies = [ "libc", - "redox_users", + "redox_users 0.4.6", "winapi", ] @@ -2955,10 +3081,22 @@ checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" dependencies = [ "libc", "option-ext", - "redox_users", + "redox_users 0.4.6", "windows-sys 0.48.0", ] +[[package]] +name = "dirs-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" +dependencies = [ + "libc", + "option-ext", + "redox_users 0.5.0", + "windows-sys 0.59.0", +] + [[package]] name = "dirs-sys-next" version = "0.1.2" @@ -2966,7 +3104,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" dependencies = [ "libc", - "redox_users", + "redox_users 0.4.6", "winapi", ] @@ -2978,7 +3116,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -3003,7 +3141,7 @@ checksum = "8dc51d98e636f5e3b0759a39257458b22619cac7e96d932da6eeb052891bb67c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -3032,9 +3170,9 @@ checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "dyn-clone" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "feeef44e73baff3a26d371801df019877a9866a8c493d315ab00177843314f35" +checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005" [[package]] name = "ecdsa" @@ -3052,9 +3190,9 @@ dependencies = [ [[package]] name = "either" -version = "1.13.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "elasticlunr-rs" @@ -3082,7 +3220,7 @@ dependencies = [ "group", "pem-rfc7468", "pkcs8", - "rand_core", + "rand_core 0.6.4", "sec1", "subtle", "zeroize", @@ -3130,7 +3268,7 @@ checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -3145,22 +3283,22 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.6" +version = "0.11.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcaee3d8e3cfc3fd92428d477bc97fc29ec8716d180c0d74c643bb26166660e0" +checksum = "c3716d7a920fb4fac5d84e9d4bce8ceb321e9414b4409da61b07b75c1e3d0697" dependencies = [ "anstream", "anstyle", "env_filter", - "humantime", + "jiff 0.2.4", "log", ] [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" @@ -3190,7 +3328,7 @@ dependencies = [ "hex", "hmac", "pbkdf2 0.11.0", - "rand", + "rand 0.8.5", "scrypt", "serde", "serde_json", @@ -3265,7 +3403,7 @@ dependencies = [ "regex", "serde", "serde_json", - "syn 2.0.98", + "syn 2.0.100", "toml 0.8.20", "walkdir", ] @@ -3288,12 +3426,12 @@ dependencies = [ "num_enum", "once_cell", "open-fastrlp", - "rand", + "rand 0.8.5", "rlp", "serde", "serde_json", "strum 0.26.3", - "syn 2.0.98", + "syn 2.0.100", "tempfile", "thiserror 1.0.69", "tiny-keccak", @@ -3367,15 +3505,26 @@ dependencies = [ "bytes", ] +[[package]] +name = "fastrlp" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce8dba4714ef14b8274c371879b175aa55b16b30f269663f19d576f380018dc4" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + [[package]] name = "fd-lock" -version = "4.0.2" +version = "4.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e5768da2206272c81ef0b5e951a41862938a6070da63bcea197899942d3b947" +checksum = "0ce92ff622d6dadf7349484f42c93271a0d49b7cc4d466a936405bacbe10aa78" dependencies = [ "cfg-if", - "rustix", - "windows-sys 0.52.0", + "rustix 1.0.2", + "windows-sys 0.59.0", ] [[package]] @@ -3390,11 +3539,11 @@ dependencies = [ [[package]] name = "ff" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" dependencies = [ - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -3439,7 +3588,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" dependencies = [ "byteorder", - "rand", + "rand 0.8.5", "rustc-hex", "static_assertions", ] @@ -3452,12 +3601,12 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.35" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" +checksum = "11faaf5a5236997af9848be0bef4db95824b1d534ebc64d0f0c6cf3e67bd38dc" dependencies = [ "crc32fast", - "miniz_oxide 0.8.3", + "miniz_oxide 0.8.5", ] [[package]] @@ -3553,7 +3702,7 @@ dependencies = [ "regex", "reqwest", "revm-inspectors", - "semver 1.0.25", + "semver 1.0.26", "serde", "serde_json", "similar", @@ -3565,7 +3714,7 @@ dependencies = [ "strum 0.26.3", "svm-rs", "tempfile", - "thiserror 2.0.11", + "thiserror 2.0.12", "tikv-jemallocator", "tokio", "toml 0.8.20", @@ -3598,7 +3747,7 @@ dependencies = [ "serde", "serde_json", "solang-parser", - "thiserror 2.0.11", + "thiserror 2.0.12", "toml 0.8.20", "tracing", ] @@ -3613,7 +3762,7 @@ dependencies = [ "itertools 0.13.0", "similar-asserts", "solang-parser", - "thiserror 2.0.11", + "thiserror 2.0.12", "toml 0.8.20", "tracing", "tracing-subscriber", @@ -3655,7 +3804,7 @@ dependencies = [ "itertools 0.13.0", "parking_lot", "revm-inspectors", - "semver 1.0.25", + "semver 1.0.26", "serde", "serde_json", "tempfile", @@ -3695,7 +3844,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -3723,7 +3872,7 @@ dependencies = [ "regex", "reqwest", "revm-primitives", - "semver 1.0.25", + "semver 1.0.26", "serde", "serde_json", "tempfile", @@ -3752,7 +3901,7 @@ dependencies = [ "alloy-primitives", "foundry-compilers", "reqwest", - "semver 1.0.25", + "semver 1.0.26", "serde", "serde_json", "thiserror 1.0.69", @@ -3795,13 +3944,13 @@ dependencies = [ "p256", "parking_lot", "proptest", - "rand", + "rand 0.8.5", "revm", "revm-inspectors", - "semver 1.0.25", + "semver 1.0.26", "serde", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", "toml 0.8.20", "tracing", "vergen", @@ -3895,12 +4044,12 @@ dependencies = [ "itertools 0.13.0", "num-format", "reqwest", - "semver 1.0.25", + "semver 1.0.26", "serde", "serde_json", "similar-asserts", "terminal_size", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tower 0.4.13", "tracing", @@ -3948,9 +4097,9 @@ dependencies = [ "itertools 0.13.0", "md-5", "path-slash", - "rand", + "rand 0.8.5", "rayon", - "semver 1.0.25", + "semver 1.0.26", "serde", "serde_json", "sha2", @@ -3958,7 +4107,7 @@ dependencies = [ "svm-rs", "svm-rs-builds", "tempfile", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tracing", "winnow 0.6.24", @@ -3986,11 +4135,11 @@ dependencies = [ "md-5", "path-slash", "rayon", - "semver 1.0.25", + "semver 1.0.26", "serde", "serde_json", "serde_repr", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tracing", "walkdir", @@ -4007,7 +4156,7 @@ dependencies = [ "foundry-compilers-artifacts-solc", "foundry-compilers-core", "path-slash", - "semver 1.0.25", + "semver 1.0.26", "serde", ] @@ -4022,12 +4171,12 @@ dependencies = [ "fs_extra", "path-slash", "regex", - "semver 1.0.25", + "semver 1.0.26", "serde", "serde_json", "svm-rs", "tempfile", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "walkdir", ] @@ -4054,14 +4203,14 @@ dependencies = [ "regex", "reqwest", "revm-primitives", - "semver 1.0.25", + "semver 1.0.26", "serde", "serde_json", "serde_regex", "similar-asserts", "solang-parser", "tempfile", - "thiserror 2.0.11", + "thiserror 2.0.12", "toml 0.8.20", "toml_edit", "tracing", @@ -4110,7 +4259,7 @@ dependencies = [ "revm", "revm-inspectors", "serde", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", ] @@ -4157,7 +4306,7 @@ dependencies = [ "revm-primitives", "serde", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tracing", "url", @@ -4174,7 +4323,7 @@ dependencies = [ "foundry-evm-core", "rayon", "revm", - "semver 1.0.25", + "semver 1.0.26", "tracing", ] @@ -4193,14 +4342,14 @@ dependencies = [ "foundry-evm-core", "foundry-evm-coverage", "foundry-evm-traces", - "indexmap 2.7.1", + "indexmap 2.8.0", "itertools 0.13.0", "parking_lot", "proptest", - "rand", + "rand 0.8.5", "revm", "serde", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", ] @@ -4249,7 +4398,7 @@ dependencies = [ "revm", "serde", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tracing", "url", @@ -4261,8 +4410,8 @@ version = "0.3.0" dependencies = [ "alloy-primitives", "foundry-compilers", - "semver 1.0.25", - "thiserror 2.0.11", + "semver 1.0.26", + "thiserror 2.0.12", ] [[package]] @@ -4272,7 +4421,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -4288,7 +4437,7 @@ dependencies = [ "foundry-compilers", "foundry-config", "parking_lot", - "rand", + "rand 0.8.5", "regex", "serde_json", "snapbox", @@ -4324,7 +4473,7 @@ dependencies = [ "gcloud-sdk", "rpassword", "serde", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tracing", ] @@ -4341,7 +4490,7 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c29c30684418547d476f0b48e84f4821639119c483b1eccd566c8cd0cd05f521" dependencies = [ - "rustix", + "rustix 0.38.44", "windows-sys 0.52.0", ] @@ -4432,7 +4581,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -4447,6 +4596,16 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" +[[package]] +name = "futures-timer" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" +dependencies = [ + "gloo-timers", + "send_wrapper 0.4.0", +] + [[package]] name = "futures-util" version = "0.3.31" @@ -4554,8 +4713,8 @@ version = "0.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ea1015b5a70616b688dc230cfe50c8af89d972cb132d5a622814d29773b10b9" dependencies = [ - "rand", - "rand_core", + "rand 0.8.5", + "rand_core 0.6.4", ] [[package]] @@ -4584,7 +4743,7 @@ dependencies = [ "gix-date", "gix-utils", "itoa", - "thiserror 2.0.11", + "thiserror 2.0.12", "winnow 0.6.24", ] @@ -4604,7 +4763,7 @@ dependencies = [ "memchr", "once_cell", "smallvec", - "thiserror 2.0.11", + "thiserror 2.0.12", "unicode-bom", "winnow 0.6.24", ] @@ -4615,11 +4774,11 @@ version = "0.14.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11365144ef93082f3403471dbaa94cfe4b5e72743bdb9560719a251d439f4cee" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "bstr", "gix-path", "libc", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] @@ -4630,8 +4789,8 @@ checksum = "c57c477b645ee248b173bb1176b52dd528872f12c50375801a58aaf5ae91113f" dependencies = [ "bstr", "itoa", - "jiff", - "thiserror 2.0.11", + "jiff 0.1.29", + "thiserror 2.0.12", ] [[package]] @@ -4666,7 +4825,7 @@ version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aaf69a6bec0a3581567484bf99a4003afcaf6c469fd4214352517ea355cf3435" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "bstr", "gix-features", "gix-path", @@ -4679,7 +4838,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b5eccc17194ed0e67d49285e4853307e4147e95407f91c1c3e4a13ba9f4e4ce" dependencies = [ "faster-hex", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] @@ -4701,7 +4860,7 @@ checksum = "1cd3ab68a452db63d9f3ebdacb10f30dba1fa0d31ac64f4203d395ed1102d940" dependencies = [ "gix-tempfile", "gix-utils", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] @@ -4721,7 +4880,7 @@ dependencies = [ "gix-validate", "itoa", "smallvec", - "thiserror 2.0.11", + "thiserror 2.0.12", "winnow 0.6.24", ] @@ -4735,7 +4894,7 @@ dependencies = [ "gix-trace", "home", "once_cell", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] @@ -4755,7 +4914,7 @@ dependencies = [ "gix-utils", "gix-validate", "memmap2", - "thiserror 2.0.11", + "thiserror 2.0.12", "winnow 0.6.24", ] @@ -4765,7 +4924,7 @@ version = "0.10.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d84dae13271f4313f8d60a166bf27e54c968c7c33e2ffd31c48cafe5da649875" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "gix-path", "libc", "windows-sys 0.52.0", @@ -4807,7 +4966,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9eaa01c3337d885617c0a42e92823922a2aea71f4caeace6fe87002bdcadbd90" dependencies = [ "bstr", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] @@ -4818,9 +4977,9 @@ checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" [[package]] name = "globset" -version = "0.4.15" +version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" +checksum = "54a1028dfc5f5df5da8a56a73e6c153c9a9708ec57232470703592a3f18e49f5" dependencies = [ "aho-corasick", "bstr", @@ -4829,6 +4988,52 @@ dependencies = [ "regex-syntax 0.8.5", ] +[[package]] +name = "gloo-net" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06f627b1a58ca3d42b45d6104bf1e1a03799df472df00988b6ba21accc10580" +dependencies = [ + "futures-channel", + "futures-core", + "futures-sink", + "gloo-utils", + "http 1.3.1", + "js-sys", + "pin-project 1.1.10", + "serde", + "serde_json", + "thiserror 1.0.69", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "gloo-timers" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "gloo-utils" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5555354113b18c547c1d3a98fbf7fb32a9ff4f6fa112ce823a21641a0ba3aa" +dependencies = [ + "js-sys", + "serde", + "serde_json", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "group" version = "0.13.0" @@ -4836,7 +5041,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ "ff", - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -4852,7 +5057,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.7.1", + "indexmap 2.8.0", "slab", "tokio", "tokio-util", @@ -4861,17 +5066,17 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e" +checksum = "5017294ff4bb30944501348f6f8e42e6ad28f42c8bbef7a74029aff064a4e3c2" dependencies = [ "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", - "http 1.2.0", - "indexmap 2.7.1", + "http 1.3.1", + "indexmap 2.8.0", "slab", "tokio", "tokio-util", @@ -4901,7 +5106,7 @@ dependencies = [ "pest_derive", "serde", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] @@ -4958,9 +5163,9 @@ checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] name = "hermit-abi" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" +checksum = "fbd780fe5cc30f81464441920d82ac8740e2e46b29a6fad543ddd075229ce37e" [[package]] name = "hex" @@ -5027,7 +5232,7 @@ dependencies = [ "markup5ever", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -5043,9 +5248,9 @@ dependencies = [ [[package]] name = "http" -version = "1.2.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" dependencies = [ "bytes", "fnv", @@ -5070,18 +5275,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.2.0", + "http 1.3.1", ] [[package]] name = "http-body-util" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", - "futures-util", - "http 1.2.0", + "futures-core", + "http 1.3.1", "http-body 1.0.1", "pin-project-lite", ] @@ -5094,9 +5299,9 @@ checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c" [[package]] name = "httparse" -version = "1.10.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2d708df4e7140240a16cd6ab0ab65c972d7433ab77819ea693fde9c43811e2a" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "httpdate" @@ -5106,9 +5311,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "humantime" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" +checksum = "9b112acc8b3adf4b107a8ec20977da0273a8c386765a3ec0229bd500a1443f9f" [[package]] name = "humantime-serde" @@ -5153,8 +5358,8 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.7", - "http 1.2.0", + "h2 0.4.8", + "http 1.3.1", "http-body 1.0.1", "httparse", "httpdate", @@ -5188,14 +5393,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" dependencies = [ "futures-util", - "http 1.2.0", + "http 1.3.1", "hyper 1.6.0", "hyper-util", - "rustls 0.23.22", + "log", + "rustls 0.23.23", "rustls-native-certs 0.8.1", "rustls-pki-types", "tokio", - "tokio-rustls 0.26.1", + "tokio-rustls 0.26.2", "tower-service", "webpki-roots", ] @@ -5238,7 +5444,7 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "http 1.2.0", + "http 1.3.1", "http-body 1.0.1", "hyper 1.6.0", "pin-project-lite", @@ -5386,7 +5592,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -5446,7 +5652,7 @@ dependencies = [ "normalize-path", "project-origins", "radix_trie", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tracing", ] @@ -5486,7 +5692,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -5513,9 +5719,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.7.1" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" +checksum = "3954d50fe15b02142bf25d3b8bdadb634ec3948f103d04ffe3031bc8fe9d7058" dependencies = [ "arbitrary", "equivalent", @@ -5538,9 +5744,9 @@ dependencies = [ [[package]] name = "indoc" -version = "2.0.5" +version = "2.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" +checksum = "f4c7245a08504955605670dbf141fceab975f15ca21570696aebe9d2e71576bd" [[package]] name = "inferno" @@ -5586,9 +5792,9 @@ dependencies = [ [[package]] name = "inout" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" dependencies = [ "generic-array", ] @@ -5603,14 +5809,14 @@ dependencies = [ "indoc", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] name = "interprocess" -version = "2.2.2" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "894148491d817cb36b6f778017b8ac46b17408d522dd90f539d677ea938362eb" +checksum = "d941b405bd2322993887859a8ee6ac9134945a24ec5ec763a8a962fc64dfec2d" dependencies = [ "doctest-file", "futures-core", @@ -5629,11 +5835,11 @@ checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "is-terminal" -version = "0.4.15" +version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e19b23d53f35ce9f56aebc7d1bb4e6ac1e9c0db7ac85c8d1760c04379edced37" +checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" dependencies = [ - "hermit-abi 0.4.0", + "hermit-abi 0.5.0", "libc", "windows-sys 0.59.0", ] @@ -5662,6 +5868,15 @@ 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" @@ -5671,11 +5886,20 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + [[package]] name = "itoa" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "jiff" @@ -5691,11 +5915,35 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "jiff" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d699bc6dfc879fb1bf9bdff0d4c56f0884fc6f0d0eb0fba397a6d00cd9a6b85e" +dependencies = [ + "jiff-static", + "log", + "portable-atomic", + "portable-atomic-util", + "serde", +] + +[[package]] +name = "jiff-static" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d16e75759ee0aa64c57a56acbf43916987b20c77373cb7e808979e02b93c9f9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "jiff-tzdb" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf2cec2f5d266af45a071ece48b1fb89f3b00b2421ac3a5fe10285a6caaa60d3" +checksum = "962e1dfe9b2d75a84536cf5bf5eaaa4319aa7906c7160134a22883ac316d5f31" [[package]] name = "jiff-tzdb-platform" @@ -5707,24 +5955,224 @@ dependencies = [ ] [[package]] -name = "js-sys" -version = "0.3.77" +name = "jni" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +checksum = "c6df18c2e3db7e453d3c6ac5b3e9d5182664d28788126d39b91f2d1e22b017ec" dependencies = [ - "once_cell", - "wasm-bindgen", + "cesu8", + "combine", + "jni-sys", + "log", + "thiserror 1.0.69", + "walkdir", ] [[package]] -name = "jsonpath_lib" +name = "jni-sys" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaa63191d68230cccb81c5aa23abd53ed64d83337cacbb25a7b8c7979523774f" -dependencies = [ - "log", +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "jobserver" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +dependencies = [ + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "jsonpath_lib" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaa63191d68230cccb81c5aa23abd53ed64d83337cacbb25a7b8c7979523774f" +dependencies = [ + "log", + "serde", + "serde_json", +] + +[[package]] +name = "jsonrpsee" +version = "0.24.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "834af00800e962dee8f7bfc0f60601de215e73e78e5497d733a2919da837d3c8" +dependencies = [ + "jsonrpsee-client-transport", + "jsonrpsee-core", + "jsonrpsee-http-client", + "jsonrpsee-proc-macros", + "jsonrpsee-server", + "jsonrpsee-types", + "jsonrpsee-wasm-client", + "jsonrpsee-ws-client", + "tokio", + "tracing", +] + +[[package]] +name = "jsonrpsee-client-transport" +version = "0.24.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "def0fd41e2f53118bd1620478d12305b2c75feef57ea1f93ef70568c98081b7e" +dependencies = [ + "base64 0.22.1", + "futures-channel", + "futures-util", + "gloo-net", + "http 1.3.1", + "jsonrpsee-core", + "pin-project 1.1.10", + "rustls 0.23.23", + "rustls-pki-types", + "rustls-platform-verifier", + "soketto", + "thiserror 1.0.69", + "tokio", + "tokio-rustls 0.26.2", + "tokio-util", + "tracing", + "url", +] + +[[package]] +name = "jsonrpsee-core" +version = "0.24.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76637f6294b04e747d68e69336ef839a3493ca62b35bf488ead525f7da75c5bb" +dependencies = [ + "async-trait", + "bytes", + "futures-timer", + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "jsonrpsee-types", + "parking_lot", + "pin-project 1.1.10", + "rand 0.8.5", + "rustc-hash 2.1.1", + "serde", + "serde_json", + "thiserror 1.0.69", + "tokio", + "tokio-stream", + "tracing", + "wasm-bindgen-futures", +] + +[[package]] +name = "jsonrpsee-http-client" +version = "0.24.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87c24e981ad17798bbca852b0738bfb7b94816ed687bd0d5da60bfa35fa0fdc3" +dependencies = [ + "async-trait", + "base64 0.22.1", + "http-body 1.0.1", + "hyper 1.6.0", + "hyper-rustls 0.27.5", + "hyper-util", + "jsonrpsee-core", + "jsonrpsee-types", + "rustls 0.23.23", + "rustls-platform-verifier", + "serde", + "serde_json", + "thiserror 1.0.69", + "tokio", + "tower 0.4.13", + "tracing", + "url", +] + +[[package]] +name = "jsonrpsee-proc-macros" +version = "0.24.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fcae0c6c159e11541080f1f829873d8f374f81eda0abc67695a13fc8dc1a580" +dependencies = [ + "heck 0.5.0", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "jsonrpsee-server" +version = "0.24.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66b7a3df90a1a60c3ed68e7ca63916b53e9afa928e33531e87f61a9c8e9ae87b" +dependencies = [ + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "hyper 1.6.0", + "hyper-util", + "jsonrpsee-core", + "jsonrpsee-types", + "pin-project 1.1.10", + "route-recognizer", "serde", "serde_json", + "soketto", + "thiserror 1.0.69", + "tokio", + "tokio-stream", + "tokio-util", + "tower 0.4.13", + "tracing", +] + +[[package]] +name = "jsonrpsee-types" +version = "0.24.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddb81adb1a5ae9182df379e374a79e24e992334e7346af4d065ae5b2acb8d4c6" +dependencies = [ + "http 1.3.1", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "jsonrpsee-wasm-client" +version = "0.24.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42e41af42ca39657313748174d02766e5287d3a57356f16756dbd8065b933977" +dependencies = [ + "jsonrpsee-client-transport", + "jsonrpsee-core", + "jsonrpsee-types", +] + +[[package]] +name = "jsonrpsee-ws-client" +version = "0.24.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f4f3642a292f5b76d8a16af5c88c16a0860f2ccc778104e5c848b28183d9538" +dependencies = [ + "http 1.3.1", + "jsonrpsee-client-transport", + "jsonrpsee-core", + "jsonrpsee-types", + "url", ] [[package]] @@ -5854,11 +6302,17 @@ dependencies = [ "spin", ] +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + [[package]] name = "libc" -version = "0.2.169" +version = "0.2.171" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" +checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" [[package]] name = "libdbus-sys" @@ -5870,13 +6324,29 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "libloading" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" +dependencies = [ + "cfg-if", + "windows-targets 0.52.6", +] + +[[package]] +name = "libm" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" + [[package]] name = "libredox" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "libc", "redox_syscall", ] @@ -5899,11 +6369,17 @@ version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" +[[package]] +name = "linux-raw-sys" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db9c683daf087dc577b7506e9695b3d556a9f3849903fa28186283afd6809e9" + [[package]] name = "litemap" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" +checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" [[package]] name = "lock_api" @@ -5923,9 +6399,9 @@ checksum = "9374ef4228402d4b7e403e5838cb880d9ee663314b0a900d5a6aabf0c213552e" [[package]] name = "log" -version = "0.4.25" +version = "0.4.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" +checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e" [[package]] name = "loom" @@ -6008,9 +6484,9 @@ dependencies = [ [[package]] name = "mdbook" -version = "0.4.44" +version = "0.4.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9da1e54401fe5d45a664c57e112e70f18e8c5a73e268c179305b932ee864574" +checksum = "7e1a8fe3a4a01f28dab245c474cb7b95ccb4d3d2f17a5419a3d949f474c45e84" dependencies = [ "ammonia", "anyhow", @@ -6020,6 +6496,7 @@ dependencies = [ "elasticlunr-rs", "env_logger", "handlebars", + "hex", "log", "memchr", "once_cell", @@ -6028,6 +6505,7 @@ dependencies = [ "regex", "serde", "serde_json", + "sha2", "shlex", "tempfile", "toml 0.5.11", @@ -6066,7 +6544,7 @@ checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" dependencies = [ "byteorder", "keccak", - "rand_core", + "rand_core 0.6.4", "zeroize", ] @@ -6101,7 +6579,7 @@ checksum = "bf45bf44ab49be92fd1227a3be6fc6f617f1a337c06af54981048574d8783147" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -6137,9 +6615,9 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8402cab7aefae129c6977bb0ff1b8fd9a04eb5b51efc50a70bea51cda0c7924" +checksum = "8e3e04debbb59698c15bacbb6d93584a8c0ca9cc3213cb423d31f760d8843ce5" dependencies = [ "adler2", ] @@ -6191,14 +6669,14 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] name = "native-tls" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dab59f8e050d5df8e4dd87d9206fb6f65a483e20ac9fda365ade4fab353196c" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" dependencies = [ "libc", "log", @@ -6223,7 +6701,7 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee3224f0e8be7c2a1ebc77ef9c3eecb90f55c6594399ee825de964526b3c9056" dependencies = [ - "uuid 1.13.1", + "uuid 1.15.1", ] [[package]] @@ -6254,7 +6732,7 @@ version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "cfg-if", "cfg_aliases 0.1.1", "libc", @@ -6266,7 +6744,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "cfg-if", "cfg_aliases 0.2.1", "libc", @@ -6309,7 +6787,7 @@ version = "6.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "crossbeam-channel", "filetime", "fsevent-sys", @@ -6434,6 +6912,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", + "libm", ] [[package]] @@ -6464,7 +6943,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -6506,9 +6985,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.20.3" +version = "1.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" +checksum = "d75b0bedcc4fe52caa0e03d9f1151a323e4aa5e2d78ba3580400cd3c9e2bc4bc" [[package]] name = "op-alloy-consensus" @@ -6523,7 +7002,7 @@ dependencies = [ "alloy-serde", "derive_more", "serde", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] @@ -6571,11 +7050,11 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.70" +version = "0.10.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61cfb4e166a8bb8c9b55c500bc2308550148ece889be90f609377e58140f42c6" +checksum = "5e14130c6a98cd258fdcb0fb6d744152343ff729cbfcb28c656a9d12b999fbcd" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "cfg-if", "foreign-types", "libc", @@ -6592,7 +7071,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -6603,9 +7082,9 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" -version = "0.9.105" +version = "0.9.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b22d5b84be05a8d6947c7cb71f7c849aa0f112acd4bf51c2a7c1c988ac0a9dc" +checksum = "8bb61ea9811cc39e3c2069f40b8b8e2e70d8569b361f879786cc7ed48b777cdd" dependencies = [ "cc", "libc", @@ -6674,7 +7153,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -6757,14 +7236,14 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] name = "pem" -version = "3.0.4" +version = "3.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e459365e590736a54c3fa561947c84837534b8e9af6fc5bf781307e82658fae" +checksum = "38af38e8470ac9dee3ce1bae1af9c1671fffc44ddfd8bd1d0a3445bf349a8ef3" dependencies = [ "base64 0.22.1", "serde", @@ -6792,7 +7271,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc" dependencies = [ "memchr", - "thiserror 2.0.11", + "thiserror 2.0.12", "ucd-trie", ] @@ -6816,7 +7295,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -6837,7 +7316,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.7.1", + "indexmap 2.8.0", ] [[package]] @@ -6877,7 +7356,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" dependencies = [ "phf_shared", - "rand", + "rand 0.8.5", ] [[package]] @@ -6890,7 +7369,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -6913,11 +7392,11 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.9" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfe2e71e1471fe07709406bf725f710b02927c9c54b2b5b2ec0e8087d97c327d" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" dependencies = [ - "pin-project-internal 1.1.9", + "pin-project-internal 1.1.10", ] [[package]] @@ -6933,13 +7412,13 @@ dependencies = [ [[package]] name = "pin-project-internal" -version = "1.1.9" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e859e6e5bd50440ab63c47e3ebabc90f26251f7c73c3d3e837b74a1cc3fa67" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -6966,9 +7445,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "polyval" @@ -6984,9 +7463,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" +checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" [[package]] name = "portable-atomic-util" @@ -7005,11 +7484,11 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.20" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ - "zerocopy", + "zerocopy 0.8.23", ] [[package]] @@ -7046,12 +7525,12 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.29" +version = "0.2.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6924ced06e1f7dfe3fa48d57b9f74f55d8915f5036121bef647ef4b204895fac" +checksum = "5316f57387668042f561aae71480de936257848f9c43ce528e311d89a07cadeb" dependencies = [ "proc-macro2", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -7079,9 +7558,9 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.2.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" dependencies = [ "toml_edit", ] @@ -7129,14 +7608,14 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] name = "proc-macro2" -version = "1.0.93" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" +checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" dependencies = [ "unicode-ident", ] @@ -7149,7 +7628,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", "version_check", "yansi", ] @@ -7161,7 +7640,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d35f4dc9988d1326b065b4def5e950c3ed727aa03e3151b86cc9e2aec6b03f54" dependencies = [ "futures", - "indexmap 2.7.1", + "indexmap 2.8.0", "nix 0.29.0", "tokio", "tracing", @@ -7170,9 +7649,9 @@ dependencies = [ [[package]] name = "prodash" -version = "29.0.0" +version = "29.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a266d8d6020c61a437be704c5e618037588e1985c7dbb7bf8d265db84cffe325" +checksum = "9ee7ce24c980b976607e2d6ae4aae92827994d23fed71659c3ede3f92528b58b" dependencies = [ "log", "parking_lot", @@ -7197,11 +7676,11 @@ checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50" dependencies = [ "bit-set 0.8.0", "bit-vec 0.8.0", - "bitflags 2.8.0", + "bitflags 2.9.0", "lazy_static", "num-traits", - "rand", - "rand_chacha", + "rand 0.8.5", + "rand_chacha 0.3.1", "rand_xorshift", "regex-syntax 0.8.5", "rusty-fork", @@ -7217,14 +7696,14 @@ checksum = "4ee1c9ac207483d5e7db4940700de86a9aae46ef90c48b57f99fe7edb8345e49" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] name = "prost" -version = "0.13.4" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c0fef6c4230e4ccf618a35c59d7ede15dea37de8427500f50aff708806e42ec" +checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" dependencies = [ "bytes", "prost-derive", @@ -7232,22 +7711,22 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.13.4" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "157c5a9d7ea5c2ed2d9fb8f495b64759f7816c7eaea54ba3978f0d63000162e3" +checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" dependencies = [ "anyhow", - "itertools 0.13.0", + "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] name = "prost-types" -version = "0.13.4" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2f1e56baa61e93533aebc21af4d2134b70f66275e0fcdf3cbe43d77ff7e8fc" +checksum = "52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16" dependencies = [ "prost", ] @@ -7278,7 +7757,7 @@ version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76979bea66e7875e7509c4ec5300112b316af87fa7a252ca91c448b32dfe3993" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "memchr", "pulldown-cmark-escape", "unicase", @@ -7303,12 +7782,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3ed1a693391a16317257103ad06a88c6529ac640846021da7c435a06fffdacd7" dependencies = [ "chrono", - "indexmap 2.7.1", + "indexmap 2.8.0", "newtype-uuid", "quick-xml 0.37.2", "strip-ansi-escapes", - "thiserror 2.0.11", - "uuid 1.13.1", + "thiserror 2.0.12", + "uuid 1.15.1", ] [[package]] @@ -7339,10 +7818,10 @@ dependencies = [ "pin-project-lite", "quinn-proto", "quinn-udp", - "rustc-hash", - "rustls 0.23.22", + "rustc-hash 2.1.1", + "rustls 0.23.23", "socket2", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tracing", ] @@ -7355,13 +7834,13 @@ checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" dependencies = [ "bytes", "getrandom 0.2.15", - "rand", + "rand 0.8.5", "ring", - "rustc-hash", - "rustls 0.23.22", + "rustc-hash 2.1.1", + "rustls 0.23.23", "rustls-pki-types", "slab", - "thiserror 2.0.11", + "thiserror 2.0.12", "tinyvec", "tracing", "web-time", @@ -7369,9 +7848,9 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.9" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c40286217b4ba3a71d644d752e6a0b71f13f1b6a2c5311acfcbe0c2418ed904" +checksum = "e46f3055866785f6b92bc6164b76be02ca8f2eb4b002c0354b28cf4c119e5944" dependencies = [ "cfg_aliases 0.2.1", "libc", @@ -7383,9 +7862,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.38" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] @@ -7413,11 +7892,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", "serde", ] +[[package]] +name = "rand" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", + "zerocopy 0.8.23", +] + [[package]] name = "rand_chacha" version = "0.3.1" @@ -7425,7 +7915,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", ] [[package]] @@ -7437,13 +7937,22 @@ dependencies = [ "getrandom 0.2.15", ] +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.1", +] + [[package]] name = "rand_xorshift" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" dependencies = [ - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -7452,7 +7961,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eabd94c2f37801c20583fc49dd5cd6b0ba68c716787c2dd6ed18571e1e63117b" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "cassowary", "compact_str", "crossterm", @@ -7495,11 +8004,11 @@ checksum = "d3edd4d5d42c92f0a659926464d4cce56b562761267ecf0f469d85b7de384175" [[package]] name = "redox_syscall" -version = "0.5.8" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" +checksum = "0b8c0c260b63a8219631167be35e6a988e9554dbd323f8bd08439c8ed1302bd1" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", ] [[package]] @@ -7513,6 +8022,17 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "redox_users" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b" +dependencies = [ + "getrandom 0.2.15", + "libredox", + "thiserror 2.0.12", +] + [[package]] name = "regex" version = "1.11.1" @@ -7565,9 +8085,9 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" -version = "0.12.12" +version = "0.12.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" +checksum = "989e327e510263980e231de548a33e63d34962d29ae61b467389a1a09627a254" dependencies = [ "async-compression", "base64 0.22.1", @@ -7575,7 +8095,7 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "http 1.2.0", + "http 1.3.1", "http-body 1.0.1", "http-body-util", "hyper 1.6.0", @@ -7592,7 +8112,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.22", + "rustls 0.23.23", "rustls-native-certs 0.8.1", "rustls-pemfile 2.2.0", "rustls-pki-types", @@ -7602,7 +8122,7 @@ dependencies = [ "sync_wrapper", "tokio", "tokio-native-tls", - "tokio-rustls 0.26.1", + "tokio-rustls 0.26.2", "tokio-socks", "tokio-util", "tower 0.5.2", @@ -7626,7 +8146,7 @@ dependencies = [ "dyn-clone", "hkdf", "merlin", - "rand_core", + "rand_core 0.6.4", "revm-interpreter", "revm-precompile", "schnorrkel", @@ -7652,7 +8172,7 @@ dependencies = [ "revm-primitives", "serde", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] @@ -7692,7 +8212,7 @@ dependencies = [ "alloy-eip7702", "alloy-primitives", "auto_impl", - "bitflags 2.8.0", + "bitflags 2.9.0", "bitvec", "c-kzg", "cfg-if", @@ -7725,15 +8245,14 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.8" +version = "0.17.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", "getrandom 0.2.15", "libc", - "spin", "untrusted", "windows-sys 0.52.0", ] @@ -7769,6 +8288,12 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "route-recognizer" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afab94fb28594581f62d981211a9a4d53cc8130bbcbbb89a0440d9b8e81a7746" + [[package]] name = "rpassword" version = "7.3.1" @@ -7792,22 +8317,24 @@ dependencies = [ [[package]] name = "ruint" -version = "1.12.3" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c3cc4c2511671f327125da14133d0c5c5d137f006a1017a16f557bc85b16286" +checksum = "825df406ec217a8116bd7b06897c6cc8f65ffefc15d030ae2c9540acc9ed50b6" dependencies = [ "alloy-rlp", "arbitrary", "ark-ff 0.3.0", "ark-ff 0.4.2", "bytes", - "fastrlp", + "fastrlp 0.3.1", + "fastrlp 0.4.0", "num-bigint", + "num-integer", "num-traits", "parity-scale-codec", "primitive-types", "proptest", - "rand", + "rand 0.8.5", "rlp", "ruint-macro", "serde", @@ -7837,13 +8364,19 @@ version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + [[package]] name = "rustc-hash" version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" dependencies = [ - "rand", + "rand 0.8.5", ] [[package]] @@ -7867,7 +8400,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.25", + "semver 1.0.26", ] [[package]] @@ -7876,10 +8409,23 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", + "errno", + "libc", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustix" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7178faa4b75a30e269c71e61c353ce2748cf3d76f0c44c393f4e60abf49b825" +dependencies = [ + "bitflags 2.9.0", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.9.2", "windows-sys 0.59.0", ] @@ -7897,10 +8443,11 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.22" +version = "0.23.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb9263ab4eb695e42321db096e3b8fbd715a59b154d5c88d82db2175b681ba7" +checksum = "47796c98c480fce5406ef69d1c76378375492c3b0a0de587be0c1d9feb12f395" dependencies = [ + "aws-lc-rs", "log", "once_cell", "ring", @@ -7922,6 +8469,19 @@ dependencies = [ "security-framework 2.11.1", ] +[[package]] +name = "rustls-native-certs" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5" +dependencies = [ + "openssl-probe", + "rustls-pemfile 2.2.0", + "rustls-pki-types", + "schannel", + "security-framework 2.11.1", +] + [[package]] name = "rustls-native-certs" version = "0.8.1" @@ -7961,6 +8521,33 @@ dependencies = [ "web-time", ] +[[package]] +name = "rustls-platform-verifier" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afbb878bdfdf63a336a5e63561b1835e7a8c91524f51621db870169eac84b490" +dependencies = [ + "core-foundation 0.9.4", + "core-foundation-sys", + "jni", + "log", + "once_cell", + "rustls 0.23.23", + "rustls-native-certs 0.7.3", + "rustls-platform-verifier-android", + "rustls-webpki 0.102.8", + "security-framework 2.11.1", + "security-framework-sys", + "webpki-roots", + "winapi", +] + +[[package]] +name = "rustls-platform-verifier-android" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" + [[package]] name = "rustls-webpki" version = "0.101.7" @@ -7977,6 +8564,7 @@ version = "0.102.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" dependencies = [ + "aws-lc-rs", "ring", "rustls-pki-types", "untrusted", @@ -7984,9 +8572,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" +checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" [[package]] name = "rusty-fork" @@ -8006,7 +8594,7 @@ version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2ee1e066dc922e513bda599c6ccb5f3bb2b0ea5870a579448f2622993f0a9a2f" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "cfg-if", "clipboard-win", "fd-lock", @@ -8024,9 +8612,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "salsa20" @@ -8077,7 +8665,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -8100,9 +8688,9 @@ dependencies = [ [[package]] name = "schemars" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" +checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" dependencies = [ "dyn-clone", "schemars_derive", @@ -8112,14 +8700,14 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" +checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -8142,10 +8730,12 @@ dependencies = [ "aead", "arrayref", "arrayvec", + "cfg-if", "curve25519-dalek", "getrandom_or_panic", "merlin", - "rand_core", + "rand_core 0.6.4", + "serde", "serde_bytes", "sha2", "subtle", @@ -8188,9 +8778,9 @@ dependencies = [ [[package]] name = "sdd" -version = "3.0.7" +version = "3.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b07779b9b918cc05650cb30f404d4d7835d26df37c235eded8a6832e2fb82cca" +checksum = "584e070911c7017da6cb2eb0788d09f43d789029b5877d3e5ecc8acf86ceee21" [[package]] name = "sec1" @@ -8212,7 +8802,7 @@ version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9465315bc9d4566e1724f0fffcbcc446268cb522e60f9a27bcded6b19c108113" dependencies = [ - "rand", + "rand 0.8.5", "secp256k1-sys", "serde", ] @@ -8245,10 +8835,11 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "core-foundation 0.9.4", "core-foundation-sys", "libc", + "num-bigint", "security-framework-sys", ] @@ -8258,7 +8849,7 @@ version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "core-foundation 0.10.0", "core-foundation-sys", "libc", @@ -8278,8 +8869,7 @@ dependencies = [ [[package]] name = "seismic-enclave" version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "038ecbb935f63d62ba9590c54f185bb35f1086580566ac4332fc3840c4b585bd" +source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=4a9a812#4a9a81235addc09a92ff20b71963cf41a2f68687" dependencies = [ "aes-gcm", "anyhow", @@ -8287,18 +8877,20 @@ dependencies = [ "byteorder", "bytes", "hkdf", - "http-body-util", - "hyper 0.14.32", + "jsonrpsee", "kbs-types", "once_cell", + "rand 0.9.0", "reqwest", "schnorrkel", "secp256k1", + "seismic-enclave-derive", "serde", "serde_json", "sha2", - "strum 0.25.0", + "strum 0.26.3", "tokio", + "tracing", ] [[package]] @@ -8326,6 +8918,16 @@ dependencies = [ "tokio", ] +[[package]] +name = "seismic-enclave-derive" +version = "0.1.0" +source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=4a9a812#4a9a81235addc09a92ff20b71963cf41a2f68687" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "semver" version = "0.11.0" @@ -8337,9 +8939,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.25" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" dependencies = [ "serde", ] @@ -8353,6 +8955,12 @@ dependencies = [ "pest", ] +[[package]] +name = "send_wrapper" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" + [[package]] name = "send_wrapper" version = "0.6.0" @@ -8361,31 +8969,31 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.217" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] [[package]] name = "serde_bytes" -version = "0.11.15" +version = "0.11.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a" +checksum = "8437fd221bde2d4ca316d61b90e337e9e702b3820b87d63caa9ba6c02bd06d96" dependencies = [ "serde", ] [[package]] name = "serde_derive" -version = "1.0.217" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -8396,16 +9004,16 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] name = "serde_json" -version = "1.0.138" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ - "indexmap 2.7.1", + "indexmap 2.8.0", "itoa", "memchr", "ryu", @@ -8414,9 +9022,9 @@ dependencies = [ [[package]] name = "serde_path_to_error" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" +checksum = "59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a" dependencies = [ "itoa", "serde", @@ -8434,13 +9042,13 @@ dependencies = [ [[package]] name = "serde_repr" -version = "0.1.19" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -8486,7 +9094,7 @@ checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -8595,7 +9203,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ "digest 0.10.7", - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -8616,9 +9224,9 @@ dependencies = [ [[package]] name = "similar-asserts" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f08357795f0d604ea7d7130f22c74b03838c959bdb14adde3142aab4d18a293" +checksum = "b5b441962c817e33508847a22bd82f03a30cff43642dc2fae8b050566121eb9a" dependencies = [ "console", "similar", @@ -8632,7 +9240,7 @@ checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" dependencies = [ "num-bigint", "num-traits", - "thiserror 2.0.11", + "thiserror 2.0.12", "time", ] @@ -8653,9 +9261,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.2" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" dependencies = [ "serde", ] @@ -8701,6 +9309,22 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "soketto" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e859df029d160cb88608f5d7df7fb4753fd20fdfb4de5644f3d8b8440841721" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures", + "http 1.3.1", + "httparse", + "log", + "rand 0.8.5", + "sha1", +] + [[package]] name = "solang-parser" version = "0.3.3" @@ -8726,7 +9350,7 @@ dependencies = [ "either", "num-bigint", "num-rational", - "semver 1.0.25", + "semver 1.0.26", "solar-data-structures", "solar-interface", "solar-macros", @@ -8751,10 +9375,10 @@ checksum = "71d07263243b313296eca18f18eda3a190902dc3284bf67ceff29b8b54dac3e6" dependencies = [ "bumpalo", "index_vec", - "indexmap 2.7.1", + "indexmap 2.8.0", "parking_lot", "rayon", - "rustc-hash", + "rustc-hash 2.1.1", "smallvec", ] @@ -8770,7 +9394,7 @@ dependencies = [ "const-hex", "derive_builder", "dunce", - "itertools 0.13.0", + "itertools 0.14.0", "itoa", "lasso", "match_cfg", @@ -8781,7 +9405,7 @@ dependencies = [ "solar-config", "solar-data-structures", "solar-macros", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", "unicode-width 0.2.0", ] @@ -8794,7 +9418,7 @@ checksum = "970d7c774741f786d62cab78290e47d845b0b9c0c9d094a1642aced1d7946036" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -8804,9 +9428,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e1e2d07fae218aca1b4cca81216e5c9ad7822516d48a28f11e2eaa8ffa5b249" dependencies = [ "alloy-primitives", - "bitflags 2.8.0", + "bitflags 2.9.0", "bumpalo", - "itertools 0.13.0", + "itertools 0.14.0", "memchr", "num-bigint", "num-rational", @@ -8852,14 +9476,14 @@ dependencies = [ "regex", "reqwest", "sanitize-filename", - "semver 1.0.25", + "semver 1.0.26", "serde", "serde_json", "sha2", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "toml_edit", - "uuid 1.13.1", + "uuid 1.15.1", "zip", "zip-extract", ] @@ -8913,9 +9537,9 @@ dependencies = [ [[package]] name = "string_cache_codegen" -version = "0.5.3" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "244292f3441c89febe5b5bdfbb6863aeaf4f64da810ea3050fd927b27b8d92ce" +checksum = "c711928715f1fe0fe509c53b43e993a9a557babc2d0a3567d0a3006f1ac931a0" dependencies = [ "phf_generator", "phf_shared", @@ -8966,7 +9590,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -8979,7 +9603,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -8991,7 +9615,7 @@ dependencies = [ "byteorder", "crunchy", "lazy_static", - "rand", + "rand 0.8.5", "rustc-hex", ] @@ -9003,20 +9627,20 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "svm-rs" -version = "0.5.11" +version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4197826bb07b996788b9860a95a1fe2c1307b2404a8c66f5ba825c42532b7c3c" +checksum = "feb9fc1391b3c05693c79c23845d4abd7c061cdfdf51ae238d4cd9efbb830aa7" dependencies = [ "const-hex", - "dirs 5.0.1", + "dirs 6.0.0", "fs4", "reqwest", - "semver 1.0.25", + "semver 1.0.26", "serde", "serde_json", "sha2", "tempfile", - "thiserror 2.0.11", + "thiserror 2.0.12", "url", "zip", ] @@ -9029,7 +9653,7 @@ checksum = "074faea21171905847a96135b3896e2e0b74373758ca07b96a41c646cc04a8e5" dependencies = [ "build_const", "const-hex", - "semver 1.0.25", + "semver 1.0.26", "serde_json", "svm-rs", ] @@ -9047,9 +9671,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.98" +version = "2.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" +checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" dependencies = [ "proc-macro2", "quote", @@ -9064,7 +9688,7 @@ dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -9084,7 +9708,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -9095,15 +9719,15 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.16.0" +version = "3.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38c246215d7d24f48ae091a2902398798e05d978b24315d6efbc00ede9a8bb91" +checksum = "2c317e0a526ee6120d8dabad239c8dadca62b24b6f168914bbbc8e2fb1f0e567" dependencies = [ "cfg-if", "fastrand", "getrandom 0.3.1", "once_cell", - "rustix", + "rustix 1.0.2", "windows-sys 0.59.0", ] @@ -9131,11 +9755,11 @@ dependencies = [ [[package]] name = "terminal_size" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5352447f921fda68cf61b4101566c0bdb5104eff6804d0678e5227580ab6a4e9" +checksum = "45c6481c4829e4cc63825e62c49186a34538b7b2750b73b266581ffb612fb5ed" dependencies = [ - "rustix", + "rustix 1.0.2", "windows-sys 0.59.0", ] @@ -9160,13 +9784,13 @@ checksum = "8f50febec83f5ee1df3015341d8bd429f2d1cc62bcba7ea2076759d315084683" [[package]] name = "textwrap" -version = "0.16.1" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" +checksum = "c13547615a44dc9c452a8a534638acdf07120d4b6847c8178705da06306a3057" dependencies = [ "smawk", "unicode-linebreak", - "unicode-width 0.1.14", + "unicode-width 0.2.0", ] [[package]] @@ -9180,11 +9804,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" dependencies = [ - "thiserror-impl 2.0.11", + "thiserror-impl 2.0.12", ] [[package]] @@ -9195,18 +9819,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] name = "thiserror-impl" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -9250,9 +9874,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.37" +version = "0.3.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" +checksum = "dad298b01a40a23aac4580b67e3dbedb7cc8402f3592d7f49469de2ea4aecdd8" dependencies = [ "deranged", "itoa", @@ -9267,15 +9891,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +checksum = "765c97a5b985b7c11d7bc27fa927dc4fe6af3a6dfb021d28deb60d3bf51e76ef" [[package]] name = "time-macros" -version = "0.2.19" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" +checksum = "e8093bc3e81c3bc5f7879de09619d06c9a5a5e45ca44dfeeb7225bae38005c5c" dependencies = [ "num-conv", "time-core", @@ -9302,9 +9926,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.8.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" dependencies = [ "tinyvec_macros", ] @@ -9317,9 +9941,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.43.0" +version = "1.44.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e" +checksum = "f382da615b842244d4b8738c82ed1275e6c5dd90c459a30941cd07080b06c91a" dependencies = [ "backtrace", "bytes", @@ -9341,7 +9965,7 @@ checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -9366,11 +9990,11 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.1" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" dependencies = [ - "rustls 0.23.22", + "rustls 0.23.23", "tokio", ] @@ -9406,22 +10030,23 @@ checksum = "edc5f74e248dc973e0dbb7b74c7e0d6fcc301c694ff50049504004ef4d0cdcd9" dependencies = [ "futures-util", "log", - "rustls 0.23.22", + "rustls 0.23.23", "rustls-pki-types", "tokio", - "tokio-rustls 0.26.1", + "tokio-rustls 0.26.2", "tungstenite", "webpki-roots", ] [[package]] name = "tokio-util" -version = "0.7.13" +version = "0.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" +checksum = "6b9590b93e6fcc1739458317cccd391ad3955e2bde8913edf6f95f9e65a8f034" dependencies = [ "bytes", "futures-core", + "futures-io", "futures-sink", "pin-project-lite", "tokio", @@ -9442,7 +10067,7 @@ version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" dependencies = [ - "indexmap 2.7.1", + "indexmap 2.8.0", "serde", "serde_spanned", "toml_datetime", @@ -9460,15 +10085,15 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.23" +version = "0.22.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02a8b472d1a3d7c18e2d61a489aee3453fd9031c33e4f55bd533f4a7adca1bee" +checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" dependencies = [ - "indexmap 2.7.1", + "indexmap 2.8.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.7.1", + "winnow 0.7.4", ] [[package]] @@ -9482,21 +10107,21 @@ dependencies = [ "axum", "base64 0.22.1", "bytes", - "h2 0.4.7", - "http 1.2.0", + "h2 0.4.8", + "http 1.3.1", "http-body 1.0.1", "http-body-util", "hyper 1.6.0", "hyper-timeout", "hyper-util", "percent-encoding", - "pin-project 1.1.9", + "pin-project 1.1.10", "prost", "rustls-native-certs 0.8.1", "rustls-pemfile 2.2.0", "socket2", "tokio", - "tokio-rustls 0.26.1", + "tokio-rustls 0.26.2", "tokio-stream", "tower 0.4.13", "tower-layer", @@ -9519,9 +10144,9 @@ dependencies = [ "futures-core", "futures-util", "indexmap 1.9.3", - "pin-project 1.1.9", + "pin-project 1.1.10", "pin-project-lite", - "rand", + "rand 0.8.5", "slab", "tokio", "tokio-util", @@ -9552,10 +10177,10 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "bytes", "futures-util", - "http 1.2.0", + "http 1.3.1", "http-body 1.0.1", "http-body-util", "http-range-header", @@ -9615,7 +10240,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -9728,11 +10353,11 @@ dependencies = [ "byteorder", "bytes", "data-encoding", - "http 1.2.0", + "http 1.3.1", "httparse", "log", - "rand", - "rustls 0.23.22", + "rand 0.8.5", + "rustls 0.23.23", "rustls-pki-types", "sha1", "thiserror 1.0.69", @@ -9747,9 +10372,9 @@ checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" [[package]] name = "typenum" -version = "1.17.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" [[package]] name = "ucd-trie" @@ -9798,9 +10423,9 @@ checksum = "7eec5d1121208364f6793f7d2e222bf75a915c19557537745b195b253dd64217" [[package]] name = "unicode-ident" -version = "1.0.16" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" [[package]] name = "unicode-linebreak" @@ -9921,9 +10546,9 @@ dependencies = [ [[package]] name = "uuid" -version = "1.13.1" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced87ca4be083373936a67f8de945faa23b6b42384bd5b64434850802c6dccd0" +checksum = "e0f540e3240398cce6128b64ba83fdbdd86129c16a3aa1a3a252efd66eb3d587" dependencies = [ "getrandom 0.3.1", "serde", @@ -10039,7 +10664,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", "wasm-bindgen-shared", ] @@ -10074,7 +10699,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -10160,7 +10785,7 @@ checksum = "8834ddd08f1ce18ea85e4ccbdafaea733851c7dc6afefd50037aea17845a861a" dependencies = [ "miette", "nix 0.29.0", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] @@ -10207,6 +10832,18 @@ dependencies = [ "rustls-pki-types", ] +[[package]] +name = "which" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +dependencies = [ + "either", + "home", + "once_cell", + "rustix 0.38.44", +] + [[package]] name = "which" version = "6.0.3" @@ -10215,7 +10852,7 @@ checksum = "b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f" dependencies = [ "either", "home", - "rustix", + "rustix 0.38.44", "winsafe", ] @@ -10306,8 +10943,8 @@ checksum = "810ce18ed2112484b0d4e15d022e5f598113e220c53e373fb31e67e21670c1ce" dependencies = [ "windows-implement 0.59.0", "windows-interface 0.59.0", - "windows-result 0.3.0", - "windows-strings 0.3.0", + "windows-result 0.3.1", + "windows-strings 0.3.1", "windows-targets 0.53.0", ] @@ -10319,7 +10956,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -10330,7 +10967,7 @@ checksum = "83577b051e2f49a058c308f17f273b570a6a758386fc291b5f6a934dd84e48c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -10341,7 +10978,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -10352,18 +10989,24 @@ checksum = "cb26fd936d991781ea39e87c3a27285081e3c0da5ca0fcbc02d368cc6f52ff01" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] +[[package]] +name = "windows-link" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dccfd733ce2b1753b03b6d3c65edf020262ea35e20ccdf3e288043e6dd620e3" + [[package]] name = "windows-registry" -version = "0.2.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3" dependencies = [ - "windows-result 0.2.0", - "windows-strings 0.1.0", - "windows-targets 0.52.6", + "windows-result 0.3.1", + "windows-strings 0.3.1", + "windows-targets 0.53.0", ] [[package]] @@ -10377,11 +11020,11 @@ dependencies = [ [[package]] name = "windows-result" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d08106ce80268c4067c0571ca55a9b4e9516518eaa1a1fe9b37ca403ae1d1a34" +checksum = "06374efe858fab7e4f881500e6e86ec8bc28f9462c47e5a9941a0142ad86b189" dependencies = [ - "windows-targets 0.53.0", + "windows-link", ] [[package]] @@ -10396,11 +11039,11 @@ dependencies = [ [[package]] name = "windows-strings" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b888f919960b42ea4e11c2f408fadb55f78a9f236d5eef084103c8ce52893491" +checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319" dependencies = [ - "windows-targets 0.53.0", + "windows-link", ] [[package]] @@ -10626,9 +11269,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.1" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86e376c75f4f43f44db463cf729e0d3acbf954d13e22c51e26e4c264b4ab545f" +checksum = "0e97b544156e9bebe1a0ffbc03484fc1ffe3100cbce3ffb17eac35f7cdd7ab36" dependencies = [ "memchr", ] @@ -10645,7 +11288,7 @@ version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", ] [[package]] @@ -10672,7 +11315,7 @@ dependencies = [ "log", "pharos", "rustc_version 0.4.1", - "send_wrapper", + "send_wrapper 0.6.0", "thiserror 1.0.69", "wasm-bindgen", "wasm-bindgen-futures", @@ -10723,7 +11366,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", "synstructure", ] @@ -10733,8 +11376,16 @@ version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ - "byteorder", - "zerocopy-derive", + "zerocopy-derive 0.7.35", +] + +[[package]] +name = "zerocopy" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd97444d05a4328b90e75e503a34bad781f14e28a823ad3557f0750df1ebcbc6" +dependencies = [ + "zerocopy-derive 0.8.23", ] [[package]] @@ -10745,27 +11396,38 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6352c01d0edd5db859a63e2605f4ea3183ddbd15e2c4a9e7d32184df75e4f154" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", ] [[package]] name = "zerofrom" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", "synstructure", ] @@ -10786,7 +11448,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -10808,14 +11470,14 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] name = "zip" -version = "2.2.2" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae9c1ea7b3a5e1f4b922ff856a129881167511563dc219869afe3787fc0c1a45" +checksum = "b280484c454e74e5fff658bbf7df8fdbe7a07c6b2de4a53def232c15ef138f3a" dependencies = [ "arbitrary", "bzip2", @@ -10823,9 +11485,9 @@ dependencies = [ "crossbeam-utils", "displaydoc", "flate2", - "indexmap 2.7.1", + "indexmap 2.8.0", "memchr", - "thiserror 2.0.11", + "thiserror 2.0.12", "zopfli", ] diff --git a/Cargo.toml b/Cargo.toml index 9d05d0d68..7232b8df9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -321,34 +321,36 @@ alloy-sol-types = { git = "https://github.com/SeismicSystems/seismic-alloy-core. alloy-sol-type-parser = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "77693d2" } # seismic-alloy -alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } -alloy-contract = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } -alloy-eips = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } -alloy-genesis = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } -alloy-json-rpc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } -alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } -alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } -alloy-pubsub = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } -alloy-rpc-client = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } -alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } -alloy-rpc-types-trace = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } -alloy-rpc-types-eth = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } -alloy-serde = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } -alloy-signer = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } -alloy-signer-aws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } -alloy-signer-gcp = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } -alloy-signer-ledger = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } -alloy-signer-local = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } -alloy-signer-trezor = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } -alloy-transport = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } -alloy-transport-http = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } -alloy-transport-ipc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } -alloy-transport-ws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } -alloy-node-bindings = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } -alloy-network-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "5de3c63" } +alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } +alloy-contract = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } +alloy-eips = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } +alloy-genesis = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } +alloy-json-rpc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } +alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } +alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } +alloy-pubsub = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } +alloy-rpc-client = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } +alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } +alloy-rpc-types-trace = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } +alloy-rpc-types-eth = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } +alloy-serde = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } +alloy-signer = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } +alloy-signer-aws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } +alloy-signer-gcp = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } +alloy-signer-ledger = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } +alloy-signer-local = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } +alloy-signer-trezor = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } +alloy-transport = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } +alloy-transport-http = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } +alloy-transport-ipc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } +alloy-transport-ws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } +alloy-node-bindings = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } +alloy-network-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } foundry-compilers = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } foundry-compilers-artifacts = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } foundry-compilers-artifacts-solc = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } foundry-compilers-artifacts-vyper = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } foundry-compilers-core = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } + +seismic-enclave = { git = "https://github.com/SeismicSystems/seismic-enclave.git", rev = "4a9a812"} \ No newline at end of file diff --git a/crates/anvil/core/Cargo.toml b/crates/anvil/core/Cargo.toml index d91717119..400455044 100644 --- a/crates/anvil/core/Cargo.toml +++ b/crates/anvil/core/Cargo.toml @@ -41,13 +41,6 @@ bytes.workspace = true rand.workspace = true thiserror.workspace = true -anyhow = "1.0" -once_cell = "1" -secp256k1 = { version = "0.29", default-features = false, features = [ - "global-context", - "recovery", -] } - seismic-enclave.workspace = true [features] diff --git a/crates/anvil/core/src/eth/transaction/crypto.rs b/crates/anvil/core/src/eth/transaction/crypto.rs deleted file mode 100644 index f464cf3e7..000000000 --- a/crates/anvil/core/src/eth/transaction/crypto.rs +++ /dev/null @@ -1,154 +0,0 @@ -use alloy_consensus::{transaction::TxSeismic, Signed}; -use alloy_primitives::{FixedBytes, SignatureError}; -use once_cell::sync::Lazy; -use secp256k1::{ecdh::SharedSecret, PublicKey, SecretKey}; -use seismic_enclave::{ - aes_decrypt, aes_encrypt, derive_aes_key, get_sample_secp256k1_pk, get_sample_secp256k1_sk, - nonce::Nonce, -}; - -static ENCRYPTION_KEY: Lazy = Lazy::new(|| get_sample_secp256k1_sk()); -static PUBLIC_KEY: Lazy = Lazy::new(|| get_sample_secp256k1_pk()); - -pub fn encrypt( - secret_key: &SecretKey, - public_key: &PublicKey, - plaintext: &[u8], - nonce: impl Into, -) -> anyhow::Result> { - if plaintext.is_empty() { - // in practice if they send empty plaintext, - // they're sending a normal tx (e.g. just send native token). - // we probably want to allow this - return Ok(vec![]); - } - let shared_secret = SharedSecret::new(public_key, secret_key); - let aes_key = derive_aes_key(&shared_secret) - .map_err(|e| anyhow::anyhow!("Error deriving AES key: {:?}", e))?; - aes_encrypt(&aes_key, plaintext, nonce) -} - -pub fn decrypt( - secret_key: &SecretKey, - public_key: &PublicKey, - ciphertext: &[u8], - nonce: impl Into, -) -> anyhow::Result> { - if ciphertext.is_empty() { - // in practice if they send empty plaintext, - // they're sending a normal tx (e.g. just send native token). - // we probably want to allow this - return Ok(vec![]); - } - let shared_secret = SharedSecret::new(public_key, secret_key); - let aes_key = derive_aes_key(&shared_secret) - .map_err(|e| anyhow::anyhow!("Error deriving AES key: {:?}", e))?; - aes_decrypt(&aes_key, ciphertext, nonce) -} - -pub fn server_decrypt( - public_key: &PublicKey, - ciphertext: &[u8], - nonce: impl Into, -) -> anyhow::Result> { - decrypt(&ENCRYPTION_KEY, public_key, ciphertext, nonce) -} - -pub fn server_encrypt( - public_key: &PublicKey, - plaintext: &[u8], - nonce: impl Into, -) -> anyhow::Result> { - encrypt(&ENCRYPTION_KEY, public_key, plaintext, nonce) -} - -pub fn client_decrypt( - secret_key: &SecretKey, - ciphertext: &[u8], - nonce: impl Into, -) -> anyhow::Result> { - decrypt(secret_key, &PUBLIC_KEY, ciphertext, nonce) -} - -pub fn client_encrypt( - secret_key: &SecretKey, - plaintext: &[u8], - nonce: impl Into, -) -> anyhow::Result> { - encrypt(secret_key, &PUBLIC_KEY, plaintext, nonce) -} - -pub fn secret_key(fixed_bytes: &FixedBytes<32>) -> SecretKey { - SecretKey::from_slice(&fixed_bytes.to_vec()[..]).unwrap() -} - -#[derive(Debug)] -pub enum RecoverPublicKeyError { - Secp256K1(secp256k1::Error), - SignatureError(SignatureError), -} - -impl From for RecoverPublicKeyError { - fn from(value: SignatureError) -> Self { - RecoverPublicKeyError::SignatureError(value) - } -} - -impl From for RecoverPublicKeyError { - fn from(value: secp256k1::Error) -> Self { - RecoverPublicKeyError::Secp256K1(value) - } -} - -/// Recover the public key from a signed seismic transaction -pub fn recover_public_key(tx: &Signed) -> Result { - let sighash = tx.signature_hash(); - let verifying_key = tx.signature().recover_from_prehash(&sighash)?; - let pk_bytes = verifying_key.to_sec1_bytes(); - let public_key = secp256k1::PublicKey::from_slice(&pk_bytes)?; - Ok(public_key) -} - -#[cfg(test)] -mod tests { - use super::*; - use secp256k1::ecdh::shared_secret_point; - use std::str::FromStr; - - #[test] - fn test_aes_keygen() { - let pk1 = secp256k1::PublicKey::from_str( - // network pk - "028e76821eb4d77fd30223ca971c49738eb5b5b71eabe93f96b348fdce788ae5a0", - ) - .unwrap(); - let sk1 = secp256k1::SecretKey::from_str( - // user sk - "a30363336e1bb949185292a2a302de86e447d98f3a43d823c8c234d9e3e5ad77", - ) - .unwrap(); - let pt1 = shared_secret_point(&pk1, &sk1); - let ss1 = SharedSecret::new(&pk1, &sk1); - let aes1 = derive_aes_key(&ss1).unwrap(); - - let pk2 = secp256k1::PublicKey::from_str( - // user pk - "025f210a5daaca346fa1fd8d6ea36e813e756ea34659fe42c757de4e6ed1d0903c", - ) - .unwrap(); - let sk2 = secp256k1::SecretKey::from_str( - // network sk - "311d54d3bf8359c70827122a44a7b4458733adce3c51c6b59d9acfce85e07505", - ) - .unwrap(); - let pt2 = shared_secret_point(&pk2, &sk2); - let ss2 = SharedSecret::new(&pk2, &sk2); - let aes2 = derive_aes_key(&ss2).unwrap(); - - assert_eq!(pt1, pt2); - assert_eq!(ss1, ss2); - assert_eq!(aes1, aes2); - // let version = (pt1[63] & 0x01) | 0x02; - // println!("version = {}", version); - } -} diff --git a/crates/anvil/core/src/eth/transaction/mod.rs b/crates/anvil/core/src/eth/transaction/mod.rs index 99f68b742..5bdcb508e 100644 --- a/crates/anvil/core/src/eth/transaction/mod.rs +++ b/crates/anvil/core/src/eth/transaction/mod.rs @@ -4,7 +4,7 @@ use crate::eth::transaction::optimism::DepositTransaction; use alloy_consensus::{ transaction::{ eip4844::{TxEip4844, TxEip4844Variant, TxEip4844WithSidecar}, - TxEip7702, TxSeismic, + TxEip7702, TxSeismic, TxSeismicElements, }, Receipt, ReceiptEnvelope, ReceiptWithBloom, Signed, Transaction, TxEip1559, TxEip2930, TxEnvelope, TxLegacy, TxReceipt, Typed2718, @@ -30,7 +30,7 @@ use revm::{ interpreter::InstructionResult, primitives::{OptimismFields, TxEnv}, }; -use secp256k1::PublicKey; +use seismic_enclave::MockEnclaveClient; use serde::{Deserialize, Serialize}; use std::{ fmt::Debug, @@ -38,7 +38,6 @@ use std::{ ops::{Deref, Mul}, }; -pub mod crypto; pub mod optimism; pub trait SeismicCompatible: @@ -80,8 +79,7 @@ pub fn transaction_request_to_typed( access_list, sidecar, transaction_type, - encryption_pubkey, - message_version, + seismic_elements, .. }, other, @@ -101,11 +99,9 @@ pub fn transaction_request_to_typed( is_system_transaction: other.get_deserialized::("isSystemTx")?.ok()?, input: input.into_input().unwrap_or_default(), })); - } else if transaction_type == Some(TxSeismic::TX_TYPE) { - let encryption_pubkey = match encryption_pubkey { - Some(epk) => epk, - None => panic!("Seismic transaction is missing 'encryption_pubkey' field"), - }; + } + + if let Some(seismic_elements) = seismic_elements { return Some(TypedTransactionRequest::Seismic(TxSeismic { nonce: nonce.unwrap_or_default(), gas_price: gas_price.unwrap_or_default(), @@ -114,10 +110,10 @@ pub fn transaction_request_to_typed( value: value.unwrap_or_default(), chain_id: chain_id.unwrap_or_default(), input: input.input.unwrap_or_default(), - encryption_pubkey, - message_version: message_version.unwrap_or(0), + seismic_elements, })); } + match ( transaction_type, gas_price, @@ -618,18 +614,17 @@ impl PendingTransaction { value, chain_id, input, - encryption_pubkey, - message_version: _, + seismic_elements, } = &tx.tx(); - // these two have already been validated in TransactionValidator, - // so we simply unwrap here - let public_key = PublicKey::from_slice(encryption_pubkey.as_slice()).unwrap(); - let data = crypto::server_decrypt(&public_key, &input.as_ref(), *nonce).unwrap(); TxEnv { caller, transact_to: transact_to(&to), - data: Bytes::from(data), + // these two have already been validated in TransactionValidator, + // so we simply unwrap here + data: seismic_elements + .server_decrypt(&MockEnclaveClient::new(), input) + .expect("failed to decrypt seismic elements"), chain_id: Some(*chain_id), nonce: Some(*nonce), value: *value, @@ -690,8 +685,7 @@ impl TryFrom for TransactionRequest { nonce: Some(essentials.nonce), chain_id: essentials.chain_id, transaction_type: tx_type, - encryption_pubkey: value.encryption_pubkey(), - message_version: value.message_version(), + seismic_elements: value.seismic_elements(), ..Default::default() }) } @@ -1104,16 +1098,9 @@ impl TypedTransaction { } } - pub fn encryption_pubkey(&self) -> Option { + pub fn seismic_elements(&self) -> Option { match self { - Self::Seismic(tx) => Some(tx.tx().encryption_pubkey), - _ => None, - } - } - - pub fn message_version(&self) -> Option { - match self { - Self::Seismic(tx) => Some(tx.tx().message_version), + Self::Seismic(tx) => Some(tx.tx().seismic_elements), _ => None, } } @@ -1658,8 +1645,7 @@ pub fn convert_to_anvil_receipt(receipt: AnyTransactionReceipt) -> Option alloy_consensus::transaction::EncryptionPublicKey { - get_sample_secp256k1_pk().serialize().into() - } - #[test] fn test_seismic_tx_encoding() { let decrypted_input = Bytes::from_str("0xfc3c2cf4943c327f19af0efaf3b07201f608dd5c8e3954399a919b72588d3872b6819ac3d13d3656cbb38833a39ffd1e73963196a1ddfa9e4a5d595fdbebb875").unwrap(); @@ -1911,8 +1893,11 @@ mod tests { gas_limit: 100000, to: Address::from_str("d3e8763675e4c425df46cc3b5c0f6cbdac396046").unwrap().into(), value: U256::from(1000000000000000u64), - encryption_pubkey: test_pubkey(), - message_version: 0, + seismic_elements: TxSeismicElements { + encryption_pubkey: TxSeismicElements::get_rand_encryption_keypair().public_key(), + encryption_nonce: TxSeismicElements::get_rand_encryption_nonce(), + message_version: 0, + }, input: decrypted_input.clone(), }; @@ -1931,39 +1916,9 @@ mod tests { let mut encoded_tx = Vec::new(); signed_tt.encode(&mut encoded_tx); - let encoded_bytes = Bytes::from(encoded_tx); - let reth_encoded = Bytes::from_str("0xb8d54af8d2827a6902843b9aca00830186a094d3e8763675e4c425df46cc3b5c0f6cbdac39604687038d7ea4c68000a1028e76821eb4d77fd30223ca971c49738eb5b5b71eabe93f96b348fdce788ae5a080b840fc3c2cf4943c327f19af0efaf3b07201f608dd5c8e3954399a919b72588d3872b6819ac3d13d3656cbb38833a39ffd1e73963196a1ddfa9e4a5d595fdbebb87501a01e7a28fd3647ab10173d940fe7e561f7b06185d3d6a93b83b2f210055dd27f04a0779d1157c4734323923df2f41073ecb016719a577ce774ef4478c9b443caacb3").unwrap(); - assert_eq!(reth_encoded, encoded_bytes); - } - - #[test] - fn test_seismic_tx_decoding() { - // from viem sendRawTransaction - let encoded = Bytes::from_str("0x4af8d2827a6902843b9aca00830186a094d3e8763675e4c425df46cc3b5c0f6cbdac39604687038d7ea4c68000a1028e76821eb4d77fd30223ca971c49738eb5b5b71eabe93f96b348fdce788ae5a080b840fc3c2cf4943c327f19af0efaf3b07201f608dd5c8e3954399a919b72588d3872b6819ac3d13d3656cbb38833a39ffd1e73963196a1ddfa9e4a5d595fdbebb87501a0a4eae372fd9bd79c17867aa75d905aa90fc2b54deffd176e9cda1de19303a8e6a041ffd254632c4fe0a19f4004a0753a8560c18044dd890913c1d46274824bd6ed").unwrap(); - let mut buf = encoded.as_ref(); + let mut buf = encoded_tx.as_ref(); let decoded_tx = TypedTransaction::decode_2718(&mut buf).unwrap(); - let expected_sighash = FixedBytes::<32>::from_str( - "d63bc3bdfd863663ce38725a926fdfcb0033b95f55ad434ff058bdc1f62e01cc", - ) - .unwrap(); - match &decoded_tx { - TypedTransaction::Seismic(tx) => { - assert_eq!(tx.signature_hash(), expected_sighash); - assert_eq!( - tx.tx().encryption_pubkey, - alloy_consensus::transaction::EncryptionPublicKey::from_str( - "0x028e76821eb4d77fd30223ca971c49738eb5b5b71eabe93f96b348fdce788ae5a0" - ) - .unwrap() - ); - } - _ => unreachable!(), - }; - - let sender = decoded_tx.recover().unwrap(); - let expected_sender = - Address::from_str("f39fd6e51aad88f6f4ce6ab8827279cfffb92266").unwrap(); - assert_eq!(sender, expected_sender); + assert_eq!(decoded_tx, signed_tt); } } diff --git a/crates/anvil/src/eth/api.rs b/crates/anvil/src/eth/api.rs index b117f9ef3..f65584bcd 100644 --- a/crates/anvil/src/eth/api.rs +++ b/crates/anvil/src/eth/api.rs @@ -88,6 +88,7 @@ use foundry_evm::{ use futures::channel::{mpsc::Receiver, oneshot}; use parking_lot::RwLock; use revm::primitives::Bytecode; +use seismic_enclave::{rpc::SyncEnclaveApiClient, MockEnclaveClient}; use std::{future::Future, sync::Arc, time::Duration}; use yansi::Paint; @@ -163,10 +164,12 @@ impl EthApi { pub async fn execute(&self, request: EthRequest) -> ResponseResult { trace!(target: "rpc::api", "executing eth request"); match request { - EthRequest::SeismicGetTeePublicKey(()) => Ok(Bytes::from(alloy_primitives::hex!( - "028e76821eb4d77fd30223ca971c49738eb5b5b71eabe93f96b348fdce788ae5a0" - ))) - .to_rpc_result(), + EthRequest::SeismicGetTeePublicKey(()) => { + let result = MockEnclaveClient::new() + .get_public_key() + .map_err(|e| BlockchainError::Internal(e.to_string())); + result.to_rpc_result() + } EthRequest::Web3ClientVersion(()) => self.client_version().to_rpc_result(), EthRequest::Web3Sha3(content) => self.sha3(content).to_rpc_result(), EthRequest::EthGetAccount(addr, block) => { @@ -1152,7 +1155,7 @@ impl EthApi { user_provided_from.map_or(false, |addr| !addr.is_zero()); if tried_to_spoof_from { - // We’ll embed the original error’s text (which may include + // We'll embed the original error's text (which may include // revert data) plus a multiline explanation: Err(BlockchainError::Message(format!("Unsigned call failed: {orig}. The call included a non-zero 'from' address, which is not allowed in unsigned calls. If you need to set 'from', please use a signed call.", orig = original_err diff --git a/crates/anvil/src/eth/backend/mem/mod.rs b/crates/anvil/src/eth/backend/mem/mod.rs index 19a4f6472..6cdfab064 100644 --- a/crates/anvil/src/eth/backend/mem/mod.rs +++ b/crates/anvil/src/eth/backend/mem/mod.rs @@ -68,7 +68,7 @@ use alloy_trie::{proof::ProofRetainer, HashBuilder, Nibbles}; use anvil_core::eth::{ block::{Block, BlockInfo}, transaction::{ - crypto, optimism::DepositTransaction, DepositReceipt, MaybeImpersonatedTransaction, + optimism::DepositTransaction, DepositReceipt, MaybeImpersonatedTransaction, PendingTransaction, ReceiptResponse, TransactionInfo, TypedReceipt, TypedTransaction, }, wallet::{Capabilities, DelegationCapability, WalletCapabilities}, @@ -102,6 +102,7 @@ use revm::{ ResultAndState, }, }; +use seismic_enclave::MockEnclaveClient; use std::{ collections::BTreeMap, io::{Read, Write}, @@ -112,8 +113,6 @@ use std::{ use storage::{Blockchain, MinedTransaction, DEFAULT_HISTORY_LIMIT}; use tokio::sync::RwLock as AsyncRwLock; -use secp256k1::PublicKey; - pub mod cache; pub mod fork_db; pub mod in_memory_db; @@ -1378,11 +1377,8 @@ impl Backend { access_list, blob_versioned_hashes, authorization_list, - nonce, sidecar: _, chain_id: _, - transaction_type: _, - encryption_pubkey, .. // Rest of the gas fees related fields are taken from `fee_details` }, .. @@ -1416,20 +1412,13 @@ impl Backend { let to = to.as_ref().and_then(TxKind::to); let blob_hashes = blob_versioned_hashes.unwrap_or_default(); - let mut data = input.into_input().unwrap_or_default(); - - if request.inner.is_seismic() && !data.is_empty() { - let nonce = nonce.expect("nonce is required for seismic transactions"); - let encryption_pubkey = - encryption_pubkey.expect("encryption pubkey is required for seismic transactions"); - - let public_key = PublicKey::from_slice(encryption_pubkey.as_slice()) - .expect("failed to parse public key from bytes"); - data = Bytes::from( - crypto::server_decrypt(&public_key, &data.as_ref(), nonce) - .expect("Failed to decrypt seismic tx"), - ); - } + let data = input.into_input().unwrap_or_default(); + let data = match request.inner.seismic_elements { + Some(seismic_elements) => seismic_elements + .server_encrypt(&MockEnclaveClient::new(), &data) + .expect("failed to encrypt seismic elements"), + None => data, + }; env.tx = TxEnv { @@ -1516,41 +1505,26 @@ impl Backend { fee_details: FeeDetails, block_env: BlockEnv, ) -> Result<(InstructionResult, Option, u128, State), BlockchainError> { - let nonce = request.nonce.unwrap_or_default(); - let is_seismic_tx = request.inner.is_seismic(); - let encryption_pubkey = match (is_seismic_tx, request.encryption_pubkey) { - (false, _) => { - warn!("Non-seismic tx passed to seismic_call. Likely a bug"); - None - } - (true, Some(encryption_pubkey)) => { - let pk_res = PublicKey::from_slice(encryption_pubkey.as_slice()); - let pk = pk_res.map_err(|_| { - BlockchainError::Message("Failed to parse encryption public key".to_string()) - })?; - Some(pk) - } - (true, None) => { - return Err(BlockchainError::Message( - "Encryption pubkey is required for seismic transactions".to_string(), - )); - } - }; - + let seismic_elements = request.inner.seismic_elements; let (exit_reason, out, gas_used, state) = self.call_with_state(state, request, fee_details, block_env)?; - if !is_seismic_tx || out.is_none() { - return Ok((exit_reason, out, gas_used, state)); - } + let output_data = out + .map(|plaintext_output| match seismic_elements { + Some(seismic_elements) => seismic_elements + .server_encrypt(&MockEnclaveClient::new(), &plaintext_output.data()) + .map_err(|e| { + BlockchainError::Message(format!("Failed to encrypt output: {}", e)) + }) + .map(|ciphertext| match plaintext_output { + Output::Call(_data) => Output::Call(ciphertext), + Output::Create(_data, address) => Output::Create(ciphertext, address), + }), + None => Ok(plaintext_output), + }) + .transpose()?; - let encrypted = anvil_core::eth::transaction::crypto::server_encrypt( - &encryption_pubkey.unwrap(), - out.unwrap().data().as_ref(), - nonce, - ) - .map_err(|e| BlockchainError::Message(format!("Failed to encrypt output: {}", e)))?; - Ok((exit_reason, Some(Output::Call(Bytes::from(encrypted))), gas_used as u128, state)) + Ok((exit_reason, output_data, gas_used as u128, state)) } pub async fn call_with_tracing( @@ -2943,22 +2917,14 @@ impl TransactionValidator for Backend { if let TypedTransaction::Seismic(seismic_tx) = &tx.transaction { // check that decryption works before we create tx env for it let inner = seismic_tx.tx(); - let public_key = - PublicKey::from_slice(inner.encryption_pubkey.as_slice()).map_err(|_e| { + let _decrypted_data = inner + .seismic_elements + .server_decrypt(&MockEnclaveClient::new(), &inner.input) + .map_err(|_e| { InvalidTransactionError::SeismicDecryptionFailed(format!( - "Failed to parse encryption_pubkey" + "Failed to decrypt seismic calldata" )) })?; - let _decrypted_data = anvil_core::eth::transaction::crypto::server_decrypt( - &public_key, - &inner.input.as_ref(), - inner.nonce, - ) - .map_err(|_e| { - InvalidTransactionError::SeismicDecryptionFailed(format!( - "Failed to decrypt seismic calldata" - )) - })?; } Ok(()) diff --git a/crates/anvil/tests/it/revert.rs b/crates/anvil/tests/it/revert.rs index 2b658fbee..ee352c897 100644 --- a/crates/anvil/tests/it/revert.rs +++ b/crates/anvil/tests/it/revert.rs @@ -1,9 +1,8 @@ use crate::abi::VendingMachine; -use alloy_consensus::TxSeismic; use alloy_network::TransactionBuilder; -use alloy_primitives::{bytes, Address, Bytes, TxKind, U256}; +use alloy_primitives::{bytes, U256}; use alloy_provider::{Provider, SeismicSignedProvider, SendableTx}; -use alloy_rpc_types::{TransactionInput, TransactionRequest}; +use alloy_rpc_types::TransactionRequest; use alloy_serde::WithOtherFields; use alloy_sol_types::sol; use anvil::{spawn, NodeConfig}; diff --git a/crates/anvil/tests/it/seismic.rs b/crates/anvil/tests/it/seismic.rs index 155677f24..5efaecd5f 100644 --- a/crates/anvil/tests/it/seismic.rs +++ b/crates/anvil/tests/it/seismic.rs @@ -1,44 +1,27 @@ -use alloy_consensus::{transaction::TxSeismic, TxEnvelope}; +use alloy_consensus::{ + transaction::{TxSeismic, TxSeismicElements}, + TxEnvelope, +}; use alloy_dyn_abi::EventExt; use alloy_eips::eip712::TypedDataRequest; use alloy_json_abi::{Event, EventParam}; -use alloy_network::{Ethereum, EthereumWallet, ReceiptResponse, TransactionBuilder}; +use alloy_network::{Ethereum, EthereumWallet, TransactionBuilder}; use alloy_primitives::{ aliases::{B96, U96}, hex::{self, FromHex}, - Address, Bytes, FixedBytes, IntoLogData, TxKind, B256, U256, + Bytes, IntoLogData, TxKind, B256, U256, }; use alloy_provider::{ test_utils, Provider, SeismicSignedProvider, SeismicUnsignedProvider, SendableTx, }; use alloy_rpc_types::{SeismicCallRequest, TransactionInput, TransactionRequest}; -use alloy_serde::{OtherFields, WithOtherFields}; use alloy_signer_local::PrivateKeySigner; use alloy_sol_types::{sol, SolCall, SolValue}; -use anvil::{eth::EthApi, spawn, NodeConfig}; -use anvil_core::eth::transaction::crypto; -use foundry_common::provider::RetryProvider; +use anvil::{spawn, NodeConfig}; use secp256k1::{PublicKey, SecretKey}; -use seismic_enclave::{ - aes_decrypt, ecdh_decrypt, ecdh_encrypt, get_sample_secp256k1_pk, get_sample_secp256k1_sk, -}; -use serde::{Deserialize, Serialize}; +use seismic_enclave::{aes_decrypt, ecdh_decrypt, ecdh_encrypt}; use std::fs; -/// Seismic specific transaction field(s) -#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)] -struct SeismicTransactionFields { - /// Encryption public key - #[serde(rename = "encryptionPubkey")] - pub encryption_pubkey: Bytes, -} - -impl From for OtherFields { - fn from(value: SeismicTransactionFields) -> Self { - serde_json::to_value(value).unwrap().try_into().unwrap() - } -} - // common utils pub const TEST_PRECOMPILES_BYTECODE_PATH: &str = "/tests/it/seismic_precompiles_test_bytecode.txt"; pub const PRECOMPILES_TEST_SET_AES_KEY_SELECTOR: &str = "a0619040"; // setAESKey(suint256) @@ -99,7 +82,7 @@ pub async fn get_unsigned_seismic_tx_request( let encryption_sk = get_sk(signer); let encryption_pk = get_pk(signer); - let encrypted_input = ecdh_encrypt(&pk, &encryption_sk, plaintext.to_vec(), nonce).unwrap(); + let encrypted_input = ecdh_encrypt(&pk, &encryption_sk, &plaintext, nonce).unwrap(); TransactionRequest { from: Some(signer.address()), @@ -111,9 +94,11 @@ pub async fn get_unsigned_seismic_tx_request( chain_id: Some(chain_id), input: TransactionInput { input: Some(Bytes::from(encrypted_input)), data: None }, transaction_type: Some(TxSeismic::TX_TYPE), - encryption_pubkey: Some(alloy_consensus::transaction::EncryptionPublicKey::from( - encryption_pk.serialize(), - )), + seismic_elements: Some(TxSeismicElements { + encryption_pubkey: encryption_pk, + encryption_nonce: nonce, + ..Default::default() + }), ..Default::default() } } @@ -132,9 +117,9 @@ pub async fn get_signed_seismic_tx_typed_data( chain_id: u64, plaintext: Bytes, ) -> TypedDataRequest { - let tx = get_unsigned_seismic_tx_request(signer, pk, nonce, to, chain_id, plaintext) - .await - .with_message_version(2); //message version makes it a typed data + let tx = get_unsigned_seismic_tx_request(signer, pk, nonce, to, chain_id, plaintext).await; + tx.seismic_elements.unwrap().message_version = 2; + let signed = sign_tx(signer.clone(), tx).await; match signed { @@ -161,8 +146,7 @@ async fn test_seismic_transaction_rpc() { let unsigned_provider = SeismicUnsignedProvider::new(reqwest::Url::parse(handle.http_endpoint().as_str()).unwrap()); let deployer = handle.dev_accounts().next().unwrap(); - let network_pubkey = - PublicKey::from_slice(&provider.get_tee_pubkey().await.unwrap().0).unwrap(); + let network_pubkey = provider.get_tee_pubkey().await.unwrap(); let plaintext_bytecode = test_utils::ContractTestContext::get_deploy_input_plaintext(); // send a send_raw_transaction bytes @@ -247,122 +231,17 @@ async fn test_seismic_transaction_rpc() { ) .await .unwrap(); + let decrypted = ecdh_decrypt( &network_pubkey, &get_sk(&signer), - res.to_vec(), + &res, provider.get_transaction_count(deployer).await.unwrap(), ) .unwrap(); assert_eq!(Bytes::from(decrypted), test_utils::ContractTestContext::get_code()); } -// Helpful type alias for the receipt you retrieve -type SeismicReceipt = WithOtherFields< - alloy_rpc_types::TransactionReceipt>, ->; - -// 1. Deploy a contract from bytecode. Returns its deployed address. -async fn deploy_contract( - api: &EthApi, - provider: &RetryProvider, - deployer: Address, - bytecode: Bytes, -) -> Address { - let deploy_tx = TransactionRequest::default().from(deployer).with_deploy_code(bytecode); - let deploy_tx = WithOtherFields::new(deploy_tx); - - let pending = provider.send_transaction(deploy_tx).await.unwrap(); - api.mine_one().await; - - let receipt = provider - .get_transaction_receipt(pending.tx_hash().clone()) - .await - .unwrap() - .expect("No deployment receipt found"); - - assert!(receipt.contract_address.is_some(), "Contract address missing in receipt"); - assert!(receipt.status(), "Contract deployment failed"); - - receipt.contract_address.unwrap() -} - -// 2. Sends an encrypted transaction, mines a block, and returns the receipt. -async fn send_encrypted_tx( - api: &EthApi, - provider: &RetryProvider, - from: Address, - to: Address, - encryption_sk: &SecretKey, - encryption_pk: Bytes, - unencrypted_data: &[u8], - encryption_nonce: u64, -) -> SeismicReceipt { - let encrypted_input = crypto::client_encrypt(encryption_sk, unencrypted_data, encryption_nonce) - .expect("Encryption failed"); - - let nonce = provider.get_transaction_count(from).await.unwrap(); - let tx = TransactionRequest::default() - .transaction_type(TxSeismic::TX_TYPE) - .with_from(from) - .with_to(to) - .with_nonce(nonce) - .with_gas_limit(410000) - .with_chain_id(31337) - .with_input(encrypted_input); - - let seismic_tx = WithOtherFields { - inner: tx, - other: SeismicTransactionFields { encryption_pubkey: encryption_pk }.into(), - }; - - let pending = provider.send_transaction(seismic_tx).await.unwrap(); - api.mine_one().await; - - let maybe_receipt: Option = - provider.get_transaction_receipt(pending.tx_hash().clone()).await.unwrap(); - - let receipt = maybe_receipt.expect("No transaction receipt returned"); - assert!(receipt.status(), "Encrypted transaction failed"); - receipt -} - -// 3. Helper to build the final “call” with encryption for read-only methods (e.g. your decrypt). -async fn seismic_read_call( - api: &EthApi, - provider: &RetryProvider, - from: Address, - to: Address, - encryption_sk: &SecretKey, - encryption_pk_write_tx: FixedBytes<33>, - unencrypted_data: &[u8], - encryption_nonce: u64, -) -> Bytes { - let encrypted_call = crypto::client_encrypt(encryption_sk, unencrypted_data, encryption_nonce) - .expect("Encryption for read call failed"); - - let nonce = provider.get_transaction_count(from).await.unwrap(); - let mut tx = TransactionRequest::default() - .transaction_type(TxSeismic::TX_TYPE as u8) - .with_from(from) - .with_to(to) - .with_nonce(nonce) - .with_gas_limit(410000) - .with_chain_id(31337) - .with_input(encrypted_call); - - tx.set_encryption_pubkey(encryption_pk_write_tx); - - let seismic_tx = WithOtherFields::new(tx); - - // The signing step - let transaction = api.sign_transaction(seismic_tx).await.unwrap(); - let final_call = SeismicCallRequest::Bytes(Bytes::from_hex(transaction).unwrap()); - - // Off-chain call - api.call(final_call, None, None).await.unwrap() -} - // Actual contract being tested: // https://github.com/SeismicSystems/early-builds/blob/main/encrypted_logs/src/end-to-end-mvp/EncryptedLogs.sol #[tokio::test(flavor = "multi_thread")] @@ -370,19 +249,32 @@ async fn test_seismic_precompiles_end_to_end() { // Spin up node, get provider & deployer let (api, handle) = spawn(NodeConfig::test()).await; api.anvil_set_auto_mine(false).await.unwrap(); - let provider = handle.http_provider(); + let provider = SeismicSignedProvider::new( + EthereumWallet::new(handle.dev_wallets().next().unwrap().clone()), + reqwest::Url::parse(handle.http_endpoint().as_str()).unwrap(), + ); let deployer = handle.dev_accounts().next().unwrap(); // 1. Deploy test contract let bytecode = Bytes::from(load_bytecode_from_file(TEST_PRECOMPILES_BYTECODE_PATH)); - let contract_addr = deploy_contract(&api, &provider, deployer, bytecode).await; + let contract_addr = provider + .send_transaction( + TransactionRequest::default() + .with_from(deployer) + .with_kind(TxKind::Create) + .with_input(bytecode), + ) + .await + .unwrap() + .get_receipt() + .await + .unwrap() + .contract_address + .unwrap(); // Prepare addresses & keys let accounts: Vec<_> = handle.dev_wallets().collect(); let from = accounts[0].address(); - let encryption_sk = get_sample_secp256k1_sk(); - let encryption_pk = Bytes::from(get_sample_secp256k1_pk().serialize()); - let encryption_pk_write_tx = FixedBytes::<33>::from(get_sample_secp256k1_pk().serialize()); let private_key = B256::from_hex("7e34abdcd62eade2e803e0a8123a0015ce542b380537eff288d6da420bcc2d3b").unwrap(); @@ -390,17 +282,18 @@ async fn test_seismic_precompiles_end_to_end() { // 2. Tx #1: Set AES key in the contract // let unencrypted_aes_key = get_input_data(PRECOMPILES_TEST_SET_AES_KEY_SELECTOR, private_key); - send_encrypted_tx( - &api, - &provider, - from, - contract_addr, - &encryption_sk, - encryption_pk.clone(), - &unencrypted_aes_key, - /* encryption_nonce */ 1, - ) - .await; + provider + .send_transaction( + TransactionRequest::default() + .with_from(from) + .with_to(contract_addr) + .with_input(unencrypted_aes_key), + ) + .await + .unwrap() + .get_receipt() + .await + .unwrap(); // // 3. Tx #2: Encrypt & send "hello world" @@ -411,22 +304,24 @@ async fn test_seismic_precompiles_end_to_end() { let encoded_message = PlaintextType::abi_encode(&message); let unencrypted_input = concat_input_data(PRECOMPILES_TEST_ENCRYPTED_LOG_SELECTOR, encoded_message.into()); - let receipt = send_encrypted_tx( - &api, - &provider, - from, - contract_addr, - &encryption_sk, - encryption_pk.clone(), - &unencrypted_input, - /* encryption_nonce */ 2, - ) - .await; + + let receipt = provider + .send_transaction( + TransactionRequest::default() + .with_from(from) + .with_to(contract_addr) + .with_input(unencrypted_input), + ) + .await + .unwrap() + .get_receipt() + .await + .unwrap(); // // 4. Tx #3: On-chain decrypt // - let logs = receipt.inner.inner.logs(); + let logs = receipt.inner.logs(); assert_eq!(logs.len(), 1); assert_eq!(logs[0].inner.address, contract_addr); @@ -462,17 +357,15 @@ async fn test_seismic_precompiles_end_to_end() { let unencrypted_decrypt_call = call.abi_encode(); // Perform the read call with encryption - let output = seismic_read_call( - &api, - &provider, - from, - contract_addr, - &encryption_sk, - encryption_pk_write_tx, - &unencrypted_decrypt_call, - /* encryption_nonce */ 3, - ) - .await; + let output = provider + .seismic_call(SendableTx::Builder( + TransactionRequest::default() + .with_from(from) + .with_to(contract_addr) + .with_input(unencrypted_decrypt_call), + )) + .await + .unwrap(); // // 5. Locally decrypt to cross-check @@ -486,12 +379,8 @@ async fn test_seismic_precompiles_end_to_end() { assert_eq!(decrypted_locally, message); // 5b. Decrypt the "output" from the read call - let call_nonce = provider.get_transaction_count(from).await.unwrap(); - let decrypted_output = crypto::client_decrypt(&encryption_sk, output.as_ref(), call_nonce) - .expect("client_decrypt of read-output failed"); - - let result_bytes = PlaintextType::abi_decode(&Bytes::from(decrypted_output), false) - .expect("failed to decode the bytes"); + let result_bytes = + PlaintextType::abi_decode(&Bytes::from(output), false).expect("failed to decode the bytes"); let final_string = String::from_utf8(result_bytes.to_vec()).expect("invalid utf8 in decrypted bytes"); diff --git a/crates/evm/core/src/utils.rs b/crates/evm/core/src/utils.rs index b3f37721d..185dc522e 100644 --- a/crates/evm/core/src/utils.rs +++ b/crates/evm/core/src/utils.rs @@ -123,8 +123,7 @@ pub fn configure_tx_req_env( transaction_type: _, ref authorization_list, sidecar: _, - encryption_pubkey: _, - message_version: _, + seismic_elements: _, } = *tx; // If no `to` field then set create kind: https://eips.ethereum.org/EIPS/eip-2470#deployment-transaction From 04bbd947cb41fec11741044758d98c8826023e14 Mon Sep 17 00:00:00 2001 From: phexyz <32248504+phexyz@users.noreply.github.com> Date: Mon, 17 Mar 2025 16:58:18 -0400 Subject: [PATCH 066/130] Bump version from alloy (#106) --- Cargo.lock | 335 ++++++++++++++---------- Cargo.toml | 52 ++-- crates/anvil/Cargo.toml | 2 +- crates/anvil/src/eth/api.rs | 1 + crates/anvil/src/eth/backend/mem/mod.rs | 1 - crates/anvil/tests/it/seismic.rs | 27 +- 6 files changed, 244 insertions(+), 174 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 911bc4ad5..c2de53781 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "alloy-consensus" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" dependencies = [ "alloy-dyn-abi", "alloy-eips", @@ -125,7 +125,7 @@ dependencies = [ "derive_more", "jsonrpsee", "k256", - "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=4a9a812)", + "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=788ae84)", "serde", "serde_json", ] @@ -133,7 +133,7 @@ dependencies = [ [[package]] name = "alloy-consensus-any" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" dependencies = [ "alloy-consensus", "alloy-eips", @@ -146,7 +146,7 @@ dependencies = [ [[package]] name = "alloy-contract" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -214,7 +214,7 @@ dependencies = [ [[package]] name = "alloy-eips" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" dependencies = [ "alloy-dyn-abi", "alloy-eip2930", @@ -232,7 +232,7 @@ dependencies = [ [[package]] name = "alloy-genesis" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" dependencies = [ "alloy-primitives", "alloy-serde", @@ -254,7 +254,7 @@ dependencies = [ [[package]] name = "alloy-json-rpc" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -267,7 +267,7 @@ dependencies = [ [[package]] name = "alloy-network" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -291,7 +291,7 @@ dependencies = [ [[package]] name = "alloy-network-primitives" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" dependencies = [ "alloy-consensus", "alloy-eips", @@ -303,7 +303,7 @@ dependencies = [ [[package]] name = "alloy-node-bindings" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" dependencies = [ "alloy-genesis", "alloy-primitives", @@ -350,7 +350,7 @@ dependencies = [ [[package]] name = "alloy-provider" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" dependencies = [ "alloy-chains", "alloy-consensus", @@ -380,7 +380,7 @@ dependencies = [ "pin-project 1.1.10", "reqwest", "schnellru", - "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=4a9a812)", + "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=788ae84)", "serde", "serde_json", "thiserror 2.0.12", @@ -393,7 +393,7 @@ dependencies = [ [[package]] name = "alloy-pubsub" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -433,7 +433,7 @@ dependencies = [ [[package]] name = "alloy-rpc-client" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -458,7 +458,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" dependencies = [ "alloy-primitives", "alloy-rpc-types-anvil", @@ -473,7 +473,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -484,7 +484,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -494,7 +494,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-debug" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" dependencies = [ "alloy-primitives", "serde", @@ -503,7 +503,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-engine" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" dependencies = [ "alloy-consensus", "alloy-eips", @@ -520,7 +520,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -539,7 +539,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-trace" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -552,7 +552,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-txpool" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -563,9 +563,10 @@ dependencies = [ [[package]] name = "alloy-serde" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" dependencies = [ "alloy-primitives", + "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=788ae84)", "serde", "serde_json", ] @@ -573,7 +574,7 @@ dependencies = [ [[package]] name = "alloy-signer" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" dependencies = [ "alloy-dyn-abi", "alloy-primitives", @@ -588,7 +589,7 @@ dependencies = [ [[package]] name = "alloy-signer-aws" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" dependencies = [ "alloy-consensus", "alloy-network", @@ -605,7 +606,7 @@ dependencies = [ [[package]] name = "alloy-signer-gcp" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" dependencies = [ "alloy-consensus", "alloy-network", @@ -622,7 +623,7 @@ dependencies = [ [[package]] name = "alloy-signer-ledger" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -641,7 +642,7 @@ dependencies = [ [[package]] name = "alloy-signer-local" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" dependencies = [ "alloy-consensus", "alloy-network", @@ -659,7 +660,7 @@ dependencies = [ [[package]] name = "alloy-signer-trezor" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" dependencies = [ "alloy-consensus", "alloy-network", @@ -743,7 +744,7 @@ dependencies = [ [[package]] name = "alloy-transport" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" dependencies = [ "alloy-json-rpc", "base64 0.22.1", @@ -762,7 +763,7 @@ dependencies = [ [[package]] name = "alloy-transport-http" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -776,7 +777,7 @@ dependencies = [ [[package]] name = "alloy-transport-ipc" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" dependencies = [ "alloy-json-rpc", "alloy-pubsub", @@ -796,13 +797,13 @@ dependencies = [ [[package]] name = "alloy-transport-ws" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=a77c89a#a77c89a8c67e21b45aa142f2a00cc301029c1047" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" dependencies = [ "alloy-pubsub", "alloy-transport", "futures", "http 1.3.1", - "rustls 0.23.23", + "rustls 0.23.25", "serde_json", "tokio", "tokio-tungstenite", @@ -971,7 +972,7 @@ dependencies = [ "reqwest", "revm", "secp256k1", - "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=4a9a812)", + "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=788ae84)", "serde", "serde_json", "serde_repr", @@ -1007,7 +1008,7 @@ dependencies = [ "op-alloy-consensus", "rand 0.8.5", "revm", - "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=4a9a812)", + "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=788ae84)", "serde", "serde_json", "thiserror 2.0.12", @@ -1059,9 +1060,9 @@ dependencies = [ [[package]] name = "ariadne" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31beedec3ce83ae6da3a79592b3d8d7afd146a5b15bb9bb940279aced60faa89" +checksum = "36f5e3dca4e09a6f340a61a0e9c7b61e030c69fc27bf29d73218f7e5e3b7638f" dependencies = [ "unicode-width 0.1.14", "yansi", @@ -1217,9 +1218,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.20" +version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "310c9bcae737a48ef5cdee3174184e6d548b292739ede61a1f955ef76a738861" +checksum = "c0cf008e5e1a9e9e22a7d3c9a4992e21a350290069e36d8fb72304ed17e8f2d2" dependencies = [ "flate2", "futures-core", @@ -1272,9 +1273,9 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.87" +version = "0.1.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d556ec1359574147ec0c4fc5eb525f3f23263a592b1a9c07e0a75b427de55c97" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" dependencies = [ "proc-macro2", "quote", @@ -1394,9 +1395,9 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.27.0" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bbe221bbf523b625a4dd8585c7f38166e31167ec2ca98051dbcb4c3b6e825d2" +checksum = "77926887776171ced7d662120a75998e444d3750c951abfe07f90da130514b1f" dependencies = [ "bindgen", "cc", @@ -1427,7 +1428,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "tracing", - "uuid 1.15.1", + "uuid 1.16.0", ] [[package]] @@ -1594,7 +1595,7 @@ dependencies = [ "hyper-util", "pin-project-lite", "rustls 0.21.12", - "rustls 0.23.23", + "rustls 0.23.25", "rustls-native-certs 0.8.1", "rustls-pki-types", "tokio", @@ -1941,9 +1942,9 @@ dependencies = [ [[package]] name = "bon" -version = "3.4.0" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a8a41e51fda5f7d87152d00f50d08ce24bf5cee8a962facf7f2526a66f8a5fa" +checksum = "625e90403736670c971aad50573b7db42e131970d60a14f215b61fdf24e0aa84" dependencies = [ "bon-macros", "rustversion", @@ -1951,9 +1952,9 @@ dependencies = [ [[package]] name = "bon-macros" -version = "3.4.0" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b592add4016ac26ca340298fed5cc2524abe8bacae78ebca3780286da588304" +checksum = "fa915c54d505ca9b9b7ac056df7797508c3b817e51609d0ed19949dd0925b872" dependencies = [ "darling", "ident_case", @@ -3196,9 +3197,9 @@ checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "elasticlunr-rs" -version = "3.0.2" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41e83863a500656dfa214fee6682de9c5b9f03de6860fec531235ed2ae9f6571" +checksum = "2d2feae8e4b9a700f5dfb266a8c2ea16d6504715f229e2ae04b78c0ecf1c532b" dependencies = [ "regex", "serde", @@ -3617,9 +3618,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0d2fde1f7b3d48b8395d5f2de76c18a528bd6a9cdde438df747bfcba3e05d6f" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" [[package]] name = "foreign-types" @@ -5085,9 +5086,9 @@ dependencies = [ [[package]] name = "half" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" +checksum = "7db2ff139bba50379da6aa0766b52fdcb62cb5b263009b09ed58ba604e14bbd1" dependencies = [ "cfg-if", "crunchy", @@ -5095,9 +5096,9 @@ dependencies = [ [[package]] name = "handlebars" -version = "6.3.1" +version = "6.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d752747ddabc4c1a70dd28e72f2e3c218a816773e0d7faf67433f1acfa6cba7c" +checksum = "759e2d5aea3287cb1190c8ec394f42866cb5bf74fcbf213f354e3c856ea26098" dependencies = [ "derive_builder", "log", @@ -5397,7 +5398,7 @@ dependencies = [ "hyper 1.6.0", "hyper-util", "log", - "rustls 0.23.23", + "rustls 0.23.25", "rustls-native-certs 0.8.1", "rustls-pki-types", "tokio", @@ -5956,16 +5957,18 @@ dependencies = [ [[package]] name = "jni" -version = "0.19.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6df18c2e3db7e453d3c6ac5b3e9d5182664d28788126d39b91f2d1e22b017ec" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" dependencies = [ "cesu8", + "cfg-if", "combine", "jni-sys", "log", "thiserror 1.0.69", "walkdir", + "windows-sys 0.45.0", ] [[package]] @@ -6006,9 +6009,9 @@ dependencies = [ [[package]] name = "jsonrpsee" -version = "0.24.8" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "834af00800e962dee8f7bfc0f60601de215e73e78e5497d733a2919da837d3c8" +checksum = "37b26c20e2178756451cfeb0661fb74c47dd5988cb7e3939de7e9241fd604d42" dependencies = [ "jsonrpsee-client-transport", "jsonrpsee-core", @@ -6024,9 +6027,9 @@ dependencies = [ [[package]] name = "jsonrpsee-client-transport" -version = "0.24.8" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "def0fd41e2f53118bd1620478d12305b2c75feef57ea1f93ef70568c98081b7e" +checksum = "bacb85abf4117092455e1573625e21b8f8ef4dec8aff13361140b2dc266cdff2" dependencies = [ "base64 0.22.1", "futures-channel", @@ -6035,7 +6038,7 @@ dependencies = [ "http 1.3.1", "jsonrpsee-core", "pin-project 1.1.10", - "rustls 0.23.23", + "rustls 0.23.25", "rustls-pki-types", "rustls-platform-verifier", "soketto", @@ -6049,9 +6052,9 @@ dependencies = [ [[package]] name = "jsonrpsee-core" -version = "0.24.8" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76637f6294b04e747d68e69336ef839a3493ca62b35bf488ead525f7da75c5bb" +checksum = "456196007ca3a14db478346f58c7238028d55ee15c1df15115596e411ff27925" dependencies = [ "async-trait", "bytes", @@ -6076,9 +6079,9 @@ dependencies = [ [[package]] name = "jsonrpsee-http-client" -version = "0.24.8" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87c24e981ad17798bbca852b0738bfb7b94816ed687bd0d5da60bfa35fa0fdc3" +checksum = "c872b6c9961a4ccc543e321bb5b89f6b2d2c7fe8b61906918273a3333c95400c" dependencies = [ "async-trait", "base64 0.22.1", @@ -6088,7 +6091,7 @@ dependencies = [ "hyper-util", "jsonrpsee-core", "jsonrpsee-types", - "rustls 0.23.23", + "rustls 0.23.25", "rustls-platform-verifier", "serde", "serde_json", @@ -6101,9 +6104,9 @@ dependencies = [ [[package]] name = "jsonrpsee-proc-macros" -version = "0.24.8" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fcae0c6c159e11541080f1f829873d8f374f81eda0abc67695a13fc8dc1a580" +checksum = "5e65763c942dfc9358146571911b0cd1c361c2d63e2d2305622d40d36376ca80" dependencies = [ "heck 0.5.0", "proc-macro-crate", @@ -6114,9 +6117,9 @@ dependencies = [ [[package]] name = "jsonrpsee-server" -version = "0.24.8" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66b7a3df90a1a60c3ed68e7ca63916b53e9afa928e33531e87f61a9c8e9ae87b" +checksum = "55e363146da18e50ad2b51a0a7925fc423137a0b1371af8235b1c231a0647328" dependencies = [ "futures-util", "http 1.3.1", @@ -6141,9 +6144,9 @@ dependencies = [ [[package]] name = "jsonrpsee-types" -version = "0.24.8" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddb81adb1a5ae9182df379e374a79e24e992334e7346af4d065ae5b2acb8d4c6" +checksum = "08a8e70baf945b6b5752fc8eb38c918a48f1234daf11355e07106d963f860089" dependencies = [ "http 1.3.1", "serde", @@ -6153,9 +6156,9 @@ dependencies = [ [[package]] name = "jsonrpsee-wasm-client" -version = "0.24.8" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42e41af42ca39657313748174d02766e5287d3a57356f16756dbd8065b933977" +checksum = "e6558a9586cad43019dafd0b6311d0938f46efc116b34b28c74778bc11a2edf6" dependencies = [ "jsonrpsee-client-transport", "jsonrpsee-core", @@ -6164,9 +6167,9 @@ dependencies = [ [[package]] name = "jsonrpsee-ws-client" -version = "0.24.8" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f4f3642a292f5b76d8a16af5c88c16a0860f2ccc778104e5c848b28183d9538" +checksum = "01b3323d890aa384f12148e8d2a1fd18eb66e9e7e825f9de4fa53bcc19b93eef" dependencies = [ "http 1.3.1", "jsonrpsee-client-transport", @@ -6371,9 +6374,9 @@ checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "linux-raw-sys" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db9c683daf087dc577b7506e9695b3d556a9f3849903fa28186283afd6809e9" +checksum = "fe7db12097d22ec582439daf8618b8fdd1a7bef6270e9af3b1ebcd30893cf413" [[package]] name = "litemap" @@ -6701,7 +6704,7 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee3224f0e8be7c2a1ebc77ef9c3eecb90f55c6594399ee825de964526b3c9056" dependencies = [ - "uuid 1.15.1", + "uuid 1.16.0", ] [[package]] @@ -7787,7 +7790,7 @@ dependencies = [ "quick-xml 0.37.2", "strip-ansi-escapes", "thiserror 2.0.12", - "uuid 1.15.1", + "uuid 1.16.0", ] [[package]] @@ -7819,7 +7822,7 @@ dependencies = [ "quinn-proto", "quinn-udp", "rustc-hash 2.1.1", - "rustls 0.23.23", + "rustls 0.23.25", "socket2", "thiserror 2.0.12", "tokio", @@ -7837,7 +7840,7 @@ dependencies = [ "rand 0.8.5", "ring", "rustc-hash 2.1.1", - "rustls 0.23.23", + "rustls 0.23.25", "rustls-pki-types", "slab", "thiserror 2.0.12", @@ -8112,7 +8115,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.23", + "rustls 0.23.25", "rustls-native-certs 0.8.1", "rustls-pemfile 2.2.0", "rustls-pki-types", @@ -8425,7 +8428,7 @@ dependencies = [ "bitflags 2.9.0", "errno", "libc", - "linux-raw-sys 0.9.2", + "linux-raw-sys 0.9.3", "windows-sys 0.59.0", ] @@ -8443,16 +8446,16 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.23" +version = "0.23.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47796c98c480fce5406ef69d1c76378375492c3b0a0de587be0c1d9feb12f395" +checksum = "822ee9188ac4ec04a2f0531e55d035fb2de73f18b41a63c70c2712503b6fb13c" dependencies = [ "aws-lc-rs", "log", "once_cell", "ring", "rustls-pki-types", - "rustls-webpki 0.102.8", + "rustls-webpki 0.103.0", "subtle", "zeroize", ] @@ -8469,19 +8472,6 @@ dependencies = [ "security-framework 2.11.1", ] -[[package]] -name = "rustls-native-certs" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5" -dependencies = [ - "openssl-probe", - "rustls-pemfile 2.2.0", - "rustls-pki-types", - "schannel", - "security-framework 2.11.1", -] - [[package]] name = "rustls-native-certs" version = "0.8.1" @@ -8523,23 +8513,23 @@ dependencies = [ [[package]] name = "rustls-platform-verifier" -version = "0.3.4" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afbb878bdfdf63a336a5e63561b1835e7a8c91524f51621db870169eac84b490" +checksum = "4a5467026f437b4cb2a533865eaa73eb840019a0916f4b9ec563c6e617e086c9" dependencies = [ - "core-foundation 0.9.4", + "core-foundation 0.10.0", "core-foundation-sys", "jni", "log", "once_cell", - "rustls 0.23.23", - "rustls-native-certs 0.7.3", + "rustls 0.23.25", + "rustls-native-certs 0.8.1", "rustls-platform-verifier-android", - "rustls-webpki 0.102.8", - "security-framework 2.11.1", + "rustls-webpki 0.103.0", + "security-framework 3.2.0", "security-framework-sys", - "webpki-roots", - "winapi", + "webpki-root-certs", + "windows-sys 0.59.0", ] [[package]] @@ -8560,9 +8550,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.102.8" +version = "0.103.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +checksum = "0aa4eeac2588ffff23e9d7a7e9b3f971c5fb5b7ebc9452745e0c232c64f83b2f" dependencies = [ "aws-lc-rs", "ring", @@ -8839,7 +8829,6 @@ dependencies = [ "core-foundation 0.9.4", "core-foundation-sys", "libc", - "num-bigint", "security-framework-sys", ] @@ -8869,7 +8858,7 @@ dependencies = [ [[package]] name = "seismic-enclave" version = "0.1.0" -source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=4a9a812#4a9a81235addc09a92ff20b71963cf41a2f68687" +source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=788ae84#788ae848f366f56f969cc8b36e7d0b7bf2758cd5" dependencies = [ "aes-gcm", "anyhow", @@ -8921,7 +8910,7 @@ dependencies = [ [[package]] name = "seismic-enclave-derive" version = "0.1.0" -source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=4a9a812#4a9a81235addc09a92ff20b71963cf41a2f68687" +source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=788ae84#788ae848f366f56f969cc8b36e7d0b7bf2758cd5" dependencies = [ "proc-macro2", "quote", @@ -9483,7 +9472,7 @@ dependencies = [ "thiserror 2.0.12", "tokio", "toml_edit", - "uuid 1.15.1", + "uuid 1.16.0", "zip", "zip-extract", ] @@ -9627,9 +9616,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "svm-rs" -version = "0.5.12" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "feb9fc1391b3c05693c79c23845d4abd7c061cdfdf51ae238d4cd9efbb830aa7" +checksum = "9a30a58b94c1ddc5f07a428d16e58e8f4c7cee9e67130cda12ed148f5ef98fff" dependencies = [ "const-hex", "dirs 6.0.0", @@ -9647,9 +9636,9 @@ dependencies = [ [[package]] name = "svm-rs-builds" -version = "0.5.11" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "074faea21171905847a96135b3896e2e0b74373758ca07b96a41c646cc04a8e5" +checksum = "ebddc0ea9fd9fb61d0de9585a99c58f87e8c14b8811726a57cc5f5b1a029585e" dependencies = [ "build_const", "const-hex", @@ -9719,11 +9708,10 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.18.0" +version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c317e0a526ee6120d8dabad239c8dadca62b24b6f168914bbbc8e2fb1f0e567" +checksum = "488960f40a3fd53d72c2a29a58722561dee8afdd175bd88e3db4677d7b2ba600" dependencies = [ - "cfg-if", "fastrand", "getrandom 0.3.1", "once_cell", @@ -9994,7 +9982,7 @@ version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" dependencies = [ - "rustls 0.23.23", + "rustls 0.23.25", "tokio", ] @@ -10030,7 +10018,7 @@ checksum = "edc5f74e248dc973e0dbb7b74c7e0d6fcc301c694ff50049504004ef4d0cdcd9" dependencies = [ "futures-util", "log", - "rustls 0.23.23", + "rustls 0.23.25", "rustls-pki-types", "tokio", "tokio-rustls 0.26.2", @@ -10357,7 +10345,7 @@ dependencies = [ "httparse", "log", "rand 0.8.5", - "rustls 0.23.23", + "rustls 0.23.25", "rustls-pki-types", "sha1", "thiserror 1.0.69", @@ -10546,9 +10534,9 @@ dependencies = [ [[package]] name = "uuid" -version = "1.15.1" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0f540e3240398cce6128b64ba83fdbdd86129c16a3aa1a3a252efd66eb3d587" +checksum = "458f7a779bf54acc9f347480ac654f68407d3aab21269a6e3c9f922acd9e2da9" dependencies = [ "getrandom 0.3.1", "serde", @@ -10823,6 +10811,15 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "webpki-root-certs" +version = "0.26.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09aed61f5e8d2c18344b3faa33a4c837855fe56642757754775548fee21386c4" +dependencies = [ + "rustls-pki-types", +] + [[package]] name = "webpki-roots" version = "0.26.8" @@ -10858,9 +10855,9 @@ dependencies = [ [[package]] name = "widestring" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311" +checksum = "dd7cf3379ca1aac9eea11fba24fd7e315d621f8dfe35c8d7d2be8b793726e07d" [[package]] name = "winapi" @@ -11046,6 +11043,15 @@ dependencies = [ "windows-link", ] +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + [[package]] name = "windows-sys" version = "0.48.0" @@ -11073,6 +11079,21 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + [[package]] name = "windows-targets" version = "0.48.5" @@ -11120,6 +11141,12 @@ dependencies = [ "windows_x86_64_msvc 0.53.0", ] +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -11138,6 +11165,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" @@ -11156,6 +11189,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + [[package]] name = "windows_i686_gnu" version = "0.48.5" @@ -11186,6 +11225,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + [[package]] name = "windows_i686_msvc" version = "0.48.5" @@ -11204,6 +11249,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" @@ -11222,6 +11273,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" @@ -11240,6 +11297,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -11475,9 +11538,9 @@ dependencies = [ [[package]] name = "zip" -version = "2.2.3" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b280484c454e74e5fff658bbf7df8fdbe7a07c6b2de4a53def232c15ef138f3a" +checksum = "938cc23ac49778ac8340e366ddc422b2227ea176edb447e23fc0627608dddadd" dependencies = [ "arbitrary", "bzip2", diff --git a/Cargo.toml b/Cargo.toml index 7232b8df9..3254b179f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -321,31 +321,31 @@ alloy-sol-types = { git = "https://github.com/SeismicSystems/seismic-alloy-core. alloy-sol-type-parser = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "77693d2" } # seismic-alloy -alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } -alloy-contract = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } -alloy-eips = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } -alloy-genesis = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } -alloy-json-rpc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } -alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } -alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } -alloy-pubsub = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } -alloy-rpc-client = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } -alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } -alloy-rpc-types-trace = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } -alloy-rpc-types-eth = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } -alloy-serde = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } -alloy-signer = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } -alloy-signer-aws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } -alloy-signer-gcp = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } -alloy-signer-ledger = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } -alloy-signer-local = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } -alloy-signer-trezor = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } -alloy-transport = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } -alloy-transport-http = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } -alloy-transport-ipc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } -alloy-transport-ws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } -alloy-node-bindings = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } -alloy-network-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "a77c89a" } +alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } +alloy-contract = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } +alloy-eips = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } +alloy-genesis = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } +alloy-json-rpc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } +alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } +alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } +alloy-pubsub = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } +alloy-rpc-client = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } +alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } +alloy-rpc-types-trace = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } +alloy-rpc-types-eth = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } +alloy-serde = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } +alloy-signer = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } +alloy-signer-aws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } +alloy-signer-gcp = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } +alloy-signer-ledger = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } +alloy-signer-local = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } +alloy-signer-trezor = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } +alloy-transport = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } +alloy-transport-http = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } +alloy-transport-ipc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } +alloy-transport-ws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } +alloy-node-bindings = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } +alloy-network-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } foundry-compilers = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } foundry-compilers-artifacts = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } @@ -353,4 +353,4 @@ foundry-compilers-artifacts-solc = { git = "https://github.com/SeismicSystems/se foundry-compilers-artifacts-vyper = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } foundry-compilers-core = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } -seismic-enclave = { git = "https://github.com/SeismicSystems/seismic-enclave.git", rev = "4a9a812"} \ No newline at end of file +seismic-enclave = { git = "https://github.com/SeismicSystems/seismic-enclave.git", rev = "788ae84"} \ No newline at end of file diff --git a/crates/anvil/Cargo.toml b/crates/anvil/Cargo.toml index 64b319cde..ae8f54fd9 100644 --- a/crates/anvil/Cargo.toml +++ b/crates/anvil/Cargo.toml @@ -124,7 +124,7 @@ tikv-jemallocator = { workspace = true, optional = true } alloy-json-abi.workspace = true alloy-rpc-client = { workspace = true, features = ["pubsub"] } alloy-transport-ipc = { workspace = true, features = ["mock"] } -alloy-provider = { workspace = true, features = ["txpool-api"] } +alloy-provider = { workspace = true, features = ["txpool-api", "reqwest"] } alloy-transport-ws.workspace = true alloy-json-rpc.workspace = true alloy-pubsub.workspace = true diff --git a/crates/anvil/src/eth/api.rs b/crates/anvil/src/eth/api.rs index f65584bcd..85341c5ae 100644 --- a/crates/anvil/src/eth/api.rs +++ b/crates/anvil/src/eth/api.rs @@ -1190,6 +1190,7 @@ impl EthApi { BlockchainError::Message(format!("Failed to recover signer: {e:?}")) })?; let mut request = WithOtherFields::new(tx); + println!("call request to seismic_call: {:?}", request); request.inner.from = Some(sender); self.seismic_call(request, block_number, overrides).await } diff --git a/crates/anvil/src/eth/backend/mem/mod.rs b/crates/anvil/src/eth/backend/mem/mod.rs index 6cdfab064..17616522e 100644 --- a/crates/anvil/src/eth/backend/mem/mod.rs +++ b/crates/anvil/src/eth/backend/mem/mod.rs @@ -1508,7 +1508,6 @@ impl Backend { let seismic_elements = request.inner.seismic_elements; let (exit_reason, out, gas_used, state) = self.call_with_state(state, request, fee_details, block_env)?; - let output_data = out .map(|plaintext_output| match seismic_elements { Some(seismic_elements) => seismic_elements diff --git a/crates/anvil/tests/it/seismic.rs b/crates/anvil/tests/it/seismic.rs index 5efaecd5f..7a69cd4c3 100644 --- a/crates/anvil/tests/it/seismic.rs +++ b/crates/anvil/tests/it/seismic.rs @@ -12,14 +12,15 @@ use alloy_primitives::{ Bytes, IntoLogData, TxKind, B256, U256, }; use alloy_provider::{ - test_utils, Provider, SeismicSignedProvider, SeismicUnsignedProvider, SendableTx, + layers::seismic::test_utils, Provider, SeismicSignedProvider, SeismicUnsignedProvider, + SendableTx, }; use alloy_rpc_types::{SeismicCallRequest, TransactionInput, TransactionRequest}; use alloy_signer_local::PrivateKeySigner; use alloy_sol_types::{sol, SolCall, SolValue}; use anvil::{spawn, NodeConfig}; use secp256k1::{PublicKey, SecretKey}; -use seismic_enclave::{aes_decrypt, ecdh_decrypt, ecdh_encrypt}; +use seismic_enclave::{aes_decrypt, ecdh_decrypt}; use std::fs; // common utils @@ -82,7 +83,17 @@ pub async fn get_unsigned_seismic_tx_request( let encryption_sk = get_sk(signer); let encryption_pk = get_pk(signer); - let encrypted_input = ecdh_encrypt(&pk, &encryption_sk, &plaintext, nonce).unwrap(); + println!("nonce: {:?}", nonce); + let encryption_nonce = U96::from(nonce); + println!("encryption_nonce: {:?}", encryption_nonce); + + let seismic_elements = TxSeismicElements { + encryption_pubkey: encryption_pk, + encryption_nonce, + ..Default::default() + }; + + let encrypted_input = seismic_elements.client_encrypt(&plaintext, &pk, &encryption_sk).unwrap(); TransactionRequest { from: Some(signer.address()), @@ -94,11 +105,7 @@ pub async fn get_unsigned_seismic_tx_request( chain_id: Some(chain_id), input: TransactionInput { input: Some(Bytes::from(encrypted_input)), data: None }, transaction_type: Some(TxSeismic::TX_TYPE), - seismic_elements: Some(TxSeismicElements { - encryption_pubkey: encryption_pk, - encryption_nonce: nonce, - ..Default::default() - }), + seismic_elements: Some(seismic_elements), ..Default::default() } } @@ -117,8 +124,8 @@ pub async fn get_signed_seismic_tx_typed_data( chain_id: u64, plaintext: Bytes, ) -> TypedDataRequest { - let tx = get_unsigned_seismic_tx_request(signer, pk, nonce, to, chain_id, plaintext).await; - tx.seismic_elements.unwrap().message_version = 2; + let mut tx = get_unsigned_seismic_tx_request(signer, pk, nonce, to, chain_id, plaintext).await; + tx.seismic_elements = Some(tx.seismic_elements.unwrap().with_message_version(2)); let signed = sign_tx(signer.clone(), tx).await; From 63ad0002dd16b2e9efb5298eda525c9d06014eca Mon Sep 17 00:00:00 2001 From: phexyz <32248504+phexyz@users.noreply.github.com> Date: Mon, 17 Mar 2025 17:13:01 -0400 Subject: [PATCH 067/130] Version bump for alloy (#108) --- Cargo.lock | 62 +++++++++++++++++++++++++++--------------------------- Cargo.toml | 50 +++++++++++++++++++++---------------------- 2 files changed, 56 insertions(+), 56 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c2de53781..144be085f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "alloy-consensus" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" dependencies = [ "alloy-dyn-abi", "alloy-eips", @@ -133,7 +133,7 @@ dependencies = [ [[package]] name = "alloy-consensus-any" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" dependencies = [ "alloy-consensus", "alloy-eips", @@ -146,7 +146,7 @@ dependencies = [ [[package]] name = "alloy-contract" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -214,7 +214,7 @@ dependencies = [ [[package]] name = "alloy-eips" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" dependencies = [ "alloy-dyn-abi", "alloy-eip2930", @@ -232,7 +232,7 @@ dependencies = [ [[package]] name = "alloy-genesis" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" dependencies = [ "alloy-primitives", "alloy-serde", @@ -254,7 +254,7 @@ dependencies = [ [[package]] name = "alloy-json-rpc" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -267,7 +267,7 @@ dependencies = [ [[package]] name = "alloy-network" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -291,7 +291,7 @@ dependencies = [ [[package]] name = "alloy-network-primitives" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" dependencies = [ "alloy-consensus", "alloy-eips", @@ -303,7 +303,7 @@ dependencies = [ [[package]] name = "alloy-node-bindings" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" dependencies = [ "alloy-genesis", "alloy-primitives", @@ -350,7 +350,7 @@ dependencies = [ [[package]] name = "alloy-provider" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" dependencies = [ "alloy-chains", "alloy-consensus", @@ -393,7 +393,7 @@ dependencies = [ [[package]] name = "alloy-pubsub" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -433,7 +433,7 @@ dependencies = [ [[package]] name = "alloy-rpc-client" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -458,7 +458,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" dependencies = [ "alloy-primitives", "alloy-rpc-types-anvil", @@ -473,7 +473,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -484,7 +484,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -494,7 +494,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-debug" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" dependencies = [ "alloy-primitives", "serde", @@ -503,7 +503,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-engine" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" dependencies = [ "alloy-consensus", "alloy-eips", @@ -520,7 +520,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -539,7 +539,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-trace" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -552,7 +552,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-txpool" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -563,7 +563,7 @@ dependencies = [ [[package]] name = "alloy-serde" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" dependencies = [ "alloy-primitives", "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=788ae84)", @@ -574,7 +574,7 @@ dependencies = [ [[package]] name = "alloy-signer" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" dependencies = [ "alloy-dyn-abi", "alloy-primitives", @@ -589,7 +589,7 @@ dependencies = [ [[package]] name = "alloy-signer-aws" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" dependencies = [ "alloy-consensus", "alloy-network", @@ -606,7 +606,7 @@ dependencies = [ [[package]] name = "alloy-signer-gcp" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" dependencies = [ "alloy-consensus", "alloy-network", @@ -623,7 +623,7 @@ dependencies = [ [[package]] name = "alloy-signer-ledger" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -642,7 +642,7 @@ dependencies = [ [[package]] name = "alloy-signer-local" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" dependencies = [ "alloy-consensus", "alloy-network", @@ -660,7 +660,7 @@ dependencies = [ [[package]] name = "alloy-signer-trezor" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" dependencies = [ "alloy-consensus", "alloy-network", @@ -744,7 +744,7 @@ dependencies = [ [[package]] name = "alloy-transport" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" dependencies = [ "alloy-json-rpc", "base64 0.22.1", @@ -763,7 +763,7 @@ dependencies = [ [[package]] name = "alloy-transport-http" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -777,7 +777,7 @@ dependencies = [ [[package]] name = "alloy-transport-ipc" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" dependencies = [ "alloy-json-rpc", "alloy-pubsub", @@ -797,7 +797,7 @@ dependencies = [ [[package]] name = "alloy-transport-ws" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=04dc6b7#04dc6b7428bdda4e5153faebeeba330f2e9e73e8" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" dependencies = [ "alloy-pubsub", "alloy-transport", diff --git a/Cargo.toml b/Cargo.toml index 3254b179f..f4a5ee329 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -321,31 +321,31 @@ alloy-sol-types = { git = "https://github.com/SeismicSystems/seismic-alloy-core. alloy-sol-type-parser = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "77693d2" } # seismic-alloy -alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } -alloy-contract = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } -alloy-eips = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } -alloy-genesis = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } -alloy-json-rpc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } -alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } -alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } -alloy-pubsub = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } -alloy-rpc-client = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } -alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } -alloy-rpc-types-trace = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } -alloy-rpc-types-eth = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } -alloy-serde = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } -alloy-signer = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } -alloy-signer-aws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } -alloy-signer-gcp = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } -alloy-signer-ledger = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } -alloy-signer-local = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } -alloy-signer-trezor = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } -alloy-transport = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } -alloy-transport-http = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } -alloy-transport-ipc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } -alloy-transport-ws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } -alloy-node-bindings = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } -alloy-network-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "04dc6b7" } +alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } +alloy-contract = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } +alloy-eips = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } +alloy-genesis = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } +alloy-json-rpc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } +alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } +alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } +alloy-pubsub = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } +alloy-rpc-client = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } +alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } +alloy-rpc-types-trace = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } +alloy-rpc-types-eth = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } +alloy-serde = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } +alloy-signer = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } +alloy-signer-aws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } +alloy-signer-gcp = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } +alloy-signer-ledger = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } +alloy-signer-local = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } +alloy-signer-trezor = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } +alloy-transport = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } +alloy-transport-http = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } +alloy-transport-ipc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } +alloy-transport-ws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } +alloy-node-bindings = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } +alloy-network-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } foundry-compilers = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } foundry-compilers-artifacts = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } From cc397b51d671f9c2bb30b29c247bbe125942d67f Mon Sep 17 00:00:00 2001 From: phexyz <32248504+phexyz@users.noreply.github.com> Date: Tue, 18 Mar 2025 17:08:43 -0400 Subject: [PATCH 068/130] Fix: constructing TxEnv (#109) --- Cargo.lock | 76 ++++++++++++------------- Cargo.toml | 52 ++++++++--------- crates/anvil/src/eth/api.rs | 2 +- crates/anvil/src/eth/backend/mem/mod.rs | 4 +- crates/anvil/tests/it/seismic.rs | 54 ++++++++---------- 5 files changed, 91 insertions(+), 97 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 144be085f..aa4d243dd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "alloy-consensus" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" dependencies = [ "alloy-dyn-abi", "alloy-eips", @@ -125,7 +125,7 @@ dependencies = [ "derive_more", "jsonrpsee", "k256", - "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=788ae84)", + "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=8e18a1e)", "serde", "serde_json", ] @@ -133,7 +133,7 @@ dependencies = [ [[package]] name = "alloy-consensus-any" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" dependencies = [ "alloy-consensus", "alloy-eips", @@ -146,7 +146,7 @@ dependencies = [ [[package]] name = "alloy-contract" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -214,7 +214,7 @@ dependencies = [ [[package]] name = "alloy-eips" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" dependencies = [ "alloy-dyn-abi", "alloy-eip2930", @@ -232,7 +232,7 @@ dependencies = [ [[package]] name = "alloy-genesis" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" dependencies = [ "alloy-primitives", "alloy-serde", @@ -254,7 +254,7 @@ dependencies = [ [[package]] name = "alloy-json-rpc" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -267,7 +267,7 @@ dependencies = [ [[package]] name = "alloy-network" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -291,7 +291,7 @@ dependencies = [ [[package]] name = "alloy-network-primitives" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" dependencies = [ "alloy-consensus", "alloy-eips", @@ -303,7 +303,7 @@ dependencies = [ [[package]] name = "alloy-node-bindings" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" dependencies = [ "alloy-genesis", "alloy-primitives", @@ -350,7 +350,7 @@ dependencies = [ [[package]] name = "alloy-provider" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" dependencies = [ "alloy-chains", "alloy-consensus", @@ -380,7 +380,7 @@ dependencies = [ "pin-project 1.1.10", "reqwest", "schnellru", - "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=788ae84)", + "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=8e18a1e)", "serde", "serde_json", "thiserror 2.0.12", @@ -393,7 +393,7 @@ dependencies = [ [[package]] name = "alloy-pubsub" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -433,7 +433,7 @@ dependencies = [ [[package]] name = "alloy-rpc-client" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -458,7 +458,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" dependencies = [ "alloy-primitives", "alloy-rpc-types-anvil", @@ -473,7 +473,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -484,7 +484,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -494,7 +494,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-debug" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" dependencies = [ "alloy-primitives", "serde", @@ -503,7 +503,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-engine" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" dependencies = [ "alloy-consensus", "alloy-eips", @@ -520,7 +520,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -539,7 +539,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-trace" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -552,7 +552,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-txpool" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -563,10 +563,10 @@ dependencies = [ [[package]] name = "alloy-serde" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" dependencies = [ "alloy-primitives", - "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=788ae84)", + "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=8e18a1e)", "serde", "serde_json", ] @@ -574,7 +574,7 @@ dependencies = [ [[package]] name = "alloy-signer" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" dependencies = [ "alloy-dyn-abi", "alloy-primitives", @@ -589,7 +589,7 @@ dependencies = [ [[package]] name = "alloy-signer-aws" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" dependencies = [ "alloy-consensus", "alloy-network", @@ -606,7 +606,7 @@ dependencies = [ [[package]] name = "alloy-signer-gcp" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" dependencies = [ "alloy-consensus", "alloy-network", @@ -623,7 +623,7 @@ dependencies = [ [[package]] name = "alloy-signer-ledger" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -642,7 +642,7 @@ dependencies = [ [[package]] name = "alloy-signer-local" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" dependencies = [ "alloy-consensus", "alloy-network", @@ -660,7 +660,7 @@ dependencies = [ [[package]] name = "alloy-signer-trezor" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" dependencies = [ "alloy-consensus", "alloy-network", @@ -744,7 +744,7 @@ dependencies = [ [[package]] name = "alloy-transport" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" dependencies = [ "alloy-json-rpc", "base64 0.22.1", @@ -763,7 +763,7 @@ dependencies = [ [[package]] name = "alloy-transport-http" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -777,7 +777,7 @@ dependencies = [ [[package]] name = "alloy-transport-ipc" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" dependencies = [ "alloy-json-rpc", "alloy-pubsub", @@ -797,7 +797,7 @@ dependencies = [ [[package]] name = "alloy-transport-ws" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=71a0c12#71a0c121e59276b2bb189d2cbd35121ef22c6bb3" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" dependencies = [ "alloy-pubsub", "alloy-transport", @@ -972,7 +972,7 @@ dependencies = [ "reqwest", "revm", "secp256k1", - "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=788ae84)", + "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=8e18a1e)", "serde", "serde_json", "serde_repr", @@ -1008,7 +1008,7 @@ dependencies = [ "op-alloy-consensus", "rand 0.8.5", "revm", - "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=788ae84)", + "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=8e18a1e)", "serde", "serde_json", "thiserror 2.0.12", @@ -8858,7 +8858,7 @@ dependencies = [ [[package]] name = "seismic-enclave" version = "0.1.0" -source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=788ae84#788ae848f366f56f969cc8b36e7d0b7bf2758cd5" +source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=8e18a1e#8e18a1e02a874afb26b2b108f758c58b346b2b6e" dependencies = [ "aes-gcm", "anyhow", @@ -8910,7 +8910,7 @@ dependencies = [ [[package]] name = "seismic-enclave-derive" version = "0.1.0" -source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=788ae84#788ae848f366f56f969cc8b36e7d0b7bf2758cd5" +source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=8e18a1e#8e18a1e02a874afb26b2b108f758c58b346b2b6e" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index f4a5ee329..6d085ccbc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -321,31 +321,31 @@ alloy-sol-types = { git = "https://github.com/SeismicSystems/seismic-alloy-core. alloy-sol-type-parser = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "77693d2" } # seismic-alloy -alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } -alloy-contract = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } -alloy-eips = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } -alloy-genesis = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } -alloy-json-rpc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } -alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } -alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } -alloy-pubsub = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } -alloy-rpc-client = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } -alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } -alloy-rpc-types-trace = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } -alloy-rpc-types-eth = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } -alloy-serde = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } -alloy-signer = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } -alloy-signer-aws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } -alloy-signer-gcp = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } -alloy-signer-ledger = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } -alloy-signer-local = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } -alloy-signer-trezor = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } -alloy-transport = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } -alloy-transport-http = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } -alloy-transport-ipc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } -alloy-transport-ws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } -alloy-node-bindings = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } -alloy-network-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "71a0c12" } +alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } +alloy-contract = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } +alloy-eips = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } +alloy-genesis = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } +alloy-json-rpc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } +alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } +alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } +alloy-pubsub = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } +alloy-rpc-client = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } +alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } +alloy-rpc-types-trace = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } +alloy-rpc-types-eth = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } +alloy-serde = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } +alloy-signer = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } +alloy-signer-aws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } +alloy-signer-gcp = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } +alloy-signer-ledger = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } +alloy-signer-local = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } +alloy-signer-trezor = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } +alloy-transport = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } +alloy-transport-http = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } +alloy-transport-ipc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } +alloy-transport-ws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } +alloy-node-bindings = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } +alloy-network-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } foundry-compilers = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } foundry-compilers-artifacts = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } @@ -353,4 +353,4 @@ foundry-compilers-artifacts-solc = { git = "https://github.com/SeismicSystems/se foundry-compilers-artifacts-vyper = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } foundry-compilers-core = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } -seismic-enclave = { git = "https://github.com/SeismicSystems/seismic-enclave.git", rev = "788ae84"} \ No newline at end of file +seismic-enclave = { git = "https://github.com/SeismicSystems/seismic-enclave.git", rev = "8e18a1e"} \ No newline at end of file diff --git a/crates/anvil/src/eth/api.rs b/crates/anvil/src/eth/api.rs index 85341c5ae..5bd27f4b7 100644 --- a/crates/anvil/src/eth/api.rs +++ b/crates/anvil/src/eth/api.rs @@ -1190,8 +1190,8 @@ impl EthApi { BlockchainError::Message(format!("Failed to recover signer: {e:?}")) })?; let mut request = WithOtherFields::new(tx); - println!("call request to seismic_call: {:?}", request); request.inner.from = Some(sender); + self.seismic_call(request, block_number, overrides).await } alloy_rpc_types::SeismicCallRequest::Bytes(bytes) => { diff --git a/crates/anvil/src/eth/backend/mem/mod.rs b/crates/anvil/src/eth/backend/mem/mod.rs index 17616522e..967fb6e25 100644 --- a/crates/anvil/src/eth/backend/mem/mod.rs +++ b/crates/anvil/src/eth/backend/mem/mod.rs @@ -1415,8 +1415,8 @@ impl Backend { let data = input.into_input().unwrap_or_default(); let data = match request.inner.seismic_elements { Some(seismic_elements) => seismic_elements - .server_encrypt(&MockEnclaveClient::new(), &data) - .expect("failed to encrypt seismic elements"), + .server_decrypt(&MockEnclaveClient::new(), &data) + .expect("failed to decrypt seismic elements"), None => data, }; diff --git a/crates/anvil/tests/it/seismic.rs b/crates/anvil/tests/it/seismic.rs index 7a69cd4c3..0b5a548d5 100644 --- a/crates/anvil/tests/it/seismic.rs +++ b/crates/anvil/tests/it/seismic.rs @@ -20,8 +20,8 @@ use alloy_signer_local::PrivateKeySigner; use alloy_sol_types::{sol, SolCall, SolValue}; use anvil::{spawn, NodeConfig}; use secp256k1::{PublicKey, SecretKey}; -use seismic_enclave::{aes_decrypt, ecdh_decrypt}; -use std::fs; +use seismic_enclave::aes_decrypt; +use std::{fs, str::FromStr}; // common utils pub const TEST_PRECOMPILES_BYTECODE_PATH: &str = "/tests/it/seismic_precompiles_test_bytecode.txt"; @@ -64,12 +64,20 @@ pub fn concat_input_data(selector: &str, value: Bytes) -> Bytes { input_data.into() } -pub fn get_sk(sk_wallet: &PrivateKeySigner) -> SecretKey { - SecretKey::from_slice(&sk_wallet.credential().to_bytes()).expect("32 bytes, within curve order") +pub fn get_encryption_nonce() -> U96 { + U96::MAX } -pub fn get_pk(sk_wallet: &PrivateKeySigner) -> PublicKey { - PublicKey::from_secret_key_global(&get_sk(sk_wallet)) +pub fn get_seismic_elements() -> TxSeismicElements { + let encryption_sk = get_encryption_private_key(); + let encryption_pk = PublicKey::from_secret_key_global(&encryption_sk); + let encryption_nonce = get_encryption_nonce(); + TxSeismicElements { encryption_pubkey: encryption_pk, encryption_nonce, message_version: 0 } +} + +pub fn get_encryption_private_key() -> SecretKey { + SecretKey::from_str("000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f") + .expect("Invalid private key") } pub async fn get_unsigned_seismic_tx_request( @@ -80,20 +88,9 @@ pub async fn get_unsigned_seismic_tx_request( chain_id: u64, plaintext: Bytes, ) -> TransactionRequest { - let encryption_sk = get_sk(signer); - let encryption_pk = get_pk(signer); - - println!("nonce: {:?}", nonce); - let encryption_nonce = U96::from(nonce); - println!("encryption_nonce: {:?}", encryption_nonce); - - let seismic_elements = TxSeismicElements { - encryption_pubkey: encryption_pk, - encryption_nonce, - ..Default::default() - }; - - let encrypted_input = seismic_elements.client_encrypt(&plaintext, &pk, &encryption_sk).unwrap(); + let encrypted_input = get_seismic_elements() + .client_encrypt(&plaintext, &pk, &get_encryption_private_key()) + .unwrap(); TransactionRequest { from: Some(signer.address()), @@ -105,7 +102,7 @@ pub async fn get_unsigned_seismic_tx_request( chain_id: Some(chain_id), input: TransactionInput { input: Some(Bytes::from(encrypted_input)), data: None }, transaction_type: Some(TxSeismic::TX_TYPE), - seismic_elements: Some(seismic_elements), + seismic_elements: Some(get_seismic_elements()), ..Default::default() } } @@ -154,6 +151,7 @@ async fn test_seismic_transaction_rpc() { SeismicUnsignedProvider::new(reqwest::Url::parse(handle.http_endpoint().as_str()).unwrap()); let deployer = handle.dev_accounts().next().unwrap(); let network_pubkey = provider.get_tee_pubkey().await.unwrap(); + let plaintext_bytecode = test_utils::ContractTestContext::get_deploy_input_plaintext(); // send a send_raw_transaction bytes @@ -239,13 +237,9 @@ async fn test_seismic_transaction_rpc() { .await .unwrap(); - let decrypted = ecdh_decrypt( - &network_pubkey, - &get_sk(&signer), - &res, - provider.get_transaction_count(deployer).await.unwrap(), - ) - .unwrap(); + let decrypted = get_seismic_elements() + .client_decrypt(&res, &network_pubkey, &get_encryption_private_key()) + .unwrap(); assert_eq!(Bytes::from(decrypted), test_utils::ContractTestContext::get_code()); } @@ -380,9 +374,9 @@ async fn test_seismic_precompiles_end_to_end() { // 5a. AES decryption with your local private key let secp_private = secp256k1::SecretKey::from_slice(private_key.as_ref()).unwrap(); let aes_key: &[u8; 32] = &secp_private.secret_bytes()[0..32].try_into().unwrap(); + let nonce: [u8; 12] = decoded.indexed[0].abi_encode_packed().try_into().unwrap(); let decrypted_locally = - aes_decrypt(aes_key.into(), &ciphertext, decoded.indexed[0].abi_encode_packed()) - .expect("AES decryption failed"); + aes_decrypt(aes_key.into(), &ciphertext, nonce).expect("AES decryption failed"); assert_eq!(decrypted_locally, message); // 5b. Decrypt the "output" from the read call From 83dc03bbef3cc38849bc0e21a48f22d476d6ffc1 Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Wed, 19 Mar 2025 09:45:02 -0400 Subject: [PATCH 069/130] Upgrade alloy core (#110) --- Cargo.lock | 108 ++++++++++++++++--------------- Cargo.toml | 78 +++++++++++----------- crates/cast/src/lib.rs | 7 +- crates/cheatcodes/src/json.rs | 3 +- crates/common/fmt/Cargo.toml | 1 + crates/common/fmt/src/dynamic.rs | 2 + 6 files changed, 103 insertions(+), 96 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index aa4d243dd..11356d3f1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "alloy-consensus" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" dependencies = [ "alloy-dyn-abi", "alloy-eips", @@ -125,7 +125,7 @@ dependencies = [ "derive_more", "jsonrpsee", "k256", - "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=8e18a1e)", + "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=352164b)", "serde", "serde_json", ] @@ -133,7 +133,7 @@ dependencies = [ [[package]] name = "alloy-consensus-any" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" dependencies = [ "alloy-consensus", "alloy-eips", @@ -146,7 +146,7 @@ dependencies = [ [[package]] name = "alloy-contract" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -166,7 +166,7 @@ dependencies = [ [[package]] name = "alloy-dyn-abi" version = "0.8.15" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=77693d2#77693d2debe65066ec9955b65bfe4fb2b0e83608" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=5dc07cc#5dc07cc6a675a701b51ddfa4e655b3013a358b31" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -214,7 +214,7 @@ dependencies = [ [[package]] name = "alloy-eips" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" dependencies = [ "alloy-dyn-abi", "alloy-eip2930", @@ -232,7 +232,7 @@ dependencies = [ [[package]] name = "alloy-genesis" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" dependencies = [ "alloy-primitives", "alloy-serde", @@ -243,7 +243,7 @@ dependencies = [ [[package]] name = "alloy-json-abi" version = "0.8.15" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=77693d2#77693d2debe65066ec9955b65bfe4fb2b0e83608" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=5dc07cc#5dc07cc6a675a701b51ddfa4e655b3013a358b31" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -254,7 +254,7 @@ dependencies = [ [[package]] name = "alloy-json-rpc" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -267,7 +267,7 @@ dependencies = [ [[package]] name = "alloy-network" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -291,7 +291,7 @@ dependencies = [ [[package]] name = "alloy-network-primitives" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" dependencies = [ "alloy-consensus", "alloy-eips", @@ -303,7 +303,7 @@ dependencies = [ [[package]] name = "alloy-node-bindings" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" dependencies = [ "alloy-genesis", "alloy-primitives", @@ -319,7 +319,7 @@ dependencies = [ [[package]] name = "alloy-primitives" version = "0.8.15" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=77693d2#77693d2debe65066ec9955b65bfe4fb2b0e83608" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=5dc07cc#5dc07cc6a675a701b51ddfa4e655b3013a358b31" dependencies = [ "alloy-rlp", "arbitrary", @@ -350,7 +350,7 @@ dependencies = [ [[package]] name = "alloy-provider" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" dependencies = [ "alloy-chains", "alloy-consensus", @@ -380,7 +380,7 @@ dependencies = [ "pin-project 1.1.10", "reqwest", "schnellru", - "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=8e18a1e)", + "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=352164b)", "serde", "serde_json", "thiserror 2.0.12", @@ -393,7 +393,7 @@ dependencies = [ [[package]] name = "alloy-pubsub" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -433,7 +433,7 @@ dependencies = [ [[package]] name = "alloy-rpc-client" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -458,7 +458,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" dependencies = [ "alloy-primitives", "alloy-rpc-types-anvil", @@ -473,7 +473,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -484,7 +484,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -494,7 +494,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-debug" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" dependencies = [ "alloy-primitives", "serde", @@ -503,7 +503,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-engine" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" dependencies = [ "alloy-consensus", "alloy-eips", @@ -520,7 +520,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -539,7 +539,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-trace" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -552,7 +552,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-txpool" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -563,10 +563,10 @@ dependencies = [ [[package]] name = "alloy-serde" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" dependencies = [ "alloy-primitives", - "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=8e18a1e)", + "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=352164b)", "serde", "serde_json", ] @@ -574,7 +574,7 @@ dependencies = [ [[package]] name = "alloy-signer" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" dependencies = [ "alloy-dyn-abi", "alloy-primitives", @@ -589,7 +589,7 @@ dependencies = [ [[package]] name = "alloy-signer-aws" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" dependencies = [ "alloy-consensus", "alloy-network", @@ -606,7 +606,7 @@ dependencies = [ [[package]] name = "alloy-signer-gcp" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" dependencies = [ "alloy-consensus", "alloy-network", @@ -623,7 +623,7 @@ dependencies = [ [[package]] name = "alloy-signer-ledger" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -642,7 +642,7 @@ dependencies = [ [[package]] name = "alloy-signer-local" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" dependencies = [ "alloy-consensus", "alloy-network", @@ -660,7 +660,7 @@ dependencies = [ [[package]] name = "alloy-signer-trezor" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" dependencies = [ "alloy-consensus", "alloy-network", @@ -676,7 +676,7 @@ dependencies = [ [[package]] name = "alloy-sol-macro" version = "0.8.15" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=77693d2#77693d2debe65066ec9955b65bfe4fb2b0e83608" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=5dc07cc#5dc07cc6a675a701b51ddfa4e655b3013a358b31" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", @@ -689,7 +689,7 @@ dependencies = [ [[package]] name = "alloy-sol-macro-expander" version = "0.8.15" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=77693d2#77693d2debe65066ec9955b65bfe4fb2b0e83608" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=5dc07cc#5dc07cc6a675a701b51ddfa4e655b3013a358b31" dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", @@ -707,7 +707,7 @@ dependencies = [ [[package]] name = "alloy-sol-macro-input" version = "0.8.15" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=77693d2#77693d2debe65066ec9955b65bfe4fb2b0e83608" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=5dc07cc#5dc07cc6a675a701b51ddfa4e655b3013a358b31" dependencies = [ "alloy-json-abi", "const-hex", @@ -723,7 +723,7 @@ dependencies = [ [[package]] name = "alloy-sol-type-parser" version = "0.8.15" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=77693d2#77693d2debe65066ec9955b65bfe4fb2b0e83608" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=5dc07cc#5dc07cc6a675a701b51ddfa4e655b3013a358b31" dependencies = [ "serde", "winnow 0.6.24", @@ -732,11 +732,12 @@ dependencies = [ [[package]] name = "alloy-sol-types" version = "0.8.15" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=77693d2#77693d2debe65066ec9955b65bfe4fb2b0e83608" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=5dc07cc#5dc07cc6a675a701b51ddfa4e655b3013a358b31" dependencies = [ "alloy-json-abi", "alloy-primitives", "alloy-sol-macro", + "arbitrary", "const-hex", "serde", ] @@ -744,7 +745,7 @@ dependencies = [ [[package]] name = "alloy-transport" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" dependencies = [ "alloy-json-rpc", "base64 0.22.1", @@ -763,7 +764,7 @@ dependencies = [ [[package]] name = "alloy-transport-http" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -777,7 +778,7 @@ dependencies = [ [[package]] name = "alloy-transport-ipc" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" dependencies = [ "alloy-json-rpc", "alloy-pubsub", @@ -797,7 +798,7 @@ dependencies = [ [[package]] name = "alloy-transport-ws" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d5ffa1f#d5ffa1fff1826cafd85017fab8fe38886bf1e9e7" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" dependencies = [ "alloy-pubsub", "alloy-transport", @@ -972,7 +973,7 @@ dependencies = [ "reqwest", "revm", "secp256k1", - "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=8e18a1e)", + "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=352164b)", "serde", "serde_json", "serde_repr", @@ -1008,7 +1009,7 @@ dependencies = [ "op-alloy-consensus", "rand 0.8.5", "revm", - "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=8e18a1e)", + "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=352164b)", "serde", "serde_json", "thiserror 2.0.12", @@ -4069,6 +4070,7 @@ dependencies = [ "alloy-primitives", "alloy-rpc-types", "alloy-serde", + "alloy-sol-types", "chrono", "comfy-table", "foundry-macros", @@ -4385,7 +4387,7 @@ dependencies = [ [[package]] name = "foundry-fork-db" version = "0.9.0" -source = "git+https://github.com/SeismicSystems/seismic-foundry-fork-db.git?rev=86fa364#86fa36401508eb87d8ac7b5cbd0af21f6e22e9a0" +source = "git+https://github.com/SeismicSystems/seismic-foundry-fork-db.git?rev=66c1196#66c1196964055d465cdee10d13efb54200b8d18b" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -8142,7 +8144,7 @@ dependencies = [ [[package]] name = "revm" version = "18.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=77a08e9#77a08e9b70e2a29e83f1a15aacaecb5dfc7d7b70" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=32180cc#32180cc9c7df873d2bf8898ea811fcd227f9212f" dependencies = [ "auto_impl", "cfg-if", @@ -8163,7 +8165,7 @@ dependencies = [ [[package]] name = "revm-inspectors" version = "0.13.0" -source = "git+https://github.com/SeismicSystems/seismic-revm-inspectors.git?rev=9868b93#9868b93ab3edc0c5e495f85f1474a8ef23208f88" +source = "git+https://github.com/SeismicSystems/seismic-revm-inspectors.git?rev=186aab18#186aab1839ae6b5b37c6746d4814359478331e45" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -8181,7 +8183,7 @@ dependencies = [ [[package]] name = "revm-interpreter" version = "14.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=77a08e9#77a08e9b70e2a29e83f1a15aacaecb5dfc7d7b70" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=32180cc#32180cc9c7df873d2bf8898ea811fcd227f9212f" dependencies = [ "revm-primitives", "serde", @@ -8190,7 +8192,7 @@ dependencies = [ [[package]] name = "revm-precompile" version = "15.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=77a08e9#77a08e9b70e2a29e83f1a15aacaecb5dfc7d7b70" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=32180cc#32180cc9c7df873d2bf8898ea811fcd227f9212f" dependencies = [ "aurora-engine-modexp", "blst", @@ -8209,7 +8211,7 @@ dependencies = [ [[package]] name = "revm-primitives" version = "14.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=77a08e9#77a08e9b70e2a29e83f1a15aacaecb5dfc7d7b70" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=32180cc#32180cc9c7df873d2bf8898ea811fcd227f9212f" dependencies = [ "alloy-eip2930", "alloy-eip7702", @@ -8858,7 +8860,7 @@ dependencies = [ [[package]] name = "seismic-enclave" version = "0.1.0" -source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=8e18a1e#8e18a1e02a874afb26b2b108f758c58b346b2b6e" +source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=352164b#352164b0f696583887c717cfc44dceadb99d40db" dependencies = [ "aes-gcm", "anyhow", @@ -8910,7 +8912,7 @@ dependencies = [ [[package]] name = "seismic-enclave-derive" version = "0.1.0" -source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=8e18a1e#8e18a1e02a874afb26b2b108f758c58b346b2b6e" +source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=352164b#352164b0f696583887c717cfc44dceadb99d40db" dependencies = [ "proc-macro2", "quote", @@ -9672,7 +9674,7 @@ dependencies = [ [[package]] name = "syn-solidity" version = "0.8.15" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=77693d2#77693d2debe65066ec9955b65bfe4fb2b0e83608" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=5dc07cc#5dc07cc6a675a701b51ddfa4e655b3013a358b31" dependencies = [ "paste", "proc-macro2", diff --git a/Cargo.toml b/Cargo.toml index 6d085ccbc..1d0c895a5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -300,52 +300,52 @@ seismic-enclave = "0.1.0" # If our dependencies depend on these things, # then this will override whatever versions they point to # and instead use our local version -foundry-fork-db = { git = "https://github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "86fa364" } +foundry-fork-db = { git = "https://github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "66c1196" } # seismic-revm -revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "77a08e9" } -revm-primitives = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "77a08e9" } -revm-interpreter = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "77a08e9" } +revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "32180cc" } +revm-primitives = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "32180cc" } +revm-interpreter = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "32180cc" } # seismic-revm-inspectors -revm-inspectors = { git = "https://github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "9868b93" } +revm-inspectors = { git = "https://github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "186aab18" } # seismic-alloy-core -alloy-dyn-abi = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "77693d2" } -alloy-json-abi = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "77693d2" } -alloy-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "77693d2" } -alloy-sol-macro = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "77693d2" } -alloy-sol-macro-expander = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "77693d2" } -alloy-sol-macro-input = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "77693d2" } -alloy-sol-types = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "77693d2" } -alloy-sol-type-parser = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "77693d2" } +alloy-dyn-abi = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "5dc07cc" } +alloy-json-abi = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "5dc07cc" } +alloy-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "5dc07cc" } +alloy-sol-macro = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "5dc07cc" } +alloy-sol-macro-expander = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "5dc07cc" } +alloy-sol-macro-input = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "5dc07cc" } +alloy-sol-types = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "5dc07cc" } +alloy-sol-type-parser = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "5dc07cc" } # seismic-alloy -alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } -alloy-contract = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } -alloy-eips = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } -alloy-genesis = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } -alloy-json-rpc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } -alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } -alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } -alloy-pubsub = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } -alloy-rpc-client = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } -alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } -alloy-rpc-types-trace = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } -alloy-rpc-types-eth = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } -alloy-serde = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } -alloy-signer = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } -alloy-signer-aws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } -alloy-signer-gcp = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } -alloy-signer-ledger = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } -alloy-signer-local = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } -alloy-signer-trezor = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } -alloy-transport = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } -alloy-transport-http = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } -alloy-transport-ipc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } -alloy-transport-ws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } -alloy-node-bindings = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } -alloy-network-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d5ffa1f" } +alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } +alloy-contract = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } +alloy-eips = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } +alloy-genesis = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } +alloy-json-rpc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } +alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } +alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } +alloy-pubsub = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } +alloy-rpc-client = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } +alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } +alloy-rpc-types-trace = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } +alloy-rpc-types-eth = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } +alloy-serde = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } +alloy-signer = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } +alloy-signer-aws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } +alloy-signer-gcp = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } +alloy-signer-ledger = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } +alloy-signer-local = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } +alloy-signer-trezor = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } +alloy-transport = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } +alloy-transport-http = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } +alloy-transport-ipc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } +alloy-transport-ws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } +alloy-node-bindings = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } +alloy-network-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } foundry-compilers = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } foundry-compilers-artifacts = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } @@ -353,4 +353,4 @@ foundry-compilers-artifacts-solc = { git = "https://github.com/SeismicSystems/se foundry-compilers-artifacts-vyper = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } foundry-compilers-core = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } -seismic-enclave = { git = "https://github.com/SeismicSystems/seismic-enclave.git", rev = "8e18a1e"} \ No newline at end of file +seismic-enclave = { git = "https://github.com/SeismicSystems/seismic-enclave.git", rev = "352164b"} diff --git a/crates/cast/src/lib.rs b/crates/cast/src/lib.rs index fb7d3f836..61a0b6751 100644 --- a/crates/cast/src/lib.rs +++ b/crates/cast/src/lib.rs @@ -1822,9 +1822,10 @@ impl SimpleCast { DynSolType::CustomStruct { .. } => { eyre::bail!("Type `{v_ty}` is not supported as a mapping key") } - DynSolType::Saddress | DynSolType::Sint(_) | DynSolType::Suint(_) => { - hasher.update(v.as_word().unwrap()) - } + DynSolType::Sbool | + DynSolType::Saddress | + DynSolType::Sint(_) | + DynSolType::Suint(_) => hasher.update(v.as_word().unwrap()), } let p = DynSolType::Uint(256) diff --git a/crates/cheatcodes/src/json.rs b/crates/cheatcodes/src/json.rs index 7bd4c56ea..64ed60005 100644 --- a/crates/cheatcodes/src/json.rs +++ b/crates/cheatcodes/src/json.rs @@ -6,7 +6,7 @@ use alloy_primitives::{ aliases::{SInt, SUInt}, hex, Address, SAddress, B256, I256, }; -use alloy_sol_types::SolValue; +use alloy_sol_types::{sol_data::Sbool, SolValue}; use foundry_common::fs; use foundry_config::fs_permissions::FsAccessKind; use serde_json::{Map, Value}; @@ -632,6 +632,7 @@ fn serialize_value_as_json(value: DynSolValue) -> Result { values.into_iter().map(serialize_value_as_json).collect::>()?, )), DynSolValue::Function(_) => bail!("cannot serialize function pointer"), + DynSolValue::Sbool(Sbool(b)) => Ok(Value::Bool(b)), DynSolValue::Saddress(SAddress(a)) => Ok(Value::String(a.to_string())), DynSolValue::Sint(SInt(i), _) => { let suint = serde_json::from_str(&i.to_string())?; diff --git a/crates/common/fmt/Cargo.toml b/crates/common/fmt/Cargo.toml index 2a713d0a0..31477b90b 100644 --- a/crates/common/fmt/Cargo.toml +++ b/crates/common/fmt/Cargo.toml @@ -16,6 +16,7 @@ workspace = true [dependencies] alloy-primitives.workspace = true alloy-dyn-abi = { workspace = true, features = ["eip712", "seismic"] } +alloy-sol-types.workspace = true # ui alloy-consensus.workspace = true diff --git a/crates/common/fmt/src/dynamic.rs b/crates/common/fmt/src/dynamic.rs index 9ceefac76..2d2dbfbf2 100644 --- a/crates/common/fmt/src/dynamic.rs +++ b/crates/common/fmt/src/dynamic.rs @@ -4,6 +4,7 @@ use alloy_primitives::{ aliases::{SInt, SUInt}, hex, SAddress, }; +use alloy_sol_types::sol_data::Sbool; use std::fmt; /// [`DynSolValue`] formatter. @@ -73,6 +74,7 @@ impl DynValueFormatter { self.tuple(tuple, f) } } + &DynSolValue::Sbool(Sbool(inner)) => write!(f, "{}", inner), &DynSolValue::Saddress(SAddress(inner)) => write!(f, "{inner}"), &DynSolValue::Sint(SInt(inner), _) => write!(f, "{inner}"), &DynSolValue::Suint(SUInt(inner), _) => write!(f, "{inner}"), From f3ec301403337ab6580baf13cbe9cd742c558592 Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Wed, 19 Mar 2025 11:44:22 -0400 Subject: [PATCH 070/130] update alloy: typed data nonce should be u96 (#111) --- Cargo.lock | 62 +++++++++++++++++++++++++++--------------------------- Cargo.toml | 50 +++++++++++++++++++++---------------------- 2 files changed, 56 insertions(+), 56 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 11356d3f1..6f568a046 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "alloy-consensus" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" dependencies = [ "alloy-dyn-abi", "alloy-eips", @@ -133,7 +133,7 @@ dependencies = [ [[package]] name = "alloy-consensus-any" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" dependencies = [ "alloy-consensus", "alloy-eips", @@ -146,7 +146,7 @@ dependencies = [ [[package]] name = "alloy-contract" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -214,7 +214,7 @@ dependencies = [ [[package]] name = "alloy-eips" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" dependencies = [ "alloy-dyn-abi", "alloy-eip2930", @@ -232,7 +232,7 @@ dependencies = [ [[package]] name = "alloy-genesis" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" dependencies = [ "alloy-primitives", "alloy-serde", @@ -254,7 +254,7 @@ dependencies = [ [[package]] name = "alloy-json-rpc" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -267,7 +267,7 @@ dependencies = [ [[package]] name = "alloy-network" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -291,7 +291,7 @@ dependencies = [ [[package]] name = "alloy-network-primitives" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" dependencies = [ "alloy-consensus", "alloy-eips", @@ -303,7 +303,7 @@ dependencies = [ [[package]] name = "alloy-node-bindings" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" dependencies = [ "alloy-genesis", "alloy-primitives", @@ -350,7 +350,7 @@ dependencies = [ [[package]] name = "alloy-provider" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" dependencies = [ "alloy-chains", "alloy-consensus", @@ -393,7 +393,7 @@ dependencies = [ [[package]] name = "alloy-pubsub" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -433,7 +433,7 @@ dependencies = [ [[package]] name = "alloy-rpc-client" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -458,7 +458,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" dependencies = [ "alloy-primitives", "alloy-rpc-types-anvil", @@ -473,7 +473,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -484,7 +484,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -494,7 +494,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-debug" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" dependencies = [ "alloy-primitives", "serde", @@ -503,7 +503,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-engine" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" dependencies = [ "alloy-consensus", "alloy-eips", @@ -520,7 +520,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -539,7 +539,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-trace" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -552,7 +552,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-txpool" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -563,7 +563,7 @@ dependencies = [ [[package]] name = "alloy-serde" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" dependencies = [ "alloy-primitives", "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=352164b)", @@ -574,7 +574,7 @@ dependencies = [ [[package]] name = "alloy-signer" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" dependencies = [ "alloy-dyn-abi", "alloy-primitives", @@ -589,7 +589,7 @@ dependencies = [ [[package]] name = "alloy-signer-aws" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" dependencies = [ "alloy-consensus", "alloy-network", @@ -606,7 +606,7 @@ dependencies = [ [[package]] name = "alloy-signer-gcp" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" dependencies = [ "alloy-consensus", "alloy-network", @@ -623,7 +623,7 @@ dependencies = [ [[package]] name = "alloy-signer-ledger" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -642,7 +642,7 @@ dependencies = [ [[package]] name = "alloy-signer-local" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" dependencies = [ "alloy-consensus", "alloy-network", @@ -660,7 +660,7 @@ dependencies = [ [[package]] name = "alloy-signer-trezor" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" dependencies = [ "alloy-consensus", "alloy-network", @@ -745,7 +745,7 @@ dependencies = [ [[package]] name = "alloy-transport" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" dependencies = [ "alloy-json-rpc", "base64 0.22.1", @@ -764,7 +764,7 @@ dependencies = [ [[package]] name = "alloy-transport-http" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -778,7 +778,7 @@ dependencies = [ [[package]] name = "alloy-transport-ipc" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" dependencies = [ "alloy-json-rpc", "alloy-pubsub", @@ -798,7 +798,7 @@ dependencies = [ [[package]] name = "alloy-transport-ws" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=0c6a608#0c6a608f34efac31e018139313887b1aa95db9bc" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" dependencies = [ "alloy-pubsub", "alloy-transport", diff --git a/Cargo.toml b/Cargo.toml index 1d0c895a5..2ec0bc6af 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -321,31 +321,31 @@ alloy-sol-types = { git = "https://github.com/SeismicSystems/seismic-alloy-core. alloy-sol-type-parser = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "5dc07cc" } # seismic-alloy -alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } -alloy-contract = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } -alloy-eips = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } -alloy-genesis = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } -alloy-json-rpc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } -alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } -alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } -alloy-pubsub = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } -alloy-rpc-client = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } -alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } -alloy-rpc-types-trace = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } -alloy-rpc-types-eth = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } -alloy-serde = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } -alloy-signer = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } -alloy-signer-aws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } -alloy-signer-gcp = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } -alloy-signer-ledger = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } -alloy-signer-local = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } -alloy-signer-trezor = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } -alloy-transport = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } -alloy-transport-http = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } -alloy-transport-ipc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } -alloy-transport-ws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } -alloy-node-bindings = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } -alloy-network-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "0c6a608" } +alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } +alloy-contract = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } +alloy-eips = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } +alloy-genesis = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } +alloy-json-rpc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } +alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } +alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } +alloy-pubsub = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } +alloy-rpc-client = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } +alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } +alloy-rpc-types-trace = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } +alloy-rpc-types-eth = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } +alloy-serde = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } +alloy-signer = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } +alloy-signer-aws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } +alloy-signer-gcp = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } +alloy-signer-ledger = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } +alloy-signer-local = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } +alloy-signer-trezor = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } +alloy-transport = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } +alloy-transport-http = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } +alloy-transport-ipc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } +alloy-transport-ws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } +alloy-node-bindings = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } +alloy-network-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } foundry-compilers = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } foundry-compilers-artifacts = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } From f3916a5d73dcb1376027876b03e22baa85a10cf6 Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Wed, 19 Mar 2025 12:56:04 -0400 Subject: [PATCH 071/130] CI: make sure latest seismic-viem works vs anvil (#107) --- .github/workflows/seismic.yml | 21 +++++ .gitignore | 3 + bunfig.toml | 8 ++ crates/anvil/src/eth/api.rs | 1 - package.json | 9 ++ packages/client-tests/.gitignore | 34 +++++++ packages/client-tests/README.md | 13 +++ packages/client-tests/package.json | 20 ++++ packages/client-tests/tsconfig.json | 27 ++++++ packages/client-tests/viem.test.ts | 141 ++++++++++++++++++++++++++++ 10 files changed, 276 insertions(+), 1 deletion(-) create mode 100644 bunfig.toml create mode 100644 package.json create mode 100644 packages/client-tests/.gitignore create mode 100644 packages/client-tests/README.md create mode 100644 packages/client-tests/package.json create mode 100644 packages/client-tests/tsconfig.json create mode 100644 packages/client-tests/viem.test.ts diff --git a/.github/workflows/seismic.yml b/.github/workflows/seismic.yml index c83f38134..6284d14f4 100644 --- a/.github/workflows/seismic.yml +++ b/.github/workflows/seismic.yml @@ -69,3 +69,24 @@ jobs: # run: cargo test --bin sforge # - name: sanvil tests # run: cargo test --bin sanvil + + viem: + runs-on: large-github-runner + timeout-minutes: 30 + env: + SFOUNDRY_ROOT: /home/runner/work/seismic-foundry/seismic-foundry + steps: + - uses: actions/checkout@v4 + - uses: oven-sh/setup-bun@v2 + with: + bun-version: 1.2.5 + - uses: dtolnay/rust-toolchain@stable + - uses: Swatinem/rust-cache@v2 + with: + shared-key: "viem-cache" + - name: sanvil build + run: cargo build --bin sanvil + - name: Install dependencies + run: bun install + - name: Run viem tests vs. Anvil + run: bun test diff --git a/.gitignore b/.gitignore index 5b61e3202..7075ca882 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,6 @@ snapshots/ out.json .idea .vscode + +node_modules +bun.lock diff --git a/bunfig.toml b/bunfig.toml new file mode 100644 index 000000000..91bc5f6d0 --- /dev/null +++ b/bunfig.toml @@ -0,0 +1,8 @@ +[fmt] +line_width = 80 +indent_width = 2 +semicolons = false + +[install] +# This ensures Bun installs packages in a way compatible with workspaces +hoistingLimits = "workspaces" diff --git a/crates/anvil/src/eth/api.rs b/crates/anvil/src/eth/api.rs index 5bd27f4b7..3675e4fd2 100644 --- a/crates/anvil/src/eth/api.rs +++ b/crates/anvil/src/eth/api.rs @@ -1168,7 +1168,6 @@ impl EthApi { } } alloy_rpc_types::SeismicCallRequest::TypedData(td) => { - println!("call typed data: {:?}", td); let typed_tx = TypedTransaction::decode_712(&td).map_err(|e| { BlockchainError::Message(format!( "Failed to decode typed data into seismic tx: {:?}", diff --git a/package.json b/package.json new file mode 100644 index 000000000..2599f335d --- /dev/null +++ b/package.json @@ -0,0 +1,9 @@ +{ + "workspaces": [ + "packages/**" + ], + "private": true, + "scripts": { + "test": "bun run --cwd packages/client-tests test" + } +} diff --git a/packages/client-tests/.gitignore b/packages/client-tests/.gitignore new file mode 100644 index 000000000..a14702c40 --- /dev/null +++ b/packages/client-tests/.gitignore @@ -0,0 +1,34 @@ +# dependencies (bun install) +node_modules + +# output +out +dist +*.tgz + +# code coverage +coverage +*.lcov + +# logs +logs +_.log +report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json + +# dotenv environment variable files +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# caches +.eslintcache +.cache +*.tsbuildinfo + +# IntelliJ based IDEs +.idea + +# Finder (MacOS) folder config +.DS_Store diff --git a/packages/client-tests/README.md b/packages/client-tests/README.md new file mode 100644 index 000000000..4c4785748 --- /dev/null +++ b/packages/client-tests/README.md @@ -0,0 +1,13 @@ +# Seismic Viem tests + +To install dependencies: + +```bash +bun install +``` + +To run tests: + +```bash +bun test +``` diff --git a/packages/client-tests/package.json b/packages/client-tests/package.json new file mode 100644 index 000000000..84bdde09b --- /dev/null +++ b/packages/client-tests/package.json @@ -0,0 +1,20 @@ +{ + "name": "client-tests", + "private": true, + "scripts": { + "test": "bun test" + }, + "module": "index.ts", + "type": "module", + "devDependencies": { + "@types/bun": "latest" + }, + "peerDependencies": { + "typescript": "^5" + }, + "dependencies": { + "viem": "2.x", + "seismic-viem": "latest", + "seismic-viem-tests": "latest" + } +} diff --git a/packages/client-tests/tsconfig.json b/packages/client-tests/tsconfig.json new file mode 100644 index 000000000..238655f2c --- /dev/null +++ b/packages/client-tests/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + // Enable latest features + "lib": ["ESNext", "DOM"], + "target": "ESNext", + "module": "ESNext", + "moduleDetection": "force", + "jsx": "react-jsx", + "allowJs": true, + + // Bundler mode + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "noEmit": true, + + // Best practices + "strict": true, + "skipLibCheck": true, + "noFallthroughCasesInSwitch": true, + + // Some stricter flags (disabled by default) + "noUnusedLocals": false, + "noUnusedParameters": false, + "noPropertyAccessFromIndexSignature": false + } +} diff --git a/packages/client-tests/viem.test.ts b/packages/client-tests/viem.test.ts new file mode 100644 index 000000000..e647b6a0d --- /dev/null +++ b/packages/client-tests/viem.test.ts @@ -0,0 +1,141 @@ +import type { Chain, Hex } from "viem" +import { sanvil } from "seismic-viem" +import { generatePrivateKey, privateKeyToAccount } from "viem/accounts" +import { beforeAll, afterAll, describe, test } from "bun:test" +import { + setupNode, + testAesKeygen, + testAesGcm, + testEcdh, + testHkdfHex, + testHkdfString, + testRng, + testRngWithPers, + testSecp256k1, + testSeismicCallTypedData, + testSeismicTx, + testSeismicTxEncoding, + testSeismicTxTypedData, + testWsConnection, + buildNode, +} from "seismic-viem-tests" + +const TIMEOUT_MS = 10_000 +const chain = sanvil +const port = 8545 + +const TEST_ACCOUNT_PRIVATE_KEY = + '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80' +const account = privateKeyToAccount(TEST_ACCOUNT_PRIVATE_KEY) +const encryptionSk = '0x311d54d3bf8359c70827122a44a7b4458733adce3c51c6b59d9acfce85e07505' +const encryptionPubkey = '0x028e76821eb4d77fd30223ca971c49738eb5b5b71eabe93f96b348fdce788ae5a0' + + +let url: string +let wsUrl: string +let exitProcess: () => void +let pcParams: { chain: Chain, url: string } + +beforeAll(async () => { + await buildNode(chain) + const node = await setupNode(chain, { port, ws: true }) + pcParams = { chain, url: node.url } + exitProcess = node.exitProcess + url = node.url + wsUrl = `ws://localhost:${port}` +}) + +describe("Seismic Contract", async () => { + test( + "deploy & call contracts with seismic tx", + () => testSeismicTx({ chain, url, account }), + { + timeout: TIMEOUT_MS, + } + ) +}) + +describe("Seismic Transaction Encoding", async () => { + test( + "node detects and parses seismic transaction", + () => + testSeismicTxEncoding({ + chain, + account, + url, + encryptionSk, + encryptionPubkey, + }), + { + timeout: TIMEOUT_MS, + } + ) +}) + +describe("Typed Data", async () => { + test( + "client can sign a seismic typed message", + () => + testSeismicCallTypedData({ + chain, + account, + url, + encryptionSk, + encryptionPubkey, + }), + { timeout: TIMEOUT_MS } + ) + + test( + "client can sign via eth_signTypedData", + () => + testSeismicTxTypedData({ + account, + chain, + url, + encryptionSk, + encryptionPubkey, + }), + { timeout: TIMEOUT_MS } + ) +}) + +describe("AES", async () => { + test("generates AES key correctly", testAesKeygen) +}) + +describe("Websocket Connection", () => { + test( + "should connect to the ws", + async () => { + await testWsConnection({ + chain, + wsUrl, + }) + }, + { timeout: TIMEOUT_MS } + ) +}) + +describe("Seismic Precompiles", async () => { + test("RNG(1)", () => testRng({ chain, url }, 1), { timeout: TIMEOUT_MS }) + test("RNG(8)", () => testRng({ chain, url }, 8), { timeout: TIMEOUT_MS }) + test("RNG(16)", () => testRng({ chain, url }, 16), { timeout: TIMEOUT_MS }) + test("RNG(32)", () => testRng({ chain, url }, 32), { timeout: TIMEOUT_MS }) + test("RNG(32, pers)", () => testRngWithPers({ chain, url }, 32), { + timeout: TIMEOUT_MS, + }) + test("ECDH", () => testEcdh({ chain, url }), { timeout: TIMEOUT_MS }) + test("HKDF(string)", () => testHkdfString({ chain, url }), { + timeout: TIMEOUT_MS, + }) + test("HKDF(hex)", () => testHkdfHex({ chain, url }), { timeout: TIMEOUT_MS }) + test("AES-GCM", () => testAesGcm({ chain, url }), { timeout: TIMEOUT_MS }) + test("secp256k1", () => testSecp256k1({ chain, url }), { + timeout: TIMEOUT_MS, + }) +}) + +afterAll(() => { + exitProcess() +}) From dca7bebee8a652c90a5b3a2631b5cc687d776aa8 Mon Sep 17 00:00:00 2001 From: Lyron Co Ting Keh Date: Mon, 24 Mar 2025 13:53:26 -0400 Subject: [PATCH 072/130] Remove JQ dependency (#112) --- sfoundryup/sfoundryup | 388 +++++++++++++++++++++++------------------- 1 file changed, 211 insertions(+), 177 deletions(-) diff --git a/sfoundryup/sfoundryup b/sfoundryup/sfoundryup index 873ba45c2..b203792be 100755 --- a/sfoundryup/sfoundryup +++ b/sfoundryup/sfoundryup @@ -12,79 +12,90 @@ BINS=(sforge scast sanvil schisel) export RUSTFLAGS="${RUSTFLAGS:--C target-cpu=native}" main() { - while [[ -n $1 ]]; do - case $1 in - --) shift; break;; - -v|--version) shift; SEISMICUP_VERSION=$1;; - -p|--path) shift; SEISMICUP_LOCAL_REPO=$1;; - -j|--jobs) shift; SEISMICUP_JOBS=$1;; - -h|--help) - usage - exit 0 - ;; - *) - warn "unknown option: $1" - usage - exit 1 - ;; - esac - shift - done - - need_cmd git - need_cmd curl - need_cmd jq - - CARGO_BUILD_ARGS=(--release) - - if [ -n "$SEISMICUP_JOBS" ]; then - CARGO_BUILD_ARGS+=(--jobs "$SEISMICUP_JOBS") - fi - - banner - install_ssolc - - if [[ -n "$SEISMICUP_LOCAL_REPO" ]]; then - install_from_local_repo - else - install_from_remote_repo - fi + while [[ -n $1 ]]; do + case $1 in + --) + shift + break + ;; + -v | --version) + shift + SEISMICUP_VERSION=$1 + ;; + -p | --path) + shift + SEISMICUP_LOCAL_REPO=$1 + ;; + -j | --jobs) + shift + SEISMICUP_JOBS=$1 + ;; + -h | --help) + usage + exit 0 + ;; + *) + warn "unknown option: $1" + usage + exit 1 + ;; + esac + shift + done + + need_cmd git + need_cmd curl + + CARGO_BUILD_ARGS=(--release) + + if [ -n "$SEISMICUP_JOBS" ]; then + CARGO_BUILD_ARGS+=(--jobs "$SEISMICUP_JOBS") + fi + + banner + install_ssolc + + if [[ -n "$SEISMICUP_LOCAL_REPO" ]]; then + install_from_local_repo + else + install_from_remote_repo + fi } install_ssolc() { - echo "Starting ssolc installation..." - - # Detect OS and set installation paths - OS="$(uname -s)" - ARCH="$(uname -m)" - - case "$OS" in - Linux*) - OS_TYPE="linux" - INSTALL_DIR="/usr/local/bin" - ;; - Darwin*) - OS_TYPE="macos" - INSTALL_DIR="/usr/local/bin" - ;; - CYGWIN*|MINGW*|MSYS*|Windows_NT) - OS_TYPE="windows" - INSTALL_DIR="$PROGRAMFILES/Seismic/bin" - ;; - *) - echo "Unsupported OS: $OS" - exit 1 - ;; - esac - - case "$ARCH" in - x86_64) ARCH_TYPE="x86_64" ;; - arm64|aarch64) ARCH_TYPE="arm64" ;; - *) - echo "Unsupported architecture: $ARCH" - exit 1 - ;; - esac + echo "Starting ssolc installation..." + + # Detect OS and set installation paths + OS="$(uname -s)" + ARCH="$(uname -m)" + + case "$OS" in + Linux*) + OS_TYPE="linux" + INSTALL_DIR="/usr/local/bin" + ;; + Darwin*) + OS_TYPE="macos" + INSTALL_DIR="/usr/local/bin" + ;; + CYGWIN* | MINGW* | MSYS* | Windows_NT) + OS_TYPE="windows" + INSTALL_DIR="$PROGRAMFILES/Seismic/bin" + ;; + *) + echo "Unsupported OS: $OS" + exit 1 + ;; + esac + + case "$ARCH" in + x86_64) ARCH_TYPE="x86_64" ;; + arm64 | aarch64) ARCH_TYPE="arm64" ;; + *) + echo "Unsupported architecture: $ARCH" + exit 1 + ;; + esac # Set target info TARGET_NAME="ssolc-${OS_TYPE}-${ARCH_TYPE}" @@ -93,116 +104,139 @@ install_ssolc() { else TARGET_NAME="${TARGET_NAME}.tar.gz" fi - + if [[ "$OS_TYPE" == "windows" ]]; then SSOLC_BIN="${INSTALL_DIR}/ssolc.exe" else SSOLC_BIN="${INSTALL_DIR}/ssolc" fi - TEMP_DIR=$(mktemp -d) - trap 'rm -rf "$TEMP_DIR"' EXIT - - # Download the release - echo "Fetching latest release information..." - GITHUB_API_URL="https://api.github.com/repos/SeismicSystems/seismic-solidity/releases/latest" - ASSET_ID=$(curl -s "$GITHUB_API_URL" | \ - jq -r --arg name "$TARGET_NAME" '.assets[] | select(.name == $name) | .id') - - if [[ -z "$ASSET_ID" ]]; then - echo "Error: Asset $TARGET_NAME not found in the latest release." - exit 1 - fi - - echo "Downloading $TARGET_NAME..." - DOWNLOAD_PATH="$TEMP_DIR/$TARGET_NAME" - curl -L -H "Accept: application/octet-stream" \ - -o "$DOWNLOAD_PATH" \ - "https://api.github.com/repos/SeismicSystems/seismic-solidity/releases/assets/$ASSET_ID" - - # Extract and install - echo "Extracting archive..." - mkdir -p "$TEMP_DIR/extract" - - if [[ "$OS_TYPE" == "windows" ]]; then - if ! file "$DOWNLOAD_PATH" | grep -q 'Zip archive data'; then - echo "Error: Invalid zip archive" - exit 1 - fi - unzip -q "$DOWNLOAD_PATH" -d "$TEMP_DIR/extract" - BINARY_PATH="$TEMP_DIR/extract/solc.exe" - else - if ! file "$DOWNLOAD_PATH" | grep -q 'gzip compressed data'; then - echo "Error: Invalid gzip archive" - exit 1 - fi - tar -xzf "$DOWNLOAD_PATH" -C "$TEMP_DIR/extract" - BINARY_PATH="$TEMP_DIR/extract/solc/solc" - fi - - if [[ ! -f "$BINARY_PATH" ]]; then - echo "Error: Binary not found in extracted archive" - exit 1 - fi - - # Install the binary - echo "Installing binary to $SSOLC_BIN..." - mkdir -p "$(dirname "$SSOLC_BIN")" - - if [[ "$OS_TYPE" == "windows" ]]; then - mv "$BINARY_PATH" "$SSOLC_BIN" - chmod +x "$SSOLC_BIN" - echo "Adding $INSTALL_DIR to PATH..." - setx PATH "%PATH%;$INSTALL_DIR" - echo "Please restart your terminal for PATH changes to take effect." - else - sudo mv "$BINARY_PATH" "$SSOLC_BIN" - sudo chmod +x "$SSOLC_BIN" - fi - - echo "Installation complete! ssolc installed at $SSOLC_BIN" + TEMP_DIR=$(mktemp -d) + trap 'rm -rf "$TEMP_DIR"' EXIT + + # Download the release + echo "Fetching latest release information..." + GITHUB_API_URL="https://api.github.com/repos/SeismicSystems/seismic-solidity/releases/latest" + + # Create temporary Node.js script to parse JSON + GITHUB_RESPONSE=$(curl -s "$GITHUB_API_URL") + JSON_SCRIPT=$(mktemp) + cat >"$JSON_SCRIPT" < a.name === name); + if (asset && asset.id) { + console.log(asset.id); + } else { + console.error("Asset not found"); + process.exit(1); + } +} catch (err) { + console.error("Error:", err.message); + process.exit(1); +} +EOF + + ASSET_ID=$(TARGET_NAME="$TARGET_NAME" GITHUB_RESPONSE="$GITHUB_RESPONSE" node "$JSON_SCRIPT") + rm -f "$JSON_SCRIPT" # Clean up temporary file + + if [[ -z "$ASSET_ID" ]]; then + echo "Error: Asset $TARGET_NAME not found in the latest release." + exit 1 + fi + + echo "Downloading $TARGET_NAME..." + DOWNLOAD_PATH="$TEMP_DIR/$TARGET_NAME" + curl -L -H "Accept: application/octet-stream" \ + -o "$DOWNLOAD_PATH" \ + "https://api.github.com/repos/SeismicSystems/seismic-solidity/releases/assets/$ASSET_ID" + + # Extract and install + echo "Extracting archive..." + mkdir -p "$TEMP_DIR/extract" + + if [[ "$OS_TYPE" == "windows" ]]; then + if ! file "$DOWNLOAD_PATH" | grep -q 'Zip archive data'; then + echo "Error: Invalid zip archive" + exit 1 + fi + unzip -q "$DOWNLOAD_PATH" -d "$TEMP_DIR/extract" + BINARY_PATH="$TEMP_DIR/extract/solc.exe" + else + if ! file "$DOWNLOAD_PATH" | grep -q 'gzip compressed data'; then + echo "Error: Invalid gzip archive" + exit 1 + fi + tar -xzf "$DOWNLOAD_PATH" -C "$TEMP_DIR/extract" + BINARY_PATH="$TEMP_DIR/extract/solc/solc" + fi + + if [[ ! -f "$BINARY_PATH" ]]; then + echo "Error: Binary not found in extracted archive" + exit 1 + fi + + # Install the binary + echo "Installing binary to $SSOLC_BIN..." + mkdir -p "$(dirname "$SSOLC_BIN")" + + if [[ "$OS_TYPE" == "windows" ]]; then + mv "$BINARY_PATH" "$SSOLC_BIN" + chmod +x "$SSOLC_BIN" + echo "Adding $INSTALL_DIR to PATH..." + setx PATH "%PATH%;$INSTALL_DIR" + echo "Please restart your terminal for PATH changes to take effect." + else + sudo mv "$BINARY_PATH" "$SSOLC_BIN" + sudo chmod +x "$SSOLC_BIN" + fi + + echo "Installation complete! ssolc installed at $SSOLC_BIN" } install_from_remote_repo() { - SEISMICUP_REPO="SeismicSystems/seismic-foundry" - SEISMICUP_BRANCH="seismic" - - need_cmd cargo - say "Installing Seismic Foundry from $SEISMICUP_REPO (branch: $SEISMICUP_BRANCH)..." - - REPO_PATH="$SEISMIC_DIR/$(basename "$SEISMICUP_REPO")" - - # Clone the repository if it doesn't already exist - if [ ! -d "$REPO_PATH" ]; then - ensure mkdir -p "$SEISMIC_DIR" - say "Cloning the repository..." - ensure git clone "https://github.com/$SEISMICUP_REPO.git" "$REPO_PATH" - fi - - # Fetch and checkout the branch - cd "$REPO_PATH" - ensure git fetch origin "${SEISMICUP_BRANCH}:remotes/origin/${SEISMICUP_BRANCH}" - ensure git checkout "origin/${SEISMICUP_BRANCH}" - - # Use the git CLI to fetch dependencies - export CARGO_NET_GIT_FETCH_WITH_CLI=true - - # Build the binaries - ensure cargo build --bins "${CARGO_BUILD_ARGS[@]}" - for bin in "${BINS[@]}"; do - for try_path in target/release/$bin target/release/$bin.exe; do - if [ -f "$try_path" ]; then - [ -e "$SEISMIC_BIN_DIR/$bin" ] && warn "Overwriting existing $bin in $SEISMIC_BIN_DIR" - mv -f "$try_path" "$SEISMIC_BIN_DIR" - fi - done - done - - say "Seismic Foundry installation complete." + SEISMICUP_REPO="SeismicSystems/seismic-foundry" + SEISMICUP_BRANCH="seismic" + + need_cmd cargo + say "Installing Seismic Foundry from $SEISMICUP_REPO (branch: $SEISMICUP_BRANCH)..." + + REPO_PATH="$SEISMIC_DIR/$(basename "$SEISMICUP_REPO")" + + # Clone the repository if it doesn't already exist + if [ ! -d "$REPO_PATH" ]; then + ensure mkdir -p "$SEISMIC_DIR" + say "Cloning the repository..." + ensure git clone "https://github.com/$SEISMICUP_REPO.git" "$REPO_PATH" + fi + + # Fetch and checkout the branch + cd "$REPO_PATH" + ensure git fetch origin "${SEISMICUP_BRANCH}:remotes/origin/${SEISMICUP_BRANCH}" + ensure git checkout "origin/${SEISMICUP_BRANCH}" + + # Use the git CLI to fetch dependencies + export CARGO_NET_GIT_FETCH_WITH_CLI=true + + # Build the binaries + ensure cargo build --bins "${CARGO_BUILD_ARGS[@]}" + for bin in "${BINS[@]}"; do + for try_path in target/release/$bin target/release/$bin.exe; do + if [ -f "$try_path" ]; then + [ -e "$SEISMIC_BIN_DIR/$bin" ] && warn "Overwriting existing $bin in $SEISMIC_BIN_DIR" + mv -f "$try_path" "$SEISMIC_BIN_DIR" + fi + done + done + + say "Seismic Foundry installation complete." } usage() { - cat 1>&2 <&2 <&2 + say "warning: $1" >&2 } err() { - say "$1" >&2 - exit 1 + say "$1" >&2 + exit 1 } need_cmd() { - if ! command -v "$1" &>/dev/null; then - err "Need '$1' (command not found)" - fi + if ! command -v "$1" &>/dev/null; then + err "Need '$1' (command not found)" + fi } ensure() { - if ! "$@"; then err "Command failed: $*"; fi + if ! "$@"; then err "Command failed: $*"; fi } banner() { - printf ' + printf ' ##### ####### ###### ##### ## ## ###### ##### ####### ##### ### ### ## ### ###### ###### ### ### ### ## ### ### ## ### ## ### ### ## ### ### ### ## ### ### ### ### ### ### ### ### ### ### ### ### From 2c1b73595518088b55057bb6b38ad74726b2a417 Mon Sep 17 00:00:00 2001 From: Ameya Deshmukh Date: Mon, 24 Mar 2025 23:40:32 +0530 Subject: [PATCH 073/130] fix: revert `sfoundryup` back to use `jq` instead of `node` (#113) --- sfoundryup/sfoundryup | 390 +++++++++++++++++++----------------------- 1 file changed, 178 insertions(+), 212 deletions(-) diff --git a/sfoundryup/sfoundryup b/sfoundryup/sfoundryup index b203792be..e4d6062db 100755 --- a/sfoundryup/sfoundryup +++ b/sfoundryup/sfoundryup @@ -12,90 +12,79 @@ BINS=(sforge scast sanvil schisel) export RUSTFLAGS="${RUSTFLAGS:--C target-cpu=native}" main() { - while [[ -n $1 ]]; do - case $1 in - --) - shift - break - ;; - -v | --version) - shift - SEISMICUP_VERSION=$1 - ;; - -p | --path) - shift - SEISMICUP_LOCAL_REPO=$1 - ;; - -j | --jobs) - shift - SEISMICUP_JOBS=$1 - ;; - -h | --help) - usage - exit 0 - ;; - *) - warn "unknown option: $1" - usage - exit 1 - ;; - esac - shift - done - - need_cmd git - need_cmd curl - - CARGO_BUILD_ARGS=(--release) - - if [ -n "$SEISMICUP_JOBS" ]; then - CARGO_BUILD_ARGS+=(--jobs "$SEISMICUP_JOBS") - fi - - banner - install_ssolc - - if [[ -n "$SEISMICUP_LOCAL_REPO" ]]; then - install_from_local_repo - else - install_from_remote_repo - fi + while [[ -n $1 ]]; do + case $1 in + --) shift; break;; + -v|--version) shift; SEISMICUP_VERSION=$1;; + -p|--path) shift; SEISMICUP_LOCAL_REPO=$1;; + -j|--jobs) shift; SEISMICUP_JOBS=$1;; + -h|--help) + usage + exit 0 + ;; + *) + warn "unknown option: $1" + usage + exit 1 + ;; + esac + shift + done + + need_cmd git + need_cmd curl + need_cmd jq + + CARGO_BUILD_ARGS=(--release) + + if [ -n "$SEISMICUP_JOBS" ]; then + CARGO_BUILD_ARGS+=(--jobs "$SEISMICUP_JOBS") + fi + + banner + install_ssolc + + if [[ -n "$SEISMICUP_LOCAL_REPO" ]]; then + install_from_local_repo + else + install_from_remote_repo + fi } install_ssolc() { - echo "Starting ssolc installation..." - - # Detect OS and set installation paths - OS="$(uname -s)" - ARCH="$(uname -m)" - - case "$OS" in - Linux*) - OS_TYPE="linux" - INSTALL_DIR="/usr/local/bin" - ;; - Darwin*) - OS_TYPE="macos" - INSTALL_DIR="/usr/local/bin" - ;; - CYGWIN* | MINGW* | MSYS* | Windows_NT) - OS_TYPE="windows" - INSTALL_DIR="$PROGRAMFILES/Seismic/bin" - ;; - *) - echo "Unsupported OS: $OS" - exit 1 - ;; - esac - - case "$ARCH" in - x86_64) ARCH_TYPE="x86_64" ;; - arm64 | aarch64) ARCH_TYPE="arm64" ;; - *) - echo "Unsupported architecture: $ARCH" - exit 1 - ;; - esac + echo "Starting ssolc installation..." + + # Detect OS and set installation paths + OS="$(uname -s)" + ARCH="$(uname -m)" + + case "$OS" in + Linux*) + OS_TYPE="linux" + INSTALL_DIR="/usr/local/bin" + ;; + Darwin*) + OS_TYPE="macos" + INSTALL_DIR="/usr/local/bin" + ;; + CYGWIN*|MINGW*|MSYS*|Windows_NT) + OS_TYPE="windows" + INSTALL_DIR="$PROGRAMFILES/Seismic/bin" + ;; + *) + echo "Unsupported OS: $OS" + exit 1 + ;; + esac + + case "$ARCH" in + x86_64) ARCH_TYPE="x86_64" ;; + arm64|aarch64) ARCH_TYPE="arm64" ;; + *) + echo "Unsupported architecture: $ARCH" + exit 1 + ;; + esac # Set target info TARGET_NAME="ssolc-${OS_TYPE}-${ARCH_TYPE}" @@ -104,139 +93,116 @@ install_ssolc() { else TARGET_NAME="${TARGET_NAME}.tar.gz" fi - + if [[ "$OS_TYPE" == "windows" ]]; then SSOLC_BIN="${INSTALL_DIR}/ssolc.exe" else SSOLC_BIN="${INSTALL_DIR}/ssolc" fi - TEMP_DIR=$(mktemp -d) - trap 'rm -rf "$TEMP_DIR"' EXIT - - # Download the release - echo "Fetching latest release information..." - GITHUB_API_URL="https://api.github.com/repos/SeismicSystems/seismic-solidity/releases/latest" - - # Create temporary Node.js script to parse JSON - GITHUB_RESPONSE=$(curl -s "$GITHUB_API_URL") - JSON_SCRIPT=$(mktemp) - cat >"$JSON_SCRIPT" < a.name === name); - if (asset && asset.id) { - console.log(asset.id); - } else { - console.error("Asset not found"); - process.exit(1); - } -} catch (err) { - console.error("Error:", err.message); - process.exit(1); -} -EOF - - ASSET_ID=$(TARGET_NAME="$TARGET_NAME" GITHUB_RESPONSE="$GITHUB_RESPONSE" node "$JSON_SCRIPT") - rm -f "$JSON_SCRIPT" # Clean up temporary file - - if [[ -z "$ASSET_ID" ]]; then - echo "Error: Asset $TARGET_NAME not found in the latest release." - exit 1 - fi - - echo "Downloading $TARGET_NAME..." - DOWNLOAD_PATH="$TEMP_DIR/$TARGET_NAME" - curl -L -H "Accept: application/octet-stream" \ - -o "$DOWNLOAD_PATH" \ - "https://api.github.com/repos/SeismicSystems/seismic-solidity/releases/assets/$ASSET_ID" - - # Extract and install - echo "Extracting archive..." - mkdir -p "$TEMP_DIR/extract" - - if [[ "$OS_TYPE" == "windows" ]]; then - if ! file "$DOWNLOAD_PATH" | grep -q 'Zip archive data'; then - echo "Error: Invalid zip archive" - exit 1 - fi - unzip -q "$DOWNLOAD_PATH" -d "$TEMP_DIR/extract" - BINARY_PATH="$TEMP_DIR/extract/solc.exe" - else - if ! file "$DOWNLOAD_PATH" | grep -q 'gzip compressed data'; then - echo "Error: Invalid gzip archive" - exit 1 - fi - tar -xzf "$DOWNLOAD_PATH" -C "$TEMP_DIR/extract" - BINARY_PATH="$TEMP_DIR/extract/solc/solc" - fi - - if [[ ! -f "$BINARY_PATH" ]]; then - echo "Error: Binary not found in extracted archive" - exit 1 - fi - - # Install the binary - echo "Installing binary to $SSOLC_BIN..." - mkdir -p "$(dirname "$SSOLC_BIN")" - - if [[ "$OS_TYPE" == "windows" ]]; then - mv "$BINARY_PATH" "$SSOLC_BIN" - chmod +x "$SSOLC_BIN" - echo "Adding $INSTALL_DIR to PATH..." - setx PATH "%PATH%;$INSTALL_DIR" - echo "Please restart your terminal for PATH changes to take effect." - else - sudo mv "$BINARY_PATH" "$SSOLC_BIN" - sudo chmod +x "$SSOLC_BIN" - fi - - echo "Installation complete! ssolc installed at $SSOLC_BIN" + TEMP_DIR=$(mktemp -d) + trap 'rm -rf "$TEMP_DIR"' EXIT + + # Download the release + echo "Fetching latest release information..." + GITHUB_API_URL="https://api.github.com/repos/SeismicSystems/seismic-solidity/releases/latest" + ASSET_ID=$(curl -s "$GITHUB_API_URL" | \ + jq -r --arg name "$TARGET_NAME" '.assets[] | select(.name == $name) | .id') + + if [[ -z "$ASSET_ID" ]]; then + echo "Error: Asset $TARGET_NAME not found in the latest release." + exit 1 + fi + + echo "Downloading $TARGET_NAME..." + DOWNLOAD_PATH="$TEMP_DIR/$TARGET_NAME" + curl -L -H "Accept: application/octet-stream" \ + -o "$DOWNLOAD_PATH" \ + "https://api.github.com/repos/SeismicSystems/seismic-solidity/releases/assets/$ASSET_ID" + + # Extract and install + echo "Extracting archive..." + mkdir -p "$TEMP_DIR/extract" + + if [[ "$OS_TYPE" == "windows" ]]; then + if ! file "$DOWNLOAD_PATH" | grep -q 'Zip archive data'; then + echo "Error: Invalid zip archive" + exit 1 + fi + unzip -q "$DOWNLOAD_PATH" -d "$TEMP_DIR/extract" + BINARY_PATH="$TEMP_DIR/extract/solc.exe" + else + if ! file "$DOWNLOAD_PATH" | grep -q 'gzip compressed data'; then + echo "Error: Invalid gzip archive" + exit 1 + fi + tar -xzf "$DOWNLOAD_PATH" -C "$TEMP_DIR/extract" + BINARY_PATH="$TEMP_DIR/extract/solc/solc" + fi + + if [[ ! -f "$BINARY_PATH" ]]; then + echo "Error: Binary not found in extracted archive" + exit 1 + fi + + # Install the binary + echo "Installing binary to $SSOLC_BIN..." + mkdir -p "$(dirname "$SSOLC_BIN")" + + if [[ "$OS_TYPE" == "windows" ]]; then + mv "$BINARY_PATH" "$SSOLC_BIN" + chmod +x "$SSOLC_BIN" + echo "Adding $INSTALL_DIR to PATH..." + setx PATH "%PATH%;$INSTALL_DIR" + echo "Please restart your terminal for PATH changes to take effect." + else + sudo mv "$BINARY_PATH" "$SSOLC_BIN" + sudo chmod +x "$SSOLC_BIN" + fi + + echo "Installation complete! ssolc installed at $SSOLC_BIN" } install_from_remote_repo() { - SEISMICUP_REPO="SeismicSystems/seismic-foundry" - SEISMICUP_BRANCH="seismic" - - need_cmd cargo - say "Installing Seismic Foundry from $SEISMICUP_REPO (branch: $SEISMICUP_BRANCH)..." - - REPO_PATH="$SEISMIC_DIR/$(basename "$SEISMICUP_REPO")" - - # Clone the repository if it doesn't already exist - if [ ! -d "$REPO_PATH" ]; then - ensure mkdir -p "$SEISMIC_DIR" - say "Cloning the repository..." - ensure git clone "https://github.com/$SEISMICUP_REPO.git" "$REPO_PATH" - fi - - # Fetch and checkout the branch - cd "$REPO_PATH" - ensure git fetch origin "${SEISMICUP_BRANCH}:remotes/origin/${SEISMICUP_BRANCH}" - ensure git checkout "origin/${SEISMICUP_BRANCH}" - - # Use the git CLI to fetch dependencies - export CARGO_NET_GIT_FETCH_WITH_CLI=true - - # Build the binaries - ensure cargo build --bins "${CARGO_BUILD_ARGS[@]}" - for bin in "${BINS[@]}"; do - for try_path in target/release/$bin target/release/$bin.exe; do - if [ -f "$try_path" ]; then - [ -e "$SEISMIC_BIN_DIR/$bin" ] && warn "Overwriting existing $bin in $SEISMIC_BIN_DIR" - mv -f "$try_path" "$SEISMIC_BIN_DIR" - fi - done - done - - say "Seismic Foundry installation complete." + SEISMICUP_REPO="SeismicSystems/seismic-foundry" + SEISMICUP_BRANCH="seismic" + + need_cmd cargo + say "Installing Seismic Foundry from $SEISMICUP_REPO (branch: $SEISMICUP_BRANCH)..." + + REPO_PATH="$SEISMIC_DIR/$(basename "$SEISMICUP_REPO")" + + # Clone the repository if it doesn't already exist + if [ ! -d "$REPO_PATH" ]; then + ensure mkdir -p "$SEISMIC_DIR" + say "Cloning the repository..." + ensure git clone "https://github.com/$SEISMICUP_REPO.git" "$REPO_PATH" + fi + + # Fetch and checkout the branch + cd "$REPO_PATH" + ensure git fetch origin "${SEISMICUP_BRANCH}:remotes/origin/${SEISMICUP_BRANCH}" + ensure git checkout "origin/${SEISMICUP_BRANCH}" + + # Use the git CLI to fetch dependencies + export CARGO_NET_GIT_FETCH_WITH_CLI=true + + # Build the binaries + ensure cargo build --bins "${CARGO_BUILD_ARGS[@]}" + for bin in "${BINS[@]}"; do + for try_path in target/release/$bin target/release/$bin.exe; do + if [ -f "$try_path" ]; then + [ -e "$SEISMIC_BIN_DIR/$bin" ] && warn "Overwriting existing $bin in $SEISMIC_BIN_DIR" + mv -f "$try_path" "$SEISMIC_BIN_DIR" + fi + done + done + + say "Seismic Foundry installation complete." } usage() { - cat 1>&2 <&2 <&2 + say "warning: $1" >&2 } err() { - say "$1" >&2 - exit 1 + say "$1" >&2 + exit 1 } need_cmd() { - if ! command -v "$1" &>/dev/null; then - err "Need '$1' (command not found)" - fi + if ! command -v "$1" &>/dev/null; then + err "Need '$1' (command not found)" + fi } ensure() { - if ! "$@"; then err "Command failed: $*"; fi + if ! "$@"; then err "Command failed: $*"; fi } banner() { - printf ' + printf ' ##### ####### ###### ##### ## ## ###### ##### ####### ##### ### ### ## ### ###### ###### ### ### ### ## ### ### ## ### ## ### ### ## ### ### ### ## ### ### ### ### ### ### ### ### ### ### ### ### @@ -291,4 +257,4 @@ Chat : https://t.me/+xpzfNO4pmRoyM2Ux ' } -main "$@" +main "$@" \ No newline at end of file From ec1d6fe5e5065eaaad7d58fd71b927d32ebe7a92 Mon Sep 17 00:00:00 2001 From: Ameya Deshmukh Date: Tue, 25 Mar 2025 00:48:47 +0530 Subject: [PATCH 074/130] fix: rename `scast` and `schisel` to `cast` and `chisel` in `sfoundryup` (#114) --- crates/cast/Cargo.toml | 2 +- crates/chisel/Cargo.toml | 2 +- sfoundryup/sfoundryup | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/crates/cast/Cargo.toml b/crates/cast/Cargo.toml index f6011831a..68833e36c 100644 --- a/crates/cast/Cargo.toml +++ b/crates/cast/Cargo.toml @@ -17,7 +17,7 @@ workspace = true name = "cast" [[bin]] -name = "cast" +name = "scast" path = "bin/main.rs" [build-dependencies] diff --git a/crates/chisel/Cargo.toml b/crates/chisel/Cargo.toml index 167329d45..5f23625d3 100644 --- a/crates/chisel/Cargo.toml +++ b/crates/chisel/Cargo.toml @@ -17,7 +17,7 @@ repository.workspace = true workspace = true [[bin]] -name = "chisel" +name = "schisel" path = "bin/main.rs" [build-dependencies] diff --git a/sfoundryup/sfoundryup b/sfoundryup/sfoundryup index e4d6062db..d7eabdb17 100755 --- a/sfoundryup/sfoundryup +++ b/sfoundryup/sfoundryup @@ -7,7 +7,7 @@ SEISMIC_BIN_DIR="$SEISMIC_DIR/bin" SEISMIC_MAN_DIR="$SEISMIC_DIR/share/man/man1" SEISMICUP_JOBS="" -BINS=(sforge scast sanvil schisel) +BINS=(sanvil sforge scast schisel) export RUSTFLAGS="${RUSTFLAGS:--C target-cpu=native}" From 4bc86e149be55771cec651aa383ee44e98f91a59 Mon Sep 17 00:00:00 2001 From: Lyron Co Ting Keh Date: Tue, 25 Mar 2025 16:29:01 -0400 Subject: [PATCH 075/130] Update sfoundryup (#115) --- sfoundryup/sfoundryup | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sfoundryup/sfoundryup b/sfoundryup/sfoundryup index d7eabdb17..196850ed2 100755 --- a/sfoundryup/sfoundryup +++ b/sfoundryup/sfoundryup @@ -253,8 +253,7 @@ banner() { ##### ####### ###### ##### ### ### ###### ##### ### ##### ##### ### ### ###### ### ### ### Repo : https://github.com/SeismicSystems/seismic-foundry -Chat : https://t.me/+xpzfNO4pmRoyM2Ux ' } -main "$@" \ No newline at end of file +main "$@" From 8ecbb492d6832ed19ba86a83d8c3b84bd7f95eaa Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Tue, 25 Mar 2025 19:15:14 -0400 Subject: [PATCH 076/130] RPC: remove shielded inputs from trace (#116) --- Cargo.lock | 102 +++++++++++-------- Cargo.toml | 60 +++++------ crates/anvil/core/src/eth/transaction/mod.rs | 8 ++ crates/anvil/src/eth/api.rs | 48 +++++++-- crates/anvil/src/eth/backend/executor.rs | 1 + crates/anvil/src/eth/backend/fork.rs | 27 +++-- crates/anvil/src/eth/backend/mem/mod.rs | 1 + crates/anvil/src/eth/backend/mem/storage.rs | 22 ++-- crates/evm/core/src/utils.rs | 1 + package.json | 4 + packages/client-tests/viem.test.ts | 21 ++++ 11 files changed, 200 insertions(+), 95 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6f568a046..b957a25f5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "alloy-consensus" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" dependencies = [ "alloy-dyn-abi", "alloy-eips", @@ -125,7 +125,7 @@ dependencies = [ "derive_more", "jsonrpsee", "k256", - "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=352164b)", + "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=3f47bf1)", "serde", "serde_json", ] @@ -133,7 +133,7 @@ dependencies = [ [[package]] name = "alloy-consensus-any" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" dependencies = [ "alloy-consensus", "alloy-eips", @@ -146,7 +146,7 @@ dependencies = [ [[package]] name = "alloy-contract" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -214,7 +214,7 @@ dependencies = [ [[package]] name = "alloy-eips" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" dependencies = [ "alloy-dyn-abi", "alloy-eip2930", @@ -232,7 +232,7 @@ dependencies = [ [[package]] name = "alloy-genesis" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" dependencies = [ "alloy-primitives", "alloy-serde", @@ -254,7 +254,7 @@ dependencies = [ [[package]] name = "alloy-json-rpc" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -267,7 +267,7 @@ dependencies = [ [[package]] name = "alloy-network" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -291,7 +291,7 @@ dependencies = [ [[package]] name = "alloy-network-primitives" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" dependencies = [ "alloy-consensus", "alloy-eips", @@ -303,7 +303,7 @@ dependencies = [ [[package]] name = "alloy-node-bindings" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" dependencies = [ "alloy-genesis", "alloy-primitives", @@ -350,7 +350,7 @@ dependencies = [ [[package]] name = "alloy-provider" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" dependencies = [ "alloy-chains", "alloy-consensus", @@ -380,7 +380,7 @@ dependencies = [ "pin-project 1.1.10", "reqwest", "schnellru", - "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=352164b)", + "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=3f47bf1)", "serde", "serde_json", "thiserror 2.0.12", @@ -393,7 +393,7 @@ dependencies = [ [[package]] name = "alloy-pubsub" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -433,7 +433,7 @@ dependencies = [ [[package]] name = "alloy-rpc-client" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -458,7 +458,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" dependencies = [ "alloy-primitives", "alloy-rpc-types-anvil", @@ -473,7 +473,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -484,7 +484,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -494,7 +494,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-debug" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" dependencies = [ "alloy-primitives", "serde", @@ -503,7 +503,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-engine" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" dependencies = [ "alloy-consensus", "alloy-eips", @@ -520,7 +520,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -539,8 +539,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-trace" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" dependencies = [ + "alloy-consensus", "alloy-primitives", "alloy-rpc-types-eth", "alloy-serde", @@ -552,7 +553,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-txpool" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -563,10 +564,10 @@ dependencies = [ [[package]] name = "alloy-serde" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" dependencies = [ "alloy-primitives", - "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=352164b)", + "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=3f47bf1)", "serde", "serde_json", ] @@ -574,7 +575,7 @@ dependencies = [ [[package]] name = "alloy-signer" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" dependencies = [ "alloy-dyn-abi", "alloy-primitives", @@ -589,7 +590,7 @@ dependencies = [ [[package]] name = "alloy-signer-aws" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" dependencies = [ "alloy-consensus", "alloy-network", @@ -606,7 +607,7 @@ dependencies = [ [[package]] name = "alloy-signer-gcp" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" dependencies = [ "alloy-consensus", "alloy-network", @@ -623,7 +624,7 @@ dependencies = [ [[package]] name = "alloy-signer-ledger" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -642,7 +643,7 @@ dependencies = [ [[package]] name = "alloy-signer-local" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" dependencies = [ "alloy-consensus", "alloy-network", @@ -660,7 +661,7 @@ dependencies = [ [[package]] name = "alloy-signer-trezor" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" dependencies = [ "alloy-consensus", "alloy-network", @@ -745,7 +746,7 @@ dependencies = [ [[package]] name = "alloy-transport" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" dependencies = [ "alloy-json-rpc", "base64 0.22.1", @@ -764,7 +765,7 @@ dependencies = [ [[package]] name = "alloy-transport-http" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -778,7 +779,7 @@ dependencies = [ [[package]] name = "alloy-transport-ipc" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" dependencies = [ "alloy-json-rpc", "alloy-pubsub", @@ -798,7 +799,7 @@ dependencies = [ [[package]] name = "alloy-transport-ws" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=23845ba#23845baa7e54d33ae02121fae59d134822eaadc0" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" dependencies = [ "alloy-pubsub", "alloy-transport", @@ -973,7 +974,7 @@ dependencies = [ "reqwest", "revm", "secp256k1", - "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=352164b)", + "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=3f47bf1)", "serde", "serde_json", "serde_repr", @@ -1009,7 +1010,7 @@ dependencies = [ "op-alloy-consensus", "rand 0.8.5", "revm", - "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=352164b)", + "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=3f47bf1)", "serde", "serde_json", "thiserror 2.0.12", @@ -8144,7 +8145,7 @@ dependencies = [ [[package]] name = "revm" version = "18.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=32180cc#32180cc9c7df873d2bf8898ea811fcd227f9212f" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=771e0af#771e0af9b6ad4755c8be38e417d6a3b8d78701b7" dependencies = [ "auto_impl", "cfg-if", @@ -8165,7 +8166,7 @@ dependencies = [ [[package]] name = "revm-inspectors" version = "0.13.0" -source = "git+https://github.com/SeismicSystems/seismic-revm-inspectors.git?rev=186aab18#186aab1839ae6b5b37c6746d4814359478331e45" +source = "git+https://github.com/SeismicSystems/seismic-revm-inspectors.git?rev=2f5cabd#2f5cabdb1864a5db568399e5226309e05e20881c" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -8183,7 +8184,7 @@ dependencies = [ [[package]] name = "revm-interpreter" version = "14.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=32180cc#32180cc9c7df873d2bf8898ea811fcd227f9212f" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=771e0af#771e0af9b6ad4755c8be38e417d6a3b8d78701b7" dependencies = [ "revm-primitives", "serde", @@ -8192,7 +8193,7 @@ dependencies = [ [[package]] name = "revm-precompile" version = "15.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=32180cc#32180cc9c7df873d2bf8898ea811fcd227f9212f" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=771e0af#771e0af9b6ad4755c8be38e417d6a3b8d78701b7" dependencies = [ "aurora-engine-modexp", "blst", @@ -8211,7 +8212,7 @@ dependencies = [ [[package]] name = "revm-primitives" version = "14.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=32180cc#32180cc9c7df873d2bf8898ea811fcd227f9212f" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=771e0af#771e0af9b6ad4755c8be38e417d6a3b8d78701b7" dependencies = [ "alloy-eip2930", "alloy-eip7702", @@ -8860,13 +8861,14 @@ dependencies = [ [[package]] name = "seismic-enclave" version = "0.1.0" -source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=352164b#352164b0f696583887c717cfc44dceadb99d40db" +source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=3f47bf1#3f47bf193c3a62dbc4dcfdf28d789b4d8b3e61f9" dependencies = [ "aes-gcm", "anyhow", "bincode", "byteorder", "bytes", + "clap", "hkdf", "jsonrpsee", "kbs-types", @@ -8882,6 +8884,7 @@ dependencies = [ "strum 0.26.3", "tokio", "tracing", + "tracing-subscriber", ] [[package]] @@ -8912,7 +8915,7 @@ dependencies = [ [[package]] name = "seismic-enclave-derive" version = "0.1.0" -source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=352164b#352164b0f696583887c717cfc44dceadb99d40db" +source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=3f47bf1#3f47bf193c3a62dbc4dcfdf28d789b4d8b3e61f9" dependencies = [ "proc-macro2", "quote", @@ -10264,6 +10267,16 @@ dependencies = [ "tracing-core", ] +[[package]] +name = "tracing-serde" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "704b1aeb7be0d0a84fc9828cae51dab5970fee5088f83d1dd7ee6f6246fc6ff1" +dependencies = [ + "serde", + "tracing-core", +] + [[package]] name = "tracing-subscriber" version = "0.3.19" @@ -10274,12 +10287,15 @@ dependencies = [ "nu-ansi-term", "once_cell", "regex", + "serde", + "serde_json", "sharded-slab", "smallvec", "thread_local", "tracing", "tracing-core", "tracing-log", + "tracing-serde", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 2ec0bc6af..1e8ca20c2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -303,12 +303,12 @@ seismic-enclave = "0.1.0" foundry-fork-db = { git = "https://github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "66c1196" } # seismic-revm -revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "32180cc" } -revm-primitives = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "32180cc" } -revm-interpreter = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "32180cc" } +revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "771e0af" } +revm-primitives = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "771e0af" } +revm-interpreter = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "771e0af" } # seismic-revm-inspectors -revm-inspectors = { git = "https://github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "186aab18" } +revm-inspectors = { git = "https://github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "2f5cabd" } # seismic-alloy-core alloy-dyn-abi = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "5dc07cc" } @@ -321,31 +321,31 @@ alloy-sol-types = { git = "https://github.com/SeismicSystems/seismic-alloy-core. alloy-sol-type-parser = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "5dc07cc" } # seismic-alloy -alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } -alloy-contract = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } -alloy-eips = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } -alloy-genesis = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } -alloy-json-rpc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } -alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } -alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } -alloy-pubsub = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } -alloy-rpc-client = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } -alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } -alloy-rpc-types-trace = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } -alloy-rpc-types-eth = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } -alloy-serde = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } -alloy-signer = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } -alloy-signer-aws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } -alloy-signer-gcp = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } -alloy-signer-ledger = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } -alloy-signer-local = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } -alloy-signer-trezor = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } -alloy-transport = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } -alloy-transport-http = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } -alloy-transport-ipc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } -alloy-transport-ws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } -alloy-node-bindings = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } -alloy-network-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "23845ba" } +alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } +alloy-contract = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } +alloy-eips = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } +alloy-genesis = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } +alloy-json-rpc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } +alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } +alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } +alloy-pubsub = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } +alloy-rpc-client = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } +alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } +alloy-rpc-types-trace = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } +alloy-rpc-types-eth = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } +alloy-serde = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } +alloy-signer = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } +alloy-signer-aws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } +alloy-signer-gcp = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } +alloy-signer-ledger = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } +alloy-signer-local = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } +alloy-signer-trezor = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } +alloy-transport = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } +alloy-transport-http = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } +alloy-transport-ipc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } +alloy-transport-ws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } +alloy-node-bindings = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } +alloy-network-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } foundry-compilers = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } foundry-compilers-artifacts = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } @@ -353,4 +353,4 @@ foundry-compilers-artifacts-solc = { git = "https://github.com/SeismicSystems/se foundry-compilers-artifacts-vyper = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } foundry-compilers-core = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } -seismic-enclave = { git = "https://github.com/SeismicSystems/seismic-enclave.git", rev = "352164b"} +seismic-enclave = { git = "https://github.com/SeismicSystems/seismic-enclave.git", rev = "3f47bf1"} diff --git a/crates/anvil/core/src/eth/transaction/mod.rs b/crates/anvil/core/src/eth/transaction/mod.rs index 5bdcb508e..3957aef23 100644 --- a/crates/anvil/core/src/eth/transaction/mod.rs +++ b/crates/anvil/core/src/eth/transaction/mod.rs @@ -457,6 +457,7 @@ impl PendingTransaction { gas_priority_fee: None, gas_limit: *gas_limit, access_list: vec![], + tx_type: Some(tx.tx().ty() as isize), ..Default::default() } } @@ -483,6 +484,7 @@ impl PendingTransaction { gas_priority_fee: None, gas_limit: *gas_limit, access_list: access_list.clone().into(), + tx_type: Some(tx.tx().ty() as isize), ..Default::default() } } @@ -510,6 +512,7 @@ impl PendingTransaction { gas_priority_fee: Some(U256::from(*max_priority_fee_per_gas)), gas_limit: *gas_limit, access_list: access_list.clone().into(), + tx_type: Some(tx.tx().ty() as isize), ..Default::default() } } @@ -541,6 +544,7 @@ impl PendingTransaction { blob_hashes: blob_versioned_hashes.clone(), gas_limit: *gas_limit, access_list: access_list.clone().into(), + tx_type: Some(tx.tx().ty() as isize), ..Default::default() } } @@ -569,6 +573,7 @@ impl PendingTransaction { gas_limit: *gas_limit, access_list: access_list.clone().into(), authorization_list: Some(authorization_list.clone().into()), + tx_type: Some(tx.tx().ty() as isize), ..Default::default() } } @@ -602,6 +607,7 @@ impl PendingTransaction { is_system_transaction: Some(*is_system_tx), enveloped_tx: None, }, + tx_type: Some(DEPOSIT_TX_TYPE_ID as isize), ..Default::default() } } @@ -632,6 +638,7 @@ impl PendingTransaction { gas_priority_fee: None, gas_limit: *gas_limit, access_list: vec![], + tx_type: Some(tx.tx().ty() as isize), ..Default::default() } } @@ -1240,6 +1247,7 @@ pub struct TransactionInfo { pub out: Option, pub nonce: u64, pub gas_used: u64, + pub tx_type: Option, } #[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)] diff --git a/crates/anvil/src/eth/api.rs b/crates/anvil/src/eth/api.rs index 3675e4fd2..9c22b4484 100644 --- a/crates/anvil/src/eth/api.rs +++ b/crates/anvil/src/eth/api.rs @@ -30,7 +30,10 @@ use crate::{ revm::primitives::{BlobExcessGasAndPrice, Output}, ClientFork, LoggingManager, Miner, MiningMode, StorageInfo, }; -use alloy_consensus::{transaction::eip4844::TxEip4844Variant, Account}; +use alloy_consensus::{ + transaction::{eip4844::TxEip4844Variant, ShieldableTransaction}, + Account, Typed2718, +}; use alloy_dyn_abi::TypedData; use alloy_eips::{eip2718::Encodable2718, eip712::Decodable712}; use alloy_network::{ @@ -1296,6 +1299,25 @@ impl EthApi { .map(U256::from) } + pub fn shield_tx(mut tx_wof: AnyRpcTransaction) -> AnyRpcTransaction { + if tx_wof.ty() == alloy_consensus::transaction::TxSeismic::TX_TYPE { + tx_wof.shield_input(); + } + tx_wof + } + + pub fn shield_block_txs(mut block: AnyRpcBlock) -> AnyRpcBlock { + match &mut block.transactions { + BlockTransactions::Full(txs) => { + for tx_wof in txs.iter_mut() { + *tx_wof = EthApi::shield_tx(tx_wof.clone()); + } + } + _ => {} + } + block + } + /// Get transaction by its hash. /// /// This will check the storage for a matching transaction, if no transaction exists in storage @@ -1322,7 +1344,7 @@ impl EthApi { tx = self.backend.transaction_by_hash(hash).await? } - Ok(tx) + Ok(tx.map(EthApi::shield_tx)) } /// Returns transaction at given block hash and index. @@ -1334,7 +1356,11 @@ impl EthApi { index: Index, ) -> Result> { node_info!("eth_getTransactionByBlockHashAndIndex"); - self.backend.transaction_by_block_hash_and_index(hash, index).await + Ok(self + .backend + .transaction_by_block_hash_and_index(hash, index) + .await? + .map(EthApi::shield_tx)) } /// Returns transaction by given block number and index. @@ -1346,7 +1372,11 @@ impl EthApi { idx: Index, ) -> Result> { node_info!("eth_getTransactionByBlockNumberAndIndex"); - self.backend.transaction_by_block_number_and_index(block, idx).await + Ok(self + .backend + .transaction_by_block_number_and_index(block, idx) + .await? + .map(EthApi::shield_tx)) } /// Returns transaction receipt by transaction hash. @@ -1382,7 +1412,10 @@ impl EthApi { self.backend.ensure_block_number(Some(BlockId::Hash(block_hash.into()))).await?; if let Some(fork) = self.get_fork() { if fork.predates_fork_inclusive(number) { - return Ok(fork.uncle_by_block_hash_and_index(block_hash, idx.into()).await?); + return Ok(fork + .uncle_by_block_hash_and_index(block_hash, idx.into()) + .await? + .map(EthApi::shield_block_txs)); } } // It's impossible to have uncles outside of fork mode @@ -1401,7 +1434,10 @@ impl EthApi { let number = self.backend.ensure_block_number(Some(BlockId::Number(block_number))).await?; if let Some(fork) = self.get_fork() { if fork.predates_fork_inclusive(number) { - return Ok(fork.uncle_by_block_number_and_index(number, idx.into()).await?); + return Ok(fork + .uncle_by_block_number_and_index(number, idx.into()) + .await? + .map(EthApi::shield_block_txs)); } } // It's impossible to have uncles outside of fork mode diff --git a/crates/anvil/src/eth/backend/executor.rs b/crates/anvil/src/eth/backend/executor.rs index 5e714364a..974fb5e84 100644 --- a/crates/anvil/src/eth/backend/executor.rs +++ b/crates/anvil/src/eth/backend/executor.rs @@ -206,6 +206,7 @@ impl TransactionExecutor<'_, DB, V> { out: out.map(Output::into_data), nonce: tx.nonce, gas_used: tx.gas_used, + tx_type: transaction.pending_transaction.transaction.r#type().map(|t| t as isize), }; transaction_infos.push(info); diff --git a/crates/anvil/src/eth/backend/fork.rs b/crates/anvil/src/eth/backend/fork.rs index 64852c802..157e7de88 100644 --- a/crates/anvil/src/eth/backend/fork.rs +++ b/crates/anvil/src/eth/backend/fork.rs @@ -1,6 +1,8 @@ //! Support for forking off another client -use crate::eth::{backend::db::Db, error::BlockchainError, pool::transactions::PoolTransaction}; +use crate::eth::{ + backend::db::Db, error::BlockchainError, pool::transactions::PoolTransaction, EthApi, +}; use alloy_consensus::Account; use alloy_eips::eip2930::AccessListResult; use alloy_network::{AnyRpcBlock, AnyRpcTransaction, BlockResponse, TransactionResponse}; @@ -469,7 +471,7 @@ impl ClientFork { if let Some(block) = self.storage_read().blocks.get(&hash).cloned() { return Ok(Some(self.convert_to_full_block(block))); } - self.fetch_full_block(hash).await + Ok(self.fetch_full_block(hash).await?.map(EthApi::shield_block_txs)) } pub async fn block_by_number( @@ -504,7 +506,7 @@ impl ClientFork { .copied() .and_then(|hash| self.storage_read().blocks.get(&hash).cloned()) { - return Ok(Some(self.convert_to_full_block(block))); + return Ok(Some(EthApi::shield_block_txs(self.convert_to_full_block(block)))); } self.fetch_full_block(block_number).await @@ -526,7 +528,7 @@ impl ClientFork { storage.transactions.extend(block_txs.iter().map(|tx| (tx.tx_hash(), tx.clone()))); storage.hashes.insert(block_number, hash); storage.blocks.insert(hash, block.clone()); - return Ok(Some(block)); + return Ok(Some(EthApi::shield_block_txs(block))); } Ok(None) @@ -538,7 +540,10 @@ impl ClientFork { index: usize, ) -> Result, TransportError> { if let Some(block) = self.block_by_hash(hash).await? { - return self.uncles_by_block_and_index(block, index).await; + return Ok(self + .uncles_by_block_and_index(block, index) + .await? + .map(EthApi::shield_block_txs)); } Ok(None) } @@ -549,7 +554,10 @@ impl ClientFork { index: usize, ) -> Result, TransportError> { if let Some(block) = self.block_by_number(number).await? { - return self.uncles_by_block_and_index(block, index).await; + return Ok(self + .uncles_by_block_and_index(block, index) + .await? + .map(EthApi::shield_block_txs)); } Ok(None) } @@ -562,7 +570,7 @@ impl ClientFork { let block_hash = block.header.hash; let block_number = block.header.number; if let Some(uncles) = self.storage_read().uncles.get(&block_hash) { - return Ok(uncles.get(index).cloned()); + return Ok(uncles.get(index).cloned().map(EthApi::shield_block_txs)); } let mut uncles = Vec::with_capacity(block.uncles.len()); @@ -575,7 +583,7 @@ impl ClientFork { uncles.push(uncle); } self.storage_write().uncles.insert(block_hash, uncles.clone()); - Ok(uncles.get(index).cloned()) + Ok(uncles.get(index).cloned().map(EthApi::shield_block_txs)) } /// Converts a block of hashes into a full block @@ -595,8 +603,7 @@ impl ClientFork { } // TODO: fix once blocks have generic transactions block.inner.transactions = BlockTransactions::Full(transactions); - - block + EthApi::shield_block_txs(block) } } diff --git a/crates/anvil/src/eth/backend/mem/mod.rs b/crates/anvil/src/eth/backend/mem/mod.rs index 967fb6e25..5175bfbf8 100644 --- a/crates/anvil/src/eth/backend/mem/mod.rs +++ b/crates/anvil/src/eth/backend/mem/mod.rs @@ -1450,6 +1450,7 @@ impl Backend { authorization_list: authorization_list.map(Into::into), tx_hash: B256::ZERO, rng_mode: revm::primitives::RngMode::Execution, + tx_type: request.inner.transaction_type.map(|t| t as isize), }; if env.block.basefee.is_zero() { diff --git a/crates/anvil/src/eth/backend/mem/storage.rs b/crates/anvil/src/eth/backend/mem/storage.rs index 5635a7acc..a1ad23b42 100644 --- a/crates/anvil/src/eth/backend/mem/storage.rs +++ b/crates/anvil/src/eth/backend/mem/storage.rs @@ -515,6 +515,7 @@ impl MinedTransaction { block_hash: Some(self.block_hash), block_number: Some(self.block_number), base_fee: None, + tx_type: self.info.tx_type, }) } @@ -555,12 +556,21 @@ impl MinedTransaction { } GethDebugBuiltInTracerType::CallTracer => { return match tracer_config.into_call_config() { - Ok(call_config) => Ok(GethTraceBuilder::new(self.info.traces.clone()) - .geth_call_traces( - call_config, - self.receipt.cumulative_gas_used() as u64, - ) - .into()), + Ok(call_config) => { + let mut frame = GethTraceBuilder::new(self.info.traces.clone()) + .geth_call_traces( + call_config, + self.receipt.cumulative_gas_used() as u64, + ); + if self.info.tx_type == + Some( + alloy_consensus::transaction::TxSeismic::TX_TYPE as isize, + ) + { + frame = frame.shield_inputs(); + } + Ok(frame.into()) + } Err(e) => Err(RpcError::invalid_params(e.to_string()).into()), }; } diff --git a/crates/evm/core/src/utils.rs b/crates/evm/core/src/utils.rs index 185dc522e..c6f8e4e19 100644 --- a/crates/evm/core/src/utils.rs +++ b/crates/evm/core/src/utils.rs @@ -181,6 +181,7 @@ fn get_create2_factory_call_inputs( is_static: false, return_memory_offset: 0..0, is_eof: false, + tx_type: Some(0), } } diff --git a/package.json b/package.json index 2599f335d..9572c0d1e 100644 --- a/package.json +++ b/package.json @@ -5,5 +5,9 @@ "private": true, "scripts": { "test": "bun run --cwd packages/client-tests test" + }, + "dependencies": { + "seismic-viem": "^1.0.34", + "seismic-viem-tests": "^0.0.9" } } diff --git a/packages/client-tests/viem.test.ts b/packages/client-tests/viem.test.ts index e647b6a0d..c55a67c21 100644 --- a/packages/client-tests/viem.test.ts +++ b/packages/client-tests/viem.test.ts @@ -18,6 +18,8 @@ import { testSeismicTxTypedData, testWsConnection, buildNode, + testSeismicTxTrace, + testLegacyTxTrace, } from "seismic-viem-tests" const TIMEOUT_MS = 10_000 @@ -136,6 +138,25 @@ describe("Seismic Precompiles", async () => { }) }) +describe('Transaction Trace', async () => { + test( + 'Seismic Tx removes input from trace', + async () => { + await testSeismicTxTrace({ chain, url, account }) + }, + { + timeout: TIMEOUT_MS, + } + ) + test( + 'Legacy Tx keeps input in trace', + async () => { + await testLegacyTxTrace({ chain, url, account }) + }, + { timeout: TIMEOUT_MS } + ) +}) + afterAll(() => { exitProcess() }) From 6e593426ca062f33a8ddd048f4a0adee34b253cf Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Tue, 25 Mar 2025 20:32:25 -0400 Subject: [PATCH 077/130] RPC tracing: Update alloy; Set tx type in call frame trace (#117) --- Cargo.lock | 62 ++++++++++----------- Cargo.toml | 50 ++++++++--------- crates/anvil/src/eth/backend/mem/storage.rs | 7 +-- 3 files changed, 59 insertions(+), 60 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b957a25f5..9fa09ac23 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "alloy-consensus" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-dyn-abi", "alloy-eips", @@ -133,7 +133,7 @@ dependencies = [ [[package]] name = "alloy-consensus-any" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-consensus", "alloy-eips", @@ -146,7 +146,7 @@ dependencies = [ [[package]] name = "alloy-contract" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -214,7 +214,7 @@ dependencies = [ [[package]] name = "alloy-eips" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-dyn-abi", "alloy-eip2930", @@ -232,7 +232,7 @@ dependencies = [ [[package]] name = "alloy-genesis" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-primitives", "alloy-serde", @@ -254,7 +254,7 @@ dependencies = [ [[package]] name = "alloy-json-rpc" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -267,7 +267,7 @@ dependencies = [ [[package]] name = "alloy-network" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -291,7 +291,7 @@ dependencies = [ [[package]] name = "alloy-network-primitives" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-consensus", "alloy-eips", @@ -303,7 +303,7 @@ dependencies = [ [[package]] name = "alloy-node-bindings" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-genesis", "alloy-primitives", @@ -350,7 +350,7 @@ dependencies = [ [[package]] name = "alloy-provider" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-chains", "alloy-consensus", @@ -393,7 +393,7 @@ dependencies = [ [[package]] name = "alloy-pubsub" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -433,7 +433,7 @@ dependencies = [ [[package]] name = "alloy-rpc-client" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -458,7 +458,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-primitives", "alloy-rpc-types-anvil", @@ -473,7 +473,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -484,7 +484,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -494,7 +494,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-debug" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-primitives", "serde", @@ -503,7 +503,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-engine" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-consensus", "alloy-eips", @@ -520,7 +520,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -539,7 +539,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-trace" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -553,7 +553,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-txpool" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -564,7 +564,7 @@ dependencies = [ [[package]] name = "alloy-serde" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-primitives", "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=3f47bf1)", @@ -575,7 +575,7 @@ dependencies = [ [[package]] name = "alloy-signer" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-dyn-abi", "alloy-primitives", @@ -590,7 +590,7 @@ dependencies = [ [[package]] name = "alloy-signer-aws" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-consensus", "alloy-network", @@ -607,7 +607,7 @@ dependencies = [ [[package]] name = "alloy-signer-gcp" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-consensus", "alloy-network", @@ -624,7 +624,7 @@ dependencies = [ [[package]] name = "alloy-signer-ledger" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -643,7 +643,7 @@ dependencies = [ [[package]] name = "alloy-signer-local" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-consensus", "alloy-network", @@ -661,7 +661,7 @@ dependencies = [ [[package]] name = "alloy-signer-trezor" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-consensus", "alloy-network", @@ -746,7 +746,7 @@ dependencies = [ [[package]] name = "alloy-transport" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-json-rpc", "base64 0.22.1", @@ -765,7 +765,7 @@ dependencies = [ [[package]] name = "alloy-transport-http" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -779,7 +779,7 @@ dependencies = [ [[package]] name = "alloy-transport-ipc" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-json-rpc", "alloy-pubsub", @@ -799,7 +799,7 @@ dependencies = [ [[package]] name = "alloy-transport-ws" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=faedb40#faedb40d87a2132c9997cd66d5f052cdaf66c99a" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-pubsub", "alloy-transport", diff --git a/Cargo.toml b/Cargo.toml index 1e8ca20c2..32e0bcbfc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -321,31 +321,31 @@ alloy-sol-types = { git = "https://github.com/SeismicSystems/seismic-alloy-core. alloy-sol-type-parser = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "5dc07cc" } # seismic-alloy -alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } -alloy-contract = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } -alloy-eips = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } -alloy-genesis = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } -alloy-json-rpc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } -alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } -alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } -alloy-pubsub = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } -alloy-rpc-client = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } -alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } -alloy-rpc-types-trace = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } -alloy-rpc-types-eth = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } -alloy-serde = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } -alloy-signer = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } -alloy-signer-aws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } -alloy-signer-gcp = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } -alloy-signer-ledger = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } -alloy-signer-local = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } -alloy-signer-trezor = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } -alloy-transport = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } -alloy-transport-http = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } -alloy-transport-ipc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } -alloy-transport-ws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } -alloy-node-bindings = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } -alloy-network-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "faedb40" } +alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } +alloy-contract = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } +alloy-eips = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } +alloy-genesis = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } +alloy-json-rpc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } +alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } +alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } +alloy-pubsub = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } +alloy-rpc-client = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } +alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } +alloy-rpc-types-trace = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } +alloy-rpc-types-eth = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } +alloy-serde = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } +alloy-signer = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } +alloy-signer-aws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } +alloy-signer-gcp = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } +alloy-signer-ledger = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } +alloy-signer-local = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } +alloy-signer-trezor = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } +alloy-transport = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } +alloy-transport-http = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } +alloy-transport-ipc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } +alloy-transport-ws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } +alloy-node-bindings = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } +alloy-network-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } foundry-compilers = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } foundry-compilers-artifacts = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } diff --git a/crates/anvil/src/eth/backend/mem/storage.rs b/crates/anvil/src/eth/backend/mem/storage.rs index a1ad23b42..e86e6f61c 100644 --- a/crates/anvil/src/eth/backend/mem/storage.rs +++ b/crates/anvil/src/eth/backend/mem/storage.rs @@ -562,10 +562,9 @@ impl MinedTransaction { call_config, self.receipt.cumulative_gas_used() as u64, ); - if self.info.tx_type == - Some( - alloy_consensus::transaction::TxSeismic::TX_TYPE as isize, - ) + frame.tx_type = self.info.tx_type.unwrap_or_default(); + if frame.tx_type == + alloy_consensus::transaction::TxSeismic::TX_TYPE as isize { frame = frame.shield_inputs(); } From cb1ea5a8a88ef39f5d84613ae90cb4ebdba697e2 Mon Sep 17 00:00:00 2001 From: phexyz <32248504+phexyz@users.noreply.github.com> Date: Fri, 4 Apr 2025 10:43:21 -0400 Subject: [PATCH 078/130] Fix: remove shield_inputs() for get transactions rpc end points (#120) --- crates/anvil/src/eth/api.rs | 48 ++++------------------------ crates/anvil/src/eth/backend/fork.rs | 27 ++++++---------- 2 files changed, 16 insertions(+), 59 deletions(-) diff --git a/crates/anvil/src/eth/api.rs b/crates/anvil/src/eth/api.rs index 9c22b4484..fd75ba60c 100644 --- a/crates/anvil/src/eth/api.rs +++ b/crates/anvil/src/eth/api.rs @@ -30,10 +30,7 @@ use crate::{ revm::primitives::{BlobExcessGasAndPrice, Output}, ClientFork, LoggingManager, Miner, MiningMode, StorageInfo, }; -use alloy_consensus::{ - transaction::{eip4844::TxEip4844Variant, ShieldableTransaction}, - Account, Typed2718, -}; +use alloy_consensus::{transaction::eip4844::TxEip4844Variant, Account}; use alloy_dyn_abi::TypedData; use alloy_eips::{eip2718::Encodable2718, eip712::Decodable712}; use alloy_network::{ @@ -1299,25 +1296,6 @@ impl EthApi { .map(U256::from) } - pub fn shield_tx(mut tx_wof: AnyRpcTransaction) -> AnyRpcTransaction { - if tx_wof.ty() == alloy_consensus::transaction::TxSeismic::TX_TYPE { - tx_wof.shield_input(); - } - tx_wof - } - - pub fn shield_block_txs(mut block: AnyRpcBlock) -> AnyRpcBlock { - match &mut block.transactions { - BlockTransactions::Full(txs) => { - for tx_wof in txs.iter_mut() { - *tx_wof = EthApi::shield_tx(tx_wof.clone()); - } - } - _ => {} - } - block - } - /// Get transaction by its hash. /// /// This will check the storage for a matching transaction, if no transaction exists in storage @@ -1344,7 +1322,7 @@ impl EthApi { tx = self.backend.transaction_by_hash(hash).await? } - Ok(tx.map(EthApi::shield_tx)) + Ok(tx) } /// Returns transaction at given block hash and index. @@ -1356,11 +1334,7 @@ impl EthApi { index: Index, ) -> Result> { node_info!("eth_getTransactionByBlockHashAndIndex"); - Ok(self - .backend - .transaction_by_block_hash_and_index(hash, index) - .await? - .map(EthApi::shield_tx)) + self.backend.transaction_by_block_hash_and_index(hash, index).await } /// Returns transaction by given block number and index. @@ -1372,11 +1346,7 @@ impl EthApi { idx: Index, ) -> Result> { node_info!("eth_getTransactionByBlockNumberAndIndex"); - Ok(self - .backend - .transaction_by_block_number_and_index(block, idx) - .await? - .map(EthApi::shield_tx)) + self.backend.transaction_by_block_number_and_index(block, idx).await } /// Returns transaction receipt by transaction hash. @@ -1412,10 +1382,7 @@ impl EthApi { self.backend.ensure_block_number(Some(BlockId::Hash(block_hash.into()))).await?; if let Some(fork) = self.get_fork() { if fork.predates_fork_inclusive(number) { - return Ok(fork - .uncle_by_block_hash_and_index(block_hash, idx.into()) - .await? - .map(EthApi::shield_block_txs)); + return Ok(fork.uncle_by_block_hash_and_index(block_hash, idx.into()).await?) } } // It's impossible to have uncles outside of fork mode @@ -1434,10 +1401,7 @@ impl EthApi { let number = self.backend.ensure_block_number(Some(BlockId::Number(block_number))).await?; if let Some(fork) = self.get_fork() { if fork.predates_fork_inclusive(number) { - return Ok(fork - .uncle_by_block_number_and_index(number, idx.into()) - .await? - .map(EthApi::shield_block_txs)); + return Ok(fork.uncle_by_block_number_and_index(number, idx.into()).await?) } } // It's impossible to have uncles outside of fork mode diff --git a/crates/anvil/src/eth/backend/fork.rs b/crates/anvil/src/eth/backend/fork.rs index 157e7de88..64852c802 100644 --- a/crates/anvil/src/eth/backend/fork.rs +++ b/crates/anvil/src/eth/backend/fork.rs @@ -1,8 +1,6 @@ //! Support for forking off another client -use crate::eth::{ - backend::db::Db, error::BlockchainError, pool::transactions::PoolTransaction, EthApi, -}; +use crate::eth::{backend::db::Db, error::BlockchainError, pool::transactions::PoolTransaction}; use alloy_consensus::Account; use alloy_eips::eip2930::AccessListResult; use alloy_network::{AnyRpcBlock, AnyRpcTransaction, BlockResponse, TransactionResponse}; @@ -471,7 +469,7 @@ impl ClientFork { if let Some(block) = self.storage_read().blocks.get(&hash).cloned() { return Ok(Some(self.convert_to_full_block(block))); } - Ok(self.fetch_full_block(hash).await?.map(EthApi::shield_block_txs)) + self.fetch_full_block(hash).await } pub async fn block_by_number( @@ -506,7 +504,7 @@ impl ClientFork { .copied() .and_then(|hash| self.storage_read().blocks.get(&hash).cloned()) { - return Ok(Some(EthApi::shield_block_txs(self.convert_to_full_block(block)))); + return Ok(Some(self.convert_to_full_block(block))); } self.fetch_full_block(block_number).await @@ -528,7 +526,7 @@ impl ClientFork { storage.transactions.extend(block_txs.iter().map(|tx| (tx.tx_hash(), tx.clone()))); storage.hashes.insert(block_number, hash); storage.blocks.insert(hash, block.clone()); - return Ok(Some(EthApi::shield_block_txs(block))); + return Ok(Some(block)); } Ok(None) @@ -540,10 +538,7 @@ impl ClientFork { index: usize, ) -> Result, TransportError> { if let Some(block) = self.block_by_hash(hash).await? { - return Ok(self - .uncles_by_block_and_index(block, index) - .await? - .map(EthApi::shield_block_txs)); + return self.uncles_by_block_and_index(block, index).await; } Ok(None) } @@ -554,10 +549,7 @@ impl ClientFork { index: usize, ) -> Result, TransportError> { if let Some(block) = self.block_by_number(number).await? { - return Ok(self - .uncles_by_block_and_index(block, index) - .await? - .map(EthApi::shield_block_txs)); + return self.uncles_by_block_and_index(block, index).await; } Ok(None) } @@ -570,7 +562,7 @@ impl ClientFork { let block_hash = block.header.hash; let block_number = block.header.number; if let Some(uncles) = self.storage_read().uncles.get(&block_hash) { - return Ok(uncles.get(index).cloned().map(EthApi::shield_block_txs)); + return Ok(uncles.get(index).cloned()); } let mut uncles = Vec::with_capacity(block.uncles.len()); @@ -583,7 +575,7 @@ impl ClientFork { uncles.push(uncle); } self.storage_write().uncles.insert(block_hash, uncles.clone()); - Ok(uncles.get(index).cloned().map(EthApi::shield_block_txs)) + Ok(uncles.get(index).cloned()) } /// Converts a block of hashes into a full block @@ -603,7 +595,8 @@ impl ClientFork { } // TODO: fix once blocks have generic transactions block.inner.transactions = BlockTransactions::Full(transactions); - EthApi::shield_block_txs(block) + + block } } From f9b7ed466914b43057b8e6bb0a2af08b5bb62e81 Mon Sep 17 00:00:00 2001 From: phexyz <32248504+phexyz@users.noreply.github.com> Date: Fri, 4 Apr 2025 10:53:20 -0400 Subject: [PATCH 079/130] Chore: added a test for estimate gas (#121) --- crates/anvil/tests/it/seismic.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/crates/anvil/tests/it/seismic.rs b/crates/anvil/tests/it/seismic.rs index 0b5a548d5..810d48f74 100644 --- a/crates/anvil/tests/it/seismic.rs +++ b/crates/anvil/tests/it/seismic.rs @@ -16,6 +16,7 @@ use alloy_provider::{ SendableTx, }; use alloy_rpc_types::{SeismicCallRequest, TransactionInput, TransactionRequest}; +use alloy_serde::WithOtherFields; use alloy_signer_local::PrivateKeySigner; use alloy_sol_types::{sol, SolCall, SolValue}; use anvil::{spawn, NodeConfig}; @@ -241,6 +242,28 @@ async fn test_seismic_transaction_rpc() { .client_decrypt(&res, &network_pubkey, &get_encryption_private_key()) .unwrap(); assert_eq!(Bytes::from(decrypted), test_utils::ContractTestContext::get_code()); + + // estiamte gas + let gas_estimate = api + .estimate_gas( + WithOtherFields::new( + get_unsigned_seismic_tx_request( + &signer, + &network_pubkey, + 0, + TxKind::Create, + provider.get_chain_id().await.unwrap(), + plaintext_bytecode.clone(), + ) + .await, + ), + None, + None, + ) + .await + .unwrap(); + println!("gas_estimate: {}", gas_estimate); + assert!(gas_estimate > U256::ZERO); } // Actual contract being tested: From d559ee78763dd8eaf0126d32f12df24802d41592 Mon Sep 17 00:00:00 2001 From: Ameya Deshmukh Date: Tue, 8 Apr 2025 03:27:29 +0530 Subject: [PATCH 080/130] fix: remove scast and schisel from sfoundryup for the time being (#122) --- sfoundryup/sfoundryup | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sfoundryup/sfoundryup b/sfoundryup/sfoundryup index 196850ed2..9219c8241 100755 --- a/sfoundryup/sfoundryup +++ b/sfoundryup/sfoundryup @@ -7,7 +7,7 @@ SEISMIC_BIN_DIR="$SEISMIC_DIR/bin" SEISMIC_MAN_DIR="$SEISMIC_DIR/share/man/man1" SEISMICUP_JOBS="" -BINS=(sanvil sforge scast schisel) +BINS=(sanvil sforge) export RUSTFLAGS="${RUSTFLAGS:--C target-cpu=native}" From 766dc0d91bfa7cc2c63108ef4b0ebad03c081580 Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Thu, 12 Jun 2025 08:27:39 -0400 Subject: [PATCH 081/130] Alloy 1: resolve all the conflicts (#124) --- Cargo.lock | 353 ++++++++++-------- Cargo.toml | 35 +- crates/anvil/Cargo.toml | 3 +- crates/anvil/core/Cargo.toml | 5 +- crates/anvil/core/src/eth/mod.rs | 10 +- crates/anvil/core/src/eth/transaction/mod.rs | 243 ++++++------ crates/anvil/core/src/types.rs | 3 +- crates/anvil/src/cmd.rs | 11 +- crates/anvil/src/config.rs | 25 +- crates/anvil/src/eth/api.rs | 179 +++++---- crates/anvil/src/eth/backend/db.rs | 3 +- crates/anvil/src/eth/backend/env.rs | 18 +- crates/anvil/src/eth/backend/executor.rs | 70 +++- crates/anvil/src/eth/backend/fork.rs | 21 +- crates/anvil/src/eth/backend/genesis.rs | 3 +- crates/anvil/src/eth/backend/info.rs | 3 +- crates/anvil/src/eth/backend/mem/mod.rs | 240 ++++++------ crates/anvil/src/eth/backend/mem/state.rs | 24 +- crates/anvil/src/eth/backend/mem/storage.rs | 17 +- crates/anvil/src/eth/fees.rs | 11 +- crates/anvil/src/eth/otterscan/api.rs | 7 +- crates/anvil/src/eth/pool/transactions.rs | 3 +- crates/anvil/src/evm.rs | 107 ++++-- crates/anvil/src/hardfork.rs | 2 +- crates/anvil/src/pubsub.rs | 3 +- crates/anvil/src/tasks/mod.rs | 4 +- crates/anvil/tests/it/anvil_api.rs | 38 +- crates/anvil/tests/it/api.rs | 42 +-- crates/anvil/tests/it/eip4844.rs | 40 +- crates/anvil/tests/it/eip7702.rs | 6 +- crates/anvil/tests/it/fork.rs | 99 ++--- crates/anvil/tests/it/gas.rs | 38 +- crates/anvil/tests/it/logs.rs | 5 +- crates/anvil/tests/it/main.rs | 1 - crates/anvil/tests/it/optimism.rs | 4 +- crates/anvil/tests/it/otterscan.rs | 20 +- crates/anvil/tests/it/pubsub.rs | 12 +- crates/anvil/tests/it/revert.rs | 26 +- crates/anvil/tests/it/seismic.rs | 177 +++++---- .../it/seismic_precompiles_test_bytecode.txt | 2 +- crates/anvil/tests/it/sign.rs | 9 +- crates/anvil/tests/it/simulate.rs | 5 +- crates/anvil/tests/it/state.rs | 8 +- crates/anvil/tests/it/traces.rs | 32 +- crates/anvil/tests/it/transaction.rs | 123 +++--- crates/anvil/tests/it/txpool.rs | 7 +- crates/anvil/tests/it/utils.rs | 15 +- crates/cast/Cargo.toml | 2 + crates/cast/src/cmd/call.rs | 10 +- crates/cast/src/cmd/da_estimate.rs | 16 +- crates/cast/src/cmd/logs.rs | 3 +- crates/cast/src/cmd/mktx.rs | 4 +- crates/cast/src/cmd/run.rs | 15 +- crates/cast/src/cmd/send.rs | 4 +- crates/cast/src/cmd/storage.rs | 3 +- crates/cast/src/lib.rs | 15 +- crates/cast/src/tx.rs | 45 +-- crates/cheatcodes/Cargo.toml | 4 +- crates/cheatcodes/src/evm.rs | 14 +- crates/cheatcodes/src/fs.rs | 3 +- crates/cheatcodes/src/inspector.rs | 67 ++-- crates/cheatcodes/src/lib.rs | 3 +- crates/cheatcodes/src/script.rs | 2 +- crates/cli/Cargo.toml | 2 + crates/cli/src/utils/abi.rs | 4 +- crates/cli/src/utils/mod.rs | 4 +- crates/common/Cargo.toml | 3 +- crates/common/fmt/Cargo.toml | 2 + crates/common/fmt/src/ui.rs | 50 ++- crates/common/src/constants.rs | 3 +- crates/common/src/provider/mod.rs | 5 +- crates/common/src/transactions.rs | 81 ++-- crates/config/Cargo.toml | 4 +- crates/config/src/lib.rs | 6 +- crates/config/src/utils.rs | 10 +- crates/evm/core/Cargo.toml | 4 +- crates/evm/core/src/backend/cow.rs | 19 +- crates/evm/core/src/backend/in_memory_db.rs | 18 +- crates/evm/core/src/backend/mod.rs | 56 +-- crates/evm/core/src/either_evm.rs | 75 +++- crates/evm/core/src/env.rs | 8 +- crates/evm/core/src/evm.rs | 101 +++-- crates/evm/core/src/fork/database.rs | 24 +- crates/evm/core/src/fork/init.rs | 10 +- crates/evm/core/src/lib.rs | 4 +- crates/evm/core/src/opts.rs | 11 +- crates/evm/core/src/utils.rs | 73 ++-- crates/evm/evm/Cargo.toml | 2 + crates/evm/evm/src/executors/builder.rs | 4 + crates/evm/evm/src/executors/mod.rs | 17 +- crates/evm/evm/src/executors/trace.rs | 4 + crates/evm/evm/src/inspectors/stack.rs | 4 +- crates/evm/evm/src/lib.rs | 2 +- crates/forge/Cargo.toml | 2 + crates/forge/src/cmd/create.rs | 9 +- crates/forge/src/multi_runner.rs | 4 +- crates/forge/tests/it/config.rs | 4 + crates/forge/tests/it/spec.rs | 6 +- crates/forge/tests/it/test_helpers.rs | 2 +- crates/forge/tests/ui.rs | 2 +- crates/script-sequence/Cargo.toml | 2 + crates/script-sequence/src/reader.rs | 3 +- crates/script-sequence/src/sequence.rs | 3 +- crates/script/Cargo.toml | 2 + crates/script/src/broadcast.rs | 19 +- crates/script/src/execute.rs | 5 +- crates/script/src/receipts.rs | 7 +- crates/script/src/runner.rs | 28 +- crates/script/src/simulate.rs | 2 +- crates/script/src/transaction.rs | 2 +- crates/verify/Cargo.toml | 2 +- crates/verify/src/bytecode.rs | 47 +-- crates/verify/src/etherscan/mod.rs | 4 +- crates/verify/src/utils.rs | 6 +- 114 files changed, 1836 insertions(+), 1257 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3ab4c9600..42a1bd664 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -82,9 +82,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy-chains" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "517e5acbd38b6d4c59da380e8bbadc6d365bf001903ce46cf5521c53c647e07b" +checksum = "d6967ca1ed656766e471bc323da42fb0db320ca5e1418b408650e98e4757b3d2" dependencies = [ "alloy-primitives", "num_enum", @@ -110,7 +110,7 @@ dependencies = [ "k256", "once_cell", "rand 0.8.5", - "secp256k1 0.30.0", + "secp256k1", "serde", "serde_with", "thiserror 2.0.12", @@ -245,7 +245,7 @@ dependencies = [ [[package]] name = "alloy-evm" version = "0.9.1" -source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=b4221d8#b4221d8b383df0786c9567476afeb8ef1972a6f7" +source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=8230891#82308916eb4d42cc7f8d532667a01c50adf67549" dependencies = [ "alloy-consensus", "alloy-eips", @@ -354,7 +354,7 @@ dependencies = [ [[package]] name = "alloy-op-evm" version = "0.9.1" -source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=b4221d8#b4221d8b383df0786c9567476afeb8ef1972a6f7" +source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=8230891#82308916eb4d42cc7f8d532667a01c50adf67549" dependencies = [ "alloy-consensus", "alloy-eips", @@ -636,6 +636,18 @@ dependencies = [ "serde", ] +[[package]] +name = "alloy-seismic-evm" +version = "0.9.1" +source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=8230891#82308916eb4d42cc7f8d532667a01c50adf67549" +dependencies = [ + "alloy-evm", + "alloy-primitives", + "revm", + "seismic-enclave", + "seismic-revm", +] + [[package]] name = "alloy-serde" version = "1.0.9" @@ -958,9 +970,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.18" +version = "0.6.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933" dependencies = [ "anstyle", "anstyle-parse", @@ -973,55 +985,55 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" +checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" [[package]] name = "anstyle-lossy" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "934ff8719effd2023a48cf63e69536c1c3ced9d3895068f6f5cc9a4ff845e59b" +checksum = "04d3a5dc826f84d0ea11882bb8054ff7f3d482602e11bb181101303a279ea01f" dependencies = [ "anstyle", ] [[package]] name = "anstyle-parse" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9" dependencies = [ "windows-sys 0.59.0", ] [[package]] name = "anstyle-svg" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3607949e9f6de49ea4bafe12f5e4fd73613ebf24795e48587302a8cc0e4bb35" +checksum = "c681338396641f4e32a29f045d0c70950da7207b4376685b51396c481ee36f1a" dependencies = [ - "anstream", "anstyle", "anstyle-lossy", + "anstyle-parse", "html-escape", "unicode-width 0.2.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.8" +version = "3.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6680de5231bd6ee4c6191b8a1325daa282b415391ec9d3a37bd34f2060dc73fa" +checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882" dependencies = [ "anstyle", "once_cell_polyfill", @@ -1089,8 +1101,9 @@ dependencies = [ "reqwest", "revm", "revm-inspectors", - "secp256k1 0.29.1", + "secp256k1", "seismic-enclave", + "seismic-prelude", "serde", "serde_json", "tempfile", @@ -1109,7 +1122,6 @@ dependencies = [ "alloy-consensus", "alloy-dyn-abi", "alloy-eips", - "alloy-network", "alloy-primitives", "alloy-rlp", "alloy-rpc-types", @@ -1121,9 +1133,8 @@ dependencies = [ "op-revm", "rand 0.9.1", "revm", - "seismic-alloy-consensus", - "seismic-alloy-rpc-types", "seismic-enclave", + "seismic-prelude", "serde", "serde_json", "thiserror 2.0.12", @@ -1702,9 +1713,9 @@ dependencies = [ [[package]] name = "aws-sdk-kms" -version = "1.72.0" +version = "1.74.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eef6a94141a43ee28404bf135828ad9bdd4936bfa2a84ad8dea355c94646a35" +checksum = "f94d32be4f324f9b9c8581b343bc49ef1f6173f35b78658f60284ee3fcf55c45" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1724,9 +1735,9 @@ dependencies = [ [[package]] name = "aws-sdk-sso" -version = "1.71.0" +version = "1.72.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a4fd09d6e863655d99cd2260f271c6d1030dc6bfad68e19e126d2e4c8ceb18" +checksum = "13118ad30741222f67b1a18e5071385863914da05124652b38e172d6d3d9ce31" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1746,9 +1757,9 @@ dependencies = [ [[package]] name = "aws-sdk-ssooidc" -version = "1.72.0" +version = "1.73.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3224ab02ebb3074467a33d57caf6fcb487ca36f3697fdd381b0428dc72380696" +checksum = "f879a8572b4683a8f84f781695bebf2f25cf11a81a2693c31fc0e0215c2c1726" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1768,9 +1779,9 @@ dependencies = [ [[package]] name = "aws-sdk-sts" -version = "1.72.0" +version = "1.73.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6933f189ed1255e78175fbd73fb200c0aae7240d220ed3346f567b0ddca3083" +checksum = "f1e9c3c24e36183e2f698235ed38dcfbbdff1d09b9232dc866c4be3011e0b47e" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1844,9 +1855,9 @@ dependencies = [ [[package]] name = "aws-smithy-http-client" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e44697a9bded898dcd0b1cb997430d949b87f4f8940d91023ae9062bf218250" +checksum = "073d330f94bdf1f47bb3e0f5d45dda1e372a54a553c39ab6e9646902c8c81594" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", @@ -2082,9 +2093,9 @@ dependencies = [ [[package]] name = "base64ct" -version = "1.7.3" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e25b6adfb930f02d1981565a6e5d9c547ac15a96606256d3b59040e5cd4ca3" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" [[package]] name = "bech32" @@ -2267,9 +2278,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.17.0" +version = "3.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" +checksum = "c1b094a32014c3d1f3944e4808e0e7c70e97dae0660886a8eb6dbc52d745badc" [[package]] name = "byte-slice-cast" @@ -2344,9 +2355,9 @@ dependencies = [ [[package]] name = "camino" -version = "1.1.9" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" +checksum = "0da45bc31171d8d6960122e222a67740df867c1dd53b4d51caa297084c185cab" dependencies = [ "serde", ] @@ -2431,6 +2442,7 @@ dependencies = [ "regex", "revm", "rpassword", + "seismic-prelude", "semver 1.0.26", "serde", "serde_json", @@ -2451,9 +2463,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.24" +version = "1.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16595d3be041c03b09d08d0858631facccee9221e579704070e6e9e4915d3bc7" +checksum = "d0fc897dc1e865cc67c0e05a836d9d3f1df3cbe442aa4a9473b18e12624a4951" dependencies = [ "jobserver", "libc", @@ -2619,9 +2631,9 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.5.51" +version = "4.5.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d2267df7f3c8e74e38268887ea5235d4dfadd39bfff2d56ab82d61776be355e" +checksum = "1a554639e42d0c838336fc4fbedb9e2df3ad1fa4acda149f9126b4ccfcd7900f" dependencies = [ "clap", ] @@ -2775,9 +2787,9 @@ dependencies = [ [[package]] name = "color-eyre" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6e1761c0e16f8883bbbb8ce5990867f4f06bf11a0253da6495a04ce4b6ef0ec" +checksum = "e5920befb47832a6d61ee3a3a846565cfa39b331331e68a3b1d1116630f2f26d" dependencies = [ "backtrace", "color-spantrace", @@ -2790,9 +2802,9 @@ dependencies = [ [[package]] name = "color-spantrace" -version = "0.2.2" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ddd8d5bfda1e11a501d0a7303f3bfed9aa632ebdb859be40d0fd70478ed70d5" +checksum = "b8b88ea9df13354b55bc7234ebcce36e6ef896aca2e42a15de9e10edce01b427" dependencies = [ "once_cell", "owo-colors 4.2.1", @@ -2802,9 +2814,9 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" [[package]] name = "colored" @@ -3921,6 +3933,7 @@ dependencies = [ "regex", "reqwest", "revm", + "seismic-prelude", "semver 1.0.26", "serde", "serde_json", @@ -4033,6 +4046,7 @@ dependencies = [ "itertools 0.14.0", "parking_lot", "revm-inspectors", + "seismic-prelude", "semver 1.0.26", "serde", "serde_json", @@ -4053,6 +4067,7 @@ dependencies = [ "foundry-compilers", "foundry-config", "revm-inspectors", + "seismic-prelude", "serde", "serde_json", "walkdir", @@ -4098,7 +4113,7 @@ dependencies = [ "regex", "reqwest", "revm", - "seismic-alloy-rpc-types", + "seismic-prelude", "semver 1.0.26", "serde", "serde_json", @@ -4143,7 +4158,6 @@ dependencies = [ "alloy-consensus", "alloy-dyn-abi", "alloy-ens", - "alloy-evm", "alloy-genesis", "alloy-json-abi", "alloy-network", @@ -4177,7 +4191,7 @@ dependencies = [ "rand_chacha 0.9.0", "revm", "revm-inspectors", - "seismic-revm", + "seismic-prelude", "semver 1.0.26", "serde", "serde_json", @@ -4230,6 +4244,7 @@ dependencies = [ "rayon", "regex", "rustls", + "seismic-prelude", "serde", "serde_json", "strsim", @@ -4253,7 +4268,6 @@ dependencies = [ "alloy-eips", "alloy-json-abi", "alloy-json-rpc", - "alloy-network", "alloy-primitives", "alloy-provider", "alloy-pubsub", @@ -4283,6 +4297,7 @@ dependencies = [ "num-format", "path-slash", "reqwest", + "seismic-prelude", "semver 1.0.26", "serde", "serde_json", @@ -4313,6 +4328,7 @@ dependencies = [ "chrono", "foundry-macros", "revm", + "seismic-prelude", "serde", "serde_json", "similar-asserts", @@ -4444,7 +4460,7 @@ dependencies = [ "path-slash", "regex", "reqwest", - "revm", + "seismic-prelude", "semver 1.0.26", "serde", "serde_json", @@ -4502,6 +4518,7 @@ dependencies = [ "proptest", "revm", "revm-inspectors", + "seismic-prelude", "serde", "thiserror 2.0.12", "tracing", @@ -4529,7 +4546,6 @@ dependencies = [ "alloy-genesis", "alloy-json-abi", "alloy-network", - "alloy-op-evm", "alloy-primitives", "alloy-provider", "alloy-rpc-types", @@ -4548,7 +4564,7 @@ dependencies = [ "parking_lot", "revm", "revm-inspectors", - "seismic-alloy-rpc-types", + "seismic-prelude", "serde", "serde_json", "thiserror 2.0.12", @@ -4627,7 +4643,7 @@ dependencies = [ [[package]] name = "foundry-fork-db" version = "0.14.0" -source = "git+https://github.com/SeismicSystems/seismic-foundry-fork-db.git?rev=9c7f679#9c7f679cc103ec65d7343f7105783c951aec88b7" +source = "git+https://github.com/SeismicSystems/seismic-foundry-fork-db.git?rev=e973e44#e973e440b42493f3b022e8a09a188513a0c73dee" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -4637,6 +4653,7 @@ dependencies = [ "futures", "parking_lot", "revm", + "seismic-prelude", "serde", "serde_json", "thiserror 2.0.12", @@ -4890,9 +4907,9 @@ checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" [[package]] name = "gcloud-sdk" -version = "0.27.1" +version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44163d7c0d0bc470caa43766beda779e584034abd6b681319d8f9be2fc194eba" +checksum = "a3ec9c312db09dc0dac684dda2f18d76e9ce00effdd27fcaaa90fa811691cd6d" dependencies = [ "async-trait", "bytes", @@ -5149,12 +5166,6 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" -[[package]] -name = "hermit-abi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" - [[package]] name = "hermit-abi" version = "0.5.1" @@ -5368,9 +5379,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c293b6b3d21eca78250dc7dbebd6b9210ec5530e038cbfe0661b5c47ab06e8" +checksum = "dc2fdfdbff08affe55bb779f33b053aa1fe5dd5b54c257343c17edfa55711bdb" dependencies = [ "base64 0.22.1", "bytes", @@ -5644,7 +5655,7 @@ version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" dependencies = [ - "hermit-abi 0.5.1", + "hermit-abi", "libc", "windows-sys 0.59.0", ] @@ -6225,9 +6236,9 @@ checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" [[package]] name = "lock_api" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" dependencies = [ "autocfg", "scopeguard", @@ -6767,11 +6778,11 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" dependencies = [ - "hermit-abi 0.3.9", + "hermit-abi", "libc", ] @@ -6877,14 +6888,14 @@ dependencies = [ [[package]] name = "op-alloy-flz" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ef71f23a8caf6f2a2d5cafbdc44956d44e6014dcb9aa58abf7e4e6481c6ec34" +checksum = "a79f352fc3893dcd670172e615afef993a41798a1d3fc0db88a3e60ef2e70ecc" [[package]] name = "op-revm" version = "4.0.2" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=53769b4#53769b4ee18632e2634c3fa7ea249440ec1b1639" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5e305bd7#5e305bd7abf92168449ceea7efb09182b9b1d1f4" dependencies = [ "auto_impl", "once_cell", @@ -7014,9 +7025,9 @@ checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" dependencies = [ "lock_api", "parking_lot_core", @@ -7024,9 +7035,9 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.10" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" dependencies = [ "cfg-if", "libc", @@ -7386,9 +7397,9 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.32" +version = "0.2.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "664ec5419c51e34154eec046ebcba56312d5a2fc3b09a06da188e1ad21afadf6" +checksum = "9dee91521343f4c5c6a63edd65e54f31f5c92fe8978c40a4282f8372194c6a7d" dependencies = [ "proc-macro2", "syn 2.0.101", @@ -7897,9 +7908,9 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" -version = "0.12.18" +version = "0.12.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e98ff6b0dbbe4d5a37318f433d4fc82babd21631f194d370409ceb2e40b2f0b5" +checksum = "a2f8e5513d63f2e5b386eb5106dc67eaf3f84e95258e210489136b8b92ad6119" dependencies = [ "async-compression", "base64 0.22.1", @@ -7949,7 +7960,7 @@ dependencies = [ [[package]] name = "revm" version = "23.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=53769b4#53769b4ee18632e2634c3fa7ea249440ec1b1639" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5e305bd7#5e305bd7abf92168449ceea7efb09182b9b1d1f4" dependencies = [ "revm-bytecode", "revm-context", @@ -7967,7 +7978,7 @@ dependencies = [ [[package]] name = "revm-bytecode" version = "4.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=53769b4#53769b4ee18632e2634c3fa7ea249440ec1b1639" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5e305bd7#5e305bd7abf92168449ceea7efb09182b9b1d1f4" dependencies = [ "bitvec", "once_cell", @@ -7979,7 +7990,7 @@ dependencies = [ [[package]] name = "revm-context" version = "4.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=53769b4#53769b4ee18632e2634c3fa7ea249440ec1b1639" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5e305bd7#5e305bd7abf92168449ceea7efb09182b9b1d1f4" dependencies = [ "cfg-if", "derive-where", @@ -7994,7 +8005,7 @@ dependencies = [ [[package]] name = "revm-context-interface" version = "4.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=53769b4#53769b4ee18632e2634c3fa7ea249440ec1b1639" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5e305bd7#5e305bd7abf92168449ceea7efb09182b9b1d1f4" dependencies = [ "alloy-eip2930", "alloy-eip7702", @@ -8009,7 +8020,7 @@ dependencies = [ [[package]] name = "revm-database" version = "4.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=53769b4#53769b4ee18632e2634c3fa7ea249440ec1b1639" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5e305bd7#5e305bd7abf92168449ceea7efb09182b9b1d1f4" dependencies = [ "alloy-eips", "revm-bytecode", @@ -8022,7 +8033,7 @@ dependencies = [ [[package]] name = "revm-database-interface" version = "4.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=53769b4#53769b4ee18632e2634c3fa7ea249440ec1b1639" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5e305bd7#5e305bd7abf92168449ceea7efb09182b9b1d1f4" dependencies = [ "auto_impl", "revm-primitives", @@ -8033,7 +8044,7 @@ dependencies = [ [[package]] name = "revm-handler" version = "4.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=53769b4#53769b4ee18632e2634c3fa7ea249440ec1b1639" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5e305bd7#5e305bd7abf92168449ceea7efb09182b9b1d1f4" dependencies = [ "auto_impl", "revm-bytecode", @@ -8050,7 +8061,7 @@ dependencies = [ [[package]] name = "revm-inspector" version = "4.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=53769b4#53769b4ee18632e2634c3fa7ea249440ec1b1639" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5e305bd7#5e305bd7abf92168449ceea7efb09182b9b1d1f4" dependencies = [ "auto_impl", "revm-context", @@ -8083,7 +8094,7 @@ dependencies = [ [[package]] name = "revm-interpreter" version = "19.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=53769b4#53769b4ee18632e2634c3fa7ea249440ec1b1639" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5e305bd7#5e305bd7abf92168449ceea7efb09182b9b1d1f4" dependencies = [ "revm-bytecode", "revm-context-interface", @@ -8094,7 +8105,7 @@ dependencies = [ [[package]] name = "revm-precompile" version = "20.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=53769b4#53769b4ee18632e2634c3fa7ea249440ec1b1639" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5e305bd7#5e305bd7abf92168449ceea7efb09182b9b1d1f4" dependencies = [ "ark-bls12-381", "ark-bn254", @@ -8111,14 +8122,14 @@ dependencies = [ "p256", "revm-primitives", "ripemd", - "secp256k1 0.30.0", + "secp256k1", "sha2 0.10.9", ] [[package]] name = "revm-primitives" version = "19.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=53769b4#53769b4ee18632e2634c3fa7ea249440ec1b1639" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5e305bd7#5e305bd7abf92168449ceea7efb09182b9b1d1f4" dependencies = [ "alloy-primitives", "num_enum", @@ -8128,7 +8139,7 @@ dependencies = [ [[package]] name = "revm-state" version = "4.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=53769b4#53769b4ee18632e2634c3fa7ea249440ec1b1639" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5e305bd7#5e305bd7abf92168449ceea7efb09182b9b1d1f4" dependencies = [ "bitflags 2.9.1", "revm-bytecode", @@ -8585,17 +8596,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "secp256k1" -version = "0.29.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9465315bc9d4566e1724f0fffcbcc446268cb522e60f9a27bcded6b19c108113" -dependencies = [ - "rand 0.8.5", - "secp256k1-sys", - "serde", -] - [[package]] name = "secp256k1" version = "0.30.0" @@ -8656,7 +8656,7 @@ dependencies = [ [[package]] name = "seismic-alloy-consensus" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-op-alloy.git?rev=fd53089#fd53089ac9c20c973ca76914ce1d370c45ee9d45" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=b2ade53#b2ade5397da3e80ad8add857a72abbafb266b5bf" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -8674,10 +8674,52 @@ dependencies = [ "thiserror 2.0.12", ] +[[package]] +name = "seismic-alloy-network" +version = "0.0.1" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=b2ade53#b2ade5397da3e80ad8add857a72abbafb266b5bf" +dependencies = [ + "alloy-consensus", + "alloy-eip7702", + "alloy-network", + "alloy-network-primitives", + "alloy-primitives", + "alloy-provider", + "alloy-rpc-types-eth", + "alloy-serde", + "alloy-signer", + "alloy-transport", + "async-trait", + "derive_more 1.0.0", + "futures", + "seismic-alloy-consensus", + "seismic-alloy-rpc-types", + "serde", +] + +[[package]] +name = "seismic-alloy-provider" +version = "0.0.1" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=b2ade53#b2ade5397da3e80ad8add857a72abbafb266b5bf" +dependencies = [ + "alloy-consensus", + "alloy-network", + "alloy-primitives", + "alloy-provider", + "alloy-rpc-client", + "alloy-signer", + "alloy-transport", + "async-trait", + "reqwest", + "seismic-alloy-consensus", + "seismic-alloy-network", + "seismic-enclave", +] + [[package]] name = "seismic-alloy-rpc-types" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-op-alloy.git?rev=fd53089#fd53089ac9c20c973ca76914ce1d370c45ee9d45" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=b2ade53#b2ade5397da3e80ad8add857a72abbafb266b5bf" dependencies = [ "alloy-consensus", "alloy-eips", @@ -8695,7 +8737,7 @@ dependencies = [ [[package]] name = "seismic-enclave" version = "0.1.0" -source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=3f47bf1#3f47bf193c3a62dbc4dcfdf28d789b4d8b3e61f9" +source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=99351ff#99351ff6261772f48b9936a2a2648073defbffd5" dependencies = [ "aes-gcm", "anyhow", @@ -8710,7 +8752,7 @@ dependencies = [ "rand 0.9.1", "reqwest", "schnorrkel", - "secp256k1 0.29.1", + "secp256k1", "seismic-enclave-derive", "serde", "serde_json", @@ -8724,17 +8766,42 @@ dependencies = [ [[package]] name = "seismic-enclave-derive" version = "0.1.0" -source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=3f47bf1#3f47bf193c3a62dbc4dcfdf28d789b4d8b3e61f9" +source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=99351ff#99351ff6261772f48b9936a2a2648073defbffd5" dependencies = [ "proc-macro2", "quote", "syn 2.0.101", ] +[[package]] +name = "seismic-prelude" +version = "0.0.1" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=b2ade53#b2ade5397da3e80ad8add857a72abbafb266b5bf" +dependencies = [ + "alloy-consensus", + "alloy-eip7702", + "alloy-evm", + "alloy-network", + "alloy-network-primitives", + "alloy-primitives", + "alloy-rpc-types", + "alloy-rpc-types-eth", + "alloy-seismic-evm", + "alloy-serde", + "derive_more 1.0.0", + "revm", + "seismic-alloy-consensus", + "seismic-alloy-network", + "seismic-alloy-provider", + "seismic-alloy-rpc-types", + "seismic-revm", + "serde", +] + [[package]] name = "seismic-revm" version = "1.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=53769b4#53769b4ee18632e2634c3fa7ea249440ec1b1639" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5e305bd7#5e305bd7abf92168449ceea7efb09182b9b1d1f4" dependencies = [ "auto_impl", "hkdf", @@ -8743,7 +8810,7 @@ dependencies = [ "rand_core 0.6.4", "revm", "schnorrkel", - "secp256k1 0.30.0", + "secp256k1", "seismic-enclave", "serde", "sha2 0.10.9", @@ -9189,18 +9256,18 @@ dependencies = [ [[package]] name = "solar-config" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00ff62c74517305ddee6fdfa741bac8195826d2820586659341063c991fa4a9e" +checksum = "908d455bb7c04acd783bd157b63791bf010cf6a495a845e48f7aee334aad319f" dependencies = [ "strum 0.27.1", ] [[package]] name = "solar-data-structures" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c5934e613b60cfb0b2eadc035bac1fb57641026e4c2fb3683e9580391bd109" +checksum = "a8b5a697cab81241c4623b4546c69e57182202847a75d7c0047c0dd10b923d8c" dependencies = [ "bumpalo", "index_vec", @@ -9243,9 +9310,9 @@ dependencies = [ [[package]] name = "solar-macros" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccbdb5d9ecd4127af47279f99475f9fbff6ad3d03afc98ba78e1998bc07c0d46" +checksum = "e17f8b99f28f358b41acb6efe4d7b8f326541b3c58a15dd1931d6fe581feefef" dependencies = [ "proc-macro2", "quote", @@ -10084,12 +10151,13 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.6.4" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fdb0c213ca27a9f57ab69ddb290fd80d970922355b83ae380b395d3986b8a2e" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" dependencies = [ "bitflags 2.9.1", "bytes", + "futures-core", "futures-util", "http 1.3.1", "http-body 1.0.1", @@ -10252,9 +10320,9 @@ dependencies = [ [[package]] name = "tracy-client" -version = "0.18.0" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d90a2c01305b02b76fdd89ac8608bae27e173c829a35f7d76a345ab5d33836db" +checksum = "3927832d93178f979a970d26deed7b03510586e328f31b0f9ad7a73985b8332a" dependencies = [ "loom", "once_cell", @@ -10264,9 +10332,9 @@ dependencies = [ [[package]] name = "tracy-client-sys" -version = "0.24.3" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69fff37da548239c3bf9e64a12193d261e8b22b660991c6fd2df057c168f435f" +checksum = "c032d68a49d25d9012a864fef1c64ac17aee43c87e0477bf7301d8ae8bfea7b7" dependencies = [ "cc", "windows-targets 0.52.6", @@ -10979,7 +11047,7 @@ dependencies = [ "windows-interface", "windows-link", "windows-result", - "windows-strings 0.4.2", + "windows-strings", ] [[package]] @@ -11033,13 +11101,13 @@ dependencies = [ [[package]] name = "windows-registry" -version = "0.4.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3" +checksum = "b3bab093bdd303a1240bb99b8aba8ea8a69ee19d34c9e2ef9594e708a4878820" dependencies = [ + "windows-link", "windows-result", - "windows-strings 0.3.1", - "windows-targets 0.53.0", + "windows-strings", ] [[package]] @@ -11051,15 +11119,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "windows-strings" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319" -dependencies = [ - "windows-link", -] - [[package]] name = "windows-strings" version = "0.4.2" @@ -11492,13 +11551,3 @@ dependencies = [ "cc", "pkg-config", ] - -[[patch.unused]] -name = "seismic-alloy-network" -version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-op-alloy.git?rev=fd53089#fd53089ac9c20c973ca76914ce1d370c45ee9d45" - -[[patch.unused]] -name = "seismic-alloy-provider" -version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-op-alloy.git?rev=fd53089#fd53089ac9c20c973ca76914ce1d370c45ee9d45" diff --git a/Cargo.toml b/Cargo.toml index e7760d939..a57cc349d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -168,11 +168,8 @@ trezor-client.opt-level = "z" [workspace.dependencies] # Seismic-specific deps -seismic-alloy-consensus = "0.0.1" -seismic-alloy-network = "0.0.1" -seismic-alloy-rpc-types = "0.0.1" -seismic-alloy-provider = "0.0.1" -seismic-revm = "1.0.0" +alloy-rpc-types-eth = { version = "1.0.5", default-features = true } +seismic-prelude = "0.0.1" seismic-enclave = "0.1.0" anvil = { path = "crates/anvil" } @@ -365,21 +362,22 @@ zip-extract = "=0.2.1" # If our dependencies depend on these things, # then this will override whatever versions they point to # and instead use our local version -seismic-enclave = { git = "https://github.com/SeismicSystems/seismic-enclave.git", rev = "3f47bf1"} +seismic-enclave = { git = "https://github.com/SeismicSystems/seismic-enclave.git", rev = "99351ff"} -seismic-alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-op-alloy.git", rev = "fd53089" } -seismic-alloy-network = { git = "https://github.com/SeismicSystems/seismic-op-alloy.git", rev = "fd53089" } -seismic-alloy-provider = { git = "https://github.com/SeismicSystems/seismic-op-alloy.git", rev = "fd53089" } -seismic-alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-op-alloy.git", rev = "fd53089" } +seismic-alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "b2ade53" } +seismic-alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "b2ade53" } +seismic-alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "b2ade53" } +seismic-alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "b2ade53" } +seismic-prelude = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "b2ade53" } -foundry-fork-db = { git = "https://github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "9c7f679" } +foundry-fork-db = { git = "https://github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "e973e44" } # seismic-revm -revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "53769b4" } -revm-primitives = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "53769b4" } -revm-interpreter = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "53769b4" } -op-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "53769b4" } -seismic-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "53769b4" } +revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "5e305bd7" } +revm-primitives = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "5e305bd7" } +revm-interpreter = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "5e305bd7" } +op-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "5e305bd7" } +seismic-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "5e305bd7" } # seismic-revm-inspectors revm-inspectors = { git = "https://github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "cebb097" } @@ -401,7 +399,8 @@ foundry-compilers-artifacts-vyper = { git = "https://github.com/SeismicSystems/s foundry-compilers-core = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "cde8c42" } # alloy-evm -alloy-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "b4221d8" } -alloy-op-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "b4221d8" } +alloy-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "8230891" } +alloy-op-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "8230891" } +alloy-seismic-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "8230891" } alloy-trie = { git = "https://github.com/SeismicSystems/seismic-trie.git", rev = "f3a74a3" } diff --git a/crates/anvil/Cargo.toml b/crates/anvil/Cargo.toml index 62e03a086..4d820563c 100644 --- a/crates/anvil/Cargo.toml +++ b/crates/anvil/Cargo.toml @@ -20,13 +20,14 @@ required-features = ["cli"] [dependencies] # Seismic's added dependencies -secp256k1 = { version = "0.29", default-features = false, features = [ +secp256k1 = { version = "0.30", default-features = false, features = [ "global-context", "recovery", ] } bytes.workspace = true k256.workspace = true seismic-enclave.workspace = true +seismic-prelude.workspace = true # foundry internal anvil-core = { path = "core" } diff --git a/crates/anvil/core/Cargo.toml b/crates/anvil/core/Cargo.toml index d4b9b0481..9f54aba97 100644 --- a/crates/anvil/core/Cargo.toml +++ b/crates/anvil/core/Cargo.toml @@ -13,9 +13,8 @@ repository.workspace = true workspace = true [dependencies] -seismic-alloy-rpc-types.workspace = true -seismic-alloy-consensus.workspace = true seismic-enclave.workspace = true +seismic-prelude.workspace = true foundry-common.workspace = true foundry-evm.workspace = true @@ -35,7 +34,7 @@ alloy-eips.workspace = true alloy-consensus = { workspace = true, features = ["k256", "kzg"] } alloy-dyn-abi = { workspace = true, features = ["std", "eip712", "seismic"] } op-alloy-consensus = { workspace = true, features = ["serde"] } -alloy-network.workspace = true +# alloy-network.workspace = true serde.workspace = true serde_json.workspace = true bytes.workspace = true diff --git a/crates/anvil/core/src/eth/mod.rs b/crates/anvil/core/src/eth/mod.rs index a3f2c8924..ebadb1469 100644 --- a/crates/anvil/core/src/eth/mod.rs +++ b/crates/anvil/core/src/eth/mod.rs @@ -3,8 +3,6 @@ use alloy_primitives::{Address, Bytes, TxHash, B256, B64, U256}; use alloy_rpc_types::{ anvil::{Forking, MineOptions}, pubsub::{Params as SubscriptionParams, SubscriptionKind}, - request::TransactionRequest, - simulate::SimulatePayload, state::StateOverride, trace::{ filter::TraceFilter, @@ -17,6 +15,10 @@ use foundry_common::serde_helpers::{ deserialize_number, deserialize_number_opt, deserialize_number_seq, }; +use seismic_prelude::foundry::{ + SeismicCallRequest, SeismicRawTxRequest, SimulatePayload, TransactionRequest, +}; + pub mod block; pub mod subscription; pub mod transaction; @@ -148,11 +150,11 @@ pub enum EthRequest { EthSendTransaction(Box>), #[serde(rename = "eth_sendRawTransaction", with = "sequence")] - EthSendRawTransaction(seismic_alloy_rpc_types::SeismicRawTxRequest), + EthSendRawTransaction(SeismicRawTxRequest), #[serde(rename = "eth_call")] EthCall( - seismic_alloy_rpc_types::SeismicCallRequest, + SeismicCallRequest, #[serde(default)] Option, #[serde(default)] Option, #[serde(default)] Option>, diff --git a/crates/anvil/core/src/eth/transaction/mod.rs b/crates/anvil/core/src/eth/transaction/mod.rs index 7c7be1dae..8d6709140 100644 --- a/crates/anvil/core/src/eth/transaction/mod.rs +++ b/crates/anvil/core/src/eth/transaction/mod.rs @@ -4,22 +4,20 @@ use alloy_consensus::{ eip4844::{TxEip4844, TxEip4844Variant, TxEip4844WithSidecar}, Recovered, TxEip7702, }, - Receipt, ReceiptEnvelope, ReceiptWithBloom, Signed, Transaction, TxEip1559, TxEip2930, - TxEnvelope as AlloyTxEnvelope, TxLegacy, TxReceipt, Typed2718, + EthereumTxEnvelope, Receipt, ReceiptEnvelope, ReceiptWithBloom, Signed, Transaction, TxEip1559, + TxEip2930, TxLegacy, TxReceipt, Typed2718, }; -use seismic_alloy_consensus::SeismicTxEnvelope as TxEnvelope; -use alloy_network::{AnyReceiptEnvelope, AnyRpcTransaction, AnyTransactionReceipt, AnyTxEnvelope}; -use alloy_primitives::{Address, Bloom, Bytes, Log, Signature, TxHash, TxKind, B256, U256, U64}; +use alloy_primitives::{Address, Bloom, Bytes, Log, Signature, TxHash, TxKind, B256, U256}; use alloy_rlp::{length_of_length, Decodable, Encodable, Header}; use alloy_rpc_types::{ - request::TransactionRequest, trace::otterscan::OtsReceipt, AccessList, ConversionError, - Transaction as AlloyRpcTransaction, TransactionReceipt, + trace::otterscan::OtsReceipt, AccessList, ConversionError, + TransactionRequest as AlloyTransactionRequest, }; use alloy_serde::{OtherFields, WithOtherFields}; use bytes::BufMut; use foundry_evm::traces::CallTraceNode; use op_alloy_consensus::{TxDeposit, DEPOSIT_TX_TYPE_ID}; -use op_revm::{transaction::deposit::DepositTransactionParts, OpTransaction}; +use op_revm::transaction::deposit::DepositTransactionParts; use revm::{context::TxEnv, interpreter::InstructionResult}; use serde::{Deserialize, Serialize}; use std::{ @@ -28,9 +26,12 @@ use std::{ ops::{Deref, Mul}, }; -use alloy_eips::Encodable2718; - -type SeismicRpcTransaction = AlloyRpcTransaction; +use alloy_eips::{Decodable2718, Encodable2718}; +use seismic_prelude::foundry::{ + AnyReceiptEnvelope, AnyRpcTransaction, AnyTransactionReceipt, AnyTxEnvelope, Decodable712, + Eip712Result, OpTransaction, RpcTransaction, TransactionReceipt, TransactionRequest, + TxEnvelope, TxSeismic, TxSeismicElements, TypedDataRequest, SEISMIC_TX_TYPE_ID, +}; pub trait SeismicCompatible: Encodable @@ -50,31 +51,33 @@ pub trait SeismicCompatible: /// Converts a [TransactionRequest] into a [TypedTransactionRequest]. /// Should be removed once the call builder abstraction for providers is in place. pub fn transaction_request_to_typed( - tx: WithOtherFields, + tx: WithOtherFields, ) -> Option { - let WithOtherFields:: { - inner: seismic_alloy_rpc_types::SeismicTransactionRequest { - inner: TransactionRequest { - chain_id, - from, - to, - gas_price, - max_fee_per_gas, - max_priority_fee_per_gas, - max_fee_per_blob_gas, - blob_versioned_hashes, - gas, - value, - input, - nonce, - access_list, - sidecar, - transaction_type, - authorization_list, - .. + let WithOtherFields:: { + inner: + TransactionRequest { + inner: + AlloyTransactionRequest { + chain_id, + from, + to, + gas_price, + max_fee_per_gas, + max_priority_fee_per_gas, + max_fee_per_blob_gas, + blob_versioned_hashes, + gas, + value, + input, + nonce, + access_list, + sidecar, + transaction_type, + authorization_list, + .. + }, + seismic_elements, }, - seismic_elements, - }, other, } = tx; @@ -94,17 +97,26 @@ pub fn transaction_request_to_typed( })); } - if let Some(seismic_elements) = seismic_elements { - return Some(TypedTransactionRequest::Seismic(seismic_alloy_consensus::TxSeismic { - nonce: nonce.unwrap_or_default(), - gas_price: gas_price.unwrap_or_default(), - gas_limit: gas.unwrap_or_default() as u64, - to: to.unwrap_or_default(), - value: value.unwrap_or_default(), - chain_id: chain_id.unwrap_or_default(), - input: input.input.unwrap_or_default(), - seismic_elements, - })); + if transaction_type == Some(SEISMIC_TX_TYPE_ID) { + match seismic_elements { + Some(seismic_elements) => { + let tx = TxSeismic { + nonce: nonce.unwrap_or_default(), + gas_price: gas_price.unwrap_or_default(), + gas_limit: gas.unwrap_or_default() as u64, + to: to.unwrap_or_default(), + value: value.unwrap_or_default(), + chain_id: chain_id.unwrap_or_default(), + input: input.input.unwrap_or_default(), + seismic_elements, + }; + return Some(TypedTransactionRequest::Seismic(tx)); + } + None => { + // TODO: return none afterwards + panic!("Seismic transaction must have seismic elements"); + } + } } // EIP7702 @@ -225,7 +237,7 @@ pub enum TypedTransactionRequest { EIP7702(TxEip7702), EIP4844(TxEip4844Variant), Deposit(TxDeposit), - Seismic(seismic_alloy_consensus::TxSeismic), + Seismic(TxSeismic), } /// A wrapper for [TypedTransaction] that allows impersonating accounts. @@ -398,7 +410,10 @@ pub fn to_alloy_transaction_with_hash_and_sender( block_number: None, transaction_index: None, effective_gas_price: None, - inner: Recovered::new_unchecked(TxEnvelope::Seismic(Signed::new_unchecked(tx, sig, hash)), from), + inner: Recovered::new_unchecked( + TxEnvelope::Seismic(Signed::new_unchecked(tx, sig, hash)), + from, + ), } } } @@ -607,6 +622,7 @@ impl PendingTransaction { .. } = tx; + #[allow(unused_variables)] let base = TxEnv { caller, kind: transact_to(to), @@ -622,16 +638,18 @@ impl PendingTransaction { ..Default::default() }; + #[allow(unused_variables)] let deposit = DepositTransactionParts { source_hash: *source_hash, mint: *mint, is_system_transaction: *is_system_transaction, }; - OpTransaction { base, deposit, enveloped_tx: None } + // OpTransaction { base, deposit, enveloped_tx: None } + unimplemented!("Unsupported; keep the rest of the code so diff is small") } TypedTransaction::Seismic(tx) => { - let seismic_alloy_consensus::TxSeismic { + let TxSeismic { nonce, gas_price, gas_limit, @@ -642,9 +660,9 @@ impl PendingTransaction { seismic_elements, } = &tx.tx(); - TxEnv { + OpTransaction::new(TxEnv { caller, - transact_to: transact_to(&to), + kind: transact_to(to), // these two have already been validated in TransactionValidator, // so we simply unwrap here data: seismic_elements @@ -653,13 +671,13 @@ impl PendingTransaction { chain_id: Some(*chain_id), nonce: *nonce, value: *value, - gas_price: U256::from(*gas_price), + gas_price: *gas_price, gas_priority_fee: None, gas_limit: *gas_limit, - access_list: vec![], - tx_type: Some(tx.tx().ty() as isize), + access_list: vec![].into(), + tx_type: TxSeismic::TX_TYPE, ..Default::default() - } + }) } } } @@ -681,15 +699,10 @@ pub enum TypedTransaction { /// op-stack deposit transaction Deposit(TxDeposit), /// Seismic transaction - Seismic(Signed), + Seismic(Signed), } -/// This is a function that demotes TypedTransaction to TransactionRequest for greater flexibility -/// over the type. -/// -/// This function is purely for convenience and specific use cases, e.g. RLP encoded transactions -/// decode to TypedTransactions where the API over TypedTransctions is quite strict. -impl TryFrom for seismic_alloy_rpc_types::SeismicTransactionRequest { +impl TryFrom for TransactionRequest { type Error = ConversionError; fn try_from(value: TypedTransaction) -> Result { @@ -699,7 +712,7 @@ impl TryFrom for seismic_alloy_rpc_types::SeismicTransactionRe let tx_type = value.r#type(); Ok(Self { - inner: TransactionRequest { + inner: AlloyTransactionRequest { from: Some(from), to: Some(value.kind()), gas_price: essentials.gas_price, @@ -713,7 +726,7 @@ impl TryFrom for seismic_alloy_rpc_types::SeismicTransactionRe chain_id: essentials.chain_id, transaction_type: tx_type, ..Default::default() - }, + }, seismic_elements: value.seismic_elements(), }) } @@ -724,31 +737,16 @@ impl TryFrom for TypedTransaction { fn try_from(value: AnyRpcTransaction) -> Result { let WithOtherFields { inner, .. } = value.0; - let from = inner.inner.signer(); match inner.inner.into_inner() { - AnyTxEnvelope::Ethereum(tx) => match tx { - TxEnvelope::Legacy(tx) => Ok(Self::Legacy(tx)), - TxEnvelope::Eip2930(tx) => Ok(Self::EIP2930(tx)), - TxEnvelope::Eip1559(tx) => Ok(Self::EIP1559(tx)), - TxEnvelope::Eip4844(tx) => Ok(Self::EIP4844(tx)), - TxEnvelope::Eip7702(tx) => Ok(Self::EIP7702(tx)), + AnyTxEnvelope::Ethereum(eth_tx) => match eth_tx { + EthereumTxEnvelope::Legacy(tx) => Ok(TypedTransaction::Legacy(tx)), + EthereumTxEnvelope::Eip2930(tx) => Ok(TypedTransaction::EIP2930(tx)), + EthereumTxEnvelope::Eip1559(tx) => Ok(TypedTransaction::EIP1559(tx)), + EthereumTxEnvelope::Eip4844(tx) => Ok(TypedTransaction::EIP4844(tx)), + EthereumTxEnvelope::Eip7702(tx) => Ok(TypedTransaction::EIP7702(tx)), }, - AnyTxEnvelope::Unknown(mut tx) => { - // Try to convert to deposit transaction - if tx.ty() == DEPOSIT_TX_TYPE_ID { - tx.inner.fields.insert("from".to_string(), serde_json::to_value(from).unwrap()); - let deposit_tx = - tx.inner.fields.deserialize_into::().map_err(|e| { - ConversionError::Custom(format!( - "Failed to deserialize deposit tx: {e}" - )) - })?; - - return Ok(Self::Deposit(deposit_tx)); - }; - - Err(ConversionError::Custom("UnknownTxType".to_string())) - } + AnyTxEnvelope::Seismic(tx) => Ok(TypedTransaction::Seismic(tx)), + AnyTxEnvelope::Unknown(_) => Err(ConversionError::Custom("UnknownTxType".to_string())), } } } @@ -1083,14 +1081,14 @@ impl TypedTransaction { } /// If this is a seismic transaction, return it - pub fn seismic(self) -> Option> { + pub fn seismic(self) -> Option> { match self { Self::Seismic(tx) => Some(tx), _ => None, } } - pub fn seismic_elements(&self) -> Option { + pub fn seismic_elements(&self) -> Option { match self { Self::Seismic(tx) => Some(tx.tx().seismic_elements), _ => None, @@ -1165,6 +1163,9 @@ impl alloy_eips::eip2718::Encodable2718 for TypedTransaction { impl alloy_eips::eip2718::Decodable2718 for TypedTransaction { fn typed_decode(ty: u8, buf: &mut &[u8]) -> Result { + if ty == SEISMIC_TX_TYPE_ID { + return Ok(Self::Seismic(Signed::::rlp_decode(buf)?)); + } if ty == 0x7E { return Ok(Self::Deposit(TxDeposit::decode(buf)?)) } @@ -1173,7 +1174,6 @@ impl alloy_eips::eip2718::Decodable2718 for TypedTransaction { TxEnvelope::Eip1559(tx) => Ok(Self::EIP1559(tx)), TxEnvelope::Eip4844(tx) => Ok(Self::EIP4844(tx)), TxEnvelope::Eip7702(tx) => Ok(Self::EIP7702(tx)), - TxEnvelope::Seismic(tx) => Ok(Self::Seismic(tx)), _ => unreachable!(), } } @@ -1186,8 +1186,8 @@ impl alloy_eips::eip2718::Decodable2718 for TypedTransaction { } } -impl seismic_alloy_consensus::Decodable712 for TypedTransaction { - fn decode_712(typed_data: &seismic_alloy_consensus::TypedDataRequest) -> seismic_alloy_consensus::Eip712Result { +impl Decodable712 for TypedTransaction { + fn decode_712(typed_data: &TypedDataRequest) -> Eip712Result { TxEnvelope::decode_712(typed_data).map(Self::from) } } @@ -1391,7 +1391,7 @@ impl From>> for OtsReceipt { TypedReceipt::EIP4844(_) => 0x03, TypedReceipt::EIP7702(_) => 0x04, TypedReceipt::Deposit(_) => 0x7E, - TypedReceipt::Seismic(_) => seismic_alloy_consensus::TxSeismic::TX_TYPE, + TypedReceipt::Seismic(_) => TxSeismic::TX_TYPE, } as u8; let receipt = ReceiptWithBloom::>::from(value); let status = receipt.status(); @@ -1439,10 +1439,16 @@ impl Encodable for TypedReceipt { Self::EIP1559(r) => r.length() + 1, Self::EIP4844(r) => r.length() + 1, Self::Deposit(r) => r.length() + 1, + Self::Seismic(r) => r.length() + 1, _ => unreachable!("receipt already matched"), }; match receipt { + Self::Seismic(r) => { + Header { list: true, payload_length: payload_len }.encode(out); + SEISMIC_TX_TYPE_ID.encode(out); + r.encode(out); + } Self::EIP2930(r) => { Header { list: true, payload_length: payload_len }.encode(out); 1u8.encode(out); @@ -1498,6 +1504,9 @@ impl Decodable for TypedReceipt { } else if receipt_type == 0x03 { buf.advance(1); ::decode(buf).map(TypedReceipt::EIP4844) + } else if receipt_type == SEISMIC_TX_TYPE_ID { + buf.advance(1); + ::decode(buf).map(TypedReceipt::Seismic) } else if receipt_type == 0x7E { buf.advance(1); ::decode(buf).map(TypedReceipt::Deposit) @@ -1518,7 +1527,7 @@ impl Decodable for TypedReceipt { impl Typed2718 for TypedReceipt { fn ty(&self) -> u8 { match self { - Self::Seismic(_) => seismic_alloy_consensus::TxSeismic::TX_TYPE, + Self::Seismic(_) => TxSeismic::TX_TYPE, Self::Legacy(_) => alloy_consensus::constants::LEGACY_TX_TYPE_ID, Self::EIP2930(_) => alloy_consensus::constants::EIP2930_TX_TYPE_ID, Self::EIP1559(_) => alloy_consensus::constants::EIP1559_TX_TYPE_ID, @@ -1560,6 +1569,9 @@ impl alloy_eips::Encodable2718 for TypedReceipt { impl alloy_eips::Decodable2718 for TypedReceipt { fn typed_decode(ty: u8, buf: &mut &[u8]) -> Result { + if ty == SEISMIC_TX_TYPE_ID { + return Ok(Self::Seismic(Decodable::decode(buf)?)); + } if ty == 0x7E { return Ok(Self::Deposit(DepositReceipt::decode(buf)?)); } @@ -1596,9 +1608,9 @@ pub fn convert_to_anvil_receipt(receipt: AnyTransactionReceipt) -> Option Option TypedReceipt::Legacy(receipt_with_bloom), - 0x01 => TypedReceipt::EIP2930(receipt_with_bloom), - 0x02 => TypedReceipt::EIP1559(receipt_with_bloom), - 0x03 => TypedReceipt::EIP4844(receipt_with_bloom), - 0x7E => TypedReceipt::Deposit(DepositReceipt { - inner: receipt_with_bloom, - deposit_nonce: other - .get_deserialized::("depositNonce") - .transpose() - .ok()? - .map(|v| v.to()), - deposit_receipt_version: other - .get_deserialized::("depositReceiptVersion") - .transpose() - .ok()? - .map(|v| v.to()), - }), - seismic_alloy_consensus::TxSeismic::TX_TYPE => TypedReceipt::Seismic(receipt_with_bloom), - _ => return None, + inner: match inner { + AnyReceiptEnvelope::Legacy(r) => TypedReceipt::Legacy(r), + AnyReceiptEnvelope::Eip2930(r) => TypedReceipt::EIP2930(r), + AnyReceiptEnvelope::Eip1559(r) => TypedReceipt::EIP1559(r), + AnyReceiptEnvelope::Eip4844(r) => TypedReceipt::EIP4844(r), + AnyReceiptEnvelope::Eip7702(r) => TypedReceipt::EIP7702(r), + AnyReceiptEnvelope::Seismic(r) => TypedReceipt::Seismic(r), }, }) } @@ -1881,16 +1880,16 @@ mod tests { #[test] fn test_seismic_tx_encoding() { let decrypted_input = Bytes::from_str("0xfc3c2cf4943c327f19af0efaf3b07201f608dd5c8e3954399a919b72588d3872b6819ac3d13d3656cbb38833a39ffd1e73963196a1ddfa9e4a5d595fdbebb875").unwrap(); - let orig_decoded_tx = seismic_alloy_consensus::TxSeismic { + let orig_decoded_tx = TxSeismic { chain_id: 31337u64, nonce: 2, gas_price: 1000000000, gas_limit: 100000, to: Address::from_str("d3e8763675e4c425df46cc3b5c0f6cbdac396046").unwrap().into(), value: U256::from(1000000000000000u64), - seismic_elements: seismic_alloy_consensus::TxSeismicElements { - encryption_pubkey: seismic_alloy_consensus::TxSeismicElements::get_rand_encryption_keypair().public_key(), - encryption_nonce: seismic_alloy_consensus::TxSeismicElements::get_rand_encryption_nonce(), + seismic_elements: TxSeismicElements { + encryption_pubkey: TxSeismicElements::get_rand_encryption_keypair().public_key(), + encryption_nonce: TxSeismicElements::get_rand_encryption_nonce(), message_version: 0, }, input: decrypted_input.clone(), @@ -1903,7 +1902,7 @@ mod tests { U256::from_str("0x779d1157c4734323923df2f41073ecb016719a577ce774ef4478c9b443caacb3") .unwrap(); - let signature = PrimitiveSignature::new(r, s, true); + let signature = Signature::new(r, s, true); let signed_tx: Signed = orig_decoded_tx.into_signed(signature); let signed_tt = TypedTransaction::Seismic(signed_tx); @@ -1912,7 +1911,7 @@ mod tests { signed_tt.encode(&mut encoded_tx); let mut buf = encoded_tx.as_ref(); - let decoded_tx = TypedTransaction::decode_2718(&mut buf).unwrap(); + let decoded_tx = TypedTransaction::decode(&mut buf).unwrap(); assert_eq!(decoded_tx, signed_tt); } diff --git a/crates/anvil/core/src/types.rs b/crates/anvil/core/src/types.rs index e0cf8762a..254427f8f 100644 --- a/crates/anvil/core/src/types.rs +++ b/crates/anvil/core/src/types.rs @@ -1,7 +1,8 @@ use alloy_primitives::Bytes; -use alloy_rpc_types::TransactionRequest; use serde::Deserialize; +use seismic_prelude::foundry::TransactionRequest; + /// Represents the options used in `anvil_reorg` #[derive(Debug, Clone, Deserialize)] pub struct ReorgOptions { diff --git a/crates/anvil/src/cmd.rs b/crates/anvil/src/cmd.rs index 644977ce5..5a3e8e00c 100644 --- a/crates/anvil/src/cmd.rs +++ b/crates/anvil/src/cmd.rs @@ -1,12 +1,7 @@ use crate::{ config::{ForkChoice, DEFAULT_MNEMONIC}, eth::{backend::db::SerializableState, pool::transactions::TransactionOrder, EthApi}, -<<<<<<< HEAD - hardfork::{OptimismHardfork, SeismicHardfork}, - AccountGenerator, EthereumHardfork, NodeConfig, CHAIN_ID, -======= AccountGenerator, EthereumHardfork, NodeConfig, OptimismHardfork, CHAIN_ID, ->>>>>>> 3c0b3df8f8ef8800a10912ce5a9dcd9eb7e971ff }; use alloy_genesis::Genesis; use alloy_primitives::{utils::Unit, B256, U256}; @@ -224,8 +219,8 @@ impl NodeArgs { Some(hf) => { if self.evm.optimism { Some(OptimismHardfork::from_str(hf)?.into()) - } else if self.evm_opts.seismic { - Some(SeismicHardfork::from_str(hf)?.into()) + } else if self.evm.seismic { + Some(crate::hardfork::SeismicHardfork::from_str(hf)?.into()) } else { Some(EthereumHardfork::from_str(hf)?.into()) } @@ -234,7 +229,7 @@ impl NodeArgs { }; Ok(NodeConfig::default() - .with_seismic(self.evm_opts.seismic) + .with_seismic(self.evm.seismic) .with_gas_limit(self.evm.gas_limit) .disable_block_gas_limit(self.evm.disable_block_gas_limit) .with_gas_price(self.evm.gas_price) diff --git a/crates/anvil/src/config.rs b/crates/anvil/src/config.rs index 2f49d562e..8e2345aa4 100644 --- a/crates/anvil/src/config.rs +++ b/crates/anvil/src/config.rs @@ -17,7 +17,7 @@ use crate::{ }; use alloy_consensus::BlockHeader; use alloy_genesis::Genesis; -use alloy_network::{AnyNetwork, TransactionResponse}; +use alloy_network::TransactionResponse; use alloy_primitives::{hex, map::HashMap, utils::Unit, BlockNumber, TxHash, U256}; use alloy_provider::Provider; use alloy_rpc_types::{Block, BlockNumberOrTag}; @@ -41,13 +41,13 @@ use foundry_evm::{ }; use foundry_evm_core::AsEnvMut; use itertools::Itertools; -use op_revm::OpTransaction; +// use op_revm::OpTransaction; use parking_lot::RwLock; use rand_08::thread_rng; use revm::{ - context::{BlockEnv, CfgEnv, TxEnv}, + context::{BlockEnv, TxEnv}, context_interface::block::BlobExcessGasAndPrice, - primitives::hardfork::SpecId, + primitives::hardfork::SpecId as RevmSpecId, }; use serde_json::{json, Value}; use std::{ @@ -64,6 +64,8 @@ use yansi::Paint; pub use foundry_common::version::SHORT_VERSION as VERSION_MESSAGE; +use seismic_prelude::foundry::{AnyNetwork, CfgEnv, OpTransaction, SpecId}; + /// Default port the rpc will open pub const NODE_PORT: u16 = 8545; /// Default chain id of the node @@ -289,7 +291,7 @@ Chain ID ); } - if (SpecId::from(self.get_hardfork()) as u8) < (SpecId::LONDON as u8) { + if (RevmSpecId::from(self.get_hardfork()) as u8) < (RevmSpecId::LONDON as u8) { let _ = write!( s, r#" @@ -541,8 +543,8 @@ impl NodeConfig { if self.enable_optimism { return OptimismHardfork::default().into(); } - if self.enable_seismic || cfg!(feature = "seismic") { - return SeismicHardfork::default().into(); + if self.enable_seismic { + return crate::hardfork::SeismicHardfork::default().into(); } EthereumHardfork::default().into() } @@ -1044,7 +1046,8 @@ impl NodeConfig { // configure the revm environment let mut cfg = CfgEnv::default(); - cfg.spec = self.get_hardfork().into(); + // cfg.spec = self.get_hardfork().into(); + cfg.spec = SpecId::MERCURY; cfg.chain_id = self.get_chain_id(); cfg.limit_contract_code_size = self.code_size_limit; @@ -1206,7 +1209,10 @@ impl NodeConfig { provider.get_chain_id().await.wrap_err("failed to fetch network chain ID")?; if alloy_chains::NamedChain::Mainnet == chain_id { let hardfork: EthereumHardfork = fork_block_number.into(); + /* env.evm_env.cfg_env.spec = hardfork.into(); + */ + env.evm_env.cfg_env.spec = SpecId::MERCURY; self.hardfork = Some(ChainHardfork::Ethereum(hardfork)); } Some(U256::from(chain_id)) @@ -1422,8 +1428,9 @@ async fn derive_block_and_transactions( .get_transaction_by_hash(transaction_hash.0.into()) .await? .ok_or_else(|| eyre::eyre!("failed to get fork transaction by hash"))?; - let transaction_block_number = transaction.block_number.unwrap(); + let transaction_block_number = transaction.0.block_number.unwrap(); + // TODO: seismic provider // Get the block pertaining to the fork transaction let transaction_block = provider .get_block_by_number(transaction_block_number.into()) diff --git a/crates/anvil/src/eth/api.rs b/crates/anvil/src/eth/api.rs index 03366104d..777ad9773 100644 --- a/crates/anvil/src/eth/api.rs +++ b/crates/anvil/src/eth/api.rs @@ -37,10 +37,9 @@ use alloy_consensus::{ Account, }; use alloy_dyn_abi::TypedData; -use alloy_eips::{eip2718::Encodable2718, eip712::Decodable712}; +use alloy_eips::eip2718::Encodable2718; use alloy_network::{ - eip2718::Decodable2718, AnyRpcBlock, AnyRpcTransaction, BlockResponse, Ethereum, NetworkWallet, - TransactionBuilder, TransactionResponse, + eip2718::Decodable2718, BlockResponse, NetworkWallet, TransactionBuilder, TransactionResponse, }; use alloy_primitives::{ map::{HashMap, HashSet}, @@ -54,8 +53,7 @@ use alloy_rpc_types::{ anvil::{ ForkedNetwork, Forking, Metadata, MineOptions, NodeEnvironment, NodeForkConfig, NodeInfo, }, - request::TransactionRequest, - simulate::{SimulatePayload, SimulatedBlock}, + simulate::SimulatedBlock, state::{AccountOverride, EvmOverrides, StateOverridesBuilder}, trace::{ filter::TraceFilter, @@ -64,7 +62,8 @@ use alloy_rpc_types::{ }, txpool::{TxpoolContent, TxpoolInspect, TxpoolInspectSummary, TxpoolStatus}, AccessList, AccessListResult, BlockId, BlockNumberOrTag as BlockNumber, BlockTransactions, - EIP1186AccountProofResponse, FeeHistory, Filter, FilteredParams, Index, Log, Work, + EIP1186AccountProofResponse, FeeHistory, Filter, FilteredParams, Index, Log, + TransactionRequest as AlloyTransactionRequest, Work, }; use alloy_serde::WithOtherFields; use alloy_sol_types::{sol, SolCall, SolValue}; @@ -97,8 +96,15 @@ use revm::{ interpreter::{return_ok, return_revert, InstructionResult}, primitives::eip7702::PER_EMPTY_ACCOUNT_COST, }; +use seismic_enclave::rpc::SyncEnclaveApiClient; use std::{future::Future, sync::Arc, time::Duration}; use tokio::sync::mpsc::{unbounded_channel, UnboundedReceiver}; +use yansi::Paint; + +use seismic_prelude::foundry::{ + AnyNetwork, AnyRpcBlock, AnyRpcTransaction, Decodable712, SeismicCallRequest, + SeismicRawTxRequest, SimulatePayload, TransactionRequest, TypedDataRequest, +}; /// The client version: `anvil/v{major}.{minor}.{patch}` pub const CLIENT_VERSION: &str = concat!("anvil/v", env!("CARGO_PKG_VERSION")); @@ -173,7 +179,7 @@ impl EthApi { trace!(target: "rpc::api", "executing eth request"); let response = match request.clone() { EthRequest::SeismicGetTeePublicKey(()) => { - let result = MockEnclaveClient::new() + let result = seismic_enclave::MockEnclaveClient::new() .get_public_key() .map_err(|e| BlockchainError::Internal(e.to_string())); result.to_rpc_result() @@ -260,17 +266,17 @@ impl EthApi { self.sign_typed_data_v4(addr, &data).await.to_rpc_result() } EthRequest::EthSendRawTransaction(req) => match req { - seismic_alloy_rpc_types::SeismicRawTxRequest::Bytes(tx) => { + SeismicRawTxRequest::Bytes(tx) => { self.send_raw_transaction(tx).await.to_rpc_result() } - seismic_alloy_rpc_types::SeismicRawTxRequest::TypedData(td) => { + SeismicRawTxRequest::TypedData(td) => { self.send_signed_typed_data_tx(td).await.to_rpc_result() } }, EthRequest::EthCall(call, block, state_override, block_overrides) => self - .call(call, block, EvmOverrides::new(state_override, block_overrides)) - .await - .to_rpc_result(), + .call(call, block, EvmOverrides::new(state_override, block_overrides)) + .await + .to_rpc_result(), EthRequest::EthSimulateV1(simulation, block) => { self.simulate_v1(simulation, block).await.to_rpc_result() @@ -553,7 +559,7 @@ impl EthApi { match self.pool.get_transaction(hash) { Some(tx) => Ok(Some(tx.transaction.encoded_2718().into())), None => match self.backend.transaction_by_hash(hash).await? { - Some(tx) => Ok(Some(tx.inner.inner.encoded_2718().into())), + Some(tx) => Ok(Some(tx.inner().inner.encoded_2718().into())), None => Ok(None), }, } @@ -1006,17 +1012,17 @@ impl EthApi { ) -> Result { node_info!("eth_signTransaction"); - let from = request.from.map(Ok).unwrap_or_else(|| { + let from = request.inner.inner.from.map(Ok).unwrap_or_else(|| { self.accounts()?.first().cloned().ok_or(BlockchainError::NoSignerAvailable) })?; let (nonce, _) = self.request_nonce(&request, from).await?; - if request.gas.is_none() { + if request.inner.inner.gas.is_none() { // estimate if not provided if let Ok(gas) = self.estimate_gas(request.clone(), None, EvmOverrides::default()).await { - request.gas = Some(gas.to()); + request.inner.inner.gas = Some(gas.to()); } } @@ -1113,12 +1119,10 @@ impl EthApi { /// Sends signed typed data transaction, returning its hash. /// /// Handler for ETH RPC call: `eth_sendRawTransaction` - pub async fn send_signed_typed_data_tx( - &self, - td: alloy_eips::eip712::TypedDataRequest, - ) -> Result { + pub async fn send_signed_typed_data_tx(&self, td: TypedDataRequest) -> Result { node_info!("eth_sendRawTransaction via eth_signTypedData"); + // TODO: make this work let transaction = TypedTransaction::decode_712(&td).map_err(|e| { BlockchainError::Message(format!( "Failed to decode typed data into seismic tx: {:?}", @@ -1154,7 +1158,7 @@ impl EthApi { async fn seismic_call( &self, - request: WithOtherFields, + seismic_request: WithOtherFields, block_number: Option, overrides: EvmOverrides, ) -> Result { @@ -1169,11 +1173,12 @@ impl EthApi { "not available on past forked blocks".to_string(), )); } - return Ok(fork.call(&request, Some(number.into())).await?) + return Ok(fork.call(&seismic_request, Some(number.into())).await?) } } } + let request = seismic_request.clone().inner.inner; let fees = FeeDetails::new( request.gas_price, request.max_fee_per_gas, @@ -1184,8 +1189,10 @@ impl EthApi { let block_request = self.block_request(block_number).await?; self.on_blocking_task(|this| async move { - let (exit, out, gas, _) = - this.backend.seismic_call(request, fees, Some(block_request), overrides).await?; + let (exit, out, gas, _) = this + .backend + .seismic_call(seismic_request, fees, Some(block_request), overrides) + .await?; trace!(target : "node", "Call status {:?}, gas {}", exit, gas); ensure_return_ok(exit, &out) }) @@ -1197,22 +1204,22 @@ impl EthApi { /// Handler for ETH RPC call: `eth_call` pub async fn call( &self, - request: impl Into, + request: impl Into, block_number: Option, - overrides: Option, + overrides: EvmOverrides, ) -> Result { match request.into() { - seismic_alloy_rpc_types::SeismicCallRequest::TransactionRequest(mut tx) => { - let user_provided_from = tx.from; + SeismicCallRequest::TransactionRequest(mut tx) => { + let user_provided_from = tx.inner.from; - tx.from = None; - tx.gas_price = None; // preventing InsufficientFunds error - tx.max_fee_per_gas = None; // preventing InsufficientFunds error - tx.max_priority_fee_per_gas = None; // preventing InsufficientFunds error - tx.max_fee_per_blob_gas = None; // preventing InsufficientFunds error - tx.value = None; // preventing InsufficientFunds error + tx.inner.from = None; + tx.inner.gas_price = None; // preventing InsufficientFunds error + tx.inner.max_fee_per_gas = None; // preventing InsufficientFunds error + tx.inner.max_priority_fee_per_gas = None; // preventing InsufficientFunds error + tx.inner.max_fee_per_blob_gas = None; // preventing InsufficientFunds error + tx.inner.value = None; // preventing InsufficientFunds error - match self.seismic_call(tx, block_number, overrides).await { + match self.seismic_call(WithOtherFields::new(tx), block_number, overrides).await { Ok(bytes) => Ok(bytes), Err(original_err) => { // Only attach a custom message if user tried to set `from` != zero @@ -1232,14 +1239,14 @@ impl EthApi { } } } - seismic_alloy_rpc_types::SeismicCallRequest::TypedData(td) => { + SeismicCallRequest::TypedData(td) => { let typed_tx = TypedTransaction::decode_712(&td).map_err(|e| { BlockchainError::Message(format!( "Failed to decode typed data into seismic tx: {:?}", e )) })?; - let tx = seismic_alloy_rpc_types::TransactionRequest::try_from(typed_tx.clone()).map_err(|_| { + let tx = TransactionRequest::try_from(typed_tx.clone()).map_err(|_| { BlockchainError::Message( "Failed to decode bytes to transaction request".to_string(), ) @@ -1254,14 +1261,14 @@ impl EthApi { BlockchainError::Message(format!("Failed to recover signer: {e:?}")) })?; let mut request = WithOtherFields::new(tx); - request.inner.from = Some(sender); + request.inner.inner.from = Some(sender); self.seismic_call(request, block_number, overrides).await } - seismic_alloy_rpc_types::SeismicCallRequest::Bytes(bytes) => { + SeismicCallRequest::Bytes(bytes) => { let typed_tx = TypedTransaction::decode_2718(&mut bytes.as_ref()) .map_err(|_| BlockchainError::FailedToDecodeSignedTransaction)?; - let tx = seismic_alloy_rpc_types::TransactionRequest::try_from(typed_tx.clone()).map_err(|_| { + let tx = TransactionRequest::try_from(typed_tx.clone()).map_err(|_| { BlockchainError::Message( "Failed to decode bytes to transaction request".to_string(), ) @@ -1276,7 +1283,7 @@ impl EthApi { BlockchainError::Message(format!("Failed to recover signer: {e:?}")) })?; let mut request = WithOtherFields::new(tx); - request.inner.from = Some(sender); + request.inner.inner.from = Some(sender); self.seismic_call(request, block_number, overrides).await } } @@ -1349,7 +1356,7 @@ impl EthApi { ensure_return_ok(exit, &out)?; // execute again but with access list set - request.access_list = Some(access_list.clone()); + request.inner.inner.access_list = Some(access_list.clone()); let (exit, out, gas_used, _) = self.backend.call_with_state( &state, @@ -1451,8 +1458,10 @@ impl EthApi { node_info!("eth_getTransactionReceipt"); let tx = self.pool.get_transaction(hash); if tx.is_some() { + // panic!("some eth_get_transaction_receipt: {:?}", tx); return Ok(None); } + // panic!("backend eth_get_transaction_receipt: {:?}", hash); self.backend.transaction_receipt(hash).await } @@ -1790,12 +1799,13 @@ impl EthApi { /// Handler for RPC call: `debug_traceCall` pub async fn debug_trace_call( &self, - request: WithOtherFields, + seismic_request: WithOtherFields, block_number: Option, opts: GethDebugTracingCallOptions, ) -> Result { node_info!("debug_traceCall"); let block_request = self.block_request(block_number).await?; + let request = seismic_request.clone().inner.inner; let fees = FeeDetails::new( request.gas_price, request.max_fee_per_gas, @@ -1805,7 +1815,7 @@ impl EthApi { .or_zero_fees(); let result: std::result::Result = - self.backend.call_with_tracing(request, fees, Some(block_request), opts).await; + self.backend.call_with_tracing(seismic_request, fees, Some(block_request), opts).await; result } @@ -2015,11 +2025,12 @@ impl EthApi { } let calldata = IERC20::balanceOfCall { target: address }.abi_encode(); - let tx = TransactionRequest::default().with_to(token_address).with_input(calldata.clone()); + let tx = + AlloyTransactionRequest::default().with_to(token_address).with_input(calldata.clone()); // first collect all the slots that are used by the balanceOf call let access_list_result = - self.create_access_list(WithOtherFields::new(tx.clone()), None).await?; + self.create_access_list(WithOtherFields::new(tx.clone().into()), None).await?; let access_list = access_list_result.access_list; // now we can iterate over all the accessed slots and try to find the one that contains the @@ -2039,7 +2050,7 @@ impl EthApi { let evm_override = EvmOverrides::state(Some(state_override)); let Ok(result) = - self.call(WithOtherFields::new(tx.clone()), None, evm_override).await + self.call(WithOtherFields::new(tx.clone().into()), None, evm_override).await else { // overriding this slot failed continue; @@ -2309,7 +2320,7 @@ impl EthApi { TransactionData::JSON(req) => { let mut tx_req = WithOtherFields::new(req); - let from = tx_req.from.map(Ok).unwrap_or_else(|| { + let from = tx_req.inner.inner.from.map(Ok).unwrap_or_else(|| { self.accounts()? .first() .cloned() @@ -2326,17 +2337,24 @@ impl EthApi { ); // Estimate gas - if tx_req.gas.is_none() { + if tx_req.inner.inner.gas.is_none() { if let Ok(gas) = self - .estimate_gas(tx_req.clone(), None, EvmOverrides::default()) + .estimate_gas( + WithOtherFields::new(tx_req.inner.clone().into()), + None, + EvmOverrides::default(), + ) .await { - tx_req.gas = Some(gas.to()); + tx_req.inner.inner.gas = Some(gas.to()); } } // Build typed transaction request - let typed = self.build_typed_tx_request(tx_req, *curr_nonce)?; + let typed = self.build_typed_tx_request( + WithOtherFields::new(tx_req.inner.into()), + *curr_nonce, + )?; // Increment nonce *curr_nonce += 1; @@ -2525,13 +2543,13 @@ impl EthApi { if let Some(reason) = RevertDecoder::new().maybe_decode(&output, None) { - tx.other.insert( + tx.0.other.insert( "revertReason".to_string(), serde_json::to_value(reason).expect("Infallible"), ); } } - tx.other.insert( + tx.0.other.insert( "output".to_string(), serde_json::to_value(output).expect("Infallible"), ); @@ -2598,7 +2616,7 @@ impl EthApi { ) -> Result { node_info!("eth_sendUnsignedTransaction"); // either use the impersonated account of the request's `from` field - let from = request.from.ok_or(BlockchainError::NoSignerAvailable)?; + let from = request.inner.inner.from.ok_or(BlockchainError::NoSignerAvailable)?; let (nonce, on_chain_nonce) = self.request_nonce(&request, from).await?; @@ -2727,10 +2745,11 @@ impl EthApi { pub async fn wallet_send_transaction( &self, - mut request: WithOtherFields, + mut seismic_request: WithOtherFields, ) -> Result { node_info!("wallet_sendTransaction"); + let request = seismic_request.clone().inner.inner; // Validate the request // reject transactions that have a non-zero value to prevent draining the executor. if request.value.is_some_and(|val| val > U256::ZERO) { @@ -2789,20 +2808,23 @@ impl EthApi { let wallet = self.backend.executor_wallet().ok_or(WalletError::InternalError)?; - let from = NetworkWallet::::default_signer_address(&wallet); + let from = NetworkWallet::::default_signer_address(&wallet); let nonce = self.get_transaction_count(from, Some(BlockId::latest())).await?; - request.nonce = Some(nonce); + seismic_request.set_nonce(nonce); let chain_id = self.chain_id(); - request.chain_id = Some(chain_id); + seismic_request.set_chain_id(chain_id); - request.from = Some(from); + seismic_request.set_from(from); - let gas_limit_fut = - self.estimate_gas(request.clone(), Some(BlockId::latest()), EvmOverrides::default()); + let gas_limit_fut = self.estimate_gas( + seismic_request.clone(), + Some(BlockId::latest()), + EvmOverrides::default(), + ); let fees_fut = self.fee_history( U256::from(EIP1559_FEE_ESTIMATION_PAST_BLOCKS), @@ -2815,17 +2837,19 @@ impl EthApi { let gas_limit = gas_limit?; let fees = fees?; - request.gas = Some(gas_limit.to()); + seismic_request.inner.inner.gas = Some(gas_limit.to()); let base_fee = fees.latest_block_base_fee().unwrap_or_default(); let estimation = eip1559_default_estimator(base_fee, &fees.reward.unwrap_or_default()); - request.max_fee_per_gas = Some(estimation.max_fee_per_gas); - request.max_priority_fee_per_gas = Some(estimation.max_priority_fee_per_gas); - request.gas_price = None; + seismic_request.inner.inner.max_fee_per_gas = Some(estimation.max_fee_per_gas); + seismic_request.inner.inner.max_priority_fee_per_gas = + Some(estimation.max_priority_fee_per_gas); + seismic_request.inner.inner.gas_price = None; - let envelope = request.build(&wallet).await.map_err(|_| WalletError::InternalError)?; + let envelope = + seismic_request.build(&wallet).await.map_err(|_| WalletError::InternalError)?; self.send_raw_transaction(envelope.encoded_2718().into()).await } @@ -2947,12 +2971,13 @@ impl EthApi { /// This will execute the transaction request and find the best gas limit via binary search. fn do_estimate_gas_with_state( &self, - mut request: WithOtherFields, + mut seismic_request: WithOtherFields, state: &dyn DatabaseRef, block_env: BlockEnv, ) -> Result { // If the request is a simple native token transfer we can optimize // We assume it's a transfer if we have no input data. + let request = seismic_request.clone().inner.inner; let to = request.to.as_ref().and_then(TxKind::to); // check certain fields to see if the request could be a simple transfer @@ -3001,7 +3026,7 @@ impl EthApi { } } - let mut call_to_estimate = request.clone(); + let mut call_to_estimate = seismic_request.clone(); call_to_estimate.gas = Some(highest_gas_limit as u64); // execute the call without writing to db @@ -3028,7 +3053,7 @@ impl EthApi { // transaction requires to succeed // Get the starting lowest gas needed depending on the transaction kind. - let mut lowest_gas_limit = determine_base_gas_by_kind(&request); + let mut lowest_gas_limit = determine_base_gas_by_kind(&seismic_request); // pick a point that's close to the estimated gas let mut mid_gas_limit = @@ -3036,10 +3061,11 @@ impl EthApi { // Binary search for the ideal gas limit while (highest_gas_limit - lowest_gas_limit) > 1 { - request.gas = Some(mid_gas_limit as u64); + seismic_request.set_gas_limit(mid_gas_limit as u64); + let request = seismic_request.clone().inner.inner; let ethres = self.backend.call_with_state( &state, - request.clone(), + WithOtherFields::new(request.clone().into()), fees.clone(), block_env.clone(), ); @@ -3195,9 +3221,10 @@ impl EthApi { fn build_typed_tx_request( &self, - request: WithOtherFields, + seismic_request: WithOtherFields, nonce: u64, ) -> Result { + let request = seismic_request.clone().inner.inner; let chain_id = request.chain_id.unwrap_or_else(|| self.chain_id()); let max_fee_per_gas = request.max_fee_per_gas; let max_fee_per_blob_gas = request.max_fee_per_blob_gas; @@ -3206,7 +3233,7 @@ impl EthApi { let gas_limit = request.gas.unwrap_or_else(|| self.backend.gas_limit()); let from = request.from; - let request = match transaction_request_to_typed(request) { + let request = match transaction_request_to_typed(seismic_request) { Some(TypedTransactionRequest::Legacy(mut m)) => { m.nonce = nonce; m.chain_id = Some(chain_id); @@ -3362,7 +3389,7 @@ impl EthApi { ) -> Result<(u64, u64)> { let highest_nonce = self.get_transaction_count(from, Some(BlockId::Number(BlockNumber::Pending))).await?; - let nonce = request.nonce.unwrap_or(highest_nonce); + let nonce = request.inner.nonce.unwrap_or(highest_nonce); Ok((nonce, highest_nonce)) } @@ -3492,8 +3519,6 @@ impl TryFrom, u128, State)>> for GasEs InstructionResult::Revert => Ok(Self::Revert(output.map(|o| o.into_data()))), - InstructionResult::InvalidPublicStorageAccess | - InstructionResult::InvalidPrivateStorageAccess | InstructionResult::OutOfGas | InstructionResult::MemoryOOG | InstructionResult::MemoryLimitOOG | diff --git a/crates/anvil/src/eth/backend/db.rs b/crates/anvil/src/eth/backend/db.rs index 18c77f8ce..ad7f125d7 100644 --- a/crates/anvil/src/eth/backend/db.rs +++ b/crates/anvil/src/eth/backend/db.rs @@ -16,11 +16,10 @@ use revm::{ bytecode::Bytecode, context::BlockEnv, database::{CacheDB, DatabaseRef, DbAccount}, - primitives::KECCAK_EMPTY, + primitives::{FlaggedStorage, KECCAK_EMPTY}, state::AccountInfo, Database, DatabaseCommit, }; -use revm::primitives::FlaggedStorage; use serde::{Deserialize, Serialize}; use std::{collections::BTreeMap, fmt, path::Path}; diff --git a/crates/anvil/src/eth/backend/env.rs b/crates/anvil/src/eth/backend/env.rs index d4b8de797..48349cc1d 100644 --- a/crates/anvil/src/eth/backend/env.rs +++ b/crates/anvil/src/eth/backend/env.rs @@ -1,8 +1,10 @@ -use alloy_evm::EvmEnv; +use alloy_evm::EvmEnv as AlloyEvmEnv; use foundry_evm::EnvMut; use foundry_evm_core::AsEnvMut; -use op_revm::OpTransaction; -use revm::context::{BlockEnv, CfgEnv, TxEnv}; +use revm::context::{BlockEnv, TxEnv}; + +use seismic_prelude::foundry::{CfgEnv, OpTransaction, SpecId}; +type EvmEnv = AlloyEvmEnv; /// Helper container type for [`EvmEnv`] and [`OpTransaction`]. #[derive(Clone, Debug, Default)] @@ -10,12 +12,18 @@ pub struct Env { pub evm_env: EvmEnv, pub tx: OpTransaction, pub is_optimism: bool, + pub is_seismic: bool, } /// Helper container type for [`EvmEnv`] and [`OpTransaction`]. impl Env { pub fn new(cfg: CfgEnv, block: BlockEnv, tx: OpTransaction, is_optimism: bool) -> Self { - Self { evm_env: EvmEnv { cfg_env: cfg, block_env: block }, tx, is_optimism } + Self { + evm_env: EvmEnv { cfg_env: cfg, block_env: block }, + tx, + is_optimism, + is_seismic: true, + } } } @@ -24,7 +32,7 @@ impl AsEnvMut for Env { EnvMut { block: &mut self.evm_env.block_env, cfg: &mut self.evm_env.cfg_env, - tx: &mut self.tx.base, + tx: &mut self.tx, } } } diff --git a/crates/anvil/src/eth/backend/executor.rs b/crates/anvil/src/eth/backend/executor.rs index bb57e434a..9c7371dff 100644 --- a/crates/anvil/src/eth/backend/executor.rs +++ b/crates/anvil/src/eth/backend/executor.rs @@ -15,8 +15,7 @@ use alloy_consensus::{ constants::EMPTY_WITHDRAWALS, proofs::calculate_receipt_root, Receipt, ReceiptWithBloom, }; use alloy_eips::{eip7685::EMPTY_REQUESTS_HASH, eip7840::BlobParams}; -use alloy_evm::{eth::EthEvmContext, precompiles::PrecompilesMap, EthEvm, Evm}; -use alloy_op_evm::OpEvm; +use alloy_evm::{eth::EthEvmContext, Evm}; use alloy_primitives::{Bloom, BloomInput, Log, B256}; use anvil_core::eth::{ block::{Block, BlockInfo, PartialHeader}, @@ -26,12 +25,11 @@ use anvil_core::eth::{ }; use foundry_evm::{backend::DatabaseError, traces::CallTraceNode}; use foundry_evm_core::either_evm::EitherEvm; -use op_revm::{precompiles::OpPrecompiles, L1BlockInfo, OpContext}; +use op_revm::OpContext; use revm::{ - context::{Block as RevmBlock, BlockEnv, CfgEnv, Evm as RevmEvm, JournalTr, LocalContext}, + context::{Block as RevmBlock, BlockEnv, JournalTr, LocalContext}, context_interface::result::{EVMError, ExecutionResult, Output}, database::WrapDatabaseRef, - handler::{instructions::EthInstructions, EthPrecompiles}, interpreter::InstructionResult, precompile::{secp256r1::P256VERIFY, PrecompileSpecId, Precompiles}, primitives::hardfork::SpecId, @@ -39,6 +37,11 @@ use revm::{ }; use std::sync::Arc; +use seismic_prelude::foundry::{ + CfgEnv, RevmEvm, SeismicChain, SeismicContext, SeismicEvm, SeismicInstructions, + SeismicPrecompiles, SeismicTransaction, +}; + /// Represents an executed transaction (transacted on the DB) #[derive(Debug)] pub struct ExecutedTransaction { @@ -138,15 +141,15 @@ impl TransactionExecutor<'_, DB, V> { let difficulty = self.block_env.difficulty; let beneficiary = self.block_env.beneficiary; let timestamp = self.block_env.timestamp; - let base_fee = if self.cfg_env.spec.is_enabled_in(SpecId::LONDON) { + let base_fee = if self.cfg_env.spec.into_eth_spec().is_enabled_in(SpecId::LONDON) { Some(self.block_env.basefee) } else { None }; - let is_shanghai = self.cfg_env.spec >= SpecId::SHANGHAI; - let is_cancun = self.cfg_env.spec >= SpecId::CANCUN; - let is_prague = self.cfg_env.spec >= SpecId::PRAGUE; + let is_shanghai = self.cfg_env.spec.into_eth_spec() >= SpecId::SHANGHAI; + let is_cancun = self.cfg_env.spec.into_eth_spec() >= SpecId::CANCUN; + let is_prague = self.cfg_env.spec.into_eth_spec() >= SpecId::PRAGUE; let excess_blob_gas = if is_cancun { self.block_env.blob_excess_gas() } else { None }; let mut cumulative_blob_gas_used = if is_cancun { Some(0u64) } else { None }; @@ -158,22 +161,22 @@ impl TransactionExecutor<'_, DB, V> { } TransactionExecutionOutcome::Exhausted(tx) => { trace!(target: "backend", tx_gas_limit = %tx.pending_transaction.transaction.gas_limit(), ?tx, "block gas limit exhausting, skipping transaction"); - continue; + continue } TransactionExecutionOutcome::BlobGasExhausted(tx) => { trace!(target: "backend", blob_gas = %tx.pending_transaction.transaction.blob_gas().unwrap_or_default(), ?tx, "block blob gas limit exhausting, skipping transaction"); - continue; + continue } TransactionExecutionOutcome::Invalid(tx, _) => { trace!(target: "backend", ?tx, "skipping invalid transaction"); invalid.push(tx); - continue; + continue } TransactionExecutionOutcome::DatabaseError(_, err) => { // Note: this is only possible in forking mode, if for example a rpc request // failed trace!(target: "backend", ?err, "Failed to execute transaction due to database error"); - continue; + continue } }; if is_cancun { @@ -213,7 +216,7 @@ impl TransactionExecutor<'_, DB, V> { out: out.map(Output::into_data), nonce: tx.nonce, gas_used: tx.gas_used, - tx_type: transaction.pending_transaction.transaction.r#type().map(|t| t as isize), + tx_type: Some(transaction.tx_type() as isize), }; transaction_infos.push(info); @@ -251,11 +254,14 @@ impl TransactionExecutor<'_, DB, V> { } fn env_for(&self, tx: &PendingTransaction) -> Env { + #[allow(unused_mut)] let mut tx_env = tx.to_revm_tx_env(); + /* if self.optimism { tx_env.enveloped_tx = Some(alloy_rlp::encode(&tx.transaction.transaction).into()); } + */ Env::new(self.cfg_env.clone(), self.block_env.clone(), tx_env, self.optimism) } @@ -286,8 +292,8 @@ impl Iterator for &mut TransactionExec Ok(account) => account, Err(err) => return Some(TransactionExecutionOutcome::DatabaseError(transaction, err)), }; - let env = self.env_for(&transaction.pending_transaction); + // check that we comply with the block's gas limit, if not disabled let max_gas = self.gas_used.saturating_add(env.tx.base.gas_limit); if !env.evm_env.cfg_env.disable_block_gas_limit && max_gas > env.evm_env.block_env.gas_limit @@ -427,11 +433,35 @@ pub fn new_evm_with_inspector( db: DB, env: &Env, inspector: I, -) -> EitherEvm +) -> EitherEvm>> where DB: Database, I: Inspector> + Inspector>, { + let spec = env.evm_env.cfg_env.spec; + let eth_context = SeismicContext { + journaled_state: { + let mut journal = Journal::new(db); + journal.set_spec_id(spec.into_eth_spec()); + journal + }, + block: env.evm_env.block_env.clone(), + cfg: env.evm_env.cfg_env.clone(), + tx: SeismicTransaction::new(env.tx.base.clone()), + chain: SeismicChain::default(), + local: LocalContext::default(), + error: Ok(()), + }; + + let eth_precompiles = Precompiles::new(PrecompileSpecId::from_spec_id(spec.into_eth_spec())); + let eth_evm = RevmEvm::new_with_inspector( + eth_context, + inspector, + SeismicInstructions::default(), + eth_precompiles, + ); + EitherEvm::Seismic(SeismicEvm::new(eth_evm, true)) + /* if env.is_optimism { let op_cfg = env.evm_env.cfg_env.clone().with_spec(op_revm::OpSpecId::ISTHMUS); let op_context = OpContext { @@ -489,10 +519,10 @@ where ); let eth = EthEvm::new(eth_evm, true); - // TODO(christian): use seismic EVM EitherEvm::Eth(eth) } + */ } /// Creates a new EVM with the given inspector and wraps the database in a `WrapDatabaseRef`. @@ -500,7 +530,11 @@ pub fn new_evm_with_inspector_ref<'db, DB, I>( db: &'db DB, env: &Env, inspector: &'db mut I, -) -> EitherEvm, &'db mut I, PrecompilesMap> +) -> EitherEvm< + WrapDatabaseRef<&'db DB>, + &'db mut I, + SeismicPrecompiles>>, +> where DB: DatabaseRef + 'db + ?Sized, I: Inspector>> diff --git a/crates/anvil/src/eth/backend/fork.rs b/crates/anvil/src/eth/backend/fork.rs index 841d740ab..5069f7798 100644 --- a/crates/anvil/src/eth/backend/fork.rs +++ b/crates/anvil/src/eth/backend/fork.rs @@ -3,7 +3,7 @@ use crate::eth::{backend::db::Db, error::BlockchainError, pool::transactions::PoolTransaction}; use alloy_consensus::Account; use alloy_eips::eip2930::AccessListResult; -use alloy_network::{AnyRpcBlock, AnyRpcTransaction, BlockResponse, TransactionResponse}; +use alloy_network::{BlockResponse, TransactionResponse}; use alloy_primitives::{ map::{FbHashMap, HashMap}, Address, Bytes, StorageValue, B256, U256, @@ -13,8 +13,7 @@ use alloy_provider::{ Provider, }; use alloy_rpc_types::{ - request::TransactionRequest, - simulate::{SimulatePayload, SimulatedBlock}, + simulate::SimulatedBlock, trace::{ geth::{GethDebugTracingOptions, GethTrace}, parity::LocalizedTransactionTrace as Trace, @@ -34,6 +33,10 @@ use revm::context_interface::block::BlobExcessGasAndPrice; use std::{sync::Arc, time::Duration}; use tokio::sync::RwLock as AsyncRwLock; +use seismic_prelude::foundry::{ + AnyRpcBlock, AnyRpcTransaction, SimulatePayload, TransactionRequest, +}; + /// Represents a fork of a remote client /// /// This type contains a subset of the [`EthApi`](crate::eth::EthApi) functions but will exclusively @@ -193,6 +196,7 @@ impl ClientFork { block: Option, ) -> Result { let block = block.unwrap_or(BlockNumber::Latest); + // TODO: seismic provider let res = self.provider().call(request.clone()).block(block.into()).await?; Ok(res) @@ -201,9 +205,13 @@ impl ClientFork { /// Sends `eth_simulateV1` pub async fn simulate_v1( &self, - request: &SimulatePayload, - block: Option, + _request: &SimulatePayload, + _block: Option, ) -> Result>, TransportError> { + unimplemented!("TODO: implement seismic simulate"); + /* + // TODO(christian): need to implement a separate simulate call for seismic tx, + // because otherwise we need to re-fork alloy... let mut simulate_call = self.provider().simulate(request); if let Some(n) = block { simulate_call = simulate_call.number(n.as_number().unwrap()); @@ -212,6 +220,7 @@ impl ClientFork { let res = simulate_call.await?; Ok(res) + */ } /// Sends `eth_estimateGas` @@ -221,6 +230,7 @@ impl ClientFork { block: Option, ) -> Result { let block = block.unwrap_or_default(); + // TODO: seismic provider let res = self.provider().estimate_gas(request.clone()).block(block.into()).await?; Ok(res as u128) @@ -232,6 +242,7 @@ impl ClientFork { request: &WithOtherFields, block: Option, ) -> Result { + // TODO: seismic provider self.provider().create_access_list(request).block_id(block.unwrap_or_default().into()).await } diff --git a/crates/anvil/src/eth/backend/genesis.rs b/crates/anvil/src/eth/backend/genesis.rs index ef4e82245..80c880b09 100644 --- a/crates/anvil/src/eth/backend/genesis.rs +++ b/crates/anvil/src/eth/backend/genesis.rs @@ -49,7 +49,8 @@ impl GenesisConfig { db.insert_account(addr, self.genesis_to_account_info(&acc)); // insert all storage values for (k, v) in &storage.unwrap_or_default() { - db.set_storage_at(addr, *k, *v.into())?; + let u256_v = U256::from_be_bytes(*v.as_ref()); + db.set_storage_at(addr, (*k).into(), (u256_v).into())?; } } } diff --git a/crates/anvil/src/eth/backend/info.rs b/crates/anvil/src/eth/backend/info.rs index 0f539f937..386c44bcc 100644 --- a/crates/anvil/src/eth/backend/info.rs +++ b/crates/anvil/src/eth/backend/info.rs @@ -1,11 +1,12 @@ //! Handler that can get current storage related data use crate::mem::Backend; -use alloy_network::AnyRpcBlock; use alloy_primitives::B256; use anvil_core::eth::{block::Block, transaction::TypedReceipt}; use std::{fmt, sync::Arc}; +use seismic_prelude::foundry::AnyRpcBlock; + /// A type that can fetch data related to the ethereum storage. /// /// This is simply a wrapper type for the [`Backend`] but exposes a limited set of functions to diff --git a/crates/anvil/src/eth/backend/mem/mod.rs b/crates/anvil/src/eth/backend/mem/mod.rs index cd0bc11de..5312dcbf6 100644 --- a/crates/anvil/src/eth/backend/mem/mod.rs +++ b/crates/anvil/src/eth/backend/mem/mod.rs @@ -37,8 +37,8 @@ use alloy_chains::NamedChain; use alloy_consensus::{ proofs::{calculate_receipt_root, calculate_transaction_root}, transaction::Recovered, - Account, BlockHeader, EnvKzgSettings, Header, Receipt, ReceiptWithBloom, Signed, - Transaction as TransactionTrait, TxEnvelope, + Account, BlockHeader, EnvKzgSettings, EthereumTxEnvelope, Header, Receipt, ReceiptWithBloom, + Signed, Transaction as TransactionTrait, }; use alloy_eips::{ eip1559::BaseFeeParams, @@ -46,12 +46,12 @@ use alloy_eips::{ EIP1559_TX_TYPE_ID, EIP2930_TX_TYPE_ID, EIP4844_TX_TYPE_ID, EIP7702_TX_TYPE_ID, LEGACY_TX_TYPE_ID, }, + eip4844::MAX_BLOBS_PER_BLOCK_DENCUN, eip7840::BlobParams, }; -use alloy_evm::{eth::EthEvmContext, precompiles::PrecompilesMap, Database, Evm}; +use alloy_evm::{eth::EthEvmContext, Database, Evm}; use alloy_network::{ - AnyHeader, AnyRpcBlock, AnyRpcHeader, AnyRpcTransaction, AnyTxEnvelope, AnyTxType, - EthereumWallet, UnknownTxEnvelope, UnknownTypedTransaction, + AnyHeader, AnyRpcHeader, AnyTxType, UnknownTxEnvelope, UnknownTypedTransaction, }; use alloy_primitives::{ address, hex, keccak256, logs_bloom, map::HashMap, utils::Unit, Address, Bytes, TxHash, TxKind, @@ -59,9 +59,8 @@ use alloy_primitives::{ }; use alloy_rpc_types::{ anvil::Forking, - request::TransactionRequest, serde_helpers::JsonStorageKey, - simulate::{SimBlock, SimCallResult, SimulatePayload, SimulatedBlock}, + simulate::{SimCallResult, SimulatedBlock}, state::EvmOverrides, trace::{ filter::TraceFilter, @@ -71,9 +70,10 @@ use alloy_rpc_types::{ }, parity::LocalizedTransactionTrace, }, + transaction::TransactionRequest as AlloyTransactionRequest, AccessList, Block as AlloyBlock, BlockId, BlockNumberOrTag as BlockNumber, BlockTransactions, EIP1186AccountProofResponse as AccountProof, EIP1186StorageProof as StorageProof, Filter, - Header as AlloyHeader, Index, Log, Transaction, TransactionReceipt, + Header as AlloyHeader, Index, Log, Transaction, }; use alloy_serde::{OtherFields, WithOtherFields}; use alloy_signer::Signature; @@ -82,9 +82,8 @@ use alloy_trie::{proof::ProofRetainer, HashBuilder, Nibbles}; use anvil_core::eth::{ block::{Block, BlockInfo}, transaction::{ - has_optimism_fields, transaction_request_to_typed, DepositReceipt, - MaybeImpersonatedTransaction, PendingTransaction, ReceiptResponse, TransactionInfo, - TypedReceipt, TypedTransaction, + transaction_request_to_typed, DepositReceipt, MaybeImpersonatedTransaction, + PendingTransaction, ReceiptResponse, TransactionInfo, TypedReceipt, TypedTransaction, }, wallet::{Capabilities, DelegationCapability, WalletCapabilities}, }; @@ -102,9 +101,7 @@ use foundry_evm::{ use foundry_evm_core::either_evm::EitherEvm; use futures::channel::mpsc::{unbounded, UnboundedSender}; use op_alloy_consensus::DEPOSIT_TX_TYPE_ID; -use op_revm::{ - transaction::deposit::DepositTransactionParts, OpContext, OpHaltReason, OpTransaction, -}; +use op_revm::OpContext; use parking_lot::{Mutex, RwLock}; use revm::{ context::{Block as RevmBlock, BlockEnv, TxEnv}, @@ -115,7 +112,7 @@ use revm::{ database::{CacheDB, DatabaseRef, WrapDatabaseRef}, interpreter::InstructionResult, precompile::secp256r1::P256VERIFY, - primitives::{hardfork::SpecId, KECCAK_EMPTY}, + primitives::{hardfork::SpecId as RevmSpecId, KECCAK_EMPTY}, state::AccountInfo, DatabaseCommit, Inspector, }; @@ -133,6 +130,12 @@ use tokio::sync::RwLock as AsyncRwLock; use super::executor::new_evm_with_inspector_ref; +use seismic_prelude::foundry::{ + AnyRpcBlock, AnyRpcTransaction, AnyTxEnvelope, EthereumWallet, OpHaltReason, OpTransaction, + SeismicContext, SeismicPrecompiles, SimBlock, SimulatePayload, SpecId, TransactionReceipt, + TransactionRequest, TxEnvelope, +}; + pub mod cache; pub mod fork_db; pub mod in_memory_db; @@ -266,7 +269,7 @@ impl Backend { let env = env.read(); Blockchain::new( &env, - env.evm_env.cfg_env.spec, + env.evm_env.cfg_env.spec.into_eth_spec(), fees.is_eip1559().then(|| fees.base_fee()), genesis.timestamp, genesis.number, @@ -517,7 +520,7 @@ impl Backend { } pub fn precompiles(&self) -> Vec
{ - get_precompiles_for(self.env.read().evm_env.cfg_env.spec) + get_precompiles_for(self.env.read().evm_env.cfg_env.spec.into_eth_spec()) } /// Resets the fork to a fresh state @@ -751,27 +754,27 @@ impl Backend { /// Returns true for post London pub fn is_eip1559(&self) -> bool { - (self.spec_id() as u8) >= (SpecId::LONDON as u8) + (self.spec_id() as u8) >= (RevmSpecId::LONDON as u8) } /// Returns true for post Merge pub fn is_eip3675(&self) -> bool { - (self.spec_id() as u8) >= (SpecId::MERGE as u8) + (self.spec_id() as u8) >= (RevmSpecId::MERGE as u8) } /// Returns true for post Berlin pub fn is_eip2930(&self) -> bool { - (self.spec_id() as u8) >= (SpecId::BERLIN as u8) + (self.spec_id() as u8) >= (RevmSpecId::BERLIN as u8) } /// Returns true for post Cancun pub fn is_eip4844(&self) -> bool { - (self.spec_id() as u8) >= (SpecId::CANCUN as u8) + (self.spec_id() as u8) >= (RevmSpecId::CANCUN as u8) } /// Returns true for post Prague pub fn is_eip7702(&self) -> bool { - (self.spec_id() as u8) >= (SpecId::PRAGUE as u8) + (self.spec_id() as u8) >= (RevmSpecId::PRAGUE as u8) } /// Returns true if op-stack deposits are active @@ -781,7 +784,7 @@ impl Backend { /// Returns [`BlobParams`] corresponding to the current spec. pub fn blob_params(&self) -> BlobParams { - if self.env.read().evm_env.cfg_env.spec >= SpecId::PRAGUE { + if self.env.read().evm_env.cfg_env.spec.into_eth_spec() >= RevmSpecId::PRAGUE { BlobParams::prague() } else { BlobParams::cancun() @@ -1100,11 +1103,14 @@ impl Backend { ) -> EitherEvm< WrapDatabaseRef<&'db dyn DatabaseRef>, &'db mut I, - PrecompilesMap, + SeismicPrecompiles< + SeismicContext>>, + >, > where I: Inspector>>> - + Inspector>>>, + + Inspector>>> + + Inspector>>>, WrapDatabaseRef<&'db dyn DatabaseRef>: Database, { @@ -1132,10 +1138,12 @@ impl Backend { let mut env = self.next_env(); env.tx = tx.pending_transaction.to_revm_tx_env(); + /* if env.is_optimism { env.tx.enveloped_tx = Some(alloy_rlp::encode(&tx.pending_transaction.transaction.transaction).into()); } + */ let db = self.db.read().await; let mut inspector = self.build_inspector(); @@ -1440,16 +1448,19 @@ impl Backend { request: WithOtherFields, fee_details: FeeDetails, block_request: Option, - overrides: Option, + overrides: EvmOverrides, ) -> Result<(InstructionResult, Option, u128, State), BlockchainError> { - self.with_database_at(block_request, |state, block| { - let block_number = block.number.to::(); - let (exit, out, gas, state) = match overrides { - None => self.seismic_call_with_state(state.as_dyn(), request, fee_details, block), - Some(overrides) => { - let state = state::apply_state_override(overrides.into_iter().collect(), state)?; - self.seismic_call_with_state(state.as_dyn(), request, fee_details, block) - }, + self.with_database_at(block_request, |state, mut block| { + let block_number = block.number; + let (exit, out, gas, state) = { + let mut cache_db = CacheDB::new(state); + if let Some(state_overrides) = overrides.state { + state::apply_state_overrides(state_overrides.into_iter().collect(), &mut cache_db)?; + } + if let Some(block_overrides) = overrides.block { + state::apply_block_overrides(*block_overrides, &mut cache_db, &mut block); + } + self.seismic_call_with_state(cache_db.as_dyn(), request, fee_details, block) }?; trace!(target: "backend", "seismic call return {:?} out: {:?} gas {} on block {}", exit, out, gas, block_number); Ok((exit, out, gas, state)) @@ -1465,30 +1476,33 @@ impl Backend { /// - `nonce` check is skipped if `request.nonce` is None fn build_call_env( &self, - request: WithOtherFields, + request: WithOtherFields, fee_details: FeeDetails, block_env: BlockEnv, ) -> Env { - let WithOtherFields:: { + let WithOtherFields:: { inner: - seismic_alloy_rpc_types::TransactionRequest { - from, - to, - gas, - value, - input, - access_list, - blob_versioned_hashes, - authorization_list, - nonce, - sidecar: _, - chain_id, - transaction_type, - max_fee_per_gas, - max_priority_fee_per_gas, - .. // Rest of the gas fees related fields are taken from `fee_details` + TransactionRequest { + inner: AlloyTransactionRequest { + from, + to, + gas, + value, + input, + access_list, + blob_versioned_hashes, + authorization_list, + nonce, + sidecar: _, + chain_id, + transaction_type, + max_fee_per_gas, + max_priority_fee_per_gas, + .. // Rest of the gas fees related fields are taken from `fee_details` + }, + seismic_elements: _, }, - other, + other: _, } = request; let tx_type = transaction_type.unwrap_or_else(|| { @@ -1535,7 +1549,7 @@ impl Backend { let data = input.into_input().unwrap_or_default(); let data = match request.inner.seismic_elements { Some(seismic_elements) => seismic_elements - .server_decrypt(&MockEnclaveClient::new(), &data) + .server_decrypt(&seismic_enclave::MockEnclaveClient::new(), &data) .expect("failed to decrypt seismic elements"), None => data, }; @@ -1581,6 +1595,7 @@ impl Backend { env.evm_env.cfg_env.disable_base_fee = true; } + /* // Deposit transaction? if transaction_type == Some(DEPOSIT_TX_TYPE_ID) && has_optimism_fields(&other) { let deposit = DepositTransactionParts { @@ -1599,6 +1614,7 @@ impl Backend { }; env.tx.deposit = deposit; } + */ env } @@ -1652,7 +1668,8 @@ impl Backend { } // execute all calls in that block - for (req_idx, request) in calls.into_iter().enumerate() { + for (req_idx, seismic_request) in calls.into_iter().enumerate() { + let request = seismic_request.inner.clone(); let fee_details = FeeDetails::new( request.gas_price, request.max_fee_per_gas, @@ -1662,7 +1679,7 @@ impl Backend { .or_zero_fees(); let mut env = self.build_call_env( - WithOtherFields::new(request.clone()), + WithOtherFields::new(seismic_request.clone()), fee_details, block_env.clone(), ); @@ -1708,7 +1725,7 @@ impl Backend { // create the transaction from a request let from = request.from.unwrap_or_default(); let request = - transaction_request_to_typed(WithOtherFields::new(request)).unwrap(); + transaction_request_to_typed(WithOtherFields::new(seismic_request)).unwrap(); let tx = build_typed_transaction( request, Signature::new(Default::default(), Default::default(), false), @@ -1871,7 +1888,10 @@ impl Backend { let output_data = out .map(|plaintext_output| match seismic_elements { Some(seismic_elements) => seismic_elements - .server_encrypt(&MockEnclaveClient::new(), &plaintext_output.data()) + .server_encrypt( + &seismic_enclave::MockEnclaveClient::new(), + &plaintext_output.data(), + ) .map_err(|e| { BlockchainError::Message(format!("Failed to encrypt output: {}", e)) }) @@ -1996,7 +2016,7 @@ impl Backend { block_env: BlockEnv, ) -> Result<(InstructionResult, Option, u64, AccessList), BlockchainError> { let mut inspector = - AccessListInspector::new(request.access_list.clone().unwrap_or_default()); + AccessListInspector::new(request.inner.inner.access_list.clone().unwrap_or_default()); let env = self.build_call_env(request, fee_details, block_env); let mut evm = self.new_evm_with_inspector_ref(state, &env, &mut inspector); @@ -2795,7 +2815,7 @@ impl Backend { let receipt_with_bloom = ReceiptWithBloom { receipt, logs_bloom: tx_receipt.as_receipt_with_bloom().logs_bloom }; - let inner = match tx_receipt { + let inner: TypedReceipt> = match tx_receipt { TypedReceipt::EIP1559(_) => TypedReceipt::EIP1559(receipt_with_bloom), TypedReceipt::Legacy(_) => TypedReceipt::Legacy(receipt_with_bloom), TypedReceipt::EIP2930(_) => TypedReceipt::EIP2930(receipt_with_bloom), @@ -2809,20 +2829,21 @@ impl Backend { TypedReceipt::Seismic(_) => TypedReceipt::Seismic(receipt_with_bloom), }; - let inner = TransactionReceipt { - inner, - transaction_hash: info.transaction_hash, - transaction_index: Some(info.transaction_index), - block_number: Some(block.header.number), - gas_used: info.gas_used, - contract_address: info.contract_address, - effective_gas_price, - block_hash: Some(block_hash), - from: info.from, - to: info.to, - blob_gas_price: Some(blob_gas_price), - blob_gas_used, - }; + let inner: alloy_rpc_types::TransactionReceipt>> = + TransactionReceipt { + inner, + transaction_hash: info.transaction_hash, + transaction_index: Some(info.transaction_index), + block_number: Some(block.header.number), + gas_used: info.gas_used, + contract_address: info.contract_address, + effective_gas_price, + block_hash: Some(block_hash), + from: info.from, + to: info.to, + blob_gas_price: Some(blob_gas_price), + blob_gas_used, + }; Some(MinedTransactionReceipt { inner, out: info.out.map(|o| o.0.into()) }) } @@ -2964,8 +2985,8 @@ impl Backend { let mut builder = HashBuilder::default() .with_proof_retainer(ProofRetainer::new(vec![Nibbles::unpack(keccak256(address))])); - for (key, account) in trie_accounts(db) { - builder.add_leaf(key, &account); + for (key, account, is_private) in trie_accounts(db) { + builder.add_leaf(key, &account, is_private); } let _ = builder.root(); @@ -3139,7 +3160,7 @@ impl TransactionValidator for Backend { if chain_id.to::() != tx_chain_id { if let Some(legacy) = tx.as_legacy() { // - if env.evm_env.cfg_env.spec >= SpecId::SPURIOUS_DRAGON && + if env.evm_env.cfg_env.spec.into_eth_spec() >= RevmSpecId::SPURIOUS_DRAGON && legacy.tx().chain_id.is_none() { warn!(target: "backend", ?chain_id, ?tx_chain_id, "incompatible EIP155-based V"); @@ -3176,7 +3197,7 @@ impl TransactionValidator for Backend { return Err(InvalidTransactionError::NonceTooLow); } - if env.evm_env.cfg_env.spec >= SpecId::LONDON { + if env.evm_env.cfg_env.spec.into_eth_spec() >= RevmSpecId::LONDON { if tx.gas_price() < env.evm_env.block_env.basefee.into() && !is_deposit_tx { warn!(target: "backend", "max fee per gas={}, too low, block basefee={}",tx.gas_price(), env.evm_env.block_env.basefee); return Err(InvalidTransactionError::FeeCapTooLow); @@ -3193,7 +3214,9 @@ impl TransactionValidator for Backend { } // EIP-4844 Cancun hard fork validation steps - if env.evm_env.cfg_env.spec >= SpecId::CANCUN && tx.transaction.is_eip4844() { + if env.evm_env.cfg_env.spec.into_eth_spec() >= RevmSpecId::CANCUN && + tx.transaction.is_eip4844() + { // Light checks first: see if the blob fee cap is too low. if let Some(max_fee_per_blob_gas) = tx.essentials().max_fee_per_blob_gas { if let Some(blob_gas_and_price) = &env.evm_env.block_env.blob_excess_gas_and_price { @@ -3218,26 +3241,16 @@ impl TransactionValidator for Backend { } // Ensure the tx does not exceed the max blobs per block. -<<<<<<< HEAD - if blob_count > MAX_BLOBS_PER_BLOCK { - return Err(InvalidTransactionError::TooManyBlobs(MAX_BLOBS_PER_BLOCK, blob_count)); + if blob_count > MAX_BLOBS_PER_BLOCK_DENCUN { + return Err(InvalidTransactionError::TooManyBlobs( + MAX_BLOBS_PER_BLOCK_DENCUN, + blob_count, + )); } // Check for any blob validation errors - if let Err(err) = tx.validate(env.cfg.kzg_settings.get()) { + if let Err(err) = tx.validate(EnvKzgSettings::default().get()) { return Err(InvalidTransactionError::BlobTransactionValidationError(err)); -======= - let max_blob_count = self.blob_params().max_blob_count as usize; - if blob_count > max_blob_count { - return Err(InvalidTransactionError::TooManyBlobs(blob_count, max_blob_count)) - } - - // Check for any blob validation errors if not impersonating. - if !self.skip_blob_validation(Some(*pending.sender())) { - if let Err(err) = tx.validate(EnvKzgSettings::default().get()) { - return Err(InvalidTransactionError::BlobTransactionValidationError(err)) - } ->>>>>>> 3c0b3df8f8ef8800a10912ce5a9dcd9eb7e971ff } } @@ -3274,7 +3287,7 @@ impl TransactionValidator for Backend { let inner = seismic_tx.tx(); let _decrypted_data = inner .seismic_elements - .server_decrypt(&MockEnclaveClient::new(), &inner.input) + .server_decrypt(&seismic_enclave::MockEnclaveClient::new(), &inner.input) .map_err(|_e| { InvalidTransactionError::SeismicDecryptionFailed(format!( "Failed to decrypt seismic calldata" @@ -3351,7 +3364,7 @@ pub fn transaction_build( } } - let mut transaction: Transaction = eth_transaction.clone().into(); + let mut transaction: Transaction = eth_transaction.clone().into(); let effective_gas_price = if !eth_transaction.is_dynamic_fee() { transaction.effective_gas_price(base_fee) @@ -3376,43 +3389,39 @@ pub fn transaction_build( // `BYPASS_SIGNATURE` which would result in different hashes // Note: for impersonated transactions this only concerns pending transactions because // there's // no `info` yet. - let hash = tx_hash.unwrap_or(*envelope.tx_hash()); + let hash = tx_hash.unwrap_or(envelope.inner().tx_hash()); - let envelope = match envelope.into_inner() { + let envelope = match envelope.into_inner().into() { TxEnvelope::Legacy(signed_tx) => { let (t, sig, _) = signed_tx.into_parts(); let new_signed = Signed::new_unchecked(t, sig, hash); - AnyTxEnvelope::Ethereum(TxEnvelope::Legacy(new_signed)) + AnyTxEnvelope::Ethereum(EthereumTxEnvelope::Legacy(new_signed)) } TxEnvelope::Eip1559(signed_tx) => { let (t, sig, _) = signed_tx.into_parts(); let new_signed = Signed::new_unchecked(t, sig, hash); - AnyTxEnvelope::Ethereum(TxEnvelope::Eip1559(new_signed)) + AnyTxEnvelope::Ethereum(EthereumTxEnvelope::Eip1559(new_signed)) } TxEnvelope::Eip2930(signed_tx) => { let (t, sig, _) = signed_tx.into_parts(); let new_signed = Signed::new_unchecked(t, sig, hash); - AnyTxEnvelope::Ethereum(TxEnvelope::Eip2930(new_signed)) + AnyTxEnvelope::Ethereum(EthereumTxEnvelope::Eip2930(new_signed)) } TxEnvelope::Eip4844(signed_tx) => { let (t, sig, _) = signed_tx.into_parts(); let new_signed = Signed::new_unchecked(t, sig, hash); - AnyTxEnvelope::Ethereum(TxEnvelope::Eip4844(new_signed)) + AnyTxEnvelope::Ethereum(EthereumTxEnvelope::Eip4844(new_signed)) } TxEnvelope::Eip7702(signed_tx) => { let (t, sig, _) = signed_tx.into_parts(); let new_signed = Signed::new_unchecked(t, sig, hash); - AnyTxEnvelope::Ethereum(TxEnvelope::Eip7702(new_signed)) + AnyTxEnvelope::Ethereum(EthereumTxEnvelope::Eip7702(new_signed)) } -<<<<<<< HEAD TxEnvelope::Seismic(signed_tx) => { let (tx, signature, _) = signed_tx.into_parts(); let new_signed = Signed::new_unchecked(tx, signature, hash); - AnyTxEnvelope::Ethereum(TxEnvelope::Seismic(new_signed)) + AnyTxEnvelope::Seismic(new_signed) } - _ => unreachable!("unknown tx type"), -======= ->>>>>>> 3c0b3df8f8ef8800a10912ce5a9dcd9eb7e971ff }; let tx = Transaction { @@ -3436,13 +3445,16 @@ pub fn transaction_build( /// `storage_key` is the hash of the desired storage key, meaning /// this will only work correctly under a secure trie. /// `storage_key` == keccak(key) -pub fn prove_storage(storage: &HashMap, keys: &[B256]) -> Vec> { +pub fn prove_storage( + storage: &HashMap, + keys: &[B256], +) -> Vec> { let keys: Vec<_> = keys.iter().map(|key| Nibbles::unpack(keccak256(key))).collect(); let mut builder = HashBuilder::default().with_proof_retainer(ProofRetainer::new(keys.clone())); - for (key, value) in trie_storage(storage) { - builder.add_leaf(key, &value); + for (key, value, is_private) in trie_storage(storage) { + builder.add_leaf(key, &value, is_private); } let _ = builder.root(); @@ -3471,6 +3483,10 @@ pub fn is_arbitrum(chain_id: u64) -> bool { pub fn op_haltreason_to_instruction_result(op_reason: OpHaltReason) -> InstructionResult { match op_reason { OpHaltReason::Base(eth_h) => eth_h.into(), + /* OpHaltReason::FailedDeposit => InstructionResult::Stop, + */ + OpHaltReason::InvalidPrivateStorageAccess => InstructionResult::Stop, + OpHaltReason::InvalidPublicStorageAccess => InstructionResult::Stop, } } diff --git a/crates/anvil/src/eth/backend/mem/state.rs b/crates/anvil/src/eth/backend/mem/state.rs index 7f4d39e5e..7e853328f 100644 --- a/crates/anvil/src/eth/backend/mem/state.rs +++ b/crates/anvil/src/eth/backend/mem/state.rs @@ -10,14 +10,14 @@ use revm::{ bytecode::Bytecode, context::BlockEnv, database::{CacheDB, DatabaseRef, DbAccount}, + primitives::FlaggedStorage, state::AccountInfo, }; -use revm::primitives::FlaggedStorage; -pub fn build_root(values: impl IntoIterator)>) -> B256 { +pub fn build_root(values: impl IntoIterator, bool)>) -> B256 { let mut builder = HashBuilder::default(); - for (key, value) in values { - builder.add_leaf(key, value.as_ref()); + for (key, value, is_private) in values { + builder.add_leaf(key, value.as_ref(), is_private); } builder.root() } @@ -33,31 +33,30 @@ pub fn storage_root(storage: &HashMap) -> B256 { } /// Builds iterator over stored key-value pairs ready for storage trie root calculation. -pub fn trie_storage(storage: &HashMap) -> Vec<(Nibbles, Vec)> { +pub fn trie_storage(storage: &HashMap) -> Vec<(Nibbles, Vec, bool)> { let mut storage = storage .iter() .map(|(key, value)| { - // TODO: support FlaggedStorage let value_u256: U256 = value.into(); let data = alloy_rlp::encode(value_u256); - (Nibbles::unpack(keccak256(key.to_be_bytes::<32>())), data) + (Nibbles::unpack(keccak256(key.to_be_bytes::<32>())), data, value.is_private) }) .collect::>(); - storage.sort_by(|(key1, _), (key2, _)| key1.cmp(key2)); + storage.sort_by(|(key1, _, _), (key2, _, _)| key1.cmp(key2)); storage } /// Builds iterator over stored key-value pairs ready for account trie root calculation. -pub fn trie_accounts(accounts: &HashMap) -> Vec<(Nibbles, Vec)> { +pub fn trie_accounts(accounts: &HashMap) -> Vec<(Nibbles, Vec, bool)> { let mut accounts = accounts .iter() .map(|(address, account)| { let data = trie_account_rlp(&account.info, &account.storage); - (Nibbles::unpack(keccak256(*address)), data) + (Nibbles::unpack(keccak256(*address)), data, false) }) .collect::>(); - accounts.sort_by(|(key1, _), (key2, _)| key1.cmp(key2)); + accounts.sort_by(|(key1, _, _), (key2, _, _)| key1.cmp(key2)); accounts } @@ -120,7 +119,8 @@ where } (None, Some(account_state_diff)) => { for (key, value) in account_state_diff { - cache_db.insert_account_storage(*account, (*key).into(), (*value).into())?; + let value_u256: U256 = (*value).into(); + cache_db.insert_account_storage(*account, (*key).into(), value_u256.into())?; } } }; diff --git a/crates/anvil/src/eth/backend/mem/storage.rs b/crates/anvil/src/eth/backend/mem/storage.rs index 76a999888..6fb834bff 100644 --- a/crates/anvil/src/eth/backend/mem/storage.rs +++ b/crates/anvil/src/eth/backend/mem/storage.rs @@ -528,7 +528,6 @@ impl MinedTransaction { block_hash: Some(self.block_hash), block_number: Some(self.block_number), base_fee: None, - tx_type: self.info.tx_type, }) } @@ -570,17 +569,23 @@ impl MinedTransaction { GethDebugBuiltInTracerType::CallTracer => { return match tracer_config.into_call_config() { Ok(call_config) => { - let mut frame = GethTraceBuilder::new(self.info.traces.clone()) - .geth_call_traces(call_config, self.receipt.cumulative_gas_used()) - + let frame = GethTraceBuilder::new(self.info.traces.clone()) + .geth_call_traces( + call_config, + self.receipt.cumulative_gas_used(), + ); + + // TODO: for shielding the trace + /* frame.tx_type = self.info.tx_type.unwrap_or_default(); if frame.tx_type == - alloy_consensus::transaction::TxSeismic::TX_TYPE as isize + TxSeismic::TX_TYPE as isize { frame = frame.shield_inputs(); } + */ Ok(frame.into()) - }, + } Err(e) => Err(RpcError::invalid_params(e.to_string()).into()), }; } diff --git a/crates/anvil/src/eth/fees.rs b/crates/anvil/src/eth/fees.rs index b614bcae5..691987c27 100644 --- a/crates/anvil/src/eth/fees.rs +++ b/crates/anvil/src/eth/fees.rs @@ -16,13 +16,15 @@ use alloy_primitives::B256; use anvil_core::eth::transaction::TypedTransaction; use futures::StreamExt; use parking_lot::{Mutex, RwLock}; -use revm::{context_interface::block::BlobExcessGasAndPrice, primitives::hardfork::SpecId}; +use revm::context_interface::block::BlobExcessGasAndPrice; use crate::eth::{ backend::{info::StorageInfo, notifications::NewBlockNotifications}, error::BlockchainError, }; +use seismic_prelude::foundry::SpecId; + /// Maximum number of entries in the fee history cache pub const MAX_FEE_HISTORY_CACHE_SIZE: u64 = 2048u64; @@ -45,6 +47,7 @@ pub fn default_elasticity() -> f64 { /// Stores the fee related information #[derive(Clone, Debug)] pub struct FeeManager { + #[allow(dead_code)] /// Hardfork identifier spec_id: SpecId, /// Tracks the base fee for the next block post London @@ -88,11 +91,17 @@ impl FeeManager { /// Returns true for post London pub fn is_eip1559(&self) -> bool { + /* (self.spec_id as u8) >= (SpecId::LONDON as u8) + */ + true } pub fn is_eip4844(&self) -> bool { + /* (self.spec_id as u8) >= (SpecId::CANCUN as u8) + */ + true } /// Calculates the current blob gas price diff --git a/crates/anvil/src/eth/otterscan/api.rs b/crates/anvil/src/eth/otterscan/api.rs index 129329991..e086f77c7 100644 --- a/crates/anvil/src/eth/otterscan/api.rs +++ b/crates/anvil/src/eth/otterscan/api.rs @@ -4,10 +4,7 @@ use crate::eth::{ EthApi, }; use alloy_consensus::Transaction as TransactionTrait; -use alloy_network::{ - AnyHeader, AnyRpcBlock, AnyRpcHeader, AnyRpcTransaction, AnyTxEnvelope, BlockResponse, - TransactionResponse, -}; +use alloy_network::{AnyHeader, AnyRpcHeader, BlockResponse, TransactionResponse}; use alloy_primitives::{Address, Bytes, B256, U256}; use alloy_rpc_types::{ trace::{ @@ -26,6 +23,8 @@ use itertools::Itertools; use futures::future::join_all; +use seismic_prelude::foundry::{AnyRpcBlock, AnyRpcTransaction, AnyTxEnvelope}; + pub fn mentions_address(trace: LocalizedTransactionTrace, address: Address) -> Option { match (trace.trace.action, trace.trace.result) { (Action::Call(CallAction { from, to, .. }), _) if from == address || to == address => { diff --git a/crates/anvil/src/eth/pool/transactions.rs b/crates/anvil/src/eth/pool/transactions.rs index fc30d44b2..1234497f4 100644 --- a/crates/anvil/src/eth/pool/transactions.rs +++ b/crates/anvil/src/eth/pool/transactions.rs @@ -1,5 +1,4 @@ use crate::eth::{error::PoolError, util::hex_fmt_many}; -use alloy_network::AnyRpcTransaction; use alloy_primitives::{ map::{HashMap, HashSet}, Address, TxHash, @@ -8,6 +7,8 @@ use anvil_core::eth::transaction::{PendingTransaction, TypedTransaction}; use parking_lot::RwLock; use std::{cmp::Ordering, collections::BTreeSet, fmt, str::FromStr, sync::Arc, time::Instant}; +use seismic_prelude::foundry::AnyRpcTransaction; + /// A unique identifying marker for a transaction pub type TxMarker = Vec; diff --git a/crates/anvil/src/evm.rs b/crates/anvil/src/evm.rs index 0d70250c4..8a35a813d 100644 --- a/crates/anvil/src/evm.rs +++ b/crates/anvil/src/evm.rs @@ -1,13 +1,9 @@ -use std::fmt::Debug; - -use alloy_evm::{ - eth::EthEvmContext, - precompiles::{DynPrecompile, PrecompilesMap}, - Database, Evm, -}; +use alloy_evm::{precompiles::DynPrecompile, Database, Evm}; use foundry_evm_core::either_evm::EitherEvm; -use op_revm::OpContext; use revm::{precompile::PrecompileWithAddress, Inspector}; +use std::fmt::Debug; + +use seismic_prelude::foundry::{SeismicContext, SeismicPrecompiles}; /// Object-safe trait that enables injecting extra precompiles when using /// `anvil` as a library. @@ -16,21 +12,38 @@ pub trait PrecompileFactory: Send + Sync + Unpin + Debug { fn precompiles(&self) -> Vec; } +#[allow(unused_variables)] +fn apply_precompile( + p: &mut SeismicPrecompiles>, + address: &alloy_primitives::Address, + f: F, +) where + F: FnOnce(Option) -> Option, +{ + todo!("Find a way to add this precompile to SeismicPrecompiles") +} + /// Inject precompiles into the EVM dynamically. pub fn inject_precompiles( - evm: &mut EitherEvm, + evm: &mut EitherEvm>>, precompiles: Vec, ) where DB: Database, - I: Inspector> + Inspector>, + /* + I: Inspector> + Inspector> + */ + I: Inspector>, { for p in precompiles { - evm.precompiles_mut() - .apply_precompile(p.address(), |_| Some(DynPrecompile::from(*p.precompile()))); + apply_precompile(evm.precompiles_mut(), p.address(), |_| { + Some(DynPrecompile::from(*p.precompile())) + }); } } #[cfg(test)] +#[allow(unused_imports)] +#[allow(dead_code)] mod tests { use std::convert::Infallible; @@ -56,6 +69,11 @@ mod tests { use crate::{inject_precompiles, PrecompileFactory}; + use seismic_prelude::foundry::{ + SeismicChain, SeismicContext, SeismicEvm, SeismicPrecompiles, SeismicSpecId, + SeismicTransaction, + }; + // A precompile activated in the `Prague` spec. const ETH_PRAGUE_PRECOMPILE: Address = address!("0x0000000000000000000000000000000000000011"); @@ -84,6 +102,7 @@ mod tests { Ok(PrecompileOutput { bytes: Bytes::copy_from_slice(input), gas_used: 0 }) } + /* /// Creates a new EVM instance with the custom precompile factory. fn create_eth_evm( spec: SpecId, @@ -95,7 +114,7 @@ mod tests { kind: TxKind::Call(PRECOMPILE_ADDR), data: PAYLOAD.into(), ..Default::default() - }, + }.into(), }; let eth_evm_context = EthEvmContext { @@ -136,15 +155,13 @@ mod tests { ) { let op_env = crate::eth::backend::env::Env { evm_env: EvmEnv { block_env: Default::default(), cfg_env: CfgEnv::new_with_spec(spec) }, - tx: OpTransaction:: { - base: TxEnv { - kind: TxKind::Call(PRECOMPILE_ADDR), - data: PAYLOAD.into(), - ..Default::default() - }, + tx: TxEnv { + kind: TxKind::Call(PRECOMPILE_ADDR), + data: PAYLOAD.into(), ..Default::default() - }, + }.into(), is_optimism: true, + is_seismic: false, }; let mut chain = L1BlockInfo::default(); @@ -159,12 +176,12 @@ mod tests { journaled_state: { let mut journal = Journal::new(EmptyDB::default()); // Converting SpecId into OpSpecId - journal.set_spec_id(op_env.evm_env.cfg_env.spec); + journal.set_spec_id(op_env.evm_env.cfg_env.spec.into()); journal }, block: op_env.evm_env.block_env.clone(), cfg: op_cfg.clone(), - tx: op_env.tx.clone(), + tx: OpTransaction::new(op_env.tx.clone().base), chain, local: LocalContext::default(), error: Ok(()), @@ -184,6 +201,51 @@ mod tests { (op_env, op_evm) } + /// Creates a new OP EVM instance with the custom precompile factory. + fn create_seismic_evm( + seismic_spec: SeismicSpecId, + ) -> ( + crate::eth::backend::env::Env, + EitherEvm, NoOpInspector, SeismicPrecompiles>>, + ) { + let seismic_env = crate::eth::backend::env::Env { + evm_env: EvmEnv { block_env: Default::default(), cfg_env: CfgEnv::new_with_spec(seismic_spec) }, + tx: TxEnv { + kind: TxKind::Call(PRECOMPILE_ADDR), + data: PAYLOAD.into(), + ..Default::default() + }.into(), + is_optimism: true, + is_seismic: false, + }; + + let seismic_cfg = seismic_env.evm_env.cfg_env.clone().with_spec(seismic_spec); + let seismic_evm_context = SeismicContext { + journaled_state: { + let mut journal = Journal::new(EmptyDB::default()); + // Converting SpecId into OpSpecId + journal.set_spec_id(seismic_env.evm_env.cfg_env.spec.into()); + journal + }, + block: seismic_env.evm_env.block_env.clone(), + cfg: seismic_cfg.clone(), + tx: SeismicTransaction::new(seismic_env.tx.clone().base), + chain: SeismicChain::default(), + local: LocalContext::default(), + error: Ok(()), + }; + + let inner = SeismicEvm::new( + seismic_evm_context, + NoOpInspector, + ); + let seismic_evm = EitherEvm::Seismic(alloy_seismic_evm::SeismicEvm::new(inner, + true, + )); + + (seismic_env, seismic_evm) + } + #[test] fn build_eth_evm_with_extra_precompiles_default_spec() { let (env, mut evm) = create_eth_evm(SpecId::default()); @@ -277,4 +339,5 @@ mod tests { assert!(result.result.is_success()); assert_eq!(result.result.output(), Some(&PAYLOAD.into())); } + */ } diff --git a/crates/anvil/src/hardfork.rs b/crates/anvil/src/hardfork.rs index f87857f79..213c24d27 100644 --- a/crates/anvil/src/hardfork.rs +++ b/crates/anvil/src/hardfork.rs @@ -253,7 +253,7 @@ impl From for SpecId { fn from(fork: SeismicHardfork) -> Self { match fork { SeismicHardfork::Mercury => Self::MERCURY, - SeismicHardfork::Latest => Self::LATEST, + SeismicHardfork::Latest => Self::MERCURY, } } } diff --git a/crates/anvil/src/pubsub.rs b/crates/anvil/src/pubsub.rs index 69f7896c7..cf448e388 100644 --- a/crates/anvil/src/pubsub.rs +++ b/crates/anvil/src/pubsub.rs @@ -2,7 +2,6 @@ use crate::{ eth::{backend::notifications::NewBlockNotifications, error::to_rpc_result}, StorageInfo, }; -use alloy_network::AnyRpcTransaction; use alloy_primitives::{TxHash, B256}; use alloy_rpc_types::{pubsub::SubscriptionResult, FilteredParams, Log, Transaction}; use anvil_core::eth::{block::Block, subscription::SubscriptionId, transaction::TypedReceipt}; @@ -16,6 +15,8 @@ use std::{ }; use tokio::sync::mpsc::UnboundedReceiver; +use seismic_prelude::foundry::AnyRpcTransaction; + /// Listens for new blocks and matching logs emitted in that block #[derive(Debug)] pub struct LogsSubscription { diff --git a/crates/anvil/src/tasks/mod.rs b/crates/anvil/src/tasks/mod.rs index 763050e02..039f49d1b 100644 --- a/crates/anvil/src/tasks/mod.rs +++ b/crates/anvil/src/tasks/mod.rs @@ -3,7 +3,7 @@ #![allow(rustdoc::private_doc_tests)] use crate::{shutdown::Shutdown, tasks::block_listener::BlockListener, EthApi}; -use alloy_network::{AnyHeader, AnyNetwork}; +use alloy_network::AnyHeader; use alloy_primitives::B256; use alloy_provider::Provider; use alloy_rpc_types::anvil::Forking; @@ -11,6 +11,8 @@ use futures::StreamExt; use std::{fmt, future::Future}; use tokio::{runtime::Handle, task::JoinHandle}; +use seismic_prelude::foundry::AnyNetwork; + pub mod block_listener; /// A helper struct for managing additional tokio tasks. diff --git a/crates/anvil/tests/it/anvil_api.rs b/crates/anvil/tests/it/anvil_api.rs index ce3377145..f75ad4a24 100644 --- a/crates/anvil/tests/it/anvil_api.rs +++ b/crates/anvil/tests/it/anvil_api.rs @@ -6,7 +6,7 @@ use crate::{ utils::http_provider_with_signer, }; use alloy_consensus::{SignableTransaction, TxEip1559}; -use alloy_network::{EthereumWallet, TransactionBuilder, TxSignerSync}; +use alloy_network::{TransactionBuilder, TxSignerSync}; use alloy_primitives::{address, fixed_bytes, utils::Unit, Address, Bytes, TxKind, U256}; use alloy_provider::{ext::TxPoolApi, Provider}; use alloy_rpc_types::{ @@ -37,6 +37,8 @@ use std::{ time::{Duration, SystemTime}, }; +use seismic_prelude::foundry::{tx_builder, EthereumWallet}; + #[tokio::test(flavor = "multi_thread")] async fn can_set_gas_price() { let (api, handle) = @@ -94,8 +96,8 @@ async fn can_impersonate_account() { let balance = api.balance(impersonate, None).await.unwrap(); assert_eq!(balance, funding); - let tx = TransactionRequest::default().with_from(impersonate).with_to(to).with_value(val); - let tx = WithOtherFields::new(tx); + let tx = tx_builder().with_from(impersonate).with_to(to).with_value(val); + let tx = WithOtherFields::new(tx.into()); let res = provider.send_transaction(tx.clone()).await; res.unwrap_err(); @@ -133,8 +135,8 @@ async fn can_auto_impersonate_account() { let balance = api.balance(impersonate, None).await.unwrap(); assert_eq!(balance, funding); - let tx = TransactionRequest::default().with_from(impersonate).with_to(to).with_value(val); - let tx = WithOtherFields::new(tx); + let tx = tx_builder().with_from(impersonate).with_to(to).with_value(val); + let tx = WithOtherFields::new(tx.into()); let res = provider.send_transaction(tx.clone()).await; res.unwrap_err(); @@ -174,8 +176,8 @@ async fn can_impersonate_contract() { // // fund the impersonated account api.anvil_set_balance(impersonate, U256::from(1e18 as u64)).await.unwrap(); - let tx = TransactionRequest::default().with_from(impersonate).to(to).with_value(val); - let tx = WithOtherFields::new(tx); + let tx = tx_builder().with_from(impersonate).with_to(to).with_value(val); + let tx = WithOtherFields::new(tx.into()); let res = provider.send_transaction(tx.clone()).await; res.unwrap_err(); @@ -244,8 +246,8 @@ async fn can_impersonate_multiple_accounts() { api.anvil_set_balance(impersonate0, funding).await.unwrap(); api.anvil_set_balance(impersonate1, funding).await.unwrap(); - let tx = TransactionRequest::default().with_from(impersonate0).to(to).with_value(val); - let tx = WithOtherFields::new(tx); + let tx = tx_builder().with_from(impersonate0).with_to(to).with_value(val); + let tx = WithOtherFields::new(tx.into()); api.anvil_impersonate_account(impersonate0).await.unwrap(); api.anvil_impersonate_account(impersonate1).await.unwrap(); @@ -554,8 +556,8 @@ async fn test_get_transaction_receipt() { // send a EIP-1559 transaction let to = Address::random(); let val = U256::from(1337); - let tx = TransactionRequest::default().with_to(to).with_value(val); - let tx = WithOtherFields::new(tx); + let tx = tx_builder().with_to(to).with_value(val); + let tx = WithOtherFields::new(tx.into()); let receipt = provider.send_transaction(tx.clone()).await.unwrap().get_receipt().await.unwrap(); @@ -651,8 +653,8 @@ async fn can_remove_pool_transactions() { let sender = Address::random(); let to = Address::random(); let val = U256::from(1337); - let tx = TransactionRequest::default().with_from(sender).with_to(to).with_value(val); - let tx = WithOtherFields::new(tx); + let tx = tx_builder().with_from(sender).with_to(to).with_value(val); + let tx = WithOtherFields::new(tx.into()); provider.send_transaction(tx.with_from(from)).await.unwrap().register().await.unwrap(); @@ -679,14 +681,14 @@ async fn test_reorg() { .to(accounts[0].address()) .value(U256::from(i)) .from(accounts[1].address()); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); api.send_transaction(tx).await.unwrap(); let tx = TransactionRequest::default() .to(accounts[1].address()) .value(U256::from(i)) .from(accounts[2].address()); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); api.send_transaction(tx).await.unwrap(); } @@ -697,7 +699,7 @@ async fn test_reorg() { let to = accounts[i + 1].address(); for j in 0..5 { let tx = TransactionRequest::default().from(from).to(to).value(U256::from(j)); - txs.push((TransactionData::JSON(tx), i as u64)); + txs.push((TransactionData::JSON(tx.into()), i as u64)); } } @@ -725,7 +727,7 @@ async fn test_reorg() { .to(accounts[0].address()) .value(U256::from(i)) .from(accounts[1].address()); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); api.send_transaction(tx).await.unwrap(); } @@ -788,7 +790,7 @@ async fn test_reorg() { let res = api .anvil_reorg(ReorgOptions { depth: 1, - tx_block_pairs: vec![(TransactionData::JSON(TransactionRequest::default()), 10)], + tx_block_pairs: vec![(TransactionData::JSON(TransactionRequest::default().into()), 10)], }) .await; assert!(res.is_err()); diff --git a/crates/anvil/tests/it/api.rs b/crates/anvil/tests/it/api.rs index 53eaef7ec..93a324278 100644 --- a/crates/anvil/tests/it/api.rs +++ b/crates/anvil/tests/it/api.rs @@ -4,22 +4,23 @@ use crate::{ abi::{Multicall, SimpleStorage}, utils::{connect_pubsub_with_wallet, http_provider_with_signer}, }; -use alloy_network::{EthereumWallet, TransactionBuilder}; +use alloy_network::TransactionBuilder; use alloy_primitives::{ map::{AddressHashMap, B256HashMap, HashMap}, Address, ChainId, B256, U256, }; -use alloy_provider::{Provider, SeismicSignedProvider, SendableTx}; -use alloy_rpc_types::{ - request::TransactionRequest, state::AccountOverride, BlockId, BlockNumberOrTag, - BlockTransactions, -}; +use alloy_provider::{Provider, SendableTx}; +use alloy_rpc_types::{state::AccountOverride, BlockId, BlockNumberOrTag, BlockTransactions}; use alloy_serde::WithOtherFields; use anvil::{eth::api::CLIENT_VERSION, spawn, NodeConfig, CHAIN_ID}; use futures::join; use std::time::Duration; use url::Url; +use seismic_prelude::foundry::{ + sfoundry_signed_provider, tx_builder, EthereumWallet, SeismicProviderExt, +}; + #[tokio::test(flavor = "multi_thread")] async fn can_get_block_number() { let (api, handle) = spawn(NodeConfig::test()).await; @@ -114,8 +115,8 @@ async fn can_get_block_by_number() { let val = handle.genesis_balance().checked_div(U256::from(2)).unwrap(); // send a dummy transaction - let tx = TransactionRequest::default().with_from(from).with_to(to).with_value(val); - let tx = WithOtherFields::new(tx); + let tx = tx_builder().with_from(from).with_to(to).with_value(val); + let tx = WithOtherFields::new(tx.into()); provider.send_transaction(tx.clone()).await.unwrap().get_receipt().await.unwrap(); @@ -145,9 +146,10 @@ async fn can_get_pending_block() { api.anvil_set_auto_mine(false).await.unwrap(); - let tx = TransactionRequest::default().with_from(from).with_to(to).with_value(U256::from(100)); + let tx = tx_builder().with_from(from).with_to(to).with_value(U256::from(100)).into(); - let pending = provider.send_transaction(tx.clone()).await.unwrap().register().await.unwrap(); + let pending = + provider.send_transaction(tx.clone().into()).await.unwrap().register().await.unwrap(); let num = provider.get_block_number().await.unwrap(); assert_eq!(num, 0); @@ -244,7 +246,7 @@ async fn can_call_on_pending_block() { let block_number = BlockNumberOrTag::Number(anvil_block_number as u64); let block = api.block_by_number(block_number).await.unwrap().unwrap(); - let ret_timestamp = contract + let ret_timestamp: alloy_primitives::Uint<256, 4> = contract .getCurrentBlockTimestamp() .block(BlockId::number(anvil_block_number as u64)) .call() @@ -279,7 +281,7 @@ async fn can_call_with_undersized_max_fee_per_gas() { let node_url = Url::parse(&handle.http_endpoint()).unwrap(); let provider = http_provider_with_signer(&handle.http_endpoint(), signer.clone()); - let seismic_provider = SeismicSignedProvider::new(signer.clone(), node_url); + let seismic_provider = sfoundry_signed_provider(signer.clone(), node_url); api.anvil_set_auto_mine(true).await.unwrap(); @@ -295,16 +297,14 @@ async fn can_call_with_undersized_max_fee_per_gas() { assert!(undersized_max_fee_per_gas < latest_block_base_fee_per_gas); let last_sender_tx = simple_storage_contract.lastSender().into_transaction_request(); + let last_sender = last_sender_tx.from().unwrap(); let raw_input = last_sender_tx.input().unwrap(); - let output = seismic_provider - .seismic_call(SendableTx::Builder( - TransactionRequest::default() - .with_from(wallet.address()) - .with_to(*simple_storage_contract.address()) - .with_input(raw_input.clone()), - )) - .await - .unwrap(); + let builder = tx_builder() + .with_from(wallet.address()) + .with_to(*simple_storage_contract.address()) + .with_input(raw_input.clone()) + .into(); + seismic_provider.seismic_call(SendableTx::Builder(builder.into())).await.unwrap(); assert_eq!(last_sender, Address::ZERO); } diff --git a/crates/anvil/tests/it/eip4844.rs b/crates/anvil/tests/it/eip4844.rs index 633c8a01b..fff91545b 100644 --- a/crates/anvil/tests/it/eip4844.rs +++ b/crates/anvil/tests/it/eip4844.rs @@ -4,13 +4,15 @@ use alloy_eips::{ eip4844::{BLOB_TX_MIN_BLOB_GASPRICE, DATA_GAS_PER_BLOB, MAX_DATA_GAS_PER_BLOCK_DENCUN}, Typed2718, }; -use alloy_network::{EthereumWallet, ReceiptResponse, TransactionBuilder, TransactionBuilder4844}; +use alloy_network::{ReceiptResponse, TransactionBuilder, TransactionBuilder4844}; use alloy_primitives::{b256, Address, U256}; use alloy_provider::Provider; use alloy_rpc_types::{BlockId, TransactionRequest}; use alloy_serde::WithOtherFields; use anvil::{spawn, EthereumHardfork, NodeConfig}; +use seismic_prelude::foundry::{tx_builder, EthereumWallet}; + #[tokio::test(flavor = "multi_thread")] async fn can_send_eip4844_transaction() { let node_config = NodeConfig::test().with_hardfork(Some(EthereumHardfork::Cancun.into())); @@ -27,7 +29,7 @@ async fn can_send_eip4844_transaction() { let sidecar: SidecarBuilder = SidecarBuilder::from_slice(b"Hello World"); let sidecar = sidecar.build().unwrap(); - let tx = TransactionRequest::default() + let tx = tx_builder() .with_from(from) .with_to(to) .with_nonce(0) @@ -35,11 +37,11 @@ async fn can_send_eip4844_transaction() { .with_max_fee_per_gas(eip1559_est.max_fee_per_gas) .with_max_priority_fee_per_gas(eip1559_est.max_priority_fee_per_gas) .with_blob_sidecar(sidecar) - .value(U256::from(5)); + .with_value(U256::from(5)); - let mut tx = WithOtherFields::new(tx); + let mut tx = WithOtherFields::new(tx.into()); - tx.populate_blob_hashes(); + tx.inner.inner.populate_blob_hashes(); let receipt = provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); @@ -67,7 +69,7 @@ async fn can_send_multiple_blobs_in_one_tx() { let sidecar = sidecar.build().unwrap(); - let tx = TransactionRequest::default() + let tx = tx_builder() .with_from(from) .with_to(to) .with_nonce(0) @@ -75,9 +77,9 @@ async fn can_send_multiple_blobs_in_one_tx() { .with_max_fee_per_gas(eip1559_est.max_fee_per_gas) .with_max_priority_fee_per_gas(eip1559_est.max_priority_fee_per_gas) .with_blob_sidecar(sidecar); - let mut tx = WithOtherFields::new(tx); + let mut tx = WithOtherFields::new(tx.into()); - tx.populate_blob_hashes(); + tx.inner.inner.populate_blob_hashes(); let receipt = provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); @@ -105,7 +107,7 @@ async fn cannot_exceed_six_blobs() { let sidecar = sidecar.build().unwrap(); - let tx = TransactionRequest::default() + let tx = tx_builder() .with_from(from) .with_to(to) .with_nonce(0) @@ -113,9 +115,9 @@ async fn cannot_exceed_six_blobs() { .with_max_fee_per_gas(eip1559_est.max_fee_per_gas) .with_max_priority_fee_per_gas(eip1559_est.max_priority_fee_per_gas) .with_blob_sidecar(sidecar); - let mut tx = WithOtherFields::new(tx); + let mut tx = WithOtherFields::new(tx.into()); - tx.populate_blob_hashes(); + tx.inner.inner.populate_blob_hashes(); let err = provider.send_transaction(tx).await.unwrap_err(); @@ -145,7 +147,7 @@ async fn can_mine_blobs_when_exceeds_max_blobs() { let sidecar = sidecar.build().unwrap(); - let tx = TransactionRequest::default() + let tx = tx_builder() .with_from(from) .with_to(to) .with_nonce(0) @@ -153,9 +155,9 @@ async fn can_mine_blobs_when_exceeds_max_blobs() { .with_max_fee_per_gas(eip1559_est.max_fee_per_gas) .with_max_priority_fee_per_gas(eip1559_est.max_priority_fee_per_gas) .with_blob_sidecar(sidecar); - let mut tx = WithOtherFields::new(tx); + let mut tx = WithOtherFields::new(tx.into()); - tx.populate_blob_hashes(); + tx.inner.inner.populate_blob_hashes(); let first_tx = provider.send_transaction(tx.clone()).await.unwrap(); @@ -168,7 +170,7 @@ async fn can_mine_blobs_when_exceeds_max_blobs() { let sidecar = sidecar.build().unwrap(); tx.set_blob_sidecar(sidecar); tx.set_nonce(1); - tx.populate_blob_hashes(); + tx.inner.inner.populate_blob_hashes(); let second_tx = provider.send_transaction(tx).await.unwrap(); api.mine_one().await; @@ -224,7 +226,7 @@ async fn can_correctly_estimate_blob_gas_with_recommended_fillers() { let sidecar = sidecar.build().unwrap(); let tx = TransactionRequest::default().with_to(bob).with_blob_sidecar(sidecar); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); // Send the transaction and wait for the broadcast. let pending_tx = provider.send_transaction(tx).await.unwrap(); @@ -270,7 +272,7 @@ async fn can_correctly_estimate_blob_gas_with_recommended_fillers_with_signer() let sidecar = sidecar.build().unwrap(); let tx = TransactionRequest::default().with_to(bob).with_blob_sidecar(sidecar); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); // Send the transaction and wait for the broadcast. let pending_tx = provider.send_transaction(tx).await.unwrap(); @@ -332,7 +334,7 @@ async fn can_bypass_sidecar_requirement() { }; let receipt = provider - .send_transaction(WithOtherFields::new(tx)) + .send_transaction(WithOtherFields::new(tx.into())) .await .unwrap() .get_receipt() @@ -343,5 +345,5 @@ async fn can_bypass_sidecar_requirement() { let tx = provider.get_transaction_by_hash(receipt.transaction_hash).await.unwrap().unwrap(); - assert_eq!(tx.inner.ty(), 3); + assert_eq!(tx.inner().inner.ty(), 3); } diff --git a/crates/anvil/tests/it/eip7702.rs b/crates/anvil/tests/it/eip7702.rs index c09412c85..dc024ce8a 100644 --- a/crates/anvil/tests/it/eip7702.rs +++ b/crates/anvil/tests/it/eip7702.rs @@ -33,7 +33,7 @@ async fn can_send_eip7702_tx() { .with_input(logger_bytecode); let receipt = provider - .send_transaction(WithOtherFields::new(tx)) + .send_transaction(WithOtherFields::new(tx.into())) .await .unwrap() .get_receipt() @@ -102,7 +102,7 @@ async fn can_send_eip7702_request() { .with_input(logger_bytecode); let receipt = provider - .send_transaction(WithOtherFields::new(tx)) + .send_transaction(WithOtherFields::new(tx.into())) .await .unwrap() .get_receipt() @@ -136,7 +136,7 @@ async fn can_send_eip7702_request() { let request = TransactionRequest::from_transaction(tx).with_from(sender); api.anvil_impersonate_account(sender).await.unwrap(); - let txhash = api.send_transaction(WithOtherFields::new(request)).await.unwrap(); + let txhash = api.send_transaction(WithOtherFields::new(request.into())).await.unwrap(); let txhash = provider .watch_pending_transaction(PendingTransactionConfig::new(txhash)) diff --git a/crates/anvil/tests/it/fork.rs b/crates/anvil/tests/it/fork.rs index 54bae673a..137f7c998 100644 --- a/crates/anvil/tests/it/fork.rs +++ b/crates/anvil/tests/it/fork.rs @@ -5,7 +5,7 @@ use crate::{ utils::{http_provider, http_provider_with_signer}, }; use alloy_chains::NamedChain; -use alloy_network::{EthereumWallet, ReceiptResponse, TransactionBuilder, TransactionResponse}; +use alloy_network::{ReceiptResponse, TransactionBuilder, TransactionResponse}; use alloy_primitives::{address, b256, bytes, uint, Address, Bytes, TxHash, TxKind, U256, U64}; use alloy_provider::Provider; use alloy_rpc_types::{ @@ -23,6 +23,8 @@ use foundry_test_utils::rpc::{self, next_http_rpc_endpoint, next_rpc_endpoint}; use futures::StreamExt; use std::{sync::Arc, thread::sleep, time::Duration}; +use seismic_prelude::foundry::{tx_builder, EthereumWallet}; + const BLOCK_NUMBER: u64 = 14_608_400u64; const DEAD_BALANCE_AT_BLOCK_NUMBER: u128 = 12_556_069_338_441_120_059_867u128; @@ -80,14 +82,14 @@ async fn test_fork_gas_limit_disabled_from_config() { .to(Address::random()) .value(U256::from(1337u64)) .from(handle.dev_wallets().next().unwrap().address()); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let _ = provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); let tx = TransactionRequest::default() .to(Address::random()) .value(U256::from(1337u64)) .from(handle.dev_wallets().next().unwrap().address()); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let _ = provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); } @@ -244,7 +246,7 @@ async fn test_fork_reset() { let initial_nonce = provider.get_transaction_count(from).await.unwrap(); let tx = TransactionRequest::default().to(to).value(amount).from(from); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let tx = provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); assert_eq!(tx.transaction_index, Some(0)); @@ -318,7 +320,7 @@ async fn test_fork_state_snapshotting() { let provider = handle.http_provider(); let tx = TransactionRequest::default().to(to).value(amount).from(from); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let _ = provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); @@ -357,7 +359,7 @@ async fn test_fork_state_snapshotting_repeated() { let amount = handle.genesis_balance().checked_div(U256::from(92u64)).unwrap(); let tx = TransactionRequest::default().to(to).value(amount).from(from); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let tx_provider = handle.http_provider(); let _ = tx_provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); @@ -404,8 +406,8 @@ async fn test_fork_state_snapshotting_blocks() { let amount = handle.genesis_balance().checked_div(U256::from(2u64)).unwrap(); // send the transaction - let tx = TransactionRequest::default().to(to).value(amount).from(from); - let tx = WithOtherFields::new(tx); + let tx = tx_builder().with_to(to).with_value(amount).with_from(from); + let tx = WithOtherFields::new(tx.into()); let _ = provider.send_transaction(tx.clone()).await.unwrap().get_receipt().await.unwrap(); let block_number_after = provider.get_block_number().await.unwrap(); @@ -507,7 +509,7 @@ async fn can_reset_properly() { let to = Address::random(); let to_balance = fork_provider.get_balance(to).await.unwrap(); let tx = TransactionRequest::default().from(account).to(to).value(U256::from(1337u64)); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let tx = fork_tx_provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); // nonce incremented by 1 @@ -537,7 +539,7 @@ async fn can_reset_fork_to_new_fork() { let tx = TransactionRequest::default().with_to(op).with_input("0x54fd4d50"); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let mainnet_call_output = provider.call(tx).await.unwrap(); @@ -572,9 +574,9 @@ async fn test_fork_timestamp() { let tx = TransactionRequest::default().to(Address::random()).value(U256::from(1337u64)).from(from); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let tx = provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); - let status = tx.inner.inner.inner.receipt.status.coerce_status(); + let status = tx.inner.inner.status(); assert!(status); let block = provider.get_block(BlockId::latest()).await.unwrap().unwrap(); @@ -595,7 +597,7 @@ async fn test_fork_timestamp() { let tx = TransactionRequest::default().to(Address::random()).value(U256::from(1337u64)).from(from); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let _ = provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); // FIXME: Awaits endlessly here. let block = provider.get_block(BlockId::latest()).await.unwrap().unwrap(); @@ -611,7 +613,7 @@ async fn test_fork_timestamp() { api.evm_set_next_block_timestamp(BLOCK_TIMESTAMP + 1).unwrap(); let tx = TransactionRequest::default().to(Address::random()).value(U256::from(1337u64)).from(from); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let _tx = provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); let block = provider.get_block(BlockId::latest()).await.unwrap().unwrap(); @@ -619,7 +621,7 @@ async fn test_fork_timestamp() { let tx = TransactionRequest::default().to(Address::random()).value(U256::from(1337u64)).from(from); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let _ = provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); let block = provider.get_block(BlockId::latest()).await.unwrap().unwrap(); @@ -657,7 +659,7 @@ async fn test_fork_can_send_tx() { let addr = Address::random(); let val = U256::from(1337u64); let tx = TransactionRequest::default().to(addr).value(val).from(signer); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); // broadcast it via the eth_sendTransaction API let _ = provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); @@ -698,10 +700,10 @@ async fn test_fork_nft_set_approve_all() { .from(owner) .to(nouns_addr) .with_input(approval.calldata().to_owned()); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); api.anvil_impersonate_account(owner).await.unwrap(); let tx = provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); - let status = tx.inner.inner.inner.receipt.status.coerce_status(); + let status = tx.inner.inner.status(); assert!(status); // transfer: impersonate real owner and transfer nft @@ -714,9 +716,9 @@ async fn test_fork_nft_set_approve_all() { .from(real_owner) .to(nouns_addr) .with_input(call.calldata().to_owned()); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let tx = provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); - let status = tx.inner.inner.inner.receipt.status.coerce_status(); + let status = tx.inner.inner.status(); assert!(status); let real_owner = nouns.ownerOf(token_id).call().await.unwrap(); @@ -774,10 +776,10 @@ async fn test_fork_can_send_opensea_tx() { .with_input(input) .with_gas_price(22180711707u128) .with_gas_limit(150_000); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let tx = provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); - let status = tx.inner.inner.inner.receipt.status.coerce_status(); + let status = tx.inner.inner.status(); assert!(status); } @@ -795,7 +797,7 @@ async fn test_fork_base_fee() { let addr = Address::random(); let val = U256::from(1337u64); let tx = TransactionRequest::default().from(from).to(addr).value(val); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let _res = provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); } @@ -858,18 +860,21 @@ async fn test_fork_call() { let provider = http_provider(rpc::next_http_archive_rpc_url().as_str()); let tx = TransactionRequest::default().to(to).with_input(input.clone()); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let res0 = provider.call(tx).block(BlockId::Number(block_number.into())).await.unwrap(); let (api, _) = spawn(fork_config().with_fork_block_number(Some(block_number))).await; let res1 = api .call( - WithOtherFields::new(TransactionRequest { - to: Some(TxKind::from(to)), - input: input.into(), - ..Default::default() - }), + WithOtherFields::new( + TransactionRequest { + to: Some(TxKind::from(to)), + input: input.into(), + ..Default::default() + } + .into(), + ), None, EvmOverrides::default(), ) @@ -959,7 +964,7 @@ async fn test_fork_block_transaction_count() { let tx = TransactionRequest::default().from(sender).value(U256::from(42u64)).with_gas_limit(100_000); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let _ = provider.send_transaction(tx).await.unwrap(); let pending_txs = @@ -1010,8 +1015,8 @@ async fn can_impersonate_in_fork() { // fund the impersonated account api.anvil_set_balance(token_holder, U256::from(1e18)).await.unwrap(); - let tx = TransactionRequest::default().from(token_holder).to(to).value(val); - let tx = WithOtherFields::new(tx); + let tx = tx_builder().with_from(token_holder).with_to(to).with_value(val); + let tx = WithOtherFields::new(tx.into()); let res = provider.send_transaction(tx.clone()).await; res.unwrap_err(); @@ -1019,7 +1024,7 @@ async fn can_impersonate_in_fork() { let res = provider.send_transaction(tx.clone()).await.unwrap().get_receipt().await.unwrap(); assert_eq!(res.from, token_holder); - let status = res.inner.inner.inner.receipt.status.coerce_status(); + let status = res.inner.inner.status(); assert!(status); let balance = provider.get_balance(to).await.unwrap(); @@ -1144,10 +1149,10 @@ async fn test_fork_reset_moonbeam() { let tx = TransactionRequest::default().to(Address::random()).value(U256::from(1337u64)).from(from); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); api.anvil_impersonate_account(from).await.unwrap(); let tx = provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); - let status = tx.inner.inner.inner.receipt.status.coerce_status(); + let status = tx.inner.inner.status(); assert!(status); // reset to check timestamp works after resetting @@ -1160,9 +1165,9 @@ async fn test_fork_reset_moonbeam() { let tx = TransactionRequest::default().to(Address::random()).value(U256::from(1337u64)).from(from); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let tx = provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); - let status = tx.inner.inner.inner.receipt.status.coerce_status(); + let status = tx.inner.inner.status(); assert!(status); } @@ -1308,11 +1313,14 @@ async fn test_fork_execution_reverted() { let resp = api .call( - WithOtherFields::new(TransactionRequest { - to: Some(TxKind::from(address!("0xFd6CC4F251eaE6d02f9F7B41D1e80464D3d2F377"))), - input: TransactionInput::new(bytes!("8f283b3c")), - ..Default::default() - }), + WithOtherFields::new( + TransactionRequest { + to: Some(TxKind::from(address!("0xFd6CC4F251eaE6d02f9F7B41D1e80464D3d2F377"))), + input: TransactionInput::new(bytes!("8f283b3c")), + ..Default::default() + } + .into(), + ), Some(target.into()), EvmOverrides::default(), ) @@ -1381,7 +1389,7 @@ async fn test_immutable_fork_transaction_hash() { (expected_transactions[2], address!("0x4f07d669d76ed9a17799fc4c04c4005196240940")), ] { let tx = api.backend.mined_transaction_by_hash(expected.0).unwrap(); - assert_eq!(tx.inner.inner.signer(), expected.1); + assert_eq!(tx.inner().inner.signer(), expected.1); } // Validate the order of transactions in the new block @@ -1454,7 +1462,8 @@ async fn test_reset_dev_account_nonce() { .from(address) .to(address) .nonce(nonce_after) - .gas_limit(21000), + .gas_limit(21000) + .into(), )) .await .unwrap() @@ -1546,7 +1555,7 @@ async fn test_fork_get_account() { let tx = TransactionRequest::default().from(alice).to(bob).value(U256::from(142)); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let receipt = provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); assert!(receipt.status()); diff --git a/crates/anvil/tests/it/gas.rs b/crates/anvil/tests/it/gas.rs index f3bcd01dd..b99d92fff 100644 --- a/crates/anvil/tests/it/gas.rs +++ b/crates/anvil/tests/it/gas.rs @@ -1,13 +1,15 @@ //! Gas related tests use crate::utils::http_provider_with_signer; -use alloy_network::{EthereumWallet, TransactionBuilder}; +use alloy_network::TransactionBuilder; use alloy_primitives::{uint, Address, U256, U64}; use alloy_provider::Provider; -use alloy_rpc_types::{BlockId, TransactionRequest}; +use alloy_rpc_types::BlockId; use alloy_serde::WithOtherFields; use anvil::{eth::fees::INITIAL_BASE_FEE, spawn, NodeConfig}; +use seismic_prelude::foundry::{tx_builder, EthereumWallet}; + const GAS_TRANSFER: u64 = 21_000; #[tokio::test(flavor = "multi_thread")] @@ -37,8 +39,8 @@ async fn test_basefee_full_block() { let provider = http_provider_with_signer(&handle.http_endpoint(), signer); - let tx = TransactionRequest::default().to(Address::random()).with_value(U256::from(1337)); - let tx = WithOtherFields::new(tx); + let tx = tx_builder().with_to(Address::random()).with_value(U256::from(1337)); + let tx = WithOtherFields::new(tx.into()); provider.send_transaction(tx.clone()).await.unwrap().get_receipt().await.unwrap(); @@ -82,13 +84,13 @@ async fn test_basefee_half_block() { let provider = http_provider_with_signer(&handle.http_endpoint(), signer); - let tx = TransactionRequest::default().to(Address::random()).with_value(U256::from(1337)); - let tx = WithOtherFields::new(tx); + let tx = tx_builder().with_to(Address::random()).with_value(U256::from(1337)); + let tx = WithOtherFields::new(tx.into()); provider.send_transaction(tx.clone()).await.unwrap().get_receipt().await.unwrap(); - let tx = TransactionRequest::default().to(Address::random()).with_value(U256::from(1337)); - let tx = WithOtherFields::new(tx); + let tx = tx_builder().with_to(Address::random()).with_value(U256::from(1337)); + let tx = WithOtherFields::new(tx.into()); provider.send_transaction(tx.clone()).await.unwrap().get_receipt().await.unwrap(); @@ -114,8 +116,8 @@ async fn test_basefee_empty_block() { let provider = http_provider_with_signer(&handle.http_endpoint(), signer); - let tx = TransactionRequest::default().with_to(Address::random()).with_value(U256::from(1337)); - let tx = WithOtherFields::new(tx); + let tx = tx_builder().with_to(Address::random()).with_value(U256::from(1337)); + let tx = WithOtherFields::new(tx.into()); provider.send_transaction(tx.clone()).await.unwrap().get_receipt().await.unwrap(); @@ -151,8 +153,8 @@ async fn test_respect_base_fee() { let provider = handle.http_provider(); - let tx = TransactionRequest::default().with_to(Address::random()).with_value(U256::from(100)); - let mut tx = WithOtherFields::new(tx); + let tx = tx_builder().with_to(Address::random()).with_value(U256::from(100)); + let mut tx = WithOtherFields::new(tx.into()); let mut underpriced = tx.clone(); underpriced.set_gas_price(base_fee - 1); @@ -172,12 +174,12 @@ async fn test_tip_above_fee_cap() { let provider = handle.http_provider(); - let tx = TransactionRequest::default() - .max_fee_per_gas(base_fee) - .max_priority_fee_per_gas(base_fee + 1) + let tx = tx_builder() + .with_max_fee_per_gas(base_fee) + .with_max_priority_fee_per_gas(base_fee + 1) .with_to(Address::random()) .with_value(U256::from(100)); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let res = provider.send_transaction(tx.clone()).await; assert!(res.is_err()); @@ -197,11 +199,11 @@ async fn test_can_use_fee_history() { let fee_history = provider.get_fee_history(1, Default::default(), &[]).await.unwrap(); let next_base_fee = *fee_history.base_fee_per_gas.last().unwrap(); - let tx = TransactionRequest::default() + let tx = tx_builder() .with_to(Address::random()) .with_value(U256::from(100)) .with_gas_price(next_base_fee); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let receipt = provider.send_transaction(tx.clone()).await.unwrap().get_receipt().await.unwrap(); diff --git a/crates/anvil/tests/it/logs.rs b/crates/anvil/tests/it/logs.rs index 5dbb28c2d..e1a865a2e 100644 --- a/crates/anvil/tests/it/logs.rs +++ b/crates/anvil/tests/it/logs.rs @@ -4,13 +4,14 @@ use crate::{ abi::SimpleStorage::{self}, utils::{http_provider_with_signer, ws_provider_with_signer}, }; -use alloy_network::EthereumWallet; use alloy_primitives::{map::B256HashSet, B256}; use alloy_provider::Provider; use alloy_rpc_types::{BlockNumberOrTag, Filter}; use anvil::{spawn, NodeConfig}; use futures::StreamExt; +use seismic_prelude::foundry::EthereumWallet; + #[tokio::test(flavor = "multi_thread")] async fn get_past_events() { let (_api, handle) = spawn(NodeConfig::test()).await; @@ -130,7 +131,7 @@ async fn get_all_events() { .collect::, _>>() .unwrap() .into_iter() - .flat_map(|receipt| receipt.unwrap().inner.inner.inner.receipt.logs) + .flat_map(|receipt| receipt.unwrap().inner.inner.logs().iter().cloned().collect::>()) .collect::>(); assert_eq!(receipt_logs.len(), logs.len()); diff --git a/crates/anvil/tests/it/main.rs b/crates/anvil/tests/it/main.rs index c2b7974ab..d3920cc91 100644 --- a/crates/anvil/tests/it/main.rs +++ b/crates/anvil/tests/it/main.rs @@ -14,7 +14,6 @@ mod otterscan; mod proof; mod pubsub; mod revert; -#[cfg(feature = "seismic")] mod seismic; mod sign; mod simulate; diff --git a/crates/anvil/tests/it/optimism.rs b/crates/anvil/tests/it/optimism.rs index e8bfe4d65..a53d0047e 100644 --- a/crates/anvil/tests/it/optimism.rs +++ b/crates/anvil/tests/it/optimism.rs @@ -2,7 +2,7 @@ use crate::utils::{http_provider, http_provider_with_signer}; use alloy_eips::eip2718::Encodable2718; -use alloy_network::{EthereumWallet, TransactionBuilder}; +use alloy_network::{TransactionBuilder}; use alloy_primitives::{b256, Address, TxHash, TxKind, U256}; use alloy_provider::Provider; use alloy_rpc_types::TransactionRequest; @@ -11,6 +11,8 @@ use anvil::{spawn, NodeConfig}; use op_alloy_consensus::TxDeposit; use op_alloy_rpc_types::OpTransactionFields; +use seismic_prelude::foundry::EthereumWallet; + #[tokio::test(flavor = "multi_thread")] async fn test_deposits_not_supported_if_optimism_disabled() { let (_api, handle) = spawn(NodeConfig::test()).await; diff --git a/crates/anvil/tests/it/otterscan.rs b/crates/anvil/tests/it/otterscan.rs index 3809e3183..58723e511 100644 --- a/crates/anvil/tests/it/otterscan.rs +++ b/crates/anvil/tests/it/otterscan.rs @@ -65,7 +65,7 @@ async fn ots_get_internal_operations_contract_transfer() { let amount = handle.genesis_balance().checked_div(U256::from(2u64)).unwrap(); let tx = TransactionRequest::default().to(to).value(amount).from(from); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let receipt = provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); @@ -309,7 +309,7 @@ async fn ots_get_transaction_error_no_error() { // Send a successful transaction let tx = TransactionRequest::default().to(Address::random()).value(U256::from(100)); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let receipt = provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); let res = api.ots_get_transaction_error(receipt.transaction_hash).await.unwrap(); @@ -322,7 +322,7 @@ async fn ots_get_block_details() { let provider = handle.http_provider(); let tx = TransactionRequest::default().to(Address::random()).value(U256::from(100)); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); let result = api.ots_get_block_details(1.into()).await.unwrap(); @@ -336,7 +336,7 @@ async fn ots_get_block_details_by_hash() { let provider = handle.http_provider(); let tx = TransactionRequest::default().to(Address::random()).value(U256::from(100)); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let receipt = provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); let block_hash = receipt.block_hash.unwrap(); @@ -357,7 +357,7 @@ async fn ots_get_block_transactions() { for i in 0..10 { let tx = TransactionRequest::default().to(Address::random()).value(U256::from(100)).nonce(i); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let pending_receipt = provider.send_transaction(tx).await.unwrap().register().await.unwrap(); hashes.push_back(*pending_receipt.tx_hash()); @@ -395,7 +395,7 @@ async fn ots_search_transactions_before() { for i in 0..7 { let tx = TransactionRequest::default().to(Address::random()).value(U256::from(100)).nonce(i); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let receipt = provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); hashes.push(receipt.transaction_hash); } @@ -430,7 +430,7 @@ async fn ots_search_transactions_after() { for i in 0..7 { let tx = TransactionRequest::default().to(Address::random()).value(U256::from(100)).nonce(i); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let receipt = provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); hashes.push_front(receipt.transaction_hash); } @@ -465,14 +465,16 @@ async fn ots_get_transaction_by_sender_and_nonce() { .from(sender) .to(Address::random()) .value(U256::from(100)) - .nonce(0), + .nonce(0) + .into(), ); let tx2 = WithOtherFields::new( TransactionRequest::default() .from(sender) .to(Address::random()) .value(U256::from(100)) - .nonce(1), + .nonce(1) + .into(), ); let receipt1 = provider.send_transaction(tx1).await.unwrap().get_receipt().await.unwrap(); diff --git a/crates/anvil/tests/it/pubsub.rs b/crates/anvil/tests/it/pubsub.rs index 04515d83a..b76cdef2d 100644 --- a/crates/anvil/tests/it/pubsub.rs +++ b/crates/anvil/tests/it/pubsub.rs @@ -1,7 +1,7 @@ //! tests for subscriptions use crate::utils::{connect_pubsub, connect_pubsub_with_wallet}; -use alloy_network::{EthereumWallet, TransactionBuilder}; +use alloy_network::TransactionBuilder; use alloy_primitives::{Address, U256}; use alloy_provider::Provider; use alloy_pubsub::Subscription; @@ -11,6 +11,8 @@ use alloy_sol_types::sol; use anvil::{spawn, NodeConfig}; use futures::StreamExt; +use seismic_prelude::foundry::EthereumWallet; + #[tokio::test(flavor = "multi_thread")] async fn test_sub_new_heads() { let (api, handle) = spawn(NodeConfig::test()).await; @@ -140,10 +142,12 @@ async fn test_sub_logs_impersonated() { let data = contract.setValue("Next Message".to_string()); let data = data.calldata().clone(); - let tx = - TransactionRequest::default().from(impersonate).to(*contract.address()).with_input(data); + let tx = TransactionRequest::default() + .with_from(impersonate) + .with_to(*contract.address()) + .with_input(data); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let provider = handle.http_provider(); let receipt = provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); diff --git a/crates/anvil/tests/it/revert.rs b/crates/anvil/tests/it/revert.rs index d54f67894..7b7208678 100644 --- a/crates/anvil/tests/it/revert.rs +++ b/crates/anvil/tests/it/revert.rs @@ -1,13 +1,14 @@ use crate::abi::VendingMachine; use alloy_network::TransactionBuilder; use alloy_primitives::{bytes, U256}; -use alloy_provider::{Provider, SeismicSignedProvider, SendableTx}; -use alloy_rpc_types::TransactionRequest; +use alloy_provider::{Provider, SendableTx}; use alloy_serde::WithOtherFields; use alloy_sol_types::sol; use anvil::{spawn, NodeConfig}; use url::Url; +use seismic_prelude::foundry::{sfoundry_signed_provider, tx_builder, SeismicProviderExt}; + #[tokio::test(flavor = "multi_thread")] async fn test_deploy_reverting() { let (_api, handle) = spawn(NodeConfig::test()).await; @@ -15,8 +16,8 @@ async fn test_deploy_reverting() { let sender = handle.dev_accounts().next().unwrap(); let code = bytes!("5f5ffd"); // PUSH0 PUSH0 REVERT - let tx = TransactionRequest::default().from(sender).with_deploy_code(code); - let tx = WithOtherFields::new(tx); + let tx = tx_builder().with_from(sender).with_deploy_code(code); + let tx = WithOtherFields::new(tx.into()); // Calling/estimating gas fails early. let err = provider.call(tx.clone()).await.unwrap_err(); @@ -70,20 +71,17 @@ async fn test_solc_revert_example() { let provider = handle.http_provider(); let node_url = Url::parse(&handle.http_endpoint()).unwrap(); - let seismic_provider = SeismicSignedProvider::new(wallet.clone().into(), node_url); + let seismic_provider = sfoundry_signed_provider(wallet.clone(), node_url); let contract = VendingMachine::deploy(&provider).await.unwrap(); let tx = contract.buy(U256::from(100)).into_transaction_request(); let input = tx.input().unwrap(); - let err = seismic_provider - .seismic_call(SendableTx::Builder( - TransactionRequest::default() - .with_from(sender) - .with_to(*contract.address()) - .with_input(input.clone()), - )) - .await - .unwrap_err(); + let builder = tx_builder() + .with_from(sender) + .with_to(*contract.address()) + .with_input(input.clone()) + .into(); + let err = seismic_provider.seismic_call(SendableTx::Builder(builder.into())).await.unwrap_err(); let s = err.to_string(); assert!(s.contains("Not enough Ether provided."), "{s:?}"); diff --git a/crates/anvil/tests/it/seismic.rs b/crates/anvil/tests/it/seismic.rs index 48e546bef..c3a8f45a2 100644 --- a/crates/anvil/tests/it/seismic.rs +++ b/crates/anvil/tests/it/seismic.rs @@ -1,21 +1,15 @@ -use alloy_consensus::{ - transaction::{TxSeismic, seismic_alloy_consensus::TxSeismicElements}, - TxEnvelope, -}; use alloy_dyn_abi::EventExt; -use alloy_eips::eip712::TypedDataRequest; use alloy_json_abi::{Event, EventParam}; -use alloy_network::{Ethereum, EthereumWallet, TransactionBuilder}; +use alloy_network::TransactionBuilder; use alloy_primitives::{ aliases::{B96, U96}, hex::{self, FromHex}, Bytes, IntoLogData, TxKind, B256, U256, }; -use alloy_provider::{ - layers::seismic::test_utils, Provider, SeismicSignedProvider, SeismicUnsignedProvider, - SendableTx, +use alloy_provider::{Provider, SendableTx}; +use alloy_rpc_types::{ + state::EvmOverrides, TransactionInput, TransactionRequest as AlloyTransactionRequest, }; -use alloy_rpc_types::{SeismicCallRequest, TransactionInput, TransactionRequest}; use alloy_serde::WithOtherFields; use alloy_signer_local::PrivateKeySigner; use alloy_sol_types::{sol, SolCall, SolValue}; @@ -24,6 +18,12 @@ use secp256k1::{PublicKey, SecretKey}; use seismic_enclave::aes_decrypt; use std::{fs, str::FromStr}; +use seismic_prelude::foundry::{ + test_utils, tx_builder, AnyNetwork, AnyTxEnvelope, EthereumWallet, SeismicCallRequest, + SeismicProviderExt, SeismicSignedProvider, SeismicUnsignedProvider, TransactionRequest, + TxSeismic, TxSeismicElements, TypedDataRequest, +}; + // common utils pub const TEST_PRECOMPILES_BYTECODE_PATH: &str = "/tests/it/seismic_precompiles_test_bytecode.txt"; pub const PRECOMPILES_TEST_SET_AES_KEY_SELECTOR: &str = "a0619040"; // setAESKey(suint256) @@ -69,11 +69,11 @@ pub fn get_encryption_nonce() -> U96 { U96::MAX } -pub fn get_seismic_elements() -> seismic_alloy_consensus::TxSeismicElements { +pub fn get_seismic_elements() -> TxSeismicElements { let encryption_sk = get_encryption_private_key(); let encryption_pk = PublicKey::from_secret_key_global(&encryption_sk); let encryption_nonce = get_encryption_nonce(); - seismic_alloy_consensus::TxSeismicElements { encryption_pubkey: encryption_pk, encryption_nonce, message_version: 0 } + TxSeismicElements { encryption_pubkey: encryption_pk, encryption_nonce, message_version: 0 } } pub fn get_encryption_private_key() -> SecretKey { @@ -94,23 +94,25 @@ pub async fn get_unsigned_seismic_tx_request( .unwrap(); TransactionRequest { - from: Some(signer.address()), - nonce: Some(nonce), - value: Some(U256::from(0)), - to: Some(to), - gas: Some(6000000), - gas_price: Some(20e9 as u128), - chain_id: Some(chain_id), - input: TransactionInput { input: Some(Bytes::from(encrypted_input)), data: None }, - transaction_type: Some(TxSeismic::TX_TYPE), + inner: AlloyTransactionRequest { + from: Some(signer.address()), + nonce: Some(nonce), + value: Some(U256::from(0)), + to: Some(to), + gas: Some(6000000), + gas_price: Some(20e9 as u128), + chain_id: Some(chain_id), + input: TransactionInput { input: Some(Bytes::from(encrypted_input)), data: None }, + transaction_type: Some(TxSeismic::TX_TYPE), + ..Default::default() + }, seismic_elements: Some(get_seismic_elements()), - ..Default::default() } } -pub async fn sign_tx(wallet: PrivateKeySigner, tx: TransactionRequest) -> TxEnvelope { +pub async fn sign_tx(wallet: PrivateKeySigner, tx: TransactionRequest) -> AnyTxEnvelope { let signer = EthereumWallet::from(wallet); - >::build(tx, &signer).await.unwrap() + >::build(tx, &signer).await.unwrap() } /// Create a seismic transaction with typed data @@ -128,7 +130,7 @@ pub async fn get_signed_seismic_tx_typed_data( let signed = sign_tx(signer.clone(), tx).await; match signed { - TxEnvelope::Seismic(tx) => tx.into(), + AnyTxEnvelope::Seismic(tx) => tx.into(), _ => panic!("Signed transaction is not a seismic transaction"), } } @@ -148,21 +150,22 @@ async fn test_seismic_transaction_rpc() { EthereumWallet::new(signer.clone()), reqwest::Url::parse(handle.http_endpoint().as_str()).unwrap(), ); - let unsigned_provider = - SeismicUnsignedProvider::new(reqwest::Url::parse(handle.http_endpoint().as_str()).unwrap()); + let unsigned_provider = SeismicUnsignedProvider::::new( + reqwest::Url::parse(handle.http_endpoint().as_str()).unwrap(), + ); let deployer = handle.dev_accounts().next().unwrap(); let network_pubkey = provider.get_tee_pubkey().await.unwrap(); let plaintext_bytecode = test_utils::ContractTestContext::get_deploy_input_plaintext(); + let req = tx_builder() + .with_from(deployer) + .with_kind(TxKind::Create) + .with_input(plaintext_bytecode.clone()) + .into(); // send a send_raw_transaction bytes let contract_address = provider - .send_transaction( - TransactionRequest::default() - .with_from(deployer) - .with_kind(TxKind::Create) - .with_input(plaintext_bytecode.clone()), - ) + .send_transaction(req.into()) .await .unwrap() .get_receipt() @@ -176,22 +179,25 @@ async fn test_seismic_transaction_rpc() { // send a call bytes let res = provider .seismic_call(SendableTx::Builder( - TransactionRequest::default() + tx_builder() .with_from(deployer) .with_kind(TxKind::Create) - .with_input(plaintext_bytecode.clone()), + .with_input(plaintext_bytecode.clone()) + .into() + .into(), )) .await .unwrap(); assert_eq!(res, test_utils::ContractTestContext::get_code()); - // send a usngiend call + // send a unsigned call let res = unsigned_provider .seismic_call(SendableTx::Builder( - TransactionRequest::default() - .with_from(deployer) + tx_builder() .with_kind(TxKind::Create) - .with_input(plaintext_bytecode.clone()), + .with_input(plaintext_bytecode.clone()) + .into() + .into(), )) .await .unwrap(); @@ -214,7 +220,7 @@ async fn test_seismic_transaction_rpc() { .unwrap(); api.mine_one().await; let receipt = provider.get_transaction_receipt(tx_hash).await.unwrap().unwrap(); - assert!(receipt.status()); + assert!(receipt.inner.inner.status()); let code = provider.get_code_at(receipt.contract_address.unwrap()).await.unwrap(); assert_eq!(code, test_utils::ContractTestContext::get_code()); @@ -233,7 +239,7 @@ async fn test_seismic_transaction_rpc() { .await, ), None, - None, + EvmOverrides::default(), ) .await .unwrap(); @@ -243,6 +249,8 @@ async fn test_seismic_transaction_rpc() { .unwrap(); assert_eq!(Bytes::from(decrypted), test_utils::ContractTestContext::get_code()); + let chain_id = provider.get_chain_id().await.unwrap(); + // estiamte gas let gas_estimate = api .estimate_gas( @@ -250,51 +258,43 @@ async fn test_seismic_transaction_rpc() { get_unsigned_seismic_tx_request( &signer, &network_pubkey, - 0, + 2, TxKind::Create, - provider.get_chain_id().await.unwrap(), + chain_id, plaintext_bytecode.clone(), ) .await, ), None, - None, + EvmOverrides::default(), ) .await .unwrap(); - println!("gas_estimate: {}", gas_estimate); assert!(gas_estimate > U256::ZERO); } // Actual contract being tested: -// https://github.com/SeismicSystems/early-builds/blob/main/encrypted_logs/src/end-to-end-mvp/EncryptedLogs.sol +// https://github.com/SeismicSystems/early-builds/blob/main/EIP7702_experiment/end-to-end-mvp/EncryptedLogs.sol #[tokio::test(flavor = "multi_thread")] async fn test_seismic_precompiles_end_to_end() { // Spin up node, get provider & deployer let (api, handle) = spawn(NodeConfig::test()).await; - api.anvil_set_auto_mine(false).await.unwrap(); + api.anvil_set_auto_mine(true).await.unwrap(); + let wallet = EthereumWallet::new(handle.dev_wallets().next().unwrap().clone()); let provider = SeismicSignedProvider::new( - EthereumWallet::new(handle.dev_wallets().next().unwrap().clone()), + wallet, reqwest::Url::parse(handle.http_endpoint().as_str()).unwrap(), ); let deployer = handle.dev_accounts().next().unwrap(); // 1. Deploy test contract let bytecode = Bytes::from(load_bytecode_from_file(TEST_PRECOMPILES_BYTECODE_PATH)); - let contract_addr = provider - .send_transaction( - TransactionRequest::default() - .with_from(deployer) - .with_kind(TxKind::Create) - .with_input(bytecode), - ) - .await - .unwrap() - .get_receipt() - .await - .unwrap() - .contract_address - .unwrap(); + let tx_req = + tx_builder().with_from(deployer).with_kind(TxKind::Create).with_input(bytecode).into(); + + let tx_result = provider.send_transaction(tx_req.into()).await.unwrap(); + + let contract_addr = tx_result.get_receipt().await.unwrap().contract_address.unwrap(); // Prepare addresses & keys let accounts: Vec<_> = handle.dev_wallets().collect(); @@ -308,10 +308,12 @@ async fn test_seismic_precompiles_end_to_end() { let unencrypted_aes_key = get_input_data(PRECOMPILES_TEST_SET_AES_KEY_SELECTOR, private_key); provider .send_transaction( - TransactionRequest::default() + tx_builder() .with_from(from) .with_to(contract_addr) - .with_input(unencrypted_aes_key), + .with_input(unencrypted_aes_key) + .into() + .into(), ) .await .unwrap() @@ -331,10 +333,12 @@ async fn test_seismic_precompiles_end_to_end() { let receipt = provider .send_transaction( - TransactionRequest::default() + tx_builder() .with_from(from) .with_to(contract_addr) - .with_input(unencrypted_input), + .with_input(unencrypted_input) + .into() + .into(), ) .await .unwrap() @@ -345,7 +349,7 @@ async fn test_seismic_precompiles_end_to_end() { // // 4. Tx #3: On-chain decrypt // - let logs = receipt.inner.logs(); + let logs = receipt.inner.inner.logs(); assert_eq!(logs.len(), 1); assert_eq!(logs[0].inner.address, contract_addr); @@ -354,12 +358,12 @@ async fn test_seismic_precompiles_end_to_end() { let event = Event { name: "EncryptedMessage".into(), inputs: vec![ - EventParam { ty: "int96".into(), indexed: true, ..Default::default() }, + EventParam { ty: "uint96".into(), indexed: true, ..Default::default() }, EventParam { ty: "bytes".into(), indexed: false, ..Default::default() }, ], anonymous: false, }; - let decoded = event.decode_log(&log_data.into_log_data(), false).unwrap(); + let decoded = event.decode_log(&log_data.into_log_data()).unwrap(); sol! { #[derive(Debug, PartialEq)] @@ -380,17 +384,38 @@ async fn test_seismic_precompiles_end_to_end() { let call = Encryption::decryptCall { nonce, ciphertext: ciphertext.clone() }; let unencrypted_decrypt_call = call.abi_encode(); + let mut tx_req = tx_builder() + .with_from(from) + .with_to(contract_addr) + .with_input(unencrypted_decrypt_call) + .into(); + tx_req.inner.transaction_type = Some(TxSeismic::TX_TYPE); + /* + // TODO: seismic call with Builder does not work + let mut tx_req = tx_builder() + .with_from(from) + .with_to(contract_addr) + .with_input(unencrypted_decrypt_call) + .into(); + tx_req.inner.transaction_type = Some(TxSeismic::TX_TYPE); + tx_req.seismic_elements = Some(TxSeismicElements::default()); + + let signed_tx = provider.sign_transaction(tx_req.into()).await.unwrap(); + let mut buf: &[u8] = signed_tx.iter().as_slice(); + let envelope = AnyTxEnvelope::decode_2718(&mut buf).unwrap(); + // Perform the read call with encryption let output = provider - .seismic_call(SendableTx::Builder( - TransactionRequest::default() - .with_from(from) - .with_to(contract_addr) - .with_input(unencrypted_decrypt_call), - )) + .seismic_call(SendableTx::Envelope(envelope)) .await .unwrap(); + */ + + // Perform the read call with encryption + // TODO: seismic call with Builder does not work + let output = provider.seismic_call(SendableTx::Builder(tx_req.into())).await.unwrap(); + // // 5. Locally decrypt to cross-check // @@ -404,7 +429,7 @@ async fn test_seismic_precompiles_end_to_end() { // 5b. Decrypt the "output" from the read call let result_bytes = - PlaintextType::abi_decode(&Bytes::from(output), false).expect("failed to decode the bytes"); + PlaintextType::abi_decode(&Bytes::from(output)).expect("failed to decode the bytes"); let final_string = String::from_utf8(result_bytes.to_vec()).expect("invalid utf8 in decrypted bytes"); diff --git a/crates/anvil/tests/it/seismic_precompiles_test_bytecode.txt b/crates/anvil/tests/it/seismic_precompiles_test_bytecode.txt index 1aa98c8bb..4fd12505e 100644 --- a/crates/anvil/tests/it/seismic_precompiles_test_bytecode.txt +++ b/crates/anvil/tests/it/seismic_precompiles_test_bytecode.txt @@ -1 +1 @@ -6080604052348015600e575f5ffd5b50335f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610dce8061005b5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806328696e361461004e5780638da5cb5b1461006a578063a061904014610088578063ce75255b146100a4575b5f5ffd5b61006860048036038101906100639190610687565b6100d4565b005b61007261019a565b60405161007f9190610711565b60405180910390f35b6100a2600480360381019061009d919061075d565b6101be565b005b6100be60048036038101906100b991906107c9565b610256565b6040516100cb9190610896565b60405180910390f35b5f6100dd610412565b90505f61012d8285858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050506104f5565b9050816bffffffffffffffffffffffff167f093a34a48cc07b4bf1355d9c15ec71077c85342d872753188302f99341f961008260405160200161017091906108f0565b60405160208183030381529060405260405161018c9190610896565b60405180910390a250505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461024c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024390610986565b60405180910390fd5b8060018190b15050565b60605f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102dd90610986565b60405180910390fd5b5f838390501161032b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610322906109ee565b60405180910390fd5b5f606790505f6001b086868660405160200161034a9493929190610a92565b60405160208183030381529060405290505f5f8373ffffffffffffffffffffffffffffffffffffffff168360405161038291906108f0565b5f60405180830381855afa9150503d805f81146103ba576040519150601f19603f3d011682016040523d82523d5f602084013e6103bf565b606091505b509150915081610404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103fb90610b3c565b60405180910390fd5b809450505050509392505050565b5f5f606490505f5f8273ffffffffffffffffffffffffffffffffffffffff1660206040516020016104439190610b9d565b60405160208183030381529060405260405161045f91906108f0565b5f60405180830381855afa9150503d805f8114610497576040519150601f19603f3d011682016040523d82523d5f602084013e61049c565b606091505b5091509150816104e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d890610c01565b60405180910390fd5b5f60208201519050805f1c94505050505090565b60605f606690505f6001b0858560405160200161051493929190610c1f565b60405160208183030381529060405290505f5f8373ffffffffffffffffffffffffffffffffffffffff168360405161054c91906108f0565b5f60405180830381855afa9150503d805f8114610584576040519150601f19603f3d011682016040523d82523d5f602084013e610589565b606091505b5091509150816105ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c590610cc7565b60405180910390fd5b5f815111610611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060890610d55565b60405180910390fd5b8094505050505092915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f84011261064757610646610626565b5b8235905067ffffffffffffffff8111156106645761066361062a565b5b6020830191508360018202830111156106805761067f61062e565b5b9250929050565b5f5f6020838503121561069d5761069c61061e565b5b5f83013567ffffffffffffffff8111156106ba576106b9610622565b5b6106c685828601610632565b92509250509250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6106fb826106d2565b9050919050565b61070b816106f1565b82525050565b5f6020820190506107245f830184610702565b92915050565b5f819050919050565b61073c8161072a565b8114610746575f5ffd5b50565b5f8135905061075781610733565b92915050565b5f602082840312156107725761077161061e565b5b5f61077f84828501610749565b91505092915050565b5f6bffffffffffffffffffffffff82169050919050565b6107a881610788565b81146107b2575f5ffd5b50565b5f813590506107c38161079f565b92915050565b5f5f5f604084860312156107e0576107df61061e565b5b5f6107ed868287016107b5565b935050602084013567ffffffffffffffff81111561080e5761080d610622565b5b61081a86828701610632565b92509250509250925092565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61086882610826565b6108728185610830565b9350610882818560208601610840565b61088b8161084e565b840191505092915050565b5f6020820190508181035f8301526108ae818461085e565b905092915050565b5f81905092915050565b5f6108ca82610826565b6108d481856108b6565b93506108e4818560208601610840565b80840191505092915050565b5f6108fb82846108c0565b915081905092915050565b5f82825260208201905092915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f5f8201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b5f610970602183610906565b915061097b82610916565b604082019050919050565b5f6020820190508181035f83015261099d81610964565b9050919050565b7f436970686572746578742063616e6e6f7420626520656d7074790000000000005f82015250565b5f6109d8601a83610906565b91506109e3826109a4565b602082019050919050565b5f6020820190508181035f830152610a05816109cc565b9050919050565b5f819050919050565b610a26610a218261072a565b610a0c565b82525050565b5f8160a01b9050919050565b5f610a4282610a2c565b9050919050565b610a5a610a5582610788565b610a38565b82525050565b828183375f83830152505050565b5f610a7983856108b6565b9350610a86838584610a60565b82840190509392505050565b5f610a9d8287610a15565b602082019150610aad8286610a49565b600c82019150610abe828486610a6e565b915081905095945050505050565b7f414553206465637279707420707265636f6d70696c652063616c6c206661696c5f8201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b5f610b26602283610906565b9150610b3182610acc565b604082019050919050565b5f6020820190508181035f830152610b5381610b1a565b9050919050565b5f63ffffffff82169050919050565b5f8160e01b9050919050565b5f610b7f82610b69565b9050919050565b610b97610b9282610b5a565b610b75565b82525050565b5f610ba88284610b86565b60048201915081905092915050565b7f524e4720507265636f6d70696c652063616c6c206661696c65640000000000005f82015250565b5f610beb601a83610906565b9150610bf682610bb7565b602082019050919050565b5f6020820190508181035f830152610c1881610bdf565b9050919050565b5f610c2a8286610a15565b602082019150610c3a8285610a49565b600c82019150610c4a82846108c0565b9150819050949350505050565b7f41455320656e637279707420707265636f6d70696c652063616c6c206661696c5f8201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b5f610cb1602283610906565b9150610cbc82610c57565b604082019050919050565b5f6020820190508181035f830152610cde81610ca5565b9050919050565b7f456e6372797074696f6e2063616c6c2072657475726e6564206e6f206f7574705f8201527f7574000000000000000000000000000000000000000000000000000000000000602082015250565b5f610d3f602283610906565b9150610d4a82610ce5565b604082019050919050565b5f6020820190508181035f830152610d6c81610d33565b905091905056fea2646970667358221220cdc3edd7891930a1ad58becbe2b3f7679ecfc78a3b1f8a803d4c381c8318287864736f6c637827302e382e32382d63692e323032342e31312e342b636f6d6d69742e32306261666332392e6d6f640058 +6080604052348015600e575f5ffd5b505f80546001600160a01b031916331790556107838061002d5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806328696e361461004e5780638da5cb5b14610063578063a061904014610092578063ce75255b146100a5575b5f5ffd5b61006161005c366004610575565b6100c5565b005b5f54610075906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100616100a03660046105b4565b61017b565b6100b86100b33660046105cb565b6101b2565b604051610089919061062c565b5f6100ce610319565b90505f6101108285858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506103e892505050565b9050816bffffffffffffffffffffffff167f093a34a48cc07b4bf1355d9c15ec71077c85342d872753188302f99341f96100826040516020016101539190610678565b60408051601f198184030181529082905261016d9161062c565b60405180910390a250505050565b5f546001600160a01b031633146101ad5760405162461bcd60e51b81526004016101a49061068a565b60405180910390fd5b6001b1565b5f546060906001600160a01b031633146101de5760405162461bcd60e51b81526004016101a49061068a565b8161022b5760405162461bcd60e51b815260206004820152601a60248201527f436970686572746578742063616e6e6f7420626520656d70747900000000000060448201526064016101a4565b6001b06040516067915f9161024991908890889088906020016106cb565b60405160208183030381529060405290505f5f836001600160a01b0316836040516102749190610678565b5f60405180830381855afa9150503d805f81146102ac576040519150601f19603f3d011682016040523d82523d5f602084013e6102b1565b606091505b50915091508161030e5760405162461bcd60e51b815260206004820152602260248201527f414553206465637279707420707265636f6d70696c652063616c6c206661696c604482015261195960f21b60648201526084016101a4565b979650505050505050565b604051600160e51b60208201525f9060649082908190839060240160408051601f198184030181529082905261034e91610678565b5f60405180830381855afa9150503d805f8114610386576040519150601f19603f3d011682016040523d82523d5f602084013e61038b565b606091505b5091509150816103dd5760405162461bcd60e51b815260206004820152601a60248201527f524e4720507265636f6d70696c652063616c6c206661696c656400000000000060448201526064016101a4565b602001519392505050565b6001b06040516060916066915f9161040691879087906020016106f9565b60405160208183030381529060405290505f5f836001600160a01b0316836040516104319190610678565b5f60405180830381855afa9150503d805f8114610469576040519150601f19603f3d011682016040523d82523d5f602084013e61046e565b606091505b5091509150816104cb5760405162461bcd60e51b815260206004820152602260248201527f41455320656e637279707420707265636f6d70696c652063616c6c206661696c604482015261195960f21b60648201526084016101a4565b5f8151116105265760405162461bcd60e51b815260206004820152602260248201527f456e6372797074696f6e2063616c6c2072657475726e6564206e6f206f7574706044820152611d5d60f21b60648201526084016101a4565b9695505050505050565b5f5f83601f840112610540575f5ffd5b50813567ffffffffffffffff811115610557575f5ffd5b60208301915083602082850101111561056e575f5ffd5b9250929050565b5f5f60208385031215610586575f5ffd5b823567ffffffffffffffff81111561059c575f5ffd5b6105a885828601610530565b90969095509350505050565b5f602082840312156105c4575f5ffd5b5035919050565b5f5f5f604084860312156105dd575f5ffd5b83356bffffffffffffffffffffffff811681146105f8575f5ffd5b9250602084013567ffffffffffffffff811115610613575f5ffd5b61061f86828701610530565b9497909650939450505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f81518060208401855e5f93019283525090919050565b5f6106838284610661565b9392505050565b60208082526021908201527f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f6040820152603760f91b606082015260800190565b84815260a084901b6001600160a01b03191660208201528183602c8301375f9101602c019081529392505050565b83815260a083901b6001600160a01b03191660208201525f61071e602c830184610661565b9594505050505056fea26469706673582212204f9da53f99a1bc4564fca46ce82fe173332deb00dd926d0557e7172bf6e107eb64736f6c637828302e382e32382d646576656c6f702e323032352e322e31332b636f6d6d69742e39363462353035320059 \ No newline at end of file diff --git a/crates/anvil/tests/it/sign.rs b/crates/anvil/tests/it/sign.rs index 0ff56f364..d2358dc2d 100644 --- a/crates/anvil/tests/it/sign.rs +++ b/crates/anvil/tests/it/sign.rs @@ -1,6 +1,5 @@ use crate::utils::http_provider_with_signer; use alloy_dyn_abi::TypedData; -use alloy_network::EthereumWallet; use alloy_primitives::{Address, U256}; use alloy_provider::Provider; use alloy_rpc_types::TransactionRequest; @@ -8,6 +7,8 @@ use alloy_serde::WithOtherFields; use alloy_signer::Signer; use anvil::{spawn, NodeConfig}; +use seismic_prelude::foundry::EthereumWallet; + #[tokio::test(flavor = "multi_thread")] async fn can_sign_typed_data() { let (api, _handle) = spawn(NodeConfig::test()).await; @@ -300,7 +301,7 @@ async fn can_sign_transaction() { .to(to) .value(U256::from(1001u64)) .from(from); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); // sign it via the eth_signTransaction API let signed_tx = api.sign_transaction(tx).await.unwrap(); @@ -314,7 +315,7 @@ async fn rejects_different_chain_id() { let provider = http_provider_with_signer(&handle.http_endpoint(), EthereumWallet::from(wallet)); let tx = TransactionRequest::default().to(Address::random()).value(U256::from(100)); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let res = provider.send_transaction(tx).await; let err = res.unwrap_err(); assert!(err.to_string().contains("does not match the signer's"), "{}", err.to_string()); @@ -327,7 +328,7 @@ async fn rejects_invalid_chain_id() { let wallet = wallet.with_chain_id(Some(99u64)); let provider = http_provider_with_signer(&handle.http_endpoint(), EthereumWallet::from(wallet)); let tx = TransactionRequest::default().to(Address::random()).value(U256::from(100u64)); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let res = provider.send_transaction(tx).await; let _err = res.unwrap_err(); } diff --git a/crates/anvil/tests/it/simulate.rs b/crates/anvil/tests/it/simulate.rs index e83a4c5a0..edc687f99 100644 --- a/crates/anvil/tests/it/simulate.rs +++ b/crates/anvil/tests/it/simulate.rs @@ -3,13 +3,14 @@ use alloy_primitives::{address, TxKind, U256}; use alloy_rpc_types::{ request::TransactionRequest, - simulate::{SimBlock, SimulatePayload}, state::{AccountOverride, StateOverridesBuilder}, BlockOverrides, }; use anvil::{spawn, NodeConfig}; use foundry_test_utils::rpc; +use seismic_prelude::foundry::{SimBlock, SimulatePayload}; + #[tokio::test(flavor = "multi_thread")] async fn test_fork_simulate_v1() { crate::init_tracing(); @@ -34,7 +35,7 @@ async fn test_fork_simulate_v1() { block_state_calls: vec![SimBlock { block_overrides, state_overrides, - calls: vec![tx_request], + calls: vec![tx_request.into()], }], trace_transfers: true, validation: false, diff --git a/crates/anvil/tests/it/state.rs b/crates/anvil/tests/it/state.rs index fdb4c8b12..ff941eff7 100644 --- a/crates/anvil/tests/it/state.rs +++ b/crates/anvil/tests/it/state.rs @@ -180,7 +180,7 @@ async fn test_fork_load_state() { let value = Unit::ETHER.wei().saturating_mul(U256::from(1)); // 1 ether let tx = TransactionRequest::default().with_to(alice).with_value(value).with_from(bob); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let receipt = provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); @@ -216,7 +216,7 @@ async fn test_fork_load_state() { // Send another tx to check if the state is preserved let tx = TransactionRequest::default().with_to(alice).with_value(value).with_from(bob); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let receipt = provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); @@ -231,7 +231,7 @@ async fn test_fork_load_state() { .with_value(value) .with_from(bob) .with_nonce(nonce_bob); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let receipt = provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); @@ -294,7 +294,7 @@ async fn computes_next_base_fee_after_loading_state() { let value = Unit::ETHER.wei().saturating_mul(U256::from(1)); // 1 ether let tx = TransactionRequest::default().with_to(alice).with_value(value).with_from(bob); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let _receipt = provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); diff --git a/crates/anvil/tests/it/traces.rs b/crates/anvil/tests/it/traces.rs index 849956cab..58cad7cc1 100644 --- a/crates/anvil/tests/it/traces.rs +++ b/crates/anvil/tests/it/traces.rs @@ -4,7 +4,7 @@ use crate::{ utils::http_provider_with_signer, }; use alloy_eips::BlockId; -use alloy_network::{EthereumWallet, TransactionBuilder}; +use alloy_network::TransactionBuilder; use alloy_primitives::{ hex::{self, FromHex}, Address, Bytes, U256, @@ -29,6 +29,8 @@ use alloy_serde::WithOtherFields; use alloy_sol_types::sol; use anvil::{spawn, EthereumHardfork, NodeConfig}; +use seismic_prelude::foundry::EthereumWallet; + #[tokio::test(flavor = "multi_thread")] async fn test_get_transfer_parity_traces() { let (_api, handle) = spawn(NodeConfig::test()).await; @@ -40,7 +42,7 @@ async fn test_get_transfer_parity_traces() { let amount = handle.genesis_balance().checked_div(U256::from(2u64)).unwrap(); // specify the `from` field so that the client knows which account to use let tx = TransactionRequest::default().to(to).value(amount).from(from); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); // broadcast it via the eth_sendTransaction API let tx = provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); @@ -139,7 +141,7 @@ async fn test_transfer_debug_trace_call() { let traces = handle .http_provider() .debug_trace_call( - WithOtherFields::new(tx), + WithOtherFields::new(tx.into()), BlockId::latest(), GethDebugTracingCallOptions::default(), ) @@ -187,7 +189,7 @@ async fn test_call_tracer_debug_trace_call() { let internal_call_tx_traces = handle .http_provider() .debug_trace_call( - WithOtherFields::new(internal_call_tx.clone()), + WithOtherFields::new(internal_call_tx.clone().into()), BlockId::latest(), GethDebugTracingCallOptions::default().with_tracing_options( GethDebugTracingOptions::default() @@ -215,7 +217,7 @@ async fn test_call_tracer_debug_trace_call() { let internal_call_only_top_call_tx_traces = handle .http_provider() .debug_trace_call( - WithOtherFields::new(internal_call_tx.clone()), + WithOtherFields::new(internal_call_tx.clone().into()), BlockId::latest(), GethDebugTracingCallOptions::default().with_tracing_options( GethDebugTracingOptions::default() @@ -244,7 +246,7 @@ async fn test_call_tracer_debug_trace_call() { let direct_call_tx_traces = handle .http_provider() .debug_trace_call( - WithOtherFields::new(direct_call_tx), + WithOtherFields::new(direct_call_tx.into()), BlockId::latest(), GethDebugTracingCallOptions::default().with_tracing_options( GethDebugTracingOptions::default() @@ -288,7 +290,7 @@ async fn test_debug_trace_call_state_override() { let tx_traces = handle .http_provider() .debug_trace_call( - WithOtherFields::new(tx.clone()), + WithOtherFields::new(tx.clone().into()), BlockId::latest(), GethDebugTracingCallOptions::default() .with_tracing_options(GethDebugTracingOptions::default()) @@ -327,7 +329,7 @@ async fn test_trace_address_fork() { .with_input::(input.into()) .with_gas_limit(300_000); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); api.anvil_impersonate_account(from).await.unwrap(); let tx = provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); @@ -525,11 +527,11 @@ async fn test_trace_address_fork2() { .with_input::(input.into()) .with_gas_limit(350_000); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); api.anvil_impersonate_account(from).await.unwrap(); let tx = provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); - let status = tx.inner.inner.inner.receipt.status.coerce_status(); + let status = tx.inner.inner.as_receipt().unwrap().status.coerce_status(); assert!(status); let traces = provider.trace_transaction(tx.transaction_hash).await.unwrap(); @@ -797,7 +799,7 @@ async fn test_trace_filter() { for i in 0..=5 { let tx = TransactionRequest::default().to(to).value(U256::from(i)).from(from); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); api.send_transaction(tx).await.unwrap(); } @@ -817,11 +819,11 @@ async fn test_trace_filter() { for i in 0..=5 { let tx = TransactionRequest::default().to(to).value(U256::from(i)).from(from); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); let tx = TransactionRequest::default().to(to_two).value(U256::from(i)).from(from_two); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); } @@ -855,7 +857,7 @@ async fn test_trace_filter() { // Mine transactions to filter against for i in 0..=5 { let tx = TransactionRequest::default().to(to_two).value(U256::from(i)).from(from_two); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); } @@ -920,7 +922,7 @@ async fn test_trace_filter() { for i in 0..=10 { let tx = TransactionRequest::default().to(to).value(U256::from(i)).from(from); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); } diff --git a/crates/anvil/tests/it/transaction.rs b/crates/anvil/tests/it/transaction.rs index d891f4bc2..763df81e7 100644 --- a/crates/anvil/tests/it/transaction.rs +++ b/crates/anvil/tests/it/transaction.rs @@ -2,7 +2,7 @@ use crate::{ abi::{Greeter, Multicall, SimpleStorage}, utils::{connect_pubsub, http_provider_with_signer}, }; -use alloy_network::{EthereumWallet, TransactionBuilder, TransactionResponse}; +use alloy_network::{TransactionBuilder, TransactionResponse}; use alloy_primitives::{address, hex, map::B256HashSet, Address, Bytes, FixedBytes, U256}; use alloy_provider::{Provider, WsConnect}; use alloy_rpc_types::{ @@ -15,9 +15,12 @@ use alloy_sol_types::SolValue; use anvil::{spawn, EthereumHardfork, NodeConfig}; use eyre::Ok; use futures::{future::join_all, FutureExt, StreamExt}; +use seismic_prelude::foundry::tx_builder; use std::{str::FromStr, time::Duration}; use tokio::time::timeout; +use seismic_prelude::foundry::EthereumWallet; + #[tokio::test(flavor = "multi_thread")] async fn can_transfer_eth() { let (_api, handle) = spawn(NodeConfig::test()).await; @@ -37,7 +40,7 @@ async fn can_transfer_eth() { // craft the tx // specify the `from` field so that the client knows which account to use let tx = TransactionRequest::default().to(to).value(amount).from(from); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); // broadcast it via the eth_sendTransaction API let tx = provider.send_transaction(tx).await.unwrap(); @@ -75,14 +78,14 @@ async fn can_order_transactions() { let mut tx = TransactionRequest::default().to(to).from(from).value(amount); tx.set_gas_price(gas_price); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let tx_lower = provider.send_transaction(tx).await.unwrap(); // craft the tx with higher price let mut tx = TransactionRequest::default().to(from).from(to).value(amount); tx.set_gas_price(gas_price + 1); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let tx_higher = provider.send_transaction(tx).await.unwrap(); // manually mine the block with the transactions @@ -111,7 +114,7 @@ async fn can_respect_nonces() { let tx = TransactionRequest::default().to(to).value(amount).from(from).nonce(nonce + 1); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); // send the transaction with higher nonce than on chain let higher_pending_tx = provider.send_transaction(tx).await.unwrap(); @@ -123,7 +126,7 @@ async fn can_respect_nonces() { let tx = TransactionRequest::default().to(to).value(amount).from(from).nonce(nonce); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); // send with the actual nonce which is mined immediately let tx = provider.send_transaction(tx).await.unwrap(); @@ -156,9 +159,9 @@ async fn can_replace_transaction() { let gas_price = provider.get_gas_price().await.unwrap(); let amount = handle.genesis_balance().checked_div(U256::from(3u64)).unwrap(); - let tx = TransactionRequest::default().to(to).value(amount).from(from).nonce(nonce); + let tx = tx_builder().with_to(to).with_value(amount).with_from(from).with_nonce(nonce); - let mut tx = WithOtherFields::new(tx); + let mut tx = WithOtherFields::new(tx.into()); tx.set_gas_price(gas_price); // send transaction with lower gas price @@ -202,10 +205,9 @@ async fn can_reject_too_high_gas_limits() { let gas_limit = api.gas_limit().to::(); let amount = handle.genesis_balance().checked_div(U256::from(3u64)).unwrap(); - let tx = - TransactionRequest::default().to(to).value(amount).from(from).with_gas_limit(gas_limit); + let tx = tx_builder().with_to(to).with_value(amount).with_from(from).with_gas_limit(gas_limit); - let mut tx = WithOtherFields::new(tx); + let mut tx = WithOtherFields::new(tx.into()); // send transaction with the exact gas limit let pending = provider.send_transaction(tx.clone()).await.unwrap(); @@ -246,7 +248,7 @@ async fn can_mine_large_gas_limit() { TransactionRequest::default().to(to).value(amount).from(from).with_gas_limit(gas_limit); // send transaction with higher gas limit - let pending = provider.send_transaction(WithOtherFields::new(tx)).await.unwrap(); + let pending = provider.send_transaction(WithOtherFields::new(tx.into())).await.unwrap(); let _resp = pending.get_receipt().await.unwrap(); } @@ -268,9 +270,9 @@ async fn can_reject_underpriced_replacement() { let gas_price = provider.get_gas_price().await.unwrap(); let amount = handle.genesis_balance().checked_div(U256::from(3u64)).unwrap(); - let tx = TransactionRequest::default().to(to).value(amount).from(from).nonce(nonce); + let tx = tx_builder().with_to(to).with_value(amount).with_from(from).with_nonce(nonce); - let mut tx = WithOtherFields::new(tx); + let mut tx = WithOtherFields::new(tx.into()); tx.set_gas_price(gas_price + 1); // send transaction with higher gas price @@ -341,7 +343,7 @@ async fn can_deploy_and_mine_manually() { let tx = TransactionRequest::default().from(from).with_input(greeter_calldata.to_owned()); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let tx = provider.send_transaction(tx).await.unwrap(); @@ -385,7 +387,7 @@ async fn can_mine_automatically() { .from(wallet.address()) .with_input(greeter_calldata.to_owned()); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let sent_tx = provider.send_transaction(tx).await.unwrap(); @@ -561,14 +563,14 @@ async fn can_handle_multiple_concurrent_transfers_with_same_nonce() { let nonce = provider.get_transaction_count(from).await.unwrap(); // explicitly set the nonce - let tx = TransactionRequest::default() - .to(to) - .value(U256::from(100)) - .from(from) - .nonce(nonce) + let tx = tx_builder() + .with_to(to) + .with_value(U256::from(100)) + .with_from(from) + .with_nonce(nonce) .with_gas_limit(21000); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let mut tasks = Vec::new(); for _ in 0..10 { @@ -603,13 +605,13 @@ async fn can_handle_multiple_concurrent_deploys_with_same_nonce() { let greeter_calldata = greeter.calldata(); - let tx = TransactionRequest::default() - .from(from) + let tx = tx_builder() + .with_from(from) .with_input(greeter_calldata.to_owned()) - .nonce(nonce) + .with_nonce(nonce) .with_gas_limit(300_000); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); for _ in 0..10 { let provider = provider.clone(); @@ -644,22 +646,22 @@ async fn can_handle_multiple_concurrent_transactions_with_same_nonce() { let deploy = Greeter::deploy_builder(provider.clone(), "Hello World!".to_string()); let deploy_calldata = deploy.calldata(); - let deploy_tx = TransactionRequest::default() - .from(from) + let deploy_tx = tx_builder() + .with_from(from) .with_input(deploy_calldata.to_owned()) - .nonce(nonce) + .with_nonce(nonce) .with_gas_limit(300_000); - let deploy_tx = WithOtherFields::new(deploy_tx); + let deploy_tx = WithOtherFields::new(deploy_tx.into()); let set_greeting = greeter_contract.setGreeting("Hello".to_string()); let set_greeting_calldata = set_greeting.calldata(); - let set_greeting_tx = TransactionRequest::default() - .from(from) + let set_greeting_tx = tx_builder() + .with_from(from) .with_input(set_greeting_calldata.to_owned()) - .nonce(nonce) + .with_nonce(nonce) .with_gas_limit(300_000); - let set_greeting_tx = WithOtherFields::new(set_greeting_tx); + let set_greeting_tx = WithOtherFields::new(set_greeting_tx.into()); for idx in 0..10 { let provider = provider.clone(); @@ -695,7 +697,7 @@ async fn can_get_pending_transaction() { let from = handle.dev_wallets().next().unwrap().address(); let tx = TransactionRequest::default().from(from).value(U256::from(1337)).to(Address::random()); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let tx = provider.send_transaction(tx).await.unwrap(); let pending = provider.get_transaction_by_hash(*tx.tx_hash()).await; @@ -746,7 +748,7 @@ async fn can_get_raw_transaction() { let from = handle.dev_wallets().next().unwrap().address(); let tx = TransactionRequest::default().from(from).value(U256::from(1488)).to(Address::random()); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let tx = provider.send_transaction(tx).await.unwrap(); let res1 = api.raw_transaction(*tx.tx_hash()).await; @@ -791,7 +793,7 @@ async fn can_handle_different_sender_nonce_calculation() { .from(from_first) .value(U256::from(1337u64)) .to(Address::random()); - let tx_from_first = WithOtherFields::new(tx_from_first); + let tx_from_first = WithOtherFields::new(tx_from_first.into()); let _tx = provider.send_transaction(tx_from_first).await.unwrap(); let nonce_from_first = provider.get_transaction_count(from_first).block_id(BlockId::pending()).await.unwrap(); @@ -801,7 +803,7 @@ async fn can_handle_different_sender_nonce_calculation() { .from(from_second) .value(U256::from(1337u64)) .to(Address::random()); - let tx_from_second = WithOtherFields::new(tx_from_second); + let tx_from_second = WithOtherFields::new(tx_from_second.into()); let _tx = provider.send_transaction(tx_from_second).await.unwrap(); let nonce_from_second = provider.get_transaction_count(from_second).block_id(BlockId::pending()).await.unwrap(); @@ -824,7 +826,7 @@ async fn includes_pending_tx_for_transaction_count() { for idx in 1..=tx_count { let tx = TransactionRequest::default().from(from).value(U256::from(1337)).to(Address::random()); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let _tx = provider.send_transaction(tx).await.unwrap(); let nonce = provider.get_transaction_count(from).block_id(BlockId::pending()).await.unwrap(); @@ -847,7 +849,7 @@ async fn can_get_historic_info() { let amount = handle.genesis_balance().checked_div(U256::from(2u64)).unwrap(); let tx = TransactionRequest::default().to(to).value(amount).from(from); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let tx = provider.send_transaction(tx).await.unwrap(); let _ = tx.get_receipt().await.unwrap(); @@ -878,7 +880,7 @@ async fn test_tx_receipt() { let tx = TransactionRequest::default().to(Address::random()).value(U256::from(1337)); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let tx = provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); assert!(tx.to.is_some()); @@ -889,7 +891,7 @@ async fn test_tx_receipt() { .from(wallet.address()) .with_input(greeter_calldata.to_owned()); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let tx = provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); // `to` field is none if it's a contract creation transaction: https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gettransactionreceipt @@ -915,7 +917,7 @@ async fn can_stream_pending_transactions() { .enumerate() .map(|(nonce, tx)| tx.nonce(nonce as u64)) .map(|tx| async { - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap() }), ) @@ -1020,7 +1022,7 @@ async fn test_tx_access_list() { .from(sender) .to(*simple_storage.address()) .with_input(set_value_calldata.to_owned()); - let set_value_tx = WithOtherFields::new(set_value_tx); + let set_value_tx = WithOtherFields::new(set_value_tx.into()); let access_list = provider.create_access_list(&set_value_tx).await.unwrap(); // let set_value_tx = simple_storage.set_value("bar".to_string()).from(sender).tx; // let access_list = client.create_access_list(&set_value_tx, None).await.unwrap(); @@ -1047,7 +1049,7 @@ async fn test_tx_access_list() { .from(sender) .to(*multicall.address()) .with_input(call_tx_data.to_owned()); - let call_tx = WithOtherFields::new(call_tx); + let call_tx = WithOtherFields::new(call_tx.into()); let access_list = provider.create_access_list(&call_tx).await.unwrap(); assert_access_list_eq( access_list.access_list, @@ -1067,7 +1069,7 @@ async fn test_tx_access_list() { .from(sender) .to(*multicall.address()) .with_input(subcall_tx_calldata.to_owned()); - let subcall_tx = WithOtherFields::new(subcall_tx); + let subcall_tx = WithOtherFields::new(subcall_tx.into()); let access_list = provider.create_access_list(&subcall_tx).await.unwrap(); assert_access_list_eq( access_list.access_list, @@ -1101,7 +1103,7 @@ async fn estimates_gas_on_pending_by_default() { let recipient = Address::random(); let tx = TransactionRequest::default().from(sender).to(recipient).value(U256::from(1e18)); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let _pending = provider.send_transaction(tx).await.unwrap(); @@ -1110,7 +1112,7 @@ async fn estimates_gas_on_pending_by_default() { .to(sender) .value(U256::from(1e10)) .input(Bytes::from(vec![0x42]).into()); - api.estimate_gas(WithOtherFields::new(tx), None, EvmOverrides::default()).await.unwrap(); + api.estimate_gas(WithOtherFields::new(tx.into()), None, EvmOverrides::default()).await.unwrap(); } #[tokio::test(flavor = "multi_thread")] @@ -1127,8 +1129,9 @@ async fn test_estimate_gas() { .value(U256::from(1e10)) .input(Bytes::from(vec![0x42]).into()); // Expect the gas estimation to fail due to insufficient funds. - let error_result = - api.estimate_gas(WithOtherFields::new(tx.clone()), None, EvmOverrides::default()).await; + let error_result = api + .estimate_gas(WithOtherFields::new(tx.clone().into()), None, EvmOverrides::default()) + .await; assert!(error_result.is_err(), "Expected an error due to insufficient funds"); let error_message = error_result.unwrap_err().to_string(); @@ -1146,7 +1149,11 @@ async fn test_estimate_gas() { // Estimate gas with state override implying sufficient funds. let gas_estimate = api - .estimate_gas(WithOtherFields::new(tx), None, EvmOverrides::new(Some(state_override), None)) + .estimate_gas( + WithOtherFields::new(tx.into()), + None, + EvmOverrides::new(Some(state_override), None), + ) .await .expect("Failed to estimate gas with state override"); @@ -1183,7 +1190,7 @@ async fn test_block_override() { let output = api .call( - WithOtherFields::new(tx), + WithOtherFields::new(tx.into()), None, EvmOverrides::new(Some(state_override), Some(Box::new(block_override))), ) @@ -1206,7 +1213,7 @@ async fn test_reject_gas_too_low() { .value(U256::from(1337u64)) .from(account) .with_gas_limit(gas); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); let resp = provider.send_transaction(tx).await; @@ -1246,7 +1253,7 @@ async fn test_reject_eip1559_pre_london() { .with_max_fee_per_gas(gas_price) .with_max_priority_fee_per_gas(gas_price); - let unsup_tx = WithOtherFields::new(unsup_tx); + let unsup_tx = WithOtherFields::new(unsup_tx.into()); let unsupported = provider.send_transaction(unsup_tx).await.unwrap_err().to_string(); assert!(unsupported.contains("not supported by the current hardfork"), "{unsupported}"); @@ -1279,8 +1286,8 @@ async fn can_mine_multiple_in_block() { }; // broadcast it via the eth_sendTransaction API - let first = api.send_transaction(WithOtherFields::new(tx.clone())).await.unwrap(); - let second = api.send_transaction(WithOtherFields::new(tx.clone())).await.unwrap(); + let first = api.send_transaction(WithOtherFields::new(tx.clone().into())).await.unwrap(); + let second = api.send_transaction(WithOtherFields::new(tx.clone().into())).await.unwrap(); api.anvil_mine(Some(U256::from(1)), Some(U256::ZERO)).await.unwrap(); @@ -1302,5 +1309,7 @@ async fn estimates_gas_prague() { .with_input(hex!("0xcafebabe")) .with_from(address!("0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266")) .with_to(address!("0x70997970c51812dc3a010c7d01b50e0d17dc79c8")); - api.estimate_gas(WithOtherFields::new(req), None, EvmOverrides::default()).await.unwrap(); + api.estimate_gas(WithOtherFields::new(req.into()), None, EvmOverrides::default()) + .await + .unwrap(); } diff --git a/crates/anvil/tests/it/txpool.rs b/crates/anvil/tests/it/txpool.rs index c329b27fa..2869d3973 100644 --- a/crates/anvil/tests/it/txpool.rs +++ b/crates/anvil/tests/it/txpool.rs @@ -3,10 +3,11 @@ use alloy_network::TransactionBuilder; use alloy_primitives::U256; use alloy_provider::{ext::TxPoolApi, Provider}; -use alloy_rpc_types::TransactionRequest; use alloy_serde::WithOtherFields; use anvil::{spawn, NodeConfig}; +use seismic_prelude::foundry::tx_builder; + #[tokio::test(flavor = "multi_thread")] async fn geth_txpool() { let (api, handle) = spawn(NodeConfig::test()).await; @@ -18,12 +19,12 @@ async fn geth_txpool() { let value = U256::from(42); let gas_price = 221435145689u128; - let tx = TransactionRequest::default() + let tx = tx_builder() .with_to(account) .with_from(account) .with_value(value) .with_gas_price(gas_price); - let tx = WithOtherFields::new(tx); + let tx = WithOtherFields::new(tx.into()); // send a few transactions let mut txs = Vec::new(); diff --git a/crates/anvil/tests/it/utils.rs b/crates/anvil/tests/it/utils.rs index b96d78e90..7f55252cb 100644 --- a/crates/anvil/tests/it/utils.rs +++ b/crates/anvil/tests/it/utils.rs @@ -1,12 +1,13 @@ -use alloy_network::{Ethereum, EthereumWallet}; use alloy_provider::{ - fillers::{ChainIdFiller, FillProvider, GasFiller, JoinFill, NonceFiller, WalletFiller}, + fillers::{BlobGasFiller, ChainIdFiller, FillProvider, JoinFill, NonceFiller, WalletFiller}, Identity, RootProvider, }; use foundry_common::provider::{ get_http_provider, ProviderBuilder, RetryProvider, RetryProviderWithSigner, }; +use seismic_prelude::foundry::{AnyNetwork, EthereumWallet, GasFiller}; + pub fn http_provider(http_endpoint: &str) -> RetryProvider { get_http_provider(http_endpoint) } @@ -42,12 +43,16 @@ type PubsubSigner = FillProvider< >, WalletFiller, >, - RootProvider, - Ethereum, + RootProvider, + AnyNetwork, >; pub async fn connect_pubsub_with_wallet(conn_str: &str, wallet: EthereumWallet) -> PubsubSigner { - alloy_provider::ProviderBuilder::new().wallet(wallet).connect(conn_str).await.unwrap() + alloy_provider::ProviderBuilder::new_with_network() + .wallet(wallet) + .connect(conn_str) + .await + .unwrap() } pub async fn ipc_provider_with_wallet( diff --git a/crates/cast/Cargo.toml b/crates/cast/Cargo.toml index d4b934a75..4aea01ea8 100644 --- a/crates/cast/Cargo.toml +++ b/crates/cast/Cargo.toml @@ -21,6 +21,8 @@ name = "scast" path = "bin/main.rs" [dependencies] +seismic-prelude.workspace = true + # lib foundry-block-explorers.workspace = true foundry-common.workspace = true diff --git a/crates/cast/src/cmd/call.rs b/crates/cast/src/cmd/call.rs index 6a1367818..b47d96132 100644 --- a/crates/cast/src/cmd/call.rs +++ b/crates/cast/src/cmd/call.rs @@ -264,16 +264,16 @@ impl CallArgs { create2_deployer, )?; - let value = tx.value.unwrap_or_default(); - let input = tx.inner.input.into_input().unwrap_or_default(); - let tx_kind = tx.inner.to.expect("set by builder"); + let value = tx.inner.inner.value.unwrap_or_default(); + let input = tx.inner.inner.input.into_input().unwrap_or_default(); + let tx_kind = tx.inner.inner.to.expect("set by builder"); let env_tx = &mut executor.env_mut().tx; - if let Some(tx_type) = tx.inner.transaction_type { + if let Some(tx_type) = tx.inner.inner.transaction_type { env_tx.tx_type = tx_type; } - if let Some(access_list) = tx.inner.access_list { + if let Some(access_list) = tx.inner.inner.access_list { env_tx.access_list = access_list; if env_tx.tx_type == TransactionType::Legacy as u8 { diff --git a/crates/cast/src/cmd/da_estimate.rs b/crates/cast/src/cmd/da_estimate.rs index f4dfe98fe..0501ca930 100644 --- a/crates/cast/src/cmd/da_estimate.rs +++ b/crates/cast/src/cmd/da_estimate.rs @@ -37,7 +37,21 @@ impl DAEstimateArgs { let mut da_estimate = 0; for tx in block.into_transactions_iter() { // try to convert into opstack transaction - let tx = OpTxEnvelope::try_from(tx)?; + let tx: seismic_prelude::foundry::AnyTxEnvelope = tx.into(); + let tx: seismic_prelude::foundry::TxEnvelope = tx.into(); + let tx = match tx { + seismic_prelude::foundry::TxEnvelope::Legacy(tx) => OpTxEnvelope::Legacy(tx), + seismic_prelude::foundry::TxEnvelope::Eip2930(tx) => OpTxEnvelope::Eip2930(tx), + seismic_prelude::foundry::TxEnvelope::Eip1559(tx) => OpTxEnvelope::Eip1559(tx), + seismic_prelude::foundry::TxEnvelope::Eip4844(_) => { + panic!("EIP-4844 transactions are not supported for DA estimates") + } + seismic_prelude::foundry::TxEnvelope::Eip7702(tx) => OpTxEnvelope::Eip7702(tx), + seismic_prelude::foundry::TxEnvelope::Seismic(_) => { + panic!("Seismic transactions are not supported for DA estimates") + } + }; + // let tx = OpTxEnvelope::try_from(tx)?; da_estimate += op_alloy_flz::tx_estimated_size_fjord(&tx.encoded_2718()); } diff --git a/crates/cast/src/cmd/logs.rs b/crates/cast/src/cmd/logs.rs index aad30c6c4..03bff0e8b 100644 --- a/crates/cast/src/cmd/logs.rs +++ b/crates/cast/src/cmd/logs.rs @@ -2,7 +2,6 @@ use crate::Cast; use alloy_dyn_abi::{DynSolType, DynSolValue, Specifier}; use alloy_ens::NameOrAddress; use alloy_json_abi::Event; -use alloy_network::AnyNetwork; use alloy_primitives::{hex::FromHex, Address, B256}; use alloy_rpc_types::{BlockId, BlockNumberOrTag, Filter, FilterBlockOption, FilterSet, Topic}; use clap::Parser; @@ -11,6 +10,8 @@ use foundry_cli::{opts::EthereumOpts, utils, utils::LoadConfig}; use itertools::Itertools; use std::{io, str::FromStr}; +use seismic_prelude::foundry::AnyNetwork; + /// CLI arguments for `cast logs`. #[derive(Debug, Parser)] pub struct LogsArgs { diff --git a/crates/cast/src/cmd/mktx.rs b/crates/cast/src/cmd/mktx.rs index af06d556c..608d9d6cf 100644 --- a/crates/cast/src/cmd/mktx.rs +++ b/crates/cast/src/cmd/mktx.rs @@ -1,6 +1,6 @@ use crate::tx::{self, CastTxBuilder}; use alloy_ens::NameOrAddress; -use alloy_network::{eip2718::Encodable2718, EthereumWallet, TransactionBuilder}; +use alloy_network::{eip2718::Encodable2718, TransactionBuilder}; use alloy_primitives::hex; use alloy_signer::Signer; use clap::Parser; @@ -11,6 +11,8 @@ use foundry_cli::{ }; use std::{path::PathBuf, str::FromStr}; +use seismic_prelude::foundry::EthereumWallet; + /// CLI arguments for `cast mktx`. #[derive(Debug, Parser)] pub struct MakeTxArgs { diff --git a/crates/cast/src/cmd/run.rs b/crates/cast/src/cmd/run.rs index 2910b83ba..37de24d38 100644 --- a/crates/cast/src/cmd/run.rs +++ b/crates/cast/src/cmd/run.rs @@ -1,5 +1,6 @@ +use crate::utils::apply_chain_and_block_specific_env_changes; use alloy_consensus::Transaction; -use alloy_network::{AnyNetwork, TransactionResponse}; +use alloy_network::TransactionResponse; use alloy_provider::Provider; use alloy_rpc_types::BlockTransactions; use clap::Parser; @@ -27,7 +28,7 @@ use foundry_evm::{ }; use foundry_evm_core::env::AsEnvMut; -use crate::utils::apply_chain_and_block_specific_env_changes; +use seismic_prelude::foundry::AnyNetwork; /// CLI arguments for `cast run`. #[derive(Clone, Debug, Parser)] @@ -135,8 +136,10 @@ impl RunArgs { )); } - let tx_block_number = - tx.block_number.ok_or_else(|| eyre::eyre!("tx may still be pending: {:?}", tx_hash))?; + let tx_block_number = tx + .inner() + .block_number + .ok_or_else(|| eyre::eyre!("tx may still be pending: {:?}", tx_hash))?; // fetch the block the transaction was mined in let block = provider.get_block(tx_block_number.into()).full().await?; @@ -222,7 +225,7 @@ impl RunArgs { break; } - configure_tx_env(&mut env.as_env_mut(), &tx.inner); + configure_tx_env(&mut env.as_env_mut(), &tx.inner()); if let Some(to) = Transaction::to(tx) { trace!(tx=?tx.tx_hash(),?to, "executing previous call transaction"); @@ -261,7 +264,7 @@ impl RunArgs { let result = { executor.set_trace_printer(self.trace_printer); - configure_tx_env(&mut env.as_env_mut(), &tx.inner); + configure_tx_env(&mut env.as_env_mut(), &tx.inner()); if let Some(to) = Transaction::to(&tx) { trace!(tx=?tx.tx_hash(), to=?to, "executing call transaction"); diff --git a/crates/cast/src/cmd/send.rs b/crates/cast/src/cmd/send.rs index 500c65f67..5507af457 100644 --- a/crates/cast/src/cmd/send.rs +++ b/crates/cast/src/cmd/send.rs @@ -3,9 +3,7 @@ use crate::{ Cast, }; use alloy_ens::NameOrAddress; -use alloy_network::{AnyNetwork, EthereumWallet}; use alloy_provider::{Provider, ProviderBuilder}; -use alloy_rpc_types::TransactionRequest; use alloy_serde::WithOtherFields; use alloy_signer::Signer; use clap::Parser; @@ -17,6 +15,8 @@ use foundry_cli::{ }; use std::{path::PathBuf, str::FromStr}; +use seismic_prelude::foundry::{AnyNetwork, EthereumWallet, TransactionRequest}; + /// CLI arguments for `cast send`. #[derive(Debug, Parser)] pub struct SendTxArgs { diff --git a/crates/cast/src/cmd/storage.rs b/crates/cast/src/cmd/storage.rs index 1bd3cf146..0c3130152 100644 --- a/crates/cast/src/cmd/storage.rs +++ b/crates/cast/src/cmd/storage.rs @@ -1,6 +1,5 @@ use crate::{opts::parse_slot, Cast}; use alloy_ens::NameOrAddress; -use alloy_network::AnyNetwork; use alloy_primitives::{Address, B256, U256}; use alloy_provider::Provider; use alloy_rpc_types::BlockId; @@ -34,6 +33,8 @@ use semver::Version; use serde::{Deserialize, Serialize}; use std::str::FromStr; +use seismic_prelude::foundry::AnyNetwork; + /// The minimum Solc version for outputting storage layouts. /// /// diff --git a/crates/cast/src/lib.rs b/crates/cast/src/lib.rs index a08e417eb..b8cf040b6 100644 --- a/crates/cast/src/lib.rs +++ b/crates/cast/src/lib.rs @@ -6,7 +6,6 @@ use alloy_consensus::TxEnvelope; use alloy_dyn_abi::{DynSolType, DynSolValue, FunctionExt}; use alloy_ens::NameOrAddress; use alloy_json_abi::Function; -use alloy_network::{AnyNetwork, AnyRpcTransaction}; use alloy_primitives::{ hex, utils::{keccak256, ParseUnits, Unit}, @@ -17,9 +16,7 @@ use alloy_provider::{ PendingTransactionBuilder, Provider, }; use alloy_rlp::Decodable; -use alloy_rpc_types::{ - state::StateOverride, BlockId, BlockNumberOrTag, Filter, TransactionRequest, -}; +use alloy_rpc_types::{state::StateOverride, BlockId, BlockNumberOrTag, Filter}; use alloy_serde::WithOtherFields; use alloy_sol_types::sol; use base::{Base, NumberWithBase, ToBase}; @@ -51,6 +48,8 @@ use tokio::signal::ctrl_c; use foundry_common::abi::encode_function_args_packed; pub use foundry_evm::*; +use seismic_prelude::foundry::{AnyNetwork, AnyRpcTransaction, TransactionRequest}; + pub mod args; pub mod cmd; pub mod opts; @@ -165,7 +164,7 @@ impl> Cast

{ // ensure the address is a contract if res.is_empty() { // check that the recipient is a contract that can be called - if let Some(TxKind::Call(addr)) = req.to { + if let Some(TxKind::Call(addr)) = req.inner.inner.to { if let Ok(code) = self .provider .get_code_at(addr) @@ -176,7 +175,7 @@ impl> Cast

{ eyre::bail!("contract {addr:?} does not have any code") } } - } else if Some(TxKind::Create) == req.to { + } else if Some(TxKind::Create) == req.inner.inner.to { eyre::bail!("tx req is a contract deployment"); } else { eyre::bail!("recipient is None"); @@ -789,9 +788,9 @@ impl> Cast

{ }; Ok(if raw { - format!("0x{}", hex::encode(tx.inner.inner.encoded_2718())) + format!("0x{}", hex::encode(tx.inner().inner.encoded_2718())) } else if let Some(field) = field { - get_pretty_tx_attr(&tx.inner, field.as_str()) + get_pretty_tx_attr(&tx.inner(), field.as_str()) .ok_or_else(|| eyre::eyre!("invalid tx field: {}", field.to_string()))? } else if shell::is_json() { // to_value first to sort json object keys diff --git a/crates/cast/src/tx.rs b/crates/cast/src/tx.rs index 829d8e571..f4293508d 100644 --- a/crates/cast/src/tx.rs +++ b/crates/cast/src/tx.rs @@ -3,13 +3,10 @@ use alloy_consensus::{SidecarBuilder, SignableTransaction, SimpleCoder}; use alloy_dyn_abi::ErrorExt; use alloy_ens::NameOrAddress; use alloy_json_abi::Function; -use alloy_network::{ - AnyNetwork, AnyTypedTransaction, TransactionBuilder, TransactionBuilder4844, - TransactionBuilder7702, -}; +use alloy_network::{TransactionBuilder, TransactionBuilder4844, TransactionBuilder7702}; use alloy_primitives::{hex, Address, Bytes, TxKind, U256}; use alloy_provider::Provider; -use alloy_rpc_types::{AccessList, Authorization, TransactionInput, TransactionRequest}; +use alloy_rpc_types::{AccessList, Authorization, TransactionInput}; use alloy_serde::WithOtherFields; use alloy_signer::Signer; use alloy_transport::TransportError; @@ -26,6 +23,8 @@ use itertools::Itertools; use serde_json::value::RawValue; use std::fmt::Write; +use seismic_prelude::foundry::{AnyNetwork, AnyTypedTransaction, TransactionRequest}; + /// Different sender kinds used by [`CastTxBuilder`]. #[expect(clippy::large_enum_variant)] pub enum SenderKind<'a> { @@ -257,7 +256,7 @@ impl> CastTxBuilder { }; if self.state.to.is_none() && code.is_none() { - let has_value = self.tx.value.is_some_and(|v| !v.is_zero()); + let has_value = self.tx.inner.inner.value.is_some_and(|v| !v.is_zero()); let has_auth = self.auth.is_some(); // We only allow user to omit the recipient address if transaction is an EIP-7702 tx // without a value. @@ -325,17 +324,18 @@ impl> CastTxBuilder { // we set both fields to the same value because some nodes only accept the legacy `data` field: let input = Bytes::copy_from_slice(&self.state.input); - self.tx.input = TransactionInput { input: Some(input.clone()), data: Some(input) }; + self.tx.inner.inner.input = + TransactionInput { input: Some(input.clone()), data: Some(input) }; self.tx.set_from(from); self.tx.set_chain_id(self.chain.id()); - let tx_nonce = if let Some(nonce) = self.tx.nonce { + let tx_nonce = if let Some(nonce) = self.tx.inner.inner.nonce { nonce } else { let nonce = self.provider.get_transaction_count(from).await?; if fill { - self.tx.nonce = Some(nonce); + self.tx.inner.inner.nonce = Some(nonce); } nonce }; @@ -366,31 +366,34 @@ impl> CastTxBuilder { return Ok((self.tx, self.state.func)); } - if self.legacy && self.tx.gas_price.is_none() { - self.tx.gas_price = Some(self.provider.get_gas_price().await?); + if self.legacy && self.tx.inner.inner.gas_price.is_none() { + self.tx.inner.inner.gas_price = Some(self.provider.get_gas_price().await?); } - if self.blob && self.tx.max_fee_per_blob_gas.is_none() { - self.tx.max_fee_per_blob_gas = Some(self.provider.get_blob_base_fee().await?) + if self.blob && self.tx.inner.inner.max_fee_per_blob_gas.is_none() { + self.tx.inner.inner.max_fee_per_blob_gas = + Some(self.provider.get_blob_base_fee().await?) } if !self.legacy && - (self.tx.max_fee_per_gas.is_none() || self.tx.max_priority_fee_per_gas.is_none()) + (self.tx.inner.inner.max_fee_per_gas.is_none() || + self.tx.inner.inner.max_priority_fee_per_gas.is_none()) { let estimate = self.provider.estimate_eip1559_fees().await?; if !self.legacy { - if self.tx.max_fee_per_gas.is_none() { - self.tx.max_fee_per_gas = Some(estimate.max_fee_per_gas); + if self.tx.inner.inner.max_fee_per_gas.is_none() { + self.tx.inner.inner.max_fee_per_gas = Some(estimate.max_fee_per_gas); } - if self.tx.max_priority_fee_per_gas.is_none() { - self.tx.max_priority_fee_per_gas = Some(estimate.max_priority_fee_per_gas); + if self.tx.inner.inner.max_priority_fee_per_gas.is_none() { + self.tx.inner.inner.max_priority_fee_per_gas = + Some(estimate.max_priority_fee_per_gas); } } } - if self.tx.gas.is_none() { + if self.tx.inner.inner.gas.is_none() { self.estimate_gas().await?; } @@ -401,7 +404,7 @@ impl> CastTxBuilder { async fn estimate_gas(&mut self) -> Result<()> { match self.provider.estimate_gas(self.tx.clone()).await { Ok(estimated) => { - self.tx.gas = Some(estimated); + self.tx.inner.inner.gas = Some(estimated); Ok(()) } Err(err) => { @@ -461,7 +464,7 @@ where let sidecar = coder.build()?; self.tx.set_blob_sidecar(sidecar); - self.tx.populate_blob_hashes(); + self.tx.inner.inner.populate_blob_hashes(); Ok(self) } diff --git a/crates/cheatcodes/Cargo.toml b/crates/cheatcodes/Cargo.toml index ec6aa1799..423de403e 100644 --- a/crates/cheatcodes/Cargo.toml +++ b/crates/cheatcodes/Cargo.toml @@ -15,7 +15,7 @@ exclude.workspace = true workspace = true [dependencies] -seismic-revm.workspace = true +seismic-prelude.workspace = true foundry-cheatcodes-spec.workspace = true foundry-common.workspace = true @@ -27,7 +27,7 @@ foundry-wallets.workspace = true forge-script-sequence.workspace = true alloy-dyn-abi.workspace = true -alloy-evm.workspace = true +# alloy-evm.workspace = true alloy-json-abi.workspace = true alloy-primitives.workspace = true alloy-genesis.workspace = true diff --git a/crates/cheatcodes/src/evm.rs b/crates/cheatcodes/src/evm.rs index 512068d1b..7211a0ce7 100644 --- a/crates/cheatcodes/src/evm.rs +++ b/crates/cheatcodes/src/evm.rs @@ -383,7 +383,7 @@ impl Cheatcode for difficultyCall { fn apply_stateful(&self, ccx: &mut CheatsCtxt) -> Result { let Self { newDifficulty } = self; ensure!( - ccx.ecx.cfg.spec < SpecId::MERGE, + ccx.ecx.cfg.spec.into_eth_spec() < SpecId::MERGE, "`difficulty` is not supported after the Paris hard fork, use `prevrandao` instead; \ see EIP-4399: https://eips.ethereum.org/EIPS/eip-4399" ); @@ -405,7 +405,7 @@ impl Cheatcode for prevrandao_0Call { fn apply_stateful(&self, ccx: &mut CheatsCtxt) -> Result { let Self { newPrevrandao } = self; ensure!( - ccx.ecx.cfg.spec >= SpecId::MERGE, + ccx.ecx.cfg.spec.into_eth_spec() >= SpecId::MERGE, "`prevrandao` is not supported before the Paris hard fork, use `difficulty` instead; \ see EIP-4399: https://eips.ethereum.org/EIPS/eip-4399" ); @@ -418,7 +418,7 @@ impl Cheatcode for prevrandao_1Call { fn apply_stateful(&self, ccx: &mut CheatsCtxt) -> Result { let Self { newPrevrandao } = self; ensure!( - ccx.ecx.cfg.spec >= SpecId::MERGE, + ccx.ecx.cfg.spec.into_eth_spec() >= SpecId::MERGE, "`prevrandao` is not supported before the Paris hard fork, use `difficulty` instead; \ see EIP-4399: https://eips.ethereum.org/EIPS/eip-4399" ); @@ -431,7 +431,7 @@ impl Cheatcode for blobhashesCall { fn apply_stateful(&self, ccx: &mut CheatsCtxt) -> Result { let Self { hashes } = self; ensure!( - ccx.ecx.cfg.spec >= SpecId::CANCUN, + ccx.ecx.cfg.spec.into_eth_spec() >= SpecId::CANCUN, "`blobhashes` is not supported before the Cancun hard fork; \ see EIP-4844: https://eips.ethereum.org/EIPS/eip-4844" ); @@ -444,7 +444,7 @@ impl Cheatcode for getBlobhashesCall { fn apply_stateful(&self, ccx: &mut CheatsCtxt) -> Result { let Self {} = self; ensure!( - ccx.ecx.cfg.spec >= SpecId::CANCUN, + ccx.ecx.cfg.spec.into_eth_spec() >= SpecId::CANCUN, "`getBlobhashes` is not supported before the Cancun hard fork; \ see EIP-4844: https://eips.ethereum.org/EIPS/eip-4844" ); @@ -497,11 +497,11 @@ impl Cheatcode for blobBaseFeeCall { fn apply_stateful(&self, ccx: &mut CheatsCtxt) -> Result { let Self { newBlobBaseFee } = self; ensure!( - ccx.ecx.cfg.spec >= SpecId::CANCUN, + ccx.ecx.cfg.spec.into_eth_spec() >= SpecId::CANCUN, "`blobBaseFee` is not supported before the Cancun hard fork; \ see EIP-4844: https://eips.ethereum.org/EIPS/eip-4844" ); - let is_prague = ccx.ecx.cfg.spec >= SpecId::PRAGUE; + let is_prague = ccx.ecx.cfg.spec.into_eth_spec() >= SpecId::PRAGUE; ccx.ecx.block.set_blob_excess_gas_and_price((*newBlobBaseFee).to(), is_prague); Ok(Default::default()) } diff --git a/crates/cheatcodes/src/fs.rs b/crates/cheatcodes/src/fs.rs index f1985eb32..c177ddbe8 100644 --- a/crates/cheatcodes/src/fs.rs +++ b/crates/cheatcodes/src/fs.rs @@ -4,7 +4,6 @@ use super::string::parse; use crate::{Cheatcode, Cheatcodes, CheatcodesExecutor, CheatsCtxt, Result, Vm::*}; use alloy_dyn_abi::DynSolType; use alloy_json_abi::ContractObject; -use alloy_network::AnyTransactionReceipt; use alloy_primitives::{hex, map::Entry, Bytes, U256}; use alloy_provider::network::ReceiptResponse; use alloy_sol_types::SolValue; @@ -25,6 +24,8 @@ use std::{ }; use walkdir::WalkDir; +use seismic_prelude::foundry::AnyTransactionReceipt; + impl Cheatcode for existsCall { fn apply(&self, state: &mut Cheatcodes) -> Result { let Self { path } = self; diff --git a/crates/cheatcodes/src/inspector.rs b/crates/cheatcodes/src/inspector.rs index c8ae3c38b..9dcb98fdd 100644 --- a/crates/cheatcodes/src/inspector.rs +++ b/crates/cheatcodes/src/inspector.rs @@ -22,7 +22,6 @@ use crate::{ Vm::{self, AccountAccess}, }; use alloy_consensus::BlobTransactionSidecar; -use alloy_evm::eth::EthEvmContext; use alloy_network::TransactionBuilder4844; use alloy_primitives::{ hex, @@ -30,7 +29,7 @@ use alloy_primitives::{ Address, Bytes, Log, TxKind, B256, U256, }; use alloy_rpc_types::{ - request::{TransactionInput, TransactionRequest}, + request::{TransactionInput, TransactionRequest as AlloyTransactionRequest}, AccessList, }; use alloy_sol_types::{SolCall, SolInterface, SolValue}; @@ -72,6 +71,8 @@ use std::{ sync::Arc, }; +use seismic_prelude::foundry::{EthEvmContext, SeismicChain, TransactionRequest}; + mod utils; pub type Ecx<'a, 'b, 'c> = &'a mut EthEvmContext<&'b mut (dyn DatabaseExt + 'c)>; @@ -142,7 +143,7 @@ where database: &mut *ccx.ecx.journaled_state.database as &mut dyn DatabaseExt, }, local: LocalContext::default(), - chain: (), + chain: SeismicChain::default(), error, }; @@ -150,11 +151,11 @@ where let res = f(&mut evm)?; - ccx.ecx.journaled_state.inner = evm.inner.ctx.journaled_state.inner; - ccx.ecx.block = evm.inner.ctx.block; - ccx.ecx.tx = evm.inner.ctx.tx; - ccx.ecx.cfg = evm.inner.ctx.cfg; - ccx.ecx.error = evm.inner.ctx.error; + ccx.ecx.journaled_state.inner = evm.inner.0.ctx.journaled_state.inner; + ccx.ecx.block = evm.inner.0.ctx.block; + ccx.ecx.tx = evm.inner.0.ctx.tx; + ccx.ecx.cfg = evm.inner.0.ctx.cfg; + ccx.ecx.error = evm.inner.0.ctx.error; Ok(res) } @@ -741,13 +742,20 @@ impl Cheatcodes { self.broadcastable_transactions.push_back(BroadcastableTransaction { rpc: ecx.journaled_state.database.active_fork_url(), transaction: TransactionRequest { - from: Some(broadcast.new_origin), - to: None, - value: Some(input.value()), - input: TransactionInput::new(input.init_code()), - nonce: Some(account.info.nonce), - gas: if is_fixed_gas_limit { Some(input.gas_limit()) } else { None }, - ..Default::default() + inner: AlloyTransactionRequest { + from: Some(broadcast.new_origin), + to: None, + value: Some(input.value()), + input: TransactionInput::new(input.init_code()), + nonce: Some(account.info.nonce), + gas: if is_fixed_gas_limit { + Some(input.gas_limit()) + } else { + None + }, + ..Default::default() + }, + seismic_elements: None, } .into(), }); @@ -1126,14 +1134,17 @@ impl Cheatcodes { ecx.journaled_state.inner.state().get_mut(&broadcast.new_origin).unwrap(); let mut tx_req = TransactionRequest { - from: Some(broadcast.new_origin), - to: Some(TxKind::from(Some(call.target_address))), - value: call.transfer_value(), - input, - nonce: Some(account.info.nonce), - chain_id: Some(ecx.cfg.chain_id), - gas: if is_fixed_gas_limit { Some(call.gas_limit) } else { None }, - ..Default::default() + inner: AlloyTransactionRequest { + from: Some(broadcast.new_origin), + to: Some(TxKind::from(Some(call.target_address))), + value: call.transfer_value(), + input, + nonce: Some(account.info.nonce), + chain_id: Some(ecx.cfg.chain_id), + gas: if is_fixed_gas_limit { Some(call.gas_limit) } else { None }, + ..Default::default() + }, + seismic_elements: None, }; match (self.active_delegation.take(), self.active_blob_sidecar.take()) { @@ -1149,19 +1160,19 @@ impl Cheatcodes { }); } (Some(auth_list), None) => { - tx_req.authorization_list = Some(vec![auth_list]); - tx_req.sidecar = None; + tx_req.inner.authorization_list = Some(vec![auth_list]); + tx_req.inner.sidecar = None; // Increment nonce to reflect the signed authorization. account.info.nonce += 1; } (None, Some(blob_sidecar)) => { tx_req.set_blob_sidecar(blob_sidecar); - tx_req.authorization_list = None; + tx_req.inner.authorization_list = None; } (None, None) => { - tx_req.sidecar = None; - tx_req.authorization_list = None; + tx_req.inner.sidecar = None; + tx_req.inner.authorization_list = None; } } diff --git a/crates/cheatcodes/src/lib.rs b/crates/cheatcodes/src/lib.rs index ca45a937b..d3acf242c 100644 --- a/crates/cheatcodes/src/lib.rs +++ b/crates/cheatcodes/src/lib.rs @@ -15,7 +15,6 @@ pub extern crate foundry_cheatcodes_spec as spec; #[macro_use] extern crate tracing; -use alloy_evm::eth::EthEvmContext; use alloy_primitives::Address; use foundry_evm_core::backend::DatabaseExt; use spec::Status; @@ -62,6 +61,8 @@ mod toml; mod utils; +use seismic_prelude::foundry::EthEvmContext; + /// Cheatcode implementation. pub(crate) trait Cheatcode: CheatcodeDef + DynCheatcode { /// Applies this cheatcode to the given state. diff --git a/crates/cheatcodes/src/script.rs b/crates/cheatcodes/src/script.rs index ce27b7925..ab3dc9fb0 100644 --- a/crates/cheatcodes/src/script.rs +++ b/crates/cheatcodes/src/script.rs @@ -177,7 +177,7 @@ impl Cheatcode for attachBlobCall { fn apply_stateful(&self, ccx: &mut CheatsCtxt) -> Result { let Self { blob } = self; ensure!( - ccx.ecx.cfg.spec >= SpecId::CANCUN, + ccx.ecx.cfg.spec.into_eth_spec() >= SpecId::CANCUN, "`attachBlob` is not supported before the Cancun hard fork; \ see EIP-4844: https://eips.ethereum.org/EIPS/eip-4844" ); diff --git a/crates/cli/Cargo.toml b/crates/cli/Cargo.toml index 2eade5bdd..68671d1e8 100644 --- a/crates/cli/Cargo.toml +++ b/crates/cli/Cargo.toml @@ -13,6 +13,8 @@ repository.workspace = true workspace = true [dependencies] +seismic-prelude.workspace = true + forge-fmt.workspace = true foundry-common.workspace = true foundry-config.workspace = true diff --git a/crates/cli/src/utils/abi.rs b/crates/cli/src/utils/abi.rs index 2f76e0145..e16cb9844 100644 --- a/crates/cli/src/utils/abi.rs +++ b/crates/cli/src/utils/abi.rs @@ -2,12 +2,14 @@ use alloy_chains::Chain; use alloy_ens::NameOrAddress; use alloy_json_abi::Function; use alloy_primitives::{hex, Address}; -use alloy_provider::{network::AnyNetwork, Provider}; +use alloy_provider::Provider; use eyre::{OptionExt, Result}; use foundry_block_explorers::EtherscanApiVersion; use foundry_common::abi::{encode_function_args, get_func, get_func_etherscan}; use futures::future::join_all; +use seismic_prelude::foundry::AnyNetwork; + async fn resolve_name_args>(args: &[String], provider: &P) -> Vec { join_all(args.iter().map(|arg| async { if arg.contains('.') { diff --git a/crates/cli/src/utils/mod.rs b/crates/cli/src/utils/mod.rs index 391d519d0..7eee705a5 100644 --- a/crates/cli/src/utils/mod.rs +++ b/crates/cli/src/utils/mod.rs @@ -1,6 +1,6 @@ use alloy_json_abi::JsonAbi; use alloy_primitives::U256; -use alloy_provider::{network::AnyNetwork, Provider}; +use alloy_provider::Provider; use eyre::{ContextCompat, Result}; use foundry_common::{ provider::{ProviderBuilder, RetryProvider}, @@ -17,6 +17,8 @@ use std::{ }; use tracing_subscriber::prelude::*; +use seismic_prelude::foundry::AnyNetwork; + mod cmd; pub use cmd::*; diff --git a/crates/common/Cargo.toml b/crates/common/Cargo.toml index ecfc9279a..1f523bdc1 100644 --- a/crates/common/Cargo.toml +++ b/crates/common/Cargo.toml @@ -13,6 +13,8 @@ repository.workspace = true workspace = true [dependencies] +seismic-prelude.workspace = true + foundry-block-explorers = { workspace = true, features = ["foundry-compilers"] } foundry-common-fmt.workspace = true foundry-compilers.workspace = true @@ -42,7 +44,6 @@ alloy-transport-ipc.workspace = true alloy-transport-ws.workspace = true alloy-transport.workspace = true alloy-consensus = { workspace = true, features = ["k256"] } -alloy-network.workspace = true solar-parse.workspace = true solar-sema.workspace = true diff --git a/crates/common/fmt/Cargo.toml b/crates/common/fmt/Cargo.toml index a8eea19ff..ccbe7edd0 100644 --- a/crates/common/fmt/Cargo.toml +++ b/crates/common/fmt/Cargo.toml @@ -14,6 +14,8 @@ repository.workspace = true workspace = true [dependencies] +seismic-prelude.workspace = true + alloy-primitives.workspace = true alloy-dyn-abi = { workspace = true, features = ["eip712", "seismic"] } alloy-sol-types.workspace = true diff --git a/crates/common/fmt/src/ui.rs b/crates/common/fmt/src/ui.rs index 89e18e562..e68e58d31 100644 --- a/crates/common/fmt/src/ui.rs +++ b/crates/common/fmt/src/ui.rs @@ -1,12 +1,7 @@ //! Helper trait and functions to format Ethereum types. -use alloy_consensus::{ - Eip658Value, Receipt, ReceiptWithBloom, Transaction as TxTrait, TxEnvelope, TxType, Typed2718, -}; -use alloy_network::{ - AnyHeader, AnyReceiptEnvelope, AnyRpcBlock, AnyRpcTransaction, AnyTransactionReceipt, - AnyTxEnvelope, ReceiptResponse, -}; +use alloy_consensus::{Eip658Value, Transaction as TxTrait, TxEnvelope, TxType, Typed2718}; +use alloy_network::{AnyHeader, ReceiptResponse}; use alloy_primitives::{hex, Address, Bloom, Bytes, FixedBytes, Uint, I256, U256, U64, U8}; use alloy_rpc_types::{ AccessListItem, Block, BlockTransactions, Header, Log, Transaction, TransactionReceipt, @@ -15,6 +10,10 @@ use alloy_serde::{OtherFields, WithOtherFields}; use revm::context_interface::transaction::SignedAuthorization; use serde::Deserialize; +use seismic_prelude::foundry::{ + AnyRpcBlock, AnyRpcTransaction, AnyTransactionReceipt, AnyTxEnvelope, +}; + /// length of the name column for pretty formatting `{:>20}{value}` const NAME_COLUMN_LEN: usize = 20usize; @@ -176,21 +175,19 @@ impl UIfmt for AnyTransactionReceipt { gas_used, contract_address, effective_gas_price, - inner: - AnyReceiptEnvelope { - r#type: transaction_type, - inner: - ReceiptWithBloom { - receipt: Receipt { status, cumulative_gas_used, logs }, - logs_bloom, - }, - }, + inner, blob_gas_price, blob_gas_used, }, other, } = self; + let cumulative_gas_used = inner.cumulative_gas_used(); + let logs = inner.logs(); + let logs_bloom = inner.logs_bloom(); + let status = inner.status(); + let transaction_type = inner.tx_type(); + let mut pretty = format!( " blockHash {} @@ -512,9 +509,30 @@ type {} tx.inner.fields.pretty(), ) } + Self::Seismic(tx) => tx.pretty(), } } } + +impl UIfmt for alloy_consensus::Signed { + fn pretty(&self) -> String { + let (tx_seismic, signature, hash) = self.clone().into_parts(); + let legacy_tx = tx_seismic.to_legacy_tx(); + let legacy_signed = alloy_consensus::Signed::new_unchecked(legacy_tx, signature, hash); + let legacy_envelope = TxEnvelope::Legacy(legacy_signed); + let legacy_pretty = legacy_envelope.pretty(); + let seismic_elements_pretty = format!( + "encryptionNonce: {} + encryptionPubkey: {} + messageVersion: {}", + tx_seismic.seismic_elements.encryption_pubkey, + tx_seismic.seismic_elements.encryption_nonce, + tx_seismic.seismic_elements.message_version + ); + format!("{}\n{}", legacy_pretty, seismic_elements_pretty) + } +} + impl UIfmt for Transaction { fn pretty(&self) -> String { match &self.inner.inner() { diff --git a/crates/common/src/constants.rs b/crates/common/src/constants.rs index 31c0a2345..f59ae7ec6 100644 --- a/crates/common/src/constants.rs +++ b/crates/common/src/constants.rs @@ -1,10 +1,11 @@ //! Commonly used constants. use alloy_consensus::Typed2718; -use alloy_network::AnyTxEnvelope; use alloy_primitives::{address, Address, Signature, B256}; use std::time::Duration; +use seismic_prelude::foundry::AnyTxEnvelope; + /// The dev chain-id, inherited from hardhat pub const DEV_CHAIN_ID: u64 = 31337; diff --git a/crates/common/src/provider/mod.rs b/crates/common/src/provider/mod.rs index 0603b91f9..5b2b1a67e 100644 --- a/crates/common/src/provider/mod.rs +++ b/crates/common/src/provider/mod.rs @@ -6,8 +6,7 @@ use crate::{ provider::runtime_transport::RuntimeTransportBuilder, ALCHEMY_FREE_TIER_CUPS, REQUEST_TIMEOUT, }; use alloy_provider::{ - fillers::{ChainIdFiller, FillProvider, GasFiller, JoinFill, NonceFiller, WalletFiller}, - network::{AnyNetwork, EthereumWallet}, + fillers::{ChainIdFiller, FillProvider, JoinFill, NonceFiller, WalletFiller}, Identity, ProviderBuilder as AlloyProviderBuilder, RootProvider, }; use alloy_rpc_client::ClientBuilder; @@ -23,6 +22,8 @@ use std::{ }; use url::ParseError; +use seismic_prelude::foundry::{AnyNetwork, EthereumWallet, GasFiller}; + /// The assumed block time for unknown chains. /// We assume that these are chains have a faster block time. const DEFAULT_UNKNOWN_CHAIN_BLOCK_TIME: Duration = Duration::from_secs(3); diff --git a/crates/common/src/transactions.rs b/crates/common/src/transactions.rs index 955caf916..1045282b3 100644 --- a/crates/common/src/transactions.rs +++ b/crates/common/src/transactions.rs @@ -2,18 +2,19 @@ use alloy_consensus::{transaction::SignerRecoverable, Transaction, TxEnvelope}; use alloy_eips::eip7702::SignedAuthorization; -use alloy_network::AnyTransactionReceipt; use alloy_primitives::{Address, TxKind, U256}; use alloy_provider::{ - network::{AnyNetwork, ReceiptResponse, TransactionBuilder}, + network::{ReceiptResponse, TransactionBuilder}, Provider, }; -use alloy_rpc_types::{BlockId, TransactionRequest}; +use alloy_rpc_types::BlockId; use alloy_serde::WithOtherFields; use eyre::Result; use foundry_common_fmt::UIfmt; use serde::{Deserialize, Serialize}; +use seismic_prelude::foundry::{AnyNetwork, AnyTransactionReceipt, TransactionRequest}; + /// Helper type to carry a transaction along with an optional revert reason #[derive(Clone, Debug, Serialize, Deserialize)] pub struct TransactionReceiptWithRevertReason { @@ -29,7 +30,10 @@ pub struct TransactionReceiptWithRevertReason { impl TransactionReceiptWithRevertReason { /// Returns if the status of the transaction is 0 (failure) pub fn is_failure(&self) -> bool { - !self.receipt.inner.inner.inner.receipt.status.coerce_status() + match self.receipt.inner.inner.as_receipt() { + Some(receipt) => !receipt.status.coerce_status(), + None => true, + } } /// Updates the revert reason field using `eth_call` and returns an Err variant if the revert @@ -58,8 +62,8 @@ impl TransactionReceiptWithRevertReason { if let Some(block_hash) = self.receipt.block_hash { let mut call_request: WithOtherFields = - transaction.inner.inner.clone_inner().into(); - call_request.set_from(transaction.inner.inner.signer()); + transaction.inner().inner.clone_inner().into(); + call_request.set_from(transaction.inner().inner.signer()); match provider.call(call_request).block(BlockId::Hash(block_hash.into())).await { Err(e) => return Ok(extract_revert_reason(e.to_string())), Ok(_) => eyre::bail!("no revert reason as transaction succeeded"), @@ -100,8 +104,10 @@ impl UIfmt for TransactionMaybeSigned { fn pretty(&self) -> String { match self { Self::Signed { tx, .. } => tx.pretty(), - Self::Unsigned(tx) => format!( - " + Self::Unsigned(tx) => { + let tx = &tx.inner.inner; + format!( + " accessList {} chainId {} gasLimit {} @@ -114,23 +120,24 @@ nonce {} to {} type {} value {}", - tx.access_list - .as_ref() - .map(|a| a.iter().collect::>()) - .unwrap_or_default() - .pretty(), - tx.chain_id.pretty(), - tx.gas_limit().unwrap_or_default(), - tx.gas_price.pretty(), - tx.input.input.pretty(), - tx.max_fee_per_blob_gas.pretty(), - tx.max_fee_per_gas.pretty(), - tx.max_priority_fee_per_gas.pretty(), - tx.nonce.pretty(), - tx.to.as_ref().map(|a| a.to()).unwrap_or_default().pretty(), - tx.transaction_type.unwrap_or_default(), - tx.value.pretty(), - ), + tx.access_list + .as_ref() + .map(|a| a.iter().collect::>()) + .unwrap_or_default() + .pretty(), + tx.chain_id.pretty(), + tx.gas.unwrap_or_default(), + tx.gas_price.pretty(), + tx.input.input.pretty(), + tx.max_fee_per_blob_gas.pretty(), + tx.max_fee_per_gas.pretty(), + tx.max_priority_fee_per_gas.pretty(), + tx.nonce.pretty(), + tx.to.as_ref().map(|a| a.to()).unwrap_or_default().pretty(), + tx.transaction_type.unwrap_or_default(), + tx.value.pretty(), + ) + } } } } @@ -153,23 +160,23 @@ pub fn get_pretty_tx_receipt_attr( "blockNumber" | "block_number" => Some(receipt.receipt.block_number.pretty()), "contractAddress" | "contract_address" => Some(receipt.receipt.contract_address.pretty()), "cumulativeGasUsed" | "cumulative_gas_used" => { - Some(receipt.receipt.inner.inner.inner.receipt.cumulative_gas_used.pretty()) + Some(receipt.receipt.inner.inner.cumulative_gas_used().pretty()) } "effectiveGasPrice" | "effective_gas_price" => { Some(receipt.receipt.effective_gas_price.to_string()) } "gasUsed" | "gas_used" => Some(receipt.receipt.gas_used.to_string()), - "logs" => Some(receipt.receipt.inner.inner.inner.receipt.logs.as_slice().pretty()), - "logsBloom" | "logs_bloom" => Some(receipt.receipt.inner.inner.inner.logs_bloom.pretty()), + "logs" => Some(receipt.receipt.inner.inner.logs().pretty()), + "logsBloom" | "logs_bloom" => Some(receipt.receipt.inner.inner.logs_bloom().pretty()), "root" | "stateRoot" | "state_root " => Some(receipt.receipt.state_root().pretty()), "status" | "statusCode" | "status_code" => { - Some(receipt.receipt.inner.inner.inner.receipt.status.pretty()) + Some(receipt.receipt.inner.inner.status().pretty()) } "transactionHash" | "transaction_hash" => Some(receipt.receipt.transaction_hash.pretty()), "transactionIndex" | "transaction_index" => { Some(receipt.receipt.transaction_index.pretty()) } - "type" | "transaction_type" => Some(receipt.receipt.inner.inner.r#type.to_string()), + "type" | "transaction_type" => Some(receipt.receipt.inner.inner.tx_type().to_string()), "revertReason" | "revert_reason" => Some(receipt.revert_reason.pretty()), _ => None, } @@ -217,28 +224,28 @@ impl TransactionMaybeSigned { pub fn from(&self) -> Option

{ match self { Self::Signed { from, .. } => Some(*from), - Self::Unsigned(tx) => tx.from, + Self::Unsigned(tx) => tx.inner.inner.from, } } pub fn input(&self) -> Option<&[u8]> { match self { Self::Signed { tx, .. } => Some(tx.input()), - Self::Unsigned(tx) => tx.input.input().map(|i| i.as_ref()), + Self::Unsigned(tx) => tx.inner.inner.input.input().map(|i| i.as_ref()), } } pub fn to(&self) -> Option { match self { Self::Signed { tx, .. } => Some(tx.kind()), - Self::Unsigned(tx) => tx.to, + Self::Unsigned(tx) => tx.inner.inner.to, } } pub fn value(&self) -> Option { match self { Self::Signed { tx, .. } => Some(tx.value()), - Self::Unsigned(tx) => tx.value, + Self::Unsigned(tx) => tx.inner.inner.value, } } @@ -252,14 +259,16 @@ impl TransactionMaybeSigned { pub fn nonce(&self) -> Option { match self { Self::Signed { tx, .. } => Some(tx.nonce()), - Self::Unsigned(tx) => tx.nonce, + Self::Unsigned(tx) => tx.inner.inner.nonce, } } pub fn authorization_list(&self) -> Option> { match self { Self::Signed { tx, .. } => tx.authorization_list().map(|auths| auths.to_vec()), - Self::Unsigned(tx) => tx.authorization_list.as_deref().map(|auths| auths.to_vec()), + Self::Unsigned(tx) => { + tx.inner.inner.authorization_list.as_deref().map(|auths| auths.to_vec()) + } } .filter(|auths| !auths.is_empty()) } diff --git a/crates/config/Cargo.toml b/crates/config/Cargo.toml index 3bd2fa44b..8f06eb501 100644 --- a/crates/config/Cargo.toml +++ b/crates/config/Cargo.toml @@ -14,13 +14,15 @@ repository.workspace = true workspace = true [dependencies] +seismic-prelude.workspace = true + foundry-block-explorers = { workspace = true, features = ["foundry-compilers"] } foundry-compilers = { workspace = true, features = ["svm-solc"] } alloy-chains = { workspace = true, features = ["serde"] } alloy-primitives = { workspace = true, features = ["serde"] } -revm.workspace = true +# revm.workspace = true solar-parse.workspace = true solar-interface.workspace = true diff --git a/crates/config/src/lib.rs b/crates/config/src/lib.rs index bb48b38c6..e1169fc5f 100644 --- a/crates/config/src/lib.rs +++ b/crates/config/src/lib.rs @@ -39,7 +39,7 @@ use foundry_compilers::{ RestrictionsWithVersion, VyperLanguage, }; use regex::Regex; -use revm::primitives::hardfork::SpecId; +// use revm::primitives::hardfork::SpecId; use semver::Version; use serde::{Deserialize, Serialize, Serializer}; use std::{ @@ -126,6 +126,8 @@ use bind_json::BindJsonConfig; mod compilation; pub use compilation::{CompilationRestrictions, SettingsOverrides}; +use seismic_prelude::foundry::SpecId; + /// Foundry configuration /// /// # Defaults @@ -1115,7 +1117,7 @@ impl Config { } } } - + if let Some(solc) = &self.solc { let solc = match solc { SolcReq::Version(version) => { diff --git a/crates/config/src/utils.rs b/crates/config/src/utils.rs index c6fa58cfa..add17a6c9 100644 --- a/crates/config/src/utils.rs +++ b/crates/config/src/utils.rs @@ -7,7 +7,9 @@ use foundry_compilers::artifacts::{ remappings::{Remapping, RemappingError}, EvmVersion, }; +/* use revm::primitives::hardfork::SpecId; +*/ use serde::{de::Error, Deserialize, Deserializer}; use std::{ io, @@ -15,6 +17,8 @@ use std::{ str::FromStr, }; +use seismic_prelude::foundry::SpecId; + // TODO: Why do these exist separately from `Config::load`? /// Loads the config for the current project workspace. @@ -246,12 +250,12 @@ impl FromStr for Numeric { /// Returns the [SpecId] derived from [EvmVersion] #[inline] -pub fn evm_spec_id(evm_version: EvmVersion, odyssey: bool) -> SpecId { +pub fn evm_spec_id(_evm_version: EvmVersion, _odyssey: bool) -> SpecId { + /* if odyssey { return SpecId::OSAKA; } match evm_version { - EvmVersion::Mercury => SpecId::MERCURY, EvmVersion::Homestead => SpecId::HOMESTEAD, EvmVersion::TangerineWhistle => SpecId::TANGERINE, EvmVersion::SpuriousDragon => SpecId::SPURIOUS_DRAGON, @@ -267,4 +271,6 @@ pub fn evm_spec_id(evm_version: EvmVersion, odyssey: bool) -> SpecId { EvmVersion::Prague => SpecId::PRAGUE, EvmVersion::Osaka => SpecId::OSAKA, } + */ + SpecId::MERCURY } diff --git a/crates/evm/core/Cargo.toml b/crates/evm/core/Cargo.toml index 0aaa7ee41..4e6654596 100644 --- a/crates/evm/core/Cargo.toml +++ b/crates/evm/core/Cargo.toml @@ -14,7 +14,7 @@ repository.workspace = true workspace = true [dependencies] -seismic-alloy-rpc-types.workspace = true +seismic-prelude.workspace = true foundry-cheatcodes-spec.workspace = true foundry-common.workspace = true @@ -52,7 +52,7 @@ revm = { workspace = true, features = [ ] } revm-inspectors.workspace = true op-revm.workspace = true -alloy-op-evm.workspace = true +# alloy-op-evm.workspace = true auto_impl.workspace = true eyre.workspace = true diff --git a/crates/evm/core/src/backend/cow.rs b/crates/evm/core/src/backend/cow.rs index c557a523f..2ef342a5f 100644 --- a/crates/evm/core/src/backend/cow.rs +++ b/crates/evm/core/src/backend/cow.rs @@ -12,19 +12,20 @@ use crate::{ use alloy_evm::Evm; use alloy_genesis::GenesisAccount; use alloy_primitives::{Address, B256, U256}; -use alloy_rpc_types::TransactionRequest; use eyre::WrapErr; use foundry_fork_db::DatabaseError; use revm::{ bytecode::Bytecode, context_interface::result::ResultAndState, database::DatabaseRef, - primitives::{hardfork::SpecId, HashMap as Map}, + primitives::HashMap as Map, state::{Account, AccountInfo}, Database, DatabaseCommit, }; use std::{borrow::Cow, collections::BTreeMap}; +use seismic_prelude::foundry::{SpecId, TransactionRequest}; + /// A wrapper around `Backend` that ensures only `revm::DatabaseRef` functions are called. /// /// Any changes made during its existence that affect the caching layer of the underlying Database @@ -203,7 +204,7 @@ impl DatabaseExt for CowBackend<'_> { fn transact_from_tx( &mut self, - transaction: &seismic_alloy_rpc_types::SeismicTransactionRequest, + transaction: &TransactionRequest, mut env: Env, journaled_state: &mut JournaledState, inspector: &mut dyn InspectorExt, @@ -301,7 +302,11 @@ impl DatabaseRef for CowBackend<'_> { DatabaseRef::code_by_hash_ref(self.backend.as_ref(), code_hash) } - fn storage_ref(&self, address: Address, index: U256) -> Result { + fn storage_ref( + &self, + address: Address, + index: U256, + ) -> Result { DatabaseRef::storage_ref(self.backend.as_ref(), address, index) } @@ -321,7 +326,11 @@ impl Database for CowBackend<'_> { DatabaseRef::code_by_hash_ref(self, code_hash) } - fn storage(&mut self, address: Address, index: U256) -> Result { + fn storage( + &mut self, + address: Address, + index: U256, + ) -> Result { DatabaseRef::storage_ref(self, address, index) } diff --git a/crates/evm/core/src/backend/in_memory_db.rs b/crates/evm/core/src/backend/in_memory_db.rs index f444a28c5..7c2ee766b 100644 --- a/crates/evm/core/src/backend/in_memory_db.rs +++ b/crates/evm/core/src/backend/in_memory_db.rs @@ -42,7 +42,11 @@ impl DatabaseRef for MemDb { DatabaseRef::code_by_hash_ref(&self.inner, code_hash) } - fn storage_ref(&self, address: Address, index: U256) -> Result { + fn storage_ref( + &self, + address: Address, + index: U256, + ) -> Result { DatabaseRef::storage_ref(&self.inner, address, index) } @@ -63,7 +67,11 @@ impl Database for MemDb { Database::code_by_hash(&mut self.inner, code_hash) } - fn storage(&mut self, address: Address, index: U256) -> Result { + fn storage( + &mut self, + address: Address, + index: U256, + ) -> Result { Database::storage(&mut self.inner, address, index) } @@ -109,7 +117,11 @@ impl DatabaseRef for EmptyDBWrapper { fn code_by_hash_ref(&self, code_hash: B256) -> Result { Ok(self.0.code_by_hash_ref(code_hash)?) } - fn storage_ref(&self, address: Address, index: U256) -> Result { + fn storage_ref( + &self, + address: Address, + index: U256, + ) -> Result { Ok(self.0.storage_ref(address, index)?) } diff --git a/crates/evm/core/src/backend/mod.rs b/crates/evm/core/src/backend/mod.rs index 9640ed949..4fcf63463 100644 --- a/crates/evm/core/src/backend/mod.rs +++ b/crates/evm/core/src/backend/mod.rs @@ -11,9 +11,9 @@ use crate::{ use alloy_consensus::Typed2718; use alloy_evm::Evm; use alloy_genesis::GenesisAccount; -use alloy_network::{AnyRpcBlock, AnyTxEnvelope, TransactionResponse}; +use alloy_network::TransactionResponse; use alloy_primitives::{keccak256, uint, Address, TxKind, B256, U256}; -use alloy_rpc_types::{BlockNumberOrTag, Transaction, TransactionRequest}; +use alloy_rpc_types::{BlockNumberOrTag, Transaction}; use eyre::Context; use foundry_common::{is_known_system_sender, SYSTEM_TRANSACTION_TYPE}; pub use foundry_fork_db::{cache::BlockchainDbMeta, BlockchainDb, SharedBackend}; @@ -33,6 +33,8 @@ use std::{ time::Instant, }; +use seismic_prelude::foundry::{AnyRpcBlock, AnyTxEnvelope}; + mod diagnostic; pub use diagnostic::RevertDiagnostic; @@ -48,6 +50,8 @@ pub use in_memory_db::{EmptyDBWrapper, FoundryEvmInMemoryDB, MemDb}; mod snapshot; pub use snapshot::{BackendStateSnapshot, RevertStateSnapshotAction, StateSnapshot}; +use seismic_prelude::foundry::TransactionRequest; + // A `revm::Database` that is used in forking mode type ForkDB = CacheDB; @@ -212,7 +216,7 @@ pub trait DatabaseExt: Database + DatabaseCommit { /// Executes a given TransactionRequest, commits the new state to the DB fn transact_from_tx( &mut self, - transaction: &seismic_alloy_rpc_types::SeismicTransactionRequest, + transaction: &TransactionRequest, env: Env, journaled_state: &mut JournaledState, inspector: &mut dyn InspectorExt, @@ -745,17 +749,17 @@ impl Backend { /// /// We need to track these mainly to prevent issues when switching between different evms pub(crate) fn initialize(&mut self, env: &Env) { - self.set_caller(env.tx.caller); - self.set_spec_id(env.evm_env.cfg_env.spec); + self.set_caller(env.tx.base.caller); + self.set_spec_id(env.evm_env.cfg_env.spec.into()); - let test_contract = match env.tx.kind { + let test_contract = match env.tx.base.kind { TxKind::Call(to) => to, TxKind::Create => { let nonce = self - .basic_ref(env.tx.caller) + .basic_ref(env.tx.base.caller) .map(|b| b.unwrap_or_default().nonce) .unwrap_or_default(); - env.tx.caller.create(nonce) + env.tx.base.caller.create(nonce) } }; self.set_test_contract(test_contract); @@ -848,7 +852,7 @@ impl Backend { let tx = fork.db.db.get_transaction(transaction)?; // get the block number we need to fork - if let Some(tx_block) = tx.block_number { + if let Some(tx_block) = tx.0.inner().block_number { let block = fork.db.db.get_full_block(tx_block)?; // we need to subtract 1 here because we want the state before the transaction @@ -885,7 +889,7 @@ impl Backend { for tx in full_block.inner.transactions.txns() { // System transactions such as on L2s don't contain any pricing info so we skip them // otherwise this would cause reverts - if is_known_system_sender(tx.inner().inner.signer()) || + if is_known_system_sender(tx.0.inner().inner.signer()) || tx.ty() == SYSTEM_TRANSACTION_TYPE { trace!(tx=?tx.tx_hash(), "skipping system transaction"); @@ -894,12 +898,12 @@ impl Backend { if tx.tx_hash() == tx_hash { // found the target transaction - return Ok(Some(tx.inner.clone())) + return Ok(Some(tx.0.inner().clone())) } trace!(tx=?tx.tx_hash(), "committing transaction"); commit_transaction( - &tx.inner, + &tx.0.inner(), &mut env.as_env_mut(), journaled_state, fork, @@ -962,7 +966,7 @@ impl DatabaseExt for Backend { // there might be the case where the snapshot was created during `setUp` with // another caller, so we need to ensure the caller account is present in the // journaled state and database - let caller = current.tx.caller; + let caller = current.tx.base.caller; journaled_state.state.entry(caller).or_insert_with(|| { let caller_account = current_state .state @@ -1069,8 +1073,8 @@ impl DatabaseExt for Backend { if let Some(active) = self.active_fork_mut() { active.journaled_state = active_journaled_state.clone(); - let caller = env.tx.caller; - let caller_account = active.journaled_state.state.get(&env.tx.caller).cloned(); + let caller = env.tx.base.caller; + let caller_account = active.journaled_state.state.get(&env.tx.base.caller).cloned(); let target_fork = self.inner.get_fork_mut(idx); // depth 0 will be the default value when the fork was created @@ -1135,11 +1139,11 @@ impl DatabaseExt for Backend { // another edge case where a fork is created and selected during setup with not // necessarily the same caller as for the test, however we must always // ensure that fork's state contains the current sender - let caller = env.tx.caller; + let caller = env.tx.base.caller; fork.journaled_state.state.entry(caller).or_insert_with(|| { let caller_account = active_journaled_state .state - .get(&env.tx.caller) + .get(&env.tx.base.caller) .map(|acc| acc.info.clone()) .unwrap_or_default(); @@ -1285,7 +1289,7 @@ impl DatabaseExt for Backend { let fork = self.inner.get_fork_by_id_mut(id)?; commit_transaction( - &tx.inner, + &tx.0.inner(), &mut env.as_env_mut(), journaled_state, fork, @@ -1297,7 +1301,7 @@ impl DatabaseExt for Backend { fn transact_from_tx( &mut self, - tx: &seismic_alloy_rpc_types::SeismicTransactionRequest, + tx: &TransactionRequest, mut env: Env, journaled_state: &mut JournaledState, inspector: &mut dyn InspectorExt, @@ -1514,7 +1518,11 @@ impl DatabaseRef for Backend { } } - fn storage_ref(&self, address: Address, index: U256) -> Result { + fn storage_ref( + &self, + address: Address, + index: U256, + ) -> Result { if let Some(db) = self.active_fork_db() { DatabaseRef::storage_ref(db, address, index) } else { @@ -1559,7 +1567,11 @@ impl Database for Backend { } } - fn storage(&mut self, address: Address, index: U256) -> Result { + fn storage( + &mut self, + address: Address, + index: U256, + ) -> Result { if let Some(db) = self.active_fork_db_mut() { Ok(Database::storage(db, address, index)?) } else { @@ -1855,7 +1867,7 @@ impl Default for BackendInner { pub(crate) fn update_current_env_with_fork_env(current: &mut EnvMut<'_>, fork: Env) { *current.block = fork.evm_env.block_env; *current.cfg = fork.evm_env.cfg_env; - current.tx.chain_id = fork.tx.chain_id; + current.tx.base.chain_id = fork.tx.base.chain_id; } /// Clones the data of the given `accounts` from the `active` database into the `fork_db` diff --git a/crates/evm/core/src/either_evm.rs b/crates/evm/core/src/either_evm.rs index 2ef9f894f..10e1221e0 100644 --- a/crates/evm/core/src/either_evm.rs +++ b/crates/evm/core/src/either_evm.rs @@ -1,7 +1,6 @@ -use alloy_evm::{eth::EthEvmContext, Database, EthEvm, Evm, EvmEnv}; -use alloy_op_evm::OpEvm; +use alloy_evm::{Database, Evm, EvmEnv}; use alloy_primitives::{Address, Bytes}; -use op_revm::{OpContext, OpHaltReason, OpSpecId, OpTransaction, OpTransactionError}; +use op_revm::{OpSpecId, OpTransactionError}; use revm::{ context::{ result::{EVMError, ExecutionResult, HaltReason, ResultAndState}, @@ -9,10 +8,11 @@ use revm::{ }, handler::PrecompileProvider, interpreter::InterpreterResult, - primitives::hardfork::SpecId, DatabaseCommit, Inspector, }; +use seismic_prelude::foundry::{OpHaltReason, OpTransaction, SeismicContext, SeismicEvm, SpecId}; + /// Alias for result type returned by [`Evm::transact`] methods. type EitherEvmResult = Result, EVMError>; @@ -38,19 +38,27 @@ pub enum EitherEvm where DB: Database, { + /* /// [`EthEvm`] implementation. Eth(EthEvm), /// [`OpEvm`] implementation. Op(OpEvm), + */ + Seismic(SeismicEvm), } impl EitherEvm where DB: Database, + /* I: Inspector> + Inspector>, P: PrecompileProvider, Output = InterpreterResult> + PrecompileProvider, Output = InterpreterResult>, + */ + I: Inspector>, + P: PrecompileProvider, Output = InterpreterResult>, { + #[allow(dead_code)] /// Converts the [`EthEvm::transact`] result to [`EitherEvmResult`]. fn map_eth_result( &self, @@ -65,6 +73,7 @@ where } } + #[allow(dead_code)] /// Converts the [`EthEvm::transact_commit`] result to [`EitherExecResult`]. fn map_exec_result( &self, @@ -95,12 +104,16 @@ where impl Evm for EitherEvm where DB: Database, + /* I: Inspector> + Inspector>, P: PrecompileProvider, Output = InterpreterResult> + PrecompileProvider, Output = InterpreterResult>, + */ + I: Inspector>, + P: PrecompileProvider, Output = InterpreterResult>, { type DB = DB; - type Error = EVMError; + type Error = EVMError; type HaltReason = OpHaltReason; type Tx = OpTransaction; type Inspector = I; @@ -109,22 +122,31 @@ where fn chain_id(&self) -> u64 { match self { + /* Self::Eth(evm) => evm.chain_id(), Self::Op(evm) => evm.chain_id(), + */ + Self::Seismic(evm) => evm.chain_id(), } } fn block(&self) -> &BlockEnv { match self { + /* Self::Eth(evm) => evm.block(), Self::Op(evm) => evm.block(), + */ + Self::Seismic(evm) => evm.block(), } } fn db_mut(&mut self) -> &mut Self::DB { match self { + /* Self::Eth(evm) => evm.db_mut(), Self::Op(evm) => evm.db_mut(), + */ + Self::Seismic(evm) => evm.db_mut(), } } @@ -133,8 +155,11 @@ where Self: Sized, { match self { + /* Self::Eth(evm) => evm.into_db(), Self::Op(evm) => evm.into_db(), + */ + Self::Seismic(evm) => evm.into_db(), } } @@ -143,60 +168,84 @@ where Self: Sized, { match self { + /* Self::Eth(evm) => evm.finish(), Self::Op(evm) => { let (db, env) = evm.finish(); (db, map_env(env)) } + */ + Self::Seismic(evm) => evm.finish(), } } fn precompiles(&self) -> &Self::Precompiles { match self { + /* Self::Eth(evm) => evm.precompiles(), Self::Op(evm) => evm.precompiles(), + */ + Self::Seismic(evm) => evm.precompiles(), } } fn precompiles_mut(&mut self) -> &mut Self::Precompiles { match self { + /* Self::Eth(evm) => evm.precompiles_mut(), Self::Op(evm) => evm.precompiles_mut(), + */ + Self::Seismic(evm) => evm.precompiles_mut(), } } fn inspector(&self) -> &Self::Inspector { match self { + /* Self::Eth(evm) => evm.inspector(), Self::Op(evm) => evm.inspector(), + */ + Self::Seismic(evm) => evm.inspector(), } } fn inspector_mut(&mut self) -> &mut Self::Inspector { match self { + /* Self::Eth(evm) => evm.inspector_mut(), Self::Op(evm) => evm.inspector_mut(), + */ + Self::Seismic(evm) => evm.inspector_mut(), } } fn enable_inspector(&mut self) { match self { + /* Self::Eth(evm) => evm.enable_inspector(), Self::Op(evm) => evm.enable_inspector(), + */ + Self::Seismic(evm) => evm.enable_inspector(), } } fn disable_inspector(&mut self) { match self { + /* Self::Eth(evm) => evm.disable_inspector(), Self::Op(evm) => evm.disable_inspector(), + */ + Self::Seismic(evm) => evm.disable_inspector(), } } fn set_inspector_enabled(&mut self, enabled: bool) { match self { + /* Self::Eth(evm) => evm.set_inspector_enabled(enabled), Self::Op(evm) => evm.set_inspector_enabled(enabled), + */ + Self::Seismic(evm) => evm.set_inspector_enabled(enabled), } } @@ -205,8 +254,11 @@ where Self: Sized, { match self { + /* Self::Eth(evm) => evm.into_env(), Self::Op(evm) => map_env(evm.into_env()), + */ + Self::Seismic(evm) => evm.into_env(), } } @@ -215,11 +267,14 @@ where tx: impl alloy_evm::IntoTxEnv, ) -> Result, Self::Error> { match self { + /* Self::Eth(evm) => { let eth = evm.transact(tx.into_tx_env().base); self.map_eth_result(eth) } Self::Op(evm) => evm.transact(tx), + */ + Self::Seismic(evm) => evm.transact(tx), } } @@ -231,11 +286,14 @@ where Self::DB: DatabaseCommit, { match self { + /* Self::Eth(evm) => { let eth = evm.transact_commit(tx.into_tx_env().base); self.map_exec_result(eth) } Self::Op(evm) => evm.transact_commit(tx), + */ + Self::Seismic(evm) => evm.transact_commit(tx), } } @@ -244,11 +302,14 @@ where tx: Self::Tx, ) -> Result, Self::Error> { match self { + /* Self::Eth(evm) => { let res = evm.transact_raw(tx.base); self.map_eth_result(res) } Self::Op(evm) => evm.transact_raw(tx), + */ + Self::Seismic(evm) => evm.transact_raw(tx), } } @@ -259,15 +320,19 @@ where data: Bytes, ) -> Result, Self::Error> { match self { + /* Self::Eth(evm) => { let eth = evm.transact_system_call(caller, contract, data); self.map_eth_result(eth) } Self::Op(evm) => evm.transact_system_call(caller, contract, data), + */ + Self::Seismic(evm) => evm.transact_system_call(caller, contract, data), } } } +#[allow(dead_code)] /// Maps [`EvmEnv`] to [`EvmEnv`]. fn map_env(env: EvmEnv) -> EvmEnv { let eth_spec_id = env.spec_id().into_eth_spec(); diff --git a/crates/evm/core/src/env.rs b/crates/evm/core/src/env.rs index a7708f132..8a3a19ef5 100644 --- a/crates/evm/core/src/env.rs +++ b/crates/evm/core/src/env.rs @@ -1,10 +1,14 @@ -pub use alloy_evm::EvmEnv; +pub use alloy_evm::EvmEnv as AlloyEvmEnv; use revm::{ - context::{BlockEnv, CfgEnv, JournalInner, JournalTr, TxEnv}, + context::{BlockEnv, JournalInner, JournalTr}, + /* primitives::hardfork::SpecId, + */ Context, Database, Journal, JournalEntry, }; +use seismic_prelude::foundry::{CfgEnv, EvmEnv, SpecId, TxEnv}; + /// Helper container type for [`EvmEnv`] and [`TxEnv`]. #[derive(Clone, Debug, Default)] pub struct Env { diff --git a/crates/evm/core/src/evm.rs b/crates/evm/core/src/evm.rs index ab216fe41..53c28b694 100644 --- a/crates/evm/core/src/evm.rs +++ b/crates/evm/core/src/evm.rs @@ -4,21 +4,17 @@ use crate::{ backend::DatabaseExt, constants::DEFAULT_CREATE2_DEPLOYER_CODEHASH, Env, InspectorExt, }; use alloy_consensus::constants::KECCAK_EMPTY; -use alloy_evm::{ - eth::EthEvmContext, - precompiles::{DynPrecompile, PrecompilesMap}, - Evm, EvmEnv, -}; +use alloy_evm::{precompiles::DynPrecompile, Evm, EvmEnv}; use alloy_primitives::{Address, Bytes, U256}; use foundry_fork_db::DatabaseError; use revm::{ context::{ result::{EVMError, HaltReason, ResultAndState}, - BlockEnv, CfgEnv, ContextTr, CreateScheme, Evm as RevmEvm, JournalTr, LocalContext, TxEnv, + BlockEnv, ContextTr, CreateScheme, JournalTr, LocalContext, }, handler::{ - instructions::EthInstructions, EthFrame, EthPrecompiles, FrameInitOrResult, FrameResult, - Handler, ItemOrResult, MainnetHandler, + EthFrame, EthPrecompiles, FrameInitOrResult, FrameResult, Handler, ItemOrResult, + MainnetHandler, }, inspector::InspectorHandler, interpreter::{ @@ -27,10 +23,16 @@ use revm::{ InterpreterResult, }, precompile::{secp256r1::P256VERIFY, PrecompileSpecId, Precompiles}, - primitives::hardfork::SpecId, Context, ExecuteEvm, Journal, }; +use seismic_prelude::foundry::{ + CfgEnv, EthEvmContext, EthInstructions, RevmEvm, SeismicChain, SeismicPrecompiles, SpecId, + TxEnv, +}; +pub type PrecompileCtx<'db> = EthEvmContext<&'db mut dyn DatabaseExt>; +pub type SeismicFoundryPrecompiles<'db> = SeismicPrecompiles>; + pub fn new_evm_with_inspector<'i, 'db, I: InspectorExt + ?Sized>( db: &'db mut dyn DatabaseExt, env: Env, @@ -39,13 +41,13 @@ pub fn new_evm_with_inspector<'i, 'db, I: InspectorExt + ?Sized>( let ctx = EthEvmContext { journaled_state: { let mut journal = Journal::new(db); - journal.set_spec_id(env.evm_env.cfg_env.spec); + journal.set_spec_id(env.evm_env.cfg_env.spec.into_eth_spec()); journal }, block: env.evm_env.block_env, cfg: env.evm_env.cfg_env, tx: env.tx, - chain: (), + chain: SeismicChain::default(), local: LocalContext::default(), error: Ok(()), }; @@ -85,24 +87,34 @@ pub fn new_evm_with_existing_context<'a>( evm } +#[allow(unused_variables)] +fn apply_precompile<'db, F>(p: &mut SeismicPrecompiles>, address: &Address, f: F) +where + F: FnOnce(Option) -> Option, +{ + todo!("Find a way to add this precompile to SeismicPrecompiles") +} + /// Conditionally inject additional precompiles into the EVM context. fn inject_precompiles(evm: &mut FoundryEvm<'_, impl InspectorExt>) { if evm.inspector().is_odyssey() { - evm.precompiles_mut().apply_precompile(P256VERIFY.address(), |_| { + apply_precompile(evm.precompiles_mut(), P256VERIFY.address(), |_| { Some(DynPrecompile::from(P256VERIFY.precompile())) }); } } /// Get the precompiles for the given spec. -fn get_precompiles(spec: SpecId) -> PrecompilesMap { +fn get_precompiles(spec: SpecId) -> &'static Precompiles { + let spec = spec.into_eth_spec(); + /* PrecompilesMap::from_static( - EthPrecompiles { - precompiles: Precompiles::new(PrecompileSpecId::from_spec_id(spec)), - spec, - } - .precompiles, + */ + EthPrecompiles { precompiles: Precompiles::new(PrecompileSpecId::from_spec_id(spec)), spec } + .precompiles + /* ) + */ } /// Get the call inputs for the CREATE2 factory. @@ -132,7 +144,7 @@ pub struct FoundryEvm<'db, I: InspectorExt> { EthEvmContext<&'db mut dyn DatabaseExt>, I, EthInstructions>, - PrecompilesMap, + SeismicPrecompiles>, >, } @@ -155,7 +167,7 @@ impl FoundryEvm<'_, I> { } impl<'db, I: InspectorExt> Evm for FoundryEvm<'db, I> { - type Precompiles = PrecompilesMap; + type Precompiles = SeismicFoundryPrecompiles<'db>; type Inspector = I; type DB = &'db mut dyn DatabaseExt; type Error = EVMError; @@ -164,31 +176,31 @@ impl<'db, I: InspectorExt> Evm for FoundryEvm<'db, I> { type Tx = TxEnv; fn chain_id(&self) -> u64 { - self.inner.ctx.cfg.chain_id + self.inner.0.ctx.cfg.chain_id } fn block(&self) -> &BlockEnv { - &self.inner.block + &self.inner.0.block } fn db_mut(&mut self) -> &mut Self::DB { - self.inner.db() + self.inner.0.db() } fn precompiles(&self) -> &Self::Precompiles { - &self.inner.precompiles + &self.inner.0.precompiles } fn precompiles_mut(&mut self) -> &mut Self::Precompiles { - &mut self.inner.precompiles + &mut self.inner.0.precompiles } fn inspector(&self) -> &Self::Inspector { - &self.inner.inspector + &self.inner.0.inspector } fn inspector_mut(&mut self) -> &mut Self::Inspector { - &mut self.inner.inspector + &mut self.inner.0.inspector } fn set_inspector_enabled(&mut self, _enabled: bool) { @@ -200,7 +212,7 @@ impl<'db, I: InspectorExt> Evm for FoundryEvm<'db, I> { tx: Self::Tx, ) -> Result, Self::Error> { let mut handler = FoundryHandler::<_>::default(); - self.inner.set_tx(tx); + self.inner.0.set_tx(tx); handler.inspect_run(&mut self.inner) } @@ -217,23 +229,30 @@ impl<'db, I: InspectorExt> Evm for FoundryEvm<'db, I> { where Self: Sized, { - let Context { block: block_env, cfg: cfg_env, journaled_state, .. } = self.inner.ctx; + let Context { block: block_env, cfg: cfg_env, journaled_state, .. } = self.inner.0.ctx; (journaled_state.database, EvmEnv { block_env, cfg_env }) } } impl<'db, I: InspectorExt> Deref for FoundryEvm<'db, I> { - type Target = Context; + type Target = Context< + BlockEnv, + TxEnv, + CfgEnv, + &'db mut dyn DatabaseExt, + Journal<&'db mut (dyn DatabaseExt)>, + SeismicChain, + >; fn deref(&self) -> &Self::Target { - &self.inner.ctx + &self.inner.0.ctx } } impl DerefMut for FoundryEvm<'_, I> { fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.inner.ctx + &mut self.inner.0.ctx } } @@ -244,7 +263,7 @@ pub struct FoundryHandler<'db, I: InspectorExt> { EthEvmContext<&'db mut dyn DatabaseExt>, I, EthInstructions>, - PrecompilesMap, + SeismicPrecompiles>, >, EVMError, EthFrame< @@ -252,7 +271,7 @@ pub struct FoundryHandler<'db, I: InspectorExt> { EthEvmContext<&'db mut dyn DatabaseExt>, I, EthInstructions>, - PrecompilesMap, + SeismicPrecompiles>, >, EVMError, EthInterpreter, @@ -272,7 +291,7 @@ impl<'db, I: InspectorExt> Handler for FoundryHandler<'db, I> { EthEvmContext<&'db mut dyn DatabaseExt>, I, EthInstructions>, - PrecompilesMap, + SeismicPrecompiles>, >; type Error = EVMError; type Frame = EthFrame< @@ -280,7 +299,7 @@ impl<'db, I: InspectorExt> Handler for FoundryHandler<'db, I> { EthEvmContext<&'db mut dyn DatabaseExt>, I, EthInstructions>, - PrecompilesMap, + SeismicPrecompiles>, >, EVMError, EthInterpreter, @@ -296,7 +315,7 @@ impl<'db, I: InspectorExt> Handler for FoundryHandler<'db, I> { let result = if self .create2_overrides .last() - .is_some_and(|(depth, _)| *depth == evm.journal().depth) + .is_some_and(|(depth, _)| *depth == evm.0.journal().depth) { let (_, call_inputs) = self.create2_overrides.pop().unwrap(); let FrameResult::Call(mut result) = result else { @@ -342,23 +361,23 @@ impl InspectorHandler for FoundryHandler<'_, I> { let CreateScheme::Create2 { salt } = inputs.scheme else { return Ok(frame_or_result) }; - if !evm.inspector.should_use_create2_factory(&mut evm.ctx, inputs) { + if !evm.0.inspector.should_use_create2_factory(&mut evm.0.ctx, inputs) { return Ok(frame_or_result) } let gas_limit = inputs.gas_limit; // Get CREATE2 deployer. - let create2_deployer = evm.inspector.create2_deployer(); + let create2_deployer = evm.0.inspector.create2_deployer(); // Generate call inputs for CREATE2 factory. let call_inputs = get_create2_factory_call_inputs(salt, inputs, create2_deployer); // Push data about current override to the stack. - self.create2_overrides.push((evm.journal().depth(), call_inputs.clone())); + self.create2_overrides.push((evm.0.journal().depth(), call_inputs.clone())); // Sanity check that CREATE2 deployer exists. - let code_hash = evm.journal().load_account(create2_deployer)?.info.code_hash; + let code_hash = evm.0.journal().load_account(create2_deployer)?.info.code_hash; if code_hash == KECCAK_EMPTY { return Ok(ItemOrResult::Result(FrameResult::Call(CallOutcome { result: InterpreterResult { diff --git a/crates/evm/core/src/fork/database.rs b/crates/evm/core/src/fork/database.rs index adff54b44..f254169b3 100644 --- a/crates/evm/core/src/fork/database.rs +++ b/crates/evm/core/src/fork/database.rs @@ -164,7 +164,11 @@ impl Database for ForkedDatabase { Database::code_by_hash(&mut self.cache_db, code_hash) } - fn storage(&mut self, address: Address, index: U256) -> Result { + fn storage( + &mut self, + address: Address, + index: U256, + ) -> Result { Database::storage(&mut self.cache_db, address, index) } @@ -184,7 +188,11 @@ impl DatabaseRef for ForkedDatabase { self.cache_db.code_by_hash_ref(code_hash) } - fn storage_ref(&self, address: Address, index: U256) -> Result { + fn storage_ref( + &self, + address: Address, + index: U256, + ) -> Result { DatabaseRef::storage_ref(&self.cache_db, address, index) } @@ -209,7 +217,11 @@ pub struct ForkDbStateSnapshot { } impl ForkDbStateSnapshot { - fn get_storage(&self, address: Address, index: U256) -> Option { + fn get_storage( + &self, + address: Address, + index: U256, + ) -> Option { self.local .cache .accounts @@ -244,7 +256,11 @@ impl DatabaseRef for ForkDbStateSnapshot { self.local.code_by_hash_ref(code_hash) } - fn storage_ref(&self, address: Address, index: U256) -> Result { + fn storage_ref( + &self, + address: Address, + index: U256, + ) -> Result { match self.local.cache.accounts.get(&address) { Some(account) => match account.storage.get(&index) { Some(entry) => Ok(*entry), diff --git a/crates/evm/core/src/fork/init.rs b/crates/evm/core/src/fork/init.rs index 8b23ae5b8..95effe85c 100644 --- a/crates/evm/core/src/fork/init.rs +++ b/crates/evm/core/src/fork/init.rs @@ -1,11 +1,13 @@ -use crate::{utils::apply_chain_and_block_specific_env_changes, AsEnvMut, Env, EvmEnv}; +use crate::{utils::apply_chain_and_block_specific_env_changes, AsEnvMut, Env}; use alloy_consensus::BlockHeader; use alloy_primitives::Address; use alloy_provider::{network::BlockResponse, Network, Provider}; use alloy_rpc_types::BlockNumberOrTag; use eyre::WrapErr; use foundry_common::NON_ARCHIVE_NODE_WARNING; -use revm::context::{BlockEnv, CfgEnv, TxEnv}; + +use revm::context::{BlockEnv, TxEnv as RevmTxEnv}; +use seismic_prelude::foundry::{CfgEnv, EvmEnv, TxEnv}; /// Initializes a REVM block environment based on a forked /// ethereum provider. @@ -66,13 +68,13 @@ pub async fn environment>( ..Default::default() }, }, - tx: TxEnv { + tx: TxEnv::new(RevmTxEnv { caller: origin, gas_price: gas_price.unwrap_or(fork_gas_price), chain_id: Some(override_chain_id.unwrap_or(rpc_chain_id)), gas_limit: block.header().gas_limit() as u64, ..Default::default() - }, + }), }; apply_chain_and_block_specific_env_changes::(env.as_env_mut(), &block); diff --git a/crates/evm/core/src/lib.rs b/crates/evm/core/src/lib.rs index 76d6be35d..716f0d8c1 100644 --- a/crates/evm/core/src/lib.rs +++ b/crates/evm/core/src/lib.rs @@ -6,13 +6,15 @@ #![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] use crate::constants::DEFAULT_CREATE2_DEPLOYER; -use alloy_evm::eth::EthEvmContext; +// use alloy_evm::eth::EthEvmContext; use alloy_primitives::Address; use auto_impl::auto_impl; use backend::DatabaseExt; use revm::{inspector::NoOpInspector, interpreter::CreateInputs, Inspector}; use revm_inspectors::access_list::AccessListInspector; +use seismic_prelude::foundry::EthEvmContext; + #[macro_use] extern crate tracing; diff --git a/crates/evm/core/src/opts.rs b/crates/evm/core/src/opts.rs index 11a602aab..3bc363003 100644 --- a/crates/evm/core/src/opts.rs +++ b/crates/evm/core/src/opts.rs @@ -2,18 +2,19 @@ use super::fork::environment; use crate::{ constants::DEFAULT_CREATE2_DEPLOYER, fork::{configure_env, CreateFork}, - EvmEnv, }; use alloy_primitives::{Address, B256, U256}; -use alloy_provider::{network::AnyRpcBlock, Provider}; +use alloy_provider::Provider; use eyre::WrapErr; use foundry_common::{provider::ProviderBuilder, ALCHEMY_FREE_TIER_CUPS}; use foundry_config::{Chain, Config, GasLimit}; -use revm::context::{BlockEnv, TxEnv}; +use revm::context::{BlockEnv, TxEnv as RevmTxEnv}; use serde::{Deserialize, Serialize}; use std::fmt::Write; use url::Url; +use seismic_prelude::foundry::{AnyRpcBlock, EvmEnv, TxEnv}; + #[derive(Clone, Debug, Serialize, Deserialize)] pub struct EvmOpts { /// The EVM environment configuration. @@ -167,12 +168,12 @@ impl EvmOpts { ..Default::default() }, }, - tx: TxEnv { + tx: TxEnv::new(RevmTxEnv { gas_price: self.env.gas_price.unwrap_or_default().into(), gas_limit: self.gas_limit(), caller: self.sender, ..Default::default() - }, + }), } } diff --git a/crates/evm/core/src/utils.rs b/crates/evm/core/src/utils.rs index 69063d42d..0e850f791 100644 --- a/crates/evm/core/src/utils.rs +++ b/crates/evm/core/src/utils.rs @@ -5,7 +5,7 @@ use alloy_network::{ EIP1559_TX_TYPE_ID, EIP2930_TX_TYPE_ID, EIP4844_TX_TYPE_ID, EIP7702_TX_TYPE_ID, LEGACY_TX_TYPE_ID, }, - AnyTxEnvelope, TransactionResponse, + TransactionResponse, }; use alloy_primitives::{Address, Selector, TxKind, B256, U256}; use alloy_provider::{network::BlockResponse, Network}; @@ -17,6 +17,8 @@ pub use revm::state::EvmState as StateChangeset; use crate::EnvMut; +use seismic_prelude::foundry::{AnyTxEnvelope, SeismicTransactionRequest}; + /// Depending on the configured chain id and block number this should apply any specific changes /// /// - checks for prevrandao mixhash after merge @@ -105,28 +107,29 @@ pub fn configure_tx_env(env: &mut EnvMut<'_>, tx: &Transaction) { /// impersonated transaction by resetting the `env.tx.caller` field to `impersonated_from`. pub fn configure_tx_req_env( env: &mut EnvMut<'_>, - tx: &seismic_alloy_rpc_types::SeismicTransactionRequest, + tx: &SeismicTransactionRequest, impersonated_from: Option
, ) -> eyre::Result<()> { - let seismic_alloy_rpc_types::SeismicTransactionRequest { - inner: TransactionRequest { - nonce, - from, - to, - value, - gas_price, - gas, - max_fee_per_gas, - max_priority_fee_per_gas, - max_fee_per_blob_gas, - ref input, - chain_id, - ref blob_versioned_hashes, - ref access_list, - transaction_type, - ref authorization_list, - sidecar: _, - }, + let SeismicTransactionRequest { + inner: + TransactionRequest { + nonce, + from, + to, + value, + gas_price, + gas, + max_fee_per_gas, + max_priority_fee_per_gas, + max_fee_per_blob_gas, + ref input, + chain_id, + ref blob_versioned_hashes, + ref access_list, + transaction_type, + ref authorization_list, + sidecar: _, + }, seismic_elements: _, } = *tx; @@ -144,34 +147,34 @@ pub fn configure_tx_req_env( LEGACY_TX_TYPE_ID } }); - env.tx.tx_type = tx_type; + env.tx.base.tx_type = tx_type; // If no `to` field then set create kind: https://eips.ethereum.org/EIPS/eip-2470#deployment-transaction - env.tx.kind = to.unwrap_or(TxKind::Create); + env.tx.base.kind = to.unwrap_or(TxKind::Create); // If the transaction is impersonated, we need to set the caller to the from // address Ref: https://github.com/foundry-rs/foundry/issues/9541 - env.tx.caller = + env.tx.base.caller = impersonated_from.unwrap_or(from.ok_or_else(|| eyre::eyre!("missing `from` field"))?); - env.tx.gas_limit = gas.ok_or_else(|| eyre::eyre!("missing `gas` field"))?; - env.tx.nonce = nonce.unwrap_or_default(); - env.tx.value = value.unwrap_or_default(); - env.tx.data = input.input().cloned().unwrap_or_default(); - env.tx.chain_id = chain_id; + env.tx.base.gas_limit = gas.ok_or_else(|| eyre::eyre!("missing `gas` field"))?; + env.tx.base.nonce = nonce.unwrap_or_default(); + env.tx.base.value = value.unwrap_or_default(); + env.tx.base.data = input.input().cloned().unwrap_or_default(); + env.tx.base.chain_id = chain_id; // Type 1, EIP-2930 - env.tx.access_list = access_list.clone().unwrap_or_default(); + env.tx.base.access_list = access_list.clone().unwrap_or_default(); // Type 2, EIP-1559 - env.tx.gas_price = gas_price.or(max_fee_per_gas).unwrap_or_default(); - env.tx.gas_priority_fee = max_priority_fee_per_gas; + env.tx.base.gas_price = gas_price.or(max_fee_per_gas).unwrap_or_default(); + env.tx.base.gas_priority_fee = max_priority_fee_per_gas; // Type 3, EIP-4844 - env.tx.blob_hashes = blob_versioned_hashes.clone().unwrap_or_default(); - env.tx.max_fee_per_blob_gas = max_fee_per_blob_gas.unwrap_or_default(); + env.tx.base.blob_hashes = blob_versioned_hashes.clone().unwrap_or_default(); + env.tx.base.max_fee_per_blob_gas = max_fee_per_blob_gas.unwrap_or_default(); // Type 4, EIP-7702 if let Some(authorization_list) = authorization_list { - env.tx.set_signed_authorization(authorization_list.clone()); + env.tx.base.set_signed_authorization(authorization_list.clone()); } Ok(()) diff --git a/crates/evm/evm/Cargo.toml b/crates/evm/evm/Cargo.toml index 06074e305..8321f93f4 100644 --- a/crates/evm/evm/Cargo.toml +++ b/crates/evm/evm/Cargo.toml @@ -14,6 +14,8 @@ repository.workspace = true workspace = true [dependencies] +seismic-prelude.workspace = true + foundry-cheatcodes.workspace = true foundry-common.workspace = true foundry-compilers.workspace = true diff --git a/crates/evm/evm/src/executors/builder.rs b/crates/evm/evm/src/executors/builder.rs index a60934046..4418bcf8c 100644 --- a/crates/evm/evm/src/executors/builder.rs +++ b/crates/evm/evm/src/executors/builder.rs @@ -1,6 +1,10 @@ use crate::{executors::Executor, inspectors::InspectorStackBuilder}; use foundry_evm_core::{backend::Backend, Env}; +/* use revm::primitives::hardfork::SpecId; +*/ + +use seismic_prelude::foundry::SpecId; /// The builder that allows to configure an evm [`Executor`] which a stack of optional /// [`revm::Inspector`]s, such as [`Cheatcodes`]. diff --git a/crates/evm/evm/src/executors/mod.rs b/crates/evm/evm/src/executors/mod.rs index bfd57a4a0..705a3ea9d 100644 --- a/crates/evm/evm/src/executors/mod.rs +++ b/crates/evm/evm/src/executors/mod.rs @@ -27,20 +27,20 @@ use foundry_evm_core::{ }, decode::{RevertDecoder, SkipReason}, utils::StateChangeset, - EvmEnv, InspectorExt, + InspectorExt, }; use foundry_evm_coverage::HitMaps; use foundry_evm_traces::{SparsedTraceArena, TraceMode}; use revm::{ bytecode::Bytecode, - context::{BlockEnv, TxEnv}, + context::{BlockEnv, TxEnv as RevmTxEnv}, context_interface::{ result::{ExecutionResult, Output, ResultAndState}, transaction::SignedAuthorization, }, database::{DatabaseCommit, DatabaseRef}, interpreter::{return_ok, InstructionResult}, - primitives::hardfork::SpecId, + // primitives::hardfork::SpecId, }; use std::{ borrow::Cow, @@ -59,6 +59,8 @@ pub use invariant::InvariantExecutor; mod trace; pub use trace::TracingExecutor; +use seismic_prelude::foundry::{EvmEnv, SpecId}; + sol! { interface ITest { function setUp() external; @@ -661,7 +663,7 @@ impl Executor { ..self.env().evm_env.block_env.clone() }, }, - tx: TxEnv { + tx: RevmTxEnv { caller, kind, data, @@ -671,8 +673,9 @@ impl Executor { gas_priority_fee: None, gas_limit: self.gas_limit, chain_id: Some(self.env().evm_env.cfg_env.chain_id), - ..self.env().tx.clone() - }, + ..self.env().tx.base.clone() + } + .into(), } } @@ -950,7 +953,7 @@ fn convert_executed_result( } }; let gas = revm::interpreter::gas::calculate_initial_tx_gas( - env.evm_env.cfg_env.spec, + env.evm_env.cfg_env.spec.into(), &env.tx.data, env.tx.kind.is_create(), env.tx.access_list.len().try_into()?, diff --git a/crates/evm/evm/src/executors/trace.rs b/crates/evm/evm/src/executors/trace.rs index c58ee8ddd..cdb9c0a08 100644 --- a/crates/evm/evm/src/executors/trace.rs +++ b/crates/evm/evm/src/executors/trace.rs @@ -7,9 +7,13 @@ use foundry_compilers::artifacts::EvmVersion; use foundry_config::{utils::evm_spec_id, Chain, Config}; use foundry_evm_core::{backend::Backend, fork::CreateFork, opts::EvmOpts}; use foundry_evm_traces::TraceMode; +/* use revm::primitives::hardfork::SpecId; +*/ use std::ops::{Deref, DerefMut}; +use seismic_prelude::foundry::SpecId; + /// A default executor with tracing enabled pub struct TracingExecutor { executor: Executor, diff --git a/crates/evm/evm/src/inspectors/stack.rs b/crates/evm/evm/src/inspectors/stack.rs index 597648849..5b2f20161 100644 --- a/crates/evm/evm/src/inspectors/stack.rs +++ b/crates/evm/evm/src/inspectors/stack.rs @@ -2,7 +2,7 @@ use super::{ Cheatcodes, CheatsConfig, ChiselState, CoverageCollector, CustomPrintTracer, Fuzzer, LogCollector, RevertDiagnostic, ScriptExecutionInspector, TracingInspector, }; -use alloy_evm::{eth::EthEvmContext, Evm}; +use alloy_evm::Evm; use alloy_primitives::{ map::{AddressHashMap, HashMap}, Address, Bytes, Log, TxKind, U256, @@ -33,6 +33,8 @@ use std::{ sync::Arc, }; +use seismic_prelude::foundry::EthEvmContext; + #[derive(Clone, Debug, Default)] #[must_use = "builders do nothing unless you call `build` on them"] pub struct InspectorStackBuilder { diff --git a/crates/evm/evm/src/lib.rs b/crates/evm/evm/src/lib.rs index 92d39026a..7d74de37d 100644 --- a/crates/evm/evm/src/lib.rs +++ b/crates/evm/evm/src/lib.rs @@ -12,7 +12,7 @@ pub mod executors; pub mod inspectors; pub use foundry_evm_core::{ - backend, constants, decode, fork, opts, utils, Env, EnvMut, EvmEnv, InspectorExt, + backend, constants, decode, fork, opts, utils, Env, EnvMut, InspectorExt, }; pub use foundry_evm_coverage as coverage; pub use foundry_evm_fuzz as fuzz; diff --git a/crates/forge/Cargo.toml b/crates/forge/Cargo.toml index 023599b3a..41211066c 100644 --- a/crates/forge/Cargo.toml +++ b/crates/forge/Cargo.toml @@ -23,6 +23,8 @@ path = "tests/ui.rs" harness = false [dependencies] +seismic-prelude.workspace = true + # lib foundry-block-explorers = { workspace = true, features = ["foundry-compilers"] } foundry-common.workspace = true diff --git a/crates/forge/src/cmd/create.rs b/crates/forge/src/cmd/create.rs index 6768b4382..a13f8ec75 100644 --- a/crates/forge/src/cmd/create.rs +++ b/crates/forge/src/cmd/create.rs @@ -2,10 +2,9 @@ use crate::cmd::install; use alloy_chains::Chain; use alloy_dyn_abi::{DynSolValue, JsonAbiExt, Specifier}; use alloy_json_abi::{Constructor, JsonAbi}; -use alloy_network::{AnyNetwork, AnyTransactionReceipt, EthereumWallet, TransactionBuilder}; +use alloy_network::TransactionBuilder; use alloy_primitives::{hex, Address, Bytes}; use alloy_provider::{PendingTransactionError, Provider, ProviderBuilder}; -use alloy_rpc_types::TransactionRequest; use alloy_serde::WithOtherFields; use alloy_signer::Signer; use alloy_transport::TransportError; @@ -35,6 +34,10 @@ use foundry_config::{ use serde_json::json; use std::{borrow::Borrow, marker::PhantomData, path::PathBuf, sync::Arc, time::Duration}; +use seismic_prelude::foundry::{ + AnyNetwork, AnyTransactionReceipt, EthereumWallet, TransactionRequest, +}; + merge_impl_figment_convert!(CreateArgs, build, eth); /// CLI arguments for `forge create`. @@ -295,7 +298,7 @@ impl CreateArgs { deployer.tx.set_from(deployer_address); deployer.tx.set_chain_id(chain); // `to` field must be set explicitly, cannot be None. - if deployer.tx.to.is_none() { + if deployer.tx.inner.inner.to.is_none() { deployer.tx.set_create(); } deployer.tx.set_nonce(if let Some(nonce) = self.tx.nonce { diff --git a/crates/forge/src/multi_runner.rs b/crates/forge/src/multi_runner.rs index 061cc97d1..ae3bebb32 100644 --- a/crates/forge/src/multi_runner.rs +++ b/crates/forge/src/multi_runner.rs @@ -26,7 +26,7 @@ use foundry_evm::{ }; use foundry_linking::{LinkOutput, Linker}; use rayon::prelude::*; -use revm::primitives::hardfork::SpecId; +// use revm::primitives::hardfork::SpecId; use std::{ borrow::Borrow, collections::BTreeMap, @@ -42,6 +42,8 @@ pub struct TestContract { pub bytecode: Bytes, } +use seismic_prelude::foundry::SpecId; + pub type DeployableContracts = BTreeMap; /// A multi contract runner receives a set of contracts deployed in an EVM instance and proceeds diff --git a/crates/forge/tests/it/config.rs b/crates/forge/tests/it/config.rs index b0f9d8da2..0e7e5e526 100644 --- a/crates/forge/tests/it/config.rs +++ b/crates/forge/tests/it/config.rs @@ -11,9 +11,13 @@ use foundry_evm::{ use foundry_test_utils::{init_tracing, Filter}; use futures::future::join_all; use itertools::Itertools; +/* use revm::primitives::hardfork::SpecId; +*/ use std::collections::BTreeMap; +use seismic_prelude::foundry::SpecId; + /// How to execute a test run. pub struct TestConfig { pub runner: MultiContractRunner, diff --git a/crates/forge/tests/it/spec.rs b/crates/forge/tests/it/spec.rs index 99a3a5e7a..cc690c855 100644 --- a/crates/forge/tests/it/spec.rs +++ b/crates/forge/tests/it/spec.rs @@ -2,10 +2,14 @@ use crate::{config::*, test_helpers::TEST_DATA_PARIS}; use foundry_test_utils::Filter; +/* use revm::primitives::hardfork::SpecId; +*/ + +use seismic_prelude::foundry::SpecId; #[tokio::test(flavor = "multi_thread")] async fn test_shanghai_compat() { let filter = Filter::new("", "ShanghaiCompat", ".*spec"); - TestConfig::with_filter(TEST_DATA_PARIS.runner(), filter).spec_id(SpecId::SHANGHAI).run().await; + TestConfig::with_filter(TEST_DATA_PARIS.runner(), filter).spec_id(SpecId::MERCURY).run().await; } diff --git a/crates/forge/tests/it/test_helpers.rs b/crates/forge/tests/it/test_helpers.rs index 4de095be9..8a7c9ea37 100644 --- a/crates/forge/tests/it/test_helpers.rs +++ b/crates/forge/tests/it/test_helpers.rs @@ -188,7 +188,7 @@ impl ForgeTestData { let config = self.config.clone(); let mut runner = MultiContractRunnerBuilder::new(config).sender(self.config.sender); if self.profile.is_paris() { - runner = runner.evm_spec(SpecId::MERGE); + runner = runner.evm_spec(SpecId::MERGE.into()); } runner } diff --git a/crates/forge/tests/ui.rs b/crates/forge/tests/ui.rs index 9b37b7b1f..e74469cbe 100644 --- a/crates/forge/tests/ui.rs +++ b/crates/forge/tests/ui.rs @@ -1,7 +1,7 @@ use foundry_test_utils::ui_runner; use std::{env, path::Path}; -const FORGE_CMD: &str = env!("CARGO_BIN_EXE_forge"); +const FORGE_CMD: &str = env!("CARGO_BIN_EXE_sforge"); const FORGE_DIR: &str = env!("CARGO_MANIFEST_DIR"); fn main() -> impl std::process::Termination { diff --git a/crates/script-sequence/Cargo.toml b/crates/script-sequence/Cargo.toml index 68a03e15b..a9034b1fb 100644 --- a/crates/script-sequence/Cargo.toml +++ b/crates/script-sequence/Cargo.toml @@ -14,6 +14,8 @@ repository.workspace = true workspace = true [dependencies] +seismic-prelude.workspace = true + foundry-config.workspace = true foundry-common.workspace = true foundry-compilers = { workspace = true, features = ["full"] } diff --git a/crates/script-sequence/src/reader.rs b/crates/script-sequence/src/reader.rs index abed5f69d..dd518e704 100644 --- a/crates/script-sequence/src/reader.rs +++ b/crates/script-sequence/src/reader.rs @@ -1,10 +1,11 @@ use crate::{ScriptSequence, TransactionWithMetadata}; -use alloy_network::AnyTransactionReceipt; use eyre::{bail, Result}; use foundry_common::fs; use revm_inspectors::tracing::types::CallKind; use std::path::{Component, Path, PathBuf}; +use seismic_prelude::foundry::AnyTransactionReceipt; + /// This type reads broadcast files in the /// `project_root/broadcast/{contract_name}.s.sol/{chain_id}/` directory. /// diff --git a/crates/script-sequence/src/sequence.rs b/crates/script-sequence/src/sequence.rs index 05dd271d8..b60367b9c 100644 --- a/crates/script-sequence/src/sequence.rs +++ b/crates/script-sequence/src/sequence.rs @@ -1,5 +1,4 @@ use crate::transaction::TransactionWithMetadata; -use alloy_network::AnyTransactionReceipt; use alloy_primitives::{hex, map::HashMap, TxHash}; use eyre::{ContextCompat, Result, WrapErr}; use foundry_common::{fs, shell, TransactionMaybeSigned, SELECTOR_LEN}; @@ -13,6 +12,8 @@ use std::{ time::{Duration, SystemTime, UNIX_EPOCH}, }; +use seismic_prelude::foundry::AnyTransactionReceipt; + pub const DRY_RUN_DIR: &str = "dry-run"; #[derive(Clone, Serialize, Deserialize)] diff --git a/crates/script/Cargo.toml b/crates/script/Cargo.toml index b258da28d..64acb2406 100644 --- a/crates/script/Cargo.toml +++ b/crates/script/Cargo.toml @@ -14,6 +14,8 @@ repository.workspace = true workspace = true [dependencies] +seismic-prelude.workspace = true + forge-verify.workspace = true foundry-cli.workspace = true foundry-config.workspace = true diff --git a/crates/script/src/broadcast.rs b/crates/script/src/broadcast.rs index d40d03de2..3c941803e 100644 --- a/crates/script/src/broadcast.rs +++ b/crates/script/src/broadcast.rs @@ -5,14 +5,13 @@ use crate::{ use alloy_chains::Chain; use alloy_consensus::TxEnvelope; use alloy_eips::{eip2718::Encodable2718, BlockId}; -use alloy_network::{AnyNetwork, EthereumWallet, TransactionBuilder}; +use alloy_network::TransactionBuilder; use alloy_primitives::{ map::{AddressHashMap, AddressHashSet}, utils::format_units, Address, TxHash, }; use alloy_provider::{utils::Eip1559Estimation, Provider}; -use alloy_rpc_types::TransactionRequest; use alloy_serde::WithOtherFields; use eyre::{bail, Context, Result}; use forge_verify::provider::VerificationProviderType; @@ -27,6 +26,8 @@ use futures::{future::join_all, StreamExt}; use itertools::Itertools; use std::{cmp::Ordering, sync::Arc}; +use seismic_prelude::foundry::{AnyNetwork, EthereumWallet, TransactionRequest}; + pub async fn estimate_gas>( tx: &mut WithOtherFields, provider: &P, @@ -34,7 +35,7 @@ pub async fn estimate_gas>( ) -> Result<()> { // if already set, some RPC endpoints might simply return the gas value that is already // set in the request and omit the estimate altogether, so we remove it here - tx.gas = None; + tx.inner.inner.gas = None; tx.set_gas_limit( provider.estimate_gas(tx.clone()).await.wrap_err("Failed to estimate gas for tx")? * @@ -66,9 +67,9 @@ pub async fn send_transaction( ) -> Result { if let SendTransactionKind::Raw(tx, _) | SendTransactionKind::Unlocked(tx) = &mut kind { if sequential_broadcast { - let from = tx.from.expect("no sender"); + let from = tx.inner.inner.from.expect("no sender"); - let tx_nonce = tx.nonce.expect("no nonce"); + let tx_nonce = tx.inner.inner.nonce.expect("no nonce"); for attempt in 0..5 { let nonce = provider.get_transaction_count(from).await?; match nonce.cmp(&tx_nonce) { @@ -312,13 +313,17 @@ impl BundledState { SendTransactionKind::Signed(tx) } TransactionMaybeSigned::Unsigned(mut tx) => { - let from = tx.from.expect("No sender for onchain transaction!"); + let from = tx + .inner + .inner + .from + .expect("No sender for onchain transaction!"); tx.set_chain_id(sequence.chain); // Set TxKind::Create explicitly to satisfy `check_reqd_fields` in // alloy - if tx.to.is_none() { + if tx.inner.inner.to.is_none() { tx.set_create(); } diff --git a/crates/script/src/execute.rs b/crates/script/src/execute.rs index ff9ed1ed6..65cea262e 100644 --- a/crates/script/src/execute.rs +++ b/crates/script/src/execute.rs @@ -291,8 +291,9 @@ impl ExecutedState { // issues with eth_estimateGas and eth_sendTransaction requests. for tx in &mut txs { if let Some(req) = tx.transaction.as_unsigned_mut() { - req.input = - TransactionInput::maybe_both(std::mem::take(&mut req.input).into_input()); + req.inner.inner.input = TransactionInput::maybe_both( + std::mem::take(&mut req.inner.inner.input).into_input(), + ); } } let rpc_data = RpcData::from_transactions(&txs); diff --git a/crates/script/src/receipts.rs b/crates/script/src/receipts.rs index 605cdf9dd..f09541980 100644 --- a/crates/script/src/receipts.rs +++ b/crates/script/src/receipts.rs @@ -1,11 +1,12 @@ use alloy_chains::Chain; -use alloy_network::AnyTransactionReceipt; use alloy_primitives::{utils::format_units, TxHash, U256}; use alloy_provider::{PendingTransactionBuilder, PendingTransactionError, Provider, WatchTxError}; use eyre::{eyre, Result}; use foundry_common::{provider::RetryProvider, retry, retry::RetryError, shell}; use std::time::Duration; +use seismic_prelude::foundry::AnyTransactionReceipt; + /// Convenience enum for internal signalling of transaction status pub enum TxStatus { Dropped, @@ -15,7 +16,7 @@ pub enum TxStatus { impl From for TxStatus { fn from(receipt: AnyTransactionReceipt) -> Self { - if !receipt.inner.inner.inner.receipt.status.coerce_status() { + if !receipt.inner.inner.status() { Self::Revert(receipt) } else { Self::Success(receipt) @@ -61,7 +62,7 @@ pub fn format_receipt(chain: Chain, receipt: &AnyTransactionReceipt) -> String { let gas_used = receipt.gas_used; let gas_price = receipt.effective_gas_price; let block_number = receipt.block_number.unwrap_or_default(); - let success = receipt.inner.inner.inner.receipt.status.coerce_status(); + let success = receipt.inner.inner.status(); if shell::is_json() { let _ = sh_println!( diff --git a/crates/script/src/runner.rs b/crates/script/src/runner.rs index b568cbce2..79fd1ee8d 100644 --- a/crates/script/src/runner.rs +++ b/crates/script/src/runner.rs @@ -2,7 +2,7 @@ use super::{ScriptConfig, ScriptResult}; use crate::build::ScriptPredeployLibraries; use alloy_eips::eip7702::SignedAuthorization; use alloy_primitives::{Address, Bytes, TxKind, U256}; -use alloy_rpc_types::TransactionRequest; +use alloy_rpc_types::TransactionRequest as AlloyTransactionRequest; use eyre::Result; use foundry_cheatcodes::BroadcastableTransaction; use foundry_config::Config; @@ -15,6 +15,8 @@ use foundry_evm::{ }; use std::collections::VecDeque; +use seismic_prelude::foundry::TransactionRequest; + /// Drives script execution #[derive(Debug)] pub struct ScriptRunner { @@ -74,10 +76,13 @@ impl ScriptRunner { library_transactions.push_back(BroadcastableTransaction { rpc: self.evm_opts.fork_url.clone(), transaction: TransactionRequest { - from: Some(self.evm_opts.sender), - input: code.clone().into(), - nonce: Some(sender_nonce + library_transactions.len() as u64), - ..Default::default() + inner: AlloyTransactionRequest { + from: Some(self.evm_opts.sender), + input: code.clone().into(), + nonce: Some(sender_nonce + library_transactions.len() as u64), + ..Default::default() + }, + seismic_elements: None, } .into(), }) @@ -108,11 +113,14 @@ impl ScriptRunner { library_transactions.push_back(BroadcastableTransaction { rpc: self.evm_opts.fork_url.clone(), transaction: TransactionRequest { - from: Some(self.evm_opts.sender), - input: calldata.into(), - nonce: Some(sender_nonce + library_transactions.len() as u64), - to: Some(TxKind::Call(create2_deployer)), - ..Default::default() + inner: AlloyTransactionRequest { + from: Some(self.evm_opts.sender), + input: calldata.into(), + nonce: Some(sender_nonce + library_transactions.len() as u64), + to: Some(TxKind::Call(create2_deployer)), + ..Default::default() + }, + seismic_elements: None, } .into(), }); diff --git a/crates/script/src/simulate.rs b/crates/script/src/simulate.rs index 372cb4b25..e1b0106d1 100644 --- a/crates/script/src/simulate.rs +++ b/crates/script/src/simulate.rs @@ -293,7 +293,7 @@ impl FilledTransactionsState { // only estimate gas for unsigned transactions if let Some(tx) = tx.as_unsigned_mut() { trace!("estimating with different gas calculation"); - let gas = tx.gas.expect("gas is set by simulation."); + let gas = tx.inner.inner.gas.expect("gas is set by simulation."); // We are trying to show the user an estimation of the total gas usage. // diff --git a/crates/script/src/transaction.rs b/crates/script/src/transaction.rs index 6bb51c011..f9f4f3e70 100644 --- a/crates/script/src/transaction.rs +++ b/crates/script/src/transaction.rs @@ -160,7 +160,7 @@ impl ScriptTransactionBuilder { if !self.transaction.is_fixed_gas_limit { if let Some(unsigned) = self.transaction.transaction.as_unsigned_mut() { // We inflate the gas used by the user specified percentage - unsigned.gas = Some(result.gas_used * gas_estimate_multiplier / 100); + unsigned.inner.inner.gas = Some(result.gas_used * gas_estimate_multiplier / 100); } } diff --git a/crates/verify/Cargo.toml b/crates/verify/Cargo.toml index fc8cbc4f8..252722ca2 100644 --- a/crates/verify/Cargo.toml +++ b/crates/verify/Cargo.toml @@ -14,7 +14,7 @@ repository.workspace = true workspace = true [dependencies] -seismic-alloy-rpc-types.workspace = true +seismic-prelude.workspace = true foundry-config.workspace = true foundry-cli.workspace = true diff --git a/crates/verify/src/bytecode.rs b/crates/verify/src/bytecode.rs index bb1f8bda7..d3db813e8 100644 --- a/crates/verify/src/bytecode.rs +++ b/crates/verify/src/bytecode.rs @@ -8,11 +8,10 @@ use crate::{ verify::VerifierArgs, }; use alloy_primitives::{hex, Address, Bytes, TxKind, U256}; -use alloy_provider::{ - network::{AnyTxEnvelope, TransactionBuilder}, - Provider, +use alloy_provider::{network::TransactionBuilder, Provider}; +use alloy_rpc_types::{ + BlockId, BlockNumberOrTag, TransactionInput, TransactionRequest as AlloyTransactionRequest, }; -use alloy_rpc_types::{BlockId, BlockNumberOrTag, TransactionInput, TransactionRequest}; use clap::{Parser, ValueHint}; use eyre::{Context, OptionExt, Result}; use foundry_cli::{ @@ -27,6 +26,8 @@ use foundry_evm_core::AsEnvMut; use revm::state::AccountInfo; use std::path::PathBuf; +use seismic_prelude::foundry::{AnyTxEnvelope, TransactionRequest}; + impl_figment_convert!(VerifyBytecodeArgs); /// CLI arguments for `forge verify-bytecode`. @@ -248,19 +249,20 @@ impl VerifyBytecodeArgs { // Setup genesis tx and env. let deployer = Address::with_last_byte(0x1); - let mut gen_tx_req = TransactionRequest::default() + let mut gen_tx_req: TransactionRequest = AlloyTransactionRequest::default() .with_from(deployer) .with_input(Bytes::from(local_bytecode_vec)) - .into_create(); + .into_create() + .into(); if let Some(ref block) = genesis_block { configure_env_block(&mut env.as_env_mut(), block); - gen_tx_req.max_fee_per_gas = block.header.base_fee_per_gas.map(|g| g as u128); - gen_tx_req.gas = Some(block.header.gas_limit); - gen_tx_req.gas_price = block.header.base_fee_per_gas.map(|g| g as u128); + gen_tx_req.inner.max_fee_per_gas = block.header.base_fee_per_gas.map(|g| g as u128); + gen_tx_req.inner.gas = Some(block.header.gas_limit); + gen_tx_req.inner.gas_price = block.header.base_fee_per_gas.map(|g| g as u128); } - configure_tx_req_env(&mut env.as_env_mut(), &gen_tx_req.into(), None) + configure_tx_req_env(&mut env.as_env_mut(), &gen_tx_req, None) .wrap_err("Failed to configure tx request env")?; // Seed deployer account with funds @@ -275,7 +277,7 @@ impl VerifyBytecodeArgs { &mut executor, &env, config.evm_spec_id(), - gen_tx_req.to, + gen_tx_req.inner.to, )?; // Compare runtime bytecode @@ -335,20 +337,21 @@ impl VerifyBytecodeArgs { ); }; - let mut transaction: TransactionRequest = match transaction.inner.inner.inner() { + let mut transaction: TransactionRequest = match transaction.0.inner.inner.inner() { AnyTxEnvelope::Ethereum(tx) => tx.clone().into(), + AnyTxEnvelope::Seismic(tx) => tx.clone().into(), AnyTxEnvelope::Unknown(_) => unreachable!("Unknown transaction type"), }; // Extract creation code from creation tx input. let maybe_creation_code = if receipt.to.is_none() && receipt.contract_address == Some(self.address) { - match &transaction.input.input { + match &transaction.inner.input.input { Some(input) => &input[..], None => unreachable!("creation tx input is None"), } } else if receipt.to == Some(DEFAULT_CREATE2_DEPLOYER) { - match &transaction.input.input { + match &transaction.inner.input.input { Some(input) => &input[32..], None => unreachable!("creation tx input is None"), } @@ -428,7 +431,7 @@ impl VerifyBytecodeArgs { .await.or_else(|e| eyre::bail!("Couldn't fetch transaction from RPC: {:?}", e))?.ok_or_else(|| { eyre::eyre!("Transaction not found for hash {}", creation_data.transaction_hash) })? - .block_number.ok_or_else(|| { + .0.inner.block_number.ok_or_else(|| { eyre::eyre!("Failed to get block number of the contract creation tx, specify using the --block flag") })? } @@ -453,27 +456,27 @@ impl VerifyBytecodeArgs { // Use `transaction.from` instead of `creation_data.contract_creator` to resolve // blockscout creation data discrepancy in case of CREATE2. let prev_block_nonce = provider - .get_transaction_count(transaction.from.unwrap()) + .get_transaction_count(transaction.inner.from.unwrap()) .block_id(prev_block_id) .await?; - transaction.set_nonce(prev_block_nonce); + transaction.inner.set_nonce(prev_block_nonce); if let Some(ref block) = block { configure_env_block(&mut env.as_env_mut(), block) } // Replace the `input` with local creation code in the creation tx. - if let Some(TxKind::Call(to)) = transaction.kind() { + if let Some(TxKind::Call(to)) = transaction.inner.kind() { if to == DEFAULT_CREATE2_DEPLOYER { - let mut input = transaction.input.input.unwrap()[..32].to_vec(); // Salt + let mut input = transaction.inner.input.input.unwrap()[..32].to_vec(); // Salt input.extend_from_slice(&local_bytecode_vec); - transaction.input = TransactionInput::both(Bytes::from(input)); + transaction.inner.input = TransactionInput::both(Bytes::from(input)); // Deploy default CREATE2 deployer executor.deploy_create2_deployer()?; } } else { - transaction.input = TransactionInput::both(Bytes::from(local_bytecode_vec)); + transaction.inner.input = TransactionInput::both(Bytes::from(local_bytecode_vec)); } // configure_req__env(&mut env, &transaction.inner); @@ -484,7 +487,7 @@ impl VerifyBytecodeArgs { &mut executor, &env, config.evm_spec_id(), - transaction.to, + transaction.inner.to, )?; // State committed using deploy_with_env, now get the runtime bytecode from the db. diff --git a/crates/verify/src/etherscan/mod.rs b/crates/verify/src/etherscan/mod.rs index 17b0f261e..f2dcd87f5 100644 --- a/crates/verify/src/etherscan/mod.rs +++ b/crates/verify/src/etherscan/mod.rs @@ -412,9 +412,9 @@ impl EtherscanVerificationProvider { .ok_or_eyre("Couldn't fetch transaction receipt from RPC")?; let maybe_creation_code = if receipt.contract_address == Some(args.address) { - transaction.inner.inner.input() + transaction.0.inner.input() } else if transaction.to() == Some(DEFAULT_CREATE2_DEPLOYER) { - &transaction.inner.inner.input()[32..] + &transaction.0.inner.input()[32..] } else { eyre::bail!("Fetching of constructor arguments is not supported for contracts created by contracts") }; diff --git a/crates/verify/src/utils.rs b/crates/verify/src/utils.rs index a6e67a10b..317feb7ab 100644 --- a/crates/verify/src/utils.rs +++ b/crates/verify/src/utils.rs @@ -1,7 +1,7 @@ use crate::{bytecode::VerifyBytecodeArgs, types::VerificationType}; use alloy_dyn_abi::DynSolValue; use alloy_primitives::{Address, Bytes, TxKind}; -use alloy_provider::{network::AnyRpcBlock, Provider}; +use alloy_provider::Provider; use alloy_rpc_types::BlockId; use clap::ValueEnum; use eyre::{OptionExt, Result}; @@ -20,11 +20,13 @@ use foundry_evm::{ traces::TraceMode, Env, EnvMut, }; use reqwest::Url; -use revm::{bytecode::Bytecode, database::Database, primitives::hardfork::SpecId}; +use revm::{bytecode::Bytecode, database::Database}; use semver::Version; use serde::{Deserialize, Serialize}; use yansi::Paint; +use seismic_prelude::foundry::{AnyRpcBlock, SpecId}; + /// Enum to represent the type of bytecode being verified #[derive(Debug, Serialize, Deserialize, Clone, Copy, ValueEnum)] pub enum BytecodeType { From 5a347ab8ee1ca74bfbbb942e991eec6431cdc146 Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Tue, 17 Jun 2025 09:38:45 -0400 Subject: [PATCH 082/130] rename seismic-alloy to seismic-alloy-old (#127) --- Cargo.lock | 62 +++++++++++++++++----------------- Cargo.toml | 50 +++++++++++++-------------- crates/forge/bin/cmd/geiger.rs | 2 +- 3 files changed, 57 insertions(+), 57 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9fa09ac23..9ec0fe6b8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "alloy-consensus" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" +source = "git+https://github.com/SeismicSystems/seismic-alloy-old.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-dyn-abi", "alloy-eips", @@ -133,7 +133,7 @@ dependencies = [ [[package]] name = "alloy-consensus-any" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" +source = "git+https://github.com/SeismicSystems/seismic-alloy-old.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-consensus", "alloy-eips", @@ -146,7 +146,7 @@ dependencies = [ [[package]] name = "alloy-contract" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" +source = "git+https://github.com/SeismicSystems/seismic-alloy-old.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -214,7 +214,7 @@ dependencies = [ [[package]] name = "alloy-eips" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" +source = "git+https://github.com/SeismicSystems/seismic-alloy-old.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-dyn-abi", "alloy-eip2930", @@ -232,7 +232,7 @@ dependencies = [ [[package]] name = "alloy-genesis" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" +source = "git+https://github.com/SeismicSystems/seismic-alloy-old.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-primitives", "alloy-serde", @@ -254,7 +254,7 @@ dependencies = [ [[package]] name = "alloy-json-rpc" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" +source = "git+https://github.com/SeismicSystems/seismic-alloy-old.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -267,7 +267,7 @@ dependencies = [ [[package]] name = "alloy-network" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" +source = "git+https://github.com/SeismicSystems/seismic-alloy-old.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -291,7 +291,7 @@ dependencies = [ [[package]] name = "alloy-network-primitives" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" +source = "git+https://github.com/SeismicSystems/seismic-alloy-old.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-consensus", "alloy-eips", @@ -303,7 +303,7 @@ dependencies = [ [[package]] name = "alloy-node-bindings" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" +source = "git+https://github.com/SeismicSystems/seismic-alloy-old.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-genesis", "alloy-primitives", @@ -350,7 +350,7 @@ dependencies = [ [[package]] name = "alloy-provider" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" +source = "git+https://github.com/SeismicSystems/seismic-alloy-old.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-chains", "alloy-consensus", @@ -393,7 +393,7 @@ dependencies = [ [[package]] name = "alloy-pubsub" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" +source = "git+https://github.com/SeismicSystems/seismic-alloy-old.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -433,7 +433,7 @@ dependencies = [ [[package]] name = "alloy-rpc-client" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" +source = "git+https://github.com/SeismicSystems/seismic-alloy-old.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -458,7 +458,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" +source = "git+https://github.com/SeismicSystems/seismic-alloy-old.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-primitives", "alloy-rpc-types-anvil", @@ -473,7 +473,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" +source = "git+https://github.com/SeismicSystems/seismic-alloy-old.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -484,7 +484,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" +source = "git+https://github.com/SeismicSystems/seismic-alloy-old.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -494,7 +494,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-debug" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" +source = "git+https://github.com/SeismicSystems/seismic-alloy-old.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-primitives", "serde", @@ -503,7 +503,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-engine" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" +source = "git+https://github.com/SeismicSystems/seismic-alloy-old.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-consensus", "alloy-eips", @@ -520,7 +520,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" +source = "git+https://github.com/SeismicSystems/seismic-alloy-old.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -539,7 +539,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-trace" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" +source = "git+https://github.com/SeismicSystems/seismic-alloy-old.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -553,7 +553,7 @@ dependencies = [ [[package]] name = "alloy-rpc-types-txpool" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" +source = "git+https://github.com/SeismicSystems/seismic-alloy-old.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -564,7 +564,7 @@ dependencies = [ [[package]] name = "alloy-serde" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" +source = "git+https://github.com/SeismicSystems/seismic-alloy-old.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-primitives", "seismic-enclave 0.1.0 (git+https://github.com/SeismicSystems/seismic-enclave.git?rev=3f47bf1)", @@ -575,7 +575,7 @@ dependencies = [ [[package]] name = "alloy-signer" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" +source = "git+https://github.com/SeismicSystems/seismic-alloy-old.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-dyn-abi", "alloy-primitives", @@ -590,7 +590,7 @@ dependencies = [ [[package]] name = "alloy-signer-aws" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" +source = "git+https://github.com/SeismicSystems/seismic-alloy-old.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-consensus", "alloy-network", @@ -607,7 +607,7 @@ dependencies = [ [[package]] name = "alloy-signer-gcp" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" +source = "git+https://github.com/SeismicSystems/seismic-alloy-old.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-consensus", "alloy-network", @@ -624,7 +624,7 @@ dependencies = [ [[package]] name = "alloy-signer-ledger" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" +source = "git+https://github.com/SeismicSystems/seismic-alloy-old.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -643,7 +643,7 @@ dependencies = [ [[package]] name = "alloy-signer-local" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" +source = "git+https://github.com/SeismicSystems/seismic-alloy-old.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-consensus", "alloy-network", @@ -661,7 +661,7 @@ dependencies = [ [[package]] name = "alloy-signer-trezor" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" +source = "git+https://github.com/SeismicSystems/seismic-alloy-old.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-consensus", "alloy-network", @@ -746,7 +746,7 @@ dependencies = [ [[package]] name = "alloy-transport" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" +source = "git+https://github.com/SeismicSystems/seismic-alloy-old.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-json-rpc", "base64 0.22.1", @@ -765,7 +765,7 @@ dependencies = [ [[package]] name = "alloy-transport-http" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" +source = "git+https://github.com/SeismicSystems/seismic-alloy-old.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -779,7 +779,7 @@ dependencies = [ [[package]] name = "alloy-transport-ipc" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" +source = "git+https://github.com/SeismicSystems/seismic-alloy-old.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-json-rpc", "alloy-pubsub", @@ -799,7 +799,7 @@ dependencies = [ [[package]] name = "alloy-transport-ws" version = "0.8.0" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" +source = "git+https://github.com/SeismicSystems/seismic-alloy-old.git?rev=22b8d28#22b8d2821d0b4ce8cf6493f6dd59fa08dbd7d798" dependencies = [ "alloy-pubsub", "alloy-transport", diff --git a/Cargo.toml b/Cargo.toml index 32e0bcbfc..f9af417da 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -321,31 +321,31 @@ alloy-sol-types = { git = "https://github.com/SeismicSystems/seismic-alloy-core. alloy-sol-type-parser = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "5dc07cc" } # seismic-alloy -alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } -alloy-contract = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } -alloy-eips = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } -alloy-genesis = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } -alloy-json-rpc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } -alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } -alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } -alloy-pubsub = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } -alloy-rpc-client = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } -alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } -alloy-rpc-types-trace = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } -alloy-rpc-types-eth = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } -alloy-serde = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } -alloy-signer = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } -alloy-signer-aws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } -alloy-signer-gcp = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } -alloy-signer-ledger = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } -alloy-signer-local = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } -alloy-signer-trezor = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } -alloy-transport = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } -alloy-transport-http = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } -alloy-transport-ipc = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } -alloy-transport-ws = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } -alloy-node-bindings = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } -alloy-network-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "22b8d28" } +alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy-old.git", rev = "22b8d28" } +alloy-contract = { git = "https://github.com/SeismicSystems/seismic-alloy-old.git", rev = "22b8d28" } +alloy-eips = { git = "https://github.com/SeismicSystems/seismic-alloy-old.git", rev = "22b8d28" } +alloy-genesis = { git = "https://github.com/SeismicSystems/seismic-alloy-old.git", rev = "22b8d28" } +alloy-json-rpc = { git = "https://github.com/SeismicSystems/seismic-alloy-old.git", rev = "22b8d28" } +alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy-old.git", rev = "22b8d28" } +alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy-old.git", rev = "22b8d28" } +alloy-pubsub = { git = "https://github.com/SeismicSystems/seismic-alloy-old.git", rev = "22b8d28" } +alloy-rpc-client = { git = "https://github.com/SeismicSystems/seismic-alloy-old.git", rev = "22b8d28" } +alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy-old.git", rev = "22b8d28" } +alloy-rpc-types-trace = { git = "https://github.com/SeismicSystems/seismic-alloy-old.git", rev = "22b8d28" } +alloy-rpc-types-eth = { git = "https://github.com/SeismicSystems/seismic-alloy-old.git", rev = "22b8d28" } +alloy-serde = { git = "https://github.com/SeismicSystems/seismic-alloy-old.git", rev = "22b8d28" } +alloy-signer = { git = "https://github.com/SeismicSystems/seismic-alloy-old.git", rev = "22b8d28" } +alloy-signer-aws = { git = "https://github.com/SeismicSystems/seismic-alloy-old.git", rev = "22b8d28" } +alloy-signer-gcp = { git = "https://github.com/SeismicSystems/seismic-alloy-old.git", rev = "22b8d28" } +alloy-signer-ledger = { git = "https://github.com/SeismicSystems/seismic-alloy-old.git", rev = "22b8d28" } +alloy-signer-local = { git = "https://github.com/SeismicSystems/seismic-alloy-old.git", rev = "22b8d28" } +alloy-signer-trezor = { git = "https://github.com/SeismicSystems/seismic-alloy-old.git", rev = "22b8d28" } +alloy-transport = { git = "https://github.com/SeismicSystems/seismic-alloy-old.git", rev = "22b8d28" } +alloy-transport-http = { git = "https://github.com/SeismicSystems/seismic-alloy-old.git", rev = "22b8d28" } +alloy-transport-ipc = { git = "https://github.com/SeismicSystems/seismic-alloy-old.git", rev = "22b8d28" } +alloy-transport-ws = { git = "https://github.com/SeismicSystems/seismic-alloy-old.git", rev = "22b8d28" } +alloy-node-bindings = { git = "https://github.com/SeismicSystems/seismic-alloy-old.git", rev = "22b8d28" } +alloy-network-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy-old.git", rev = "22b8d28" } foundry-compilers = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } foundry-compilers-artifacts = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "352264d" } diff --git a/crates/forge/bin/cmd/geiger.rs b/crates/forge/bin/cmd/geiger.rs index 196a734b3..5f0cfd10f 100644 --- a/crates/forge/bin/cmd/geiger.rs +++ b/crates/forge/bin/cmd/geiger.rs @@ -130,7 +130,7 @@ fn try_lint_file( let mut parser = solar_parse::Parser::from_file(sess, &arena, path)?; let ast = parser.parse_file().map_err(|e| e.emit())?; let mut visitor = Visitor::new(sess, unsafe_cheatcodes); - visitor.visit_source_unit(&ast); + let _ = visitor.visit_source_unit(&ast); Ok(visitor.count) } From da225bc84df96dc49f41e3f7cd34c91b178ae6ff Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Tue, 17 Jun 2025 15:10:39 -0400 Subject: [PATCH 083/130] CI: sforge contract tests (#126) --- .github/workflows/seismic.yml | 35 +++- package.json | 7 +- packages/sforge-tests/.gitignore | 34 ++++ packages/sforge-tests/README.md | 20 +++ packages/sforge-tests/package.json | 18 ++ packages/sforge-tests/repos.ts | 25 +++ packages/sforge-tests/sforge.test.ts | 253 +++++++++++++++++++++++++++ packages/sforge-tests/tsconfig.json | 28 +++ 8 files changed, 415 insertions(+), 5 deletions(-) create mode 100644 packages/sforge-tests/.gitignore create mode 100644 packages/sforge-tests/README.md create mode 100644 packages/sforge-tests/package.json create mode 100644 packages/sforge-tests/repos.ts create mode 100644 packages/sforge-tests/sforge.test.ts create mode 100644 packages/sforge-tests/tsconfig.json diff --git a/.github/workflows/seismic.yml b/.github/workflows/seismic.yml index 6284d14f4..d37e5a655 100644 --- a/.github/workflows/seismic.yml +++ b/.github/workflows/seismic.yml @@ -4,7 +4,7 @@ on: push: branches: [seismic] pull_request: - branches: [seismic] + branches: [seismic, alloy-1] concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} @@ -65,6 +65,7 @@ jobs: shared-key: "test-cache" - name: seismic transaction run: cargo nextest run test_seismic_transaction + # TODO: make these work & run # - name: sforge tests # run: cargo test --bin sforge # - name: sanvil tests @@ -89,4 +90,34 @@ jobs: - name: Install dependencies run: bun install - name: Run viem tests vs. Anvil - run: bun test + run: bun viem:test + + contract-tests: + runs-on: self-hosted + timeout-minutes: 30 + env: + CODE_PATH: /home/ubuntu + SFORGE_BINARY: /home/ubuntu/.seismic/bin/sforge + steps: + - uses: actions/checkout@v4 + - uses: oven-sh/setup-bun@v2 + with: + bun-version: 1.2.5 + - uses: dtolnay/rust-toolchain@stable + - uses: Swatinem/rust-cache@v2 + with: + shared-key: "contract-tests-cache" + - name: Install JS dependencies + run: bun install + - name: Clean previous installations + run: rm -rf $HOME/.seismic/bin/sforge || true + - name: Install sforge binary + run: | + cargo install --root=$HOME/.seismic --profile dev --path ./crates/forge --locked + echo "$HOME/.seismic/bin" >> $GITHUB_PATH + - name: Verify sforge installation + run: | + ls -la $HOME/.seismic/bin/sforge + $HOME/.seismic/bin/sforge --version || echo "sforge failed to run" + - name: Run contract tests with sforge + run: bun forge:test diff --git a/package.json b/package.json index 9572c0d1e..36adcbd0b 100644 --- a/package.json +++ b/package.json @@ -4,10 +4,11 @@ ], "private": true, "scripts": { - "test": "bun run --cwd packages/client-tests test" + "viem:test": "bun run --cwd packages/client-tests test", + "forge:test": "bun run --cwd packages/sforge-tests test" }, "dependencies": { - "seismic-viem": "^1.0.34", - "seismic-viem-tests": "^0.0.9" + "seismic-viem": "^1.0.44", + "seismic-viem-tests": "^0.0.15" } } diff --git a/packages/sforge-tests/.gitignore b/packages/sforge-tests/.gitignore new file mode 100644 index 000000000..a14702c40 --- /dev/null +++ b/packages/sforge-tests/.gitignore @@ -0,0 +1,34 @@ +# dependencies (bun install) +node_modules + +# output +out +dist +*.tgz + +# code coverage +coverage +*.lcov + +# logs +logs +_.log +report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json + +# dotenv environment variable files +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# caches +.eslintcache +.cache +*.tsbuildinfo + +# IntelliJ based IDEs +.idea + +# Finder (MacOS) folder config +.DS_Store diff --git a/packages/sforge-tests/README.md b/packages/sforge-tests/README.md new file mode 100644 index 000000000..615aa7d9a --- /dev/null +++ b/packages/sforge-tests/README.md @@ -0,0 +1,20 @@ +# Seismic Forge tests + +To install dependencies: + +```bash +bun install +``` + +To run tests: + +```bash +bun test +``` + +## Schema of test repos + +- `repo`: path where we can find this repo, relative to the folder that seismic-foundry is in +- `contracts`: the directory we should run `sforge` from. If not specified, run it from repo root +- `remote`: if this repo is not present, use this to clone it +- `clone`: if false and the repo is not present, don't clone it (skip tests instead) diff --git a/packages/sforge-tests/package.json b/packages/sforge-tests/package.json new file mode 100644 index 000000000..654cc00e0 --- /dev/null +++ b/packages/sforge-tests/package.json @@ -0,0 +1,18 @@ +{ + "name": "sforge-tests", + "private": true, + "scripts": { + "test": "bun test" + }, + "module": "index.ts", + "type": "module", + "devDependencies": { + "@types/bun": "latest" + }, + "peerDependencies": { + "typescript": "^5" + }, + "dependencies": { + "seismic-viem-tests": "^0.0.15" + } +} diff --git a/packages/sforge-tests/repos.ts b/packages/sforge-tests/repos.ts new file mode 100644 index 000000000..9cfcb76fd --- /dev/null +++ b/packages/sforge-tests/repos.ts @@ -0,0 +1,25 @@ +export type Repo = { + repo: string; + remote: string; + contracts?: string; // defaults to the root + clone?: boolean; // if it doesn't exist; defaults to true +}; + +export const repos: Repo[] = [ + // { + // repo: "forge-std", + // remote: "git@github.com:foundry-rs/forge-std.git", + // }, + { + repo: "moonhatch", + contracts: "contracts", + remote: "git@github.com:SeismicSystems/moonhatch.git", + clone: false, + }, + { + repo: "poker", + contracts: "contracts", + remote: "git@github.com:SeismicSystems/poker.git", + clone: false, + }, +]; diff --git a/packages/sforge-tests/sforge.test.ts b/packages/sforge-tests/sforge.test.ts new file mode 100644 index 000000000..292aef926 --- /dev/null +++ b/packages/sforge-tests/sforge.test.ts @@ -0,0 +1,253 @@ +import { beforeAll, afterAll, describe, test, expect } from "bun:test" +import { + runProcess, + waitForProcessExit, + type RunProcessOptions, +} from "seismic-viem-tests" +import { repos, type Repo } from "./repos" +import path from "path" +import fs from "fs/promises" +import type { StdioOptions } from "child_process" + +let sforgeBinary: string = process.env.SFORGE_BINARY || "sforge" + +type CommandOutput = { + stdout: Buffer + stderr: Buffer + exitCode: number | null +} + +type TestOutput = { + repo: string + success: boolean + error?: string + build?: CommandOutput + test?: CommandOutput +} + +const getCodeLocation = (): string => { + if (process.env.CODE_PATH) { + return process.env.CODE_PATH + } + return new URL("../../..", import.meta.url).pathname +} + +const getRepoLocation = (repo: Repo): string => + path.join(getCodeLocation(), repo.repo) + +const getRepoContractsPath = (repo: Repo): string => + path.join(getRepoLocation(repo), repo.contracts || "") + +const ensurePathExists = async (path: string): Promise => { + const exists = await fs.exists(path) + if (!exists) { + throw new Error(`Path ${path} does not exist`) + } +} + +const spawn = async ( + command: string, + options: RunProcessOptions +): Promise => { + const childProcess = await runProcess(command, options) + // Start collecting output immediately + let stdoutChunks: Buffer[] = [] + let stderrChunks: Buffer[] = [] + + if (childProcess.stdout) { + childProcess.stdout.on("data", (chunk) => { + stdoutChunks.push(chunk) + }) + } + + if (childProcess.stderr) { + childProcess.stderr.on("data", (chunk) => { + stderrChunks.push(chunk) + }) + } + + // Wait for process to complete + // await Bun.sleep(10_000) + await waitForProcessExit(childProcess) + return { + stdout: Buffer.concat(stdoutChunks), + stderr: Buffer.concat(stderrChunks), + exitCode: childProcess.exitCode, + } +} + +/** + * Ensures a repo exists in the code location. + * @param repo - The repo to ensure exists. + * @returns True if the repo already exists, false if it was cloned. + * @throws If the repo fails to be cloned. + */ +const ensureRepoExists = async (repo: Repo): Promise => { + const repoLocation = getRepoLocation(repo) + const repoExists = await fs.exists(repoLocation) + if (repoExists) { + return true + } + if (!repo.clone) { + return false + } + console.warn(`Repo ${repo.repo} does not exist. Cloning...`) + await spawn("git", { + args: ["clone", repo.remote], + cwd: getCodeLocation(), + stdio: ["inherit", "pipe", "pipe"], + }) + return true +} + +const spawnScript = ( + command: string, + options: RunProcessOptions +): Promise => { + const { args, ...rest } = options + return spawn("script", { + args: ["-q", "/dev/null", command, ...(args as string[])], + ...rest, + }) +} + +const testContracts = async ( + repo: Repo +): Promise<{ build: CommandOutput; test?: CommandOutput }> => { + const contractsPath = getRepoContractsPath(repo) + await ensurePathExists(contractsPath) + const spawner = process.platform === "darwin" ? spawnScript : spawn + const stdio = ["inherit", "pipe", "pipe"] as StdioOptions + // Check if it builds + // NOTE: this is redundant because `sforge test` will fail if build fails + const build = await spawner(sforgeBinary, { + args: ["build", "--color", "always"], + cwd: contractsPath, + stdio, + }) + if (build.exitCode !== 0) { + return { build } + } + // Check if the tests pass + const test = await spawner(sforgeBinary, { + args: ["test", "--color", "always"], + cwd: contractsPath, + stdio, + }) + return { build, test } +} + +const runRepo = async ( + repo: Repo +): Promise<{ build: CommandOutput; test?: CommandOutput } | null> => { + const repoExists = await ensureRepoExists(repo) + if (repoExists) { + return await testContracts(repo) + } else { + console.warn(`Repo ${repo.repo} does not exist. Skipping these tests...`) + return null + } +} + +const showTestOutput = (output: TestOutput) => { + const status = output.success ? "✅ Success" : "❌ Error" + console.log(`\n--- ${output.repo} ${status} ---`) + if (output.success) { + return + } + + if (output.build) { + if (output.build.stdout.length > 0) { + console.log("\nBuild stdout:") + process.stdout.write(output.build.stdout) + console.log("") + } + if (output.build.stderr.length > 0) { + console.log("\nBuild stderr:") + process.stderr.write(output.build.stderr) + console.log("") + } + } + if (output.test) { + if (output.test.stdout.length > 0) { + console.log("\nTest stdout:") + process.stdout.write(output.test.stdout) + console.log("") + } + if (output.test.stderr.length > 0) { + console.log("\nTest stderr:") + process.stderr.write(output.test.stderr) + console.log("") + } + } +} + +beforeAll(() => { + Error.stackTraceLimit = 0 +}) +describe("sforge tests", async () => { + const allOutputs: TestOutput[] = [] + + // Run each repo as a separate test and collect outputs + for (const repo of repos) { + test( + `repo: ${repo.repo || repo}`, + async () => { + const errors: string[] = [] + try { + const process = await runRepo(repo) + if (process) { + // Collect outputs for later logging + const buildSuccess = process.build?.exitCode === 0 + const testSuccess = process.test?.exitCode === 0 + const outputs = { + repo: repo.repo, + success: buildSuccess && testSuccess, + build: process.build, + test: process.test, + } + allOutputs.push(outputs) + if (!buildSuccess) { + errors.push("sforge build failed") + } else if (!testSuccess) { + errors.push("sforge test failed") + } + // Add more specific assertions as needed + } else { + const outputs = { + repo: repo.repo, + success: false, + error: "runRepo returned null/undefined", + } + allOutputs.push(outputs) + errors.push("repo not found locally") + } + } catch (error) { + // Capture errors but still collect for logging + const errorMsg = + error instanceof Error ? error.message : String(error) + allOutputs.push({ + repo: repo.repo, + success: false, + error: errorMsg, + }) + errors.push(errorMsg) + throw error; // Re-throw to fail the test + } + if (errors.length > 0) { + throw new Error(`${repo.repo}: ${errors.join("\n")}`) + } + }, + { timeout: 60_000 } + ) + } + + // After all tests, log all outputs in order + afterAll(() => { + const failedOutputs = allOutputs.filter((output) => !output.success) + if (failedOutputs.length > 0) { + console.log("\n=== Failed Outputs ===") + failedOutputs.forEach(showTestOutput) + } + }) +}) diff --git a/packages/sforge-tests/tsconfig.json b/packages/sforge-tests/tsconfig.json new file mode 100644 index 000000000..5f23dc1a8 --- /dev/null +++ b/packages/sforge-tests/tsconfig.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + // Enable latest features + "lib": ["ESNext", "DOM"], + "target": "ESNext", + "module": "ESNext", + "moduleDetection": "force", + "jsx": "react-jsx", + "allowJs": true, + + // Bundler mode + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "noEmit": true, + + // Best practices + "strict": true, + "skipLibCheck": true, + "noFallthroughCasesInSwitch": true, + + // Some stricter flags (disabled by default) + "noUnusedLocals": false, + "noUnusedParameters": false, + "noPropertyAccessFromIndexSignature": false + } + } + \ No newline at end of file From 05ce8b56f97370f9141f5ccc8516d6d6c86df6fa Mon Sep 17 00:00:00 2001 From: Spencer Solit Date: Thu, 19 Jun 2025 17:39:39 -0400 Subject: [PATCH 084/130] bumped deps --- Cargo.lock | 76 ++++++++++++++++++++++++++++-------------------------- Cargo.toml | 59 +++++++++++++++++++++--------------------- 2 files changed, 70 insertions(+), 65 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 42a1bd664..cb4326cdc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -155,7 +155,7 @@ dependencies = [ [[package]] name = "alloy-dyn-abi" version = "1.1.2" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=ab2208a#ab2208a202da1e48363ed3cb57d54a745b3e2a2d" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=eaf81a7#eaf81a72a0ed77a2f28922eb0c2223016c447a27" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -245,7 +245,7 @@ dependencies = [ [[package]] name = "alloy-evm" version = "0.9.1" -source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=8230891#82308916eb4d42cc7f8d532667a01c50adf67549" +source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=84d4a82#84d4a82f27f2b09b967da229afa124f4f715ac5d" dependencies = [ "alloy-consensus", "alloy-eips", @@ -257,6 +257,7 @@ dependencies = [ "op-alloy-consensus", "op-revm", "revm", + "seismic-alloy-consensus", "seismic-revm", "thiserror 2.0.12", ] @@ -290,7 +291,7 @@ dependencies = [ [[package]] name = "alloy-json-abi" version = "1.1.2" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=ab2208a#ab2208a202da1e48363ed3cb57d54a745b3e2a2d" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=eaf81a7#eaf81a72a0ed77a2f28922eb0c2223016c447a27" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -354,7 +355,7 @@ dependencies = [ [[package]] name = "alloy-op-evm" version = "0.9.1" -source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=8230891#82308916eb4d42cc7f8d532667a01c50adf67549" +source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=84d4a82#84d4a82f27f2b09b967da229afa124f4f715ac5d" dependencies = [ "alloy-consensus", "alloy-eips", @@ -380,7 +381,7 @@ dependencies = [ [[package]] name = "alloy-primitives" version = "1.1.2" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=ab2208a#ab2208a202da1e48363ed3cb57d54a745b3e2a2d" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=eaf81a7#eaf81a72a0ed77a2f28922eb0c2223016c447a27" dependencies = [ "alloy-rlp", "arbitrary", @@ -639,11 +640,16 @@ dependencies = [ [[package]] name = "alloy-seismic-evm" version = "0.9.1" -source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=8230891#82308916eb4d42cc7f8d532667a01c50adf67549" +source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=84d4a82#84d4a82f27f2b09b967da229afa124f4f715ac5d" dependencies = [ + "alloy-consensus", + "alloy-eips", "alloy-evm", + "alloy-hardforks", "alloy-primitives", + "auto_impl", "revm", + "seismic-alloy-consensus", "seismic-enclave", "seismic-revm", ] @@ -771,7 +777,7 @@ dependencies = [ [[package]] name = "alloy-sol-macro" version = "1.1.2" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=ab2208a#ab2208a202da1e48363ed3cb57d54a745b3e2a2d" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=eaf81a7#eaf81a72a0ed77a2f28922eb0c2223016c447a27" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", @@ -784,7 +790,7 @@ dependencies = [ [[package]] name = "alloy-sol-macro-expander" version = "1.1.2" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=ab2208a#ab2208a202da1e48363ed3cb57d54a745b3e2a2d" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=eaf81a7#eaf81a72a0ed77a2f28922eb0c2223016c447a27" dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", @@ -802,7 +808,7 @@ dependencies = [ [[package]] name = "alloy-sol-macro-input" version = "1.1.2" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=ab2208a#ab2208a202da1e48363ed3cb57d54a745b3e2a2d" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=eaf81a7#eaf81a72a0ed77a2f28922eb0c2223016c447a27" dependencies = [ "alloy-json-abi", "const-hex", @@ -819,7 +825,7 @@ dependencies = [ [[package]] name = "alloy-sol-type-parser" version = "1.1.2" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=ab2208a#ab2208a202da1e48363ed3cb57d54a745b3e2a2d" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=eaf81a7#eaf81a72a0ed77a2f28922eb0c2223016c447a27" dependencies = [ "serde", "winnow", @@ -828,7 +834,7 @@ dependencies = [ [[package]] name = "alloy-sol-types" version = "1.1.2" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=ab2208a#ab2208a202da1e48363ed3cb57d54a745b3e2a2d" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=eaf81a7#eaf81a72a0ed77a2f28922eb0c2223016c447a27" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -6895,7 +6901,7 @@ checksum = "a79f352fc3893dcd670172e615afef993a41798a1d3fc0db88a3e60ef2e70ecc" [[package]] name = "op-revm" version = "4.0.2" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5e305bd7#5e305bd7abf92168449ceea7efb09182b9b1d1f4" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=c17e5a35#c17e5a3565298ec7dddc4da973df03217b5cb9b9" dependencies = [ "auto_impl", "once_cell", @@ -7960,7 +7966,7 @@ dependencies = [ [[package]] name = "revm" version = "23.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5e305bd7#5e305bd7abf92168449ceea7efb09182b9b1d1f4" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=c17e5a35#c17e5a3565298ec7dddc4da973df03217b5cb9b9" dependencies = [ "revm-bytecode", "revm-context", @@ -7978,7 +7984,7 @@ dependencies = [ [[package]] name = "revm-bytecode" version = "4.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5e305bd7#5e305bd7abf92168449ceea7efb09182b9b1d1f4" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=c17e5a35#c17e5a3565298ec7dddc4da973df03217b5cb9b9" dependencies = [ "bitvec", "once_cell", @@ -7990,7 +7996,7 @@ dependencies = [ [[package]] name = "revm-context" version = "4.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5e305bd7#5e305bd7abf92168449ceea7efb09182b9b1d1f4" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=c17e5a35#c17e5a3565298ec7dddc4da973df03217b5cb9b9" dependencies = [ "cfg-if", "derive-where", @@ -8005,7 +8011,7 @@ dependencies = [ [[package]] name = "revm-context-interface" version = "4.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5e305bd7#5e305bd7abf92168449ceea7efb09182b9b1d1f4" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=c17e5a35#c17e5a3565298ec7dddc4da973df03217b5cb9b9" dependencies = [ "alloy-eip2930", "alloy-eip7702", @@ -8020,7 +8026,7 @@ dependencies = [ [[package]] name = "revm-database" version = "4.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5e305bd7#5e305bd7abf92168449ceea7efb09182b9b1d1f4" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=c17e5a35#c17e5a3565298ec7dddc4da973df03217b5cb9b9" dependencies = [ "alloy-eips", "revm-bytecode", @@ -8033,7 +8039,7 @@ dependencies = [ [[package]] name = "revm-database-interface" version = "4.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5e305bd7#5e305bd7abf92168449ceea7efb09182b9b1d1f4" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=c17e5a35#c17e5a3565298ec7dddc4da973df03217b5cb9b9" dependencies = [ "auto_impl", "revm-primitives", @@ -8044,7 +8050,7 @@ dependencies = [ [[package]] name = "revm-handler" version = "4.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5e305bd7#5e305bd7abf92168449ceea7efb09182b9b1d1f4" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=c17e5a35#c17e5a3565298ec7dddc4da973df03217b5cb9b9" dependencies = [ "auto_impl", "revm-bytecode", @@ -8061,7 +8067,7 @@ dependencies = [ [[package]] name = "revm-inspector" version = "4.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5e305bd7#5e305bd7abf92168449ceea7efb09182b9b1d1f4" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=c17e5a35#c17e5a3565298ec7dddc4da973df03217b5cb9b9" dependencies = [ "auto_impl", "revm-context", @@ -8077,7 +8083,7 @@ dependencies = [ [[package]] name = "revm-inspectors" version = "0.22.3" -source = "git+https://github.com/SeismicSystems/seismic-revm-inspectors.git?rev=cebb097#cebb097ae9e3c89505cc6b30017135c4039cec0d" +source = "git+https://github.com/SeismicSystems/seismic-revm-inspectors.git?rev=f6dbe5b#f6dbe5b9e0299b18421b82a60b6e654ab061cf7a" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -8094,7 +8100,7 @@ dependencies = [ [[package]] name = "revm-interpreter" version = "19.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5e305bd7#5e305bd7abf92168449ceea7efb09182b9b1d1f4" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=c17e5a35#c17e5a3565298ec7dddc4da973df03217b5cb9b9" dependencies = [ "revm-bytecode", "revm-context-interface", @@ -8105,7 +8111,7 @@ dependencies = [ [[package]] name = "revm-precompile" version = "20.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5e305bd7#5e305bd7abf92168449ceea7efb09182b9b1d1f4" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=c17e5a35#c17e5a3565298ec7dddc4da973df03217b5cb9b9" dependencies = [ "ark-bls12-381", "ark-bn254", @@ -8129,7 +8135,7 @@ dependencies = [ [[package]] name = "revm-primitives" version = "19.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5e305bd7#5e305bd7abf92168449ceea7efb09182b9b1d1f4" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=c17e5a35#c17e5a3565298ec7dddc4da973df03217b5cb9b9" dependencies = [ "alloy-primitives", "num_enum", @@ -8139,7 +8145,7 @@ dependencies = [ [[package]] name = "revm-state" version = "4.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5e305bd7#5e305bd7abf92168449ceea7efb09182b9b1d1f4" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=c17e5a35#c17e5a3565298ec7dddc4da973df03217b5cb9b9" dependencies = [ "bitflags 2.9.1", "revm-bytecode", @@ -8656,7 +8662,7 @@ dependencies = [ [[package]] name = "seismic-alloy-consensus" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=b2ade53#b2ade5397da3e80ad8add857a72abbafb266b5bf" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=47a7612#47a7612f93a1599b93ad90294cd1e463960be225" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -8677,7 +8683,7 @@ dependencies = [ [[package]] name = "seismic-alloy-network" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=b2ade53#b2ade5397da3e80ad8add857a72abbafb266b5bf" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=47a7612#47a7612f93a1599b93ad90294cd1e463960be225" dependencies = [ "alloy-consensus", "alloy-eip7702", @@ -8700,14 +8706,12 @@ dependencies = [ [[package]] name = "seismic-alloy-provider" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=b2ade53#b2ade5397da3e80ad8add857a72abbafb266b5bf" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=47a7612#47a7612f93a1599b93ad90294cd1e463960be225" dependencies = [ - "alloy-consensus", "alloy-network", "alloy-primitives", "alloy-provider", "alloy-rpc-client", - "alloy-signer", "alloy-transport", "async-trait", "reqwest", @@ -8719,7 +8723,7 @@ dependencies = [ [[package]] name = "seismic-alloy-rpc-types" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=b2ade53#b2ade5397da3e80ad8add857a72abbafb266b5bf" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=47a7612#47a7612f93a1599b93ad90294cd1e463960be225" dependencies = [ "alloy-consensus", "alloy-eips", @@ -8737,7 +8741,7 @@ dependencies = [ [[package]] name = "seismic-enclave" version = "0.1.0" -source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=99351ff#99351ff6261772f48b9936a2a2648073defbffd5" +source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=7a0519c#7a0519c8eea310cb60975dd1c81308cd5fa1646b" dependencies = [ "aes-gcm", "anyhow", @@ -8766,7 +8770,7 @@ dependencies = [ [[package]] name = "seismic-enclave-derive" version = "0.1.0" -source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=99351ff#99351ff6261772f48b9936a2a2648073defbffd5" +source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=7a0519c#7a0519c8eea310cb60975dd1c81308cd5fa1646b" dependencies = [ "proc-macro2", "quote", @@ -8776,7 +8780,7 @@ dependencies = [ [[package]] name = "seismic-prelude" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=b2ade53#b2ade5397da3e80ad8add857a72abbafb266b5bf" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=47a7612#47a7612f93a1599b93ad90294cd1e463960be225" dependencies = [ "alloy-consensus", "alloy-eip7702", @@ -8801,7 +8805,7 @@ dependencies = [ [[package]] name = "seismic-revm" version = "1.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5e305bd7#5e305bd7abf92168449ceea7efb09182b9b1d1f4" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=c17e5a35#c17e5a3565298ec7dddc4da973df03217b5cb9b9" dependencies = [ "auto_impl", "hkdf", @@ -9681,7 +9685,7 @@ dependencies = [ [[package]] name = "syn-solidity" version = "1.1.2" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=ab2208a#ab2208a202da1e48363ed3cb57d54a745b3e2a2d" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=eaf81a7#eaf81a72a0ed77a2f28922eb0c2223016c447a27" dependencies = [ "paste", "proc-macro2", diff --git a/Cargo.toml b/Cargo.toml index a57cc349d..4b6e558fc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -362,45 +362,46 @@ zip-extract = "=0.2.1" # If our dependencies depend on these things, # then this will override whatever versions they point to # and instead use our local version -seismic-enclave = { git = "https://github.com/SeismicSystems/seismic-enclave.git", rev = "99351ff"} +seismic-enclave = { git = "https://github.com/SeismicSystems/seismic-enclave.git", rev = "7a0519c"} -seismic-alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "b2ade53" } -seismic-alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "b2ade53" } -seismic-alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "b2ade53" } -seismic-alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "b2ade53" } -seismic-prelude = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "b2ade53" } +# seismic-alloy-core +alloy-dyn-abi = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "eaf81a7" } +alloy-json-abi = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "eaf81a7" } +alloy-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "eaf81a7" } +alloy-sol-macro = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "eaf81a7" } +alloy-sol-macro-expander = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "eaf81a7" } +alloy-sol-macro-input = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "eaf81a7" } +alloy-sol-types = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "eaf81a7" } +alloy-sol-type-parser = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "eaf81a7" } + +alloy-trie = { git = "https://github.com/SeismicSystems/seismic-trie.git", rev = "f3a74a3" } -foundry-fork-db = { git = "https://github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "e973e44" } +# Seismic alloy +seismic-alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "47a7612" } +seismic-alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "47a7612" } +seismic-alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "47a7612" } +seismic-alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "47a7612" } +seismic-prelude = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "47a7612" } # seismic-revm -revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "5e305bd7" } -revm-primitives = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "5e305bd7" } -revm-interpreter = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "5e305bd7" } -op-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "5e305bd7" } -seismic-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "5e305bd7" } +revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "c17e5a35" } +revm-primitives = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "c17e5a35" } +revm-interpreter = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "c17e5a35" } +op-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "c17e5a35" } +seismic-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "c17e5a35" } -# seismic-revm-inspectors -revm-inspectors = { git = "https://github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "cebb097" } +revm-inspectors = { git = "https://github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "f6dbe5b" } -# seismic-alloy-core -alloy-dyn-abi = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "ab2208a" } -alloy-json-abi = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "ab2208a" } -alloy-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "ab2208a" } -alloy-sol-macro = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "ab2208a" } -alloy-sol-macro-expander = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "ab2208a" } -alloy-sol-macro-input = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "ab2208a" } -alloy-sol-types = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "ab2208a" } -alloy-sol-type-parser = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "ab2208a" } +# alloy-evm +alloy-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "84d4a82" } +alloy-op-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "84d4a82" } +alloy-seismic-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "84d4a82" } +# Foundry foundry-compilers = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "cde8c42" } foundry-compilers-artifacts = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "cde8c42" } foundry-compilers-artifacts-solc = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "cde8c42" } foundry-compilers-artifacts-vyper = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "cde8c42" } foundry-compilers-core = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "cde8c42" } -# alloy-evm -alloy-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "8230891" } -alloy-op-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "8230891" } -alloy-seismic-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "8230891" } - -alloy-trie = { git = "https://github.com/SeismicSystems/seismic-trie.git", rev = "f3a74a3" } +foundry-fork-db = { git = "https://github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "e973e44" } \ No newline at end of file From 1b5a8363255836cd74d85cd3225faecc53610870 Mon Sep 17 00:00:00 2001 From: Spencer Solit Date: Thu, 19 Jun 2025 17:58:25 -0400 Subject: [PATCH 085/130] fmt --- crates/anvil/src/eth/backend/mem/in_memory_db.rs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/crates/anvil/src/eth/backend/mem/in_memory_db.rs b/crates/anvil/src/eth/backend/mem/in_memory_db.rs index 9775eb62e..d1b0c5f6c 100644 --- a/crates/anvil/src/eth/backend/mem/in_memory_db.rs +++ b/crates/anvil/src/eth/backend/mem/in_memory_db.rs @@ -153,10 +153,9 @@ impl MaybeForkedDatabase for MemDb { #[cfg(test)] mod tests { use super::*; - use alloy_primitives::{address, Bytes}; + use alloy_primitives::{address, Bytes, FlaggedStorage}; use revm::{bytecode::Bytecode, primitives::KECCAK_EMPTY}; use std::collections::BTreeMap; - use alloy_primitives::FlaggedStorage; // verifies that all substantial aspects of a loaded account remain the same after an account // is dumped and reloaded @@ -258,7 +257,13 @@ mod tests { assert_eq!(loaded_account.balance, U256::from(100100)); assert_eq!(db.code_by_hash_ref(loaded_account.code_hash).unwrap(), contract_code); assert_eq!(loaded_account.nonce, 1234); - assert_eq!(db.storage_ref(test_addr, U256::from(1234567)).unwrap(), FlaggedStorage::from(U256::from(1))); - assert_eq!(db.storage_ref(test_addr, U256::from(1234568)).unwrap(), FlaggedStorage::from(U256::from(5))); + assert_eq!( + db.storage_ref(test_addr, U256::from(1234567)).unwrap(), + FlaggedStorage::from(U256::from(1)) + ); + assert_eq!( + db.storage_ref(test_addr, U256::from(1234568)).unwrap(), + FlaggedStorage::from(U256::from(5)) + ); } } From 91af8859922eec3fc39e84e9141ec71dff8cd333 Mon Sep 17 00:00:00 2001 From: Spencer Solit Date: Fri, 20 Jun 2025 13:52:57 -0400 Subject: [PATCH 086/130] evm stuff no longer in prelude --- Cargo.lock | 65 ++++++++++++------------ Cargo.toml | 41 +++++++-------- crates/anvil/src/eth/backend/executor.rs | 3 +- crates/anvil/src/evm.rs | 3 +- crates/evm/core/Cargo.toml | 1 + crates/evm/core/src/either_evm.rs | 3 +- crates/evm/core/src/env.rs | 3 +- crates/evm/core/src/fork/init.rs | 3 +- crates/evm/core/src/lib.rs | 7 +++ crates/evm/core/src/opts.rs | 3 +- crates/evm/evm/src/executors/mod.rs | 3 +- 11 files changed, 75 insertions(+), 60 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cb4326cdc..b5bd16042 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -155,7 +155,7 @@ dependencies = [ [[package]] name = "alloy-dyn-abi" version = "1.1.2" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=eaf81a7#eaf81a72a0ed77a2f28922eb0c2223016c447a27" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=978056b#978056b7c9a267c6751334c8a1b48c2298b6bff1" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -291,7 +291,7 @@ dependencies = [ [[package]] name = "alloy-json-abi" version = "1.1.2" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=eaf81a7#eaf81a72a0ed77a2f28922eb0c2223016c447a27" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=978056b#978056b7c9a267c6751334c8a1b48c2298b6bff1" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -381,7 +381,7 @@ dependencies = [ [[package]] name = "alloy-primitives" version = "1.1.2" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=eaf81a7#eaf81a72a0ed77a2f28922eb0c2223016c447a27" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=978056b#978056b7c9a267c6751334c8a1b48c2298b6bff1" dependencies = [ "alloy-rlp", "arbitrary", @@ -777,7 +777,7 @@ dependencies = [ [[package]] name = "alloy-sol-macro" version = "1.1.2" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=eaf81a7#eaf81a72a0ed77a2f28922eb0c2223016c447a27" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=978056b#978056b7c9a267c6751334c8a1b48c2298b6bff1" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", @@ -790,7 +790,7 @@ dependencies = [ [[package]] name = "alloy-sol-macro-expander" version = "1.1.2" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=eaf81a7#eaf81a72a0ed77a2f28922eb0c2223016c447a27" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=978056b#978056b7c9a267c6751334c8a1b48c2298b6bff1" dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", @@ -808,7 +808,7 @@ dependencies = [ [[package]] name = "alloy-sol-macro-input" version = "1.1.2" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=eaf81a7#eaf81a72a0ed77a2f28922eb0c2223016c447a27" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=978056b#978056b7c9a267c6751334c8a1b48c2298b6bff1" dependencies = [ "alloy-json-abi", "const-hex", @@ -825,7 +825,7 @@ dependencies = [ [[package]] name = "alloy-sol-type-parser" version = "1.1.2" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=eaf81a7#eaf81a72a0ed77a2f28922eb0c2223016c447a27" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=978056b#978056b7c9a267c6751334c8a1b48c2298b6bff1" dependencies = [ "serde", "winnow", @@ -834,7 +834,7 @@ dependencies = [ [[package]] name = "alloy-sol-types" version = "1.1.2" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=eaf81a7#eaf81a72a0ed77a2f28922eb0c2223016c447a27" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=978056b#978056b7c9a267c6751334c8a1b48c2298b6bff1" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -923,7 +923,7 @@ dependencies = [ [[package]] name = "alloy-trie" version = "0.8.1" -source = "git+https://github.com/SeismicSystems/seismic-trie.git?rev=f3a74a3#f3a74a3163093f3080abb7040d72a396c003b5fb" +source = "git+https://github.com/SeismicSystems/seismic-trie.git?rev=9d85b9c#9d85b9c2dfa07e46b9654ecb8d5808b5cac0fb28" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -4555,6 +4555,7 @@ dependencies = [ "alloy-primitives", "alloy-provider", "alloy-rpc-types", + "alloy-seismic-evm", "alloy-sol-types", "auto_impl", "eyre", @@ -6901,7 +6902,7 @@ checksum = "a79f352fc3893dcd670172e615afef993a41798a1d3fc0db88a3e60ef2e70ecc" [[package]] name = "op-revm" version = "4.0.2" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=c17e5a35#c17e5a3565298ec7dddc4da973df03217b5cb9b9" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=eb5e3c5e#eb5e3c5e79c55849540d1ddf65b587668c436eec" dependencies = [ "auto_impl", "once_cell", @@ -7966,7 +7967,7 @@ dependencies = [ [[package]] name = "revm" version = "23.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=c17e5a35#c17e5a3565298ec7dddc4da973df03217b5cb9b9" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=eb5e3c5e#eb5e3c5e79c55849540d1ddf65b587668c436eec" dependencies = [ "revm-bytecode", "revm-context", @@ -7984,7 +7985,7 @@ dependencies = [ [[package]] name = "revm-bytecode" version = "4.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=c17e5a35#c17e5a3565298ec7dddc4da973df03217b5cb9b9" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=eb5e3c5e#eb5e3c5e79c55849540d1ddf65b587668c436eec" dependencies = [ "bitvec", "once_cell", @@ -7996,7 +7997,7 @@ dependencies = [ [[package]] name = "revm-context" version = "4.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=c17e5a35#c17e5a3565298ec7dddc4da973df03217b5cb9b9" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=eb5e3c5e#eb5e3c5e79c55849540d1ddf65b587668c436eec" dependencies = [ "cfg-if", "derive-where", @@ -8011,7 +8012,7 @@ dependencies = [ [[package]] name = "revm-context-interface" version = "4.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=c17e5a35#c17e5a3565298ec7dddc4da973df03217b5cb9b9" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=eb5e3c5e#eb5e3c5e79c55849540d1ddf65b587668c436eec" dependencies = [ "alloy-eip2930", "alloy-eip7702", @@ -8026,7 +8027,7 @@ dependencies = [ [[package]] name = "revm-database" version = "4.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=c17e5a35#c17e5a3565298ec7dddc4da973df03217b5cb9b9" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=eb5e3c5e#eb5e3c5e79c55849540d1ddf65b587668c436eec" dependencies = [ "alloy-eips", "revm-bytecode", @@ -8039,7 +8040,7 @@ dependencies = [ [[package]] name = "revm-database-interface" version = "4.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=c17e5a35#c17e5a3565298ec7dddc4da973df03217b5cb9b9" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=eb5e3c5e#eb5e3c5e79c55849540d1ddf65b587668c436eec" dependencies = [ "auto_impl", "revm-primitives", @@ -8050,7 +8051,7 @@ dependencies = [ [[package]] name = "revm-handler" version = "4.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=c17e5a35#c17e5a3565298ec7dddc4da973df03217b5cb9b9" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=eb5e3c5e#eb5e3c5e79c55849540d1ddf65b587668c436eec" dependencies = [ "auto_impl", "revm-bytecode", @@ -8067,7 +8068,7 @@ dependencies = [ [[package]] name = "revm-inspector" version = "4.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=c17e5a35#c17e5a3565298ec7dddc4da973df03217b5cb9b9" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=eb5e3c5e#eb5e3c5e79c55849540d1ddf65b587668c436eec" dependencies = [ "auto_impl", "revm-context", @@ -8100,7 +8101,7 @@ dependencies = [ [[package]] name = "revm-interpreter" version = "19.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=c17e5a35#c17e5a3565298ec7dddc4da973df03217b5cb9b9" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=eb5e3c5e#eb5e3c5e79c55849540d1ddf65b587668c436eec" dependencies = [ "revm-bytecode", "revm-context-interface", @@ -8111,7 +8112,7 @@ dependencies = [ [[package]] name = "revm-precompile" version = "20.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=c17e5a35#c17e5a3565298ec7dddc4da973df03217b5cb9b9" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=eb5e3c5e#eb5e3c5e79c55849540d1ddf65b587668c436eec" dependencies = [ "ark-bls12-381", "ark-bn254", @@ -8135,7 +8136,7 @@ dependencies = [ [[package]] name = "revm-primitives" version = "19.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=c17e5a35#c17e5a3565298ec7dddc4da973df03217b5cb9b9" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=eb5e3c5e#eb5e3c5e79c55849540d1ddf65b587668c436eec" dependencies = [ "alloy-primitives", "num_enum", @@ -8145,7 +8146,7 @@ dependencies = [ [[package]] name = "revm-state" version = "4.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=c17e5a35#c17e5a3565298ec7dddc4da973df03217b5cb9b9" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=eb5e3c5e#eb5e3c5e79c55849540d1ddf65b587668c436eec" dependencies = [ "bitflags 2.9.1", "revm-bytecode", @@ -8662,7 +8663,7 @@ dependencies = [ [[package]] name = "seismic-alloy-consensus" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=47a7612#47a7612f93a1599b93ad90294cd1e463960be225" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=b0fc06f#b0fc06f85c07a4028bba7c28d15abd335cecd039" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -8683,7 +8684,7 @@ dependencies = [ [[package]] name = "seismic-alloy-network" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=47a7612#47a7612f93a1599b93ad90294cd1e463960be225" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=b0fc06f#b0fc06f85c07a4028bba7c28d15abd335cecd039" dependencies = [ "alloy-consensus", "alloy-eip7702", @@ -8706,7 +8707,7 @@ dependencies = [ [[package]] name = "seismic-alloy-provider" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=47a7612#47a7612f93a1599b93ad90294cd1e463960be225" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=b0fc06f#b0fc06f85c07a4028bba7c28d15abd335cecd039" dependencies = [ "alloy-network", "alloy-primitives", @@ -8723,7 +8724,7 @@ dependencies = [ [[package]] name = "seismic-alloy-rpc-types" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=47a7612#47a7612f93a1599b93ad90294cd1e463960be225" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=b0fc06f#b0fc06f85c07a4028bba7c28d15abd335cecd039" dependencies = [ "alloy-consensus", "alloy-eips", @@ -8741,7 +8742,7 @@ dependencies = [ [[package]] name = "seismic-enclave" version = "0.1.0" -source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=7a0519c#7a0519c8eea310cb60975dd1c81308cd5fa1646b" +source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=30a53d5#30a53d53375de3dfa66938793dd739ec1c386a5b" dependencies = [ "aes-gcm", "anyhow", @@ -8770,7 +8771,7 @@ dependencies = [ [[package]] name = "seismic-enclave-derive" version = "0.1.0" -source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=7a0519c#7a0519c8eea310cb60975dd1c81308cd5fa1646b" +source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=30a53d5#30a53d53375de3dfa66938793dd739ec1c386a5b" dependencies = [ "proc-macro2", "quote", @@ -8780,17 +8781,15 @@ dependencies = [ [[package]] name = "seismic-prelude" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=47a7612#47a7612f93a1599b93ad90294cd1e463960be225" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=b0fc06f#b0fc06f85c07a4028bba7c28d15abd335cecd039" dependencies = [ "alloy-consensus", "alloy-eip7702", - "alloy-evm", "alloy-network", "alloy-network-primitives", "alloy-primitives", "alloy-rpc-types", "alloy-rpc-types-eth", - "alloy-seismic-evm", "alloy-serde", "derive_more 1.0.0", "revm", @@ -8805,7 +8804,7 @@ dependencies = [ [[package]] name = "seismic-revm" version = "1.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=c17e5a35#c17e5a3565298ec7dddc4da973df03217b5cb9b9" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=eb5e3c5e#eb5e3c5e79c55849540d1ddf65b587668c436eec" dependencies = [ "auto_impl", "hkdf", @@ -9685,7 +9684,7 @@ dependencies = [ [[package]] name = "syn-solidity" version = "1.1.2" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=eaf81a7#eaf81a72a0ed77a2f28922eb0c2223016c447a27" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=978056b#978056b7c9a267c6751334c8a1b48c2298b6bff1" dependencies = [ "paste", "proc-macro2", diff --git a/Cargo.toml b/Cargo.toml index c9201b9f6..5bab25a01 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -171,6 +171,7 @@ trezor-client.opt-level = "z" alloy-rpc-types-eth = { version = "1.0.5", default-features = true } seismic-prelude = "0.0.1" seismic-enclave = "0.1.0" +alloy-seismic-evm = "0.9.1" anvil = { path = "crates/anvil" } cast = { path = "crates/cast" } @@ -362,33 +363,33 @@ zip-extract = "=0.2.1" # If our dependencies depend on these things, # then this will override whatever versions they point to # and instead use our local version -seismic-enclave = { git = "https://github.com/SeismicSystems/seismic-enclave.git", rev = "7a0519c"} +seismic-enclave = { git = "https://github.com/SeismicSystems/seismic-enclave.git", rev = "30a53d5"} # seismic-alloy-core -alloy-dyn-abi = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "eaf81a7" } -alloy-json-abi = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "eaf81a7" } -alloy-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "eaf81a7" } -alloy-sol-macro = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "eaf81a7" } -alloy-sol-macro-expander = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "eaf81a7" } -alloy-sol-macro-input = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "eaf81a7" } -alloy-sol-types = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "eaf81a7" } -alloy-sol-type-parser = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "eaf81a7" } +alloy-dyn-abi = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "978056b" } +alloy-json-abi = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "978056b" } +alloy-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "978056b" } +alloy-sol-macro = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "978056b" } +alloy-sol-macro-expander = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "978056b" } +alloy-sol-macro-input = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "978056b" } +alloy-sol-types = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "978056b" } +alloy-sol-type-parser = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "978056b" } -alloy-trie = { git = "https://github.com/SeismicSystems/seismic-trie.git", rev = "f3a74a3" } +alloy-trie = { git = "https://github.com/SeismicSystems/seismic-trie.git", rev = "9d85b9c" } # seismic-alloy -seismic-alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "47a7612" } -seismic-alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "47a7612" } -seismic-alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "47a7612" } -seismic-alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "47a7612" } -seismic-prelude = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "47a7612" } +seismic-alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "b0fc06f" } +seismic-alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "b0fc06f" } +seismic-alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "b0fc06f" } +seismic-alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "b0fc06f" } +seismic-prelude = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "b0fc06f" } # seismic-revm -revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "c17e5a35" } -revm-primitives = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "c17e5a35" } -revm-interpreter = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "c17e5a35" } -op-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "c17e5a35" } -seismic-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "c17e5a35" } +revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "eb5e3c5e" } +revm-primitives = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "eb5e3c5e" } +revm-interpreter = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "eb5e3c5e" } +op-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "eb5e3c5e" } +seismic-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "eb5e3c5e" } revm-inspectors = { git = "https://github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "f6dbe5b" } diff --git a/crates/anvil/src/eth/backend/executor.rs b/crates/anvil/src/eth/backend/executor.rs index 9c7371dff..440ae866f 100644 --- a/crates/anvil/src/eth/backend/executor.rs +++ b/crates/anvil/src/eth/backend/executor.rs @@ -38,9 +38,10 @@ use revm::{ use std::sync::Arc; use seismic_prelude::foundry::{ - CfgEnv, RevmEvm, SeismicChain, SeismicContext, SeismicEvm, SeismicInstructions, + CfgEnv, RevmEvm, SeismicChain, SeismicContext, SeismicInstructions, SeismicPrecompiles, SeismicTransaction, }; +use foundry_evm_core::SeismicEvm; /// Represents an executed transaction (transacted on the DB) #[derive(Debug)] diff --git a/crates/anvil/src/evm.rs b/crates/anvil/src/evm.rs index 8a35a813d..41727ffb1 100644 --- a/crates/anvil/src/evm.rs +++ b/crates/anvil/src/evm.rs @@ -70,9 +70,10 @@ mod tests { use crate::{inject_precompiles, PrecompileFactory}; use seismic_prelude::foundry::{ - SeismicChain, SeismicContext, SeismicEvm, SeismicPrecompiles, SeismicSpecId, + SeismicChain, SeismicContext, SeismicPrecompiles, SeismicSpecId, SeismicTransaction, }; + use foundry_evm_core::SeismicEvm; // A precompile activated in the `Prague` spec. const ETH_PRAGUE_PRECOMPILE: Address = address!("0x0000000000000000000000000000000000000011"); diff --git a/crates/evm/core/Cargo.toml b/crates/evm/core/Cargo.toml index 4e6654596..5f0eb9f28 100644 --- a/crates/evm/core/Cargo.toml +++ b/crates/evm/core/Cargo.toml @@ -15,6 +15,7 @@ workspace = true [dependencies] seismic-prelude.workspace = true +alloy-seismic-evm.workspace = true foundry-cheatcodes-spec.workspace = true foundry-common.workspace = true diff --git a/crates/evm/core/src/either_evm.rs b/crates/evm/core/src/either_evm.rs index 10e1221e0..78e30e83e 100644 --- a/crates/evm/core/src/either_evm.rs +++ b/crates/evm/core/src/either_evm.rs @@ -11,7 +11,8 @@ use revm::{ DatabaseCommit, Inspector, }; -use seismic_prelude::foundry::{OpHaltReason, OpTransaction, SeismicContext, SeismicEvm, SpecId}; +use seismic_prelude::foundry::{OpHaltReason, OpTransaction, SeismicContext, SpecId}; +use crate::{SeismicEvm}; /// Alias for result type returned by [`Evm::transact`] methods. type EitherEvmResult = diff --git a/crates/evm/core/src/env.rs b/crates/evm/core/src/env.rs index 8a3a19ef5..3e2d2c64b 100644 --- a/crates/evm/core/src/env.rs +++ b/crates/evm/core/src/env.rs @@ -7,7 +7,8 @@ use revm::{ Context, Database, Journal, JournalEntry, }; -use seismic_prelude::foundry::{CfgEnv, EvmEnv, SpecId, TxEnv}; +use seismic_prelude::foundry::{CfgEnv, SpecId, TxEnv}; +use crate::{EvmEnv}; /// Helper container type for [`EvmEnv`] and [`TxEnv`]. #[derive(Clone, Debug, Default)] diff --git a/crates/evm/core/src/fork/init.rs b/crates/evm/core/src/fork/init.rs index 95effe85c..f95eb38cc 100644 --- a/crates/evm/core/src/fork/init.rs +++ b/crates/evm/core/src/fork/init.rs @@ -7,7 +7,8 @@ use eyre::WrapErr; use foundry_common::NON_ARCHIVE_NODE_WARNING; use revm::context::{BlockEnv, TxEnv as RevmTxEnv}; -use seismic_prelude::foundry::{CfgEnv, EvmEnv, TxEnv}; +use seismic_prelude::foundry::{CfgEnv, TxEnv}; +use crate::{EvmEnv}; /// Initializes a REVM block environment based on a forked /// ethereum provider. diff --git a/crates/evm/core/src/lib.rs b/crates/evm/core/src/lib.rs index 716f0d8c1..17c73c37e 100644 --- a/crates/evm/core/src/lib.rs +++ b/crates/evm/core/src/lib.rs @@ -14,6 +14,13 @@ use revm::{inspector::NoOpInspector, interpreter::CreateInputs, Inspector}; use revm_inspectors::access_list::AccessListInspector; use seismic_prelude::foundry::EthEvmContext; +use seismic_prelude::foundry::SeismicSpecId; + +pub use alloy_evm::EvmEnv as AlloyEvmEnv; +pub use alloy_seismic_evm::SeismicEvm; + +/// Seismic EVM environment, which wraps alloy-evm's EvmEnv +pub type EvmEnv = AlloyEvmEnv; #[macro_use] extern crate tracing; diff --git a/crates/evm/core/src/opts.rs b/crates/evm/core/src/opts.rs index 3bc363003..18ae46af6 100644 --- a/crates/evm/core/src/opts.rs +++ b/crates/evm/core/src/opts.rs @@ -13,7 +13,8 @@ use serde::{Deserialize, Serialize}; use std::fmt::Write; use url::Url; -use seismic_prelude::foundry::{AnyRpcBlock, EvmEnv, TxEnv}; +use seismic_prelude::foundry::{AnyRpcBlock, TxEnv}; +use crate::EvmEnv; #[derive(Clone, Debug, Serialize, Deserialize)] pub struct EvmOpts { diff --git a/crates/evm/evm/src/executors/mod.rs b/crates/evm/evm/src/executors/mod.rs index 705a3ea9d..2d2b3b3a8 100644 --- a/crates/evm/evm/src/executors/mod.rs +++ b/crates/evm/evm/src/executors/mod.rs @@ -59,7 +59,8 @@ pub use invariant::InvariantExecutor; mod trace; pub use trace::TracingExecutor; -use seismic_prelude::foundry::{EvmEnv, SpecId}; +use seismic_prelude::foundry::SpecId; +use foundry_evm_core::EvmEnv; sol! { interface ITest { From c79276de778aac40ca3db7f3d0f41a52ec7be574 Mon Sep 17 00:00:00 2001 From: Spencer Solit Date: Fri, 20 Jun 2025 13:55:31 -0400 Subject: [PATCH 087/130] fmt --- crates/anvil/src/eth/backend/executor.rs | 6 +++--- crates/anvil/src/evm.rs | 5 ++--- crates/evm/core/src/either_evm.rs | 2 +- crates/evm/core/src/env.rs | 2 +- crates/evm/core/src/fork/init.rs | 2 +- crates/evm/core/src/lib.rs | 3 +-- crates/evm/core/src/opts.rs | 2 +- crates/evm/evm/src/executors/mod.rs | 2 +- 8 files changed, 11 insertions(+), 13 deletions(-) diff --git a/crates/anvil/src/eth/backend/executor.rs b/crates/anvil/src/eth/backend/executor.rs index 440ae866f..5766f71cb 100644 --- a/crates/anvil/src/eth/backend/executor.rs +++ b/crates/anvil/src/eth/backend/executor.rs @@ -37,11 +37,11 @@ use revm::{ }; use std::sync::Arc; +use foundry_evm_core::SeismicEvm; use seismic_prelude::foundry::{ - CfgEnv, RevmEvm, SeismicChain, SeismicContext, SeismicInstructions, - SeismicPrecompiles, SeismicTransaction, + CfgEnv, RevmEvm, SeismicChain, SeismicContext, SeismicInstructions, SeismicPrecompiles, + SeismicTransaction, }; -use foundry_evm_core::SeismicEvm; /// Represents an executed transaction (transacted on the DB) #[derive(Debug)] diff --git a/crates/anvil/src/evm.rs b/crates/anvil/src/evm.rs index 41727ffb1..9517fe373 100644 --- a/crates/anvil/src/evm.rs +++ b/crates/anvil/src/evm.rs @@ -69,11 +69,10 @@ mod tests { use crate::{inject_precompiles, PrecompileFactory}; + use foundry_evm_core::SeismicEvm; use seismic_prelude::foundry::{ - SeismicChain, SeismicContext, SeismicPrecompiles, SeismicSpecId, - SeismicTransaction, + SeismicChain, SeismicContext, SeismicPrecompiles, SeismicSpecId, SeismicTransaction, }; - use foundry_evm_core::SeismicEvm; // A precompile activated in the `Prague` spec. const ETH_PRAGUE_PRECOMPILE: Address = address!("0x0000000000000000000000000000000000000011"); diff --git a/crates/evm/core/src/either_evm.rs b/crates/evm/core/src/either_evm.rs index 78e30e83e..4f56c0090 100644 --- a/crates/evm/core/src/either_evm.rs +++ b/crates/evm/core/src/either_evm.rs @@ -11,8 +11,8 @@ use revm::{ DatabaseCommit, Inspector, }; +use crate::SeismicEvm; use seismic_prelude::foundry::{OpHaltReason, OpTransaction, SeismicContext, SpecId}; -use crate::{SeismicEvm}; /// Alias for result type returned by [`Evm::transact`] methods. type EitherEvmResult = diff --git a/crates/evm/core/src/env.rs b/crates/evm/core/src/env.rs index 3e2d2c64b..43b6f74c4 100644 --- a/crates/evm/core/src/env.rs +++ b/crates/evm/core/src/env.rs @@ -7,8 +7,8 @@ use revm::{ Context, Database, Journal, JournalEntry, }; +use crate::EvmEnv; use seismic_prelude::foundry::{CfgEnv, SpecId, TxEnv}; -use crate::{EvmEnv}; /// Helper container type for [`EvmEnv`] and [`TxEnv`]. #[derive(Clone, Debug, Default)] diff --git a/crates/evm/core/src/fork/init.rs b/crates/evm/core/src/fork/init.rs index f95eb38cc..077551aa7 100644 --- a/crates/evm/core/src/fork/init.rs +++ b/crates/evm/core/src/fork/init.rs @@ -6,9 +6,9 @@ use alloy_rpc_types::BlockNumberOrTag; use eyre::WrapErr; use foundry_common::NON_ARCHIVE_NODE_WARNING; +use crate::EvmEnv; use revm::context::{BlockEnv, TxEnv as RevmTxEnv}; use seismic_prelude::foundry::{CfgEnv, TxEnv}; -use crate::{EvmEnv}; /// Initializes a REVM block environment based on a forked /// ethereum provider. diff --git a/crates/evm/core/src/lib.rs b/crates/evm/core/src/lib.rs index 17c73c37e..dbe30e0b4 100644 --- a/crates/evm/core/src/lib.rs +++ b/crates/evm/core/src/lib.rs @@ -13,8 +13,7 @@ use backend::DatabaseExt; use revm::{inspector::NoOpInspector, interpreter::CreateInputs, Inspector}; use revm_inspectors::access_list::AccessListInspector; -use seismic_prelude::foundry::EthEvmContext; -use seismic_prelude::foundry::SeismicSpecId; +use seismic_prelude::foundry::{EthEvmContext, SeismicSpecId}; pub use alloy_evm::EvmEnv as AlloyEvmEnv; pub use alloy_seismic_evm::SeismicEvm; diff --git a/crates/evm/core/src/opts.rs b/crates/evm/core/src/opts.rs index 18ae46af6..3b33c301e 100644 --- a/crates/evm/core/src/opts.rs +++ b/crates/evm/core/src/opts.rs @@ -13,8 +13,8 @@ use serde::{Deserialize, Serialize}; use std::fmt::Write; use url::Url; -use seismic_prelude::foundry::{AnyRpcBlock, TxEnv}; use crate::EvmEnv; +use seismic_prelude::foundry::{AnyRpcBlock, TxEnv}; #[derive(Clone, Debug, Serialize, Deserialize)] pub struct EvmOpts { diff --git a/crates/evm/evm/src/executors/mod.rs b/crates/evm/evm/src/executors/mod.rs index 2d2b3b3a8..8f9ae5868 100644 --- a/crates/evm/evm/src/executors/mod.rs +++ b/crates/evm/evm/src/executors/mod.rs @@ -59,8 +59,8 @@ pub use invariant::InvariantExecutor; mod trace; pub use trace::TracingExecutor; -use seismic_prelude::foundry::SpecId; use foundry_evm_core::EvmEnv; +use seismic_prelude::foundry::SpecId; sol! { interface ITest { From e6b4fb5f58fc836620db885c3658e6e2d44b2c1e Mon Sep 17 00:00:00 2001 From: Spencer Solit Date: Fri, 20 Jun 2025 15:21:29 -0400 Subject: [PATCH 088/130] bump up to alloy-evm --- Cargo.lock | 46 +++++++++++++++++++++++----------------------- Cargo.toml | 34 +++++++++++++++++----------------- 2 files changed, 40 insertions(+), 40 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b5bd16042..12860f744 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -245,7 +245,7 @@ dependencies = [ [[package]] name = "alloy-evm" version = "0.9.1" -source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=84d4a82#84d4a82f27f2b09b967da229afa124f4f715ac5d" +source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=03433fd#03433fd886ef21f00b9cf6cf5f03a37536233368" dependencies = [ "alloy-consensus", "alloy-eips", @@ -355,7 +355,7 @@ dependencies = [ [[package]] name = "alloy-op-evm" version = "0.9.1" -source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=84d4a82#84d4a82f27f2b09b967da229afa124f4f715ac5d" +source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=03433fd#03433fd886ef21f00b9cf6cf5f03a37536233368" dependencies = [ "alloy-consensus", "alloy-eips", @@ -640,7 +640,7 @@ dependencies = [ [[package]] name = "alloy-seismic-evm" version = "0.9.1" -source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=84d4a82#84d4a82f27f2b09b967da229afa124f4f715ac5d" +source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=03433fd#03433fd886ef21f00b9cf6cf5f03a37536233368" dependencies = [ "alloy-consensus", "alloy-eips", @@ -6902,7 +6902,7 @@ checksum = "a79f352fc3893dcd670172e615afef993a41798a1d3fc0db88a3e60ef2e70ecc" [[package]] name = "op-revm" version = "4.0.2" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=eb5e3c5e#eb5e3c5e79c55849540d1ddf65b587668c436eec" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=4ee533d4#4ee533d47f3435eb4407f6966fb498dcd9e4d4bf" dependencies = [ "auto_impl", "once_cell", @@ -7967,7 +7967,7 @@ dependencies = [ [[package]] name = "revm" version = "23.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=eb5e3c5e#eb5e3c5e79c55849540d1ddf65b587668c436eec" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=4ee533d4#4ee533d47f3435eb4407f6966fb498dcd9e4d4bf" dependencies = [ "revm-bytecode", "revm-context", @@ -7985,7 +7985,7 @@ dependencies = [ [[package]] name = "revm-bytecode" version = "4.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=eb5e3c5e#eb5e3c5e79c55849540d1ddf65b587668c436eec" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=4ee533d4#4ee533d47f3435eb4407f6966fb498dcd9e4d4bf" dependencies = [ "bitvec", "once_cell", @@ -7997,7 +7997,7 @@ dependencies = [ [[package]] name = "revm-context" version = "4.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=eb5e3c5e#eb5e3c5e79c55849540d1ddf65b587668c436eec" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=4ee533d4#4ee533d47f3435eb4407f6966fb498dcd9e4d4bf" dependencies = [ "cfg-if", "derive-where", @@ -8012,7 +8012,7 @@ dependencies = [ [[package]] name = "revm-context-interface" version = "4.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=eb5e3c5e#eb5e3c5e79c55849540d1ddf65b587668c436eec" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=4ee533d4#4ee533d47f3435eb4407f6966fb498dcd9e4d4bf" dependencies = [ "alloy-eip2930", "alloy-eip7702", @@ -8027,7 +8027,7 @@ dependencies = [ [[package]] name = "revm-database" version = "4.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=eb5e3c5e#eb5e3c5e79c55849540d1ddf65b587668c436eec" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=4ee533d4#4ee533d47f3435eb4407f6966fb498dcd9e4d4bf" dependencies = [ "alloy-eips", "revm-bytecode", @@ -8040,7 +8040,7 @@ dependencies = [ [[package]] name = "revm-database-interface" version = "4.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=eb5e3c5e#eb5e3c5e79c55849540d1ddf65b587668c436eec" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=4ee533d4#4ee533d47f3435eb4407f6966fb498dcd9e4d4bf" dependencies = [ "auto_impl", "revm-primitives", @@ -8051,7 +8051,7 @@ dependencies = [ [[package]] name = "revm-handler" version = "4.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=eb5e3c5e#eb5e3c5e79c55849540d1ddf65b587668c436eec" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=4ee533d4#4ee533d47f3435eb4407f6966fb498dcd9e4d4bf" dependencies = [ "auto_impl", "revm-bytecode", @@ -8068,7 +8068,7 @@ dependencies = [ [[package]] name = "revm-inspector" version = "4.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=eb5e3c5e#eb5e3c5e79c55849540d1ddf65b587668c436eec" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=4ee533d4#4ee533d47f3435eb4407f6966fb498dcd9e4d4bf" dependencies = [ "auto_impl", "revm-context", @@ -8084,7 +8084,7 @@ dependencies = [ [[package]] name = "revm-inspectors" version = "0.22.3" -source = "git+https://github.com/SeismicSystems/seismic-revm-inspectors.git?rev=f6dbe5b#f6dbe5b9e0299b18421b82a60b6e654ab061cf7a" +source = "git+https://github.com/SeismicSystems/seismic-revm-inspectors.git?rev=ed6b2a7#ed6b2a758d877960e7c47f9699fdbdcf0f58a748" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -8101,7 +8101,7 @@ dependencies = [ [[package]] name = "revm-interpreter" version = "19.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=eb5e3c5e#eb5e3c5e79c55849540d1ddf65b587668c436eec" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=4ee533d4#4ee533d47f3435eb4407f6966fb498dcd9e4d4bf" dependencies = [ "revm-bytecode", "revm-context-interface", @@ -8112,7 +8112,7 @@ dependencies = [ [[package]] name = "revm-precompile" version = "20.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=eb5e3c5e#eb5e3c5e79c55849540d1ddf65b587668c436eec" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=4ee533d4#4ee533d47f3435eb4407f6966fb498dcd9e4d4bf" dependencies = [ "ark-bls12-381", "ark-bn254", @@ -8136,7 +8136,7 @@ dependencies = [ [[package]] name = "revm-primitives" version = "19.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=eb5e3c5e#eb5e3c5e79c55849540d1ddf65b587668c436eec" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=4ee533d4#4ee533d47f3435eb4407f6966fb498dcd9e4d4bf" dependencies = [ "alloy-primitives", "num_enum", @@ -8146,7 +8146,7 @@ dependencies = [ [[package]] name = "revm-state" version = "4.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=eb5e3c5e#eb5e3c5e79c55849540d1ddf65b587668c436eec" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=4ee533d4#4ee533d47f3435eb4407f6966fb498dcd9e4d4bf" dependencies = [ "bitflags 2.9.1", "revm-bytecode", @@ -8663,7 +8663,7 @@ dependencies = [ [[package]] name = "seismic-alloy-consensus" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=b0fc06f#b0fc06f85c07a4028bba7c28d15abd335cecd039" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=dddd920#dddd9203c038d93e2cc9039dba00322b83c68e81" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -8684,7 +8684,7 @@ dependencies = [ [[package]] name = "seismic-alloy-network" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=b0fc06f#b0fc06f85c07a4028bba7c28d15abd335cecd039" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=dddd920#dddd9203c038d93e2cc9039dba00322b83c68e81" dependencies = [ "alloy-consensus", "alloy-eip7702", @@ -8707,7 +8707,7 @@ dependencies = [ [[package]] name = "seismic-alloy-provider" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=b0fc06f#b0fc06f85c07a4028bba7c28d15abd335cecd039" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=dddd920#dddd9203c038d93e2cc9039dba00322b83c68e81" dependencies = [ "alloy-network", "alloy-primitives", @@ -8724,7 +8724,7 @@ dependencies = [ [[package]] name = "seismic-alloy-rpc-types" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=b0fc06f#b0fc06f85c07a4028bba7c28d15abd335cecd039" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=dddd920#dddd9203c038d93e2cc9039dba00322b83c68e81" dependencies = [ "alloy-consensus", "alloy-eips", @@ -8781,7 +8781,7 @@ dependencies = [ [[package]] name = "seismic-prelude" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=b0fc06f#b0fc06f85c07a4028bba7c28d15abd335cecd039" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=dddd920#dddd9203c038d93e2cc9039dba00322b83c68e81" dependencies = [ "alloy-consensus", "alloy-eip7702", @@ -8804,7 +8804,7 @@ dependencies = [ [[package]] name = "seismic-revm" version = "1.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=eb5e3c5e#eb5e3c5e79c55849540d1ddf65b587668c436eec" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=4ee533d4#4ee533d47f3435eb4407f6966fb498dcd9e4d4bf" dependencies = [ "auto_impl", "hkdf", diff --git a/Cargo.toml b/Cargo.toml index 5bab25a01..9e11ca089 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -377,28 +377,28 @@ alloy-sol-type-parser = { git = "https://github.com/SeismicSystems/seismic-alloy alloy-trie = { git = "https://github.com/SeismicSystems/seismic-trie.git", rev = "9d85b9c" } -# seismic-alloy -seismic-alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "b0fc06f" } -seismic-alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "b0fc06f" } -seismic-alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "b0fc06f" } -seismic-alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "b0fc06f" } -seismic-prelude = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "b0fc06f" } - # seismic-revm -revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "eb5e3c5e" } -revm-primitives = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "eb5e3c5e" } -revm-interpreter = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "eb5e3c5e" } -op-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "eb5e3c5e" } -seismic-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "eb5e3c5e" } +revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "4ee533d4" } +revm-primitives = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "4ee533d4" } +revm-interpreter = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "4ee533d4" } +op-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "4ee533d4" } +seismic-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "4ee533d4" } -revm-inspectors = { git = "https://github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "f6dbe5b" } +revm-inspectors = { git = "https://github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "ed6b2a7" } + +# seismic-alloy +seismic-alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "dddd920" } +seismic-alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "dddd920" } +seismic-alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "dddd920" } +seismic-alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "dddd920" } +seismic-prelude = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "dddd920" } # alloy-evm -alloy-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "84d4a82" } -alloy-op-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "84d4a82" } -alloy-seismic-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "84d4a82" } +alloy-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "03433fd" } +alloy-op-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "03433fd" } +alloy-seismic-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "03433fd" } -# Foundry +# foundry foundry-compilers = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "cde8c42" } foundry-compilers-artifacts = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "cde8c42" } foundry-compilers-artifacts-solc = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "cde8c42" } From 3f43ee44d69987810237912a49be3b596d537085 Mon Sep 17 00:00:00 2001 From: Spencer Solit Date: Fri, 20 Jun 2025 16:01:16 -0400 Subject: [PATCH 089/130] bump foundry deps --- Cargo.lock | 14 +++++++------- Cargo.toml | 12 ++++++------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 12860f744..61a6fbd50 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4344,7 +4344,7 @@ dependencies = [ [[package]] name = "foundry-compilers" version = "0.16.1" -source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=cde8c42#cde8c4233df3c41aee8c081b2d70ed228f26f64d" +source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=c08f5ac#c08f5ac2c40d9048b3bbf839cce9129af777cd72" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -4357,7 +4357,7 @@ dependencies = [ "fs_extra", "futures-util", "home", - "itertools 0.14.0", + "itertools 0.13.0", "path-slash", "rand 0.8.5", "rayon", @@ -4380,7 +4380,7 @@ dependencies = [ [[package]] name = "foundry-compilers-artifacts" version = "0.16.1" -source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=cde8c42#cde8c4233df3c41aee8c081b2d70ed228f26f64d" +source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=c08f5ac#c08f5ac2c40d9048b3bbf839cce9129af777cd72" dependencies = [ "foundry-compilers-artifacts-solc", "foundry-compilers-artifacts-vyper", @@ -4389,7 +4389,7 @@ dependencies = [ [[package]] name = "foundry-compilers-artifacts-solc" version = "0.16.1" -source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=cde8c42#cde8c4233df3c41aee8c081b2d70ed228f26f64d" +source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=c08f5ac#c08f5ac2c40d9048b3bbf839cce9129af777cd72" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -4411,7 +4411,7 @@ dependencies = [ [[package]] name = "foundry-compilers-artifacts-vyper" version = "0.16.1" -source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=cde8c42#cde8c4233df3c41aee8c081b2d70ed228f26f64d" +source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=c08f5ac#c08f5ac2c40d9048b3bbf839cce9129af777cd72" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -4425,7 +4425,7 @@ dependencies = [ [[package]] name = "foundry-compilers-core" version = "0.16.1" -source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=cde8c42#cde8c4233df3c41aee8c081b2d70ed228f26f64d" +source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=c08f5ac#c08f5ac2c40d9048b3bbf839cce9129af777cd72" dependencies = [ "alloy-primitives", "cfg-if", @@ -4650,7 +4650,7 @@ dependencies = [ [[package]] name = "foundry-fork-db" version = "0.14.0" -source = "git+https://github.com/SeismicSystems/seismic-foundry-fork-db.git?rev=e973e44#e973e440b42493f3b022e8a09a188513a0c73dee" +source = "git+https://github.com/SeismicSystems/seismic-foundry-fork-db.git?rev=a6d3bc3#a6d3bc3e57e3253bcc375ebfd7d50f2ebf805dcd" dependencies = [ "alloy-consensus", "alloy-primitives", diff --git a/Cargo.toml b/Cargo.toml index 9e11ca089..75cf1d43e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -399,10 +399,10 @@ alloy-op-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev alloy-seismic-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "03433fd" } # foundry -foundry-compilers = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "cde8c42" } -foundry-compilers-artifacts = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "cde8c42" } -foundry-compilers-artifacts-solc = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "cde8c42" } -foundry-compilers-artifacts-vyper = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "cde8c42" } -foundry-compilers-core = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "cde8c42" } +foundry-compilers = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "c08f5ac" } +foundry-compilers-artifacts = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "c08f5ac" } +foundry-compilers-artifacts-solc = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "c08f5ac" } +foundry-compilers-artifacts-vyper = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "c08f5ac" } +foundry-compilers-core = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "c08f5ac" } -foundry-fork-db = { git = "https://github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "e973e44" } \ No newline at end of file +foundry-fork-db = { git = "https://github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "a6d3bc3" } \ No newline at end of file From d4b666bc2cf95838b23b54ad1db5ce73b95d345d Mon Sep 17 00:00:00 2001 From: Spencer Solit Date: Mon, 23 Jun 2025 12:02:53 -0400 Subject: [PATCH 090/130] bump foundry-fork-db --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 61a6fbd50..e7ed5a382 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4650,7 +4650,7 @@ dependencies = [ [[package]] name = "foundry-fork-db" version = "0.14.0" -source = "git+https://github.com/SeismicSystems/seismic-foundry-fork-db.git?rev=a6d3bc3#a6d3bc3e57e3253bcc375ebfd7d50f2ebf805dcd" +source = "git+https://github.com/SeismicSystems/seismic-foundry-fork-db.git?rev=332e59c#332e59c12cc1fb97cb65fb57c98ec584028cc1ca" dependencies = [ "alloy-consensus", "alloy-primitives", diff --git a/Cargo.toml b/Cargo.toml index 75cf1d43e..56c84c869 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -405,4 +405,4 @@ foundry-compilers-artifacts-solc = { git = "https://github.com/SeismicSystems/se foundry-compilers-artifacts-vyper = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "c08f5ac" } foundry-compilers-core = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "c08f5ac" } -foundry-fork-db = { git = "https://github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "a6d3bc3" } \ No newline at end of file +foundry-fork-db = { git = "https://github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "332e59c" } \ No newline at end of file From d493c2aac4bc7698e763c50964df55f6644f9c17 Mon Sep 17 00:00:00 2001 From: cdrappi Date: Tue, 1 Jul 2025 08:04:38 -0400 Subject: [PATCH 091/130] udpate commits --- Cargo.lock | 195 ++++++++++++++++++++++++++++++++++++++++++----------- Cargo.toml | 58 ++++++++-------- 2 files changed, 183 insertions(+), 70 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e7ed5a382..12bebcc7d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -155,7 +155,7 @@ dependencies = [ [[package]] name = "alloy-dyn-abi" version = "1.1.2" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=978056b#978056b7c9a267c6751334c8a1b48c2298b6bff1" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=bc4b5ed#bc4b5ed0cf4e5c69b2c3fec8cc518fb3cf45859e" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -245,7 +245,7 @@ dependencies = [ [[package]] name = "alloy-evm" version = "0.9.1" -source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=03433fd#03433fd886ef21f00b9cf6cf5f03a37536233368" +source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=6fdefa5#6fdefa59258c25faf1ba20a45bc54a96fd109920" dependencies = [ "alloy-consensus", "alloy-eips", @@ -291,7 +291,7 @@ dependencies = [ [[package]] name = "alloy-json-abi" version = "1.1.2" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=978056b#978056b7c9a267c6751334c8a1b48c2298b6bff1" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=bc4b5ed#bc4b5ed0cf4e5c69b2c3fec8cc518fb3cf45859e" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -355,7 +355,7 @@ dependencies = [ [[package]] name = "alloy-op-evm" version = "0.9.1" -source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=03433fd#03433fd886ef21f00b9cf6cf5f03a37536233368" +source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=6fdefa5#6fdefa59258c25faf1ba20a45bc54a96fd109920" dependencies = [ "alloy-consensus", "alloy-eips", @@ -381,7 +381,7 @@ dependencies = [ [[package]] name = "alloy-primitives" version = "1.1.2" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=978056b#978056b7c9a267c6751334c8a1b48c2298b6bff1" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=bc4b5ed#bc4b5ed0cf4e5c69b2c3fec8cc518fb3cf45859e" dependencies = [ "alloy-rlp", "arbitrary", @@ -640,7 +640,7 @@ dependencies = [ [[package]] name = "alloy-seismic-evm" version = "0.9.1" -source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=03433fd#03433fd886ef21f00b9cf6cf5f03a37536233368" +source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=6fdefa5#6fdefa59258c25faf1ba20a45bc54a96fd109920" dependencies = [ "alloy-consensus", "alloy-eips", @@ -777,7 +777,7 @@ dependencies = [ [[package]] name = "alloy-sol-macro" version = "1.1.2" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=978056b#978056b7c9a267c6751334c8a1b48c2298b6bff1" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=bc4b5ed#bc4b5ed0cf4e5c69b2c3fec8cc518fb3cf45859e" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", @@ -790,7 +790,7 @@ dependencies = [ [[package]] name = "alloy-sol-macro-expander" version = "1.1.2" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=978056b#978056b7c9a267c6751334c8a1b48c2298b6bff1" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=bc4b5ed#bc4b5ed0cf4e5c69b2c3fec8cc518fb3cf45859e" dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", @@ -808,7 +808,7 @@ dependencies = [ [[package]] name = "alloy-sol-macro-input" version = "1.1.2" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=978056b#978056b7c9a267c6751334c8a1b48c2298b6bff1" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=bc4b5ed#bc4b5ed0cf4e5c69b2c3fec8cc518fb3cf45859e" dependencies = [ "alloy-json-abi", "const-hex", @@ -825,7 +825,7 @@ dependencies = [ [[package]] name = "alloy-sol-type-parser" version = "1.1.2" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=978056b#978056b7c9a267c6751334c8a1b48c2298b6bff1" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=bc4b5ed#bc4b5ed0cf4e5c69b2c3fec8cc518fb3cf45859e" dependencies = [ "serde", "winnow", @@ -834,7 +834,7 @@ dependencies = [ [[package]] name = "alloy-sol-types" version = "1.1.2" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=978056b#978056b7c9a267c6751334c8a1b48c2298b6bff1" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=bc4b5ed#bc4b5ed0cf4e5c69b2c3fec8cc518fb3cf45859e" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -923,7 +923,7 @@ dependencies = [ [[package]] name = "alloy-trie" version = "0.8.1" -source = "git+https://github.com/SeismicSystems/seismic-trie.git?rev=9d85b9c#9d85b9c2dfa07e46b9654ecb8d5808b5cac0fb28" +source = "git+https://github.com/SeismicSystems/seismic-trie.git?rev=417644c#417644c389cb8819a20785db684f991c901a2101" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -3878,6 +3878,21 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + [[package]] name = "forge" version = "1.2.1" @@ -4344,7 +4359,7 @@ dependencies = [ [[package]] name = "foundry-compilers" version = "0.16.1" -source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=c08f5ac#c08f5ac2c40d9048b3bbf839cce9129af777cd72" +source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=54a4eeb#54a4eeb386f6de5fb6826d00eb518fbf2d42bffe" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -4380,7 +4395,7 @@ dependencies = [ [[package]] name = "foundry-compilers-artifacts" version = "0.16.1" -source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=c08f5ac#c08f5ac2c40d9048b3bbf839cce9129af777cd72" +source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=54a4eeb#54a4eeb386f6de5fb6826d00eb518fbf2d42bffe" dependencies = [ "foundry-compilers-artifacts-solc", "foundry-compilers-artifacts-vyper", @@ -4389,7 +4404,7 @@ dependencies = [ [[package]] name = "foundry-compilers-artifacts-solc" version = "0.16.1" -source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=c08f5ac#c08f5ac2c40d9048b3bbf839cce9129af777cd72" +source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=54a4eeb#54a4eeb386f6de5fb6826d00eb518fbf2d42bffe" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -4411,7 +4426,7 @@ dependencies = [ [[package]] name = "foundry-compilers-artifacts-vyper" version = "0.16.1" -source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=c08f5ac#c08f5ac2c40d9048b3bbf839cce9129af777cd72" +source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=54a4eeb#54a4eeb386f6de5fb6826d00eb518fbf2d42bffe" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -4425,7 +4440,7 @@ dependencies = [ [[package]] name = "foundry-compilers-core" version = "0.16.1" -source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=c08f5ac#c08f5ac2c40d9048b3bbf839cce9129af777cd72" +source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=54a4eeb#54a4eeb386f6de5fb6826d00eb518fbf2d42bffe" dependencies = [ "alloy-primitives", "cfg-if", @@ -4650,7 +4665,7 @@ dependencies = [ [[package]] name = "foundry-fork-db" version = "0.14.0" -source = "git+https://github.com/SeismicSystems/seismic-foundry-fork-db.git?rev=332e59c#332e59c12cc1fb97cb65fb57c98ec584028cc1ca" +source = "git+https://github.com/SeismicSystems/seismic-foundry-fork-db.git?rev=17fdf7c#17fdf7c1b35c5125828792f4e12ab6cb26dffa39" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -5384,6 +5399,22 @@ dependencies = [ "tower-service", ] +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + [[package]] name = "hyper-util" version = "0.1.14" @@ -6551,6 +6582,23 @@ dependencies = [ "syn 2.0.101", ] +[[package]] +name = "native-tls" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework 2.11.1", + "security-framework-sys", + "tempfile", +] + [[package]] name = "new_debug_unreachable" version = "1.0.6" @@ -6902,7 +6950,7 @@ checksum = "a79f352fc3893dcd670172e615afef993a41798a1d3fc0db88a3e60ef2e70ecc" [[package]] name = "op-revm" version = "4.0.2" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=4ee533d4#4ee533d47f3435eb4407f6966fb498dcd9e4d4bf" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=e7fa9fab#e7fa9fab2c9cdefd4590a935954593abdd6a036e" dependencies = [ "auto_impl", "once_cell", @@ -6939,12 +6987,50 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "openssl" +version = "0.10.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" +dependencies = [ + "bitflags 2.9.1", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + [[package]] name = "openssl-probe" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" +[[package]] +name = "openssl-sys" +version = "0.9.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + [[package]] name = "option-ext" version = "0.2.0" @@ -7932,12 +8018,14 @@ dependencies = [ "http-body-util", "hyper", "hyper-rustls", + "hyper-tls", "hyper-util", "ipnet", "js-sys", "log", "mime", "mime_guess", + "native-tls", "once_cell", "percent-encoding", "pin-project-lite", @@ -7950,6 +8038,7 @@ dependencies = [ "serde_urlencoded", "sync_wrapper", "tokio", + "tokio-native-tls", "tokio-rustls", "tokio-socks", "tokio-util", @@ -7967,7 +8056,7 @@ dependencies = [ [[package]] name = "revm" version = "23.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=4ee533d4#4ee533d47f3435eb4407f6966fb498dcd9e4d4bf" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=e7fa9fab#e7fa9fab2c9cdefd4590a935954593abdd6a036e" dependencies = [ "revm-bytecode", "revm-context", @@ -7985,7 +8074,7 @@ dependencies = [ [[package]] name = "revm-bytecode" version = "4.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=4ee533d4#4ee533d47f3435eb4407f6966fb498dcd9e4d4bf" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=e7fa9fab#e7fa9fab2c9cdefd4590a935954593abdd6a036e" dependencies = [ "bitvec", "once_cell", @@ -7997,7 +8086,7 @@ dependencies = [ [[package]] name = "revm-context" version = "4.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=4ee533d4#4ee533d47f3435eb4407f6966fb498dcd9e4d4bf" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=e7fa9fab#e7fa9fab2c9cdefd4590a935954593abdd6a036e" dependencies = [ "cfg-if", "derive-where", @@ -8012,7 +8101,7 @@ dependencies = [ [[package]] name = "revm-context-interface" version = "4.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=4ee533d4#4ee533d47f3435eb4407f6966fb498dcd9e4d4bf" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=e7fa9fab#e7fa9fab2c9cdefd4590a935954593abdd6a036e" dependencies = [ "alloy-eip2930", "alloy-eip7702", @@ -8027,7 +8116,7 @@ dependencies = [ [[package]] name = "revm-database" version = "4.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=4ee533d4#4ee533d47f3435eb4407f6966fb498dcd9e4d4bf" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=e7fa9fab#e7fa9fab2c9cdefd4590a935954593abdd6a036e" dependencies = [ "alloy-eips", "revm-bytecode", @@ -8040,7 +8129,7 @@ dependencies = [ [[package]] name = "revm-database-interface" version = "4.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=4ee533d4#4ee533d47f3435eb4407f6966fb498dcd9e4d4bf" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=e7fa9fab#e7fa9fab2c9cdefd4590a935954593abdd6a036e" dependencies = [ "auto_impl", "revm-primitives", @@ -8051,7 +8140,7 @@ dependencies = [ [[package]] name = "revm-handler" version = "4.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=4ee533d4#4ee533d47f3435eb4407f6966fb498dcd9e4d4bf" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=e7fa9fab#e7fa9fab2c9cdefd4590a935954593abdd6a036e" dependencies = [ "auto_impl", "revm-bytecode", @@ -8068,7 +8157,7 @@ dependencies = [ [[package]] name = "revm-inspector" version = "4.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=4ee533d4#4ee533d47f3435eb4407f6966fb498dcd9e4d4bf" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=e7fa9fab#e7fa9fab2c9cdefd4590a935954593abdd6a036e" dependencies = [ "auto_impl", "revm-context", @@ -8084,7 +8173,7 @@ dependencies = [ [[package]] name = "revm-inspectors" version = "0.22.3" -source = "git+https://github.com/SeismicSystems/seismic-revm-inspectors.git?rev=ed6b2a7#ed6b2a758d877960e7c47f9699fdbdcf0f58a748" +source = "git+https://github.com/SeismicSystems/seismic-revm-inspectors.git?rev=2b50433#2b50433e35dfc232711b7df38bea8b8eabfeb0ea" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -8101,7 +8190,7 @@ dependencies = [ [[package]] name = "revm-interpreter" version = "19.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=4ee533d4#4ee533d47f3435eb4407f6966fb498dcd9e4d4bf" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=e7fa9fab#e7fa9fab2c9cdefd4590a935954593abdd6a036e" dependencies = [ "revm-bytecode", "revm-context-interface", @@ -8112,7 +8201,7 @@ dependencies = [ [[package]] name = "revm-precompile" version = "20.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=4ee533d4#4ee533d47f3435eb4407f6966fb498dcd9e4d4bf" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=e7fa9fab#e7fa9fab2c9cdefd4590a935954593abdd6a036e" dependencies = [ "ark-bls12-381", "ark-bn254", @@ -8136,7 +8225,7 @@ dependencies = [ [[package]] name = "revm-primitives" version = "19.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=4ee533d4#4ee533d47f3435eb4407f6966fb498dcd9e4d4bf" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=e7fa9fab#e7fa9fab2c9cdefd4590a935954593abdd6a036e" dependencies = [ "alloy-primitives", "num_enum", @@ -8146,7 +8235,7 @@ dependencies = [ [[package]] name = "revm-state" version = "4.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=4ee533d4#4ee533d47f3435eb4407f6966fb498dcd9e4d4bf" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=e7fa9fab#e7fa9fab2c9cdefd4590a935954593abdd6a036e" dependencies = [ "bitflags 2.9.1", "revm-bytecode", @@ -8385,7 +8474,7 @@ dependencies = [ "openssl-probe", "rustls-pki-types", "schannel", - "security-framework", + "security-framework 3.2.0", ] [[package]] @@ -8413,7 +8502,7 @@ dependencies = [ "rustls-native-certs", "rustls-platform-verifier-android", "rustls-webpki", - "security-framework", + "security-framework 3.2.0", "security-framework-sys", "webpki-root-certs 0.26.11", "windows-sys 0.59.0", @@ -8637,6 +8726,19 @@ dependencies = [ "zeroize", ] +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.9.1", + "core-foundation 0.9.4", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + [[package]] name = "security-framework" version = "3.2.0" @@ -8663,7 +8765,7 @@ dependencies = [ [[package]] name = "seismic-alloy-consensus" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=dddd920#dddd9203c038d93e2cc9039dba00322b83c68e81" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d2aa119#d2aa119e7e576a2e7bfc324f1e666c009a287eb0" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -8684,7 +8786,7 @@ dependencies = [ [[package]] name = "seismic-alloy-network" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=dddd920#dddd9203c038d93e2cc9039dba00322b83c68e81" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d2aa119#d2aa119e7e576a2e7bfc324f1e666c009a287eb0" dependencies = [ "alloy-consensus", "alloy-eip7702", @@ -8707,12 +8809,13 @@ dependencies = [ [[package]] name = "seismic-alloy-provider" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=dddd920#dddd9203c038d93e2cc9039dba00322b83c68e81" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d2aa119#d2aa119e7e576a2e7bfc324f1e666c009a287eb0" dependencies = [ "alloy-network", "alloy-primitives", "alloy-provider", "alloy-rpc-client", + "alloy-sol-types", "alloy-transport", "async-trait", "reqwest", @@ -8724,7 +8827,7 @@ dependencies = [ [[package]] name = "seismic-alloy-rpc-types" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=dddd920#dddd9203c038d93e2cc9039dba00322b83c68e81" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d2aa119#d2aa119e7e576a2e7bfc324f1e666c009a287eb0" dependencies = [ "alloy-consensus", "alloy-eips", @@ -8781,7 +8884,7 @@ dependencies = [ [[package]] name = "seismic-prelude" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=dddd920#dddd9203c038d93e2cc9039dba00322b83c68e81" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d2aa119#d2aa119e7e576a2e7bfc324f1e666c009a287eb0" dependencies = [ "alloy-consensus", "alloy-eip7702", @@ -8804,7 +8907,7 @@ dependencies = [ [[package]] name = "seismic-revm" version = "1.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=4ee533d4#4ee533d47f3435eb4407f6966fb498dcd9e4d4bf" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=e7fa9fab#e7fa9fab2c9cdefd4590a935954593abdd6a036e" dependencies = [ "auto_impl", "hkdf", @@ -9684,7 +9787,7 @@ dependencies = [ [[package]] name = "syn-solidity" version = "1.1.2" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=978056b#978056b7c9a267c6751334c8a1b48c2298b6bff1" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=bc4b5ed#bc4b5ed0cf4e5c69b2c3fec8cc518fb3cf45859e" dependencies = [ "paste", "proc-macro2", @@ -9966,6 +10069,16 @@ dependencies = [ "syn 2.0.101", ] +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + [[package]] name = "tokio-rustls" version = "0.26.2" diff --git a/Cargo.toml b/Cargo.toml index 56c84c869..73a423c20 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -366,43 +366,43 @@ zip-extract = "=0.2.1" seismic-enclave = { git = "https://github.com/SeismicSystems/seismic-enclave.git", rev = "30a53d5"} # seismic-alloy-core -alloy-dyn-abi = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "978056b" } -alloy-json-abi = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "978056b" } -alloy-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "978056b" } -alloy-sol-macro = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "978056b" } -alloy-sol-macro-expander = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "978056b" } -alloy-sol-macro-input = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "978056b" } -alloy-sol-types = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "978056b" } -alloy-sol-type-parser = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "978056b" } +alloy-dyn-abi = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "bc4b5ed" } +alloy-json-abi = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "bc4b5ed" } +alloy-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "bc4b5ed" } +alloy-sol-macro = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "bc4b5ed" } +alloy-sol-macro-expander = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "bc4b5ed" } +alloy-sol-macro-input = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "bc4b5ed" } +alloy-sol-types = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "bc4b5ed" } +alloy-sol-type-parser = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "bc4b5ed" } -alloy-trie = { git = "https://github.com/SeismicSystems/seismic-trie.git", rev = "9d85b9c" } +alloy-trie = { git = "https://github.com/SeismicSystems/seismic-trie.git", rev = "417644c" } # seismic-revm -revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "4ee533d4" } -revm-primitives = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "4ee533d4" } -revm-interpreter = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "4ee533d4" } -op-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "4ee533d4" } -seismic-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "4ee533d4" } +revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "e7fa9fab" } +revm-primitives = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "e7fa9fab" } +revm-interpreter = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "e7fa9fab" } +op-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "e7fa9fab" } +seismic-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "e7fa9fab" } -revm-inspectors = { git = "https://github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "ed6b2a7" } +revm-inspectors = { git = "https://github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "2b50433" } # seismic-alloy -seismic-alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "dddd920" } -seismic-alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "dddd920" } -seismic-alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "dddd920" } -seismic-alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "dddd920" } -seismic-prelude = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "dddd920" } +seismic-alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d2aa119" } +seismic-alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d2aa119" } +seismic-alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d2aa119" } +seismic-alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d2aa119" } +seismic-prelude = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d2aa119" } # alloy-evm -alloy-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "03433fd" } -alloy-op-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "03433fd" } -alloy-seismic-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "03433fd" } +alloy-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "6fdefa5" } +alloy-op-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "6fdefa5" } +alloy-seismic-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "6fdefa5" } # foundry -foundry-compilers = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "c08f5ac" } -foundry-compilers-artifacts = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "c08f5ac" } -foundry-compilers-artifacts-solc = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "c08f5ac" } -foundry-compilers-artifacts-vyper = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "c08f5ac" } -foundry-compilers-core = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "c08f5ac" } +foundry-compilers = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "54a4eeb" } +foundry-compilers-artifacts = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "54a4eeb" } +foundry-compilers-artifacts-solc = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "54a4eeb" } +foundry-compilers-artifacts-vyper = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "54a4eeb" } +foundry-compilers-core = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "54a4eeb" } -foundry-fork-db = { git = "https://github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "332e59c" } \ No newline at end of file +foundry-fork-db = { git = "https://github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "17fdf7c" } \ No newline at end of file From c6abfeb35aa6b6207ba895635872b7eac656a27e Mon Sep 17 00:00:00 2001 From: cdrappi Date: Tue, 1 Jul 2025 08:17:05 -0400 Subject: [PATCH 092/130] update enclave commit --- Cargo.lock | 41 +++++++------------------------------ Cargo.toml | 2 +- crates/anvil/src/eth/api.rs | 7 ++++--- 3 files changed, 12 insertions(+), 38 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 12bebcc7d..16913283b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2115,15 +2115,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 = "bindgen" version = "0.69.5" @@ -6043,12 +6034,14 @@ dependencies = [ [[package]] name = "kbs-types" -version = "0.7.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6441ed73b0faa50707d4de41c6b45c76654b661b96aaf7b26a41331eedc0a5" +checksum = "2be9fa1f64b3c8da5043cdc634007c6f7444b3ef1f3668f66b34180bdb398ec7" dependencies = [ + "base64 0.22.1", "serde", "serde_json", + "thiserror 2.0.12", ] [[package]] @@ -8845,20 +8838,15 @@ dependencies = [ [[package]] name = "seismic-enclave" version = "0.1.0" -source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=30a53d5#30a53d53375de3dfa66938793dd739ec1c386a5b" +source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=a347832#a347832fa80db6837399c74de15efb55df478127" dependencies = [ "aes-gcm", "anyhow", - "bincode", - "byteorder", - "bytes", - "clap", + "base64 0.22.1", "hkdf", "jsonrpsee", "kbs-types", - "once_cell", "rand 0.9.1", - "reqwest", "schnorrkel", "secp256k1", "seismic-enclave-derive", @@ -8867,14 +8855,12 @@ dependencies = [ "sha2 0.10.9", "strum 0.26.3", "tokio", - "tracing", - "tracing-subscriber 0.3.19", ] [[package]] name = "seismic-enclave-derive" version = "0.1.0" -source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=30a53d5#30a53d53375de3dfa66938793dd739ec1c386a5b" +source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=a347832#a347832fa80db6837399c74de15efb55df478127" dependencies = [ "proc-macro2", "quote", @@ -10383,16 +10369,6 @@ dependencies = [ "tracing-core", ] -[[package]] -name = "tracing-serde" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "704b1aeb7be0d0a84fc9828cae51dab5970fee5088f83d1dd7ee6f6246fc6ff1" -dependencies = [ - "serde", - "tracing-core", -] - [[package]] name = "tracing-subscriber" version = "0.2.25" @@ -10412,15 +10388,12 @@ dependencies = [ "nu-ansi-term", "once_cell", "regex", - "serde", - "serde_json", "sharded-slab", "smallvec", "thread_local", "tracing", "tracing-core", "tracing-log", - "tracing-serde", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 73a423c20..65d0eff24 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -363,7 +363,7 @@ zip-extract = "=0.2.1" # If our dependencies depend on these things, # then this will override whatever versions they point to # and instead use our local version -seismic-enclave = { git = "https://github.com/SeismicSystems/seismic-enclave.git", rev = "30a53d5"} +seismic-enclave = { git = "https://github.com/SeismicSystems/seismic-enclave.git", rev = "a347832"} # seismic-alloy-core alloy-dyn-abi = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "bc4b5ed" } diff --git a/crates/anvil/src/eth/api.rs b/crates/anvil/src/eth/api.rs index 777ad9773..99626d1a3 100644 --- a/crates/anvil/src/eth/api.rs +++ b/crates/anvil/src/eth/api.rs @@ -96,7 +96,7 @@ use revm::{ interpreter::{return_ok, return_revert, InstructionResult}, primitives::eip7702::PER_EMPTY_ACCOUNT_COST, }; -use seismic_enclave::rpc::SyncEnclaveApiClient; +use seismic_enclave::{keys::GetPurposeKeysRequest, rpc::SyncEnclaveApiClient}; use std::{future::Future, sync::Arc, time::Duration}; use tokio::sync::mpsc::{unbounded_channel, UnboundedReceiver}; use yansi::Paint; @@ -180,8 +180,9 @@ impl EthApi { let response = match request.clone() { EthRequest::SeismicGetTeePublicKey(()) => { let result = seismic_enclave::MockEnclaveClient::new() - .get_public_key() - .map_err(|e| BlockchainError::Internal(e.to_string())); + .get_purpose_keys(GetPurposeKeysRequest { epoch: 0 }) + .map_err(|e| BlockchainError::Internal(e.to_string())) + .map(|r| r.tx_io_pk); result.to_rpc_result() } EthRequest::Web3ClientVersion(()) => self.client_version().to_rpc_result(), From bb0bd56ed60e5faef37b86b793c92052efad7037 Mon Sep 17 00:00:00 2001 From: cdrappi Date: Tue, 1 Jul 2025 08:43:24 -0400 Subject: [PATCH 093/130] run better nextest --- .github/workflows/seismic.yml | 4 ++-- crates/anvil/tests/it/seismic.rs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/seismic.yml b/.github/workflows/seismic.yml index d37e5a655..574cb0cfb 100644 --- a/.github/workflows/seismic.yml +++ b/.github/workflows/seismic.yml @@ -63,8 +63,8 @@ jobs: - uses: Swatinem/rust-cache@v2 with: shared-key: "test-cache" - - name: seismic transaction - run: cargo nextest run test_seismic_transaction + - name: seismic-specific tests + run: cargo nextest run test_seismic_ # TODO: make these work & run # - name: sforge tests # run: cargo test --bin sforge diff --git a/crates/anvil/tests/it/seismic.rs b/crates/anvil/tests/it/seismic.rs index c3a8f45a2..836a399c1 100644 --- a/crates/anvil/tests/it/seismic.rs +++ b/crates/anvil/tests/it/seismic.rs @@ -150,7 +150,7 @@ async fn test_seismic_transaction_rpc() { EthereumWallet::new(signer.clone()), reqwest::Url::parse(handle.http_endpoint().as_str()).unwrap(), ); - let unsigned_provider = SeismicUnsignedProvider::::new( + let unsigned_provider = SeismicUnsignedProvider::::new_http( reqwest::Url::parse(handle.http_endpoint().as_str()).unwrap(), ); let deployer = handle.dev_accounts().next().unwrap(); From 918e11b514bea2a696a15599e3478454e4a8815e Mon Sep 17 00:00:00 2001 From: cdrappi Date: Tue, 1 Jul 2025 12:41:56 -0400 Subject: [PATCH 094/130] tests now pass --- crates/anvil/tests/it/seismic.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/crates/anvil/tests/it/seismic.rs b/crates/anvil/tests/it/seismic.rs index 836a399c1..45ecacda9 100644 --- a/crates/anvil/tests/it/seismic.rs +++ b/crates/anvil/tests/it/seismic.rs @@ -150,9 +150,8 @@ async fn test_seismic_transaction_rpc() { EthereumWallet::new(signer.clone()), reqwest::Url::parse(handle.http_endpoint().as_str()).unwrap(), ); - let unsigned_provider = SeismicUnsignedProvider::::new_http( - reqwest::Url::parse(handle.http_endpoint().as_str()).unwrap(), - ); + let url = handle.http_endpoint().as_str().parse().unwrap(); + let unsigned_provider = SeismicUnsignedProvider::::new_http(url); let deployer = handle.dev_accounts().next().unwrap(); let network_pubkey = provider.get_tee_pubkey().await.unwrap(); From 4659eaa3289de92f0c05802c1efa7bed3847d077 Mon Sep 17 00:00:00 2001 From: cdrappi Date: Tue, 1 Jul 2025 12:42:54 -0400 Subject: [PATCH 095/130] also run tiny unit test in ci --- .github/workflows/seismic.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/seismic.yml b/.github/workflows/seismic.yml index 574cb0cfb..26bf21571 100644 --- a/.github/workflows/seismic.yml +++ b/.github/workflows/seismic.yml @@ -63,7 +63,9 @@ jobs: - uses: Swatinem/rust-cache@v2 with: shared-key: "test-cache" - - name: seismic-specific tests + - name: seismic unit tests + run: cargo nextest run test_seismic_tx_encoding + - name: seismic integration tests run: cargo nextest run test_seismic_ # TODO: make these work & run # - name: sforge tests From 6cd6bf956220fbb7d25b162756bb4dcc748b539f Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Mon, 7 Jul 2025 22:05:57 -0400 Subject: [PATCH 096/130] update commits to seismic-alloy/seismic-evm (#130) --- Cargo.lock | 16 ++++++++-------- Cargo.toml | 16 ++++++++-------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 16913283b..e3a9a39ad 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -245,7 +245,7 @@ dependencies = [ [[package]] name = "alloy-evm" version = "0.9.1" -source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=6fdefa5#6fdefa59258c25faf1ba20a45bc54a96fd109920" +source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=6a68682320d317bf6ac2b76142b349f086828fbb#6a68682320d317bf6ac2b76142b349f086828fbb" dependencies = [ "alloy-consensus", "alloy-eips", @@ -355,7 +355,7 @@ dependencies = [ [[package]] name = "alloy-op-evm" version = "0.9.1" -source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=6fdefa5#6fdefa59258c25faf1ba20a45bc54a96fd109920" +source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=6a68682320d317bf6ac2b76142b349f086828fbb#6a68682320d317bf6ac2b76142b349f086828fbb" dependencies = [ "alloy-consensus", "alloy-eips", @@ -640,7 +640,7 @@ dependencies = [ [[package]] name = "alloy-seismic-evm" version = "0.9.1" -source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=6fdefa5#6fdefa59258c25faf1ba20a45bc54a96fd109920" +source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=6a68682320d317bf6ac2b76142b349f086828fbb#6a68682320d317bf6ac2b76142b349f086828fbb" dependencies = [ "alloy-consensus", "alloy-eips", @@ -8758,7 +8758,7 @@ dependencies = [ [[package]] name = "seismic-alloy-consensus" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d2aa119#d2aa119e7e576a2e7bfc324f1e666c009a287eb0" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=c0e56e6866dbc509343dce90b5346393c0f409e5#c0e56e6866dbc509343dce90b5346393c0f409e5" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -8779,7 +8779,7 @@ dependencies = [ [[package]] name = "seismic-alloy-network" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d2aa119#d2aa119e7e576a2e7bfc324f1e666c009a287eb0" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=c0e56e6866dbc509343dce90b5346393c0f409e5#c0e56e6866dbc509343dce90b5346393c0f409e5" dependencies = [ "alloy-consensus", "alloy-eip7702", @@ -8802,7 +8802,7 @@ dependencies = [ [[package]] name = "seismic-alloy-provider" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d2aa119#d2aa119e7e576a2e7bfc324f1e666c009a287eb0" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=c0e56e6866dbc509343dce90b5346393c0f409e5#c0e56e6866dbc509343dce90b5346393c0f409e5" dependencies = [ "alloy-network", "alloy-primitives", @@ -8820,7 +8820,7 @@ dependencies = [ [[package]] name = "seismic-alloy-rpc-types" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d2aa119#d2aa119e7e576a2e7bfc324f1e666c009a287eb0" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=c0e56e6866dbc509343dce90b5346393c0f409e5#c0e56e6866dbc509343dce90b5346393c0f409e5" dependencies = [ "alloy-consensus", "alloy-eips", @@ -8870,7 +8870,7 @@ dependencies = [ [[package]] name = "seismic-prelude" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=d2aa119#d2aa119e7e576a2e7bfc324f1e666c009a287eb0" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=c0e56e6866dbc509343dce90b5346393c0f409e5#c0e56e6866dbc509343dce90b5346393c0f409e5" dependencies = [ "alloy-consensus", "alloy-eip7702", diff --git a/Cargo.toml b/Cargo.toml index 65d0eff24..0ad18ee6a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -387,16 +387,16 @@ seismic-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev revm-inspectors = { git = "https://github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "2b50433" } # seismic-alloy -seismic-alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d2aa119" } -seismic-alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d2aa119" } -seismic-alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d2aa119" } -seismic-alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d2aa119" } -seismic-prelude = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "d2aa119" } +seismic-alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "c0e56e6866dbc509343dce90b5346393c0f409e5" } +seismic-alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "c0e56e6866dbc509343dce90b5346393c0f409e5" } +seismic-alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "c0e56e6866dbc509343dce90b5346393c0f409e5" } +seismic-alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "c0e56e6866dbc509343dce90b5346393c0f409e5" } +seismic-prelude = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "c0e56e6866dbc509343dce90b5346393c0f409e5" } # alloy-evm -alloy-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "6fdefa5" } -alloy-op-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "6fdefa5" } -alloy-seismic-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "6fdefa5" } +alloy-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "6a68682320d317bf6ac2b76142b349f086828fbb" } +alloy-op-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "6a68682320d317bf6ac2b76142b349f086828fbb" } +alloy-seismic-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "6a68682320d317bf6ac2b76142b349f086828fbb" } # foundry foundry-compilers = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "54a4eeb" } From 0e2612e18df87846fa2a800c79042a1c9c6c0ab9 Mon Sep 17 00:00:00 2001 From: ethlaude <149339033+ethlaude@users.noreply.github.com> Date: Mon, 18 Aug 2025 15:25:07 -0400 Subject: [PATCH 097/130] Cast: support signed reads & shielded writes (#132) Co-authored-by: Christian Drappi --- Cargo.lock | 3 +- crates/cast/Cargo.toml | 1 + crates/cast/src/cmd/call.rs | 108 +++++++++++++++++++++++++++++++++--- crates/cast/src/cmd/send.rs | 92 +++++++++++++++++++++++++++++- 4 files changed, 195 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e3a9a39ad..ab3862831 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2439,6 +2439,7 @@ dependencies = [ "regex", "revm", "rpassword", + "secp256k1", "seismic-prelude", "semver 1.0.26", "serde", @@ -4363,7 +4364,7 @@ dependencies = [ "fs_extra", "futures-util", "home", - "itertools 0.13.0", + "itertools 0.14.0", "path-slash", "rand 0.8.5", "rayon", diff --git a/crates/cast/Cargo.toml b/crates/cast/Cargo.toml index 4aea01ea8..e9d385ca4 100644 --- a/crates/cast/Cargo.toml +++ b/crates/cast/Cargo.toml @@ -22,6 +22,7 @@ path = "bin/main.rs" [dependencies] seismic-prelude.workspace = true +secp256k1 = "0.30" # lib foundry-block-explorers.workspace = true diff --git a/crates/cast/src/cmd/call.rs b/crates/cast/src/cmd/call.rs index b47d96132..1f94585b7 100644 --- a/crates/cast/src/cmd/call.rs +++ b/crates/cast/src/cmd/call.rs @@ -4,11 +4,14 @@ use crate::{ Cast, }; use alloy_ens::NameOrAddress; -use alloy_primitives::{Address, Bytes, TxKind, U256}; +use alloy_network::TransactionBuilder; +use alloy_primitives::{hex, Address, Bytes, TxKind, U256}; +use alloy_provider::{Provider, SendableTx}; use alloy_rpc_types::{ state::{StateOverride, StateOverridesBuilder}, BlockId, BlockNumberOrTag, }; +use alloy_signer::Signer; use clap::Parser; use eyre::Result; use foundry_cli::{ @@ -34,11 +37,43 @@ use regex::Regex; use revm::context::TransactionType; use std::{str::FromStr, sync::LazyLock}; +// Seismic imports for encryption/decryption +use alloy_primitives::aliases::U96; +use rand::RngCore; +use secp256k1::{PublicKey, Secp256k1, SecretKey}; +use seismic_prelude::foundry::{EthereumWallet, SeismicProviderExt, TxSeismicElements}; + // matches override pattern
:: // e.g. 0x123:0x1:0x1234 static OVERRIDE_PATTERN: LazyLock = LazyLock::new(|| Regex::new(r"^([^:]+):([^:]+):([^:]+)$").unwrap()); +/// Helper function to get or generate encryption private key +fn get_or_generate_encryption_key(provided_key: Option) -> Result { + match provided_key { + Some(key_str) => { + SecretKey::from_str(&key_str).map_err(|e| eyre::eyre!("Invalid private key: {}", e)) + } + None => { + // Generate a truly random private key on the fly + let mut rng = rand::rng(); + let mut key_bytes = [0u8; 32]; + rng.fill_bytes(&mut key_bytes); + SecretKey::from_slice(&key_bytes) + .map_err(|e| eyre::eyre!("Failed to generate random private key: {}", e)) + } + } +} + +/// Helper function to create seismic elements from private key +fn create_seismic_elements(encryption_sk: &SecretKey) -> TxSeismicElements { + let secp = Secp256k1::new(); + let encryption_pk = PublicKey::from_secret_key(&secp, encryption_sk); + // randomly generate a nonce + let encryption_nonce = U96::random(); + TxSeismicElements { encryption_pubkey: encryption_pk, encryption_nonce, message_version: 0 } +} + /// CLI arguments for `cast call`. /// /// ## State Override Flags @@ -148,6 +183,10 @@ pub struct CallArgs { /// Format: address:slot:value #[arg(long = "override-state-diff", value_name = "ADDRESS:SLOT:VALUE")] pub state_diff_overrides: Option>, + + /// Optional private key for encrypting seismic transaction + #[arg(long, help = "Private key for encrypting seismic transaction")] + pub encryption_private_key: Option, } #[derive(Debug, Parser)] @@ -196,6 +235,7 @@ impl CallArgs { labels, data, with_local_artifacts, + encryption_private_key, .. } = self; @@ -204,9 +244,17 @@ impl CallArgs { } let provider = utils::get_provider(&config)?; - let sender = SenderKind::from_wallet_opts(eth.wallet).await?; + let sender = SenderKind::from_wallet_opts(eth.wallet.clone()).await?; let from = sender.address(); + // Get wallet signer directly for seismic transactions + let signer = eth.wallet.signer().await?; + + // set gas price if not provided + if tx.gas_price.is_none() { + tx.gas_price = Some(U256::from(provider.get_gas_price().await?)); + } + let code = if let Some(CallSubcommands::Create { code, sig: create_sig, @@ -230,7 +278,8 @@ impl CallArgs { .await? .with_code_sig_and_args(code, sig, args) .await? - .build_raw(sender) + .build(sender) + // .build_raw(sender) .await?; if trace { @@ -306,10 +355,55 @@ impl CallArgs { return Ok(()); } - sh_println!( - "{}", - Cast::new(provider).call(&tx, func.as_ref(), block, state_overrides).await? - )?; + // Always do encryption/decryption logic + // Get or generate encryption key (generates temporary key if not provided) + let encryption_sk = get_or_generate_encryption_key(encryption_private_key)?; + let seismic_elements = create_seismic_elements(&encryption_sk); + + // Get the network's TEE public key + let network_pubkey = provider.get_tee_pubkey().await?; + + // Get the original transaction input data + let original_input = tx.inner.input.input().unwrap_or_default().clone(); + + // Encrypt the input data + let encrypted_input = seismic_elements + .client_encrypt(&original_input, &network_pubkey, &encryption_sk) + .map_err(|e| eyre::eyre!("Failed to encrypt input data: {}", e))?; + + // Create encrypted transaction + let mut encrypted_tx = tx.clone(); + encrypted_tx.inner.input = alloy_rpc_types::TransactionInput { + input: Some(Bytes::from(encrypted_input)), + data: None, + }; + encrypted_tx.inner.transaction_type = Some(seismic_prelude::foundry::TxSeismic::TX_TYPE); + encrypted_tx.seismic_elements = Some(seismic_elements.clone()); + + // Convert EIP-1559 fields back to legacy gas_price for seismic transactions + if let Some(max_fee) = encrypted_tx.inner.max_fee_per_gas { + encrypted_tx.inner.gas_price = Some(max_fee); + encrypted_tx.inner.max_fee_per_gas = None; + encrypted_tx.inner.max_priority_fee_per_gas = None; + } + + // Sign the transaction to create a raw signed seismic tx + let ethereum_wallet = EthereumWallet::from(signer); + let signed_envelope = encrypted_tx.build(ðereum_wallet).await?; + + // Make the seismic call using signed raw transaction + let encrypted_response = provider + .seismic_call(SendableTx::Envelope(signed_envelope)) + .await + .map_err(|e| eyre::eyre!("Seismic call failed: {}", e))?; + + // Decrypt the response (seismic_call should return Bytes directly, no need to decode hex) + let decrypted_response = seismic_elements + .client_decrypt(&encrypted_response, &network_pubkey, &encryption_sk) + .map_err(|e| eyre::eyre!("Failed to decrypt response: {}", e))?; + + let result = hex::encode_prefixed(&decrypted_response); + sh_println!("{}", result)?; Ok(()) } diff --git a/crates/cast/src/cmd/send.rs b/crates/cast/src/cmd/send.rs index 5507af457..1c027ef83 100644 --- a/crates/cast/src/cmd/send.rs +++ b/crates/cast/src/cmd/send.rs @@ -15,7 +15,39 @@ use foundry_cli::{ }; use std::{path::PathBuf, str::FromStr}; -use seismic_prelude::foundry::{AnyNetwork, EthereumWallet, TransactionRequest}; +// Seismic imports for encryption/decryption +use alloy_primitives::{aliases::U96, Bytes}; +use rand::RngCore; +use secp256k1::{PublicKey, Secp256k1, SecretKey}; +use seismic_prelude::foundry::{ + AnyNetwork, EthereumWallet, SeismicProviderExt, TransactionRequest, TxSeismicElements, +}; + +/// Helper function to create seismic elements from private key +fn create_seismic_elements(encryption_sk: &SecretKey) -> TxSeismicElements { + let secp = Secp256k1::new(); + let encryption_pk = PublicKey::from_secret_key(&secp, encryption_sk); + // randomly generate a nonce + let encryption_nonce = U96::random(); + TxSeismicElements { encryption_pubkey: encryption_pk, encryption_nonce, message_version: 0 } +} + +/// Helper function to get or generate encryption private key +fn get_or_generate_encryption_key(provided_key: Option) -> Result { + match provided_key { + Some(key_str) => { + SecretKey::from_str(&key_str).map_err(|e| eyre::eyre!("Invalid private key: {}", e)) + } + None => { + // Generate a truly random private key on the fly + let mut rng = rand::rng(); + let mut key_bytes = [0u8; 32]; + rng.fill_bytes(&mut key_bytes); + SecretKey::from_slice(&key_bytes) + .map_err(|e| eyre::eyre!("Failed to generate random private key: {}", e)) + } + } +} /// CLI arguments for `cast send`. #[derive(Debug, Parser)] @@ -66,6 +98,10 @@ pub struct SendTxArgs { help_heading = "Transaction options" )] path: Option, + + /// Use seismic transaction with optional encryption private key + #[arg(long, value_name = "ENCRYPTION_PRIVATE_KEY")] + pub seismic: Option>, } #[derive(Debug, Parser)] @@ -99,6 +135,7 @@ impl SendTxArgs { unlocked, path, timeout, + seismic, } = self; let blob_data = if let Some(path) = path { Some(std::fs::read(path)?) } else { None }; @@ -140,6 +177,59 @@ impl SendTxArgs { let timeout = timeout.unwrap_or(config.transaction_timeout); + let is_seismic = seismic.is_some(); + + if is_seismic { + // Get wallet signer directly for seismic transactions + let signer = eth.wallet.signer().await?; + let from = signer.address(); + + tx::validate_from_address(eth.wallet.from, from)?; + + let (tx, _) = builder.build(&signer).await?; + + // Handle seismic transaction + let encryption_sk = get_or_generate_encryption_key(seismic.unwrap())?; + + // Create seismic elements + let seismic_elements = create_seismic_elements(&encryption_sk); + + // Get the network's TEE public key + let network_pubkey = provider.get_tee_pubkey().await?; + + // Get the original transaction input data + let original_input = tx.inner.input.input().unwrap_or_default().clone(); + + // Encrypt the input data + let encrypted_input = seismic_elements + .client_encrypt(&original_input, &network_pubkey, &encryption_sk) + .map_err(|e| eyre::eyre!("Failed to encrypt input data: {}", e))?; + + // Create encrypted transaction + let mut encrypted_tx = tx.clone(); + encrypted_tx.inner.input = alloy_rpc_types::TransactionInput { + input: Some(Bytes::from(encrypted_input)), + data: None, + }; + encrypted_tx.inner.transaction_type = + Some(seismic_prelude::foundry::TxSeismic::TX_TYPE); + encrypted_tx.seismic_elements = Some(seismic_elements.clone()); + + // Convert EIP-1559 fields back to legacy gas_price for seismic transactions + if let Some(max_fee) = encrypted_tx.inner.max_fee_per_gas { + encrypted_tx.inner.gas_price = Some(max_fee); + encrypted_tx.inner.max_fee_per_gas = None; + encrypted_tx.inner.max_priority_fee_per_gas = None; + } + + // Sign the transaction to create a raw signed seismic tx + let wallet = EthereumWallet::from(signer); + let provider = ProviderBuilder::<_, _, AnyNetwork>::default() + .wallet(wallet) + .connect_provider(&provider); + + return cast_send(provider, encrypted_tx, cast_async, confirmations, timeout).await; + } // Case 1: // Default to sending via eth_sendTransaction if the --unlocked flag is passed. // This should be the only way this RPC method is used as it requires a local node From d5a683067d09a852190b9e4b54d8a897766c09ca Mon Sep 17 00:00:00 2001 From: ethlaude <149339033+ethlaude@users.noreply.github.com> Date: Mon, 18 Aug 2025 17:06:21 -0400 Subject: [PATCH 098/130] Scast: add signed reads, shielded writes, sbytes abi (#133) Co-authored-by: Christian Drappi --- Cargo.lock | 22 +++++++++++----------- Cargo.toml | 16 ++++++++-------- crates/cast/src/cmd/send.rs | 4 ++-- crates/cast/src/lib.rs | 3 ++- crates/cheatcodes/src/json.rs | 1 + crates/common/fmt/src/dynamic.rs | 1 + 6 files changed, 25 insertions(+), 22 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ab3862831..48a8286e1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -155,7 +155,7 @@ dependencies = [ [[package]] name = "alloy-dyn-abi" version = "1.1.2" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=bc4b5ed#bc4b5ed0cf4e5c69b2c3fec8cc518fb3cf45859e" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=13caaf2#13caaf2ae0f21937c6902f183377062ae0ef46fb" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -291,7 +291,7 @@ dependencies = [ [[package]] name = "alloy-json-abi" version = "1.1.2" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=bc4b5ed#bc4b5ed0cf4e5c69b2c3fec8cc518fb3cf45859e" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=13caaf2#13caaf2ae0f21937c6902f183377062ae0ef46fb" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -381,7 +381,7 @@ dependencies = [ [[package]] name = "alloy-primitives" version = "1.1.2" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=bc4b5ed#bc4b5ed0cf4e5c69b2c3fec8cc518fb3cf45859e" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=13caaf2#13caaf2ae0f21937c6902f183377062ae0ef46fb" dependencies = [ "alloy-rlp", "arbitrary", @@ -777,7 +777,7 @@ dependencies = [ [[package]] name = "alloy-sol-macro" version = "1.1.2" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=bc4b5ed#bc4b5ed0cf4e5c69b2c3fec8cc518fb3cf45859e" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=13caaf2#13caaf2ae0f21937c6902f183377062ae0ef46fb" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", @@ -790,7 +790,7 @@ dependencies = [ [[package]] name = "alloy-sol-macro-expander" version = "1.1.2" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=bc4b5ed#bc4b5ed0cf4e5c69b2c3fec8cc518fb3cf45859e" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=13caaf2#13caaf2ae0f21937c6902f183377062ae0ef46fb" dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", @@ -808,7 +808,7 @@ dependencies = [ [[package]] name = "alloy-sol-macro-input" version = "1.1.2" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=bc4b5ed#bc4b5ed0cf4e5c69b2c3fec8cc518fb3cf45859e" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=13caaf2#13caaf2ae0f21937c6902f183377062ae0ef46fb" dependencies = [ "alloy-json-abi", "const-hex", @@ -825,7 +825,7 @@ dependencies = [ [[package]] name = "alloy-sol-type-parser" version = "1.1.2" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=bc4b5ed#bc4b5ed0cf4e5c69b2c3fec8cc518fb3cf45859e" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=13caaf2#13caaf2ae0f21937c6902f183377062ae0ef46fb" dependencies = [ "serde", "winnow", @@ -834,7 +834,7 @@ dependencies = [ [[package]] name = "alloy-sol-types" version = "1.1.2" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=bc4b5ed#bc4b5ed0cf4e5c69b2c3fec8cc518fb3cf45859e" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=13caaf2#13caaf2ae0f21937c6902f183377062ae0ef46fb" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -9396,7 +9396,7 @@ dependencies = [ "solar-config", "solar-data-structures", "solar-macros", - "thiserror 2.0.12", + "thiserror 1.0.69", "tracing", "unicode-width 0.2.0", ] @@ -9732,7 +9732,7 @@ dependencies = [ "serde_json", "sha2 0.10.9", "tempfile", - "thiserror 2.0.12", + "thiserror 1.0.69", "url", "zip", ] @@ -9774,7 +9774,7 @@ dependencies = [ [[package]] name = "syn-solidity" version = "1.1.2" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=bc4b5ed#bc4b5ed0cf4e5c69b2c3fec8cc518fb3cf45859e" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=13caaf2#13caaf2ae0f21937c6902f183377062ae0ef46fb" dependencies = [ "paste", "proc-macro2", diff --git a/Cargo.toml b/Cargo.toml index 0ad18ee6a..1a651ce95 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -366,14 +366,14 @@ zip-extract = "=0.2.1" seismic-enclave = { git = "https://github.com/SeismicSystems/seismic-enclave.git", rev = "a347832"} # seismic-alloy-core -alloy-dyn-abi = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "bc4b5ed" } -alloy-json-abi = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "bc4b5ed" } -alloy-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "bc4b5ed" } -alloy-sol-macro = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "bc4b5ed" } -alloy-sol-macro-expander = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "bc4b5ed" } -alloy-sol-macro-input = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "bc4b5ed" } -alloy-sol-types = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "bc4b5ed" } -alloy-sol-type-parser = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "bc4b5ed" } +alloy-dyn-abi = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "13caaf2" } +alloy-json-abi = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "13caaf2" } +alloy-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "13caaf2" } +alloy-sol-macro = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "13caaf2" } +alloy-sol-macro-expander = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "13caaf2" } +alloy-sol-macro-input = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "13caaf2" } +alloy-sol-types = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "13caaf2" } +alloy-sol-type-parser = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "13caaf2" } alloy-trie = { git = "https://github.com/SeismicSystems/seismic-trie.git", rev = "417644c" } diff --git a/crates/cast/src/cmd/send.rs b/crates/cast/src/cmd/send.rs index 1c027ef83..34ac0e472 100644 --- a/crates/cast/src/cmd/send.rs +++ b/crates/cast/src/cmd/send.rs @@ -259,8 +259,8 @@ impl SendTxArgs { cast_send(provider, tx, cast_async, confirmations, timeout).await // Case 2: // An option to use a local signer was provided. - // If we cannot successfully instantiate a local signer, then we will assume we don't have - // enough information to sign and we must bail. + // If we cannot successfully instantiate a local signer, then we will assume we don't + // have enough information to sign and we must bail. } else { // Retrieve the signer, and bail if it can't be constructed. let signer = eth.wallet.signer().await?; diff --git a/crates/cast/src/lib.rs b/crates/cast/src/lib.rs index b8cf040b6..49d215db7 100644 --- a/crates/cast/src/lib.rs +++ b/crates/cast/src/lib.rs @@ -1862,7 +1862,8 @@ impl SimpleCast { DynSolType::Sbool | DynSolType::Saddress | DynSolType::Sint(_) | - DynSolType::Suint(_) => hasher.update(k.as_word().unwrap()), + DynSolType::Suint(_) | + DynSolType::Sbytes(..) => hasher.update(k.as_word().unwrap()), } let p = DynSolType::Uint(256) diff --git a/crates/cheatcodes/src/json.rs b/crates/cheatcodes/src/json.rs index 64ed60005..3e73a4fe8 100644 --- a/crates/cheatcodes/src/json.rs +++ b/crates/cheatcodes/src/json.rs @@ -642,6 +642,7 @@ fn serialize_value_as_json(value: DynSolValue) -> Result { let suint = serde_json::from_str(&u.to_string())?; Ok(Value::Number(suint)) } + DynSolValue::Sbytes(b, size) => Ok(Value::String(hex::encode_prefixed(&b[..size]))), } } diff --git a/crates/common/fmt/src/dynamic.rs b/crates/common/fmt/src/dynamic.rs index 422de03a0..a619a245c 100644 --- a/crates/common/fmt/src/dynamic.rs +++ b/crates/common/fmt/src/dynamic.rs @@ -78,6 +78,7 @@ impl DynValueFormatter { &DynSolValue::Saddress(SAddress(inner)) => write!(f, "{inner}"), &DynSolValue::Sint(SInt(inner), _) => write!(f, "{inner}"), &DynSolValue::Suint(SUInt(inner), _) => write!(f, "{inner}"), + &DynSolValue::Sbytes(word, size) => f.write_str(&hex::encode_prefixed(&word[..size])), } } From 8f213a5fa2357be583be9072445b7fe4c6b78ede Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Fri, 19 Sep 2025 17:22:27 -0400 Subject: [PATCH 099/130] Upstream merge: fix various broken things (#135) --- .github/workflows/seismic.yml | 2 +- Cargo.lock | 1032 +++++++---------- Cargo.toml | 4 +- crates/anvil/Cargo.toml | 11 +- crates/anvil/core/src/eth/transaction/mod.rs | 39 +- crates/anvil/src/eth/api.rs | 27 +- crates/anvil/src/eth/backend/db.rs | 13 +- crates/anvil/src/eth/backend/env.rs | 9 +- crates/anvil/src/eth/backend/executor.rs | 30 +- crates/anvil/src/eth/backend/fork.rs | 3 +- crates/anvil/src/eth/backend/mem/fork_db.rs | 4 +- .../anvil/src/eth/backend/mem/in_memory_db.rs | 12 +- crates/anvil/src/eth/backend/mem/mod.rs | 88 +- crates/anvil/src/eth/backend/mem/state.rs | 2 + crates/anvil/src/eth/error.rs | 2 +- crates/anvil/src/eth/otterscan/api.rs | 5 +- crates/anvil/src/evm.rs | 27 +- crates/anvil/src/evm/celo_precompile.rs | 2 + crates/anvil/src/hardfork.rs | 6 +- crates/anvil/src/lib.rs | 4 +- crates/anvil/tests/it/anvil.rs | 9 +- crates/anvil/tests/it/anvil_api.rs | 6 +- crates/anvil/tests/it/api.rs | 16 +- crates/anvil/tests/it/eip4844.rs | 16 +- crates/anvil/tests/it/fork.rs | 2 +- crates/anvil/tests/it/gas.rs | 15 +- crates/anvil/tests/it/revert.rs | 6 +- crates/anvil/tests/it/seismic.rs | 14 +- crates/anvil/tests/it/transaction.rs | 10 +- crates/anvil/tests/it/txpool.rs | 6 +- crates/anvil/tests/it/utils.rs | 2 +- crates/cast/src/cmd/call.rs | 13 +- crates/cast/src/cmd/run.rs | 6 +- crates/cast/src/cmd/send.rs | 2 +- crates/cast/src/lib.rs | 24 +- crates/cast/src/tx.rs | 5 +- crates/cheatcodes/src/evm.rs | 2 +- crates/cheatcodes/src/inspector.rs | 17 +- crates/chisel/tests/it/repl/session.rs | 2 +- crates/common/fmt/src/console.rs | 2 +- crates/common/fmt/src/dynamic.rs | 2 +- crates/common/fmt/src/ui.rs | 8 +- crates/common/src/transactions.rs | 2 - crates/config/src/lint.rs | 4 +- crates/evm/core/src/backend/mod.rs | 6 +- crates/evm/core/src/either_evm.rs | 12 +- crates/evm/core/src/evm.rs | 23 +- crates/evm/core/src/opts.rs | 1 - crates/evm/core/src/utils.rs | 37 +- crates/evm/evm/src/executors/mod.rs | 6 +- crates/evm/evm/src/executors/trace.rs | 3 +- crates/evm/fuzz/src/strategies/param.rs | 1 - crates/evm/fuzz/src/strategies/state.rs | 2 +- crates/forge/Cargo.toml | 3 +- crates/forge/src/args.rs | 2 + crates/forge/src/lib.rs | 2 + crates/forge/src/opts.rs | 9 +- crates/script-sequence/Cargo.toml | 1 - crates/script/src/receipts.rs | 6 +- crates/verify/src/bytecode.rs | 11 +- 60 files changed, 714 insertions(+), 924 deletions(-) diff --git a/.github/workflows/seismic.yml b/.github/workflows/seismic.yml index 26bf21571..b27d19cc2 100644 --- a/.github/workflows/seismic.yml +++ b/.github/workflows/seismic.yml @@ -4,7 +4,7 @@ on: push: branches: [seismic] pull_request: - branches: [seismic, alloy-1] + branches: [seismic, usm] concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} diff --git a/Cargo.lock b/Cargo.lock index 2a21b975b..9489b5987 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -94,9 +94,9 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d213580c17d239ae83c0d897ac3315db7cda83d2d4936a9823cc3517552f2e24" +checksum = "64a3bd0305a44fb457cae77de1e82856eadd42ea3cdf0dae29df32eb3b592979" dependencies = [ "alloy-eips", "alloy-primitives", @@ -119,9 +119,9 @@ dependencies = [ [[package]] name = "alloy-consensus-any" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81443e3b8dccfeac7cd511aced15928c97ff253f4177acbb97de97178e543f6c" +checksum = "7a842b4023f571835e62ac39fb8d523d19fcdbacfa70bf796ff96e7e19586f50" dependencies = [ "alloy-consensus", "alloy-eips", @@ -133,9 +133,9 @@ dependencies = [ [[package]] name = "alloy-contract" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de217ab604f1bcfa2e3b0aff86d50812d5931d47522f9f0a949cc263ec2d108e" +checksum = "591104333286b52b03ec4e8162983e31122b318d21ae2b0900d1e8b51727ad40" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -157,7 +157,7 @@ dependencies = [ [[package]] name = "alloy-dyn-abi" version = "1.3.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?branch=usm#99fc4306532c750170e1cf9b4ddf8c8354f3f27e" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?branch=usm#77f2dc24233a2081bc7e5beb5454a771948154cf" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -211,9 +211,9 @@ dependencies = [ [[package]] name = "alloy-eips" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a15b4b0f6bab47aae017d52bb5a739bda381553c09fb9918b7172721ef5f5de" +checksum = "5cd749c57f38f8cbf433e651179fc5a676255e6b95044f467d49255d2b81725a" dependencies = [ "alloy-eip2124", "alloy-eip2930", @@ -233,9 +233,9 @@ dependencies = [ [[package]] name = "alloy-ens" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "becb0c6c71cd2bda64a92d63dde68e650fc3c3515f0de6473cf3b88b10ed7417" +checksum = "d0a7feb13ccb13b784cdd5c1bb8756f74dd5b322c10ccfb737c8979ff26f9808" dependencies = [ "alloy-contract", "alloy-primitives", @@ -248,11 +248,11 @@ dependencies = [ [[package]] name = "alloy-evm" version = "0.20.1" -source = "git+https://github.com/SeismicSystems/seismic-evm.git?branch=usm#9b26270a649368962caeb5a4e2bbdaa8e458c556" +source = "git+https://github.com/SeismicSystems/seismic-evm.git?branch=usm#52fbe3f953baa9efb23e66ee9f30e5678a3c3ac0" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-hardforks 0.3.0", + "alloy-hardforks 0.3.3", "alloy-primitives", "alloy-rpc-types-eth", "alloy-sol-types", @@ -260,7 +260,7 @@ dependencies = [ "derive_more 2.0.1", "op-alloy-consensus", "op-revm", - "revm 29.0.0", + "revm", "seismic-alloy-consensus", "seismic-revm", "thiserror 2.0.16", @@ -268,9 +268,9 @@ dependencies = [ [[package]] name = "alloy-genesis" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ba1cbc25a07e0142e8875fcbe80e1fdb02be8160ae186b90f4b9a69a72ed2b" +checksum = "7d32cbf6c26d7d87e8a4e5925bbce41456e0bbeed95601add3443af277cd604e" dependencies = [ "alloy-eips", "alloy-primitives", @@ -294,9 +294,9 @@ dependencies = [ [[package]] name = "alloy-hardforks" -version = "0.3.0" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a20b180071d4f22db71702329101685ccff2e2a8f400d30a68ba907700163bf5" +checksum = "8d66cfdf265bf52c0c4a952960c854c3683c71ff2fc02c9b8c317c691fd3bc28" dependencies = [ "alloy-chains", "alloy-eip2124", @@ -308,7 +308,7 @@ dependencies = [ [[package]] name = "alloy-json-abi" version = "1.3.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?branch=usm#99fc4306532c750170e1cf9b4ddf8c8354f3f27e" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?branch=usm#77f2dc24233a2081bc7e5beb5454a771948154cf" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -318,9 +318,9 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8882ec8e4542cfd02aadc6dccbe90caa73038f60016d936734eb6ced53d2167" +checksum = "f614019a029c8fec14ae661aa7d4302e6e66bdbfb869dab40e78dcfba935fc97" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -333,9 +333,9 @@ dependencies = [ [[package]] name = "alloy-network" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d6d87d588bda509881a7a66ae77c86514bd1193ac30fbff0e0f24db95eb5a5" +checksum = "be8b6d58e98803017bbfea01dde96c4d270a29e7aed3beb65c8d28b5ab464e0e" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -359,9 +359,9 @@ dependencies = [ [[package]] name = "alloy-network-primitives" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b14fa9ba5774e0b30ae6a04176d998211d516c8af69c9c530af7c6c42a8c508" +checksum = "db489617bffe14847bf89f175b1c183e5dd7563ef84713936e2c34255cfbd845" dependencies = [ "alloy-consensus", "alloy-eips", @@ -373,7 +373,7 @@ dependencies = [ [[package]] name = "alloy-op-evm" version = "0.20.1" -source = "git+https://github.com/SeismicSystems/seismic-evm.git?branch=usm#9b26270a649368962caeb5a4e2bbdaa8e458c556" +source = "git+https://github.com/SeismicSystems/seismic-evm.git?branch=usm#52fbe3f953baa9efb23e66ee9f30e5678a3c3ac0" dependencies = [ "alloy-consensus", "alloy-eips", @@ -383,24 +383,24 @@ dependencies = [ "auto_impl", "op-alloy-consensus", "op-revm", - "revm 29.0.0", + "revm", ] [[package]] name = "alloy-op-hardforks" -version = "0.3.0" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6e8ab92a4b6cf57d84cec62868b7161f40de36b01ffda62455deb3907c9001" +checksum = "a8a2823360cd87c008df4b8b78794924948c3508e745dfed7d2b685774cb473e" dependencies = [ "alloy-chains", - "alloy-hardforks 0.3.0", + "alloy-hardforks 0.3.3", "auto_impl", ] [[package]] name = "alloy-primitives" version = "1.3.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?branch=usm#99fc4306532c750170e1cf9b4ddf8c8354f3f27e" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?branch=usm#77f2dc24233a2081bc7e5beb5454a771948154cf" dependencies = [ "alloy-rlp", "arbitrary", @@ -411,7 +411,7 @@ dependencies = [ "foldhash", "getrandom 0.3.3", "hashbrown 0.15.5", - "indexmap 2.11.0", + "indexmap 2.11.4", "itoa", "k256", "keccak-asm", @@ -420,7 +420,7 @@ dependencies = [ "proptest-derive", "rand 0.9.2", "ruint", - "rustc-hash 2.1.1", + "rustc-hash", "serde", "sha3", "tiny-keccak", @@ -428,9 +428,9 @@ dependencies = [ [[package]] name = "alloy-provider" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "475a5141313c3665b75d818be97d5fa3eb5e0abb7e832e9767edd94746db28e3" +checksum = "ed90278374435e076a04dbddbb6d714bdd518eb274a64dbd70f65701429dd747" dependencies = [ "alloy-chains", "alloy-consensus", @@ -473,9 +473,9 @@ dependencies = [ [[package]] name = "alloy-pubsub" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f97c18795ce1ce8151c5539ce1e4200940389674173f677c7455f79bfb00e5df" +checksum = "9f539a4caaa5496ad54af38f5615adb54cc7b3ec1a42e530e706291cce074f4a" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -517,9 +517,9 @@ dependencies = [ [[package]] name = "alloy-rpc-client" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25289674cd8c58fcca2568b5350423cb0dd7bca8c596c5e2869bfe4c5c57ed14" +checksum = "33732242ca63f107f5f8284190244038905fb233280f4b7c41f641d4f584d40d" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -543,9 +543,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39676beaa50db545cf15447fc94ec5513b64e85a48357a0625b9a04aef08a910" +checksum = "bb2683049c5f3037d64722902e2c1081f3d45de68696aca0511bbea834905746" dependencies = [ "alloy-primitives", "alloy-rpc-types-anvil", @@ -559,9 +559,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9c8cad42fa936000be72ab80fcd97386a6a226c35c2989212756da9e76c1521" +checksum = "b757081f2a68e683de3731108494fa058036d5651bf10141ec2430bc1315c362" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -571,9 +571,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01bac57c987c93773787619e20f89167db74d460a2d1d40f591d94fb7c22c379" +checksum = "18f27c0c41a16cd0af4f5dbf791f7be2a60502ca8b0e840e0ad29803fac2d587" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -582,9 +582,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-debug" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2fe118e6c152d54cb4549b9835fb87d38b12754bb121375183ee3ec84bd0849" +checksum = "d46cb226f1c8071875f4d0d8a0eb3ac571fcc49cd3bcdc20a5818de7b6ef0634" dependencies = [ "alloy-primitives", "derive_more 2.0.1", @@ -594,9 +594,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-engine" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72a41624eb84bc743e414198bf10eb48b611a5554d6a9fd6205f7384d57dfd7f" +checksum = "dec35a39206f0e04e8544d763c9fe324cc01f74de8821ef4b61e25ac329682f9" dependencies = [ "alloy-consensus", "alloy-eips", @@ -612,9 +612,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd1e1b4dcdf13eaa96343e5c0dafc2d2e8ce5d20b90347169d46a1df0dec210" +checksum = "7f5812f81c3131abc2cd8953dc03c41999e180cff7252abbccaba68676e15027" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -633,9 +633,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-trace" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc33d9d0e0b3cfe9c2e82a1a427c9ed516fcfebe764f0adf7ceb8107f702dd1" +checksum = "1070e7e92dae6a9c48885980f4f9ca9faa70f945fcd62fbb94472182ca08854f" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -647,9 +647,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-txpool" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fa9e9b3e613425d2a2ee1a322bdad5f1cedf835406fd4b59538822500b44bc" +checksum = "7f070754e160f6e34038305f472137eeb04170586d60d69c5d1e06fefe362a1f" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -660,15 +660,15 @@ dependencies = [ [[package]] name = "alloy-seismic-evm" version = "0.20.1" -source = "git+https://github.com/SeismicSystems/seismic-evm.git?branch=usm#9b26270a649368962caeb5a4e2bbdaa8e458c556" +source = "git+https://github.com/SeismicSystems/seismic-evm.git?branch=usm#52fbe3f953baa9efb23e66ee9f30e5678a3c3ac0" dependencies = [ "alloy-consensus", "alloy-eips", "alloy-evm", - "alloy-hardforks 0.3.0", + "alloy-hardforks 0.3.3", "alloy-primitives", "auto_impl", - "revm 29.0.0", + "revm", "schnorrkel", "seismic-alloy-consensus", "seismic-enclave", @@ -677,9 +677,9 @@ dependencies = [ [[package]] name = "alloy-serde" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1b3b1078b8775077525bc9fe9f6577e815ceaecd6c412a4f3b4d8aa2836e8f6" +checksum = "04dfe41a47805a34b848c83448946ca96f3d36842e8c074bcf8fa0870e337d12" dependencies = [ "alloy-primitives", "serde", @@ -688,9 +688,9 @@ dependencies = [ [[package]] name = "alloy-signer" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10ab1b8d4649bf7d0db8ab04e31658a6cc20364d920795484d886c35bed3bab4" +checksum = "f79237b4c1b0934d5869deea4a54e6f0a7425a8cd943a739d6293afdf893d847" dependencies = [ "alloy-dyn-abi", "alloy-primitives", @@ -705,9 +705,9 @@ dependencies = [ [[package]] name = "alloy-signer-aws" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a46118173eb381b2911202a83dc4f39267027b0fe7d3533449f5e4ebc0eadcab" +checksum = "c5cbc38711b7e5ee7b53a7489e8e718a54c6b138d382cfb86e293a2ad5ac894d" dependencies = [ "alloy-consensus", "alloy-network", @@ -724,9 +724,9 @@ dependencies = [ [[package]] name = "alloy-signer-gcp" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a6aae8a120c191cc5b333bafa9877b3d5ccb2174ea25b6c2c08df28ca9d64b" +checksum = "dc77e474f2384192f1f27a07a2dd13dd7530064ae96c5941aa1b6ddf33fc7540" dependencies = [ "alloy-consensus", "alloy-network", @@ -742,9 +742,9 @@ dependencies = [ [[package]] name = "alloy-signer-ledger" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "feb0444055415b5d97c84b0f5d7a611849e68b63caa574aa1737035310dc1dba" +checksum = "56b13d57b88e25281272533cd55bbf086db9b867be001e02954aa3346ea9fa8e" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -755,16 +755,16 @@ dependencies = [ "async-trait", "coins-ledger", "futures-util", - "semver 1.0.26", + "semver 1.0.27", "thiserror 2.0.16", "tracing", ] [[package]] name = "alloy-signer-local" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bdeec36c8d9823102b571b3eab8b323e053dc19c12da14a9687bd474129bf2a" +checksum = "d6e90a3858da59d1941f496c17db8d505f643260f7e97cdcdd33823ddca48fc1" dependencies = [ "alloy-consensus", "alloy-network", @@ -782,16 +782,16 @@ dependencies = [ [[package]] name = "alloy-signer-trezor" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0be2329afbeb7318ed33b8f69b94c30a4ef71c81557bfb3d579acacb4a4fe670" +checksum = "c58930e48ab90c91978aaaccb5c042858c5982cb3a6f9432742fbf939b80f58a" dependencies = [ "alloy-consensus", "alloy-network", "alloy-primitives", "alloy-signer", "async-trait", - "semver 1.0.26", + "semver 1.0.27", "thiserror 2.0.16", "tracing", "trezor-client", @@ -800,7 +800,7 @@ dependencies = [ [[package]] name = "alloy-sol-macro" version = "1.3.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?branch=usm#99fc4306532c750170e1cf9b4ddf8c8354f3f27e" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?branch=usm#77f2dc24233a2081bc7e5beb5454a771948154cf" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", @@ -813,13 +813,13 @@ dependencies = [ [[package]] name = "alloy-sol-macro-expander" version = "1.3.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?branch=usm#99fc4306532c750170e1cf9b4ddf8c8354f3f27e" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?branch=usm#77f2dc24233a2081bc7e5beb5454a771948154cf" dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", "const-hex", "heck", - "indexmap 2.11.0", + "indexmap 2.11.4", "proc-macro-error2", "proc-macro2", "quote", @@ -831,7 +831,7 @@ dependencies = [ [[package]] name = "alloy-sol-macro-input" version = "1.3.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?branch=usm#99fc4306532c750170e1cf9b4ddf8c8354f3f27e" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?branch=usm#77f2dc24233a2081bc7e5beb5454a771948154cf" dependencies = [ "alloy-json-abi", "const-hex", @@ -848,7 +848,7 @@ dependencies = [ [[package]] name = "alloy-sol-type-parser" version = "1.3.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?branch=usm#99fc4306532c750170e1cf9b4ddf8c8354f3f27e" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?branch=usm#77f2dc24233a2081bc7e5beb5454a771948154cf" dependencies = [ "serde", "winnow", @@ -857,7 +857,7 @@ dependencies = [ [[package]] name = "alloy-sol-types" version = "1.3.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?branch=usm#99fc4306532c750170e1cf9b4ddf8c8354f3f27e" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?branch=usm#77f2dc24233a2081bc7e5beb5454a771948154cf" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -868,9 +868,9 @@ dependencies = [ [[package]] name = "alloy-transport" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dce5129146a76ca6139a19832c75ad408857a56bcd18cd2c684183b8eacd78d8" +checksum = "cb43750e137fe3a69a325cd89a8f8e2bbf4f83e70c0f60fbe49f22511ca075e8" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -892,9 +892,9 @@ dependencies = [ [[package]] name = "alloy-transport-http" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2379d998f46d422ec8ef2b61603bc28cda931e5e267aea1ebe71f62da61d101" +checksum = "f9b42c7d8b666eed975739201f407afc3320d3cd2e4d807639c2918fc736ea67" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -907,9 +907,9 @@ dependencies = [ [[package]] name = "alloy-transport-ipc" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "041aa5db2e907692a9a93a0a908057665c03e59364e1fbbeed613511a0159289" +checksum = "f07b920e2d4ec9b08cb12a32fa8e5e95dfcf706fe1d7f46453e24ee7089e29f0" dependencies = [ "alloy-json-rpc", "alloy-pubsub", @@ -928,9 +928,9 @@ dependencies = [ [[package]] name = "alloy-transport-ws" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6d44395e6793566e9c89bd82297cc4b0566655c1e78a1d69362640814784cc6" +checksum = "83db1cc29cce5f692844d6cf1b6b270ae308219c5d90a7246a74f3479b9201c2" dependencies = [ "alloy-pubsub", "alloy-transport", @@ -961,9 +961,9 @@ dependencies = [ [[package]] name = "alloy-tx-macros" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b5becb9c269a7d05a2f28d549f86df5a5dbc923e2667eff84fdecac8cda534c" +checksum = "e434e0917dce890f755ea774f59d6f12557bc8c7dd9fa06456af80cfe0f0181e" dependencies = [ "alloy-primitives", "darling 0.21.3", @@ -985,12 +985,6 @@ dependencies = [ "url", ] -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - [[package]] name = "android_system_properties" version = "0.1.5" @@ -1012,9 +1006,9 @@ dependencies = [ [[package]] name = "annotate-snippets" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b0f1e2f8ec4bff67c7e1867001ec452595daf315cce10c393b7d4274024f878" +checksum = "a8ee2f071d418442e50c643c4e7a4051ce3abd9dba11713cc6cdf4f4a3f3cca5" dependencies = [ "anstyle", "memchr", @@ -1071,9 +1065,9 @@ dependencies = [ [[package]] name = "anstyle-svg" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc03a770ef506fe1396c0e476120ac0e6523cf14b74218dd5f18cd6833326fa9" +checksum = "26b9ec8c976eada1b0f9747a3d7cc4eae3bef10613e443746e7487f26c872fde" dependencies = [ "anstyle", "anstyle-lossy", @@ -1104,7 +1098,7 @@ dependencies = [ "alloy-eips", "alloy-evm", "alloy-genesis", - "alloy-hardforks 0.3.0", + "alloy-hardforks 0.3.3", "alloy-json-abi", "alloy-json-rpc", "alloy-network", @@ -1129,7 +1123,6 @@ dependencies = [ "anvil-server", "async-trait", "axum", - "bytes", "chrono", "clap", "clap_complete", @@ -1147,14 +1140,13 @@ dependencies = [ "futures", "hyper", "itertools 0.14.0", - "k256", "op-alloy-consensus", "op-revm", "parking_lot", "rand 0.8.5", "rand 0.9.2", "reqwest", - "revm 29.0.0", + "revm", "revm-inspectors", "secp256k1 0.30.0", "seismic-enclave", @@ -1187,7 +1179,7 @@ dependencies = [ "op-alloy-consensus", "op-revm", "rand 0.9.2", - "revm 29.0.0", + "revm", "seismic-enclave", "seismic-prelude", "serde", @@ -1721,9 +1713,9 @@ dependencies = [ [[package]] name = "aws-lc-rs" -version = "1.13.3" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c953fe1ba023e6b7730c0d4b031d06f267f23a46167dcbd40316644b10a17ba" +checksum = "94b8ff6c09cd57b16da53641caa860168b88c172a5ee163b0288d3d6eea12786" dependencies = [ "aws-lc-sys", "zeroize", @@ -1731,9 +1723,9 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbfd150b5dbdb988bcc8fb1fe787eb6b7ee6180ca24da683b61ea5405f3d43ff" +checksum = "0e44d16778acaf6a9ec9899b92cebd65580b83f685446bf2e1f5d3d732f99dcd" dependencies = [ "bindgen", "cc", @@ -1768,9 +1760,9 @@ dependencies = [ [[package]] name = "aws-sdk-kms" -version = "1.86.0" +version = "1.87.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e7ef7189e532a6d7654befd668b535d31f261c61342397da47ccfa3fb0505a" +checksum = "865b1f9214c318bc3d4baaf0aa918f7d648b993fcb83601f7b3ede06ba6ce08f" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1790,9 +1782,9 @@ dependencies = [ [[package]] name = "aws-sdk-sso" -version = "1.83.0" +version = "1.84.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "643cd43af212d2a1c4dedff6f044d7e1961e5d9e7cfe773d70f31d9842413886" +checksum = "357a841807f6b52cb26123878b3326921e2a25faca412fabdd32bd35b7edd5d3" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1812,9 +1804,9 @@ dependencies = [ [[package]] name = "aws-sdk-ssooidc" -version = "1.84.0" +version = "1.85.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20ec4a95bd48e0db7a424356a161f8d87bd6a4f0af37204775f0da03d9e39fc3" +checksum = "67e05f33b6c9026fecfe9b3b6740f34d41bc6ff641a6a32dabaab60209245b75" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1834,9 +1826,9 @@ dependencies = [ [[package]] name = "aws-sdk-sts" -version = "1.85.0" +version = "1.86.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "410309ad0df4606bc721aff0d89c3407682845453247213a0ccc5ff8801ee107" +checksum = "e7d835f123f307cafffca7b9027c14979f1d403b417d8541d67cf252e8a21e35" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1962,9 +1954,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime" -version = "1.9.1" +version = "1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3946acbe1ead1301ba6862e712c7903ca9bb230bdf1fbd1b5ac54158ef2ab1f" +checksum = "4fa63ad37685ceb7762fa4d73d06f1d5493feb88e3f27259b9ed277f4c01b185" dependencies = [ "aws-smithy-async", "aws-smithy-http", @@ -2173,25 +2165,22 @@ checksum = "230c5f1ca6a325a32553f8640d31ac9b49f2411e901e427570154868b46da4f7" [[package]] name = "bindgen" -version = "0.69.5" +version = "0.72.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" +checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" dependencies = [ "bitflags 2.9.4", "cexpr", "clang-sys", - "itertools 0.12.1", - "lazy_static", - "lazycell", + "itertools 0.13.0", "log", "prettyplease", "proc-macro2", "quote", "regex", - "rustc-hash 1.1.0", + "rustc-hash", "shlex", "syn 2.0.106", - "which 4.4.2", ] [[package]] @@ -2284,9 +2273,9 @@ dependencies = [ "boa_interner", "boa_macros", "boa_string", - "indexmap 2.11.0", + "indexmap 2.11.4", "num-bigint", - "rustc-hash 2.1.1", + "rustc-hash", ] [[package]] @@ -2310,7 +2299,7 @@ dependencies = [ "fast-float2", "hashbrown 0.15.5", "icu_normalizer", - "indexmap 2.11.0", + "indexmap 2.11.4", "intrusive-collections", "itertools 0.13.0", "num-bigint", @@ -2322,7 +2311,7 @@ dependencies = [ "portable-atomic", "rand 0.8.5", "regress", - "rustc-hash 2.1.1", + "rustc-hash", "ryu-js", "serde", "serde_json", @@ -2356,10 +2345,10 @@ dependencies = [ "boa_gc", "boa_macros", "hashbrown 0.15.5", - "indexmap 2.11.0", + "indexmap 2.11.4", "once_cell", "phf 0.11.3", - "rustc-hash 2.1.1", + "rustc-hash", "static_assertions", ] @@ -2391,7 +2380,7 @@ dependencies = [ "num-bigint", "num-traits", "regress", - "rustc-hash 2.1.1", + "rustc-hash", ] [[package]] @@ -2408,7 +2397,7 @@ checksum = "7debc13fbf7997bf38bf8e9b20f1ad5e2a7d27a900e1f6039fe244ce30f589b5" dependencies = [ "fast-float2", "paste", - "rustc-hash 2.1.1", + "rustc-hash", "sptr", "static_assertions", ] @@ -2539,11 +2528,11 @@ dependencies = [ [[package]] name = "camino" -version = "1.1.12" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd0b03af37dad7a14518b7691d81acb0f8222604ad3d1b02f6b4bed5188c0cd5" +checksum = "e1de8bc0aa9e9385ceb3bf0c152e3a9b9544f6c4a912c8ae504e80c1f0368603" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -2563,7 +2552,7 @@ checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" dependencies = [ "camino", "cargo-platform", - "semver 1.0.26", + "semver 1.0.27", "serde", "serde_json", "thiserror 1.0.69", @@ -2585,7 +2574,7 @@ dependencies = [ "alloy-dyn-abi", "alloy-eips", "alloy-ens", - "alloy-hardforks 0.3.0", + "alloy-hardforks 0.3.3", "alloy-json-abi", "alloy-json-rpc", "alloy-network", @@ -2625,11 +2614,11 @@ dependencies = [ "rand 0.9.2", "rayon", "regex", - "revm 29.0.0", + "revm", "rpassword", "secp256k1 0.30.0", "seismic-prelude", - "semver 1.0.26", + "semver 1.0.27", "serde", "serde_json", "tempfile", @@ -2649,9 +2638,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.36" +version = "1.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5252b3d2648e5eedbc1a6f501e3c795e07025c1e93bbf8bbdd6eef7f447a6d54" +checksum = "65193589c6404eb80b450d618eaf9a2cafaaafd57ecce47370519ef674a7bd44" dependencies = [ "find-msvc-tools", "jobserver", @@ -2706,10 +2695,10 @@ dependencies = [ "foundry-test-utils", "itertools 0.14.0", "reqwest", - "revm 29.0.0", + "revm", "rexpect", "rustyline", - "semver 1.0.26", + "semver 1.0.27", "serde", "serde_json", "solar-compiler", @@ -2723,17 +2712,16 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.41" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" dependencies = [ - "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "serde", "wasm-bindgen", - "windows-link 0.1.3", + "windows-link 0.2.0", ] [[package]] @@ -2821,9 +2809,9 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.5.57" +version = "4.5.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d9501bd3f5f09f7bbee01da9a511073ed30a80cd7a509f1214bb74eadea71ad" +checksum = "75bf0b32ad2e152de789bb635ea4d3078f6b838ad7974143e99b99f45a04af4a" dependencies = [ "clap", ] @@ -2875,7 +2863,7 @@ dependencies = [ "nix 0.29.0", "terminfo", "thiserror 2.0.16", - "which 8.0.0", + "which", "windows-sys 0.59.0", ] @@ -3040,9 +3028,9 @@ dependencies = [ [[package]] name = "comfy-table" -version = "7.2.0" +version = "7.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f8e18d0dca9578507f13f9803add0df13362b02c501c1c17734f0dbb52eaf0b" +checksum = "b03b7db8e0b4b2fdad6c551e634134e99ec000e5c8c3b6856c65e8bbaded7a3b" dependencies = [ "crossterm 0.29.0", "unicode-segmentation", @@ -3110,15 +3098,15 @@ dependencies = [ [[package]] name = "console" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e09ced7ebbccb63b4c65413d821f2e00ce54c5ca4514ddc6b3c892fdbcbc69d" +checksum = "b430743a6eb14e9764d4260d4c0d8123087d504eeb9c48f2b2a5e810dd369df4" dependencies = [ "encode_unicode", "libc", "once_cell", "unicode-width 0.2.0", - "windows-sys 0.60.2", + "windows-sys 0.61.0", ] [[package]] @@ -3133,15 +3121,14 @@ dependencies = [ [[package]] name = "const-hex" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dccd746bf9b1038c0507b7cec21eb2b11222db96a2902c96e8c185d6d20fb9c4" +checksum = "b6407bff74dea37e0fa3dc1c1c974e5d46405f0c987bf9997a0762adce71eda6" dependencies = [ "cfg-if", "cpufeatures", - "hex", "proptest", - "serde", + "serde_core", ] [[package]] @@ -3300,7 +3287,7 @@ dependencies = [ "document-features", "mio", "parking_lot", - "rustix 1.0.8", + "rustix 1.1.2", "signal-hook", "signal-hook-mio", "winapi", @@ -3928,22 +3915,23 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.6" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e004d887f51fcb9fef17317a2f3525c887d8aa3f4f50fed920816a688284a5b7" +checksum = "259d404d09818dec19332e31d94558aeb442fea04c817006456c24b5460bbd4b" dependencies = [ "serde", + "serde_core", "typeid", ] [[package]] name = "errno" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.0", ] [[package]] @@ -4003,7 +3991,7 @@ checksum = "c29ecc930ee2ed03083436c2ddd7e5292c3c3bcda65f6a37369502d578a853f1" dependencies = [ "alloy-dyn-abi", "alloy-primitives", - "indexmap 2.11.0", + "indexmap 2.11.4", ] [[package]] @@ -4057,7 +4045,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ce92ff622d6dadf7349484f42c93271a0d49b7cc4d466a936405bacbe10aa78" dependencies = [ "cfg-if", - "rustix 1.0.8", + "rustix 1.1.2", "windows-sys 0.59.0", ] @@ -4171,7 +4159,7 @@ version = "1.3.5" dependencies = [ "alloy-chains", "alloy-dyn-abi", - "alloy-hardforks 0.3.0", + "alloy-hardforks 0.3.3", "alloy-json-abi", "alloy-network", "alloy-primitives", @@ -4226,9 +4214,9 @@ dependencies = [ "rayon", "regex", "reqwest", - "revm 29.0.0", + "revm", "seismic-prelude", - "semver 1.0.26", + "semver 1.0.27", "serde", "serde_json", "similar", @@ -4240,7 +4228,7 @@ dependencies = [ "tempfile", "thiserror 2.0.16", "tokio", - "toml_edit 0.23.4", + "toml_edit 0.23.6", "tower-http", "tracing", "watchexec", @@ -4268,7 +4256,7 @@ dependencies = [ "serde", "serde_json", "thiserror 2.0.16", - "toml 0.9.5", + "toml 0.9.7", "tracing", ] @@ -4283,7 +4271,7 @@ dependencies = [ "itertools 0.14.0", "similar-asserts", "thiserror 2.0.16", - "toml 0.9.5", + "toml 0.9.7", "tracing", "tracing-subscriber 0.3.20", ] @@ -4338,7 +4326,7 @@ dependencies = [ "parking_lot", "revm-inspectors", "seismic-prelude", - "semver 1.0.26", + "semver 1.0.27", "serde", "serde_json", "tempfile", @@ -4351,7 +4339,6 @@ dependencies = [ name = "forge-script-sequence" version = "1.3.5" dependencies = [ - "alloy-network", "alloy-primitives", "eyre", "foundry-common", @@ -4403,9 +4390,9 @@ dependencies = [ "itertools 0.14.0", "regex", "reqwest", - "revm 29.0.0", + "revm", "seismic-prelude", - "semver 1.0.26", + "semver 1.0.27", "serde", "serde_json", "tempfile", @@ -4454,7 +4441,7 @@ dependencies = [ "alloy-primitives", "foundry-compilers", "reqwest", - "semver 1.0.26", + "semver 1.0.27", "serde", "serde_json", "thiserror 2.0.16", @@ -4500,14 +4487,14 @@ dependencies = [ "parking_lot", "proptest", "rand 0.9.2", - "revm 29.0.0", + "revm", "revm-inspectors", "seismic-prelude", - "semver 1.0.26", + "semver 1.0.27", "serde", "serde_json", "thiserror 2.0.16", - "toml 0.9.5", + "toml 0.9.7", "tracing", "walkdir", ] @@ -4612,9 +4599,9 @@ dependencies = [ "path-slash", "regex", "reqwest", - "revm 29.0.0", + "revm", "seismic-prelude", - "semver 1.0.26", + "semver 1.0.27", "serde", "serde_json", "solar-compiler", @@ -4643,7 +4630,7 @@ dependencies = [ "chrono", "eyre", "foundry-macros", - "revm 29.0.0", + "revm", "seismic-prelude", "serde", "serde_json", @@ -4669,7 +4656,7 @@ dependencies = [ "path-slash", "rand 0.9.2", "rayon", - "semver 1.0.26", + "semver 1.0.27", "serde", "serde_json", "sha2", @@ -4705,7 +4692,7 @@ dependencies = [ "path-slash", "rayon", "regex", - "semver 1.0.26", + "semver 1.0.27", "serde", "serde_json", "thiserror 2.0.16", @@ -4725,7 +4712,7 @@ dependencies = [ "foundry-compilers-artifacts-solc", "foundry-compilers-core", "path-slash", - "semver 1.0.26", + "semver 1.0.27", "serde", ] @@ -4740,7 +4727,7 @@ dependencies = [ "fs_extra", "path-slash", "regex", - "semver 1.0.26", + "semver 1.0.27", "serde", "serde_json", "svm-rs", @@ -4775,7 +4762,7 @@ dependencies = [ "regex", "reqwest", "seismic-prelude", - "semver 1.0.26", + "semver 1.0.27", "serde", "serde_json", "similar-asserts", @@ -4783,8 +4770,8 @@ dependencies = [ "soldeer-core", "tempfile", "thiserror 2.0.16", - "toml 0.9.5", - "toml_edit 0.23.4", + "toml 0.9.7", + "toml_edit 0.23.6", "tracing", "walkdir", "yansi", @@ -4802,7 +4789,7 @@ dependencies = [ "foundry-evm-core", "foundry-evm-traces", "ratatui", - "revm 29.0.0", + "revm", "revm-inspectors", "serde", "tracing", @@ -4830,7 +4817,7 @@ dependencies = [ "indicatif 0.18.0", "parking_lot", "proptest", - "revm 29.0.0", + "revm", "revm-inspectors", "seismic-prelude", "serde", @@ -4861,7 +4848,7 @@ dependencies = [ "alloy-dyn-abi", "alloy-evm", "alloy-genesis", - "alloy-hardforks 0.3.0", + "alloy-hardforks 0.3.3", "alloy-json-abi", "alloy-network", "alloy-primitives", @@ -4881,7 +4868,7 @@ dependencies = [ "itertools 0.14.0", "op-revm", "parking_lot", - "revm 29.0.0", + "revm", "revm-inspectors", "seismic-prelude", "serde", @@ -4902,8 +4889,8 @@ dependencies = [ "foundry-compilers", "foundry-evm-core", "rayon", - "revm 29.0.0", - "semver 1.0.26", + "revm", + "semver 1.0.27", "tracing", ] @@ -4925,7 +4912,7 @@ dependencies = [ "parking_lot", "proptest", "rand 0.9.2", - "revm 29.0.0", + "revm", "serde", "thiserror 2.0.16", "tracing", @@ -4949,7 +4936,7 @@ dependencies = [ "futures", "itertools 0.14.0", "rayon", - "revm 29.0.0", + "revm", "revm-inspectors", "serde", "serde_json", @@ -4973,7 +4960,7 @@ dependencies = [ "eyre", "futures", "parking_lot", - "revm 29.0.0", + "revm", "seismic-prelude", "serde", "serde_json", @@ -4989,7 +4976,7 @@ version = "1.3.5" dependencies = [ "alloy-primitives", "foundry-compilers", - "semver 1.0.26", + "semver 1.0.27", "thiserror 2.0.16", ] @@ -5289,7 +5276,7 @@ dependencies = [ "js-sys", "libc", "r-efi", - "wasi 0.14.4+wasi-0.2.4", + "wasi 0.14.7+wasi-0.2.4", "wasm-bindgen", ] @@ -5417,7 +5404,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.3.1", - "indexmap 2.11.0", + "indexmap 2.11.4", "slab", "tokio", "tokio-util", @@ -5497,9 +5484,6 @@ name = "hex" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -dependencies = [ - "serde", -] [[package]] name = "hex-conservative" @@ -5716,9 +5700,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e" +checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" dependencies = [ "base64 0.22.1", "bytes", @@ -5742,9 +5726,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.63" +version = "0.1.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -5980,14 +5964,15 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.11.0" +version = "2.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2481980430f9f78649238835720ddccc57e52df14ffce1c6f37391d61b563e9" +checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" dependencies = [ "arbitrary", "equivalent", - "hashbrown 0.15.5", + "hashbrown 0.16.0", "serde", + "serde_core", ] [[package]] @@ -6009,7 +5994,7 @@ version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70a646d946d06bedbbc4cac4c218acf4bbf2d87757a784857025f4d447e4e1cd" dependencies = [ - "console 0.16.0", + "console 0.16.1", "portable-atomic", "unicode-width 0.2.0", "unit-prefix", @@ -6176,15 +6161,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" @@ -6284,9 +6260,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.78" +version = "0.3.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c0b063578492ceec17683ef2f8c5e89121fbd0b172cbc280635ab7567db2738" +checksum = "852f13bec5eba4ba9afbeb93fd7c13fe56147f055939ae21c43a29a0ecb2702e" dependencies = [ "once_cell", "wasm-bindgen", @@ -6363,7 +6339,7 @@ dependencies = [ "parking_lot", "pin-project 1.1.10", "rand 0.8.5", - "rustc-hash 2.1.1", + "rustc-hash", "serde", "serde_json", "thiserror 1.0.69", @@ -6593,12 +6569,6 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" -[[package]] -name = "lazycell" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" - [[package]] name = "levenshtein" version = "1.0.5" @@ -6639,9 +6609,9 @@ dependencies = [ [[package]] name = "libredox" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3" +checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" dependencies = [ "bitflags 2.9.4", "libc", @@ -6676,9 +6646,9 @@ checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "linux-raw-sys" -version = "0.9.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" [[package]] name = "litemap" @@ -7086,11 +7056,11 @@ checksum = "f5438dd2b2ff4c6df6e1ce22d825ed2fa93ee2922235cc45186991717f0a892d" [[package]] name = "normpath" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8911957c4b1549ac0dc74e30db9c8b0e66ddcd6d7acc33098f4c63a64a6d7ed" +checksum = "c178369371fd7db523726931e50d430b560e3059665abc537ba3277e9274c9c4" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.0", ] [[package]] @@ -7281,9 +7251,9 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "nybbles" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63cb50036b1ad148038105af40aaa70ff24d8a14fbc44ae5c914e1348533d12e" +checksum = "bfa11e84403164a9f12982ab728f3c67c6fd4ab5b5f0254ffc217bdbd3b28ab0" dependencies = [ "alloy-rlp", "cfg-if", @@ -7353,10 +7323,10 @@ checksum = "a79f352fc3893dcd670172e615afef993a41798a1d3fc0db88a3e60ef2e70ecc" [[package]] name = "op-revm" version = "10.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#0df6dfe1f79907050936ec34862978673d250028" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#f84ed6764583ef588ab1ccf84f9e0a2e94565876" dependencies = [ "auto_impl", - "revm 29.0.0", + "revm", "serde", ] @@ -7604,9 +7574,9 @@ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pest" -version = "2.8.1" +version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1db05f56d34358a8b1066f67cbb203ee3e7ed2ba674a6263a1d5ec6db2204323" +checksum = "21e0a3a33733faeaf8651dfee72dd0f388f0c8e5ad496a3478fa5a922f49cfa8" dependencies = [ "memchr", "thiserror 2.0.16", @@ -7615,9 +7585,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.1" +version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb056d9e8ea77922845ec74a1c4e8fb17e7c218cc4fc11a15c5d25e189aa40bc" +checksum = "bc58706f770acb1dbd0973e6530a3cff4746fb721207feb3a8a6064cd0b6c663" dependencies = [ "pest", "pest_generator", @@ -7625,9 +7595,9 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.1" +version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87e404e638f781eb3202dc82db6760c8ae8a1eeef7fb3fa8264b2ef280504966" +checksum = "6d4f36811dfe07f7b8573462465d5cb8965fffc2e71ae377a33aecf14c2c9a2f" dependencies = [ "pest", "pest_meta", @@ -7638,9 +7608,9 @@ dependencies = [ [[package]] name = "pest_meta" -version = "2.8.1" +version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edd1101f170f5903fde0914f899bb503d9ff5271d7ba76bbb70bea63690cc0d5" +checksum = "42919b05089acbd0a5dcd5405fb304d17d1053847b81163d09c4ad18ce8e8420" dependencies = [ "pest", "sha2", @@ -7653,7 +7623,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" dependencies = [ "fixedbitset", - "indexmap 2.11.0", + "indexmap 2.11.4", ] [[package]] @@ -7951,11 +7921,11 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "toml_edit 0.22.27", + "toml_edit 0.23.6", ] [[package]] @@ -8009,7 +7979,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3ef4f2f0422f23a82ec9f628ea2acd12871c81a9362b02c43c1aa86acfc3ba1" dependencies = [ "futures", - "indexmap 2.11.0", + "indexmap 2.11.4", "nix 0.30.1", "tokio", "tracing", @@ -8162,7 +8132,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3ed1a693391a16317257103ad06a88c6529ac640846021da7c435a06fffdacd7" dependencies = [ "chrono", - "indexmap 2.11.0", + "indexmap 2.11.4", "newtype-uuid", "quick-xml 0.37.5", "strip-ansi-escapes", @@ -8199,7 +8169,7 @@ dependencies = [ "pin-project-lite", "quinn-proto", "quinn-udp", - "rustc-hash 2.1.1", + "rustc-hash", "rustls", "socket2 0.6.0", "thiserror 2.0.16", @@ -8219,7 +8189,7 @@ dependencies = [ "lru-slab", "rand 0.9.2", "ring", - "rustc-hash 2.1.1", + "rustc-hash", "rustls", "rustls-pki-types", "slab", @@ -8528,237 +8498,122 @@ dependencies = [ "webpki-roots 1.0.2", ] -[[package]] -name = "revm" -version = "23.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df1eb83c8652836bc0422f9a144522179134d8befcc7ab595c1ada60dac39e51" -dependencies = [ - "revm-bytecode 4.1.0", - "revm-context 4.1.0", - "revm-context-interface 4.1.0", - "revm-database 4.0.1", - "revm-database-interface 4.0.1", - "revm-handler 4.1.0", - "revm-inspector 4.1.0", - "revm-interpreter 19.1.0", - "revm-precompile 20.1.0", - "revm-primitives 19.2.0", - "revm-state 4.0.1", -] - [[package]] name = "revm" version = "29.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#0df6dfe1f79907050936ec34862978673d250028" -dependencies = [ - "revm-bytecode 6.2.2", - "revm-context 9.0.2", - "revm-context-interface 10.1.0", - "revm-database 7.0.5", - "revm-database-interface 7.0.5", - "revm-handler 10.0.0", - "revm-inspector 10.0.0", - "revm-interpreter 25.0.2", - "revm-precompile 27.0.0", - "revm-primitives 20.2.1", - "revm-state 7.0.5", -] - -[[package]] -name = "revm-bytecode" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942fe4724cf552fd28db6b0a2ca5b79e884d40dd8288a4027ed1e9090e0c6f49" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#f84ed6764583ef588ab1ccf84f9e0a2e94565876" dependencies = [ - "bitvec", - "once_cell", - "revm-primitives 19.2.0", + "revm-bytecode", + "revm-context", + "revm-context-interface", + "revm-database", + "revm-database-interface", + "revm-handler", + "revm-inspector", + "revm-interpreter", + "revm-precompile", + "revm-primitives", + "revm-state", ] [[package]] name = "revm-bytecode" version = "6.2.2" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#0df6dfe1f79907050936ec34862978673d250028" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#f84ed6764583ef588ab1ccf84f9e0a2e94565876" dependencies = [ "bitvec", "phf 0.13.1", - "revm-primitives 20.2.1", + "revm-primitives", "serde", ] -[[package]] -name = "revm-context" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcd6faa992a1a10b84723326d6117203764c040d3519fd1ba34950d049389eb7" -dependencies = [ - "cfg-if", - "derive-where", - "revm-bytecode 4.1.0", - "revm-context-interface 4.1.0", - "revm-database-interface 4.0.1", - "revm-primitives 19.2.0", - "revm-state 4.0.1", -] - [[package]] name = "revm-context" version = "9.0.2" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#0df6dfe1f79907050936ec34862978673d250028" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#f84ed6764583ef588ab1ccf84f9e0a2e94565876" dependencies = [ "bitvec", "cfg-if", "derive-where", - "revm-bytecode 6.2.2", - "revm-context-interface 10.1.0", - "revm-database-interface 7.0.5", - "revm-primitives 20.2.1", - "revm-state 7.0.5", + "revm-bytecode", + "revm-context-interface", + "revm-database-interface", + "revm-primitives", + "revm-state", "serde", ] -[[package]] -name = "revm-context-interface" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c2b42cac141cd388c38db420d3d18e7b23013c5747d5ed648d2d9a225263d51" -dependencies = [ - "alloy-eip2930", - "alloy-eip7702", - "auto_impl", - "either", - "revm-database-interface 4.0.1", - "revm-primitives 19.2.0", - "revm-state 4.0.1", -] - [[package]] name = "revm-context-interface" version = "10.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#0df6dfe1f79907050936ec34862978673d250028" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#f84ed6764583ef588ab1ccf84f9e0a2e94565876" dependencies = [ "alloy-eip2930", "alloy-eip7702", "auto_impl", "either", - "revm-database-interface 7.0.5", - "revm-primitives 20.2.1", - "revm-state 7.0.5", + "revm-database-interface", + "revm-primitives", + "revm-state", "serde", ] -[[package]] -name = "revm-database" -version = "4.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad3fbe34f6bb00a9c3155723b3718b9cb9f17066ba38f9eb101b678cd3626775" -dependencies = [ - "revm-bytecode 4.1.0", - "revm-database-interface 4.0.1", - "revm-primitives 19.2.0", - "revm-state 4.0.1", -] - [[package]] name = "revm-database" version = "7.0.5" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#0df6dfe1f79907050936ec34862978673d250028" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#f84ed6764583ef588ab1ccf84f9e0a2e94565876" dependencies = [ "alloy-eips", - "revm-bytecode 6.2.2", - "revm-database-interface 7.0.5", - "revm-primitives 20.2.1", - "revm-state 7.0.5", + "revm-bytecode", + "revm-database-interface", + "revm-primitives", + "revm-state", "serde", ] -[[package]] -name = "revm-database-interface" -version = "4.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b8acd36784a6d95d5b9e1b7be3ce014f1e759abb59df1fa08396b30f71adc2a" -dependencies = [ - "auto_impl", - "revm-primitives 19.2.0", - "revm-state 4.0.1", -] - [[package]] name = "revm-database-interface" version = "7.0.5" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#0df6dfe1f79907050936ec34862978673d250028" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#f84ed6764583ef588ab1ccf84f9e0a2e94565876" dependencies = [ "auto_impl", "either", - "revm-primitives 20.2.1", - "revm-state 7.0.5", + "revm-primitives", + "revm-state", "serde", ] -[[package]] -name = "revm-handler" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "511e50a8c7f14e97681ec96266ee53bf8316c0dea1d4a6633ff6f37c5c0fe9d0" -dependencies = [ - "auto_impl", - "revm-bytecode 4.1.0", - "revm-context 4.1.0", - "revm-context-interface 4.1.0", - "revm-database-interface 4.0.1", - "revm-interpreter 19.1.0", - "revm-precompile 20.1.0", - "revm-primitives 19.2.0", - "revm-state 4.0.1", -] - [[package]] name = "revm-handler" version = "10.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#0df6dfe1f79907050936ec34862978673d250028" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#f84ed6764583ef588ab1ccf84f9e0a2e94565876" dependencies = [ "auto_impl", "derive-where", - "revm-bytecode 6.2.2", - "revm-context 9.0.2", - "revm-context-interface 10.1.0", - "revm-database-interface 7.0.5", - "revm-interpreter 25.0.2", - "revm-precompile 27.0.0", - "revm-primitives 20.2.1", - "revm-state 7.0.5", + "revm-bytecode", + "revm-context", + "revm-context-interface", + "revm-database-interface", + "revm-interpreter", + "revm-precompile", + "revm-primitives", + "revm-state", "serde", ] -[[package]] -name = "revm-inspector" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9f6c88fcf481f8e315bfd87377aa0ae83e1159dd381430122cbf431474ce39c" -dependencies = [ - "auto_impl", - "revm-context 4.1.0", - "revm-database-interface 4.0.1", - "revm-handler 4.1.0", - "revm-interpreter 19.1.0", - "revm-primitives 19.2.0", - "revm-state 4.0.1", -] - [[package]] name = "revm-inspector" version = "10.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#0df6dfe1f79907050936ec34862978673d250028" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#f84ed6764583ef588ab1ccf84f9e0a2e94565876" dependencies = [ "auto_impl", "either", - "revm-context 9.0.2", - "revm-database-interface 7.0.5", - "revm-handler 10.0.0", - "revm-interpreter 25.0.2", - "revm-primitives 20.2.1", - "revm-state 7.0.5", + "revm-context", + "revm-database-interface", + "revm-handler", + "revm-interpreter", + "revm-primitives", + "revm-state", "serde", "serde_json", ] @@ -8776,59 +8631,28 @@ dependencies = [ "boa_engine", "boa_gc", "colorchoice", - "revm 29.0.0", + "revm", "serde", "serde_json", "thiserror 2.0.16", ] -[[package]] -name = "revm-interpreter" -version = "19.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0b7d75106333808bc97df3cd6a1864ced4ffec9be28fd3e459733813f3c300e" -dependencies = [ - "revm-bytecode 4.1.0", - "revm-context-interface 4.1.0", - "revm-primitives 19.2.0", -] - [[package]] name = "revm-interpreter" version = "25.0.2" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#0df6dfe1f79907050936ec34862978673d250028" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#f84ed6764583ef588ab1ccf84f9e0a2e94565876" dependencies = [ - "revm-bytecode 6.2.2", - "revm-context-interface 10.1.0", - "revm-primitives 20.2.1", - "revm-state 7.0.5", + "revm-bytecode", + "revm-context-interface", + "revm-primitives", + "revm-state", "serde", ] -[[package]] -name = "revm-precompile" -version = "20.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06769068a34fd237c74193118530af3912e1b16922137a96fc302f29c119966" -dependencies = [ - "ark-bls12-381", - "ark-bn254", - "ark-ec", - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "aurora-engine-modexp", - "cfg-if", - "k256", - "once_cell", - "revm-primitives 19.2.0", - "ripemd", - "sha2", -] - [[package]] name = "revm-precompile" version = "27.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#0df6dfe1f79907050936ec34862978673d250028" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#f84ed6764583ef588ab1ccf84f9e0a2e94565876" dependencies = [ "ark-bls12-381", "ark-bn254", @@ -8842,27 +8666,17 @@ dependencies = [ "cfg-if", "k256", "p256", - "revm-primitives 20.2.1", + "revm-primitives", "ripemd", "rug", "secp256k1 0.31.1", "sha2", ] -[[package]] -name = "revm-primitives" -version = "19.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c1588093530ec4442461163be49c433c07a3235d1ca6f6799fef338dacc50d3" -dependencies = [ - "alloy-primitives", - "num_enum", -] - [[package]] name = "revm-primitives" version = "20.2.1" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#0df6dfe1f79907050936ec34862978673d250028" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#f84ed6764583ef588ab1ccf84f9e0a2e94565876" dependencies = [ "alloy-primitives", "num_enum", @@ -8870,25 +8684,14 @@ dependencies = [ "serde", ] -[[package]] -name = "revm-state" -version = "4.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0040c61c30319254b34507383ba33d85f92949933adf6525a2cede05d165e1fa" -dependencies = [ - "bitflags 2.9.4", - "revm-bytecode 4.1.0", - "revm-primitives 19.2.0", -] - [[package]] name = "revm-state" version = "7.0.5" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#0df6dfe1f79907050936ec34862978673d250028" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#f84ed6764583ef588ab1ccf84f9e0a2e94565876" dependencies = [ "bitflags 2.9.4", - "revm-bytecode 6.2.2", - "revm-primitives 20.2.1", + "revm-bytecode", + "revm-primitives", "serde", ] @@ -9045,12 +8848,6 @@ version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" -[[package]] -name = "rustc-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - [[package]] name = "rustc-hash" version = "2.1.1" @@ -9081,7 +8878,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.26", + "semver 1.0.27", ] [[package]] @@ -9111,15 +8908,15 @@ dependencies = [ [[package]] name = "rustix" -version = "1.0.8" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ "bitflags 2.9.4", "errno", "libc", - "linux-raw-sys 0.9.4", - "windows-sys 0.60.2", + "linux-raw-sys 0.11.0", + "windows-sys 0.61.0", ] [[package]] @@ -9147,7 +8944,7 @@ dependencies = [ "openssl-probe", "rustls-pki-types", "schannel", - "security-framework 3.3.0", + "security-framework 3.4.0", ] [[package]] @@ -9175,7 +8972,7 @@ dependencies = [ "rustls-native-certs", "rustls-platform-verifier-android", "rustls-webpki", - "security-framework 3.3.0", + "security-framework 3.4.0", "security-framework-sys", "webpki-root-certs 0.26.11", "windows-sys 0.59.0", @@ -9189,9 +8986,9 @@ checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" [[package]] name = "rustls-webpki" -version = "0.103.4" +version = "0.103.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc" +checksum = "8572f3c2cb9934231157b45499fc41e1f58c589fdfb81a844ba873265e80f8eb" dependencies = [ "aws-lc-rs", "ring", @@ -9280,11 +9077,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.0", ] [[package]] @@ -9453,9 +9250,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80fb1d92c5028aa318b4b8bd7302a5bfcf48be96a37fc6fc790f806b0004ee0c" +checksum = "60b369d18893388b345804dc0007963c99b7d665ae71d275812d828c6f089640" dependencies = [ "bitflags 2.9.4", "core-foundation 0.10.1", @@ -9466,9 +9263,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.14.0" +version = "2.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" dependencies = [ "core-foundation-sys", "libc", @@ -9477,7 +9274,7 @@ dependencies = [ [[package]] name = "seismic-alloy-consensus" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?branch=usm#dd32719cd16e030b98a2d51b366ccf3a7041aca6" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?branch=usm#caae5e1db5db7ca3c0a28d04a2253ed3759ad14c" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -9498,7 +9295,7 @@ dependencies = [ [[package]] name = "seismic-alloy-network" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?branch=usm#dd32719cd16e030b98a2d51b366ccf3a7041aca6" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?branch=usm#caae5e1db5db7ca3c0a28d04a2253ed3759ad14c" dependencies = [ "alloy-consensus", "alloy-eip7702", @@ -9521,7 +9318,7 @@ dependencies = [ [[package]] name = "seismic-alloy-provider" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?branch=usm#dd32719cd16e030b98a2d51b366ccf3a7041aca6" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?branch=usm#caae5e1db5db7ca3c0a28d04a2253ed3759ad14c" dependencies = [ "alloy-network", "alloy-primitives", @@ -9539,7 +9336,7 @@ dependencies = [ [[package]] name = "seismic-alloy-rpc-types" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?branch=usm#dd32719cd16e030b98a2d51b366ccf3a7041aca6" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?branch=usm#caae5e1db5db7ca3c0a28d04a2253ed3759ad14c" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9589,7 +9386,7 @@ dependencies = [ [[package]] name = "seismic-prelude" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?branch=usm#dd32719cd16e030b98a2d51b366ccf3a7041aca6" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?branch=usm#caae5e1db5db7ca3c0a28d04a2253ed3759ad14c" dependencies = [ "alloy-consensus", "alloy-eip7702", @@ -9600,7 +9397,7 @@ dependencies = [ "alloy-rpc-types-eth", "alloy-serde", "derive_more 1.0.0", - "revm 23.1.0", + "revm", "seismic-alloy-consensus", "seismic-alloy-network", "seismic-alloy-provider", @@ -9612,14 +9409,14 @@ dependencies = [ [[package]] name = "seismic-revm" version = "1.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#0df6dfe1f79907050936ec34862978673d250028" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#f84ed6764583ef588ab1ccf84f9e0a2e94565876" dependencies = [ "auto_impl", "hkdf", "merlin", "once_cell", "rand_core 0.6.4", - "revm 29.0.0", + "revm", "schnorrkel", "secp256k1 0.31.1", "seismic-enclave", @@ -9638,11 +9435,12 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.26" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" dependencies = [ "serde", + "serde_core", ] [[package]] @@ -9668,27 +9466,38 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.219" +version = "1.0.225" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "fd6c24dee235d0da097043389623fb913daddf92c76e9f5a1db88607a0bcbd1d" dependencies = [ + "serde_core", "serde_derive", ] [[package]] name = "serde_bytes" -version = "0.11.17" +version = "0.11.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8437fd221bde2d4ca316d61b90e337e9e702b3820b87d63caa9ba6c02bd06d96" +checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" dependencies = [ "serde", + "serde_core", +] + +[[package]] +name = "serde_core" +version = "1.0.225" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "659356f9a0cb1e529b24c01e43ad2bdf520ec4ceaf83047b83ddcc2251f96383" +dependencies = [ + "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.219" +version = "1.0.225" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "0ea936adf78b1f766949a4977b91d2f5595825bd6ec079aa9543ad2685fc4516" dependencies = [ "proc-macro2", "quote", @@ -9717,25 +9526,27 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.143" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ - "indexmap 2.11.0", + "indexmap 2.11.4", "itoa", "memchr", "ryu", "serde", + "serde_core", ] [[package]] name = "serde_path_to_error" -version = "0.1.17" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a" +checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457" dependencies = [ "itoa", "serde", + "serde_core", ] [[package]] @@ -9749,11 +9560,11 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40734c41988f7306bb04f0ecf60ec0f3f1caa34290e4e8ea471dcd3346483b83" +checksum = "5417783452c2be558477e104686f7de5dae53dba813c28435e0e70f82d9b04ee" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -9778,7 +9589,7 @@ dependencies = [ "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.11.0", + "indexmap 2.11.4", "schemars 0.9.0", "schemars 1.0.4", "serde", @@ -10050,7 +9861,7 @@ dependencies = [ "bumpalo", "either", "num-rational", - "semver 1.0.26", + "semver 1.0.27", "solar-data-structures", "solar-interface", "solar-macros", @@ -10091,10 +9902,10 @@ checksum = "e246a9af3cc34b40e7612b600a5495f70768bdd365f9fa338d64afb33a59a96b" dependencies = [ "bumpalo", "index_vec", - "indexmap 2.11.0", + "indexmap 2.11.4", "parking_lot", "rayon", - "rustc-hash 2.1.1", + "rustc-hash", "smallvec", ] @@ -10104,7 +9915,7 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77e2e4dec38bc1940946f8d303260920f57022dc5a558a3786c3b83e121c23c6" dependencies = [ - "annotate-snippets 0.12.3", + "annotate-snippets 0.12.4", "anstream", "anstyle", "derive_more 2.0.1", @@ -10224,13 +10035,13 @@ dependencies = [ "regex", "reqwest", "sanitize-filename", - "semver 1.0.26", + "semver 1.0.27", "serde", "serde_json", "sha2", "thiserror 2.0.16", "tokio", - "toml_edit 0.23.4", + "toml_edit 0.23.6", "uuid 1.18.1", "zip", "zip-extract", @@ -10457,7 +10268,7 @@ dependencies = [ "const-hex", "dirs", "reqwest", - "semver 1.0.26", + "semver 1.0.27", "serde", "serde_json", "sha2", @@ -10474,7 +10285,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "31affc47068aeef445accc5c3d5f7fd24f9072cae0a651cef564239003c94ff8" dependencies = [ "const-hex", - "semver 1.0.26", + "semver 1.0.27", "serde_json", "svm-rs", ] @@ -10504,7 +10315,7 @@ dependencies = [ [[package]] name = "syn-solidity" version = "1.3.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?branch=usm#99fc4306532c750170e1cf9b4ddf8c8354f3f27e" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?branch=usm#77f2dc24233a2081bc7e5beb5454a771948154cf" dependencies = [ "paste", "proc-macro2", @@ -10561,15 +10372,15 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.21.0" +version = "3.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15b61f8f20e3a6f7e0649d825294eaf317edce30f82cf6026e7e4cb9222a7d1e" +checksum = "84fa4d11fadde498443cca10fd3ac23c951f0dc59e080e9f4b93d4df4e4eea53" dependencies = [ "fastrand", "getrandom 0.3.3", "once_cell", - "rustix 1.0.8", - "windows-sys 0.60.2", + "rustix 1.1.2", + "windows-sys 0.61.0", ] [[package]] @@ -10585,11 +10396,11 @@ dependencies = [ [[package]] name = "term" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a43bddab41f8626c7bdaab872bbba75f8df5847b516d77c569c746e2ae5eb746" +checksum = "2111ef44dae28680ae9752bb89409e7310ca33a8c621ebe7b106cf5c928b3ac0" dependencies = [ - "windows-sys 0.60.2", + "windows-sys 0.61.0", ] [[package]] @@ -10598,7 +10409,7 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60b8cb979cb11c32ce1603f8137b22262a9d131aaa5c37b5678025f22b8becd0" dependencies = [ - "rustix 1.0.8", + "rustix 1.1.2", "windows-sys 0.60.2", ] @@ -10825,9 +10636,9 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.2" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" +checksum = "05f63835928ca123f1bef57abbcd23bb2ba0ac9ae1235f1e65bda0d06e7786bd" dependencies = [ "rustls", "tokio", @@ -10898,14 +10709,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.5" +version = "0.9.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75129e1dc5000bfbaa9fee9d1b21f974f9fbad9daec557a521ee6e080825f6e8" +checksum = "00e5e5d9bf2475ac9d4f0d9edab68cc573dc2fd644b0dba36b0c30a92dd9eaa0" dependencies = [ - "indexmap 2.11.0", - "serde", - "serde_spanned 1.0.0", - "toml_datetime 0.7.0", + "indexmap 2.11.4", + "serde_core", + "serde_spanned 1.0.2", + "toml_datetime 0.7.2", "toml_parser", "toml_writer", "winnow", @@ -10922,11 +10733,11 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bade1c3e902f58d73d3f294cd7f20391c1cb2fbcb643b73566bc773971df91e3" +checksum = "32f1085dec27c2b6632b04c80b3bb1b4300d6495d1e129693bdda7d91e72eec1" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -10935,7 +10746,7 @@ version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.11.0", + "indexmap 2.11.4", "serde", "serde_spanned 0.6.9", "toml_datetime 0.6.11", @@ -10945,14 +10756,14 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.23.4" +version = "0.23.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7211ff1b8f0d3adae1663b7da9ffe396eabe1ca25f0b0bee42b0da29a9ddce93" +checksum = "f3effe7c0e86fdff4f69cdd2ccc1b96f933e24811c5441d44904e8683e27184b" dependencies = [ - "indexmap 2.11.0", - "serde", - "serde_spanned 1.0.0", - "toml_datetime 0.7.0", + "indexmap 2.11.4", + "serde_core", + "serde_spanned 1.0.2", + "toml_datetime 0.7.2", "toml_parser", "toml_writer", "winnow", @@ -10960,9 +10771,9 @@ dependencies = [ [[package]] name = "toml_parser" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b551886f449aa90d4fe2bdaa9f4a2577ad2dde302c61ecf262d80b116db95c10" +checksum = "4cf893c33be71572e0e9aa6dd15e6677937abd686b066eac3f8cd3531688a627" dependencies = [ "winnow", ] @@ -10975,9 +10786,9 @@ checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" [[package]] name = "toml_writer" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc842091f2def52017664b53082ecbbeb5c7731092bad69d2c63050401dfd64" +checksum = "d163a63c116ce562a22cda521fcc4d79152e7aba014456fb5eb442f6d6a10109" [[package]] name = "tonic" @@ -11039,7 +10850,7 @@ checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ "futures-core", "futures-util", - "indexmap 2.11.0", + "indexmap 2.11.4", "pin-project-lite", "slab", "sync_wrapper", @@ -11340,9 +11151,9 @@ checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" [[package]] name = "unicode-ident" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" +checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" [[package]] name = "unicode-joining-type" @@ -11609,18 +11420,27 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" -version = "0.14.4+wasi-0.2.4" +version = "0.14.7+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "883478de20367e224c0090af9cf5f9fa85bed63a95c1abf3afc5c083ebc06e8c" +dependencies = [ + "wasip2", +] + +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88a5f4a424faf49c3c2c344f166f0662341d470ea185e939657aaff130f0ec4a" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" dependencies = [ "wit-bindgen", ] [[package]] name = "wasm-bindgen" -version = "0.2.101" +version = "0.2.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e14915cadd45b529bb8d1f343c4ed0ac1de926144b746e2710f9cd05df6603b" +checksum = "ab10a69fbd0a177f5f649ad4d8d3305499c42bab9aef2f7ff592d0ec8f833819" dependencies = [ "cfg-if", "once_cell", @@ -11631,9 +11451,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.101" +version = "0.2.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e28d1ba982ca7923fd01448d5c30c6864d0a14109560296a162f80f305fb93bb" +checksum = "0bb702423545a6007bbc368fde243ba47ca275e549c8a28617f56f6ba53b1d1c" dependencies = [ "bumpalo", "log", @@ -11645,9 +11465,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.51" +version = "0.4.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ca85039a9b469b38336411d6d6ced91f3fc87109a2a27b0c197663f5144dffe" +checksum = "a0b221ff421256839509adbb55998214a70d829d3a28c69b4a6672e9d2a42f67" dependencies = [ "cfg-if", "js-sys", @@ -11658,9 +11478,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.101" +version = "0.2.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c3d463ae3eff775b0c45df9da45d68837702ac35af998361e2c84e7c5ec1b0d" +checksum = "fc65f4f411d91494355917b605e1480033152658d71f722a90647f56a70c88a0" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -11668,9 +11488,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.101" +version = "0.2.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bb4ce89b08211f923caf51d527662b75bdc9c9c7aab40f86dcb9fb85ac552aa" +checksum = "ffc003a991398a8ee604a401e194b6b3a39677b3173d6e74495eb51b82e99a32" dependencies = [ "proc-macro2", "quote", @@ -11681,9 +11501,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.101" +version = "0.2.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f143854a3b13752c6950862c906306adb27c7e839f7414cec8fea35beab624c1" +checksum = "293c37f4efa430ca14db3721dfbe48d8c33308096bd44d80ebaa775ab71ba1cf" dependencies = [ "unicode-ident", ] @@ -11772,9 +11592,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.78" +version = "0.3.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77e4b637749ff0d92b8fad63aa1f7cff3cbe125fd49c175cd6345e7272638b12" +checksum = "fbe734895e869dc429d78c4b433f8d17d95f8d05317440b4fad5ab2d33e596dc" dependencies = [ "js-sys", "wasm-bindgen", @@ -11838,18 +11658,6 @@ dependencies = [ "rustls-pki-types", ] -[[package]] -name = "which" -version = "4.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" -dependencies = [ - "either", - "home", - "once_cell", - "rustix 0.38.44", -] - [[package]] name = "which" version = "8.0.0" @@ -11857,7 +11665,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3fabb953106c3c8eea8306e4393700d7657561cb43122571b172bbfb7c7ba1d" dependencies = [ "env_home", - "rustix 1.0.8", + "rustix 1.1.2", "winsafe", ] @@ -11885,11 +11693,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0978bf7171b3d90bac376700cb56d606feb40f251a475a5d6634613564460b22" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.60.2", + "windows-sys 0.61.0", ] [[package]] @@ -12274,9 +12082,9 @@ checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" [[package]] name = "wit-bindgen" -version = "0.45.1" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c573471f125075647d03df72e026074b7203790d41351cd6edc96f46bcccd36" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "write16" @@ -12455,7 +12263,7 @@ dependencies = [ "arbitrary", "crc32fast", "flate2", - "indexmap 2.11.0", + "indexmap 2.11.4", "memchr", "zopfli", ] diff --git a/Cargo.toml b/Cargo.toml index 9239c9df7..c51e08ce2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -180,6 +180,7 @@ alloy-rpc-types-eth = { version = "1.0.5", default-features = true } alloy-seismic-evm = "0.20.1" seismic-prelude = "0.0.1" seismic-enclave = "0.1.0" +seismic-revm = "1.0.0" anvil = { path = "crates/anvil" } cast = { path = "crates/cast" } @@ -390,8 +391,9 @@ alloy-trie = { git = "https://github.com/SeismicSystems/seismic-trie.git", branc # seismic-revm revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", branch = "usm" } -revm-primitives = { git = "https://github.com/SeismicSystems/seismic-revm.git", branch = "usm" } +revm-context-interface = { git = "https://github.com/SeismicSystems/seismic-revm.git", branch = "usm" } revm-interpreter = { git = "https://github.com/SeismicSystems/seismic-revm.git", branch = "usm" } +revm-primitives = { git = "https://github.com/SeismicSystems/seismic-revm.git", branch = "usm" } op-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", branch = "usm" } seismic-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", branch = "usm" } diff --git a/crates/anvil/Cargo.toml b/crates/anvil/Cargo.toml index 3bfbcb80e..9e19694e7 100644 --- a/crates/anvil/Cargo.toml +++ b/crates/anvil/Cargo.toml @@ -20,12 +20,6 @@ required-features = ["cli"] [dependencies] # Seismic's added dependencies -secp256k1 = { version = "0.30", default-features = false, features = [ - "global-context", - "recovery", -] } -bytes.workspace = true -k256.workspace = true seismic-enclave.workspace = true seismic-prelude.workspace = true @@ -116,6 +110,11 @@ fdlimit = { version = "0.3", optional = true } clap_complete_fig = "4" [dev-dependencies] +secp256k1 = { version = "0.30", default-features = false, features = [ + "global-context", + "recovery", +] } + alloy-json-abi.workspace = true alloy-rpc-client = { workspace = true, features = ["pubsub"] } alloy-transport-ipc = { workspace = true, features = ["mock"] } diff --git a/crates/anvil/core/src/eth/transaction/mod.rs b/crates/anvil/core/src/eth/transaction/mod.rs index af31145d1..c257868f6 100644 --- a/crates/anvil/core/src/eth/transaction/mod.rs +++ b/crates/anvil/core/src/eth/transaction/mod.rs @@ -1,23 +1,23 @@ //! Transaction related types use alloy_consensus::{ + EthereumTxEnvelope, Receipt, ReceiptEnvelope, ReceiptWithBloom, Signed, Transaction, TxEip1559, + TxEip2930, TxLegacy, TxReceipt, Typed2718, transaction::{ - eip4844::{TxEip4844, TxEip4844Variant, TxEip4844WithSidecar}, Recovered, TxEip7702, + eip4844::{TxEip4844, TxEip4844Variant, TxEip4844WithSidecar}, }, - EthereumTxEnvelope, Receipt, ReceiptEnvelope, ReceiptWithBloom, Signed, Transaction, TxEip1559, - TxEip2930, TxLegacy, TxReceipt, Typed2718, }; -use alloy_primitives::{Address, Bloom, Bytes, Log, Signature, TxHash, TxKind, B256, U256}; -use alloy_rlp::{length_of_length, Decodable, Encodable, Header}; +use alloy_primitives::{Address, B256, Bloom, Bytes, Log, Signature, TxHash, TxKind, U256}; +use alloy_rlp::{Decodable, Encodable, Header, length_of_length}; use alloy_rpc_types::{ - trace::otterscan::OtsReceipt, AccessList, ConversionError, - TransactionRequest as AlloyTransactionRequest, + AccessList, ConversionError, TransactionRequest as AlloyTransactionRequest, + trace::otterscan::OtsReceipt, }; use alloy_serde::{OtherFields, WithOtherFields}; use bytes::BufMut; use foundry_evm::traces::CallTraceNode; use op_alloy_consensus::{DEPOSIT_TX_TYPE_ID, TxDeposit}; -use op_revm::{OpTransaction, transaction::deposit::DepositTransactionParts}; +use op_revm::transaction::deposit::DepositTransactionParts; use revm::{context::TxEnv, interpreter::InstructionResult}; use serde::{Deserialize, Serialize}; use std::{ @@ -26,11 +26,11 @@ use std::{ ops::{Deref, Mul}, }; -use alloy_eips::{Decodable2718, Encodable2718}; +use alloy_eips::{Decodable2718, Encodable2718, eip2718::Eip2718Error}; use seismic_prelude::foundry::{ - AnyReceiptEnvelope, AnyRpcTransaction, AnyTransactionReceipt, AnyTxEnvelope, Decodable712, - Eip712Result, OpTransaction, RpcTransaction, TransactionReceipt, TransactionRequest, - TxEnvelope, TxSeismic, TxSeismicElements, TypedDataRequest, SEISMIC_TX_TYPE_ID, + AnyRpcTransaction, AnyTransactionReceipt, AnyTxEnvelope, Decodable712, Eip712Result, + OpTransaction, RpcTransaction, SEISMIC_TX_TYPE_ID, TransactionReceipt, TransactionRequest, + TxEnvelope, TxSeismic, TxSeismicElements, TypedDataRequest, }; pub trait SeismicCompatible: @@ -1227,7 +1227,6 @@ impl From for TypedTransaction { TxEnvelope::Eip1559(tx) => Self::EIP1559(tx), TxEnvelope::Eip4844(tx) => Self::EIP4844(tx), TxEnvelope::Eip7702(tx) => Self::EIP7702(tx), - _ => unreachable!(), } } } @@ -1647,9 +1646,12 @@ pub fn convert_to_anvil_receipt(receipt: AnyTransactionReceipt) -> Option Option TypedReceipt::Deposit(DepositReceipt { inner: receipt_with_bloom, deposit_nonce: other - .get_deserialized::("depositNonce") + .get_deserialized::("depositNonce") .transpose() .ok()? - .map(|v| v.to()), + .map(|v| v.into()), deposit_receipt_version: other - .get_deserialized::("depositReceiptVersion") + .get_deserialized::("depositReceiptVersion") .transpose() .ok()? - .map(|v| v.to()), + .map(|v| v.into()), }), _ => return None, }, @@ -1690,6 +1692,7 @@ pub fn convert_to_anvil_receipt(receipt: AnyTransactionReceipt) -> Option { self.sign_typed_data_v4(addr, &data).await.to_rpc_result() } - EthRequest::EthSendRawTransaction(tx) => { + EthRequest::EthSendRawTransaction(tx_req) => match tx_req { SeismicRawTxRequest::Bytes(tx) => { self.send_raw_transaction(tx).await.to_rpc_result() } SeismicRawTxRequest::TypedData(td) => { self.send_signed_typed_data_tx(td).await.to_rpc_result() } - } + }, EthRequest::EthSendRawTransactionSync(tx) => { // TODO: make this typed-data friendly self.send_raw_transaction_sync(tx).await.to_rpc_result() @@ -1260,7 +1256,7 @@ impl EthApi { "not available on past forked blocks".to_string(), )); } - return Ok(fork.call(&request, Some(number.into())).await?); + return Ok(fork.call(&seismic_request, Some(number.into())).await?); } let request = seismic_request.clone().inner.inner; @@ -1314,9 +1310,10 @@ impl EthApi { if tried_to_spoof_from { // We'll embed the original error's text (which may include // revert data) plus a multiline explanation: - Err(BlockchainError::Message(format!("Unsigned call failed: {orig}. The call included a non-zero 'from' address, which is not allowed in unsigned calls. If you need to set 'from', please use a signed call.", - orig = original_err - ))) + Err(BlockchainError::Message(format!( + "Unsigned call failed: {orig}. The call included a non-zero 'from' address, which is not allowed in unsigned calls. If you need to set 'from', please use a signed call.", + orig = original_err + ))) } else { // Otherwise bubble up the original error Err(original_err) @@ -2180,7 +2177,7 @@ impl EthApi { calldata: Bytes, expected_value: U256, ) -> Result { - let tx = TransactionRequest::default().with_to(token_address).with_input(calldata.clone()); + let tx = tx_builder().with_to(token_address).with_input(calldata.clone()).into(); // first collect all the slots that are used by the function call let access_list_result = @@ -2760,12 +2757,12 @@ impl EthApi { .coerce_status() && let Some(reason) = RevertDecoder::new().maybe_decode(&output, None) { - tx.other.insert( + tx.0.other.insert( "revertReason".to_string(), serde_json::to_value(reason).expect("Infallible"), ); } - tx.other.insert( + tx.0.other.insert( "output".to_string(), serde_json::to_value(output).expect("Infallible"), ); diff --git a/crates/anvil/src/eth/backend/db.rs b/crates/anvil/src/eth/backend/db.rs index 6667f5f92..8a5e3461f 100644 --- a/crates/anvil/src/eth/backend/db.rs +++ b/crates/anvil/src/eth/backend/db.rs @@ -7,7 +7,7 @@ use std::{ }; use alloy_consensus::Header; -use alloy_primitives::{Address, B256, Bytes, U256, keccak256, map::HashMap}; +use alloy_primitives::{Address, B256, Bytes, FixedBytes, U256, keccak256, map::HashMap}; use alloy_rpc_types::BlockId; use anvil_core::eth::{ block::Block, @@ -26,10 +26,7 @@ use revm::{ primitives::{FlaggedStorage, KECCAK_EMPTY, eip4844::BLOB_BASE_FEE_UPDATE_FRACTION_PRAGUE}, state::AccountInfo, }; -use serde::{ - Deserialize, Deserializer, Serialize, - de::{Error as DeError, MapAccess, Visitor}, -}; +use serde::{Deserialize, Deserializer, Serialize, de::Error as DeError}; use serde_json::Value; use crate::mem::storage::MinedTransaction; @@ -172,7 +169,7 @@ pub trait Db: ); for (k, v) in account.storage.into_iter() { - self.set_storage_at(addr, k, v.into())?; + self.set_storage_at(addr, k.into(), v.into())?; } } Ok(true) @@ -207,10 +204,10 @@ impl + Send + Sync + Clone + fmt::Debug> D fn set_storage_at( &mut self, address: Address, - slot: U256, + slot: FixedBytes<32>, val: FlaggedStorage, ) -> DatabaseResult<()> { - self.insert_account_storage(address, slot, val) + self.insert_account_storage(address, slot.into(), val) } fn insert_block_hash(&mut self, number: U256, hash: B256) { diff --git a/crates/anvil/src/eth/backend/env.rs b/crates/anvil/src/eth/backend/env.rs index 15b4a6c78..29b26e9ad 100644 --- a/crates/anvil/src/eth/backend/env.rs +++ b/crates/anvil/src/eth/backend/env.rs @@ -25,8 +25,13 @@ impl Env { is_optimism: bool, is_celo: bool, ) -> Self { - #[rustfmt::skip] - Self { evm_env: EvmEnv { cfg_env: cfg, block_env: block }, tx, is_seismic: true, is_optimism, is_celo } + Self { + evm_env: EvmEnv { cfg_env: cfg, block_env: block }, + tx, + is_seismic: true, + is_optimism, + is_celo, + } } } diff --git a/crates/anvil/src/eth/backend/executor.rs b/crates/anvil/src/eth/backend/executor.rs index 687d93836..bdd722834 100644 --- a/crates/anvil/src/eth/backend/executor.rs +++ b/crates/anvil/src/eth/backend/executor.rs @@ -2,16 +2,12 @@ use crate::{ PrecompileFactory, eth::{ backend::{ - cheats::{CheatEcrecover, CheatsManager}, - db::Db, - env::Env, - mem::op_haltreason_to_instruction_result, + cheats::CheatsManager, db::Db, env::Env, mem::op_haltreason_to_instruction_result, validate::TransactionValidator, }, error::InvalidTransactionError, pool::transactions::PoolTransaction, }, - evm::celo_precompile, inject_precompiles, mem::inspector::AnvilInspector, }; @@ -19,12 +15,7 @@ use alloy_consensus::{ Receipt, ReceiptWithBloom, constants::EMPTY_WITHDRAWALS, proofs::calculate_receipt_root, }; use alloy_eips::{eip7685::EMPTY_REQUESTS_HASH, eip7840::BlobParams}; -use alloy_evm::{ - EthEvm, Evm, - eth::EthEvmContext, - precompiles::{DynPrecompile, Precompile, PrecompilesMap}, -}; -use alloy_op_evm::OpEvm; +use alloy_evm::{Evm, eth::EthEvmContext}; use alloy_primitives::{B256, Bloom, BloomInput, Log}; use anvil_core::eth::{ block::{Block, BlockInfo, PartialHeader}, @@ -36,14 +27,13 @@ use foundry_evm::{ backend::DatabaseError, traces::{CallTraceDecoder, CallTraceNode}, }; -use foundry_evm_core::{either_evm::EitherEvm, precompiles::EC_RECOVER}; -use op_revm::{L1BlockInfo, OpContext, precompiles::OpPrecompiles}; +use foundry_evm_core::either_evm::EitherEvm; +use op_revm::OpContext; use revm::{ Database, DatabaseRef, Inspector, Journal, - context::{Block as RevmBlock, BlockEnv, Cfg, CfgEnv, Evm as RevmEvm, JournalTr, LocalContext}, + context::{Block as RevmBlock, BlockEnv, Cfg, JournalTr, LocalContext}, context_interface::result::{EVMError, ExecutionResult, Output}, database::WrapDatabaseRef, - handler::{EthPrecompiles, instructions::EthInstructions}, interpreter::InstructionResult, precompile::{ PrecompileSpecId, Precompiles, @@ -377,10 +367,12 @@ impl Iterator for &mut TransactionExec } if self.celo { + /* evm.precompiles_mut() .apply_precompile(&celo_precompile::CELO_TRANSFER_ADDRESS, move |_| { Some(celo_precompile::precompile()) }); + */ } if let Some(factory) = &self.precompile_factory { @@ -389,6 +381,8 @@ impl Iterator for &mut TransactionExec let cheats = Arc::new(self.cheats.clone()); if cheats.has_recover_overrides() { + // NOTE: seismic-anvil does not support this; typing too annoying + /* let cheat_ecrecover = CheatEcrecover::new(Arc::clone(&cheats)); evm.precompiles_mut().apply_precompile(&EC_RECOVER, move |_| { Some(DynPrecompile::new_stateful( @@ -396,6 +390,7 @@ impl Iterator for &mut TransactionExec move |input| cheat_ecrecover.call(input), )) }); + */ } trace!(target: "backend", "[{:?}] executing", transaction.hash()); @@ -491,7 +486,7 @@ pub fn new_evm_with_inspector( ) -> EitherEvm>> where DB: Database + Debug, - I: Inspector> + Inspector>, + I: Inspector> + Inspector> + Inspector>, { let spec = env.evm_env.cfg_env.spec; let eth_context = SeismicContext { @@ -593,7 +588,8 @@ pub fn new_evm_with_inspector_ref<'db, DB, I>( where DB: DatabaseRef + Debug + 'db + ?Sized, I: Inspector>> - + Inspector>>, + + Inspector>> + + Inspector>>, WrapDatabaseRef<&'db DB>: Database, { new_evm_with_inspector(WrapDatabaseRef(db), env, inspector) diff --git a/crates/anvil/src/eth/backend/fork.rs b/crates/anvil/src/eth/backend/fork.rs index c00bc9b05..1d277e563 100644 --- a/crates/anvil/src/eth/backend/fork.rs +++ b/crates/anvil/src/eth/backend/fork.rs @@ -15,8 +15,7 @@ use alloy_provider::{ use alloy_rpc_types::{ BlockId, BlockNumberOrTag as BlockNumber, BlockTransactions, EIP1186AccountProofResponse, FeeHistory, Filter, Log, - request::TransactionRequest, - simulate::{SimulatePayload, SimulatedBlock}, + simulate::SimulatedBlock, trace::{ geth::{GethDebugTracingOptions, GethTrace}, parity::LocalizedTransactionTrace as Trace, diff --git a/crates/anvil/src/eth/backend/mem/fork_db.rs b/crates/anvil/src/eth/backend/mem/fork_db.rs index 56536c947..ba21bae1e 100644 --- a/crates/anvil/src/eth/backend/mem/fork_db.rs +++ b/crates/anvil/src/eth/backend/mem/fork_db.rs @@ -2,7 +2,7 @@ use crate::eth::backend::db::{ Db, MaybeForkedDatabase, MaybeFullDatabase, SerializableAccountRecord, SerializableBlock, SerializableHistoricalStates, SerializableState, SerializableTransaction, StateDb, }; -use alloy_primitives::{Address, B256, U256, map::HashMap}; +use alloy_primitives::{Address, B256, FixedBytes, U256, map::HashMap}; use alloy_rpc_types::BlockId; use foundry_evm::{ backend::{BlockchainDb, DatabaseResult, RevertStateSnapshotAction, StateSnapshot}, @@ -24,7 +24,7 @@ impl Db for ForkedDatabase { fn set_storage_at( &mut self, address: Address, - slot: U256, + slot: FixedBytes<32>, val: revm::primitives::FlaggedStorage, ) -> DatabaseResult<()> { // this ensures the account is loaded first diff --git a/crates/anvil/src/eth/backend/mem/in_memory_db.rs b/crates/anvil/src/eth/backend/mem/in_memory_db.rs index 43d7ff0f1..9578a8136 100644 --- a/crates/anvil/src/eth/backend/mem/in_memory_db.rs +++ b/crates/anvil/src/eth/backend/mem/in_memory_db.rs @@ -28,10 +28,10 @@ impl Db for MemDb { fn set_storage_at( &mut self, address: Address, - slot: U256, + slot: B256, val: revm::primitives::FlaggedStorage, ) -> DatabaseResult<()> { - self.inner.insert_account_storage(address, slot, val) + self.inner.insert_account_storage(address, slot.into(), val) } fn insert_block_hash(&mut self, number: U256, hash: B256) { @@ -173,7 +173,9 @@ mod tests { nonce: 1234, }, ); - dump_db.set_storage_at(test_addr, U256::from(1234567), U256::from(1).into()).unwrap(); + dump_db + .set_storage_at(test_addr, U256::from(1234567).into(), U256::from(1).into()) + .unwrap(); // blocks dumping/loading tested in storage.rs let state = dump_db @@ -217,8 +219,8 @@ mod tests { }, ); - db.set_storage_at(test_addr, U256::from(1234567), U256::from(1).into()).unwrap(); - db.set_storage_at(test_addr, U256::from(1234568), U256::from(2).into()).unwrap(); + db.set_storage_at(test_addr, U256::from(1234567).into(), U256::from(1).into()).unwrap(); + db.set_storage_at(test_addr, U256::from(1234568).into(), U256::from(2).into()).unwrap(); let mut new_state = SerializableState::default(); diff --git a/crates/anvil/src/eth/backend/mem/mod.rs b/crates/anvil/src/eth/backend/mem/mod.rs index ced56c505..5623db801 100644 --- a/crates/anvil/src/eth/backend/mem/mod.rs +++ b/crates/anvil/src/eth/backend/mem/mod.rs @@ -7,7 +7,7 @@ use crate::{ config::PruneStateHistoryConfig, eth::{ backend::{ - cheats::{CheatEcrecover, CheatsManager}, + cheats::CheatsManager, db::{Db, MaybeFullDatabase, SerializableState}, env::Env, executor::{ExecutedTransactions, TransactionExecutor}, @@ -36,8 +36,8 @@ use crate::{ }; use alloy_chains::NamedChain; use alloy_consensus::{ - Account, Blob, BlockHeader, EnvKzgSettings, Header, Receipt, ReceiptWithBloom, Signed, - Transaction as TransactionTrait, TxEnvelope, + Account, Blob, BlockHeader, EnvKzgSettings, EthereumTxEnvelope, Header, Receipt, + ReceiptWithBloom, Signed, Transaction as TransactionTrait, proofs::{calculate_receipt_root, calculate_transaction_root}, transaction::Recovered, }; @@ -49,7 +49,6 @@ use alloy_evm::{ Database, Evm, eth::EthEvmContext, overrides::{OverrideBlockHashes, apply_state_overrides}, - precompiles::{DynPrecompile, Precompile, PrecompilesMap}, }; use alloy_network::{ AnyHeader, AnyRpcHeader, AnyTxType, UnknownTxEnvelope, UnknownTypedTransaction, @@ -61,7 +60,7 @@ use alloy_primitives::{ use alloy_rpc_types::{ AccessList, Block as AlloyBlock, BlockId, BlockNumberOrTag as BlockNumber, BlockTransactions, EIP1186AccountProofResponse as AccountProof, EIP1186StorageProof as StorageProof, Filter, - Header as AlloyHeader, Index, Log, Transaction, TransactionReceipt, + Header as AlloyHeader, Index, Log, Transaction, anvil::Forking, serde_helpers::JsonStorageKey, simulate::{SimCallResult, SimulatedBlock}, @@ -83,8 +82,7 @@ use anvil_core::eth::{ block::{Block, BlockInfo}, transaction::{ DepositReceipt, MaybeImpersonatedTransaction, PendingTransaction, ReceiptResponse, - TransactionInfo, TypedReceipt, TypedTransaction, has_optimism_fields, - transaction_request_to_typed, + TransactionInfo, TypedReceipt, TypedTransaction, transaction_request_to_typed, }, wallet::{Capabilities, DelegationCapability, WalletCapabilities}, }; @@ -100,12 +98,10 @@ use foundry_evm::{ traces::{CallTraceDecoder, TracingInspectorConfig}, utils::{get_blob_base_fee_update_fraction, get_blob_base_fee_update_fraction_by_spec_id}, }; -use foundry_evm_core::{either_evm::EitherEvm, precompiles::EC_RECOVER}; +use foundry_evm_core::either_evm::EitherEvm; use futures::channel::mpsc::{UnboundedSender, unbounded}; use op_alloy_consensus::DEPOSIT_TX_TYPE_ID; -use op_revm::{ - OpContext, OpHaltReason, OpTransaction, transaction::deposit::DepositTransactionParts, -}; +use op_revm::OpContext; use parking_lot::{Mutex, RwLock}; use revm::{ DatabaseCommit, Inspector, @@ -121,7 +117,7 @@ use revm::{ secp256r1::{P256VERIFY, P256VERIFY_ADDRESS, P256VERIFY_BASE_GAS_FEE}, u64_to_address, }, - primitives::{KECCAK_EMPTY, hardfork::SpecId}, + primitives::{KECCAK_EMPTY, hardfork::SpecId as RevmSpecId}, state::AccountInfo, }; use std::{ @@ -136,8 +132,7 @@ use std::{ use storage::{Blockchain, DEFAULT_HISTORY_LIMIT, MinedTransaction}; use tokio::sync::RwLock as AsyncRwLock; -use super::executor::new_evm_with_inspector_ref; - +use alloy_rpc_types::TransactionRequest as AlloyTransactionRequest; use seismic_prelude::foundry::{ AnyRpcBlock, AnyRpcTransaction, AnyTxEnvelope, EthereumWallet, OpHaltReason, OpTransaction, SeismicContext, SeismicPrecompiles, SimBlock, SimulatePayload, SpecId, TransactionReceipt, @@ -674,8 +669,13 @@ impl Backend { // Clear all storage and reinitialize with genesis let base_fee = if self.fees.is_eip1559() { Some(self.fees.base_fee()) } else { None }; - *self.blockchain.storage.write() = - BlockchainStorage::new(&env, spec_id, base_fee, genesis_timestamp, genesis_number); + *self.blockchain.storage.write() = BlockchainStorage::new( + &env, + spec_id.into_eth_spec(), + base_fee, + genesis_timestamp, + genesis_number, + ); self.states.write().clear(); // Clear the database @@ -857,17 +857,10 @@ impl Backend { self.env.read().is_celo } - // TODO(usm) - /* - pub fn precompiles(&self) -> Vec
{ - get_precompiles_for(self.env.read().evm_env.cfg_env.spec.into_eth_spec()) - } - */ - /// Returns the precompiles for the current spec. pub fn precompiles(&self) -> BTreeMap { let spec_id = self.env.read().evm_env.cfg_env.spec; - let precompiles = Precompiles::new(PrecompileSpecId::from_spec_id(spec_id)); + let precompiles = Precompiles::new(PrecompileSpecId::from_spec_id(spec_id.into_eth_spec())); let mut precompiles_map = BTreeMap::::default(); for (address, precompile) in precompiles.inner() { @@ -903,11 +896,11 @@ impl Backend { let spec_id = self.env.read().evm_env.cfg_env.spec; - if spec_id >= SpecId::CANCUN { + if spec_id.into_eth_spec() >= RevmSpecId::CANCUN { system_contracts.extend(SystemContract::cancun()); } - if spec_id >= SpecId::PRAGUE { + if spec_id.into_eth_spec() >= RevmSpecId::PRAGUE { system_contracts.extend(SystemContract::prague(None)); } @@ -918,11 +911,11 @@ impl Backend { pub fn blob_params(&self) -> BlobParams { let spec_id = self.env.read().evm_env.cfg_env.spec.into_eth_spec(); - if spec_id >= SpecId::OSAKA { + if spec_id >= RevmSpecId::OSAKA { return BlobParams::osaka(); } - if spec_id >= SpecId::PRAGUE { + if spec_id >= RevmSpecId::PRAGUE { return BlobParams::prague(); } @@ -1258,11 +1251,16 @@ impl Backend { db: &'db DB, env: &Env, inspector: &'db mut I, - ) -> EitherEvm, &'db mut I, PrecompilesMap> + ) -> EitherEvm< + WrapDatabaseRef<&'db DB>, + &'db mut I, + SeismicPrecompiles>>, + > where - DB: DatabaseRef + ?Sized, + DB: DatabaseRef + Debug + 'db + ?Sized, I: Inspector>> - + Inspector>>, + + Inspector>> + + Inspector>>, WrapDatabaseRef<&'db DB>: Database, { let mut evm = new_evm_with_inspector_ref(db, env, inspector); @@ -1272,10 +1270,12 @@ impl Backend { } if self.is_celo() { + /* evm.precompiles_mut() .apply_precompile(&celo_precompile::CELO_TRANSFER_ADDRESS, move |_| { Some(celo_precompile::precompile()) }); + */ } if let Some(factory) = &self.precompile_factory { @@ -1284,13 +1284,15 @@ impl Backend { let cheats = Arc::new(self.cheats.clone()); if cheats.has_recover_overrides() { - let cheat_ecrecover = CheatEcrecover::new(Arc::clone(&cheats)); + // NOTE: seismic-anvil does not support this; typing too annoying + /* evm.precompiles_mut().apply_precompile(&EC_RECOVER, move |_| { Some(DynPrecompile::new_stateful( cheat_ecrecover.precompile_id().clone(), move |input| cheat_ecrecover.call(input), )) }); + */ } evm @@ -1579,7 +1581,9 @@ impl Backend { self.fees.set_blob_excess_gas_and_price(BlobExcessGasAndPrice::new( next_block_excess_blob_gas, - get_blob_base_fee_update_fraction_by_spec_id(*self.env.read().evm_env.spec_id()), + get_blob_base_fee_update_fraction_by_spec_id( + self.env.read().evm_env.spec_id().into_eth_spec(), + ), )); // notify all listeners @@ -1634,12 +1638,12 @@ impl Backend { let (exit, out, gas, state) = { let mut cache_db = CacheDB::new(state); if let Some(state_overrides) = overrides.state { - state::apply_state_overrides(state_overrides.into_iter().collect(), &mut cache_db)?; + apply_state_overrides(state_overrides.into_iter().collect(), &mut cache_db)?; } if let Some(block_overrides) = overrides.block { - state::apply_block_overrides(*block_overrides, &mut cache_db, &mut block); + alloy_evm::overrides::apply_block_overrides(*block_overrides, &mut cache_db, &mut block); } - self.seismic_call_with_state(cache_db.as_dyn(), request, fee_details, block) + self.seismic_call_with_state(&cache_db, request, fee_details, block) }?; trace!(target: "backend", "seismic call return {:?} out: {:?} gas {} on block {}", exit, out, gas, block_number); Ok((exit, out, gas, state)) @@ -1677,7 +1681,6 @@ impl Backend { nonce, sidecar: _, chain_id, - transaction_type, .. // Rest of the gas fees related fields are taken from `fee_details` }, seismic_elements: _, @@ -3381,9 +3384,8 @@ impl Backend { .zip(storage_proofs) .map(|(key, proof)| { let storage_key: U256 = key.into(); - let value = value.into(); let value = account.storage.get(&storage_key).copied().unwrap_or_default(); - StorageProof { key: JsonStorageKey::Hash(key), value, proof } + StorageProof { key: JsonStorageKey::Hash(key), value: value.into(), proof } }) .collect(), }; @@ -3554,7 +3556,9 @@ impl TransactionValidator for Backend { } // EIP-4844 structural validation - if env.evm_env.cfg_env.spec.into_eth_spec() >= RevmSpecId::CANCUN && tx.transaction.is_eip4844() { + if env.evm_env.cfg_env.spec.into_eth_spec() >= RevmSpecId::CANCUN + && tx.transaction.is_eip4844() + { // Heavy (blob validation) checks let blob_tx = match &tx.transaction { TypedTransaction::EIP4844(tx) => tx.tx(), @@ -3611,7 +3615,7 @@ impl TransactionValidator for Backend { } // EIP-1559 fee validation (London hard fork and later). - if env.evm_env.cfg_env.spec >= SpecId::LONDON { + if env.evm_env.cfg_env.spec.into_eth_spec() >= RevmSpecId::LONDON { if tx.gas_price() < env.evm_env.block_env.basefee.into() && !is_deposit_tx { warn!(target: "backend", "max fee per gas={}, too low, block basefee={}",tx.gas_price(), env.evm_env.block_env.basefee); return Err(InvalidTransactionError::FeeCapTooLow); @@ -3627,7 +3631,7 @@ impl TransactionValidator for Backend { } // EIP-4844 blob fee validation - if env.evm_env.cfg_env.spec >= SpecId::CANCUN + if env.evm_env.cfg_env.spec.into_eth_spec() >= RevmSpecId::CANCUN && tx.transaction.is_eip4844() && let Some(max_fee_per_blob_gas) = tx.essentials().max_fee_per_blob_gas && let Some(blob_gas_and_price) = &env.evm_env.block_env.blob_excess_gas_and_price diff --git a/crates/anvil/src/eth/backend/mem/state.rs b/crates/anvil/src/eth/backend/mem/state.rs index 6217f3c4f..ebd7fbe8b 100644 --- a/crates/anvil/src/eth/backend/mem/state.rs +++ b/crates/anvil/src/eth/backend/mem/state.rs @@ -5,6 +5,8 @@ use alloy_rlp::Encodable; use alloy_trie::{HashBuilder, Nibbles}; use revm::{database::DbAccount, state::AccountInfo}; +use alloy_primitives::FlaggedStorage; + pub fn build_root(values: impl IntoIterator, bool)>) -> B256 { let mut builder = HashBuilder::default(); for (key, value, is_private) in values { diff --git a/crates/anvil/src/eth/error.rs b/crates/anvil/src/eth/error.rs index 8c87b9f3c..fb40430c2 100644 --- a/crates/anvil/src/eth/error.rs +++ b/crates/anvil/src/eth/error.rs @@ -348,7 +348,7 @@ impl From for InvalidTransactionError { InvalidTransaction::NonceTooHigh { .. } => Self::NonceTooHigh, InvalidTransaction::NonceTooLow { .. } => Self::NonceTooLow, InvalidTransaction::AccessListNotSupported => Self::AccessListNotSupported, - InvalidTransaction::BlobGasPriceGreaterThanMax => Self::BlobFeeCapTooLow, + InvalidTransaction::BlobGasPriceGreaterThanMax { .. } => Self::BlobFeeCapTooLow, InvalidTransaction::BlobVersionedHashesNotSupported => { Self::BlobVersionedHashesNotSupported } diff --git a/crates/anvil/src/eth/otterscan/api.rs b/crates/anvil/src/eth/otterscan/api.rs index 10c99ca61..4b386acb0 100644 --- a/crates/anvil/src/eth/otterscan/api.rs +++ b/crates/anvil/src/eth/otterscan/api.rs @@ -4,10 +4,7 @@ use crate::eth::{ macros::node_info, }; use alloy_consensus::Transaction as TransactionTrait; -use alloy_network::{ - AnyHeader, AnyRpcBlock, AnyRpcHeader, AnyRpcTransaction, AnyTxEnvelope, BlockResponse, - TransactionResponse, -}; +use alloy_network::{AnyHeader, AnyRpcHeader, BlockResponse, TransactionResponse}; use alloy_primitives::{Address, B256, Bytes, U256}; use alloy_rpc_types::{ Block, BlockId, BlockNumberOrTag as BlockNumber, BlockTransactions, diff --git a/crates/anvil/src/evm.rs b/crates/anvil/src/evm.rs index 752300af8..e7aba71ef 100644 --- a/crates/anvil/src/evm.rs +++ b/crates/anvil/src/evm.rs @@ -1,8 +1,4 @@ -use alloy_evm::{ - Database, Evm, - eth::EthEvmContext, - precompiles::{DynPrecompile, PrecompileInput, PrecompilesMap}, -}; +use alloy_evm::{Database, Evm, eth::EthEvmContext}; use foundry_evm_core::either_evm::EitherEvm; use op_revm::OpContext; @@ -20,34 +16,23 @@ pub trait PrecompileFactory: Send + Sync + Unpin + Debug { fn precompiles(&self) -> Vec<(Precompile, u64)>; } -#[allow(unused_variables)] -fn apply_precompile( - p: &mut SeismicPrecompiles>, - address: &alloy_primitives::Address, - f: F, -) where - F: FnOnce(Option) -> Option, -{ - todo!("Find a way to add this precompile to SeismicPrecompiles") -} - /// Inject precompiles into the EVM dynamically. pub fn inject_precompiles( evm: &mut EitherEvm>>, precompiles: Vec<(Precompile, u64)>, ) where DB: Database, - /* - I: Inspector> + Inspector> - */ - I: Inspector>, + I: Inspector> + Inspector> + Inspector>, { - for (precompile, gas) in precompiles { + for (precompile, _gas) in precompiles { + /* let addr = *precompile.address(); let func = *precompile.precompile(); evm.precompiles_mut().apply_precompile(&addr, move |_| { Some(DynPrecompile::from(move |input: PrecompileInput<'_>| func(input.data, gas))) }); + */ + evm.precompiles_mut().apply_precompile(precompile); } } diff --git a/crates/anvil/src/evm/celo_precompile.rs b/crates/anvil/src/evm/celo_precompile.rs index 6744aea8b..e1845afc0 100644 --- a/crates/anvil/src/evm/celo_precompile.rs +++ b/crates/anvil/src/evm/celo_precompile.rs @@ -25,9 +25,11 @@ pub static PRECOMPILE_ID_CELO_TRANSFER: PrecompileId = PrecompileId::Custom(Cow::Borrowed("celo transfer")); /// Gas cost for Celo transfer precompile. +#[allow(dead_code)] const CELO_TRANSFER_GAS_COST: u64 = 9000; /// Returns the Celo native transfer. +#[allow(dead_code)] pub fn precompile() -> DynPrecompile { DynPrecompile::new_stateful(PRECOMPILE_ID_CELO_TRANSFER.clone(), celo_transfer_precompile) } diff --git a/crates/anvil/src/hardfork.rs b/crates/anvil/src/hardfork.rs index 174179aac..223d88d00 100644 --- a/crates/anvil/src/hardfork.rs +++ b/crates/anvil/src/hardfork.rs @@ -1,3 +1,5 @@ +use std::str::FromStr; + use alloy_hardforks::EthereumHardfork; use alloy_op_hardforks::OpHardfork::{self}; use alloy_rpc_types::BlockNumberOrTag; @@ -67,6 +69,7 @@ pub fn spec_id_from_ethereum_hardfork(hardfork: EthereumHardfork) -> SpecId { | EthereumHardfork::Bpo3 | EthereumHardfork::Bpo4 | EthereumHardfork::Bpo5 => unimplemented!(), + _ => unimplemented!(), } } @@ -83,6 +86,7 @@ pub fn spec_id_from_optimism_hardfork(hardfork: OpHardfork) -> OpSpecId { OpHardfork::Isthmus => OpSpecId::ISTHMUS, OpHardfork::Interop => OpSpecId::INTEROP, OpHardfork::Jovian => OpSpecId::ISTHMUS, + _ => unimplemented!(), } } @@ -112,7 +116,7 @@ impl FromStr for SeismicHardfork { let hardfork = match s.as_str() { "mercury" => Self::Mercury, "latest" => Self::Latest, - _ => bail!("Unknown hardfork {s}"), + _ => eyre::bail!("Unknown hardfork {s}"), }; Ok(hardfork) } diff --git a/crates/anvil/src/lib.rs b/crates/anvil/src/lib.rs index a23b414ef..05df57992 100644 --- a/crates/anvil/src/lib.rs +++ b/crates/anvil/src/lib.rs @@ -40,6 +40,8 @@ use tokio::{ task::{JoinError, JoinHandle}, }; +use alloy_op_evm as _; + /// contains the background service that drives the node mod service; @@ -199,7 +201,7 @@ pub async fn try_spawn(mut config: NodeConfig) -> Result<(EthApi, NodeHandle)> { let fee_history_cache = Arc::new(Mutex::new(Default::default())); let fee_history_service = FeeHistoryService::new( - match backend.spec_id() { + match backend.spec_id().into_eth_spec() { SpecId::OSAKA => BlobParams::osaka(), SpecId::PRAGUE => BlobParams::prague(), _ => BlobParams::cancun(), diff --git a/crates/anvil/tests/it/anvil.rs b/crates/anvil/tests/it/anvil.rs index 2721c3516..a4832ab65 100644 --- a/crates/anvil/tests/it/anvil.rs +++ b/crates/anvil/tests/it/anvil.rs @@ -6,10 +6,11 @@ use alloy_hardforks::EthereumHardfork; use alloy_network::{ReceiptResponse, TransactionBuilder}; use alloy_primitives::{Address, B256, hex}; use alloy_provider::Provider; -use alloy_rpc_types::TransactionRequest; use alloy_sol_types::SolCall; use anvil::{NodeConfig, spawn}; +use seismic_prelude::foundry::tx_builder; + #[tokio::test(flavor = "multi_thread")] async fn test_can_change_mining_mode() { let (api, handle) = spawn(NodeConfig::test()).await; @@ -156,7 +157,7 @@ async fn test_anvil_recover_signature() { "0x60808060405234601557610125908161001a8239f35b5f80fdfe60808060405260043610156011575f80fd5b5f3560e01c63bff0b743146023575f80fd5b3460eb5760a036600319011260eb5760243560ff811680910360eb576084356001600160a01b038116929083900360eb5760805f916020936004358252848201526044356040820152606435606082015282805260015afa1560e0575f516001600160a01b031603609057005b60405162461bcd60e51b815260206004820152602260248201527f65637265636f766572206661696c65643a2061646472657373206d69736d61746044820152610c6d60f31b6064820152608490fd5b6040513d5f823e3d90fd5b5f80fdfea264697066735822122006368b42bca31c97f2c409a1cc5186dc899d4255ecc28db7bbb0ad285dc82ae464736f6c634300081c0033", ).unwrap(); - let tx = TransactionRequest::default().with_deploy_code(bytecode); + let tx = tx_builder().with_deploy_code(bytecode).into(); let receipt = provider.send_transaction(tx.into()).await.unwrap().get_receipt().await.unwrap(); let contract_address = receipt.contract_address().unwrap(); let contract = TestRecover::new(contract_address, &provider); @@ -189,7 +190,7 @@ async fn test_fake_signature_transaction() { "0x60808060405234601557610125908161001a8239f35b5f80fdfe60808060405260043610156011575f80fd5b5f3560e01c63bff0b743146023575f80fd5b3460eb5760a036600319011260eb5760243560ff811680910360eb576084356001600160a01b038116929083900360eb5760805f916020936004358252848201526044356040820152606435606082015282805260015afa1560e0575f516001600160a01b031603609057005b60405162461bcd60e51b815260206004820152602260248201527f65637265636f766572206661696c65643a2061646472657373206d69736d61746044820152610c6d60f31b6064820152608490fd5b6040513d5f823e3d90fd5b5f80fdfea264697066735822122006368b42bca31c97f2c409a1cc5186dc899d4255ecc28db7bbb0ad285dc82ae464736f6c634300081c0033", ).unwrap(); - let tx = TransactionRequest::default().with_deploy_code(bytecode); + let tx = tx_builder().with_deploy_code(bytecode).into(); let _receipt = provider.send_transaction(tx.into()).await.unwrap().get_receipt().await.unwrap(); let sig = alloy_primitives::hex::decode("11".repeat(65)).unwrap(); @@ -200,7 +201,7 @@ async fn test_fake_signature_transaction() { let expected = alloy_primitives::address!("0x1234567890123456789012345678901234567890"); api.anvil_impersonate_signature(sig.clone().into(), expected).await.unwrap(); let calldata = TestRecover::testRecoverCall { hash: fake_hash, v, r, s, expected }.abi_encode(); - let tx = TransactionRequest::default().with_input(calldata); + let tx = tx_builder().with_input(calldata).into(); let pending = provider.send_transaction(tx.into()).await.unwrap(); let result = pending.get_receipt().await; diff --git a/crates/anvil/tests/it/anvil_api.rs b/crates/anvil/tests/it/anvil_api.rs index 39b89f748..18c9bdd21 100644 --- a/crates/anvil/tests/it/anvil_api.rs +++ b/crates/anvil/tests/it/anvil_api.rs @@ -38,7 +38,7 @@ use std::{ time::{Duration, SystemTime}, }; -use seismic_prelude::foundry::{tx_builder, EthereumWallet}; +use seismic_prelude::foundry::{EthereumWallet, tx_builder}; #[tokio::test(flavor = "multi_thread")] async fn can_set_gas_price() { @@ -1080,8 +1080,8 @@ async fn test_anvil_reset_non_fork() { // Send a transaction let to = Address::random(); let val = U256::from(1337); - let tx = TransactionRequest::default().with_from(init_accounts[0]).with_to(to).with_value(val); - let tx = WithOtherFields::new(tx); + let tx = tx_builder().with_from(init_accounts[0]).with_to(to).with_value(val); + let tx = WithOtherFields::new(tx.into()); let _ = provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); diff --git a/crates/anvil/tests/it/api.rs b/crates/anvil/tests/it/api.rs index 899451292..abaa47ccb 100644 --- a/crates/anvil/tests/it/api.rs +++ b/crates/anvil/tests/it/api.rs @@ -10,11 +10,8 @@ use alloy_primitives::{ Address, B256, ChainId, U256, b256, bytes, map::{AddressHashMap, B256HashMap, HashMap}, }; -use alloy_provider::Provider; -use alloy_rpc_types::{ - BlockId, BlockNumberOrTag, BlockTransactions, request::TransactionRequest, - state::AccountOverride, -}; +use alloy_provider::{Provider, SendableTx}; +use alloy_rpc_types::{BlockId, BlockNumberOrTag, BlockTransactions, state::AccountOverride}; use alloy_serde::WithOtherFields; use anvil::{CHAIN_ID, EthereumHardfork, NodeConfig, eth::api::CLIENT_VERSION, spawn}; use foundry_test_utils::rpc; @@ -23,7 +20,7 @@ use std::time::Duration; use url::Url; use seismic_prelude::foundry::{ - sfoundry_signed_provider, tx_builder, EthereumWallet, SeismicProviderExt, + EthereumWallet, SeismicProviderExt, sfoundry_signed_provider, tx_builder, }; #[tokio::test(flavor = "multi_thread")] @@ -456,11 +453,8 @@ async fn can_send_tx_sync() { let logger_bytecode = bytes!("66365f5f37365fa05f5260076019f3"); let from = wallets[0].address(); - let tx = TransactionRequest::default() - .with_from(from) - .into_create() - .with_nonce(0) - .with_input(logger_bytecode); + let tx = + tx_builder().with_from(from).into_create().with_nonce(0).with_input(logger_bytecode).into(); let receipt = api.send_transaction_sync(WithOtherFields::new(tx)).await.unwrap(); assert_eq!(receipt.from, wallets[0].address()); diff --git a/crates/anvil/tests/it/eip4844.rs b/crates/anvil/tests/it/eip4844.rs index 8dbafdfaa..17c4acb95 100644 --- a/crates/anvil/tests/it/eip4844.rs +++ b/crates/anvil/tests/it/eip4844.rs @@ -12,7 +12,7 @@ use alloy_rpc_types::{BlockId, TransactionRequest}; use alloy_serde::WithOtherFields; use anvil::{NodeConfig, spawn}; -use seismic_prelude::foundry::{tx_builder, EthereumWallet}; +use seismic_prelude::foundry::{EthereumWallet, tx_builder}; #[tokio::test(flavor = "multi_thread")] async fn can_send_eip4844_transaction() { @@ -365,7 +365,7 @@ async fn can_get_blobs_by_versioned_hash() { let sidecar: SidecarBuilder = SidecarBuilder::from_slice(b"Hello World"); let sidecar = sidecar.build().unwrap(); - let tx = TransactionRequest::default() + let tx = tx_builder() .with_from(from) .with_to(to) .with_nonce(0) @@ -373,7 +373,8 @@ async fn can_get_blobs_by_versioned_hash() { .with_max_fee_per_gas(eip1559_est.max_fee_per_gas) .with_max_priority_fee_per_gas(eip1559_est.max_priority_fee_per_gas) .with_blob_sidecar(sidecar.clone()) - .value(U256::from(5)); + .with_value(U256::from(5)) + .into(); let mut tx = WithOtherFields::new(tx); @@ -403,7 +404,7 @@ async fn can_get_blobs_by_tx_hash() { let sidecar: SidecarBuilder = SidecarBuilder::from_slice(b"Hello World"); let sidecar = sidecar.build().unwrap(); - let tx = TransactionRequest::default() + let mut tx = tx_builder() .with_from(from) .with_to(to) .with_nonce(0) @@ -411,13 +412,12 @@ async fn can_get_blobs_by_tx_hash() { .with_max_fee_per_gas(eip1559_est.max_fee_per_gas) .with_max_priority_fee_per_gas(eip1559_est.max_priority_fee_per_gas) .with_blob_sidecar(sidecar.clone()) - .value(U256::from(5)); - - let mut tx = WithOtherFields::new(tx); + .with_value(U256::from(5)) + .into(); tx.populate_blob_hashes(); - let receipt = provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); + let receipt = provider.send_transaction(tx.into()).await.unwrap().get_receipt().await.unwrap(); let hash = receipt.transaction_hash; api.anvil_set_auto_mine(true).await.unwrap(); let blobs = api.anvil_get_blob_by_tx_hash(hash).unwrap().unwrap(); diff --git a/crates/anvil/tests/it/fork.rs b/crates/anvil/tests/it/fork.rs index 94238e91f..703189899 100644 --- a/crates/anvil/tests/it/fork.rs +++ b/crates/anvil/tests/it/fork.rs @@ -34,7 +34,7 @@ use std::{ time::Duration, }; -use seismic_prelude::foundry::{tx_builder, EthereumWallet}; +use seismic_prelude::foundry::{EthereumWallet, tx_builder}; const BLOCK_NUMBER: u64 = 14_608_400u64; const DEAD_BALANCE_AT_BLOCK_NUMBER: u128 = 12_556_069_338_441_120_059_867u128; diff --git a/crates/anvil/tests/it/gas.rs b/crates/anvil/tests/it/gas.rs index 4dc3c925c..52586f47b 100644 --- a/crates/anvil/tests/it/gas.rs +++ b/crates/anvil/tests/it/gas.rs @@ -8,7 +8,7 @@ use alloy_rpc_types::BlockId; use alloy_serde::WithOtherFields; use anvil::{NodeConfig, eth::fees::INITIAL_BASE_FEE, spawn}; -use seismic_prelude::foundry::{tx_builder, EthereumWallet}; +use seismic_prelude::foundry::{EthereumWallet, tx_builder}; const GAS_TRANSFER: u64 = 21_000; @@ -226,30 +226,31 @@ async fn test_estimate_gas_empty_data() { let from = accounts[0]; let to = accounts[1]; - let tx_without_data = - TransactionRequest::default().with_from(from).with_to(to).with_value(U256::from(1)); + let tx_without_data = tx_builder().with_from(from).with_to(to).with_value(U256::from(1)).into(); let gas_without_data = api .estimate_gas(WithOtherFields::new(tx_without_data), None, Default::default()) .await .unwrap(); - let tx_with_empty_data = TransactionRequest::default() + let tx_with_empty_data = tx_builder() .with_from(from) .with_to(to) .with_value(U256::from(1)) - .with_input(vec![]); + .with_input(vec![]) + .into(); let gas_with_empty_data = api .estimate_gas(WithOtherFields::new(tx_with_empty_data), None, Default::default()) .await .unwrap(); - let tx_with_data = TransactionRequest::default() + let tx_with_data = tx_builder() .with_from(from) .with_to(to) .with_value(U256::from(1)) - .with_input(vec![0x12, 0x34]); + .with_input(vec![0x12, 0x34]) + .into(); let gas_with_data = api .estimate_gas(WithOtherFields::new(tx_with_data), None, Default::default()) diff --git a/crates/anvil/tests/it/revert.rs b/crates/anvil/tests/it/revert.rs index 3137c7813..e78a38928 100644 --- a/crates/anvil/tests/it/revert.rs +++ b/crates/anvil/tests/it/revert.rs @@ -1,13 +1,13 @@ use crate::abi::VendingMachine; use alloy_network::TransactionBuilder; use alloy_primitives::{U256, bytes}; -use alloy_provider::Provider; -use alloy_rpc_types::TransactionRequest; +use alloy_provider::{Provider, SendableTx}; use alloy_serde::WithOtherFields; use alloy_sol_types::sol; use anvil::{NodeConfig, spawn}; -use seismic_prelude::foundry::{sfoundry_signed_provider, tx_builder, SeismicProviderExt}; +use reqwest::Url; +use seismic_prelude::foundry::{SeismicProviderExt, sfoundry_signed_provider, tx_builder}; #[tokio::test(flavor = "multi_thread")] async fn test_deploy_reverting() { diff --git a/crates/anvil/tests/it/seismic.rs b/crates/anvil/tests/it/seismic.rs index 45ecacda9..e111b70f0 100644 --- a/crates/anvil/tests/it/seismic.rs +++ b/crates/anvil/tests/it/seismic.rs @@ -2,26 +2,26 @@ use alloy_dyn_abi::EventExt; use alloy_json_abi::{Event, EventParam}; use alloy_network::TransactionBuilder; use alloy_primitives::{ + B256, Bytes, IntoLogData, TxKind, U256, aliases::{B96, U96}, hex::{self, FromHex}, - Bytes, IntoLogData, TxKind, B256, U256, }; use alloy_provider::{Provider, SendableTx}; use alloy_rpc_types::{ - state::EvmOverrides, TransactionInput, TransactionRequest as AlloyTransactionRequest, + TransactionInput, TransactionRequest as AlloyTransactionRequest, state::EvmOverrides, }; use alloy_serde::WithOtherFields; use alloy_signer_local::PrivateKeySigner; -use alloy_sol_types::{sol, SolCall, SolValue}; -use anvil::{spawn, NodeConfig}; +use alloy_sol_types::{SolCall, SolValue, sol}; +use anvil::{NodeConfig, spawn}; use secp256k1::{PublicKey, SecretKey}; use seismic_enclave::aes_decrypt; use std::{fs, str::FromStr}; use seismic_prelude::foundry::{ - test_utils, tx_builder, AnyNetwork, AnyTxEnvelope, EthereumWallet, SeismicCallRequest, - SeismicProviderExt, SeismicSignedProvider, SeismicUnsignedProvider, TransactionRequest, - TxSeismic, TxSeismicElements, TypedDataRequest, + AnyNetwork, AnyTxEnvelope, EthereumWallet, SeismicCallRequest, SeismicProviderExt, + SeismicSignedProvider, SeismicUnsignedProvider, TransactionRequest, TxSeismic, + TxSeismicElements, TypedDataRequest, test_utils, tx_builder, }; // common utils diff --git a/crates/anvil/tests/it/transaction.rs b/crates/anvil/tests/it/transaction.rs index 7bf40b8e7..7c49d8fc5 100644 --- a/crates/anvil/tests/it/transaction.rs +++ b/crates/anvil/tests/it/transaction.rs @@ -3,7 +3,7 @@ use crate::{ utils::{connect_pubsub, http_provider_with_signer}, }; use alloy_hardforks::EthereumHardfork; -use alloy_network::{EthereumWallet, TransactionBuilder, TransactionResponse}; +use alloy_network::{TransactionBuilder, TransactionResponse}; use alloy_primitives::{Address, Bytes, FixedBytes, U256, address, hex, map::B256HashSet}; use alloy_provider::{Provider, WsConnect}; use alloy_rpc_types::{ @@ -20,7 +20,7 @@ use revm::primitives::eip7825::TX_GAS_LIMIT_CAP; use std::{str::FromStr, time::Duration}; use tokio::time::timeout; -use seismic_prelude::foundry::{tx_builder, EthereumWallet}; +use seismic_prelude::foundry::{EthereumWallet, tx_builder}; #[tokio::test(flavor = "multi_thread")] async fn can_transfer_eth() { @@ -1331,7 +1331,8 @@ async fn can_send_tx_osaka_valid_with_limit_enabled() { let sender = wallet.address(); let recipient = Address::random(); - let base_tx = TransactionRequest::default().from(sender).to(recipient).value(U256::from(1e18)); + let base_tx = + tx_builder().with_from(sender).with_to(recipient).with_value(U256::from(1e18)).into(); // gas limit below the cap is accepted let tx = base_tx.clone().gas_limit(TX_GAS_LIMIT_CAP - 1); @@ -1366,7 +1367,8 @@ async fn can_send_tx_osaka_valid_with_limit_disabled() { let sender = wallet.address(); let recipient = Address::random(); - let base_tx = TransactionRequest::default().from(sender).to(recipient).value(U256::from(1e18)); + let base_tx = + tx_builder().with_from(sender).with_to(recipient).with_value(U256::from(1e18)).into(); // gas limit below the cap is accepted let tx = base_tx.clone().gas_limit(TX_GAS_LIMIT_CAP - 1); diff --git a/crates/anvil/tests/it/txpool.rs b/crates/anvil/tests/it/txpool.rs index 08d539385..e09c60081 100644 --- a/crates/anvil/tests/it/txpool.rs +++ b/crates/anvil/tests/it/txpool.rs @@ -85,7 +85,8 @@ async fn accepts_spend_after_funding_when_pool_checks_disabled() { .with_from(funder) .with_to(spender) .with_value(fund_value) - .with_gas_price(gas_price_fund); + .with_gas_price(gas_price_fund) + .into(); let tx1 = WithOtherFields::new(tx1); // tx2: spender attempts to send value greater than their pre-funding balance (0), @@ -95,7 +96,8 @@ async fn accepts_spend_after_funding_when_pool_checks_disabled() { .with_from(spender) .with_to(funder) .with_value(spend_value) - .with_gas_price(gas_price_spend); + .with_gas_price(gas_price_spend) + .into(); let tx2 = WithOtherFields::new(tx2); // Publish both transactions (funding first, then spend-before-funding-is-mined) diff --git a/crates/anvil/tests/it/utils.rs b/crates/anvil/tests/it/utils.rs index 062dfb543..0724f71d0 100644 --- a/crates/anvil/tests/it/utils.rs +++ b/crates/anvil/tests/it/utils.rs @@ -1,6 +1,6 @@ use alloy_provider::{ Identity, RootProvider, - fillers::{ChainIdFiller, FillProvider, JoinFill, NonceFiller, WalletFiller}, + fillers::{BlobGasFiller, ChainIdFiller, FillProvider, JoinFill, NonceFiller, WalletFiller}, }; use foundry_common::provider::{ ProviderBuilder, RetryProvider, RetryProviderWithSigner, get_http_provider, diff --git a/crates/cast/src/cmd/call.rs b/crates/cast/src/cmd/call.rs index 56d128934..7046d210a 100644 --- a/crates/cast/src/cmd/call.rs +++ b/crates/cast/src/cmd/call.rs @@ -1,17 +1,16 @@ use super::run::fetch_contracts_bytecode_from_trace; use crate::{ - Cast, traces::TraceKind, tx::{CastTxBuilder, SenderKind}, }; use alloy_ens::NameOrAddress; +use alloy_network::TransactionBuilder; use alloy_primitives::{Address, B256, Bytes, TxKind, U256, map::HashMap}; -use alloy_provider::Provider; +use alloy_provider::{Provider, SendableTx}; use alloy_rpc_types::{ BlockId, BlockNumberOrTag, BlockOverrides, state::{StateOverride, StateOverridesBuilder}, }; -use alloy_signer::Signer; use clap::Parser; use eyre::Result; use foundry_cli::{ @@ -243,7 +242,7 @@ impl CallArgs { mut tx, eth, command, - block, + block: _, trace, evm_version, debug, @@ -289,7 +288,7 @@ impl CallArgs { None }; - let (tx, func) = CastTxBuilder::new(&provider, tx, &config) + let (tx, _func) = CastTxBuilder::new(&provider, tx, &config) .await? .with_to(to) .await? @@ -359,7 +358,7 @@ impl CallArgs { } } - if let Some(auth) = tx.inner.authorization_list { + if let Some(auth) = tx.inner.inner.authorization_list { env_tx.authorization_list = auth.into_iter().map(Either::Left).collect(); env_tx.tx_type = TransactionType::Eip7702 as u8; @@ -440,7 +439,7 @@ impl CallArgs { .client_decrypt(&encrypted_response, &network_pubkey, &encryption_sk) .map_err(|e| eyre::eyre!("Failed to decrypt response: {}", e))?; - let response = hex::encode_prefixed(&decrypted_response); + let response = alloy_primitives::hex::encode_prefixed(&decrypted_response); if response == "0x" && let Some(contract_address) = tx.to.and_then(|tx_kind| tx_kind.into_to()) { diff --git a/crates/cast/src/cmd/run.rs b/crates/cast/src/cmd/run.rs index 32504c4a3..7a5e588bb 100644 --- a/crates/cast/src/cmd/run.rs +++ b/crates/cast/src/cmd/run.rs @@ -1,6 +1,6 @@ use crate::utils::apply_chain_and_block_specific_env_changes; use alloy_consensus::Transaction; -use alloy_network::{TransactionResponse}; +use alloy_network::TransactionResponse; use alloy_primitives::{ Address, Bytes, U256, map::{HashMap, HashSet}, @@ -291,8 +291,8 @@ impl RunArgs { let result = { executor.set_trace_printer(self.trace_printer); - configure_tx_env(&mut env.as_env_mut(), &tx.inner); - if is_impersonated_tx(tx.inner.inner.inner()) { + configure_tx_env(&mut env.as_env_mut(), &tx.inner()); + if is_impersonated_tx(tx.inner().inner.inner()) { env.evm_env.cfg_env.disable_balance_check = true; } diff --git a/crates/cast/src/cmd/send.rs b/crates/cast/src/cmd/send.rs index 2f0191bd3..9bac6dc2e 100644 --- a/crates/cast/src/cmd/send.rs +++ b/crates/cast/src/cmd/send.rs @@ -16,7 +16,7 @@ use foundry_cli::{ use std::{path::PathBuf, str::FromStr}; // Seismic imports for encryption/decryption -use alloy_primitives::{aliases::U96, Bytes}; +use alloy_primitives::{Bytes, aliases::U96}; use rand::RngCore; use secp256k1::{PublicKey, Secp256k1, SecretKey}; use seismic_prelude::foundry::{ diff --git a/crates/cast/src/lib.rs b/crates/cast/src/lib.rs index 93638e16f..7b625e60e 100644 --- a/crates/cast/src/lib.rs +++ b/crates/cast/src/lib.rs @@ -16,9 +16,7 @@ use alloy_provider::{ network::eip2718::{Decodable2718, Encodable2718}, }; use alloy_rlp::Decodable; -use alloy_rpc_types::{ - BlockId, BlockNumberOrTag, BlockOverrides, Filter, state::StateOverride, -}; +use alloy_rpc_types::{BlockId, BlockNumberOrTag, BlockOverrides, Filter, state::StateOverride}; use alloy_serde::WithOtherFields; use alloy_sol_types::sol; use base::{Base, NumberWithBase, ToBase}; @@ -36,7 +34,6 @@ use foundry_compilers::flatten::Flattener; use foundry_config::Chain; use foundry_evm_core::ic::decode_instructions; use futures::{FutureExt, StreamExt, future::Either}; -use op_alloy_consensus::OpTxEnvelope; use rayon::prelude::*; use std::{ borrow::Cow, @@ -52,7 +49,7 @@ use tokio::signal::ctrl_c; use foundry_common::abi::encode_function_args_packed; pub use foundry_evm::*; -use seismic_prelude::foundry::{AnyNetwork, AnyRpcTransaction, TransactionRequest}; +use seismic_prelude::foundry::{AnyNetwork, AnyRpcTransaction, AnyTxEnvelope, TransactionRequest}; pub mod args; pub mod cmd; @@ -803,9 +800,8 @@ impl> Cast

{ }; Ok(if raw { - // TODO(usm) // also consider opstack deposit transactions - let either_tx = tx.try_into_either::()?; + let either_tx = tx.try_into_either::()?; let encoded = either_tx.encoded_2718(); format!("0x{}", hex::encode(encoded)) } else if let Some(field) = field { @@ -815,9 +811,7 @@ impl> Cast

{ // to_value first to sort json object keys serde_json::to_value(&tx)?.to_string() } else if to_request { - serde_json::to_string_pretty(&TransactionRequest::from_recovered_transaction( - tx.into(), - ))? + serde_json::to_string_pretty(&tx.to_tx_request())? } else { tx.pretty() }) @@ -1920,11 +1914,11 @@ impl SimpleCast { | DynSolType::CustomStruct { .. } => { eyre::bail!("Type `{k_ty}` is not supported as a mapping key") } - DynSolType::Sbool | - DynSolType::Saddress | - DynSolType::Sint(_) | - DynSolType::Suint(_) | - DynSolType::Sbytes(..) => hasher.update(k.as_word().unwrap()), + DynSolType::Sbool + | DynSolType::Saddress + | DynSolType::Sint(_) + | DynSolType::Suint(_) + | DynSolType::Sbytes(..) => hasher.update(k.as_word().unwrap()), } let p = DynSolType::Uint(256) diff --git a/crates/cast/src/tx.rs b/crates/cast/src/tx.rs index 1779c55aa..ea9b29874 100644 --- a/crates/cast/src/tx.rs +++ b/crates/cast/src/tx.rs @@ -3,10 +3,7 @@ use alloy_consensus::{SidecarBuilder, SignableTransaction, SimpleCoder}; use alloy_dyn_abi::ErrorExt; use alloy_ens::NameOrAddress; use alloy_json_abi::Function; -use alloy_network::{ - TransactionBuilder, TransactionBuilder4844, - TransactionBuilder7702, -}; +use alloy_network::{TransactionBuilder, TransactionBuilder4844, TransactionBuilder7702}; use alloy_primitives::{Address, Bytes, TxKind, U256, hex}; use alloy_provider::Provider; use alloy_rpc_types::{AccessList, Authorization, TransactionInput}; diff --git a/crates/cheatcodes/src/evm.rs b/crates/cheatcodes/src/evm.rs index 8308e5274..da689b1ad 100644 --- a/crates/cheatcodes/src/evm.rs +++ b/crates/cheatcodes/src/evm.rs @@ -581,7 +581,7 @@ impl Cheatcode for blobBaseFeeCall { ccx.ecx.block.set_blob_excess_gas_and_price( (*newBlobBaseFee).to(), - get_blob_base_fee_update_fraction_by_spec_id(ccx.ecx.cfg.spec), + get_blob_base_fee_update_fraction_by_spec_id(ccx.ecx.cfg.spec.into_eth_spec()), ); Ok(Default::default()) } diff --git a/crates/cheatcodes/src/inspector.rs b/crates/cheatcodes/src/inspector.rs index e4bb6b553..c82a7f9ce 100644 --- a/crates/cheatcodes/src/inspector.rs +++ b/crates/cheatcodes/src/inspector.rs @@ -1622,13 +1622,16 @@ impl Inspector> for Cheatcodes { self.broadcastable_transactions.push_back(BroadcastableTransaction { rpc: ecx.journaled_state.database.active_fork_url(), transaction: TransactionRequest { - from: Some(broadcast.new_origin), - to: None, - value: Some(input.value()), - input: TransactionInput::new(input.init_code()), - nonce: Some(account.info.nonce), - gas: if is_fixed_gas_limit { Some(input.gas_limit()) } else { None }, - ..Default::default() + inner: AlloyTransactionRequest { + from: Some(broadcast.new_origin), + to: None, + value: Some(input.value()), + input: TransactionInput::new(input.init_code()), + nonce: Some(account.info.nonce), + gas: if is_fixed_gas_limit { Some(input.gas_limit()) } else { None }, + ..Default::default() + }, + seismic_elements: None, } .into(), }); diff --git a/crates/chisel/tests/it/repl/session.rs b/crates/chisel/tests/it/repl/session.rs index ac7566859..e8b5e9a0d 100644 --- a/crates/chisel/tests/it/repl/session.rs +++ b/crates/chisel/tests/it/repl/session.rs @@ -27,7 +27,7 @@ impl ChiselSession { foundry_test_utils::util::initialize(project.root()); } - let bin = env!("CARGO_BIN_EXE_chisel"); + let bin = env!("CARGO_BIN_EXE_schisel"); let mut command = std::process::Command::new(bin); // TODO: TTY works but logs become unreadable. diff --git a/crates/common/fmt/src/console.rs b/crates/common/fmt/src/console.rs index add411497..a59f4c5c0 100644 --- a/crates/common/fmt/src/console.rs +++ b/crates/common/fmt/src/console.rs @@ -1,5 +1,5 @@ use super::UIfmt; -use alloy_primitives::{Address, Bytes, FixedBytes, SAddress, I256, SI256, SU256, U256}; +use alloy_primitives::{Address, Bytes, FixedBytes, I256, SAddress, SI256, SU256, U256}; use std::fmt::{self, Write}; /// A piece is a portion of the format string which represents the next part to emit. diff --git a/crates/common/fmt/src/dynamic.rs b/crates/common/fmt/src/dynamic.rs index d0081c592..4e0554293 100644 --- a/crates/common/fmt/src/dynamic.rs +++ b/crates/common/fmt/src/dynamic.rs @@ -5,7 +5,7 @@ use eyre::Result; use serde_json::Value; use std::fmt; -use alloy_primitives::aliases::{SInt, SUInt, SAddress}; +use alloy_primitives::aliases::{SAddress, SInt, SUInt}; use alloy_sol_types::sol_data::Sbool; /// [`DynSolValue`] formatter. diff --git a/crates/common/fmt/src/ui.rs b/crates/common/fmt/src/ui.rs index 08a0b932d..293f75827 100644 --- a/crates/common/fmt/src/ui.rs +++ b/crates/common/fmt/src/ui.rs @@ -1,11 +1,7 @@ //! Helper trait and functions to format Ethereum types. -use alloy_consensus::{ - Eip658Value, Transaction as TxTrait, TxEnvelope, TxType, Typed2718, -}; -use alloy_network::{ - AnyHeader, ReceiptResponse, -}; +use alloy_consensus::{Eip658Value, Transaction as TxTrait, TxEnvelope, TxType, Typed2718}; +use alloy_network::{AnyHeader, ReceiptResponse}; use alloy_primitives::{Address, Bloom, Bytes, FixedBytes, I256, U8, U64, U256, Uint, hex}; use alloy_rpc_types::{ AccessListItem, Block, BlockTransactions, Header, Log, Transaction, TransactionReceipt, diff --git a/crates/common/src/transactions.rs b/crates/common/src/transactions.rs index c15448930..9f8c7907c 100644 --- a/crates/common/src/transactions.rs +++ b/crates/common/src/transactions.rs @@ -231,8 +231,6 @@ impl TransactionMaybeSigned { pub fn input(&self) -> Option<&Bytes> { match self { Self::Signed { tx, .. } => Some(tx.input()), - // TODO(usm): - // Self::Unsigned(tx) => tx.inner.inner.input.input().map(|i| i.as_ref()), Self::Unsigned(tx) => tx.input.input(), } } diff --git a/crates/config/src/lint.rs b/crates/config/src/lint.rs index 2527b60d4..07d1442f8 100644 --- a/crates/config/src/lint.rs +++ b/crates/config/src/lint.rs @@ -36,7 +36,9 @@ pub struct LinterConfig { impl Default for LinterConfig { fn default() -> Self { Self { - lint_on_build: true, + // TODO: make a seismic fork of solar + // Linting via foundry won't work until we do this + lint_on_build: false, severity: Vec::new(), exclude_lints: Vec::new(), ignore: Vec::new(), diff --git a/crates/evm/core/src/backend/mod.rs b/crates/evm/core/src/backend/mod.rs index ceed61948..14c526987 100644 --- a/crates/evm/core/src/backend/mod.rs +++ b/crates/evm/core/src/backend/mod.rs @@ -11,7 +11,7 @@ use crate::{ use alloy_consensus::Typed2718; use alloy_evm::Evm; use alloy_genesis::GenesisAccount; -use alloy_network::{AnyRpcBlock, AnyTxEnvelope, TransactionResponse}; +use alloy_network::TransactionResponse; use alloy_primitives::{Address, B256, TxKind, U256, keccak256, uint}; use alloy_rpc_types::{BlockNumberOrTag, Transaction}; use eyre::Context; @@ -898,7 +898,7 @@ impl Backend { if tx.tx_hash() == tx_hash { // found the target transaction - return Ok(Some(tx.inner.clone())); + return Ok(Some(tx.inner().clone())); } trace!(tx=?tx.tx_hash(), "committing transaction"); @@ -1968,7 +1968,7 @@ fn update_env_block(env: &mut EnvMut<'_>, block: &AnyRpcBlock) { if let Some(excess_blob_gas) = block.header.excess_blob_gas { env.block.blob_excess_gas_and_price = Some(BlobExcessGasAndPrice::new( excess_blob_gas, - get_blob_base_fee_update_fraction_by_spec_id(env.cfg.spec), + get_blob_base_fee_update_fraction_by_spec_id(env.cfg.spec.into_eth_spec()), )); } } diff --git a/crates/evm/core/src/either_evm.rs b/crates/evm/core/src/either_evm.rs index bcd601d6b..66b7a5e77 100644 --- a/crates/evm/core/src/either_evm.rs +++ b/crates/evm/core/src/either_evm.rs @@ -1,5 +1,4 @@ -use alloy_evm::{Database, EthEvm, Evm, EvmEnv, eth::EthEvmContext}; -use alloy_op_evm::OpEvm; +use alloy_evm::{Database, Evm, EvmEnv}; use alloy_primitives::{Address, Bytes}; use op_revm::{OpSpecId, OpTransactionError}; use revm::{ @@ -124,8 +123,11 @@ where fn block(&self) -> &BlockEnv { match self { + Self::Seismic(evm) => evm.block(), + /* Self::Eth(evm) => evm.block(), Self::Op(evm) => evm.block(), + */ } } @@ -142,26 +144,30 @@ where fn components(&self) -> (&Self::DB, &Self::Inspector, &Self::Precompiles) { match self { Self::Seismic(evm) => evm.components(), + /* Self::Eth(evm) => evm.components(), Self::Op(evm) => evm.components(), + */ } } fn components_mut(&mut self) -> (&mut Self::DB, &mut Self::Inspector, &mut Self::Precompiles) { match self { Self::Seismic(evm) => evm.components_mut(), + /* Self::Eth(evm) => evm.components_mut(), Self::Op(evm) => evm.components_mut(), + */ } } fn db_mut(&mut self) -> &mut Self::DB { match self { + Self::Seismic(evm) => evm.db_mut(), /* Self::Eth(evm) => evm.db_mut(), Self::Op(evm) => evm.db_mut(), */ - Self::Seismic(evm) => evm.db_mut(), } } diff --git a/crates/evm/core/src/evm.rs b/crates/evm/core/src/evm.rs index c34f58ae5..971c3bfd9 100644 --- a/crates/evm/core/src/evm.rs +++ b/crates/evm/core/src/evm.rs @@ -9,22 +9,17 @@ use crate::{ use alloy_consensus::constants::KECCAK_EMPTY; use alloy_evm::{ Evm, EvmEnv, - eth::EthEvmContext, - precompiles::{DynPrecompile, PrecompileInput, PrecompilesMap}, + precompiles::{DynPrecompile, PrecompileInput}, }; use alloy_primitives::{Address, Bytes, U256}; use foundry_fork_db::DatabaseError; use revm::{ Context, Journal, context::{ - BlockEnv, CfgEnv, ContextTr, CreateScheme, Evm as RevmEvm, JournalTr, LocalContext, - LocalContextTr, TxEnv, + BlockEnv, ContextTr, CreateScheme, JournalTr, LocalContext, LocalContextTr, result::{EVMError, ExecResultAndState, ExecutionResult, HaltReason, ResultAndState}, }, - handler::{ - EthFrame, EthPrecompiles, EvmTr, FrameResult, FrameTr, Handler, ItemOrResult, - instructions::EthInstructions, - }, + handler::{EthFrame, EthPrecompiles, EvmTr, FrameResult, FrameTr, Handler, ItemOrResult}, inspector::{InspectorEvmTr, InspectorHandler}, interpreter::{ CallInput, CallInputs, CallOutcome, CallScheme, CallValue, CreateInputs, CreateOutcome, @@ -44,7 +39,7 @@ use seismic_prelude::foundry::{ pub type PrecompileCtx<'db> = EthEvmContext<&'db mut dyn DatabaseExt>; pub type SeismicFoundryPrecompiles<'db> = SeismicPrecompiles>; -pub fn new_evm_with_inspector<'i, 'db, I: InspectorExt + ?Sized>( +pub fn new_evm_with_inspector<'i, 'db, I: InspectorExt + Sized>( db: &'db mut dyn DatabaseExt, env: Env, inspector: I, @@ -110,7 +105,7 @@ where /// Conditionally inject additional precompiles into the EVM context. fn inject_precompiles(evm: &mut FoundryEvm<'_, impl InspectorExt>) { if evm.inspector().is_odyssey() { - evm.precompiles_mut().apply_precompile(P256VERIFY.address(), |_| { + apply_precompile(evm.precompiles_mut(), P256VERIFY.address(), |_| { // Create a wrapper function that adapts the new API let precompile_fn = |input: PrecompileInput<'_>| -> Result<_, _> { P256VERIFY.precompile()(input.data, P256VERIFY_BASE_GAS_FEE) @@ -208,9 +203,9 @@ impl<'db, I: InspectorExt> Evm for FoundryEvm<'db, I> { fn components_mut(&mut self) -> (&mut Self::DB, &mut Self::Inspector, &mut Self::Precompiles) { ( - &mut self.inner.ctx.journaled_state.database, - &mut self.inner.inspector, - &mut self.inner.precompiles, + &mut self.inner.0.ctx.journaled_state.database, + &mut self.inner.0.inspector, + &mut self.inner.0.precompiles, ) } @@ -275,7 +270,7 @@ impl<'db, I: InspectorExt> Deref for FoundryEvm<'db, I> { TxEnv, CfgEnv, &'db mut dyn DatabaseExt, - Journal<&'db mut (dyn DatabaseExt)>, + Journal<&'db mut dyn DatabaseExt>, SeismicChain, >; diff --git a/crates/evm/core/src/opts.rs b/crates/evm/core/src/opts.rs index 6e74eff3a..2672d2a99 100644 --- a/crates/evm/core/src/opts.rs +++ b/crates/evm/core/src/opts.rs @@ -1,6 +1,5 @@ use super::fork::environment; use crate::{ - EvmEnv, constants::DEFAULT_CREATE2_DEPLOYER, fork::{CreateFork, configure_env}, }; diff --git a/crates/evm/core/src/utils.rs b/crates/evm/core/src/utils.rs index 530b15fd2..6247738a7 100644 --- a/crates/evm/core/src/utils.rs +++ b/crates/evm/core/src/utils.rs @@ -141,24 +141,25 @@ pub fn configure_tx_req_env( env.tx.tx_type = tx_type; let SeismicTransactionRequest { - inner: TransactionRequest { - nonce, - from, - to, - value, - gas_price, - gas, - max_fee_per_gas, - max_priority_fee_per_gas, - max_fee_per_blob_gas, - ref input, - chain_id, - ref blob_versioned_hashes, - ref access_list, - ref authorization_list, - transaction_type: _, - sidecar: _, - }, + inner: + TransactionRequest { + nonce, + from, + to, + value, + gas_price, + gas, + max_fee_per_gas, + max_priority_fee_per_gas, + max_fee_per_blob_gas, + ref input, + chain_id, + ref blob_versioned_hashes, + ref access_list, + ref authorization_list, + transaction_type: _, + sidecar: _, + }, seismic_elements: _, } = *tx; diff --git a/crates/evm/evm/src/executors/mod.rs b/crates/evm/evm/src/executors/mod.rs index 0544161c0..252aff65c 100644 --- a/crates/evm/evm/src/executors/mod.rs +++ b/crates/evm/evm/src/executors/mod.rs @@ -50,7 +50,7 @@ use std::{ time::{Duration, Instant}, }; -use foundry_evm_core::EvmEnv; +use alloy_primitives::FlaggedStorage; use seismic_prelude::foundry::SpecId; mod builder; @@ -281,7 +281,7 @@ impl Executor { pub fn set_storage( &mut self, address: Address, - storage: HashMap, + storage: HashMap, ) -> BackendResult<()> { self.backend_mut().replace_account_storage(address, storage)?; Ok(()) @@ -292,7 +292,7 @@ impl Executor { &mut self, address: Address, slot: U256, - value: U256, + value: FlaggedStorage, ) -> BackendResult<()> { self.backend_mut().insert_account_storage(address, slot, value)?; Ok(()) diff --git a/crates/evm/evm/src/executors/trace.rs b/crates/evm/evm/src/executors/trace.rs index d3fcdd85d..96bbb8697 100644 --- a/crates/evm/evm/src/executors/trace.rs +++ b/crates/evm/evm/src/executors/trace.rs @@ -12,6 +12,7 @@ use foundry_evm_traces::TraceMode; use revm::state::Bytecode; use std::ops::{Deref, DerefMut}; +use alloy_primitives::FlaggedStorage; use seismic_prelude::foundry::SpecId; /// A default executor with tracing enabled @@ -54,7 +55,7 @@ impl TracingExecutor { executor.set_code(address, bytecode)?; } if let Some(state) = overrides.state { - let state: HashMap = state + let state: HashMap = state .into_iter() .map(|(slot, value)| (slot.into(), value.into())) .collect(); diff --git a/crates/evm/fuzz/src/strategies/param.rs b/crates/evm/fuzz/src/strategies/param.rs index b98058871..8c5bbc318 100644 --- a/crates/evm/fuzz/src/strategies/param.rs +++ b/crates/evm/fuzz/src/strategies/param.rs @@ -10,7 +10,6 @@ use std::mem::replace; use alloy_primitives::aliases::{SInt, SUInt}; - /// The max length of arrays we fuzz for is 256. const MAX_ARRAY_LEN: usize = 256; diff --git a/crates/evm/fuzz/src/strategies/state.rs b/crates/evm/fuzz/src/strategies/state.rs index 50f9ef6ed..672034ec9 100644 --- a/crates/evm/fuzz/src/strategies/state.rs +++ b/crates/evm/fuzz/src/strategies/state.rs @@ -174,7 +174,7 @@ impl FuzzDictionary { // Sort storage values before inserting to ensure deterministic dictionary. let values = account.storage.iter().collect::>(); for (slot, value) in values { - self.insert_storage_value(slot, value.into(), None, None); + self.insert_storage_value(slot, &value.into(), None, None); } } } diff --git a/crates/forge/Cargo.toml b/crates/forge/Cargo.toml index f23d3d6cf..f1db404e0 100644 --- a/crates/forge/Cargo.toml +++ b/crates/forge/Cargo.toml @@ -64,8 +64,6 @@ alloy-serde.workspace = true alloy-signer.workspace = true alloy-transport.workspace = true -revm.workspace = true - clap = { version = "4", features = ["derive", "env", "unicode", "wrap_help"] } clap_complete.workspace = true clap_complete_fig = "4" @@ -108,6 +106,7 @@ foundry-test-utils.workspace = true foundry-wallets.workspace = true futures.workspace = true reqwest = { workspace = true, features = ["json"] } +revm.workspace = true mockall = "0.13" globset = "0.4" diff --git a/crates/forge/src/args.rs b/crates/forge/src/args.rs index e0ac3ec6f..8c75e2efd 100644 --- a/crates/forge/src/args.rs +++ b/crates/forge/src/args.rs @@ -144,6 +144,8 @@ pub fn run_command(args: Forge) -> Result<()> { ForgeSubcommand::Soldeer(cmd) => global.block_on(cmd.run()), ForgeSubcommand::Eip712(cmd) => cmd.run(), ForgeSubcommand::BindJson(cmd) => cmd.run(), + /* ForgeSubcommand::Lint(cmd) => cmd.run(), + */ } } diff --git a/crates/forge/src/lib.rs b/crates/forge/src/lib.rs index fdbad8e4e..e4e3273cf 100644 --- a/crates/forge/src/lib.rs +++ b/crates/forge/src/lib.rs @@ -32,3 +32,5 @@ pub use foundry_evm::*; mod lockfile; pub use lockfile::{DepIdentifier, DepMap, FOUNDRY_LOCK, Lockfile}; + +use alloy_rpc_types as _; diff --git a/crates/forge/src/opts.rs b/crates/forge/src/opts.rs index 0d85c7944..9d6883bfc 100644 --- a/crates/forge/src/opts.rs +++ b/crates/forge/src/opts.rs @@ -1,3 +1,4 @@ +#[allow(unused_imports)] use crate::cmd::{ bind::BindArgs, bind_json, build::BuildArgs, cache::CacheArgs, clone::CloneArgs, compiler::CompilerArgs, config, coverage, create::CreateArgs, doc::DocArgs, eip712, flatten, @@ -132,10 +133,10 @@ pub enum ForgeSubcommand { /// Format Solidity source files. Fmt(FmtArgs), - /// Lint Solidity source files - #[command(visible_alias = "l")] - Lint(LintArgs), - + // TODO: Make seismic-solar parse seismic solidity + // /// Lint Solidity source files + // #[command(visible_alias = "l")] + // Lint(LintArgs), /// Get specialized information about a smart contract. #[command(visible_alias = "in")] Inspect(inspect::InspectArgs), diff --git a/crates/script-sequence/Cargo.toml b/crates/script-sequence/Cargo.toml index a9034b1fb..9ea21cd21 100644 --- a/crates/script-sequence/Cargo.toml +++ b/crates/script-sequence/Cargo.toml @@ -28,4 +28,3 @@ walkdir.workspace = true revm-inspectors.workspace = true alloy-primitives.workspace = true -alloy-network.workspace = true diff --git a/crates/script/src/receipts.rs b/crates/script/src/receipts.rs index dd3dd2a30..4b558e94e 100644 --- a/crates/script/src/receipts.rs +++ b/crates/script/src/receipts.rs @@ -16,11 +16,7 @@ pub enum TxStatus { impl From for TxStatus { fn from(receipt: AnyTransactionReceipt) -> Self { - if !receipt.inner.inner.status() { - Self::Revert(receipt) - } else { - Self::Success(receipt) - } + if !receipt.inner.inner.status() { Self::Revert(receipt) } else { Self::Success(receipt) } } } diff --git a/crates/verify/src/bytecode.rs b/crates/verify/src/bytecode.rs index c4a2a1ad5..f195735bd 100644 --- a/crates/verify/src/bytecode.rs +++ b/crates/verify/src/bytecode.rs @@ -8,13 +8,9 @@ use crate::{ verify::VerifierArgs, }; use alloy_primitives::{Address, Bytes, TxKind, U256, hex}; -use alloy_provider::{ - Provider, - ext::TraceApi, - network::{AnyTxEnvelope, TransactionBuilder}, -}; +use alloy_provider::{Provider, ext::TraceApi, network::TransactionBuilder}; use alloy_rpc_types::{ - BlockId, BlockNumberOrTag, TransactionInput, TransactionRequest, + BlockId, BlockNumberOrTag, TransactionInput, trace::parity::{Action, CreateAction, CreateOutput, TraceOutput}, }; use clap::{Parser, ValueHint}; @@ -31,6 +27,7 @@ use foundry_evm_core::AsEnvMut; use revm::state::AccountInfo; use std::path::PathBuf; +use alloy_rpc_types::TransactionRequest as AlloyTransactionRequest; use seismic_prelude::foundry::{AnyTxEnvelope, TransactionRequest}; impl_figment_convert!(VerifyBytecodeArgs); @@ -339,8 +336,8 @@ impl VerifyBytecodeArgs { }; let mut transaction: TransactionRequest = match transaction.0.inner.inner.inner() { - AnyTxEnvelope::Ethereum(tx) => tx.clone().into(), AnyTxEnvelope::Seismic(tx) => tx.clone().into(), + AnyTxEnvelope::Ethereum(tx) => tx.clone().into(), AnyTxEnvelope::Unknown(_) => unreachable!("Unknown transaction type"), }; From 11f957621f272e110193429e5f19e7bdb4e49c67 Mon Sep 17 00:00:00 2001 From: cdrappi Date: Tue, 30 Sep 2025 14:02:27 -0400 Subject: [PATCH 100/130] update commits to seismic repos --- Cargo.lock | 84 +++++++++++++++++++++++++++--------------------------- Cargo.toml | 62 ++++++++++++++++++++-------------------- 2 files changed, 73 insertions(+), 73 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9489b5987..eed356cd2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -157,7 +157,7 @@ dependencies = [ [[package]] name = "alloy-dyn-abi" version = "1.3.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?branch=usm#77f2dc24233a2081bc7e5beb5454a771948154cf" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=33e302d06f56bb4dda85359005af7e302f48272f#33e302d06f56bb4dda85359005af7e302f48272f" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -248,7 +248,7 @@ dependencies = [ [[package]] name = "alloy-evm" version = "0.20.1" -source = "git+https://github.com/SeismicSystems/seismic-evm.git?branch=usm#52fbe3f953baa9efb23e66ee9f30e5678a3c3ac0" +source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=fe3d5455305ed54e6958fc1157f64cd7ca12cb5f#fe3d5455305ed54e6958fc1157f64cd7ca12cb5f" dependencies = [ "alloy-consensus", "alloy-eips", @@ -308,7 +308,7 @@ dependencies = [ [[package]] name = "alloy-json-abi" version = "1.3.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?branch=usm#77f2dc24233a2081bc7e5beb5454a771948154cf" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=33e302d06f56bb4dda85359005af7e302f48272f#33e302d06f56bb4dda85359005af7e302f48272f" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -373,7 +373,7 @@ dependencies = [ [[package]] name = "alloy-op-evm" version = "0.20.1" -source = "git+https://github.com/SeismicSystems/seismic-evm.git?branch=usm#52fbe3f953baa9efb23e66ee9f30e5678a3c3ac0" +source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=fe3d5455305ed54e6958fc1157f64cd7ca12cb5f#fe3d5455305ed54e6958fc1157f64cd7ca12cb5f" dependencies = [ "alloy-consensus", "alloy-eips", @@ -400,7 +400,7 @@ dependencies = [ [[package]] name = "alloy-primitives" version = "1.3.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?branch=usm#77f2dc24233a2081bc7e5beb5454a771948154cf" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=33e302d06f56bb4dda85359005af7e302f48272f#33e302d06f56bb4dda85359005af7e302f48272f" dependencies = [ "alloy-rlp", "arbitrary", @@ -660,7 +660,7 @@ dependencies = [ [[package]] name = "alloy-seismic-evm" version = "0.20.1" -source = "git+https://github.com/SeismicSystems/seismic-evm.git?branch=usm#52fbe3f953baa9efb23e66ee9f30e5678a3c3ac0" +source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=fe3d5455305ed54e6958fc1157f64cd7ca12cb5f#fe3d5455305ed54e6958fc1157f64cd7ca12cb5f" dependencies = [ "alloy-consensus", "alloy-eips", @@ -800,7 +800,7 @@ dependencies = [ [[package]] name = "alloy-sol-macro" version = "1.3.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?branch=usm#77f2dc24233a2081bc7e5beb5454a771948154cf" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=33e302d06f56bb4dda85359005af7e302f48272f#33e302d06f56bb4dda85359005af7e302f48272f" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", @@ -813,7 +813,7 @@ dependencies = [ [[package]] name = "alloy-sol-macro-expander" version = "1.3.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?branch=usm#77f2dc24233a2081bc7e5beb5454a771948154cf" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=33e302d06f56bb4dda85359005af7e302f48272f#33e302d06f56bb4dda85359005af7e302f48272f" dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", @@ -831,7 +831,7 @@ dependencies = [ [[package]] name = "alloy-sol-macro-input" version = "1.3.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?branch=usm#77f2dc24233a2081bc7e5beb5454a771948154cf" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=33e302d06f56bb4dda85359005af7e302f48272f#33e302d06f56bb4dda85359005af7e302f48272f" dependencies = [ "alloy-json-abi", "const-hex", @@ -848,7 +848,7 @@ dependencies = [ [[package]] name = "alloy-sol-type-parser" version = "1.3.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?branch=usm#77f2dc24233a2081bc7e5beb5454a771948154cf" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=33e302d06f56bb4dda85359005af7e302f48272f#33e302d06f56bb4dda85359005af7e302f48272f" dependencies = [ "serde", "winnow", @@ -857,7 +857,7 @@ dependencies = [ [[package]] name = "alloy-sol-types" version = "1.3.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?branch=usm#77f2dc24233a2081bc7e5beb5454a771948154cf" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=33e302d06f56bb4dda85359005af7e302f48272f#33e302d06f56bb4dda85359005af7e302f48272f" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -947,7 +947,7 @@ dependencies = [ [[package]] name = "alloy-trie" version = "0.9.1" -source = "git+https://github.com/SeismicSystems/seismic-trie.git?branch=usm#4c9db45e538fc6fcf8e8c5190475c78bd7839eef" +source = "git+https://github.com/SeismicSystems/seismic-trie.git?rev=d8425918ced1d62043c3a64b382d6fa1d8c25518#d8425918ced1d62043c3a64b382d6fa1d8c25518" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -4641,7 +4641,7 @@ dependencies = [ [[package]] name = "foundry-compilers" version = "0.19.1" -source = "git+https://github.com/SeismicSystems/seismic-compilers.git?branch=usm#067a38bde292629c5fc8b089c9331e0a0a1e259e" +source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=5477a89ae892229a90af58580daa8ef4575f00a6#5477a89ae892229a90af58580daa8ef4575f00a6" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -4652,7 +4652,7 @@ dependencies = [ "foundry-compilers-core", "fs_extra", "futures-util", - "itertools 0.14.0", + "itertools 0.13.0", "path-slash", "rand 0.9.2", "rayon", @@ -4674,7 +4674,7 @@ dependencies = [ [[package]] name = "foundry-compilers-artifacts" version = "0.19.1" -source = "git+https://github.com/SeismicSystems/seismic-compilers.git?branch=usm#067a38bde292629c5fc8b089c9331e0a0a1e259e" +source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=5477a89ae892229a90af58580daa8ef4575f00a6#5477a89ae892229a90af58580daa8ef4575f00a6" dependencies = [ "foundry-compilers-artifacts-solc", "foundry-compilers-artifacts-vyper", @@ -4683,7 +4683,7 @@ dependencies = [ [[package]] name = "foundry-compilers-artifacts-solc" version = "0.19.1" -source = "git+https://github.com/SeismicSystems/seismic-compilers.git?branch=usm#067a38bde292629c5fc8b089c9331e0a0a1e259e" +source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=5477a89ae892229a90af58580daa8ef4575f00a6#5477a89ae892229a90af58580daa8ef4575f00a6" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -4705,7 +4705,7 @@ dependencies = [ [[package]] name = "foundry-compilers-artifacts-vyper" version = "0.19.1" -source = "git+https://github.com/SeismicSystems/seismic-compilers.git?branch=usm#067a38bde292629c5fc8b089c9331e0a0a1e259e" +source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=5477a89ae892229a90af58580daa8ef4575f00a6#5477a89ae892229a90af58580daa8ef4575f00a6" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -4719,7 +4719,7 @@ dependencies = [ [[package]] name = "foundry-compilers-core" version = "0.19.1" -source = "git+https://github.com/SeismicSystems/seismic-compilers.git?branch=usm#067a38bde292629c5fc8b089c9331e0a0a1e259e" +source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=5477a89ae892229a90af58580daa8ef4575f00a6#5477a89ae892229a90af58580daa8ef4575f00a6" dependencies = [ "alloy-primitives", "cfg-if", @@ -4949,7 +4949,7 @@ dependencies = [ [[package]] name = "foundry-fork-db" version = "0.18.0" -source = "git+https://github.com/SeismicSystems/seismic-foundry-fork-db.git?branch=usm#a05c326f486580d319897eb13343cbeb87ab9de5" +source = "git+https://github.com/SeismicSystems/seismic-foundry-fork-db.git?rev=80db51e90a049d1e229f3ea0f5b925193b6be0c4#80db51e90a049d1e229f3ea0f5b925193b6be0c4" dependencies = [ "alloy-chains", "alloy-consensus", @@ -7323,7 +7323,7 @@ checksum = "a79f352fc3893dcd670172e615afef993a41798a1d3fc0db88a3e60ef2e70ecc" [[package]] name = "op-revm" version = "10.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#f84ed6764583ef588ab1ccf84f9e0a2e94565876" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5df78108a382e66420ad9b815d3f41b5e35f3cc8#5df78108a382e66420ad9b815d3f41b5e35f3cc8" dependencies = [ "auto_impl", "revm", @@ -8501,7 +8501,7 @@ dependencies = [ [[package]] name = "revm" version = "29.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#f84ed6764583ef588ab1ccf84f9e0a2e94565876" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5df78108a382e66420ad9b815d3f41b5e35f3cc8#5df78108a382e66420ad9b815d3f41b5e35f3cc8" dependencies = [ "revm-bytecode", "revm-context", @@ -8519,7 +8519,7 @@ dependencies = [ [[package]] name = "revm-bytecode" version = "6.2.2" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#f84ed6764583ef588ab1ccf84f9e0a2e94565876" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5df78108a382e66420ad9b815d3f41b5e35f3cc8#5df78108a382e66420ad9b815d3f41b5e35f3cc8" dependencies = [ "bitvec", "phf 0.13.1", @@ -8530,7 +8530,7 @@ dependencies = [ [[package]] name = "revm-context" version = "9.0.2" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#f84ed6764583ef588ab1ccf84f9e0a2e94565876" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5df78108a382e66420ad9b815d3f41b5e35f3cc8#5df78108a382e66420ad9b815d3f41b5e35f3cc8" dependencies = [ "bitvec", "cfg-if", @@ -8546,7 +8546,7 @@ dependencies = [ [[package]] name = "revm-context-interface" version = "10.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#f84ed6764583ef588ab1ccf84f9e0a2e94565876" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5df78108a382e66420ad9b815d3f41b5e35f3cc8#5df78108a382e66420ad9b815d3f41b5e35f3cc8" dependencies = [ "alloy-eip2930", "alloy-eip7702", @@ -8561,7 +8561,7 @@ dependencies = [ [[package]] name = "revm-database" version = "7.0.5" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#f84ed6764583ef588ab1ccf84f9e0a2e94565876" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5df78108a382e66420ad9b815d3f41b5e35f3cc8#5df78108a382e66420ad9b815d3f41b5e35f3cc8" dependencies = [ "alloy-eips", "revm-bytecode", @@ -8574,7 +8574,7 @@ dependencies = [ [[package]] name = "revm-database-interface" version = "7.0.5" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#f84ed6764583ef588ab1ccf84f9e0a2e94565876" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5df78108a382e66420ad9b815d3f41b5e35f3cc8#5df78108a382e66420ad9b815d3f41b5e35f3cc8" dependencies = [ "auto_impl", "either", @@ -8586,7 +8586,7 @@ dependencies = [ [[package]] name = "revm-handler" version = "10.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#f84ed6764583ef588ab1ccf84f9e0a2e94565876" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5df78108a382e66420ad9b815d3f41b5e35f3cc8#5df78108a382e66420ad9b815d3f41b5e35f3cc8" dependencies = [ "auto_impl", "derive-where", @@ -8604,7 +8604,7 @@ dependencies = [ [[package]] name = "revm-inspector" version = "10.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#f84ed6764583ef588ab1ccf84f9e0a2e94565876" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5df78108a382e66420ad9b815d3f41b5e35f3cc8#5df78108a382e66420ad9b815d3f41b5e35f3cc8" dependencies = [ "auto_impl", "either", @@ -8621,7 +8621,7 @@ dependencies = [ [[package]] name = "revm-inspectors" version = "0.29.0" -source = "git+https://github.com/SeismicSystems/seismic-revm-inspectors.git?branch=usm#ce46ed08cfbcdfa25dc7f66de0b070e4209c5277" +source = "git+https://github.com/SeismicSystems/seismic-revm-inspectors.git?rev=60943c133038e5ea0ac9f1afcb7070491ae97ca5#60943c133038e5ea0ac9f1afcb7070491ae97ca5" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -8640,7 +8640,7 @@ dependencies = [ [[package]] name = "revm-interpreter" version = "25.0.2" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#f84ed6764583ef588ab1ccf84f9e0a2e94565876" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5df78108a382e66420ad9b815d3f41b5e35f3cc8#5df78108a382e66420ad9b815d3f41b5e35f3cc8" dependencies = [ "revm-bytecode", "revm-context-interface", @@ -8652,7 +8652,7 @@ dependencies = [ [[package]] name = "revm-precompile" version = "27.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#f84ed6764583ef588ab1ccf84f9e0a2e94565876" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5df78108a382e66420ad9b815d3f41b5e35f3cc8#5df78108a382e66420ad9b815d3f41b5e35f3cc8" dependencies = [ "ark-bls12-381", "ark-bn254", @@ -8676,7 +8676,7 @@ dependencies = [ [[package]] name = "revm-primitives" version = "20.2.1" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#f84ed6764583ef588ab1ccf84f9e0a2e94565876" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5df78108a382e66420ad9b815d3f41b5e35f3cc8#5df78108a382e66420ad9b815d3f41b5e35f3cc8" dependencies = [ "alloy-primitives", "num_enum", @@ -8687,7 +8687,7 @@ dependencies = [ [[package]] name = "revm-state" version = "7.0.5" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#f84ed6764583ef588ab1ccf84f9e0a2e94565876" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5df78108a382e66420ad9b815d3f41b5e35f3cc8#5df78108a382e66420ad9b815d3f41b5e35f3cc8" dependencies = [ "bitflags 2.9.4", "revm-bytecode", @@ -9274,7 +9274,7 @@ dependencies = [ [[package]] name = "seismic-alloy-consensus" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?branch=usm#caae5e1db5db7ca3c0a28d04a2253ed3759ad14c" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=84dae78acc18792399b83b188e1523d282528427#84dae78acc18792399b83b188e1523d282528427" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -9295,7 +9295,7 @@ dependencies = [ [[package]] name = "seismic-alloy-network" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?branch=usm#caae5e1db5db7ca3c0a28d04a2253ed3759ad14c" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=84dae78acc18792399b83b188e1523d282528427#84dae78acc18792399b83b188e1523d282528427" dependencies = [ "alloy-consensus", "alloy-eip7702", @@ -9318,7 +9318,7 @@ dependencies = [ [[package]] name = "seismic-alloy-provider" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?branch=usm#caae5e1db5db7ca3c0a28d04a2253ed3759ad14c" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=84dae78acc18792399b83b188e1523d282528427#84dae78acc18792399b83b188e1523d282528427" dependencies = [ "alloy-network", "alloy-primitives", @@ -9336,7 +9336,7 @@ dependencies = [ [[package]] name = "seismic-alloy-rpc-types" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?branch=usm#caae5e1db5db7ca3c0a28d04a2253ed3759ad14c" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=84dae78acc18792399b83b188e1523d282528427#84dae78acc18792399b83b188e1523d282528427" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9354,7 +9354,7 @@ dependencies = [ [[package]] name = "seismic-enclave" version = "0.1.0" -source = "git+https://github.com/SeismicSystems/seismic-enclave.git?branch=seismic#12bf284cc6cec2bb49ce24879200dcff16857aa9" +source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=12bf284cc6cec2bb49ce24879200dcff16857aa9#12bf284cc6cec2bb49ce24879200dcff16857aa9" dependencies = [ "aes-gcm", "anyhow", @@ -9376,7 +9376,7 @@ dependencies = [ [[package]] name = "seismic-enclave-derive" version = "0.1.0" -source = "git+https://github.com/SeismicSystems/seismic-enclave.git?branch=seismic#12bf284cc6cec2bb49ce24879200dcff16857aa9" +source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=12bf284cc6cec2bb49ce24879200dcff16857aa9#12bf284cc6cec2bb49ce24879200dcff16857aa9" dependencies = [ "proc-macro2", "quote", @@ -9386,7 +9386,7 @@ dependencies = [ [[package]] name = "seismic-prelude" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?branch=usm#caae5e1db5db7ca3c0a28d04a2253ed3759ad14c" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=84dae78acc18792399b83b188e1523d282528427#84dae78acc18792399b83b188e1523d282528427" dependencies = [ "alloy-consensus", "alloy-eip7702", @@ -9409,7 +9409,7 @@ dependencies = [ [[package]] name = "seismic-revm" version = "1.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?branch=usm#f84ed6764583ef588ab1ccf84f9e0a2e94565876" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5df78108a382e66420ad9b815d3f41b5e35f3cc8#5df78108a382e66420ad9b815d3f41b5e35f3cc8" dependencies = [ "auto_impl", "hkdf", @@ -10315,7 +10315,7 @@ dependencies = [ [[package]] name = "syn-solidity" version = "1.3.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?branch=usm#77f2dc24233a2081bc7e5beb5454a771948154cf" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=33e302d06f56bb4dda85359005af7e302f48272f#33e302d06f56bb4dda85359005af7e302f48272f" dependencies = [ "paste", "proc-macro2", diff --git a/Cargo.toml b/Cargo.toml index c51e08ce2..3aa6012ce 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -375,47 +375,47 @@ rexpect = { git = "https://github.com/rust-cli/rexpect", rev = "2ed0b1898d7edaf6 # If our dependencies depend on these things, # then this will override whatever versions they point to # and instead use our local version -seismic-enclave = { git = "https://github.com/SeismicSystems/seismic-enclave.git", branch = "seismic" } +seismic-enclave = { git = "https://github.com/SeismicSystems/seismic-enclave.git", rev = "12bf284cc6cec2bb49ce24879200dcff16857aa9" } # seismic-alloy-core -alloy-dyn-abi = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", branch = "usm" } -alloy-json-abi = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", branch = "usm" } -alloy-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", branch = "usm" } -alloy-sol-macro = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", branch = "usm" } -alloy-sol-macro-expander = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", branch = "usm" } -alloy-sol-macro-input = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", branch = "usm" } -alloy-sol-types = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", branch = "usm" } -alloy-sol-type-parser = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", branch = "usm" } +alloy-dyn-abi = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "33e302d06f56bb4dda85359005af7e302f48272f" } +alloy-json-abi = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "33e302d06f56bb4dda85359005af7e302f48272f" } +alloy-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "33e302d06f56bb4dda85359005af7e302f48272f" } +alloy-sol-macro = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "33e302d06f56bb4dda85359005af7e302f48272f" } +alloy-sol-macro-expander = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "33e302d06f56bb4dda85359005af7e302f48272f" } +alloy-sol-macro-input = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "33e302d06f56bb4dda85359005af7e302f48272f" } +alloy-sol-types = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "33e302d06f56bb4dda85359005af7e302f48272f" } +alloy-sol-type-parser = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "33e302d06f56bb4dda85359005af7e302f48272f" } -alloy-trie = { git = "https://github.com/SeismicSystems/seismic-trie.git", branch = "usm" } +alloy-trie = { git = "https://github.com/SeismicSystems/seismic-trie.git", rev = "d8425918ced1d62043c3a64b382d6fa1d8c25518" } # seismic-revm -revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", branch = "usm" } -revm-context-interface = { git = "https://github.com/SeismicSystems/seismic-revm.git", branch = "usm" } -revm-interpreter = { git = "https://github.com/SeismicSystems/seismic-revm.git", branch = "usm" } -revm-primitives = { git = "https://github.com/SeismicSystems/seismic-revm.git", branch = "usm" } -op-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", branch = "usm" } -seismic-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", branch = "usm" } +revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "5df78108a382e66420ad9b815d3f41b5e35f3cc8" } +revm-context-interface = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "5df78108a382e66420ad9b815d3f41b5e35f3cc8" } +revm-interpreter = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "5df78108a382e66420ad9b815d3f41b5e35f3cc8" } +revm-primitives = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "5df78108a382e66420ad9b815d3f41b5e35f3cc8" } +op-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "5df78108a382e66420ad9b815d3f41b5e35f3cc8" } +seismic-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "5df78108a382e66420ad9b815d3f41b5e35f3cc8" } -revm-inspectors = { git = "https://github.com/SeismicSystems/seismic-revm-inspectors.git", branch = "usm" } +revm-inspectors = { git = "https://github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "60943c133038e5ea0ac9f1afcb7070491ae97ca5" } # seismic-alloy -seismic-alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", branch = "usm" } -seismic-alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", branch = "usm" } -seismic-alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", branch = "usm" } -seismic-alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", branch = "usm" } -seismic-prelude = { git = "https://github.com/SeismicSystems/seismic-alloy.git", branch = "usm" } +seismic-alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "84dae78acc18792399b83b188e1523d282528427" } +seismic-alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "84dae78acc18792399b83b188e1523d282528427" } +seismic-alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "84dae78acc18792399b83b188e1523d282528427" } +seismic-alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "84dae78acc18792399b83b188e1523d282528427" } +seismic-prelude = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "84dae78acc18792399b83b188e1523d282528427" } # alloy-evm -alloy-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", branch = "usm" } -alloy-op-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", branch = "usm" } -alloy-seismic-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", branch = "usm" } +alloy-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "fe3d5455305ed54e6958fc1157f64cd7ca12cb5f" } +alloy-op-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "fe3d5455305ed54e6958fc1157f64cd7ca12cb5f" } +alloy-seismic-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "fe3d5455305ed54e6958fc1157f64cd7ca12cb5f" } # foundry -foundry-compilers = { git = "https://github.com/SeismicSystems/seismic-compilers.git", branch = "usm" } -foundry-compilers-artifacts = { git = "https://github.com/SeismicSystems/seismic-compilers.git", branch = "usm" } -foundry-compilers-artifacts-solc = { git = "https://github.com/SeismicSystems/seismic-compilers.git", branch = "usm" } -foundry-compilers-artifacts-vyper = { git = "https://github.com/SeismicSystems/seismic-compilers.git", branch = "usm" } -foundry-compilers-core = { git = "https://github.com/SeismicSystems/seismic-compilers.git", branch = "usm" } +foundry-compilers = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "5477a89ae892229a90af58580daa8ef4575f00a6" } +foundry-compilers-artifacts = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "5477a89ae892229a90af58580daa8ef4575f00a6" } +foundry-compilers-artifacts-solc = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "5477a89ae892229a90af58580daa8ef4575f00a6" } +foundry-compilers-artifacts-vyper = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "5477a89ae892229a90af58580daa8ef4575f00a6" } +foundry-compilers-core = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "5477a89ae892229a90af58580daa8ef4575f00a6" } -foundry-fork-db = { git = "https://github.com/SeismicSystems/seismic-foundry-fork-db.git", branch = "usm" } +foundry-fork-db = { git = "https://github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "80db51e90a049d1e229f3ea0f5b925193b6be0c4" } From e58f728de57ef658bbf871db1b3463088f92926b Mon Sep 17 00:00:00 2001 From: Ameya Deshmukh Date: Wed, 8 Oct 2025 23:36:54 +0530 Subject: [PATCH 101/130] fix: build issue (#137) --- crates/forge/src/coverage.rs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/crates/forge/src/coverage.rs b/crates/forge/src/coverage.rs index ffb366547..8356a0910 100644 --- a/crates/forge/src/coverage.rs +++ b/crates/forge/src/coverage.rs @@ -166,11 +166,8 @@ impl CoverageReporter for LcovReporter { } } CoverageItemKind::Branch { branch_id, path_id, .. } => { - writeln!( - out, - "BRDA:{line},{branch_id},{path_id},{}", - if hits == 0 { "-" } else { &hits.to_string() } - )?; + let hits_str = if hits == 0 { "-".to_string() } else { hits.to_string() }; + writeln!(out, "BRDA:{line},{branch_id},{path_id},{}", hits_str)?; } } } From c15451254a7a3c05e4ae4be4e83aa49d34c8e913 Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Mon, 17 Nov 2025 13:07:46 -0500 Subject: [PATCH 102/130] Forge: fix cload when not using cache (#139) --- Cargo.lock | 32 +++++++++++------------ Cargo.toml | 14 +++++----- crates/anvil/core/src/eth/mod.rs | 3 +++ crates/anvil/src/eth/api.rs | 34 ++++++++++++++++++++++++- crates/anvil/src/eth/backend/db.rs | 2 +- crates/anvil/src/eth/backend/mem/mod.rs | 18 ++++++++++++- packages/sforge-tests/repos.ts | 12 ++++----- 7 files changed, 83 insertions(+), 32 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index eed356cd2..93de6fd53 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4652,7 +4652,7 @@ dependencies = [ "foundry-compilers-core", "fs_extra", "futures-util", - "itertools 0.13.0", + "itertools 0.14.0", "path-slash", "rand 0.9.2", "rayon", @@ -4949,7 +4949,7 @@ dependencies = [ [[package]] name = "foundry-fork-db" version = "0.18.0" -source = "git+https://github.com/SeismicSystems/seismic-foundry-fork-db.git?rev=80db51e90a049d1e229f3ea0f5b925193b6be0c4#80db51e90a049d1e229f3ea0f5b925193b6be0c4" +source = "git+https://github.com/SeismicSystems/seismic-foundry-fork-db.git?rev=99be7416724334f19d1c6ae163a33fdcc6770bf0#99be7416724334f19d1c6ae163a33fdcc6770bf0" dependencies = [ "alloy-chains", "alloy-consensus", @@ -7323,7 +7323,7 @@ checksum = "a79f352fc3893dcd670172e615afef993a41798a1d3fc0db88a3e60ef2e70ecc" [[package]] name = "op-revm" version = "10.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5df78108a382e66420ad9b815d3f41b5e35f3cc8#5df78108a382e66420ad9b815d3f41b5e35f3cc8" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=b62d5218983b8824585bf36e1d7ac53c1eeacb9c#b62d5218983b8824585bf36e1d7ac53c1eeacb9c" dependencies = [ "auto_impl", "revm", @@ -8501,7 +8501,7 @@ dependencies = [ [[package]] name = "revm" version = "29.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5df78108a382e66420ad9b815d3f41b5e35f3cc8#5df78108a382e66420ad9b815d3f41b5e35f3cc8" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=b62d5218983b8824585bf36e1d7ac53c1eeacb9c#b62d5218983b8824585bf36e1d7ac53c1eeacb9c" dependencies = [ "revm-bytecode", "revm-context", @@ -8519,7 +8519,7 @@ dependencies = [ [[package]] name = "revm-bytecode" version = "6.2.2" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5df78108a382e66420ad9b815d3f41b5e35f3cc8#5df78108a382e66420ad9b815d3f41b5e35f3cc8" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=b62d5218983b8824585bf36e1d7ac53c1eeacb9c#b62d5218983b8824585bf36e1d7ac53c1eeacb9c" dependencies = [ "bitvec", "phf 0.13.1", @@ -8530,7 +8530,7 @@ dependencies = [ [[package]] name = "revm-context" version = "9.0.2" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5df78108a382e66420ad9b815d3f41b5e35f3cc8#5df78108a382e66420ad9b815d3f41b5e35f3cc8" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=b62d5218983b8824585bf36e1d7ac53c1eeacb9c#b62d5218983b8824585bf36e1d7ac53c1eeacb9c" dependencies = [ "bitvec", "cfg-if", @@ -8546,7 +8546,7 @@ dependencies = [ [[package]] name = "revm-context-interface" version = "10.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5df78108a382e66420ad9b815d3f41b5e35f3cc8#5df78108a382e66420ad9b815d3f41b5e35f3cc8" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=b62d5218983b8824585bf36e1d7ac53c1eeacb9c#b62d5218983b8824585bf36e1d7ac53c1eeacb9c" dependencies = [ "alloy-eip2930", "alloy-eip7702", @@ -8561,7 +8561,7 @@ dependencies = [ [[package]] name = "revm-database" version = "7.0.5" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5df78108a382e66420ad9b815d3f41b5e35f3cc8#5df78108a382e66420ad9b815d3f41b5e35f3cc8" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=b62d5218983b8824585bf36e1d7ac53c1eeacb9c#b62d5218983b8824585bf36e1d7ac53c1eeacb9c" dependencies = [ "alloy-eips", "revm-bytecode", @@ -8574,7 +8574,7 @@ dependencies = [ [[package]] name = "revm-database-interface" version = "7.0.5" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5df78108a382e66420ad9b815d3f41b5e35f3cc8#5df78108a382e66420ad9b815d3f41b5e35f3cc8" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=b62d5218983b8824585bf36e1d7ac53c1eeacb9c#b62d5218983b8824585bf36e1d7ac53c1eeacb9c" dependencies = [ "auto_impl", "either", @@ -8586,7 +8586,7 @@ dependencies = [ [[package]] name = "revm-handler" version = "10.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5df78108a382e66420ad9b815d3f41b5e35f3cc8#5df78108a382e66420ad9b815d3f41b5e35f3cc8" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=b62d5218983b8824585bf36e1d7ac53c1eeacb9c#b62d5218983b8824585bf36e1d7ac53c1eeacb9c" dependencies = [ "auto_impl", "derive-where", @@ -8604,7 +8604,7 @@ dependencies = [ [[package]] name = "revm-inspector" version = "10.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5df78108a382e66420ad9b815d3f41b5e35f3cc8#5df78108a382e66420ad9b815d3f41b5e35f3cc8" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=b62d5218983b8824585bf36e1d7ac53c1eeacb9c#b62d5218983b8824585bf36e1d7ac53c1eeacb9c" dependencies = [ "auto_impl", "either", @@ -8640,7 +8640,7 @@ dependencies = [ [[package]] name = "revm-interpreter" version = "25.0.2" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5df78108a382e66420ad9b815d3f41b5e35f3cc8#5df78108a382e66420ad9b815d3f41b5e35f3cc8" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=b62d5218983b8824585bf36e1d7ac53c1eeacb9c#b62d5218983b8824585bf36e1d7ac53c1eeacb9c" dependencies = [ "revm-bytecode", "revm-context-interface", @@ -8652,7 +8652,7 @@ dependencies = [ [[package]] name = "revm-precompile" version = "27.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5df78108a382e66420ad9b815d3f41b5e35f3cc8#5df78108a382e66420ad9b815d3f41b5e35f3cc8" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=b62d5218983b8824585bf36e1d7ac53c1eeacb9c#b62d5218983b8824585bf36e1d7ac53c1eeacb9c" dependencies = [ "ark-bls12-381", "ark-bn254", @@ -8676,7 +8676,7 @@ dependencies = [ [[package]] name = "revm-primitives" version = "20.2.1" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5df78108a382e66420ad9b815d3f41b5e35f3cc8#5df78108a382e66420ad9b815d3f41b5e35f3cc8" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=b62d5218983b8824585bf36e1d7ac53c1eeacb9c#b62d5218983b8824585bf36e1d7ac53c1eeacb9c" dependencies = [ "alloy-primitives", "num_enum", @@ -8687,7 +8687,7 @@ dependencies = [ [[package]] name = "revm-state" version = "7.0.5" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5df78108a382e66420ad9b815d3f41b5e35f3cc8#5df78108a382e66420ad9b815d3f41b5e35f3cc8" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=b62d5218983b8824585bf36e1d7ac53c1eeacb9c#b62d5218983b8824585bf36e1d7ac53c1eeacb9c" dependencies = [ "bitflags 2.9.4", "revm-bytecode", @@ -9409,7 +9409,7 @@ dependencies = [ [[package]] name = "seismic-revm" version = "1.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=5df78108a382e66420ad9b815d3f41b5e35f3cc8#5df78108a382e66420ad9b815d3f41b5e35f3cc8" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=b62d5218983b8824585bf36e1d7ac53c1eeacb9c#b62d5218983b8824585bf36e1d7ac53c1eeacb9c" dependencies = [ "auto_impl", "hkdf", diff --git a/Cargo.toml b/Cargo.toml index 3aa6012ce..28768efb7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -390,12 +390,12 @@ alloy-sol-type-parser = { git = "https://github.com/SeismicSystems/seismic-alloy alloy-trie = { git = "https://github.com/SeismicSystems/seismic-trie.git", rev = "d8425918ced1d62043c3a64b382d6fa1d8c25518" } # seismic-revm -revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "5df78108a382e66420ad9b815d3f41b5e35f3cc8" } -revm-context-interface = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "5df78108a382e66420ad9b815d3f41b5e35f3cc8" } -revm-interpreter = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "5df78108a382e66420ad9b815d3f41b5e35f3cc8" } -revm-primitives = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "5df78108a382e66420ad9b815d3f41b5e35f3cc8" } -op-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "5df78108a382e66420ad9b815d3f41b5e35f3cc8" } -seismic-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "5df78108a382e66420ad9b815d3f41b5e35f3cc8" } +revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "b62d5218983b8824585bf36e1d7ac53c1eeacb9c" } +revm-context-interface = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "b62d5218983b8824585bf36e1d7ac53c1eeacb9c" } +revm-interpreter = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "b62d5218983b8824585bf36e1d7ac53c1eeacb9c" } +revm-primitives = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "b62d5218983b8824585bf36e1d7ac53c1eeacb9c" } +op-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "b62d5218983b8824585bf36e1d7ac53c1eeacb9c" } +seismic-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "b62d5218983b8824585bf36e1d7ac53c1eeacb9c" } revm-inspectors = { git = "https://github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "60943c133038e5ea0ac9f1afcb7070491ae97ca5" } @@ -418,4 +418,4 @@ foundry-compilers-artifacts-solc = { git = "https://github.com/SeismicSystems/se foundry-compilers-artifacts-vyper = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "5477a89ae892229a90af58580daa8ef4575f00a6" } foundry-compilers-core = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "5477a89ae892229a90af58580daa8ef4575f00a6" } -foundry-fork-db = { git = "https://github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "80db51e90a049d1e229f3ea0f5b925193b6be0c4" } +foundry-fork-db = { git = "https://github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "99be7416724334f19d1c6ae163a33fdcc6770bf0" } diff --git a/crates/anvil/core/src/eth/mod.rs b/crates/anvil/core/src/eth/mod.rs index 1529a5e42..f3df4d7c5 100644 --- a/crates/anvil/core/src/eth/mod.rs +++ b/crates/anvil/core/src/eth/mod.rs @@ -84,6 +84,9 @@ pub enum EthRequest { #[serde(rename = "eth_getStorageAt")] EthGetStorageAt(Address, U256, Option), + #[serde(rename = "eth_getStorageWithPrivacy")] + EthGetStorageWithPrivacy(Address, U256, Option), + #[serde(rename = "eth_getBlockByHash")] EthGetBlockByHash(B256, bool), diff --git a/crates/anvil/src/eth/api.rs b/crates/anvil/src/eth/api.rs index 99eeb5696..3fef8d2a9 100644 --- a/crates/anvil/src/eth/api.rs +++ b/crates/anvil/src/eth/api.rs @@ -43,7 +43,7 @@ use alloy_network::{ BlockResponse, NetworkWallet, TransactionBuilder, TransactionResponse, eip2718::Decodable2718, }; use alloy_primitives::{ - Address, B64, B256, Bytes, Signature, TxHash, TxKind, U64, U256, + Address, B64, B256, Bytes, FlaggedStorage, Signature, TxHash, TxKind, U64, U256, map::{HashMap, HashSet}, }; use alloy_provider::utils::{ @@ -221,6 +221,9 @@ impl EthApi { EthRequest::EthGetStorageAt(addr, slot, block) => { self.storage_at(addr, slot, block).await.to_rpc_result() } + EthRequest::EthGetStorageWithPrivacy(addr, slot, block) => { + self.storage_with_privacy(addr, slot, block).await.to_rpc_result() + } EthRequest::EthGetBlockByHash(hash, full) => { if full { self.block_by_hash_full(hash).await.to_rpc_result() @@ -825,6 +828,35 @@ impl EthApi { self.backend.storage_at(address, index, Some(block_request)).await } + /// Returns content of the storage at given address with privacy flag. + /// + /// Handler for custom RPC call: `eth_getStorageWithPrivacy` + pub async fn storage_with_privacy( + &self, + address: Address, + index: U256, + block_number: Option, + ) -> Result { + node_info!("eth_getStorageWithPrivacy"); + let block_request = self.block_request(block_number).await?; + + // check if the number predates the fork, if in fork mode + if let BlockRequest::Number(number) = block_request + && let Some(fork) = self.get_fork() + && fork.predates_fork(number) + { + // For forked data, we don't have privacy info, assume public + return Ok(FlaggedStorage::from( + fork.storage_at(address, index, Some(BlockNumber::Number(number))).await?, + )); + } + + self.backend + .storage_with_privacy(address, index, Some(block_request)) + .await + .map_err(|e| e.into()) + } + /// Returns block with given hash. /// /// Handler for ETH RPC call: `eth_getBlockByHash` diff --git a/crates/anvil/src/eth/backend/db.rs b/crates/anvil/src/eth/backend/db.rs index 8a5e3461f..6bad36bec 100644 --- a/crates/anvil/src/eth/backend/db.rs +++ b/crates/anvil/src/eth/backend/db.rs @@ -169,7 +169,7 @@ pub trait Db: ); for (k, v) in account.storage.into_iter() { - self.set_storage_at(addr, k.into(), v.into())?; + self.set_storage_at(addr, k.into(), v)?; } } Ok(true) diff --git a/crates/anvil/src/eth/backend/mem/mod.rs b/crates/anvil/src/eth/backend/mem/mod.rs index 5623db801..022e17058 100644 --- a/crates/anvil/src/eth/backend/mem/mod.rs +++ b/crates/anvil/src/eth/backend/mem/mod.rs @@ -117,7 +117,7 @@ use revm::{ secp256r1::{P256VERIFY, P256VERIFY_ADDRESS, P256VERIFY_BASE_GAS_FEE}, u64_to_address, }, - primitives::{KECCAK_EMPTY, hardfork::SpecId as RevmSpecId}, + primitives::{FlaggedStorage, KECCAK_EMPTY, hardfork::SpecId as RevmSpecId}, state::AccountInfo, }; use std::{ @@ -2663,6 +2663,22 @@ impl Backend { .await? } + /// Returns storage at given address and index with privacy flag + /// + /// Handler for custom RPC call: `eth_getStorageWithPrivacy` + pub async fn storage_with_privacy( + &self, + address: Address, + index: U256, + block_request: Option, + ) -> Result { + self.with_database_at(block_request, |db, _| { + trace!(target: "backend", "get storage with privacy for {:?} at {:?}", address, index); + Ok(db.storage_ref(address, index)?) + }) + .await? + } + /// Returns the code of the address /// /// If the code is not present and fork mode is enabled then this will try to fetch it from the diff --git a/packages/sforge-tests/repos.ts b/packages/sforge-tests/repos.ts index 9cfcb76fd..0b8d039fb 100644 --- a/packages/sforge-tests/repos.ts +++ b/packages/sforge-tests/repos.ts @@ -10,12 +10,12 @@ export const repos: Repo[] = [ // repo: "forge-std", // remote: "git@github.com:foundry-rs/forge-std.git", // }, - { - repo: "moonhatch", - contracts: "contracts", - remote: "git@github.com:SeismicSystems/moonhatch.git", - clone: false, - }, + // { + // repo: "moonhatch", + // contracts: "contracts", + // remote: "git@github.com:SeismicSystems/moonhatch.git", + // clone: false, + // }, { repo: "poker", contracts: "contracts", From 79c300e491d684663d00d3a5ac21da43d57bdebf Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Tue, 2 Dec 2025 15:56:42 -0500 Subject: [PATCH 103/130] Update foundry-fork-db commit to support getStorageAt fallback (#141) --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 93de6fd53..296096565 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4949,7 +4949,7 @@ dependencies = [ [[package]] name = "foundry-fork-db" version = "0.18.0" -source = "git+https://github.com/SeismicSystems/seismic-foundry-fork-db.git?rev=99be7416724334f19d1c6ae163a33fdcc6770bf0#99be7416724334f19d1c6ae163a33fdcc6770bf0" +source = "git+https://github.com/SeismicSystems/seismic-foundry-fork-db.git?rev=69b938d#69b938d8b8d4357fff432a79ad63b6eb10e5ebc3" dependencies = [ "alloy-chains", "alloy-consensus", diff --git a/Cargo.toml b/Cargo.toml index 28768efb7..554c6e9a9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -418,4 +418,4 @@ foundry-compilers-artifacts-solc = { git = "https://github.com/SeismicSystems/se foundry-compilers-artifacts-vyper = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "5477a89ae892229a90af58580daa8ef4575f00a6" } foundry-compilers-core = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "5477a89ae892229a90af58580daa8ef4575f00a6" } -foundry-fork-db = { git = "https://github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "99be7416724334f19d1c6ae163a33fdcc6770bf0" } +foundry-fork-db = { git = "https://github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "69b938d" } From 295bf1ec01b4bd439d36e8a510203c100f465953 Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Mon, 8 Dec 2025 12:56:27 -0500 Subject: [PATCH 104/130] Lock svm-rs to 0.5.19 (#143) --- crates/forge/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/forge/Cargo.toml b/crates/forge/Cargo.toml index f1db404e0..14fdfbe91 100644 --- a/crates/forge/Cargo.toml +++ b/crates/forge/Cargo.toml @@ -112,7 +112,7 @@ mockall = "0.13" globset = "0.4" paste = "1.0" similar-asserts.workspace = true -svm = { package = "svm-rs", version = "0.5", default-features = false, features = [ +svm = { package = "svm-rs", version = "=0.5.19", default-features = false, features = [ "rustls", ] } tempfile.workspace = true From 4acafe47563d8ce75b017b4493923707f749aebb Mon Sep 17 00:00:00 2001 From: Ameya Deshmukh Date: Tue, 9 Dec 2025 23:33:16 +0530 Subject: [PATCH 105/130] feat: compat with latest dependencies + bump `svm-rs` to `0.5.22` (#138) --- Cargo.lock | 2464 +++++++++--------- Cargo.toml | 48 +- crates/anvil/core/src/eth/transaction/mod.rs | 7 +- crates/anvil/src/eth/api.rs | 8 +- crates/anvil/src/eth/backend/mem/mod.rs | 26 +- crates/cheatcodes/src/evm.rs | 4 +- crates/chisel/src/runner.rs | 1 - crates/cli/src/utils/cmd.rs | 1 - crates/config/src/lib.rs | 40 +- crates/evm/evm/src/executors/mod.rs | 2 +- crates/evm/evm/src/inspectors/stack.rs | 4 +- crates/forge/Cargo.toml | 2 +- crates/forge/tests/cli/create.rs | 4 +- crates/forge/tests/cli/utils.rs | 10 +- crates/lint/src/sol/med/div_mul.rs | 11 +- crates/script/src/lib.rs | 10 +- crates/script/src/runner.rs | 1 - 17 files changed, 1387 insertions(+), 1256 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 296096565..f7726218c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 4 [[package]] name = "addr2line" -version = "0.24.2" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" dependencies = [ "gimli", ] @@ -59,7 +59,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ "cfg-if", - "getrandom 0.3.3", + "getrandom 0.3.4", "once_cell", "version_check", "zerocopy", @@ -67,9 +67,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", ] @@ -82,9 +82,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy-chains" -version = "0.2.9" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef8ff73a143281cb77c32006b04af9c047a6b8fe5860e85a88ad325328965355" +checksum = "ff8c665521d11efbb11d5e5c5d63971426bb63df00d24545baf97e7f3dc91c0c" dependencies = [ "alloy-primitives", "num_enum", @@ -94,9 +94,9 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "1.0.32" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a3bd0305a44fb457cae77de1e82856eadd42ea3cdf0dae29df32eb3b592979" +checksum = "90d103d3e440ad6f703dd71a5b58a6abd24834563bde8a5fabe706e00242f810" dependencies = [ "alloy-eips", "alloy-primitives", @@ -106,22 +106,23 @@ dependencies = [ "alloy-tx-macros", "auto_impl", "c-kzg", - "derive_more 2.0.1", + "derive_more 2.1.0", "either", "k256", "once_cell", "rand 0.8.5", "secp256k1 0.30.0", "serde", + "serde_json", "serde_with", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "alloy-consensus-any" -version = "1.0.32" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a842b4023f571835e62ac39fb8d523d19fcdbacfa70bf796ff96e7e19586f50" +checksum = "48ead76c8c84ab3a50c31c56bc2c748c2d64357ad2131c32f9b10ab790a25e1a" dependencies = [ "alloy-consensus", "alloy-eips", @@ -133,9 +134,9 @@ dependencies = [ [[package]] name = "alloy-contract" -version = "1.0.32" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "591104333286b52b03ec4e8162983e31122b318d21ae2b0900d1e8b51727ad40" +checksum = "d5903097e4c131ad2dd80d87065f23c715ccb9cdb905fa169dffab8e1e798bae" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -151,20 +152,20 @@ dependencies = [ "futures", "futures-util", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "alloy-dyn-abi" -version = "1.3.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=33e302d06f56bb4dda85359005af7e302f48272f#33e302d06f56bb4dda85359005af7e302f48272f" +version = "1.4.1" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=68313cb636365501a699c47865807158544eace1#68313cb636365501a699c47865807158544eace1" dependencies = [ "alloy-json-abi", "alloy-primitives", "alloy-sol-type-parser", "alloy-sol-types", "arbitrary", - "derive_more 2.0.1", + "derive_more 2.1.0", "itoa", "proptest", "serde", @@ -182,38 +183,40 @@ dependencies = [ "alloy-rlp", "crc", "serde", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[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", + "borsh", "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", + "borsh", "k256", "serde", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "alloy-eips" -version = "1.0.32" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cd749c57f38f8cbf433e651179fc5a676255e6b95044f467d49255d2b81725a" +checksum = "7bdbec74583d0067798d77afa43d58f00d93035335d7ceaa5d3f93857d461bb9" dependencies = [ "alloy-eip2124", "alloy-eip2930", @@ -223,54 +226,54 @@ dependencies = [ "alloy-serde", "auto_impl", "c-kzg", - "derive_more 2.0.1", + "derive_more 2.1.0", "either", "serde", "serde_with", "sha2", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "alloy-ens" -version = "1.0.32" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a7feb13ccb13b784cdd5c1bb8756f74dd5b322c10ccfb737c8979ff26f9808" +checksum = "04b7b1959e53092cb57ee822e1129a32e90bab7a1ce4e3e43ba909b3a43d07ee" dependencies = [ "alloy-contract", "alloy-primitives", "alloy-provider", "alloy-sol-types", "async-trait", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "alloy-evm" version = "0.20.1" -source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=fe3d5455305ed54e6958fc1157f64cd7ca12cb5f#fe3d5455305ed54e6958fc1157f64cd7ca12cb5f" +source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=db34d7185e62c57f7fa4ac67f169113b14097a99#db34d7185e62c57f7fa4ac67f169113b14097a99" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-hardforks 0.3.3", + "alloy-hardforks 0.3.5", "alloy-primitives", "alloy-rpc-types-eth", "alloy-sol-types", "auto_impl", - "derive_more 2.0.1", + "derive_more 2.1.0", "op-alloy-consensus", "op-revm", "revm", "seismic-alloy-consensus", "seismic-revm", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "alloy-genesis" -version = "1.0.32" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d32cbf6c26d7d87e8a4e5925bbce41456e0bbeed95601add3443af277cd604e" +checksum = "c25d5acb35706e683df1ea333c862bdb6b7c5548836607cd5bb56e501cca0b4f" dependencies = [ "alloy-eips", "alloy-primitives", @@ -294,9 +297,9 @@ dependencies = [ [[package]] name = "alloy-hardforks" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d66cfdf265bf52c0c4a952960c854c3683c71ff2fc02c9b8c317c691fd3bc28" +checksum = "889eb3949b58368a09d4f16931c660275ef5fb08e5fbd4a96573b19c7085c41f" dependencies = [ "alloy-chains", "alloy-eip2124", @@ -307,8 +310,8 @@ dependencies = [ [[package]] name = "alloy-json-abi" -version = "1.3.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=33e302d06f56bb4dda85359005af7e302f48272f#33e302d06f56bb4dda85359005af7e302f48272f" +version = "1.4.1" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=68313cb636365501a699c47865807158544eace1#68313cb636365501a699c47865807158544eace1" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -318,24 +321,24 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "1.0.32" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f614019a029c8fec14ae661aa7d4302e6e66bdbfb869dab40e78dcfba935fc97" +checksum = "f72cf87cda808e593381fb9f005ffa4d2475552b7a6c5ac33d087bf77d82abd0" dependencies = [ "alloy-primitives", "alloy-sol-types", - "http 1.3.1", + "http 1.4.0", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", "tracing", ] [[package]] name = "alloy-network" -version = "1.0.32" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be8b6d58e98803017bbfea01dde96c4d270a29e7aed3beb65c8d28b5ab464e0e" +checksum = "612296e6b723470bb1101420a73c63dfd535aa9bf738ce09951aedbd4ab7292e" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -350,18 +353,18 @@ dependencies = [ "alloy-sol-types", "async-trait", "auto_impl", - "derive_more 2.0.1", + "derive_more 2.1.0", "futures-utils-wasm", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "alloy-network-primitives" -version = "1.0.32" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db489617bffe14847bf89f175b1c183e5dd7563ef84713936e2c34255cfbd845" +checksum = "a0e7918396eecd69d9c907046ec8a93fb09b89e2f325d5e7ea9c4e3929aa0dd2" dependencies = [ "alloy-consensus", "alloy-eips", @@ -373,7 +376,7 @@ dependencies = [ [[package]] name = "alloy-op-evm" version = "0.20.1" -source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=fe3d5455305ed54e6958fc1157f64cd7ca12cb5f#fe3d5455305ed54e6958fc1157f64cd7ca12cb5f" +source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=db34d7185e62c57f7fa4ac67f169113b14097a99#db34d7185e62c57f7fa4ac67f169113b14097a99" dependencies = [ "alloy-consensus", "alloy-eips", @@ -388,30 +391,31 @@ dependencies = [ [[package]] name = "alloy-op-hardforks" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8a2823360cd87c008df4b8b78794924948c3508e745dfed7d2b685774cb473e" +checksum = "599c1d7dfbccb66603cb93fde00980d12848d32fe5e814f50562104a92df6487" dependencies = [ "alloy-chains", - "alloy-hardforks 0.3.3", + "alloy-hardforks 0.3.5", + "alloy-primitives", "auto_impl", ] [[package]] name = "alloy-primitives" -version = "1.3.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=33e302d06f56bb4dda85359005af7e302f48272f#33e302d06f56bb4dda85359005af7e302f48272f" +version = "1.4.1" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=68313cb636365501a699c47865807158544eace1#68313cb636365501a699c47865807158544eace1" dependencies = [ "alloy-rlp", "arbitrary", "bytes", "cfg-if", "const-hex", - "derive_more 2.0.1", - "foldhash", - "getrandom 0.3.3", - "hashbrown 0.15.5", - "indexmap 2.11.4", + "derive_more 2.1.0", + "foldhash 0.2.0", + "getrandom 0.3.4", + "hashbrown 0.16.1", + "indexmap 2.12.1", "itoa", "k256", "keccak-asm", @@ -428,9 +432,9 @@ dependencies = [ [[package]] name = "alloy-provider" -version = "1.0.32" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed90278374435e076a04dbddbb6d714bdd518eb274a64dbd70f65701429dd747" +checksum = "55c1313a527a2e464d067c031f3c2ec073754ef615cc0eabca702fd0fe35729c" dependencies = [ "alloy-chains", "alloy-consensus", @@ -464,7 +468,7 @@ dependencies = [ "reqwest", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tracing", "url", @@ -473,9 +477,9 @@ dependencies = [ [[package]] name = "alloy-pubsub" -version = "1.0.32" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f539a4caaa5496ad54af38f5615adb54cc7b3ec1a42e530e706291cce074f4a" +checksum = "810766eeed6b10ffa11815682b3f37afc5019809e3b470b23555297d5770ce63" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -512,14 +516,14 @@ checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] name = "alloy-rpc-client" -version = "1.0.32" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33732242ca63f107f5f8284190244038905fb233280f4b7c41f641d4f584d40d" +checksum = "45f802228273056528dfd6cc8845cc91a7c7e0c6fc1a66d19e8673743dacdc7e" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -543,9 +547,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types" -version = "1.0.32" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2683049c5f3037d64722902e2c1081f3d45de68696aca0511bbea834905746" +checksum = "33ff3df608dcabd6bdd197827ff2b8faaa6cefe0c462f7dc5e74108666a01f56" dependencies = [ "alloy-primitives", "alloy-rpc-types-anvil", @@ -559,9 +563,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" -version = "1.0.32" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b757081f2a68e683de3731108494fa058036d5651bf10141ec2430bc1315c362" +checksum = "ac2bc988d7455e02dfb53460e1caa61f932b3f8452e12424e68ba8dcf60bba90" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -571,9 +575,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" -version = "1.0.32" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18f27c0c41a16cd0af4f5dbf791f7be2a60502ca8b0e840e0ad29803fac2d587" +checksum = "cdbf6d1766ca41e90ac21c4bc5cbc5e9e965978a25873c3f90b3992d905db4cb" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -582,28 +586,28 @@ dependencies = [ [[package]] name = "alloy-rpc-types-debug" -version = "1.0.32" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d46cb226f1c8071875f4d0d8a0eb3ac571fcc49cd3bcdc20a5818de7b6ef0634" +checksum = "4936f579d9d10eae01772b2ab3497f9d568684f05f26f8175e12f9a1a2babc33" dependencies = [ "alloy-primitives", - "derive_more 2.0.1", + "derive_more 2.1.0", "serde", "serde_with", ] [[package]] name = "alloy-rpc-types-engine" -version = "1.0.32" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dec35a39206f0e04e8544d763c9fe324cc01f74de8821ef4b61e25ac329682f9" +checksum = "07da696cc7fbfead4b1dda8afe408685cae80975cbb024f843ba74d9639cd0d3" dependencies = [ "alloy-consensus", "alloy-eips", "alloy-primitives", "alloy-rlp", "alloy-serde", - "derive_more 2.0.1", + "derive_more 2.1.0", "jsonwebtoken", "rand 0.8.5", "serde", @@ -612,9 +616,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" -version = "1.0.32" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f5812f81c3131abc2cd8953dc03c41999e180cff7252abbccaba68676e15027" +checksum = "a15e4831b71eea9d20126a411c1c09facf1d01d5cac84fd51d532d3c429cfc26" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -628,28 +632,28 @@ dependencies = [ "serde", "serde_json", "serde_with", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "alloy-rpc-types-trace" -version = "1.0.32" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1070e7e92dae6a9c48885980f4f9ca9faa70f945fcd62fbb94472182ca08854f" +checksum = "fb0c800e2ce80829fca1491b3f9063c29092850dc6cf19249d5f678f0ce71bb0" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", "alloy-serde", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "alloy-rpc-types-txpool" -version = "1.0.32" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f070754e160f6e34038305f472137eeb04170586d60d69c5d1e06fefe362a1f" +checksum = "2f82e3068673a3cf93fbbc2f60a59059395cd54bbe39af895827faa5e641cc8f" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -660,16 +664,15 @@ dependencies = [ [[package]] name = "alloy-seismic-evm" version = "0.20.1" -source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=fe3d5455305ed54e6958fc1157f64cd7ca12cb5f#fe3d5455305ed54e6958fc1157f64cd7ca12cb5f" +source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=db34d7185e62c57f7fa4ac67f169113b14097a99#db34d7185e62c57f7fa4ac67f169113b14097a99" dependencies = [ "alloy-consensus", "alloy-eips", "alloy-evm", - "alloy-hardforks 0.3.3", + "alloy-hardforks 0.3.5", "alloy-primitives", "auto_impl", "revm", - "schnorrkel", "seismic-alloy-consensus", "seismic-enclave", "seismic-revm", @@ -677,9 +680,9 @@ dependencies = [ [[package]] name = "alloy-serde" -version = "1.0.32" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04dfe41a47805a34b848c83448946ca96f3d36842e8c074bcf8fa0870e337d12" +checksum = "751d1887f7d202514a82c5b3caf28ee8bd4a2ad9549e4f498b6f0bff99b52add" dependencies = [ "alloy-primitives", "serde", @@ -688,9 +691,9 @@ dependencies = [ [[package]] name = "alloy-signer" -version = "1.0.32" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f79237b4c1b0934d5869deea4a54e6f0a7425a8cd943a739d6293afdf893d847" +checksum = "9cf0b42ffbf558badfecf1dde0c3c5ed91f29bb7e97876d0bed008c3d5d67171" dependencies = [ "alloy-dyn-abi", "alloy-primitives", @@ -700,14 +703,14 @@ dependencies = [ "either", "elliptic-curve", "k256", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "alloy-signer-aws" -version = "1.0.32" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5cbc38711b7e5ee7b53a7489e8e718a54c6b138d382cfb86e293a2ad5ac894d" +checksum = "8ed6b73b812ab342d09de85eb302598a3a0c4d744cbe982ed76e309dcec9ddfa" dependencies = [ "alloy-consensus", "alloy-network", @@ -718,15 +721,15 @@ dependencies = [ "aws-sdk-kms", "k256", "spki", - "thiserror 2.0.16", + "thiserror 2.0.17", "tracing", ] [[package]] name = "alloy-signer-gcp" -version = "1.0.32" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc77e474f2384192f1f27a07a2dd13dd7530064ae96c5941aa1b6ddf33fc7540" +checksum = "ba2bd8fcc42b831aa219deac7a0b642eb418446a402a4de3b302c6e9ad09702c" dependencies = [ "alloy-consensus", "alloy-network", @@ -736,15 +739,15 @@ dependencies = [ "gcloud-sdk", "k256", "spki", - "thiserror 2.0.16", + "thiserror 2.0.17", "tracing", ] [[package]] name = "alloy-signer-ledger" -version = "1.0.32" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56b13d57b88e25281272533cd55bbf086db9b867be001e02954aa3346ea9fa8e" +checksum = "dbc99b13a9f90efcc9a4dbc817909a78b0cd52fe734f81ed48a7032a658fecd8" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -756,15 +759,15 @@ dependencies = [ "coins-ledger", "futures-util", "semver 1.0.27", - "thiserror 2.0.16", + "thiserror 2.0.17", "tracing", ] [[package]] name = "alloy-signer-local" -version = "1.0.32" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6e90a3858da59d1941f496c17db8d505f643260f7e97cdcdd33823ddca48fc1" +checksum = "3e7d555ee5f27be29af4ae312be014b57c6cff9acb23fe2cf008500be6ca7e33" dependencies = [ "alloy-consensus", "alloy-network", @@ -776,15 +779,15 @@ dependencies = [ "eth-keystore", "k256", "rand 0.8.5", - "thiserror 2.0.16", + "thiserror 2.0.17", "zeroize", ] [[package]] name = "alloy-signer-trezor" -version = "1.0.32" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c58930e48ab90c91978aaaccb5c042858c5982cb3a6f9432742fbf939b80f58a" +checksum = "f35ab4ebc1cdfa766332bcdf9b4f6d559a001edd9bea72c39fd88d62c976f1d7" dependencies = [ "alloy-consensus", "alloy-network", @@ -792,46 +795,46 @@ dependencies = [ "alloy-signer", "async-trait", "semver 1.0.27", - "thiserror 2.0.16", + "thiserror 2.0.17", "tracing", "trezor-client", ] [[package]] name = "alloy-sol-macro" -version = "1.3.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=33e302d06f56bb4dda85359005af7e302f48272f#33e302d06f56bb4dda85359005af7e302f48272f" +version = "1.4.1" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=68313cb636365501a699c47865807158544eace1#68313cb636365501a699c47865807158544eace1" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] name = "alloy-sol-macro-expander" -version = "1.3.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=33e302d06f56bb4dda85359005af7e302f48272f#33e302d06f56bb4dda85359005af7e302f48272f" +version = "1.4.1" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=68313cb636365501a699c47865807158544eace1#68313cb636365501a699c47865807158544eace1" dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", "const-hex", "heck", - "indexmap 2.11.4", + "indexmap 2.12.1", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", "syn-solidity", "tiny-keccak", ] [[package]] name = "alloy-sol-macro-input" -version = "1.3.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=33e302d06f56bb4dda85359005af7e302f48272f#33e302d06f56bb4dda85359005af7e302f48272f" +version = "1.4.1" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=68313cb636365501a699c47865807158544eace1#68313cb636365501a699c47865807158544eace1" dependencies = [ "alloy-json-abi", "const-hex", @@ -841,14 +844,14 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.106", + "syn 2.0.111", "syn-solidity", ] [[package]] name = "alloy-sol-type-parser" -version = "1.3.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=33e302d06f56bb4dda85359005af7e302f48272f#33e302d06f56bb4dda85359005af7e302f48272f" +version = "1.4.1" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=68313cb636365501a699c47865807158544eace1#68313cb636365501a699c47865807158544eace1" dependencies = [ "serde", "winnow", @@ -856,8 +859,8 @@ dependencies = [ [[package]] name = "alloy-sol-types" -version = "1.3.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=33e302d06f56bb4dda85359005af7e302f48272f#33e302d06f56bb4dda85359005af7e302f48272f" +version = "1.4.1" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=68313cb636365501a699c47865807158544eace1#68313cb636365501a699c47865807158544eace1" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -868,21 +871,20 @@ dependencies = [ [[package]] name = "alloy-transport" -version = "1.0.32" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb43750e137fe3a69a325cd89a8f8e2bbf4f83e70c0f60fbe49f22511ca075e8" +checksum = "71b3deee699d6f271eab587624a9fa84d02d0755db7a95a043d52a6488d16ebe" dependencies = [ "alloy-json-rpc", - "alloy-primitives", "auto_impl", "base64 0.22.1", - "derive_more 2.0.1", + "derive_more 2.1.0", "futures", "futures-utils-wasm", "parking_lot", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tower 0.5.2", "tracing", @@ -892,9 +894,9 @@ dependencies = [ [[package]] name = "alloy-transport-http" -version = "1.0.32" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9b42c7d8b666eed975739201f407afc3320d3cd2e4d807639c2918fc736ea67" +checksum = "1720bd2ba8fe7e65138aca43bb0f680e4e0bcbd3ca39bf9d3035c9d7d2757f24" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -907,9 +909,9 @@ dependencies = [ [[package]] name = "alloy-transport-ipc" -version = "1.0.32" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f07b920e2d4ec9b08cb12a32fa8e5e95dfcf706fe1d7f46453e24ee7089e29f0" +checksum = "ea89c214c7ddd2bcad100da929d6b642bbfed85788caf3b1be473abacd3111f9" dependencies = [ "alloy-json-rpc", "alloy-pubsub", @@ -928,18 +930,18 @@ dependencies = [ [[package]] name = "alloy-transport-ws" -version = "1.0.32" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83db1cc29cce5f692844d6cf1b6b270ae308219c5d90a7246a74f3479b9201c2" +checksum = "571aadf0afce0d515a28b2c6352662a39cb9f48b4eeff9a5c34557d6ea126730" dependencies = [ "alloy-pubsub", "alloy-transport", "futures", - "http 1.3.1", + "http 1.4.0", "rustls", "serde_json", "tokio", - "tokio-tungstenite", + "tokio-tungstenite 0.26.2", "tracing", "ws_stream_wasm", ] @@ -952,7 +954,7 @@ dependencies = [ "alloy-primitives", "alloy-rlp", "arrayvec", - "derive_more 2.0.1", + "derive_more 2.1.0", "nybbles", "serde", "smallvec", @@ -961,22 +963,21 @@ dependencies = [ [[package]] name = "alloy-tx-macros" -version = "1.0.32" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e434e0917dce890f755ea774f59d6f12557bc8c7dd9fa06456af80cfe0f0181e" +checksum = "333544408503f42d7d3792bfc0f7218b643d968a03d2c0ed383ae558fb4a76d0" dependencies = [ - "alloy-primitives", "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] name = "ammonia" -version = "4.1.1" +version = "4.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6b346764dd0814805de8abf899fe03065bcee69bb1a4771c785817e39f3978f" +checksum = "17e913097e1a2124b46746c980134e8c954bc17a6a59bb3fde96f088d126dde6" dependencies = [ "cssparser", "html5ever", @@ -1006,9 +1007,9 @@ dependencies = [ [[package]] name = "annotate-snippets" -version = "0.12.4" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8ee2f071d418442e50c643c4e7a4051ce3abd9dba11713cc6cdf4f4a3f3cca5" +checksum = "96401ca08501972288ecbcde33902fce858bf73fbcbdf91dab8c3a9544e106bb" dependencies = [ "anstyle", "memchr", @@ -1017,9 +1018,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.20" +version = "0.6.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ae563653d1938f79b1ab1b5e668c87c76a9930414574a6583a7b7e11a8e6192" +checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" dependencies = [ "anstyle", "anstyle-parse", @@ -1032,9 +1033,9 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.11" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" +checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" [[package]] name = "anstyle-lossy" @@ -1056,11 +1057,11 @@ dependencies = [ [[package]] name = "anstyle-query" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" dependencies = [ - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -1078,13 +1079,13 @@ dependencies = [ [[package]] name = "anstyle-wincon" -version = "3.0.10" +version = "3.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" dependencies = [ "anstyle", "once_cell_polyfill", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -1098,7 +1099,7 @@ dependencies = [ "alloy-eips", "alloy-evm", "alloy-genesis", - "alloy-hardforks 0.3.3", + "alloy-hardforks 0.3.5", "alloy-json-abi", "alloy-json-rpc", "alloy-network", @@ -1154,10 +1155,10 @@ dependencies = [ "serde", "serde_json", "tempfile", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tracing", - "tracing-subscriber 0.3.20", + "tracing-subscriber 0.3.22", "url", "yansi", ] @@ -1184,7 +1185,7 @@ dependencies = [ "seismic-prelude", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -1210,7 +1211,7 @@ dependencies = [ "pin-project 1.1.10", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio-util", "tower-http", "tracing", @@ -1218,9 +1219,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.99" +version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" [[package]] name = "arbitrary" @@ -1371,7 +1372,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" dependencies = [ "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -1409,7 +1410,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -1498,7 +1499,7 @@ checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -1557,9 +1558,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.30" +version = "0.4.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "977eb15ea9efd848bb8a4a1a2500347ed7f0bf794edf0dc3ddcf439f43d36b23" +checksum = "07a926debf178f2d355197f9caddb08e54a9329d44748034bba349c5848cb519" dependencies = [ "compression-codecs", "compression-core", @@ -1596,7 +1597,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -1607,7 +1608,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -1660,7 +1661,7 @@ checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -1671,9 +1672,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "aws-config" -version = "1.8.6" +version = "1.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bc1b40fb26027769f16960d2f4a6bc20c4bb755d403e552c8c1a73af433c246" +checksum = "a0149602eeaf915158e14029ba0c78dedb8c08d554b024d54c8f239aab46511d" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1690,7 +1691,7 @@ dependencies = [ "bytes", "fastrand", "hex", - "http 1.3.1", + "http 1.4.0", "ring", "time", "tokio", @@ -1701,9 +1702,9 @@ dependencies = [ [[package]] name = "aws-credential-types" -version = "1.2.6" +version = "1.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d025db5d9f52cbc413b167136afb3d8aeea708c0d8884783cf6253be5e22f6f2" +checksum = "b01c9521fa01558f750d183c8c68c81b0155b9d193a4ba7f84c36bd1b6d04a06" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", @@ -1713,9 +1714,9 @@ dependencies = [ [[package]] name = "aws-lc-rs" -version = "1.14.0" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94b8ff6c09cd57b16da53641caa860168b88c172a5ee163b0288d3d6eea12786" +checksum = "6b5ce75405893cd713f9ab8e297d8e438f624dde7d706108285f7e17a25a180f" dependencies = [ "aws-lc-sys", "zeroize", @@ -1723,11 +1724,10 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.31.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e44d16778acaf6a9ec9899b92cebd65580b83f685446bf2e1f5d3d732f99dcd" +checksum = "179c3777a8b5e70e90ea426114ffc565b2c1a9f82f6c4a0c5a34aa6ef5e781b6" dependencies = [ - "bindgen", "cc", "cmake", "dunce", @@ -1736,9 +1736,9 @@ dependencies = [ [[package]] name = "aws-runtime" -version = "1.5.10" +version = "1.5.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c034a1bc1d70e16e7f4e4caf7e9f7693e4c9c24cd91cf17c2a0b21abaebc7c8b" +checksum = "7ce527fb7e53ba9626fc47824f25e256250556c40d8f81d27dd92aa38239d632" dependencies = [ "aws-credential-types", "aws-sigv4", @@ -1755,14 +1755,14 @@ dependencies = [ "percent-encoding", "pin-project-lite", "tracing", - "uuid 1.18.1", + "uuid 1.19.0", ] [[package]] name = "aws-sdk-kms" -version = "1.87.0" +version = "1.96.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "865b1f9214c318bc3d4baaf0aa918f7d648b993fcb83601f7b3ede06ba6ce08f" +checksum = "995d40070271994fb774137aa603c10e7d29c4567a9605c6b801dff199c3d221" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1782,9 +1782,9 @@ dependencies = [ [[package]] name = "aws-sdk-sso" -version = "1.84.0" +version = "1.90.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357a841807f6b52cb26123878b3326921e2a25faca412fabdd32bd35b7edd5d3" +checksum = "4f18e53542c522459e757f81e274783a78f8c81acdfc8d1522ee8a18b5fb1c66" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1804,9 +1804,9 @@ dependencies = [ [[package]] name = "aws-sdk-ssooidc" -version = "1.85.0" +version = "1.92.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67e05f33b6c9026fecfe9b3b6740f34d41bc6ff641a6a32dabaab60209245b75" +checksum = "532f4d866012ffa724a4385c82e8dd0e59f0ca0e600f3f22d4c03b6824b34e4a" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1826,9 +1826,9 @@ dependencies = [ [[package]] name = "aws-sdk-sts" -version = "1.86.0" +version = "1.94.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7d835f123f307cafffca7b9027c14979f1d403b417d8541d67cf252e8a21e35" +checksum = "1be6fbbfa1a57724788853a623378223fe828fc4c09b146c992f0c95b6256174" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1849,9 +1849,9 @@ dependencies = [ [[package]] name = "aws-sigv4" -version = "1.3.4" +version = "1.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "084c34162187d39e3740cb635acd73c4e3a551a36146ad6fe8883c929c9f876c" +checksum = "c35452ec3f001e1f2f6db107b6373f1f48f05ec63ba2c5c9fa91f07dad32af11" dependencies = [ "aws-credential-types", "aws-smithy-http", @@ -1862,7 +1862,7 @@ dependencies = [ "hex", "hmac", "http 0.2.12", - "http 1.3.1", + "http 1.4.0", "percent-encoding", "sha2", "time", @@ -1871,9 +1871,9 @@ dependencies = [ [[package]] name = "aws-smithy-async" -version = "1.2.5" +version = "1.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e190749ea56f8c42bf15dd76c65e14f8f765233e6df9b0506d9d934ebef867c" +checksum = "127fcfad33b7dfc531141fda7e1c402ac65f88aca5511a4d31e2e3d2cd01ce9c" dependencies = [ "futures-util", "pin-project-lite", @@ -1882,17 +1882,18 @@ dependencies = [ [[package]] name = "aws-smithy-http" -version = "0.62.3" +version = "0.62.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c4dacf2d38996cf729f55e7a762b30918229917eca115de45dfa8dfb97796c9" +checksum = "445d5d720c99eed0b4aa674ed00d835d9b1427dd73e04adaf2f94c6b2d6f9fca" dependencies = [ "aws-smithy-runtime-api", "aws-smithy-types", "bytes", "bytes-utils", "futures-core", + "futures-util", "http 0.2.12", - "http 1.3.1", + "http 1.4.0", "http-body 0.4.6", "percent-encoding", "pin-project-lite", @@ -1902,15 +1903,15 @@ dependencies = [ [[package]] name = "aws-smithy-http-client" -version = "1.1.1" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147e8eea63a40315d704b97bf9bc9b8c1402ae94f89d5ad6f7550d963309da1b" +checksum = "623254723e8dfd535f566ee7b2381645f8981da086b5c4aa26c0c41582bb1d2c" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", "aws-smithy-types", "h2", - "http 1.3.1", + "http 1.4.0", "hyper", "hyper-rustls", "hyper-util", @@ -1926,27 +1927,27 @@ dependencies = [ [[package]] name = "aws-smithy-json" -version = "0.61.5" +version = "0.61.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaa31b350998e703e9826b2104dd6f63be0508666e1aba88137af060e8944047" +checksum = "2db31f727935fc63c6eeae8b37b438847639ec330a9161ece694efba257e0c54" dependencies = [ "aws-smithy-types", ] [[package]] name = "aws-smithy-observability" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9364d5989ac4dd918e5cc4c4bdcc61c9be17dcd2586ea7f69e348fc7c6cab393" +checksum = "2d1881b1ea6d313f9890710d65c158bdab6fb08c91ea825f74c1c8c357baf4cc" dependencies = [ "aws-smithy-runtime-api", ] [[package]] name = "aws-smithy-query" -version = "0.60.7" +version = "0.60.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2fbd61ceb3fe8a1cb7352e42689cec5335833cd9f94103a61e98f9bb61c64bb" +checksum = "d28a63441360c477465f80c7abac3b9c4d075ca638f982e605b7dc2a2c7156c9" dependencies = [ "aws-smithy-types", "urlencoding", @@ -1954,9 +1955,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime" -version = "1.9.2" +version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fa63ad37685ceb7762fa4d73d06f1d5493feb88e3f27259b9ed277f4c01b185" +checksum = "0bbe9d018d646b96c7be063dd07987849862b0e6d07c778aad7d93d1be6c1ef0" dependencies = [ "aws-smithy-async", "aws-smithy-http", @@ -1967,7 +1968,7 @@ dependencies = [ "bytes", "fastrand", "http 0.2.12", - "http 1.3.1", + "http 1.4.0", "http-body 0.4.6", "http-body 1.0.1", "pin-project-lite", @@ -1978,15 +1979,15 @@ dependencies = [ [[package]] name = "aws-smithy-runtime-api" -version = "1.9.0" +version = "1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07f5e0fc8a6b3f2303f331b94504bbf754d85488f402d6f1dd7a6080f99afe56" +checksum = "ec7204f9fd94749a7c53b26da1b961b4ac36bf070ef1e0b94bb09f79d4f6c193" dependencies = [ "aws-smithy-async", "aws-smithy-types", "bytes", "http 0.2.12", - "http 1.3.1", + "http 1.4.0", "pin-project-lite", "tokio", "tracing", @@ -1995,15 +1996,15 @@ dependencies = [ [[package]] name = "aws-smithy-types" -version = "1.3.2" +version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d498595448e43de7f4296b7b7a18a8a02c61ec9349128c80a368f7c3b4ab11a8" +checksum = "25f535879a207fce0db74b679cfc3e91a3159c8144d717d55f5832aea9eef46e" dependencies = [ "base64-simd", "bytes", "bytes-utils", "http 0.2.12", - "http 1.3.1", + "http 1.4.0", "http-body 0.4.6", "http-body 1.0.1", "http-body-util", @@ -2018,18 +2019,18 @@ dependencies = [ [[package]] name = "aws-smithy-xml" -version = "0.60.10" +version = "0.60.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3db87b96cb1b16c024980f133968d52882ca0daaee3a086c6decc500f6c99728" +checksum = "eab77cdd036b11056d2a30a7af7b775789fb024bf216acc13884c6c97752ae56" dependencies = [ "xmlparser", ] [[package]] name = "aws-types" -version = "1.3.8" +version = "1.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b069d19bf01e46298eaedd7c6f283fe565a59263e53eebec945f3e6398f42390" +checksum = "d79fb68e3d7fe5d4833ea34dc87d2e97d26d3086cb3da660bb6b1f76d98680b6" dependencies = [ "aws-credential-types", "aws-smithy-async", @@ -2041,16 +2042,16 @@ dependencies = [ [[package]] name = "axum" -version = "0.8.4" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "021e862c184ae977658b36c4500f7feac3221ca5da43e3f25bd04ab6c79a29b5" +checksum = "5b098575ebe77cb6d14fc7f32749631a6e44edbef6b796f89b020e99ba20d425" dependencies = [ "axum-core", "base64 0.22.1", "bytes", "form_urlencoded", "futures-util", - "http 1.3.1", + "http 1.4.0", "http-body 1.0.1", "http-body-util", "hyper", @@ -2061,15 +2062,14 @@ dependencies = [ "mime", "percent-encoding", "pin-project-lite", - "rustversion", - "serde", + "serde_core", "serde_json", "serde_path_to_error", "serde_urlencoded", "sha1", "sync_wrapper", "tokio", - "tokio-tungstenite", + "tokio-tungstenite 0.28.0", "tower 0.5.2", "tower-layer", "tower-service", @@ -2078,18 +2078,17 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.5.2" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68464cd0412f486726fb3373129ef5d2993f90c34bc2bc1c1e9943b2f4fc7ca6" +checksum = "59446ce19cd142f8833f856eb31f3eb097812d1479ab224f54d72428ca21ea22" dependencies = [ "bytes", "futures-core", - "http 1.3.1", + "http 1.4.0", "http-body 1.0.1", "http-body-util", "mime", "pin-project-lite", - "rustversion", "sync_wrapper", "tower-layer", "tower-service", @@ -2104,9 +2103,9 @@ checksum = "7b7e4c2464d97fe331d41de9d5db0def0a96f4d823b8b32a2efd503578988973" [[package]] name = "backtrace" -version = "0.3.75" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" dependencies = [ "addr2line", "cfg-if", @@ -2114,7 +2113,7 @@ dependencies = [ "miniz_oxide", "object", "rustc-demangle", - "windows-targets 0.52.6", + "windows-link 0.2.1", ] [[package]] @@ -2147,9 +2146,9 @@ dependencies = [ [[package]] name = "base64ct" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" +checksum = "0e050f626429857a27ddccb31e0aca21356bfa709c04041aefddac081a8f068a" [[package]] name = "bech32" @@ -2163,26 +2162,6 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "230c5f1ca6a325a32553f8640d31ac9b49f2411e901e427570154868b46da4f7" -[[package]] -name = "bindgen" -version = "0.72.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" -dependencies = [ - "bitflags 2.9.4", - "cexpr", - "clang-sys", - "itertools 0.13.0", - "log", - "prettyplease", - "proc-macro2", - "quote", - "regex", - "rustc-hash", - "shlex", - "syn 2.0.106", -] - [[package]] name = "bit-set" version = "0.8.0" @@ -2200,15 +2179,15 @@ checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" [[package]] name = "bitcoin-io" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b47c4ab7a93edb0c7198c5535ed9b52b63095f4e9b45279c6736cec4b856baf" +checksum = "2dee39a0ee5b4095224a0cfc6bf4cc1baf0f9624b96b367e53b66d974e51d953" [[package]] name = "bitcoin_hashes" -version = "0.14.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16" +checksum = "26ec84b80c482df901772e931a9a681e26a1b9ee2302edeff23cb30328745c8b" dependencies = [ "bitcoin-io", "hex-conservative", @@ -2222,11 +2201,11 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.4" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -2251,11 +2230,20 @@ dependencies = [ "generic-array", ] +[[package]] +name = "block2" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" +dependencies = [ + "objc2", +] + [[package]] name = "blst" -version = "0.3.15" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fd49896f12ac9b6dcd7a5998466b9b58263a695a3dd1ecc1aaca2e12a90b080" +checksum = "dcdb4c7013139a150f9fc55d123186dbfaba0d912817466282c73ac49e71fb45" dependencies = [ "cc", "glob", @@ -2269,11 +2257,11 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c340fe0f0b267787095cbe35240c6786ff19da63ec7b69367ba338eace8169b" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "boa_interner", "boa_macros", "boa_string", - "indexmap 2.11.4", + "indexmap 2.12.1", "num-bigint", "rustc-hash", ] @@ -2285,7 +2273,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f620c3f06f51e65c0504ddf04978be1b814ac6586f0b45f6019801ab5efd37f9" dependencies = [ "arrayvec", - "bitflags 2.9.4", + "bitflags 2.10.0", "boa_ast", "boa_gc", "boa_interner", @@ -2299,7 +2287,7 @@ dependencies = [ "fast-float2", "hashbrown 0.15.5", "icu_normalizer", - "indexmap 2.11.4", + "indexmap 2.12.1", "intrusive-collections", "itertools 0.13.0", "num-bigint", @@ -2319,7 +2307,7 @@ dependencies = [ "static_assertions", "tap", "thin-vec", - "thiserror 2.0.16", + "thiserror 2.0.17", "time", ] @@ -2345,7 +2333,7 @@ dependencies = [ "boa_gc", "boa_macros", "hashbrown 0.15.5", - "indexmap 2.11.4", + "indexmap 2.12.1", "once_cell", "phf 0.11.3", "rustc-hash", @@ -2360,7 +2348,7 @@ checksum = "9fd3f870829131332587f607a7ff909f1af5fc523fd1b192db55fbbdf52e8d3c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", "synstructure", ] @@ -2370,7 +2358,7 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9cc142dac798cdc6e2dbccfddeb50f36d2523bb977a976e19bdb3ae19b740804" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "boa_ast", "boa_interner", "boa_macros", @@ -2404,9 +2392,9 @@ dependencies = [ [[package]] name = "bon" -version = "3.7.2" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2529c31017402be841eb45892278a6c21a000c0a17643af326c73a73f83f0fb" +checksum = "ebeb9aaf9329dff6ceb65c689ca3db33dbf15f324909c60e4e5eef5701ce31b1" dependencies = [ "bon-macros", "rustversion", @@ -2414,9 +2402,9 @@ dependencies = [ [[package]] name = "bon-macros" -version = "3.7.2" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d82020dadcb845a345591863adb65d74fa8dc5c18a0b6d408470e13b7adc7005" +checksum = "77e9d642a7e3a318e37c2c9427b5a6a48aa1ad55dcd986f3034ab2239045a645" dependencies = [ "darling 0.21.3", "ident_case", @@ -2424,7 +2412,30 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.106", + "syn 2.0.111", +] + +[[package]] +name = "borsh" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f" +dependencies = [ + "borsh-derive", + "cfg_aliases", +] + +[[package]] +name = "borsh-derive" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0686c856aa6aac0c4498f936d7d6a02df690f614c03e4d906d1018062b5c5e2c" +dependencies = [ + "once_cell", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.111", ] [[package]] @@ -2445,9 +2456,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", @@ -2468,22 +2479,22 @@ checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" [[package]] name = "bytemuck" -version = "1.23.2" +version = "1.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.10.1" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f154e572231cb6ba2bd1176980827e3d5dc04cc183a75dea38109fbdd672d29" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -2494,9 +2505,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" dependencies = [ "serde", ] @@ -2513,9 +2524,9 @@ dependencies = [ [[package]] name = "c-kzg" -version = "2.1.1" +version = "2.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7318cfa722931cb5fe0838b98d3ce5621e75f6a6408abc21721d80de9223f2e4" +checksum = "e00bf4b112b07b505472dbefd19e37e53307e2bfed5a79e0cc161d58ccd0e687" dependencies = [ "blst", "cc", @@ -2528,9 +2539,9 @@ dependencies = [ [[package]] name = "camino" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1de8bc0aa9e9385ceb3bf0c152e3a9b9544f6c4a912c8ae504e80c1f0368603" +checksum = "276a59bf2b2c967788139340c9f0c5b12d7fd6630315c15c217e559de85d2609" dependencies = [ "serde_core", ] @@ -2574,7 +2585,7 @@ dependencies = [ "alloy-dyn-abi", "alloy-eips", "alloy-ens", - "alloy-hardforks 0.3.3", + "alloy-hardforks 0.3.5", "alloy-json-abi", "alloy-json-rpc", "alloy-network", @@ -2638,9 +2649,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.37" +version = "1.2.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65193589c6404eb80b450d618eaf9a2cafaaafd57ecce47370519ef674a7bd44" +checksum = "90583009037521a116abf44494efecd645ba48b6622457080f080b85544e2215" dependencies = [ "find-msvc-tools", "jobserver", @@ -2654,20 +2665,11 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" -[[package]] -name = "cexpr" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" -dependencies = [ - "nom", -] - [[package]] name = "cfg-if" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cfg_aliases" @@ -2705,7 +2707,7 @@ dependencies = [ "time", "tokio", "tracing", - "tracing-subscriber 0.3.20", + "tracing-subscriber 0.3.22", "walkdir", "yansi", ] @@ -2721,7 +2723,7 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-link 0.2.0", + "windows-link 0.2.1", ] [[package]] @@ -2761,22 +2763,11 @@ dependencies = [ "inout", ] -[[package]] -name = "clang-sys" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" -dependencies = [ - "glob", - "libc", - "libloading", -] - [[package]] name = "clap" -version = "4.5.47" +version = "4.5.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eac00902d9d136acd712710d71823fb8ac8004ca445a89e73a41d45aa712931" +checksum = "c9e340e012a1bf4935f5282ed1436d1489548e8f72308207ea5df0e23d2d03f8" dependencies = [ "clap_builder", "clap_derive", @@ -2794,9 +2785,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.47" +version = "4.5.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ad9bbf750e73b5884fb8a211a9424a1906c1e156724260fdae972f31d70e1d6" +checksum = "d76b5d13eaa18c901fd2f7fca939fefe3a0727a953561fefdf3b2922b8569d00" dependencies = [ "anstream", "anstyle", @@ -2809,9 +2800,9 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.5.58" +version = "4.5.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75bf0b32ad2e152de789bb635ea4d3078f6b838ad7974143e99b99f45a04af4a" +checksum = "39615915e2ece2550c0149addac32fb5bd312c657f43845bb9088cb9c8a7c992" dependencies = [ "clap", ] @@ -2828,9 +2819,9 @@ dependencies = [ [[package]] name = "clap_complete_nushell" -version = "4.5.8" +version = "4.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a0c951694691e65bf9d421d597d68416c22de9632e884c28412cb8cd8b73dce" +checksum = "685bc86fd34b7467e0532a4f8435ab107960d69a243785ef0275e571b35b641a" dependencies = [ "clap", "clap_complete", @@ -2838,21 +2829,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.47" +version = "4.5.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbfd7eae0b0f1a6e63d4b13c9c478de77c2eb546fba158ad50b4203dc24b9f9c" +checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] name = "clap_lex" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" +checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" [[package]] name = "clearscreen" @@ -2862,19 +2853,19 @@ checksum = "85a8ab73a1c02b0c15597b22e09c7dc36e63b2f601f9d1e83ac0c3decd38b1ae" dependencies = [ "nix 0.29.0", "terminfo", - "thiserror 2.0.16", + "thiserror 2.0.17", "which", "windows-sys 0.59.0", ] [[package]] name = "cliclack" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c420bdc04c123a2df04d9c5a07289195f00007af6e45ab18f55e56dc7e04b8" +checksum = "2381872509dfa50d8b92b92a5da8367ba68458ab9494be4134b57ad6ca26295f" dependencies = [ "console 0.15.11", - "indicatif 0.17.11", + "indicatif", "once_cell", "strsim", "textwrap", @@ -2984,7 +2975,7 @@ dependencies = [ "eyre", "indenter", "once_cell", - "owo-colors 4.2.2", + "owo-colors", "tracing-error", ] @@ -2995,7 +2986,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8b88ea9df13354b55bc7234ebcce36e6ef896aca2e42a15de9e10edce01b427" dependencies = [ "once_cell", - "owo-colors 4.2.2", + "owo-colors", "tracing-core", "tracing-error", ] @@ -3008,11 +2999,10 @@ checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" [[package]] name = "colored" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c" +checksum = "fde0e0ec90c9dfb3b4b1a0891a7dcd0e2bffde2f7efed5fe7c9bb00e5bfb915e" dependencies = [ - "lazy_static", "windows-sys 0.59.0", ] @@ -3059,9 +3049,9 @@ dependencies = [ [[package]] name = "compression-codecs" -version = "0.4.30" +version = "0.4.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "485abf41ac0c8047c07c87c72c8fb3eb5197f6e9d7ded615dfd1a00ae00a0f64" +checksum = "34a3cbbb8b6eca96f3a5c4bf6938d5b27ced3675d69f95bb51948722870bc323" dependencies = [ "compression-core", "flate2", @@ -3070,9 +3060,9 @@ dependencies = [ [[package]] name = "compression-core" -version = "0.4.29" +version = "0.4.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e47641d3deaf41fb1538ac1f54735925e275eaf3bf4d55c81b137fba797e5cbb" +checksum = "75984efb6ed102a0d42db99afb6c1948f0380d1d91808d5529916e6c08b49d8d" [[package]] name = "concurrent-queue" @@ -3106,7 +3096,7 @@ dependencies = [ "libc", "once_cell", "unicode-width 0.2.0", - "windows-sys 0.61.0", + "windows-sys 0.61.2", ] [[package]] @@ -3121,9 +3111,9 @@ dependencies = [ [[package]] name = "const-hex" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6407bff74dea37e0fa3dc1c1c974e5d46405f0c987bf9997a0762adce71eda6" +checksum = "3bb320cac8a0750d7f25280aa97b09c26edfe161164238ecbbb31092b079e735" dependencies = [ "cfg-if", "cpufeatures", @@ -3139,9 +3129,9 @@ checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" [[package]] name = "const_format" -version = "0.2.34" +version = "0.2.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" +checksum = "7faa7469a93a566e9ccc1c73fe783b4a65c274c5ace346038dca9c39fe0030ad" dependencies = [ "const_format_proc_macros", ] @@ -3159,9 +3149,9 @@ dependencies = [ [[package]] name = "convert_case" -version = "0.7.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb402b8d4c85569410425650ce3eddc7d698ed96d39a73f941b08fb63082f1e7" +checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9" dependencies = [ "unicode-segmentation", ] @@ -3203,9 +3193,9 @@ dependencies = [ [[package]] name = "crc" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9710d3b3739c2e349eb44fe848ad0b7c8cb1e42bd87ee49371df2f7acaf3e675" +checksum = "5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d" dependencies = [ "crc-catalog", ] @@ -3265,7 +3255,7 @@ version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "crossterm_winapi", "mio", "parking_lot", @@ -3281,9 +3271,9 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "crossterm_winapi", - "derive_more 2.0.1", + "derive_more 2.1.0", "document-features", "mio", "parking_lot", @@ -3322,9 +3312,9 @@ dependencies = [ [[package]] name = "crypto-common" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" dependencies = [ "generic-array", "rand_core 0.6.4", @@ -3351,7 +3341,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -3365,13 +3355,13 @@ dependencies = [ [[package]] name = "ctrlc" -version = "3.5.0" +version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "881c5d0a13b2f1498e2306e82cbada78390e152d4b1378fb28a84f4dcd0dc4f3" +checksum = "73736a89c4aff73035ba2ed2e565061954da00d4970fc9ac25dcc85a2a20d790" dependencies = [ - "dispatch", + "dispatch2", "nix 0.30.1", - "windows-sys 0.61.0", + "windows-sys 0.61.2", ] [[package]] @@ -3398,7 +3388,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -3432,7 +3422,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -3447,7 +3437,7 @@ dependencies = [ "quote", "serde", "strsim", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -3458,7 +3448,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -3469,7 +3459,7 @@ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ "darling_core 0.21.3", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -3505,12 +3495,12 @@ dependencies = [ [[package]] name = "deranged" -version = "0.5.3" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d630bccd429a5bb5a64b5e94f693bfc48c9f8566418fda4c494cc94f911f87cc" +checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" dependencies = [ "powerfmt", - "serde", + "serde_core", ] [[package]] @@ -3532,7 +3522,7 @@ checksum = "ef941ded77d15ca19b40374869ac6000af1c9f2a4c0f3d4c70926287e6364a8f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -3543,7 +3533,7 @@ checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -3564,7 +3554,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -3574,7 +3564,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -3588,11 +3578,11 @@ dependencies = [ [[package]] name = "derive_more" -version = "2.0.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +checksum = "10b768e943bed7bf2cab53df09f4bc34bfd217cdb57d971e769874c9a6710618" dependencies = [ - "derive_more-impl 2.0.1", + "derive_more-impl 2.1.0", ] [[package]] @@ -3603,20 +3593,21 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", "unicode-xid", ] [[package]] name = "derive_more-impl" -version = "2.0.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +checksum = "6d286bfdaf75e988b4a78e013ecd79c581e06399ab53fbacd2d916c2f904f30b" dependencies = [ "convert_case", "proc-macro2", "quote", - "syn 2.0.106", + "rustc_version 0.4.1", + "syn 2.0.111", "unicode-xid", ] @@ -3672,14 +3663,20 @@ dependencies = [ "libc", "option-ext", "redox_users", - "windows-sys 0.61.0", + "windows-sys 0.61.2", ] [[package]] -name = "dispatch" -version = "0.2.0" +name = "dispatch2" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" +checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" +dependencies = [ + "bitflags 2.10.0", + "block2", + "libc", + "objc2", +] [[package]] name = "displaydoc" @@ -3689,7 +3686,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -3700,9 +3697,9 @@ checksum = "aac81fa3e28d21450aa4d2ac065992ba96a1d7303efbce51a95f4fd175b67562" [[package]] name = "document-features" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95249b50c6c185bee49034bcb378a49dc2b5dff0be90ff6616d31d64febab05d" +checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61" dependencies = [ "litrs", ] @@ -3770,7 +3767,7 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -3860,29 +3857,29 @@ checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" [[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.106", + "syn 2.0.111", ] [[package]] name = "env_filter" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0" +checksum = "1bf3c259d255ca70051b30e2e95b5446cdb8949ac4cd22c0d7fd634d89f568e2" dependencies = [ "log", "regex", @@ -3915,9 +3912,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "259d404d09818dec19332e31d94558aeb442fea04c817006456c24b5460bbd4b" +checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3" dependencies = [ "serde", "serde_core", @@ -3931,7 +3928,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.61.0", + "windows-sys 0.61.2", ] [[package]] @@ -3985,13 +3982,13 @@ dependencies = [ [[package]] name = "evmole" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c29ecc930ee2ed03083436c2ddd7e5292c3c3bcda65f6a37369502d578a853f1" +checksum = "6b62c02aa0474cf6c68610ee424dc5feddbe004ea48632c14d237fefa3d893a3" dependencies = [ "alloy-dyn-abi", "alloy-primitives", - "indexmap 2.11.4", + "indexmap 2.12.1", ] [[package]] @@ -4093,9 +4090,9 @@ dependencies = [ [[package]] name = "find-msvc-tools" -version = "0.1.1" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fd99930f64d146689264c637b5af2f0233a933bef0d8570e2526bf9e083192d" +checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" [[package]] name = "fixed-hash" @@ -4117,9 +4114,9 @@ checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" [[package]] name = "flate2" -version = "1.1.2" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" +checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" dependencies = [ "crc32fast", "libz-rs-sys", @@ -4138,6 +4135,12 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + [[package]] name = "foreign-types" version = "0.3.2" @@ -4159,7 +4162,7 @@ version = "1.3.5" dependencies = [ "alloy-chains", "alloy-dyn-abi", - "alloy-hardforks 0.3.3", + "alloy-hardforks 0.3.5", "alloy-json-abi", "alloy-network", "alloy-primitives", @@ -4201,7 +4204,7 @@ dependencies = [ "foundry-wallets", "futures", "globset", - "indicatif 0.18.0", + "indicatif", "inferno", "itertools 0.14.0", "mockall", @@ -4226,9 +4229,9 @@ dependencies = [ "strum 0.27.2", "svm-rs", "tempfile", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", - "toml_edit 0.23.6", + "toml_edit 0.23.9", "tower-http", "tracing", "watchexec", @@ -4242,7 +4245,7 @@ name = "forge-doc" version = "1.3.5" dependencies = [ "alloy-primitives", - "derive_more 2.0.1", + "derive_more 2.1.0", "eyre", "forge-fmt", "foundry-common", @@ -4255,8 +4258,8 @@ dependencies = [ "regex", "serde", "serde_json", - "thiserror 2.0.16", - "toml 0.9.7", + "thiserror 2.0.17", + "toml 0.9.8", "tracing", ] @@ -4270,10 +4273,10 @@ dependencies = [ "foundry-solang-parser", "itertools 0.14.0", "similar-asserts", - "thiserror 2.0.16", - "toml 0.9.7", + "thiserror 2.0.17", + "toml 0.9.8", "tracing", - "tracing-subscriber 0.3.20", + "tracing-subscriber 0.3.22", ] [[package]] @@ -4287,7 +4290,7 @@ dependencies = [ "heck", "rayon", "solar-compiler", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -4321,7 +4324,7 @@ dependencies = [ "foundry-linking", "foundry-wallets", "futures", - "indicatif 0.18.0", + "indicatif", "itertools 0.14.0", "parking_lot", "revm-inspectors", @@ -4363,7 +4366,7 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -4444,7 +4447,7 @@ dependencies = [ "semver 1.0.27", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", "tracing", ] @@ -4493,8 +4496,8 @@ dependencies = [ "semver 1.0.27", "serde", "serde_json", - "thiserror 2.0.16", - "toml 0.9.7", + "thiserror 2.0.17", + "toml 0.9.8", "tracing", "walkdir", ] @@ -4505,7 +4508,7 @@ version = "1.3.5" dependencies = [ "alloy-sol-types", "foundry-macros", - "schemars 1.0.4", + "schemars 1.1.0", "serde", "serde_json", ] @@ -4536,7 +4539,7 @@ dependencies = [ "foundry-evm", "foundry-wallets", "futures", - "indicatif 0.18.0", + "indicatif", "itertools 0.14.0", "mimalloc", "rayon", @@ -4552,7 +4555,7 @@ dependencies = [ "tikv-jemallocator", "tokio", "tracing", - "tracing-subscriber 0.3.20", + "tracing-subscriber 0.3.22", "tracing-tracy", "yansi", ] @@ -4606,7 +4609,7 @@ dependencies = [ "serde_json", "solar-compiler", "terminal_size", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tower 0.5.2", "tracing", @@ -4646,7 +4649,7 @@ dependencies = [ "alloy-json-abi", "alloy-primitives", "auto_impl", - "derive_more 2.0.1", + "derive_more 2.1.0", "dyn-clone", "foundry-compilers-artifacts", "foundry-compilers-core", @@ -4664,7 +4667,7 @@ dependencies = [ "svm-rs", "svm-rs-builds", "tempfile", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tracing", "winnow", @@ -4695,7 +4698,7 @@ dependencies = [ "semver 1.0.27", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tracing", "walkdir", @@ -4732,7 +4735,7 @@ dependencies = [ "serde_json", "svm-rs", "tempfile", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "walkdir", "xxhash-rust", @@ -4769,9 +4772,9 @@ dependencies = [ "solar-compiler", "soldeer-core", "tempfile", - "thiserror 2.0.16", - "toml 0.9.7", - "toml_edit 0.23.6", + "thiserror 2.0.17", + "toml 0.9.8", + "toml_edit 0.23.9", "tracing", "walkdir", "yansi", @@ -4814,7 +4817,7 @@ dependencies = [ "foundry-evm-coverage", "foundry-evm-fuzz", "foundry-evm-traces", - "indicatif 0.18.0", + "indicatif", "parking_lot", "proptest", "revm", @@ -4822,9 +4825,9 @@ dependencies = [ "seismic-prelude", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", "tracing", - "uuid 1.18.1", + "uuid 1.19.0", ] [[package]] @@ -4833,7 +4836,7 @@ version = "1.3.5" dependencies = [ "alloy-primitives", "alloy-sol-types", - "derive_more 2.0.1", + "derive_more 2.1.0", "foundry-common-fmt", "foundry-macros", "itertools 0.14.0", @@ -4848,7 +4851,7 @@ dependencies = [ "alloy-dyn-abi", "alloy-evm", "alloy-genesis", - "alloy-hardforks 0.3.3", + "alloy-hardforks 0.3.5", "alloy-json-abi", "alloy-network", "alloy-primitives", @@ -4873,7 +4876,7 @@ dependencies = [ "seismic-prelude", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tracing", "url", @@ -4914,7 +4917,7 @@ dependencies = [ "rand 0.9.2", "revm", "serde", - "thiserror 2.0.16", + "thiserror 2.0.17", "tracing", ] @@ -4964,7 +4967,7 @@ dependencies = [ "seismic-prelude", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tracing", "url", @@ -4977,7 +4980,7 @@ dependencies = [ "alloy-primitives", "foundry-compilers", "semver 1.0.27", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -4987,7 +4990,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -5000,7 +5003,7 @@ dependencies = [ "lalrpop", "lalrpop-util", "phf 0.11.3", - "thiserror 2.0.16", + "thiserror 2.0.17", "unicode-xid", ] @@ -5025,7 +5028,7 @@ dependencies = [ "tempfile", "tokio", "tracing", - "tracing-subscriber 0.3.20", + "tracing-subscriber 0.3.22", "ui_test", ] @@ -5053,7 +5056,7 @@ dependencies = [ "foundry-config", "rpassword", "serde", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tracing", ] @@ -5151,7 +5154,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -5262,21 +5265,21 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "wasi 0.11.1+wasi-snapshot-preview1", + "wasi", "wasm-bindgen", ] [[package]] name = "getrandom" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", "js-sys", "libc", "r-efi", - "wasi 0.14.7+wasi-0.2.4", + "wasip2", "wasm-bindgen", ] @@ -5302,9 +5305,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.31.1" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" [[package]] name = "glob" @@ -5314,9 +5317,9 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "globset" -version = "0.4.16" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54a1028dfc5f5df5da8a56a73e6c153c9a9708ec57232470703592a3f18e49f5" +checksum = "52dfc19153a48bde0cbd630453615c8151bce3a5adfac7a0aebfbf0a1e1f57e3" dependencies = [ "aho-corasick", "bstr", @@ -5335,7 +5338,7 @@ dependencies = [ "futures-core", "futures-sink", "gloo-utils", - "http 1.3.1", + "http 1.4.0", "js-sys", "pin-project 1.1.10", "serde", @@ -5403,8 +5406,8 @@ dependencies = [ "fnv", "futures-core", "futures-sink", - "http 1.3.1", - "indexmap 2.11.4", + "http 1.4.0", + "indexmap 2.12.1", "slab", "tokio", "tokio-util", @@ -5413,12 +5416,13 @@ dependencies = [ [[package]] name = "half" -version = "2.6.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9" +checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" dependencies = [ "cfg-if", "crunchy", + "zerocopy", ] [[package]] @@ -5434,7 +5438,7 @@ dependencies = [ "pest_derive", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -5457,15 +5461,21 @@ checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ "allocator-api2", "equivalent", - "foldhash", - "serde", + "foldhash 0.1.5", ] [[package]] name = "hashbrown" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash 0.2.0", + "serde", + "serde_core", +] [[package]] name = "heck" @@ -5487,9 +5497,9 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "hex-conservative" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5313b072ce3c597065a808dbf612c4c8e8590bdbf8b579508bf7a762c5eae6cd" +checksum = "fda06d18ac606267c40c04e41b9947729bf8b9efe74bd4e82b61a5f26a510b9f" dependencies = [ "arrayvec", ] @@ -5526,11 +5536,11 @@ dependencies = [ [[package]] name = "home" -version = "0.5.11" +version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" +checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -5566,12 +5576,11 @@ dependencies = [ [[package]] name = "http" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" dependencies = [ "bytes", - "fnv", "itoa", ] @@ -5593,7 +5602,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.3.1", + "http 1.4.0", ] [[package]] @@ -5604,7 +5613,7 @@ checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", "futures-core", - "http 1.3.1", + "http 1.4.0", "http-body 1.0.1", "pin-project-lite", ] @@ -5629,16 +5638,16 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" +checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" dependencies = [ "atomic-waker", "bytes", "futures-channel", "futures-core", "h2", - "http 1.3.1", + "http 1.4.0", "http-body 1.0.1", "httparse", "httpdate", @@ -5656,7 +5665,7 @@ version = "0.27.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ - "http 1.3.1", + "http 1.4.0", "hyper", "hyper-util", "log", @@ -5666,7 +5675,7 @@ dependencies = [ "tokio", "tokio-rustls", "tower-service", - "webpki-roots 1.0.2", + "webpki-roots 1.0.4", ] [[package]] @@ -5700,23 +5709,23 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.17" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" +checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f" dependencies = [ "base64 0.22.1", "bytes", "futures-channel", "futures-core", "futures-util", - "http 1.3.1", + "http 1.4.0", "http-body 1.0.1", "hyper", "ipnet", "libc", "percent-encoding", "pin-project-lite", - "socket2 0.6.0", + "socket2 0.6.1", "system-configuration", "tokio", "tower-service", @@ -5736,7 +5745,7 @@ dependencies = [ "js-sys", "log", "wasm-bindgen", - "windows-core", + "windows-core 0.62.2", ] [[package]] @@ -5863,7 +5872,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -5905,9 +5914,9 @@ dependencies = [ [[package]] name = "ignore" -version = "0.4.23" +version = "0.4.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" +checksum = "d3d782a365a015e0f5c04902246139249abf769125006fbe7649e2ee88169b4a" dependencies = [ "crossbeam-deque", "globset", @@ -5936,7 +5945,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -5964,35 +5973,22 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.11.4" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" +checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2" dependencies = [ "arbitrary", "equivalent", - "hashbrown 0.16.0", + "hashbrown 0.16.1", "serde", "serde_core", ] [[package]] name = "indicatif" -version = "0.17.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" -dependencies = [ - "console 0.15.11", - "number_prefix", - "portable-atomic", - "unicode-width 0.2.0", - "web-time", -] - -[[package]] -name = "indicatif" -version = "0.18.0" +version = "0.18.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a646d946d06bedbbc4cac4c218acf4bbf2d87757a784857025f4d447e4e1cd" +checksum = "9375e112e4b463ec1b1c6c011953545c65a30164fbab5b581df32b3abf0dcb88" dependencies = [ "console 0.16.1", "portable-atomic", @@ -6003,22 +5999,25 @@ dependencies = [ [[package]] name = "indoc" -version = "2.0.6" +version = "2.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c7245a08504955605670dbf141fceab975f15ca21570696aebe9d2e71576bd" +checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706" +dependencies = [ + "rustversion", +] [[package]] name = "inferno" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e96d2465363ed2d81857759fc864cf6bb7997f79327aec028d65bd7989393685" +checksum = "d35223c50fdd26419a4ccea2c73be68bd2b29a3d7d6123ffe101c17f4c20a52a" dependencies = [ "ahash", "itoa", "log", "num-format", "once_cell", - "quick-xml 0.37.5", + "quick-xml 0.38.4", "rgb", "str_stack", ] @@ -6035,7 +6034,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "inotify-sys", "libc", ] @@ -6060,15 +6059,15 @@ dependencies = [ [[package]] name = "instability" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435d80800b936787d62688c927b6490e887c7ef5ff9ce922c6c6050fca75eb9a" +checksum = "6778b0196eefee7df739db78758e5cf9b37412268bfa5650bfeed028aed20d9c" dependencies = [ "darling 0.20.11", "indoc", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -6108,17 +6107,6 @@ dependencies = [ "thread_local", ] -[[package]] -name = "io-uring" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" -dependencies = [ - "bitflags 2.9.4", - "cfg-if", - "libc", -] - [[package]] name = "ipnet" version = "2.11.0" @@ -6127,9 +6115,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", @@ -6137,20 +6125,20 @@ dependencies = [ [[package]] name = "is-terminal" -version = "0.4.16" +version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" +checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46" dependencies = [ "hermit-abi", "libc", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] name = "is_terminal_polyfill" -version = "1.70.1" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" [[package]] name = "itertools" @@ -6187,28 +6175,28 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "jiff" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be1f93b8b1eb69c77f24bbb0afdf66f54b632ee39af40ca21c4365a1d7347e49" +checksum = "49cce2b81f2098e7e3efc35bc2e0a6b7abec9d34128283d7a26fa8f32a6dbb35" dependencies = [ "jiff-static", "jiff-tzdb-platform", "log", "portable-atomic", "portable-atomic-util", - "serde", - "windows-sys 0.59.0", + "serde_core", + "windows-sys 0.61.2", ] [[package]] name = "jiff-static" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03343451ff899767262ec32146f6d559dd759fdadf42ff0e227c7c48f72594b4" +checksum = "980af8b43c3ad5d8d349ace167ec8170839f753a42d233ba19e08afe1850fa69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -6254,15 +6242,15 @@ version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", "libc", ] [[package]] name = "js-sys" -version = "0.3.80" +version = "0.3.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852f13bec5eba4ba9afbeb93fd7c13fe56147f055939ae21c43a29a0ecb2702e" +checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8" dependencies = [ "once_cell", "wasm-bindgen", @@ -6281,34 +6269,50 @@ dependencies = [ [[package]] name = "jsonrpsee" -version = "0.24.9" +version = "0.24.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e281ae70cc3b98dac15fced3366a880949e65fc66e345ce857a5682d152f3e62" +dependencies = [ + "jsonrpsee-client-transport 0.24.10", + "jsonrpsee-core 0.24.10", + "jsonrpsee-http-client 0.24.10", + "jsonrpsee-proc-macros 0.24.10", + "jsonrpsee-types 0.24.10", + "jsonrpsee-wasm-client 0.24.10", + "jsonrpsee-ws-client 0.24.10", + "tracing", +] + +[[package]] +name = "jsonrpsee" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37b26c20e2178756451cfeb0661fb74c47dd5988cb7e3939de7e9241fd604d42" +checksum = "3f3f48dc3e6b8bd21e15436c1ddd0bc22a6a54e8ec46fedd6adf3425f396ec6a" dependencies = [ - "jsonrpsee-client-transport", - "jsonrpsee-core", - "jsonrpsee-http-client", - "jsonrpsee-proc-macros", + "jsonrpsee-client-transport 0.26.0", + "jsonrpsee-core 0.26.0", + "jsonrpsee-http-client 0.26.0", + "jsonrpsee-proc-macros 0.26.0", "jsonrpsee-server", - "jsonrpsee-types", - "jsonrpsee-wasm-client", - "jsonrpsee-ws-client", + "jsonrpsee-types 0.26.0", + "jsonrpsee-wasm-client 0.26.0", + "jsonrpsee-ws-client 0.26.0", "tokio", "tracing", ] [[package]] name = "jsonrpsee-client-transport" -version = "0.24.9" +version = "0.24.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bacb85abf4117092455e1573625e21b8f8ef4dec8aff13361140b2dc266cdff2" +checksum = "cc4280b709ac3bb5e16cf3bad5056a0ec8df55fa89edfe996361219aadc2c7ea" dependencies = [ "base64 0.22.1", "futures-channel", "futures-util", "gloo-net", - "http 1.3.1", - "jsonrpsee-core", + "http 1.4.0", + "jsonrpsee-core 0.24.10", "pin-project 1.1.10", "rustls", "rustls-pki-types", @@ -6322,20 +6326,45 @@ dependencies = [ "url", ] +[[package]] +name = "jsonrpsee-client-transport" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf36eb27f8e13fa93dcb50ccb44c417e25b818cfa1a481b5470cd07b19c60b98" +dependencies = [ + "base64 0.22.1", + "futures-channel", + "futures-util", + "gloo-net", + "http 1.4.0", + "jsonrpsee-core 0.26.0", + "pin-project 1.1.10", + "rustls", + "rustls-pki-types", + "rustls-platform-verifier", + "soketto", + "thiserror 2.0.17", + "tokio", + "tokio-rustls", + "tokio-util", + "tracing", + "url", +] + [[package]] name = "jsonrpsee-core" -version = "0.24.9" +version = "0.24.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456196007ca3a14db478346f58c7238028d55ee15c1df15115596e411ff27925" +checksum = "348ee569eaed52926b5e740aae20863762b16596476e943c9e415a6479021622" dependencies = [ "async-trait", "bytes", "futures-timer", "futures-util", - "http 1.3.1", + "http 1.4.0", "http-body 1.0.1", "http-body-util", - "jsonrpsee-types", + "jsonrpsee-types 0.24.10", "parking_lot", "pin-project 1.1.10", "rand 0.8.5", @@ -6349,11 +6378,39 @@ dependencies = [ "wasm-bindgen-futures", ] +[[package]] +name = "jsonrpsee-core" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "316c96719901f05d1137f19ba598b5fe9c9bc39f4335f67f6be8613921946480" +dependencies = [ + "async-trait", + "bytes", + "futures-timer", + "futures-util", + "http 1.4.0", + "http-body 1.0.1", + "http-body-util", + "jsonrpsee-types 0.26.0", + "parking_lot", + "pin-project 1.1.10", + "rand 0.9.2", + "rustc-hash", + "serde", + "serde_json", + "thiserror 2.0.17", + "tokio", + "tokio-stream", + "tower 0.5.2", + "tracing", + "wasm-bindgen-futures", +] + [[package]] name = "jsonrpsee-http-client" -version = "0.24.9" +version = "0.24.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c872b6c9961a4ccc543e321bb5b89f6b2d2c7fe8b61906918273a3333c95400c" +checksum = "f50c389d6e6a52eb7c3548a6600c90cf74d9b71cb5912209833f00a5479e9a01" dependencies = [ "async-trait", "base64 0.22.1", @@ -6361,8 +6418,8 @@ dependencies = [ "hyper", "hyper-rustls", "hyper-util", - "jsonrpsee-core", - "jsonrpsee-types", + "jsonrpsee-core 0.24.10", + "jsonrpsee-types 0.24.10", "rustls", "rustls-platform-verifier", "serde", @@ -6374,79 +6431,153 @@ dependencies = [ "url", ] +[[package]] +name = "jsonrpsee-http-client" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "790bedefcec85321e007ff3af84b4e417540d5c87b3c9779b9e247d1bcc3dab8" +dependencies = [ + "base64 0.22.1", + "http-body 1.0.1", + "hyper", + "hyper-rustls", + "hyper-util", + "jsonrpsee-core 0.26.0", + "jsonrpsee-types 0.26.0", + "rustls", + "rustls-platform-verifier", + "serde", + "serde_json", + "thiserror 2.0.17", + "tokio", + "tower 0.5.2", + "url", +] + +[[package]] +name = "jsonrpsee-proc-macros" +version = "0.24.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7398cddf5013cca4702862a2692b66c48a3bd6cf6ec681a47453c93d63cf8de5" +dependencies = [ + "heck", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "jsonrpsee-proc-macros" -version = "0.24.9" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e65763c942dfc9358146571911b0cd1c361c2d63e2d2305622d40d36376ca80" +checksum = "2da3f8ab5ce1bb124b6d082e62dffe997578ceaf0aeb9f3174a214589dc00f07" dependencies = [ "heck", "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] name = "jsonrpsee-server" -version = "0.24.9" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55e363146da18e50ad2b51a0a7925fc423137a0b1371af8235b1c231a0647328" +checksum = "4c51b7c290bb68ce3af2d029648148403863b982f138484a73f02a9dd52dbd7f" dependencies = [ "futures-util", - "http 1.3.1", + "http 1.4.0", "http-body 1.0.1", "http-body-util", "hyper", "hyper-util", - "jsonrpsee-core", - "jsonrpsee-types", + "jsonrpsee-core 0.26.0", + "jsonrpsee-types 0.26.0", "pin-project 1.1.10", "route-recognizer", "serde", "serde_json", "soketto", - "thiserror 1.0.69", + "thiserror 2.0.17", "tokio", "tokio-stream", "tokio-util", - "tower 0.4.13", + "tower 0.5.2", "tracing", ] [[package]] name = "jsonrpsee-types" -version = "0.24.9" +version = "0.24.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08a8e70baf945b6b5752fc8eb38c918a48f1234daf11355e07106d963f860089" +checksum = "b0f05e0028e55b15dbd2107163b3c744cd3bb4474f193f95d9708acbf5677e44" dependencies = [ - "http 1.3.1", + "http 1.4.0", "serde", "serde_json", "thiserror 1.0.69", ] +[[package]] +name = "jsonrpsee-types" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc88ff4688e43cc3fa9883a8a95c6fa27aa2e76c96e610b737b6554d650d7fd5" +dependencies = [ + "http 1.4.0", + "serde", + "serde_json", + "thiserror 2.0.17", +] + +[[package]] +name = "jsonrpsee-wasm-client" +version = "0.24.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9d745e4f543fc10fc0e2b11aa1f3be506b1e475d412167e7191a65ecd239f1c" +dependencies = [ + "jsonrpsee-client-transport 0.24.10", + "jsonrpsee-core 0.24.10", + "jsonrpsee-types 0.24.10", +] + [[package]] name = "jsonrpsee-wasm-client" -version = "0.24.9" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6558a9586cad43019dafd0b6311d0938f46efc116b34b28c74778bc11a2edf6" +checksum = "7902885de4779f711a95d82c8da2d7e5f9f3a7c7cfa44d51c067fd1c29d72a3c" dependencies = [ - "jsonrpsee-client-transport", - "jsonrpsee-core", - "jsonrpsee-types", + "jsonrpsee-client-transport 0.26.0", + "jsonrpsee-core 0.26.0", + "jsonrpsee-types 0.26.0", + "tower 0.5.2", ] [[package]] name = "jsonrpsee-ws-client" -version = "0.24.9" +version = "0.24.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01b3323d890aa384f12148e8d2a1fd18eb66e9e7e825f9de4fa53bcc19b93eef" +checksum = "78fc744f17e7926d57f478cf9ca6e1ee5d8332bf0514860b1a3cdf1742e614cc" dependencies = [ - "http 1.3.1", - "jsonrpsee-client-transport", - "jsonrpsee-core", - "jsonrpsee-types", + "http 1.4.0", + "jsonrpsee-client-transport 0.24.10", + "jsonrpsee-core 0.24.10", + "jsonrpsee-types 0.24.10", + "url", +] + +[[package]] +name = "jsonrpsee-ws-client" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b6fceceeb05301cc4c065ab3bd2fa990d41ff4eb44e4ca1b30fa99c057c3e79" +dependencies = [ + "http 1.4.0", + "jsonrpsee-client-transport 0.26.0", + "jsonrpsee-core 0.26.0", + "jsonrpsee-types 0.26.0", + "tower 0.5.2", "url", ] @@ -6480,19 +6611,6 @@ dependencies = [ "signature", ] -[[package]] -name = "kbs-types" -version = "0.12.0" -source = "git+https://github.com/virtee/kbs-types.git?rev=e3cc706#e3cc706ec4c1a88565598c5ce224da06a03f2265" -dependencies = [ - "base64 0.22.1", - "serde", - "serde_json", - "sha2", - "strum 0.27.2", - "thiserror 2.0.16", -] - [[package]] name = "keccak" version = "0.1.5" @@ -6577,19 +6695,9 @@ checksum = "db13adb97ab515a3691f56e4dbab09283d0b86cb45abd991d8634a9d6f501760" [[package]] name = "libc" -version = "0.2.175" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" - -[[package]] -name = "libloading" -version = "0.8.8" +version = "0.2.178" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" -dependencies = [ - "cfg-if", - "windows-targets 0.53.3", -] +checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091" [[package]] name = "libm" @@ -6613,7 +6721,7 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "libc", ] @@ -6631,9 +6739,9 @@ dependencies = [ [[package]] name = "libz-rs-sys" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "840db8cf39d9ec4dd794376f38acc40d0fc65eec2a8f484f7fd375b84602becd" +checksum = "8b484ba8d4f775eeca644c452a56650e544bf7e617f1d170fe7298122ead5222" dependencies = [ "zlib-rs", ] @@ -6658,25 +6766,24 @@ checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" [[package]] name = "litrs" -version = "0.4.2" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5e54036fe321fd421e10d732f155734c4e4afd610dd556d9a82833ab3ee0bed" +checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" [[package]] name = "lock_api" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" dependencies = [ - "autocfg", "scopeguard", ] [[package]] name = "log" -version = "0.4.28" +version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" dependencies = [ "value-bag", ] @@ -6691,7 +6798,7 @@ dependencies = [ "generator", "scoped-tls", "tracing", - "tracing-subscriber 0.3.20", + "tracing-subscriber 0.3.22", ] [[package]] @@ -6732,7 +6839,7 @@ checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -6760,7 +6867,7 @@ checksum = "ac84fd3f360fcc43dc5f5d186f02a94192761a080e8bc58621ad4d12296a58cf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -6809,9 +6916,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.5" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" [[package]] name = "memoffset" @@ -6873,7 +6980,7 @@ checksum = "db5b29714e950dbb20d5e6f74f9dcec4edbcc1067bb7f8ed198c097b8c1a818b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -6914,18 +7021,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", + "simd-adler32", ] [[package]] name = "mio" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" dependencies = [ "libc", "log", - "wasi 0.11.1+wasi-snapshot-preview1", - "windows-sys 0.59.0", + "wasi", + "windows-sys 0.61.2", ] [[package]] @@ -6951,7 +7059,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -6979,11 +7087,11 @@ checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" [[package]] name = "newtype-uuid" -version = "1.2.4" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17d82edb1c8a6c20c238747ae7aae9181133e766bc92cd2556fdd764407d0d1" +checksum = "5c012d14ef788ab066a347d19e3dda699916c92293b05b85ba2c76b8c82d2830" dependencies = [ - "uuid 1.18.1", + "uuid 1.19.0", ] [[package]] @@ -7014,7 +7122,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "cfg-if", "cfg_aliases", "libc", @@ -7026,7 +7134,7 @@ version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "cfg-if", "cfg_aliases", "libc", @@ -7056,11 +7164,11 @@ checksum = "f5438dd2b2ff4c6df6e1ce22d825ed2fa93ee2922235cc45186991717f0a892d" [[package]] name = "normpath" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c178369371fd7db523726931e50d430b560e3059665abc537ba3277e9274c9c4" +checksum = "bf23ab2b905654b4cb177e30b629937b3868311d4e1cba859f899c041046e69b" dependencies = [ - "windows-sys 0.61.0", + "windows-sys 0.61.2", ] [[package]] @@ -7069,7 +7177,7 @@ version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "fsevent-sys", "inotify", "kqueue", @@ -7089,11 +7197,11 @@ checksum = "5e0826a989adedc2a244799e823aece04662b66609d96af8dff7ac6df9a8925d" [[package]] name = "nu-ansi-term" -version = "0.50.1" +version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -7214,9 +7322,9 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" +checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" dependencies = [ "num_enum_derive", "rustversion", @@ -7224,14 +7332,14 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" +checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -7251,9 +7359,9 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "nybbles" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa11e84403164a9f12982ab728f3c67c6fd4ab5b5f0254ffc217bdbd3b28ab0" +checksum = "2c4b5ecbd0beec843101bffe848217f770e8b8da81d8355b7d6e226f2199b3dc" dependencies = [ "alloy-rlp", "cfg-if", @@ -7263,11 +7371,26 @@ dependencies = [ "smallvec", ] +[[package]] +name = "objc2" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05" +dependencies = [ + "objc2-encode", +] + +[[package]] +name = "objc2-encode" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + [[package]] name = "object" -version = "0.36.7" +version = "0.37.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" dependencies = [ "memchr", ] @@ -7280,18 +7403,18 @@ checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "once_cell_polyfill" -version = "1.70.1" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] name = "once_map" -version = "0.4.22" +version = "0.4.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ab92196fc00faf53d3b02e7152eb1442af079d03d9972f5a579268bedfec3f" +checksum = "29eefd5038c9eee9e788d90966d6b5578dd3f88363a91edaec117a7ae0adc2d5" dependencies = [ "ahash", - "hashbrown 0.16.0", + "hashbrown 0.16.1", "parking_lot", "stable_deref_trait", ] @@ -7309,9 +7432,9 @@ dependencies = [ "alloy-rlp", "alloy-rpc-types-eth", "alloy-serde", - "derive_more 2.0.1", + "derive_more 2.1.0", "serde", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -7323,7 +7446,7 @@ checksum = "a79f352fc3893dcd670172e615afef993a41798a1d3fc0db88a3e60ef2e70ecc" [[package]] name = "op-revm" version = "10.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=b62d5218983b8824585bf36e1d7ac53c1eeacb9c#b62d5218983b8824585bf36e1d7ac53c1eeacb9c" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0#77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" dependencies = [ "auto_impl", "revm", @@ -7349,11 +7472,11 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.73" +version = "0.10.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" +checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "cfg-if", "foreign-types", "libc", @@ -7370,7 +7493,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -7381,9 +7504,9 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" -version = "0.9.109" +version = "0.9.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" +checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321" dependencies = [ "cc", "libc", @@ -7405,15 +7528,9 @@ checksum = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e" [[package]] name = "owo-colors" -version = "3.5.0" +version = "4.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" - -[[package]] -name = "owo-colors" -version = "4.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48dd4f4a2c8405440fd0462561f0e5806bd0f77e86f51c761481bdd4018b545e" +checksum = "9c6901729fa79e91a0913333229e9ca5dc725089d1c363b2f4b4760709dc4a52" [[package]] name = "p256" @@ -7427,15 +7544,6 @@ dependencies = [ "sha2", ] -[[package]] -name = "pad" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2ad9b889f1b12e0b9ee24db044b5129150d5eada288edc800f789928dc8c0e3" -dependencies = [ - "unicode-width 0.1.14", -] - [[package]] name = "parity-scale-codec" version = "3.7.5" @@ -7461,7 +7569,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -7472,9 +7580,9 @@ checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" -version = "0.12.4" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" dependencies = [ "lock_api", "parking_lot_core", @@ -7482,15 +7590,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.11" +version = "0.9.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-targets 0.52.6", + "windows-link 0.2.1", ] [[package]] @@ -7544,17 +7652,17 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] name = "pem" -version = "3.0.5" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38af38e8470ac9dee3ce1bae1af9c1671fffc44ddfd8bd1d0a3445bf349a8ef3" +checksum = "1d30c53c26bc5b31a98cd02d20f25a7c8567146caf63ed593a9d87b2775291be" dependencies = [ "base64 0.22.1", - "serde", + "serde_core", ] [[package]] @@ -7574,20 +7682,19 @@ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pest" -version = "2.8.2" +version = "2.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21e0a3a33733faeaf8651dfee72dd0f388f0c8e5ad496a3478fa5a922f49cfa8" +checksum = "cbcfd20a6d4eeba40179f05735784ad32bdaef05ce8e8af05f180d45bb3e7e22" dependencies = [ "memchr", - "thiserror 2.0.16", "ucd-trie", ] [[package]] name = "pest_derive" -version = "2.8.2" +version = "2.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc58706f770acb1dbd0973e6530a3cff4746fb721207feb3a8a6064cd0b6c663" +checksum = "51f72981ade67b1ca6adc26ec221be9f463f2b5839c7508998daa17c23d94d7f" dependencies = [ "pest", "pest_generator", @@ -7595,22 +7702,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.2" +version = "2.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d4f36811dfe07f7b8573462465d5cb8965fffc2e71ae377a33aecf14c2c9a2f" +checksum = "dee9efd8cdb50d719a80088b76f81aec7c41ed6d522ee750178f83883d271625" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] name = "pest_meta" -version = "2.8.2" +version = "2.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42919b05089acbd0a5dcd5405fb304d17d1053847b81163d09c4ad18ce8e8420" +checksum = "bf1d70880e76bdc13ba52eafa6239ce793d85c8e43896507e43dd8984ff05b82" dependencies = [ "pest", "sha2", @@ -7623,7 +7730,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" dependencies = [ "fixedbitset", - "indexmap 2.11.4", + "indexmap 2.12.1", ] [[package]] @@ -7697,7 +7804,7 @@ dependencies = [ "phf_shared 0.11.3", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -7710,7 +7817,7 @@ dependencies = [ "phf_shared 0.13.1", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -7768,7 +7875,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -7881,12 +7988,11 @@ dependencies = [ [[package]] name = "prettydiff" -version = "0.7.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abec3fb083c10660b3854367697da94c674e9e82aa7511014dc958beeb7215e9" +checksum = "ac17546d82912e64874e3d5b40681ce32eac4e5834344f51efcf689ff1550a65" dependencies = [ - "owo-colors 3.5.0", - "pad", + "owo-colors", ] [[package]] @@ -7896,7 +8002,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -7925,7 +8031,7 @@ version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "toml_edit 0.23.6", + "toml_edit 0.23.9", ] [[package]] @@ -7947,14 +8053,14 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[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", ] @@ -7967,7 +8073,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", "version_check", "yansi", ] @@ -7979,7 +8085,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3ef4f2f0422f23a82ec9f628ea2acd12871c81a9362b02c43c1aa86acfc3ba1" dependencies = [ "futures", - "indexmap 2.11.4", + "indexmap 2.12.1", "nix 0.30.1", "tokio", "tracing", @@ -7988,14 +8094,13 @@ dependencies = [ [[package]] name = "proptest" -version = "1.7.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fcdab19deb5195a31cf7726a210015ff1496ba1464fd42cb4f537b8b01b471f" +checksum = "bee689443a2bd0a16ab0348b52ee43e3b2d1b1f931c8aa5c9f8de4c86fbe8c40" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.9.4", - "lazy_static", + "bitflags 2.10.0", "num-traits", "rand 0.9.2", "rand_chacha 0.9.0", @@ -8008,13 +8113,13 @@ dependencies = [ [[package]] name = "proptest-derive" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee1c9ac207483d5e7db4940700de86a9aae46ef90c48b57f99fe7edb8345e49" +checksum = "095a99f75c69734802359b682be8daaf8980296731f6470434ea2c652af1dd30" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -8047,7 +8152,7 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -8060,7 +8165,7 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -8107,7 +8212,7 @@ version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76979bea66e7875e7509c4ec5300112b316af87fa7a252ca91c448b32dfe3993" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "memchr", "pulldown-cmark-escape", "unicase", @@ -8127,17 +8232,17 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quick-junit" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed1a693391a16317257103ad06a88c6529ac640846021da7c435a06fffdacd7" +checksum = "6ee9342d671fae8d66b3ae9fd7a9714dfd089c04d2a8b1ec0436ef77aee15e5f" dependencies = [ "chrono", - "indexmap 2.11.4", + "indexmap 2.12.1", "newtype-uuid", - "quick-xml 0.37.5", + "quick-xml 0.38.4", "strip-ansi-escapes", - "thiserror 2.0.16", - "uuid 1.18.1", + "thiserror 2.0.17", + "uuid 1.19.0", ] [[package]] @@ -8151,9 +8256,9 @@ dependencies = [ [[package]] name = "quick-xml" -version = "0.37.5" +version = "0.38.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb" +checksum = "b66c2058c55a409d601666cffe35f04333cf1013010882cec174a7467cd4e21c" dependencies = [ "memchr", ] @@ -8171,8 +8276,8 @@ dependencies = [ "quinn-udp", "rustc-hash", "rustls", - "socket2 0.6.0", - "thiserror 2.0.16", + "socket2 0.6.1", + "thiserror 2.0.17", "tokio", "tracing", "web-time", @@ -8185,7 +8290,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" dependencies = [ "bytes", - "getrandom 0.3.3", + "getrandom 0.3.4", "lru-slab", "rand 0.9.2", "ring", @@ -8193,7 +8298,7 @@ dependencies = [ "rustls", "rustls-pki-types", "slab", - "thiserror 2.0.16", + "thiserror 2.0.17", "tinyvec", "tracing", "web-time", @@ -8208,16 +8313,16 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.6.0", + "socket2 0.6.1", "tracing", "windows-sys 0.60.2", ] [[package]] name = "quote" -version = "1.0.40" +version = "1.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" dependencies = [ "proc-macro2", ] @@ -8302,7 +8407,7 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", "serde", ] @@ -8321,7 +8426,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eabd94c2f37801c20583fc49dd5cd6b0ba68c716787c2dd6ed18571e1e63117b" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "cassowary", "compact_str", "crossterm 0.28.1", @@ -8364,11 +8469,11 @@ checksum = "d3edd4d5d42c92f0a659926464d4cce56b562761267ecf0f469d85b7de384175" [[package]] name = "redox_syscall" -version = "0.5.17" +version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", ] [[package]] @@ -8379,34 +8484,34 @@ checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" dependencies = [ "getrandom 0.2.16", "libredox", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "ref-cast" -version = "1.0.24" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" dependencies = [ "ref-cast-impl", ] [[package]] name = "ref-cast-impl" -version = "1.0.24" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] name = "regex" -version = "1.11.2" +version = "1.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d7fd106d8c02486a8d64e778353d1cffe08ce79ac2e82f540c86d0facf6912" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" dependencies = [ "aho-corasick", "memchr", @@ -8416,9 +8521,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.10" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b9458fa0bfeeac22b5ca447c63aaf45f28439a709ccd244698632f9aa6394d6" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" dependencies = [ "aho-corasick", "memchr", @@ -8427,33 +8532,32 @@ dependencies = [ [[package]] name = "regex-lite" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943f41321c63ef1c92fd763bfe054d2668f7f225a5c29f0105903dc2fc04ba30" +checksum = "8d942b98df5e658f56f20d592c7f868833fe38115e65c33003d8cd224b0155da" [[package]] name = "regex-syntax" -version = "0.8.6" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" [[package]] name = "regress" -version = "0.10.4" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "145bb27393fe455dd64d6cbc8d059adfa392590a45eadf079c01b11857e7b010" +checksum = "2057b2325e68a893284d1538021ab90279adac1139957ca2a74426c6f118fb48" dependencies = [ - "hashbrown 0.15.5", + "hashbrown 0.16.1", "memchr", ] [[package]] name = "reqwest" -version = "0.12.23" +version = "0.12.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d429f34c8092b2d42c7c93cec323bb4adeb7c67698f70839adec842ec10c7ceb" +checksum = "b6eff9328d40131d43bd911d42d79eb6a47312002a4daefc9e37f17e74a7701a" dependencies = [ - "async-compression", "base64 0.22.1", "bytes", "encoding_rs", @@ -8461,7 +8565,7 @@ dependencies = [ "futures-core", "futures-util", "h2", - "http 1.3.1", + "http 1.4.0", "http-body 1.0.1", "http-body-util", "hyper", @@ -8495,13 +8599,13 @@ dependencies = [ "wasm-bindgen-futures", "wasm-streams", "web-sys", - "webpki-roots 1.0.2", + "webpki-roots 1.0.4", ] [[package]] name = "revm" version = "29.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=b62d5218983b8824585bf36e1d7ac53c1eeacb9c#b62d5218983b8824585bf36e1d7ac53c1eeacb9c" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0#77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" dependencies = [ "revm-bytecode", "revm-context", @@ -8519,7 +8623,7 @@ dependencies = [ [[package]] name = "revm-bytecode" version = "6.2.2" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=b62d5218983b8824585bf36e1d7ac53c1eeacb9c#b62d5218983b8824585bf36e1d7ac53c1eeacb9c" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0#77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" dependencies = [ "bitvec", "phf 0.13.1", @@ -8530,7 +8634,7 @@ dependencies = [ [[package]] name = "revm-context" version = "9.0.2" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=b62d5218983b8824585bf36e1d7ac53c1eeacb9c#b62d5218983b8824585bf36e1d7ac53c1eeacb9c" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0#77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" dependencies = [ "bitvec", "cfg-if", @@ -8546,7 +8650,7 @@ dependencies = [ [[package]] name = "revm-context-interface" version = "10.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=b62d5218983b8824585bf36e1d7ac53c1eeacb9c#b62d5218983b8824585bf36e1d7ac53c1eeacb9c" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0#77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" dependencies = [ "alloy-eip2930", "alloy-eip7702", @@ -8561,7 +8665,7 @@ dependencies = [ [[package]] name = "revm-database" version = "7.0.5" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=b62d5218983b8824585bf36e1d7ac53c1eeacb9c#b62d5218983b8824585bf36e1d7ac53c1eeacb9c" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0#77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" dependencies = [ "alloy-eips", "revm-bytecode", @@ -8574,7 +8678,7 @@ dependencies = [ [[package]] name = "revm-database-interface" version = "7.0.5" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=b62d5218983b8824585bf36e1d7ac53c1eeacb9c#b62d5218983b8824585bf36e1d7ac53c1eeacb9c" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0#77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" dependencies = [ "auto_impl", "either", @@ -8586,7 +8690,7 @@ dependencies = [ [[package]] name = "revm-handler" version = "10.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=b62d5218983b8824585bf36e1d7ac53c1eeacb9c#b62d5218983b8824585bf36e1d7ac53c1eeacb9c" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0#77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" dependencies = [ "auto_impl", "derive-where", @@ -8604,7 +8708,7 @@ dependencies = [ [[package]] name = "revm-inspector" version = "10.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=b62d5218983b8824585bf36e1d7ac53c1eeacb9c#b62d5218983b8824585bf36e1d7ac53c1eeacb9c" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0#77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" dependencies = [ "auto_impl", "either", @@ -8621,7 +8725,7 @@ dependencies = [ [[package]] name = "revm-inspectors" version = "0.29.0" -source = "git+https://github.com/SeismicSystems/seismic-revm-inspectors.git?rev=60943c133038e5ea0ac9f1afcb7070491ae97ca5#60943c133038e5ea0ac9f1afcb7070491ae97ca5" +source = "git+https://github.com/SeismicSystems/seismic-revm-inspectors.git?rev=9e26c0a55f522ad7d8cf4716d9df9d79b8116d52#9e26c0a55f522ad7d8cf4716d9df9d79b8116d52" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -8634,13 +8738,13 @@ dependencies = [ "revm", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "revm-interpreter" version = "25.0.2" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=b62d5218983b8824585bf36e1d7ac53c1eeacb9c#b62d5218983b8824585bf36e1d7ac53c1eeacb9c" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0#77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" dependencies = [ "revm-bytecode", "revm-context-interface", @@ -8652,7 +8756,7 @@ dependencies = [ [[package]] name = "revm-precompile" version = "27.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=b62d5218983b8824585bf36e1d7ac53c1eeacb9c#b62d5218983b8824585bf36e1d7ac53c1eeacb9c" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0#77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" dependencies = [ "ark-bls12-381", "ark-bn254", @@ -8676,7 +8780,7 @@ dependencies = [ [[package]] name = "revm-primitives" version = "20.2.1" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=b62d5218983b8824585bf36e1d7ac53c1eeacb9c#b62d5218983b8824585bf36e1d7ac53c1eeacb9c" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0#77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" dependencies = [ "alloy-primitives", "num_enum", @@ -8687,9 +8791,9 @@ dependencies = [ [[package]] name = "revm-state" version = "7.0.5" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=b62d5218983b8824585bf36e1d7ac53c1eeacb9c#b62d5218983b8824585bf36e1d7ac53c1eeacb9c" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0#77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "revm-bytecode", "revm-primitives", "serde", @@ -8704,7 +8808,7 @@ dependencies = [ "nix 0.30.1", "regex", "tempfile", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -8800,14 +8904,15 @@ dependencies = [ [[package]] name = "ruint" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ecb38f82477f20c5c3d62ef52d7c4e536e38ea9b73fb570a20c5cae0e14bcf6" +checksum = "a68df0380e5c9d20ce49534f292a36a7514ae21350726efe1865bdb1fa91d278" dependencies = [ "alloy-rlp", "arbitrary", "ark-ff 0.3.0", "ark-ff 0.4.2", + "ark-ff 0.5.0", "bytes", "fastrlp 0.3.1", "fastrlp 0.4.0", @@ -8821,7 +8926,7 @@ dependencies = [ "rand 0.9.2", "rlp", "ruint-macro", - "serde", + "serde_core", "valuable", "zeroize", ] @@ -8899,7 +9004,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "errno", "libc", "linux-raw-sys 0.4.15", @@ -8912,18 +9017,18 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "errno", "libc", "linux-raw-sys 0.11.0", - "windows-sys 0.61.0", + "windows-sys 0.61.2", ] [[package]] name = "rustls" -version = "0.23.31" +version = "0.23.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc" +checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f" dependencies = [ "aws-lc-rs", "log", @@ -8937,21 +9042,21 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" +checksum = "9980d917ebb0c0536119ba501e90834767bffc3d60641457fd84a1f3fd337923" dependencies = [ "openssl-probe", "rustls-pki-types", "schannel", - "security-framework 3.4.0", + "security-framework 3.5.1", ] [[package]] name = "rustls-pki-types" -version = "1.12.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +checksum = "708c0f9d5f54ba0272468c1d306a52c495b31fa155e91bc25371e6df7996908c" dependencies = [ "web-time", "zeroize", @@ -8972,7 +9077,7 @@ dependencies = [ "rustls-native-certs", "rustls-platform-verifier-android", "rustls-webpki", - "security-framework 3.4.0", + "security-framework 3.5.1", "security-framework-sys", "webpki-root-certs 0.26.11", "windows-sys 0.59.0", @@ -8986,9 +9091,9 @@ checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" [[package]] name = "rustls-webpki" -version = "0.103.6" +version = "0.103.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8572f3c2cb9934231157b45499fc41e1f58c589fdfb81a844ba873265e80f8eb" +checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52" dependencies = [ "aws-lc-rs", "ring", @@ -9004,9 +9109,9 @@ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "rusty-fork" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +checksum = "cc6bf79ff24e648f6da1f8d1f011e9cac26491b619e6b9280f2b47f1774e6ee2" dependencies = [ "fnv", "quick-error", @@ -9016,11 +9121,11 @@ dependencies = [ [[package]] name = "rustyline" -version = "17.0.1" +version = "17.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6614df0b6d4cfb20d1d5e295332921793ce499af3ebc011bf1e393380e1e492" +checksum = "e902948a25149d50edc1a8e0141aad50f54e22ba83ff988cf8f7c9ef07f50564" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "cfg-if", "clipboard-win", "fd-lock", @@ -9081,7 +9186,7 @@ version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" dependencies = [ - "windows-sys 0.61.0", + "windows-sys 0.61.2", ] [[package]] @@ -9098,9 +9203,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", @@ -9111,14 +9216,14 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "1.0.4" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d020396d1d138dc19f1165df7545479dcd58d93810dc5d646a16e55abefa80" +checksum = "301858a4023d78debd2353c7426dc486001bddc91ae31a76fb1f55132f7e2633" dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -9241,7 +9346,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -9250,11 +9355,11 @@ dependencies = [ [[package]] name = "security-framework" -version = "3.4.0" +version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b369d18893388b345804dc0007963c99b7d665ae71d275812d828c6f089640" +checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -9274,7 +9379,7 @@ dependencies = [ [[package]] name = "seismic-alloy-consensus" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=84dae78acc18792399b83b188e1523d282528427#84dae78acc18792399b83b188e1523d282528427" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=58d05b2724f901f550b1a89affea786a10d37c91#58d05b2724f901f550b1a89affea786a10d37c91" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -9284,18 +9389,20 @@ dependencies = [ "alloy-serde", "anyhow", "derive_more 1.0.0", - "jsonrpsee", + "jsonrpsee 0.24.10", "k256", + "rand 0.8.5", + "secp256k1 0.30.0", "seismic-enclave", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "seismic-alloy-network" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=84dae78acc18792399b83b188e1523d282528427#84dae78acc18792399b83b188e1523d282528427" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=58d05b2724f901f550b1a89affea786a10d37c91#58d05b2724f901f550b1a89affea786a10d37c91" dependencies = [ "alloy-consensus", "alloy-eip7702", @@ -9318,7 +9425,7 @@ dependencies = [ [[package]] name = "seismic-alloy-provider" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=84dae78acc18792399b83b188e1523d282528427#84dae78acc18792399b83b188e1523d282528427" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=58d05b2724f901f550b1a89affea786a10d37c91#58d05b2724f901f550b1a89affea786a10d37c91" dependencies = [ "alloy-network", "alloy-primitives", @@ -9336,7 +9443,7 @@ dependencies = [ [[package]] name = "seismic-alloy-rpc-types" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=84dae78acc18792399b83b188e1523d282528427#84dae78acc18792399b83b188e1523d282528427" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=58d05b2724f901f550b1a89affea786a10d37c91#58d05b2724f901f550b1a89affea786a10d37c91" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9354,39 +9461,23 @@ dependencies = [ [[package]] name = "seismic-enclave" version = "0.1.0" -source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=12bf284cc6cec2bb49ce24879200dcff16857aa9#12bf284cc6cec2bb49ce24879200dcff16857aa9" +source = "git+https://github.com/SeismicSystems/enclave.git?rev=ef9a53d84dc25596f66ccf438cfd3374a5b0eabc#ef9a53d84dc25596f66ccf438cfd3374a5b0eabc" dependencies = [ "aes-gcm", "anyhow", - "base64 0.22.1", "hkdf", - "jsonrpsee", - "kbs-types", + "jsonrpsee 0.26.0", "rand 0.9.2", "schnorrkel", "secp256k1 0.30.0", - "seismic-enclave-derive", "serde", - "serde_json", "sha2", - "tokio", - "tracing", -] - -[[package]] -name = "seismic-enclave-derive" -version = "0.1.0" -source = "git+https://github.com/SeismicSystems/seismic-enclave.git?rev=12bf284cc6cec2bb49ce24879200dcff16857aa9#12bf284cc6cec2bb49ce24879200dcff16857aa9" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.106", ] [[package]] name = "seismic-prelude" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=84dae78acc18792399b83b188e1523d282528427#84dae78acc18792399b83b188e1523d282528427" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=58d05b2724f901f550b1a89affea786a10d37c91#58d05b2724f901f550b1a89affea786a10d37c91" dependencies = [ "alloy-consensus", "alloy-eip7702", @@ -9409,7 +9500,7 @@ dependencies = [ [[package]] name = "seismic-revm" version = "1.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=b62d5218983b8824585bf36e1d7ac53c1eeacb9c#b62d5218983b8824585bf36e1d7ac53c1eeacb9c" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0#77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" dependencies = [ "auto_impl", "hkdf", @@ -9466,9 +9557,9 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.225" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd6c24dee235d0da097043389623fb913daddf92c76e9f5a1db88607a0bcbd1d" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" dependencies = [ "serde_core", "serde_derive", @@ -9486,22 +9577,22 @@ dependencies = [ [[package]] name = "serde_core" -version = "1.0.225" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "659356f9a0cb1e529b24c01e43ad2bdf520ec4ceaf83047b83ddcc2251f96383" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.225" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ea936adf78b1f766949a4977b91d2f5595825bd6ec079aa9543ad2685fc4516" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -9512,16 +9603,16 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] name = "serde_fmt" -version = "1.0.3" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d4ddca14104cd60529e8c7f7ba71a2c8acd8f7f5cfcdc2faf97eeb7c3010a4" +checksum = "6e497af288b3b95d067a23a4f749f2861121ffcb2f6d8379310dcda040c345ed" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -9530,7 +9621,7 @@ version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.12.1", "itoa", "memchr", "ryu", @@ -9560,9 +9651,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5417783452c2be558477e104686f7de5dae53dba813c28435e0e70f82d9b04ee" +checksum = "e24345aa0fe688594e73770a5f6d1b216508b4f93484c0026d521acd30134392" dependencies = [ "serde_core", ] @@ -9581,19 +9672,18 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.14.0" +version = "3.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2c45cd61fefa9db6f254525d46e392b852e0e61d9a1fd36e5bd183450a556d5" +checksum = "4fa237f2807440d238e0364a218270b98f767a00d3dada77b1c53ae88940e2e7" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.11.4", + "indexmap 2.12.1", "schemars 0.9.0", - "schemars 1.0.4", - "serde", - "serde_derive", + "schemars 1.1.0", + "serde_core", "serde_json", "serde_with_macros", "time", @@ -9601,14 +9691,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.14.0" +version = "3.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de90945e6565ce0d9a25098082ed4ee4002e047cb59892c318d66821e14bb30f" +checksum = "52a8e3ca0ca629121f70ab50f95249e5a6f925cc0f6ffe8256c45b728875706c" dependencies = [ - "darling 0.20.11", + "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -9696,9 +9786,9 @@ dependencies = [ [[package]] name = "signal-hook-mio" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd" +checksum = "b75a19a7a740b25bc7944bdee6172368f988763b744e3d4dfe753f6b4ece40cc" dependencies = [ "libc", "mio", @@ -9707,9 +9797,9 @@ dependencies = [ [[package]] name = "signal-hook-registry" -version = "1.4.6" +version = "1.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" +checksum = "7664a098b8e616bdfcc2dc0e9ac44eb231eedf41db4e9fe95d8d32ec728dedad" dependencies = [ "libc", ] @@ -9726,9 +9816,9 @@ dependencies = [ [[package]] name = "simd-adler32" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" +checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" [[package]] name = "similar" @@ -9758,7 +9848,7 @@ checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" dependencies = [ "num-bigint", "num-traits", - "thiserror 2.0.16", + "thiserror 2.0.17", "time", ] @@ -9791,9 +9881,9 @@ checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" [[package]] name = "snapbox" -version = "0.6.21" +version = "0.6.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96dcfc4581e3355d70ac2ee14cfdf81dce3d85c85f1ed9e2c1d3013f53b3436b" +checksum = "96fa1ce81be900d083b30ec2d481e6658c2acfaa2cfc7be45ccc2cc1b820edb3" dependencies = [ "anstream", "anstyle", @@ -9808,9 +9898,9 @@ dependencies = [ [[package]] name = "snapbox-macros" -version = "0.3.10" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16569f53ca23a41bb6f62e0a5084aa1661f4814a67fa33696a79073e03a664af" +checksum = "3b750c344002d7cc69afb9da00ebd9b5c0f8ac2eb7d115d9d45d5b5f47718d74" dependencies = [ "anstream", ] @@ -9827,12 +9917,12 @@ dependencies = [ [[package]] name = "socket2" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -9844,7 +9934,7 @@ dependencies = [ "base64 0.22.1", "bytes", "futures", - "http 1.3.1", + "http 1.4.0", "httparse", "log", "rand 0.8.5", @@ -9853,9 +9943,9 @@ dependencies = [ [[package]] name = "solar-ast" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bacae15e3ff9a01747580d0ee9816ff6a51fa26f190cdc51b46263d555f7333b" +checksum = "9b6aaf98d032ba3be85dca5f969895ade113a9137bb5956f80c5faf14689de59" dependencies = [ "alloy-primitives", "bumpalo", @@ -9886,9 +9976,9 @@ dependencies = [ [[package]] name = "solar-config" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4f0368370d4e7bc45586dfa545867f6685c1d8ec46a29843031f0563c88e4ff" +checksum = "ff16d692734c757edd339f5db142ba91b42772f8cbe1db1ce3c747f1e777185f" dependencies = [ "colorchoice", "strum 0.27.2", @@ -9896,13 +9986,13 @@ dependencies = [ [[package]] name = "solar-data-structures" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e246a9af3cc34b40e7612b600a5495f70768bdd365f9fa338d64afb33a59a96b" +checksum = "2dea34e58332c7d6a8cde1f1740186d31682b7be46e098b8cc16fcb7ffd98bf5" dependencies = [ "bumpalo", "index_vec", - "indexmap 2.11.4", + "indexmap 2.12.1", "parking_lot", "rayon", "rustc-hash", @@ -9911,14 +10001,14 @@ dependencies = [ [[package]] name = "solar-interface" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77e2e4dec38bc1940946f8d303260920f57022dc5a558a3786c3b83e121c23c6" +checksum = "2d6163af2e773f4d455212fa9ba2c0664506029dd26232eb406f5046092ac311" dependencies = [ - "annotate-snippets 0.12.4", + "annotate-snippets 0.12.5", "anstream", "anstyle", - "derive_more 2.0.1", + "derive_more 2.1.0", "dunce", "inturn", "itertools 0.14.0", @@ -9932,30 +10022,30 @@ dependencies = [ "solar-config", "solar-data-structures", "solar-macros", - "thiserror 2.0.16", + "thiserror 2.0.17", "tracing", "unicode-width 0.2.0", ] [[package]] name = "solar-macros" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b3d7b35daa205064e7965584b3144b73b38acce2257c21d01e351b8f8812d7" +checksum = "44a98045888d75d17f52e7b76f6098844b76078b5742a450c3ebcdbdb02da124" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] name = "solar-parse" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54766e7b5696cdfad50c0ea325035dd106ed2377635f1eb45db3043b6d117373" +checksum = "19b77a9cbb07948e4586cdcf64f0a483424197308816ebd57a4cf06130b68562" dependencies = [ "alloy-primitives", - "bitflags 2.9.4", + "bitflags 2.10.0", "bumpalo", "itertools 0.14.0", "memchr", @@ -9972,15 +10062,15 @@ dependencies = [ [[package]] name = "solar-sema" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "979354fd20a7ee6229d66d49a3c3ca1e37be0e780b5b6aa864109c327142b529" +checksum = "cd033af43a38da316a04b25bbd20b121ce5d728b61e6988fd8fd6e2f1e68d0a1" dependencies = [ "alloy-json-abi", "alloy-primitives", - "bitflags 2.9.4", + "bitflags 2.10.0", "bumpalo", - "derive_more 2.0.1", + "derive_more 2.1.0", "either", "once_map", "paste", @@ -10007,7 +10097,7 @@ dependencies = [ "clap", "clap-verbosity-flag", "cliclack", - "derive_more 2.0.1", + "derive_more 2.1.0", "email-address-parser", "env_logger", "path-slash", @@ -10025,7 +10115,7 @@ dependencies = [ "bon", "chrono", "const-hex", - "derive_more 2.0.1", + "derive_more 2.1.0", "dunce", "home", "ignore", @@ -10039,10 +10129,10 @@ dependencies = [ "serde", "serde_json", "sha2", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", - "toml_edit 0.23.6", - "uuid 1.18.1", + "toml_edit 0.23.9", + "uuid 1.19.0", "zip", "zip-extract", ] @@ -10076,9 +10166,9 @@ checksum = "3b9b39299b249ad65f3b7e96443bad61c02ca5cd3589f46cb6d610a0fd6c0d6a" [[package]] name = "stable_deref_trait" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] name = "static_assertions" @@ -10160,7 +10250,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -10172,7 +10262,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -10183,15 +10273,15 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "sval" -version = "2.14.1" +version = "2.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cc9739f56c5d0c44a5ed45473ec868af02eb896af8c05f616673a31e1d1bb09" +checksum = "502b8906c4736190684646827fbab1e954357dfe541013bbd7994d033d53a1ca" [[package]] name = "sval_buffer" -version = "2.14.1" +version = "2.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f39b07436a8c271b34dad5070c634d1d3d76d6776e938ee97b4a66a5e8003d0b" +checksum = "c4b854348b15b6c441bdd27ce9053569b016a0723eab2d015b1fd8e6abe4f708" dependencies = [ "sval", "sval_ref", @@ -10199,18 +10289,18 @@ dependencies = [ [[package]] name = "sval_dynamic" -version = "2.14.1" +version = "2.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffcb072d857431bf885580dacecf05ed987bac931230736739a79051dbf3499b" +checksum = "a0bd9e8b74410ddad37c6962587c5f9801a2caadba9e11f3f916ee3f31ae4a1f" dependencies = [ "sval", ] [[package]] name = "sval_fmt" -version = "2.14.1" +version = "2.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f214f427ad94a553e5ca5514c95c6be84667cbc5568cce957f03f3477d03d5c" +checksum = "6fe17b8deb33a9441280b4266c2d257e166bafbaea6e66b4b34ca139c91766d9" dependencies = [ "itoa", "ryu", @@ -10219,9 +10309,9 @@ dependencies = [ [[package]] name = "sval_json" -version = "2.14.1" +version = "2.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "389ed34b32e638dec9a99c8ac92d0aa1220d40041026b625474c2b6a4d6f4feb" +checksum = "854addb048a5bafb1f496c98e0ab5b9b581c3843f03ca07c034ae110d3b7c623" dependencies = [ "itoa", "ryu", @@ -10230,9 +10320,9 @@ dependencies = [ [[package]] name = "sval_nested" -version = "2.14.1" +version = "2.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14bae8fcb2f24fee2c42c1f19037707f7c9a29a0cda936d2188d48a961c4bb2a" +checksum = "96cf068f482108ff44ae8013477cb047a1665d5f1a635ad7cf79582c1845dce9" dependencies = [ "sval", "sval_buffer", @@ -10241,29 +10331,29 @@ dependencies = [ [[package]] name = "sval_ref" -version = "2.14.1" +version = "2.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a4eaea3821d3046dcba81d4b8489421da42961889902342691fb7eab491d79e" +checksum = "ed02126365ffe5ab8faa0abd9be54fbe68d03d607cd623725b0a71541f8aaa6f" dependencies = [ "sval", ] [[package]] name = "sval_serde" -version = "2.14.1" +version = "2.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "172dd4aa8cb3b45c8ac8f3b4111d644cd26938b0643ede8f93070812b87fb339" +checksum = "a263383c6aa2076c4ef6011d3bae1b356edf6ea2613e3d8e8ebaa7b57dd707d5" dependencies = [ - "serde", + "serde_core", "sval", "sval_nested", ] [[package]] name = "svm-rs" -version = "0.5.19" +version = "0.5.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f15cc0fb280301739995e3b9f0f0dde3aecb876814f4768689f9138570cd3b" +checksum = "909e8ff825120cd2b34ceb236ab72e2a7f74b1d3a86c247936c8ff7a80c5d408" dependencies = [ "const-hex", "dirs", @@ -10273,16 +10363,16 @@ dependencies = [ "serde_json", "sha2", "tempfile", - "thiserror 2.0.16", + "thiserror 2.0.17", "url", "zip", ] [[package]] name = "svm-rs-builds" -version = "0.5.19" +version = "0.5.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31affc47068aeef445accc5c3d5f7fd24f9072cae0a651cef564239003c94ff8" +checksum = "c1ebe77b200f965e8dbec3ef1d8337e974179ca1ecaa9fc28f67288d6b438159" dependencies = [ "const-hex", "semver 1.0.27", @@ -10303,9 +10393,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.106" +version = "2.0.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" +checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" dependencies = [ "proc-macro2", "quote", @@ -10314,13 +10404,13 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "1.3.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=33e302d06f56bb4dda85359005af7e302f48272f#33e302d06f56bb4dda85359005af7e302f48272f" +version = "1.4.1" +source = "git+https://github.com/SeismicSystems/seismic-alloy-core.git?rev=68313cb636365501a699c47865807158544eace1#68313cb636365501a699c47865807158544eace1" dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -10340,7 +10430,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -10349,7 +10439,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "core-foundation 0.9.4", "system-configuration-sys", ] @@ -10372,15 +10462,15 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.22.0" +version = "3.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84fa4d11fadde498443cca10fd3ac23c951f0dc59e080e9f4b93d4df4e4eea53" +checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" dependencies = [ "fastrand", - "getrandom 0.3.3", + "getrandom 0.3.4", "once_cell", "rustix 1.1.2", - "windows-sys 0.61.0", + "windows-sys 0.61.2", ] [[package]] @@ -10396,11 +10486,11 @@ dependencies = [ [[package]] name = "term" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2111ef44dae28680ae9752bb89409e7310ca33a8c621ebe7b106cf5c928b3ac0" +checksum = "d8c27177b12a6399ffc08b98f76f7c9a1f4fe9fc967c784c5a071fa8d93cf7e1" dependencies = [ - "windows-sys 0.61.0", + "windows-sys 0.61.2", ] [[package]] @@ -10459,11 +10549,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.16" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" dependencies = [ - "thiserror-impl 2.0.16", + "thiserror-impl 2.0.17", ] [[package]] @@ -10474,18 +10564,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] name = "thiserror-impl" -version = "2.0.16" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -10508,9 +10598,9 @@ dependencies = [ [[package]] name = "tikv-jemalloc-sys" -version = "0.6.0+5.3.0-1-ge13ca993e8ccb9ba9847cc330696e02839f328f7" +version = "0.6.1+5.3.0-1-ge13ca993e8ccb9ba9847cc330696e02839f328f7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd3c60906412afa9c2b5b5a48ca6a5abe5736aec9eb48ad05037a677e52e4e2d" +checksum = "cd8aa5b2ab86a2cefa406d889139c162cbb230092f7d1d7cbc1716405d852a3b" dependencies = [ "cc", "libc", @@ -10518,9 +10608,9 @@ dependencies = [ [[package]] name = "tikv-jemallocator" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cec5ff18518d81584f477e9bfdf957f5bb0979b0bac3af4ca30b5b3ae2d2865" +checksum = "0359b4327f954e0567e69fb191cf1436617748813819c94b8cd4a431422d053a" dependencies = [ "libc", "tikv-jemalloc-sys", @@ -10528,11 +10618,12 @@ dependencies = [ [[package]] name = "time" -version = "0.3.43" +version = "0.3.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83bde6f1ec10e72d583d91623c939f623002284ef622b87de38cfd546cbf2031" +checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" dependencies = [ "deranged", + "itoa", "js-sys", "libc", "num-conv", @@ -10595,33 +10686,30 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.47.1" +version = "1.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" dependencies = [ - "backtrace", "bytes", - "io-uring", "libc", "mio", "parking_lot", "pin-project-lite", "signal-hook-registry", - "slab", - "socket2 0.6.0", + "socket2 0.6.1", "tokio-macros", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] name = "tokio-macros" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -10636,9 +10724,9 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.3" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f63835928ca123f1bef57abbcd23bb2ba0ac9ae1235f1e65bda0d06e7786bd" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" dependencies = [ "rustls", "tokio", @@ -10668,15 +10756,27 @@ dependencies = [ "rustls-pki-types", "tokio", "tokio-rustls", - "tungstenite", + "tungstenite 0.26.2", "webpki-roots 0.26.11", ] +[[package]] +name = "tokio-tungstenite" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25a406cddcc431a75d3d9afc6a7c0f7428d4891dd973e4d54c56b46127bf857" +dependencies = [ + "futures-util", + "log", + "tokio", + "tungstenite 0.28.0", +] + [[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", @@ -10709,14 +10809,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.7" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00e5e5d9bf2475ac9d4f0d9edab68cc573dc2fd644b0dba36b0c30a92dd9eaa0" +checksum = "f0dc8b1fb61449e27716ec0e1bdf0f6b8f3e8f6b05391e8497b8b6d7804ea6d8" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.12.1", "serde_core", - "serde_spanned 1.0.2", - "toml_datetime 0.7.2", + "serde_spanned 1.0.3", + "toml_datetime 0.7.3", "toml_parser", "toml_writer", "winnow", @@ -10733,9 +10833,9 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f1085dec27c2b6632b04c80b3bb1b4300d6495d1e129693bdda7d91e72eec1" +checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" dependencies = [ "serde_core", ] @@ -10746,7 +10846,7 @@ version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.12.1", "serde", "serde_spanned 0.6.9", "toml_datetime 0.6.11", @@ -10756,14 +10856,14 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.23.6" +version = "0.23.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3effe7c0e86fdff4f69cdd2ccc1b96f933e24811c5441d44904e8683e27184b" +checksum = "5d7cbc3b4b49633d57a0509303158ca50de80ae32c265093b24c414705807832" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.12.1", "serde_core", - "serde_spanned 1.0.2", - "toml_datetime 0.7.2", + "serde_spanned 1.0.3", + "toml_datetime 0.7.3", "toml_parser", "toml_writer", "winnow", @@ -10771,9 +10871,9 @@ dependencies = [ [[package]] name = "toml_parser" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cf893c33be71572e0e9aa6dd15e6677937abd686b066eac3f8cd3531688a627" +checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" dependencies = [ "winnow", ] @@ -10786,9 +10886,9 @@ checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" [[package]] name = "toml_writer" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d163a63c116ce562a22cda521fcc4d79152e7aba014456fb5eb442f6d6a10109" +checksum = "df8b2b54733674ad286d16267dcfc7a71ed5c776e4ac7aa3c3e2561f7c637bf2" [[package]] name = "tonic" @@ -10801,7 +10901,7 @@ dependencies = [ "base64 0.22.1", "bytes", "h2", - "http 1.3.1", + "http 1.4.0", "http-body 1.0.1", "http-body-util", "hyper", @@ -10850,7 +10950,7 @@ checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ "futures-core", "futures-util", - "indexmap 2.11.4", + "indexmap 2.12.1", "pin-project-lite", "slab", "sync_wrapper", @@ -10863,15 +10963,16 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.6.6" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" dependencies = [ - "bitflags 2.9.4", + "async-compression", + "bitflags 2.10.0", "bytes", "futures-core", "futures-util", - "http 1.3.1", + "http 1.4.0", "http-body 1.0.1", "http-body-util", "http-range-header", @@ -10915,9 +11016,9 @@ dependencies = [ [[package]] name = "tracing" -version = "0.1.41" +version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +checksum = "2d15d90a0b5c19378952d479dc858407149d7bb45a14de0142f6c534b16fc647" dependencies = [ "log", "pin-project-lite", @@ -10927,20 +11028,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.30" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] name = "tracing-core" -version = "0.1.34" +version = "0.1.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +checksum = "7a04e24fab5c89c6a36eb8558c9656f30d81de51dfa4d3b45f26b21d61fa0a6c" dependencies = [ "once_cell", "valuable", @@ -10953,7 +11054,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b1581020d7a273442f5b45074a6a57d5757ad0a47dac0e9f0bd57b81936f3db" dependencies = [ "tracing", - "tracing-subscriber 0.3.20", + "tracing-subscriber 0.3.22", ] [[package]] @@ -10978,9 +11079,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.20" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" +checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" dependencies = [ "matchers", "nu-ansi-term", @@ -11001,15 +11102,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eaa1852afa96e0fe9e44caa53dc0bd2d9d05e0f2611ce09f97f8677af56e4ba" dependencies = [ "tracing-core", - "tracing-subscriber 0.3.20", + "tracing-subscriber 0.3.22", "tracy-client", ] [[package]] name = "tracy-client" -version = "0.18.2" +version = "0.18.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef54005d3d760186fd662dad4b7bb27ecd5531cdef54d1573ebd3f20a9205ed7" +checksum = "91d722a05fe49b31fef971c4732a7d4aa6a18283d9ba46abddab35f484872947" dependencies = [ "loom", "once_cell", @@ -11019,9 +11120,9 @@ dependencies = [ [[package]] name = "tracy-client-sys" -version = "0.26.1" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "319c70195101a93f56db4c74733e272d720768e13471f400c78406a326b172b0" +checksum = "2fb391ac70462b3097a755618fbf9c8f95ecc1eb379a414f7b46f202ed10db1f" dependencies = [ "cc", "windows-targets 0.52.6", @@ -11055,14 +11156,31 @@ checksum = "4793cb5e56680ecbb1d843515b23b6de9a75eb04b66643e256a396d43be33c13" dependencies = [ "bytes", "data-encoding", - "http 1.3.1", + "http 1.4.0", "httparse", "log", "rand 0.9.2", "rustls", "rustls-pki-types", "sha1", - "thiserror 2.0.16", + "thiserror 2.0.17", + "utf-8", +] + +[[package]] +name = "tungstenite" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8628dcc84e5a09eb3d8423d6cb682965dea9133204e8fb3efee74c2a0c259442" +dependencies = [ + "bytes", + "data-encoding", + "http 1.4.0", + "httparse", + "log", + "rand 0.9.2", + "sha1", + "thiserror 2.0.17", "utf-8", ] @@ -11074,9 +11192,9 @@ checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] name = "typenum" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" [[package]] name = "ucd-trie" @@ -11086,9 +11204,9 @@ checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" [[package]] name = "ui_test" -version = "0.30.2" +version = "0.30.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b56a6897cc4bb6f8daf1939b0b39cd9645856997f46f4d0b3e3cb7122dfe9251" +checksum = "ada249620d81f010b9a1472b63a5077ac7c722dd0f4bacf6528b313d0b8c15d8" dependencies = [ "annotate-snippets 0.11.5", "anyhow", @@ -11099,7 +11217,7 @@ dependencies = [ "colored", "comma", "crossbeam-channel", - "indicatif 0.17.11", + "indicatif", "levenshtein", "prettydiff", "regex", @@ -11151,9 +11269,9 @@ checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" [[package]] name = "unicode-ident" -version = "1.0.19" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" [[package]] name = "unicode-joining-type" @@ -11169,9 +11287,9 @@ checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" [[package]] name = "unicode-normalization" -version = "0.1.24" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" +checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" dependencies = [ "tinyvec", ] @@ -11213,9 +11331,9 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "unit-prefix" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "323402cff2dd658f39ca17c789b502021b3f18707c91cdf22e3838e1b4023817" +checksum = "81e544489bf3d8ef66c953931f56617f423cd4b5494be343d9b9d3dda037b9a3" [[package]] name = "universal-hash" @@ -11265,9 +11383,9 @@ checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" [[package]] name = "utf8-width" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86bd8d4e895da8537e5315b8254664e6b769c4ff3db18321b297a1e7004392e3" +checksum = "1292c0d970b54115d14f2492fe0170adf21d68a1de108eebc51c1df4f346a091" [[package]] name = "utf8_iter" @@ -11293,13 +11411,13 @@ dependencies = [ [[package]] name = "uuid" -version = "1.18.1" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" +checksum = "e2e054861b4bd027cd373e18e8d8d8e6548085000e41290d95ce0c373a654b4a" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", "js-sys", - "serde", + "serde_core", "wasm-bindgen", ] @@ -11311,9 +11429,9 @@ checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "value-bag" -version = "1.11.1" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943ce29a8a743eb10d6082545d861b24f9d1b160b7d741e0f2cdf726bec909c5" +checksum = "7ba6f5989077681266825251a52748b8c1d8a4ad098cc37e440103d0ea717fc0" dependencies = [ "value-bag-serde1", "value-bag-sval2", @@ -11321,20 +11439,20 @@ dependencies = [ [[package]] name = "value-bag-serde1" -version = "1.11.1" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35540706617d373b118d550d41f5dfe0b78a0c195dc13c6815e92e2638432306" +checksum = "16530907bfe2999a1773ca5900a65101e092c70f642f25cc23ca0c43573262c5" dependencies = [ "erased-serde", - "serde", + "serde_core", "serde_fmt", ] [[package]] name = "value-bag-sval2" -version = "1.11.1" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fe7e140a2658cc16f7ee7a86e413e803fc8f9b5127adc8755c19f9fefa63a52" +checksum = "d00ae130edd690eaa877e4f40605d534790d1cf1d651e7685bd6a144521b251f" dependencies = [ "sval", "sval_buffer", @@ -11418,15 +11536,6 @@ version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" -[[package]] -name = "wasi" -version = "0.14.7+wasi-0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "883478de20367e224c0090af9cf5f9fa85bed63a95c1abf3afc5c083ebc06e8c" -dependencies = [ - "wasip2", -] - [[package]] name = "wasip2" version = "1.0.1+wasi-0.2.4" @@ -11438,9 +11547,9 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.103" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab10a69fbd0a177f5f649ad4d8d3305499c42bab9aef2f7ff592d0ec8f833819" +checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd" dependencies = [ "cfg-if", "once_cell", @@ -11449,25 +11558,11 @@ dependencies = [ "wasm-bindgen-shared", ] -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.103" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bb702423545a6007bbc368fde243ba47ca275e549c8a28617f56f6ba53b1d1c" -dependencies = [ - "bumpalo", - "log", - "proc-macro2", - "quote", - "syn 2.0.106", - "wasm-bindgen-shared", -] - [[package]] name = "wasm-bindgen-futures" -version = "0.4.53" +version = "0.4.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0b221ff421256839509adbb55998214a70d829d3a28c69b4a6672e9d2a42f67" +checksum = "836d9622d604feee9e5de25ac10e3ea5f2d65b41eac0d9ce72eb5deae707ce7c" dependencies = [ "cfg-if", "js-sys", @@ -11478,9 +11573,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.103" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc65f4f411d91494355917b605e1480033152658d71f722a90647f56a70c88a0" +checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -11488,22 +11583,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.103" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffc003a991398a8ee604a401e194b6b3a39677b3173d6e74495eb51b82e99a32" +checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40" dependencies = [ + "bumpalo", "proc-macro2", "quote", - "syn 2.0.106", - "wasm-bindgen-backend", + "syn 2.0.111", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.103" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "293c37f4efa430ca14db3721dfbe48d8c33308096bd44d80ebaa775ab71ba1cf" +checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4" dependencies = [ "unicode-ident", ] @@ -11547,7 +11642,7 @@ dependencies = [ "miette", "normalize-path", "notify", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tracing", "watchexec-events", @@ -11573,7 +11668,7 @@ checksum = "377729679262964c27e6a28f360a84b7aedb172b59841301c1c77922305dfd83" dependencies = [ "miette", "nix 0.30.1", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -11592,9 +11687,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.80" +version = "0.3.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbe734895e869dc429d78c4b433f8d17d95f8d05317440b4fad5ab2d33e596dc" +checksum = "9b32828d774c412041098d182a8b38b16ea816958e07cf40eec2bc080ae137ac" dependencies = [ "js-sys", "wasm-bindgen", @@ -11628,14 +11723,14 @@ version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75c7f0ef91146ebfb530314f5f1d24528d7f0767efbfd31dce919275413e393e" dependencies = [ - "webpki-root-certs 1.0.2", + "webpki-root-certs 1.0.4", ] [[package]] name = "webpki-root-certs" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4ffd8df1c57e87c325000a3d6ef93db75279dc3a231125aac571650f22b12a" +checksum = "ee3e3b5f5e80bc89f30ce8d0343bf4e5f12341c51f3e26cbeecbc7c85443e85b" dependencies = [ "rustls-pki-types", ] @@ -11646,14 +11741,14 @@ version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" dependencies = [ - "webpki-roots 1.0.2", + "webpki-roots 1.0.4", ] [[package]] name = "webpki-roots" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8983c3ab33d6fb807cfcdad2491c4ea8cbc8ed839181c7dfd9c67c83e261b2" +checksum = "b2878ef029c47c6e8cf779119f20fcf52bde7ad42a731b2a304bc221df17571e" dependencies = [ "rustls-pki-types", ] @@ -11671,9 +11766,9 @@ dependencies = [ [[package]] name = "widestring" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd7cf3379ca1aac9eea11fba24fd7e315d621f8dfe35c8d7d2be8b793726e07d" +checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471" [[package]] name = "winapi" @@ -11697,7 +11792,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.61.0", + "windows-sys 0.61.2", ] [[package]] @@ -11713,7 +11808,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" dependencies = [ "windows-collections", - "windows-core", + "windows-core 0.61.2", "windows-future", "windows-link 0.1.3", "windows-numerics", @@ -11725,7 +11820,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" dependencies = [ - "windows-core", + "windows-core 0.61.2", ] [[package]] @@ -11737,8 +11832,21 @@ dependencies = [ "windows-implement", "windows-interface", "windows-link 0.1.3", - "windows-result", - "windows-strings", + "windows-result 0.3.4", + "windows-strings 0.4.2", +] + +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link 0.2.1", + "windows-result 0.4.1", + "windows-strings 0.5.1", ] [[package]] @@ -11747,31 +11855,31 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" dependencies = [ - "windows-core", + "windows-core 0.61.2", "windows-link 0.1.3", "windows-threading", ] [[package]] name = "windows-implement" -version = "0.60.0" +version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] name = "windows-interface" -version = "0.59.1" +version = "0.59.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -11782,9 +11890,9 @@ checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" [[package]] name = "windows-link" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] name = "windows-numerics" @@ -11792,19 +11900,19 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" dependencies = [ - "windows-core", + "windows-core 0.61.2", "windows-link 0.1.3", ] [[package]] name = "windows-registry" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" +checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" dependencies = [ - "windows-link 0.1.3", - "windows-result", - "windows-strings", + "windows-link 0.2.1", + "windows-result 0.4.1", + "windows-strings 0.5.1", ] [[package]] @@ -11816,6 +11924,15 @@ dependencies = [ "windows-link 0.1.3", ] +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link 0.2.1", +] + [[package]] name = "windows-strings" version = "0.4.2" @@ -11825,6 +11942,15 @@ dependencies = [ "windows-link 0.1.3", ] +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link 0.2.1", +] + [[package]] name = "windows-sys" version = "0.45.0" @@ -11858,16 +11984,16 @@ version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" dependencies = [ - "windows-targets 0.53.3", + "windows-targets 0.53.5", ] [[package]] name = "windows-sys" -version = "0.61.0" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e201184e40b2ede64bc2ea34968b28e33622acdbbf37104f0e4a33f7abe657aa" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ - "windows-link 0.2.0", + "windows-link 0.2.1", ] [[package]] @@ -11903,19 +12029,19 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.53.3" +version = "0.53.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" dependencies = [ - "windows-link 0.1.3", - "windows_aarch64_gnullvm 0.53.0", - "windows_aarch64_msvc 0.53.0", - "windows_i686_gnu 0.53.0", - "windows_i686_gnullvm 0.53.0", - "windows_i686_msvc 0.53.0", - "windows_x86_64_gnu 0.53.0", - "windows_x86_64_gnullvm 0.53.0", - "windows_x86_64_msvc 0.53.0", + "windows-link 0.2.1", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", ] [[package]] @@ -11941,9 +12067,9 @@ checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" [[package]] name = "windows_aarch64_msvc" @@ -11959,9 +12085,9 @@ checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_aarch64_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" [[package]] name = "windows_i686_gnu" @@ -11977,9 +12103,9 @@ checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnu" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" [[package]] name = "windows_i686_gnullvm" @@ -11989,9 +12115,9 @@ checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" [[package]] name = "windows_i686_msvc" @@ -12007,9 +12133,9 @@ checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_i686_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" [[package]] name = "windows_x86_64_gnu" @@ -12025,9 +12151,9 @@ checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnu" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" [[package]] name = "windows_x86_64_gnullvm" @@ -12043,9 +12169,9 @@ checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" [[package]] name = "windows_x86_64_msvc" @@ -12061,15 +12187,15 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "windows_x86_64_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winnow" -version = "0.7.13" +version = "0.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" +checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" dependencies = [ "memchr", ] @@ -12111,7 +12237,7 @@ dependencies = [ "pharos", "rustc_version 0.4.1", "send_wrapper 0.6.0", - "thiserror 2.0.16", + "thiserror 2.0.17", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -12167,28 +12293,28 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", "synstructure", ] [[package]] name = "zerocopy" -version = "0.8.27" +version = "0.8.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" +checksum = "fd74ec98b9250adb3ca554bdde269adf631549f51d8a8f8f0a10b50f1cb298c3" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.27" +version = "0.8.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -12208,15 +12334,15 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", "synstructure", ] [[package]] name = "zeroize" -version = "1.8.1" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" dependencies = [ "zeroize_derive", ] @@ -12229,7 +12355,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -12251,7 +12377,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -12263,7 +12389,7 @@ dependencies = [ "arbitrary", "crc32fast", "flate2", - "indexmap 2.11.4", + "indexmap 2.12.1", "memchr", "zopfli", ] @@ -12275,21 +12401,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fa5b9958fd0b5b685af54f2c3fa21fca05fe295ebaf3e77b6d24d96c4174037" dependencies = [ "log", - "thiserror 2.0.16", + "thiserror 2.0.17", "zip", ] [[package]] name = "zlib-rs" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f06ae92f42f5e5c42443fd094f245eb656abf56dd7cce9b8b263236565e00f2" +checksum = "36134c44663532e6519d7a6dfdbbe06f6f8192bde8ae9ed076e9b213f0e31df7" [[package]] name = "zopfli" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edfc5ee405f504cd4984ecc6f14d02d55cfda60fa4b689434ef4102aae150cd7" +checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249" dependencies = [ "bumpalo", "crc32fast", diff --git a/Cargo.toml b/Cargo.toml index 554c6e9a9..d58cb9983 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -375,41 +375,41 @@ rexpect = { git = "https://github.com/rust-cli/rexpect", rev = "2ed0b1898d7edaf6 # If our dependencies depend on these things, # then this will override whatever versions they point to # and instead use our local version -seismic-enclave = { git = "https://github.com/SeismicSystems/seismic-enclave.git", rev = "12bf284cc6cec2bb49ce24879200dcff16857aa9" } +seismic-enclave = { git = "https://github.com/SeismicSystems/enclave.git", rev = "ef9a53d84dc25596f66ccf438cfd3374a5b0eabc" } # seismic-alloy-core -alloy-dyn-abi = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "33e302d06f56bb4dda85359005af7e302f48272f" } -alloy-json-abi = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "33e302d06f56bb4dda85359005af7e302f48272f" } -alloy-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "33e302d06f56bb4dda85359005af7e302f48272f" } -alloy-sol-macro = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "33e302d06f56bb4dda85359005af7e302f48272f" } -alloy-sol-macro-expander = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "33e302d06f56bb4dda85359005af7e302f48272f" } -alloy-sol-macro-input = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "33e302d06f56bb4dda85359005af7e302f48272f" } -alloy-sol-types = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "33e302d06f56bb4dda85359005af7e302f48272f" } -alloy-sol-type-parser = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "33e302d06f56bb4dda85359005af7e302f48272f" } +alloy-dyn-abi = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "68313cb636365501a699c47865807158544eace1" } +alloy-json-abi = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "68313cb636365501a699c47865807158544eace1" } +alloy-primitives = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "68313cb636365501a699c47865807158544eace1" } +alloy-sol-macro = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "68313cb636365501a699c47865807158544eace1" } +alloy-sol-macro-expander = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "68313cb636365501a699c47865807158544eace1" } +alloy-sol-macro-input = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "68313cb636365501a699c47865807158544eace1" } +alloy-sol-types = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "68313cb636365501a699c47865807158544eace1" } +alloy-sol-type-parser = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "68313cb636365501a699c47865807158544eace1" } alloy-trie = { git = "https://github.com/SeismicSystems/seismic-trie.git", rev = "d8425918ced1d62043c3a64b382d6fa1d8c25518" } # seismic-revm -revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "b62d5218983b8824585bf36e1d7ac53c1eeacb9c" } -revm-context-interface = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "b62d5218983b8824585bf36e1d7ac53c1eeacb9c" } -revm-interpreter = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "b62d5218983b8824585bf36e1d7ac53c1eeacb9c" } -revm-primitives = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "b62d5218983b8824585bf36e1d7ac53c1eeacb9c" } -op-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "b62d5218983b8824585bf36e1d7ac53c1eeacb9c" } -seismic-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "b62d5218983b8824585bf36e1d7ac53c1eeacb9c" } +revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" } +revm-context-interface = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" } +revm-interpreter = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" } +revm-primitives = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" } +op-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" } +seismic-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" } -revm-inspectors = { git = "https://github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "60943c133038e5ea0ac9f1afcb7070491ae97ca5" } +revm-inspectors = { git = "https://github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "9e26c0a55f522ad7d8cf4716d9df9d79b8116d52" } # seismic-alloy -seismic-alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "84dae78acc18792399b83b188e1523d282528427" } -seismic-alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "84dae78acc18792399b83b188e1523d282528427" } -seismic-alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "84dae78acc18792399b83b188e1523d282528427" } -seismic-alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "84dae78acc18792399b83b188e1523d282528427" } -seismic-prelude = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "84dae78acc18792399b83b188e1523d282528427" } +seismic-alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "58d05b2724f901f550b1a89affea786a10d37c91" } +seismic-alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "58d05b2724f901f550b1a89affea786a10d37c91" } +seismic-alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "58d05b2724f901f550b1a89affea786a10d37c91" } +seismic-alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "58d05b2724f901f550b1a89affea786a10d37c91" } +seismic-prelude = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "58d05b2724f901f550b1a89affea786a10d37c91" } # alloy-evm -alloy-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "fe3d5455305ed54e6958fc1157f64cd7ca12cb5f" } -alloy-op-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "fe3d5455305ed54e6958fc1157f64cd7ca12cb5f" } -alloy-seismic-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "fe3d5455305ed54e6958fc1157f64cd7ca12cb5f" } +alloy-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "db34d7185e62c57f7fa4ac67f169113b14097a99" } +alloy-op-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "db34d7185e62c57f7fa4ac67f169113b14097a99" } +alloy-seismic-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "db34d7185e62c57f7fa4ac67f169113b14097a99" } # foundry foundry-compilers = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "5477a89ae892229a90af58580daa8ef4575f00a6" } diff --git a/crates/anvil/core/src/eth/transaction/mod.rs b/crates/anvil/core/src/eth/transaction/mod.rs index c257868f6..30d1e2b07 100644 --- a/crates/anvil/core/src/eth/transaction/mod.rs +++ b/crates/anvil/core/src/eth/transaction/mod.rs @@ -671,14 +671,17 @@ impl PendingTransaction { seismic_elements, } = &tx.tx(); + let tx_io_sk = seismic_enclave::get_unsecure_sample_secp256k1_sk(); + OpTransaction::new(TxEnv { caller, kind: transact_to(to), // these two have already been validated in TransactionValidator, // so we simply unwrap here data: seismic_elements - .server_decrypt(&seismic_enclave::MockEnclaveClient::new(), input) - .expect("failed to decrypt seismic elements"), + .decrypt(&tx_io_sk, &input) + .expect("failed to decrypt seismic elements") + .into(), chain_id: Some(*chain_id), nonce: *nonce, value: *value, diff --git a/crates/anvil/src/eth/api.rs b/crates/anvil/src/eth/api.rs index 3fef8d2a9..3892c641e 100644 --- a/crates/anvil/src/eth/api.rs +++ b/crates/anvil/src/eth/api.rs @@ -103,7 +103,6 @@ use tokio::{ }; use yansi::Paint; -use seismic_enclave::{keys::GetPurposeKeysRequest, rpc::SyncEnclaveApiClient}; use seismic_prelude::foundry::{ AnyNetwork, AnyRpcBlock, AnyRpcTransaction, Decodable712, SeismicCallRequest, SeismicRawTxRequest, SimulatePayload, TransactionRequest, TypedDataRequest, tx_builder, @@ -182,10 +181,9 @@ impl EthApi { trace!(target: "rpc::api", "executing eth request"); let response = match request.clone() { EthRequest::SeismicGetTeePublicKey(()) => { - let result = seismic_enclave::MockEnclaveClient::new() - .get_purpose_keys(GetPurposeKeysRequest { epoch: 0 }) - .map_err(|e| BlockchainError::Internal(e.to_string())) - .map(|r| r.tx_io_pk); + // Use the unsecure sample public key for mock/testing + let result: Result = + Ok(seismic_enclave::get_unsecure_sample_secp256k1_pk()); result.to_rpc_result() } EthRequest::Web3ClientVersion(()) => self.client_version().to_rpc_result(), diff --git a/crates/anvil/src/eth/backend/mem/mod.rs b/crates/anvil/src/eth/backend/mem/mod.rs index 022e17058..beb20d38f 100644 --- a/crates/anvil/src/eth/backend/mem/mod.rs +++ b/crates/anvil/src/eth/backend/mem/mod.rs @@ -1717,11 +1717,13 @@ impl Backend { let to = to.as_ref().and_then(TxKind::to); let blob_hashes = blob_versioned_hashes.unwrap_or_default(); let data = input.into_input().unwrap_or_default(); + let tx_io_sk = seismic_enclave::get_unsecure_sample_secp256k1_sk(); let data = match request.inner.seismic_elements { Some(seismic_elements) => seismic_elements - .server_decrypt(&seismic_enclave::MockEnclaveClient::new(), &data) - .expect("failed to decrypt seismic elements"), - None => data, + .decrypt(&tx_io_sk, &data) + .expect("failed to decrypt seismic elements") + .into(), + None => data.into(), }; let mut base = TxEnv { caller, @@ -2059,15 +2061,13 @@ impl Backend { block_env: BlockEnv, ) -> Result<(InstructionResult, Option, u128, State), BlockchainError> { let seismic_elements = request.inner.seismic_elements; + let tx_io_sk = seismic_enclave::get_unsecure_sample_secp256k1_sk(); let (exit_reason, out, gas_used, state) = self.call_with_state(state, request, fee_details, block_env)?; let output_data = out .map(|plaintext_output| match seismic_elements { Some(seismic_elements) => seismic_elements - .server_encrypt( - &seismic_enclave::MockEnclaveClient::new(), - &plaintext_output.data(), - ) + .encrypt(&tx_io_sk, &plaintext_output.data()) .map_err(|e| { BlockchainError::Message(format!("Failed to encrypt output: {}", e)) }) @@ -2089,8 +2089,9 @@ impl Backend { block_request: Option, opts: GethDebugTracingCallOptions, ) -> Result { - let GethDebugTracingCallOptions { tracing_options, block_overrides, state_overrides } = - opts; + let GethDebugTracingCallOptions { + tracing_options, block_overrides, state_overrides, .. + } = opts; let GethDebugTracingOptions { config, tracer, tracer_config, .. } = tracing_options; self.with_database_at(block_request, |state, mut block| { @@ -3689,10 +3690,9 @@ impl TransactionValidator for Backend { if let TypedTransaction::Seismic(seismic_tx) = &tx.transaction { // check that decryption works before we create tx env for it let inner = seismic_tx.tx(); - let _decrypted_data = inner - .seismic_elements - .server_decrypt(&seismic_enclave::MockEnclaveClient::new(), &inner.input) - .map_err(|_e| { + let tx_io_sk = seismic_enclave::get_unsecure_sample_secp256k1_sk(); + let _decrypted_data = + inner.seismic_elements.decrypt(&tx_io_sk, &inner.input).map_err(|_e| { InvalidTransactionError::SeismicDecryptionFailed(format!( "Failed to decrypt seismic calldata" )) diff --git a/crates/cheatcodes/src/evm.rs b/crates/cheatcodes/src/evm.rs index da689b1ad..6640f7b14 100644 --- a/crates/cheatcodes/src/evm.rs +++ b/crates/cheatcodes/src/evm.rs @@ -558,7 +558,7 @@ impl Cheatcode for txGasPriceCall { impl Cheatcode for warpCall { fn apply_stateful(&self, ccx: &mut CheatsCtxt) -> Result { let Self { newTimestamp } = self; - ccx.ecx.block.timestamp = *newTimestamp; + ccx.ecx.block.timestamp = *newTimestamp * U256::from(1000); // convert to milliseconds Ok(Default::default()) } } @@ -566,7 +566,7 @@ impl Cheatcode for warpCall { impl Cheatcode for getBlockTimestampCall { fn apply_stateful(&self, ccx: &mut CheatsCtxt) -> Result { let Self {} = self; - Ok(ccx.ecx.block.timestamp.abi_encode()) + Ok((ccx.ecx.block.timestamp / U256::from(1000)).abi_encode()) // convert to seconds since we return block.timestamp in milliseconds } } diff --git a/crates/chisel/src/runner.rs b/crates/chisel/src/runner.rs index a4b47cfaf..2710df637 100644 --- a/crates/chisel/src/runner.rs +++ b/crates/chisel/src/runner.rs @@ -18,7 +18,6 @@ static RUN_SELECTOR: [u8; 4] = [0xc0, 0x40, 0x62, 0x26]; /// /// Based off of foundry's forge cli runner for scripting. /// See: [runner](cli::cmd::forge::script::runner.rs) -#[derive(Debug)] pub struct ChiselRunner { /// The Executor pub executor: Executor, diff --git a/crates/cli/src/utils/cmd.rs b/crates/cli/src/utils/cmd.rs index d73fa6341..f6bd18218 100644 --- a/crates/cli/src/utils/cmd.rs +++ b/crates/cli/src/utils/cmd.rs @@ -178,7 +178,6 @@ pub fn has_different_gas_calc(chain_id: u64) -> bool { | NamedChain::KaruraTestnet | NamedChain::Mantle | NamedChain::MantleSepolia - | NamedChain::MantleTestnet | NamedChain::Moonbase | NamedChain::Moonbeam | NamedChain::MoonbeamDev diff --git a/crates/config/src/lib.rs b/crates/config/src/lib.rs index db73deac4..75c5124db 100644 --- a/crates/config/src/lib.rs +++ b/crates/config/src/lib.rs @@ -3589,7 +3589,7 @@ mod tests { [etherscan] optimism = { key = "https://etherscan-optimism.com/" } - mumbai = { key = "https://etherscan-mumbai.com/" } + amoy = { key = "https://etherscan-amoy.com/" } "#, )?; @@ -3598,10 +3598,10 @@ mod tests { let optimism = config.get_etherscan_api_key(Some(NamedChain::Optimism.into())); assert_eq!(optimism, Some("https://etherscan-optimism.com/".to_string())); - config.etherscan_api_key = Some("mumbai".to_string()); + config.etherscan_api_key = Some("amoy".to_string()); - let mumbai = config.get_etherscan_api_key(Some(NamedChain::PolygonMumbai.into())); - assert_eq!(mumbai, Some("https://etherscan-mumbai.com/".to_string())); + let amoy = config.get_etherscan_api_key(Some(NamedChain::PolygonAmoy.into())); + assert_eq!(amoy, Some("https://etherscan-amoy.com/".to_string())); Ok(()) }); @@ -3616,17 +3616,17 @@ mod tests { [profile.default] [etherscan] - mumbai = { key = "https://etherscan-mumbai.com/", chain = 80001 } + amoy = { key = "https://etherscan-amoy.com/", chain = 80002 } "#, )?; let config = Config::load().unwrap(); - let mumbai = config - .get_etherscan_config_with_chain(Some(NamedChain::PolygonMumbai.into())) + let amoy = config + .get_etherscan_config_with_chain(Some(NamedChain::PolygonAmoy.into())) .unwrap() .unwrap(); - assert_eq!(mumbai.key, "https://etherscan-mumbai.com/".to_string()); + assert_eq!(amoy.key, "https://etherscan-amoy.com/".to_string()); Ok(()) }); @@ -3641,18 +3641,18 @@ mod tests { [profile.default] [etherscan] - mumbai = { key = "https://etherscan-mumbai.com/", chain = 80001 , url = "https://verifier-url.com/"} + amoy = { key = "https://etherscan-amoy.com/", chain = 80002 , url = "https://verifier-url.com/"} "#, )?; let config = Config::load().unwrap(); - let mumbai = config - .get_etherscan_config_with_chain(Some(NamedChain::PolygonMumbai.into())) + let amoy = config + .get_etherscan_config_with_chain(Some(NamedChain::PolygonAmoy.into())) .unwrap() .unwrap(); - assert_eq!(mumbai.key, "https://etherscan-mumbai.com/".to_string()); - assert_eq!(mumbai.api_url, "https://verifier-url.com/".to_string()); + assert_eq!(amoy.key, "https://etherscan-amoy.com/".to_string()); + assert_eq!(amoy.api_url, "https://verifier-url.com/".to_string()); Ok(()) }); @@ -3665,23 +3665,23 @@ mod tests { "foundry.toml", r#" [profile.default] - eth_rpc_url = "mumbai" + eth_rpc_url = "amoy" [etherscan] - mumbai = { key = "https://etherscan-mumbai.com/" } + amoy = { key = "https://etherscan-amoy.com/" } [rpc_endpoints] - mumbai = "https://polygon-mumbai.g.alchemy.com/v2/mumbai" + amoy = "https://polygon-amoy.g.alchemy.com/v2/amoy" "#, )?; let config = Config::load().unwrap(); - let mumbai = config.get_etherscan_config_with_chain(None).unwrap().unwrap(); - assert_eq!(mumbai.key, "https://etherscan-mumbai.com/".to_string()); + let amoy = config.get_etherscan_config_with_chain(None).unwrap().unwrap(); + assert_eq!(amoy.key, "https://etherscan-amoy.com/".to_string()); - let mumbai_rpc = config.get_rpc_url().unwrap().unwrap(); - assert_eq!(mumbai_rpc, "https://polygon-mumbai.g.alchemy.com/v2/mumbai"); + let amoy_rpc = config.get_rpc_url().unwrap().unwrap(); + assert_eq!(amoy_rpc, "https://polygon-amoy.g.alchemy.com/v2/amoy"); Ok(()) }); } diff --git a/crates/evm/evm/src/executors/mod.rs b/crates/evm/evm/src/executors/mod.rs index 252aff65c..e9b33f701 100644 --- a/crates/evm/evm/src/executors/mod.rs +++ b/crates/evm/evm/src/executors/mod.rs @@ -90,7 +90,7 @@ sol! { /// - `deploy`: a special case of `transact`, specialized for persisting the state of a contract /// deployment /// - `setup`: a special case of `transact`, used to set up the environment for a test -#[derive(Clone, Debug)] +#[derive(Clone)] pub struct Executor { /// The underlying `revm::Database` that contains the EVM storage. // Note: We do not store an EVM here, since we are really diff --git a/crates/evm/evm/src/inspectors/stack.rs b/crates/evm/evm/src/inspectors/stack.rs index 64400888f..bef018f0b 100644 --- a/crates/evm/evm/src/inspectors/stack.rs +++ b/crates/evm/evm/src/inspectors/stack.rs @@ -290,7 +290,7 @@ pub struct InnerContextData { /// us ability to create and execute separate EVM frames from inside cheatcodes while still having /// access to entire stack of inspectors and correctly handling traces, logs, debugging info /// collection, etc. -#[derive(Clone, Debug, Default)] +#[derive(Clone, Default)] pub struct InspectorStack { pub cheatcodes: Option>, pub inner: InspectorStackInner, @@ -299,7 +299,7 @@ pub struct InspectorStack { /// All used inpectors besides [Cheatcodes]. /// /// See [`InspectorStack`]. -#[derive(Default, Clone, Debug)] +#[derive(Default, Clone)] pub struct InspectorStackInner { // Inspectors. // These are boxed to reduce the size of the struct and slightly improve performance of the diff --git a/crates/forge/Cargo.toml b/crates/forge/Cargo.toml index 14fdfbe91..0d17fcad4 100644 --- a/crates/forge/Cargo.toml +++ b/crates/forge/Cargo.toml @@ -112,7 +112,7 @@ mockall = "0.13" globset = "0.4" paste = "1.0" similar-asserts.workspace = true -svm = { package = "svm-rs", version = "=0.5.19", default-features = false, features = [ +svm = { package = "svm-rs", version = "0.5.22", default-features = false, features = [ "rustls", ] } tempfile.workspace = true diff --git a/crates/forge/tests/cli/create.rs b/crates/forge/tests/cli/create.rs index a89ad1af4..dcd502cce 100644 --- a/crates/forge/tests/cli/create.rs +++ b/crates/forge/tests/cli/create.rs @@ -121,8 +121,8 @@ forgetest!(can_create_oracle_on_goerli, |prj, cmd| { }); // tests `forge` create on mumbai if correct env vars are set -forgetest!(can_create_oracle_on_mumbai, |prj, cmd| { - create_on_chain(EnvExternalities::mumbai(), prj, cmd, setup_oracle); +forgetest!(can_create_oracle_on_amoy, |prj, cmd| { + create_on_chain(EnvExternalities::amoy(), prj, cmd, setup_oracle); }); // tests that we can deploy the template contract diff --git a/crates/forge/tests/cli/utils.rs b/crates/forge/tests/cli/utils.rs index 35b1bf73a..55b6e74cb 100644 --- a/crates/forge/tests/cli/utils.rs +++ b/crates/forge/tests/cli/utils.rs @@ -89,12 +89,12 @@ impl EnvExternalities { }) } - pub fn mumbai() -> Option { + pub fn amoy() -> Option { Some(Self { - chain: NamedChain::PolygonMumbai, - rpc: network_rpc_key("mumbai")?, - pk: network_private_key("mumbai")?, - etherscan: etherscan_key(NamedChain::PolygonMumbai)?, + chain: NamedChain::PolygonAmoy, + rpc: network_rpc_key("amoy")?, + pk: network_private_key("amoy")?, + etherscan: etherscan_key(NamedChain::PolygonAmoy)?, verifier: "etherscan".to_string(), }) } diff --git a/crates/lint/src/sol/med/div_mul.rs b/crates/lint/src/sol/med/div_mul.rs index 6640a1ea1..a9be610d6 100644 --- a/crates/lint/src/sol/med/div_mul.rs +++ b/crates/lint/src/sol/med/div_mul.rs @@ -3,7 +3,10 @@ use crate::{ linter::{EarlyLintPass, LintContext}, sol::{Severity, SolLint}, }; -use solar::ast::{BinOp, BinOpKind, Expr, ExprKind}; +use solar::{ + ast::{BinOp, BinOpKind, Expr, ExprKind}, + interface::SpannedOption, +}; declare_forge_lint!( DIVIDE_BEFORE_MULTIPLY, @@ -26,7 +29,11 @@ fn contains_division<'ast>(expr: &'ast Expr<'ast>) -> bool { match &expr.kind { ExprKind::Binary(_, BinOp { kind: BinOpKind::Div, .. }, _) => true, ExprKind::Tuple(inner_exprs) => inner_exprs.iter().any(|opt_expr| { - if let Some(inner_expr) = opt_expr { contains_division(inner_expr) } else { false } + if let SpannedOption::Some(inner_expr) = opt_expr.as_ref() { + contains_division(inner_expr) + } else { + false + } }), _ => false, } diff --git a/crates/script/src/lib.rs b/crates/script/src/lib.rs index 36539a983..32968639c 100644 --- a/crates/script/src/lib.rs +++ b/crates/script/src/lib.rs @@ -782,10 +782,10 @@ mod tests { let config = r#" [profile.default] - etherscan_api_key = "mumbai" + etherscan_api_key = "amoy" [etherscan] - mumbai = { key = "https://etherscan-mumbai.com/" } + amoy = { key = "https://etherscan-amoy.com/" } "#; let toml_file = root.join(Config::FILE_NAME); @@ -794,14 +794,14 @@ mod tests { "foundry-cli", "Contract.sol", "--etherscan-api-key", - "mumbai", + "amoy", "--root", root.as_os_str().to_str().unwrap(), ]); let config = args.load_config().unwrap(); - let mumbai = config.get_etherscan_api_key(Some(NamedChain::PolygonMumbai.into())); - assert_eq!(mumbai, Some("https://etherscan-mumbai.com/".to_string())); + let amoy = config.get_etherscan_api_key(Some(NamedChain::PolygonAmoy.into())); + assert_eq!(amoy, Some("https://etherscan-amoy.com/".to_string())); } #[test] diff --git a/crates/script/src/runner.rs b/crates/script/src/runner.rs index 5813e38e3..057be3d77 100644 --- a/crates/script/src/runner.rs +++ b/crates/script/src/runner.rs @@ -18,7 +18,6 @@ use std::collections::VecDeque; use seismic_prelude::foundry::TransactionRequest; /// Drives script execution -#[derive(Debug)] pub struct ScriptRunner { pub executor: Executor, pub evm_opts: EvmOpts, From 4ac1fdd0cd618c8941fec405aa3af62d04bbd598 Mon Sep 17 00:00:00 2001 From: Ameya Deshmukh Date: Wed, 7 Jan 2026 19:51:18 +0530 Subject: [PATCH 106/130] feat: rename `eth_getStorageWithPrivacy` to `eth_getFlaggedStorageAt` (#145) --- .github/workflows/seismic.yml | 18 +++- Cargo.lock | 2 +- Cargo.toml | 2 +- crates/anvil/core/src/eth/mod.rs | 4 +- crates/anvil/src/eth/api.rs | 12 +-- crates/anvil/src/eth/backend/mem/mod.rs | 4 +- crates/config/src/lib.rs | 2 +- crates/evm/core/src/backend/mod.rs | 68 +++++++++++++- crates/evm/core/src/opts.rs | 5 + crates/forge/tests/cli/script.rs | 117 ++++++++++++++++++++++++ crates/script/src/lib.rs | 10 ++ crates/test-utils/src/util.rs | 3 +- 12 files changed, 227 insertions(+), 20 deletions(-) diff --git a/.github/workflows/seismic.yml b/.github/workflows/seismic.yml index b27d19cc2..4cacd634c 100644 --- a/.github/workflows/seismic.yml +++ b/.github/workflows/seismic.yml @@ -63,11 +63,27 @@ jobs: - uses: Swatinem/rust-cache@v2 with: shared-key: "test-cache" + - name: Install ssolc + run: | + # Fetch the latest release asset ID + ASSET_ID=$(curl -s https://api.github.com/repos/SeismicSystems/seismic-solidity/releases/latest | \ + jq -r '.assets[] | select(.name == "ssolc-linux-x86_64.tar.gz") | .id') + # Download the asset + curl -L -H "Accept: application/octet-stream" \ + -o ssolc.tar.gz \ + "https://api.github.com/repos/SeismicSystems/seismic-solidity/releases/assets/$ASSET_ID" + # Extract - the binary is at solc/solc inside the archive + tar -xzf ssolc.tar.gz + sudo mv solc/solc /usr/local/bin/ssolc + sudo chmod +x /usr/local/bin/ssolc + ssolc --version - name: seismic unit tests run: cargo nextest run test_seismic_tx_encoding - name: seismic integration tests run: cargo nextest run test_seismic_ - # TODO: make these work & run + - name: private storage tests + run: cargo nextest run private_storage_ + # TODO: make these work & run # - name: sforge tests # run: cargo test --bin sforge # - name: sanvil tests diff --git a/Cargo.lock b/Cargo.lock index f7726218c..6e24f4b6e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4952,7 +4952,7 @@ dependencies = [ [[package]] name = "foundry-fork-db" version = "0.18.0" -source = "git+https://github.com/SeismicSystems/seismic-foundry-fork-db.git?rev=69b938d#69b938d8b8d4357fff432a79ad63b6eb10e5ebc3" +source = "git+https://github.com/SeismicSystems/seismic-foundry-fork-db.git?rev=9fe4edc#9fe4edc6967c0e3b387c0141beeda870602ad97f" dependencies = [ "alloy-chains", "alloy-consensus", diff --git a/Cargo.toml b/Cargo.toml index d58cb9983..8d5936425 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -418,4 +418,4 @@ foundry-compilers-artifacts-solc = { git = "https://github.com/SeismicSystems/se foundry-compilers-artifacts-vyper = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "5477a89ae892229a90af58580daa8ef4575f00a6" } foundry-compilers-core = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "5477a89ae892229a90af58580daa8ef4575f00a6" } -foundry-fork-db = { git = "https://github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "69b938d" } +foundry-fork-db = { git = "https://github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "9fe4edc" } diff --git a/crates/anvil/core/src/eth/mod.rs b/crates/anvil/core/src/eth/mod.rs index f3df4d7c5..d95735829 100644 --- a/crates/anvil/core/src/eth/mod.rs +++ b/crates/anvil/core/src/eth/mod.rs @@ -84,8 +84,8 @@ pub enum EthRequest { #[serde(rename = "eth_getStorageAt")] EthGetStorageAt(Address, U256, Option), - #[serde(rename = "eth_getStorageWithPrivacy")] - EthGetStorageWithPrivacy(Address, U256, Option), + #[serde(rename = "eth_getFlaggedStorageAt")] + EthGetFlaggedStorageAt(Address, U256, Option), #[serde(rename = "eth_getBlockByHash")] EthGetBlockByHash(B256, bool), diff --git a/crates/anvil/src/eth/api.rs b/crates/anvil/src/eth/api.rs index 3892c641e..4a970f166 100644 --- a/crates/anvil/src/eth/api.rs +++ b/crates/anvil/src/eth/api.rs @@ -219,8 +219,8 @@ impl EthApi { EthRequest::EthGetStorageAt(addr, slot, block) => { self.storage_at(addr, slot, block).await.to_rpc_result() } - EthRequest::EthGetStorageWithPrivacy(addr, slot, block) => { - self.storage_with_privacy(addr, slot, block).await.to_rpc_result() + EthRequest::EthGetFlaggedStorageAt(addr, slot, block) => { + self.flagged_storage_at(addr, slot, block).await.to_rpc_result() } EthRequest::EthGetBlockByHash(hash, full) => { if full { @@ -828,14 +828,14 @@ impl EthApi { /// Returns content of the storage at given address with privacy flag. /// - /// Handler for custom RPC call: `eth_getStorageWithPrivacy` - pub async fn storage_with_privacy( + /// Handler for custom RPC call: `eth_getFlaggedStorageAt` + pub async fn flagged_storage_at( &self, address: Address, index: U256, block_number: Option, ) -> Result { - node_info!("eth_getStorageWithPrivacy"); + node_info!("eth_getFlaggedStorageAt"); let block_request = self.block_request(block_number).await?; // check if the number predates the fork, if in fork mode @@ -850,7 +850,7 @@ impl EthApi { } self.backend - .storage_with_privacy(address, index, Some(block_request)) + .flagged_storage_at(address, index, Some(block_request)) .await .map_err(|e| e.into()) } diff --git a/crates/anvil/src/eth/backend/mem/mod.rs b/crates/anvil/src/eth/backend/mem/mod.rs index beb20d38f..c5ad4f9ab 100644 --- a/crates/anvil/src/eth/backend/mem/mod.rs +++ b/crates/anvil/src/eth/backend/mem/mod.rs @@ -2666,8 +2666,8 @@ impl Backend { /// Returns storage at given address and index with privacy flag /// - /// Handler for custom RPC call: `eth_getStorageWithPrivacy` - pub async fn storage_with_privacy( + /// Handler for custom RPC call: `eth_getFlaggedStorageAt` + pub async fn flagged_storage_at( &self, address: Address, index: U256, diff --git a/crates/config/src/lib.rs b/crates/config/src/lib.rs index 75c5124db..72d57e4a5 100644 --- a/crates/config/src/lib.rs +++ b/crates/config/src/lib.rs @@ -1144,7 +1144,7 @@ impl Config { if let Some(ref solc_req) = self.solc { match solc_req { SolcReq::Version(version) => { - if version.to_string() == "0.8.28" { + if version.to_string() == "0.8.31" { let default_solc_path = self.get_default_ssolc_path()?; return Ok(Some(Solc::new(default_solc_path)?)); } else { diff --git a/crates/evm/core/src/backend/mod.rs b/crates/evm/core/src/backend/mod.rs index 14c526987..4a9c2f290 100644 --- a/crates/evm/core/src/backend/mod.rs +++ b/crates/evm/core/src/backend/mod.rs @@ -465,6 +465,8 @@ pub struct Backend { active_fork_ids: Option<(LocalForkId, ForkLookupIndex)>, /// holds additional Backend data inner: BackendInner, + /// Whether to allow scripts to run when encountering private storage slots. + unsafe_private_storage: bool, } impl Backend { @@ -490,12 +492,16 @@ impl Backend { ..Default::default() }; + let unsafe_private_storage = + fork.as_ref().map(|fork| fork.evm_opts.unsafe_private_storage).unwrap_or(false); + let mut backend = Self { forks, mem_db: CacheDB::new(Default::default()), fork_init_journaled_state: inner.new_journaled_state(), active_fork_ids: None, inner, + unsafe_private_storage, }; if let Some(fork) = fork { @@ -521,8 +527,10 @@ impl Backend { id: &ForkId, fork: Fork, journaled_state: JournaledState, + unsafe_private_storage: bool, ) -> eyre::Result { let mut backend = Self::spawn(None)?; + backend.unsafe_private_storage = unsafe_private_storage; let fork_ids = backend.inner.insert_new_fork(id.clone(), fork.db, journaled_state); backend.inner.launched_with_fork = Some((id.clone(), fork_ids.0, fork_ids.1)); backend.active_fork_ids = Some(fork_ids); @@ -537,6 +545,7 @@ impl Backend { fork_init_journaled_state: self.inner.new_journaled_state(), active_fork_ids: None, inner: Default::default(), + unsafe_private_storage: self.unsafe_private_storage, } } @@ -910,6 +919,7 @@ impl Backend { &fork_id, &persistent_accounts, &mut NoOpInspector, + self.unsafe_private_storage, )?; } @@ -1304,6 +1314,7 @@ impl DatabaseExt for Backend { &fork_id, &persistent_accounts, inspector, + self.unsafe_private_storage, ) } @@ -1528,10 +1539,16 @@ impl DatabaseRef for Backend { address: Address, index: U256, ) -> Result { - if let Some(db) = self.active_fork_db() { - DatabaseRef::storage_ref(db, address, index) + let result = if let Some(db) = self.active_fork_db() { + DatabaseRef::storage_ref(db, address, index)? + } else { + DatabaseRef::storage_ref(&self.mem_db, address, index)? + }; + + if result.is_private && !self.unsafe_private_storage { + Err(DatabaseError::PrivateStorage(address, index)) } else { - Ok(DatabaseRef::storage_ref(&self.mem_db, address, index)?) + Ok(result) } } @@ -1983,6 +2000,7 @@ fn commit_transaction( fork_id: &ForkId, persistent_accounts: &HashSet

, inspector: &mut dyn InspectorExt, + unsafe_private_storage: bool, ) -> eyre::Result<()> { configure_tx_env(env, tx); @@ -1991,7 +2009,8 @@ fn commit_transaction( let fork = fork.clone(); let journaled_state = journaled_state.clone(); let depth = journaled_state.depth; - let mut db = Backend::new_with_fork(fork_id, fork, journaled_state)?; + let mut db = + Backend::new_with_fork(fork_id, fork, journaled_state, unsafe_private_storage)?; let mut evm = crate::evm::new_evm_with_inspector(&mut db as _, env.to_owned(), inspector); // Adjust inner EVM depth to ensure that inspectors receive accurate data. @@ -2043,7 +2062,7 @@ fn apply_state_changeset( #[cfg(test)] mod tests { use crate::{backend::Backend, fork::CreateFork, opts::EvmOpts}; - use alloy_primitives::{Address, U256}; + use alloy_primitives::{Address, FlaggedStorage, U256, address}; use alloy_provider::Provider; use foundry_common::provider::get_http_provider; use foundry_config::{Config, NamedChain}; @@ -2103,4 +2122,43 @@ mod tests { assert!(db.storage().read().contains_key(&address)); assert_eq!(db.storage().read().get(&address).unwrap().len(), num_slots as usize); } + + #[test] + fn test_private_storage_blocked_without_flag() { + let mut backend = Backend::spawn(None).unwrap(); + + let test_addr: Address = address!("0x1234567890123456789012345678901234567890"); + + let private_storage = FlaggedStorage { value: U256::from(42), is_private: true }; + + backend.insert_account_storage(test_addr, U256::ZERO, private_storage).unwrap(); + + let result = backend.storage_ref(test_addr, U256::ZERO); + assert!(result.is_err(), "Should fail when reading private storage without flag"); + + let err = result.unwrap_err(); + assert!( + matches!(err, foundry_fork_db::DatabaseError::PrivateStorage(_, _)), + "Should be PrivateStorage error" + ); + } + + #[test] + fn test_private_storage_allowed_with_flag() { + let mut backend = Backend::spawn(None).unwrap(); + backend.unsafe_private_storage = true; + + let test_addr: Address = address!("0x1234567890123456789012345678901234567890"); + + let private_storage = FlaggedStorage { value: U256::from(42), is_private: true }; + + backend.insert_account_storage(test_addr, U256::ZERO, private_storage).unwrap(); + + let result = backend.storage_ref(test_addr, U256::ZERO); + assert!(result.is_ok(), "Should succeed when reading private storage with flag"); + + let storage = result.unwrap(); + assert_eq!(storage.value, U256::from(42)); + assert!(storage.is_private); + } } diff --git a/crates/evm/core/src/opts.rs b/crates/evm/core/src/opts.rs index 2672d2a99..8ebdc3671 100644 --- a/crates/evm/core/src/opts.rs +++ b/crates/evm/core/src/opts.rs @@ -82,6 +82,10 @@ pub struct EvmOpts { /// The CREATE2 deployer's address. pub create2_deployer: Address, + + /// Whether to allow scripts to run when encountering private storage slots. + #[serde(default)] + pub unsafe_private_storage: bool, } impl Default for EvmOpts { @@ -107,6 +111,7 @@ impl Default for EvmOpts { enable_tx_gas_limit: false, odyssey: false, create2_deployer: DEFAULT_CREATE2_DEPLOYER, + unsafe_private_storage: false, } } } diff --git a/crates/forge/tests/cli/script.rs b/crates/forge/tests/cli/script.rs index 41f6fdbee..2a90c38f4 100644 --- a/crates/forge/tests/cli/script.rs +++ b/crates/forge/tests/cli/script.rs @@ -3169,3 +3169,120 @@ Traces: Error: script failed: call to non-contract address [..] "#]]); }); + +// Tests for --unsafe-private-storage flag with seismic transactions + +use alloy_network::TransactionBuilder; +use alloy_primitives::TxKind; +use alloy_provider::Provider; +use seismic_prelude::foundry::{EthereumWallet, SeismicSignedProvider, test_utils, tx_builder}; + +/// Helper to deploy a contract via a Seismic transaction, which creates private storage +async fn deploy_contract_with_private_storage(handle: &anvil::NodeHandle) -> (Address, String) { + let signer = handle.dev_wallets().next().unwrap(); + let provider = SeismicSignedProvider::new( + EthereumWallet::new(signer.clone()), + reqwest::Url::parse(handle.http_endpoint().as_str()).unwrap(), + ); + let deployer = handle.dev_accounts().next().unwrap(); + + let plaintext_bytecode = test_utils::ContractTestContext::get_deploy_input_plaintext(); + + let req = tx_builder() + .with_from(deployer) + .with_kind(TxKind::Create) + .with_input(plaintext_bytecode.clone()) + .into(); + + let contract_address = provider + .send_transaction(req.into()) + .await + .unwrap() + .get_receipt() + .await + .unwrap() + .contract_address + .unwrap(); + + (contract_address, handle.http_endpoint()) +} + +// Test that reading private storage fails without --unsafe-private-storage flag +forgetest_async!(private_storage_blocked_without_flag, |prj, cmd| { + foundry_test_utils::util::initialize(prj.root()); + + let (api, handle) = spawn(NodeConfig::test()).await; + api.anvil_set_auto_mine(true).await.unwrap(); + + let (contract_address, rpc_url) = deploy_contract_with_private_storage(&handle).await; + + prj.insert_vm(); + + let script = prj.add_source( + "ReadPrivateStorage", + &format!( + r#" +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +import "forge-std/Script.sol"; + +contract ReadPrivateStorage is Script {{ + function run() external view {{ + // Try to read slot 0 from the contract with private storage + bytes32 value = vm.load(address({}), bytes32(0)); + }} +}} +"#, + contract_address + ), + ); + + // Run script WITHOUT --unsafe-private-storage flag - should FAIL + cmd.arg("script") + .arg(&script) + .args(["--fork-url", &rpc_url]) + .assert_failure() + .stderr_eq(str![[r#" +Error: script failed: vm.load: attempted to read private storage slot [..] at address [..]. Use --unsafe-private-storage to allow this. + +"#]]); +}); + +// Test that reading private storage succeeds with --unsafe-private-storage flag +forgetest_async!(private_storage_allowed_with_flag, |prj, cmd| { + foundry_test_utils::util::initialize(prj.root()); + + let (api, handle) = spawn(NodeConfig::test()).await; + api.anvil_set_auto_mine(true).await.unwrap(); + + let (contract_address, rpc_url) = deploy_contract_with_private_storage(&handle).await; + + prj.insert_vm(); + + let script = prj.add_source( + "ReadPrivateStorage", + &format!( + r#" +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +import "forge-std/Script.sol"; + +contract ReadPrivateStorage is Script {{ + function run() external view {{ + // Try to read slot 0 from the contract with private storage + bytes32 value = vm.load(address({}), bytes32(0)); + }} +}} +"#, + contract_address + ), + ); + + // Run script WITH --unsafe-private-storage flag - should SUCCEED + cmd.arg("script") + .arg(&script) + .args(["--fork-url", &rpc_url, "--unsafe-private-storage"]) + .assert_success(); +}); diff --git a/crates/script/src/lib.rs b/crates/script/src/lib.rs index 32968639c..dd575d734 100644 --- a/crates/script/src/lib.rs +++ b/crates/script/src/lib.rs @@ -193,6 +193,14 @@ pub struct ScriptArgs { #[arg(long)] pub verify: bool, + /// Allow scripts to run when encountering private storage slots. + /// + /// When this flag is set, private storage slots will be treated as zero + /// and a warning will be logged. Without this flag, encountering a private + /// storage slot will cause a hard error. + #[arg(long)] + pub unsafe_private_storage: bool, + /// Gas price for legacy transactions, or max fee per gas for EIP1559 transactions, either /// specified in wei, or as a string with a unit type. /// @@ -231,6 +239,8 @@ impl ScriptArgs { let (config, mut evm_opts) = self.load_config_and_evm_opts()?; + evm_opts.unsafe_private_storage = self.unsafe_private_storage; + if let Some(sender) = self.maybe_load_private_key()? { evm_opts.sender = sender; } diff --git a/crates/test-utils/src/util.rs b/crates/test-utils/src/util.rs index ca9d18dab..41327665a 100644 --- a/crates/test-utils/src/util.rs +++ b/crates/test-utils/src/util.rs @@ -47,7 +47,7 @@ static TEMPLATE_LOCK: LazyLock = static NEXT_ID: AtomicUsize = AtomicUsize::new(0); /// The default Solc version used when compiling tests. -pub const SOLC_VERSION: &str = "0.8.30"; +pub const SOLC_VERSION: &str = "0.8.31"; /// Another Solc version used when compiling tests. /// @@ -286,6 +286,7 @@ pub fn initialize(target: &Path) { cmd.args(["init", "--force"]).assert_success(); prj.write_config(Config { solc: Some(foundry_config::SolcReq::Version(SOLC_VERSION.parse().unwrap())), + evm_version: foundry_compilers::artifacts::EvmVersion::Mercury, ..Default::default() }); From effb412dddefdfb3a304df8412871e1fc3fa1b55 Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Wed, 7 Jan 2026 13:19:24 -0500 Subject: [PATCH 107/130] Update seismic-alloy: Eip4844 generic (#147) --- Cargo.lock | 10 +++++----- Cargo.toml | 10 +++++----- crates/anvil/core/src/eth/transaction/mod.rs | 10 +++++----- crates/anvil/src/eth/backend/mem/mod.rs | 2 +- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6e24f4b6e..7b02f7f53 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9379,7 +9379,7 @@ dependencies = [ [[package]] name = "seismic-alloy-consensus" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=58d05b2724f901f550b1a89affea786a10d37c91#58d05b2724f901f550b1a89affea786a10d37c91" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=4be965355a106f64356d0533ddc318d5b4800abe#4be965355a106f64356d0533ddc318d5b4800abe" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -9402,7 +9402,7 @@ dependencies = [ [[package]] name = "seismic-alloy-network" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=58d05b2724f901f550b1a89affea786a10d37c91#58d05b2724f901f550b1a89affea786a10d37c91" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=4be965355a106f64356d0533ddc318d5b4800abe#4be965355a106f64356d0533ddc318d5b4800abe" dependencies = [ "alloy-consensus", "alloy-eip7702", @@ -9425,7 +9425,7 @@ dependencies = [ [[package]] name = "seismic-alloy-provider" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=58d05b2724f901f550b1a89affea786a10d37c91#58d05b2724f901f550b1a89affea786a10d37c91" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=4be965355a106f64356d0533ddc318d5b4800abe#4be965355a106f64356d0533ddc318d5b4800abe" dependencies = [ "alloy-network", "alloy-primitives", @@ -9443,7 +9443,7 @@ dependencies = [ [[package]] name = "seismic-alloy-rpc-types" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=58d05b2724f901f550b1a89affea786a10d37c91#58d05b2724f901f550b1a89affea786a10d37c91" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=4be965355a106f64356d0533ddc318d5b4800abe#4be965355a106f64356d0533ddc318d5b4800abe" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9477,7 +9477,7 @@ dependencies = [ [[package]] name = "seismic-prelude" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=58d05b2724f901f550b1a89affea786a10d37c91#58d05b2724f901f550b1a89affea786a10d37c91" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=4be965355a106f64356d0533ddc318d5b4800abe#4be965355a106f64356d0533ddc318d5b4800abe" dependencies = [ "alloy-consensus", "alloy-eip7702", diff --git a/Cargo.toml b/Cargo.toml index 8d5936425..d560d6d37 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -400,11 +400,11 @@ seismic-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev revm-inspectors = { git = "https://github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "9e26c0a55f522ad7d8cf4716d9df9d79b8116d52" } # seismic-alloy -seismic-alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "58d05b2724f901f550b1a89affea786a10d37c91" } -seismic-alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "58d05b2724f901f550b1a89affea786a10d37c91" } -seismic-alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "58d05b2724f901f550b1a89affea786a10d37c91" } -seismic-alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "58d05b2724f901f550b1a89affea786a10d37c91" } -seismic-prelude = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "58d05b2724f901f550b1a89affea786a10d37c91" } +seismic-alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "4be965355a106f64356d0533ddc318d5b4800abe" } +seismic-alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "4be965355a106f64356d0533ddc318d5b4800abe" } +seismic-alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "4be965355a106f64356d0533ddc318d5b4800abe" } +seismic-alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "4be965355a106f64356d0533ddc318d5b4800abe" } +seismic-prelude = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "4be965355a106f64356d0533ddc318d5b4800abe" } # alloy-evm alloy-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "db34d7185e62c57f7fa4ac67f169113b14097a99" } diff --git a/crates/anvil/core/src/eth/transaction/mod.rs b/crates/anvil/core/src/eth/transaction/mod.rs index 30d1e2b07..db605b862 100644 --- a/crates/anvil/core/src/eth/transaction/mod.rs +++ b/crates/anvil/core/src/eth/transaction/mod.rs @@ -382,7 +382,7 @@ pub fn to_alloy_transaction_with_hash_and_sender( transaction_index: None, effective_gas_price: None, inner: Recovered::new_unchecked( - TxEnvelope::Eip4844(Signed::new_unchecked(tx, sig, hash)), + TxEnvelope::Eip4844(Signed::new_unchecked(tx.into(), sig, hash)), from, ), } @@ -1168,7 +1168,7 @@ impl alloy_eips::eip2718::Encodable2718 for TypedTransaction { Self::Legacy(tx) => TxEnvelope::from(tx.clone()).encode_2718_len(), Self::EIP2930(tx) => TxEnvelope::from(tx.clone()).encode_2718_len(), Self::EIP1559(tx) => TxEnvelope::from(tx.clone()).encode_2718_len(), - Self::EIP4844(tx) => TxEnvelope::from(tx.clone()).encode_2718_len(), + Self::EIP4844(tx) => TxEnvelope::from(tx.clone()).eip2718_encoded_length(), Self::EIP7702(tx) => TxEnvelope::from(tx.clone()).encode_2718_len(), Self::Deposit(tx) => 1 + tx.length(), Self::Seismic(tx) => TxEnvelope::from(tx.clone()).encode_2718_len(), @@ -1180,7 +1180,7 @@ impl alloy_eips::eip2718::Encodable2718 for TypedTransaction { Self::Legacy(tx) => TxEnvelope::from(tx.clone()).encode_2718(out), Self::EIP2930(tx) => TxEnvelope::from(tx.clone()).encode_2718(out), Self::EIP1559(tx) => TxEnvelope::from(tx.clone()).encode_2718(out), - Self::EIP4844(tx) => TxEnvelope::from(tx.clone()).encode_2718(out), + Self::EIP4844(tx) => tx.encode_2718(out), Self::EIP7702(tx) => TxEnvelope::from(tx.clone()).encode_2718(out), Self::Deposit(tx) => { tx.encode_2718(out); @@ -1208,7 +1208,7 @@ impl alloy_eips::eip2718::Decodable2718 for TypedTransaction { } fn fallback_decode(buf: &mut &[u8]) -> Result { - match TxEnvelope::fallback_decode(buf)? { + match TxEnvelope::::fallback_decode(buf)? { TxEnvelope::Legacy(tx) => Ok(Self::Legacy(tx)), _ => Err(Eip2718Error::RlpError(alloy_rlp::Error::Custom("unexpected tx type"))), } @@ -1228,7 +1228,7 @@ impl From for TypedTransaction { TxEnvelope::Legacy(tx) => Self::Legacy(tx), TxEnvelope::Eip2930(tx) => Self::EIP2930(tx), TxEnvelope::Eip1559(tx) => Self::EIP1559(tx), - TxEnvelope::Eip4844(tx) => Self::EIP4844(tx), + TxEnvelope::Eip4844(tx) => Self::EIP4844(tx.into()), TxEnvelope::Eip7702(tx) => Self::EIP7702(tx), } } diff --git a/crates/anvil/src/eth/backend/mem/mod.rs b/crates/anvil/src/eth/backend/mem/mod.rs index c5ad4f9ab..f17516e5f 100644 --- a/crates/anvil/src/eth/backend/mem/mod.rs +++ b/crates/anvil/src/eth/backend/mem/mod.rs @@ -3814,7 +3814,7 @@ pub fn transaction_build( TxEnvelope::Eip4844(signed_tx) => { let (t, sig, _) = signed_tx.into_parts(); let new_signed = Signed::new_unchecked(t, sig, hash); - AnyTxEnvelope::Ethereum(EthereumTxEnvelope::Eip4844(new_signed)) + AnyTxEnvelope::Ethereum(EthereumTxEnvelope::Eip4844(new_signed.into())) } TxEnvelope::Eip7702(signed_tx) => { let (t, sig, _) = signed_tx.into_parts(); From 5b93dd221a58d7601935112cd39011b2cbdef768 Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Tue, 13 Jan 2026 13:34:04 -0500 Subject: [PATCH 108/130] Seismic Tx: state pinning with AEAD (#148) --- Cargo.lock | 804 ++++++++++--------- Cargo.toml | 20 +- crates/anvil/core/src/eth/transaction/mod.rs | 42 +- crates/anvil/src/eth/api.rs | 17 +- crates/anvil/src/eth/backend/fork.rs | 1 - crates/anvil/src/eth/backend/mem/mod.rs | 138 +++- crates/anvil/src/eth/error.rs | 10 + crates/anvil/tests/it/api.rs | 2 +- crates/anvil/tests/it/revert.rs | 2 +- crates/anvil/tests/it/seismic.rs | 148 ++-- crates/cast/src/cmd/artifact.rs | 2 +- crates/cast/src/cmd/call.rs | 30 +- crates/cast/src/cmd/constructor_args.rs | 2 +- crates/cast/src/cmd/creation_code.rs | 2 +- crates/cast/src/cmd/send.rs | 29 +- crates/forge/tests/cli/script.rs | 4 +- package.json | 4 +- packages/client-tests/package.json | 4 +- packages/sforge-tests/package.json | 2 +- 19 files changed, 756 insertions(+), 507 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7b02f7f53..dfbe5d0d0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -82,9 +82,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy-chains" -version = "0.2.22" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff8c665521d11efbb11d5e5c5d63971426bb63df00d24545baf97e7f3dc91c0c" +checksum = "dd208e8a87fbc2ca1a3822dd1ea03b0a7a4a841e6fa70db2c236dd30ae2e7018" dependencies = [ "alloy-primitives", "num_enum", @@ -106,7 +106,7 @@ dependencies = [ "alloy-tx-macros", "auto_impl", "c-kzg", - "derive_more 2.1.0", + "derive_more 2.1.1", "either", "k256", "once_cell", @@ -165,7 +165,7 @@ dependencies = [ "alloy-sol-type-parser", "alloy-sol-types", "arbitrary", - "derive_more 2.1.0", + "derive_more 2.1.1", "itoa", "proptest", "serde", @@ -226,7 +226,7 @@ dependencies = [ "alloy-serde", "auto_impl", "c-kzg", - "derive_more 2.1.0", + "derive_more 2.1.1", "either", "serde", "serde_with", @@ -251,7 +251,7 @@ dependencies = [ [[package]] name = "alloy-evm" version = "0.20.1" -source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=db34d7185e62c57f7fa4ac67f169113b14097a99#db34d7185e62c57f7fa4ac67f169113b14097a99" +source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=039d51496b9b9a0cb4fea6d606e472211b462073#039d51496b9b9a0cb4fea6d606e472211b462073" dependencies = [ "alloy-consensus", "alloy-eips", @@ -260,7 +260,7 @@ dependencies = [ "alloy-rpc-types-eth", "alloy-sol-types", "auto_impl", - "derive_more 2.1.0", + "derive_more 2.1.1", "op-alloy-consensus", "op-revm", "revm", @@ -321,9 +321,9 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "1.1.3" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f72cf87cda808e593381fb9f005ffa4d2475552b7a6c5ac33d087bf77d82abd0" +checksum = "48562f9b4c4e1514cab54af16feaffc18194a38216bbd0c23004ec4667ad696b" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -353,7 +353,7 @@ dependencies = [ "alloy-sol-types", "async-trait", "auto_impl", - "derive_more 2.1.0", + "derive_more 2.1.1", "futures-utils-wasm", "serde", "serde_json", @@ -376,7 +376,7 @@ dependencies = [ [[package]] name = "alloy-op-evm" version = "0.20.1" -source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=db34d7185e62c57f7fa4ac67f169113b14097a99#db34d7185e62c57f7fa4ac67f169113b14097a99" +source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=039d51496b9b9a0cb4fea6d606e472211b462073#039d51496b9b9a0cb4fea6d606e472211b462073" dependencies = [ "alloy-consensus", "alloy-eips", @@ -411,11 +411,11 @@ dependencies = [ "bytes", "cfg-if", "const-hex", - "derive_more 2.1.0", + "derive_more 2.1.1", "foldhash 0.2.0", "getrandom 0.3.4", "hashbrown 0.16.1", - "indexmap 2.12.1", + "indexmap 2.13.0", "itoa", "k256", "keccak-asm", @@ -516,7 +516,7 @@ checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -586,12 +586,12 @@ dependencies = [ [[package]] name = "alloy-rpc-types-debug" -version = "1.1.3" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4936f579d9d10eae01772b2ab3497f9d568684f05f26f8175e12f9a1a2babc33" +checksum = "7e1a6b13b6f95b80d3ff770998f81e61811264eb1d18b88dfa11c80180acdc1b" dependencies = [ "alloy-primitives", - "derive_more 2.1.0", + "derive_more 2.1.1", "serde", "serde_with", ] @@ -607,7 +607,7 @@ dependencies = [ "alloy-primitives", "alloy-rlp", "alloy-serde", - "derive_more 2.1.0", + "derive_more 2.1.1", "jsonwebtoken", "rand 0.8.5", "serde", @@ -664,7 +664,7 @@ dependencies = [ [[package]] name = "alloy-seismic-evm" version = "0.20.1" -source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=db34d7185e62c57f7fa4ac67f169113b14097a99#db34d7185e62c57f7fa4ac67f169113b14097a99" +source = "git+https://github.com/SeismicSystems/seismic-evm.git?rev=039d51496b9b9a0cb4fea6d606e472211b462073#039d51496b9b9a0cb4fea6d606e472211b462073" dependencies = [ "alloy-consensus", "alloy-eips", @@ -810,7 +810,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -822,11 +822,11 @@ dependencies = [ "alloy-sol-macro-input", "const-hex", "heck", - "indexmap 2.12.1", + "indexmap 2.13.0", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", "syn-solidity", "tiny-keccak", ] @@ -844,7 +844,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.111", + "syn 2.0.114", "syn-solidity", ] @@ -878,7 +878,7 @@ dependencies = [ "alloy-json-rpc", "auto_impl", "base64 0.22.1", - "derive_more 2.1.0", + "derive_more 2.1.1", "futures", "futures-utils-wasm", "parking_lot", @@ -954,7 +954,7 @@ dependencies = [ "alloy-primitives", "alloy-rlp", "arrayvec", - "derive_more 2.1.0", + "derive_more 2.1.1", "nybbles", "serde", "smallvec", @@ -963,14 +963,14 @@ dependencies = [ [[package]] name = "alloy-tx-macros" -version = "1.1.3" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "333544408503f42d7d3792bfc0f7218b643d968a03d2c0ed383ae558fb4a76d0" +checksum = "99dac443033e83b14f68fac56e8c27e76421f1253729574197ceccd06598f3ef" dependencies = [ "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -1372,7 +1372,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" dependencies = [ "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -1410,7 +1410,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -1499,7 +1499,7 @@ checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -1558,9 +1558,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.35" +version = "0.4.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07a926debf178f2d355197f9caddb08e54a9329d44748034bba349c5848cb519" +checksum = "98ec5f6c2f8bc326c994cb9e241cc257ddaba9afa8555a43cffbb5dd86efaa37" dependencies = [ "compression-codecs", "compression-core", @@ -1597,7 +1597,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -1608,7 +1608,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -1661,7 +1661,7 @@ checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -1672,9 +1672,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "aws-config" -version = "1.8.11" +version = "1.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0149602eeaf915158e14029ba0c78dedb8c08d554b024d54c8f239aab46511d" +checksum = "96571e6996817bf3d58f6b569e4b9fd2e9d2fcf9f7424eed07b2ce9bb87535e5" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1702,9 +1702,9 @@ dependencies = [ [[package]] name = "aws-credential-types" -version = "1.2.10" +version = "1.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b01c9521fa01558f750d183c8c68c81b0155b9d193a4ba7f84c36bd1b6d04a06" +checksum = "3cd362783681b15d136480ad555a099e82ecd8e2d10a841e14dfd0078d67fee3" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", @@ -1714,9 +1714,9 @@ dependencies = [ [[package]] name = "aws-lc-rs" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b5ce75405893cd713f9ab8e297d8e438f624dde7d706108285f7e17a25a180f" +checksum = "6a88aab2464f1f25453baa7a07c84c5b7684e274054ba06817f382357f77a288" dependencies = [ "aws-lc-sys", "zeroize", @@ -1724,9 +1724,9 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.34.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "179c3777a8b5e70e90ea426114ffc565b2c1a9f82f6c4a0c5a34aa6ef5e781b6" +checksum = "b45afffdee1e7c9126814751f88dddc747f41d91da16c9551a0f1e8a11e788a1" dependencies = [ "cc", "cmake", @@ -1736,9 +1736,9 @@ dependencies = [ [[package]] name = "aws-runtime" -version = "1.5.16" +version = "1.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ce527fb7e53ba9626fc47824f25e256250556c40d8f81d27dd92aa38239d632" +checksum = "d81b5b2898f6798ad58f484856768bca817e3cd9de0974c24ae0f1113fe88f1b" dependencies = [ "aws-credential-types", "aws-sigv4", @@ -1760,9 +1760,9 @@ dependencies = [ [[package]] name = "aws-sdk-kms" -version = "1.96.0" +version = "1.97.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "995d40070271994fb774137aa603c10e7d29c4567a9605c6b801dff199c3d221" +checksum = "b35a6be02a6fd3618c701a49a4dac4282658d18ccfcdcc8ac3b6c2fb4317e4fa" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1782,9 +1782,9 @@ dependencies = [ [[package]] name = "aws-sdk-sso" -version = "1.90.0" +version = "1.91.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f18e53542c522459e757f81e274783a78f8c81acdfc8d1522ee8a18b5fb1c66" +checksum = "8ee6402a36f27b52fe67661c6732d684b2635152b676aa2babbfb5204f99115d" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1804,9 +1804,9 @@ dependencies = [ [[package]] name = "aws-sdk-ssooidc" -version = "1.92.0" +version = "1.93.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "532f4d866012ffa724a4385c82e8dd0e59f0ca0e600f3f22d4c03b6824b34e4a" +checksum = "a45a7f750bbd170ee3677671ad782d90b894548f4e4ae168302c57ec9de5cb3e" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1826,9 +1826,9 @@ dependencies = [ [[package]] name = "aws-sdk-sts" -version = "1.94.0" +version = "1.95.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1be6fbbfa1a57724788853a623378223fe828fc4c09b146c992f0c95b6256174" +checksum = "55542378e419558e6b1f398ca70adb0b2088077e79ad9f14eb09441f2f7b2164" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1849,9 +1849,9 @@ dependencies = [ [[package]] name = "aws-sigv4" -version = "1.3.6" +version = "1.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c35452ec3f001e1f2f6db107b6373f1f48f05ec63ba2c5c9fa91f07dad32af11" +checksum = "69e523e1c4e8e7e8ff219d732988e22bfeae8a1cafdbe6d9eca1546fa080be7c" dependencies = [ "aws-credential-types", "aws-smithy-http", @@ -1871,9 +1871,9 @@ dependencies = [ [[package]] name = "aws-smithy-async" -version = "1.2.6" +version = "1.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "127fcfad33b7dfc531141fda7e1c402ac65f88aca5511a4d31e2e3d2cd01ce9c" +checksum = "9ee19095c7c4dda59f1697d028ce704c24b2d33c6718790c7f1d5a3015b4107c" dependencies = [ "futures-util", "pin-project-lite", @@ -1882,9 +1882,9 @@ dependencies = [ [[package]] name = "aws-smithy-http" -version = "0.62.5" +version = "0.62.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445d5d720c99eed0b4aa674ed00d835d9b1427dd73e04adaf2f94c6b2d6f9fca" +checksum = "826141069295752372f8203c17f28e30c464d22899a43a0c9fd9c458d469c88b" dependencies = [ "aws-smithy-runtime-api", "aws-smithy-types", @@ -1903,9 +1903,9 @@ dependencies = [ [[package]] name = "aws-smithy-http-client" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "623254723e8dfd535f566ee7b2381645f8981da086b5c4aa26c0c41582bb1d2c" +checksum = "59e62db736db19c488966c8d787f52e6270be565727236fd5579eaa301e7bc4a" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", @@ -1927,27 +1927,27 @@ dependencies = [ [[package]] name = "aws-smithy-json" -version = "0.61.7" +version = "0.61.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2db31f727935fc63c6eeae8b37b438847639ec330a9161ece694efba257e0c54" +checksum = "49fa1213db31ac95288d981476f78d05d9cbb0353d22cdf3472cc05bb02f6551" dependencies = [ "aws-smithy-types", ] [[package]] name = "aws-smithy-observability" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d1881b1ea6d313f9890710d65c158bdab6fb08c91ea825f74c1c8c357baf4cc" +checksum = "17f616c3f2260612fe44cede278bafa18e73e6479c4e393e2c4518cf2a9a228a" dependencies = [ "aws-smithy-runtime-api", ] [[package]] name = "aws-smithy-query" -version = "0.60.8" +version = "0.60.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d28a63441360c477465f80c7abac3b9c4d075ca638f982e605b7dc2a2c7156c9" +checksum = "ae5d689cf437eae90460e944a58b5668530d433b4ff85789e69d2f2a556e057d" dependencies = [ "aws-smithy-types", "urlencoding", @@ -1955,9 +1955,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime" -version = "1.9.4" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bbe9d018d646b96c7be063dd07987849862b0e6d07c778aad7d93d1be6c1ef0" +checksum = "a392db6c583ea4a912538afb86b7be7c5d8887d91604f50eb55c262ee1b4a5f5" dependencies = [ "aws-smithy-async", "aws-smithy-http", @@ -1979,9 +1979,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime-api" -version = "1.9.2" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec7204f9fd94749a7c53b26da1b961b4ac36bf070ef1e0b94bb09f79d4f6c193" +checksum = "ab0d43d899f9e508300e587bf582ba54c27a452dd0a9ea294690669138ae14a2" dependencies = [ "aws-smithy-async", "aws-smithy-types", @@ -1996,9 +1996,9 @@ dependencies = [ [[package]] name = "aws-smithy-types" -version = "1.3.4" +version = "1.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25f535879a207fce0db74b679cfc3e91a3159c8144d717d55f5832aea9eef46e" +checksum = "905cb13a9895626d49cf2ced759b062d913834c7482c38e49557eac4e6193f01" dependencies = [ "base64-simd", "bytes", @@ -2019,18 +2019,18 @@ dependencies = [ [[package]] name = "aws-smithy-xml" -version = "0.60.12" +version = "0.60.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eab77cdd036b11056d2a30a7af7b775789fb024bf216acc13884c6c97752ae56" +checksum = "11b2f670422ff42bf7065031e72b45bc52a3508bd089f743ea90731ca2b6ea57" dependencies = [ "xmlparser", ] [[package]] name = "aws-types" -version = "1.3.10" +version = "1.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d79fb68e3d7fe5d4833ea34dc87d2e97d26d3086cb3da660bb6b1f76d98680b6" +checksum = "1d980627d2dd7bfc32a3c025685a033eeab8d365cc840c631ef59d1b8f428164" dependencies = [ "aws-credential-types", "aws-smithy-async", @@ -2042,9 +2042,9 @@ dependencies = [ [[package]] name = "axum" -version = "0.8.7" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b098575ebe77cb6d14fc7f32749631a6e44edbef6b796f89b020e99ba20d425" +checksum = "8b52af3cb4058c895d37317bb27508dccc8e5f2d39454016b297bf4a400597b8" dependencies = [ "axum-core", "base64 0.22.1", @@ -2078,9 +2078,9 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.5.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59446ce19cd142f8833f856eb31f3eb097812d1479ab224f54d72428ca21ea22" +checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" dependencies = [ "bytes", "futures-core", @@ -2146,9 +2146,9 @@ dependencies = [ [[package]] name = "base64ct" -version = "1.8.1" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e050f626429857a27ddccb31e0aca21356bfa709c04041aefddac081a8f068a" +checksum = "7d809780667f4410e7c41b07f52439b94d2bdf8528eeedc287fa38d3b7f95d82" [[package]] name = "bech32" @@ -2261,7 +2261,7 @@ dependencies = [ "boa_interner", "boa_macros", "boa_string", - "indexmap 2.12.1", + "indexmap 2.13.0", "num-bigint", "rustc-hash", ] @@ -2287,7 +2287,7 @@ dependencies = [ "fast-float2", "hashbrown 0.15.5", "icu_normalizer", - "indexmap 2.12.1", + "indexmap 2.13.0", "intrusive-collections", "itertools 0.13.0", "num-bigint", @@ -2333,7 +2333,7 @@ dependencies = [ "boa_gc", "boa_macros", "hashbrown 0.15.5", - "indexmap 2.12.1", + "indexmap 2.13.0", "once_cell", "phf 0.11.3", "rustc-hash", @@ -2348,7 +2348,7 @@ checksum = "9fd3f870829131332587f607a7ff909f1af5fc523fd1b192db55fbbdf52e8d3c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", "synstructure", ] @@ -2392,9 +2392,9 @@ dependencies = [ [[package]] name = "bon" -version = "3.8.1" +version = "3.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebeb9aaf9329dff6ceb65c689ca3db33dbf15f324909c60e4e5eef5701ce31b1" +checksum = "234655ec178edd82b891e262ea7cf71f6584bcd09eff94db786be23f1821825c" dependencies = [ "bon-macros", "rustversion", @@ -2402,17 +2402,17 @@ dependencies = [ [[package]] name = "bon-macros" -version = "3.8.1" +version = "3.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77e9d642a7e3a318e37c2c9427b5a6a48aa1ad55dcd986f3034ab2239045a645" +checksum = "89ec27229c38ed0eb3c0feee3d2c1d6a4379ae44f418a29a658890e062d8f365" dependencies = [ - "darling 0.21.3", + "darling 0.23.0", "ident_case", "prettyplease", "proc-macro2", "quote", "rustversion", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -2435,7 +2435,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -2467,9 +2467,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.19.0" +version = "3.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" +checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" [[package]] name = "byte-slice-cast" @@ -2494,7 +2494,7 @@ checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -2539,9 +2539,9 @@ dependencies = [ [[package]] name = "camino" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "276a59bf2b2c967788139340c9f0c5b12d7fd6630315c15c217e559de85d2609" +checksum = "e629a66d692cb9ff1a1c664e41771b3dcaf961985a9774c0eb0bd1b51cf60a48" dependencies = [ "serde_core", ] @@ -2649,9 +2649,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.49" +version = "1.2.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90583009037521a116abf44494efecd645ba48b6622457080f080b85544e2215" +checksum = "7a0aeaff4ff1a90589618835a598e545176939b97874f7abc7851caa0618f203" dependencies = [ "find-msvc-tools", "jobserver", @@ -2765,9 +2765,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.53" +version = "4.5.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e340e012a1bf4935f5282ed1436d1489548e8f72308207ea5df0e23d2d03f8" +checksum = "c6e6ff9dcd79cff5cd969a17a545d79e84ab086e444102a591e288a8aa3ce394" dependencies = [ "clap_builder", "clap_derive", @@ -2785,9 +2785,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.53" +version = "4.5.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d76b5d13eaa18c901fd2f7fca939fefe3a0727a953561fefdf3b2922b8569d00" +checksum = "fa42cf4d2b7a41bc8f663a7cab4031ebafa1bf3875705bfaf8466dc60ab52c00" dependencies = [ "anstream", "anstyle", @@ -2800,9 +2800,9 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.5.61" +version = "4.5.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39615915e2ece2550c0149addac32fb5bd312c657f43845bb9088cb9c8a7c992" +checksum = "430b4dc2b5e3861848de79627b2bedc9f3342c7da5173a14eaa5d0f8dc18ae5d" dependencies = [ "clap", ] @@ -2836,7 +2836,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -2883,9 +2883,9 @@ dependencies = [ [[package]] name = "cmake" -version = "0.1.54" +version = "0.1.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0" +checksum = "75443c44cd6b379beb8c5b45d85d0773baf31cce901fe7bb252f4eff3008ef7d" dependencies = [ "cc", ] @@ -3049,9 +3049,9 @@ dependencies = [ [[package]] name = "compression-codecs" -version = "0.4.34" +version = "0.4.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34a3cbbb8b6eca96f3a5c4bf6938d5b27ced3675d69f95bb51948722870bc323" +checksum = "b0f7ac3e5b97fdce45e8922fb05cae2c37f7bbd63d30dd94821dacfd8f3f2bf2" dependencies = [ "compression-core", "flate2", @@ -3088,9 +3088,9 @@ dependencies = [ [[package]] name = "console" -version = "0.16.1" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b430743a6eb14e9764d4260d4c0d8123087d504eeb9c48f2b2a5e810dd369df4" +checksum = "03e45a4a8926227e4197636ba97a9fc9b00477e9f4bd711395687c5f0734bec4" dependencies = [ "encode_unicode", "libc", @@ -3273,11 +3273,11 @@ checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b" dependencies = [ "bitflags 2.10.0", "crossterm_winapi", - "derive_more 2.1.0", + "derive_more 2.1.1", "document-features", "mio", "parking_lot", - "rustix 1.1.2", + "rustix 1.1.3", "signal-hook", "signal-hook-mio", "winapi", @@ -3341,7 +3341,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -3388,7 +3388,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -3411,6 +3411,16 @@ dependencies = [ "darling_macro 0.21.3", ] +[[package]] +name = "darling" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" +dependencies = [ + "darling_core 0.23.0", + "darling_macro 0.23.0", +] + [[package]] name = "darling_core" version = "0.20.11" @@ -3422,7 +3432,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -3437,7 +3447,20 @@ dependencies = [ "quote", "serde", "strsim", - "syn 2.0.111", + "syn 2.0.114", +] + +[[package]] +name = "darling_core" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" +dependencies = [ + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.114", ] [[package]] @@ -3448,7 +3471,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -3459,7 +3482,18 @@ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ "darling_core 0.21.3", "quote", - "syn 2.0.111", + "syn 2.0.114", +] + +[[package]] +name = "darling_macro" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" +dependencies = [ + "darling_core 0.23.0", + "quote", + "syn 2.0.114", ] [[package]] @@ -3522,7 +3556,7 @@ checksum = "ef941ded77d15ca19b40374869ac6000af1c9f2a4c0f3d4c70926287e6364a8f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -3533,7 +3567,7 @@ checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -3554,7 +3588,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -3564,7 +3598,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -3578,11 +3612,11 @@ dependencies = [ [[package]] name = "derive_more" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10b768e943bed7bf2cab53df09f4bc34bfd217cdb57d971e769874c9a6710618" +checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" dependencies = [ - "derive_more-impl 2.1.0", + "derive_more-impl 2.1.1", ] [[package]] @@ -3593,21 +3627,21 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", "unicode-xid", ] [[package]] name = "derive_more-impl" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d286bfdaf75e988b4a78e013ecd79c581e06399ab53fbacd2d916c2f904f30b" +checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" dependencies = [ "convert_case", "proc-macro2", "quote", "rustc_version 0.4.1", - "syn 2.0.111", + "syn 2.0.114", "unicode-xid", ] @@ -3686,7 +3720,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -3718,9 +3752,9 @@ checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" [[package]] name = "dtoa" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6add3b8cff394282be81f3fc1a0605db594ed69890078ca6e2cab1c408bcf04" +checksum = "4c3cf4824e2d5f025c7b531afcb2325364084a16806f6d47fbc1f5fbd9960590" [[package]] name = "dtoa-short" @@ -3767,7 +3801,7 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -3872,7 +3906,7 @@ checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -3982,13 +4016,13 @@ dependencies = [ [[package]] name = "evmole" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b62c02aa0474cf6c68610ee424dc5feddbe004ea48632c14d237fefa3d893a3" +checksum = "dc83a05bd5d83b886d1aa5b725649d42172532c6f6243da9cd4a3c25fbda20f6" dependencies = [ "alloy-dyn-abi", "alloy-primitives", - "indexmap 2.12.1", + "indexmap 2.13.0", ] [[package]] @@ -4042,7 +4076,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ce92ff622d6dadf7349484f42c93271a0d49b7cc4d466a936405bacbe10aa78" dependencies = [ "cfg-if", - "rustix 1.1.2", + "rustix 1.1.3", "windows-sys 0.59.0", ] @@ -4090,9 +4124,9 @@ dependencies = [ [[package]] name = "find-msvc-tools" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" +checksum = "645cbb3a84e60b7531617d5ae4e57f7e27308f6445f5abf653209ea76dec8dff" [[package]] name = "fixed-hash" @@ -4231,7 +4265,7 @@ dependencies = [ "tempfile", "thiserror 2.0.17", "tokio", - "toml_edit 0.23.9", + "toml_edit 0.23.10+spec-1.0.0", "tower-http", "tracing", "watchexec", @@ -4245,7 +4279,7 @@ name = "forge-doc" version = "1.3.5" dependencies = [ "alloy-primitives", - "derive_more 2.1.0", + "derive_more 2.1.1", "eyre", "forge-fmt", "foundry-common", @@ -4259,7 +4293,7 @@ dependencies = [ "serde", "serde_json", "thiserror 2.0.17", - "toml 0.9.8", + "toml 0.9.10+spec-1.1.0", "tracing", ] @@ -4274,7 +4308,7 @@ dependencies = [ "itertools 0.14.0", "similar-asserts", "thiserror 2.0.17", - "toml 0.9.8", + "toml 0.9.10+spec-1.1.0", "tracing", "tracing-subscriber 0.3.22", ] @@ -4366,7 +4400,7 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -4497,7 +4531,7 @@ dependencies = [ "serde", "serde_json", "thiserror 2.0.17", - "toml 0.9.8", + "toml 0.9.10+spec-1.1.0", "tracing", "walkdir", ] @@ -4508,7 +4542,7 @@ version = "1.3.5" dependencies = [ "alloy-sol-types", "foundry-macros", - "schemars 1.1.0", + "schemars 1.2.0", "serde", "serde_json", ] @@ -4649,7 +4683,7 @@ dependencies = [ "alloy-json-abi", "alloy-primitives", "auto_impl", - "derive_more 2.1.0", + "derive_more 2.1.1", "dyn-clone", "foundry-compilers-artifacts", "foundry-compilers-core", @@ -4773,8 +4807,8 @@ dependencies = [ "soldeer-core", "tempfile", "thiserror 2.0.17", - "toml 0.9.8", - "toml_edit 0.23.9", + "toml 0.9.10+spec-1.1.0", + "toml_edit 0.23.10+spec-1.0.0", "tracing", "walkdir", "yansi", @@ -4836,7 +4870,7 @@ version = "1.3.5" dependencies = [ "alloy-primitives", "alloy-sol-types", - "derive_more 2.1.0", + "derive_more 2.1.1", "foundry-common-fmt", "foundry-macros", "itertools 0.14.0", @@ -4952,7 +4986,7 @@ dependencies = [ [[package]] name = "foundry-fork-db" version = "0.18.0" -source = "git+https://github.com/SeismicSystems/seismic-foundry-fork-db.git?rev=9fe4edc#9fe4edc6967c0e3b387c0141beeda870602ad97f" +source = "git+https://github.com/SeismicSystems/seismic-foundry-fork-db.git?rev=e5fb1f8838b517dbaaccc08a8af6767fe2e70c4e#e5fb1f8838b517dbaaccc08a8af6767fe2e70c4e" dependencies = [ "alloy-chains", "alloy-consensus", @@ -4990,7 +5024,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -5154,7 +5188,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -5233,16 +5267,17 @@ dependencies = [ [[package]] name = "generator" -version = "0.8.7" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "605183a538e3e2a9c1038635cc5c2d194e2ee8fd0d1b66b8349fad7dbacce5a2" +checksum = "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9" dependencies = [ "cc", "cfg-if", "libc", "log", "rustversion", - "windows", + "windows-link 0.2.1", + "windows-result 0.4.1", ] [[package]] @@ -5397,9 +5432,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" +checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" dependencies = [ "atomic-waker", "bytes", @@ -5407,7 +5442,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.4.0", - "indexmap 2.12.1", + "indexmap 2.13.0", "slab", "tokio", "tokio-util", @@ -5427,9 +5462,9 @@ dependencies = [ [[package]] name = "handlebars" -version = "6.3.2" +version = "6.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "759e2d5aea3287cb1190c8ec394f42866cb5bf74fcbf213f354e3c856ea26098" +checksum = "9b3f9296c208515b87bd915a2f5d1163d4b3f863ba83337d7713cf478055948e" dependencies = [ "derive_builder", "log", @@ -5675,7 +5710,7 @@ dependencies = [ "tokio", "tokio-rustls", "tower-service", - "webpki-roots 1.0.4", + "webpki-roots 1.0.5", ] [[package]] @@ -5745,7 +5780,7 @@ dependencies = [ "js-sys", "log", "wasm-bindgen", - "windows-core 0.62.2", + "windows-core", ] [[package]] @@ -5872,7 +5907,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -5945,7 +5980,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -5973,9 +6008,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.12.1" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" dependencies = [ "arbitrary", "equivalent", @@ -5990,7 +6025,7 @@ version = "0.18.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9375e112e4b463ec1b1c6c011953545c65a30164fbab5b581df32b3abf0dcb88" dependencies = [ - "console 0.16.1", + "console 0.16.2", "portable-atomic", "unicode-width 0.2.0", "unit-prefix", @@ -6059,15 +6094,15 @@ dependencies = [ [[package]] name = "instability" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6778b0196eefee7df739db78758e5cf9b37412268bfa5650bfeed028aed20d9c" +checksum = "357b7205c6cd18dd2c86ed312d1e70add149aea98e7ef72b9fdf0270e555c11d" dependencies = [ - "darling 0.20.11", + "darling 0.23.0", "indoc", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -6115,9 +6150,9 @@ checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "iri-string" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397" +checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a" dependencies = [ "memchr", "serde", @@ -6169,15 +6204,15 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.15" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" +checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" [[package]] name = "jiff" -version = "0.2.16" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49cce2b81f2098e7e3efc35bc2e0a6b7abec9d34128283d7a26fa8f32a6dbb35" +checksum = "e67e8da4c49d6d9909fe03361f9b620f58898859f5c7aded68351e85e71ecf50" dependencies = [ "jiff-static", "jiff-tzdb-platform", @@ -6190,20 +6225,20 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.16" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "980af8b43c3ad5d8d349ace167ec8170839f753a42d233ba19e08afe1850fa69" +checksum = "e0c84ee7f197eca9a86c6fd6cb771e55eb991632f15f2bc3ca6ec838929e6e78" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] name = "jiff-tzdb" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1283705eb0a21404d2bfd6eef2a7593d240bc42a0bdb39db0ad6fa2ec026524" +checksum = "68971ebff725b9e2ca27a601c5eb38a4c5d64422c4cbab0c535f248087eda5c2" [[package]] name = "jiff-tzdb-platform" @@ -6464,7 +6499,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -6477,7 +6512,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -6695,9 +6730,9 @@ checksum = "db13adb97ab515a3691f56e4dbab09283d0b86cb45abd991d8634a9d6f501760" [[package]] name = "libc" -version = "0.2.178" +version = "0.2.180" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091" +checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" [[package]] name = "libm" @@ -6717,9 +6752,9 @@ dependencies = [ [[package]] name = "libredox" -version = "0.1.10" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" +checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616" dependencies = [ "bitflags 2.10.0", "libc", @@ -6739,9 +6774,9 @@ dependencies = [ [[package]] name = "libz-rs-sys" -version = "0.5.3" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b484ba8d4f775eeca644c452a56650e544bf7e617f1d170fe7298122ead5222" +checksum = "c10501e7805cee23da17c7790e59df2870c0d4043ec6d03f67d31e2b53e77415" dependencies = [ "zlib-rs", ] @@ -6839,7 +6874,7 @@ checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -6867,7 +6902,7 @@ checksum = "ac84fd3f360fcc43dc5f5d186f02a94192761a080e8bc58621ad4d12296a58cf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -6980,7 +7015,7 @@ checksum = "db5b29714e950dbb20d5e6f74f9dcec4edbcc1067bb7f8ed198c097b8c1a818b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -7059,7 +7094,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -7071,7 +7106,7 @@ dependencies = [ "libc", "log", "openssl", - "openssl-probe", + "openssl-probe 0.1.6", "openssl-sys", "schannel", "security-framework 2.11.1", @@ -7339,7 +7374,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -7359,9 +7394,9 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "nybbles" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c4b5ecbd0beec843101bffe848217f770e8b8da81d8355b7d6e226f2199b3dc" +checksum = "7b5676b5c379cf5b03da1df2b3061c4a4e2aa691086a56ac923e08c143f53f59" dependencies = [ "alloy-rlp", "cfg-if", @@ -7432,7 +7467,7 @@ dependencies = [ "alloy-rlp", "alloy-rpc-types-eth", "alloy-serde", - "derive_more 2.1.0", + "derive_more 2.1.1", "serde", "thiserror 2.0.17", ] @@ -7493,7 +7528,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -7502,6 +7537,12 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" +[[package]] +name = "openssl-probe" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f50d9b3dabb09ecd771ad0aa242ca6894994c130308ca3d7684634df8037391" + [[package]] name = "openssl-sys" version = "0.9.111" @@ -7569,7 +7610,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -7652,7 +7693,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -7682,9 +7723,9 @@ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pest" -version = "2.8.4" +version = "2.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbcfd20a6d4eeba40179f05735784ad32bdaef05ce8e8af05f180d45bb3e7e22" +checksum = "2c9eb05c21a464ea704b53158d358a31e6425db2f63a1a7312268b05fe2b75f7" dependencies = [ "memchr", "ucd-trie", @@ -7692,9 +7733,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.4" +version = "2.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51f72981ade67b1ca6adc26ec221be9f463f2b5839c7508998daa17c23d94d7f" +checksum = "68f9dbced329c441fa79d80472764b1a2c7e57123553b8519b36663a2fb234ed" dependencies = [ "pest", "pest_generator", @@ -7702,22 +7743,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.4" +version = "2.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee9efd8cdb50d719a80088b76f81aec7c41ed6d522ee750178f83883d271625" +checksum = "3bb96d5051a78f44f43c8f712d8e810adb0ebf923fc9ed2655a7f66f63ba8ee5" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] name = "pest_meta" -version = "2.8.4" +version = "2.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf1d70880e76bdc13ba52eafa6239ce793d85c8e43896507e43dd8984ff05b82" +checksum = "602113b5b5e8621770cfd490cfd90b9f84ab29bd2b0e49ad83eb6d186cef2365" dependencies = [ "pest", "sha2", @@ -7730,7 +7771,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" dependencies = [ "fixedbitset", - "indexmap 2.12.1", + "indexmap 2.13.0", ] [[package]] @@ -7804,7 +7845,7 @@ dependencies = [ "phf_shared 0.11.3", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -7817,7 +7858,7 @@ dependencies = [ "phf_shared 0.13.1", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -7875,7 +7916,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -7926,9 +7967,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.11.1" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" +checksum = "f89776e4d69bb58bc6993e99ffa1d11f228b839984854c7daeb5d37f87cbe950" [[package]] name = "portable-atomic-util" @@ -8002,7 +8043,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -8031,7 +8072,7 @@ version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "toml_edit 0.23.9", + "toml_edit 0.23.10+spec-1.0.0", ] [[package]] @@ -8053,14 +8094,14 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] name = "proc-macro2" -version = "1.0.103" +version = "1.0.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" +checksum = "535d180e0ecab6268a3e718bb9fd44db66bbbc256257165fc699dadf70d16fe7" dependencies = [ "unicode-ident", ] @@ -8073,7 +8114,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", "version_check", "yansi", ] @@ -8085,7 +8126,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3ef4f2f0422f23a82ec9f628ea2acd12871c81a9362b02c43c1aa86acfc3ba1" dependencies = [ "futures", - "indexmap 2.12.1", + "indexmap 2.13.0", "nix 0.30.1", "tokio", "tracing", @@ -8119,7 +8160,7 @@ checksum = "095a99f75c69734802359b682be8daaf8980296731f6470434ea2c652af1dd30" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -8152,7 +8193,7 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -8165,7 +8206,7 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -8237,7 +8278,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ee9342d671fae8d66b3ae9fd7a9714dfd089c04d2a8b1ec0436ef77aee15e5f" dependencies = [ "chrono", - "indexmap 2.12.1", + "indexmap 2.13.0", "newtype-uuid", "quick-xml 0.38.4", "strip-ansi-escapes", @@ -8320,9 +8361,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.42" +version = "1.0.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" +checksum = "dc74d9a594b72ae6656596548f56f667211f8a97b3d4c3d467150794690dc40a" dependencies = [ "proc-macro2", ] @@ -8504,7 +8545,7 @@ checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -8554,9 +8595,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.25" +version = "0.12.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6eff9328d40131d43bd911d42d79eb6a47312002a4daefc9e37f17e74a7701a" +checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" dependencies = [ "base64 0.22.1", "bytes", @@ -8599,7 +8640,7 @@ dependencies = [ "wasm-bindgen-futures", "wasm-streams", "web-sys", - "webpki-roots 1.0.4", + "webpki-roots 1.0.5", ] [[package]] @@ -8904,9 +8945,9 @@ dependencies = [ [[package]] name = "ruint" -version = "1.17.0" +version = "1.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a68df0380e5c9d20ce49534f292a36a7514ae21350726efe1865bdb1fa91d278" +checksum = "c141e807189ad38a07276942c6623032d3753c8859c146104ac2e4d68865945a" dependencies = [ "alloy-rlp", "arbitrary", @@ -9013,9 +9054,9 @@ dependencies = [ [[package]] name = "rustix" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" dependencies = [ "bitflags 2.10.0", "errno", @@ -9026,9 +9067,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.35" +version = "0.23.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f" +checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b" dependencies = [ "aws-lc-rs", "log", @@ -9042,11 +9083,11 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9980d917ebb0c0536119ba501e90834767bffc3d60641457fd84a1f3fd337923" +checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63" dependencies = [ - "openssl-probe", + "openssl-probe 0.2.0", "rustls-pki-types", "schannel", "security-framework 3.5.1", @@ -9054,9 +9095,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "708c0f9d5f54ba0272468c1d306a52c495b31fa155e91bc25371e6df7996908c" +checksum = "21e6f2ab2928ca4291b86736a8bd920a277a399bba1589409d72154ff87c1282" dependencies = [ "web-time", "zeroize", @@ -9143,9 +9184,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.20" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" +checksum = "a50f4cf475b65d88e057964e0e9bb1f0aa9bbb2036dc65c64596b42932536984" [[package]] name = "ryu-js" @@ -9203,9 +9244,9 @@ dependencies = [ [[package]] name = "schemars" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9558e172d4e8533736ba97870c4b2cd63f84b382a3d6eb063da41b91cce17289" +checksum = "54e910108742c57a770f492731f99be216a52fadd361b06c8fb59d74ccc267d2" dependencies = [ "dyn-clone", "ref-cast", @@ -9216,14 +9257,14 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301858a4023d78debd2353c7426dc486001bddc91ae31a76fb1f55132f7e2633" +checksum = "4908ad288c5035a8eb12cfdf0d49270def0a268ee162b75eeee0f85d155a7c45" dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -9379,7 +9420,7 @@ dependencies = [ [[package]] name = "seismic-alloy-consensus" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=4be965355a106f64356d0533ddc318d5b4800abe#4be965355a106f64356d0533ddc318d5b4800abe" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=ebc3628c9e384b1db5a41044dd32756b3e79aacb#ebc3628c9e384b1db5a41044dd32756b3e79aacb" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -9402,7 +9443,7 @@ dependencies = [ [[package]] name = "seismic-alloy-network" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=4be965355a106f64356d0533ddc318d5b4800abe#4be965355a106f64356d0533ddc318d5b4800abe" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=ebc3628c9e384b1db5a41044dd32756b3e79aacb#ebc3628c9e384b1db5a41044dd32756b3e79aacb" dependencies = [ "alloy-consensus", "alloy-eip7702", @@ -9410,6 +9451,7 @@ dependencies = [ "alloy-network-primitives", "alloy-primitives", "alloy-provider", + "alloy-rpc-client", "alloy-rpc-types-eth", "alloy-serde", "alloy-signer", @@ -9417,15 +9459,18 @@ dependencies = [ "async-trait", "derive_more 1.0.0", "futures", + "reqwest", "seismic-alloy-consensus", "seismic-alloy-rpc-types", + "seismic-enclave", "serde", + "tokio", ] [[package]] name = "seismic-alloy-provider" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=4be965355a106f64356d0533ddc318d5b4800abe#4be965355a106f64356d0533ddc318d5b4800abe" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=ebc3628c9e384b1db5a41044dd32756b3e79aacb#ebc3628c9e384b1db5a41044dd32756b3e79aacb" dependencies = [ "alloy-network", "alloy-primitives", @@ -9437,13 +9482,14 @@ dependencies = [ "reqwest", "seismic-alloy-consensus", "seismic-alloy-network", + "seismic-alloy-rpc-types", "seismic-enclave", ] [[package]] name = "seismic-alloy-rpc-types" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=4be965355a106f64356d0533ddc318d5b4800abe#4be965355a106f64356d0533ddc318d5b4800abe" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=ebc3628c9e384b1db5a41044dd32756b3e79aacb#ebc3628c9e384b1db5a41044dd32756b3e79aacb" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9461,7 +9507,7 @@ dependencies = [ [[package]] name = "seismic-enclave" version = "0.1.0" -source = "git+https://github.com/SeismicSystems/enclave.git?rev=ef9a53d84dc25596f66ccf438cfd3374a5b0eabc#ef9a53d84dc25596f66ccf438cfd3374a5b0eabc" +source = "git+https://github.com/SeismicSystems/enclave.git?rev=ac5e28dac1ee8ec0e3922b010e6da072d6e784aa#ac5e28dac1ee8ec0e3922b010e6da072d6e784aa" dependencies = [ "aes-gcm", "anyhow", @@ -9477,7 +9523,7 @@ dependencies = [ [[package]] name = "seismic-prelude" version = "0.0.1" -source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=4be965355a106f64356d0533ddc318d5b4800abe#4be965355a106f64356d0533ddc318d5b4800abe" +source = "git+https://github.com/SeismicSystems/seismic-alloy.git?rev=ebc3628c9e384b1db5a41044dd32756b3e79aacb#ebc3628c9e384b1db5a41044dd32756b3e79aacb" dependencies = [ "alloy-consensus", "alloy-eip7702", @@ -9592,7 +9638,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -9603,7 +9649,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -9617,16 +9663,16 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.145" +version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" dependencies = [ - "indexmap 2.12.1", + "indexmap 2.13.0", "itoa", "memchr", - "ryu", "serde", "serde_core", + "zmij", ] [[package]] @@ -9651,9 +9697,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e24345aa0fe688594e73770a5f6d1b216508b4f93484c0026d521acd30134392" +checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" dependencies = [ "serde_core", ] @@ -9680,9 +9726,9 @@ dependencies = [ "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.12.1", + "indexmap 2.13.0", "schemars 0.9.0", - "schemars 1.1.0", + "schemars 1.2.0", "serde_core", "serde_json", "serde_with_macros", @@ -9698,7 +9744,7 @@ dependencies = [ "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -9764,9 +9810,9 @@ dependencies = [ [[package]] name = "shell-words" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" +checksum = "dc6fe69c597f9c37bfeeeeeb33da3530379845f10be461a66d16d03eca2ded77" [[package]] name = "shlex" @@ -9797,10 +9843,11 @@ dependencies = [ [[package]] name = "signal-hook-registry" -version = "1.4.7" +version = "1.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7664a098b8e616bdfcc2dc0e9ac44eb231eedf41db4e9fe95d8d32ec728dedad" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" dependencies = [ + "errno", "libc", ] @@ -9992,7 +10039,7 @@ checksum = "2dea34e58332c7d6a8cde1f1740186d31682b7be46e098b8cc16fcb7ffd98bf5" dependencies = [ "bumpalo", "index_vec", - "indexmap 2.12.1", + "indexmap 2.13.0", "parking_lot", "rayon", "rustc-hash", @@ -10008,7 +10055,7 @@ dependencies = [ "annotate-snippets 0.12.5", "anstream", "anstyle", - "derive_more 2.1.0", + "derive_more 2.1.1", "dunce", "inturn", "itertools 0.14.0", @@ -10035,7 +10082,7 @@ checksum = "44a98045888d75d17f52e7b76f6098844b76078b5742a450c3ebcdbdb02da124" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -10070,7 +10117,7 @@ dependencies = [ "alloy-primitives", "bitflags 2.10.0", "bumpalo", - "derive_more 2.1.0", + "derive_more 2.1.1", "either", "once_map", "paste", @@ -10097,7 +10144,7 @@ dependencies = [ "clap", "clap-verbosity-flag", "cliclack", - "derive_more 2.1.0", + "derive_more 2.1.1", "email-address-parser", "env_logger", "path-slash", @@ -10115,7 +10162,7 @@ dependencies = [ "bon", "chrono", "const-hex", - "derive_more 2.1.0", + "derive_more 2.1.1", "dunce", "home", "ignore", @@ -10131,7 +10178,7 @@ dependencies = [ "sha2", "thiserror 2.0.17", "tokio", - "toml_edit 0.23.9", + "toml_edit 0.23.10+spec-1.0.0", "uuid 1.19.0", "zip", "zip-extract", @@ -10250,7 +10297,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -10262,7 +10309,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -10351,9 +10398,9 @@ dependencies = [ [[package]] name = "svm-rs" -version = "0.5.22" +version = "0.5.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "909e8ff825120cd2b34ceb236ab72e2a7f74b1d3a86c247936c8ff7a80c5d408" +checksum = "415b159b54c22d9810087f0991371fd6242a912673e982a7c4ca8ea122f7e00a" dependencies = [ "const-hex", "dirs", @@ -10370,9 +10417,9 @@ dependencies = [ [[package]] name = "svm-rs-builds" -version = "0.5.22" +version = "0.5.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1ebe77b200f965e8dbec3ef1d8337e974179ca1ecaa9fc28f67288d6b438159" +checksum = "ab96ac3275ad299c6e5455b69a2f72443c4d3afb4933d92a0f859d48432dea49" dependencies = [ "const-hex", "semver 1.0.27", @@ -10393,9 +10440,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.111" +version = "2.0.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" +checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" dependencies = [ "proc-macro2", "quote", @@ -10410,7 +10457,7 @@ dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -10430,7 +10477,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -10462,14 +10509,14 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.23.0" +version = "3.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" +checksum = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c" dependencies = [ "fastrand", "getrandom 0.3.4", "once_cell", - "rustix 1.1.2", + "rustix 1.1.3", "windows-sys 0.61.2", ] @@ -10499,7 +10546,7 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60b8cb979cb11c32ce1603f8137b22262a9d131aaa5c37b5678025f22b8becd0" dependencies = [ - "rustix 1.1.2", + "rustix 1.1.3", "windows-sys 0.60.2", ] @@ -10564,7 +10611,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -10575,7 +10622,7 @@ checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -10686,9 +10733,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.48.0" +version = "1.49.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" +checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" dependencies = [ "bytes", "libc", @@ -10709,7 +10756,7 @@ checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -10734,9 +10781,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" dependencies = [ "futures-core", "pin-project-lite", @@ -10774,9 +10821,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.17" +version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" dependencies = [ "bytes", "futures-core", @@ -10809,14 +10856,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.8" +version = "0.9.10+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0dc8b1fb61449e27716ec0e1bdf0f6b8f3e8f6b05391e8497b8b6d7804ea6d8" +checksum = "0825052159284a1a8b4d6c0c86cbc801f2da5afd2b225fa548c72f2e74002f48" dependencies = [ - "indexmap 2.12.1", + "indexmap 2.13.0", "serde_core", - "serde_spanned 1.0.3", - "toml_datetime 0.7.3", + "serde_spanned 1.0.4", + "toml_datetime 0.7.5+spec-1.1.0", "toml_parser", "toml_writer", "winnow", @@ -10833,9 +10880,9 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.3" +version = "0.7.5+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" dependencies = [ "serde_core", ] @@ -10846,7 +10893,7 @@ version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.12.1", + "indexmap 2.13.0", "serde", "serde_spanned 0.6.9", "toml_datetime 0.6.11", @@ -10856,14 +10903,14 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.23.9" +version = "0.23.10+spec-1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d7cbc3b4b49633d57a0509303158ca50de80ae32c265093b24c414705807832" +checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" dependencies = [ - "indexmap 2.12.1", + "indexmap 2.13.0", "serde_core", - "serde_spanned 1.0.3", - "toml_datetime 0.7.3", + "serde_spanned 1.0.4", + "toml_datetime 0.7.5+spec-1.1.0", "toml_parser", "toml_writer", "winnow", @@ -10871,9 +10918,9 @@ dependencies = [ [[package]] name = "toml_parser" -version = "1.0.4" +version = "1.0.6+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" dependencies = [ "winnow", ] @@ -10886,9 +10933,9 @@ checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" [[package]] name = "toml_writer" -version = "1.0.4" +version = "1.0.6+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df8b2b54733674ad286d16267dcfc7a71ed5c776e4ac7aa3c3e2561f7c637bf2" +checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" [[package]] name = "tonic" @@ -10950,7 +10997,7 @@ checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ "futures-core", "futures-util", - "indexmap 2.12.1", + "indexmap 2.13.0", "pin-project-lite", "slab", "sync_wrapper", @@ -11016,9 +11063,9 @@ dependencies = [ [[package]] name = "tracing" -version = "0.1.43" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d15d90a0b5c19378952d479dc858407149d7bb45a14de0142f6c534b16fc647" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" dependencies = [ "log", "pin-project-lite", @@ -11034,14 +11081,14 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] name = "tracing-core" -version = "0.1.35" +version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a04e24fab5c89c6a36eb8558c9656f30d81de51dfa4d3b45f26b21d61fa0a6c" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" dependencies = [ "once_cell", "valuable", @@ -11108,9 +11155,9 @@ dependencies = [ [[package]] name = "tracy-client" -version = "0.18.3" +version = "0.18.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91d722a05fe49b31fef971c4732a7d4aa6a18283d9ba46abddab35f484872947" +checksum = "a4f6fc3baeac5d86ab90c772e9e30620fc653bf1864295029921a15ef478e6a5" dependencies = [ "loom", "once_cell", @@ -11120,9 +11167,9 @@ dependencies = [ [[package]] name = "tracy-client-sys" -version = "0.27.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fb391ac70462b3097a755618fbf9c8f95ecc1eb379a414f7b46f202ed10db1f" +checksum = "c5f7c95348f20c1c913d72157b3c6dee6ea3e30b3d19502c5a7f6d3f160dacbf" dependencies = [ "cc", "windows-targets 0.52.6", @@ -11257,9 +11304,9 @@ dependencies = [ [[package]] name = "unicase" -version = "2.8.1" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" +checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" [[package]] name = "unicode-bidi" @@ -11353,9 +11400,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.7" +version = "2.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" dependencies = [ "form_urlencoded", "idna", @@ -11590,7 +11637,7 @@ dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", "wasm-bindgen-shared", ] @@ -11723,14 +11770,14 @@ version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75c7f0ef91146ebfb530314f5f1d24528d7f0767efbfd31dce919275413e393e" dependencies = [ - "webpki-root-certs 1.0.4", + "webpki-root-certs 1.0.5", ] [[package]] name = "webpki-root-certs" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee3e3b5f5e80bc89f30ce8d0343bf4e5f12341c51f3e26cbeecbc7c85443e85b" +checksum = "36a29fc0408b113f68cf32637857ab740edfafdf460c326cd2afaa2d84cc05dc" dependencies = [ "rustls-pki-types", ] @@ -11741,14 +11788,14 @@ version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" dependencies = [ - "webpki-roots 1.0.4", + "webpki-roots 1.0.5", ] [[package]] name = "webpki-roots" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2878ef029c47c6e8cf779119f20fcf52bde7ad42a731b2a304bc221df17571e" +checksum = "12bed680863276c63889429bfd6cab3b99943659923822de1c8a39c49e4d722c" dependencies = [ "rustls-pki-types", ] @@ -11760,7 +11807,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3fabb953106c3c8eea8306e4393700d7657561cb43122571b172bbfb7c7ba1d" dependencies = [ "env_home", - "rustix 1.1.2", + "rustix 1.1.3", "winsafe", ] @@ -11808,7 +11855,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" dependencies = [ "windows-collections", - "windows-core 0.61.2", + "windows-core", "windows-future", "windows-link 0.1.3", "windows-numerics", @@ -11820,7 +11867,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" dependencies = [ - "windows-core 0.61.2", + "windows-core", ] [[package]] @@ -11836,26 +11883,13 @@ dependencies = [ "windows-strings 0.4.2", ] -[[package]] -name = "windows-core" -version = "0.62.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" -dependencies = [ - "windows-implement", - "windows-interface", - "windows-link 0.2.1", - "windows-result 0.4.1", - "windows-strings 0.5.1", -] - [[package]] name = "windows-future" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" dependencies = [ - "windows-core 0.61.2", + "windows-core", "windows-link 0.1.3", "windows-threading", ] @@ -11868,7 +11902,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -11879,7 +11913,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -11900,7 +11934,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" dependencies = [ - "windows-core 0.61.2", + "windows-core", "windows-link 0.1.3", ] @@ -12293,28 +12327,28 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", "synstructure", ] [[package]] name = "zerocopy" -version = "0.8.31" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd74ec98b9250adb3ca554bdde269adf631549f51d8a8f8f0a10b50f1cb298c3" +checksum = "668f5168d10b9ee831de31933dc111a459c97ec93225beb307aed970d1372dfd" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.31" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a" +checksum = "2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -12334,7 +12368,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", "synstructure", ] @@ -12349,13 +12383,13 @@ dependencies = [ [[package]] name = "zeroize_derive" -version = "1.4.2" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -12377,7 +12411,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -12389,7 +12423,7 @@ dependencies = [ "arbitrary", "crc32fast", "flate2", - "indexmap 2.12.1", + "indexmap 2.13.0", "memchr", "zopfli", ] @@ -12407,9 +12441,15 @@ dependencies = [ [[package]] name = "zlib-rs" -version = "0.5.3" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40990edd51aae2c2b6907af74ffb635029d5788228222c4bb811e9351c0caad3" + +[[package]] +name = "zmij" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36134c44663532e6519d7a6dfdbbe06f6f8192bde8ae9ed076e9b213f0e31df7" +checksum = "2fc5a66a20078bf1251bde995aa2fdcc4b800c70b5d92dd2c62abc5c60f679f8" [[package]] name = "zopfli" diff --git a/Cargo.toml b/Cargo.toml index d560d6d37..c28c50df2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -375,7 +375,7 @@ rexpect = { git = "https://github.com/rust-cli/rexpect", rev = "2ed0b1898d7edaf6 # If our dependencies depend on these things, # then this will override whatever versions they point to # and instead use our local version -seismic-enclave = { git = "https://github.com/SeismicSystems/enclave.git", rev = "ef9a53d84dc25596f66ccf438cfd3374a5b0eabc" } +seismic-enclave = { git = "https://github.com/SeismicSystems/enclave.git", rev = "ac5e28dac1ee8ec0e3922b010e6da072d6e784aa" } # seismic-alloy-core alloy-dyn-abi = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "68313cb636365501a699c47865807158544eace1" } @@ -400,16 +400,16 @@ seismic-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev revm-inspectors = { git = "https://github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "9e26c0a55f522ad7d8cf4716d9df9d79b8116d52" } # seismic-alloy -seismic-alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "4be965355a106f64356d0533ddc318d5b4800abe" } -seismic-alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "4be965355a106f64356d0533ddc318d5b4800abe" } -seismic-alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "4be965355a106f64356d0533ddc318d5b4800abe" } -seismic-alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "4be965355a106f64356d0533ddc318d5b4800abe" } -seismic-prelude = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "4be965355a106f64356d0533ddc318d5b4800abe" } +seismic-alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "ebc3628c9e384b1db5a41044dd32756b3e79aacb" } +seismic-alloy-network = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "ebc3628c9e384b1db5a41044dd32756b3e79aacb" } +seismic-alloy-provider = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "ebc3628c9e384b1db5a41044dd32756b3e79aacb" } +seismic-alloy-rpc-types = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "ebc3628c9e384b1db5a41044dd32756b3e79aacb" } +seismic-prelude = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "ebc3628c9e384b1db5a41044dd32756b3e79aacb" } # alloy-evm -alloy-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "db34d7185e62c57f7fa4ac67f169113b14097a99" } -alloy-op-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "db34d7185e62c57f7fa4ac67f169113b14097a99" } -alloy-seismic-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "db34d7185e62c57f7fa4ac67f169113b14097a99" } +alloy-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "039d51496b9b9a0cb4fea6d606e472211b462073" } +alloy-op-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "039d51496b9b9a0cb4fea6d606e472211b462073" } +alloy-seismic-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "039d51496b9b9a0cb4fea6d606e472211b462073" } # foundry foundry-compilers = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "5477a89ae892229a90af58580daa8ef4575f00a6" } @@ -418,4 +418,4 @@ foundry-compilers-artifacts-solc = { git = "https://github.com/SeismicSystems/se foundry-compilers-artifacts-vyper = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "5477a89ae892229a90af58580daa8ef4575f00a6" } foundry-compilers-core = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "5477a89ae892229a90af58580daa8ef4575f00a6" } -foundry-fork-db = { git = "https://github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "9fe4edc" } +foundry-fork-db = { git = "https://github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "e5fb1f8838b517dbaaccc08a8af6767fe2e70c4e" } diff --git a/crates/anvil/core/src/eth/transaction/mod.rs b/crates/anvil/core/src/eth/transaction/mod.rs index db605b862..720c7a891 100644 --- a/crates/anvil/core/src/eth/transaction/mod.rs +++ b/crates/anvil/core/src/eth/transaction/mod.rs @@ -672,15 +672,15 @@ impl PendingTransaction { } = &tx.tx(); let tx_io_sk = seismic_enclave::get_unsecure_sample_secp256k1_sk(); - + let tx_metadata = tx.tx().tx_metadata(caller); OpTransaction::new(TxEnv { caller, kind: transact_to(to), // these two have already been validated in TransactionValidator, // so we simply unwrap here data: seismic_elements - .decrypt(&tx_io_sk, &input) - .expect("failed to decrypt seismic elements") + .decrypt(&tx_io_sk, &input, &tx_metadata) + .expect("failed to decrypt ciphertext") .into(), chain_id: Some(*chain_id), nonce: *nonce, @@ -1696,7 +1696,13 @@ pub fn convert_to_anvil_receipt(receipt: AnyTransactionReceipt) -> Option @@ -1942,7 +1948,9 @@ mod tests { #[test] fn test_seismic_tx_encoding() { - let decrypted_input = Bytes::from_str("0xfc3c2cf4943c327f19af0efaf3b07201f608dd5c8e3954399a919b72588d3872b6819ac3d13d3656cbb38833a39ffd1e73963196a1ddfa9e4a5d595fdbebb875").unwrap(); + // mirrors values in seismic-viem-tests/testSeismicTxEncoding + let _decrypted_input = Bytes::from_str("0xfc3c2cf4943c327f19af0efaf3b07201f608dd5c8e3954399a919b72588d3872b6819ac3d13d3656cbb38833a39ffd1e73963196a1ddfa9e4a5d595fdbebb875").unwrap(); + let encrypted_input = Bytes::from_str("0xbf645e68de8096b62950fac2d5bceb71ab1a085aed2e973a8b4f961ca77209f99116130edecd27c39fc62e1b3c05ff42d9e4382f987fc55c2011f8e4f2e66204e17174e9d2756bb20f4cdfe48bd5d237").unwrap(); let orig_decoded_tx = TxSeismic { chain_id: 31337u64, nonce: 2, @@ -1951,23 +1959,35 @@ mod tests { to: Address::from_str("d3e8763675e4c425df46cc3b5c0f6cbdac396046").unwrap().into(), value: U256::from(1000000000000000u64), seismic_elements: TxSeismicElements { - encryption_pubkey: TxSeismicElements::get_rand_encryption_keypair().public_key(), - encryption_nonce: TxSeismicElements::get_rand_encryption_nonce(), + encryption_pubkey: get_unsecure_sample_secp256k1_pk(), + encryption_nonce: U96::from_str("0x46a2b6020bba77fcb1e676a6").unwrap(), message_version: 0, + recent_block_hash: FixedBytes::<32>::from_hex( + "0x934207181885f6859ca848f5f01091d1957444a920a2bfb262fa043c6c239f90", + ) + .unwrap(), + expires_at_block: 100, + signed_read: false, }, - input: decrypted_input.clone(), + input: encrypted_input.clone(), }; + // Signature comes from seismic-viem-tests/testSeismicTxEncoding let r = - U256::from_str("0x1e7a28fd3647ab10173d940fe7e561f7b06185d3d6a93b83b2f210055dd27f04") + U256::from_str("0xfea7db32f4e44d75eb13f84d2cf04c2808a5c8dba8dac629476fe27e04c7629f") .unwrap(); let s = - U256::from_str("0x779d1157c4734323923df2f41073ecb016719a577ce774ef4478c9b443caacb3") + U256::from_str("0x01f17d58cf879dc2c787d526b90a17b6d7bcbf4fbd581215ae3f6099e43c84c5") .unwrap(); - let signature = Signature::new(r, s, true); + let signature = Signature::new(r, s, false); let signed_tx: Signed = orig_decoded_tx.into_signed(signature); + let signer = signed_tx.recover_signer().unwrap(); + let expected_signer = + Address::from_str("0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266").unwrap(); + assert_eq!(signer, expected_signer); + let signed_tt = TypedTransaction::Seismic(signed_tx); let mut encoded_tx = Vec::new(); diff --git a/crates/anvil/src/eth/api.rs b/crates/anvil/src/eth/api.rs index 4a970f166..4a8cd6f84 100644 --- a/crates/anvil/src/eth/api.rs +++ b/crates/anvil/src/eth/api.rs @@ -103,9 +103,12 @@ use tokio::{ }; use yansi::Paint; -use seismic_prelude::foundry::{ - AnyNetwork, AnyRpcBlock, AnyRpcTransaction, Decodable712, SeismicCallRequest, - SeismicRawTxRequest, SimulatePayload, TransactionRequest, TypedDataRequest, tx_builder, +use seismic_prelude::{ + foundry::{ + AnyNetwork, AnyRpcBlock, AnyRpcTransaction, Decodable712, SeismicCallRequest, + SeismicRawTxRequest, SimulatePayload, TransactionRequest, TypedDataRequest, tx_builder, + }, + reth::InputDecryptionElements, }; /// The client version: `anvil/v{major}.{minor}.{patch}` @@ -1286,6 +1289,7 @@ impl EthApi { "not available on past forked blocks".to_string(), )); } + // TODO: allow them to make seismic calls on forks return Ok(fork.call(&seismic_request, Some(number.into())).await?); } @@ -1372,6 +1376,9 @@ impl EthApi { let sender = signed_seismic_tx.recover_signer().map_err(|e| { BlockchainError::Message(format!("Failed to recover signer: {e:?}")) })?; + if let Err(e) = signed_seismic_tx.tx().metadata(sender) { + return Err(BlockchainError::FailedToDecryptCalldata(e)); + }; let mut request = WithOtherFields::new(tx); request.inner.inner.from = Some(sender); @@ -3302,10 +3309,10 @@ impl EthApi { // Binary search for the ideal gas limit while (highest_gas_limit - lowest_gas_limit) > 1 { seismic_request.set_gas_limit(mid_gas_limit as u64); - let request = seismic_request.clone().inner.inner; + let request = seismic_request.clone().inner; let ethres = self.backend.call_with_state( &state, - WithOtherFields::new(request.clone().into()), + WithOtherFields::new(request.clone()), fees.clone(), block_env.clone(), ); diff --git a/crates/anvil/src/eth/backend/fork.rs b/crates/anvil/src/eth/backend/fork.rs index 1d277e563..7ffa90251 100644 --- a/crates/anvil/src/eth/backend/fork.rs +++ b/crates/anvil/src/eth/backend/fork.rs @@ -196,7 +196,6 @@ impl ClientFork { block: Option, ) -> Result { let block = block.unwrap_or(BlockNumber::Latest); - // TODO: seismic provider let res = self.provider().call(request.clone()).block(block.into()).await?; Ok(res) diff --git a/crates/anvil/src/eth/backend/mem/mod.rs b/crates/anvil/src/eth/backend/mem/mod.rs index f17516e5f..14e99651d 100644 --- a/crates/anvil/src/eth/backend/mem/mod.rs +++ b/crates/anvil/src/eth/backend/mem/mod.rs @@ -120,6 +120,7 @@ use revm::{ primitives::{FlaggedStorage, KECCAK_EMPTY, hardfork::SpecId as RevmSpecId}, state::AccountInfo, }; +use seismic_enclave::get_unsecure_sample_secp256k1_sk; use std::{ collections::BTreeMap, fmt::Debug, @@ -133,10 +134,13 @@ use storage::{Blockchain, DEFAULT_HISTORY_LIMIT, MinedTransaction}; use tokio::sync::RwLock as AsyncRwLock; use alloy_rpc_types::TransactionRequest as AlloyTransactionRequest; -use seismic_prelude::foundry::{ - AnyRpcBlock, AnyRpcTransaction, AnyTxEnvelope, EthereumWallet, OpHaltReason, OpTransaction, - SeismicContext, SeismicPrecompiles, SimBlock, SimulatePayload, SpecId, TransactionReceipt, - TransactionRequest, TxEnvelope, +use seismic_prelude::{ + foundry::{ + AnyRpcBlock, AnyRpcTransaction, AnyTxEnvelope, EthereumWallet, InputDecryptionElements, + OpHaltReason, OpTransaction, SeismicContext, SeismicPrecompiles, SimBlock, SimulatePayload, + SpecId, TransactionReceipt, TransactionRequest, TxEnvelope, + }, + reth::{SEISMIC_TX_TYPE_ID, TxSeismicMetadata}, }; pub mod cache; @@ -1650,6 +1654,19 @@ impl Backend { }).await? } + fn check_calldata_decryption( + seismic_request: &TransactionRequest, + ) -> Result<(), BlockchainError> { + match seismic_request.to_transaction_request(&get_unsecure_sample_secp256k1_sk()) { + // check if we can decrypt calldata before building call env + // because it will panic inside there + Ok(_) => Ok(()), + Err(e) => { + return Err(BlockchainError::FailedToDecryptCalldata(e)); + } + } + } + /// ## EVM settings /// /// This modifies certain EVM settings to mirror geth's `SkipAccountChecks` when transacting requests, see also: : @@ -1665,6 +1682,7 @@ impl Backend { block_env: BlockEnv, ) -> Env { let tx_type = request.minimal_tx_type() as u8; + let cloned_inner = request.inner.clone(); let WithOtherFields:: { inner: @@ -1674,7 +1692,6 @@ impl Backend { to, gas, value, - input, access_list, blob_versioned_hashes, authorization_list, @@ -1716,14 +1733,19 @@ impl Backend { let caller = from.unwrap_or_default(); let to = to.as_ref().and_then(TxKind::to); let blob_hashes = blob_versioned_hashes.unwrap_or_default(); - let data = input.into_input().unwrap_or_default(); let tx_io_sk = seismic_enclave::get_unsecure_sample_secp256k1_sk(); - let data = match request.inner.seismic_elements { - Some(seismic_elements) => seismic_elements - .decrypt(&tx_io_sk, &data) - .expect("failed to decrypt seismic elements") - .into(), - None => data.into(), + + let kind = match to { + Some(addr) => TxKind::Call(*addr), + None => TxKind::Create, + }; + let value = value.unwrap_or_default(); + let chain_id = chain_id.unwrap_or(self.env.read().evm_env.cfg_env.chain_id); + let data = match cloned_inner.to_transaction_request(&tx_io_sk) { + Ok(tx_req) => tx_req.input.normalized_input().input.unwrap_or_default(), + Err(e) => { + panic!("Failed to decrypt seismic tx calldata: {e}") + } }; let mut base = TxEnv { caller, @@ -1739,14 +1761,11 @@ impl Backend { } }) .unwrap_or_default(), - kind: match to { - Some(addr) => TxKind::Call(*addr), - None => TxKind::Create, - }, + kind, tx_type, - value: value.unwrap_or_default(), + value, data, - chain_id: Some(chain_id.unwrap_or(self.env.read().evm_env.cfg_env.chain_id)), + chain_id: Some(chain_id), access_list: access_list.unwrap_or_default(), blob_hashes, ..Default::default() @@ -1849,6 +1868,7 @@ impl Backend { )? .or_zero_fees(); + Self::check_calldata_decryption(&seismic_request)?; let mut env = self.build_call_env( WithOtherFields::new(seismic_request.clone()), fee_details, @@ -2028,7 +2048,7 @@ impl Backend { block_env: BlockEnv, ) -> Result<(InstructionResult, Option, u128, State), BlockchainError> { let mut inspector = self.build_inspector(); - + Self::check_calldata_decryption(&request)?; let env = self.build_call_env(request, fee_details, block_env); let mut evm = self.new_evm_with_inspector_ref(state, &env, &mut inspector); let ResultAndState { result, state } = evm.transact(env.tx)?; @@ -2053,6 +2073,56 @@ impl Backend { Ok((exit_reason, out, gas_used as u128, state)) } + /// If the request is a seismic tx, then make sure it has: + /// - seismic elements + /// - a 'from' field set (from the recovered signer) + /// - and it's marked as a signed read + /// ... and then create the metadata + /// + /// If not, then make sure it does not have seismic elements + fn validate_seismic_call_tx_metadata( + request: &WithOtherFields, + ) -> Result, BlockchainError> { + match request.transaction_type { + Some(SEISMIC_TX_TYPE_ID) => { + if request.inner.seismic_elements.is_none() { + return Err(BlockchainError::MissingRequiredFields); + } + let sender = match request.from { + Some(addr) => addr, + None => { + // this should never happen in practice, + // because we patch the 'from' field manually + return Err(BlockchainError::Message( + "Failed to parse 'from' field for Seismic tx".into(), + )); + } + }; + let tx_metadata = request + .inner + .metadata(sender) + .map_err(|_e| BlockchainError::MissingRequiredFields)?; + /* + NOTE: we allow them to make signed + if !tx_metadata.seismic_elements.signed_read { + return Err(BlockchainError::Message( + "Seismic call has signed_read set to false".into(), + )); + } + */ + Ok(Some(tx_metadata)) + } + _ => { + if request.inner.seismic_elements.is_some() { + return Err(BlockchainError::Message( + "Non-seismic tx has seismic fields".into(), + )); + } + Ok(None) + } + } + } + pub fn seismic_call_with_state( &self, state: &dyn DatabaseRef, @@ -2060,14 +2130,21 @@ impl Backend { fee_details: FeeDetails, block_env: BlockEnv, ) -> Result<(InstructionResult, Option, u128, State), BlockchainError> { - let seismic_elements = request.inner.seismic_elements; + let tx_metadata = Self::validate_seismic_call_tx_metadata(&request)?; let tx_io_sk = seismic_enclave::get_unsecure_sample_secp256k1_sk(); + if let Some(metadata) = &tx_metadata { + let encrypted_input = request.inner.input.clone().input.unwrap_or(Bytes::new()).clone(); + if let Err(e) = metadata.decrypt(&tx_io_sk, &encrypted_input) { + return Err(BlockchainError::Message(format!("Invalid AEAD metadata: {e}"))); + } + } let (exit_reason, out, gas_used, state) = self.call_with_state(state, request, fee_details, block_env)?; let output_data = out - .map(|plaintext_output| match seismic_elements { - Some(seismic_elements) => seismic_elements - .encrypt(&tx_io_sk, &plaintext_output.data()) + .map(|plaintext_output| match tx_metadata { + Some(tx_metadata) => tx_metadata + .seismic_elements + .encrypt(&tx_io_sk, &plaintext_output.data(), &tx_metadata) .map_err(|e| { BlockchainError::Message(format!("Failed to encrypt output: {}", e)) }) @@ -2116,7 +2193,7 @@ impl Backend { let mut inspector = self.build_inspector().with_tracing_config( TracingInspectorConfig::from_geth_call_config(&call_config), ); - + Self::check_calldata_decryption(&request)?; let env = self.build_call_env(request, fee_details, block); let mut evm = self.new_evm_with_inspector_ref(&cache_db, &env, &mut inspector); @@ -2150,6 +2227,7 @@ impl Backend { revm_inspectors::tracing::js::JsInspector::new(code, config) .map_err(|err| BlockchainError::Message(err.to_string()))?; + Self::check_calldata_decryption(&request)?; let env = self.build_call_env(request, fee_details, block.clone()); let mut evm = self.new_evm_with_inspector_ref(&cache_db, &env, &mut inspector); @@ -2169,6 +2247,7 @@ impl Backend { .build_inspector() .with_tracing_config(TracingInspectorConfig::from_geth_config(&config)); + Self::check_calldata_decryption(&request)?; let env = self.build_call_env(request, fee_details, block); let mut evm = self.new_evm_with_inspector_ref(&cache_db, &env, &mut inspector); let ResultAndState { result, state: _ } = evm.transact(env.tx)?; @@ -2211,6 +2290,7 @@ impl Backend { let mut inspector = AccessListInspector::new(request.inner.inner.access_list.clone().unwrap_or_default()); + Self::check_calldata_decryption(&request)?; let env = self.build_call_env(request, fee_details, block_env); let mut evm = self.new_evm_with_inspector_ref(state, &env, &mut inspector); let ResultAndState { result, state: _ } = evm.transact(env.tx)?; @@ -3690,9 +3770,15 @@ impl TransactionValidator for Backend { if let TypedTransaction::Seismic(seismic_tx) = &tx.transaction { // check that decryption works before we create tx env for it let inner = seismic_tx.tx(); + let tx_metadata = inner.tx_metadata(*pending.sender()); + if tx_metadata.seismic_elements.signed_read { + return Err(InvalidTransactionError::SignedReadMismatch); + } let tx_io_sk = seismic_enclave::get_unsecure_sample_secp256k1_sk(); - let _decrypted_data = - inner.seismic_elements.decrypt(&tx_io_sk, &inner.input).map_err(|_e| { + let _decrypted_data = inner + .seismic_elements + .decrypt(&tx_io_sk, &inner.input, &tx_metadata) + .map_err(|_e| { InvalidTransactionError::SeismicDecryptionFailed(format!( "Failed to decrypt seismic calldata" )) diff --git a/crates/anvil/src/eth/error.rs b/crates/anvil/src/eth/error.rs index fb40430c2..431b40108 100644 --- a/crates/anvil/src/eth/error.rs +++ b/crates/anvil/src/eth/error.rs @@ -20,10 +20,14 @@ use revm::{ use serde::Serialize; use tokio::time::Duration; +use seismic_prelude::foundry::InputDecryptionElementsError; + pub(crate) type Result = std::result::Result; #[derive(Debug, thiserror::Error)] pub enum BlockchainError { + #[error("{0}")] + FailedToDecryptCalldata(InputDecryptionElementsError), #[error(transparent)] Pool(#[from] PoolError), #[error("No signer available")] @@ -229,6 +233,9 @@ pub enum InvalidTransactionError { /// Thrown when a seismic transaction is invalid #[error("Seismic decryption failed: {0}")] SeismicDecryptionFailed(String), + /// Signed read was sent as a write transaction + #[error("Seismic tx was marked as signed read, but sent as a write")] + SignedReadMismatch, /// returned if the nonce of a transaction is lower than the one present in the local chain. #[error("nonce too low")] NonceTooLow, @@ -565,6 +572,9 @@ impl ToRpcResponseResult for Result { err @ BlockchainError::MissingRequiredFields => { RpcError::invalid_params(err.to_string()) } + BlockchainError::FailedToDecryptCalldata(e) => { + RpcError::invalid_params(e.to_string()) + } } .into(), } diff --git a/crates/anvil/tests/it/api.rs b/crates/anvil/tests/it/api.rs index abaa47ccb..c8b13bd10 100644 --- a/crates/anvil/tests/it/api.rs +++ b/crates/anvil/tests/it/api.rs @@ -283,7 +283,7 @@ async fn can_call_with_undersized_max_fee_per_gas() { let node_url = Url::parse(&handle.http_endpoint()).unwrap(); let provider = http_provider_with_signer(&handle.http_endpoint(), signer.clone()); - let seismic_provider = sfoundry_signed_provider(signer.clone(), node_url); + let seismic_provider = sfoundry_signed_provider(signer.clone(), node_url).await.unwrap(); api.anvil_set_auto_mine(true).await.unwrap(); diff --git a/crates/anvil/tests/it/revert.rs b/crates/anvil/tests/it/revert.rs index e78a38928..98387c3c4 100644 --- a/crates/anvil/tests/it/revert.rs +++ b/crates/anvil/tests/it/revert.rs @@ -71,7 +71,7 @@ async fn test_solc_revert_example() { let provider = handle.http_provider(); let node_url = Url::parse(&handle.http_endpoint()).unwrap(); - let seismic_provider = sfoundry_signed_provider(wallet.clone(), node_url); + let seismic_provider = sfoundry_signed_provider(wallet.clone(), node_url).await.unwrap(); let contract = VendingMachine::deploy(&provider).await.unwrap(); let tx = contract.buy(U256::from(100)).into_transaction_request(); diff --git a/crates/anvil/tests/it/seismic.rs b/crates/anvil/tests/it/seismic.rs index e111b70f0..9a7b6d06e 100644 --- a/crates/anvil/tests/it/seismic.rs +++ b/crates/anvil/tests/it/seismic.rs @@ -1,3 +1,4 @@ +use alloy_consensus::TxEip1559; use alloy_dyn_abi::EventExt; use alloy_json_abi::{Event, EventParam}; use alloy_network::TransactionBuilder; @@ -20,8 +21,8 @@ use std::{fs, str::FromStr}; use seismic_prelude::foundry::{ AnyNetwork, AnyTxEnvelope, EthereumWallet, SeismicCallRequest, SeismicProviderExt, - SeismicSignedProvider, SeismicUnsignedProvider, TransactionRequest, TxSeismic, - TxSeismicElements, TypedDataRequest, test_utils, tx_builder, + SeismicSignedProvider, SeismicUnsignedProvider, TransactionRequest, TxLegacyFields, TxSeismic, + TxSeismicElements, TxSeismicMetadata, TypedDataRequest, test_utils, tx_builder, }; // common utils @@ -69,11 +70,18 @@ pub fn get_encryption_nonce() -> U96 { U96::MAX } -pub fn get_seismic_elements() -> TxSeismicElements { +pub fn get_seismic_elements(signed_read: bool) -> TxSeismicElements { let encryption_sk = get_encryption_private_key(); let encryption_pk = PublicKey::from_secret_key_global(&encryption_sk); let encryption_nonce = get_encryption_nonce(); - TxSeismicElements { encryption_pubkey: encryption_pk, encryption_nonce, message_version: 0 } + TxSeismicElements { + encryption_pubkey: encryption_pk, + encryption_nonce, + message_version: 0, + recent_block_hash: B256::ZERO, + expires_at_block: u64::MAX, + signed_read, + } } pub fn get_encryption_private_key() -> SecretKey { @@ -88,16 +96,26 @@ pub async fn get_unsigned_seismic_tx_request( to: TxKind, chain_id: u64, plaintext: Bytes, + signed_read: bool, ) -> TransactionRequest { - let encrypted_input = get_seismic_elements() - .client_encrypt(&plaintext, &pk, &get_encryption_private_key()) + let sender = signer.address(); + let seismic_elements = get_seismic_elements(signed_read); + let value = U256::from(0); + + // Create metadata for encryption + let legacy_fields = TxLegacyFields { chain_id, nonce, to, value }; + let metadata = + TxSeismicMetadata { sender, legacy_fields, seismic_elements: seismic_elements.clone() }; + + let encrypted_input = seismic_elements + .client_encrypt(&plaintext, &pk, &get_encryption_private_key(), &metadata) .unwrap(); TransactionRequest { inner: AlloyTransactionRequest { - from: Some(signer.address()), + from: Some(sender), nonce: Some(nonce), - value: Some(U256::from(0)), + value: Some(value), to: Some(to), gas: Some(6000000), gas_price: Some(20e9 as u128), @@ -106,7 +124,7 @@ pub async fn get_unsigned_seismic_tx_request( transaction_type: Some(TxSeismic::TX_TYPE), ..Default::default() }, - seismic_elements: Some(get_seismic_elements()), + seismic_elements: Some(seismic_elements), } } @@ -123,9 +141,40 @@ pub async fn get_signed_seismic_tx_typed_data( to: TxKind, chain_id: u64, plaintext: Bytes, + signed_read: bool, ) -> TypedDataRequest { - let mut tx = get_unsigned_seismic_tx_request(signer, pk, nonce, to, chain_id, plaintext).await; - tx.seismic_elements = Some(tx.seismic_elements.unwrap().with_message_version(2)); + let sender = signer.address(); + let mut seismic_elements = get_seismic_elements(signed_read); + seismic_elements = seismic_elements.with_message_version(2); + + let gas_limit = 6000000; + let gas_price = 20e9 as u128; + let value = U256::from(0); + + // Create metadata for encryption with correct message_version + let legacy_fields = TxLegacyFields { chain_id, nonce, to, value }; + let metadata = + TxSeismicMetadata { sender, legacy_fields, seismic_elements: seismic_elements.clone() }; + + let encrypted_input = seismic_elements + .client_encrypt(&plaintext, &pk, &get_encryption_private_key(), &metadata) + .unwrap(); + + let tx = TransactionRequest { + inner: AlloyTransactionRequest { + from: Some(sender), + nonce: Some(nonce), + value: Some(value), + to: Some(to), + gas: Some(gas_limit), + gas_price: Some(gas_price), + chain_id: Some(chain_id), + input: TransactionInput { input: Some(Bytes::from(encrypted_input)), data: None }, + transaction_type: Some(TxSeismic::TX_TYPE), + ..Default::default() + }, + seismic_elements: Some(seismic_elements), + }; let signed = sign_tx(signer.clone(), tx).await; @@ -149,7 +198,9 @@ async fn test_seismic_transaction_rpc() { let provider = SeismicSignedProvider::new( EthereumWallet::new(signer.clone()), reqwest::Url::parse(handle.http_endpoint().as_str()).unwrap(), - ); + ) + .await + .unwrap(); let url = handle.http_endpoint().as_str().parse().unwrap(); let unsigned_provider = SeismicUnsignedProvider::::new_http(url); let deployer = handle.dev_accounts().next().unwrap(); @@ -175,18 +226,15 @@ async fn test_seismic_transaction_rpc() { let code = provider.get_code_at(contract_address).await.unwrap(); assert_eq!(code, test_utils::ContractTestContext::get_code()); + let mut call_req = tx_builder() + .with_from(deployer) + .with_kind(TxKind::Create) + .with_input(plaintext_bytecode.clone()) + .into(); + call_req.transaction_type = Some(TxEip1559::tx_type().into()); + println!("Call req: {:?}", call_req); // send a call bytes - let res = provider - .seismic_call(SendableTx::Builder( - tx_builder() - .with_from(deployer) - .with_kind(TxKind::Create) - .with_input(plaintext_bytecode.clone()) - .into() - .into(), - )) - .await - .unwrap(); + let res = provider.seismic_call(SendableTx::Builder(call_req.into())).await.unwrap(); assert_eq!(res, test_utils::ContractTestContext::get_code()); // send a unsigned call @@ -212,6 +260,7 @@ async fn test_seismic_transaction_rpc() { TxKind::Create, provider.get_chain_id().await.unwrap(), plaintext_bytecode.clone(), + false, ) .await, ) @@ -234,6 +283,7 @@ async fn test_seismic_transaction_rpc() { TxKind::Create, provider.get_chain_id().await.unwrap(), plaintext_bytecode.clone(), + true, ) .await, ), @@ -243,8 +293,19 @@ async fn test_seismic_transaction_rpc() { .await .unwrap(); - let decrypted = get_seismic_elements() - .client_decrypt(&res, &network_pubkey, &get_encryption_private_key()) + // Create metadata for decryption (matching the encrypted call with message_version: 2) + let seismic_elements = get_seismic_elements(true).with_message_version(2); + let nonce = provider.get_transaction_count(deployer).await.unwrap(); + let chain_id = provider.get_chain_id().await.unwrap(); + let legacy_fields = TxLegacyFields { chain_id, nonce, to: TxKind::Create, value: U256::ZERO }; + let metadata = TxSeismicMetadata { + sender: deployer, + legacy_fields, + seismic_elements: seismic_elements.clone(), + }; + + let decrypted = seismic_elements + .client_decrypt(&res, &network_pubkey, &get_encryption_private_key(), &metadata) .unwrap(); assert_eq!(Bytes::from(decrypted), test_utils::ContractTestContext::get_code()); @@ -261,6 +322,7 @@ async fn test_seismic_transaction_rpc() { TxKind::Create, chain_id, plaintext_bytecode.clone(), + true, ) .await, ), @@ -283,7 +345,9 @@ async fn test_seismic_precompiles_end_to_end() { let provider = SeismicSignedProvider::new( wallet, reqwest::Url::parse(handle.http_endpoint().as_str()).unwrap(), - ); + ) + .await + .unwrap(); let deployer = handle.dev_accounts().next().unwrap(); // 1. Deploy test contract @@ -381,38 +445,16 @@ async fn test_seismic_precompiles_end_to_end() { let ciphertext = Bytes::from(decoded.body[0].abi_encode_packed()); let call = Encryption::decryptCall { nonce, ciphertext: ciphertext.clone() }; - let unencrypted_decrypt_call = call.abi_encode(); + let unencrypted_decrypt_call = Bytes::from(call.abi_encode()); - let mut tx_req = tx_builder() + // Create a seismic read call - provider will handle seismic_elements and metadata + let tx_req = tx_builder() .with_from(from) .with_to(contract_addr) .with_input(unencrypted_decrypt_call) - .into(); - tx_req.inner.transaction_type = Some(TxSeismic::TX_TYPE); - /* - // TODO: seismic call with Builder does not work - let mut tx_req = tx_builder() - .with_from(from) - .with_to(contract_addr) - .with_input(unencrypted_decrypt_call) - .into(); - tx_req.inner.transaction_type = Some(TxSeismic::TX_TYPE); - tx_req.seismic_elements = Some(TxSeismicElements::default()); - - let signed_tx = provider.sign_transaction(tx_req.into()).await.unwrap(); - let mut buf: &[u8] = signed_tx.iter().as_slice(); - let envelope = AnyTxEnvelope::decode_2718(&mut buf).unwrap(); - - // Perform the read call with encryption - let output = provider - .seismic_call(SendableTx::Envelope(envelope)) - .await - .unwrap(); - - */ + .into() + .seismic(); - // Perform the read call with encryption - // TODO: seismic call with Builder does not work let output = provider.seismic_call(SendableTx::Builder(tx_req.into())).await.unwrap(); // diff --git a/crates/cast/src/cmd/artifact.rs b/crates/cast/src/cmd/artifact.rs index 59c4dd7f9..61c91df3b 100644 --- a/crates/cast/src/cmd/artifact.rs +++ b/crates/cast/src/cmd/artifact.rs @@ -4,7 +4,7 @@ use super::{ }; use alloy_primitives::Address; use alloy_provider::Provider; -use clap::{Parser, command}; +use clap::Parser; use eyre::Result; use foundry_cli::{ opts::{EtherscanOpts, RpcOpts}, diff --git a/crates/cast/src/cmd/call.rs b/crates/cast/src/cmd/call.rs index 7046d210a..4bfc9f185 100644 --- a/crates/cast/src/cmd/call.rs +++ b/crates/cast/src/cmd/call.rs @@ -40,7 +40,9 @@ use std::{str::FromStr, sync::LazyLock}; use alloy_primitives::aliases::U96; use rand::RngCore; use secp256k1::{PublicKey, Secp256k1, SecretKey}; -use seismic_prelude::foundry::{EthereumWallet, SeismicProviderExt, TxSeismicElements}; +use seismic_prelude::foundry::{ + EthereumWallet, SeismicProviderExt, TxLegacyFields, TxSeismicElements, TxSeismicMetadata, +}; // matches override pattern
:: // e.g. 0x123:0x1:0x1234 @@ -70,7 +72,14 @@ fn create_seismic_elements(encryption_sk: &SecretKey) -> TxSeismicElements { let encryption_pk = PublicKey::from_secret_key(&secp, encryption_sk); // randomly generate a nonce let encryption_nonce = U96::random(); - TxSeismicElements { encryption_pubkey: encryption_pk, encryption_nonce, message_version: 0 } + TxSeismicElements { + encryption_pubkey: encryption_pk, + encryption_nonce, + message_version: 0, + recent_block_hash: B256::ZERO, + expires_at_block: u64::MAX, + signed_read: true, + } } /// CLI arguments for `cast call`. @@ -403,9 +412,22 @@ impl CallArgs { // Get the original transaction input data let original_input = tx.inner.input.input().unwrap_or_default().clone(); + // Create metadata for encryption + let legacy_fields = TxLegacyFields { + chain_id: tx.chain_id.unwrap_or_default(), + nonce: tx.nonce.unwrap_or_default(), + to: tx.to.unwrap_or_default(), + value: tx.value.unwrap_or_default(), + }; + let metadata = TxSeismicMetadata { + sender: from, + legacy_fields, + seismic_elements: seismic_elements.clone(), + }; + // Encrypt the input data let encrypted_input = seismic_elements - .client_encrypt(&original_input, &network_pubkey, &encryption_sk) + .client_encrypt(&original_input, &network_pubkey, &encryption_sk, &metadata) .map_err(|e| eyre::eyre!("Failed to encrypt input data: {}", e))?; // Create encrypted transaction @@ -436,7 +458,7 @@ impl CallArgs { // Decrypt the response (seismic_call should return Bytes directly, no need to decode hex) let decrypted_response = seismic_elements - .client_decrypt(&encrypted_response, &network_pubkey, &encryption_sk) + .client_decrypt(&encrypted_response, &network_pubkey, &encryption_sk, &metadata) .map_err(|e| eyre::eyre!("Failed to decrypt response: {}", e))?; let response = alloy_primitives::hex::encode_prefixed(&decrypted_response); diff --git a/crates/cast/src/cmd/constructor_args.rs b/crates/cast/src/cmd/constructor_args.rs index 32b2d26f3..bd3ce1bb3 100644 --- a/crates/cast/src/cmd/constructor_args.rs +++ b/crates/cast/src/cmd/constructor_args.rs @@ -2,7 +2,7 @@ use super::{creation_code::fetch_creation_code_from_etherscan, interface::load_a use alloy_dyn_abi::DynSolType; use alloy_primitives::{Address, Bytes}; use alloy_provider::Provider; -use clap::{Parser, command}; +use clap::Parser; use eyre::{OptionExt, Result, eyre}; use foundry_cli::{ opts::{EtherscanOpts, RpcOpts}, diff --git a/crates/cast/src/cmd/creation_code.rs b/crates/cast/src/cmd/creation_code.rs index 7c5ab48db..fa0edf7db 100644 --- a/crates/cast/src/cmd/creation_code.rs +++ b/crates/cast/src/cmd/creation_code.rs @@ -4,7 +4,7 @@ use alloy_consensus::Transaction; use alloy_primitives::{Address, Bytes}; use alloy_provider::{Provider, ext::TraceApi}; use alloy_rpc_types::trace::parity::{Action, CreateAction, CreateOutput, TraceOutput}; -use clap::{Parser, command}; +use clap::Parser; use eyre::{OptionExt, Result, eyre}; use foundry_block_explorers::Client; use foundry_cli::{ diff --git a/crates/cast/src/cmd/send.rs b/crates/cast/src/cmd/send.rs index 9bac6dc2e..c607a3e6e 100644 --- a/crates/cast/src/cmd/send.rs +++ b/crates/cast/src/cmd/send.rs @@ -16,11 +16,12 @@ use foundry_cli::{ use std::{path::PathBuf, str::FromStr}; // Seismic imports for encryption/decryption -use alloy_primitives::{Bytes, aliases::U96}; +use alloy_primitives::{B256, Bytes, aliases::U96}; use rand::RngCore; use secp256k1::{PublicKey, Secp256k1, SecretKey}; use seismic_prelude::foundry::{ - AnyNetwork, EthereumWallet, SeismicProviderExt, TransactionRequest, TxSeismicElements, + AnyNetwork, EthereumWallet, SeismicProviderExt, TransactionRequest, TxLegacyFields, + TxSeismicElements, TxSeismicMetadata, }; /// Helper function to create seismic elements from private key @@ -29,7 +30,14 @@ fn create_seismic_elements(encryption_sk: &SecretKey) -> TxSeismicElements { let encryption_pk = PublicKey::from_secret_key(&secp, encryption_sk); // randomly generate a nonce let encryption_nonce = U96::random(); - TxSeismicElements { encryption_pubkey: encryption_pk, encryption_nonce, message_version: 0 } + TxSeismicElements { + encryption_pubkey: encryption_pk, + encryption_nonce, + message_version: 0, + recent_block_hash: B256::ZERO, + expires_at_block: u64::MAX, + signed_read: false, + } } /// Helper function to get or generate encryption private key @@ -205,9 +213,22 @@ impl SendTxArgs { // Get the original transaction input data let original_input = tx.inner.input.input().unwrap_or_default().clone(); + // Create metadata for encryption + let legacy_fields = TxLegacyFields { + chain_id: tx.chain_id.unwrap_or_default(), + nonce: tx.nonce.unwrap_or_default(), + to: tx.to.unwrap_or_default(), + value: tx.value.unwrap_or_default(), + }; + let metadata = TxSeismicMetadata { + sender: from, + legacy_fields, + seismic_elements: seismic_elements.clone(), + }; + // Encrypt the input data let encrypted_input = seismic_elements - .client_encrypt(&original_input, &network_pubkey, &encryption_sk) + .client_encrypt(&original_input, &network_pubkey, &encryption_sk, &metadata) .map_err(|e| eyre::eyre!("Failed to encrypt input data: {}", e))?; // Create encrypted transaction diff --git a/crates/forge/tests/cli/script.rs b/crates/forge/tests/cli/script.rs index 2a90c38f4..86bcb8500 100644 --- a/crates/forge/tests/cli/script.rs +++ b/crates/forge/tests/cli/script.rs @@ -3183,7 +3183,9 @@ async fn deploy_contract_with_private_storage(handle: &anvil::NodeHandle) -> (Ad let provider = SeismicSignedProvider::new( EthereumWallet::new(signer.clone()), reqwest::Url::parse(handle.http_endpoint().as_str()).unwrap(), - ); + ) + .await + .unwrap(); let deployer = handle.dev_accounts().next().unwrap(); let plaintext_bytecode = test_utils::ContractTestContext::get_deploy_input_plaintext(); diff --git a/package.json b/package.json index 36adcbd0b..690991b2c 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "forge:test": "bun run --cwd packages/sforge-tests test" }, "dependencies": { - "seismic-viem": "^1.0.44", - "seismic-viem-tests": "^0.0.15" + "seismic-viem": "^1.1.0", + "seismic-viem-tests": "^0.1.1" } } diff --git a/packages/client-tests/package.json b/packages/client-tests/package.json index 84bdde09b..54b746b84 100644 --- a/packages/client-tests/package.json +++ b/packages/client-tests/package.json @@ -14,7 +14,7 @@ }, "dependencies": { "viem": "2.x", - "seismic-viem": "latest", - "seismic-viem-tests": "latest" + "seismic-viem": "^1.1.0", + "seismic-viem-tests": "^0.1.1" } } diff --git a/packages/sforge-tests/package.json b/packages/sforge-tests/package.json index 654cc00e0..3e5f90bf3 100644 --- a/packages/sforge-tests/package.json +++ b/packages/sforge-tests/package.json @@ -13,6 +13,6 @@ "typescript": "^5" }, "dependencies": { - "seismic-viem-tests": "^0.0.15" + "seismic-viem-tests": "^0.1.1" } } From b873b1f4d2d5c3eb19838ccb70054a9ed0218715 Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Wed, 14 Jan 2026 12:37:11 -0500 Subject: [PATCH 109/130] sforge: only allow local versions of ssolc (#149) --- crates/config/src/lib.rs | 23 +++++++---------------- packages/sforge-tests/sforge.test.ts | 5 +++++ 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/crates/config/src/lib.rs b/crates/config/src/lib.rs index 72d57e4a5..960335e0d 100644 --- a/crates/config/src/lib.rs +++ b/crates/config/src/lib.rs @@ -1126,7 +1126,7 @@ impl Config { }; if !default_solc_path.is_file() { return Err(SolcError::msg(format!( - "`ssolc` {} does not exist", + "`ssolc` {} does not exist.\nInstructions to install:\nhttps://docs.seismic.systems/getting-started/publish-your-docs#install-the-local-development-suite", default_solc_path.display() ))); } @@ -1143,20 +1143,11 @@ impl Config { if self.seismic { if let Some(ref solc_req) = self.solc { match solc_req { - SolcReq::Version(version) => { - if version.to_string() == "0.8.31" { - let default_solc_path = self.get_default_ssolc_path()?; - return Ok(Some(Solc::new(default_solc_path)?)); - } else { - if let Some(solc) = Solc::find_svm_installed_version(version)? { - return Ok(Some(solc)); - } else if self.offline { - return Err(SolcError::msg(format!( - "can't install missing solc {version} in offline mode" - ))); - } - return Ok(Some(Solc::blocking_install(version)?)); - } + SolcReq::Version(_) => { + // Only allow the version they have downloaded + // TODO: support using different versions + let default_solc_path = self.get_default_ssolc_path()?; + return Ok(Some(Solc::new(default_solc_path)?)); } SolcReq::Local(local_solc_path) => { if !local_solc_path.is_file() { @@ -2407,7 +2398,7 @@ impl Default for Config { gas_reports: vec!["*".to_string()], gas_reports_ignore: vec![], gas_reports_include_tests: false, - solc: Some(SolcReq::Version(Version::parse("0.8.28").unwrap())), + solc: Some(SolcReq::Version(Version::parse("0.8.30").unwrap())), vyper: Default::default(), auto_detect_solc: true, offline: false, diff --git a/packages/sforge-tests/sforge.test.ts b/packages/sforge-tests/sforge.test.ts index 292aef926..78babddda 100644 --- a/packages/sforge-tests/sforge.test.ts +++ b/packages/sforge-tests/sforge.test.ts @@ -86,6 +86,11 @@ const ensureRepoExists = async (repo: Repo): Promise => { const repoLocation = getRepoLocation(repo) const repoExists = await fs.exists(repoLocation) if (repoExists) { + await spawn("git", { + args: ["pull"], + cwd: repoLocation, + stdio: ["inherit", "pipe", "pipe"], + }) return true } if (!repo.clone) { From 5dd3219c24cbbf914359b449ab8359295c3a25e1 Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Wed, 14 Jan 2026 19:03:56 -0500 Subject: [PATCH 110/130] sforge test: force unsafe private storage access (#153) --- Cargo.lock | 28 ++++++++++++++-------------- Cargo.toml | 12 ++++++------ crates/evm/core/src/backend/mod.rs | 5 +++++ crates/forge/src/multi_runner.rs | 4 +++- 4 files changed, 28 insertions(+), 21 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index dfbe5d0d0..d767908ce 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7481,7 +7481,7 @@ checksum = "a79f352fc3893dcd670172e615afef993a41798a1d3fc0db88a3e60ef2e70ecc" [[package]] name = "op-revm" version = "10.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0#77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=ed81a1d6a89a8ffbf816d52715a3260b040c98bb#ed81a1d6a89a8ffbf816d52715a3260b040c98bb" dependencies = [ "auto_impl", "revm", @@ -8646,7 +8646,7 @@ dependencies = [ [[package]] name = "revm" version = "29.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0#77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=ed81a1d6a89a8ffbf816d52715a3260b040c98bb#ed81a1d6a89a8ffbf816d52715a3260b040c98bb" dependencies = [ "revm-bytecode", "revm-context", @@ -8664,7 +8664,7 @@ dependencies = [ [[package]] name = "revm-bytecode" version = "6.2.2" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0#77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=ed81a1d6a89a8ffbf816d52715a3260b040c98bb#ed81a1d6a89a8ffbf816d52715a3260b040c98bb" dependencies = [ "bitvec", "phf 0.13.1", @@ -8675,7 +8675,7 @@ dependencies = [ [[package]] name = "revm-context" version = "9.0.2" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0#77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=ed81a1d6a89a8ffbf816d52715a3260b040c98bb#ed81a1d6a89a8ffbf816d52715a3260b040c98bb" dependencies = [ "bitvec", "cfg-if", @@ -8691,7 +8691,7 @@ dependencies = [ [[package]] name = "revm-context-interface" version = "10.1.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0#77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=ed81a1d6a89a8ffbf816d52715a3260b040c98bb#ed81a1d6a89a8ffbf816d52715a3260b040c98bb" dependencies = [ "alloy-eip2930", "alloy-eip7702", @@ -8706,7 +8706,7 @@ dependencies = [ [[package]] name = "revm-database" version = "7.0.5" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0#77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=ed81a1d6a89a8ffbf816d52715a3260b040c98bb#ed81a1d6a89a8ffbf816d52715a3260b040c98bb" dependencies = [ "alloy-eips", "revm-bytecode", @@ -8719,7 +8719,7 @@ dependencies = [ [[package]] name = "revm-database-interface" version = "7.0.5" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0#77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=ed81a1d6a89a8ffbf816d52715a3260b040c98bb#ed81a1d6a89a8ffbf816d52715a3260b040c98bb" dependencies = [ "auto_impl", "either", @@ -8731,7 +8731,7 @@ dependencies = [ [[package]] name = "revm-handler" version = "10.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0#77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=ed81a1d6a89a8ffbf816d52715a3260b040c98bb#ed81a1d6a89a8ffbf816d52715a3260b040c98bb" dependencies = [ "auto_impl", "derive-where", @@ -8749,7 +8749,7 @@ dependencies = [ [[package]] name = "revm-inspector" version = "10.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0#77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=ed81a1d6a89a8ffbf816d52715a3260b040c98bb#ed81a1d6a89a8ffbf816d52715a3260b040c98bb" dependencies = [ "auto_impl", "either", @@ -8785,7 +8785,7 @@ dependencies = [ [[package]] name = "revm-interpreter" version = "25.0.2" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0#77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=ed81a1d6a89a8ffbf816d52715a3260b040c98bb#ed81a1d6a89a8ffbf816d52715a3260b040c98bb" dependencies = [ "revm-bytecode", "revm-context-interface", @@ -8797,7 +8797,7 @@ dependencies = [ [[package]] name = "revm-precompile" version = "27.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0#77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=ed81a1d6a89a8ffbf816d52715a3260b040c98bb#ed81a1d6a89a8ffbf816d52715a3260b040c98bb" dependencies = [ "ark-bls12-381", "ark-bn254", @@ -8821,7 +8821,7 @@ dependencies = [ [[package]] name = "revm-primitives" version = "20.2.1" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0#77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=ed81a1d6a89a8ffbf816d52715a3260b040c98bb#ed81a1d6a89a8ffbf816d52715a3260b040c98bb" dependencies = [ "alloy-primitives", "num_enum", @@ -8832,7 +8832,7 @@ dependencies = [ [[package]] name = "revm-state" version = "7.0.5" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0#77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=ed81a1d6a89a8ffbf816d52715a3260b040c98bb#ed81a1d6a89a8ffbf816d52715a3260b040c98bb" dependencies = [ "bitflags 2.10.0", "revm-bytecode", @@ -9546,7 +9546,7 @@ dependencies = [ [[package]] name = "seismic-revm" version = "1.0.0" -source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0#77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" +source = "git+https://github.com/SeismicSystems/seismic-revm.git?rev=ed81a1d6a89a8ffbf816d52715a3260b040c98bb#ed81a1d6a89a8ffbf816d52715a3260b040c98bb" dependencies = [ "auto_impl", "hkdf", diff --git a/Cargo.toml b/Cargo.toml index c28c50df2..7ca94194d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -390,12 +390,12 @@ alloy-sol-type-parser = { git = "https://github.com/SeismicSystems/seismic-alloy alloy-trie = { git = "https://github.com/SeismicSystems/seismic-trie.git", rev = "d8425918ced1d62043c3a64b382d6fa1d8c25518" } # seismic-revm -revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" } -revm-context-interface = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" } -revm-interpreter = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" } -revm-primitives = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" } -op-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" } -seismic-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "77c9d92b0032e8e6abf2d5106b0a4ea06688cbf0" } +revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "ed81a1d6a89a8ffbf816d52715a3260b040c98bb" } +revm-context-interface = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "ed81a1d6a89a8ffbf816d52715a3260b040c98bb" } +revm-interpreter = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "ed81a1d6a89a8ffbf816d52715a3260b040c98bb" } +revm-primitives = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "ed81a1d6a89a8ffbf816d52715a3260b040c98bb" } +op-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "ed81a1d6a89a8ffbf816d52715a3260b040c98bb" } +seismic-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "ed81a1d6a89a8ffbf816d52715a3260b040c98bb" } revm-inspectors = { git = "https://github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "9e26c0a55f522ad7d8cf4716d9df9d79b8116d52" } diff --git a/crates/evm/core/src/backend/mod.rs b/crates/evm/core/src/backend/mod.rs index 4a9c2f290..d30325e18 100644 --- a/crates/evm/core/src/backend/mod.rs +++ b/crates/evm/core/src/backend/mod.rs @@ -478,6 +478,11 @@ impl Backend { Self::new(MultiFork::spawn(), fork) } + /// Sets whether to allow accessing private storage slots. + pub fn set_unsafe_private_storage(&mut self, allow: bool) { + self.unsafe_private_storage = allow; + } + /// Creates a new instance of `Backend` /// /// If `fork` is `Some` this will use a `fork` database, otherwise with an in-memory diff --git a/crates/forge/src/multi_runner.rs b/crates/forge/src/multi_runner.rs index 5f6545451..ef8a106a1 100644 --- a/crates/forge/src/multi_runner.rs +++ b/crates/forge/src/multi_runner.rs @@ -178,7 +178,9 @@ impl MultiContractRunner { trace!("running all tests"); // The DB backend that serves all the data. - let db = Backend::spawn(self.fork.take())?; + let mut db = Backend::spawn(self.fork.take())?; + // For tests, always allow private storage access + db.set_unsafe_private_storage(true); let find_timer = Instant::now(); let contracts = self.matching_contracts(filter).collect::>(); From a61c79fdf52c706635825ec6a805176a6cc08892 Mon Sep 17 00:00:00 2001 From: Samuel Laferriere <9342524+samlaf@users.noreply.github.com> Date: Fri, 6 Feb 2026 14:21:32 -0500 Subject: [PATCH 111/130] chore: foundryup installs scast again (#154) foundryup was not installing scast for some reason. Also updated README with scast info and some small updates. --- README.md | 23 ++++++++++++++++------- sfoundryup/sfoundryup | 2 +- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 7e0549c61..2ff16328e 100644 --- a/README.md +++ b/README.md @@ -1,32 +1,41 @@ # seismic-foundry -Seismic Foundry is a fork of [Foundry](https://github.com/foundry-rs/foundry), customized to work with the Seismic blockchain. It provides a testing toolchain specifically designed for Seismic's [modified version](https://github.com/SeismicSystems/seismic-reth) of reth +Seismic Foundry is a fork of [Foundry](https://github.com/foundry-rs/foundry), customized to work with the Seismic blockchain. +It provides a testing toolchain specifically designed for Seismic's [modified version](https://github.com/SeismicSystems/seismic-reth) of Reth. ## Overview This repository contains modified versions of Foundry's core tools: - [`sforge`](https://github.com/SeismicSystems/seismic-foundry/tree/seismic/crates/forge): Seismic's version of `forge`, for testing Ethereum smart contracts - [`sanvil`](https://github.com/SeismicSystems/seismic-foundry/tree/seismic/crates/anvil): Seismic's version of `anvil`, for running local Ethereum test networks -> **NOTE:** seismic-foundry does not yet support foundry's `cast` or `chisel` +- [`scast`](https://github.com/SeismicSystems/seismic-foundry/tree/seismic/crates/cast): Seismic's version of `cast`, for interacting with Ethereum +> **NOTE:** seismic-foundry does not yet support foundry's or `chisel` -For details about Seismic's modifications to reth, please see: +For details about Seismic's modifications to Reth, please see: - seismic-reth's [README](https://github.com/SeismicSystems/seismic-reth/blob/seismic/README.md) - Seismic's [Features](https://github.com/SeismicSystems/seismic-reth/blob/seismic/seismic-features.md) ## Installation +In most cases you should install foundry tools via [sfoundryup](https://docs.seismic.systems/getting-started/installation). +If you are modifying seismic-foundry or need to build from source, then you can install from source as described below. + ### Seismic Forge To build `sforge` from source, run this from the root of this repository: ```sh -git checkout seismic -cargo install --root=$HOME/.seismic --profile dev --path ./crates/forge --locked +cargo install --root=$HOME/.seismic --path ./crates/forge --locked ``` ### Seismic Anvil To build `sanvil` from source, run this from the root of this repository: ```sh -git checkout seismic -cargo install --root=$HOME/.seismic --profile dev --path ./crates/anvil --locked +cargo install --root=$HOME/.seismic --path ./crates/anvil --locked +``` + +### Seismic Cast +To build `scast` from source, run this from the root of this repository: +```sh +cargo install --root=$HOME/.seismic --path ./crates/cast --locked ``` ## Acknowledgments diff --git a/sfoundryup/sfoundryup b/sfoundryup/sfoundryup index 9219c8241..2a27976bb 100755 --- a/sfoundryup/sfoundryup +++ b/sfoundryup/sfoundryup @@ -7,7 +7,7 @@ SEISMIC_BIN_DIR="$SEISMIC_DIR/bin" SEISMIC_MAN_DIR="$SEISMIC_DIR/share/man/man1" SEISMICUP_JOBS="" -BINS=(sanvil sforge) +BINS=(sanvil sforge scast) export RUSTFLAGS="${RUSTFLAGS:--C target-cpu=native}" From ae84c4da7de222e4a9ae8923f9d9f570f3682d6f Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Fri, 6 Feb 2026 16:38:34 -0500 Subject: [PATCH 112/130] chore(readme): fix typo in readme, saying we don't have seismic-chisel (#157) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2ff16328e..d6aaa6eaf 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ This repository contains modified versions of Foundry's core tools: - [`sforge`](https://github.com/SeismicSystems/seismic-foundry/tree/seismic/crates/forge): Seismic's version of `forge`, for testing Ethereum smart contracts - [`sanvil`](https://github.com/SeismicSystems/seismic-foundry/tree/seismic/crates/anvil): Seismic's version of `anvil`, for running local Ethereum test networks - [`scast`](https://github.com/SeismicSystems/seismic-foundry/tree/seismic/crates/cast): Seismic's version of `cast`, for interacting with Ethereum -> **NOTE:** seismic-foundry does not yet support foundry's or `chisel` +> **NOTE:** seismic-foundry does not yet support Foundry's `chisel` For details about Seismic's modifications to Reth, please see: - seismic-reth's [README](https://github.com/SeismicSystems/seismic-reth/blob/seismic/README.md) From 68a01f39eb658277c73c0b2da47d074569d672be Mon Sep 17 00:00:00 2001 From: Lyron Co Ting Keh Date: Tue, 10 Feb 2026 12:31:25 -0500 Subject: [PATCH 113/130] Add Directory and Intelligence contracts to sanvil genesis and sforge test init (#140) Co-authored-by: Christian Drappi Co-authored-by: Ameya Deshmukh --- crates/anvil/src/config.rs | 11 +++++++++++ crates/anvil/src/eth/backend/mem/mod.rs | 22 ++++++++++++++++++++++ crates/evm/core/src/lib.rs | 1 + crates/evm/core/src/seismic_constants.rs | 23 +++++++++++++++++++++++ crates/evm/evm/src/executors/mod.rs | 20 ++++++++++++++++++++ crates/evm/evm/src/lib.rs | 3 ++- crates/forge/src/runner.rs | 3 +++ 7 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 crates/evm/core/src/seismic_constants.rs diff --git a/crates/anvil/src/config.rs b/crates/anvil/src/config.rs index 2238144df..7291c23cb 100644 --- a/crates/anvil/src/config.rs +++ b/crates/anvil/src/config.rs @@ -39,6 +39,7 @@ use foundry_config::Config; use foundry_evm::{ backend::{BlockchainDb, BlockchainDbMeta, SharedBackend}, constants::DEFAULT_CREATE2_DEPLOYER, + seismic_constants::{AES_LIB, DIRECTORY, INTELLIGENCE}, utils::{apply_chain_and_block_specific_env_changes, get_blob_base_fee_update_fraction}, }; use foundry_evm_core::AsEnvMut; @@ -1196,6 +1197,16 @@ impl NodeConfig { ) .await?; + backend + .set_directory(AES_LIB, DIRECTORY) + .await + .wrap_err("failed to create Directory contract")?; + + backend + .set_intelligence(INTELLIGENCE) + .await + .wrap_err("failed to create Intelligence contract")?; + // Writes the default create2 deployer to the backend, // if the option is not disabled and we are not forking. if !self.disable_default_create2_deployer && self.eth_rpc_url.is_none() { diff --git a/crates/anvil/src/eth/backend/mem/mod.rs b/crates/anvil/src/eth/backend/mem/mod.rs index 14e99651d..c305baf43 100644 --- a/crates/anvil/src/eth/backend/mem/mod.rs +++ b/crates/anvil/src/eth/backend/mem/mod.rs @@ -95,6 +95,7 @@ use foundry_evm::{ constants::DEFAULT_CREATE2_DEPLOYER_RUNTIME_CODE, decode::RevertDecoder, inspectors::AccessListInspector, + seismic_constants::{AES_LIB_RUNTIME_CODE, DIRECTORY_RUNTIME_CODE, INTELLIGENCE_RUNTIME_CODE}, traces::{CallTraceDecoder, TracingInspectorConfig}, utils::{get_blob_base_fee_update_fraction, get_blob_base_fee_update_fraction_by_spec_id}, }; @@ -403,6 +404,27 @@ impl Backend { Ok(backend) } + /// Writes Directory code, and accompanying AES library, directly to the + /// database at the addresses provided. + pub async fn set_directory( + &self, + aes_address: Address, + directory_address: Address, + ) -> DatabaseResult<()> { + self.set_code(aes_address, Bytes::from_static(AES_LIB_RUNTIME_CODE)).await?; + self.set_code(directory_address, Bytes::from_static(DIRECTORY_RUNTIME_CODE)).await?; + + Ok(()) + } + + /// Writes Intelligence code directly to the database at the addresses + /// provided. + pub async fn set_intelligence(&self, intelligence_address: Address) -> DatabaseResult<()> { + self.set_code(intelligence_address, Bytes::from_static(INTELLIGENCE_RUNTIME_CODE)).await?; + + Ok(()) + } + /// Writes the CREATE2 deployer code directly to the database at the address provided. pub async fn set_create2_deployer(&self, address: Address) -> DatabaseResult<()> { self.set_code(address, Bytes::from_static(DEFAULT_CREATE2_DEPLOYER_RUNTIME_CODE)).await?; diff --git a/crates/evm/core/src/lib.rs b/crates/evm/core/src/lib.rs index 0c3ed97a5..b7370b960 100644 --- a/crates/evm/core/src/lib.rs +++ b/crates/evm/core/src/lib.rs @@ -41,6 +41,7 @@ pub mod fork; pub mod ic; pub mod opts; pub mod precompiles; +pub mod seismic_constants; pub mod state_snapshot; pub mod utils; diff --git a/crates/evm/core/src/seismic_constants.rs b/crates/evm/core/src/seismic_constants.rs new file mode 100644 index 000000000..bce041e9d --- /dev/null +++ b/crates/evm/core/src/seismic_constants.rs @@ -0,0 +1,23 @@ +use alloy_primitives::{Address, address, hex}; + +/// AES library used in Directory contract. +pub const AES_LIB: Address = address!("0x1000000000000000000000000000000000000003"); +/// Directory contract that manages symmetric keys for each address. +pub const DIRECTORY: Address = address!("0x1000000000000000000000000000000000000004"); +/// Intelligence contract for emitting events to blockchain intelligence +/// providers. +pub const INTELLIGENCE: Address = address!("0x1000000000000000000000000000000000000005"); + +/// Runtime code of AES library. +pub const AES_LIB_RUNTIME_CODE: &[u8] = &hex!( + "60806040526004361015610013575b61049a565b61001d5f3561006c565b8063415028a914610067578063727c346d14610062578063ad28a8161461005d578063baefa307146100585763e8d6c79a0361000e5761046e565b6103db565b61036d565b6102ff565b610245565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906100b090610088565b810190811067ffffffffffffffff8211176100ca57604052565b610092565b906100e26100db610072565b92836100a6565b565b67ffffffffffffffff8111610102576100fe602091610088565b0190565b610092565b90825f939282370152565b90929192610127610122826100e4565b6100cf565b938185526020850190828401116101435761014192610107565b565b610084565b9080601f830112156101665781602061016393359101610112565b90565b610080565b6bffffffffffffffffffffffff1690565b6101858161016b565b0361018c57565b5f80fd5b9050359061019d8261017c565b565b91906040838203126101df575f8301359067ffffffffffffffff82116101da576101ce816101d7938601610148565b93602001610190565b90565b61007c565b610078565b5190565b60209181520190565b90825f9392825e0152565b61021b61022460209361022993610212816101e4565b938480936101e8565b958691016101f1565b610088565b0190565b6102429160208201915f8184039101526101fc565b90565b61026d61025c61025636600461019f565b90610513565b610264610072565b9182918261022d565b0390f35b5f91031261027b57565b610078565b90565b60018060a01b031690565b90565b6102a56102a06102aa92610280565b61028e565b610283565b90565b6102b690610291565b90565b6102c360686102ad565b90565b6102ce6102b9565b90565b6102da90610283565b90565b6102e6906102d1565b9052565b91906102fd905f602085019401906102dd565b565b61030a366004610271565b6103266103156102c6565b61031d610072565b918291826102ea565b0390f35b90565b61034161033c6103469261032a565b61028e565b610283565b90565b6103529061032d565b90565b61035f6067610349565b90565b61036a610355565b90565b610378366004610271565b610394610383610362565b61038b610072565b918291826102ea565b0390f35b90565b6103af6103aa6103b492610398565b61028e565b610283565b90565b6103c09061039b565b90565b6103cd60666103b7565b90565b6103d86103c3565b90565b6103e6366004610271565b6104026103f16103d0565b6103f9610072565b918291826102ea565b0390f35b90602082820312610436575f82013567ffffffffffffffff81116104315761042e9201610148565b90565b61007c565b610078565b6104449061016b565b9052565b9291602061046461046c9360408701908782035f8901526101fc565b94019061043b565b565b61048161047c366004610406565b610739565b9061049661048d610072565b92839283610448565b0390f35b5f80fd5b606090565b905090565b6104cd6104c4926020926104bb816101e4565b948580936104a3565b938491016101f1565b0190565b60a01b90565b6104e0906104d1565b90565b6104ef6104f49161016b565b6104d7565b9052565b61050861050f91600c94936104a8565b80926104e3565b0190565b6105469061051f61049e565b5061053761052b610072565b938492602084016104f8565b602082018103825203826100a6565b90565b5f90565b90565b90565b61056761056261056c9261054d565b61028e565b610550565b90565b634e487b7160e01b5f52601160045260245ffd5b61059261059891939293610550565b92610550565b82039182116105a357565b61056f565b906105ba6105b5836100e4565b6100cf565b918252565b369037565b906105e96105d1836105a8565b926020806105df86936100e4565b92019103906105bf565b565b90565b6106026105fd610607926105eb565b61028e565b610550565b90565b60016106169101610550565b90565b634e487b7160e01b5f52603260045260245ffd5b90610637826101e4565b81101561064957600160209102010190565b610619565b60ff60f81b1690565b610661905161064e565b90565b61067361067991939293610550565b92610550565b820180921161068457565b61056f565b60200190565b6bffffffffffffffffffffffff60a01b1690565b6106ad905161068f565b90565b1b90565b6106ce6106c96106c3836101e4565b92610689565b6106a3565b90600c81106106dc575b5090565b6106fc906bffffffffffffffffffffffff60a01b90600c036008026106b0565b165f6106d8565b60a01c90565b61071d6107186107229261016b565b61028e565b61016b565b90565b61073161073691610703565b610709565b90565b9061074261049e565b5061074b610549565b50610768610758836101e4565b610762600c610553565b90610583565b610771816105c4565b9061077b5f6105ee565b5b8061078f61078984610550565b91610550565b10156107c6576107c1906107ac6107a787839061062d565b610657565b6107bb859183905f1a9261062d565b5361060a565b61077c565b50926107da6107d5600c610553565b6105c4565b916107e45f6105ee565b5b806107f96107f3600c610553565b91610550565b101561083a576108359061082061081b856108158a8590610664565b9061062d565b610657565b61082f869183905f1a9261062d565b5361060a565b6107e5565b5093505061084a61084f916106b4565b610725565b9056fea2646970667358221220f9203a71c0b6a6da16bf7b2698301c72ec306733882bb85b4d6d1038767c731464736f6c637829302e382e33312d646576656c6f702e323032352e31312e31322b636f6d6d69742e3637366264656363005a" +); +/// Runtime code of Directory contract. Includes AES_LIB as linked library +/// (need to update code if AES_LIB changes). +pub const DIRECTORY_RUNTIME_CODE: &[u8] = &hex!( + "60806040526004361015610013575b610694565b61001d5f356100ac565b8063210ca7be146100a7578063415028a9146100a257806370df09331461009d57806382678dd6146100985780638b2f9fd114610093578063affed0e01461008e578063b7f5f9b714610089578063e8d6c79a146100845763eefbaf180361000e5761065f565b610604565b6105a8565b61052e565b61048d565b6103d9565b610372565b6102f3565b610245565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906100f4906100cc565b810190811067ffffffffffffffff82111761010e57604052565b6100d6565b9061012661011f6100b2565b92836100ea565b565b67ffffffffffffffff8111610146576101426020916100cc565b0190565b6100d6565b90825f939282370152565b9092919261016b61016682610128565b610113565b93818552602085019082840111610187576101859261014b565b565b6100c8565b9080601f830112156101aa578160206101a793359101610156565b90565b6100c4565b906020828203126101df575f82013567ffffffffffffffff81116101da576101d7920161018c565b90565b6100c0565b6100bc565b5190565b60209181520190565b90825f9392825e0152565b61021b61022460209361022993610212816101e4565b938480936101e8565b958691016101f1565b6100cc565b0190565b6102429160208201915f8184039101526101fc565b90565b346102755761027161026061025b3660046101af565b610713565b6102686100b2565b9182918261022d565b0390f35b6100b8565b6bffffffffffffffffffffffff1690565b6102948161027a565b0361029b57565b5f80fd5b905035906102ac8261028b565b565b91906040838203126102ee575f8301359067ffffffffffffffff82116102e9576102dd816102e693860161018c565b9360200161029f565b90565b6100c0565b6100bc565b346103245761032061030f6103093660046102ae565b906107b7565b6103176100b2565b9182918261022d565b0390f35b6100b8565b90565b61033581610329565b0361033c57565b5f80fd5b9050359061034d8261032c565b565b9060208282031261036857610365915f01610340565b90565b6100bc565b5f0190565b346103a05761038a61038536600461034f565b610847565b6103926100b2565b8061039c8161036d565b0390f35b6100b8565b5f9103126103af57565b6100bc565b90565b6103c0906103b4565b9052565b91906103d7905f602085019401906103b7565b565b34610409576103e93660046103a5565b6104056103f46108be565b6103fc6100b2565b918291826103c4565b0390f35b6100b8565b60018060a01b031690565b6104229061040e565b90565b61042e81610419565b0361043557565b5f80fd5b9050359061044682610425565b565b906020828203126104615761045e915f01610439565b90565b6100bc565b151590565b61047490610466565b9052565b919061048b905f6020850194019061046b565b565b346104bd576104b96104a86104a3366004610448565b610908565b6104b06100b2565b91829182610478565b0390f35b6100b8565b1c90565b6bffffffffffffffffffffffff1690565b6104e79060086104ec93026104c2565b6104c6565b90565b906104fa91546104d7565b90565b61050960015f906104ef565b90565b6105159061027a565b9052565b919061052c905f6020850194019061050c565b565b3461055e5761053e3660046103a5565b61055a6105496104fd565b6105516100b2565b91829182610519565b0390f35b6100b8565b9190916040818403126105a35761057c835f8301610439565b92602082013567ffffffffffffffff811161059e5761059b920161018c565b90565b6100c0565b6100bc565b346105d9576105d56105c46105be366004610563565b906109fe565b6105cc6100b2565b9182918261022d565b0390f35b6100b8565b929160206105fa6106029360408701908782035f8901526101fc565b94019061050c565b565b346106355761061c6106173660046101af565b610c1b565b906106316106286100b2565b928392836105de565b0390f35b6100b8565b90565b6106469061063a565b9052565b919061065d905f6020850194019061063d565b565b3461068f5761068b61067a610675366004610448565b610d60565b6106826100b2565b9182918261064a565b0390f35b6100b8565b5f80fd5b606090565b90565b6106b46106af6106b99261040e565b61069d565b61040e565b90565b6106c5906106a0565b90565b6106d1906106bc565b90565b906106de906106c8565b5f5260205260405f2090565b5f1c90565b90565b6106fe610703916106ea565b6106ef565b90565b61071090b06106f2565b90565b61072861074491610722610698565b50610c1b565b9061073c6107375f33906106d4565b610706565b919091610e44565b90565b905090565b6107716107689260209261075f816101e4565b94858093610747565b938491016101f1565b0190565b60a01b90565b61078490610775565b90565b6107936107989161027a565b61077b565b9052565b6107ac6107b391600c949361074c565b8092610787565b0190565b6107ea906107c3610698565b506107db6107cf6100b2565b9384926020840161079c565b602082018103825203826100ea565b90565b5f1b90565b906107fe5f19916107ed565b9181191691161790565b61081c61081761082192610329565b61069d565b610329565b90565b90565b9061083c61083761084392610808565b610824565b82b06107f2565b90b1565b61085b906108565f33906106d4565b610827565b336108867fe09b54ab39b458cc6e350a9444815a294301d94eaa79ba68d8a2f9f9c7c0b4cc916106c8565b9061088f6100b2565b806108998161036d565b0390a2565b5f90565b6108b66108b16108bb92610329565b61069d565b6103b4565b90565b6108c661089e565b506108e26108dd6108d85f33906106d4565b610706565b6108a2565b90565b5f90565b90565b6109006108fb610905926108e9565b61069d565b610329565b90565b61091e610923916109176108e5565b505f6106d4565b610706565b61093d6109376109325f6108ec565b610329565b91610329565b141590565b61094e610953916106ea565b6104c6565b90565b6109609054610942565b90565b634e487b7160e01b5f52601160045260245ffd5b6109809061027a565b6bffffffffffffffffffffffff81146109995760010190565b610963565b906109b56bffffffffffffffffffffffff916107ed565b9181191691161790565b6109d36109ce6109d89261027a565b61069d565b61027a565b90565b90565b906109f36109ee6109fa926109bf565b6109db565b825461099e565b9055565b610a4291610a20610a1b610a3293610a14610698565b505f6106d4565b610706565b90610a2b6001610956565b9091610efd565b610a3c6001610956565b906107b7565b610a5e610a57610a526001610956565b610977565b60016109de565b90565b5f90565b90565b610a7c610a77610a8192610a65565b61069d565b6103b4565b90565b610a93610a99919392936103b4565b926103b4565b8203918211610aa457565b610963565b90610abb610ab683610128565b610113565b918252565b369037565b90610aea610ad283610aa9565b92602080610ae08693610128565b9201910390610ac0565b565b610b00610afb610b05926108e9565b61069d565b6103b4565b90565b6001610b1491016103b4565b90565b634e487b7160e01b5f52603260045260245ffd5b90610b35826101e4565b811015610b4757600160209102010190565b610b17565b60ff60f81b1690565b610b5f9051610b4c565b90565b610b71610b77919392936103b4565b926103b4565b8201809211610b8257565b610963565b60200190565b6bffffffffffffffffffffffff60a01b1690565b610bab9051610b8d565b90565b1b90565b610bcc610bc7610bc1836101e4565b92610b87565b610ba1565b90600c8110610bda575b5090565b610bfa906bffffffffffffffffffffffff60a01b90600c03600802610bae565b165f610bd6565b60a01c90565b610c13610c1891610c01565b6109bf565b90565b90610c24610698565b50610c2d610a61565b50610c4a610c3a836101e4565b610c44600c610a68565b90610a84565b610c5381610ac5565b90610c5d5f610aec565b5b80610c71610c6b846103b4565b916103b4565b1015610ca857610ca390610c8e610c89878390610b2b565b610b55565b610c9d859183905f1a92610b2b565b53610b08565b610c5e565b5092610cbc610cb7600c610a68565b610ac5565b91610cc65f610aec565b5b80610cdb610cd5600c610a68565b916103b4565b1015610d1c57610d1790610d02610cfd85610cf78a8590610b62565b90610b2b565b610b55565b610d11869183905f1a92610b2b565b53610b08565b610cc7565b50935050610d2c610d3191610bb2565b610c07565b90565b5f90565b90565b610d47610d4c91610329565b610d38565b9052565b610d5c81602093610d3b565b0190565b610da4610d81610d7c610d9593610d75610d34565b505f6106d4565b610706565b610d896100b2565b92839160208301610d50565b602082018103825203826100ea565b610db6610db0826101e4565b91610b87565b2090565b91610dd9602084610dd1610de09796600c96610d3b565b018092610787565b019061074c565b90565b90565b610dfa610df5610dff92610de3565b61069d565b61040e565b90565b610e0b90610de6565b90565b610e186067610e02565b90565b3d5f14610e3657610e2b3d610aa9565b903d5f602084013e5b565b610e3e610698565b90610e34565b91610e7e5f9392610e6f8594610e58610698565b509193610e636100b2565b94859360208501610dba565b602082018103825203826100ea565b610e86610e0e565b90602081019051915afa610ea2610e9b610e1b565b9115610466565b610ea95790565b5f63a99eec4b60e01b815280610ec16004820161036d565b0390fd5b90565b610edc610ed7610ee192610ec5565b61069d565b61040e565b90565b610eed90610ec8565b90565b610efa6066610ee4565b90565b91610f375f9392610f288594610f11610698565b509193610f1c6100b2565b94859360208501610dba565b602082018103825203826100ea565b610f3f610ef0565b90602081019051915afa610f5b610f54610e1b565b9115610466565b610f625790565b5f63a99eec4b60e01b815280610f7a6004820161036d565b0390fdfea2646970667358221220d49235db1fc2813aca0c2c613fb2406a25c06fae48bbc6f76adb97907c3ca3e164736f6c637829302e382e33312d646576656c6f702e323032352e31312e31322b636f6d6d69742e3637366264656363005a" +); +/// Runtime code of Intelligence contract. +pub const INTELLIGENCE_RUNTIME_CODE: &[u8] = &hex!( + "60806040526004361015610013575b610800565b61001d5f356100bc565b806346e2577a146100b75780634a8fcf9a146100b257806350f3fc81146100ad5780638a355a57146100a85780638da5cb5b146100a3578063a36250d81461009e578063ba1ab29114610099578063c41c2f2414610094578063ed03b3001461008f5763f2fde38b0361000e576107cd565b610798565b610741565b61067d565b610632565b6105da565b61058a565b610555565b61040f565b610131565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b60018060a01b031690565b6100e8906100d4565b90565b6100f4816100df565b036100fb57565b5f80fd5b9050359061010c826100eb565b565b9060208282031261012757610124915f016100ff565b90565b6100cc565b5f0190565b3461015f5761014961014436600461010e565b610b62565b6101516100c2565b8061015b8161012c565b0390f35b6100c8565b5f80fd5b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906101949061016c565b810190811067ffffffffffffffff8211176101ae57604052565b610176565b906101c66101bf6100c2565b928361018a565b565b67ffffffffffffffff81116101e6576101e260209161016c565b0190565b610176565b90825f939282370152565b9092919261020b610206826101c8565b6101b3565b9381855260208501908284011161022757610225926101eb565b565b610168565b9080601f8301121561024a57816020610247933591016101f6565b90565b610164565b9060208282031261027f575f82013567ffffffffffffffff811161027a57610277920161022c565b90565b6100d0565b6100cc565b5190565b60209181520190565b60200190565b90565b6102a390610297565b9052565b906102b48160209361029a565b0190565b60200190565b906102db6102d56102ce84610284565b8093610288565b92610291565b905f5b8181106102eb5750505090565b9091926103046102fe60019286516102a7565b946102b8565b91019190916102de565b5190565b60209181520190565b60200190565b5190565b60209181520190565b90825f9392825e0152565b6103586103616020936103669361034f81610321565b93848093610325565b9586910161032e565b61016c565b0190565b9061037491610339565b90565b60200190565b9061039161038a8361030e565b8092610312565b90816103a26020830284019461031b565b925f915b8383106103b557505050505090565b909192939460206103d76103d18385600195038752895161036a565b97610377565b93019301919392906103a6565b90916103fe61040c9360408401908482035f8601526102be565b91602081840391015261037d565b90565b346104405761042761042236600461024f565b610e18565b9061043c6104336100c2565b928392836103e4565b0390f35b6100c8565b90565b61045181610445565b0361045857565b5f80fd5b9050359061046982610448565b565b9060208282031261048457610481915f0161045c565b90565b6100cc565b634e487b7160e01b5f52603260045260245ffd5b5490565b5f5260205f2090565b6104b38161049d565b8210156104cd576104c56001916104a1565b910201905f90565b610489565b1c90565b60018060a01b031690565b6104f19060086104f693026104d2565b6104d6565b90565b9061050491546104e1565b90565b60016105128161049d565b82101561052f5761052c91610526916104aa565b906104f9565b90565b5f80fd5b61053c906100df565b9052565b9190610553905f60208501940190610533565b565b346105855761058161057061056b36600461046b565b610507565b6105786100c2565b91829182610540565b0390f35b6100c8565b346105b8576105a261059d36600461010e565b61123b565b6105aa6100c2565b806105b48161012c565b0390f35b6100c8565b5f9103126105c757565b6100cc565b6105d75f5f906104f9565b90565b3461060a576105ea3660046105bd565b6106066105f56105cc565b6105fd6100c2565b91829182610540565b0390f35b6100c8565b736346d64a3f31774283b72926b75ffda9662266ce90565b61062f61060f565b90565b34610662576106423660046105bd565b61065e61064d610627565b6106556100c2565b91829182610540565b0390f35b6100c8565b60046001609c1b0190565b61067a610667565b90565b346106ad5761068d3660046105bd565b6106a9610698610672565b6106a06100c2565b91829182610540565b0390f35b6100c8565b90565b6106c96106c46106ce926100d4565b6106b2565b6100d4565b90565b6106da906106b5565b90565b6106e6906106d1565b90565b6106f96106f4610667565b6106dd565b90565b6107046106e9565b90565b610710906106b5565b90565b61071c90610707565b90565b61072890610713565b9052565b919061073f905f6020850194019061071f565b565b34610771576107513660046105bd565b61076d61075c6106fc565b6107646100c2565b9182918261072c565b0390f35b6100c8565b61077f90610445565b9052565b9190610796905f60208501940190610776565b565b346107c8576107a83660046105bd565b6107c46107b361124a565b6107bb6100c2565b91829182610783565b0390f35b6100c8565b346107fb576107e56107e036600461010e565b61131a565b6107ed6100c2565b806107f78161012c565b0390f35b6100c8565b5f80fd5b60209181520190565b5f7f4455504c49434154455f50524f56494445520000000000000000000000000000910152565b6108416012602092610804565b61084a8161080d565b0190565b6108639060208101905f818303910152610834565b90565b1561086d57565b6108756100c2565b62461bcd60e51b81528061088b6004820161084e565b0390fd5b6108bd906108b861089f82611325565b6108b26108ac5f19610445565b91610445565b14610866565b6109e1565b565b5f1c90565b6108d06108d5916108bf565b6104d6565b90565b6108e290546108c4565b90565b90565b6108fc6108f7610901926108e5565b6106b2565b6100d4565b90565b61090d906108e8565b90565b5f1b90565b9061092660018060a01b0391610910565b9181191691161790565b61093990610707565b90565b90565b9061095461094f61095b92610930565b61093c565b8254610915565b9055565b5f7f554e415554484f52495a45440000000000000000000000000000000000000000910152565b610993600c602092610804565b61099c8161095f565b0190565b6109b59060208101905f818303910152610986565b90565b156109bf57565b6109c76100c2565b62461bcd60e51b8152806109dd600482016109a0565b0390fd5b610a37906109ee5f6108d8565b610a08610a026109fd5f610904565b6100df565b916100df565b14610a39575b610a3233610a2c610a26610a215f6108d8565b6100df565b916100df565b146109b8565b610b0c565b565b610a4a610a4461060f565b5f61093f565b610a0e565b90565b5f5260205f2090565b5490565b610a6881610a5b565b821015610a8257610a7a600191610a52565b910201905f90565b610489565b1b90565b91906008610aab910291610aa560018060a01b0384610a87565b92610a87565b9181191691161790565b9190610acb610ac6610ad393610930565b61093c565b908354610a8b565b9055565b9081549168010000000000000000831015610b075782610aff916001610b0595018155610a5f565b90610ab5565b565b610176565b610b20610b196001610a4f565b8290610ad7565b610b4a7fae9c2c6481964847714ce58f65a7f6dcc41d0d8394449bacdf161b5920c4744a91610930565b90610b536100c2565b80610b5d8161012c565b0390a2565b610b6b9061088f565b565b606090565b606090565b67ffffffffffffffff8111610b8f5760208091020190565b610176565b90610ba6610ba183610b77565b6101b3565b918252565b369037565b90610bd5610bbd83610b94565b92602080610bcb8693610b77565b9201910390610bab565b565b67ffffffffffffffff8111610bef5760208091020190565b610176565b90610c06610c0183610bd7565b6101b3565b918252565b606090565b5f5b828110610c1e57505050565b602090610c29610c0b565b8184015201610c12565b90610c58610c4083610bf4565b92602080610c4e8693610bd7565b9201910390610c10565b565b610c6e610c69610c73926108e5565b6106b2565b610445565b90565b6001610c829101610445565b90565b60e01b90565b610c9481610297565b03610c9b57565b5f80fd5b90505190610cac82610c8b565b565b90602082820312610cc757610cc4915f01610c9f565b90565b6100cc565b610cd46100c2565b3d5f823e3d90fd5b90610ce682610284565b811015610cf7576020809102010190565b610489565b90610d0690610297565b9052565b90929192610d1f610d1a826101c8565b6101b3565b93818552602085019082840111610d3b57610d399261032e565b565b610168565b9080601f83011215610d5e57816020610d5b93519101610d0a565b90565b610164565b90602082820312610d93575f82015167ffffffffffffffff8111610d8e57610d8b9201610d40565b90565b6100d0565b6100cc565b60209181520190565b610dc0610dc9602093610dce93610db781610321565b93848093610d98565b9586910161032e565b61016c565b0190565b91610df592610de860408201935f830190610533565b6020818403910152610da1565b90565b90610e028261030e565b811015610e13576020809102010190565b610489565b90610e21610b6d565b50610e2a610b72565b50610e3b610e3661124a565b610bb0565b91610e4c610e4761124a565b610c33565b92610e565f610c5a565b5b80610e71610e6b610e6661124a565b610445565b91610445565b1015610fdc57610eca6020610e8c610e876106e9565b610713565b63eefbaf1890610ebf610eaa610ea4600188906104aa565b906104f9565b92610eb36100c2565b95869485938493610c85565b835260048301610540565b03915afa8015610fd757610ef2915f91610fa9575b50610eed8491849092610cdc565b610cfc565b610f02610efd6106e9565b610713565b905f63b7f5f9b792610f1f610f19600185906104aa565b906104f9565b90610f3d838896610f48610f316100c2565b98899687958694610c85565b845260048401610dd2565b03925af1918215610fa457610f7d92610f76915f91610f82575b50878391610f708383610df8565b52610df8565b5150610c76565b610e57565b610f9e91503d805f833e610f96818361018a565b810190610d63565b5f610f62565b610ccc565b610fca915060203d8111610fd0575b610fc2818361018a565b810190610cae565b5f610edf565b503d610fb8565b610ccc565b5090509190565b61103990610ff05f6108d8565b61100a611004610fff5f610904565b6100df565b916100df565b1461103b575b6110343361102e6110286110235f6108d8565b6100df565b916100df565b146109b8565b61115d565b565b61104c61104661060f565b5f61093f565b611010565b5f7f50524f56494445525f4e4f545f464f554e440000000000000000000000000000910152565b6110856012602092610804565b61108e81611051565b0190565b6110a79060208101905f818303910152611078565b90565b90565b6110c16110bc6110c6926110aa565b6106b2565b610445565b90565b634e487b7160e01b5f52601160045260245ffd5b6110ec6110f291939293610445565b92610445565b82039182116110fd57565b6110c9565b634e487b7160e01b5f52603160045260245ffd5b5f90565b61112c91611126611116565b91610ab5565b565b61113781610a5b565b801561115857600190039061115561114f8383610a5f565b9061111a565b55565b611102565b61116681611325565b8061117a6111745f19610445565b91610445565b14611219576111c5906111bf6111b76111b160016111ab61119b600161049d565b6111a560016110ad565b906110dd565b906104aa565b906104f9565b9160016104aa565b90610ab5565b6111d76111d26001610a4f565b61112e565b6112017f1589f8555933761a3cff8aa925061be3b46e2dd43f621322ab611d300f62b1d991610930565b9061120a6100c2565b806112148161012c565b0390a2565b6112216100c2565b62461bcd60e51b81528061123760048201611092565b0390fd5b61124490610fe3565b565b5f90565b611252611246565b5061125d600161049d565b90565b6112b69061126d5f6108d8565b61128761128161127c5f610904565b6100df565b916100df565b146112b8575b6112b1336112ab6112a56112a05f6108d8565b6100df565b916100df565b146109b8565b6112ce565b565b6112c96112c361060f565b5f61093f565b61128d565b6112d8815f61093f565b6113027f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616391610930565b9061130b6100c2565b806113158161012c565b0390a2565b61132390611260565b565b61132d611246565b506113375f610c5a565b5b8061135261134c61134761124a565b610445565b91610445565b10156113975761136d611367600183906104aa565b906104f9565b61137f611379846100df565b916100df565b146113925761138d90610c76565b611338565b905090565b50505f199056fea264697066735822122075752650c1eb298fcdd8aac8ecf892932d7cab4774bade6597e821b82ac2e90764736f6c637829302e382e33312d646576656c6f702e323032352e31312e31322b636f6d6d69742e3637366264656363005a" +); diff --git a/crates/evm/evm/src/executors/mod.rs b/crates/evm/evm/src/executors/mod.rs index e9b33f701..7c347e164 100644 --- a/crates/evm/evm/src/executors/mod.rs +++ b/crates/evm/evm/src/executors/mod.rs @@ -27,6 +27,10 @@ use foundry_evm_core::{ DEFAULT_CREATE2_DEPLOYER_CODE, DEFAULT_CREATE2_DEPLOYER_DEPLOYER, }, decode::{RevertDecoder, SkipReason}, + seismic_constants::{ + AES_LIB, AES_LIB_RUNTIME_CODE, DIRECTORY, DIRECTORY_RUNTIME_CODE, INTELLIGENCE, + INTELLIGENCE_RUNTIME_CODE, + }, utils::StateChangeset, }; use foundry_evm_coverage::HitMaps; @@ -240,6 +244,22 @@ impl Executor { Ok(()) } + /// Creates the Directory contract, along with its AES lib dependency. + pub fn set_directory(&mut self) -> eyre::Result<()> { + self.set_code(AES_LIB, Bytecode::new_raw(Bytes::from_static(AES_LIB_RUNTIME_CODE)))?; + self.set_code(DIRECTORY, Bytecode::new_raw(Bytes::from_static(DIRECTORY_RUNTIME_CODE)))?; + Ok(()) + } + + /// Creates the Intelligence contract. + pub fn set_intelligence(&mut self) -> eyre::Result<()> { + self.set_code( + INTELLIGENCE, + Bytecode::new_raw(Bytes::from_static(INTELLIGENCE_RUNTIME_CODE)), + )?; + Ok(()) + } + /// Set the balance of an account. pub fn set_balance(&mut self, address: Address, amount: U256) -> BackendResult<()> { trace!(?address, ?amount, "setting account balance"); diff --git a/crates/evm/evm/src/lib.rs b/crates/evm/evm/src/lib.rs index bdca9d2ea..d9beed71f 100644 --- a/crates/evm/evm/src/lib.rs +++ b/crates/evm/evm/src/lib.rs @@ -12,7 +12,8 @@ pub mod executors; pub mod inspectors; pub use foundry_evm_core::{ - Env, EnvMut, EvmEnv, InspectorExt, backend, constants, decode, fork, opts, utils, + Env, EnvMut, EvmEnv, InspectorExt, backend, constants, decode, fork, opts, seismic_constants, + utils, }; pub use foundry_evm_coverage as coverage; pub use foundry_evm_fuzz as fuzz; diff --git a/crates/forge/src/runner.rs b/crates/forge/src/runner.rs index 14fbbf66e..10ff671e3 100644 --- a/crates/forge/src/runner.rs +++ b/crates/forge/src/runner.rs @@ -186,6 +186,9 @@ impl<'a> ContractRunner<'a> { self.executor.deploy_create2_deployer()?; + self.executor.set_directory()?; + self.executor.set_intelligence()?; + // Optionally call the `setUp` function if call_setup { trace!("calling setUp"); From a13150e9a29117aa72030f3335a152041ebee64b Mon Sep 17 00:00:00 2001 From: Samuel Laferriere <9342524+samlaf@users.noreply.github.com> Date: Tue, 10 Feb 2026 13:04:41 -0500 Subject: [PATCH 114/130] docs: update seismic specific docs (#158) delete outdated developers.md file, add new contributors.md file (modified from https://github.com/SeismicSystems/documentation/blob/main/foundry/documentation.md), and point README to it. --- README.md | 13 +++--- docs/seismic/contributors.md | 61 +++++++++++++++++++++++++++++ docs/seismic/developers.md | 76 ------------------------------------ 3 files changed, 67 insertions(+), 83 deletions(-) create mode 100644 docs/seismic/contributors.md delete mode 100644 docs/seismic/developers.md diff --git a/README.md b/README.md index d6aaa6eaf..273daa590 100644 --- a/README.md +++ b/README.md @@ -6,14 +6,13 @@ It provides a testing toolchain specifically designed for Seismic's [modified ve ## Overview This repository contains modified versions of Foundry's core tools: -- [`sforge`](https://github.com/SeismicSystems/seismic-foundry/tree/seismic/crates/forge): Seismic's version of `forge`, for testing Ethereum smart contracts -- [`sanvil`](https://github.com/SeismicSystems/seismic-foundry/tree/seismic/crates/anvil): Seismic's version of `anvil`, for running local Ethereum test networks -- [`scast`](https://github.com/SeismicSystems/seismic-foundry/tree/seismic/crates/cast): Seismic's version of `cast`, for interacting with Ethereum -> **NOTE:** seismic-foundry does not yet support Foundry's `chisel` +- [`sforge`](https://github.com/SeismicSystems/seismic-foundry/tree/seismic/crates/forge): Seismic's version of `forge`, for testing Seismic/Ethereum smart contracts +- [`sanvil`](https://github.com/SeismicSystems/seismic-foundry/tree/seismic/crates/anvil): Seismic's version of `anvil`, for running local Seismic/Ethereum test networks +- [`scast`](https://github.com/SeismicSystems/seismic-foundry/tree/seismic/crates/cast): Seismic's version of `cast`, for interacting with Seismic/Ethereum networks + +For more info on our Seismic-specific changes (shielded transactions, private storage, SEVM, `ssolc` compiler), see the [contributors](docs/seismic/contributors.md) docs. -For details about Seismic's modifications to Reth, please see: -- seismic-reth's [README](https://github.com/SeismicSystems/seismic-reth/blob/seismic/README.md) -- Seismic's [Features](https://github.com/SeismicSystems/seismic-reth/blob/seismic/seismic-features.md) +> **NOTE:** seismic-foundry does not yet support Foundry's `chisel` ## Installation diff --git a/docs/seismic/contributors.md b/docs/seismic/contributors.md new file mode 100644 index 000000000..c19bc1e72 --- /dev/null +++ b/docs/seismic/contributors.md @@ -0,0 +1,61 @@ +# Seismic Developer Tools + +The Seismic Foundry Developer Tools extend the existing Foundry suite by providing specialized binaries (`sforge`, `sanvil`, and `scast`) that support shielded/Seismic smart contract development. These tools integrate advanced functionalities—including a dedicated Solidity compiler (`ssolc`) and an enhanced EVM (SEVM)—that natively support shielded transactions and private storage. + +--- + +## Table of Contents +1. [Overview](#1-overview) +2. [Changes](#2-changes) + - [2.1 sforge](#21-sforge) + - [2.2 sanvil](#22-sanvil) + - [2.3 scast](#23-scast) +3. [Technical Details](#3-technical-details) + - [3.1 Private Storage Implementation in sanvil](#31-private-storage-implementation-in-sanvil) + - [3.2 Development vs Production](#32-development-vs-production) + +--- + +## 1. Overview + +The Seismic Foundry suite consists of three main components: +- `sforge`: A specialized testing framework for shielded contracts, an extension of [`forge`](https://book.getfoundry.sh/forge/) +- `sanvil`: A local Seismic node supporting private storage and transactions, an extension of [`anvil`](https://book.getfoundry.sh/anvil/) +- `scast`: A CLI for interacting with Seismic networks with client-side encryption support, an extension of [`cast`](https://book.getfoundry.sh/cast/) + +--- + +## 2. Changes + +### 2.1 sforge +The following changes are made in order to support the development, testing and deployment of shielded contracts using `sforge`: +- In the overall config (`config/src/lib.rs`), we add the [`seismic`](https://github.com/SeismicSystems/seismic-foundry/blob/b05fd187442241ab47ec992c44a105c2ee97f5a8/crates/config/src/lib.rs#L507) flag in order to use the Seismic Solidity compiler (`ssolc`). This flag is set to `true` by default. +- The flag, when set to `true`, will use the Seismic Solidity compiler (`ssolc`) situated at `/usr/local/bin/ssolc`. +Developers are hence required to have the `ssolc` binary installed at this location before using `sforge`. The latest `ssolc` binary is automatically installed when using `sfoundryup`. + +### 2.2 sanvil +The following changes are made in order to support deployment and testing of shielded contracts and transactions using `sanvil`: +- Private storage and transaction support is the same as in [`seismic-reth`](https://github.com/SeismicSystems/documentation/blob/main/reth/documentation.md), in order to make the node privacy-aware and support shielded transactions. +- Since `sanvil` is a local node, encryption/decryption occurs natively within the node, instead of within a TEE as is done in `seismic-reth`. +- Both `sanvil` and `sforge` are configured to use the Seismic EVM (`SEVM`) version specified in the [`seismic_version`](https://github.com/SeismicSystems/seismic-foundry/blob/b05fd187442241ab47ec992c44a105c2ee97f5a8/crates/config/src/lib.rs#L217) field in the overall config (`config/src/lib.rs`) if set. + +### 2.3 scast +The following changes are made to support interacting with Seismic networks using `scast`: +- **`scast send --seismic [ENCRYPTION_PRIVATE_KEY]`**: Adds client-side encryption for send transactions. When the `--seismic` flag is provided, `scast` encrypts the transaction input data before sending. An optional encryption private key can be provided; if omitted, a random key is generated. The encrypted transaction is sent as a Seismic transaction type (`TxSeismic`), with encryption parameters (public key, nonce, message version, block hash, expiry) bundled into `TxSeismicElements`. +- **`scast call --encryption-private-key [KEY]`**: Adds client-side encryption/decryption for call (read) transactions. Call data is encrypted and sent via `seismic_call()` RPC, and the response is decrypted before being returned. +- Both commands fetch the TEE public key from the node (via `get_tee_pubkey()` RPC) to perform secp256k1 key exchange for encryption. +- EIP-1559 transactions are converted to legacy gas price format for Seismic compatibility. + +--- + +## 3. Technical Details + +### 3.1 Private Storage Implementation in `sanvil` +- Native support for shielded transactions and private storage +- In development environments, encryption/decryption occurs within the node. +- Functionally equivalent to `seismic-reth`, but without TEE requirements. + +### 3.2 Development vs Production +- Development: Encryption/decryption performed natively by `sanvil` +- Production: Encryption/decryption handled by TEEs in `seismic-reth` +- API compatibility maintained between environments diff --git a/docs/seismic/developers.md b/docs/seismic/developers.md deleted file mode 100644 index 77b77c2ce..000000000 --- a/docs/seismic/developers.md +++ /dev/null @@ -1,76 +0,0 @@ -# Setting Up and Testing Seismic Foundry Tools - -Follow these steps to set up and test the **Seismic Foundry** tools on your system. - ---- - -## 1. Generate a Personal Access Token (PAT) -1. Navigate to [GitHub Developer Settings - Tokens](https://github.com/settings/tokens). -2. Create a **Personal Access Token** (PAT) with the following: - - Enable **all permissions** for the token. - - Set a low granularity (e.g., 7 or 30 days). -3. Save the token somewhere safe for future use. - ---- - -## 2. Export the Token as an Environment Variable -1. Open your terminal. -2. Export the PAT as an environment variable: - ```bash - export SEISMIC_PAT=your_personal_access_token - ``` -Replace your_personal_access_token with the actual token. - -## 3. Download and Execute the Installation Script -Run the following command to download and execute the install script from the Seismic Foundry repository:bash -```bash -curl -L -H "Authorization: token $SEISMIC_PAT" \ - -H "Accept: application/vnd.github.v3.raw" \ - "https://api.github.com/repos/SeismicSystems/seismic-foundry/contents/sfoundryup/install?ref=seismic" | bash -``` -This will install `sfoundryup` on your system. - -## 4. Refresh Your Environment -After installation: - -Either source your environment: - -```bash -source ~/.bashrc -``` -(or the equivalent for your shell, e.g., `~/.zshrc for Zsh`). - -Or open a new terminal session. - -## 5. Run sfoundryup -Run the following command to ensure `seismic-foundry` tools are set up correctly: - -```bash -sfoundryup -``` - -## 6. Refresh your environment again - -## 7. Test the Setup -Clone the early-builds repository: -```bash -git clone https://github.com/SeismicSystems/early-builds -``` - -Navigate to the contracts directory: - -```bash -cd early-builds/brokerage/packages/contracts -``` - -Run the tests using sforge: -```bash -sforge test -``` - -All tests should pass. - -Congratulations! -You have successfully set up and tested the Seismic Foundry tools. If you encounter any issues, ensure the environment variable SEISMIC_PAT is set and the installation steps were followed correctly. - - From 80b196776011ad98b4fec42925cd934c869a3432 Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Thu, 12 Feb 2026 10:23:51 -0500 Subject: [PATCH 115/130] chore(deps): update versions for `seismic-viem` & `seismic-viem-tests` (#160) --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 690991b2c..0b2467239 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "forge:test": "bun run --cwd packages/sforge-tests test" }, "dependencies": { - "seismic-viem": "^1.1.0", - "seismic-viem-tests": "^0.1.1" + "seismic-viem": "^1.1.1", + "seismic-viem-tests": "^0.1.3" } } From 11ca9dbaa2241ce5a889c51d0b8ff0efedfb5277 Mon Sep 17 00:00:00 2001 From: Samuel Laferriere <9342524+samlaf@users.noreply.github.com> Date: Thu, 12 Feb 2026 11:08:31 -0500 Subject: [PATCH 116/130] fix: seismic-hardfork to specid conversion (#159) use .into() function to convert MERCURY to SpecId. This allows removing MERCURY from the specid, like we did in https://github.com/SeismicSystems/seismic-revm/pull/184 This will work for both current setup (where MERCURY is part of SpecID), and after we repoint revm to use the changes in seismic-revm. Opting to not point to the temporary reth-sdk as part of this PR, but might do it in a followup to test future changes. --- crates/anvil/src/hardfork.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/anvil/src/hardfork.rs b/crates/anvil/src/hardfork.rs index 223d88d00..1976fc47a 100644 --- a/crates/anvil/src/hardfork.rs +++ b/crates/anvil/src/hardfork.rs @@ -6,6 +6,7 @@ use alloy_rpc_types::BlockNumberOrTag; use op_revm::OpSpecId; use revm::primitives::hardfork::SpecId; +use seismic_prelude::foundry::SeismicSpecId; #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] pub enum ChainHardfork { @@ -125,8 +126,7 @@ impl FromStr for SeismicHardfork { impl From for SpecId { fn from(fork: SeismicHardfork) -> Self { match fork { - SeismicHardfork::Mercury => Self::MERCURY, - SeismicHardfork::Latest => Self::MERCURY, + SeismicHardfork::Mercury | SeismicHardfork::Latest => SeismicSpecId::MERCURY.into(), } } } From f423ecff0cd83157e88ce7d4ab25c03a7e79b7c4 Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Thu, 12 Feb 2026 12:25:58 -0500 Subject: [PATCH 117/130] chore(deps): remove duplicate workspace deps; bump seismic-viem-tests to 0.1.4 (#161) --- package.json | 4 ---- packages/client-tests/package.json | 4 ++-- packages/sforge-tests/package.json | 2 +- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 0b2467239..b86c64242 100644 --- a/package.json +++ b/package.json @@ -6,9 +6,5 @@ "scripts": { "viem:test": "bun run --cwd packages/client-tests test", "forge:test": "bun run --cwd packages/sforge-tests test" - }, - "dependencies": { - "seismic-viem": "^1.1.1", - "seismic-viem-tests": "^0.1.3" } } diff --git a/packages/client-tests/package.json b/packages/client-tests/package.json index 54b746b84..989d8c71f 100644 --- a/packages/client-tests/package.json +++ b/packages/client-tests/package.json @@ -14,7 +14,7 @@ }, "dependencies": { "viem": "2.x", - "seismic-viem": "^1.1.0", - "seismic-viem-tests": "^0.1.1" + "seismic-viem": "^1.1.1", + "seismic-viem-tests": "^0.1.4" } } diff --git a/packages/sforge-tests/package.json b/packages/sforge-tests/package.json index 3e5f90bf3..560148359 100644 --- a/packages/sforge-tests/package.json +++ b/packages/sforge-tests/package.json @@ -13,6 +13,6 @@ "typescript": "^5" }, "dependencies": { - "seismic-viem-tests": "^0.1.1" + "seismic-viem-tests": "^0.1.4" } } From e579dec58370b4f3fcb7047bb68d5561604b5aff Mon Sep 17 00:00:00 2001 From: mHaines <57149625+mHaines9219@users.noreply.github.com> Date: Tue, 17 Feb 2026 16:08:20 -0500 Subject: [PATCH 118/130] docs: add CLAUDE.md for AI-assisted development (#162) ## Summary - Add comprehensive `CLAUDE.md` with build instructions (macOS/Linux), test commands, project layout, Seismic-specific modifications, code style, and CI documentation - Include troubleshooting table for known issues (zsh filter escaping, upstream test divergences, network-dependent tests, ssolc installation) - Remove `CLAUDE.md` from `.gitignore` so it can be tracked ## Test plan - [x] All three binaries (`sforge`, `sanvil`, `scast`) build and run with documented commands - [x] All Seismic CI tests pass (`test_seismic_tx_encoding`, `test_seismic_*`, `private_storage_*`) - [x] Doc tests pass when excluding `cast` crate (which requires network) - [x] Every command in the CLAUDE.md verified on macOS arm64 cc @cdrappi --------- Co-authored-by: Christian Drappi --- .gitignore | 1 - CLAUDE.md | 335 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 335 insertions(+), 1 deletion(-) create mode 100644 CLAUDE.md diff --git a/.gitignore b/.gitignore index 32d321715..fd70d3b00 100644 --- a/.gitignore +++ b/.gitignore @@ -10,7 +10,6 @@ out.json .vscode .claude -CLAUDE.md .env node_modules dist diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 000000000..5ea1b5d52 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,335 @@ +# Seismic Foundry + +Fork of [Foundry](https://github.com/foundry-rs/foundry) adding **shielded transactions and private storage** to the EVM toolchain. Provides three Seismic-specific binaries — `sforge`, `sanvil`, `scast` — that integrate with the Seismic Solidity compiler [`ssolc`](https://github.com/SeismicSystems/seismic-solidity) and the Mercury EVM for privacy-aware smart contract development. + +--- + +## CRITICAL: The `seismic-prelude` Import Aliasing Strategy + +**This is the single most important pattern in this codebase.** Understanding it is essential before making any changes. + +### The Problem + +Seismic replaces many core types (`TxEnvelope`, `AnyNetwork`, `SpecId`, etc.) with Seismic-aware versions (`SeismicTxEnvelope`, `SeismicFoundry`, `SeismicSpecId`, etc.). Naively, every function signature, return type, and variable using these types would need to change — creating massive diffs and guaranteed merge conflicts with upstream Foundry. + +### The Solution + +The `seismic-prelude` crate (lives in [`seismic-alloy/crates/prelude/`](https://github.com/SeismicSystems/seismic-alloy)) re-exports all Seismic types **aliased to their upstream names**: + +```rust +// In seismic-prelude/src/foundry.rs: +pub use seismic_alloy_consensus::SeismicTxEnvelope as TxEnvelope; +pub use seismic_alloy_network::foundry::SeismicFoundry as AnyNetwork; +pub use seismic_revm::SeismicSpecId as SpecId; +pub use seismic_revm::SeismicEvm as RevmEvm; +// ... etc +``` + +Then in seismic-foundry source files, the import is often the **only line that changes**, drastically reducing the diff: + +```rust +// Instead of: use alloy_consensus::TxEnvelope; +use seismic_prelude::foundry::TxEnvelope; + +// The rest of the file uses `TxEnvelope` unchanged — zero diff from upstream +fn process_tx(tx: TxEnvelope) -> Result<...> { ... } +``` + +This means upstream PRs that reference `TxEnvelope`, `AnyNetwork`, `SpecId`, etc. merge with near-zero friction — those names already resolve to Seismic equivalents via the prelude. + +### Key Aliases + +| Seismic Type (real name) | Alias (upstream name) | +|---|---| +| `SeismicTxEnvelope` | `TxEnvelope` | +| `SeismicReceiptEnvelope` | `AnyReceiptEnvelope` | +| `SeismicFoundry` | `AnyNetwork` | +| `SeismicFoundryTxEnvelope` | `AnyTxEnvelope` | +| `SeismicFoundryTypedTransaction` | `AnyTypedTransaction` | +| `SeismicFoundryRpcBlock` | `AnyRpcBlock` | +| `SeismicFoundryRpcTransaction` | `AnyRpcTransaction` | +| `SeismicFoundryTransactionRequest` | `AnyTransactionRequest` | +| `SeismicTransactionRequest` | `TransactionRequest` | +| `SeismicTransactionReceipt` | `TransactionReceipt` | +| `SeismicTransaction` (network) | `RpcTransaction` | +| `SeismicGasFiller` | `GasFiller` | +| `SeismicSpecId` | `SpecId` | +| `SeismicEvm` | `RevmEvm` | +| `SeismicContext` | `EthEvmContext` | +| `SeismicInstructions` | `EthInstructions` | +| `SeismicHaltReason` | `OpHaltReason` | +| `SeismicTransaction` (revm) | `OpTransaction` | +| `SeismicWallet` | `EthereumWallet` | +| `SeismicTransaction` | `TxEnv` | +| `RevmCfgEnv` | `CfgEnv` | + +### Rules + +- **When adding a new Seismic type that replaces an upstream type**: Add the alias in `seismic-prelude/src/foundry.rs`, then import from `seismic_prelude::foundry::` in consuming files. Never rename at every call site. +- **When upstream adds new code using these type names**: It compiles immediately — the prelude alias resolves it to the Seismic version. +- All consuming files use `use seismic_prelude::foundry::{...}` — currently used across ~96 source files. + +### Comment-Out Strategy for Cleaner Diffs + +When removing upstream code, **prefer wrapping it in a multi-line comment** rather than deleting it: + +```rust +/* +fn upstream_function_we_dont_need() { + // original upstream code +} +*/ +``` + +This tricks git/GitHub into presenting a cleaner diff — the lines show as modified rather than deleted+added, which makes upstream merges significantly easier to review and resolve. + +--- + +## Build + +```bash +# Build individual binaries (recommended) +cargo build --bin sforge +cargo build --bin sanvil +cargo build --bin scast +``` + +### Prerequisites + +- Rust (stable toolchain) +- `ssolc` binary at `/usr/local/bin/ssolc` (required for sforge tests) + - Install via [sfoundryup](https://docs.seismic.systems/getting-started/installation) + - Or download from [seismic-solidity releases](https://github.com/SeismicSystems/seismic-solidity/releases) + +--- + +## Test + +### Seismic CI tests (what CI runs on every PR) + +```bash +cargo nextest run test_seismic_tx_encoding +cargo nextest run test_seismic_ +cargo nextest run private_storage_ +``` + +### Viem integration tests + +```bash +bun install && bun viem:test +``` + +Runs `packages/client-tests/` — uses `seismic-viem` and `seismic-viem-tests` to test `sanvil` end-to-end. Covers: SeismicTx deployment and calls, typed data signing (EIP-712), WebSocket connections, all 6 Mercury precompiles (RNG, ECDH, HKDF, AES-GCM, secp256k1 sign), and transaction trace shielding. Requires a built `sanvil` binary. + +### Contract tests + +```bash +bun install && bun forge:test +``` + +Runs `packages/sforge-tests/` — clones Seismic contract repos (currently `poker`) and runs `sforge build` + `sforge test` against them. Verifies that real shielded contracts compile and pass their test suites with the current `sforge` binary. Requires an installed `sforge` in PATH. + +--- + +## CI + +**`seismic.yml` is the only CI workflow we use.** The other workflow files (`test.yml`, `nextest.yml`, `benchmarks.yml`, etc.) are inherited from upstream Foundry and are not active on the `seismic` branch. + +`.github/workflows/seismic.yml` runs 6 jobs: + +1. **rustfmt** — `cargo fmt --all --check` (nightly) +2. **build** — `cargo build --bin sforge` + `cargo build --bin sanvil` +3. **warnings** — `RUSTFLAGS="-D warnings" cargo check` on sforge and sanvil +4. **test** — installs `ssolc`, runs `test_seismic_tx_encoding`, `test_seismic_`, `private_storage_` +5. **viem** — builds `sanvil`, runs `bun viem:test` +6. **contract-tests** — installs `sforge`, runs `bun forge:test` + +--- + +## Key Seismic Modifications + +This section maps the major changes from upstream Foundry. It covers the most important modifications but may not be exhaustive — when in doubt, check the actual code. + +### Binary Renaming + +| Upstream | Seismic | Location | +|----------|---------|----------| +| `forge` | `sforge` | `crates/forge/Cargo.toml` `[[bin]]` | +| `anvil` | `sanvil` | `crates/anvil/Cargo.toml` `[[bin]]` | +| `cast` | `scast` | `crates/cast/Cargo.toml` `[[bin]]` | + +### Patched Dependencies (`Cargo.toml [patch.crates-io]`) + +All core Foundry dependencies are replaced with Seismic forks pinned to specific commits: + +| Seismic Fork Repo | What It Replaces | +|---|---| +| `seismic-alloy-core` | `alloy-primitives`, `alloy-sol-types`, `alloy-dyn-abi`, `alloy-json-abi`, `alloy-sol-macro*` — adds `FlaggedStorage`, shielded types | +| `seismic-revm` | `revm`, `revm-interpreter`, `revm-primitives`, `revm-context-interface`, `op-revm` — Mercury EVM with CLOAD/CSTORE opcodes and 6 precompiles | +| `seismic-alloy` | `seismic-alloy-consensus`, `seismic-alloy-network`, `seismic-alloy-provider`, `seismic-alloy-rpc-types`, `seismic-prelude` — TxSeismic, SeismicProviderExt, type aliasing | +| `seismic-evm` | `alloy-evm`, `alloy-op-evm`, `alloy-seismic-evm` — block execution layer | +| `seismic-compilers` | `foundry-compilers*` — compiler integration for `ssolc` | +| `seismic-foundry-fork-db` | `foundry-fork-db` — fork DB with FlaggedStorage support | +| `seismic-trie` | `alloy-trie` — Merkle trie with `is_private` flag per leaf | +| `seismic-revm-inspectors` | `revm-inspectors` — EVM tracing for Seismic | +| `enclave` | `seismic-enclave` — TEE mock (unsecure sample keys for local dev) | + +### `crates/config/` — Global Config + +- **`src/lib.rs`**: `seismic: bool` field on `Config` (default: `true`) — master switch for using `ssolc` instead of standard `solc` +- `sanitize_seismic_settings()` — auto-sets `seismic = true` when `evm_version == Mercury` +- `get_default_ssolc_path()` — `/usr/local/bin/ssolc` (Linux/macOS), `C:\Program Files\Seismic\bin\ssolc.exe` (Windows) +- `ensure_solc()` — when `seismic = true`, overrides solc resolution to use `ssolc` + +### `crates/anvil/` — sanvil (largest set of changes) + +**`src/hardfork.rs`**: +- `SeismicHardfork` enum (`Mercury`, `Latest`) +- `ChainHardfork` enum wrapping Ethereum/Optimism/Seismic hardforks +- Conversion: `SeismicHardfork` → `SeismicSpecId::MERCURY` + +**`src/config.rs`**: +- `enable_seismic: bool` on `NodeConfig`, `with_seismic()` builder +- Injects 3 system contracts at genesis: `AES_LIB`, `DIRECTORY`, `INTELLIGENCE` (addresses at `0x100000000000000000000000000000000000000{3,4,5}`) + +**`src/cmd.rs`**: +- `--seismic` CLI flag on `AnvilEvmArgs` + +**`src/eth/api.rs`**: +- `seismic_getTeePublicKey` RPC — returns the unsecure sample secp256k1 public key (TEE mock) +- `eth_getFlaggedStorageAt` RPC — returns `FlaggedStorage` (value + `is_private` flag) +- `seismic_call()` handler — executes encrypted calls + +**`src/eth/error.rs`**: +- `FailedToDecryptCalldata`, `SeismicDecryptionFailed`, `SignedReadMismatch`, `MissingRequiredFields` error variants + +**`src/eth/backend/mem/mod.rs`** (the core): +- System contract bytecode injection at startup +- `seismic_call()` + `seismic_call_with_state()` — full encrypted call pipeline (decrypt input → execute → encrypt output) +- `validate_seismic_call_tx_metadata()` — validates SeismicTx fields +- `validate_pool_transaction()` — rejects invalid SeismicTx (bad signature, failed decryption, signed-read-as-write) +- `flagged_storage_at()` — returns value + privacy flag +- Uses `seismic_enclave::get_unsecure_sample_secp256k1_sk()` as mock TEE I/O key + +**`src/eth/backend/mem/state.rs`**: +- `trie_storage()` passes `is_private` flag per leaf to `seismic-trie` + +**`src/eth/backend/db.rs`**: +- `set_storage_at()` and `storage_ref()` use `FlaggedStorage` instead of `U256` +- `SerializableAccountRecord.storage` is `BTreeMap` + +**`src/eth/backend/env.rs`**: +- `Env.is_seismic: bool` (hardcoded `true`) + +### `crates/anvil/core/` — Transaction Types + +**`src/eth/mod.rs`**: +- `SeismicGetTeePublicKey` and `EthGetFlaggedStorageAt` variants in `EthRequest` enum + +**`src/eth/transaction/mod.rs`**: +- `TypedTransaction::Seismic(Signed)` variant +- `TypedTransactionRequest::Seismic(TxSeismic)` variant +- `transaction_request_to_typed()` handles `SEISMIC_TX_TYPE_ID` (type 74) +- `to_evm_tx_env()` decrypts SeismicTx calldata before EVM execution +- `Decodable2718` recognizes type 74 and decodes into `Signed` +- `test_seismic_tx_encoding()` — cross-checks encoding with `seismic-viem-tests` + +### `crates/cast/` — scast + +**`src/cmd/send.rs`**: +- `--seismic [ENCRYPTION_PRIVATE_KEY]` flag +- Fetches TEE pubkey via `provider.get_tee_pubkey()`, encrypts calldata via ECDH + AEAD +- Converts EIP-1559 gas fields to legacy `gas_price` (SeismicTx uses legacy gas format) +- Sets `transaction_type = TxSeismic::TX_TYPE` (74) + +**`src/cmd/call.rs`**: +- `--encryption-private-key [KEY]` flag +- Encrypts calldata, calls `provider.seismic_call()`, decrypts response + +**`src/cmd/da_estimate.rs`**: +- Panics on SeismicTx — "Seismic transactions are not supported for DA estimates" + +### `crates/evm/core/` — EVM Backend + +**`src/seismic_constants.rs`** (new file): +- Hardcoded addresses and runtime bytecodes for AES_LIB, DIRECTORY, INTELLIGENCE system contracts + +**`src/backend/mod.rs`**: +- `unsafe_private_storage: bool` on `Backend` — **enforcement point**: if a private storage slot is read and this flag is `false`, returns `DatabaseError::PrivateStorage` instead of the value +- `storage()` and `storage_ref()` return `FlaggedStorage` (not `U256`) + +**`src/opts.rs`**: +- `unsafe_private_storage: bool` on `EvmOpts` (default `false`) + +**`src/evm.rs`**: +- EVM construction uses `SeismicChain::default()` context, `SeismicPrecompiles`, `EthInstructions` +- Type alias: `SeismicFoundryPrecompiles` + +**`src/either_evm.rs`**: +- `EitherEvm` has only one variant: `Seismic(...)` — upstream Eth/Op variants are removed + +**`src/backend/snapshot.rs`**: +- Storage snapshots use `HashMap` + +### `crates/evm/evm/` — Executor Layer + +**`src/executors/mod.rs`**: +- `insert_account_storage()` and `set_storage_at()` take `FlaggedStorage` instead of `U256` + +**`src/executors/trace.rs`**: +- State map uses `HashMap` + +### `crates/forge/` — sforge + +**`src/multi_runner.rs`**: +- `db.set_unsafe_private_storage(true)` — all test runs unconditionally allow private storage access (tests need to read shielded state) + +**`tests/cli/script.rs`**: +- `private_storage_blocked_without_flag` and `private_storage_allowed_with_flag` integration tests + +### `crates/script/` + +**`src/lib.rs`**: +- `--unsafe-private-storage` CLI flag, propagated to `evm_opts.unsafe_private_storage` +- `seismic_elements: None` set explicitly on `TransactionRequest` construction + +### `crates/cheatcodes/` + +**`src/inspector.rs`**: +- Defensive `seismic_elements: None` in transaction request construction (no new Seismic cheatcodes added) + +### `crates/common/fmt/` + +**`src/ui.rs`**: +- `UIfmt` implementation for `Signed` — pretty-prints `encryptionPubkey`, `encryptionNonce`, `messageVersion` + +### New Directories (Seismic-only, not in upstream) + +| Directory | Purpose | +|---|---| +| `packages/client-tests/` | Viem integration tests against sanvil (TypeScript/Bun) | +| `packages/sforge-tests/` | Contract compilation/test validation with sforge (TypeScript/Bun) | +| `sfoundryup/` | Installer script — installs `ssolc`, builds and installs `sforge`/`sanvil`/`scast` | +| `docs/seismic/` | Seismic-specific technical documentation | +| `.github/workflows/seismic.yml` | Seismic CI workflow (the only active one) | +| `crates/anvil/tests/it/seismic.rs` | Anvil integration tests for SeismicTx and precompiles | + +### Pervasive Changes + +- **`FlaggedStorage` replaces `U256`** for all storage values throughout the EVM stack (backend, executor, snapshots, state trie, DB serialization) +- **`seismic_prelude::foundry::*` imports** replace direct `alloy`/`revm` imports in ~96 files (see the import aliasing section above) + +--- + +## Branches + +- `seismic` — main branch (PR target) +- Upstream Foundry is not tracked via a branch in this repo + +## Code Style + +- **Formatting**: `cargo +nightly fmt --all` (100 char max width, crate-level imports) +- **Linting**: `cargo clippy` — disallows `std::print`/`println` (use `sh_print`/`sh_println` from `foundry_common::shell`) +- **Other formatters**: `dprint` for Markdown, TOML, JSON, TypeScript, YAML +- **Spell check**: `typos` CLI +- **Lint commands**: `make fmt`, `make lint-clippy`, `make lint-typos`, `make lint` (all) From 7782040a42ad4578ca58c64b5365fb81f3c58dda Mon Sep 17 00:00:00 2001 From: Samuel Laferriere <9342524+samlaf@users.noreply.github.com> Date: Thu, 19 Feb 2026 18:07:55 -0500 Subject: [PATCH 119/130] feat(build): print ssolc commit when building (#163) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Uses https://github.com/SeismicSystems/seismic-compilers/pull/14 When compiling with -vvv we can now see the commit version: ``` $ sforge build -vvv [⠊] Compiling... [⠑] Compiling 44 files with ssolc 0.8.31 (676bdec) [⠘] ssolc 0.8.31 (676bdec) finished in 615.21ms ``` Before we'd see `Compiler ... with Solc 0.8.31` only. --- Cargo.lock | 12 ++++++------ Cargo.toml | 10 +++++----- crates/common/src/term.rs | 13 ++++++------- 3 files changed, 17 insertions(+), 18 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d767908ce..295ff538e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4678,7 +4678,7 @@ dependencies = [ [[package]] name = "foundry-compilers" version = "0.19.1" -source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=5477a89ae892229a90af58580daa8ef4575f00a6#5477a89ae892229a90af58580daa8ef4575f00a6" +source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=d24431fcbdc3b7a05e8657e76d56f5b8533cef0c#d24431fcbdc3b7a05e8657e76d56f5b8533cef0c" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -4689,7 +4689,7 @@ dependencies = [ "foundry-compilers-core", "fs_extra", "futures-util", - "itertools 0.14.0", + "itertools 0.13.0", "path-slash", "rand 0.9.2", "rayon", @@ -4711,7 +4711,7 @@ dependencies = [ [[package]] name = "foundry-compilers-artifacts" version = "0.19.1" -source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=5477a89ae892229a90af58580daa8ef4575f00a6#5477a89ae892229a90af58580daa8ef4575f00a6" +source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=d24431fcbdc3b7a05e8657e76d56f5b8533cef0c#d24431fcbdc3b7a05e8657e76d56f5b8533cef0c" dependencies = [ "foundry-compilers-artifacts-solc", "foundry-compilers-artifacts-vyper", @@ -4720,7 +4720,7 @@ dependencies = [ [[package]] name = "foundry-compilers-artifacts-solc" version = "0.19.1" -source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=5477a89ae892229a90af58580daa8ef4575f00a6#5477a89ae892229a90af58580daa8ef4575f00a6" +source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=d24431fcbdc3b7a05e8657e76d56f5b8533cef0c#d24431fcbdc3b7a05e8657e76d56f5b8533cef0c" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -4742,7 +4742,7 @@ dependencies = [ [[package]] name = "foundry-compilers-artifacts-vyper" version = "0.19.1" -source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=5477a89ae892229a90af58580daa8ef4575f00a6#5477a89ae892229a90af58580daa8ef4575f00a6" +source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=d24431fcbdc3b7a05e8657e76d56f5b8533cef0c#d24431fcbdc3b7a05e8657e76d56f5b8533cef0c" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -4756,7 +4756,7 @@ dependencies = [ [[package]] name = "foundry-compilers-core" version = "0.19.1" -source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=5477a89ae892229a90af58580daa8ef4575f00a6#5477a89ae892229a90af58580daa8ef4575f00a6" +source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=d24431fcbdc3b7a05e8657e76d56f5b8533cef0c#d24431fcbdc3b7a05e8657e76d56f5b8533cef0c" dependencies = [ "alloy-primitives", "cfg-if", diff --git a/Cargo.toml b/Cargo.toml index 7ca94194d..471b31dea 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -412,10 +412,10 @@ alloy-op-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev alloy-seismic-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "039d51496b9b9a0cb4fea6d606e472211b462073" } # foundry -foundry-compilers = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "5477a89ae892229a90af58580daa8ef4575f00a6" } -foundry-compilers-artifacts = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "5477a89ae892229a90af58580daa8ef4575f00a6" } -foundry-compilers-artifacts-solc = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "5477a89ae892229a90af58580daa8ef4575f00a6" } -foundry-compilers-artifacts-vyper = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "5477a89ae892229a90af58580daa8ef4575f00a6" } -foundry-compilers-core = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "5477a89ae892229a90af58580daa8ef4575f00a6" } +foundry-compilers = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "d24431fcbdc3b7a05e8657e76d56f5b8533cef0c" } +foundry-compilers-artifacts = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "d24431fcbdc3b7a05e8657e76d56f5b8533cef0c" } +foundry-compilers-artifacts-solc = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "d24431fcbdc3b7a05e8657e76d56f5b8533cef0c" } +foundry-compilers-artifacts-vyper = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "d24431fcbdc3b7a05e8657e76d56f5b8533cef0c" } +foundry-compilers-core = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "d24431fcbdc3b7a05e8657e76d56f5b8533cef0c" } foundry-fork-db = { git = "https://github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "e5fb1f8838b517dbaaccc08a8af6767fe2e70c4e" } diff --git a/crates/common/src/term.rs b/crates/common/src/term.rs index c8cb9549f..419f24867 100644 --- a/crates/common/src/term.rs +++ b/crates/common/src/term.rs @@ -1,7 +1,7 @@ //! terminal utils use foundry_compilers::{ artifacts::remappings::Remapping, - report::{self, BasicStdoutReporter, Reporter}, + report::{self, BasicStdoutReporter, Reporter, format_version_with_commit}, }; use foundry_config::find_project_root; use itertools::Itertools; @@ -177,19 +177,18 @@ impl Reporter for SpinnerReporter { } self.send_msg(format!( - "Compiling {} files with {} {}.{}.{}", + "Compiling {} files with {} {}", dirty_files.len(), compiler_name, - version.major, - version.minor, - version.patch + format_version_with_commit(version), )); } fn on_compiler_success(&self, compiler_name: &str, version: &Version, duration: &Duration) { self.send_msg(format!( - "{} {}.{}.{} finished in {duration:.2?}", - compiler_name, version.major, version.minor, version.patch + "{} {} finished in {duration:.2?}", + compiler_name, + format_version_with_commit(version), )); } From b8340d343fa8a331c97b6c8ea84a59c77111ad4d Mon Sep 17 00:00:00 2001 From: Samuel Laferriere <9342524+samlaf@users.noreply.github.com> Date: Fri, 20 Feb 2026 11:41:28 -0500 Subject: [PATCH 120/130] chore: update seismic-compiler version (#164) This updates the compiler print to be able to tell whcih exact ssolc commit is used. This brings in https://github.com/SeismicSystems/seismic-compilers/commit/5a398fffdaee1ed6092871a1ef1beb131b5d1ca6 Also added some comments to explain how the `seismic` config field works as I got confused about what the code was doing. --- Cargo.lock | 10 +++++----- Cargo.toml | 12 ++++++------ crates/config/src/lib.rs | 15 ++++++++++++--- 3 files changed, 23 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 295ff538e..1fe21fa02 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4678,7 +4678,7 @@ dependencies = [ [[package]] name = "foundry-compilers" version = "0.19.1" -source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=d24431fcbdc3b7a05e8657e76d56f5b8533cef0c#d24431fcbdc3b7a05e8657e76d56f5b8533cef0c" +source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=bbb38d77478f2d30013d5d5956ead23b520fd358#bbb38d77478f2d30013d5d5956ead23b520fd358" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -4711,7 +4711,7 @@ dependencies = [ [[package]] name = "foundry-compilers-artifacts" version = "0.19.1" -source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=d24431fcbdc3b7a05e8657e76d56f5b8533cef0c#d24431fcbdc3b7a05e8657e76d56f5b8533cef0c" +source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=bbb38d77478f2d30013d5d5956ead23b520fd358#bbb38d77478f2d30013d5d5956ead23b520fd358" dependencies = [ "foundry-compilers-artifacts-solc", "foundry-compilers-artifacts-vyper", @@ -4720,7 +4720,7 @@ dependencies = [ [[package]] name = "foundry-compilers-artifacts-solc" version = "0.19.1" -source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=d24431fcbdc3b7a05e8657e76d56f5b8533cef0c#d24431fcbdc3b7a05e8657e76d56f5b8533cef0c" +source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=bbb38d77478f2d30013d5d5956ead23b520fd358#bbb38d77478f2d30013d5d5956ead23b520fd358" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -4742,7 +4742,7 @@ dependencies = [ [[package]] name = "foundry-compilers-artifacts-vyper" version = "0.19.1" -source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=d24431fcbdc3b7a05e8657e76d56f5b8533cef0c#d24431fcbdc3b7a05e8657e76d56f5b8533cef0c" +source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=bbb38d77478f2d30013d5d5956ead23b520fd358#bbb38d77478f2d30013d5d5956ead23b520fd358" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -4756,7 +4756,7 @@ dependencies = [ [[package]] name = "foundry-compilers-core" version = "0.19.1" -source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=d24431fcbdc3b7a05e8657e76d56f5b8533cef0c#d24431fcbdc3b7a05e8657e76d56f5b8533cef0c" +source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=bbb38d77478f2d30013d5d5956ead23b520fd358#bbb38d77478f2d30013d5d5956ead23b520fd358" dependencies = [ "alloy-primitives", "cfg-if", diff --git a/Cargo.toml b/Cargo.toml index 471b31dea..343bda866 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -375,7 +375,7 @@ rexpect = { git = "https://github.com/rust-cli/rexpect", rev = "2ed0b1898d7edaf6 # If our dependencies depend on these things, # then this will override whatever versions they point to # and instead use our local version -seismic-enclave = { git = "https://github.com/SeismicSystems/enclave.git", rev = "ac5e28dac1ee8ec0e3922b010e6da072d6e784aa" } +seismic-enclave = { git = "https://github.com/SeismicSystems/enclave.git", rev = "ac5e28dac1ee8ec0e3922b010e6da072d6e784aa" } # seismic-alloy-core alloy-dyn-abi = { git = "https://github.com/SeismicSystems/seismic-alloy-core.git", rev = "68313cb636365501a699c47865807158544eace1" } @@ -412,10 +412,10 @@ alloy-op-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev alloy-seismic-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "039d51496b9b9a0cb4fea6d606e472211b462073" } # foundry -foundry-compilers = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "d24431fcbdc3b7a05e8657e76d56f5b8533cef0c" } -foundry-compilers-artifacts = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "d24431fcbdc3b7a05e8657e76d56f5b8533cef0c" } -foundry-compilers-artifacts-solc = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "d24431fcbdc3b7a05e8657e76d56f5b8533cef0c" } -foundry-compilers-artifacts-vyper = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "d24431fcbdc3b7a05e8657e76d56f5b8533cef0c" } -foundry-compilers-core = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "d24431fcbdc3b7a05e8657e76d56f5b8533cef0c" } +foundry-compilers = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "bbb38d77478f2d30013d5d5956ead23b520fd358" } +foundry-compilers-artifacts = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "bbb38d77478f2d30013d5d5956ead23b520fd358" } +foundry-compilers-artifacts-solc = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "bbb38d77478f2d30013d5d5956ead23b520fd358" } +foundry-compilers-artifacts-vyper = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "bbb38d77478f2d30013d5d5956ead23b520fd358" } +foundry-compilers-core = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "bbb38d77478f2d30013d5d5956ead23b520fd358" } foundry-fork-db = { git = "https://github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "e5fb1f8838b517dbaaccc08a8af6767fe2e70c4e" } diff --git a/crates/config/src/lib.rs b/crates/config/src/lib.rs index 960335e0d..9a6394b17 100644 --- a/crates/config/src/lib.rs +++ b/crates/config/src/lib.rs @@ -538,7 +538,12 @@ pub struct Config { /// Seismic field (default: true) /// - /// Used for purposes of specifying Seismic-Solidity (solc) + /// When set to true, ssolc (seismic-solidity compiler) will be used instead of solc. + /// + /// TODO(samlaf): do we really need this? The compiler could be chosen purely based off of + /// evm_version config value (if mercury, use ssolc; else use solc). + /// Also should we just rename this to `use_ssolc` instead of seismic, which is a bit confusing + /// because it looks like it might also be used to configure execution (tests, anvil, etc). pub seismic: bool, /// Warnings gathered when loading the Config. See [`WarningsProvider`] for more information. @@ -916,8 +921,12 @@ impl Config { config } - // Turn on seismic flag if evm version is seismic. For now this logic works. + // This is called on every foundry.toml config files right now, including on lib/ configs. + // TODO(samlaf): this might have weird side effects at some point if our library ecosystem + // grows. pub fn sanitize_seismic_settings(&mut self) { + // If Mercury feature set is required, then use seismic-compiler (self.seismic controls + // which compiler is used). if self.evm_version == EvmVersion::Mercury { self.seismic = true; } @@ -2398,7 +2407,7 @@ impl Default for Config { gas_reports: vec!["*".to_string()], gas_reports_ignore: vec![], gas_reports_include_tests: false, - solc: Some(SolcReq::Version(Version::parse("0.8.30").unwrap())), + solc: Some(SolcReq::Version(Version::parse("0.8.31").unwrap())), vyper: Default::default(), auto_detect_solc: true, offline: false, From 6aa0dd5844289df21174e002f13132068ae9b1dd Mon Sep 17 00:00:00 2001 From: Samuel Laferriere <9342524+samlaf@users.noreply.github.com> Date: Fri, 20 Feb 2026 14:55:23 -0500 Subject: [PATCH 121/130] ci(release): make release workflow work with seismic binaries (#165) Update upstream's release.yml script to work for seismic binaries (basically just added `s` in front of everything. Turned off the docker releases because don't see a use case for them at this point. This will make nightly releases, which are pruned monthly afaiu. --- .github/workflows/release.yml | 88 ++++++++++++++++++----------------- 1 file changed, 46 insertions(+), 42 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5a883be70..d482f1b8c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,12 +1,13 @@ name: release on: - push: - tags: - - "stable" - - "rc" - - "rc-*" - - "v*.*.*" + # TODO(samlaf): we need to figure out how to do (and semver) our seismic releases once we become more stable. + # push: + # tags: + # - "stable" + # - "rc" + # - "rc-*" + # - "v*.*.*" schedule: - cron: "0 6 * * *" workflow_dispatch: @@ -66,12 +67,14 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - release-docker: - name: Release Docker - needs: prepare - uses: ./.github/workflows/docker-publish.yml - with: - tag_name: ${{ needs.prepare.outputs.tag_name }} + # TODO(samlaf): turned this off because we only need binary releases to be used by sfoundryup and mise in the monorepo. + # We can turn this back on once we have a need for docker releases. + # release-docker: + # name: Release Docker + # needs: prepare + # uses: ./.github/workflows/docker-publish.yml + # with: + # tag_name: ${{ needs.prepare.outputs.tag_name }} release: permissions: @@ -174,7 +177,7 @@ jobs: cargo build "${flags[@]}" fi - bins=(anvil cast chisel forge) + bins=(sanvil scast schisel sforge) for name in "${bins[@]}"; do bin=$OUT_DIR/$name$ext echo "" @@ -195,20 +198,20 @@ jobs: shell: bash run: | if [[ "$PLATFORM_NAME" == "linux" || "$PLATFORM_NAME" == "alpine" ]]; then - tar -czvf "foundry_${VERSION_NAME}_${PLATFORM_NAME}_${ARCH}.tar.gz" -C $OUT_DIR forge cast anvil chisel - echo "file_name=foundry_${VERSION_NAME}_${PLATFORM_NAME}_${ARCH}.tar.gz" >> $GITHUB_OUTPUT + tar -czvf "sfoundry_${VERSION_NAME}_${PLATFORM_NAME}_${ARCH}.tar.gz" -C $OUT_DIR sforge scast sanvil schisel + echo "file_name=sfoundry_${VERSION_NAME}_${PLATFORM_NAME}_${ARCH}.tar.gz" >> $GITHUB_OUTPUT elif [ "$PLATFORM_NAME" == "darwin" ]; then # We need to use gtar here otherwise the archive is corrupt. # See: https://github.com/actions/virtual-environments/issues/2619 - gtar -czvf "foundry_${VERSION_NAME}_${PLATFORM_NAME}_${ARCH}.tar.gz" -C $OUT_DIR forge cast anvil chisel - echo "file_name=foundry_${VERSION_NAME}_${PLATFORM_NAME}_${ARCH}.tar.gz" >> $GITHUB_OUTPUT + gtar -czvf "sfoundry_${VERSION_NAME}_${PLATFORM_NAME}_${ARCH}.tar.gz" -C $OUT_DIR sforge scast sanvil schisel + echo "file_name=sfoundry_${VERSION_NAME}_${PLATFORM_NAME}_${ARCH}.tar.gz" >> $GITHUB_OUTPUT else cd $OUT_DIR - 7z a -tzip "foundry_${VERSION_NAME}_${PLATFORM_NAME}_${ARCH}.zip" forge.exe cast.exe anvil.exe chisel.exe - mv "foundry_${VERSION_NAME}_${PLATFORM_NAME}_${ARCH}.zip" ../../../ - echo "file_name=foundry_${VERSION_NAME}_${PLATFORM_NAME}_${ARCH}.zip" >> $GITHUB_OUTPUT + 7z a -tzip "sfoundry_${VERSION_NAME}_${PLATFORM_NAME}_${ARCH}.zip" sforge.exe scast.exe sanvil.exe schisel.exe + mv "sfoundry_${VERSION_NAME}_${PLATFORM_NAME}_${ARCH}.zip" ../../../ + echo "file_name=sfoundry_${VERSION_NAME}_${PLATFORM_NAME}_${ARCH}.zip" >> $GITHUB_OUTPUT fi - echo "foundry_attestation=foundry_${VERSION_NAME}_${PLATFORM_NAME}_${ARCH}.attestation.txt" >> $GITHUB_OUTPUT + echo "sfoundry_attestation=sfoundry_${VERSION_NAME}_${PLATFORM_NAME}_${ARCH}.attestation.txt" >> $GITHUB_OUTPUT - name: Upload build artifacts uses: actions/upload-artifact@v4 @@ -226,30 +229,30 @@ jobs: shell: bash run: | sudo apt-get -y install help2man - help2man -N $OUT_DIR/forge > forge.1 - help2man -N $OUT_DIR/cast > cast.1 - help2man -N $OUT_DIR/anvil > anvil.1 - help2man -N $OUT_DIR/chisel > chisel.1 - gzip forge.1 - gzip cast.1 - gzip anvil.1 - gzip chisel.1 - tar -czvf "foundry_man_${VERSION_NAME}.tar.gz" forge.1.gz cast.1.gz anvil.1.gz chisel.1.gz - echo "foundry_man=foundry_man_${VERSION_NAME}.tar.gz" >> $GITHUB_OUTPUT + help2man -N $OUT_DIR/sforge > sforge.1 + help2man -N $OUT_DIR/scast > scast.1 + help2man -N $OUT_DIR/sanvil > sanvil.1 + help2man -N $OUT_DIR/schisel > schisel.1 + gzip sforge.1 + gzip scast.1 + gzip sanvil.1 + gzip schisel.1 + tar -czvf "sfoundry_man_${VERSION_NAME}.tar.gz" sforge.1.gz scast.1.gz sanvil.1.gz schisel.1.gz + echo "sfoundry_man=sfoundry_man_${VERSION_NAME}.tar.gz" >> $GITHUB_OUTPUT - name: Binaries attestation id: attestation uses: actions/attest-build-provenance@v2 with: subject-path: | - ${{ env.anvil_bin_path }} - ${{ env.cast_bin_path }} - ${{ env.chisel_bin_path }} - ${{ env.forge_bin_path }} + ${{ env.sanvil_bin_path }} + ${{ env.scast_bin_path }} + ${{ env.schisel_bin_path }} + ${{ env.sforge_bin_path }} - name: Record attestation URL run: | - echo "${{ steps.attestation.outputs.attestation-url }}" > ${{ steps.artifacts.outputs.foundry_attestation }} + echo "${{ steps.attestation.outputs.attestation-url }}" > ${{ steps.artifacts.outputs.sfoundry_attestation }} # Creates the release for this specific version - name: Create release @@ -261,11 +264,11 @@ jobs: body: ${{ needs.prepare.outputs.changelog }} files: | ${{ steps.artifacts.outputs.file_name }} - ${{ steps.artifacts.outputs.foundry_attestation }} - ${{ steps.man.outputs.foundry_man }} + ${{ steps.artifacts.outputs.sfoundry_attestation }} + ${{ steps.man.outputs.sfoundry_man }} # If this is a nightly release, it also updates the release - # tagged `nightly` for compatibility with `foundryup` + # tagged `nightly` for compatibility with `sfoundryup` - name: Update nightly release if: ${{ env.IS_NIGHTLY == 'true' }} uses: softprops/action-gh-release@v2.2.2 @@ -276,8 +279,8 @@ jobs: body: ${{ needs.prepare.outputs.changelog }} files: | ${{ steps.artifacts.outputs.file_name }} - ${{ steps.artifacts.outputs.foundry_attestation }} - ${{ steps.man.outputs.foundry_man }} + ${{ steps.artifacts.outputs.sfoundry_attestation }} + ${{ steps.man.outputs.sfoundry_man }} cleanup: name: Release cleanup @@ -308,7 +311,8 @@ jobs: issue: name: Open an issue runs-on: ubuntu-latest - needs: [prepare, release-docker, release, cleanup] + # TODO(samlaf): add back release-docker step if we ever uncomment it. + needs: [prepare, release, cleanup] if: failure() steps: - uses: actions/checkout@v5 From aaf71d2e9c899b49ed7becdc738ec50ecfb14fd2 Mon Sep 17 00:00:00 2001 From: Samuel Laferriere <9342524+samlaf@users.noreply.github.com> Date: Fri, 20 Feb 2026 17:38:23 -0500 Subject: [PATCH 122/130] ci(seismic): replace cargo check with clippy (#167) Afaiu its a superset, and this clippy command will compile + check all binaries (not only the 2 hardcoded) with all features (ran into some issues in the release ci recently because we weren't ever testing with the js-tracer feature flag). --- .github/scripts/format.sh | 2 +- .github/workflows/seismic.yml | 16 ++++++++-------- crates/anvil/src/eth/backend/mem/mod.rs | 9 +++++++-- crates/anvil/tests/it/traces.rs | 6 ++++-- crates/common/fmt/src/console.rs | 2 +- crates/common/fmt/src/dynamic.rs | 2 +- crates/common/fmt/src/ui.rs | 2 +- 7 files changed, 23 insertions(+), 16 deletions(-) diff --git a/.github/scripts/format.sh b/.github/scripts/format.sh index 9bd1f950f..2521e0a87 100755 --- a/.github/scripts/format.sh +++ b/.github/scripts/format.sh @@ -3,5 +3,5 @@ set -eo pipefail # We have to ignore at shell level because testdata/ is not a valid Foundry project, # so running `forge fmt` with `--root testdata` won't actually check anything -cargo run --bin forge -- fmt "$@" \ +cargo run --bin sforge -- fmt "$@" \ $(find testdata -name '*.sol' ! -name Vm.sol ! -name console.sol) diff --git a/.github/workflows/seismic.yml b/.github/workflows/seismic.yml index 4cacd634c..737133e3c 100644 --- a/.github/workflows/seismic.yml +++ b/.github/workflows/seismic.yml @@ -39,19 +39,19 @@ jobs: - name: sanvil build run: cargo build --bin sanvil - warnings: + clippy: runs-on: ubuntu-latest timeout-minutes: 30 steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@stable + - uses: actions/checkout@v5 + - uses: dtolnay/rust-toolchain@clippy - uses: Swatinem/rust-cache@v2 with: - shared-key: "warnings-cache" - - name: sforge warnings - run: RUSTFLAGS="-D warnings" cargo check --bin sforge - - name: sanvil warnings - run: RUSTFLAGS="-D warnings" cargo check --bin sanvil + cache-on-failure: true + - run: cargo clippy --workspace --all-targets --all-features + # Not enforcing warnings here because there are too many to fix atm, but we may want to turn this back on. + # env: + # RUSTFLAGS: -Dwarnings test: runs-on: large-github-runner diff --git a/crates/anvil/src/eth/backend/mem/mod.rs b/crates/anvil/src/eth/backend/mem/mod.rs index c305baf43..40241f9c6 100644 --- a/crates/anvil/src/eth/backend/mem/mod.rs +++ b/crates/anvil/src/eth/backend/mem/mod.rs @@ -2256,7 +2256,12 @@ impl Backend { let result = evm.transact(env.tx.clone())?; let res = evm .inspector_mut() - .json_result(result, &env.tx.into_tx_env(), &block, &cache_db) + .json_result( + result, + &IntoTxEnv::::into_tx_env(env.tx), + &block, + &cache_db, + ) .map_err(|err| BlockchainError::Message(err.to_string()))?; Ok(GethTrace::JS(res)) @@ -3047,7 +3052,7 @@ impl Backend { let trace = inspector .json_result( result, - &alloy_evm::IntoTxEnv::into_tx_env(tx_env), + &alloy_evm::IntoTxEnv::::into_tx_env(tx_env), &env.evm_env.block_env, &cache_db, ) diff --git a/crates/anvil/tests/it/traces.rs b/crates/anvil/tests/it/traces.rs index 52c72f1f9..35a0fe64a 100644 --- a/crates/anvil/tests/it/traces.rs +++ b/crates/anvil/tests/it/traces.rs @@ -980,7 +980,7 @@ fault: function(log) {} let result = api .debug_trace_call( - WithOtherFields::new(internal_call_tx), + WithOtherFields::new(internal_call_tx.into()), Some(BlockId::latest()), GethDebugTracingCallOptions::default() .with_tracing_options(GethDebugTracingOptions::js_tracer(js_tracer_code)), @@ -1047,7 +1047,9 @@ async fn test_debug_trace_transaction_js_tracer() { .with_max_priority_fee_per_gas(100_000_000_000); let receipt = provider - .send_transaction(internal_call_tx.into()) + .send_transaction( + Into::::into(internal_call_tx).into(), + ) .await .unwrap() .get_receipt() diff --git a/crates/common/fmt/src/console.rs b/crates/common/fmt/src/console.rs index a59f4c5c0..8409edd24 100644 --- a/crates/common/fmt/src/console.rs +++ b/crates/common/fmt/src/console.rs @@ -303,7 +303,7 @@ impl ConsoleFmt for Address { impl ConsoleFmt for SAddress { fn fmt(&self, spec: FormatSpec) -> String { - Address::from(self.0).fmt(spec) + self.0.fmt(spec) } } diff --git a/crates/common/fmt/src/dynamic.rs b/crates/common/fmt/src/dynamic.rs index 4e0554293..b3233f5dc 100644 --- a/crates/common/fmt/src/dynamic.rs +++ b/crates/common/fmt/src/dynamic.rs @@ -75,7 +75,7 @@ impl DynValueFormatter { self.tuple(tuple, f) } } - &DynSolValue::Sbool(Sbool(inner)) => write!(f, "{}", inner), + &DynSolValue::Sbool(Sbool(inner)) => write!(f, "{inner}"), &DynSolValue::Saddress(SAddress(inner)) => write!(f, "{inner}"), &DynSolValue::Sint(SInt(inner), _) => write!(f, "{inner}"), &DynSolValue::Suint(SUInt(inner), _) => write!(f, "{inner}"), diff --git a/crates/common/fmt/src/ui.rs b/crates/common/fmt/src/ui.rs index 293f75827..ff562a485 100644 --- a/crates/common/fmt/src/ui.rs +++ b/crates/common/fmt/src/ui.rs @@ -525,7 +525,7 @@ impl UIfmt for alloy_consensus::Signed { tx_seismic.seismic_elements.encryption_nonce, tx_seismic.seismic_elements.message_version ); - format!("{}\n{}", legacy_pretty, seismic_elements_pretty) + format!("{legacy_pretty}\n{seismic_elements_pretty}") } } From 744c9b1f325c39959e9ac38f61ea613f8effe449 Mon Sep 17 00:00:00 2001 From: Samuel Laferriere <9342524+samlaf@users.noreply.github.com> Date: Mon, 23 Feb 2026 11:11:05 -0500 Subject: [PATCH 123/130] ci: enable release workflow (#166) Ran the workflow manually and it succeeded: https://github.com/SeismicSystems/seismic-foundry/actions/runs/22312870726 Set it to: - make a release once a week (or whenever manually triggered) - build for 3 platforms (ubuntu-x86, mac-x86, mac-arm). Disabled all the others because had issues with github's self hosted runners, plus I don't think there's demand at this point in time --- .github/workflows/release.yml | 58 +++++++++++++++++++---------------- 1 file changed, 31 insertions(+), 27 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d482f1b8c..89c77a8e8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,7 +9,7 @@ on: # - "rc-*" # - "v*.*.*" schedule: - - cron: "0 6 * * *" + - cron: "0 6 * * 1" workflow_dispatch: env: @@ -93,29 +93,32 @@ jobs: # `target`: Rust build target triple # `platform` and `arch`: Used in tarball names # `svm`: target platform to use for the Solc binary: https://github.com/roynalnaruto/svm-rs/blob/84cbe0ac705becabdc13168bae28a45ad2299749/svm-builds/build.rs#L4-L24 - - runner: Linux-22.04 + - runner: ubuntu-22.04 target: x86_64-unknown-linux-gnu svm_target_platform: linux-amd64 platform: linux arch: amd64 - - runner: Linux-22.04 - target: x86_64-unknown-linux-musl - svm_target_platform: linux-amd64 - platform: alpine - arch: amd64 - - runner: Linux-22.04 - target: aarch64-unknown-linux-gnu - svm_target_platform: linux-aarch64 - platform: linux - arch: arm64 - - runner: Linux-22.04 - target: aarch64-unknown-linux-musl - svm_target_platform: linux-aarch64 - platform: alpine - arch: arm64 - # This is pinned to `macos-13-large` to support old SDK versions. - # If the runner is deprecated it should be pinned to the oldest available version of the runner. - - runner: macos-13-large + # Turning off musl since afaiu this is only needed when running inside Alpine Docker containers, + # which we don't even support atm. + # - runner: ubuntu-22.04 + # target: x86_64-unknown-linux-musl + # svm_target_platform: linux-amd64 + # platform: alpine + # arch: amd64 + # Note(samlaf): turning off ubuntu arm runners for now since the build is oom'ing and crashing, despite having 16GiB of RAM. + # https://docs.github.com/en/actions/reference/runners/github-hosted-runners#standard-github-hosted-runners-for-public-repositories + # Not sure why the arm builds take so much more memory, but anyways we don't need these builds for now until there's user demand. + # - runner: ubuntu-22.04-arm + # target: aarch64-unknown-linux-gnu + # svm_target_platform: linux-aarch64 + # platform: linux + # arch: arm64 + # - runner: ubuntu-22.04 + # target: aarch64-unknown-linux-musl + # svm_target_platform: linux-aarch64 + # platform: alpine + # arch: arm64 + - runner: macos-14-large target: x86_64-apple-darwin svm_target_platform: macosx-amd64 platform: darwin @@ -125,11 +128,12 @@ jobs: svm_target_platform: macosx-aarch64 platform: darwin arch: arm64 - - runner: Windows - target: x86_64-pc-windows-msvc - svm_target_platform: windows-amd64 - platform: win32 - arch: amd64 + # Turning off Windows for now since I don't think we have any usecase for it. + # - runner: windows-latest + # target: x86_64-pc-windows-msvc + # svm_target_platform: windows-amd64 + # platform: win32 + # arch: amd64 steps: - uses: actions/checkout@v5 - uses: dtolnay/rust-toolchain@stable @@ -147,7 +151,7 @@ jobs: echo "MACOSX_DEPLOYMENT_TARGET=$(xcrun -sdk macosx --show-sdk-platform-version)" >> $GITHUB_ENV - name: cross setup - if: matrix.target == 'x86_64-unknown-linux-musl' || matrix.target == 'aarch64-unknown-linux-musl' || matrix.target == 'aarch64-unknown-linux-gnu' + if: matrix.target == 'x86_64-unknown-linux-musl' || matrix.target == 'aarch64-unknown-linux-musl' run: | cargo install cross @@ -171,7 +175,7 @@ jobs: [[ "$TARGET" == *windows* ]] && ext=".exe" - if [[ "$TARGET" == *-musl || "$TARGET" == "aarch64-unknown-linux-gnu" ]]; then + if [[ "$TARGET" == *-musl ]]; then cross build "${flags[@]}" else cargo build "${flags[@]}" From 08913bcc240efcb17dcee38e60adfa482b4bcd44 Mon Sep 17 00:00:00 2001 From: Samuel Laferriere <9342524+samlaf@users.noreply.github.com> Date: Mon, 23 Feb 2026 15:13:14 -0500 Subject: [PATCH 124/130] feat(solc-config): add support for unsafe-via-ir option (#168) Adding option to pass --unsafe-via-ir option down to ssolc. This updates the seismic-compiler to get the similar changes from https://github.com/SeismicSystems/seismic-compilers/pull/18 Needed because versions of ssolc (https://github.com/SeismicSystems/seismic-solidity/pull/204) require --unsafe-via-ir argument, which foundry's config didn't support before this. Now one can change foundry.toml to have ``` via_ir = true unsafe_via_ir = true ``` and both of these will be passed down to ssolc. chore: Also fixed .gitignore since it was ignoring crates/cli/src/opts/build by mistake. --- .gitignore | 2 +- Cargo.lock | 12 ++++++------ Cargo.toml | 10 +++++----- crates/cli/src/opts/build/core.rs | 9 +++++++++ crates/config/src/lib.rs | 8 ++++++++ crates/forge/tests/cli/config.rs | 1 + 6 files changed, 30 insertions(+), 12 deletions(-) diff --git a/.gitignore b/.gitignore index fd70d3b00..e5df46b53 100644 --- a/.gitignore +++ b/.gitignore @@ -20,5 +20,5 @@ _ .vercel .vite .wrangler -build +/build *.zip diff --git a/Cargo.lock b/Cargo.lock index 1fe21fa02..e20cbbf01 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4678,7 +4678,7 @@ dependencies = [ [[package]] name = "foundry-compilers" version = "0.19.1" -source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=bbb38d77478f2d30013d5d5956ead23b520fd358#bbb38d77478f2d30013d5d5956ead23b520fd358" +source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=072eff160d978e5e4248af8d56cb2c7d95b40ba9#072eff160d978e5e4248af8d56cb2c7d95b40ba9" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -4689,7 +4689,7 @@ dependencies = [ "foundry-compilers-core", "fs_extra", "futures-util", - "itertools 0.13.0", + "itertools 0.14.0", "path-slash", "rand 0.9.2", "rayon", @@ -4711,7 +4711,7 @@ dependencies = [ [[package]] name = "foundry-compilers-artifacts" version = "0.19.1" -source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=bbb38d77478f2d30013d5d5956ead23b520fd358#bbb38d77478f2d30013d5d5956ead23b520fd358" +source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=072eff160d978e5e4248af8d56cb2c7d95b40ba9#072eff160d978e5e4248af8d56cb2c7d95b40ba9" dependencies = [ "foundry-compilers-artifacts-solc", "foundry-compilers-artifacts-vyper", @@ -4720,7 +4720,7 @@ dependencies = [ [[package]] name = "foundry-compilers-artifacts-solc" version = "0.19.1" -source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=bbb38d77478f2d30013d5d5956ead23b520fd358#bbb38d77478f2d30013d5d5956ead23b520fd358" +source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=072eff160d978e5e4248af8d56cb2c7d95b40ba9#072eff160d978e5e4248af8d56cb2c7d95b40ba9" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -4742,7 +4742,7 @@ dependencies = [ [[package]] name = "foundry-compilers-artifacts-vyper" version = "0.19.1" -source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=bbb38d77478f2d30013d5d5956ead23b520fd358#bbb38d77478f2d30013d5d5956ead23b520fd358" +source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=072eff160d978e5e4248af8d56cb2c7d95b40ba9#072eff160d978e5e4248af8d56cb2c7d95b40ba9" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -4756,7 +4756,7 @@ dependencies = [ [[package]] name = "foundry-compilers-core" version = "0.19.1" -source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=bbb38d77478f2d30013d5d5956ead23b520fd358#bbb38d77478f2d30013d5d5956ead23b520fd358" +source = "git+https://github.com/SeismicSystems/seismic-compilers.git?rev=072eff160d978e5e4248af8d56cb2c7d95b40ba9#072eff160d978e5e4248af8d56cb2c7d95b40ba9" dependencies = [ "alloy-primitives", "cfg-if", diff --git a/Cargo.toml b/Cargo.toml index 343bda866..bd5754171 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -412,10 +412,10 @@ alloy-op-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev alloy-seismic-evm = { git = "https://github.com/SeismicSystems/seismic-evm.git", rev = "039d51496b9b9a0cb4fea6d606e472211b462073" } # foundry -foundry-compilers = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "bbb38d77478f2d30013d5d5956ead23b520fd358" } -foundry-compilers-artifacts = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "bbb38d77478f2d30013d5d5956ead23b520fd358" } -foundry-compilers-artifacts-solc = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "bbb38d77478f2d30013d5d5956ead23b520fd358" } -foundry-compilers-artifacts-vyper = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "bbb38d77478f2d30013d5d5956ead23b520fd358" } -foundry-compilers-core = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "bbb38d77478f2d30013d5d5956ead23b520fd358" } +foundry-compilers = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "072eff160d978e5e4248af8d56cb2c7d95b40ba9" } +foundry-compilers-artifacts = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "072eff160d978e5e4248af8d56cb2c7d95b40ba9" } +foundry-compilers-artifacts-solc = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "072eff160d978e5e4248af8d56cb2c7d95b40ba9" } +foundry-compilers-artifacts-vyper = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "072eff160d978e5e4248af8d56cb2c7d95b40ba9" } +foundry-compilers-core = { git = "https://github.com/SeismicSystems/seismic-compilers.git", rev = "072eff160d978e5e4248af8d56cb2c7d95b40ba9" } foundry-fork-db = { git = "https://github.com/SeismicSystems/seismic-foundry-fork-db.git", rev = "e5fb1f8838b517dbaaccc08a8af6767fe2e70c4e" } diff --git a/crates/cli/src/opts/build/core.rs b/crates/cli/src/opts/build/core.rs index 50ae69c8a..f6bf52ce9 100644 --- a/crates/cli/src/opts/build/core.rs +++ b/crates/cli/src/opts/build/core.rs @@ -82,6 +82,11 @@ pub struct BuildOpts { #[serde(skip)] pub via_ir: bool, + /// Allow via-IR pipeline on Seismic's ssolc (experimental). + #[arg(long, help_heading = "Compiler options")] + #[serde(skip)] + pub unsafe_via_ir: bool, + /// Changes compilation to only use literal content and not URLs. #[arg(long, help_heading = "Compiler options")] #[serde(skip)] @@ -227,6 +232,10 @@ impl Provider for BuildOpts { dict.insert("via_ir".to_string(), true.into()); } + if self.unsafe_via_ir { + dict.insert("unsafe_via_ir".to_string(), true.into()); + } + if self.use_literal_content { dict.insert("use_literal_content".to_string(), true.into()); } diff --git a/crates/config/src/lib.rs b/crates/config/src/lib.rs index 9a6394b17..49e6c787a 100644 --- a/crates/config/src/lib.rs +++ b/crates/config/src/lib.rs @@ -433,6 +433,8 @@ pub struct Config { /// If set to true, changes compilation pipeline to go through the Yul intermediate /// representation. pub via_ir: bool, + /// Allow via-IR pipeline on Seismic's ssolc (experimental, shielded type support incomplete). + pub unsafe_via_ir: bool, /// Whether to include the AST as JSON in the compiler output. pub ast: bool, /// RPC storage caching settings determines what chains and endpoints to cache @@ -1623,6 +1625,11 @@ impl Config { }), model_checker, via_ir: Some(self.via_ir), + // Only send when its explicitly set to true, since we plan for this option to be + // temporary, and so we want to remain backward and forward compatible with + // other ssolc compilers that might not recognize the option (hence sending + // false would break for no reason). + unsafe_via_ir: self.unsafe_via_ir.then_some(true), // Not used. stop_after: None, // Set in project paths. @@ -2472,6 +2479,7 @@ impl Default for Config { ignored_file_paths: vec![], deny_warnings: false, via_ir: false, + unsafe_via_ir: false, ast: false, rpc_storage_caching: Default::default(), rpc_endpoints: Default::default(), diff --git a/crates/forge/tests/cli/config.rs b/crates/forge/tests/cli/config.rs index a33859892..5461ec2c0 100644 --- a/crates/forge/tests/cli/config.rs +++ b/crates/forge/tests/cli/config.rs @@ -136,6 +136,7 @@ forgetest!(can_extract_config_values, |prj, cmd| { ignored_file_paths: vec![], deny_warnings: false, via_ir: true, + unsafe_via_ir: false, ast: false, rpc_storage_caching: StorageCachingConfig { chains: CachedChains::None, From 01828f8ecf4f897fb492f65a2c91139efa107fcd Mon Sep 17 00:00:00 2001 From: Christian Drappi Date: Fri, 27 Feb 2026 18:07:11 -0500 Subject: [PATCH 125/130] Fix block.timestamp units in sanvil (#171) ## Summary - A critical and embarassing bug: `block.timestamp` was returning (correctValue) / 1000 ## AI comments - Enable "timestamp-in-seconds" for seismic EVM so TIMESTAMP reports seconds - Align vm.warp/getBlockTimestamp to seconds --- crates/anvil/tests/it/transaction.rs | 3 ++- crates/cheatcodes/src/evm.rs | 4 ++-- crates/evm/core/Cargo.toml | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/crates/anvil/tests/it/transaction.rs b/crates/anvil/tests/it/transaction.rs index 7c49d8fc5..1d6c5f704 100644 --- a/crates/anvil/tests/it/transaction.rs +++ b/crates/anvil/tests/it/transaction.rs @@ -486,7 +486,8 @@ async fn get_blocktimestamp_works() { let timestamp = contract.getCurrentBlockTimestamp().call().await.unwrap(); - assert!(timestamp > U256::from(1)); + let ts = timestamp.to::(); + assert!(ts >= 1_000_000_000 && ts < 10_000_000_000); let latest_block = api.block_by_number(alloy_rpc_types::BlockNumberOrTag::Latest).await.unwrap().unwrap(); diff --git a/crates/cheatcodes/src/evm.rs b/crates/cheatcodes/src/evm.rs index 6640f7b14..da689b1ad 100644 --- a/crates/cheatcodes/src/evm.rs +++ b/crates/cheatcodes/src/evm.rs @@ -558,7 +558,7 @@ impl Cheatcode for txGasPriceCall { impl Cheatcode for warpCall { fn apply_stateful(&self, ccx: &mut CheatsCtxt) -> Result { let Self { newTimestamp } = self; - ccx.ecx.block.timestamp = *newTimestamp * U256::from(1000); // convert to milliseconds + ccx.ecx.block.timestamp = *newTimestamp; Ok(Default::default()) } } @@ -566,7 +566,7 @@ impl Cheatcode for warpCall { impl Cheatcode for getBlockTimestampCall { fn apply_stateful(&self, ccx: &mut CheatsCtxt) -> Result { let Self {} = self; - Ok((ccx.ecx.block.timestamp / U256::from(1000)).abi_encode()) // convert to seconds since we return block.timestamp in milliseconds + Ok(ccx.ecx.block.timestamp.abi_encode()) } } diff --git a/crates/evm/core/Cargo.toml b/crates/evm/core/Cargo.toml index 73cbc141a..9847c7ba9 100644 --- a/crates/evm/core/Cargo.toml +++ b/crates/evm/core/Cargo.toml @@ -15,7 +15,7 @@ workspace = true [dependencies] seismic-prelude.workspace = true -alloy-seismic-evm.workspace = true +alloy-seismic-evm = { workspace = true, features = ["timestamp-in-seconds"] } foundry-cheatcodes-spec.workspace = true foundry-common.workspace = true From 1fc87dc35b25b5c7aff4b0cf8e83c177bee102be Mon Sep 17 00:00:00 2001 From: Samuel Laferriere <9342524+samlaf@users.noreply.github.com> Date: Fri, 27 Feb 2026 19:12:44 -0500 Subject: [PATCH 126/130] fix(scast-call): dont default to seismictx (#170) Current behavior is for `scast call` to default to a seismictx, which requires passing a private key. That makes our scast not evm compatible, as it can't be used to read public slots without passing a private key. also changed the flag name on call from `--encryption-private-key` to `--seismic`. Sending a seismictx for eth-call now behaves exactly like `scast send` does (they both have the same exact flag). --help output looks like: ``` --seismic [] Encrypt calldata via ECDH and route through `seismic_call`. --seismic : use this hex-encoded private key for encryption --seismic: generate a random ephemeral key (omit flag): perform a standard `eth_call` ``` and is now placed under the call/send options, instead of being flattened under the wallet options where it was previously. --- crates/cast/src/cmd/call.rs | 157 +++++++++++++++++++----------------- crates/cast/src/cmd/send.rs | 14 +++- 2 files changed, 94 insertions(+), 77 deletions(-) diff --git a/crates/cast/src/cmd/call.rs b/crates/cast/src/cmd/call.rs index 4bfc9f185..640fa6e8e 100644 --- a/crates/cast/src/cmd/call.rs +++ b/crates/cast/src/cmd/call.rs @@ -1,5 +1,6 @@ use super::run::fetch_contracts_bytecode_from_trace; use crate::{ + Cast, traces::TraceKind, tx::{CastTxBuilder, SenderKind}, }; @@ -160,6 +161,16 @@ pub struct CallArgs { #[arg(long, alias = "alphanet")] pub odyssey: bool, + /// Encrypt calldata via ECDH and route through `seismic_call`. + /// + /// --seismic : use this hex-encoded private key for encryption + /// + /// --seismic: generate a random ephemeral key + /// + /// (omit flag): perform a standard `eth_call` + #[arg(long, value_name = "ENCRYPTION_PRIVATE_KEY")] + pub seismic: Option>, + #[command(subcommand)] command: Option, @@ -169,10 +180,6 @@ pub struct CallArgs { #[command(flatten)] eth: EthereumOpts, - /// Optional private key for encrypting seismic transaction - #[arg(long, help = "Private key for encrypting seismic transaction")] - pub encryption_private_key: Option, - /// Use current project artifacts for trace decoding. #[arg(long, visible_alias = "la")] pub with_local_artifacts: bool, @@ -251,7 +258,7 @@ impl CallArgs { mut tx, eth, command, - block: _, + block, trace, evm_version, debug, @@ -259,7 +266,7 @@ impl CallArgs { labels, data, with_local_artifacts, - encryption_private_key, + seismic, disable_labels, .. } = self; @@ -269,17 +276,11 @@ impl CallArgs { } let provider = utils::get_provider(&config)?; + let is_seismic = seismic.is_some(); + let sender = SenderKind::from_wallet_opts(eth.wallet.clone()).await?; let from = sender.address(); - // Get wallet signer directly for seismic transactions - let signer = eth.wallet.signer().await?; - - // set gas price if not provided - if tx.gas_price.is_none() { - tx.gas_price = Some(U256::from(provider.get_gas_price().await?)); - } - let code = if let Some(CallSubcommands::Create { code, sig: create_sig, @@ -297,14 +298,18 @@ impl CallArgs { None }; - let (tx, _func) = CastTxBuilder::new(&provider, tx, &config) + let (tx, func) = CastTxBuilder::new(&provider, tx, &config) .await? .with_to(to) .await? .with_code_sig_and_args(code, sig, args) .await? + // Upstream uses build_raw (skips filling nonce/gas) since eth_call doesn't need them. + // We use build (fills all fields) because the --seismic path needs nonce/gas for + // signing. The tx is built before branching, so both paths share this. The + // extra filling is harmless for non-seismic eth_call (the node ignores + // nonce/gas on calls). .build(sender) - // .build_raw(sender) .await?; if trace { @@ -401,67 +406,78 @@ impl CallArgs { return Ok(()); } - // Always do encryption/decryption logic - // Get or generate encryption key (generates temporary key if not provided) - let encryption_sk = get_or_generate_encryption_key(encryption_private_key)?; - let seismic_elements = create_seismic_elements(&encryption_sk); + let response = if is_seismic { + // Get wallet signer for seismic transactions (required for ECDH) + let signer = eth.wallet.signer().await?; - // Get the network's TEE public key - let network_pubkey = provider.get_tee_pubkey().await?; + let encryption_sk = get_or_generate_encryption_key(seismic.unwrap())?; + let seismic_elements = create_seismic_elements(&encryption_sk); - // Get the original transaction input data - let original_input = tx.inner.input.input().unwrap_or_default().clone(); + // Get the network's TEE public key + let network_pubkey = provider.get_tee_pubkey().await?; - // Create metadata for encryption - let legacy_fields = TxLegacyFields { - chain_id: tx.chain_id.unwrap_or_default(), - nonce: tx.nonce.unwrap_or_default(), - to: tx.to.unwrap_or_default(), - value: tx.value.unwrap_or_default(), - }; - let metadata = TxSeismicMetadata { - sender: from, - legacy_fields, - seismic_elements: seismic_elements.clone(), - }; + // Get the original transaction input data + let original_input = tx.inner.input.input().unwrap_or_default().clone(); - // Encrypt the input data - let encrypted_input = seismic_elements - .client_encrypt(&original_input, &network_pubkey, &encryption_sk, &metadata) - .map_err(|e| eyre::eyre!("Failed to encrypt input data: {}", e))?; + // Create metadata for encryption + let legacy_fields = TxLegacyFields { + chain_id: tx.chain_id.unwrap_or_default(), + nonce: tx.nonce.unwrap_or_default(), + to: tx.to.unwrap_or_default(), + value: tx.value.unwrap_or_default(), + }; + let metadata = TxSeismicMetadata { + sender: from, + legacy_fields, + seismic_elements: seismic_elements.clone(), + }; - // Create encrypted transaction - let mut encrypted_tx = tx.clone(); - encrypted_tx.inner.input = alloy_rpc_types::TransactionInput { - input: Some(Bytes::from(encrypted_input)), - data: None, - }; - encrypted_tx.inner.transaction_type = Some(seismic_prelude::foundry::TxSeismic::TX_TYPE); - encrypted_tx.seismic_elements = Some(seismic_elements.clone()); - - // Convert EIP-1559 fields back to legacy gas_price for seismic transactions - if let Some(max_fee) = encrypted_tx.inner.max_fee_per_gas { - encrypted_tx.inner.gas_price = Some(max_fee); - encrypted_tx.inner.max_fee_per_gas = None; - encrypted_tx.inner.max_priority_fee_per_gas = None; - } + // Encrypt the input data + let encrypted_input = seismic_elements + .client_encrypt(&original_input, &network_pubkey, &encryption_sk, &metadata) + .map_err(|e| eyre::eyre!("Failed to encrypt input data: {}", e))?; - // Sign the transaction to create a raw signed seismic tx - let ethereum_wallet = EthereumWallet::from(signer); - let signed_envelope = encrypted_tx.build(ðereum_wallet).await?; + // Create encrypted transaction + let mut encrypted_tx = tx.clone(); + encrypted_tx.inner.input = alloy_rpc_types::TransactionInput { + input: Some(Bytes::from(encrypted_input)), + data: None, + }; + encrypted_tx.inner.transaction_type = + Some(seismic_prelude::foundry::TxSeismic::TX_TYPE); + encrypted_tx.seismic_elements = Some(seismic_elements.clone()); + + // Convert EIP-1559 fields back to legacy gas_price for seismic transactions + if let Some(max_fee) = encrypted_tx.inner.max_fee_per_gas { + encrypted_tx.inner.gas_price = Some(max_fee); + encrypted_tx.inner.max_fee_per_gas = None; + encrypted_tx.inner.max_priority_fee_per_gas = None; + } - // Make the seismic call using signed raw transaction - let encrypted_response = provider - .seismic_call(SendableTx::Envelope(signed_envelope)) - .await - .map_err(|e| eyre::eyre!("Seismic call failed: {}", e))?; + // Sign the transaction to create a raw signed seismic tx + let ethereum_wallet = EthereumWallet::from(signer); + let signed_envelope = encrypted_tx.build(ðereum_wallet).await?; - // Decrypt the response (seismic_call should return Bytes directly, no need to decode hex) - let decrypted_response = seismic_elements - .client_decrypt(&encrypted_response, &network_pubkey, &encryption_sk, &metadata) - .map_err(|e| eyre::eyre!("Failed to decrypt response: {}", e))?; + // Make the seismic call using signed raw transaction + let encrypted_response = provider + .seismic_call(SendableTx::Envelope(signed_envelope)) + .await + .map_err(|e| eyre::eyre!("Seismic call failed: {}", e))?; + + // Decrypt the response (seismic_call returns Bytes directly, no need to decode hex) + let decrypted_response = seismic_elements + .client_decrypt(&encrypted_response, &network_pubkey, &encryption_sk, &metadata) + .map_err(|e| eyre::eyre!("Failed to decrypt response: {}", e))?; + + let response = alloy_primitives::hex::encode_prefixed(&decrypted_response); + response + } else { + let response = Cast::new(&provider) + .call(&tx, func.as_ref(), block, state_overrides, block_overrides) + .await?; + response + }; - let response = alloy_primitives::hex::encode_prefixed(&decrypted_response); if response == "0x" && let Some(contract_address) = tx.to.and_then(|tx_kind| tx_kind.into_to()) { @@ -471,11 +487,6 @@ impl CallArgs { } } sh_println!("{}", response)?; - /* - let response = Cast::new(&provider) - .call(&tx, func.as_ref(), block, state_overrides, block_overrides) - .await?; - */ Ok(()) } diff --git a/crates/cast/src/cmd/send.rs b/crates/cast/src/cmd/send.rs index c607a3e6e..8b44a2a5a 100644 --- a/crates/cast/src/cmd/send.rs +++ b/crates/cast/src/cmd/send.rs @@ -81,6 +81,16 @@ pub struct SendTxArgs { #[arg(long, default_value = "1")] confirmations: u64, + /// Encrypt calldata via ECDH and send as a Seismic transaction (type 74). + /// + /// --seismic : use this hex-encoded private key for encryption + /// + /// --seismic: generate a random ephemeral key + /// + /// (omit flag): send a standard transaction + #[arg(long, value_name = "ENCRYPTION_PRIVATE_KEY")] + pub seismic: Option>, + #[command(subcommand)] command: Option, @@ -107,10 +117,6 @@ pub struct SendTxArgs { help_heading = "Transaction options" )] path: Option, - - /// Use seismic transaction with optional encryption private key - #[arg(long, value_name = "ENCRYPTION_PRIVATE_KEY")] - pub seismic: Option>, } #[derive(Debug, Parser)] From fdde39ec9f69e088e61f023073241251332a3dee Mon Sep 17 00:00:00 2001 From: Ameya Deshmukh Date: Thu, 5 Mar 2026 01:44:07 +0530 Subject: [PATCH 127/130] ci: complete sanvil integration test coverage (#169) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary This PR increases sanvil CI test coverage from ~8 Seismic-specific tests to ~380 tests by fixing broken tests, regenerating stale fixtures, bumping dependencies, and adding new Seismic fork tests. All test exclusions are moved from CI filter expressions to `#[ignore = "reason"]` annotations on the tests themselves. ## What changed **10 previously-skipped tests fixed and re-enabled:** - `anvil_api::can_get_node_info` — expected `SpecId::PRAGUE`, changed to `SpecId::MERCURY` - `api::can_call_with_undersized_max_fee_per_gas` — was reading `last_sender` from the tx request object; now decodes from `seismic_call()` return bytes - `revert::test_solc_revert_example` — removed unused `sender` variable and `with_from(sender)` incompatible with Seismic tx flow - `api::can_call_on_pending_block` — Mercury EVM TIMESTAMP opcode returns milliseconds; divide header timestamp by 1000 before comparison - `transaction::get_blocktimestamp_works` — same timestamp fix, plus multiply mock timestamp by 1000 for `evm_set_next_block_timestamp` - `proof::test_account_proof` — regenerated hardcoded Merkle proof bytes to account for the 3 system contracts (AES_LIB, DIRECTORY, INTELLIGENCE) injected at genesis - `otterscan::test_call_ots_trace_transaction` — updated expected trace values to match Seismic trace shielding (empty `input` on top-level CALL, empty `output` on STATICCALL) - `state::can_load_existing_state_legacy_stress` — regenerated fixture from current sanvil; the old file had inconsistent storage format (2 `FlaggedStorage` entries, 1 plain hex string) from a partial conversion during the Alloy 1 merge - `state::can_load_existing_state` — bumped `seismic-revm-inspectors` to `e2a96b7d` which adds `#[serde(default)]` to `CallTrace.tx_type`, allowing old state dumps without the field to deserialize - `state::test_backward_compatibility_state_dump_deserialization_v1_2` — same dep bump **3 new Seismic fork tests added:** - `test_seismic_fork_chain_id` — forks Seismic testnet, verifies chain_id = 5124, verifies `--chain-id` override - `test_seismic_fork_block_number` — forks at block 1000, verifies block number and block data - `test_seismic_fork_send_tx` — sends an ETH transfer on forked Seismic state, verifies receipt and balance These are the Seismic equivalents of the upstream mainnet fork tests that require Ethereum mainnet RPCs. **CI workflow simplified:** The sanvil integration test step is now `cargo nextest run -p anvil --test it` with no filter expressions. All skipped tests use `#[ignore = "reason"]` directly on the test function. Reasons fall into four categories: - `"requires mainnet fork RPC"` — 64 tests across fork.rs, anvil_api.rs, state.rs, simulate.rs, traces.rs, genesis.rs - `"Mercury is post-Cancun; ..."` / `"Mercury has EIP-1559; ..."` / `"Mercury accepts EIP-1559 by design"` / `"Mercury doesn't include Osaka gas limit caps"` — 4 tests with hardfork incompatibilities - `"EIP-4844 blob support not wired through Seismic type forks"` — 4 tests blocked on blob support across seismic-alloy/seismic-evm/seismic-revm - `"CheatEcrecover not wired into SeismicPrecompiles; needs SharedBuffer handling in inspector"` — 1 test for `anvil_impersonate_signature`; the inspector `call()` hook fires correctly but needs EVM context to resolve SharedBuffer input **Dependency bump:** `seismic-revm-inspectors` bumped from `9e26c0a` to `e2a96b7d` — adds `#[serde(default)]` to `CallTrace.tx_type` so old state dumps without the field deserialize correctly. `CallTrace.tx_type` defaults to `0` (legacy), which is safe because nothing reads it from deserialized state — the trace shielding code that would use it is still a TODO. --- .github/workflows/seismic.yml | 11 +-- Cargo.lock | 26 +++---- Cargo.toml | 2 +- crates/anvil/core/src/eth/transaction/mod.rs | 1 + crates/anvil/src/eth/backend/mem/storage.rs | 5 ++ .../test-data/state-dump-legacy-stress.json | 2 +- crates/anvil/tests/it/anvil.rs | 2 + crates/anvil/tests/it/anvil_api.rs | 10 ++- crates/anvil/tests/it/api.rs | 5 +- crates/anvil/tests/it/eip4844.rs | 4 + crates/anvil/tests/it/fork.rs | 55 ++++++++++++++ crates/anvil/tests/it/genesis.rs | 1 + crates/anvil/tests/it/otterscan.rs | 8 +- crates/anvil/tests/it/proof.rs | 14 +++- crates/anvil/tests/it/revert.rs | 7 +- crates/anvil/tests/it/seismic.rs | 74 ++++++++++++++++++- crates/anvil/tests/it/simulate.rs | 1 + crates/anvil/tests/it/state.rs | 2 + crates/anvil/tests/it/traces.rs | 2 + crates/anvil/tests/it/transaction.rs | 2 + 20 files changed, 197 insertions(+), 37 deletions(-) diff --git a/.github/workflows/seismic.yml b/.github/workflows/seismic.yml index 737133e3c..e9fad8543 100644 --- a/.github/workflows/seismic.yml +++ b/.github/workflows/seismic.yml @@ -83,11 +83,12 @@ jobs: run: cargo nextest run test_seismic_ - name: private storage tests run: cargo nextest run private_storage_ - # TODO: make these work & run - # - name: sforge tests - # run: cargo test --bin sforge - # - name: sanvil tests - # run: cargo test --bin sanvil + - name: anvil-core unit tests + run: cargo nextest run -p anvil-core + - name: foundry-config unit tests + run: cargo nextest run -p foundry-config + - name: sanvil integration tests + run: cargo nextest run -p anvil --test it viem: runs-on: large-github-runner diff --git a/Cargo.lock b/Cargo.lock index e20cbbf01..661efd2c7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3697,7 +3697,7 @@ dependencies = [ "libc", "option-ext", "redox_users", - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -3962,7 +3962,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] @@ -6166,7 +6166,7 @@ checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46" dependencies = [ "hermit-abi", "libc", - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] @@ -6220,7 +6220,7 @@ dependencies = [ "portable-atomic", "portable-atomic-util", "serde_core", - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] @@ -7236,7 +7236,7 @@ version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -8356,7 +8356,7 @@ dependencies = [ "once_cell", "socket2 0.6.1", "tracing", - "windows-sys 0.60.2", + "windows-sys 0.52.0", ] [[package]] @@ -8766,7 +8766,7 @@ dependencies = [ [[package]] name = "revm-inspectors" version = "0.29.0" -source = "git+https://github.com/SeismicSystems/seismic-revm-inspectors.git?rev=9e26c0a55f522ad7d8cf4716d9df9d79b8116d52#9e26c0a55f522ad7d8cf4716d9df9d79b8116d52" +source = "git+https://github.com/SeismicSystems/seismic-revm-inspectors.git?rev=e2a96b7d86ce7ee0d6a0f63c571e7b8f6d900e0e#e2a96b7d86ce7ee0d6a0f63c571e7b8f6d900e0e" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -9062,7 +9062,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys 0.11.0", - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] @@ -10069,7 +10069,7 @@ dependencies = [ "solar-config", "solar-data-structures", "solar-macros", - "thiserror 2.0.17", + "thiserror 1.0.69", "tracing", "unicode-width 0.2.0", ] @@ -10410,7 +10410,7 @@ dependencies = [ "serde_json", "sha2", "tempfile", - "thiserror 2.0.17", + "thiserror 1.0.69", "url", "zip", ] @@ -10517,7 +10517,7 @@ dependencies = [ "getrandom 0.3.4", "once_cell", "rustix 1.1.3", - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] @@ -10537,7 +10537,7 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8c27177b12a6399ffc08b98f76f7c9a1f4fe9fc967c784c5a071fa8d93cf7e1" dependencies = [ - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -11839,7 +11839,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index bd5754171..38fa94e00 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -397,7 +397,7 @@ revm-primitives = { git = "https://github.com/SeismicSystems/seismic-revm.git", op-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "ed81a1d6a89a8ffbf816d52715a3260b040c98bb" } seismic-revm = { git = "https://github.com/SeismicSystems/seismic-revm.git", rev = "ed81a1d6a89a8ffbf816d52715a3260b040c98bb" } -revm-inspectors = { git = "https://github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "9e26c0a55f522ad7d8cf4716d9df9d79b8116d52" } +revm-inspectors = { git = "https://github.com/SeismicSystems/seismic-revm-inspectors.git", rev = "e2a96b7d86ce7ee0d6a0f63c571e7b8f6d900e0e" } # seismic-alloy seismic-alloy-consensus = { git = "https://github.com/SeismicSystems/seismic-alloy.git", rev = "ebc3628c9e384b1db5a41044dd32756b3e79aacb" } diff --git a/crates/anvil/core/src/eth/transaction/mod.rs b/crates/anvil/core/src/eth/transaction/mod.rs index 720c7a891..332e80cd5 100644 --- a/crates/anvil/core/src/eth/transaction/mod.rs +++ b/crates/anvil/core/src/eth/transaction/mod.rs @@ -1263,6 +1263,7 @@ pub struct TransactionInfo { pub out: Option, pub nonce: u64, pub gas_used: u64, + #[serde(default)] pub tx_type: Option, } diff --git a/crates/anvil/src/eth/backend/mem/storage.rs b/crates/anvil/src/eth/backend/mem/storage.rs index b82508db7..75633125f 100644 --- a/crates/anvil/src/eth/backend/mem/storage.rs +++ b/crates/anvil/src/eth/backend/mem/storage.rs @@ -579,6 +579,11 @@ impl MinedTransaction { ); // TODO: for shielding the trace + // NOTE: CallTrace.tx_type defaults to 0 via #[serde(default)] + // for state dumps created before the field existed (pre Oct 2025). + // This is safe because the shielding check below only acts on + // TxSeismic::TX_TYPE (74), so old traces with tx_type=0 are + // correctly left unshielded. /* frame.tx_type = self.info.tx_type.unwrap_or_default(); if frame.tx_type == diff --git a/crates/anvil/test-data/state-dump-legacy-stress.json b/crates/anvil/test-data/state-dump-legacy-stress.json index 0d5418a4c..460e065d4 100644 --- a/crates/anvil/test-data/state-dump-legacy-stress.json +++ b/crates/anvil/test-data/state-dump-legacy-stress.json @@ -1 +1 @@ -{"block":{"number":5,"beneficiary":"0x0000000000000000000000000000000000000000","timestamp":1722941643,"gas_limit":30000000,"basefee":316710010,"difficulty":"0x0","prevrandao":"0xe7ef87fc7c2090741a6749a087e4ca8092cb4d07136008799e4ebeac3b69e34a","blob_excess_gas_and_price":{"excess_blob_gas":0,"blob_gasprice":1}},"accounts":{"0x0000000000000000000000000000000000000000":{"nonce":0,"balance":"0x1088aa62285a00","code":"0x","storage":{}},"0x108f53faf774d7c4c56f5bce9ca6e605ce8aeadd":{"nonce":1,"balance":"0x0","code":"0x6080604052600080357fffffffff0000000000000000000000000000000000000000000000000000000016905060008160e01c610251565b60006379ba509782101561015e5781631627540c811461009857632a952b2d81146100b457633659cfe681146100d0576350c946fe81146100ec576353a47bb781146101085763625ca21c81146101245763718fe928811461014057610158565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc9150610158565b738138ef7cf908021d117e542120b7a390650161079150610158565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc9150610158565b738138ef7cf908021d117e542120b7a390650161079150610158565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc9150610158565b738138ef7cf908021d117e542120b7a390650161079150610158565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc91505b5061024c565b816379ba509781146101a657638da5cb5b81146101c25763aaf10f4281146101de5763c7f62cda81146101fa5763daa250be81146102165763deba1b9881146102325761024a565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc915061024a565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc915061024a565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc915061024a565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc915061024a565b738138ef7cf908021d117e542120b7a39065016107915061024a565b738138ef7cf908021d117e542120b7a3906501610791505b505b919050565b61025a81610037565b915050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036102ce57816040517fc2a825f50000000000000000000000000000000000000000000000000000000081526004016102c5919061032f565b60405180910390fd5b3660008037600080366000845af43d6000803e80600081146102ef573d6000f35b3d6000fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610329816102f4565b82525050565b60006020820190506103446000830184610320565b9291505056fea264697066735822122017a4b7fdaaab3897a7b47abaed8d2ee92d558883d3bb2a8454f9601b2ab2c3db64736f6c63430008150033","storage":{}},"0x14dc79964da2c08b23698b3d3cc7ca32193d9955":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x15d34aaf54267db7d7c367839aaf71a00a2c6a65":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x19ba1fac55eea44d12a01372a8eb0c2ebbf9ca21":{"nonce":1,"balance":"0x21e19df7c2963f0ac6b","code":"0x","storage":{}},"0x19c6ab860dbe2bc433574193a4409770a8748bf6":{"nonce":1,"balance":"0x21e19df8da6b7bdc410","code":"0x","storage":{}},"0x23618e81e3f5cdf7f54c3d65f7fbc0abf5b21e8f":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x40567ec443c1d1872af5155755ac3803cc3fe61e":{"nonce":1,"balance":"0x21e19da82562f921b40","code":"0x","storage":{}},"0x47d08dad17ccb558b3ea74b1a0e73a9cc804a9dc":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100885760003560e01c806379ba50971161005b57806379ba5097146100ed5780638da5cb5b146100f7578063aaf10f4214610115578063c7f62cda1461013357610088565b80631627540c1461008d5780633659cfe6146100a957806353a47bb7146100c5578063718fe928146100e3575b600080fd5b6100a760048036038101906100a29190610d25565b61014f565b005b6100c360048036038101906100be9190610d25565b6102d0565b005b6100cd6102e4565b6040516100da9190610d61565b60405180910390f35b6100eb610317565b005b6100f56103fe565b005b6100ff61058b565b60405161010c9190610d61565b60405180910390f35b61011d6105be565b60405161012a9190610d61565b60405180910390f35b61014d60048036038101906101489190610d25565b6105f1565b005b61015761084c565b600061016161081b565b9050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036101c9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610252576040517fa88ee57700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce22826040516102c49190610d61565b60405180910390a15050565b6102d861084c565b6102e1816108c5565b50565b60006102ee61081b565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061032161081b565b90503373ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146103b757336040517fa0e5a0d70000000000000000000000000000000000000000000000000000000081526004016103ae9190610d61565b60405180910390fd5b60008160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061040861081b565b905060008160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104a357336040517fa0e5a0d700000000000000000000000000000000000000000000000000000000815260040161049a9190610d61565b60405180910390fd5b7fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c8260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826040516104f8929190610d7c565b60405180910390a1808260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008260010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600061059561081b565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006105c8610b05565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006105fb610b05565b905060018160000160146101000a81548160ff02191690831515021790555060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16633659cfe6846040516024016106cc9190610d61565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161071b9190610e16565b600060405180830381855af49150503d8060008114610756576040519150601f19603f3d011682016040523d82523d6000602084013e61075b565b606091505b505090508015806107c357508173ffffffffffffffffffffffffffffffffffffffff16610786610b05565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b156107fa576040517fa1cfa5a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008360000160146101000a81548160ff0219169083151502179055600080fd5b60008060405160200161082d90610eb0565b6040516020818303038152906040528051906020012090508091505090565b610854610b36565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108c357336040517f8e4a23d60000000000000000000000000000000000000000000000000000000081526004016108ba9190610d61565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361092b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093481610b69565b61097557806040517f8a8b41ec00000000000000000000000000000000000000000000000000000000815260040161096c9190610d61565b60405180910390fd5b600061097f610b05565b90508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a0a576040517fa88ee57700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060000160149054906101000a900460ff16158015610a2e5750610a2d82610b7c565b5b15610a7057816040517f15504301000000000000000000000000000000000000000000000000000000008152600401610a679190610d61565b60405180910390fd5b818160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503073ffffffffffffffffffffffffffffffffffffffff167f5d611f318680d00598bb735d61bacf0c514c6b50e1e5ad30040a4df2b12791c783604051610af99190610d61565b60405180910390a25050565b600080604051602001610b1790610f42565b6040516020818303038152906040528051906020012090508091505090565b6000610b4061081b565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080823b905060008111915050919050565b60008060003073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1663c7f62cda86604051602401610bc59190610d61565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610c149190610e16565b600060405180830381855af49150503d8060008114610c4f576040519150601f19603f3d011682016040523d82523d6000602084013e610c54565b606091505b509150915081158015610cb9575063a1cfa5a860e01b604051602001610c7a9190610faf565b6040516020818303038152906040528051906020012081604051602001610ca19190610e16565b60405160208183030381529060405280519060200120145b92505050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610cf282610cc7565b9050919050565b610d0281610ce7565b8114610d0d57600080fd5b50565b600081359050610d1f81610cf9565b92915050565b600060208284031215610d3b57610d3a610cc2565b5b6000610d4984828501610d10565b91505092915050565b610d5b81610ce7565b82525050565b6000602082019050610d766000830184610d52565b92915050565b6000604082019050610d916000830185610d52565b610d9e6020830184610d52565b9392505050565b600081519050919050565b600081905092915050565b60005b83811015610dd9578082015181840152602081019050610dbe565b60008484015250505050565b6000610df082610da5565b610dfa8185610db0565b9350610e0a818560208601610dbb565b80840191505092915050565b6000610e228284610de5565b915081905092915050565b600082825260208201905092915050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e4f776e6160008201527f626c650000000000000000000000000000000000000000000000000000000000602082015250565b6000610e9a602383610e2d565b9150610ea582610e3e565b604082019050919050565b60006020820190508181036000830152610ec981610e8d565b9050919050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e50726f7860008201527f7900000000000000000000000000000000000000000000000000000000000000602082015250565b6000610f2c602183610e2d565b9150610f3782610ed0565b604082019050919050565b60006020820190508181036000830152610f5b81610f1f565b9050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b610fa9610fa482610f62565b610f8e565b82525050565b6000610fbb8284610f98565b6004820191508190509291505056fea264697066735822122023a7c33d7b91dce35ffbcf8837693364ab22a3905d0fc00016833e5fac45ca2f64736f6c63430008110033","storage":{"0x5c7865864a2a990d80b5bb5c40e7b73a029960dc711fbb56120dfab976e92ea3":{"value": "0x0", "is_private": false}}},"0x4e59b44847b379578588920ca78fbf26c0b4956c":{"nonce":2,"balance":"0x0","code":"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf3","storage":{}},"0x70997970c51812dc3a010c7d01b50e0d17dc79c8":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x8138ef7cf908021d117e542120b7a39065016107":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100575760003560e01c80632a952b2d1461005c57806350c946fe14610085578063625ca21c146100a5578063daa250be146100c6578063deba1b98146100d9575b600080fd5b61006f61006a366004613a63565b6100ec565b60405161007c9190613a7c565b60405180910390f35b610098610093366004613a63565b61011c565b60405161007c9190613b21565b6100b86100b3366004613c92565b610276565b60405190815260200161007c565b61006f6100d4366004613d5f565b6102bb565b6100b86100e7366004613c92565b6102d6565b6100f46139e4565b6040805160008082526020820190815281830190925261011691849190610310565b92915050565b6101416040805160608101909152806000815260200160608152602001606081525090565b61014a82610ab6565b60408051606081019091528154909190829060ff16600981111561017057610170613aa7565b600981111561018157610181613aa7565b815260200160018201805461019590613dc2565b80601f01602080910402602001604051908101604052809291908181526020018280546101c190613dc2565b801561020e5780601f106101e35761010080835404028352916020019161020e565b820191906000526020600020905b8154815290600101906020018083116101f157829003601f168201915b505050505081526020016002820180548060200260200160405190810160405280929190818152602001828054801561026657602002820191906000526020600020905b815481526020019060010190808311610252575b5050505050815250509050919050565b600080604051806060016040528086600981111561029657610296613aa7565b81526020018581526020018481525090506102b081610ac1565b9150505b9392505050565b6102c36139e4565b6102ce848484610310565b949350505050565b60008060405180606001604052808660098111156102f6576102f6613aa7565b81526020018581526020018481525090506102b081610acc565b6103186139e4565b81518351146103a05760408051634bab873760e11b81526004810191909152600d60448201526c72756e74696d6556616c75657360981b606482015260806024820152602260848201527f6d7573742062652073616d65206c656e6774682061732072756e74696d654b6560a482015261797360f01b60c482015260e4015b60405180910390fd5b60006103ab85610c26565b805490915060ff1660018160098111156103c7576103c7613aa7565b036104755761046c6103da838787610c84565b8360010180546103e990613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461041590613dc2565b80156104625780601f1061043757610100808354040283529160200191610462565b820191906000526020600020905b81548152906001019060200180831161044557829003601f168201915b5050505050610d46565b925050506102b4565b600281600981111561048957610489613aa7565b036105305761046c61049c838787610c84565b8360010180546104ab90613dc2565b80601f01602080910402602001604051908101604052809291908181526020018280546104d790613dc2565b80156105245780601f106104f957610100808354040283529160200191610524565b820191906000526020600020905b81548152906001019060200180831161050757829003601f168201915b50505050508787610ebb565b600381600981111561054457610544613aa7565b036105de5761046c82600101805461055b90613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461058790613dc2565b80156105d45780601f106105a9576101008083540402835291602001916105d4565b820191906000526020600020905b8154815290600101906020018083116105b757829003601f168201915b5050505050610f59565b60048160098111156105f2576105f2613aa7565b0361068c5761046c82600101805461060990613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461063590613dc2565b80156106825780601f1061065757610100808354040283529160200191610682565b820191906000526020600020905b81548152906001019060200180831161066557829003601f168201915b5050505050611087565b60058160098111156106a0576106a0613aa7565b0361073a5761046c8260010180546106b790613dc2565b80601f01602080910402602001604051908101604052809291908181526020018280546106e390613dc2565b80156107305780601f1061070557610100808354040283529160200191610730565b820191906000526020600020905b81548152906001019060200180831161071357829003601f168201915b505050505061131e565b600981600981111561074e5761074e613aa7565b036107ea5761046c82600101805461076590613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461079190613dc2565b80156107de5780601f106107b3576101008083540402835291602001916107de565b820191906000526020600020905b8154815290600101906020018083116107c157829003601f168201915b505050505086866114b5565b60068160098111156107fe576107fe613aa7565b036108a35761046c610811838787610c84565b83600101805461082090613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461084c90613dc2565b80156108995780601f1061086e57610100808354040283529160200191610899565b820191906000526020600020905b81548152906001019060200180831161087c57829003601f168201915b50505050506115c7565b60078160098111156108b7576108b7613aa7565b036109ec576040805160608101909152825461046c91908490829060ff1660098111156108e6576108e6613aa7565b60098111156108f7576108f7613aa7565b815260200160018201805461090b90613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461093790613dc2565b80156109845780601f1061095957610100808354040283529160200191610984565b820191906000526020600020905b81548152906001019060200180831161096757829003601f168201915b50505050508152602001600282018054806020026020016040519081016040528092919081815260200182805480156109dc57602002820191906000526020600020905b8154815260200190600101908083116109c8575b5050505050815250508686611728565b6008816009811115610a0057610a00613aa7565b03610a9a5761046c826001018054610a1790613dc2565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4390613dc2565b8015610a905780601f10610a6557610100808354040283529160200191610a90565b820191906000526020600020905b815481529060010190602001808311610a7357829003601f168201915b50505050506118a5565b6040516323a9bbc960e01b815260048101879052602401610397565b600061011682610c26565b6000610116826118ea565b6000610ad782610ac1565b9050610ae28161192a565b15610b35577fcb64985827770858ec421ad26da7e558c757541643036ce44d6b4eb9e8e5dc5e81836000015184602001518560400151604051610b289493929190613e32565b60405180910390a1919050565b610b3e82611a8c565b610b5d578160405163382bbbc960e11b81526004016103979190613b21565b60005b826040015151811015610bd957610b9383604001518281518110610b8657610b86613e6a565b602002602001015161192a565b610bd15782604001518181518110610bad57610bad613e6a565b6020026020010151604051632f19f96160e11b815260040161039791815260200190565b600101610b60565b50610be382611c31565b8351602085015160408087015190519395507fcb64985827770858ec421ad26da7e558c757541643036ce44d6b4eb9e8e5dc5e9450610b28938693929190613e32565b604080516020808201839052606082018190527f696f2e73796e7468657469782e6f7261636c652d6d616e616765722e4e6f6465608080840191909152828401949094528251808303909401845260a0909101909152815191012090565b600283015460609067ffffffffffffffff811115610ca457610ca4613b9a565b604051908082528060200260200182016040528015610cdd57816020015b610cca6139e4565b815260200190600190039081610cc25790505b50905060005b6002850154811015610d3e57610d19856002018281548110610d0757610d07613e6a565b90600052602060002001548585610310565b828281518110610d2b57610d2b613e6a565b6020908102919091010152600101610ce3565b509392505050565b610d4e6139e4565b600082806020019051810190610d649190613e80565b90506000816008811115610d7a57610d7a613aa7565b03610d9057610d8884611ca5565b915050610116565b6001816008811115610da457610da4613aa7565b03610db257610d8884611d0d565b6002816008811115610dc657610dc6613aa7565b03610dd457610d8884611d90565b6003816008811115610de857610de8613aa7565b03610df657610d8884611e13565b6004816008811115610e0a57610e0a613aa7565b03610e1857610d8884611ec9565b6005816008811115610e2c57610e2c613aa7565b03610e3a57610d8884612009565b6006816008811115610e4e57610e4e613aa7565b03610e5c57610d88846120e4565b6007816008811115610e7057610e70613aa7565b03610e7e57610d888461220c565b6008816008811115610e9257610e92613aa7565b03610ea057610d88846122ce565b80604051631be413d360e11b81526004016103979190613ea1565b610ec36139e4565b600084806020019051810190610ed99190613ed3565b604051631ecba7c360e31b81529091506001600160a01b0382169063f65d3e1890610f0e908990899089908990600401613ef0565b608060405180830381865afa158015610f2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4f9190613f91565b9695505050505050565b610f616139e4565b600080600084806020019051810190610f7a9190613fe8565b92509250925060008390506000806000836001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610fc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fec9190614041565b509350509250925060008660001461100f5761100a8585858a6123c7565b611011565b825b905060128660ff161161103b5761103661102f60ff881660126140a7565b82906124c2565b611053565b61105361104c601260ff89166140a7565b82906124dc565b9050604051806080016040528082815260200183815260200160008152602001600081525098505050505050505050919050565b61108f6139e4565b600080600080600080878060200190518101906110ac91906140ba565b604080516002808252606082018352979d50959b50939950919750955093506000929060208301908036833701905050905081816000815181106110f2576110f2613e6a565b602002602001019063ffffffff16908163ffffffff168152505060008160018151811061112157611121613e6a565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0385169063883bdbfd90611165908590600401614143565b600060405180830381865afa158015611182573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111aa91908101906141f5565b5090506000816000815181106111c2576111c2613e6a565b6020026020010151826001815181106111dd576111dd613e6a565b60200260200101516111ef91906142c1565b9050600061121761120563ffffffff87166124f6565b61120f9084614304565b60060b61252d565b905060008260060b12801561124c575061123b63ffffffff8616612569565b612569565b8260060b6112499190614342565b15155b1561125f578061125b81614356565b9150505b600061126d6012600a61445d565b9050600061128061123684848f8f612593565b905060006112908a60ff16612569565b61129c8c60ff16612569565b6112a6919061446c565b905060008082136112d1576112cc6112c56112c084614493565b612686565b84906124dc565b6112e4565b6112e46112dd83612686565b84906124c2565b905060405180608001604052808281526020014281526020016000815260200160008152509e505050505050505050505050505050919050565b6113266139e4565b60008060008480602001905181019061133f91906144bf565b91945092509050826000826113bc576040516396834ad360e01b8152600481018590526001600160a01b038316906396834ad390602401608060405180830381865afa158015611393573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b791906144f5565b611425565b604051639474f45b60e01b8152600481018590526001600160a01b03831690639474f45b90602401608060405180830381865afa158015611401573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142591906144f5565b90506000816040015160030b601261143d919061456f565b90506000808213611467576114626114576112c084614493565b845160070b906124dc565b61147e565b61147e61147383612686565b845160070b906124c2565b9050604051806080016040528082815260200184606001518152602001600081526020016000815250975050505050505050919050565b6114bd6139e4565b6000806000868060200190518101906114d69190614597565b92509250925060005b8651811015611545578681815181106114fa576114fa613e6a565b6020026020010151717374616c656e657373546f6c6572616e636560701b0361153d5785818151811061152f5761152f613e6a565b602002602001015160001c91505b6001016114df565b5060408051600180825281830190925260009160208083019080368337019050509050828160008151811061157c5761157c613e6a565b602002602001018181525050836001838360405160200161159f939291906145ce565b60408051601f198184030181529082905263cf2cabdf60e01b82526103979291600401614603565b6115cf6139e4565b6000828060200190518101906115e59190614627565b90506000846000815181106115fc576115fc613e6a565b602002602001015160000151905060008560018151811061161f5761161f613e6a565b6020026020010151600001519050808214611702576000611653601261164d611648858761446c565b6126a9565b906124c2565b905082158061167b5750611666836126a9565b6116709082614640565b61167985612569565b125b15611700576002875111156116b0578660028151811061169d5761169d613e6a565b6020026020010151945050505050610116565b826000036116d15760405163014cc07160e01b815260040160405180910390fd5b6116da836126a9565b6116e49082614640565b60405163dcac091960e01b815260040161039791815260200190565b505b8560008151811061171557611715613e6a565b6020026020010151935050505092915050565b6117306139e4565b6000846020015180602001905181019061174a9190614627565b905060005b84518110156117bc5784818151811061176a5761176a613e6a565b6020026020010151717374616c656e657373546f6c6572616e636560701b036117b4576117ad8482815181106117a2576117a2613e6a565b602002602001015190565b91506117bc565b60010161174f565b50600085604001516000815181106117d6576117d6613e6a565b6020026020010151905060006117ed828787610310565b60208101519091506117ff84426140a7565b1161180e5792506102b4915050565b86604001515160010361187157866040015160008151811061183257611832613e6a565b602002602001015181600001518260200151604051631808066560e21b8152600401610397939291909283526020830191909152604082015260600190565b61189a876040015160018151811061188b5761188b613e6a565b60200260200101518787610310565b979650505050505050565b6118ad6139e4565b6040518060800160405280838060200190518101906118cc9190614627565b81526020014281526020016000815260200160008152509050919050565b600081600001518260200151836040015160405160200161190d9392919061466e565b604051602081830303815290604052805190602001209050919050565b60008061193683610c26565b60408051606081019091528154909190829060ff16600981111561195c5761195c613aa7565b600981111561196d5761196d613aa7565b815260200160018201805461198190613dc2565b80601f01602080910402602001604051908101604052809291908181526020018280546119ad90613dc2565b80156119fa5780601f106119cf576101008083540402835291602001916119fa565b820191906000526020600020905b8154815290600101906020018083116119dd57829003601f168201915b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015611a5257602002820191906000526020600020905b815481526020019060010190808311611a3e575b505050505081525050905060006009811115611a7057611a70613aa7565b81516009811115611a8357611a83613aa7565b14159392505050565b6000600182516009811115611aa357611aa3613aa7565b1480611ac15750600682516009811115611abf57611abf613aa7565b145b80611ade5750600782516009811115611adc57611adc613aa7565b145b15611aee57611aec826126c1565b505b600182516009811115611b0357611b03613aa7565b03611b11576101168261284a565b600282516009811115611b2657611b26613aa7565b03611b3457610116826128a5565b600382516009811115611b4957611b49613aa7565b03611b575761011682612973565b600482516009811115611b6c57611b6c613aa7565b03611b7a5761011682612aae565b600582516009811115611b8f57611b8f613aa7565b03611b9d5761011682612e92565b600982516009811115611bb257611bb2613aa7565b03611bc05761011682612fcb565b600682516009811115611bd557611bd5613aa7565b03611be3576101168261300e565b600782516009811115611bf857611bf8613aa7565b03611c065761011682613052565b600882516009811115611c1b57611c1b613aa7565b03611c295761011682613078565b506000919050565b600080611c3d836118ea565b9050611c4881610c26565b8351815491935090839060ff19166001836009811115611c6a57611c6a613aa7565b021790555060208301516001830190611c8390826146ed565b5060408301518051611c9f916002850191602090910190613a0c565b50915091565b611cad6139e4565b60005b8251811015611d07578160200151838281518110611cd057611cd0613e6a565b6020026020010151602001511115611cff57828181518110611cf457611cf4613e6a565b602002602001015191505b600101611cb0565b50919050565b611d156139e4565b81600081518110611d2857611d28613e6a565b602002602001015190506000600190505b8251811015611d07578160000151838281518110611d5957611d59613e6a565b6020026020010151600001511215611d8857828181518110611d7d57611d7d613e6a565b602002602001015191505b600101611d39565b611d986139e4565b81600081518110611dab57611dab613e6a565b602002602001015190506000600190505b8251811015611d07578160000151838281518110611ddc57611ddc613e6a565b6020026020010151600001511315611e0b57828181518110611e0057611e00613e6a565b602002602001015191505b600101611dbc565b611e1b6139e4565b60005b8251811015611e9557828181518110611e3957611e39613e6a565b60200260200101516000015182600001818151611e56919061456f565b9052508251839082908110611e6d57611e6d613e6a565b60200260200101516020015182602001818151611e8a91906147ad565b905250600101611e1e565b50611ea08251612569565b8151611eac9190614640565b815281516020820151611ebf91906147c0565b6020820152919050565b611ed16139e4565b611eed826000611ee86001865161123691906140a7565b6130a4565b60028251611efb91906147d4565b600003611fd65760408051600280825260608201909252600091816020015b611f226139e4565b815260200190600190039081611f1a57905050905082600160028551611f4891906147c0565b611f5291906140a7565b81518110611f6257611f62613e6a565b602002602001015181600081518110611f7d57611f7d613e6a565b60200260200101819052508260028451611f9791906147c0565b81518110611fa757611fa7613e6a565b602002602001015181600181518110611fc257611fc2613e6a565b60200260200101819052506102b481611e13565b8160028351611fe591906147c0565b81518110611ff557611ff5613e6a565b60200260200101519050919050565b919050565b6120116139e4565b8160008151811061202457612024613e6a565b60209081029190910101515181528151829060009061204557612045613e6a565b6020908102919091018101518101519082015260015b82518110156120d25782818151811061207657612076613e6a565b6020026020010151600001518260000181815161209391906147e8565b90525082518390829081106120aa576120aa613e6a565b602002602001015160200151826020018181516120c791906147ad565b90525060010161205b565b5081518160200151611ebf91906147c0565b6120ec6139e4565b816000815181106120ff576120ff613e6a565b60209081029190910101515181528151829060009061212057612120613e6a565b6020908102919091018101518101519082015260015b82518110156120d25782818151811061215157612151613e6a565b60200260200101516000015160000361219e5782818151811061217657612176613e6a565b6020026020010151600001516040516338ee04a760e01b815260040161039791815260200190565b8281815181106121b0576121b0613e6a565b602002602001015160000151826000018181516121cd9190614640565b90525082518390829081106121e4576121e4613e6a565b6020026020010151602001518260200181815161220191906147ad565b905250600101612136565b6122146139e4565b8160008151811061222757612227613e6a565b60209081029190910101515181528151829060009061224857612248613e6a565b6020908102919091018101518101519082015260015b82518110156120d25761229083828151811061227c5761227c613e6a565b602090810291909101015151835190613264565b825282518390829081106122a6576122a6613e6a565b602002602001015160200151826020018181516122c391906147ad565b90525060010161225e565b6122d66139e4565b816000815181106122e9576122e9613e6a565b60209081029190910101515181528151829060009061230a5761230a613e6a565b6020908102919091018101518101519082015260015b82518110156120d25782818151811061233b5761233b613e6a565b6020026020010151600001516000036123605782818151811061217657612176613e6a565b61238983828151811061237557612375613e6a565b602090810291909101015151835190613283565b8252825183908290811061239f5761239f613e6a565b602002602001015160200151826020018181516123bc91906147ad565b905250600101612320565b6000826001826123d785426140a7565b90505b69ffffffffffffffffffff8716156124a3576001600160a01b038816639a6fc8f561240489614818565b6040516001600160e01b031960e084901b16815269ffffffffffffffffffff8216600482015290995060240160a060405180830381865afa925050508015612469575060408051601f3d908101601f1916820190925261246691810190614041565b60015b156124a357858210156124805750505050506124a3565b61248a848961456f565b97508661249681614834565b97505050505050506123da565b6124ac82612569565b6124b69084614640565b98975050505050505050565b60006124d261123683600a61484d565b6102b490846147e8565b60006124ec61123683600a61484d565b6102b49084614640565b6000667fffffffffffff66ffffffffffffff83161115612529576040516329d2678160e21b815260040160405180910390fd5b5090565b6000627fffff19600683900b128061254b5750627fffff600683900b135b1561252957604051630d962f7960e21b815260040160405180910390fd5b60006001600160ff1b038211156125295760405163677c430560e11b815260040160405180910390fd5b60008061259f86613298565b90506fffffffffffffffffffffffffffffffff6001600160a01b0382161161261c5760006125d66001600160a01b03831680614859565b9050836001600160a01b0316856001600160a01b03161061260557612600600160c01b87836136cd565b612614565b6126148187600160c01b6136cd565b92505061267d565b600061263b6001600160a01b03831680680100000000000000006136cd565b9050836001600160a01b0316856001600160a01b03161061266a57612665600160801b87836136cd565b612679565b6126798187600160801b6136cd565b9250505b50949350505050565b6000808212156125295760405163029f024d60e31b815260040160405180910390fd5b600080821215612529576126bc82614493565b610116565b6000805b8260400151518110156128415760006126fa846040015183815181106126ed576126ed613e6a565b6020026020010151610ab6565b60408051606081019091528154909190829060ff16600981111561272057612720613aa7565b600981111561273157612731613aa7565b815260200160018201805461274590613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461277190613dc2565b80156127be5780601f10612793576101008083540402835291602001916127be565b820191906000526020600020905b8154815290600101906020018083116127a157829003601f168201915b505050505081526020016002820180548060200260200160405190810160405280929190818152602001828054801561281657602002820191906000526020600020905b815481526020019060010190808311612802575b505050505081525050905061282a81611a8c565b612838575060009392505050565b506001016126c5565b50600192915050565b60006002826040015151101561286257506000919050565b81602001515160201461287757506000919050565b600082602001518060200190518101906128919190614627565b905060088111156128415750600092915050565b6000602082602001515110156128bd57506000919050565b600082602001518060200190518101906128d79190613ed3565b90506128ea816306e7ea3960e21b6138e2565b6128f75750600092915050565b604051633b70a5bf60e21b81526001600160a01b0382169063edc296fc90612923908690600401613b21565b6020604051808303816000875af1158015612942573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129669190614870565b6128415750600092915050565b6040810151516000901561298957506000919050565b81602001515160601461299e57506000919050565b60008083602001518060200190518101906129b99190613fe8565b92505091506000829050806001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015612a01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a259190614041565b5050505050806001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8c919061488b565b60ff168260ff1614612aa357506000949350505050565b506001949350505050565b60408101515160009015612ac457506000919050565b81602001515160c014612ad957506000919050565b6000806000806000808760200151806020019051810190612afa91906140ba565b9550955095509550955095508360ff16866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6c919061488b565b60ff1614612b8257506000979650505050505050565b8260ff16856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be8919061488b565b60ff1614612bfe57506000979650505050505050565b6000826001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c629190613ed3565b90506000836001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ca4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cc89190613ed3565b9050876001600160a01b0316826001600160a01b0316148015612cfc5750866001600160a01b0316816001600160a01b0316145b158015612d385750866001600160a01b0316826001600160a01b0316148015612d365750876001600160a01b0316816001600160a01b0316145b155b15612d4d575060009998505050505050505050565b60128660ff161180612d62575060128560ff16115b15612d77575060009998505050505050505050565b8263ffffffff16600003612d95575060009998505050505050505050565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110612dca57612dca613e6a565b602002602001019063ffffffff16908163ffffffff1681525050600081600181518110612df957612df9613e6a565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526001600160a01b0386169063883bdbfd90612e3a908490600401614143565b600060405180830381865afa158015612e57573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e7f91908101906141f5565b5060019c9b505050505050505050505050565b60408101515160009015612ea857506000919050565b816020015151606014612ebd57506000919050565b60008060008460200151806020019051810190612eda91906144bf565b919450925090508281612f55576040516396834ad360e01b8152600481018490526001600160a01b038216906396834ad390602401608060405180830381865afa158015612f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5091906144f5565b612fbe565b604051639474f45b60e01b8152600481018490526001600160a01b03821690639474f45b90602401608060405180830381865afa158015612f9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fbe91906144f5565b5060019695505050505050565b60408101515160009015612fe157506000919050565b816020015151606014612ff657506000919050565b8160200151806020019051810190612aa39190614597565b60008160400151516002148061302957508160400151516003145b61303557506000919050565b81602001515160201461304a57506000919050565b506001919050565b600081604001515160011480613029575081604001515160021461303557506000919050565b6040810151516000901561308e57506000919050565b6020826020015151101561304a57506000919050565b81818082036130b4575050505050565b6000856130da60026130c6888861446c565b6130d09190614640565b6112c0908861456f565b815181106130ea576130ea613e6a565b60200260200101516000015190505b818313613236575b808661310c85612686565b8151811061311c5761311c613e6a565b60200260200101516000015112156131405782613138816148a6565b935050613101565b8561314a83612686565b8151811061315a5761315a613e6a565b60200260200101516000015181121561317f5781613177816148be565b925050613140565b818313613231578561319083612686565b815181106131a0576131a0613e6a565b6020026020010151866131b285612686565b815181106131c2576131c2613e6a565b6020026020010151876131d486612686565b815181106131e4576131e4613e6a565b60200260200101886131f586612686565b8151811061320557613205613e6a565b602002602001018290528290525050828061321f906148a6565b935050818061322d906148be565b9250505b6130f9565b81851215613249576132498686846130a4565b8383121561325c5761325c8684866130a4565b505050505050565b6000670de0b6b3a764000061327983856147e8565b6102b49190614640565b600081613279670de0b6b3a7640000856147e8565b60008060008360020b126132b8576132b3600284900b612686565b6132c8565b6132c86112c0600285900b614493565b90506132e36112c06132dd620d89e7196148db565b60020b90565b8111156133165760405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606401610397565b60008160011660000361332d57600160801b61333f565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff169050600282161561337e576080613379826ffff97272373d413259a46990580e213a614859565b901c90505b60048216156133a85760806133a3826ffff2e50f5f656932ef12357cf3c7fdcc614859565b901c90505b60088216156133d25760806133cd826fffe5caca7e10e4e61c3624eaa0941cd0614859565b901c90505b60108216156133fc5760806133f7826fffcb9843d60f6159c9db58835c926644614859565b901c90505b6020821615613426576080613421826fff973b41fa98c081472e6896dfb254c0614859565b901c90505b604082161561345057608061344b826fff2ea16466c96a3843ec78b326b52861614859565b901c90505b608082161561347a576080613475826ffe5dee046a99a2a811c461f1969c3053614859565b901c90505b6101008216156134a55760806134a0826ffcbe86c7900a88aedcffc83b479aa3a4614859565b901c90505b6102008216156134d05760806134cb826ff987a7253ac413176f2b074cf7815e54614859565b901c90505b6104008216156134fb5760806134f6826ff3392b0822b70005940c7a398e4b70f3614859565b901c90505b610800821615613526576080613521826fe7159475a2c29b7443b29c7fa6e889d9614859565b901c90505b61100082161561355157608061354c826fd097f3bdfd2022b8845ad8f792aa5825614859565b901c90505b61200082161561357c576080613577826fa9f746462d870fdf8a65dc1f90e061e5614859565b901c90505b6140008216156135a75760806135a2826f70d869a156d2a1b890bb3df62baf32f7614859565b901c90505b6180008216156135d25760806135cd826f31be135f97d08fd981231505542fcfa6614859565b901c90505b620100008216156135fe5760806135f9826f09aa508b5b7a84e1c677de54f3e99bc9614859565b901c90505b62020000821615613629576080613624826e5d6af8dedb81196699c329225ee604614859565b901c90505b6204000082161561365357608061364e826d2216e584f5fa1ea926041bedfe98614859565b901c90505b6208000082161561367b576080613676826b048a170391f7dc42444e8fa2614859565b901c90505b60008460020b131561369657613693816000196147c0565b90505b6102ce6136a8640100000000836147d4565b156136b45760016136b7565b60005b6136c89060ff16602084901c6147ad565b6139ba565b6000808060001985870985870292508281108382030391505080600003613749576000841161373e5760405162461bcd60e51b815260206004820152601960248201527f48616e646c65206e6f6e2d6f766572666c6f77206361736573000000000000006044820152606401610397565b5082900490506102b4565b8084116137985760405162461bcd60e51b815260206004820152601960248201527f70726576656e74732064656e6f6d696e61746f72203d3d2030000000000000006044820152606401610397565b60008486880980840393811190920391905060006137d06137b887612569565b6137c188612569565b6137ca90614493565b16612686565b9586900495938490049360008190030460010190506137ef8184614859565b909317926000613800876003614859565b600218905061380f8188614859565b61381a9060026140a7565b6138249082614859565b90506138308188614859565b61383b9060026140a7565b6138459082614859565b90506138518188614859565b61385c9060026140a7565b6138669082614859565b90506138728188614859565b61387d9060026140a7565b6138879082614859565b90506138938188614859565b61389e9060026140a7565b6138a89082614859565b90506138b48188614859565b6138bf9060026140a7565b6138c99082614859565b90506138d58186614859565b9998505050505050505050565b604080516001600160e01b0319831660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166301ffc9a760e01b1790529051600091829182916001600160a01b0387169161394391906148fd565b6000604051808303816000865af19150503d8060008114613980576040519150601f19603f3d011682016040523d82523d6000602084013e613985565b606091505b50915091508161399a57600092505050610116565b80516000036139ae57600092505050610116565b60200151949350505050565b60006001600160a01b038211156125295760405163dccde8ed60e01b815260040160405180910390fd5b6040518060800160405280600081526020016000815260200160008152602001600081525090565b828054828255906000526020600020908101928215613a47579160200282015b82811115613a47578251825591602001919060010190613a2c565b506125299291505b808211156125295760008155600101613a4f565b600060208284031215613a7557600080fd5b5035919050565b8151815260208083015190820152604080830151908201526060808301519082015260808101610116565b634e487b7160e01b600052602160045260246000fd5b600a8110613acd57613acd613aa7565b9052565b60005b83811015613aec578181015183820152602001613ad4565b50506000910152565b60008151808452613b0d816020860160208601613ad1565b601f01601f19169290920160200192915050565b60006020808352613b358184018551613abd565b8084015160606040850152613b4d6080850182613af5565b6040860151858203601f19016060870152805180835290840192506000918401905b80831015613b8f5783518252928401926001929092019190840190613b6f565b509695505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613bd357613bd3613b9a565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613c0257613c02613b9a565b604052919050565b600067ffffffffffffffff821115613c2457613c24613b9a565b5060051b60200190565b600082601f830112613c3f57600080fd5b81356020613c54613c4f83613c0a565b613bd9565b8083825260208201915060208460051b870101935086841115613c7657600080fd5b602086015b84811015613b8f5780358352918301918301613c7b565b600080600060608486031215613ca757600080fd5b8335600a8110613cb657600080fd5b925060208481013567ffffffffffffffff80821115613cd457600080fd5b818701915087601f830112613ce857600080fd5b813581811115613cfa57613cfa613b9a565b613d0c601f8201601f19168501613bd9565b8181528985838601011115613d2057600080fd5b818585018683013760009181019094015291935060408601359180831115613d4757600080fd5b5050613d5586828701613c2e565b9150509250925092565b600080600060608486031215613d7457600080fd5b83359250602084013567ffffffffffffffff80821115613d9357600080fd5b613d9f87838801613c2e565b93506040860135915080821115613db557600080fd5b50613d5586828701613c2e565b600181811c90821680613dd657607f821691505b602082108103611d0757634e487b7160e01b600052602260045260246000fd5b60008151808452602080850194506020840160005b83811015613e2757815187529582019590820190600101613e0b565b509495945050505050565b848152613e426020820185613abd565b608060408201526000613e586080830185613af5565b828103606084015261189a8185613df6565b634e487b7160e01b600052603260045260246000fd5b600060208284031215613e9257600080fd5b8151600981106102b457600080fd5b6020810160098310613eb557613eb5613aa7565b91905290565b6001600160a01b0381168114613ed057600080fd5b50565b600060208284031215613ee557600080fd5b81516102b481613ebb565b608080825285518282018190526000919060209060a0850190828a01855b82811015613f5257613f42848351805182526020810151602083015260408101516040830152606081015160608301525050565b9285019290840190600101613f0e565b5050508481036020860152613f678189613af5565b925050508281036040840152613f7d8186613df6565b9050828103606084015261189a8185613df6565b600060808284031215613fa357600080fd5b613fab613bb0565b825181526020830151602082015260408301516040820152606083015160608201528091505092915050565b805160ff8116811461200457600080fd5b600080600060608486031215613ffd57600080fd5b835161400881613ebb565b6020850151909350915061401e60408501613fd7565b90509250925092565b805169ffffffffffffffffffff8116811461200457600080fd5b600080600080600060a0868803121561405957600080fd5b61406286614027565b945060208601519350604086015192506060860151915061408560808701614027565b90509295509295909350565b634e487b7160e01b600052601160045260246000fd5b8181038181111561011657610116614091565b60008060008060008060c087890312156140d357600080fd5b86516140de81613ebb565b60208801519096506140ef81613ebb565b94506140fd60408801613fd7565b935061410b60608801613fd7565b9250608087015161411b81613ebb565b60a088015190925063ffffffff8116811461413557600080fd5b809150509295509295509295565b6020808252825182820181905260009190848201906040850190845b8181101561418157835163ffffffff168352928401929184019160010161415f565b50909695505050505050565b600082601f83011261419e57600080fd5b815160206141ae613c4f83613c0a565b8083825260208201915060208460051b8701019350868411156141d057600080fd5b602086015b84811015613b8f5780516141e881613ebb565b83529183019183016141d5565b6000806040838503121561420857600080fd5b825167ffffffffffffffff8082111561422057600080fd5b818501915085601f83011261423457600080fd5b81516020614244613c4f83613c0a565b82815260059290921b8401810191818101908984111561426357600080fd5b948201945b838610156142915785518060060b81146142825760008081fd5b82529482019490820190614268565b918801519196509093505050808211156142aa57600080fd5b506142b78582860161418d565b9150509250929050565b600682810b9082900b03667fffffffffffff198112667fffffffffffff8213171561011657610116614091565b634e487b7160e01b600052601260045260246000fd5b60008160060b8360060b8061431b5761431b6142ee565b667fffffffffffff1982146000198214161561433957614339614091565b90059392505050565b600082614351576143516142ee565b500790565b60008160020b627fffff19810361436f5761436f614091565b6000190192915050565b600181815b808511156143b457816000190482111561439a5761439a614091565b808516156143a757918102915b93841c939080029061437e565b509250929050565b6000826143cb57506001610116565b816143d857506000610116565b81600181146143ee57600281146143f857614414565b6001915050610116565b60ff84111561440957614409614091565b50506001821b610116565b5060208310610133831016604e8410600b8410161715614437575081810a610116565b6144418383614379565b806000190482111561445557614455614091565b029392505050565b60006102b460ff8416836143bc565b818103600083128015838313168383128216171561448c5761448c614091565b5092915050565b6000600160ff1b82016144a8576144a8614091565b5060000390565b8051801515811461200457600080fd5b6000806000606084860312156144d457600080fd5b83516144df81613ebb565b6020850151909350915061401e604085016144af565b60006080828403121561450757600080fd5b61450f613bb0565b82518060070b811461452057600080fd5b8152602083015167ffffffffffffffff8116811461453d57600080fd5b60208201526040830151600381900b811461455757600080fd5b60408201526060928301519281019290925250919050565b808201828112600083128015821682158216171561458f5761458f614091565b505092915050565b6000806000606084860312156145ac57600080fd5b83516145b781613ebb565b602085015160409095015190969495509392505050565b60ff8416815267ffffffffffffffff831660208201526060604082015260006145fa6060830184613df6565b95945050505050565b6001600160a01b03831681526040602082018190526000906102ce90830184613af5565b60006020828403121561463957600080fd5b5051919050565b60008261464f5761464f6142ee565b600160ff1b82146000198414161561466957614669614091565b500590565b6146788185613abd565b60606020820152600061468e6060830185613af5565b8281036040840152610f4f8185613df6565b601f8211156146e8576000816000526020600020601f850160051c810160208610156146c95750805b601f850160051c820191505b8181101561325c578281556001016146d5565b505050565b815167ffffffffffffffff81111561470757614707613b9a565b61471b816147158454613dc2565b846146a0565b602080601f83116001811461475057600084156147385750858301515b600019600386901b1c1916600185901b17855561325c565b600085815260208120601f198616915b8281101561477f57888601518255948401946001909101908401614760565b508582101561479d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8082018082111561011657610116614091565b6000826147cf576147cf6142ee565b500490565b6000826147e3576147e36142ee565b500690565b80820260008212600160ff1b8414161561480457614804614091565b818105831482151761011657610116614091565b600069ffffffffffffffffffff82168061436f5761436f614091565b60006001820161484657614846614091565b5060010190565b60006102b483836143bc565b808202811582820484141761011657610116614091565b60006020828403121561488257600080fd5b6102b4826144af565b60006020828403121561489d57600080fd5b6102b482613fd7565b60006001600160ff1b01820161484657614846614091565b6000600160ff1b82016148d3576148d3614091565b506000190190565b60008160020b627fffff1981036148f4576148f4614091565b60000392915050565b6000825161490f818460208701613ad1565b919091019291505056fea264697066735822122074f32fef384fdc296b0859f1c1f941c8e736c6cb972aa9e2b894956ebd6a80b364736f6c63430008160033","storage":{}},"0x83a0444b93927c3afcbe46e522280390f748e171":{"nonce":1,"balance":"0x0","code":"0x6080604052366100135761001161001d565b005b61001b61001d565b005b6000610027610093565b90503660008037600080366000845af43d6000803e806000811461004a573d6000f35b3d6000fd5b600080823b905060008111915050919050565b6000806040516020016100749061017a565b6040516020818303038152906040528051906020012090508091505090565b600061009d6100c6565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000806040516020016100d89061020c565b6040516020818303038152906040528051906020012090508091505090565b600082825260208201905092915050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e4f776e6160008201527f626c650000000000000000000000000000000000000000000000000000000000602082015250565b60006101646023836100f7565b915061016f82610108565b604082019050919050565b6000602082019050818103600083015261019381610157565b9050919050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e50726f7860008201527f7900000000000000000000000000000000000000000000000000000000000000602082015250565b60006101f66021836100f7565b91506102018261019a565b604082019050919050565b60006020820190508181036000830152610225816101e9565b905091905056fea2646970667358221220800da1f73cebd5e4afa07496d9bca6b6c4f526bdd3f4014ec15c70fe3a1c441364736f6c63430008110033","storage":{"0x5a648c35a2f5512218b4683cf10e03f5b7c9dc7346e1bf77d304ae97f60f592b":{"value": "0x108f53faf774d7c4c56f5bce9ca6e605ce8aeadd", "is_private": false}, "0x5c7865864a2a990d80b5bb5c40e7b73a029960dc711fbb56120dfab976e92ea3":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"}},"0x90f79bf6eb2c4f870365e785982e1f101e93b906":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x976ea74026e726554db657fa54763abd0c3a0aa9":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x9965507d1a55bcc2695c58ba16fb37d819b0a4dc":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0xa0ee7a142d267c1f36714e4a8f75612f20a79720":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0xc67e2bd3108604cf0168c0e5ef9cd6d78b9bb14b":{"nonce":1,"balance":"0x21e19c6edb7e2445f20","code":"0x","storage":{}},"0xeb045d78d273107348b0300c01d29b7552d622ab":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266":{"nonce":1,"balance":"0x21e19e08b86820a43ea","code":"0x","storage":{}}},"best_block_number":5,"blocks":[{"header":{"parentHash":"0x08abe6e453727534d8dd708843a7522b7d500338bdfe2402ca105dcdb05eebe9","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xcd346446ed010523161f40a5f2b512def549bfb79e165b4354488738416481f2","transactionsRoot":"0xb3a4689832e0b599260ae70362ffcf224b60571b35ff8836904a3d81e2675d66","receiptsRoot":"0x2d13fdc120ab90536fed583939de7fb68b64926a306c1f629593ca9c2c93b198","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x1","gasLimit":"0x1c9c380","gasUsed":"0x3ea90d","timestamp":"0x66b200ca","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x2e0b6260","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[{"EIP1559":{"chainId":"0x343a","nonce":"0x0","gas":"0x3ea90d","maxFeePerGas":"0x83215600","maxPriorityFeePerGas":"0x3b9aca00","value":"0x0","accessList":[],"input":"0x608060405234801561001057600080fd5b5061494f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80632a952b2d1461005c57806350c946fe14610085578063625ca21c146100a5578063daa250be146100c6578063deba1b98146100d9575b600080fd5b61006f61006a366004613a63565b6100ec565b60405161007c9190613a7c565b60405180910390f35b610098610093366004613a63565b61011c565b60405161007c9190613b21565b6100b86100b3366004613c92565b610276565b60405190815260200161007c565b61006f6100d4366004613d5f565b6102bb565b6100b86100e7366004613c92565b6102d6565b6100f46139e4565b6040805160008082526020820190815281830190925261011691849190610310565b92915050565b6101416040805160608101909152806000815260200160608152602001606081525090565b61014a82610ab6565b60408051606081019091528154909190829060ff16600981111561017057610170613aa7565b600981111561018157610181613aa7565b815260200160018201805461019590613dc2565b80601f01602080910402602001604051908101604052809291908181526020018280546101c190613dc2565b801561020e5780601f106101e35761010080835404028352916020019161020e565b820191906000526020600020905b8154815290600101906020018083116101f157829003601f168201915b505050505081526020016002820180548060200260200160405190810160405280929190818152602001828054801561026657602002820191906000526020600020905b815481526020019060010190808311610252575b5050505050815250509050919050565b600080604051806060016040528086600981111561029657610296613aa7565b81526020018581526020018481525090506102b081610ac1565b9150505b9392505050565b6102c36139e4565b6102ce848484610310565b949350505050565b60008060405180606001604052808660098111156102f6576102f6613aa7565b81526020018581526020018481525090506102b081610acc565b6103186139e4565b81518351146103a05760408051634bab873760e11b81526004810191909152600d60448201526c72756e74696d6556616c75657360981b606482015260806024820152602260848201527f6d7573742062652073616d65206c656e6774682061732072756e74696d654b6560a482015261797360f01b60c482015260e4015b60405180910390fd5b60006103ab85610c26565b805490915060ff1660018160098111156103c7576103c7613aa7565b036104755761046c6103da838787610c84565b8360010180546103e990613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461041590613dc2565b80156104625780601f1061043757610100808354040283529160200191610462565b820191906000526020600020905b81548152906001019060200180831161044557829003601f168201915b5050505050610d46565b925050506102b4565b600281600981111561048957610489613aa7565b036105305761046c61049c838787610c84565b8360010180546104ab90613dc2565b80601f01602080910402602001604051908101604052809291908181526020018280546104d790613dc2565b80156105245780601f106104f957610100808354040283529160200191610524565b820191906000526020600020905b81548152906001019060200180831161050757829003601f168201915b50505050508787610ebb565b600381600981111561054457610544613aa7565b036105de5761046c82600101805461055b90613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461058790613dc2565b80156105d45780601f106105a9576101008083540402835291602001916105d4565b820191906000526020600020905b8154815290600101906020018083116105b757829003601f168201915b5050505050610f59565b60048160098111156105f2576105f2613aa7565b0361068c5761046c82600101805461060990613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461063590613dc2565b80156106825780601f1061065757610100808354040283529160200191610682565b820191906000526020600020905b81548152906001019060200180831161066557829003601f168201915b5050505050611087565b60058160098111156106a0576106a0613aa7565b0361073a5761046c8260010180546106b790613dc2565b80601f01602080910402602001604051908101604052809291908181526020018280546106e390613dc2565b80156107305780601f1061070557610100808354040283529160200191610730565b820191906000526020600020905b81548152906001019060200180831161071357829003601f168201915b505050505061131e565b600981600981111561074e5761074e613aa7565b036107ea5761046c82600101805461076590613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461079190613dc2565b80156107de5780601f106107b3576101008083540402835291602001916107de565b820191906000526020600020905b8154815290600101906020018083116107c157829003601f168201915b505050505086866114b5565b60068160098111156107fe576107fe613aa7565b036108a35761046c610811838787610c84565b83600101805461082090613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461084c90613dc2565b80156108995780601f1061086e57610100808354040283529160200191610899565b820191906000526020600020905b81548152906001019060200180831161087c57829003601f168201915b50505050506115c7565b60078160098111156108b7576108b7613aa7565b036109ec576040805160608101909152825461046c91908490829060ff1660098111156108e6576108e6613aa7565b60098111156108f7576108f7613aa7565b815260200160018201805461090b90613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461093790613dc2565b80156109845780601f1061095957610100808354040283529160200191610984565b820191906000526020600020905b81548152906001019060200180831161096757829003601f168201915b50505050508152602001600282018054806020026020016040519081016040528092919081815260200182805480156109dc57602002820191906000526020600020905b8154815260200190600101908083116109c8575b5050505050815250508686611728565b6008816009811115610a0057610a00613aa7565b03610a9a5761046c826001018054610a1790613dc2565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4390613dc2565b8015610a905780601f10610a6557610100808354040283529160200191610a90565b820191906000526020600020905b815481529060010190602001808311610a7357829003601f168201915b50505050506118a5565b6040516323a9bbc960e01b815260048101879052602401610397565b600061011682610c26565b6000610116826118ea565b6000610ad782610ac1565b9050610ae28161192a565b15610b35577fcb64985827770858ec421ad26da7e558c757541643036ce44d6b4eb9e8e5dc5e81836000015184602001518560400151604051610b289493929190613e32565b60405180910390a1919050565b610b3e82611a8c565b610b5d578160405163382bbbc960e11b81526004016103979190613b21565b60005b826040015151811015610bd957610b9383604001518281518110610b8657610b86613e6a565b602002602001015161192a565b610bd15782604001518181518110610bad57610bad613e6a565b6020026020010151604051632f19f96160e11b815260040161039791815260200190565b600101610b60565b50610be382611c31565b8351602085015160408087015190519395507fcb64985827770858ec421ad26da7e558c757541643036ce44d6b4eb9e8e5dc5e9450610b28938693929190613e32565b604080516020808201839052606082018190527f696f2e73796e7468657469782e6f7261636c652d6d616e616765722e4e6f6465608080840191909152828401949094528251808303909401845260a0909101909152815191012090565b600283015460609067ffffffffffffffff811115610ca457610ca4613b9a565b604051908082528060200260200182016040528015610cdd57816020015b610cca6139e4565b815260200190600190039081610cc25790505b50905060005b6002850154811015610d3e57610d19856002018281548110610d0757610d07613e6a565b90600052602060002001548585610310565b828281518110610d2b57610d2b613e6a565b6020908102919091010152600101610ce3565b509392505050565b610d4e6139e4565b600082806020019051810190610d649190613e80565b90506000816008811115610d7a57610d7a613aa7565b03610d9057610d8884611ca5565b915050610116565b6001816008811115610da457610da4613aa7565b03610db257610d8884611d0d565b6002816008811115610dc657610dc6613aa7565b03610dd457610d8884611d90565b6003816008811115610de857610de8613aa7565b03610df657610d8884611e13565b6004816008811115610e0a57610e0a613aa7565b03610e1857610d8884611ec9565b6005816008811115610e2c57610e2c613aa7565b03610e3a57610d8884612009565b6006816008811115610e4e57610e4e613aa7565b03610e5c57610d88846120e4565b6007816008811115610e7057610e70613aa7565b03610e7e57610d888461220c565b6008816008811115610e9257610e92613aa7565b03610ea057610d88846122ce565b80604051631be413d360e11b81526004016103979190613ea1565b610ec36139e4565b600084806020019051810190610ed99190613ed3565b604051631ecba7c360e31b81529091506001600160a01b0382169063f65d3e1890610f0e908990899089908990600401613ef0565b608060405180830381865afa158015610f2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4f9190613f91565b9695505050505050565b610f616139e4565b600080600084806020019051810190610f7a9190613fe8565b92509250925060008390506000806000836001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610fc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fec9190614041565b509350509250925060008660001461100f5761100a8585858a6123c7565b611011565b825b905060128660ff161161103b5761103661102f60ff881660126140a7565b82906124c2565b611053565b61105361104c601260ff89166140a7565b82906124dc565b9050604051806080016040528082815260200183815260200160008152602001600081525098505050505050505050919050565b61108f6139e4565b600080600080600080878060200190518101906110ac91906140ba565b604080516002808252606082018352979d50959b50939950919750955093506000929060208301908036833701905050905081816000815181106110f2576110f2613e6a565b602002602001019063ffffffff16908163ffffffff168152505060008160018151811061112157611121613e6a565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0385169063883bdbfd90611165908590600401614143565b600060405180830381865afa158015611182573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111aa91908101906141f5565b5090506000816000815181106111c2576111c2613e6a565b6020026020010151826001815181106111dd576111dd613e6a565b60200260200101516111ef91906142c1565b9050600061121761120563ffffffff87166124f6565b61120f9084614304565b60060b61252d565b905060008260060b12801561124c575061123b63ffffffff8616612569565b612569565b8260060b6112499190614342565b15155b1561125f578061125b81614356565b9150505b600061126d6012600a61445d565b9050600061128061123684848f8f612593565b905060006112908a60ff16612569565b61129c8c60ff16612569565b6112a6919061446c565b905060008082136112d1576112cc6112c56112c084614493565b612686565b84906124dc565b6112e4565b6112e46112dd83612686565b84906124c2565b905060405180608001604052808281526020014281526020016000815260200160008152509e505050505050505050505050505050919050565b6113266139e4565b60008060008480602001905181019061133f91906144bf565b91945092509050826000826113bc576040516396834ad360e01b8152600481018590526001600160a01b038316906396834ad390602401608060405180830381865afa158015611393573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b791906144f5565b611425565b604051639474f45b60e01b8152600481018590526001600160a01b03831690639474f45b90602401608060405180830381865afa158015611401573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142591906144f5565b90506000816040015160030b601261143d919061456f565b90506000808213611467576114626114576112c084614493565b845160070b906124dc565b61147e565b61147e61147383612686565b845160070b906124c2565b9050604051806080016040528082815260200184606001518152602001600081526020016000815250975050505050505050919050565b6114bd6139e4565b6000806000868060200190518101906114d69190614597565b92509250925060005b8651811015611545578681815181106114fa576114fa613e6a565b6020026020010151717374616c656e657373546f6c6572616e636560701b0361153d5785818151811061152f5761152f613e6a565b602002602001015160001c91505b6001016114df565b5060408051600180825281830190925260009160208083019080368337019050509050828160008151811061157c5761157c613e6a565b602002602001018181525050836001838360405160200161159f939291906145ce565b60408051601f198184030181529082905263cf2cabdf60e01b82526103979291600401614603565b6115cf6139e4565b6000828060200190518101906115e59190614627565b90506000846000815181106115fc576115fc613e6a565b602002602001015160000151905060008560018151811061161f5761161f613e6a565b6020026020010151600001519050808214611702576000611653601261164d611648858761446c565b6126a9565b906124c2565b905082158061167b5750611666836126a9565b6116709082614640565b61167985612569565b125b15611700576002875111156116b0578660028151811061169d5761169d613e6a565b6020026020010151945050505050610116565b826000036116d15760405163014cc07160e01b815260040160405180910390fd5b6116da836126a9565b6116e49082614640565b60405163dcac091960e01b815260040161039791815260200190565b505b8560008151811061171557611715613e6a565b6020026020010151935050505092915050565b6117306139e4565b6000846020015180602001905181019061174a9190614627565b905060005b84518110156117bc5784818151811061176a5761176a613e6a565b6020026020010151717374616c656e657373546f6c6572616e636560701b036117b4576117ad8482815181106117a2576117a2613e6a565b602002602001015190565b91506117bc565b60010161174f565b50600085604001516000815181106117d6576117d6613e6a565b6020026020010151905060006117ed828787610310565b60208101519091506117ff84426140a7565b1161180e5792506102b4915050565b86604001515160010361187157866040015160008151811061183257611832613e6a565b602002602001015181600001518260200151604051631808066560e21b8152600401610397939291909283526020830191909152604082015260600190565b61189a876040015160018151811061188b5761188b613e6a565b60200260200101518787610310565b979650505050505050565b6118ad6139e4565b6040518060800160405280838060200190518101906118cc9190614627565b81526020014281526020016000815260200160008152509050919050565b600081600001518260200151836040015160405160200161190d9392919061466e565b604051602081830303815290604052805190602001209050919050565b60008061193683610c26565b60408051606081019091528154909190829060ff16600981111561195c5761195c613aa7565b600981111561196d5761196d613aa7565b815260200160018201805461198190613dc2565b80601f01602080910402602001604051908101604052809291908181526020018280546119ad90613dc2565b80156119fa5780601f106119cf576101008083540402835291602001916119fa565b820191906000526020600020905b8154815290600101906020018083116119dd57829003601f168201915b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015611a5257602002820191906000526020600020905b815481526020019060010190808311611a3e575b505050505081525050905060006009811115611a7057611a70613aa7565b81516009811115611a8357611a83613aa7565b14159392505050565b6000600182516009811115611aa357611aa3613aa7565b1480611ac15750600682516009811115611abf57611abf613aa7565b145b80611ade5750600782516009811115611adc57611adc613aa7565b145b15611aee57611aec826126c1565b505b600182516009811115611b0357611b03613aa7565b03611b11576101168261284a565b600282516009811115611b2657611b26613aa7565b03611b3457610116826128a5565b600382516009811115611b4957611b49613aa7565b03611b575761011682612973565b600482516009811115611b6c57611b6c613aa7565b03611b7a5761011682612aae565b600582516009811115611b8f57611b8f613aa7565b03611b9d5761011682612e92565b600982516009811115611bb257611bb2613aa7565b03611bc05761011682612fcb565b600682516009811115611bd557611bd5613aa7565b03611be3576101168261300e565b600782516009811115611bf857611bf8613aa7565b03611c065761011682613052565b600882516009811115611c1b57611c1b613aa7565b03611c295761011682613078565b506000919050565b600080611c3d836118ea565b9050611c4881610c26565b8351815491935090839060ff19166001836009811115611c6a57611c6a613aa7565b021790555060208301516001830190611c8390826146ed565b5060408301518051611c9f916002850191602090910190613a0c565b50915091565b611cad6139e4565b60005b8251811015611d07578160200151838281518110611cd057611cd0613e6a565b6020026020010151602001511115611cff57828181518110611cf457611cf4613e6a565b602002602001015191505b600101611cb0565b50919050565b611d156139e4565b81600081518110611d2857611d28613e6a565b602002602001015190506000600190505b8251811015611d07578160000151838281518110611d5957611d59613e6a565b6020026020010151600001511215611d8857828181518110611d7d57611d7d613e6a565b602002602001015191505b600101611d39565b611d986139e4565b81600081518110611dab57611dab613e6a565b602002602001015190506000600190505b8251811015611d07578160000151838281518110611ddc57611ddc613e6a565b6020026020010151600001511315611e0b57828181518110611e0057611e00613e6a565b602002602001015191505b600101611dbc565b611e1b6139e4565b60005b8251811015611e9557828181518110611e3957611e39613e6a565b60200260200101516000015182600001818151611e56919061456f565b9052508251839082908110611e6d57611e6d613e6a565b60200260200101516020015182602001818151611e8a91906147ad565b905250600101611e1e565b50611ea08251612569565b8151611eac9190614640565b815281516020820151611ebf91906147c0565b6020820152919050565b611ed16139e4565b611eed826000611ee86001865161123691906140a7565b6130a4565b60028251611efb91906147d4565b600003611fd65760408051600280825260608201909252600091816020015b611f226139e4565b815260200190600190039081611f1a57905050905082600160028551611f4891906147c0565b611f5291906140a7565b81518110611f6257611f62613e6a565b602002602001015181600081518110611f7d57611f7d613e6a565b60200260200101819052508260028451611f9791906147c0565b81518110611fa757611fa7613e6a565b602002602001015181600181518110611fc257611fc2613e6a565b60200260200101819052506102b481611e13565b8160028351611fe591906147c0565b81518110611ff557611ff5613e6a565b60200260200101519050919050565b919050565b6120116139e4565b8160008151811061202457612024613e6a565b60209081029190910101515181528151829060009061204557612045613e6a565b6020908102919091018101518101519082015260015b82518110156120d25782818151811061207657612076613e6a565b6020026020010151600001518260000181815161209391906147e8565b90525082518390829081106120aa576120aa613e6a565b602002602001015160200151826020018181516120c791906147ad565b90525060010161205b565b5081518160200151611ebf91906147c0565b6120ec6139e4565b816000815181106120ff576120ff613e6a565b60209081029190910101515181528151829060009061212057612120613e6a565b6020908102919091018101518101519082015260015b82518110156120d25782818151811061215157612151613e6a565b60200260200101516000015160000361219e5782818151811061217657612176613e6a565b6020026020010151600001516040516338ee04a760e01b815260040161039791815260200190565b8281815181106121b0576121b0613e6a565b602002602001015160000151826000018181516121cd9190614640565b90525082518390829081106121e4576121e4613e6a565b6020026020010151602001518260200181815161220191906147ad565b905250600101612136565b6122146139e4565b8160008151811061222757612227613e6a565b60209081029190910101515181528151829060009061224857612248613e6a565b6020908102919091018101518101519082015260015b82518110156120d25761229083828151811061227c5761227c613e6a565b602090810291909101015151835190613264565b825282518390829081106122a6576122a6613e6a565b602002602001015160200151826020018181516122c391906147ad565b90525060010161225e565b6122d66139e4565b816000815181106122e9576122e9613e6a565b60209081029190910101515181528151829060009061230a5761230a613e6a565b6020908102919091018101518101519082015260015b82518110156120d25782818151811061233b5761233b613e6a565b6020026020010151600001516000036123605782818151811061217657612176613e6a565b61238983828151811061237557612375613e6a565b602090810291909101015151835190613283565b8252825183908290811061239f5761239f613e6a565b602002602001015160200151826020018181516123bc91906147ad565b905250600101612320565b6000826001826123d785426140a7565b90505b69ffffffffffffffffffff8716156124a3576001600160a01b038816639a6fc8f561240489614818565b6040516001600160e01b031960e084901b16815269ffffffffffffffffffff8216600482015290995060240160a060405180830381865afa925050508015612469575060408051601f3d908101601f1916820190925261246691810190614041565b60015b156124a357858210156124805750505050506124a3565b61248a848961456f565b97508661249681614834565b97505050505050506123da565b6124ac82612569565b6124b69084614640565b98975050505050505050565b60006124d261123683600a61484d565b6102b490846147e8565b60006124ec61123683600a61484d565b6102b49084614640565b6000667fffffffffffff66ffffffffffffff83161115612529576040516329d2678160e21b815260040160405180910390fd5b5090565b6000627fffff19600683900b128061254b5750627fffff600683900b135b1561252957604051630d962f7960e21b815260040160405180910390fd5b60006001600160ff1b038211156125295760405163677c430560e11b815260040160405180910390fd5b60008061259f86613298565b90506fffffffffffffffffffffffffffffffff6001600160a01b0382161161261c5760006125d66001600160a01b03831680614859565b9050836001600160a01b0316856001600160a01b03161061260557612600600160c01b87836136cd565b612614565b6126148187600160c01b6136cd565b92505061267d565b600061263b6001600160a01b03831680680100000000000000006136cd565b9050836001600160a01b0316856001600160a01b03161061266a57612665600160801b87836136cd565b612679565b6126798187600160801b6136cd565b9250505b50949350505050565b6000808212156125295760405163029f024d60e31b815260040160405180910390fd5b600080821215612529576126bc82614493565b610116565b6000805b8260400151518110156128415760006126fa846040015183815181106126ed576126ed613e6a565b6020026020010151610ab6565b60408051606081019091528154909190829060ff16600981111561272057612720613aa7565b600981111561273157612731613aa7565b815260200160018201805461274590613dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461277190613dc2565b80156127be5780601f10612793576101008083540402835291602001916127be565b820191906000526020600020905b8154815290600101906020018083116127a157829003601f168201915b505050505081526020016002820180548060200260200160405190810160405280929190818152602001828054801561281657602002820191906000526020600020905b815481526020019060010190808311612802575b505050505081525050905061282a81611a8c565b612838575060009392505050565b506001016126c5565b50600192915050565b60006002826040015151101561286257506000919050565b81602001515160201461287757506000919050565b600082602001518060200190518101906128919190614627565b905060088111156128415750600092915050565b6000602082602001515110156128bd57506000919050565b600082602001518060200190518101906128d79190613ed3565b90506128ea816306e7ea3960e21b6138e2565b6128f75750600092915050565b604051633b70a5bf60e21b81526001600160a01b0382169063edc296fc90612923908690600401613b21565b6020604051808303816000875af1158015612942573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129669190614870565b6128415750600092915050565b6040810151516000901561298957506000919050565b81602001515160601461299e57506000919050565b60008083602001518060200190518101906129b99190613fe8565b92505091506000829050806001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015612a01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a259190614041565b5050505050806001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8c919061488b565b60ff168260ff1614612aa357506000949350505050565b506001949350505050565b60408101515160009015612ac457506000919050565b81602001515160c014612ad957506000919050565b6000806000806000808760200151806020019051810190612afa91906140ba565b9550955095509550955095508360ff16866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6c919061488b565b60ff1614612b8257506000979650505050505050565b8260ff16856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be8919061488b565b60ff1614612bfe57506000979650505050505050565b6000826001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c629190613ed3565b90506000836001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ca4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cc89190613ed3565b9050876001600160a01b0316826001600160a01b0316148015612cfc5750866001600160a01b0316816001600160a01b0316145b158015612d385750866001600160a01b0316826001600160a01b0316148015612d365750876001600160a01b0316816001600160a01b0316145b155b15612d4d575060009998505050505050505050565b60128660ff161180612d62575060128560ff16115b15612d77575060009998505050505050505050565b8263ffffffff16600003612d95575060009998505050505050505050565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110612dca57612dca613e6a565b602002602001019063ffffffff16908163ffffffff1681525050600081600181518110612df957612df9613e6a565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526001600160a01b0386169063883bdbfd90612e3a908490600401614143565b600060405180830381865afa158015612e57573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e7f91908101906141f5565b5060019c9b505050505050505050505050565b60408101515160009015612ea857506000919050565b816020015151606014612ebd57506000919050565b60008060008460200151806020019051810190612eda91906144bf565b919450925090508281612f55576040516396834ad360e01b8152600481018490526001600160a01b038216906396834ad390602401608060405180830381865afa158015612f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5091906144f5565b612fbe565b604051639474f45b60e01b8152600481018490526001600160a01b03821690639474f45b90602401608060405180830381865afa158015612f9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fbe91906144f5565b5060019695505050505050565b60408101515160009015612fe157506000919050565b816020015151606014612ff657506000919050565b8160200151806020019051810190612aa39190614597565b60008160400151516002148061302957508160400151516003145b61303557506000919050565b81602001515160201461304a57506000919050565b506001919050565b600081604001515160011480613029575081604001515160021461303557506000919050565b6040810151516000901561308e57506000919050565b6020826020015151101561304a57506000919050565b81818082036130b4575050505050565b6000856130da60026130c6888861446c565b6130d09190614640565b6112c0908861456f565b815181106130ea576130ea613e6a565b60200260200101516000015190505b818313613236575b808661310c85612686565b8151811061311c5761311c613e6a565b60200260200101516000015112156131405782613138816148a6565b935050613101565b8561314a83612686565b8151811061315a5761315a613e6a565b60200260200101516000015181121561317f5781613177816148be565b925050613140565b818313613231578561319083612686565b815181106131a0576131a0613e6a565b6020026020010151866131b285612686565b815181106131c2576131c2613e6a565b6020026020010151876131d486612686565b815181106131e4576131e4613e6a565b60200260200101886131f586612686565b8151811061320557613205613e6a565b602002602001018290528290525050828061321f906148a6565b935050818061322d906148be565b9250505b6130f9565b81851215613249576132498686846130a4565b8383121561325c5761325c8684866130a4565b505050505050565b6000670de0b6b3a764000061327983856147e8565b6102b49190614640565b600081613279670de0b6b3a7640000856147e8565b60008060008360020b126132b8576132b3600284900b612686565b6132c8565b6132c86112c0600285900b614493565b90506132e36112c06132dd620d89e7196148db565b60020b90565b8111156133165760405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606401610397565b60008160011660000361332d57600160801b61333f565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff169050600282161561337e576080613379826ffff97272373d413259a46990580e213a614859565b901c90505b60048216156133a85760806133a3826ffff2e50f5f656932ef12357cf3c7fdcc614859565b901c90505b60088216156133d25760806133cd826fffe5caca7e10e4e61c3624eaa0941cd0614859565b901c90505b60108216156133fc5760806133f7826fffcb9843d60f6159c9db58835c926644614859565b901c90505b6020821615613426576080613421826fff973b41fa98c081472e6896dfb254c0614859565b901c90505b604082161561345057608061344b826fff2ea16466c96a3843ec78b326b52861614859565b901c90505b608082161561347a576080613475826ffe5dee046a99a2a811c461f1969c3053614859565b901c90505b6101008216156134a55760806134a0826ffcbe86c7900a88aedcffc83b479aa3a4614859565b901c90505b6102008216156134d05760806134cb826ff987a7253ac413176f2b074cf7815e54614859565b901c90505b6104008216156134fb5760806134f6826ff3392b0822b70005940c7a398e4b70f3614859565b901c90505b610800821615613526576080613521826fe7159475a2c29b7443b29c7fa6e889d9614859565b901c90505b61100082161561355157608061354c826fd097f3bdfd2022b8845ad8f792aa5825614859565b901c90505b61200082161561357c576080613577826fa9f746462d870fdf8a65dc1f90e061e5614859565b901c90505b6140008216156135a75760806135a2826f70d869a156d2a1b890bb3df62baf32f7614859565b901c90505b6180008216156135d25760806135cd826f31be135f97d08fd981231505542fcfa6614859565b901c90505b620100008216156135fe5760806135f9826f09aa508b5b7a84e1c677de54f3e99bc9614859565b901c90505b62020000821615613629576080613624826e5d6af8dedb81196699c329225ee604614859565b901c90505b6204000082161561365357608061364e826d2216e584f5fa1ea926041bedfe98614859565b901c90505b6208000082161561367b576080613676826b048a170391f7dc42444e8fa2614859565b901c90505b60008460020b131561369657613693816000196147c0565b90505b6102ce6136a8640100000000836147d4565b156136b45760016136b7565b60005b6136c89060ff16602084901c6147ad565b6139ba565b6000808060001985870985870292508281108382030391505080600003613749576000841161373e5760405162461bcd60e51b815260206004820152601960248201527f48616e646c65206e6f6e2d6f766572666c6f77206361736573000000000000006044820152606401610397565b5082900490506102b4565b8084116137985760405162461bcd60e51b815260206004820152601960248201527f70726576656e74732064656e6f6d696e61746f72203d3d2030000000000000006044820152606401610397565b60008486880980840393811190920391905060006137d06137b887612569565b6137c188612569565b6137ca90614493565b16612686565b9586900495938490049360008190030460010190506137ef8184614859565b909317926000613800876003614859565b600218905061380f8188614859565b61381a9060026140a7565b6138249082614859565b90506138308188614859565b61383b9060026140a7565b6138459082614859565b90506138518188614859565b61385c9060026140a7565b6138669082614859565b90506138728188614859565b61387d9060026140a7565b6138879082614859565b90506138938188614859565b61389e9060026140a7565b6138a89082614859565b90506138b48188614859565b6138bf9060026140a7565b6138c99082614859565b90506138d58186614859565b9998505050505050505050565b604080516001600160e01b0319831660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166301ffc9a760e01b1790529051600091829182916001600160a01b0387169161394391906148fd565b6000604051808303816000865af19150503d8060008114613980576040519150601f19603f3d011682016040523d82523d6000602084013e613985565b606091505b50915091508161399a57600092505050610116565b80516000036139ae57600092505050610116565b60200151949350505050565b60006001600160a01b038211156125295760405163dccde8ed60e01b815260040160405180910390fd5b6040518060800160405280600081526020016000815260200160008152602001600081525090565b828054828255906000526020600020908101928215613a47579160200282015b82811115613a47578251825591602001919060010190613a2c565b506125299291505b808211156125295760008155600101613a4f565b600060208284031215613a7557600080fd5b5035919050565b8151815260208083015190820152604080830151908201526060808301519082015260808101610116565b634e487b7160e01b600052602160045260246000fd5b600a8110613acd57613acd613aa7565b9052565b60005b83811015613aec578181015183820152602001613ad4565b50506000910152565b60008151808452613b0d816020860160208601613ad1565b601f01601f19169290920160200192915050565b60006020808352613b358184018551613abd565b8084015160606040850152613b4d6080850182613af5565b6040860151858203601f19016060870152805180835290840192506000918401905b80831015613b8f5783518252928401926001929092019190840190613b6f565b509695505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613bd357613bd3613b9a565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613c0257613c02613b9a565b604052919050565b600067ffffffffffffffff821115613c2457613c24613b9a565b5060051b60200190565b600082601f830112613c3f57600080fd5b81356020613c54613c4f83613c0a565b613bd9565b8083825260208201915060208460051b870101935086841115613c7657600080fd5b602086015b84811015613b8f5780358352918301918301613c7b565b600080600060608486031215613ca757600080fd5b8335600a8110613cb657600080fd5b925060208481013567ffffffffffffffff80821115613cd457600080fd5b818701915087601f830112613ce857600080fd5b813581811115613cfa57613cfa613b9a565b613d0c601f8201601f19168501613bd9565b8181528985838601011115613d2057600080fd5b818585018683013760009181019094015291935060408601359180831115613d4757600080fd5b5050613d5586828701613c2e565b9150509250925092565b600080600060608486031215613d7457600080fd5b83359250602084013567ffffffffffffffff80821115613d9357600080fd5b613d9f87838801613c2e565b93506040860135915080821115613db557600080fd5b50613d5586828701613c2e565b600181811c90821680613dd657607f821691505b602082108103611d0757634e487b7160e01b600052602260045260246000fd5b60008151808452602080850194506020840160005b83811015613e2757815187529582019590820190600101613e0b565b509495945050505050565b848152613e426020820185613abd565b608060408201526000613e586080830185613af5565b828103606084015261189a8185613df6565b634e487b7160e01b600052603260045260246000fd5b600060208284031215613e9257600080fd5b8151600981106102b457600080fd5b6020810160098310613eb557613eb5613aa7565b91905290565b6001600160a01b0381168114613ed057600080fd5b50565b600060208284031215613ee557600080fd5b81516102b481613ebb565b608080825285518282018190526000919060209060a0850190828a01855b82811015613f5257613f42848351805182526020810151602083015260408101516040830152606081015160608301525050565b9285019290840190600101613f0e565b5050508481036020860152613f678189613af5565b925050508281036040840152613f7d8186613df6565b9050828103606084015261189a8185613df6565b600060808284031215613fa357600080fd5b613fab613bb0565b825181526020830151602082015260408301516040820152606083015160608201528091505092915050565b805160ff8116811461200457600080fd5b600080600060608486031215613ffd57600080fd5b835161400881613ebb565b6020850151909350915061401e60408501613fd7565b90509250925092565b805169ffffffffffffffffffff8116811461200457600080fd5b600080600080600060a0868803121561405957600080fd5b61406286614027565b945060208601519350604086015192506060860151915061408560808701614027565b90509295509295909350565b634e487b7160e01b600052601160045260246000fd5b8181038181111561011657610116614091565b60008060008060008060c087890312156140d357600080fd5b86516140de81613ebb565b60208801519096506140ef81613ebb565b94506140fd60408801613fd7565b935061410b60608801613fd7565b9250608087015161411b81613ebb565b60a088015190925063ffffffff8116811461413557600080fd5b809150509295509295509295565b6020808252825182820181905260009190848201906040850190845b8181101561418157835163ffffffff168352928401929184019160010161415f565b50909695505050505050565b600082601f83011261419e57600080fd5b815160206141ae613c4f83613c0a565b8083825260208201915060208460051b8701019350868411156141d057600080fd5b602086015b84811015613b8f5780516141e881613ebb565b83529183019183016141d5565b6000806040838503121561420857600080fd5b825167ffffffffffffffff8082111561422057600080fd5b818501915085601f83011261423457600080fd5b81516020614244613c4f83613c0a565b82815260059290921b8401810191818101908984111561426357600080fd5b948201945b838610156142915785518060060b81146142825760008081fd5b82529482019490820190614268565b918801519196509093505050808211156142aa57600080fd5b506142b78582860161418d565b9150509250929050565b600682810b9082900b03667fffffffffffff198112667fffffffffffff8213171561011657610116614091565b634e487b7160e01b600052601260045260246000fd5b60008160060b8360060b8061431b5761431b6142ee565b667fffffffffffff1982146000198214161561433957614339614091565b90059392505050565b600082614351576143516142ee565b500790565b60008160020b627fffff19810361436f5761436f614091565b6000190192915050565b600181815b808511156143b457816000190482111561439a5761439a614091565b808516156143a757918102915b93841c939080029061437e565b509250929050565b6000826143cb57506001610116565b816143d857506000610116565b81600181146143ee57600281146143f857614414565b6001915050610116565b60ff84111561440957614409614091565b50506001821b610116565b5060208310610133831016604e8410600b8410161715614437575081810a610116565b6144418383614379565b806000190482111561445557614455614091565b029392505050565b60006102b460ff8416836143bc565b818103600083128015838313168383128216171561448c5761448c614091565b5092915050565b6000600160ff1b82016144a8576144a8614091565b5060000390565b8051801515811461200457600080fd5b6000806000606084860312156144d457600080fd5b83516144df81613ebb565b6020850151909350915061401e604085016144af565b60006080828403121561450757600080fd5b61450f613bb0565b82518060070b811461452057600080fd5b8152602083015167ffffffffffffffff8116811461453d57600080fd5b60208201526040830151600381900b811461455757600080fd5b60408201526060928301519281019290925250919050565b808201828112600083128015821682158216171561458f5761458f614091565b505092915050565b6000806000606084860312156145ac57600080fd5b83516145b781613ebb565b602085015160409095015190969495509392505050565b60ff8416815267ffffffffffffffff831660208201526060604082015260006145fa6060830184613df6565b95945050505050565b6001600160a01b03831681526040602082018190526000906102ce90830184613af5565b60006020828403121561463957600080fd5b5051919050565b60008261464f5761464f6142ee565b600160ff1b82146000198414161561466957614669614091565b500590565b6146788185613abd565b60606020820152600061468e6060830185613af5565b8281036040840152610f4f8185613df6565b601f8211156146e8576000816000526020600020601f850160051c810160208610156146c95750805b601f850160051c820191505b8181101561325c578281556001016146d5565b505050565b815167ffffffffffffffff81111561470757614707613b9a565b61471b816147158454613dc2565b846146a0565b602080601f83116001811461475057600084156147385750858301515b600019600386901b1c1916600185901b17855561325c565b600085815260208120601f198616915b8281101561477f57888601518255948401946001909101908401614760565b508582101561479d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8082018082111561011657610116614091565b6000826147cf576147cf6142ee565b500490565b6000826147e3576147e36142ee565b500690565b80820260008212600160ff1b8414161561480457614804614091565b818105831482151761011657610116614091565b600069ffffffffffffffffffff82168061436f5761436f614091565b60006001820161484657614846614091565b5060010190565b60006102b483836143bc565b808202811582820484141761011657610116614091565b60006020828403121561488257600080fd5b6102b4826144af565b60006020828403121561489d57600080fd5b6102b482613fd7565b60006001600160ff1b01820161484657614846614091565b6000600160ff1b82016148d3576148d3614091565b506000190190565b60008160020b627fffff1981036148f4576148f4614091565b60000392915050565b6000825161490f818460208701613ad1565b919091019291505056fea264697066735822122074f32fef384fdc296b0859f1c1f941c8e736c6cb972aa9e2b894956ebd6a80b364736f6c63430008160033","r":"0x1","s":"0x1","yParity":"0x0","hash":"0xbc73db80bf4b8784ba10a8910a0b7ef85f6846d102b41dd990969ea205335354"}}],"ommers":[]},{"header":{"parentHash":"0x026ae0c6ae91f186a9befa1ac8be30eea35e30e77de51a731085221e5cd39209","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xb6003e7ba07a15a9e35f63daa484728ec4ceeded0c4d10ac1b04e9552d412b3c","transactionsRoot":"0x6e4969a136061ca7a390d12830d47a151585325a8d396819fb2b958ff85e9f8f","receiptsRoot":"0xc3e81df67d3e2a6c8345a954ef250cfcc41abcc2292a5aa263071124533fc9ad","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x3","gasLimit":"0x1c9c380","gasUsed":"0x3c0f6","timestamp":"0x66b200ce","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x18993a68","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[{"EIP1559":{"chainId":"0x343a","nonce":"0x0","gas":"0x3c0f6","maxFeePerGas":"0x5d4285cd","maxPriorityFeePerGas":"0x3b9aca00","value":"0x0","accessList":[],"input":"0x608060405234801561001057600080fd5b50610380806100206000396000f3fe6080604052600080357fffffffff0000000000000000000000000000000000000000000000000000000016905060008160e01c610251565b60006379ba509782101561015e5781631627540c811461009857632a952b2d81146100b457633659cfe681146100d0576350c946fe81146100ec576353a47bb781146101085763625ca21c81146101245763718fe928811461014057610158565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc9150610158565b738138ef7cf908021d117e542120b7a390650161079150610158565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc9150610158565b738138ef7cf908021d117e542120b7a390650161079150610158565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc9150610158565b738138ef7cf908021d117e542120b7a390650161079150610158565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc91505b5061024c565b816379ba509781146101a657638da5cb5b81146101c25763aaf10f4281146101de5763c7f62cda81146101fa5763daa250be81146102165763deba1b9881146102325761024a565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc915061024a565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc915061024a565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc915061024a565b7347d08dad17ccb558b3ea74b1a0e73a9cc804a9dc915061024a565b738138ef7cf908021d117e542120b7a39065016107915061024a565b738138ef7cf908021d117e542120b7a3906501610791505b505b919050565b61025a81610037565b915050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036102ce57816040517fc2a825f50000000000000000000000000000000000000000000000000000000081526004016102c5919061032f565b60405180910390fd5b3660008037600080366000845af43d6000803e80600081146102ef573d6000f35b3d6000fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610329816102f4565b82525050565b60006020820190506103446000830184610320565b9291505056fea264697066735822122017a4b7fdaaab3897a7b47abaed8d2ee92d558883d3bb2a8454f9601b2ab2c3db64736f6c63430008150033","r":"0x1","s":"0x1","yParity":"0x0","hash":"0x2476e039803622aeb040f924f04c493f559aed3d6c9372ab405cb33c8c695328"}}],"ommers":[]},{"header":{"parentHash":"0x3d22100ac0ee8d5cde334f7f926191a861b0648971ebc179547df28a0224c6d0","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x9511d4711e5c30a72b0bff38a261daa75dcc5ba8b772d970a5c742244b4c861b","transactionsRoot":"0xba5fff578d3d6c2cd63acbe9bca353eaa6fe22a5c408956eff49106e0a96c507","receiptsRoot":"0xbae111f01cb07677e3a8c5031546138407c01bc964d3493d732dc4edf47d36d3","logsBloom":"0x00000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000020000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000001000000000000000000000400000001000010000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x5","gasLimit":"0x1c9c380","gasUsed":"0xcae7","timestamp":"0x66b200cb","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x12e09c7a","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[{"EIP1559":{"chainId":"0x343a","nonce":"0x0","gas":"0xcc4d","maxFeePerGas":"0x557e5ec4","maxPriorityFeePerGas":"0x3b9aca00","to":"0x83a0444b93927c3afcbe46e522280390f748e171","value":"0x0","accessList":[],"input":"0x3659cfe6000000000000000000000000108f53faf774d7c4c56f5bce9ca6e605ce8aeadd","r":"0x1","s":"0x1","yParity":"0x0","hash":"0xf88e7b19ee347145c257e0cf7ac4ecc2bae83ca79d7edaa231e71d3213aeb151"}}],"ommers":[]},{"header":{"parentHash":"0x08abe6e453727534d8dd708843a7522b7d500338bdfe2402ca105dcdb05eebe9","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x9c8eaf493f8b4edce2ba1647343eadcc0989cf461e712c0a6253ff2ca1842bb7","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","receiptsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x1","gasLimit":"0x1c9c380","gasUsed":"0x0","timestamp":"0x66b200ca","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x3b9aca00","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[],"ommers":[]},{"header":{"parentHash":"0xdd07c07470e1deff3749831f0f1ad8d4b6e35505e83b3c6ea14181716197cd8a","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x29aa352e71b139e83b397bdd3dcf9b65d74770edaf3a9624d0dbc4f96f868680","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","receiptsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x2","gasLimit":"0x1c9c380","gasUsed":"0x0","timestamp":"0x66b200cb","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x24a1ab52","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[],"ommers":[]},{"header":{"parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","receiptsRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x0","gasLimit":"0x1c9c380","gasUsed":"0x0","timestamp":"0x66b200c9","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x3b9aca00","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[],"ommers":[]},{"header":{"parentHash":"0xf6930be4847cac5017bbcbec2756eed19f36b4196526a98a88e311c296e3a9be","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x29aa352e71b139e83b397bdd3dcf9b65d74770edaf3a9624d0dbc4f96f868680","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","receiptsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x1","gasLimit":"0x1c9c380","gasUsed":"0x0","timestamp":"0x66b200cc","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x200d75e8","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[],"ommers":[]},{"header":{"parentHash":"0x08abe6e453727534d8dd708843a7522b7d500338bdfe2402ca105dcdb05eebe9","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xb6003e7ba07a15a9e35f63daa484728ec4ceeded0c4d10ac1b04e9552d412b3c","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","receiptsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x4","gasLimit":"0x1c9c380","gasUsed":"0x0","timestamp":"0x66b200ca","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x1592fbf9","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[],"ommers":[]},{"header":{"parentHash":"0x149d41e3b89d8324cef3feff98ef308e97bafe8745cc8461c60172bc7d4c44ba","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x510f2275449c013534a25ad0b13c867caf720947b68bcbcd4863f7b172a5d023","transactionsRoot":"0x0b44110186e52ff0ceb6b0776ca2992c94144a4ed712eef65ea038260ef0fcc7","receiptsRoot":"0xc2823b8eb4730d9f2657137cc2ddc2c4f22ab68e0ab826236cf6a1551ca2b3a5","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x2","gasLimit":"0x1c9c380","gasUsed":"0xe61f9","timestamp":"0x66b200cb","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x342770c0","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[{"EIP1559":{"chainId":"0x343a","nonce":"0x0","gas":"0xe94d1","maxFeePerGas":"0x83215600","maxPriorityFeePerGas":"0x3b9aca00","to":"0x4e59b44847b379578588920ca78fbf26c0b4956c","value":"0x0","accessList":[],"input":"0x4786e4342646b3ba97c1790b6cf5a55087a36240b22570f5d3a5d6bcc929d93b608060405234801561001057600080fd5b5060008061002661006d60201b61081b1760201c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610141565b60008060405160200161007f90610121565b6040516020818303038152906040528051906020012090508091505090565b600082825260208201905092915050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e4f776e6160008201527f626c650000000000000000000000000000000000000000000000000000000000602082015250565b600061010b60238361009e565b9150610116826100af565b604082019050919050565b6000602082019050818103600083015261013a816100fe565b9050919050565b611000806101506000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806379ba50971161005b57806379ba5097146100ed5780638da5cb5b146100f7578063aaf10f4214610115578063c7f62cda1461013357610088565b80631627540c1461008d5780633659cfe6146100a957806353a47bb7146100c5578063718fe928146100e3575b600080fd5b6100a760048036038101906100a29190610d25565b61014f565b005b6100c360048036038101906100be9190610d25565b6102d0565b005b6100cd6102e4565b6040516100da9190610d61565b60405180910390f35b6100eb610317565b005b6100f56103fe565b005b6100ff61058b565b60405161010c9190610d61565b60405180910390f35b61011d6105be565b60405161012a9190610d61565b60405180910390f35b61014d60048036038101906101489190610d25565b6105f1565b005b61015761084c565b600061016161081b565b9050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036101c9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610252576040517fa88ee57700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce22826040516102c49190610d61565b60405180910390a15050565b6102d861084c565b6102e1816108c5565b50565b60006102ee61081b565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061032161081b565b90503373ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146103b757336040517fa0e5a0d70000000000000000000000000000000000000000000000000000000081526004016103ae9190610d61565b60405180910390fd5b60008160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061040861081b565b905060008160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104a357336040517fa0e5a0d700000000000000000000000000000000000000000000000000000000815260040161049a9190610d61565b60405180910390fd5b7fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c8260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826040516104f8929190610d7c565b60405180910390a1808260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008260010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600061059561081b565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006105c8610b05565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006105fb610b05565b905060018160000160146101000a81548160ff02191690831515021790555060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16633659cfe6846040516024016106cc9190610d61565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161071b9190610e16565b600060405180830381855af49150503d8060008114610756576040519150601f19603f3d011682016040523d82523d6000602084013e61075b565b606091505b505090508015806107c357508173ffffffffffffffffffffffffffffffffffffffff16610786610b05565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b156107fa576040517fa1cfa5a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008360000160146101000a81548160ff0219169083151502179055600080fd5b60008060405160200161082d90610eb0565b6040516020818303038152906040528051906020012090508091505090565b610854610b36565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108c357336040517f8e4a23d60000000000000000000000000000000000000000000000000000000081526004016108ba9190610d61565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361092b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093481610b69565b61097557806040517f8a8b41ec00000000000000000000000000000000000000000000000000000000815260040161096c9190610d61565b60405180910390fd5b600061097f610b05565b90508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a0a576040517fa88ee57700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060000160149054906101000a900460ff16158015610a2e5750610a2d82610b7c565b5b15610a7057816040517f15504301000000000000000000000000000000000000000000000000000000008152600401610a679190610d61565b60405180910390fd5b818160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503073ffffffffffffffffffffffffffffffffffffffff167f5d611f318680d00598bb735d61bacf0c514c6b50e1e5ad30040a4df2b12791c783604051610af99190610d61565b60405180910390a25050565b600080604051602001610b1790610f42565b6040516020818303038152906040528051906020012090508091505090565b6000610b4061081b565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080823b905060008111915050919050565b60008060003073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1663c7f62cda86604051602401610bc59190610d61565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610c149190610e16565b600060405180830381855af49150503d8060008114610c4f576040519150601f19603f3d011682016040523d82523d6000602084013e610c54565b606091505b509150915081158015610cb9575063a1cfa5a860e01b604051602001610c7a9190610faf565b6040516020818303038152906040528051906020012081604051602001610ca19190610e16565b60405160208183030381529060405280519060200120145b92505050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610cf282610cc7565b9050919050565b610d0281610ce7565b8114610d0d57600080fd5b50565b600081359050610d1f81610cf9565b92915050565b600060208284031215610d3b57610d3a610cc2565b5b6000610d4984828501610d10565b91505092915050565b610d5b81610ce7565b82525050565b6000602082019050610d766000830184610d52565b92915050565b6000604082019050610d916000830185610d52565b610d9e6020830184610d52565b9392505050565b600081519050919050565b600081905092915050565b60005b83811015610dd9578082015181840152602081019050610dbe565b60008484015250505050565b6000610df082610da5565b610dfa8185610db0565b9350610e0a818560208601610dbb565b80840191505092915050565b6000610e228284610de5565b915081905092915050565b600082825260208201905092915050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e4f776e6160008201527f626c650000000000000000000000000000000000000000000000000000000000602082015250565b6000610e9a602383610e2d565b9150610ea582610e3e565b604082019050919050565b60006020820190508181036000830152610ec981610e8d565b9050919050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e50726f7860008201527f7900000000000000000000000000000000000000000000000000000000000000602082015250565b6000610f2c602183610e2d565b9150610f3782610ed0565b604082019050919050565b60006020820190508181036000830152610f5b81610f1f565b9050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b610fa9610fa482610f62565b610f8e565b82525050565b6000610fbb8284610f98565b6004820191508190509291505056fea264697066735822122023a7c33d7b91dce35ffbcf8837693364ab22a3905d0fc00016833e5fac45ca2f64736f6c63430008110033","r":"0x1","s":"0x1","yParity":"0x0","hash":"0x4feae6769d748b4f0f7c9bf21d782236c88f13906789a3ec602961296e4c3e43"}}],"ommers":[]},{"header":{"parentHash":"0xb3535af5103fd1c2bbd6dc7ff23f0799037a6542c231ebcb85abd776560fa512","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x23d74fb99ff6e42cbb5c33f92b078e37be6af2b6092459b103ff7059a6517ebc","transactionsRoot":"0x9eab45eca206fe11c107ea985c7d02fcfa442836aea3e04ba11dc4df587d5aa6","receiptsRoot":"0xe25abcfa973db8c55f73292137c626430de130a382ad4466337fefb0f7c8fde0","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x2","gasLimit":"0x1c9c380","gasUsed":"0x3ce3f","timestamp":"0x66b200cd","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x1c0bc72b","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[{"EIP1559":{"chainId":"0x343a","nonce":"0x0","gas":"0x3d8a8","maxFeePerGas":"0x6211577c","maxPriorityFeePerGas":"0x3b9aca00","to":"0x4e59b44847b379578588920ca78fbf26c0b4956c","value":"0x0","accessList":[],"input":"0x4786e4342646b3ba97c1790b6cf5a55087a36240b22570f5d3a5d6bcc929d93b608060405234801561001057600080fd5b5060405161068538038061068583398181016040528101906100329190610275565b818181600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361009b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100ae8161019d60201b61004f1760201c565b6100ef57806040517f8a8b41ec0000000000000000000000000000000000000000000000000000000081526004016100e691906102c4565b60405180910390fd5b806100fe6101b060201b60201c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050806101536101e160201b6100621760201c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050610414565b600080823b905060008111915050919050565b6000806040516020016101c290610362565b6040516020818303038152906040528051906020012090508091505090565b6000806040516020016101f3906103f4565b6040516020818303038152906040528051906020012090508091505090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061024282610217565b9050919050565b61025281610237565b811461025d57600080fd5b50565b60008151905061026f81610249565b92915050565b6000806040838503121561028c5761028b610212565b5b600061029a85828601610260565b92505060206102ab85828601610260565b9150509250929050565b6102be81610237565b82525050565b60006020820190506102d960008301846102b5565b92915050565b600082825260208201905092915050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e50726f7860008201527f7900000000000000000000000000000000000000000000000000000000000000602082015250565b600061034c6021836102df565b9150610357826102f0565b604082019050919050565b6000602082019050818103600083015261037b8161033f565b9050919050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e4f776e6160008201527f626c650000000000000000000000000000000000000000000000000000000000602082015250565b60006103de6023836102df565b91506103e982610382565b604082019050919050565b6000602082019050818103600083015261040d816103d1565b9050919050565b610262806104236000396000f3fe6080604052366100135761001161001d565b005b61001b61001d565b005b6000610027610093565b90503660008037600080366000845af43d6000803e806000811461004a573d6000f35b3d6000fd5b600080823b905060008111915050919050565b6000806040516020016100749061017a565b6040516020818303038152906040528051906020012090508091505090565b600061009d6100c6565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000806040516020016100d89061020c565b6040516020818303038152906040528051906020012090508091505090565b600082825260208201905092915050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e4f776e6160008201527f626c650000000000000000000000000000000000000000000000000000000000602082015250565b60006101646023836100f7565b915061016f82610108565b604082019050919050565b6000602082019050818103600083015261019381610157565b9050919050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e50726f7860008201527f7900000000000000000000000000000000000000000000000000000000000000602082015250565b60006101f66021836100f7565b91506102018261019a565b604082019050919050565b60006020820190508181036000830152610225816101e9565b905091905056fea2646970667358221220800da1f73cebd5e4afa07496d9bca6b6c4f526bdd3f4014ec15c70fe3a1c441364736f6c6343000811003300000000000000000000000047d08dad17ccb558b3ea74b1a0e73a9cc804a9dc000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","r":"0x1","s":"0x1","yParity":"0x0","hash":"0xb6794d5c7abed6f91d447e8efb72ef2580595a6d7c8dee57ba1dbb330970146a"}}],"ommers":[]},{"header":{"parentHash":"0x08abe6e453727534d8dd708843a7522b7d500338bdfe2402ca105dcdb05eebe9","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x510f2275449c013534a25ad0b13c867caf720947b68bcbcd4863f7b172a5d023","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","receiptsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x3","gasLimit":"0x1c9c380","gasUsed":"0x0","timestamp":"0x66b200ca","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x29dd5614","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[],"ommers":[]}]} +{"block":{"number":"0x5","beneficiary":"0x0000000000000000000000000000000000000000","timestamp":"0x69a208de","gas_limit":30000000,"basefee":586650728,"difficulty":"0x0","prevrandao":"0x4628ae2cc9350e18ac75275e9305b74a6e9f9d99d2ac68dda6cc0a0528c4d28d","blob_excess_gas_and_price":{"excess_blob_gas":0,"blob_gasprice":1}},"accounts":{"0x0000000000000000000000000000000000000000":{"nonce":0,"balance":"0x0","code":"0x","storage":{}},"0x1000000000000000000000000000000000000003":{"nonce":0,"balance":"0x0","code":"0x60806040526004361015610013575b61049a565b61001d5f3561006c565b8063415028a914610067578063727c346d14610062578063ad28a8161461005d578063baefa307146100585763e8d6c79a0361000e5761046e565b6103db565b61036d565b6102ff565b610245565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906100b090610088565b810190811067ffffffffffffffff8211176100ca57604052565b610092565b906100e26100db610072565b92836100a6565b565b67ffffffffffffffff8111610102576100fe602091610088565b0190565b610092565b90825f939282370152565b90929192610127610122826100e4565b6100cf565b938185526020850190828401116101435761014192610107565b565b610084565b9080601f830112156101665781602061016393359101610112565b90565b610080565b6bffffffffffffffffffffffff1690565b6101858161016b565b0361018c57565b5f80fd5b9050359061019d8261017c565b565b91906040838203126101df575f8301359067ffffffffffffffff82116101da576101ce816101d7938601610148565b93602001610190565b90565b61007c565b610078565b5190565b60209181520190565b90825f9392825e0152565b61021b61022460209361022993610212816101e4565b938480936101e8565b958691016101f1565b610088565b0190565b6102429160208201915f8184039101526101fc565b90565b61026d61025c61025636600461019f565b90610513565b610264610072565b9182918261022d565b0390f35b5f91031261027b57565b610078565b90565b60018060a01b031690565b90565b6102a56102a06102aa92610280565b61028e565b610283565b90565b6102b690610291565b90565b6102c360686102ad565b90565b6102ce6102b9565b90565b6102da90610283565b90565b6102e6906102d1565b9052565b91906102fd905f602085019401906102dd565b565b61030a366004610271565b6103266103156102c6565b61031d610072565b918291826102ea565b0390f35b90565b61034161033c6103469261032a565b61028e565b610283565b90565b6103529061032d565b90565b61035f6067610349565b90565b61036a610355565b90565b610378366004610271565b610394610383610362565b61038b610072565b918291826102ea565b0390f35b90565b6103af6103aa6103b492610398565b61028e565b610283565b90565b6103c09061039b565b90565b6103cd60666103b7565b90565b6103d86103c3565b90565b6103e6366004610271565b6104026103f16103d0565b6103f9610072565b918291826102ea565b0390f35b90602082820312610436575f82013567ffffffffffffffff81116104315761042e9201610148565b90565b61007c565b610078565b6104449061016b565b9052565b9291602061046461046c9360408701908782035f8901526101fc565b94019061043b565b565b61048161047c366004610406565b610739565b9061049661048d610072565b92839283610448565b0390f35b5f80fd5b606090565b905090565b6104cd6104c4926020926104bb816101e4565b948580936104a3565b938491016101f1565b0190565b60a01b90565b6104e0906104d1565b90565b6104ef6104f49161016b565b6104d7565b9052565b61050861050f91600c94936104a8565b80926104e3565b0190565b6105469061051f61049e565b5061053761052b610072565b938492602084016104f8565b602082018103825203826100a6565b90565b5f90565b90565b90565b61056761056261056c9261054d565b61028e565b610550565b90565b634e487b7160e01b5f52601160045260245ffd5b61059261059891939293610550565b92610550565b82039182116105a357565b61056f565b906105ba6105b5836100e4565b6100cf565b918252565b369037565b906105e96105d1836105a8565b926020806105df86936100e4565b92019103906105bf565b565b90565b6106026105fd610607926105eb565b61028e565b610550565b90565b60016106169101610550565b90565b634e487b7160e01b5f52603260045260245ffd5b90610637826101e4565b81101561064957600160209102010190565b610619565b60ff60f81b1690565b610661905161064e565b90565b61067361067991939293610550565b92610550565b820180921161068457565b61056f565b60200190565b6bffffffffffffffffffffffff60a01b1690565b6106ad905161068f565b90565b1b90565b6106ce6106c96106c3836101e4565b92610689565b6106a3565b90600c81106106dc575b5090565b6106fc906bffffffffffffffffffffffff60a01b90600c036008026106b0565b165f6106d8565b60a01c90565b61071d6107186107229261016b565b61028e565b61016b565b90565b61073161073691610703565b610709565b90565b9061074261049e565b5061074b610549565b50610768610758836101e4565b610762600c610553565b90610583565b610771816105c4565b9061077b5f6105ee565b5b8061078f61078984610550565b91610550565b10156107c6576107c1906107ac6107a787839061062d565b610657565b6107bb859183905f1a9261062d565b5361060a565b61077c565b50926107da6107d5600c610553565b6105c4565b916107e45f6105ee565b5b806107f96107f3600c610553565b91610550565b101561083a576108359061082061081b856108158a8590610664565b9061062d565b610657565b61082f869183905f1a9261062d565b5361060a565b6107e5565b5093505061084a61084f916106b4565b610725565b9056fea2646970667358221220f9203a71c0b6a6da16bf7b2698301c72ec306733882bb85b4d6d1038767c731464736f6c637829302e382e33312d646576656c6f702e323032352e31312e31322b636f6d6d69742e3637366264656363005a","storage":{}},"0x1000000000000000000000000000000000000004":{"nonce":0,"balance":"0x0","code":"0x60806040526004361015610013575b610694565b61001d5f356100ac565b8063210ca7be146100a7578063415028a9146100a257806370df09331461009d57806382678dd6146100985780638b2f9fd114610093578063affed0e01461008e578063b7f5f9b714610089578063e8d6c79a146100845763eefbaf180361000e5761065f565b610604565b6105a8565b61052e565b61048d565b6103d9565b610372565b6102f3565b610245565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906100f4906100cc565b810190811067ffffffffffffffff82111761010e57604052565b6100d6565b9061012661011f6100b2565b92836100ea565b565b67ffffffffffffffff8111610146576101426020916100cc565b0190565b6100d6565b90825f939282370152565b9092919261016b61016682610128565b610113565b93818552602085019082840111610187576101859261014b565b565b6100c8565b9080601f830112156101aa578160206101a793359101610156565b90565b6100c4565b906020828203126101df575f82013567ffffffffffffffff81116101da576101d7920161018c565b90565b6100c0565b6100bc565b5190565b60209181520190565b90825f9392825e0152565b61021b61022460209361022993610212816101e4565b938480936101e8565b958691016101f1565b6100cc565b0190565b6102429160208201915f8184039101526101fc565b90565b346102755761027161026061025b3660046101af565b610713565b6102686100b2565b9182918261022d565b0390f35b6100b8565b6bffffffffffffffffffffffff1690565b6102948161027a565b0361029b57565b5f80fd5b905035906102ac8261028b565b565b91906040838203126102ee575f8301359067ffffffffffffffff82116102e9576102dd816102e693860161018c565b9360200161029f565b90565b6100c0565b6100bc565b346103245761032061030f6103093660046102ae565b906107b7565b6103176100b2565b9182918261022d565b0390f35b6100b8565b90565b61033581610329565b0361033c57565b5f80fd5b9050359061034d8261032c565b565b9060208282031261036857610365915f01610340565b90565b6100bc565b5f0190565b346103a05761038a61038536600461034f565b610847565b6103926100b2565b8061039c8161036d565b0390f35b6100b8565b5f9103126103af57565b6100bc565b90565b6103c0906103b4565b9052565b91906103d7905f602085019401906103b7565b565b34610409576103e93660046103a5565b6104056103f46108be565b6103fc6100b2565b918291826103c4565b0390f35b6100b8565b60018060a01b031690565b6104229061040e565b90565b61042e81610419565b0361043557565b5f80fd5b9050359061044682610425565b565b906020828203126104615761045e915f01610439565b90565b6100bc565b151590565b61047490610466565b9052565b919061048b905f6020850194019061046b565b565b346104bd576104b96104a86104a3366004610448565b610908565b6104b06100b2565b91829182610478565b0390f35b6100b8565b1c90565b6bffffffffffffffffffffffff1690565b6104e79060086104ec93026104c2565b6104c6565b90565b906104fa91546104d7565b90565b61050960015f906104ef565b90565b6105159061027a565b9052565b919061052c905f6020850194019061050c565b565b3461055e5761053e3660046103a5565b61055a6105496104fd565b6105516100b2565b91829182610519565b0390f35b6100b8565b9190916040818403126105a35761057c835f8301610439565b92602082013567ffffffffffffffff811161059e5761059b920161018c565b90565b6100c0565b6100bc565b346105d9576105d56105c46105be366004610563565b906109fe565b6105cc6100b2565b9182918261022d565b0390f35b6100b8565b929160206105fa6106029360408701908782035f8901526101fc565b94019061050c565b565b346106355761061c6106173660046101af565b610c1b565b906106316106286100b2565b928392836105de565b0390f35b6100b8565b90565b6106469061063a565b9052565b919061065d905f6020850194019061063d565b565b3461068f5761068b61067a610675366004610448565b610d60565b6106826100b2565b9182918261064a565b0390f35b6100b8565b5f80fd5b606090565b90565b6106b46106af6106b99261040e565b61069d565b61040e565b90565b6106c5906106a0565b90565b6106d1906106bc565b90565b906106de906106c8565b5f5260205260405f2090565b5f1c90565b90565b6106fe610703916106ea565b6106ef565b90565b61071090b06106f2565b90565b61072861074491610722610698565b50610c1b565b9061073c6107375f33906106d4565b610706565b919091610e44565b90565b905090565b6107716107689260209261075f816101e4565b94858093610747565b938491016101f1565b0190565b60a01b90565b61078490610775565b90565b6107936107989161027a565b61077b565b9052565b6107ac6107b391600c949361074c565b8092610787565b0190565b6107ea906107c3610698565b506107db6107cf6100b2565b9384926020840161079c565b602082018103825203826100ea565b90565b5f1b90565b906107fe5f19916107ed565b9181191691161790565b61081c61081761082192610329565b61069d565b610329565b90565b90565b9061083c61083761084392610808565b610824565b82b06107f2565b90b1565b61085b906108565f33906106d4565b610827565b336108867fe09b54ab39b458cc6e350a9444815a294301d94eaa79ba68d8a2f9f9c7c0b4cc916106c8565b9061088f6100b2565b806108998161036d565b0390a2565b5f90565b6108b66108b16108bb92610329565b61069d565b6103b4565b90565b6108c661089e565b506108e26108dd6108d85f33906106d4565b610706565b6108a2565b90565b5f90565b90565b6109006108fb610905926108e9565b61069d565b610329565b90565b61091e610923916109176108e5565b505f6106d4565b610706565b61093d6109376109325f6108ec565b610329565b91610329565b141590565b61094e610953916106ea565b6104c6565b90565b6109609054610942565b90565b634e487b7160e01b5f52601160045260245ffd5b6109809061027a565b6bffffffffffffffffffffffff81146109995760010190565b610963565b906109b56bffffffffffffffffffffffff916107ed565b9181191691161790565b6109d36109ce6109d89261027a565b61069d565b61027a565b90565b90565b906109f36109ee6109fa926109bf565b6109db565b825461099e565b9055565b610a4291610a20610a1b610a3293610a14610698565b505f6106d4565b610706565b90610a2b6001610956565b9091610efd565b610a3c6001610956565b906107b7565b610a5e610a57610a526001610956565b610977565b60016109de565b90565b5f90565b90565b610a7c610a77610a8192610a65565b61069d565b6103b4565b90565b610a93610a99919392936103b4565b926103b4565b8203918211610aa457565b610963565b90610abb610ab683610128565b610113565b918252565b369037565b90610aea610ad283610aa9565b92602080610ae08693610128565b9201910390610ac0565b565b610b00610afb610b05926108e9565b61069d565b6103b4565b90565b6001610b1491016103b4565b90565b634e487b7160e01b5f52603260045260245ffd5b90610b35826101e4565b811015610b4757600160209102010190565b610b17565b60ff60f81b1690565b610b5f9051610b4c565b90565b610b71610b77919392936103b4565b926103b4565b8201809211610b8257565b610963565b60200190565b6bffffffffffffffffffffffff60a01b1690565b610bab9051610b8d565b90565b1b90565b610bcc610bc7610bc1836101e4565b92610b87565b610ba1565b90600c8110610bda575b5090565b610bfa906bffffffffffffffffffffffff60a01b90600c03600802610bae565b165f610bd6565b60a01c90565b610c13610c1891610c01565b6109bf565b90565b90610c24610698565b50610c2d610a61565b50610c4a610c3a836101e4565b610c44600c610a68565b90610a84565b610c5381610ac5565b90610c5d5f610aec565b5b80610c71610c6b846103b4565b916103b4565b1015610ca857610ca390610c8e610c89878390610b2b565b610b55565b610c9d859183905f1a92610b2b565b53610b08565b610c5e565b5092610cbc610cb7600c610a68565b610ac5565b91610cc65f610aec565b5b80610cdb610cd5600c610a68565b916103b4565b1015610d1c57610d1790610d02610cfd85610cf78a8590610b62565b90610b2b565b610b55565b610d11869183905f1a92610b2b565b53610b08565b610cc7565b50935050610d2c610d3191610bb2565b610c07565b90565b5f90565b90565b610d47610d4c91610329565b610d38565b9052565b610d5c81602093610d3b565b0190565b610da4610d81610d7c610d9593610d75610d34565b505f6106d4565b610706565b610d896100b2565b92839160208301610d50565b602082018103825203826100ea565b610db6610db0826101e4565b91610b87565b2090565b91610dd9602084610dd1610de09796600c96610d3b565b018092610787565b019061074c565b90565b90565b610dfa610df5610dff92610de3565b61069d565b61040e565b90565b610e0b90610de6565b90565b610e186067610e02565b90565b3d5f14610e3657610e2b3d610aa9565b903d5f602084013e5b565b610e3e610698565b90610e34565b91610e7e5f9392610e6f8594610e58610698565b509193610e636100b2565b94859360208501610dba565b602082018103825203826100ea565b610e86610e0e565b90602081019051915afa610ea2610e9b610e1b565b9115610466565b610ea95790565b5f63a99eec4b60e01b815280610ec16004820161036d565b0390fd5b90565b610edc610ed7610ee192610ec5565b61069d565b61040e565b90565b610eed90610ec8565b90565b610efa6066610ee4565b90565b91610f375f9392610f288594610f11610698565b509193610f1c6100b2565b94859360208501610dba565b602082018103825203826100ea565b610f3f610ef0565b90602081019051915afa610f5b610f54610e1b565b9115610466565b610f625790565b5f63a99eec4b60e01b815280610f7a6004820161036d565b0390fdfea2646970667358221220d49235db1fc2813aca0c2c613fb2406a25c06fae48bbc6f76adb97907c3ca3e164736f6c637829302e382e33312d646576656c6f702e323032352e31312e31322b636f6d6d69742e3637366264656363005a","storage":{}},"0x1000000000000000000000000000000000000005":{"nonce":0,"balance":"0x0","code":"0x60806040526004361015610013575b610800565b61001d5f356100bc565b806346e2577a146100b75780634a8fcf9a146100b257806350f3fc81146100ad5780638a355a57146100a85780638da5cb5b146100a3578063a36250d81461009e578063ba1ab29114610099578063c41c2f2414610094578063ed03b3001461008f5763f2fde38b0361000e576107cd565b610798565b610741565b61067d565b610632565b6105da565b61058a565b610555565b61040f565b610131565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b60018060a01b031690565b6100e8906100d4565b90565b6100f4816100df565b036100fb57565b5f80fd5b9050359061010c826100eb565b565b9060208282031261012757610124915f016100ff565b90565b6100cc565b5f0190565b3461015f5761014961014436600461010e565b610b62565b6101516100c2565b8061015b8161012c565b0390f35b6100c8565b5f80fd5b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906101949061016c565b810190811067ffffffffffffffff8211176101ae57604052565b610176565b906101c66101bf6100c2565b928361018a565b565b67ffffffffffffffff81116101e6576101e260209161016c565b0190565b610176565b90825f939282370152565b9092919261020b610206826101c8565b6101b3565b9381855260208501908284011161022757610225926101eb565b565b610168565b9080601f8301121561024a57816020610247933591016101f6565b90565b610164565b9060208282031261027f575f82013567ffffffffffffffff811161027a57610277920161022c565b90565b6100d0565b6100cc565b5190565b60209181520190565b60200190565b90565b6102a390610297565b9052565b906102b48160209361029a565b0190565b60200190565b906102db6102d56102ce84610284565b8093610288565b92610291565b905f5b8181106102eb5750505090565b9091926103046102fe60019286516102a7565b946102b8565b91019190916102de565b5190565b60209181520190565b60200190565b5190565b60209181520190565b90825f9392825e0152565b6103586103616020936103669361034f81610321565b93848093610325565b9586910161032e565b61016c565b0190565b9061037491610339565b90565b60200190565b9061039161038a8361030e565b8092610312565b90816103a26020830284019461031b565b925f915b8383106103b557505050505090565b909192939460206103d76103d18385600195038752895161036a565b97610377565b93019301919392906103a6565b90916103fe61040c9360408401908482035f8601526102be565b91602081840391015261037d565b90565b346104405761042761042236600461024f565b610e18565b9061043c6104336100c2565b928392836103e4565b0390f35b6100c8565b90565b61045181610445565b0361045857565b5f80fd5b9050359061046982610448565b565b9060208282031261048457610481915f0161045c565b90565b6100cc565b634e487b7160e01b5f52603260045260245ffd5b5490565b5f5260205f2090565b6104b38161049d565b8210156104cd576104c56001916104a1565b910201905f90565b610489565b1c90565b60018060a01b031690565b6104f19060086104f693026104d2565b6104d6565b90565b9061050491546104e1565b90565b60016105128161049d565b82101561052f5761052c91610526916104aa565b906104f9565b90565b5f80fd5b61053c906100df565b9052565b9190610553905f60208501940190610533565b565b346105855761058161057061056b36600461046b565b610507565b6105786100c2565b91829182610540565b0390f35b6100c8565b346105b8576105a261059d36600461010e565b61123b565b6105aa6100c2565b806105b48161012c565b0390f35b6100c8565b5f9103126105c757565b6100cc565b6105d75f5f906104f9565b90565b3461060a576105ea3660046105bd565b6106066105f56105cc565b6105fd6100c2565b91829182610540565b0390f35b6100c8565b736346d64a3f31774283b72926b75ffda9662266ce90565b61062f61060f565b90565b34610662576106423660046105bd565b61065e61064d610627565b6106556100c2565b91829182610540565b0390f35b6100c8565b60046001609c1b0190565b61067a610667565b90565b346106ad5761068d3660046105bd565b6106a9610698610672565b6106a06100c2565b91829182610540565b0390f35b6100c8565b90565b6106c96106c46106ce926100d4565b6106b2565b6100d4565b90565b6106da906106b5565b90565b6106e6906106d1565b90565b6106f96106f4610667565b6106dd565b90565b6107046106e9565b90565b610710906106b5565b90565b61071c90610707565b90565b61072890610713565b9052565b919061073f905f6020850194019061071f565b565b34610771576107513660046105bd565b61076d61075c6106fc565b6107646100c2565b9182918261072c565b0390f35b6100c8565b61077f90610445565b9052565b9190610796905f60208501940190610776565b565b346107c8576107a83660046105bd565b6107c46107b361124a565b6107bb6100c2565b91829182610783565b0390f35b6100c8565b346107fb576107e56107e036600461010e565b61131a565b6107ed6100c2565b806107f78161012c565b0390f35b6100c8565b5f80fd5b60209181520190565b5f7f4455504c49434154455f50524f56494445520000000000000000000000000000910152565b6108416012602092610804565b61084a8161080d565b0190565b6108639060208101905f818303910152610834565b90565b1561086d57565b6108756100c2565b62461bcd60e51b81528061088b6004820161084e565b0390fd5b6108bd906108b861089f82611325565b6108b26108ac5f19610445565b91610445565b14610866565b6109e1565b565b5f1c90565b6108d06108d5916108bf565b6104d6565b90565b6108e290546108c4565b90565b90565b6108fc6108f7610901926108e5565b6106b2565b6100d4565b90565b61090d906108e8565b90565b5f1b90565b9061092660018060a01b0391610910565b9181191691161790565b61093990610707565b90565b90565b9061095461094f61095b92610930565b61093c565b8254610915565b9055565b5f7f554e415554484f52495a45440000000000000000000000000000000000000000910152565b610993600c602092610804565b61099c8161095f565b0190565b6109b59060208101905f818303910152610986565b90565b156109bf57565b6109c76100c2565b62461bcd60e51b8152806109dd600482016109a0565b0390fd5b610a37906109ee5f6108d8565b610a08610a026109fd5f610904565b6100df565b916100df565b14610a39575b610a3233610a2c610a26610a215f6108d8565b6100df565b916100df565b146109b8565b610b0c565b565b610a4a610a4461060f565b5f61093f565b610a0e565b90565b5f5260205f2090565b5490565b610a6881610a5b565b821015610a8257610a7a600191610a52565b910201905f90565b610489565b1b90565b91906008610aab910291610aa560018060a01b0384610a87565b92610a87565b9181191691161790565b9190610acb610ac6610ad393610930565b61093c565b908354610a8b565b9055565b9081549168010000000000000000831015610b075782610aff916001610b0595018155610a5f565b90610ab5565b565b610176565b610b20610b196001610a4f565b8290610ad7565b610b4a7fae9c2c6481964847714ce58f65a7f6dcc41d0d8394449bacdf161b5920c4744a91610930565b90610b536100c2565b80610b5d8161012c565b0390a2565b610b6b9061088f565b565b606090565b606090565b67ffffffffffffffff8111610b8f5760208091020190565b610176565b90610ba6610ba183610b77565b6101b3565b918252565b369037565b90610bd5610bbd83610b94565b92602080610bcb8693610b77565b9201910390610bab565b565b67ffffffffffffffff8111610bef5760208091020190565b610176565b90610c06610c0183610bd7565b6101b3565b918252565b606090565b5f5b828110610c1e57505050565b602090610c29610c0b565b8184015201610c12565b90610c58610c4083610bf4565b92602080610c4e8693610bd7565b9201910390610c10565b565b610c6e610c69610c73926108e5565b6106b2565b610445565b90565b6001610c829101610445565b90565b60e01b90565b610c9481610297565b03610c9b57565b5f80fd5b90505190610cac82610c8b565b565b90602082820312610cc757610cc4915f01610c9f565b90565b6100cc565b610cd46100c2565b3d5f823e3d90fd5b90610ce682610284565b811015610cf7576020809102010190565b610489565b90610d0690610297565b9052565b90929192610d1f610d1a826101c8565b6101b3565b93818552602085019082840111610d3b57610d399261032e565b565b610168565b9080601f83011215610d5e57816020610d5b93519101610d0a565b90565b610164565b90602082820312610d93575f82015167ffffffffffffffff8111610d8e57610d8b9201610d40565b90565b6100d0565b6100cc565b60209181520190565b610dc0610dc9602093610dce93610db781610321565b93848093610d98565b9586910161032e565b61016c565b0190565b91610df592610de860408201935f830190610533565b6020818403910152610da1565b90565b90610e028261030e565b811015610e13576020809102010190565b610489565b90610e21610b6d565b50610e2a610b72565b50610e3b610e3661124a565b610bb0565b91610e4c610e4761124a565b610c33565b92610e565f610c5a565b5b80610e71610e6b610e6661124a565b610445565b91610445565b1015610fdc57610eca6020610e8c610e876106e9565b610713565b63eefbaf1890610ebf610eaa610ea4600188906104aa565b906104f9565b92610eb36100c2565b95869485938493610c85565b835260048301610540565b03915afa8015610fd757610ef2915f91610fa9575b50610eed8491849092610cdc565b610cfc565b610f02610efd6106e9565b610713565b905f63b7f5f9b792610f1f610f19600185906104aa565b906104f9565b90610f3d838896610f48610f316100c2565b98899687958694610c85565b845260048401610dd2565b03925af1918215610fa457610f7d92610f76915f91610f82575b50878391610f708383610df8565b52610df8565b5150610c76565b610e57565b610f9e91503d805f833e610f96818361018a565b810190610d63565b5f610f62565b610ccc565b610fca915060203d8111610fd0575b610fc2818361018a565b810190610cae565b5f610edf565b503d610fb8565b610ccc565b5090509190565b61103990610ff05f6108d8565b61100a611004610fff5f610904565b6100df565b916100df565b1461103b575b6110343361102e6110286110235f6108d8565b6100df565b916100df565b146109b8565b61115d565b565b61104c61104661060f565b5f61093f565b611010565b5f7f50524f56494445525f4e4f545f464f554e440000000000000000000000000000910152565b6110856012602092610804565b61108e81611051565b0190565b6110a79060208101905f818303910152611078565b90565b90565b6110c16110bc6110c6926110aa565b6106b2565b610445565b90565b634e487b7160e01b5f52601160045260245ffd5b6110ec6110f291939293610445565b92610445565b82039182116110fd57565b6110c9565b634e487b7160e01b5f52603160045260245ffd5b5f90565b61112c91611126611116565b91610ab5565b565b61113781610a5b565b801561115857600190039061115561114f8383610a5f565b9061111a565b55565b611102565b61116681611325565b8061117a6111745f19610445565b91610445565b14611219576111c5906111bf6111b76111b160016111ab61119b600161049d565b6111a560016110ad565b906110dd565b906104aa565b906104f9565b9160016104aa565b90610ab5565b6111d76111d26001610a4f565b61112e565b6112017f1589f8555933761a3cff8aa925061be3b46e2dd43f621322ab611d300f62b1d991610930565b9061120a6100c2565b806112148161012c565b0390a2565b6112216100c2565b62461bcd60e51b81528061123760048201611092565b0390fd5b61124490610fe3565b565b5f90565b611252611246565b5061125d600161049d565b90565b6112b69061126d5f6108d8565b61128761128161127c5f610904565b6100df565b916100df565b146112b8575b6112b1336112ab6112a56112a05f6108d8565b6100df565b916100df565b146109b8565b6112ce565b565b6112c96112c361060f565b5f61093f565b61128d565b6112d8815f61093f565b6113027f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616391610930565b9061130b6100c2565b806113158161012c565b0390a2565b61132390611260565b565b61132d611246565b506113375f610c5a565b5b8061135261134c61134761124a565b610445565b91610445565b10156113975761136d611367600183906104aa565b906104f9565b61137f611379846100df565b916100df565b146113925761138d90610c76565b611338565b905090565b50505f199056fea264697066735822122075752650c1eb298fcdd8aac8ecf892932d7cab4774bade6597e821b82ac2e90764736f6c637829302e382e33312d646576656c6f702e323032352e31312e31322b636f6d6d69742e3637366264656363005a","storage":{}},"0x1111111111111111111111111111111111111111":{"nonce":0,"balance":"0xde0b6b3a7640000","code":"0x","storage":{"0x0":{"value":"0x2a","is_private":false},"0x1":{"value":"0x64","is_private":false}}},"0x14dc79964da2c08b23698b3d3cc7ca32193d9955":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x15d34aaf54267db7d7c367839aaf71a00a2c6a65":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x2222222222222222222222222222222222222222":{"nonce":0,"balance":"0xde0b6b3a7640000","code":"0x","storage":{"0x0":{"value":"0xff","is_private":false}}},"0x23618e81e3f5cdf7f54c3d65f7fbc0abf5b21e8f":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x4e59b44847b379578588920ca78fbf26c0b4956c":{"nonce":0,"balance":"0x0","code":"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf3","storage":{}},"0x70997970c51812dc3a010c7d01b50e0d17dc79c8":{"nonce":0,"balance":"0x21e5f445b3cf7340000","code":"0x","storage":{}},"0x90f79bf6eb2c4f870365e785982e1f101e93b906":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x976ea74026e726554db657fa54763abd0c3a0aa9":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x9965507d1a55bcc2695c58ba16fb37d819b0a4dc":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0xa0ee7a142d267c1f36714e4a8f75612f20a79720":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266":{"nonce":5,"balance":"0x21dd47cedc4faffff50","code":"0x","storage":{}}},"best_block_number":5,"blocks":[{"header":{"parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","receiptsRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x0","gasLimit":"0x1c9c380","gasUsed":"0x0","timestamp":"0x69a208dc","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x3b9aca00","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[],"ommers":[]},{"header":{"parentHash":"0xc9adb0d1c14b41a8f1d861627ea4f346acd514475ef55c913e12e3cbaa730c84","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x58c90e4545e6bc9276baf04e8b086c5e05f6241c14d52972d35404236f4f532b","transactionsRoot":"0x01d1193401a2f4aabc27cd02d0895ef0cee74d63d32d1534bc3656747fb88b77","receiptsRoot":"0xf78dfb743fbd92ade140711c8bbc542b5e307f0ab7984eff35d751969fe57efa","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x2","gasLimit":"0x1c9c380","gasUsed":"0x5208","timestamp":"0x69a208de","extraData":"0x","mixHash":"0xf9173747f39a5ea01443e2e18eef6f54686f40876d9b3f6a538d3db5c859a926","nonce":"0x0000000000000000","baseFeePerGas":"0x342a1c58","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x1","gas":"0x5208","maxFeePerGas":"0x6fc4e658","maxPriorityFeePerGas":"0x0","to":"0x70997970c51812dc3a010c7d01b50e0d17dc79c8","value":"0xde0b6b3a7640000","accessList":[],"input":"0x","r":"0x6d515f52225ef143d93de317aad5ed5797ec4059331c5ff3ad4df655ad70b5f2","s":"0x2c14184094e8317e32d7a75ba6ac1baceecbd64c9a0bde8336a8148f957450b6","yParity":"0x0","v":"0x0","hash":"0xc99050366c2f15a3ef29fc88f194fc3e5be265104dbee9f180142bc5673cfcb9"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x8ef19a31aec4dea63537eced00afb9ce0b179bc4da05d1c38ad4ab353455deb8","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xd5fa021646c47f93008f62228a6dfb1616ee5c6ad2d4ee14d246e6646813bb97","transactionsRoot":"0x988a8a273493b61b374a19a8ca032834d8cc5058d7e594ae86f1ec22d957f0ad","receiptsRoot":"0xf78dfb743fbd92ade140711c8bbc542b5e307f0ab7984eff35d751969fe57efa","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x3","gasLimit":"0x1c9c380","gasUsed":"0x5208","timestamp":"0x69a208de","extraData":"0x","mixHash":"0xf70228ca75af2ea1d322475d313be7614382c38c9271a0d01ca2be8ea9fb67f8","nonce":"0x0000000000000000","baseFeePerGas":"0x2da72f11","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x2","gas":"0x5208","maxFeePerGas":"0x6941f911","maxPriorityFeePerGas":"0x0","to":"0x70997970c51812dc3a010c7d01b50e0d17dc79c8","value":"0xde0b6b3a7640000","accessList":[],"input":"0x","r":"0x396c7ebc3685dcd48152284b55dafb2a79e90d0af39f58d436189ff51dc9c2c8","s":"0x408ce5ad836f19e17ff5a254ef880e10822376f2fcb18aa43f6318d63ad02934","yParity":"0x1","v":"0x1","hash":"0xfb18fa4f943a08afbc3ef375b59a9eee0fdf5742e6eae0589dcc1da4018b8a77"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x45b88ef8a4bf2e5c9315951fb40e542ad5eae21c78f8ac00a49e7a49c8f4dd4b","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x3cfcf00f1c2c8e9caad07f65cd4d84435b1a3c255619890981725277d008fea6","transactionsRoot":"0x546bae40a9588f0b6a28ddcf32d36f9205fbf18cfddb8604c55a82bc865414f7","receiptsRoot":"0xf78dfb743fbd92ade140711c8bbc542b5e307f0ab7984eff35d751969fe57efa","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x1","gasLimit":"0x1c9c380","gasUsed":"0x5208","timestamp":"0x69a208de","extraData":"0x","mixHash":"0x43f0cf6f783fd9be8dde07379010fa30c8531983a5f0319998ec392343b4e108","nonce":"0x0000000000000000","baseFeePerGas":"0x3b9aca00","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x0","gas":"0x5208","maxFeePerGas":"0x77359400","maxPriorityFeePerGas":"0x0","to":"0x70997970c51812dc3a010c7d01b50e0d17dc79c8","value":"0xde0b6b3a7640000","accessList":[],"input":"0x","r":"0x76b62c074cc749c9c54d2adf0c1feb21e22a4f52d4e82df4f3eed6b86bfcb126","s":"0x27983be9535e1c39a97bb7a87a35881231386f71767f82ea9f95fccc044fcc94","yParity":"0x0","v":"0x0","hash":"0xfb98aeacde77b93d1839c84ec7d3e433e36ba43f89d055dd659ba310f4db0f2e"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x020724f790faaf927b7826bb4a01e33b72bc5b710df9917180ebe3b34c3a73e8","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x0573f7ba7d7b3474147c1f635c71093de83fec038ed05fa79672d4885aa38764","transactionsRoot":"0xea8fe6ad9a5e81826f27bfefbbc4ce84d25e1ac2246653465f99e2f88c98bd7a","receiptsRoot":"0xf78dfb743fbd92ade140711c8bbc542b5e307f0ab7984eff35d751969fe57efa","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x4","gasLimit":"0x1c9c380","gasUsed":"0x5208","timestamp":"0x69a208de","extraData":"0x","mixHash":"0xde7329b16f03b8910fcecf30672c02a73b5efca8241c5d4b88a6a76a34da01ae","nonce":"0x0000000000000000","baseFeePerGas":"0x27f454c5","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x3","gas":"0x5208","maxFeePerGas":"0x638f1ec5","maxPriorityFeePerGas":"0x0","to":"0x70997970c51812dc3a010c7d01b50e0d17dc79c8","value":"0xde0b6b3a7640000","accessList":[],"input":"0x","r":"0xd75a5b04e437d35ef8371afe695f9fbd9981745d33f525c867d1a4609efa7744","s":"0x72ad9721537c4ff12e51b2557e13f3a90baeb450ef9dfa0f21b312f5b44a1505","yParity":"0x0","v":"0x0","hash":"0x034cd6252114a69d5e924f5ed7b0ff9d37161f9293b5e9efbf9cdd76facedaf8"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x80782360c5e5e9d6998ea4813d77ccfc0fc32f2b10ce4bd610007f91c8747084","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x5a354e245e0d73f140eb6f0bbaee87d5aa06d11a569a8095cb16d462c429e41e","transactionsRoot":"0xe0af524e714903642ccd24af294d67fdb434b3498ed49fddd9669196ed504dd0","receiptsRoot":"0xf78dfb743fbd92ade140711c8bbc542b5e307f0ab7984eff35d751969fe57efa","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x5","gasLimit":"0x1c9c380","gasUsed":"0x5208","timestamp":"0x69a208de","extraData":"0x","mixHash":"0x4628ae2cc9350e18ac75275e9305b74a6e9f9d99d2ac68dda6cc0a0528c4d28d","nonce":"0x0000000000000000","baseFeePerGas":"0x22f79468","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x4","gas":"0x5208","maxFeePerGas":"0x5e925e68","maxPriorityFeePerGas":"0x0","to":"0x70997970c51812dc3a010c7d01b50e0d17dc79c8","value":"0xde0b6b3a7640000","accessList":[],"input":"0x","r":"0xdbd49c4948353960be1e12729ccc8947c08460a10af1351d586b4fe7e269036b","s":"0x2322bd93d3364ce3212f5b17445987df4ded7fb7c86279968d570e53817282a","yParity":"0x0","v":"0x0","hash":"0xaedf095f4b49e795c5bb9914541a12079d0e63d7e62ebb43d5ebd5f8f68ac0e0"}},"impersonated_sender":null}],"ommers":[]}],"transactions":[{"info":{"transaction_hash":"0xfb98aeacde77b93d1839c84ec7d3e433e36ba43f89d055dd659ba310f4db0f2e","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x70997970c51812dc3a010c7d01b50e0d17dc79c8","contract_address":null,"traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x70997970c51812dc3a010c7d01b50e0d17dc79c8","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0xde0b6b3a7640000","data":"0x","output":"0x","gas_used":0,"gas_limit":0,"status":"Stop","steps":[],"tx_type":0,"decoded":null},"logs":[],"ordering":[]}],"exit":"Stop","out":"0x","nonce":0,"gas_used":21000,"tx_type":2},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x5208","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0xc9adb0d1c14b41a8f1d861627ea4f346acd514475ef55c913e12e3cbaa730c84","block_number":1},{"info":{"transaction_hash":"0x034cd6252114a69d5e924f5ed7b0ff9d37161f9293b5e9efbf9cdd76facedaf8","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x70997970c51812dc3a010c7d01b50e0d17dc79c8","contract_address":null,"traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x70997970c51812dc3a010c7d01b50e0d17dc79c8","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0xde0b6b3a7640000","data":"0x","output":"0x","gas_used":0,"gas_limit":0,"status":"Stop","steps":[],"tx_type":0,"decoded":null},"logs":[],"ordering":[]}],"exit":"Stop","out":"0x","nonce":3,"gas_used":21000,"tx_type":2},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x5208","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x80782360c5e5e9d6998ea4813d77ccfc0fc32f2b10ce4bd610007f91c8747084","block_number":4},{"info":{"transaction_hash":"0xaedf095f4b49e795c5bb9914541a12079d0e63d7e62ebb43d5ebd5f8f68ac0e0","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x70997970c51812dc3a010c7d01b50e0d17dc79c8","contract_address":null,"traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x70997970c51812dc3a010c7d01b50e0d17dc79c8","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0xde0b6b3a7640000","data":"0x","output":"0x","gas_used":0,"gas_limit":0,"status":"Stop","steps":[],"tx_type":0,"decoded":null},"logs":[],"ordering":[]}],"exit":"Stop","out":"0x","nonce":4,"gas_used":21000,"tx_type":2},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x5208","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x430b68ddf4359294ca590b4674e564b71d2cb8720be95d58a8be2341dda737ff","block_number":5},{"info":{"transaction_hash":"0xc99050366c2f15a3ef29fc88f194fc3e5be265104dbee9f180142bc5673cfcb9","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x70997970c51812dc3a010c7d01b50e0d17dc79c8","contract_address":null,"traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x70997970c51812dc3a010c7d01b50e0d17dc79c8","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0xde0b6b3a7640000","data":"0x","output":"0x","gas_used":0,"gas_limit":0,"status":"Stop","steps":[],"tx_type":0,"decoded":null},"logs":[],"ordering":[]}],"exit":"Stop","out":"0x","nonce":1,"gas_used":21000,"tx_type":2},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x5208","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x8ef19a31aec4dea63537eced00afb9ce0b179bc4da05d1c38ad4ab353455deb8","block_number":2},{"info":{"transaction_hash":"0xfb18fa4f943a08afbc3ef375b59a9eee0fdf5742e6eae0589dcc1da4018b8a77","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x70997970c51812dc3a010c7d01b50e0d17dc79c8","contract_address":null,"traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x70997970c51812dc3a010c7d01b50e0d17dc79c8","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0xde0b6b3a7640000","data":"0x","output":"0x","gas_used":0,"gas_limit":0,"status":"Stop","steps":[],"tx_type":0,"decoded":null},"logs":[],"ordering":[]}],"exit":"Stop","out":"0x","nonce":2,"gas_used":21000,"tx_type":2},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x5208","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x020724f790faaf927b7826bb4a01e33b72bc5b710df9917180ebe3b34c3a73e8","block_number":3}],"historical_states":null} \ No newline at end of file diff --git a/crates/anvil/tests/it/anvil.rs b/crates/anvil/tests/it/anvil.rs index a4832ab65..ea7eb0da4 100644 --- a/crates/anvil/tests/it/anvil.rs +++ b/crates/anvil/tests/it/anvil.rs @@ -96,6 +96,7 @@ async fn test_can_handle_large_timestamp() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "Mercury is post-Cancun; blob fields always present"] async fn test_shanghai_fields() { let (api, _handle) = spawn(NodeConfig::test().with_hardfork(Some(EthereumHardfork::Shanghai.into()))).await; @@ -141,6 +142,7 @@ async fn test_can_use_default_genesis_block_number() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "CheatEcrecover not wired into SeismicPrecompiles; needs SharedBuffer handling in inspector"] async fn test_anvil_recover_signature() { let (api, handle) = spawn(NodeConfig::test()).await; let provider = handle.http_provider(); diff --git a/crates/anvil/tests/it/anvil_api.rs b/crates/anvil/tests/it/anvil_api.rs index 18c9bdd21..5c93e841b 100644 --- a/crates/anvil/tests/it/anvil_api.rs +++ b/crates/anvil/tests/it/anvil_api.rs @@ -41,6 +41,7 @@ use std::{ use seismic_prelude::foundry::{EthereumWallet, tx_builder}; #[tokio::test(flavor = "multi_thread")] +#[ignore = "Mercury has EIP-1559; legacy gas price setting rejected"] async fn can_set_gas_price() { let (api, handle) = spawn(NodeConfig::test().with_hardfork(Some(EthereumHardfork::Berlin.into()))).await; @@ -203,6 +204,7 @@ async fn can_impersonate_contract() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn can_impersonate_gnosis_safe() { let (api, handle) = spawn(fork_config()).await; let provider = handle.http_provider(); @@ -417,6 +419,7 @@ async fn test_timestamp_interval() { // #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_can_set_storage_bsc_fork() { let (api, handle) = spawn(NodeConfig::test().with_eth_rpc_url(Some("https://bsc-dataseed.binance.org/"))).await; @@ -451,7 +454,7 @@ async fn can_get_node_info() { let block_number = provider.get_block_number().await.unwrap(); let block = provider.get_block(BlockId::from(block_number)).await.unwrap().unwrap(); - let hard_fork: &str = SpecId::PRAGUE.into(); + let hard_fork: &str = SpecId::MERCURY.into(); let expected_node_info = NodeInfo { current_block_number: 0_u64, @@ -501,6 +504,7 @@ async fn can_get_metadata() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn can_get_metadata_on_fork() { let (api, handle) = spawn(NodeConfig::test().with_eth_rpc_url(Some("https://bsc-dataseed.binance.org/"))).await; @@ -591,6 +595,7 @@ async fn test_set_chain_id() { // #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_fork_revert_next_block_timestamp() { let (api, _handle) = spawn(fork_config()).await; @@ -612,6 +617,7 @@ async fn test_fork_revert_next_block_timestamp() { // test that after a snapshot revert, the env block is reset // to its correct value (block number, etc.) #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_fork_revert_call_latest_block_timestamp() { let (api, handle) = spawn(fork_config()).await; let provider = handle.http_provider(); @@ -1060,6 +1066,7 @@ async fn test_mine_first_block_with_interval() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_anvil_reset_non_fork() { let (api, handle) = spawn(NodeConfig::test()).await; let provider = handle.http_provider(); @@ -1121,6 +1128,7 @@ async fn test_anvil_reset_non_fork() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_anvil_reset_fork_to_non_fork() { let (api, handle) = spawn(fork_config()).await; let provider = handle.http_provider(); diff --git a/crates/anvil/tests/it/api.rs b/crates/anvil/tests/it/api.rs index c8b13bd10..338319741 100644 --- a/crates/anvil/tests/it/api.rs +++ b/crates/anvil/tests/it/api.rs @@ -299,14 +299,14 @@ async fn can_call_with_undersized_max_fee_per_gas() { assert!(undersized_max_fee_per_gas < latest_block_base_fee_per_gas); let last_sender_tx = simple_storage_contract.lastSender().into_transaction_request(); - let last_sender = last_sender_tx.from().unwrap(); let raw_input = last_sender_tx.input().unwrap(); let builder = tx_builder() .with_from(wallet.address()) .with_to(*simple_storage_contract.address()) .with_input(raw_input.clone()) .into(); - seismic_provider.seismic_call(SendableTx::Builder(builder.into())).await.unwrap(); + let result = seismic_provider.seismic_call(SendableTx::Builder(builder.into())).await.unwrap(); + let last_sender =
::abi_decode(&result).unwrap(); assert_eq!(last_sender, Address::ZERO); } @@ -461,6 +461,7 @@ async fn can_send_tx_sync() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn can_get_code_by_hash() { let (api, _) = spawn(NodeConfig::test().with_eth_rpc_url(Some(rpc::next_http_archive_rpc_url()))).await; diff --git a/crates/anvil/tests/it/eip4844.rs b/crates/anvil/tests/it/eip4844.rs index 17c4acb95..4f0bdebac 100644 --- a/crates/anvil/tests/it/eip4844.rs +++ b/crates/anvil/tests/it/eip4844.rs @@ -89,6 +89,7 @@ async fn can_send_multiple_blobs_in_one_tx() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "EIP-4844 blob support not wired through Seismic type forks"] async fn cannot_exceed_six_blobs() { let node_config = NodeConfig::test().with_hardfork(Some(EthereumHardfork::Cancun.into())); let (_api, handle) = spawn(node_config).await; @@ -126,6 +127,7 @@ async fn cannot_exceed_six_blobs() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "EIP-4844 blob support not wired through Seismic type forks"] async fn can_mine_blobs_when_exceeds_max_blobs() { let node_config = NodeConfig::test().with_hardfork(Some(EthereumHardfork::Cancun.into())); let (api, handle) = spawn(node_config).await; @@ -256,6 +258,7 @@ async fn can_correctly_estimate_blob_gas_with_recommended_fillers() { #[expect(clippy::disallowed_macros)] #[tokio::test(flavor = "multi_thread")] +#[ignore = "EIP-4844 blob support not wired through Seismic type forks"] async fn can_correctly_estimate_blob_gas_with_recommended_fillers_with_signer() { let node_config = NodeConfig::test().with_hardfork(Some(EthereumHardfork::Cancun.into())); let (_api, handle) = spawn(node_config).await; @@ -389,6 +392,7 @@ async fn can_get_blobs_by_versioned_hash() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "EIP-4844 blob support not wired through Seismic type forks"] async fn can_get_blobs_by_tx_hash() { let node_config = NodeConfig::test().with_hardfork(Some(EthereumHardfork::Prague.into())); let (api, handle) = spawn(node_config).await; diff --git a/crates/anvil/tests/it/fork.rs b/crates/anvil/tests/it/fork.rs index 703189899..bb72f3ae0 100644 --- a/crates/anvil/tests/it/fork.rs +++ b/crates/anvil/tests/it/fork.rs @@ -74,6 +74,7 @@ pub fn fork_config() -> NodeConfig { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_fork_gas_limit_applied_from_config() { let (api, _handle) = spawn(fork_config().with_gas_limit(Some(10_000_000))).await; @@ -81,6 +82,7 @@ async fn test_fork_gas_limit_applied_from_config() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_fork_gas_limit_disabled_from_config() { let (api, handle) = spawn(fork_config().disable_block_gas_limit(true)).await; @@ -105,6 +107,7 @@ async fn test_fork_gas_limit_disabled_from_config() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_spawn_fork() { let (api, _handle) = spawn(fork_config()).await; assert!(api.is_fork()); @@ -114,6 +117,7 @@ async fn test_spawn_fork() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_fork_eth_get_balance() { let (api, handle) = spawn(fork_config()).await; let provider = handle.http_provider(); @@ -127,6 +131,7 @@ async fn test_fork_eth_get_balance() { // #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_fork_eth_get_balance_after_mine() { let (api, handle) = spawn(fork_config()).await; let provider = handle.http_provider(); @@ -145,6 +150,7 @@ async fn test_fork_eth_get_balance_after_mine() { // #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_fork_eth_get_code_after_mine() { let (api, handle) = spawn(fork_config()).await; let provider = handle.http_provider(); @@ -162,6 +168,7 @@ async fn test_fork_eth_get_code_after_mine() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_fork_eth_get_code() { let (api, handle) = spawn(fork_config()).await; let provider = handle.http_provider(); @@ -193,6 +200,7 @@ async fn test_fork_eth_get_code() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_fork_eth_get_nonce() { let (api, handle) = spawn(fork_config()).await; let provider = handle.http_provider(); @@ -211,6 +219,7 @@ async fn test_fork_eth_get_nonce() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_fork_optimism_with_transaction_hash() { use std::str::FromStr; @@ -231,6 +240,7 @@ async fn test_fork_optimism_with_transaction_hash() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_fork_eth_fee_history() { let (api, handle) = spawn(fork_config()).await; let provider = handle.http_provider(); @@ -243,6 +253,7 @@ async fn test_fork_eth_fee_history() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_fork_reset() { let (api, handle) = spawn(fork_config()).await; let provider = handle.http_provider(); @@ -288,6 +299,7 @@ async fn test_fork_reset() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_fork_reset_setup() { let (api, handle) = spawn(NodeConfig::test()).await; let provider = handle.http_provider(); @@ -315,6 +327,7 @@ async fn test_fork_reset_setup() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_fork_state_snapshotting() { let (api, handle) = spawn(fork_config()).await; let provider = handle.http_provider(); @@ -354,6 +367,7 @@ async fn test_fork_state_snapshotting() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_fork_state_snapshotting_repeated() { let (api, handle) = spawn(fork_config()).await; let provider = handle.http_provider(); @@ -401,6 +415,7 @@ async fn test_fork_state_snapshotting_repeated() { // #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_fork_state_snapshotting_blocks() { let (api, handle) = spawn(fork_config()).await; let provider = handle.http_provider(); @@ -452,6 +467,7 @@ async fn test_fork_state_snapshotting_blocks() { /// changes don't make into the read only Database that holds the remote state, which is flushed to /// a cache file. #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_separate_states() { let (api, handle) = spawn(fork_config().with_fork_block_number(Some(14723772u64))).await; let provider = handle.http_provider(); @@ -481,6 +497,7 @@ async fn test_separate_states() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn can_deploy_greeter_on_fork() { let (_api, handle) = spawn(fork_config().with_fork_block_number(Some(14723772u64))).await; @@ -501,6 +518,7 @@ async fn can_deploy_greeter_on_fork() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn can_reset_properly() { let (origin_api, origin_handle) = spawn(NodeConfig::test()).await; let account = origin_handle.dev_accounts().next().unwrap(); @@ -541,6 +559,7 @@ async fn can_reset_properly() { // Ref: #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn can_reset_fork_to_new_fork() { let eth_rpc_url = next_rpc_endpoint(NamedChain::Mainnet); let (api, handle) = spawn(NodeConfig::test().with_eth_rpc_url(Some(eth_rpc_url))).await; @@ -571,6 +590,7 @@ async fn can_reset_fork_to_new_fork() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_fork_timestamp() { let start = std::time::Instant::now(); @@ -642,6 +662,7 @@ async fn test_fork_timestamp() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_fork_set_empty_code() { let (api, _handle) = spawn(fork_config()).await; let addr = "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984".parse().unwrap(); @@ -653,6 +674,7 @@ async fn test_fork_set_empty_code() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_fork_can_send_tx() { let (api, handle) = spawn(fork_config().with_blocktime(Some(std::time::Duration::from_millis(800)))).await; @@ -680,6 +702,7 @@ async fn test_fork_can_send_tx() { // #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_fork_nft_set_approve_all() { let (api, handle) = spawn( fork_config() @@ -738,6 +761,7 @@ async fn test_fork_nft_set_approve_all() { // #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_fork_with_custom_chain_id() { // spawn a forked node with some random chainId let (api, handle) = spawn( @@ -763,6 +787,7 @@ async fn test_fork_with_custom_chain_id() { // #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_fork_can_send_opensea_tx() { let (api, handle) = spawn( fork_config() @@ -795,6 +820,7 @@ async fn test_fork_can_send_opensea_tx() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_fork_base_fee() { let (api, handle) = spawn(fork_config()).await; @@ -813,6 +839,7 @@ async fn test_fork_base_fee() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_fork_init_base_fee() { let (api, handle) = spawn(fork_config().with_fork_block_number(Some(13184859u64))).await; @@ -833,6 +860,7 @@ async fn test_fork_init_base_fee() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_reset_fork_on_new_blocks() { let (api, handle) = spawn(NodeConfig::test().with_eth_rpc_url(Some(rpc::next_http_archive_rpc_url()))).await; @@ -864,6 +892,7 @@ async fn test_reset_fork_on_new_blocks() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_fork_call() { let input: Bytes = "0x77c7b8fc".parse().unwrap(); let to: Address = "0x99d1Fa417f94dcD62BfE781a1213c092a47041Bc".parse().unwrap(); @@ -896,6 +925,7 @@ async fn test_fork_call() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_fork_block_timestamp() { let (api, _) = spawn(fork_config()).await; @@ -907,6 +937,7 @@ async fn test_fork_block_timestamp() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_fork_snapshot_block_timestamp() { let (api, _) = spawn(fork_config()).await; @@ -922,6 +953,7 @@ async fn test_fork_snapshot_block_timestamp() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_fork_uncles_fetch() { let (api, handle) = spawn(fork_config()).await; let provider = handle.http_provider(); @@ -961,6 +993,7 @@ async fn test_fork_uncles_fetch() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_fork_block_transaction_count() { let (api, handle) = spawn(fork_config()).await; let provider = handle.http_provider(); @@ -1015,6 +1048,7 @@ async fn test_fork_block_transaction_count() { // #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn can_impersonate_in_fork() { let (api, handle) = spawn(fork_config().with_fork_block_number(Some(15347924u64))).await; let provider = handle.http_provider(); @@ -1072,6 +1106,7 @@ async fn test_total_difficulty_fork() { // #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_transaction_receipt() { let (api, _) = spawn(fork_config()).await; @@ -1096,6 +1131,7 @@ async fn test_transaction_receipt() { // #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_block_receipts() { let (api, _) = spawn(fork_config()).await; @@ -1115,6 +1151,7 @@ async fn test_block_receipts() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn can_override_fork_chain_id() { let chain_id_override = 5u64; let (_api, handle) = spawn( @@ -1145,6 +1182,7 @@ async fn can_override_fork_chain_id() { // #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_fork_reset_moonbeam() { crate::init_tracing(); let (api, handle) = spawn( @@ -1184,6 +1222,7 @@ async fn test_fork_reset_moonbeam() { // let (api, _handle) = spawn(fork_config().with_fork_block_number(Some(18835000u64))).await; @@ -1208,6 +1247,7 @@ async fn test_fork_reset_basefee() { // #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_arbitrum_fork_dev_balance() { let (api, handle) = spawn( fork_config() @@ -1225,6 +1265,7 @@ async fn test_arbitrum_fork_dev_balance() { // #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_arb_fork_mining() { let fork_block_number = 266137031u64; let fork_rpc = next_rpc_endpoint(NamedChain::Arbitrum); @@ -1246,6 +1287,7 @@ async fn test_arb_fork_mining() { // #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_arbitrum_fork_block_number() { // fork to get initial block for test let (_, handle) = spawn( @@ -1299,6 +1341,7 @@ async fn test_arbitrum_fork_block_number() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_base_fork_gas_limit() { // fork to get initial block for test let (api, handle) = spawn( @@ -1318,6 +1361,7 @@ async fn test_base_fork_gas_limit() { // #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_fork_execution_reverted() { let target = 16681681u64; let (api, _handle) = spawn(fork_config().with_fork_block_number(Some(target + 1))).await; @@ -1423,6 +1467,7 @@ async fn test_immutable_fork_transaction_hash() { // #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_fork_query_at_fork_block() { let (api, handle) = spawn(fork_config()).await; let provider = handle.http_provider(); @@ -1444,6 +1489,7 @@ async fn test_fork_query_at_fork_block() { // #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_reset_dev_account_nonce() { let config: NodeConfig = fork_config(); let address = config.genesis_accounts[0].address(); @@ -1486,6 +1532,7 @@ async fn test_reset_dev_account_nonce() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_set_erc20_balance() { let config: NodeConfig = fork_config(); let address = config.genesis_accounts[0].address(); @@ -1511,6 +1558,7 @@ async fn test_set_erc20_balance() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_set_erc20_allowance() { let config: NodeConfig = fork_config(); let owner = config.genesis_accounts[0].address(); @@ -1536,6 +1584,7 @@ async fn test_set_erc20_allowance() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_add_balance() { let config: NodeConfig = fork_config(); let address = config.genesis_accounts[0].address(); @@ -1552,6 +1601,7 @@ async fn test_add_balance() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_reset_updates_cache_path_when_rpc_url_not_provided() { let config: NodeConfig = fork_config(); @@ -1588,6 +1638,7 @@ async fn test_reset_updates_cache_path_when_rpc_url_not_provided() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_fork_get_account() { let (_api, handle) = spawn(fork_config()).await; let provider = handle.http_provider(); @@ -1654,6 +1705,7 @@ fn assert_hardfork_config( } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_config_with_cancun_hardfork() { let (api, _handle) = spawn(NodeConfig::test().with_hardfork(Some(EthereumHardfork::Cancun.into()))).await; @@ -1697,6 +1749,7 @@ async fn test_config_with_cancun_hardfork() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_config_with_prague_hardfork_with_celo() { let (api, _handle) = spawn( NodeConfig::test().with_hardfork(Some(EthereumHardfork::Prague.into())).with_celo(true), @@ -1759,6 +1812,7 @@ async fn test_config_with_prague_hardfork_with_celo() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_config_with_osaka_hardfork() { let (api, _handle) = spawn(NodeConfig::test().with_hardfork(Some(EthereumHardfork::Osaka.into()))).await; @@ -1819,6 +1873,7 @@ async fn test_config_with_osaka_hardfork() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_config_with_osaka_hardfork_with_precompile_factory() { fn custom_echo_precompile(input: &[u8], _gas_limit: u64) -> PrecompileResult { Ok(PrecompileOutput { bytes: Bytes::copy_from_slice(input), gas_used: 0, reverted: false }) diff --git a/crates/anvil/tests/it/genesis.rs b/crates/anvil/tests/it/genesis.rs index d60cb0891..e5b60a9ef 100644 --- a/crates/anvil/tests/it/genesis.rs +++ b/crates/anvil/tests/it/genesis.rs @@ -57,6 +57,7 @@ async fn can_apply_genesis() { // // #[tokio::test(flavor = "multi_thread")] +#[ignore = "3/6 scenarios require mainnet fork RPC"] async fn chain_id_precedence() { // Order: --chain-id > fork-chain-id > Genesis > default. diff --git a/crates/anvil/tests/it/otterscan.rs b/crates/anvil/tests/it/otterscan.rs index bc4aa8456..42a661563 100644 --- a/crates/anvil/tests/it/otterscan.rs +++ b/crates/anvil/tests/it/otterscan.rs @@ -10,7 +10,7 @@ use alloy_rpc_types::{ trace::otterscan::{InternalOperation, OperationType, TraceEntry}, }; use alloy_serde::WithOtherFields; -use alloy_sol_types::{SolCall, SolError, SolValue, sol}; +use alloy_sol_types::{SolCall, SolError, sol}; use anvil::{NodeConfig, spawn}; use std::collections::VecDeque; @@ -228,6 +228,8 @@ async fn test_call_ots_trace_transaction() { contract.run().value(U256::from(1337)).send().await.unwrap().get_receipt().await.unwrap(); let res = api.ots_trace_transaction(receipt.transaction_hash).await.unwrap(); + // NOTE: Seismic trace shielding strips calldata from the top-level CALL and + // return data from STATICCALL for privacy. let expected = vec![ TraceEntry { r#type: "CALL".to_string(), @@ -235,7 +237,7 @@ async fn test_call_ots_trace_transaction() { from: sender, to: contract_address, value: Some(U256::from(1337)), - input: Contract::runCall::SELECTOR.into(), + input: Bytes::new(), output: Bytes::new(), }, TraceEntry { @@ -245,7 +247,7 @@ async fn test_call_ots_trace_transaction() { to: contract_address, value: Some(U256::ZERO), input: Contract::do_staticcallCall::SELECTOR.into(), - output: true.abi_encode().into(), + output: Bytes::new(), }, TraceEntry { r#type: "CALL".to_string(), diff --git a/crates/anvil/tests/it/proof.rs b/crates/anvil/tests/it/proof.rs index abf0fc0d0..c90e1e03e 100644 --- a/crates/anvil/tests/it/proof.rs +++ b/crates/anvil/tests/it/proof.rs @@ -55,14 +55,18 @@ async fn test_account_proof() { .await .unwrap(); + // NOTE: Seismic injects 3 system contracts (AES_LIB, DIRECTORY, INTELLIGENCE) at genesis, + // which adds extra nodes to the account trie compared to upstream Foundry proofs. verify_account_proof(&api, address!("0x2031f89b3ea8014eb51a78c316e42af3e0d7695f"), [ - "0xe48200a7a040f916999be583c572cc4dd369ec53b0a99f7de95f13880cf203d98f935ed1b3", + "0xf891808080808080808080a0ace40f081c2e6ec7e595ba35bcb3d117c1d292fd7ccf0ea8c12a2370ca58b619a07e35bed15a14b4072a0929310da6a26e34d7017a82cca3589d7d0badb53de2e38080a0370c7e16ac393f878667d5972eee3eae3a5144c89da4bae351ba2e6a4d9ce6b8a0e6030ae8af429abded460fe53cd0adfc67d535c83db6ae7f5dfd391af361f1238080", + "0xe217a040f916999be583c572cc4dd369ec53b0a99f7de95f13880cf203d98f935ed1b3", "0xf87180a04fb9bab4bb88c062f32452b7c94c8f64d07b5851d44a39f1e32ba4b1829fdbfb8080808080a0b61eeb2eb82808b73c4ad14140a2836689f4ab8445d69dd40554eaf1fce34bc080808080808080a0dea230ff2026e65de419288183a340125b04b8405cc61627b3b4137e2260a1e880", "0xf8719f31355ec1c8f7e26bb3ccbcb0b75d870d15846c0b98e5cc452db46c37faea40b84ff84d80890270801d946c940000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470" ]).await; verify_account_proof(&api, address!("0x33f0fc440b8477fcfbe9d0bf8649e7dea9baedb2"), [ - "0xe48200a7a040f916999be583c572cc4dd369ec53b0a99f7de95f13880cf203d98f935ed1b3", + "0xf891808080808080808080a0ace40f081c2e6ec7e595ba35bcb3d117c1d292fd7ccf0ea8c12a2370ca58b619a07e35bed15a14b4072a0929310da6a26e34d7017a82cca3589d7d0badb53de2e38080a0370c7e16ac393f878667d5972eee3eae3a5144c89da4bae351ba2e6a4d9ce6b8a0e6030ae8af429abded460fe53cd0adfc67d535c83db6ae7f5dfd391af361f1238080", + "0xe217a040f916999be583c572cc4dd369ec53b0a99f7de95f13880cf203d98f935ed1b3", "0xf87180a04fb9bab4bb88c062f32452b7c94c8f64d07b5851d44a39f1e32ba4b1829fdbfb8080808080a0b61eeb2eb82808b73c4ad14140a2836689f4ab8445d69dd40554eaf1fce34bc080808080808080a0dea230ff2026e65de419288183a340125b04b8405cc61627b3b4137e2260a1e880", "0xe48200d3a0ef957210bca5b9b402d614eb8408c88cfbf4913eb6ab83ca233c8b8f0e626b54", "0xf851808080a02743a5addaf4cf9b8c0c073e1eaa555deaaf8c41cb2b41958e88624fa45c2d908080808080a0bfbf6937911dfb88113fecdaa6bde822e4e99dae62489fcf61a91cb2f36793d680808080808080", @@ -70,13 +74,15 @@ async fn test_account_proof() { ]).await; verify_account_proof(&api, address!("0x62b0dd4aab2b1a0a04e279e2b828791a10755528"), [ - "0xe48200a7a040f916999be583c572cc4dd369ec53b0a99f7de95f13880cf203d98f935ed1b3", + "0xf891808080808080808080a0ace40f081c2e6ec7e595ba35bcb3d117c1d292fd7ccf0ea8c12a2370ca58b619a07e35bed15a14b4072a0929310da6a26e34d7017a82cca3589d7d0badb53de2e38080a0370c7e16ac393f878667d5972eee3eae3a5144c89da4bae351ba2e6a4d9ce6b8a0e6030ae8af429abded460fe53cd0adfc67d535c83db6ae7f5dfd391af361f1238080", + "0xe217a040f916999be583c572cc4dd369ec53b0a99f7de95f13880cf203d98f935ed1b3", "0xf87180a04fb9bab4bb88c062f32452b7c94c8f64d07b5851d44a39f1e32ba4b1829fdbfb8080808080a0b61eeb2eb82808b73c4ad14140a2836689f4ab8445d69dd40554eaf1fce34bc080808080808080a0dea230ff2026e65de419288183a340125b04b8405cc61627b3b4137e2260a1e880", "0xf8709f3936599f93b769acf90c7178fd2ddcac1b5b4bc9949ee5a04b7e0823c2446eb84ef84c80880f43fc2c04ee0000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", ]).await; verify_account_proof(&api, address!("0x1ed9b1dd266b607ee278726d324b855a093394a6"), [ - "0xe48200a7a040f916999be583c572cc4dd369ec53b0a99f7de95f13880cf203d98f935ed1b3", + "0xf891808080808080808080a0ace40f081c2e6ec7e595ba35bcb3d117c1d292fd7ccf0ea8c12a2370ca58b619a07e35bed15a14b4072a0929310da6a26e34d7017a82cca3589d7d0badb53de2e38080a0370c7e16ac393f878667d5972eee3eae3a5144c89da4bae351ba2e6a4d9ce6b8a0e6030ae8af429abded460fe53cd0adfc67d535c83db6ae7f5dfd391af361f1238080", + "0xe217a040f916999be583c572cc4dd369ec53b0a99f7de95f13880cf203d98f935ed1b3", "0xf87180a04fb9bab4bb88c062f32452b7c94c8f64d07b5851d44a39f1e32ba4b1829fdbfb8080808080a0b61eeb2eb82808b73c4ad14140a2836689f4ab8445d69dd40554eaf1fce34bc080808080808080a0dea230ff2026e65de419288183a340125b04b8405cc61627b3b4137e2260a1e880", "0xe48200d3a0ef957210bca5b9b402d614eb8408c88cfbf4913eb6ab83ca233c8b8f0e626b54", "0xf851808080a02743a5addaf4cf9b8c0c073e1eaa555deaaf8c41cb2b41958e88624fa45c2d908080808080a0bfbf6937911dfb88113fecdaa6bde822e4e99dae62489fcf61a91cb2f36793d680808080808080", diff --git a/crates/anvil/tests/it/revert.rs b/crates/anvil/tests/it/revert.rs index 98387c3c4..d6d699dd1 100644 --- a/crates/anvil/tests/it/revert.rs +++ b/crates/anvil/tests/it/revert.rs @@ -66,7 +66,6 @@ async fn test_revert_messages() { #[tokio::test(flavor = "multi_thread")] async fn test_solc_revert_example() { let (_api, handle) = spawn(NodeConfig::test()).await; - let sender = handle.dev_accounts().next().unwrap(); let wallet = handle.dev_wallets().next().unwrap(); let provider = handle.http_provider(); let node_url = Url::parse(&handle.http_endpoint()).unwrap(); @@ -76,11 +75,7 @@ async fn test_solc_revert_example() { let contract = VendingMachine::deploy(&provider).await.unwrap(); let tx = contract.buy(U256::from(100)).into_transaction_request(); let input = tx.input().unwrap(); - let builder = tx_builder() - .with_from(sender) - .with_to(*contract.address()) - .with_input(input.clone()) - .into(); + let builder = tx_builder().with_to(*contract.address()).with_input(input.clone()).into(); let err = seismic_provider.seismic_call(SendableTx::Builder(builder.into())).await.unwrap_err(); let s = err.to_string(); diff --git a/crates/anvil/tests/it/seismic.rs b/crates/anvil/tests/it/seismic.rs index 9a7b6d06e..a4d357b65 100644 --- a/crates/anvil/tests/it/seismic.rs +++ b/crates/anvil/tests/it/seismic.rs @@ -3,7 +3,7 @@ use alloy_dyn_abi::EventExt; use alloy_json_abi::{Event, EventParam}; use alloy_network::TransactionBuilder; use alloy_primitives::{ - B256, Bytes, IntoLogData, TxKind, U256, + Address, B256, Bytes, IntoLogData, TxKind, U256, aliases::{B96, U96}, hex::{self, FromHex}, }; @@ -476,3 +476,75 @@ async fn test_seismic_precompiles_end_to_end() { assert_eq!(final_string, "hello world"); } + +// Seismic fork tests +// +// Seismic equivalents of the upstream mainnet fork tests (which are +// #[ignore]'d because they need Ethereum mainnet RPCs). These fork the +// Seismic testnet instead, verifying that sanvil can fork a Seismic chain. + +/// Seismic testnet RPC endpoint for fork tests. +const SEISMIC_TESTNET_RPC: &str = "https://gcp-0.seismictest.net/rpc"; +/// Chain ID of the Seismic testnet. +const SEISMIC_TESTNET_CHAIN_ID: u64 = 5124; +/// Block number to fork from in fork tests (early block to minimize RPC data). +const SEISMIC_FORK_BLOCK_NUMBER: u64 = 1000; + +fn seismic_fork_config() -> NodeConfig { + NodeConfig::test() + .with_eth_rpc_url(Some(SEISMIC_TESTNET_RPC.to_string())) + .with_fork_block_number(Some(SEISMIC_FORK_BLOCK_NUMBER)) +} + +/// Tests that sanvil can fork the Seismic testnet and reports the correct chain ID. +/// Also verifies that --chain-id overrides the fork chain ID. +/// Seismic equivalent of: genesis::chain_id_precedence (fork scenarios) +#[tokio::test(flavor = "multi_thread")] +async fn test_seismic_fork_chain_id() { + let (_api, handle) = spawn(seismic_fork_config()).await; + let provider = handle.http_provider(); + let chain_id = provider.get_chain_id().await.unwrap(); + assert_eq!(chain_id, SEISMIC_TESTNET_CHAIN_ID); + + let (_api, handle) = spawn(seismic_fork_config().with_chain_id(Some(99999u64))).await; + let provider = handle.http_provider(); + let chain_id = provider.get_chain_id().await.unwrap(); + assert_eq!(chain_id, 99999u64); +} + +/// Tests that sanvil forks at the correct block number and can read block data. +/// Seismic equivalent of: traces::test_trace_address_fork (basic fork state) +#[tokio::test(flavor = "multi_thread")] +async fn test_seismic_fork_block_number() { + let (api, _handle) = spawn(seismic_fork_config()).await; + let block_number = api.block_number().unwrap(); + assert_eq!(block_number, U256::from(SEISMIC_FORK_BLOCK_NUMBER)); + + let block = api + .block_by_number(alloy_eips::BlockNumberOrTag::Number(SEISMIC_FORK_BLOCK_NUMBER)) + .await + .unwrap(); + assert!(block.is_some()); +} + +/// Tests that sanvil can send transactions on a forked Seismic chain. +#[tokio::test(flavor = "multi_thread")] +async fn test_seismic_fork_send_tx() { + let (_api, handle) = spawn(seismic_fork_config()).await; + let provider = handle.http_provider(); + + let from = handle.dev_wallets().next().unwrap().address(); + let to = Address::from_str("0x1111111111111111111111111111111111111111").unwrap(); + + let tx = AlloyTransactionRequest::default() + .with_from(from) + .with_to(to) + .with_value(U256::from(1e18 as u64)); + let tx = WithOtherFields::new(tx.into()); + + let receipt = provider.send_transaction(tx).await.unwrap().get_receipt().await.unwrap(); + assert!(receipt.inner.inner.status()); + + let balance = provider.get_balance(to).await.unwrap(); + assert_eq!(balance, U256::from(1e18 as u64)); +} diff --git a/crates/anvil/tests/it/simulate.rs b/crates/anvil/tests/it/simulate.rs index 990b5de6d..9dffde867 100644 --- a/crates/anvil/tests/it/simulate.rs +++ b/crates/anvil/tests/it/simulate.rs @@ -12,6 +12,7 @@ use foundry_test_utils::rpc; use seismic_prelude::foundry::{SimBlock, SimulatePayload}; #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_fork_simulate_v1() { crate::init_tracing(); let (api, _) = diff --git a/crates/anvil/tests/it/state.rs b/crates/anvil/tests/it/state.rs index 577643432..25ae9df99 100644 --- a/crates/anvil/tests/it/state.rs +++ b/crates/anvil/tests/it/state.rs @@ -167,6 +167,7 @@ async fn can_preserve_historical_states_between_dump_and_load() { // #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_fork_load_state() { let (api, handle) = spawn( NodeConfig::test() @@ -254,6 +255,7 @@ async fn test_fork_load_state() { // #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_fork_load_state_with_greater_state_block() { let (api, _handle) = spawn( NodeConfig::test() diff --git a/crates/anvil/tests/it/traces.rs b/crates/anvil/tests/it/traces.rs index 35a0fe64a..83b50949b 100644 --- a/crates/anvil/tests/it/traces.rs +++ b/crates/anvil/tests/it/traces.rs @@ -316,6 +316,7 @@ async fn test_debug_trace_call_state_override() { // #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_trace_address_fork() { let (api, handle) = spawn(fork_config().with_fork_block_number(Some(15291050u64))).await; let provider = handle.http_provider(); @@ -514,6 +515,7 @@ async fn test_trace_address_fork() { // // #[tokio::test(flavor = "multi_thread")] +#[ignore = "requires mainnet fork RPC"] async fn test_trace_address_fork2() { let (api, handle) = spawn(fork_config().with_fork_block_number(Some(15314401u64))).await; let provider = handle.http_provider(); diff --git a/crates/anvil/tests/it/transaction.rs b/crates/anvil/tests/it/transaction.rs index 1d6c5f704..5626c4e7d 100644 --- a/crates/anvil/tests/it/transaction.rs +++ b/crates/anvil/tests/it/transaction.rs @@ -1239,6 +1239,7 @@ async fn can_call_with_high_gas_limit() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "Mercury accepts EIP-1559 by design"] async fn test_reject_eip1559_pre_london() { let (api, handle) = spawn(NodeConfig::test().with_hardfork(Some(EthereumHardfork::Berlin.into()))).await; @@ -1320,6 +1321,7 @@ async fn can_estimate_gas_prague() { } #[tokio::test(flavor = "multi_thread")] +#[ignore = "Mercury doesn't include Osaka gas limit caps"] async fn can_send_tx_osaka_valid_with_limit_enabled() { let (_api, handle) = spawn( NodeConfig::test() From 8faee177774f8b9451e3611647f887109e461fe1 Mon Sep 17 00:00:00 2001 From: mHaines <57149625+mHaines9219@users.noreply.github.com> Date: Wed, 4 Mar 2026 16:32:49 -0500 Subject: [PATCH 128/130] fix(sanvil): propagate tx_hash to RNG precompile (#172) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary - The RNG precompile uses `tx_hash` as a seed for deterministic randomness, but `SeismicTransaction::new()` defaults `tx_hash` to `B256::ZERO` and nothing was overriding it with the actual hash - Every transaction produced identical RNG output (same seed → same result), breaking contracts relying on per-transaction randomness (e.g. poker card shuffling always dealt the same cards) - Propagates the real `tx_hash` from `PendingTransaction::hash()` in all three execution paths: `TransactionExecutor::env_for`, `inspect_tx`, and `trace_tx_with_js_tracer` ## Test plan - [ ] `cargo nextest run test_seismic_` — existing Seismic tests still pass - [ ] `cargo nextest run test_seismic_tx_encoding` — tx encoding unaffected - [ ] `bun viem:test` — viem integration tests still pass - [ ] Manual: run poker game and verify different cards dealt each round --------- Co-authored-by: drappi-ai --- crates/anvil/src/eth/backend/executor.rs | 9 +- crates/anvil/src/eth/backend/mem/mod.rs | 6 +- crates/anvil/tests/it/seismic.rs | 133 +++++++++++++++++++++++ crates/evm/evm/src/executors/mod.rs | 84 +++++++++++++- 4 files changed, 229 insertions(+), 3 deletions(-) diff --git a/crates/anvil/src/eth/backend/executor.rs b/crates/anvil/src/eth/backend/executor.rs index bdd722834..f1274b370 100644 --- a/crates/anvil/src/eth/backend/executor.rs +++ b/crates/anvil/src/eth/backend/executor.rs @@ -273,6 +273,11 @@ impl TransactionExecutor<'_, DB, V> { #[allow(unused_mut)] let mut tx_env = tx.to_revm_tx_env(); + // Set the actual tx hash for RNG domain separation. + // Without this, tx_hash defaults to B256::ZERO and the RNG + // precompile produces identical output for every transaction. + tx_env.tx_hash = *tx.hash(); + /* if self.optimism { tx_env.enveloped_tx = Some(alloy_rlp::encode(&tx.transaction.transaction).into()); @@ -497,7 +502,9 @@ where }, block: env.evm_env.block_env.clone(), cfg: env.evm_env.cfg_env.clone(), - tx: SeismicTransaction::new(env.tx.base.clone()), + // Propagate tx_hash so the RNG precompile produces random (non-zero) output. + // See: https://github.com/SeismicSystems/seismic-revm/issues/199 + tx: SeismicTransaction::new(env.tx.base.clone()).with_tx_hash(env.tx.tx_hash), chain: SeismicChain::default(), local: LocalContext::default(), error: Ok(()), diff --git a/crates/anvil/src/eth/backend/mem/mod.rs b/crates/anvil/src/eth/backend/mem/mod.rs index 40241f9c6..86be9189a 100644 --- a/crates/anvil/src/eth/backend/mem/mod.rs +++ b/crates/anvil/src/eth/backend/mem/mod.rs @@ -1334,6 +1334,8 @@ impl Backend { > { let mut env = self.next_env(); env.tx = tx.pending_transaction.to_revm_tx_env(); + // Set tx_hash so the RNG precompile produces random (non-zero) output. + env.tx.tx_hash = *tx.pending_transaction.hash(); /* if env.is_optimism { @@ -3038,7 +3040,9 @@ impl Backend { let target_tx = block.transactions[index].clone(); let target_tx = PendingTransaction::from_maybe_impersonated(target_tx)?; - let tx_env = target_tx.to_revm_tx_env(); + let mut tx_env = target_tx.to_revm_tx_env(); + // Set tx_hash so the RNG precompile produces random (non-zero) output. + tx_env.tx_hash = *target_tx.hash(); let config = tracer_config.into_json(); let mut inspector = revm_inspectors::tracing::js::JsInspector::new(code, config) diff --git a/crates/anvil/tests/it/seismic.rs b/crates/anvil/tests/it/seismic.rs index a4d357b65..0092a3054 100644 --- a/crates/anvil/tests/it/seismic.rs +++ b/crates/anvil/tests/it/seismic.rs @@ -334,6 +334,139 @@ async fn test_seismic_transaction_rpc() { assert!(gas_estimate > U256::ZERO); } +/// Tests that the RNG precompile produces different output for different transactions. +/// +/// This is a regression test for a bug where `SeismicTransaction::new()` defaulted +/// `tx_hash` to `B256::ZERO`, causing the RNG precompile to use the same seed for +/// every transaction and produce identical "random" output. +/// +/// The test deploys a minimal contract that calls the RNG precompile and stores the +/// result, then sends two separate transactions and verifies they get different values. +#[tokio::test(flavor = "multi_thread")] +async fn test_seismic_rng_different_per_transaction() { + // Spin up node with auto-mine + let (_api, handle) = spawn(NodeConfig::test()).await; + let wallet = EthereumWallet::new(handle.dev_wallets().next().unwrap().clone()); + let provider = SeismicSignedProvider::new( + wallet, + reqwest::Url::parse(handle.http_endpoint().as_str()).unwrap(), + ) + .await + .unwrap(); + let deployer = handle.dev_accounts().next().unwrap(); + + // Minimal contract: on any call, STATICCALLs the RNG precompile (0x64) + // requesting 32 random bytes, stores the result in slot 0, increments a + // call counter in slot 1, and returns the result. + // + // Solidity equivalent: + // contract RngCaller { + // bytes32 public lastRng; + // uint256 public callCount; + // fallback() external { + // (bool ok, bytes memory result) = address(0x64).staticcall(hex"00000020"); + // require(ok); + // lastRng = bytes32(result); + // callCount++; + // assembly { return(add(result, 32), mload(result)) } + // } + // } + // + // Bytecode: 12-byte deploy prefix + 45-byte runtime. + let deploy_code = hex::decode( + "602d600c600039602d6000f3\ + 6300000020600052602060006004601c60645afa50600051806000556001546001016001556000526020\ + 6000f3", + ) + .unwrap(); + let bytecode = Bytes::from(deploy_code); + let tx_req = + tx_builder().with_from(deployer).with_kind(TxKind::Create).with_input(bytecode).into(); + let contract_addr = provider + .send_transaction(tx_req.into()) + .await + .unwrap() + .get_receipt() + .await + .unwrap() + .contract_address + .unwrap(); + + // Deploy a second instance of the same contract (identical bytecode) + let deploy_code_2 = hex::decode( + "602d600c600039602d6000f3\ + 6300000020600052602060006004601c60645afa50600051806000556001546001016001556000526020\ + 6000f3", + ) + .unwrap(); + let contract_addr_2 = provider + .send_transaction( + tx_builder() + .with_from(deployer) + .with_kind(TxKind::Create) + .with_input(Bytes::from(deploy_code_2)) + .into() + .into(), + ) + .await + .unwrap() + .get_receipt() + .await + .unwrap() + .contract_address + .unwrap(); + + // Call contract 1 — triggers RNG precompile, stores result in slot 0 + let receipt_a = provider + .send_transaction( + tx_builder() + .with_from(deployer) + .with_to(contract_addr) + .with_input(Bytes::new()) + .into() + .into(), + ) + .await + .unwrap() + .get_receipt() + .await + .unwrap(); + assert!(receipt_a.inner.inner.status(), "Call A should succeed"); + + // Call contract 2 — same code, different transaction + let receipt_b = provider + .send_transaction( + tx_builder() + .with_from(deployer) + .with_to(contract_addr_2) + .with_input(Bytes::new()) + .into() + .into(), + ) + .await + .unwrap() + .get_receipt() + .await + .unwrap(); + assert!(receipt_b.inner.inner.status(), "Call B should succeed"); + + // Read the stored RNG values from each contract's slot 0 + let rng_a = provider.get_storage_at(contract_addr, U256::from(0)).await.unwrap(); + let rng_b = provider.get_storage_at(contract_addr_2, U256::from(0)).await.unwrap(); + + // Both should be non-zero + assert_ne!(rng_a, U256::ZERO, "RNG output A should not be zero"); + assert_ne!(rng_b, U256::ZERO, "RNG output B should not be zero"); + + // The key assertion: different transactions should produce different RNG output. + // Before the fix, both would be identical because tx_hash was always B256::ZERO. + assert_ne!( + rng_a, rng_b, + "RNG precompile should produce different output for different transactions. \ + If equal, tx_hash is likely not being propagated to the EVM." + ); +} + // Actual contract being tested: // https://github.com/SeismicSystems/early-builds/blob/main/EIP7702_experiment/end-to-end-mvp/EncryptedLogs.sol #[tokio::test(flavor = "multi_thread")] diff --git a/crates/evm/evm/src/executors/mod.rs b/crates/evm/evm/src/executors/mod.rs index 7c347e164..a02ec6882 100644 --- a/crates/evm/evm/src/executors/mod.rs +++ b/crates/evm/evm/src/executors/mod.rs @@ -15,7 +15,7 @@ use crate::{ use alloy_dyn_abi::{DynSolValue, FunctionExt, JsonAbiExt}; use alloy_json_abi::Function; use alloy_primitives::{ - Address, Bytes, Log, TxKind, U256, keccak256, + Address, B256, Bytes, Log, TxKind, U256, keccak256, map::{AddressHashMap, HashMap}, }; use alloy_sol_types::{SolCall, sol}; @@ -1183,3 +1183,85 @@ impl FailFast { self.inner.as_ref().map(|flag| flag.load(Ordering::Relaxed)).unwrap_or(false) } } + +#[cfg(test)] +mod tests { + use super::*; + + /// Tests that the RNG precompile produces different output across separate transactions + /// when executed through the foundry-evm Executor (no anvil required). + /// + /// Deploys a minimal contract that calls the RNG precompile (0x64) and stores the + /// 32-byte result in storage slot 0. Three separate `transact_raw` calls should each + /// produce a different RNG value because each transaction should have a unique tx_hash + /// used as the RNG seed. + #[test] + fn test_rng_precompile_different_per_tx() { + let backend = Backend::spawn(None).unwrap(); + let mut env = Env::default_with_spec_id(SpecId::MERCURY); + env.evm_env.cfg_env.disable_nonce_check = true; + let mut executor = + ExecutorBuilder::new().spec_id(SpecId::MERCURY).gas_limit(u64::MAX).build(env, backend); + + let caller = Address::repeat_byte(0x01); + executor.set_balance(caller, U256::MAX).unwrap(); + + // Minimal contract that calls the RNG precompile (0x64), requesting 32 + // random bytes, stores the result in slot 0, and returns it. + // + // Solidity equivalent: + // fallback() external { + // (bool ok, bytes memory result) = address(0x64).staticcall(hex"00000020"); + // assembly { sstore(0, mload(add(result, 32))) } + // assembly { return(0, 32) } + // } + // + // The deploy prefix (first 12 bytes) CODECOPYs the runtime to memory + // and RETURNs it. + let deploy_code = alloy_primitives::hex::decode( + // deploy prefix (12 bytes) + runtime (32 bytes) + "6020600c60003960206000f36300000020600052602060006004601c60645afa5060005160005560206000f3", + ) + .unwrap(); + + let deploy_result = + executor.deploy(caller, Bytes::from(deploy_code), U256::ZERO, None).unwrap(); + let contract = deploy_result.address; + + // Call the contract 3 times, each with a unique tx_hash to simulate + // distinct transactions. Without setting tx_hash, it defaults to + // B256::ZERO and the RNG precompile produces identical output. + let mut rng_values = Vec::new(); + for i in 0..3 { + let mut env = + executor.build_test_env(caller, TxKind::Call(contract), Bytes::new(), U256::ZERO); + env.tx.tx_hash = B256::random(); + let result = executor.transact_with_env(env).unwrap(); + assert!( + !result.reverted, + "RNG call {i} should not revert: exit={:?} result={}", + result.exit_reason, + alloy_primitives::hex::encode(&result.result) + ); + assert_eq!(result.result.len(), 32, "should return 32 bytes"); + rng_values.push(result.result.clone()); + } + + // All three RNG values should be non-zero and distinct + for (i, val) in rng_values.iter().enumerate() { + assert_ne!(val.as_ref(), &[0u8; 32], "RNG output {i} should not be zero"); + } + assert_ne!( + rng_values[0], rng_values[1], + "RNG outputs 0 and 1 should differ (tx_hash not propagated?)" + ); + assert_ne!( + rng_values[1], rng_values[2], + "RNG outputs 1 and 2 should differ (tx_hash not propagated?)" + ); + assert_ne!( + rng_values[0], rng_values[2], + "RNG outputs 0 and 2 should differ (tx_hash not propagated?)" + ); + } +} From 36e3d6192525e5928ddbcbe1f77e23fa0aeff6b3 Mon Sep 17 00:00:00 2001 From: Ameya Deshmukh Date: Fri, 6 Mar 2026 18:01:28 +0530 Subject: [PATCH 129/130] ci: add claude pr review workflow (#177) Adds a GitHub Actions workflow that runs Claude to review PRs and posts the review as a sticky comment. --- .claude/prompts/claude-pr-review.md | 142 ++++++++++++++++++++++++++++ .github/workflows/claude.yml | 112 ++++++++++++++++++++++ .gitignore | 3 +- 3 files changed, 256 insertions(+), 1 deletion(-) create mode 100644 .claude/prompts/claude-pr-review.md create mode 100644 .github/workflows/claude.yml diff --git a/.claude/prompts/claude-pr-review.md b/.claude/prompts/claude-pr-review.md new file mode 100644 index 000000000..85cb7c419 --- /dev/null +++ b/.claude/prompts/claude-pr-review.md @@ -0,0 +1,142 @@ +# Claude PR Review Guidelines + +You're a code reviewer helping engineers ship better code. Your feedback should be high-signal: every comment should prevent a bug, improve safety, or teach something valuable. + +Output your review as plain text. Do NOT use `gh pr comment` or any other tool to post comments — the action handles posting. + +**Important:** Your ENTIRE text output becomes the PR comment body. Do not include conversational preamble like "I'll review this PR" or "Let me get the diff." Start directly with your one-line summary of what the PR does. + +## Review Philosophy + +**When in doubt, approve.** Your default is to approve. Only request changes when you are certain something will break. + +**Review the code, not the coder.** Focus on patterns and behavior, not style. + +**Teach through specifics.** Concrete examples beat abstract advice. But only teach when there's a genuine gap — don't explain things the author already knows. + +**Balance teaching with shipping.** Idealism is nice; working software ships. + +## Review Priorities + +### Phase 1: Critical Issues + +Problems that would cause immediate harm: + +- Bugs or logic errors that will hit production +- Security vulnerabilities (injection, auth bypass, secret leakage, plaintext shielded values in logs) +- Data corruption or loss risks +- Race conditions or concurrency bugs +- Breaking API changes not flagged in the PR description +- Incorrect use of shielded types (e.g. leaking `suint256` values in plaintext where they should be encrypted) + +### Phase 2: Patterns & Principles + +Improvements to maintainability (flag these, but they're rarely blockers): + +- Error handling gaps at system boundaries +- Performance problems with measurable impact +- Hidden dependencies or surprising behaviors +- Missing validation of external input +- Upstream merge friction (unnecessary renames, deleted code that should be commented out per the comment-out strategy) + +### Phase 3: Polish + +Nice-to-haves — mention only if the win is obvious: + +- Dead code, unused imports +- Naming that actively misleads +- A simpler way to express the same logic + +**Ignore:** style preferences covered by formatters/linters (`rustfmt`, `clippy`, ESLint), missing docs on internal code, test coverage opinions, "consider using X library" suggestions. + +## Decision Framework + +**Request Changes** — Only when you're certain something will break: + +- Bugs that will hit production +- Security vulnerabilities with clear exploit paths +- Data loss or corruption risks + +If you're not 100% certain, don't request changes. + +**Approve** — Your default. Use it when: + +- The code works +- You have suggestions but they're improvements, not blockers +- You're uncertain whether something is actually a problem + +Approve with comments beats comment-only reviews. If it's not worth blocking, it's worth approving. + +## Weighing Existing Context + +Before commenting, check the PR description and existing discussion: + +- **Resolved threads**: Don't re-raise them. +- **Engineer responses**: If they explained why something is intentional, accept it. They have context you don't. +- **Prior approvals**: Your bar for requesting changes should be even higher. + +When engineers push back on feedback, assume they have context you're missing. Don't repeat the same point. + +## Writing Comments + +Be direct and brief. One issue, one to two lines. Include file path and line number. + +**Good:** + +> `crates/script/src/broadcast.rs:92` — `unwrap()` on `client_encrypt` will panic if the TEE pubkey is invalid. Use `map_err` to convert to an `eyre::Result`. + +**Good:** + +> `crates/anvil/src/eth/backend/mem/mod.rs:345` — `seismic_call()` decrypts input but doesn't validate the `encryption_nonce` is unique. Replay of the same nonce with the same key would produce identical ciphertext. + +**Good:** + +> `crates/cheatcodes/src/inspector.rs:874` — `seismic_elements: None` is correct here since cheatcode-captured transactions get encrypted later during broadcast. + +**Good:** + +> `crates/cast/src/cmd/send.rs:251` — Converting `max_fee_per_gas` to `gas_price` silently drops `max_priority_fee_per_gas`. This is intentional for TxSeismic (legacy gas format), but worth a comment. + +**Too much:** + +> Issue 1: Database Error Handling (Blocking) +> The writer module is using unwrap() on database operations which could... Why this matters: In production, database operations can fail due to... + +Skip headers, emojis, and "Why this matters" sections unless it's genuinely non-obvious. + +## Avoid + +- Filler words: "robust," "comprehensive," "excellent," "well-structured," "solid" +- Summarizing what the PR description already says +- Hedging: "Maybe you could...", "Consider perhaps..." +- Starting with generic praise: "Great job!", "Nice work!" +- Long reviews — if it's more than a few focused paragraphs, you're not sure what actually matters + +## Output Format + +Start with a one-line summary of what the PR does (your own words). + +Then list issues by priority phase. Only include phases that have items: + +``` +Adds TxSeismic encryption for shielded function calls during sforge script --broadcast. + +**Phase 1** +- `crates/script/src/broadcast.rs:62` — `B256::ZERO` for `recent_block_hash` will be rejected by production nodes. Need to fetch the actual latest block hash from the RPC. +- `crates/anvil/src/eth/api.rs:189` — `seismic_getTeePublicKey` returns the unsecure sample key unconditionally. If `enable_seismic` is false, this should return an error instead of a valid-looking key. + +**Phase 2** +- `crates/script/src/transaction.rs:193` — `param_is_shielded` doesn't handle array types like `suint256[]`. Need to strip the array suffix before checking the base type. +- `crates/common/src/transactions.rs:196` — `TransactionMaybeSigned::Unsigned` stores `seismic_elements` via `WithOtherFields`, but the `From` impl doesn't preserve them through serialization round-trips. + +**Phase 3** +- `crates/script/src/broadcast.rs:30` — unused import `secp256k1::SecretKey` after refactor. +``` + +If there are no issues worth mentioning, just say "LGTM" and stop. + +## Remember + +Your job is to catch real problems and help engineers ship safely. A short review that approves working code is better than a thorough essay that blocks it for theoretical improvements. + +When in doubt, approve. diff --git a/.github/workflows/claude.yml b/.github/workflows/claude.yml new file mode 100644 index 000000000..b0387ac26 --- /dev/null +++ b/.github/workflows/claude.yml @@ -0,0 +1,112 @@ +# Claude Code PR Review +# +# Runs Claude in agent mode to review PRs, then posts the review as a +# sticky comment (one comment, edited in-place on each push). +# +# Agent mode doesn't post comments itself, so a post-step extracts +# Claude's text output from the execution file and manages the comment. +# +# Requires: ANTHROPIC_API_KEY secret. + +name: Claude Code PR Review + +on: + pull_request: + types: [opened, reopened, synchronize, ready_for_review] + issue_comment: + types: [created] + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.event.issue.number }} + cancel-in-progress: true + +jobs: + claude: + if: > + (github.event_name == 'pull_request' && + github.event.pull_request.draft == false && + github.event.pull_request.user.login != 'dependabot[bot]' && + !contains(github.head_ref, 'gh-readonly-queue/')) || + (github.event_name == 'issue_comment' && + contains(github.event.comment.body, '@claude') && + github.event.issue.pull_request && + contains(fromJSON('["OWNER","MEMBER","COLLABORATOR"]'), github.event.comment.author_association)) + runs-on: ubuntu-latest + timeout-minutes: 20 + permissions: + contents: read + pull-requests: write + + env: + PR_NUMBER: ${{ github.event.pull_request.number || github.event.issue.number }} + + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Read review prompt + id: prompt + run: | + { + echo 'REVIEW_PROMPT<> "$GITHUB_ENV" + + - uses: anthropics/claude-code-action@v1 + id: claude + with: + anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }} + github_token: ${{ secrets.GITHUB_TOKEN }} + claude_args: | + --model claude-sonnet-4-20250514 + --allowedTools "Bash(gh pr diff:*),Bash(gh pr view:*),Bash(git log:*),Bash(git diff:*),Bash(git show:*)" + prompt: | + Review PR #${{ env.PR_NUMBER }} in ${{ github.repository }}. + + 1. Run `gh pr diff ${{ env.PR_NUMBER }}` to get the diff. + 2. Review ONLY the changed files following the guidelines below. + 3. Output your review as plain text. Do NOT post comments yourself. + + ${{ env.REVIEW_PROMPT }} + + - name: Post review comment + if: always() && steps.claude.outputs.execution_file + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + EXECUTION_FILE: ${{ steps.claude.outputs.execution_file }} + run: | + set -euo pipefail + + # Extract the last assistant text block from the execution JSON. + # The file is an array of turns. We want only the final assistant + # message's text (the review), not earlier conversational turns. + REVIEW=$(jq -r ' + [.[] | select(.type == "assistant")] | last + | .message.content[]? | select(.type == "text") | .text + ' "$EXECUTION_FILE") + + if [ -z "$REVIEW" ] || [ "$REVIEW" = "null" ]; then + echo "No review text found in execution output" + exit 0 + fi + + # Sticky comment: find existing review comment and update it, + # or create a new one. We use a hidden marker to identify our comments. + MARKER="" + BODY="$(printf '%s\n%s' "$MARKER" "$REVIEW")" + + # Search for existing comment with our marker + COMMENT_ID=$(gh api "repos/${{ github.repository }}/issues/${{ env.PR_NUMBER }}/comments" \ + --jq "[.[] | select(.user.login == \"github-actions[bot]\") | select(.body | contains(\"$MARKER\")) | .id] | first // empty") + + if [ -n "$COMMENT_ID" ]; then + echo "Updating existing review comment $COMMENT_ID" + gh api "repos/${{ github.repository }}/issues/comments/$COMMENT_ID" \ + -X PATCH -f body="$BODY" + else + echo "Creating new review comment" + gh api "repos/${{ github.repository }}/issues/${{ env.PR_NUMBER }}/comments" \ + -f body="$BODY" + fi diff --git a/.gitignore b/.gitignore index e5df46b53..0f3425664 100644 --- a/.gitignore +++ b/.gitignore @@ -9,7 +9,8 @@ out.json .idea .vscode -.claude +.claude/settings.json +.claude/settings.local.json .env node_modules dist From 557cad357702a1027bb8d3d245f8d9d28626d127 Mon Sep 17 00:00:00 2001 From: Ameya Deshmukh Date: Fri, 6 Mar 2026 22:21:31 +0530 Subject: [PATCH 130/130] feat: sforge script --broadcast auto-encrypts shielded function calls as TxSeismic (#176) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary - When `sforge script --broadcast` broadcasts transactions, auto-detect whether each transaction targets a function with shielded type parameters (`suint*`, `sint*`, `saddress`, `sbool`) by inspecting the compiled ABI from `ssolc` - If any parameter is a shielded type, encrypt the calldata and send as **TxSeismic (type 0x4a)** instead of EIP-1559 (type 0x2) - Previously, all broadcast transactions were sent as EIP-1559, leaking shielded values as plaintext calldata on-chain ## Changes **`crates/script-sequence/src/transaction.rs`** - Added `has_shielded_args: bool` to `TransactionWithMetadata` (`#[serde(default)]` for backward compat) **`crates/script/src/transaction.rs`** - In `ScriptTransactionBuilder::set_call()`, check if matched function has shielded params via ABI `Param.ty` - Added `function_has_shielded_params()` / `param_is_shielded()` helpers **`crates/script/src/broadcast.rs`** - Added `encrypt_transaction_for_seismic()` — generates ephemeral ECDH keypair, builds `TxSeismicElements`/`TxSeismicMetadata`, encrypts calldata, sets type 0x4a, converts gas to legacy format - In `broadcast()`: fetch TEE pubkey once per sequence via `seismic_getTeePublicKey` RPC if any tx needs encryption - Per-tx: shielded calls → legacy gas + encrypt + type 0x4a; normal calls → EIP-1559 (unchanged); deploys → unchanged ## Design decisions - **Detection**: Uses `Param.ty` from the `JsonAbi` produced by `ssolc` — no new flags or ABI schema changes needed - **Encryption flow**: Mirrors `scast send --seismic` exactly (ephemeral key, `client_encrypt` with AEAD metadata, type 0x4a, legacy gas) - **Mixed batches**: Each tx typed independently — a single broadcast can contain both shielded (0x4a) and non-shielded (0x2) transactions - **CREATE txs**: Never encrypted (protocol constraint — TxSeismic can't be used for contract creation) - **Unique nonces**: Each encrypted tx gets a fresh random 12-byte encryption nonce ## Test plan - [ ] Deploy a contract with functions that take `suint256` params and functions that don't - [ ] Write a script that calls both types of functions - [ ] Run `sforge script --broadcast` - [ ] Verify: calls to shielded-param functions → type 0x4a with encrypted input - [ ] Verify: calls to non-shielded functions → type 0x2 with plaintext input - [ ] Verify: contract deployments → type 0x2 - [ ] Verify: all transactions execute successfully - [ ] Existing CI tests pass (`test_seismic_`, `private_storage_`) --- Cargo.lock | 2 + crates/forge/tests/cli/script.rs | 179 ++++++++++ crates/script-sequence/src/sequence.rs | 97 +++++- crates/script-sequence/src/transaction.rs | 16 + crates/script/Cargo.toml | 2 + crates/script/src/broadcast.rs | 399 +++++++++++++++++++++- crates/script/src/transaction.rs | 155 +++++++++ 7 files changed, 842 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 661efd2c7..a9539b778 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4361,7 +4361,9 @@ dependencies = [ "indicatif", "itertools 0.14.0", "parking_lot", + "rand 0.9.2", "revm-inspectors", + "secp256k1 0.30.0", "seismic-prelude", "semver 1.0.27", "serde", diff --git a/crates/forge/tests/cli/script.rs b/crates/forge/tests/cli/script.rs index 86bcb8500..bf3cdbf26 100644 --- a/crates/forge/tests/cli/script.rs +++ b/crates/forge/tests/cli/script.rs @@ -3251,6 +3251,185 @@ Error: script failed: vm.load: attempted to read private storage slot [..] at ad "#]]); }); +// Test that sforge script --broadcast encrypts calldata for functions with shielded params +// and redacts arguments in broadcast JSON. +// Requires: ssolc installed at /usr/local/bin/ssolc, sanvil with --seismic +forgetest_async!(seismic_broadcast_encrypts_shielded_function_calls, |prj, cmd| { + // Skip if ssolc is not installed + if !std::path::Path::new("/usr/local/bin/ssolc").exists() { + eprintln!("skipping test: ssolc not found at /usr/local/bin/ssolc"); + return; + } + + foundry_test_utils::util::initialize(prj.root()); + + // Start sanvil with seismic enabled + let (api, handle) = spawn(NodeConfig::test().with_seismic(true)).await; + api.anvil_set_auto_mine(true).await.unwrap(); + + let rpc_url = handle.http_endpoint(); + let private_key = + "ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80".to_string(); + + // Configure project for ssolc + prj.update_config(|config| { + config.seismic = true; + }); + + // Write a contract with both shielded and non-shielded functions + prj.add_raw_source( + "ShieldedToken", + r#" +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.13; + +contract ShieldedToken { + mapping(address => suint256) private _balances; + mapping(address => uint256) public nonces; + + function mint(address to, suint256 amount) public { + _balances[to] = _balances[to] + amount; + } + + function incrementNonce(address user) public { + nonces[user] += 1; + } +} +"#, + ); + + // Write the deploy/call script + let script = prj.add_raw_source( + "DeployAndCall", + r#" +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.13; + +import "forge-std/Script.sol"; +import "../src/ShieldedToken.sol"; + +contract DeployAndCall is Script { + function run() external { + vm.startBroadcast(); + + ShieldedToken token = new ShieldedToken(); + + // Call with shielded param — should become TxSeismic (type 0x4a) + token.mint(address(0xBEEF), suint256(1000)); + + // Call without shielded param — should stay EIP-1559 (type 0x2) + token.incrementNonce(address(0xBEEF)); + + vm.stopBroadcast(); + } +} +"#, + ); + + let script_path = script.display().to_string() + ":DeployAndCall"; + + cmd.set_current_dir(prj.root()); + cmd.args([ + "script", + &script_path, + "--root", + prj.root().to_str().unwrap(), + "--fork-url", + &rpc_url, + "--broadcast", + "--unsafe-private-storage", + "--private-key", + &private_key, + "--slow", + "-vvvvv", + ]) + .assert_success(); + + // Read the broadcast JSON + let broadcast_json_path = prj.root().join("broadcast/DeployAndCall.sol/31337/run-latest.json"); + let broadcast_json: serde_json::Value = + serde_json::from_str(&std::fs::read_to_string(&broadcast_json_path).unwrap()).unwrap(); + + let txs = broadcast_json["transactions"].as_array().unwrap(); + + // Transaction 0: CREATE (deploy ShieldedToken) — should be type 0x2 + let deploy_tx = &txs[0]; + assert_eq!( + deploy_tx["transactionType"].as_str().unwrap(), + "CREATE", + "first tx should be a deployment" + ); + let deploy_tx_type = deploy_tx["transaction"]["type"] + .as_str() + .or_else(|| deploy_tx["transaction"]["type"].as_u64().map(|_| "")) + .unwrap_or(""); + // CREATE transactions should NOT be type 0x4a + assert_ne!(deploy_tx_type, "0x4a", "deploy should not be TxSeismic"); + + // Transaction 1: mint(address, suint256) — should be type 0x4a with encrypted input + let mint_tx = &txs[1]; + assert_eq!( + mint_tx["function"].as_str().unwrap(), + "mint(address,suint256)", + "second tx should be mint" + ); + assert!( + mint_tx["hasShieldedArgs"].as_bool().unwrap_or(false), + "mint should have hasShieldedArgs: true" + ); + // Check that arguments are redacted + let mint_args = mint_tx["arguments"].as_array().unwrap(); + assert_eq!(mint_args.len(), 2); + assert_ne!( + mint_args[0].as_str().unwrap(), + "", + "address param should NOT be redacted" + ); + assert_eq!(mint_args[1].as_str().unwrap(), "", "suint256 param should be redacted"); + + // Transaction 2: incrementNonce(address) — should be type 0x2, no redaction + let nonce_tx = &txs[2]; + assert_eq!( + nonce_tx["function"].as_str().unwrap(), + "incrementNonce(address)", + "third tx should be incrementNonce" + ); + assert!( + !nonce_tx["hasShieldedArgs"].as_bool().unwrap_or(false), + "incrementNonce should not have hasShieldedArgs" + ); + // Arguments should NOT be redacted + let nonce_args = nonce_tx["arguments"].as_array().unwrap(); + assert_ne!( + nonce_args[0].as_str().unwrap(), + "", + "address param should not be redacted" + ); + + // Also verify the cache (sensitive) JSON has plaintext arguments + let cache_json_path = prj.root().join("cache/DeployAndCall.sol/31337/run-latest.json"); + let cache_json: serde_json::Value = + serde_json::from_str(&std::fs::read_to_string(&cache_json_path).unwrap()).unwrap(); + + let sensitive_txs = cache_json["transactions"].as_array().unwrap(); + // The mint tx (index 1) should have plaintext_arguments in sensitive + let sensitive_mint = &sensitive_txs[1]; + if let Some(plaintext_args) = sensitive_mint["plaintext_arguments"].as_array() { + assert_eq!(plaintext_args.len(), 2, "should have 2 plaintext arguments"); + // The suint256 value should be the actual plaintext, not "" + assert_ne!( + plaintext_args[1].as_str().unwrap_or(""), + "", + "cache should have plaintext, not redacted" + ); + } + // The mint tx should also have plaintext_input in sensitive + assert!( + sensitive_mint.get("plaintext_input").is_some(), + "cache should have plaintext_input for shielded tx" + ); +}); + // Test that reading private storage succeeds with --unsafe-private-storage flag forgetest_async!(private_storage_allowed_with_flag, |prj, cmd| { foundry_test_utils::util::initialize(prj.root()); diff --git a/crates/script-sequence/src/sequence.rs b/crates/script-sequence/src/sequence.rs index 619b0f02d..f245b97f1 100644 --- a/crates/script-sequence/src/sequence.rs +++ b/crates/script-sequence/src/sequence.rs @@ -1,5 +1,5 @@ use crate::transaction::TransactionWithMetadata; -use alloy_primitives::{TxHash, hex, map::HashMap}; +use alloy_primitives::{Bytes, TxHash, hex, map::HashMap}; use eyre::{ContextCompat, Result, WrapErr}; use foundry_common::{SELECTOR_LEN, TransactionMaybeSigned, fs, shell}; use foundry_compilers::ArtifactId; @@ -44,6 +44,14 @@ pub struct ScriptSequence { #[derive(Clone, Default, Serialize, Deserialize)] pub struct SensitiveTransactionMetadata { pub rpc: String, + /// Plaintext calldata for shielded transactions (before encryption). + /// Stored here so --resume can re-encrypt with fresh SeismicElements. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub plaintext_input: Option, + /// Plaintext arguments for shielded transactions (before redaction). + /// Stored here so --resume and debugging can see original values. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub plaintext_arguments: Option>, } /// Sensitive info from the script sequence which is saved into the cache folder @@ -58,7 +66,11 @@ impl From for SensitiveScriptSequence { transactions: sequence .transactions .iter() - .map(|tx| SensitiveTransactionMetadata { rpc: tx.rpc.clone() }) + .map(|tx| SensitiveTransactionMetadata { + rpc: tx.rpc.clone(), + plaintext_input: tx.plaintext_input.clone(), + plaintext_arguments: tx.plaintext_arguments.clone(), + }) .collect(), } } @@ -213,10 +225,27 @@ impl ScriptSequence { } pub fn fill_sensitive(&mut self, sensitive: &SensitiveScriptSequence) { - self.transactions - .iter_mut() - .enumerate() - .for_each(|(i, tx)| tx.rpc.clone_from(&sensitive.transactions[i].rpc)); + self.transactions.iter_mut().enumerate().for_each(|(i, tx)| { + tx.rpc.clone_from(&sensitive.transactions[i].rpc); + tx.plaintext_input.clone_from(&sensitive.transactions[i].plaintext_input); + tx.plaintext_arguments.clone_from(&sensitive.transactions[i].plaintext_arguments); + + // For shielded transactions on --resume: the broadcast JSON has encrypted + // calldata, but we need plaintext so broadcast() can re-encrypt with fresh + // SeismicElements (new nonce, block hash, expiry). Restore plaintext input + // from cache into the transaction object. + if tx.has_shielded_args { + if let Some(ref plaintext) = tx.plaintext_input { + if let Some(unsigned) = tx.transaction.as_unsigned_mut() { + unsigned.inner.inner.input.input = Some(plaintext.clone()); + } + } + // Also restore redacted arguments + if let Some(ref args) = tx.plaintext_arguments { + tx.arguments = Some(args.clone()); + } + } + }); } } @@ -250,6 +279,62 @@ pub fn now() -> Duration { mod tests { use super::*; + /// Simulates the --resume flow: broadcast JSON has encrypted input, + /// cache has plaintext. After fill_sensitive, the transaction input + /// should be restored to plaintext so re-encryption works correctly. + #[test] + fn fill_sensitive_restores_plaintext_input_for_shielded_txs() { + let encrypted_input = Bytes::from(vec![0xDE, 0xAD]); // simulated encrypted + let plaintext_input = Bytes::from(vec![0xBE, 0xEF]); // original plaintext + + // Build a tx with encrypted input (as loaded from broadcast JSON). + // Serialize/deserialize round-trip to create it since constructors are awkward. + let json = serde_json::json!({ + "input": format!("0x{}", hex::encode(&encrypted_input)), + }); + let tx_request: seismic_prelude::foundry::TransactionRequest = + serde_json::from_value(json).unwrap(); + let tx = + >::from( + tx_request, + ); + let mut tx_meta = TransactionWithMetadata::from_tx_request(tx); + tx_meta.has_shielded_args = true; + tx_meta.rpc = String::new(); + + let mut sequence = + ScriptSequence { transactions: VecDeque::from([tx_meta]), ..Default::default() }; + + // Build sensitive data (as loaded from cache JSON) + let sensitive = SensitiveScriptSequence { + transactions: VecDeque::from([SensitiveTransactionMetadata { + rpc: "http://localhost:8545".to_string(), + plaintext_input: Some(plaintext_input.clone()), + plaintext_arguments: Some(vec!["0xBEEF".to_string(), "1000".to_string()]), + }]), + }; + + // fill_sensitive should restore plaintext input to the transaction + sequence.fill_sensitive(&sensitive); + + let restored_tx = &sequence.transactions[0]; + let input = restored_tx.transaction.input().unwrap(); + assert_eq!( + input, &plaintext_input, + "after fill_sensitive, transaction input should be restored to plaintext, not remain encrypted" + ); + assert_eq!( + restored_tx.plaintext_input, + Some(plaintext_input), + "plaintext_input should be populated from sensitive data" + ); + assert_eq!( + restored_tx.plaintext_arguments, + Some(vec!["0xBEEF".to_string(), "1000".to_string()]), + "plaintext_arguments should be populated from sensitive data" + ); + } + #[test] fn can_convert_sig() { assert_eq!(sig_to_file_name("run()").as_str(), "run"); diff --git a/crates/script-sequence/src/transaction.rs b/crates/script-sequence/src/transaction.rs index 1b4457e57..a2914f2ca 100644 --- a/crates/script-sequence/src/transaction.rs +++ b/crates/script-sequence/src/transaction.rs @@ -32,6 +32,19 @@ pub struct TransactionWithMetadata { pub transaction: TransactionMaybeSigned, pub additional_contracts: Vec, pub is_fixed_gas_limit: bool, + /// Whether this transaction targets a function with shielded type parameters + /// (suint, sint, saddress, sbool). When true, broadcast should encrypt calldata + /// and send as TxSeismic (type 0x4a). + #[serde(default)] + pub has_shielded_args: bool, + /// Plaintext calldata stored before encryption, used by cache/ for --resume. + /// Skipped in broadcast JSON serialization so encrypted calldata is what's recorded. + #[serde(skip)] + pub plaintext_input: Option, + /// Plaintext arguments stored before redaction, used by cache/ for --resume. + /// Skipped in broadcast JSON so shielded values aren't exposed. + #[serde(skip)] + pub plaintext_arguments: Option>, } fn default_string() -> Option { @@ -57,6 +70,9 @@ impl TransactionWithMetadata { function: Default::default(), arguments: Default::default(), is_fixed_gas_limit: Default::default(), + has_shielded_args: Default::default(), + plaintext_input: Default::default(), + plaintext_arguments: Default::default(), additional_contracts: Default::default(), rpc: Default::default(), } diff --git a/crates/script/Cargo.toml b/crates/script/Cargo.toml index 53aa24ad7..d19bf30f0 100644 --- a/crates/script/Cargo.toml +++ b/crates/script/Cargo.toml @@ -56,6 +56,8 @@ alloy-dyn-abi.workspace = true alloy-primitives.workspace = true alloy-eips.workspace = true alloy-consensus.workspace = true +rand.workspace = true +secp256k1 = "0.30" [dev-dependencies] tempfile.workspace = true diff --git a/crates/script/src/broadcast.rs b/crates/script/src/broadcast.rs index 6071becae..b104134f1 100644 --- a/crates/script/src/broadcast.rs +++ b/crates/script/src/broadcast.rs @@ -8,6 +8,7 @@ use alloy_eips::{BlockId, eip2718::Encodable2718}; use alloy_network::TransactionBuilder; use alloy_primitives::{ Address, TxHash, + aliases::U96, map::{AddressHashMap, AddressHashSet}, utils::format_units, }; @@ -25,9 +26,160 @@ use foundry_common::{ use foundry_config::Config; use futures::{StreamExt, future::join_all}; use itertools::Itertools; +use rand::RngCore; +use secp256k1::{PublicKey, Secp256k1, SecretKey}; use std::{cmp::Ordering, sync::Arc}; -use seismic_prelude::foundry::{AnyNetwork, EthereumWallet, TransactionRequest}; +use seismic_prelude::foundry::{ + AnyNetwork, EthereumWallet, SeismicProviderExt, TransactionRequest, TxLegacyFields, TxSeismic, + TxSeismicElements, TxSeismicMetadata, +}; + +/// Redacts shielded argument values in the arguments array, replacing them with "". +/// +/// Parses the function signature (e.g. "mint(address,suint256)") to determine which +/// parameter positions contain shielded types. For struct/tuple parameters like +/// "executeOrder((address,suint256,uint256))", recursively checks inside the tuple. +fn redact_shielded_arguments(function_sig: Option<&str>, args: &[String]) -> Vec { + let Some(sig) = function_sig else { + return args.to_vec(); + }; + + // Parse top-level types from "name(type1,type2,...)" + let Some(start) = sig.find('(') else { + return args.to_vec(); + }; + let Some(end) = sig.rfind(')') else { + return args.to_vec(); + }; + let types_str = &sig[start + 1..end]; + if types_str.is_empty() { + return args.to_vec(); + } + + let types = split_top_level_params(types_str); + + args.iter() + .enumerate() + .map(|(i, arg)| { + if i < types.len() && type_contains_shielded(types[i].trim()) { + "".to_string() + } else { + arg.clone() + } + }) + .collect() +} + +/// Splits a parameter type string by commas, respecting nested parentheses. +/// e.g. "(address,suint256),uint256" → ["(address,suint256)", "uint256"] +fn split_top_level_params(s: &str) -> Vec<&str> { + let mut result = Vec::new(); + let mut depth = 0; + let mut start = 0; + for (i, c) in s.char_indices() { + match c { + '(' => depth += 1, + ')' => depth -= 1, + ',' if depth == 0 => { + result.push(&s[start..i]); + start = i + 1; + } + _ => {} + } + } + if start < s.len() { + result.push(&s[start..]); + } + result +} + +/// Returns true if a type string (from a function signature) contains any shielded type. +/// Handles tuples like "(address,suint256)" by recursively checking inside. +fn type_contains_shielded(ty: &str) -> bool { + let trimmed = ty.trim(); + if trimmed.starts_with('(') { + // Tuple: strip outer parens (and optional array suffix) and check components + let inner_end = trimmed.rfind(')').unwrap_or(trimmed.len()); + let inner = &trimmed[1..inner_end]; + split_top_level_params(inner).iter().any(|t| type_contains_shielded(t)) + } else { + crate::transaction::param_is_shielded(trimmed) + } +} + +/// Encrypts the calldata of a transaction and converts it to a TxSeismic (type 0x4a). +/// +/// This is used when a transaction targets a function with shielded type parameters. +/// The calldata is encrypted using ECDH with the network's TEE public key. +fn encrypt_transaction_for_seismic( + tx: &mut WithOtherFields, + network_pubkey: &PublicKey, + recent_block_hash: alloy_primitives::B256, + recent_block_number: u64, +) -> Result<()> { + // Generate a random ephemeral encryption keypair + let secp = Secp256k1::new(); + let encryption_sk = { + let mut rng = rand::rng(); + let mut key_bytes = [0u8; 32]; + rng.fill_bytes(&mut key_bytes); + SecretKey::from_slice(&key_bytes) + .map_err(|e| eyre::eyre!("Failed to generate encryption key: {}", e))? + }; + let encryption_pk = PublicKey::from_secret_key(&secp, &encryption_sk); + let encryption_nonce = U96::random(); + + let seismic_elements = TxSeismicElements { + encryption_pubkey: encryption_pk, + encryption_nonce, + message_version: 0, + recent_block_hash, + expires_at_block: recent_block_number + 100, + signed_read: false, + }; + + // Get the original calldata + let original_input = tx.inner.inner.input.input().cloned().unwrap_or_default(); + + // Build metadata for AEAD + let from = tx.inner.inner.from.unwrap_or_default(); + let legacy_fields = TxLegacyFields { + chain_id: tx.inner.inner.chain_id.unwrap_or_default(), + nonce: tx.inner.inner.nonce.unwrap_or_default(), + to: tx.inner.inner.to.unwrap_or_default(), + value: tx.inner.inner.value.unwrap_or_default(), + }; + let metadata = TxSeismicMetadata { + sender: from, + legacy_fields, + seismic_elements: seismic_elements.clone(), + }; + + // Encrypt the calldata + let encrypted_input = seismic_elements + .client_encrypt(&original_input, network_pubkey, &encryption_sk, &metadata) + .map_err(|e| eyre::eyre!("Failed to encrypt calldata for seismic tx: {}", e))?; + + // Set encrypted input + tx.inner.inner.input = + alloy_rpc_types::TransactionInput { input: Some(encrypted_input), data: None }; + + // Set transaction type to TxSeismic (0x4a) + tx.inner.inner.transaction_type = Some(TxSeismic::TX_TYPE); + tx.inner.seismic_elements = Some(seismic_elements); + + // Convert EIP-1559 gas fields to legacy gas_price. TxSeismic uses legacy gas + // format (single gas_price), so max_priority_fee_per_gas is intentionally dropped — + // it has no equivalent in legacy transactions. + if let Some(max_fee) = tx.inner.inner.max_fee_per_gas { + tx.inner.inner.gas_price = Some(max_fee); + tx.inner.inner.max_fee_per_gas = None; + tx.inner.inner.max_priority_fee_per_gas = None; + } + + Ok(()) +} pub async fn estimate_gas>( tx: &mut WithOtherFields, @@ -275,6 +427,34 @@ impl BundledState { let seq_progress = progress.get_sequence_progress(i, sequence); if already_broadcasted < sequence.transactions.len() { + // Check if any transactions in this sequence need seismic encryption + let has_any_shielded = sequence + .transactions + .iter() + .skip(already_broadcasted) + .any(|tx| tx.has_shielded_args); + + // Fetch TEE public key and recent block once if any transaction needs encryption + let seismic_info = if has_any_shielded { + let pk = provider + .get_tee_pubkey() + .await + .wrap_err("Failed to fetch TEE public key for seismic transaction encryption. Is the RPC endpoint a Seismic node?")?; + let block = provider + .get_block_number() + .await + .wrap_err("Failed to fetch latest block number for seismic transaction")?; + let block_info = provider + .get_block_by_number(block.into()) + .await + .wrap_err("Failed to fetch latest block for seismic transaction")? + .ok_or_else(|| eyre::eyre!("Latest block not found"))?; + let block_hash = block_info.header.hash; + Some((pk, block_hash, block)) + } else { + None + }; + let is_legacy = Chain::from(sequence.chain).is_legacy() || self.args.legacy; // Make a one-time gas price estimation let (gas_price, eip1559_fees) = match ( @@ -314,6 +494,7 @@ impl BundledState { .skip(already_broadcasted) .map(|tx_with_metadata| { let is_fixed_gas_limit = tx_with_metadata.is_fixed_gas_limit; + let needs_encryption = tx_with_metadata.has_shielded_args; let kind = match tx_with_metadata.tx().clone() { TransactionMaybeSigned::Signed { tx, .. } => { @@ -334,7 +515,14 @@ impl BundledState { tx.set_create(); } - if let Some(gas_price) = gas_price { + if needs_encryption { + // For seismic transactions, use legacy gas pricing + let legacy_gas_price = gas_price.unwrap_or_else(|| { + let fees = eip1559_fees.expect("was set above"); + fees.max_fee_per_gas + }); + tx.set_gas_price(legacy_gas_price); + } else if let Some(gas_price) = gas_price { tx.set_gas_price(gas_price); } else { let eip1559_fees = eip1559_fees.expect("was set above"); @@ -344,6 +532,20 @@ impl BundledState { tx.set_max_fee_per_gas(eip1559_fees.max_fee_per_gas); } + // Encrypt calldata for transactions with shielded parameters + if needs_encryption { + let (network_pk, block_hash, block_number) = + seismic_info.as_ref().expect( + "seismic info should be fetched when shielded txs exist", + ); + encrypt_transaction_for_seismic( + &mut tx, + network_pk, + *block_hash, + *block_number, + )?; + } + send_kind.for_sender(&from, tx)? } }; @@ -352,6 +554,47 @@ impl BundledState { }) .collect::>>()?; + // Encrypt shielded transactions in-place in the sequence so that + // checkpoint saves (broadcast/) record encrypted calldata, not plaintext. + // Plaintext is preserved in `plaintext_input` for cache/ (--resume). + // Arguments are also redacted in broadcast/ with plaintext kept in cache/. + if has_any_shielded { + let (network_pk, block_hash, block_number) = + seismic_info.as_ref().expect("seismic info fetched above"); + for tx_meta in sequence.transactions.iter_mut().skip(already_broadcasted) { + if tx_meta.has_shielded_args { + // Save and redact arguments + if let Some(ref args) = tx_meta.arguments { + tx_meta.plaintext_arguments = Some(args.clone()); + tx_meta.arguments = Some(redact_shielded_arguments( + tx_meta.function.as_deref(), + args, + )); + } + + if let Some(unsigned_tx) = tx_meta.transaction.as_unsigned_mut() { + // Save plaintext before encrypting + tx_meta.plaintext_input = + unsigned_tx.inner.inner.input.input().cloned(); + + // Set gas (same logic as the send iteration above) + let legacy_gas_price = gas_price.unwrap_or_else(|| { + eip1559_fees.expect("was set above").max_fee_per_gas + }); + unsigned_tx.set_gas_price(legacy_gas_price); + unsigned_tx.set_chain_id(sequence.chain); + + encrypt_transaction_for_seismic( + unsigned_tx, + network_pk, + *block_hash, + *block_number, + )?; + } + } + } + } + let estimate_via_rpc = has_different_gas_calc(sequence.chain) || self.args.skip_simulation; @@ -476,3 +719,155 @@ impl BundledState { Ok(()) } } + +#[cfg(test)] +mod tests { + use super::*; + + fn args(vals: &[&str]) -> Vec { + vals.iter().map(|s| s.to_string()).collect() + } + + #[test] + fn test_redact_simple_shielded() { + // mint(address,suint256) — second arg is shielded + let result = redact_shielded_arguments( + Some("mint(address,suint256)"), + &args(&["0x7ff1bAdb", "2000000000000000000000000000"]), + ); + assert_eq!(result, args(&["0x7ff1bAdb", ""])); + } + + #[test] + fn test_redact_no_shielded() { + // transfer(address,uint256) — no shielded + let result = + redact_shielded_arguments(Some("transfer(address,uint256)"), &args(&["0xabc", "1000"])); + assert_eq!(result, args(&["0xabc", "1000"])); + } + + #[test] + fn test_redact_all_shielded() { + // secretTransfer(saddress,suint256) — both shielded + let result = redact_shielded_arguments( + Some("secretTransfer(saddress,suint256)"), + &args(&["0xabc", "1000"]), + ); + assert_eq!(result, args(&["", ""])); + } + + #[test] + fn test_redact_struct_with_shielded() { + // executeOrder((address,suint256,uint256)) — tuple with shielded component + let result = redact_shielded_arguments( + Some("executeOrder((address,suint256,uint256))"), + &args(&["(0xabc, 1000, 42)"]), + ); + // The whole tuple arg is redacted because it contains a shielded type + assert_eq!(result, args(&[""])); + } + + #[test] + fn test_redact_struct_without_shielded() { + // executeOrder((address,uint256)) — tuple with no shielded + let result = redact_shielded_arguments( + Some("executeOrder((address,uint256))"), + &args(&["(0xabc, 1000)"]), + ); + assert_eq!(result, args(&["(0xabc, 1000)"])); + } + + #[test] + fn test_redact_mixed_struct_and_plain() { + // process((address,suint256),uint256) — first is shielded tuple, second is plain + let result = redact_shielded_arguments( + Some("process((address,suint256),uint256)"), + &args(&["(0xabc, 1000)", "42"]), + ); + assert_eq!(result, args(&["", "42"])); + } + + #[test] + fn test_redact_nested_struct() { + // deep(((suint256))) — nested tuple with shielded + let result = redact_shielded_arguments(Some("deep(((suint256)))"), &args(&["((1000))"])); + assert_eq!(result, args(&[""])); + } + + #[test] + fn test_redact_array_shielded() { + // batchMint(address,suint256[]) — array of shielded type + let result = redact_shielded_arguments( + Some("batchMint(address,suint256[])"), + &args(&["0xabc", "[1000, 2000]"]), + ); + assert_eq!(result, args(&["0xabc", ""])); + } + + #[test] + fn test_redact_sbytes_shielded() { + // storeSecret(sbytes32,address) — sbytes32 is shielded + let result = redact_shielded_arguments( + Some("storeSecret(sbytes32,address)"), + &args(&["0xdeadbeef", "0xabc"]), + ); + assert_eq!(result, args(&["", "0xabc"])); + } + + #[test] + fn test_redact_no_function_sig() { + // No function signature — return args unchanged + let result = redact_shielded_arguments(None, &args(&["0xabc", "1000"])); + assert_eq!(result, args(&["0xabc", "1000"])); + } + + #[test] + fn test_redact_empty_args() { + let result = redact_shielded_arguments(Some("noArgs()"), &[]); + assert!(result.is_empty()); + } + + #[test] + fn test_split_top_level_params_simple() { + assert_eq!(split_top_level_params("address,uint256"), vec!["address", "uint256"]); + } + + #[test] + fn test_split_top_level_params_with_tuple() { + assert_eq!( + split_top_level_params("(address,suint256),uint256"), + vec!["(address,suint256)", "uint256"] + ); + } + + #[test] + fn test_split_top_level_params_nested_tuple() { + assert_eq!( + split_top_level_params("((suint256,address),uint256),bool"), + vec!["((suint256,address),uint256)", "bool"] + ); + } + + #[test] + fn test_type_contains_shielded_plain() { + assert!(type_contains_shielded("suint256")); + assert!(type_contains_shielded("saddress")); + assert!(type_contains_shielded("suint256[]")); + assert!(!type_contains_shielded("uint256")); + assert!(!type_contains_shielded("address")); + } + + #[test] + fn test_type_contains_shielded_tuple() { + assert!(type_contains_shielded("(address,suint256)")); + assert!(type_contains_shielded("(address,suint256,uint256)")); + assert!(!type_contains_shielded("(address,uint256)")); + } + + #[test] + fn test_type_contains_shielded_nested_tuple() { + assert!(type_contains_shielded("((suint256))")); + assert!(type_contains_shielded("((address,(suint256,uint256)),bool)")); + assert!(!type_contains_shielded("((address,uint256),bool)")); + } +} diff --git a/crates/script/src/transaction.rs b/crates/script/src/transaction.rs index c93d0d7ef..e8f7fa47c 100644 --- a/crates/script/src/transaction.rs +++ b/crates/script/src/transaction.rs @@ -1,6 +1,7 @@ use super::ScriptResult; use crate::build::LinkedBuildData; use alloy_dyn_abi::JsonAbiExt; +use alloy_json_abi::Function; use alloy_primitives::{Address, B256, TxKind, hex}; use eyre::Result; use forge_script_sequence::TransactionWithMetadata; @@ -67,6 +68,7 @@ impl ScriptTransactionBuilder { if let Some(function) = function { self.transaction.function = Some(function.signature()); + self.transaction.has_shielded_args = function_has_shielded_params(function); let values = function.abi_decode_input(data).inspect_err(|_| { error!( @@ -180,3 +182,156 @@ impl From for ScriptTransactionBuilder { Self { transaction } } } + +/// Returns true if any of the function's input parameters contain shielded types. +/// Recursively checks tuple components for struct parameters. +fn function_has_shielded_params(function: &Function) -> bool { + function.inputs.iter().any(|param| abi_param_has_shielded(param)) +} + +/// Recursively checks if an ABI parameter (or any of its struct components) is shielded. +fn abi_param_has_shielded(param: &alloy_json_abi::Param) -> bool { + if param.components.is_empty() { + param_is_shielded(¶m.ty) + } else { + // Tuple/struct: check components recursively + param.components.iter().any(|c| abi_param_has_shielded(c)) + } +} + +/// Returns true if a Solidity type string represents a shielded type. +/// Handles array types like `suint256[]` or `suint256[10]` by stripping the suffix. +/// Covers all shielded types: suint*, sint*, saddress, sbool, sbytes*. +pub fn param_is_shielded(ty: &str) -> bool { + // Strip array suffixes: "suint256[]" → "suint256", "suint256[10]" → "suint256" + let base = ty.split('[').next().unwrap_or(ty); + base.starts_with("suint") + || base.starts_with("sint") + || base.starts_with("sbytes") + || base == "saddress" + || base == "sbool" +} + +#[cfg(test)] +mod tests { + use super::*; + use alloy_json_abi::Param; + + #[test] + fn test_param_is_shielded_basic() { + assert!(param_is_shielded("suint256")); + assert!(param_is_shielded("suint8")); + assert!(param_is_shielded("sint128")); + assert!(param_is_shielded("saddress")); + assert!(param_is_shielded("sbool")); + assert!(param_is_shielded("sbytes32")); + assert!(param_is_shielded("sbytes1")); + + assert!(!param_is_shielded("uint256")); + assert!(!param_is_shielded("address")); + assert!(!param_is_shielded("bool")); + assert!(!param_is_shielded("bytes32")); + assert!(!param_is_shielded("string")); + } + + #[test] + fn test_param_is_shielded_sbytes_arrays() { + assert!(param_is_shielded("sbytes32[]")); + assert!(param_is_shielded("sbytes1[5]")); + } + + #[test] + fn test_param_is_shielded_udvt() { + // UDVTs unwrap to their underlying type in the ABI. + // type ShieldedAmount is suint256 → ABI shows "suint256", not "ShieldedAmount" + assert!(param_is_shielded("suint256")); // UDVT unwrapped + } + + #[test] + fn test_param_is_shielded_arrays() { + assert!(param_is_shielded("suint256[]")); + assert!(param_is_shielded("suint256[10]")); + assert!(param_is_shielded("sint128[]")); + assert!(param_is_shielded("saddress[]")); + assert!(param_is_shielded("sbool[5]")); + + assert!(!param_is_shielded("uint256[]")); + assert!(!param_is_shielded("address[10]")); + } + + fn make_param(ty: &str) -> Param { + Param { ty: ty.to_string(), name: String::new(), components: vec![], internal_type: None } + } + + fn make_tuple_param(components: Vec) -> Param { + Param { ty: "tuple".to_string(), name: String::new(), components, internal_type: None } + } + + #[test] + fn test_abi_param_has_shielded_simple() { + assert!(abi_param_has_shielded(&make_param("suint256"))); + assert!(abi_param_has_shielded(&make_param("saddress"))); + assert!(!abi_param_has_shielded(&make_param("uint256"))); + assert!(!abi_param_has_shielded(&make_param("address"))); + } + + #[test] + fn test_abi_param_has_shielded_tuple() { + // Struct with one shielded field + let param = make_tuple_param(vec![make_param("address"), make_param("suint256")]); + assert!(abi_param_has_shielded(¶m)); + + // Struct with no shielded fields + let param = make_tuple_param(vec![make_param("address"), make_param("uint256")]); + assert!(!abi_param_has_shielded(¶m)); + } + + #[test] + fn test_abi_param_has_shielded_nested_tuple() { + // Nested struct: outer(inner(suint256)) + let inner = make_tuple_param(vec![make_param("suint256")]); + let outer = make_tuple_param(vec![inner, make_param("uint256")]); + assert!(abi_param_has_shielded(&outer)); + + // Nested struct with no shielded fields + let inner = make_tuple_param(vec![make_param("uint256")]); + let outer = make_tuple_param(vec![inner, make_param("address")]); + assert!(!abi_param_has_shielded(&outer)); + } + + #[test] + fn test_function_has_shielded_params_with_struct() { + let function = Function { + name: "executeOrder".to_string(), + inputs: vec![make_tuple_param(vec![ + make_param("address"), + make_param("suint256"), + make_param("uint256"), + ])], + outputs: vec![], + state_mutability: alloy_json_abi::StateMutability::NonPayable, + }; + assert!(function_has_shielded_params(&function)); + } + + #[test] + fn test_function_has_shielded_params_mixed() { + // mint(address, suint256) — has shielded + let function = Function { + name: "mint".to_string(), + inputs: vec![make_param("address"), make_param("suint256")], + outputs: vec![], + state_mutability: alloy_json_abi::StateMutability::NonPayable, + }; + assert!(function_has_shielded_params(&function)); + + // transfer(address, uint256) — no shielded + let function = Function { + name: "transfer".to_string(), + inputs: vec![make_param("address"), make_param("uint256")], + outputs: vec![], + state_mutability: alloy_json_abi::StateMutability::NonPayable, + }; + assert!(!function_has_shielded_params(&function)); + } +}