diff --git a/Cargo.lock b/Cargo.lock index 5cad67c85dc..d8124ac1734 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -65,9 +65,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy" -version = "0.11.1" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d2cc5aeb8dfa1e451a49fac87bc4b86c5de40ebea153ed88e83eb92b8151e74" +checksum = "3a0be470ab41e3aaed6c54dbb2b6224d3048de467d8009cf9d5d32a8b8957ef7" dependencies = [ "alloy-consensus", "alloy-contract", @@ -76,6 +76,7 @@ dependencies = [ "alloy-genesis", "alloy-network", "alloy-provider", + "alloy-pubsub", "alloy-rpc-client", "alloy-rpc-types", "alloy-serde", @@ -83,13 +84,15 @@ dependencies = [ "alloy-signer-local", "alloy-transport", "alloy-transport-http", + "alloy-transport-ipc", + "alloy-transport-ws", ] [[package]] name = "alloy-chains" -version = "0.1.69" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28e2652684758b0d9b389d248b209ed9fd9989ef489a550265fe4bb8454fe7eb" +checksum = "7734aecfc58a597dde036e4c5cace2ae43e2f8bf3d406b022a1ef34da178dd49" dependencies = [ "alloy-primitives", "num_enum", @@ -98,9 +101,9 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "0.11.1" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69e32ef5c74bbeb1733c37f4ac7f866f8c8af208b7b4265e21af609dcac5bd5e" +checksum = "3a4fbb5e716faa10fc4e7a122307afcf55bae7272fc69286ee3eee881f757c66" dependencies = [ "alloy-eips", "alloy-primitives", @@ -109,15 +112,22 @@ dependencies = [ "alloy-trie", "auto_impl", "c-kzg", - "derive_more 1.0.0", + "derive_more 2.0.1", + "either", + "k256", + "once_cell", + "rand 0.8.5", + "secp256k1 0.30.0", "serde", + "serde_with 3.12.0", + "thiserror 2.0.12", ] [[package]] name = "alloy-consensus-any" -version = "0.11.1" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa13b7b1e1e3fedc42f0728103bfa3b4d566d3d42b606db449504d88dbdbdcf" +checksum = "42c04d03d9ee6b6768cad687df5a360fc58714f39a37c971b907a8965717636d" dependencies = [ "alloy-consensus", "alloy-eips", @@ -129,16 +139,18 @@ dependencies = [ [[package]] name = "alloy-contract" -version = "0.11.1" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee6180fb232becdea70fad57c63b6967f01f74ab9595671b870f504116dd29de" +checksum = "e0ff39ab8bf0d23caa41ec1898d80ad1bcb037c94a048141ac4a961980164e65" dependencies = [ + "alloy-consensus", "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", @@ -149,9 +161,9 @@ dependencies = [ [[package]] name = "alloy-core" -version = "0.8.25" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d8bcce99ad10fe02640cfaec1c6bc809b837c783c1d52906aa5af66e2a196f6" +checksum = "24b2817489e4391d8c0bdf043c842164855e3d697de7a8e9edf24aa30b153ac5" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -162,9 +174,9 @@ dependencies = [ [[package]] name = "alloy-dyn-abi" -version = "0.8.25" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb8e762aefd39a397ff485bc86df673465c4ad3ec8819cc60833a8a3ba5cdc87" +checksum = "4f90b63261b7744642f6075ed17db6de118eecbe9516ea6c6ffd444b80180b75" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -179,21 +191,22 @@ dependencies = [ [[package]] name = "alloy-eip2124" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "675264c957689f0fd75f5993a73123c2cc3b5c235a38f5b9037fe6c826bfb2c0" +checksum = "741bdd7499908b3aa0b159bba11e71c8cddd009a2c2eb7a06e825f1ec87900a5" dependencies = [ "alloy-primitives", "alloy-rlp", "crc", + "serde", "thiserror 2.0.12", ] [[package]] name = "alloy-eip2930" -version = "0.1.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0069cf0642457f87a01a014f6dc29d5d893cd4fd8fddf0c3cdfad1bb3ebafc41" +checksum = "7b82752a889170df67bbb36d42ca63c531eb16274f0d7299ae2a680facba17bd" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -202,21 +215,22 @@ dependencies = [ [[package]] name = "alloy-eip7702" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b15b13d38b366d01e818fe8e710d4d702ef7499eacd44926a06171dd9585d0c" +checksum = "804cefe429015b4244966c006d25bda5545fa9db5990e9c9079faf255052f50a" dependencies = [ "alloy-primitives", "alloy-rlp", + "k256", "serde", "thiserror 2.0.12", ] [[package]] name = "alloy-eips" -version = "0.11.1" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5591581ca2ab0b3e7226a4047f9a1bfcf431da1d0cce3752fda609fea3c27e37" +checksum = "22c3699f23cea35d97a0a911b42c3cfd54dd95233df09307f5ebe52e0a74ad6e" dependencies = [ "alloy-eip2124", "alloy-eip2930", @@ -226,17 +240,17 @@ dependencies = [ "alloy-serde", "auto_impl", "c-kzg", - "derive_more 1.0.0", - "once_cell", + "derive_more 2.0.1", + "either", "serde", "sha2", ] [[package]] name = "alloy-genesis" -version = "0.11.1" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cded3a2d4bd7173f696458c5d4c98c18a628dfcc9f194385e80a486e412e2e0" +checksum = "24c5a4e3f60f0b53b5dbd13904694e775a23ff98a43d6dd640b753b72669b993" dependencies = [ "alloy-eips", "alloy-primitives", @@ -247,9 +261,9 @@ dependencies = [ [[package]] name = "alloy-json-abi" -version = "0.8.25" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe6beff64ad0aa6ad1019a3db26fef565aefeb011736150ab73ed3366c3cfd1b" +checksum = "0068ae277f5ee3153a95eaea8ff10e188ed8ccde9b7f9926305415a2c0ab2442" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -259,9 +273,9 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "0.11.1" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "762414662d793d7aaa36ee3af6928b6be23227df1681ce9c039f6f11daadef64" +checksum = "ea71d308c1f3e42172c7fe9dccc6e63d97fa0cfd21d21f73c04d5e2640826f64" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -273,9 +287,9 @@ dependencies = [ [[package]] name = "alloy-network" -version = "0.11.1" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8be03f2ebc00cf88bd06d3c6caf387dceaa9c7e6b268216779fa68a9bf8ab4e6" +checksum = "ddd432f53775e6ef85cfc8a3c90f174786bdc15d5cac379dcea01bd0e6f93edc" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -290,6 +304,7 @@ dependencies = [ "alloy-sol-types", "async-trait", "auto_impl", + "derive_more 2.0.1", "futures-utils-wasm", "serde", "serde_json", @@ -298,9 +313,9 @@ dependencies = [ [[package]] name = "alloy-network-primitives" -version = "0.11.1" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a00ce618ae2f78369918be0c20f620336381502c83b6ed62c2f7b2db27698b0" +checksum = "0b2dea138d01f0e9739dee905a9e40a0f2347dd217360d813b6b7967ee8c0a8e" dependencies = [ "alloy-consensus", "alloy-eips", @@ -311,9 +326,9 @@ dependencies = [ [[package]] name = "alloy-primitives" -version = "0.8.25" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c77490fe91a0ce933a1f219029521f20fc28c2c0ca95d53fa4da9c00b8d9d4e" +checksum = "6a12fe11d0b8118e551c29e1a67ccb6d01cc07ef08086df30f07487146de6fa1" dependencies = [ "alloy-rlp", "bytes", @@ -328,7 +343,7 @@ dependencies = [ "keccak-asm", "paste", "proptest", - "rand 0.8.5", + "rand 0.9.1", "ruint", "rustc-hash 2.1.1", "serde", @@ -338,9 +353,9 @@ dependencies = [ [[package]] name = "alloy-provider" -version = "0.11.1" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbe0a2acff0c4bd1669c71251ce10fc455cbffa1b4d0a817d5ea4ba7e5bb3db7" +checksum = "0c1e1dc8a0a368a62455b526a037557b1e57c7fda652748e5e2c66db517906ed" dependencies = [ "alloy-chains", "alloy-consensus", @@ -349,15 +364,24 @@ dependencies = [ "alloy-network", "alloy-network-primitives", "alloy-primitives", + "alloy-pubsub", "alloy-rpc-client", + "alloy-rpc-types-anvil", + "alloy-rpc-types-debug", "alloy-rpc-types-eth", + "alloy-rpc-types-trace", + "alloy-rpc-types-txpool", + "alloy-signer", "alloy-sol-types", "alloy-transport", "alloy-transport-http", + "alloy-transport-ipc", + "alloy-transport-ws", "async-stream", "async-trait", "auto_impl", "dashmap", + "either", "futures 0.3.30", "futures-utils-wasm", "lru", @@ -373,6 +397,27 @@ dependencies = [ "wasmtimer", ] +[[package]] +name = "alloy-pubsub" +version = "0.15.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7622a767f5db7bb0165895e821a643c9903e6422f9986663b754cce6b9e972d7" +dependencies = [ + "alloy-json-rpc", + "alloy-primitives", + "alloy-transport", + "bimap", + "futures 0.3.30", + "parking_lot", + "serde", + "serde_json", + "tokio", + "tokio-stream", + "tower 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tracing", + "wasmtimer", +] + [[package]] name = "alloy-rlp" version = "0.3.11" @@ -397,14 +442,18 @@ dependencies = [ [[package]] name = "alloy-rpc-client" -version = "0.11.1" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b37cc3c7883dc41be1b01460127ad7930466d0a4bb6ba15a02ee34d2745e2d7c" +checksum = "97da6111d0232cc890aa4d334b5e427aa25491cf34adbe9806fa440a6f32650f" dependencies = [ "alloy-json-rpc", "alloy-primitives", + "alloy-pubsub", "alloy-transport", "alloy-transport-http", + "alloy-transport-ipc", + "alloy-transport-ws", + "async-stream", "futures 0.3.30", "pin-project", "reqwest", @@ -414,15 +463,32 @@ dependencies = [ "tokio-stream", "tower 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "tracing", + "tracing-futures", "url", "wasmtimer", ] [[package]] name = "alloy-rpc-types" -version = "0.11.1" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835291d2f5423e02f755872b329c0bae97743936f596749f6fb6f0cf4de1324e" +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.15.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f18e68a3882f372e045ddc89eb455469347767d17878ca492cfbac81e71a111" +checksum = "329177b79cc1db6a82477cb470fe5fa1a07d06a13425392edc254c664536caed" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -432,20 +498,48 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" -version = "0.11.1" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "318ae46dd12456df42527c3b94c1ae9001e1ceb707f7afe2c7807ac4e49ebad9" +checksum = "43c8536c15442b001046dcaff415067600231261e7c53767e74e69d15f72f651" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", "alloy-serde", ] +[[package]] +name = "alloy-rpc-types-debug" +version = "0.15.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2838ef592345b46b4aeffbb8dd4c857a84d4d7e6f14a8edef34197d74bc1d39" +dependencies = [ + "alloy-primitives", + "serde", +] + +[[package]] +name = "alloy-rpc-types-engine" +version = "0.15.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e228902dd802e9af385ca9d511f1556b647bf651d65574ae5e198447db96eaf" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "derive_more 2.0.1", + "jsonwebtoken", + "rand 0.8.5", + "serde", + "strum 0.27.1", +] + [[package]] name = "alloy-rpc-types-eth" -version = "0.11.1" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b4dbee4d82f8a22dde18c28257bed759afeae7ba73da4a1479a039fd1445d04" +checksum = "da690eafe37fe096037f8820b6bf2382f3ea68120d06a4253e4ac725a7e652dd" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -461,11 +555,37 @@ dependencies = [ "thiserror 2.0.12", ] +[[package]] +name = "alloy-rpc-types-trace" +version = "0.15.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bc246ec9df92018d7be5bb3da2be87a2b9e35d076afa7c0f4dbeaefd2ba9ac0" +dependencies = [ + "alloy-primitives", + "alloy-rpc-types-eth", + "alloy-serde", + "serde", + "serde_json", + "thiserror 2.0.12", +] + +[[package]] +name = "alloy-rpc-types-txpool" +version = "0.15.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f66c7991d20ac2dfbf2fe1aeb303e20abbdb1ee85b3eaf0cf8512deef2f2e5f7" +dependencies = [ + "alloy-primitives", + "alloy-rpc-types-eth", + "alloy-serde", + "serde", +] + [[package]] name = "alloy-serde" -version = "0.11.1" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8732058f5ca28c1d53d241e8504620b997ef670315d7c8afab856b3e3b80d945" +checksum = "261be2da2ef0bbbf80eed153c995822725cbef193e49eb251e2bf72cac29dbaf" dependencies = [ "alloy-primitives", "serde", @@ -474,9 +594,9 @@ dependencies = [ [[package]] name = "alloy-signer" -version = "0.11.1" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f96b3526fdd779a4bd0f37319cfb4172db52a7ac24cdbb8804b72091c18e1701" +checksum = "6fdf929ce72d18aa40974ecaa2cd77c5062a0baa105fdb95e6aa5609642d7210" dependencies = [ "alloy-primitives", "async-trait", @@ -489,9 +609,9 @@ dependencies = [ [[package]] name = "alloy-signer-local" -version = "0.11.1" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe8f78cd6b7501c7e813a1eb4a087b72d23af51f5bb66d4e948dc840bdd207d8" +checksum = "94910e0d75f086d4ed15d6a884170f648c28d06e4a8516156ea90204c0560595" dependencies = [ "alloy-consensus", "alloy-network", @@ -505,9 +625,9 @@ dependencies = [ [[package]] name = "alloy-sol-macro" -version = "0.8.25" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10ae8e9a91d328ae954c22542415303919aabe976fe7a92eb06db1b68fd59f2" +checksum = "5d3ef8e0d622453d969ba3cded54cf6800efdc85cb929fe22c5bdf8335666757" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", @@ -519,9 +639,9 @@ dependencies = [ [[package]] name = "alloy-sol-macro-expander" -version = "0.8.25" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83ad5da86c127751bc607c174d6c9fe9b85ef0889a9ca0c641735d77d4f98f26" +checksum = "f0e84bd0693c69a8fbe3ec0008465e029c6293494df7cb07580bf4a33eff52e1" dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", @@ -538,9 +658,9 @@ dependencies = [ [[package]] name = "alloy-sol-macro-input" -version = "0.8.25" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3d30f0d3f9ba3b7686f3ff1de9ee312647aac705604417a2f40c604f409a9e" +checksum = "f3de663412dadf9b64f4f92f507f78deebcc92339d12cf15f88ded65d41c7935" dependencies = [ "alloy-json-abi", "const-hex", @@ -556,9 +676,9 @@ dependencies = [ [[package]] name = "alloy-sol-type-parser" -version = "0.8.25" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d162f8524adfdfb0e4bd0505c734c985f3e2474eb022af32eef0d52a4f3935c" +checksum = "251273c5aa1abb590852f795c938730fa641832fc8fa77b5478ed1bf11b6097e" dependencies = [ "serde", "winnow 0.7.9", @@ -566,9 +686,9 @@ dependencies = [ [[package]] name = "alloy-sol-types" -version = "0.8.25" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d43d5e60466a440230c07761aa67671d4719d46f43be8ea6e7ed334d8db4a9ab" +checksum = "5460a975434ae594fe2b91586253c1beb404353b78f0a55bf124abcd79557b15" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -579,13 +699,17 @@ dependencies = [ [[package]] name = "alloy-transport" -version = "0.11.1" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a8d762eadce3e9b65eac09879430c6f4fce3736cac3cac123f9b1bf435ddd13" +checksum = "4b4f3654d5195c0c3f502bfd6ed299ea9eb5cb275d7a88d04ce0d189bca416b2" dependencies = [ "alloy-json-rpc", + "alloy-primitives", "base64 0.22.1", + "derive_more 2.0.1", + "futures 0.3.30", "futures-utils-wasm", + "parking_lot", "serde", "serde_json", "thiserror 2.0.12", @@ -598,9 +722,9 @@ dependencies = [ [[package]] name = "alloy-transport-http" -version = "0.11.1" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20819c4cb978fb39ce6ac31991ba90f386d595f922f42ef888b4a18be190713e" +checksum = "70a9372fba202370973748d76c2891344cbacfb012d44a8ed62135ba53d4408e" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -611,16 +735,54 @@ dependencies = [ "url", ] +[[package]] +name = "alloy-transport-ipc" +version = "0.15.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8722fa30fc71c11f7626b35712ffba266497f304ede4fe09fc2a3c130c1eee5" +dependencies = [ + "alloy-json-rpc", + "alloy-pubsub", + "alloy-transport", + "bytes", + "futures 0.3.30", + "interprocess", + "pin-project", + "serde", + "serde_json", + "tokio", + "tokio-util 0.7.11", + "tracing", +] + +[[package]] +name = "alloy-transport-ws" +version = "0.15.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fadcf1dc3105a51ac24070fed1a696334c7f77f639501e580c243490d0ba3d18" +dependencies = [ + "alloy-pubsub", + "alloy-transport", + "futures 0.3.30", + "http 1.1.0", + "rustls", + "serde_json", + "tokio", + "tokio-tungstenite", + "tracing", + "ws_stream_wasm", +] + [[package]] name = "alloy-trie" -version = "0.7.9" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d95a94854e420f07e962f7807485856cde359ab99ab6413883e15235ad996e8b" +checksum = "983d99aa81f586cef9dae38443245e585840fcf0fc58b09aee0b1f27aed1d500" dependencies = [ "alloy-primitives", "alloy-rlp", "arrayvec 0.7.4", - "derive_more 1.0.0", + "derive_more 2.0.1", "nybbles", "serde", "smallvec", @@ -1012,6 +1174,17 @@ dependencies = [ "syn 2.0.101", ] +[[package]] +name = "async_io_stream" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c" +dependencies = [ + "futures 0.3.30", + "pharos", + "rustc_version 0.4.0", +] + [[package]] name = "atomic-waker" version = "1.1.2" @@ -1237,6 +1410,12 @@ dependencies = [ "num-traits", ] +[[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" @@ -1261,6 +1440,22 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" +[[package]] +name = "bitcoin-io" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b47c4ab7a93edb0c7198c5535ed9b52b63095f4e9b45279c6736cec4b856baf" + +[[package]] +name = "bitcoin_hashes" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16" +dependencies = [ + "bitcoin-io", + "hex-conservative", +] + [[package]] name = "bitflags" version = "1.3.2" @@ -1397,9 +1592,9 @@ dependencies = [ [[package]] name = "c-kzg" -version = "1.0.3" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0307f72feab3300336fb803a57134159f6e20139af1357f36c54cb90d8e8928" +checksum = "7318cfa722931cb5fe0838b98d3ce5621e75f6a6408abc21721d80de9223f2e4" dependencies = [ "blst", "cc", @@ -2032,33 +2227,13 @@ dependencies = [ "syn 2.0.101", ] -[[package]] -name = "derive_more" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" -dependencies = [ - "derive_more-impl 1.0.0", -] - [[package]] name = "derive_more" version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" dependencies = [ - "derive_more-impl 2.0.1", -] - -[[package]] -name = "derive_more-impl" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", + "derive_more-impl", ] [[package]] @@ -2244,6 +2419,12 @@ dependencies = [ "syn 2.0.101", ] +[[package]] +name = "doctest-file" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aac81fa3e28d21450aa4d2ac065992ba96a1d7303efbce51a95f4fd175b67562" + [[package]] name = "dsl_auto_type" version = "0.1.1" @@ -2274,15 +2455,19 @@ dependencies = [ "digest 0.10.7", "elliptic-curve", "rfc6979", + "serdect", "signature", "spki", ] [[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" +dependencies = [ + "serde", +] [[package]] name = "elliptic-curve" @@ -2299,6 +2484,7 @@ dependencies = [ "pkcs8", "rand_core 0.6.4", "sec1", + "serdect", "subtle", "zeroize", ] @@ -2722,8 +2908,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if 1.0.0", + "js-sys", "libc", "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", ] [[package]] @@ -2910,6 +3098,8 @@ dependencies = [ name = "graph-chain-ethereum" version = "0.36.0" dependencies = [ + "alloy", + "alloy-rpc-types", "anyhow", "base64 0.22.1", "envconfig", @@ -3164,7 +3354,7 @@ dependencies = [ "graph-runtime-wasm", "graph-server-index-node", "graph-store-postgres", - "secp256k1", + "secp256k1 0.21.3", "serde", "serde_yaml", "slog", @@ -3252,7 +3442,7 @@ dependencies = [ "lazy_static", "serde", "serde_json", - "serde_with", + "serde_with 2.3.3", ] [[package]] @@ -3415,6 +3605,15 @@ dependencies = [ "serde", ] +[[package]] +name = "hex-conservative" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5313b072ce3c597065a808dbf612c4c8e8590bdbf8b579508bf7a762c5eae6cd" +dependencies = [ + "arrayvec 0.7.4", +] + [[package]] name = "hex-literal" version = "0.3.4" @@ -3887,6 +4086,21 @@ dependencies = [ "serde", ] +[[package]] +name = "interprocess" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d941b405bd2322993887859a8ee6ac9134945a24ec5ec763a8a962fc64dfec2d" +dependencies = [ + "doctest-file", + "futures-core", + "libc", + "recvmsg", + "tokio", + "widestring", + "windows-sys 0.52.0", +] + [[package]] name = "ipnet" version = "2.9.0" @@ -4083,6 +4297,21 @@ dependencies = [ "tracing", ] +[[package]] +name = "jsonwebtoken" +version = "9.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a87cc7a48537badeae96744432de36f4be2b4a34a05a5ef32e9dd8a1c169dde" +dependencies = [ + "base64 0.22.1", + "js-sys", + "pem", + "ring", + "serde", + "serde_json", + "simple_asn1", +] + [[package]] name = "k256" version = "0.13.4" @@ -4093,6 +4322,7 @@ dependencies = [ "ecdsa", "elliptic-curve", "once_cell", + "serdect", "sha2", ] @@ -4543,9 +4773,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.19.0" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "opaque-debug" @@ -4673,6 +4903,16 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +[[package]] +name = "pem" +version = "3.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38af38e8470ac9dee3ce1bae1af9c1671fffc44ddfd8bd1d0a3445bf349a8ef3" +dependencies = [ + "base64 0.22.1", + "serde", +] + [[package]] name = "percent-encoding" version = "2.3.1" @@ -4746,6 +4986,16 @@ dependencies = [ "serde", ] +[[package]] +name = "pharos" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414" +dependencies = [ + "futures 0.3.30", + "rustc_version 0.4.0", +] + [[package]] name = "phf" version = "0.11.2" @@ -5243,6 +5493,7 @@ checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" dependencies = [ "rand_chacha 0.9.0", "rand_core 0.9.3", + "serde", ] [[package]] @@ -5281,6 +5532,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ "getrandom 0.3.1", + "serde", ] [[package]] @@ -5312,6 +5564,12 @@ dependencies = [ "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.1.57" @@ -5698,6 +5956,7 @@ dependencies = [ "der", "generic-array", "pkcs8", + "serdect", "subtle", "zeroize", ] @@ -5708,7 +5967,19 @@ version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c42e6f1735c5f00f51e43e28d6634141f2bcad10931b2609ddd74a86d751260" dependencies = [ - "secp256k1-sys", + "secp256k1-sys 0.4.2", +] + +[[package]] +name = "secp256k1" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" +dependencies = [ + "bitcoin_hashes", + "rand 0.8.5", + "secp256k1-sys 0.10.1", + "serde", ] [[package]] @@ -5720,6 +5991,15 @@ dependencies = [ "cc", ] +[[package]] +name = "secp256k1-sys" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" +dependencies = [ + "cc", +] + [[package]] name = "security-framework" version = "2.11.0" @@ -5783,6 +6063,12 @@ 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.204" @@ -5876,7 +6162,25 @@ dependencies = [ "indexmap 1.9.3", "serde", "serde_json", - "serde_with_macros", + "serde_with_macros 2.3.3", + "time", +] + +[[package]] +name = "serde_with" +version = "3.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6b6f7f2fcb69f747921f79f3926bd1e203fce4fef62c268dd3abfb6d86029aa" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.9.0", + "serde", + "serde_derive", + "serde_json", + "serde_with_macros 3.12.0", "time", ] @@ -5892,6 +6196,18 @@ dependencies = [ "syn 2.0.101", ] +[[package]] +name = "serde_with_macros" +version = "3.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d00caa5193a3c8362ac2b73be6b9e768aa5a4b2f721d8f4b339600c3cb51f8e" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.101", +] + [[package]] name = "serde_yaml" version = "0.9.34+deprecated" @@ -5905,6 +6221,16 @@ dependencies = [ "unsafe-libyaml", ] +[[package]] +name = "serdect" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" +dependencies = [ + "base16ct", + "serde", +] + [[package]] name = "sha-1" version = "0.9.8" @@ -5994,6 +6320,18 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "simple_asn1" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "thiserror 2.0.12", + "time", +] + [[package]] name = "siphasher" version = "0.3.11" @@ -6384,9 +6722,9 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "0.8.25" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4560533fbd6914b94a8fb5cc803ed6801c3455668db3b810702c57612bac9412" +checksum = "3d0f0d4760f4c2a0823063b2c70e97aa2ad185f57be195172ccc0e23c4b787c4" dependencies = [ "paste", "proc-macro2", @@ -6784,8 +7122,12 @@ checksum = "7a9daff607c6d2bf6c16fd681ccb7eecc83e4e2cdc1ca067ffaadfca5de7f084" dependencies = [ "futures-util", "log", + "rustls", + "rustls-pki-types", "tokio", + "tokio-rustls", "tungstenite", + "webpki-roots 0.26.11", ] [[package]] @@ -7063,6 +7405,8 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" dependencies = [ + "futures 0.3.30", + "futures-task", "pin-project", "tracing", ] @@ -7092,6 +7436,8 @@ dependencies = [ "httparse", "log", "rand 0.9.1", + "rustls", + "rustls-pki-types", "sha1", "thiserror 2.0.12", "utf-8", @@ -7829,7 +8175,7 @@ dependencies = [ "pin-project", "reqwest", "rlp", - "secp256k1", + "secp256k1 0.21.3", "serde", "serde_json", "soketto", @@ -7853,6 +8199,24 @@ dependencies = [ "url", ] +[[package]] +name = "webpki-roots" +version = "0.26.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" +dependencies = [ + "webpki-roots 1.0.0", +] + +[[package]] +name = "webpki-roots" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2853738d1cc4f2da3a225c18ec6c3721abb31961096e9dbf5ab35fa88b19cfdb" +dependencies = [ + "rustls-pki-types", +] + [[package]] name = "which" version = "4.4.2" @@ -7876,6 +8240,12 @@ dependencies = [ "web-sys", ] +[[package]] +name = "widestring" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd7cf3379ca1aac9eea11fba24fd7e315d621f8dfe35c8d7d2be8b793726e07d" + [[package]] name = "winapi" version = "0.3.9" @@ -8252,6 +8622,25 @@ 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 0.3.30", + "js-sys", + "log", + "pharos", + "rustc_version 0.4.0", + "send_wrapper", + "thiserror 1.0.61", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + [[package]] name = "wyz" version = "0.5.1" diff --git a/Cargo.toml b/Cargo.toml index cbc70299e39..18843d7ac35 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -39,7 +39,8 @@ repository = "https://github.com/graphprotocol/graph-node" license = "MIT OR Apache-2.0" [workspace.dependencies] -alloy = { version = "0.11.1", features = ["dyn-abi", "json-abi"] } +alloy = { version = "0.15.10", features = ["full"] } +alloy-rpc-types = "0.15.10" anyhow = "1.0" async-graphql = { version = "7.0.15", features = ["chrono"] } async-graphql-axum = "7.0.15" diff --git a/chain/ethereum/Cargo.toml b/chain/ethereum/Cargo.toml index c72772aaa95..8786914563b 100644 --- a/chain/ethereum/Cargo.toml +++ b/chain/ethereum/Cargo.toml @@ -4,6 +4,8 @@ version.workspace = true edition.workspace = true [dependencies] +alloy.workspace = true +alloy-rpc-types.workspace = true envconfig = "0.11.0" jsonrpc-core = "18.0.0" graph = { path = "../../graph" } diff --git a/chain/ethereum/src/ethereum_adapter.rs b/chain/ethereum/src/ethereum_adapter.rs index c2edc067e2e..1ff98cdbb45 100644 --- a/chain/ethereum/src/ethereum_adapter.rs +++ b/chain/ethereum/src/ethereum_adapter.rs @@ -1,3 +1,5 @@ +use alloy::primitives::{B256, B64}; +use alloy::providers::{Provider, ProviderBuilder}; use futures03::{future::BoxFuture, stream::FuturesUnordered}; use graph::abi; use graph::abi::DynSolValueExt; @@ -20,7 +22,7 @@ use graph::futures03::{ self, compat::Future01CompatExt, FutureExt, StreamExt, TryFutureExt, TryStreamExt, }; use graph::prelude::tokio::try_join; -use graph::prelude::web3::types::U256; +use graph::prelude::web3::types::{H2048, H64, U256}; use graph::slog::o; use graph::tokio::sync::RwLock; use graph::tokio::time::timeout; @@ -49,6 +51,7 @@ use graph::{ use itertools::Itertools; use std::collections::{BTreeMap, BTreeSet, HashMap, HashSet}; use std::convert::TryFrom; +use std::fmt::Formatter; use std::iter::FromIterator; use std::pin::Pin; use std::sync::Arc; @@ -72,23 +75,32 @@ use crate::{ ENV_VARS, }; -#[derive(Debug, Clone)] +#[derive(Clone)] pub struct EthereumAdapter { logger: Logger, provider: String, web3: Arc>, + alloy: Arc, metrics: Arc, supports_eip_1898: bool, call_only: bool, supports_block_receipts: Arc>>, } +// TODO: remove this hacky implementation +impl std::fmt::Debug for EthereumAdapter { + fn fmt(&self, f: &mut Formatter) -> std::fmt::Result { + write!(f, "EthereumAdapter") + } +} + impl CheapClone for EthereumAdapter { fn cheap_clone(&self) -> Self { Self { logger: self.logger.clone(), provider: self.provider.clone(), web3: self.web3.cheap_clone(), + alloy: self.alloy.clone(), metrics: self.metrics.cheap_clone(), supports_eip_1898: self.supports_eip_1898, call_only: self.call_only, @@ -110,7 +122,18 @@ impl EthereumAdapter { supports_eip_1898: bool, call_only: bool, ) -> Self { + let rpc_url = match &transport { + Transport::RPC { + client: _, + metrics: _, + provider: _, + rpc_url, + } => rpc_url.clone(), + Transport::IPC(_ipc) => todo!(), + Transport::WS(_web_socket) => todo!(), + }; let web3 = Arc::new(Web3::new(transport)); + let alloy = Arc::new(ProviderBuilder::new().connect(&rpc_url).await.unwrap()); // Use the client version to check if it is ganache. For compatibility with unit tests, be // are lenient with errors, defaulting to false. @@ -125,6 +148,7 @@ impl EthereumAdapter { logger, provider, web3, + alloy, metrics: provider_metrics, supports_eip_1898: supports_eip_1898 && !is_ganache, call_only, @@ -757,6 +781,49 @@ impl EthereumAdapter { Ok(req.response(result, call::Source::Rpc)) } + + async fn load_blocks_rpc_alloy1( + alloy: Arc, + logger: Logger, + ids: H256, + ) -> Result, anyhow::Error> { + let hash: alloy_rpc_types::BlockId = + alloy_rpc_types::BlockId::hash(B256::new(*ids.as_fixed_bytes())); + let block = alloy.get_block(hash).await.unwrap(); + if let Some(block) = block { + info!(logger, "load_blocks_rpc_blocking BLOCK: {:?}", block); + Ok(convert_block_alloy2web3(&logger, block)) + } else { + // Err(anyhow!("TODO")) + Err(anyhow!("Ethereum node did not find block {:?}", hash)) + } + } + + fn load_blocks_rpc_alloy( + &self, + logger: Logger, + ids: Vec, + ) -> impl Stream, Error = Error> + Send { + info!(logger, "???? load_blocks_rpc"); + let alloy = self.alloy.clone(); + let logger = logger.clone(); + + stream::iter_ok::<_, Error>(ids.into_iter().map(move |hash| { + let alloy = alloy.clone(); + let logger = logger.clone(); + + retry(format!("load block {}", hash), &logger) + .redact_log_urls(true) + .limit(ENV_VARS.request_retries) + .timeout_secs(ENV_VARS.json_rpc_timeout.as_secs()) + .run(move || Self::load_blocks_rpc_alloy1(alloy.clone(), logger.clone(), hash)) + .boxed() + .compat() + .from_err() + })) + .buffered(ENV_VARS.block_batch_size) + } + /// Request blocks by hash through JSON-RPC. fn load_blocks_rpc( &self, @@ -1732,10 +1799,18 @@ impl EthereumAdapterTrait for EthereumAdapter { // Return a stream that lazily loads batches of blocks. debug!(logger, "Requesting {} block(s)", missing_blocks.len()); let new_blocks = self - .load_blocks_rpc(logger.clone(), missing_blocks) + .load_blocks_rpc(logger.clone(), missing_blocks.clone()) + .collect() + .compat() + .await?; + let new_blocks2 = self + .load_blocks_rpc_alloy(logger.clone(), missing_blocks.clone()) .collect() .compat() .await?; + let str = format!("{:?}", new_blocks); + let str2 = format!("{:?}", new_blocks2); + assert_eq!(str, str2); let upsert_blocks: Vec<_> = new_blocks .iter() .map(|block| BlockFinality::Final(block.clone())) @@ -2660,6 +2735,107 @@ async fn get_transaction_receipts_for_transaction_hashes( Ok(receipts_by_hash) } +fn b256_to_h256(in_data: B256) -> H256 { + H256(in_data.as_slice()[0..32].try_into().unwrap()) +} +fn b64_to_h64(in_data: B64) -> H64 { + H64(in_data.as_slice()[0..8].try_into().unwrap()) +} +fn u256_to_u256(in_data: alloy::primitives::U256) -> web3::types::U256 { + let u1 = u64::from_le_bytes(in_data.as_le_slice()[0..8].try_into().unwrap_or_default()); + let u2 = u64::from_le_bytes(in_data.as_le_slice()[9..16].try_into().unwrap_or_default()); + let u3 = u64::from_le_bytes(in_data.as_le_slice()[17..24].try_into().unwrap_or_default()); + let u4 = u64::from_le_bytes(in_data.as_le_slice()[25..32].try_into().unwrap_or_default()); + U256([u1, u2, u3, u4]) +} +fn u64_to_u256(in_data: u64) -> web3::types::U256 { + web3::types::U256([in_data, 0, 0, 0]) +} + +fn convert_block_alloy2web3( + logger: &Logger, + block: alloy_rpc_types::Block, +) -> Arc { + let hash = Some(b256_to_h256(block.header.hash)); + info!(logger, "hash: {:?}", hash); + let parent_hash = b256_to_h256(block.header.inner.parent_hash); + info!(logger, "parent_hash: {:?}", parent_hash); + let uncles_hash = b256_to_h256(block.header.inner.ommers_hash); + info!(logger, "uncles_hash: {:?}", uncles_hash); + let author = H160( + block + .header + .inner + .beneficiary + .as_slice() + .try_into() + .unwrap(), + ); + info!(logger, "author: {:?}", author); + let state_root = b256_to_h256(block.header.state_root); + info!(logger, "state_root: {:?}", state_root); + let transactions_root = b256_to_h256(block.header.transactions_root); + info!(logger, "transactions_root: {:?}", transactions_root); + let receipts_root = b256_to_h256(block.header.receipts_root); + info!(logger, "receipts_root: {:?}", receipts_root); + let number = Some(web3::types::U64([block.header.number; 1])); + info!(logger, "number: {:?}", number); + let gas_used = u64_to_u256(block.header.gas_used); + info!(logger, "gas_used: {:?}", gas_used); + let gas_limit = u64_to_u256(block.header.gas_limit); + info!(logger, "gas_limit: {:?}", gas_limit); + let base_fee_per_gas = block.header.base_fee_per_gas.map(|n| u64_to_u256(n)); + info!(logger, "base_fee_per_gas: {:?}", base_fee_per_gas); + let extra_data = web3::types::Bytes(block.header.extra_data.to_vec()); + info!(logger, "extra_data: {:?}", extra_data); + let logs_bloom = Some(H2048( + block.header.inner.logs_bloom.as_slice()[0..256] + .try_into() + .unwrap(), + )); + info!(logger, "logs_bloom: {:?}", logs_bloom); + let timestamp = u64_to_u256(block.header.inner.timestamp); + info!(logger, "timestamp: {:?}", timestamp); + let difficulty = u256_to_u256(block.header.inner.difficulty); + info!(logger, "difficulty: {:?}", difficulty); + let total_difficulty = block.header.total_difficulty.map(|n| u256_to_u256(n)); + info!(logger, "total_difficulty: {:?}", total_difficulty); + let uncles = block.uncles.into_iter().map(|h| b256_to_h256(h)).collect(); + info!(logger, "uncles: {:?}", uncles); + let size = block.header.size.map(|n| u256_to_u256(n)); + info!(logger, "size: {:?}", size); + let mix_hash = Some(b256_to_h256(block.header.mix_hash)); + info!(logger, "mix_hash: {:?}", mix_hash); + let nonce = Some(b64_to_h64(block.header.nonce)); + info!(logger, "nonce: {:?}", nonce); + let light_block = LightEthereumBlock { + hash, + parent_hash, + uncles_hash, + author, + state_root, + transactions_root, + receipts_root, + number, + gas_used, + gas_limit, + base_fee_per_gas, + extra_data, + logs_bloom, + timestamp, + difficulty, + total_difficulty, + seal_fields: vec![], // TODO: fix this + uncles, + transactions: vec![], // TODO: fix this + size, + mix_hash, + nonce, + }; + info!(logger, "light_block: {:?}", light_block); + Arc::new(light_block) +} + #[cfg(test)] mod tests { diff --git a/chain/ethereum/src/transport.rs b/chain/ethereum/src/transport.rs index a90a6b9720b..b19dd362e33 100644 --- a/chain/ethereum/src/transport.rs +++ b/chain/ethereum/src/transport.rs @@ -17,6 +17,7 @@ pub enum Transport { client: http::Http, metrics: Arc, provider: ProviderName, + rpc_url: String, }, IPC(ipc::Ipc), WS(ws::WebSocket), @@ -56,10 +57,13 @@ impl Transport { .build() .unwrap(); + let rpc_url = rpc.to_string(); + Transport::RPC { client: http::Http::with_client(client, rpc), metrics, provider: provider.as_ref().into(), + rpc_url, } } } @@ -73,6 +77,7 @@ impl web3::Transport for Transport { client, metrics: _, provider: _, + rpc_url: _, } => client.prepare(method, params), Transport::IPC(ipc) => ipc.prepare(method, params), Transport::WS(ws) => ws.prepare(method, params), @@ -85,6 +90,7 @@ impl web3::Transport for Transport { client, metrics, provider, + rpc_url: _, } => { let metrics = metrics.cheap_clone(); let client = client.clone(); @@ -132,6 +138,7 @@ impl web3::BatchTransport for Transport { client, metrics: _, provider: _, + rpc_url: _, } => Box::new(client.send_batch(requests)), Transport::IPC(ipc) => Box::new(ipc.send_batch(requests)), Transport::WS(ws) => Box::new(ws.send_batch(requests)), diff --git a/graph/src/abi/event_ext.rs b/graph/src/abi/event_ext.rs index f8f8eff044e..832930ab7ed 100644 --- a/graph/src/abi/event_ext.rs +++ b/graph/src/abi/event_ext.rs @@ -15,7 +15,7 @@ pub trait EventExt { impl EventExt for Event { fn decode_log(&self, log: &Log) -> Result> { let log_data = log_to_log_data(log)?; - let decoded_event = alloy::dyn_abi::EventExt::decode_log(self, &log_data, true)?; + let decoded_event = alloy::dyn_abi::EventExt::decode_log(self, &log_data)?; if self.inputs.len() != decoded_event.indexed.len() + decoded_event.body.len() { return Err(anyhow!( diff --git a/graph/src/abi/function_ext.rs b/graph/src/abi/function_ext.rs index 634ca9a08d6..3264dd10a35 100644 --- a/graph/src/abi/function_ext.rs +++ b/graph/src/abi/function_ext.rs @@ -65,13 +65,13 @@ impl FunctionExt for Function { fn abi_decode_input(&self, data: &[u8]) -> Result> { (self as &dyn alloy::dyn_abi::FunctionExt) - .abi_decode_input(data, true) + .abi_decode_input(data) .map_err(Into::into) } fn abi_decode_output(&self, data: &[u8]) -> Result> { (self as &dyn alloy::dyn_abi::FunctionExt) - .abi_decode_output(data, true) + .abi_decode_output(data) .map_err(Into::into) }