diff --git a/Cargo.lock b/Cargo.lock index 79eac064..26f1f638 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -40,9 +40,9 @@ dependencies = [ [[package]] name = "ahash" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42cd52102d3df161c77a887b608d7a4897d7cc112886a9537b738a887a03aaff" +checksum = "d713b3834d76b85304d4d525563c1276e2e30dc97cc67bfb4585a4a29fc2c89f" dependencies = [ "cfg-if", "getrandom", @@ -100,9 +100,9 @@ dependencies = [ [[package]] name = "alloy-primitives" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4b6fb2b432ff223d513db7f908937f63c252bee0af9b82bfd25b0a5dd1eb0d8" +checksum = "ef197eb250c64962003cb08b90b17f0882c192f4a6f2f544809d424fd7cb0e7d" dependencies = [ "alloy-rlp", "bytes", @@ -159,9 +159,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.11" +version = "0.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e2e1ebcb11de5c03c67de28a7df593d32191b44939c482e97702baaaa6ab6a5" +checksum = "96b09b5178381e0874812a9b157f7fe84982617e48f71f4e3235482775e5b540" dependencies = [ "anstyle", "anstyle-parse", @@ -217,10 +217,10 @@ version = "0.4.18" dependencies = [ "Inflector", "anyhow", - "arbiter-bindings 0.1.4", - "arbiter-core 0.10.2", - "arbiter-engine 0.3.0", - "arbiter-macros 0.1.1", + "arbiter-bindings 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "arbiter-core 0.10.3 (registry+https://github.com/rust-lang/crates.io-index)", + "arbiter-engine 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "arbiter-macros 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "assert_cmd", "async-trait", "clap", @@ -244,9 +244,7 @@ dependencies = [ [[package]] name = "arbiter-bindings" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d0333ea5e6f32bef018cd4a035ff0241899947d8e0c87346c868ec5d4bb51fc" +version = "0.1.6" dependencies = [ "ethers", "serde", @@ -255,6 +253,8 @@ dependencies = [ [[package]] name = "arbiter-bindings" version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7189a325b0e3e56b5e695d3c2fbe8dd70fffcb04b13678ff2be1ad2bb754a38" dependencies = [ "ethers", "serde", @@ -262,16 +262,18 @@ dependencies = [ [[package]] name = "arbiter-core" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a6168baef0eb9e7c22d4b02e1edf526a4588edc97551b0cde96ec296f9b801b" +version = "0.10.3" dependencies = [ - "arbiter-bindings 0.1.4", + "arbiter-bindings 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "assert_matches", "async-stream", "async-trait", "bytes", + "cargo_metadata", + "chrono", "crossbeam-channel", "ethers", + "futures", "futures-locks", "futures-timer", "futures-util", @@ -286,23 +288,22 @@ dependencies = [ "thiserror", "tokio", "tracing", + "tracing-subscriber", "uint", ] [[package]] name = "arbiter-core" version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1761b5f12d6e4bb74264a863a0612031555817d78334513c40a0677c4ef6a596" dependencies = [ - "arbiter-bindings 0.1.4", - "assert_matches", + "arbiter-bindings 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "async-stream", "async-trait", "bytes", - "cargo_metadata", - "chrono", "crossbeam-channel", "ethers", - "futures", "futures-locks", "futures-timer", "futures-util", @@ -317,20 +318,17 @@ dependencies = [ "thiserror", "tokio", "tracing", - "tracing-subscriber", "uint", ] [[package]] name = "arbiter-engine" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddc9898f9526886e1d16c677a95f257eb529c02232556925a59e1ec57e31b4d4" +version = "0.3.1" dependencies = [ "anyhow", - "arbiter-bindings 0.1.4", - "arbiter-core 0.10.2", - "arbiter-macros 0.1.1", + "arbiter-bindings 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "arbiter-core 0.10.3 (registry+https://github.com/rust-lang/crates.io-index)", + "arbiter-macros 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "async-stream", "async-trait", "crossbeam-channel", @@ -344,16 +342,20 @@ dependencies = [ "tokio-stream", "toml 0.8.10", "tracing", + "tracing-subscriber", + "tracing-test", ] [[package]] name = "arbiter-engine" version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0553d66d507f24b9a7f63b783e9a2a37edaa5d93bfc9f23a3587dfcd65c0c3a6" dependencies = [ "anyhow", - "arbiter-bindings 0.1.4", - "arbiter-core 0.10.2", - "arbiter-macros 0.1.1", + "arbiter-bindings 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "arbiter-core 0.10.3 (registry+https://github.com/rust-lang/crates.io-index)", + "arbiter-macros 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "async-stream", "async-trait", "crossbeam-channel", @@ -367,15 +369,11 @@ dependencies = [ "tokio-stream", "toml 0.8.10", "tracing", - "tracing-subscriber", - "tracing-test", ] [[package]] name = "arbiter-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a685a9ee2090c7113919cb78d9e87e294b4f65e22f43c5938c301b853b78e411" +version = "0.1.3" dependencies = [ "quote", "syn 2.0.50", @@ -384,6 +382,8 @@ dependencies = [ [[package]] name = "arbiter-macros" version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac4a04ffa19e2845c4ea58bb8470d19b13d3c95a8c846e7524d718b7dc182020" dependencies = [ "quote", "syn 2.0.50", @@ -801,9 +801,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.9.0" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c48f0051a4b4c5e0b6d365cd04af53aeaa209e3cc15ec2cdb69e73cc87fbd0dc" +checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706" dependencies = [ "memchr", "regex-automata 0.4.5", @@ -818,9 +818,9 @@ checksum = "b4ae4235e6dac0694637c763029ecea1a2ec9e4e06ec2729bd21ba4d9c863eb7" [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +checksum = "8ea184aa71bb362a1157c896979544cc23974e08fd265f29ea96b59f0b4a555b" [[package]] name = "byte-slice-cast" @@ -886,9 +886,9 @@ dependencies = [ [[package]] name = "c-kzg" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d8c306be83ec04bf5f73710badd8edf56dea23f2f0d8b7f9fe4644d371c758" +checksum = "94a4bc5367b6284358d2a6a6a1dc2d92ec4b86034561c3b9d3341909752fd848" dependencies = [ "blst", "cc", @@ -924,7 +924,7 @@ checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" dependencies = [ "camino", "cargo-platform", - "semver 1.0.21", + "semver 1.0.22", "serde", "serde_json", "thiserror", @@ -932,11 +932,10 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.83" +version = "1.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +checksum = "3286b845d0fccbdd15af433f61c5970e711987036cb468f437ff6badd70f4e24" dependencies = [ - "jobserver", "libc", ] @@ -957,7 +956,7 @@ dependencies = [ "js-sys", "num-traits", "wasm-bindgen", - "windows-targets 0.52.0", + "windows-targets 0.52.3", ] [[package]] @@ -1124,9 +1123,9 @@ dependencies = [ [[package]] name = "const-hex" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18d59688ad0945eaf6b84cb44fedbe93484c81b48970e98f09db8a22832d7961" +checksum = "efbd12d49ab0eaf8193ba9175e45f56bbc2e4b27d57b8cfe62aa47942a46b9a9" dependencies = [ "cfg-if", "cpufeatures", @@ -1779,7 +1778,7 @@ dependencies = [ "chrono", "ethers-core", "reqwest", - "semver 1.0.21", + "semver 1.0.22", "serde", "serde_json", "thiserror", @@ -1890,7 +1889,7 @@ dependencies = [ "path-slash", "rayon", "regex", - "semver 1.0.21", + "semver 1.0.22", "serde", "serde_json", "sha2", @@ -2053,7 +2052,7 @@ dependencies = [ "regex", "reqwest", "revm-primitives 1.3.0", - "semver 1.0.21", + "semver 1.0.22", "serde", "serde_json", "serde_regex", @@ -2338,9 +2337,9 @@ checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd5256b483761cd23699d0da46cc6fd2ee3be420bbe6d020ae4a091e70b7e9fd" +checksum = "379dada1584ad501b383485dd706b8afb7a70fcbc7f4da7d780638a5a6124a60" [[package]] name = "hex" @@ -2605,15 +2604,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9028f49264629065d057f340a86acb84867925865f73bbf8d47b4d149a7e88b8" -[[package]] -name = "jobserver" -version = "0.1.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab46a6e9526ddef3ae7f787c06f0f2600639ba80ea3eade3d8e670a2230f51d6" -dependencies = [ - "libc", -] - [[package]] name = "js-sys" version = "0.3.68" @@ -4311,7 +4301,7 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b3683a40f1e94e7389c8e81e5f26bb5d30875ed0b48ab07985ec32eb6d6c712" dependencies = [ - "alloy-primitives 0.6.2", + "alloy-primitives 0.6.3", "auto_impl", "bitflags 2.4.2", "bitvec", @@ -4353,16 +4343,17 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.7" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", + "cfg-if", "getrandom", "libc", "spin 0.9.8", "untrusted 0.9.0", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -4475,7 +4466,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.21", + "semver 1.0.22", ] [[package]] @@ -4498,7 +4489,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" dependencies = [ "log", - "ring 0.17.7", + "ring 0.17.8", "rustls-webpki", "sct", ] @@ -4518,7 +4509,7 @@ version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring 0.17.7", + "ring 0.17.8", "untrusted 0.9.0", ] @@ -4542,9 +4533,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.16" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" +checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" [[package]] name = "salsa20" @@ -4612,7 +4603,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring 0.17.7", + "ring 0.17.8", "untrusted 0.9.0", ] @@ -4659,9 +4650,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.21" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" +checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" dependencies = [ "serde", ] @@ -4902,12 +4893,12 @@ checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b" [[package]] name = "socket2" -version = "0.5.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" dependencies = [ "libc", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -5053,7 +5044,7 @@ dependencies = [ "hex", "once_cell", "reqwest", - "semver 1.0.21", + "semver 1.0.22", "serde", "serde_json", "sha2", @@ -5070,7 +5061,7 @@ checksum = "aa64b5e8eecd3a8af7cfc311e29db31a268a62d5953233d3e8243ec77a71c4e3" dependencies = [ "build_const", "hex", - "semver 1.0.21", + "semver 1.0.22", "serde_json", "svm-rs", ] @@ -5201,9 +5192,9 @@ dependencies = [ [[package]] name = "thread_local" -version = "1.1.7" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" dependencies = [ "cfg-if", "once_cell", @@ -5375,7 +5366,7 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.5", + "toml_edit 0.22.6", ] [[package]] @@ -5424,15 +5415,15 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.5" +version = "0.22.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99e68c159e8f5ba8a28c4eb7b0c0c190d77bb479047ca713270048145a9ad28a" +checksum = "2c1b5fd4128cc8d3e0cb74d4ed9a9cc7c7284becd4df68f5f940e1ad123606f6" dependencies = [ "indexmap", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.1", + "winnow 0.6.2", ] [[package]] @@ -5614,9 +5605,9 @@ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" dependencies = [ "tinyvec", ] @@ -5871,7 +5862,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" dependencies = [ "windows-core", - "windows-targets 0.52.0", + "windows-targets 0.52.3", ] [[package]] @@ -5880,7 +5871,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.0", + "windows-targets 0.52.3", ] [[package]] @@ -5898,7 +5889,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.0", + "windows-targets 0.52.3", ] [[package]] @@ -5918,17 +5909,17 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.0" +version = "0.52.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +checksum = "d380ba1dc7187569a8a9e91ed34b8ccfc33123bbacb8c0aed2d1ad7f3ef2dc5f" dependencies = [ - "windows_aarch64_gnullvm 0.52.0", - "windows_aarch64_msvc 0.52.0", - "windows_i686_gnu 0.52.0", - "windows_i686_msvc 0.52.0", - "windows_x86_64_gnu 0.52.0", - "windows_x86_64_gnullvm 0.52.0", - "windows_x86_64_msvc 0.52.0", + "windows_aarch64_gnullvm 0.52.3", + "windows_aarch64_msvc 0.52.3", + "windows_i686_gnu 0.52.3", + "windows_i686_msvc 0.52.3", + "windows_x86_64_gnu 0.52.3", + "windows_x86_64_gnullvm 0.52.3", + "windows_x86_64_msvc 0.52.3", ] [[package]] @@ -5939,9 +5930,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.0" +version = "0.52.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" +checksum = "68e5dcfb9413f53afd9c8f86e56a7b4d86d9a2fa26090ea2dc9e40fba56c6ec6" [[package]] name = "windows_aarch64_msvc" @@ -5951,9 +5942,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.0" +version = "0.52.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" +checksum = "8dab469ebbc45798319e69eebf92308e541ce46760b49b18c6b3fe5e8965b30f" [[package]] name = "windows_i686_gnu" @@ -5963,9 +5954,9 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.0" +version = "0.52.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" +checksum = "2a4e9b6a7cac734a8b4138a4e1044eac3404d8326b6c0f939276560687a033fb" [[package]] name = "windows_i686_msvc" @@ -5975,9 +5966,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.0" +version = "0.52.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" +checksum = "28b0ec9c422ca95ff34a78755cfa6ad4a51371da2a5ace67500cf7ca5f232c58" [[package]] name = "windows_x86_64_gnu" @@ -5987,9 +5978,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.0" +version = "0.52.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" +checksum = "704131571ba93e89d7cd43482277d6632589b18ecf4468f591fbae0a8b101614" [[package]] name = "windows_x86_64_gnullvm" @@ -5999,9 +5990,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.0" +version = "0.52.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" +checksum = "42079295511643151e98d61c38c0acc444e52dd42ab456f7ccfd5152e8ecf21c" [[package]] name = "windows_x86_64_msvc" @@ -6011,9 +6002,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.0" +version = "0.52.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" +checksum = "0770833d60a970638e989b3fa9fd2bb1aaadcf88963d1659fd7d9990196ed2d6" [[package]] name = "winnow" @@ -6026,9 +6017,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d90f4e0f530c4c69f62b80d839e9ef3855edc9cba471a160c4d692deed62b401" +checksum = "7a4191c47f15cc3ec71fcb4913cb83d58def65dd3787610213c649283b5ce178" dependencies = [ "memchr", ] @@ -6073,9 +6064,9 @@ dependencies = [ [[package]] name = "xxhash-rust" -version = "0.8.8" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53be06678ed9e83edb1745eb72efc0bbcd7b5c3c35711a860906aed827a13d61" +checksum = "927da81e25be1e1a2901d59b81b37dd2efd1fc9c9345a55007f09bf5a2d3ee03" [[package]] name = "yaml-rust" diff --git a/core/src/coprocessor.rs b/core/src/coprocessor.rs index 2686d60b..b4d64c51 100644 --- a/core/src/coprocessor.rs +++ b/core/src/coprocessor.rs @@ -21,7 +21,7 @@ pub struct Coprocessor<'a> { impl<'a> Coprocessor<'a> { /// Create a new `Coprocessor` with the given `Environment`. pub fn new(environment: &Environment) -> Self { - let db = environment.db.clone(); + let db = environment.tip_db.clone(); let evm = Evm::builder().with_db(db).build(); Self { evm } } diff --git a/core/src/database/inspector.rs b/core/src/database/inspector.rs index 51f80e17..f40e8379 100644 --- a/core/src/database/inspector.rs +++ b/core/src/database/inspector.rs @@ -42,16 +42,16 @@ impl ArbiterInspector { } } -impl Inspector for ArbiterInspector { +impl Inspector for ArbiterInspector { #[inline] - fn initialize_interp(&mut self, interp: &mut Interpreter, context: &mut EvmContext) { + fn initialize_interp(&mut self, interp: &mut Interpreter, context: &mut EvmContext) { if let Some(gas) = &mut self.gas { gas.initialize_interp(interp, context); } } #[inline] - fn step_end(&mut self, interp: &mut Interpreter, context: &mut EvmContext) { + fn step_end(&mut self, interp: &mut Interpreter, context: &mut EvmContext) { if let Some(gas) = &mut self.gas { gas.step_end(interp, context); } @@ -60,7 +60,7 @@ impl Inspector for ArbiterInspector { #[inline] fn call( &mut self, - context: &mut EvmContext, + context: &mut EvmContext, inputs: &mut CallInputs, return_memory_offset: Range, ) -> Option { @@ -74,7 +74,7 @@ impl Inspector for ArbiterInspector { #[inline] fn call_end( &mut self, - context: &mut EvmContext, + context: &mut EvmContext, inputs: &CallInputs, outcome: CallOutcome, ) -> CallOutcome { @@ -88,10 +88,16 @@ impl Inspector for ArbiterInspector { #[inline] fn create_end( &mut self, - _context: &mut EvmContext, + _context: &mut EvmContext, _inputs: &CreateInputs, outcome: CreateOutcome, ) -> CreateOutcome { outcome } + + #[inline] + fn log(&mut self, context: &mut EvmContext, log: &Log) { + let mut db = context.db.0.write().unwrap(); + db.logs.push(log.clone()); + } } diff --git a/core/src/database/mod.rs b/core/src/database/mod.rs index 10e9ab1a..99890b41 100644 --- a/core/src/database/mod.rs +++ b/core/src/database/mod.rs @@ -24,9 +24,15 @@ pub mod inspector; /// A [`ArbiterDB`] is a wrapper around a [`CacheDB`] that is used to provide /// access to the [`environment::Environment`]'s database to multiple /// [`coprocessor::Coprocessor`]s. -#[derive(Clone, Debug, Serialize, Deserialize)] +#[derive(Debug, Serialize, Deserialize)] pub struct ArbiterDB(pub Arc>>); +impl Clone for ArbiterDB { + fn clone(&self) -> Self { + Self(self.0.clone()) + } +} + impl ArbiterDB { /// Create a new `ArbiterDB`. pub fn new() -> Self { diff --git a/core/src/environment/mod.rs b/core/src/environment/mod.rs index a4ba178c..c880c13d 100644 --- a/core/src/environment/mod.rs +++ b/core/src/environment/mod.rs @@ -72,7 +72,9 @@ pub struct Environment { /// The [`EVM`] that is used as an execution environment and database for /// calls and transactions. - pub(crate) db: ArbiterDB, + pub(crate) tip_db: ArbiterDB, + + pub global_db: Arc>>>, inspector: Option, @@ -196,7 +198,8 @@ impl Environment { socket, inspector, parameters, - db, + tip_db: db, + global_db: Arc::new(RwLock::new(BTreeMap::new())), handle: None, } } @@ -208,7 +211,8 @@ impl Environment { let label = self.parameters.label.clone(); // Bring in the EVM db by cloning the interior Arc (lightweight). - let db = self.db.clone(); + let db = self.tip_db.clone(); + let global_db = self.global_db.clone(); // Bring in the EVM ENV let mut env = Env::default(); @@ -273,12 +277,20 @@ impl Environment { outcome_sender, } => { // Return the old block data in a `ReceiptData` + let old_block_number = evm.block().number; let receipt_data = ReceiptData { - block_number: convert_uint_to_u64(evm.block().number).unwrap(), + block_number: convert_uint_to_u64(old_block_number).unwrap(), transaction_index, cumulative_gas_per_block, }; - outcome_sender.send(Ok(Outcome::BlockUpdateCompleted(receipt_data)))?; + + let mut db = evm.context.evm.db.0.write().unwrap(); + global_db + .write() + .unwrap() + .insert(old_block_number, db.clone()); + db.logs.clear(); + drop(db); // Update the block number and timestamp evm.block_mut().number = U256::from_limbs(block_number.0); @@ -287,6 +299,9 @@ impl Environment { // Reset the counters. transaction_index = U64::from(0); cumulative_gas_per_block = eU256::from(0); + + // Return the old block data in a `ReceiptData` after the block update. + outcome_sender.send(Ok(Outcome::BlockUpdateCompleted(receipt_data)))?; } Instruction::Cheatcode { cheatcode, @@ -455,8 +470,7 @@ impl Environment { continue; } }; - cumulative_gas_per_block += - eU256::from(execution_result.clone().gas_used()); + cumulative_gas_per_block += eU256::from(execution_result.gas_used()); let block_number = convert_uint_to_u64(evm.block().number)?; let receipt_data = ReceiptData { block_number, diff --git a/core/tests/environment_integration.rs b/core/tests/environment_integration.rs index 29eed338..c0dbc4de 100644 --- a/core/tests/environment_integration.rs +++ b/core/tests/environment_integration.rs @@ -148,3 +148,39 @@ async fn env_returns_db() { let db = environment.stop().unwrap(); assert!(!db.0.read().unwrap().accounts.is_empty()) } + +#[tokio::test] +async fn block_logs() { + let (environment, client) = startup(); + let global_db = environment.global_db.clone(); + + let arbiter_token = deploy_arbx(client.clone()).await; + arbiter_token + .mint(Address::zero(), eU256::from(1000)) + .send() + .await + .unwrap() + .await + .unwrap(); + + println!("Global DB: {:?}\n", global_db.read().unwrap()); + + // UPDATE BLOCK + let new_block_number = 69; + let new_block_timestamp = 420; + + client + .update_block(new_block_number, new_block_timestamp) + .unwrap(); + println!("Global DB: {:?}\n", global_db.read().unwrap()); + + arbiter_token + .approve(Address::zero(), eU256::from(1000)) + .send() + .await + .unwrap() + .await + .unwrap(); + client.update_block(6969, 420420).unwrap(); + println!("Global DB: {:?}\n", global_db.read().unwrap()); +}