diff --git a/protocol-testing/Cargo.lock b/protocol-testing/Cargo.lock index e664ce5..f7b5340 100644 --- a/protocol-testing/Cargo.lock +++ b/protocol-testing/Cargo.lock @@ -72,18 +72,44 @@ version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea8ebf106e84a1c37f86244df7da0c7587e697b71a0d565cce079449b85ac6f8" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.5.4", "alloy-contract", "alloy-core", - "alloy-eips", - "alloy-genesis", - "alloy-network", - "alloy-provider", - "alloy-rpc-client", - "alloy-rpc-types", - "alloy-serde", - "alloy-transport", - "alloy-transport-http", + "alloy-eips 0.5.4", + "alloy-genesis 0.5.4", + "alloy-network 0.5.4", + "alloy-provider 0.5.4", + "alloy-rpc-client 0.5.4", + "alloy-rpc-types 0.5.4", + "alloy-serde 0.5.4", + "alloy-signer 0.5.4", + "alloy-signer-local 0.5.4", + "alloy-transport 0.5.4", + "alloy-transport-http 0.5.4", +] + +[[package]] +name = "alloy" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbcc41e8a11a4975b18ec6afba2cc48d591fa63336a4c526dacb50479a8d6b35" +dependencies = [ + "alloy-consensus 0.9.2", + "alloy-core", + "alloy-eips 0.9.2", + "alloy-genesis 0.9.2", + "alloy-network 0.9.2", + "alloy-provider 0.9.2", + "alloy-rpc-client 0.9.2", + "alloy-rpc-types 0.9.2", + "alloy-serde 0.9.2", + "alloy-signer 0.9.2", + "alloy-signer-aws", + "alloy-signer-gcp", + "alloy-signer-ledger 0.9.2", + "alloy-signer-local 0.9.2", + "alloy-transport 0.9.2", + "alloy-transport-http 0.9.2", ] [[package]] @@ -104,10 +130,10 @@ version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41ed961a48297c732a5d97ee321aa8bb5009ecadbcb077d8bec90cb54e651629" dependencies = [ - "alloy-eips", + "alloy-eips 0.5.4", "alloy-primitives", "alloy-rlp", - "alloy-serde", + "alloy-serde 0.5.4", "arbitrary", "auto_impl", "c-kzg", @@ -115,6 +141,37 @@ dependencies = [ "serde", ] +[[package]] +name = "alloy-consensus" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4138dc275554afa6f18c4217262ac9388790b2fc393c2dfe03c51d357abf013" +dependencies = [ + "alloy-eips 0.9.2", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.9.2", + "alloy-trie", + "auto_impl", + "c-kzg", + "derive_more 1.0.0", + "serde", +] + +[[package]] +name = "alloy-consensus-any" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa04e1882c31288ce1028fdf31b6ea94cfa9eafa2e497f903ded631c8c6a42c" +dependencies = [ + "alloy-consensus 0.9.2", + "alloy-eips 0.9.2", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.9.2", + "serde", +] + [[package]] name = "alloy-contract" version = "0.5.4" @@ -123,13 +180,13 @@ checksum = "460ab80ce4bda1c80bcf96fe7460520476f2c7b734581c6567fac2708e2a60ef" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", - "alloy-network", - "alloy-network-primitives", + "alloy-network 0.5.4", + "alloy-network-primitives 0.5.4", "alloy-primitives", - "alloy-provider", - "alloy-rpc-types-eth", + "alloy-provider 0.5.4", + "alloy-rpc-types-eth 0.5.4", "alloy-sol-types", - "alloy-transport", + "alloy-transport 0.5.4", "futures 0.3.31", "futures-util", "thiserror 1.0.69", @@ -197,6 +254,18 @@ dependencies = [ "serde", ] +[[package]] +name = "alloy-eip7702" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b15b13d38b366d01e818fe8e710d4d702ef7499eacd44926a06171dd9585d0c" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "serde", + "thiserror 2.0.12", +] + [[package]] name = "alloy-eips" version = "0.5.4" @@ -204,10 +273,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b69e06cf9c37be824b9d26d6d101114fdde6af0c87de2828b414c05c4b3daa71" dependencies = [ "alloy-eip2930", - "alloy-eip7702", + "alloy-eip7702 0.3.2", "alloy-primitives", "alloy-rlp", - "alloy-serde", + "alloy-serde 0.5.4", "arbitrary", "c-kzg", "derive_more 1.0.0", @@ -216,6 +285,24 @@ dependencies = [ "sha2", ] +[[package]] +name = "alloy-eips" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52dd5869ed09e399003e0e0ec6903d981b2a92e74c5d37e6b40890bad2517526" +dependencies = [ + "alloy-eip2930", + "alloy-eip7702 0.5.1", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.9.2", + "c-kzg", + "derive_more 1.0.0", + "once_cell", + "serde", + "sha2", +] + [[package]] name = "alloy-genesis" version = "0.5.4" @@ -223,7 +310,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dde15e14944a88bd6a57d325e9a49b75558746fe16aaccc79713ae50a6a9574c" dependencies = [ "alloy-primitives", - "alloy-serde", + "alloy-serde 0.5.4", + "serde", +] + +[[package]] +name = "alloy-genesis" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7d2a7fe5c1a9bd6793829ea21a636f30fc2b3f5d2e7418ba86d96e41dd1f460" +dependencies = [ + "alloy-eips 0.9.2", + "alloy-primitives", + "alloy-serde 0.9.2", + "alloy-trie", "serde", ] @@ -253,20 +353,34 @@ dependencies = [ "tracing", ] +[[package]] +name = "alloy-json-rpc" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2008bedb8159a255b46b7c8614516eda06679ea82f620913679afbd8031fea72" +dependencies = [ + "alloy-primitives", + "alloy-sol-types", + "serde", + "serde_json", + "thiserror 2.0.12", + "tracing", +] + [[package]] name = "alloy-network" version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "204237129086ce5dc17a58025e93739b01b45313841f98fa339eb1d780511e57" dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-json-rpc", - "alloy-network-primitives", + "alloy-consensus 0.5.4", + "alloy-eips 0.5.4", + "alloy-json-rpc 0.5.4", + "alloy-network-primitives 0.5.4", "alloy-primitives", - "alloy-rpc-types-eth", - "alloy-serde", - "alloy-signer", + "alloy-rpc-types-eth 0.5.4", + "alloy-serde 0.5.4", + "alloy-signer 0.5.4", "alloy-sol-types", "async-trait", "auto_impl", @@ -274,16 +388,54 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "alloy-network" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4556f01fe41d0677495df10a648ddcf7ce118b0e8aa9642a0e2b6dd1fb7259de" +dependencies = [ + "alloy-consensus 0.9.2", + "alloy-consensus-any", + "alloy-eips 0.9.2", + "alloy-json-rpc 0.9.2", + "alloy-network-primitives 0.9.2", + "alloy-primitives", + "alloy-rpc-types-any", + "alloy-rpc-types-eth 0.9.2", + "alloy-serde 0.9.2", + "alloy-signer 0.9.2", + "alloy-sol-types", + "async-trait", + "auto_impl", + "futures-utils-wasm", + "serde", + "serde_json", + "thiserror 2.0.12", +] + [[package]] name = "alloy-network-primitives" version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "514f70ee2a953db21631cd817b13a1571474ec77ddc03d47616d5e8203489fde" dependencies = [ - "alloy-consensus", - "alloy-eips", + "alloy-consensus 0.5.4", + "alloy-eips 0.5.4", "alloy-primitives", - "alloy-serde", + "alloy-serde 0.5.4", + "serde", +] + +[[package]] +name = "alloy-network-primitives" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31c3c6b71340a1d076831823f09cb6e02de01de5c6630a9631bdb36f947ff80" +dependencies = [ + "alloy-consensus 0.9.2", + "alloy-eips 0.9.2", + "alloy-primitives", + "alloy-serde 0.9.2", "serde", ] @@ -303,7 +455,7 @@ dependencies = [ "foldhash", "getrandom 0.2.15", "hashbrown 0.15.2", - "indexmap", + "indexmap 2.7.1", "itoa", "k256", "keccak-asm", @@ -325,16 +477,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4814d141ede360bb6cd1b4b064f1aab9de391e7c4d0d4d50ac89ea4bc1e25fbd" dependencies = [ "alloy-chains", - "alloy-consensus", - "alloy-eips", - "alloy-json-rpc", - "alloy-network", - "alloy-network-primitives", + "alloy-consensus 0.5.4", + "alloy-eips 0.5.4", + "alloy-json-rpc 0.5.4", + "alloy-network 0.5.4", + "alloy-network-primitives 0.5.4", "alloy-primitives", - "alloy-rpc-client", - "alloy-rpc-types-eth", - "alloy-transport", - "alloy-transport-http", + "alloy-rpc-client 0.5.4", + "alloy-rpc-types-eth 0.5.4", + "alloy-transport 0.5.4", + "alloy-transport-http 0.5.4", "async-stream", "async-trait", "auto_impl", @@ -343,7 +495,7 @@ dependencies = [ "futures-utils-wasm", "lru", "parking_lot", - "pin-project", + "pin-project 1.1.10", "reqwest 0.12.12", "schnellru", "serde", @@ -352,7 +504,44 @@ dependencies = [ "tokio", "tracing", "url", - "wasmtimer", + "wasmtimer 0.2.1", +] + +[[package]] +name = "alloy-provider" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a22c4441b3ebe2d77fa9cf629ba68c3f713eb91779cff84275393db97eddd82" +dependencies = [ + "alloy-chains", + "alloy-consensus 0.9.2", + "alloy-eips 0.9.2", + "alloy-json-rpc 0.9.2", + "alloy-network 0.9.2", + "alloy-network-primitives 0.9.2", + "alloy-primitives", + "alloy-rpc-client 0.9.2", + "alloy-rpc-types-eth 0.9.2", + "alloy-transport 0.9.2", + "alloy-transport-http 0.9.2", + "async-stream", + "async-trait", + "auto_impl", + "dashmap 6.1.0", + "futures 0.3.31", + "futures-utils-wasm", + "lru", + "parking_lot", + "pin-project 1.1.10", + "reqwest 0.12.12", + "schnellru", + "serde", + "serde_json", + "thiserror 2.0.12", + "tokio", + "tracing", + "url", + "wasmtimer 0.4.1", ] [[package]] @@ -361,9 +550,9 @@ version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96ba46eb69ddf7a9925b81f15229cb74658e6eebe5dd30a5b74e2cd040380573" dependencies = [ - "alloy-json-rpc", + "alloy-json-rpc 0.5.4", "alloy-primitives", - "alloy-transport", + "alloy-transport 0.5.4", "bimap", "futures 0.3.31", "serde", @@ -402,12 +591,12 @@ version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fc2bd1e7403463a5f2c61e955bcc9d3072b63aa177442b0f9aa6a6d22a941e3" dependencies = [ - "alloy-json-rpc", + "alloy-json-rpc 0.5.4", "alloy-primitives", - "alloy-transport", - "alloy-transport-http", + "alloy-transport 0.5.4", + "alloy-transport-http 0.5.4", "futures 0.3.31", - "pin-project", + "pin-project 1.1.10", "reqwest 0.12.12", "serde", "serde_json", @@ -416,7 +605,30 @@ dependencies = [ "tower 0.5.2", "tracing", "url", - "wasmtimer", + "wasmtimer 0.2.1", +] + +[[package]] +name = "alloy-rpc-client" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d06a292b37e182e514903ede6e623b9de96420e8109ce300da288a96d88b7e4b" +dependencies = [ + "alloy-json-rpc 0.9.2", + "alloy-primitives", + "alloy-transport 0.9.2", + "alloy-transport-http 0.9.2", + "futures 0.3.31", + "pin-project 1.1.10", + "reqwest 0.12.12", + "serde", + "serde_json", + "tokio", + "tokio-stream", + "tower 0.5.2", + "tracing", + "url", + "wasmtimer 0.4.1", ] [[package]] @@ -427,22 +639,45 @@ checksum = "eea9bf1abdd506f985a53533f5ac01296bcd6102c5e139bbc5d40bc468d2c916" dependencies = [ "alloy-primitives", "alloy-rpc-types-engine", - "alloy-rpc-types-eth", - "alloy-serde", + "alloy-rpc-types-eth 0.5.4", + "alloy-serde 0.5.4", "serde", ] +[[package]] +name = "alloy-rpc-types" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9383845dd924939e7ab0298bbfe231505e20928907d7905aa3bf112287305e06" +dependencies = [ + "alloy-primitives", + "alloy-rpc-types-eth 0.9.2", + "alloy-serde 0.9.2", + "serde", +] + +[[package]] +name = "alloy-rpc-types-any" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca445cef0eb6c2cf51cfb4e214fbf1ebd00893ae2e6f3b944c8101b07990f988" +dependencies = [ + "alloy-consensus-any", + "alloy-rpc-types-eth 0.9.2", + "alloy-serde 0.9.2", +] + [[package]] name = "alloy-rpc-types-engine" version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "886d22d41992287a235af2f3af4299b5ced2bcafb81eb835572ad35747476946" dependencies = [ - "alloy-consensus", - "alloy-eips", + "alloy-consensus 0.5.4", + "alloy-eips 0.5.4", "alloy-primitives", "alloy-rlp", - "alloy-serde", + "alloy-serde 0.5.4", "derive_more 1.0.0", "jsonwebtoken 9.3.1", "rand 0.8.5", @@ -456,12 +691,12 @@ version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00b034779a4850b4b03f5be5ea674a1cf7d746b2da762b34d1860ab45e48ca27" dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-network-primitives", + "alloy-consensus 0.5.4", + "alloy-eips 0.5.4", + "alloy-network-primitives 0.5.4", "alloy-primitives", "alloy-rlp", - "alloy-serde", + "alloy-serde 0.5.4", "alloy-sol-types", "arbitrary", "derive_more 1.0.0", @@ -470,6 +705,26 @@ dependencies = [ "serde_json", ] +[[package]] +name = "alloy-rpc-types-eth" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0938bc615c02421bd86c1733ca7205cc3d99a122d9f9bff05726bd604b76a5c2" +dependencies = [ + "alloy-consensus 0.9.2", + "alloy-consensus-any", + "alloy-eips 0.9.2", + "alloy-network-primitives 0.9.2", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.9.2", + "alloy-sol-types", + "itertools 0.13.0", + "serde", + "serde_json", + "thiserror 2.0.12", +] + [[package]] name = "alloy-rpc-types-trace" version = "0.5.4" @@ -477,8 +732,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4e5fb6c5c401321f802f69dcdb95b932f30f8158f6798793f914baac5995628e" dependencies = [ "alloy-primitives", - "alloy-rpc-types-eth", - "alloy-serde", + "alloy-rpc-types-eth 0.5.4", + "alloy-serde 0.5.4", "serde", "serde_json", "thiserror 1.0.69", @@ -496,6 +751,17 @@ dependencies = [ "serde_json", ] +[[package]] +name = "alloy-serde" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae0465c71d4dced7525f408d84873aeebb71faf807d22d74c4a426430ccd9b55" +dependencies = [ + "alloy-primitives", + "serde", + "serde_json", +] + [[package]] name = "alloy-signer" version = "0.5.4" @@ -512,17 +778,69 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "alloy-signer" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bfa395ad5cc952c82358d31e4c68b27bf4a89a5456d9b27e226e77dac50e4ff" +dependencies = [ + "alloy-dyn-abi", + "alloy-primitives", + "alloy-sol-types", + "async-trait", + "auto_impl", + "elliptic-curve", + "k256", + "thiserror 2.0.12", +] + +[[package]] +name = "alloy-signer-aws" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eb06810c34427d499863817eb506acf57cb9ded9224b374116cae4e22dbd4e9" +dependencies = [ + "alloy-consensus 0.9.2", + "alloy-network 0.9.2", + "alloy-primitives", + "alloy-signer 0.9.2", + "async-trait", + "aws-sdk-kms", + "k256", + "spki", + "thiserror 2.0.12", + "tracing", +] + +[[package]] +name = "alloy-signer-gcp" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d629e63fec8802ad53706d46e8eceeeae2b135c6648d0de41669a523bf17df4a" +dependencies = [ + "alloy-consensus 0.9.2", + "alloy-network 0.9.2", + "alloy-primitives", + "alloy-signer 0.9.2", + "async-trait", + "gcloud-sdk", + "k256", + "spki", + "thiserror 2.0.12", + "tracing", +] + [[package]] name = "alloy-signer-ledger" version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59a642c9f66ac73ae0d5398ce7ce3ce5bdfad5658d549abd48ea48962e585dca" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.5.4", "alloy-dyn-abi", - "alloy-network", + "alloy-network 0.5.4", "alloy-primitives", - "alloy-signer", + "alloy-signer 0.5.4", "alloy-sol-types", "async-trait", "coins-ledger", @@ -532,16 +850,36 @@ dependencies = [ "tracing", ] +[[package]] +name = "alloy-signer-ledger" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b426789566a19252cb46b757d91543a6f8e70330c72f312b86c5878595d092ef" +dependencies = [ + "alloy-consensus 0.9.2", + "alloy-dyn-abi", + "alloy-network 0.9.2", + "alloy-primitives", + "alloy-signer 0.9.2", + "alloy-sol-types", + "async-trait", + "coins-ledger", + "futures-util", + "semver 1.0.26", + "thiserror 2.0.12", + "tracing", +] + [[package]] name = "alloy-signer-local" version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6614f02fc1d5b079b2a4a5320018317b506fd0a6d67c1fd5542a71201724986c" dependencies = [ - "alloy-consensus", - "alloy-network", + "alloy-consensus 0.5.4", + "alloy-network 0.5.4", "alloy-primitives", - "alloy-signer", + "alloy-signer 0.5.4", "async-trait", "coins-bip32", "coins-bip39", @@ -551,16 +889,32 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "alloy-signer-local" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbdc63ce9eda1283fcbaca66ba4a414b841c0e3edbeef9c86a71242fc9e84ccc" +dependencies = [ + "alloy-consensus 0.9.2", + "alloy-network 0.9.2", + "alloy-primitives", + "alloy-signer 0.9.2", + "async-trait", + "k256", + "rand 0.8.5", + "thiserror 2.0.12", +] + [[package]] name = "alloy-signer-trezor" version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b754988ef4e1f5f7d55c132949bb2a10491ed6bbf1d35108269014f50da1823f" dependencies = [ - "alloy-consensus", - "alloy-network", + "alloy-consensus 0.5.4", + "alloy-network 0.5.4", "alloy-primitives", - "alloy-signer", + "alloy-signer 0.5.4", "async-trait", "semver 1.0.26", "thiserror 1.0.69", @@ -592,7 +946,7 @@ dependencies = [ "alloy-sol-macro-input", "const-hex", "heck 0.5.0", - "indexmap", + "indexmap 2.7.1", "proc-macro-error2", "proc-macro2", "quote", @@ -647,7 +1001,7 @@ version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be77579633ebbc1266ae6fd7694f75c408beb1aeb6865d0b18f22893c265a061" dependencies = [ - "alloy-json-rpc", + "alloy-json-rpc 0.5.4", "base64 0.22.1", "futures-util", "futures-utils-wasm", @@ -658,7 +1012,27 @@ dependencies = [ "tower 0.5.2", "tracing", "url", - "wasmtimer", + "wasmtimer 0.2.1", +] + +[[package]] +name = "alloy-transport" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d17722a198f33bbd25337660787aea8b8f57814febb7c746bc30407bdfc39448" +dependencies = [ + "alloy-json-rpc 0.9.2", + "base64 0.22.1", + "futures-util", + "futures-utils-wasm", + "serde", + "serde_json", + "thiserror 2.0.12", + "tokio", + "tower 0.5.2", + "tracing", + "url", + "wasmtimer 0.4.1", ] [[package]] @@ -667,8 +1041,23 @@ version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91fd1a5d0827939847983b46f2f79510361f901dc82f8e3c38ac7397af142c6e" dependencies = [ - "alloy-json-rpc", - "alloy-transport", + "alloy-json-rpc 0.5.4", + "alloy-transport 0.5.4", + "reqwest 0.12.12", + "serde_json", + "tower 0.5.2", + "tracing", + "url", +] + +[[package]] +name = "alloy-transport-http" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e1509599021330a31c4a6816b655e34bf67acb1cc03c564e09fd8754ff6c5de" +dependencies = [ + "alloy-json-rpc 0.9.2", + "alloy-transport 0.9.2", "reqwest 0.12.12", "serde_json", "tower 0.5.2", @@ -682,13 +1071,13 @@ version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8073d1186bfeeb8fbdd1292b6f1a0731f3aed8e21e1463905abfae0b96a887a6" dependencies = [ - "alloy-json-rpc", + "alloy-json-rpc 0.5.4", "alloy-pubsub", - "alloy-transport", + "alloy-transport 0.5.4", "bytes", "futures 0.3.31", "interprocess", - "pin-project", + "pin-project 1.1.10", "serde_json", "tokio", "tokio-util", @@ -702,7 +1091,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61f27837bb4a1d6c83a28231c94493e814882f0e9058648a97e908a5f3fc9fcf" dependencies = [ "alloy-pubsub", - "alloy-transport", + "alloy-transport 0.5.4", "futures 0.3.31", "http 1.2.0", "rustls 0.23.23", @@ -713,6 +1102,22 @@ dependencies = [ "ws_stream_wasm", ] +[[package]] +name = "alloy-trie" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d95a94854e420f07e962f7807485856cde359ab99ab6413883e15235ad996e8b" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "arrayvec", + "derive_more 1.0.0", + "nybbles", + "serde", + "smallvec", + "tracing", +] + [[package]] name = "android-tzdata" version = "0.1.1" @@ -922,6 +1327,9 @@ name = "arrayvec" version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +dependencies = [ + "serde", +] [[package]] name = "ascii-canvas" @@ -932,6 +1340,19 @@ dependencies = [ "term", ] +[[package]] +name = "async-compression" +version = "0.4.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0cf008e5e1a9e9e22a7d3c9a4992e21a350290069e36d8fb72304ed17e8f2d2" +dependencies = [ + "flate2", + "futures-core", + "memchr", + "pin-project-lite", + "tokio", +] + [[package]] name = "async-stream" version = "0.3.6" @@ -1239,6 +1660,53 @@ dependencies = [ "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", + "bytes", + "futures-util", + "http 1.2.0", + "http-body 1.0.1", + "http-body-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "sync_wrapper 1.0.2", + "tower 0.5.2", + "tower-layer", + "tower-service", +] + +[[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 1.0.2", + "tower-layer", + "tower-service", +] + [[package]] name = "backtrace" version = "0.3.74" @@ -2078,6 +2546,18 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "dialoguer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59c6f2989294b9a498d3ad5491a79c6deb604617378e1cdc4bfc1c1361fe2f87" +dependencies = [ + "console", + "shell-words", + "tempfile", + "zeroize", +] + [[package]] name = "dialoguer" version = "0.11.0" @@ -2091,12 +2571,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "difflib" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8" - [[package]] name = "digest" version = "0.9.0" @@ -2204,12 +2678,6 @@ version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" -[[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" @@ -2469,7 +2937,7 @@ dependencies = [ "instant", "jsonwebtoken 8.3.0", "once_cell", - "pin-project", + "pin-project 1.1.10", "reqwest 0.11.27", "serde", "serde_json", @@ -2582,15 +3050,6 @@ dependencies = [ "miniz_oxide", ] -[[package]] -name = "float-cmp" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" -dependencies = [ - "num-traits", -] - [[package]] name = "fnv" version = "1.0.7" @@ -2624,7 +3083,7 @@ version = "0.2.0" source = "git+https://github.com/foundry-rs/foundry?rev=57bb12e#57bb12e022fb9ea46a4a7ca8647eb016e8d43ca3" dependencies = [ "alloy-primitives", - "alloy-rpc-types", + "alloy-rpc-types 0.5.4", "eyre", "foundry-common", "foundry-compilers", @@ -2668,20 +3127,20 @@ name = "foundry-cheatcodes" version = "0.2.0" source = "git+https://github.com/foundry-rs/foundry?rev=57bb12e#57bb12e022fb9ea46a4a7ca8647eb016e8d43ca3" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.5.4", "alloy-dyn-abi", - "alloy-genesis", + "alloy-genesis 0.5.4", "alloy-json-abi", "alloy-primitives", - "alloy-provider", + "alloy-provider 0.5.4", "alloy-rlp", - "alloy-rpc-types", - "alloy-signer", - "alloy-signer-local", + "alloy-rpc-types 0.5.4", + "alloy-signer 0.5.4", + "alloy-signer-local 0.5.4", "alloy-sol-types", "base64 0.22.1", "chrono", - "dialoguer", + "dialoguer 0.11.0", "ecdsa", "eyre", "forge-script-sequence", @@ -2726,20 +3185,20 @@ name = "foundry-common" version = "0.2.0" source = "git+https://github.com/foundry-rs/foundry?rev=57bb12e#57bb12e022fb9ea46a4a7ca8647eb016e8d43ca3" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.5.4", "alloy-contract", "alloy-dyn-abi", "alloy-json-abi", - "alloy-json-rpc", + "alloy-json-rpc 0.5.4", "alloy-primitives", - "alloy-provider", + "alloy-provider 0.5.4", "alloy-pubsub", - "alloy-rpc-client", - "alloy-rpc-types", - "alloy-serde", + "alloy-rpc-client 0.5.4", + "alloy-rpc-types 0.5.4", + "alloy-serde 0.5.4", "alloy-sol-types", - "alloy-transport", - "alloy-transport-http", + "alloy-transport 0.5.4", + "alloy-transport-http 0.5.4", "alloy-transport-ipc", "alloy-transport-ws", "anstream", @@ -2773,12 +3232,12 @@ name = "foundry-common-fmt" version = "0.2.0" source = "git+https://github.com/foundry-rs/foundry?rev=57bb12e#57bb12e022fb9ea46a4a7ca8647eb016e8d43ca3" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.5.4", "alloy-dyn-abi", - "alloy-network", + "alloy-network 0.5.4", "alloy-primitives", - "alloy-rpc-types", - "alloy-serde", + "alloy-rpc-types 0.5.4", + "alloy-serde 0.5.4", "chrono", "comfy-table", "revm-primitives", @@ -2974,14 +3433,14 @@ version = "0.2.0" source = "git+https://github.com/foundry-rs/foundry?rev=57bb12e#57bb12e022fb9ea46a4a7ca8647eb016e8d43ca3" dependencies = [ "alloy-dyn-abi", - "alloy-genesis", + "alloy-genesis 0.5.4", "alloy-json-abi", "alloy-primitives", - "alloy-provider", - "alloy-rpc-types", - "alloy-serde", + "alloy-provider 0.5.4", + "alloy-rpc-types 0.5.4", + "alloy-serde 0.5.4", "alloy-sol-types", - "alloy-transport", + "alloy-transport 0.5.4", "auto_impl", "eyre", "foundry-cheatcodes-spec", @@ -3033,7 +3492,7 @@ dependencies = [ "foundry-evm-core", "foundry-evm-coverage", "foundry-evm-traces", - "indexmap", + "indexmap 2.7.1", "itertools 0.13.0", "parking_lot", "proptest", @@ -3079,10 +3538,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73fe4a1e7e0f122b28afc156681687249bd5cf910d9bf873efb1181e4d41fbc3" dependencies = [ "alloy-primitives", - "alloy-provider", - "alloy-rpc-types", - "alloy-serde", - "alloy-transport", + "alloy-provider 0.5.4", + "alloy-rpc-types 0.5.4", + "alloy-serde 0.5.4", + "alloy-transport 0.5.4", "eyre", "futures 0.3.31", "parking_lot", @@ -3122,13 +3581,13 @@ name = "foundry-wallets" version = "0.2.0" source = "git+https://github.com/foundry-rs/foundry?rev=57bb12e#57bb12e022fb9ea46a4a7ca8647eb016e8d43ca3" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.5.4", "alloy-dyn-abi", - "alloy-network", + "alloy-network 0.5.4", "alloy-primitives", - "alloy-signer", - "alloy-signer-ledger", - "alloy-signer-local", + "alloy-signer 0.5.4", + "alloy-signer-ledger 0.5.4", + "alloy-signer-local 0.5.4", "alloy-signer-trezor", "alloy-sol-types", "async-trait", @@ -3144,12 +3603,6 @@ dependencies = [ "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.12.0" @@ -3287,6 +3740,34 @@ dependencies = [ "byteorder", ] +[[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 0.3.31", + "hyper 1.6.0", + "jsonwebtoken 9.3.1", + "once_cell", + "prost", + "prost-types", + "reqwest 0.12.12", + "secret-vault-value", + "serde", + "serde_json", + "tokio", + "tonic", + "tower 0.5.2", + "tower-layer", + "tower-util", + "tracing", + "url", +] + [[package]] name = "generic-array" version = "0.14.7" @@ -3383,7 +3864,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap", + "indexmap 2.7.1", "slab", "tokio", "tokio-util", @@ -3402,13 +3883,19 @@ dependencies = [ "futures-core", "futures-sink", "http 1.2.0", - "indexmap", + "indexmap 2.7.1", "slab", "tokio", "tokio-util", "tracing", ] +[[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" @@ -3610,6 +4097,7 @@ dependencies = [ "http 1.2.0", "http-body 1.0.1", "httparse", + "httpdate", "itoa", "pin-project-lite", "smallvec", @@ -3652,6 +4140,19 @@ dependencies = [ "webpki-roots 0.26.8", ] +[[package]] +name = "hyper-timeout" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" +dependencies = [ + "hyper 1.6.0", + "hyper-util", + "pin-project-lite", + "tokio", + "tower-service", +] + [[package]] name = "hyper-tls" version = "0.6.0" @@ -3899,6 +4400,16 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" +[[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.1" @@ -4242,6 +4753,12 @@ 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" @@ -4284,6 +4801,16 @@ 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 = "mini-moka" version = "0.10.3" @@ -4319,33 +4846,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "mockall" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c84490118f2ee2d74570d114f3d0493cbf02790df303d2707606c3e14e07c96" -dependencies = [ - "cfg-if", - "downcast", - "fragile", - "lazy_static", - "mockall_derive", - "predicates", - "predicates-tree", -] - -[[package]] -name = "mockall_derive" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ce75669015c4f47b289fd4d4f56e894e4c96003ffdf3ac51313126f94c6cbb" -dependencies = [ - "cfg-if", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "native-tls" version = "0.2.14" @@ -4382,12 +4882,6 @@ dependencies = [ "pin-utils", ] -[[package]] -name = "normalize-line-endings" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" - [[package]] name = "nu-ansi-term" version = "0.46.0" @@ -4420,6 +4914,7 @@ checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ "num-integer", "num-traits", + "serde", ] [[package]] @@ -4534,6 +5029,19 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" +[[package]] +name = "nybbles" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8983bb634df7248924ee0c4c3a749609b5abcb082c28fffe3254b3eb3602b307" +dependencies = [ + "alloy-rlp", + "const-hex", + "proptest", + "serde", + "smallvec", +] + [[package]] name = "object" version = "0.36.7" @@ -4805,7 +5313,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap", + "indexmap 2.7.1", ] [[package]] @@ -4860,13 +5368,33 @@ 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.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" dependencies = [ - "pin-project-internal", + "pin-project-internal 1.1.10", +] + +[[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]] @@ -4978,36 +5506,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" -[[package]] -name = "predicates" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59230a63c37f3e18569bdb90e4a89cbf5bf8b06fea0b84e65ea10cc4df47addd" -dependencies = [ - "difflib", - "float-cmp", - "itertools 0.10.5", - "normalize-line-endings", - "predicates-core", - "regex", -] - -[[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 = "primeorder" version = "0.13.6" @@ -5139,6 +5637,38 @@ dependencies = [ "syn 2.0.99", ] +[[package]] +name = "prost" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-derive" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" +dependencies = [ + "anyhow", + "itertools 0.13.0", + "proc-macro2", + "quote", + "syn 2.0.99", +] + +[[package]] +name = "prost-types" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16" +dependencies = [ + "prost", +] + [[package]] name = "protobuf" version = "3.3.0" @@ -5163,7 +5693,7 @@ dependencies = [ name = "protocol-testing" version = "0.1.0" dependencies = [ - "alloy", + "alloy 0.5.4", "async-trait", "clap", "colored", @@ -5491,6 +6021,7 @@ version = "0.12.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" dependencies = [ + "async-compression", "base64 0.22.1", "bytes", "encoding_rs", @@ -5509,6 +6040,7 @@ dependencies = [ "js-sys", "log", "mime", + "mime_guess", "native-tls", "once_cell", "percent-encoding", @@ -5527,11 +6059,13 @@ dependencies = [ "tokio-native-tls", "tokio-rustls 0.26.2", "tokio-socks", + "tokio-util", "tower 0.5.2", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", + "wasm-streams", "web-sys", "webpki-roots 0.26.8", "windows-registry", @@ -5562,7 +6096,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e29c662f7887f3b659d4b0fd234673419a8fcbeaa1ecc29bf7034c0a75cc8ea" dependencies = [ "alloy-primitives", - "alloy-rpc-types-eth", + "alloy-rpc-types-eth 0.5.4", "alloy-rpc-types-trace", "alloy-sol-types", "anstyle", @@ -5610,7 +6144,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d11fa1e195b0bebaf3fb18596f314a13ba3a4cb1fdd16d3465934d812fd921e" dependencies = [ "alloy-eip2930", - "alloy-eip7702", + "alloy-eip7702 0.3.2", "alloy-primitives", "auto_impl", "bitflags 2.9.0", @@ -5840,6 +6374,7 @@ version = "0.23.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "47796c98c480fce5406ef69d1c76378375492c3b0a0de587be0c1d9feb12f395" dependencies = [ + "log", "once_cell", "ring 0.17.13", "rustls-pki-types", @@ -6067,6 +6602,19 @@ 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" @@ -6168,7 +6716,7 @@ version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ - "indexmap", + "indexmap 2.7.1", "itoa", "memchr", "ryu", @@ -6223,7 +6771,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap", + "indexmap 2.7.1", "itoa", "ryu", "serde", @@ -6371,6 +6919,9 @@ name = "smallvec" version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" +dependencies = [ + "serde", +] [[package]] name = "socket2" @@ -6723,12 +7274,6 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "termtree" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f50febec83f5ee1df3015341d8bd429f2d1cc62bcba7ea2076759d315084683" - [[package]] name = "thiserror" version = "1.0.69" @@ -7017,7 +7562,7 @@ version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" dependencies = [ - "indexmap", + "indexmap 2.7.1", "serde", "serde_spanned", "toml_datetime", @@ -7039,19 +7584,61 @@ version = "0.22.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" dependencies = [ - "indexmap", + "indexmap 2.7.1", "serde", "serde_spanned", "toml_datetime", "winnow 0.7.3", ] +[[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.8", + "http 1.2.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.6.0", + "hyper-timeout", + "hyper-util", + "percent-encoding", + "pin-project 1.1.10", + "prost", + "rustls-native-certs 0.8.1", + "rustls-pemfile 2.2.0", + "socket2", + "tokio", + "tokio-rustls 0.26.2", + "tokio-stream", + "tower 0.4.13", + "tower-layer", + "tower-service", + "tracing", +] + [[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.10", + "pin-project-lite", + "rand 0.8.5", + "slab", + "tokio", + "tokio-util", "tower-layer", "tower-service", "tracing", @@ -7084,6 +7671,18 @@ 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" @@ -7135,7 +7734,7 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" dependencies = [ - "pin-project", + "pin-project 1.1.10", "tracing", ] @@ -7248,32 +7847,6 @@ dependencies = [ "utf-8", ] -[[package]] -name = "tycho-client" -version = "0.56.5" -source = "git+https://github.com/propeller-heads/tycho-indexer.git?tag=0.56.5#2af8c1a5a61c5479eab5f7903b69943efa61e2c8" -dependencies = [ - "anyhow", - "async-trait", - "chrono", - "clap", - "futures 0.3.31", - "hex", - "hyper 0.14.32", - "lru", - "reqwest 0.12.12", - "serde", - "serde_json", - "thiserror 1.0.69", - "tokio", - "tokio-tungstenite 0.20.1", - "tracing", - "tracing-appender", - "tracing-subscriber", - "tycho-core 0.56.5", - "uuid 1.15.1", -] - [[package]] name = "tycho-client" version = "0.61.1" @@ -7286,7 +7859,6 @@ dependencies = [ "hex", "hyper 0.14.32", "lru", - "mockall", "reqwest 0.12.12", "serde", "serde_json", @@ -7301,25 +7873,28 @@ dependencies = [ ] [[package]] -name = "tycho-core" -version = "0.56.5" -source = "git+https://github.com/propeller-heads/tycho-indexer.git?tag=0.56.5#2af8c1a5a61c5479eab5f7903b69943efa61e2c8" +name = "tycho-client" +version = "0.61.1" +source = "git+https://github.com/propeller-heads/tycho-indexer.git?tag=0.61.1#aae2c11bffe9ae5e436adc019b769438fa038272" dependencies = [ "anyhow", "async-trait", - "bytes", "chrono", + "clap", + "futures 0.3.31", "hex", - "rand 0.8.5", + "hyper 0.14.32", + "lru", + "reqwest 0.12.12", "serde", "serde_json", - "strum 0.25.0", - "strum_macros 0.25.3", "thiserror 1.0.69", - "tiny-keccak", + "tokio", + "tokio-tungstenite 0.20.1", "tracing", - "typetag", - "utoipa", + "tracing-appender", + "tracing-subscriber", + "tycho-core 0.61.1 (git+https://github.com/propeller-heads/tycho-indexer.git?tag=0.61.1)", "uuid 1.15.1", ] @@ -7346,13 +7921,60 @@ dependencies = [ ] [[package]] -name = "tycho-simulation" -version = "0.77.1" +name = "tycho-core" +version = "0.61.1" +source = "git+https://github.com/propeller-heads/tycho-indexer.git?tag=0.61.1#aae2c11bffe9ae5e436adc019b769438fa038272" dependencies = [ - "alloy", + "anyhow", + "async-trait", + "bytes", + "chrono", + "hex", + "rand 0.8.5", + "serde", + "serde_json", + "strum 0.25.0", + "strum_macros 0.25.3", + "thiserror 1.0.69", + "tiny-keccak", + "tracing", + "typetag", + "utoipa", + "uuid 1.15.1", +] + +[[package]] +name = "tycho-execution" +version = "0.66.1" +source = "git+https://github.com/propeller-heads/tycho-execution.git?tag=0.66.1#5a6433caf1e968ed972bd510c0b87698b65bce14" +dependencies = [ + "alloy 0.9.2", "alloy-primitives", "alloy-sol-types", "chrono", + "clap", + "dotenv", + "hex", + "lazy_static", + "num-bigint", + "num-traits", + "once_cell", + "serde", + "serde_json", + "thiserror 1.0.69", + "tokio", + "tycho-core 0.61.1 (git+https://github.com/propeller-heads/tycho-indexer.git?tag=0.61.1)", +] + +[[package]] +name = "tycho-simulation" +version = "0.84.0" +dependencies = [ + "alloy 0.5.4", + "alloy-primitives", + "alloy-sol-types", + "chrono", + "dialoguer 0.10.4", "dotenv", "foundry-config", "foundry-evm", @@ -7373,8 +7995,9 @@ dependencies = [ "tokio", "tokio-stream", "tracing", - "tycho-client 0.56.5", - "tycho-core 0.56.5", + "tycho-client 0.61.1 (git+https://github.com/propeller-heads/tycho-indexer.git?tag=0.61.1)", + "tycho-core 0.61.1 (git+https://github.com/propeller-heads/tycho-indexer.git?tag=0.61.1)", + "tycho-execution", "uuid 1.15.1", ] @@ -7557,7 +8180,7 @@ version = "4.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c5afb1a60e207dca502682537fefcfd9921e71d0b83e9576060f09abc6efab23" dependencies = [ - "indexmap", + "indexmap 2.7.1", "serde", "serde_json", "utoipa-gen", @@ -7764,6 +8387,19 @@ dependencies = [ "unicode-ident", ] +[[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.2.1" @@ -7778,6 +8414,20 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "wasmtimer" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0048ad49a55b9deb3953841fa1fc5858f0efbcb7a18868c899a360269fac1b23" +dependencies = [ + "futures 0.3.31", + "js-sys", + "parking_lot", + "pin-utils", + "slab", + "wasm-bindgen", +] + [[package]] name = "web-sys" version = "0.3.77" @@ -8279,7 +8929,7 @@ dependencies = [ "crossbeam-utils", "displaydoc", "flate2", - "indexmap", + "indexmap 2.7.1", "memchr", "thiserror 2.0.12", "zopfli", diff --git a/protocol-testing/src/rpc.rs b/protocol-testing/src/rpc.rs index b5ac6fe..d2f4c26 100644 --- a/protocol-testing/src/rpc.rs +++ b/protocol-testing/src/rpc.rs @@ -6,11 +6,10 @@ use alloy::{ providers::{Provider, ProviderBuilder}, transports::http::reqwest::Url, }; -use tycho_core::models::Address; const NATIVE_ALIASES: &[Address] = &[ - address!("0x0000000000000000000000000000000000000000").into(), - address!("0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee").into(), + address!("0x0000000000000000000000000000000000000000"), + address!("0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"), ]; const ERC_20_ABI: &str = r#"[{"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"}]"#; @@ -20,18 +19,19 @@ pub struct RPCProvider { } impl RPCProvider { - pub(crate) fn new(url: String) -> RPCProvider { + pub fn new(url: String) -> Self { let url = url.as_str().parse().unwrap(); RPCProvider { url } } + // TODO: Return a Result instead of panicking pub async fn get_token_balance( - self, + &self, token_address: Address, wallet_address: Address, block_number: u64, ) -> U256 { - let provider = ProviderBuilder::new().on_http(self.url); + let provider = ProviderBuilder::new().on_http(self.url.clone()); let block_id: BlockId = BlockId::from(block_number); match NATIVE_ALIASES.contains(&token_address) { @@ -65,7 +65,7 @@ impl RPCProvider { } } - async fn get_block_header(self, block_number: u64) { + async fn get_block_header(&self, block_number: u64) { // TODO: Implement // let provider = ProviderBuilder::new().on_http(self.url); // let block_id: BlockId = BlockId::from(block_number); @@ -84,7 +84,7 @@ mod tests { #[tokio::test] async fn get_token_balance_native_token() { - let eth_rpc_url = env::var("ETH_RPC_URL").expect("Missing ETH_RPC_URL in environment"); + let eth_rpc_url = env::var("RPC_URL").expect("Missing RPC_URL in environment"); let rpc_provider = RPCProvider::new(eth_rpc_url); let token_address = address!("0x0000000000000000000000000000000000000000"); @@ -103,7 +103,7 @@ mod tests { #[tokio::test] async fn get_token_balance_erc20_token() { - let eth_rpc_url = env::var("ETH_RPC_URL").expect("Missing ETH_RPC_URL in environment"); + let eth_rpc_url = env::var("RPC_URL").expect("Missing RPC_URL in environment"); let rpc_provider = RPCProvider::new(eth_rpc_url); let token_address = address!("0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"); diff --git a/protocol-testing/src/test_runner.rs b/protocol-testing/src/test_runner.rs index 27d65a0..110709a 100644 --- a/protocol-testing/src/test_runner.rs +++ b/protocol-testing/src/test_runner.rs @@ -1,4 +1,4 @@ -use std::{collections::HashMap, env, ops::Deref, path::PathBuf}; +use std::{collections::HashMap, env, ops::Deref, path::PathBuf, str::FromStr}; use alloy::{ primitives::{bytes, U256}, @@ -12,19 +12,29 @@ use postgres::{Client, Error, NoTls}; use tokio::runtime::Runtime; use tracing::{debug, field::debug, info}; use tycho_core::{ - dto::{Chain, ProtocolComponent, ResponseProtocolState}, + dto::{Chain, ProtocolComponent, ResponseAccount, ResponseProtocolState}, + models::Address, Bytes, }; -use tycho_core::models::Address; -use tycho_simulation::evm::protocol::u256_num::{bytes_to_u256, u256_to_f64}; - +use tycho_simulation::{ + evm::{ + decoder::TychoStreamDecoder, + engine_db::tycho_db::PreCachedDB, + protocol::{ + u256_num::{bytes_to_u256, u256_to_f64}, + vm::state::EVMPoolState, + }, + }, + tycho_client::feed::{synchronizer::StateSyncMessage, FeedMessage, Header}, +}; +use tycho_simulation::tycho_client::feed::synchronizer::{ComponentW, ComponentWithState, Snapshot}; use crate::{ config::{IntegrationTest, IntegrationTestsConfig, ProtocolComponentWithTestConfig}, + rpc::RPCProvider, tycho_rpc::TychoClient, tycho_runner::TychoRunner, utils::build_spkg, }; -use crate::rpc::RPCProvider; pub struct TestRunner { package: String, @@ -57,7 +67,7 @@ impl TestRunner { info!("Found {} tests to run", config.tests.len()); for test in &config.tests { - self.run_test(test, &config); + self.run_test(test, &config, config.skip_balance_check); } } Err(e) => { @@ -66,7 +76,12 @@ impl TestRunner { } } - fn run_test(&self, test: &IntegrationTest, config: &IntegrationTestsConfig, skip_balance_check: bool) { + fn run_test( + &self, + test: &IntegrationTest, + config: &IntegrationTestsConfig, + skip_balance_check: bool, + ) { info!("Running test: {}", test.name); self.empty_database() .expect("Failed to empty the database"); @@ -101,7 +116,13 @@ impl TestRunner { ) .expect("Failed to run Tycho"); - tycho_runner.run_with_rpc_server(validate_state, &test.expected_components, test.start_block, skip_balance_check); + tycho_runner.run_with_rpc_server( + validate_state, + &test.expected_components, + test.start_block, + test.stop_block, + skip_balance_check, + ); } fn empty_database(&self) -> Result<(), Error> { @@ -122,7 +143,12 @@ impl TestRunner { } } -fn validate_state(expected_components: &Vec, start_block: u64, skip_balance_check: bool) { +fn validate_state( + expected_components: &Vec, + start_block: u64, + stop_block: u64, + skip_balance_check: bool, +) { let rt = Runtime::new().unwrap(); // Create Tycho client for the RPC server @@ -132,6 +158,8 @@ fn validate_state(expected_components: &Vec, st let chain = Chain::Ethereum; let protocol_system = "test_protocol"; + // Fetch data from Tycho RPC. We use block_on to avoid using async functions on the testing + // module, in order to simplify debugging let protocol_components = rt .block_on(tycho_client.get_protocol_components(protocol_system, chain)) .expect("Failed to get protocol components"); @@ -140,15 +168,20 @@ fn validate_state(expected_components: &Vec, st .block_on(tycho_client.get_protocol_state(protocol_system, chain)) .expect("Failed to get protocol state"); + let vm_storages = rt + .block_on(tycho_client.get_contract_state(Vec::new(), protocol_system, chain)) + .expect("Failed to get contract state"); + // Create a map of component IDs to components for easy lookup let components_by_id: HashMap = protocol_components + .clone() .into_iter() - .map(|c| (c.id.to_lowercase(), c)) + .map(|c| (c.id.clone(), c)) .collect(); let protocol_states_by_id: HashMap = protocol_states .into_iter() - .map(|s| (s.component_id.to_lowercase(), s)) + .map(|s| (s.component_id.clone(), s)) .collect(); info!("Found {} protocol components", components_by_id.len()); @@ -159,10 +192,7 @@ fn validate_state(expected_components: &Vec, st // Step 1: Validate that all expected components are present on Tycho after indexing debug!("Validating {:?} expected components", expected_components.len()); for expected_component in expected_components { - let component_id = expected_component - .base - .id - .to_lowercase(); + let component_id = expected_component.base.id.clone(); assert!( components_by_id.contains_key(&component_id), @@ -194,8 +224,8 @@ fn validate_state(expected_components: &Vec, st let rpc_url = env::var("RPC_URL").expect("Missing ETH_RPC_URL in environment"); let rpc_provider = RPCProvider::new(rpc_url.to_string()); - for (id_lower, component) in components_by_id.iter() { - let component_state = protocol_states_by_id.get(id_lower); + for (id, component) in components_by_id.iter() { + let component_state = protocol_states_by_id.get(id); for token in &component.tokens { let mut balance: U256 = U256::from(0); @@ -208,10 +238,73 @@ fn validate_state(expected_components: &Vec, st } } + // TODO: Test if balance check works if (!skip_balance_check) { - let token_address: Address - let node_balance = rpc_provider.get_token_balance(token, component.id, start_block) + info!( + "Validating token balance for component {} and token {}", + component.id, token + ); + let token_address = alloy::primitives::Address::from_slice(&token[..20]); + let component_address = alloy::primitives::Address::from_str(component.id.as_str()) + .expect("Failed to parse component address"); + let node_balance = rt.block_on(rpc_provider.get_token_balance( + token_address, + component_address, + start_block, + )); + assert_eq!( + balance, node_balance, + "Token balance mismatch for component {} and token {}", + component.id, token + ); + info!( + "Token balance for component {} and token {} matches the expected value", + component.id, token + ); } } } + match skip_balance_check { + true => info!("Skipping balance check"), + false => info!("All token balances match the values found onchain"), + } + + // Step 3: Run Tycho Simulation + let mut decoder = TychoStreamDecoder::new(); + decoder.register_decoder::>("test_protocol"); + + // Mock a stream message, with only a Snapshot and no deltas + let mut states: HashMap = HashMap::new(); + for (id, component) in components_by_id { + let component_id = &id.clone(); + let state = protocol_states_by_id + .get(component_id) + .expect("Failed to get state for component") + .clone(); + let component_with_state = ComponentWithState { state, component }; + states.insert(component_id.clone(), component_with_state); + } + let vm_storage: HashMap = vm_storages + .into_iter() + .map(|x| (x.address.clone(), x)) + .collect(); + + let snapshot = Snapshot { states, vm_storage }; + + let state_msgs: HashMap = HashMap::from([( + String::from("test_protocol"), + StateSyncMessage { + header: Header { + hash: Default::default(), + number: stop_block, + parent_hash: Default::default(), + revert: false, + }, + snapshots: snapshot, + deltas: None, + removed_components: HashMap::new(), + }, + )]); + + let stream_message: FeedMessage = FeedMessage { state_msgs, sync_states: Default::default() }; } diff --git a/protocol-testing/src/tycho_runner.rs b/protocol-testing/src/tycho_runner.rs index 04da64a..0542dfa 100644 --- a/protocol-testing/src/tycho_runner.rs +++ b/protocol-testing/src/tycho_runner.rs @@ -99,10 +99,11 @@ impl TychoRunner { func: F, expected_components: &Vec, start_block: u64, + stop_block: u64, skip_balance_check: bool, ) -> R where - F: FnOnce(&Vec, u64, bool) -> R, + F: FnOnce(&Vec, u64, u64, bool) -> R, { let (tx, rx): (Sender, Receiver) = mpsc::channel(); let db_url = self.db_url.clone(); @@ -141,7 +142,7 @@ impl TychoRunner { thread::sleep(Duration::from_secs(3)); // Run the provided function - let result = func(expected_components, start_block, skip_balance_check); + let result = func(expected_components, start_block, stop_block, skip_balance_check); tx.send(true) .expect("Failed to send termination message"); diff --git a/protocol-testing/src/utils.rs b/protocol-testing/src/utils.rs index 0902344..281fc69 100644 --- a/protocol-testing/src/utils.rs +++ b/protocol-testing/src/utils.rs @@ -1,4 +1,5 @@ use std::{ + env, error::Error, fs, path::{Path, PathBuf}, @@ -10,6 +11,7 @@ use figment::{ value::Value, Figment, }; +use tracing::error; /// Build a Substreams package with modifications to the YAML file. pub fn build_spkg(yaml_file_path: &PathBuf, initial_block: u64) -> Result> { @@ -55,6 +57,7 @@ pub fn build_spkg(yaml_file_path: &PathBuf, initial_block: u64) -> Result Result { if !output.status.success() { - println!( + error!( "Substreams pack command failed: {}", String::from_utf8_lossy(&output.stderr) ); } } Err(e) => { - println!("Error running substreams pack command: {}", e); + error!("Error running substreams pack command: {}. \ + Ensure that the wasm target was built and that substreams CLI\ + is installed and exported on PATH", e); } }