diff --git a/Cargo.lock b/Cargo.lock index 47d0cdfb71..af208196a3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -118,9 +118,9 @@ checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" [[package]] name = "alloy" -version = "0.2.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f4a4aaae80afd4be443a6aecd92a6b255dcdd000f97996928efb33d8a71e100" +checksum = "056f2c01b2aed86e15b43c47d109bfc8b82553dc34e66452875e51247ec31ab2" dependencies = [ "alloy-consensus", "alloy-contract", @@ -151,23 +151,25 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "0.2.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04c309895995eaa4bfcc345f5515a39c7df9447798645cc8bf462b6c5bf1dc96" +checksum = "705687d5bfd019fee57cf9e206b27b30a9a9617535d5590a02b171e813208f8e" dependencies = [ "alloy-eips", "alloy-primitives", "alloy-rlp", "alloy-serde", + "auto_impl", "c-kzg", + "derive_more", "serde", ] [[package]] name = "alloy-contract" -version = "0.2.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f4e0ef72b0876ae3068b2ed7dfae9ae1779ce13cfaec2ee1f08f5bd0348dc57" +checksum = "917f7d12cf3971dc8c11c9972f732b35ccb9aaaf5f28f2f87e9e6523bee3a8ad" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -185,21 +187,22 @@ dependencies = [ [[package]] name = "alloy-core" -version = "0.7.7" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "529fc6310dc1126c8de51c376cbc59c79c7f662bd742be7dc67055d5421a81b4" +checksum = "5ce854562e7cafd5049189d0268d6e5cba05fe6c9cb7c6f8126a79b94800629c" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", "alloy-primitives", + "alloy-rlp", "alloy-sol-types", ] [[package]] name = "alloy-dyn-abi" -version = "0.7.7" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413902aa18a97569e60f679c23f46a18db1656d87ab4d4e49d0e1e52042f66df" +checksum = "0b499852e1d0e9b8c6db0f24c48998e647c0d5762a01090f955106a7700e4611" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -212,16 +215,41 @@ dependencies = [ "winnow", ] +[[package]] +name = "alloy-eip2930" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0069cf0642457f87a01a014f6dc29d5d893cd4fd8fddf0c3cdfad1bb3ebafc41" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "serde", +] + +[[package]] +name = "alloy-eip7702" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea59dc42102bc9a1905dc57901edc6dd48b9f38115df86c7d252acba70d71d04" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "serde", +] + [[package]] name = "alloy-eips" -version = "0.2.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9431c99a3b3fe606ede4b3d4043bdfbcb780c45b8d8d226c3804e2b75cfbe68" +checksum = "6ffb906284a1e1f63c4607da2068c8197458a352d0b3e9796e67353d72a9be85" dependencies = [ + "alloy-eip2930", + "alloy-eip7702", "alloy-primitives", "alloy-rlp", "alloy-serde", "c-kzg", + "derive_more", "once_cell", "serde", "sha2 0.10.8", @@ -229,9 +257,9 @@ dependencies = [ [[package]] name = "alloy-genesis" -version = "0.2.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79614dfe86144328da11098edcc7bc1a3f25ad8d3134a9eb9e857e06f0d9840d" +checksum = "8429cf4554eed9b40feec7f4451113e76596086447550275e3def933faf47ce3" dependencies = [ "alloy-primitives", "alloy-serde", @@ -240,9 +268,9 @@ dependencies = [ [[package]] name = "alloy-json-abi" -version = "0.7.7" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc05b04ac331a9f07e3a4036ef7926e49a8bf84a99a1ccfc7e2ab55a5fcbb372" +checksum = "a438d4486b5d525df3b3004188f9d5cd1d65cd30ecc41e5a3ccef6f6342e8af9" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -252,9 +280,9 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "0.2.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57e2865c4c3bb4cdad3f0d9ec1ab5c0c657ba69a375651bd35e32fb6c180ccc2" +checksum = "f8fa8a1a3c4cbd221f2b8e3693aeb328fca79a757fe556ed08e47bbbc2a70db7" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -266,9 +294,9 @@ dependencies = [ [[package]] name = "alloy-network" -version = "0.2.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e701fc87ef9a3139154b0b4ccb935b565d27ffd9de020fe541bf2dec5ae4ede" +checksum = "85fa23a6a9d612b52e402c995f2d582c25165ec03ac6edf64c861a76bc5b87cd" dependencies = [ "alloy-consensus", "alloy-eips", @@ -287,10 +315,12 @@ dependencies = [ [[package]] name = "alloy-network-primitives" -version = "0.2.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec9d5a0f9170b10988b6774498a022845e13eda94318440d17709d50687f67f9" +checksum = "801492711d4392b2ccf5fc0bc69e299fa1aab15167d74dcaa9aab96a54f684bd" dependencies = [ + "alloy-consensus", + "alloy-eips", "alloy-primitives", "alloy-serde", "serde", @@ -298,13 +328,14 @@ dependencies = [ [[package]] name = "alloy-node-bindings" -version = "0.2.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16faebb9ea31a244fd6ce3288d47df4be96797d9c3c020144b8f2c31543a4512" +checksum = "4f1334a738aa1710cb8227441b3fcc319202ce78e967ef37406940242df4a454" dependencies = [ "alloy-genesis", "alloy-primitives", "k256", + "rand 0.8.5", "serde_json", "tempfile", "thiserror", @@ -314,31 +345,36 @@ dependencies = [ [[package]] name = "alloy-primitives" -version = "0.7.7" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccb3ead547f4532bc8af961649942f0b9c16ee9226e26caa3f38420651cc0bf4" +checksum = "260d3ff3bff0bb84599f032a2f2c6828180b0ea0cd41fdaf44f39cef3ba41861" dependencies = [ "alloy-rlp", "bytes", "cfg-if", "const-hex", "derive_more", + "hashbrown 0.14.5", "hex-literal", + "indexmap 2.5.0", "itoa", "k256", "keccak-asm", + "paste", "proptest", "rand 0.8.5", "ruint", + "rustc-hash", "serde", + "sha3 0.10.8", "tiny-keccak", ] [[package]] name = "alloy-provider" -version = "0.2.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9c0ab10b93de601a6396fc7ff2ea10d3b28c46f079338fa562107ebf9857c8" +checksum = "fcfaa4ffec0af04e3555686b8aacbcdf7d13638133a0672749209069750f78a6" dependencies = [ "alloy-chains", "alloy-consensus", @@ -365,6 +401,7 @@ dependencies = [ "reqwest 0.12.7", "serde", "serde_json", + "thiserror", "tokio", "tracing", "url", @@ -394,11 +431,12 @@ dependencies = [ [[package]] name = "alloy-rpc-client" -version = "0.2.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b38e3ffdb285df5d9f60cb988d336d9b8e3505acb78750c3bc60336a7af41d3" +checksum = "370143ed581aace6e663342d21d209c6b2e34ee6142f7d6675adb518deeaf0dc" dependencies = [ "alloy-json-rpc", + "alloy-primitives", "alloy-transport", "alloy-transport-http", "futures", @@ -408,17 +446,18 @@ dependencies = [ "serde_json", "tokio", "tokio-stream", - "tower", + "tower 0.5.1", "tracing", "url", ] [[package]] name = "alloy-rpc-types" -version = "0.2.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c31a3750b8f5a350d17354e46a52b0f2f19ec5f2006d816935af599dedc521" +checksum = "9ffc534b7919e18f35e3aa1f507b6f3d9d92ec298463a9f6beaac112809d8d06" dependencies = [ + "alloy-primitives", "alloy-rpc-types-anvil", "alloy-rpc-types-eth", "alloy-serde", @@ -427,9 +466,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" -version = "0.2.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ab6509cd38b2e8c8da726e0f61c1e314a81df06a38d37ddec8bced3f8d25ed" +checksum = "d780adaa5d95b07ad92006b2feb68ecfa7e2015f7d5976ceaac4c906c73ebd07" dependencies = [ "alloy-primitives", "alloy-serde", @@ -438,9 +477,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" -version = "0.2.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81e18424d962d7700a882fe423714bd5b9dde74c7a7589d4255ea64068773aef" +checksum = "413f4aa3ccf2c3e4234a047c5fa4727916d7daf25a89f9b765df0ba09784fd87" dependencies = [ "alloy-consensus", "alloy-eips", @@ -449,17 +488,17 @@ dependencies = [ "alloy-rlp", "alloy-serde", "alloy-sol-types", + "derive_more", "itertools 0.13.0", "serde", "serde_json", - "thiserror", ] [[package]] name = "alloy-serde" -version = "0.2.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e33feda6a53e6079895aed1d08dcb98a1377b000d80d16370fbbdb8155d547ef" +checksum = "9dff0ab1cdd43ca001e324dc27ee0e8606bd2161d6623c63e0e0b8c4dfc13600" dependencies = [ "alloy-primitives", "serde", @@ -468,9 +507,9 @@ dependencies = [ [[package]] name = "alloy-signer" -version = "0.2.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "740a25b92e849ed7b0fa013951fe2f64be9af1ad5abe805037b44fb7770c5c47" +checksum = "2fd4e0ad79c81a27ca659be5d176ca12399141659fef2bcbfdc848da478f4504" dependencies = [ "alloy-primitives", "async-trait", @@ -482,9 +521,9 @@ dependencies = [ [[package]] name = "alloy-signer-local" -version = "0.2.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b0707d4f63e4356a110b30ef3add8732ab6d181dd7be4607bf79b8777105cee" +checksum = "494e0a256f3e99f2426f994bcd1be312c02cb8f88260088dacb33a8b8936475f" dependencies = [ "alloy-consensus", "alloy-network", @@ -498,13 +537,13 @@ dependencies = [ [[package]] name = "alloy-sol-macro" -version = "0.7.7" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b40397ddcdcc266f59f959770f601ce1280e699a91fc1862f29cef91707cd09" +checksum = "68e7f6e8fe5b443f82b3f1e15abfa191128f71569148428e49449d01f6f49e8b" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", - "proc-macro-error", + "proc-macro-error2", "proc-macro2", "quote", "syn 2.0.77", @@ -512,16 +551,16 @@ dependencies = [ [[package]] name = "alloy-sol-macro-expander" -version = "0.7.7" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "867a5469d61480fea08c7333ffeca52d5b621f5ca2e44f271b117ec1fc9a0525" +checksum = "6b96ce28d2fde09abb6135f410c41fad670a3a770b6776869bd852f1df102e6f" dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", "const-hex", "heck 0.5.0", "indexmap 2.5.0", - "proc-macro-error", + "proc-macro-error2", "proc-macro2", "quote", "syn 2.0.77", @@ -531,9 +570,9 @@ dependencies = [ [[package]] name = "alloy-sol-macro-input" -version = "0.7.7" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e482dc33a32b6fadbc0f599adea520bd3aaa585c141a80b404d0a3e3fa72528" +checksum = "906746396a8296537745711630d9185746c0b50c033d5e9d18b0a6eba3d53f90" dependencies = [ "alloy-json-abi", "const-hex", @@ -548,9 +587,9 @@ dependencies = [ [[package]] name = "alloy-sol-type-parser" -version = "0.7.7" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbcba3ca07cf7975f15d871b721fb18031eec8bce51103907f6dcce00b255d98" +checksum = "bc85178909a49c8827ffccfc9103a7ce1767ae66a801b69bdc326913870bf8e6" dependencies = [ "serde", "winnow", @@ -558,9 +597,9 @@ dependencies = [ [[package]] name = "alloy-sol-types" -version = "0.7.7" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a91ca40fa20793ae9c3841b83e74569d1cc9af29a2f5237314fd3452d51e38c7" +checksum = "d86a533ce22525969661b25dfe296c112d35eb6861f188fd284f8bd4bb3842ae" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -571,9 +610,9 @@ dependencies = [ [[package]] name = "alloy-transport" -version = "0.2.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d0590afbdacf2f8cca49d025a2466f3b6584a016a8b28f532f29f8da1007bae" +checksum = "2ac3e97dad3d31770db0fc89bd6a63b789fbae78963086733f960cf32c483904" dependencies = [ "alloy-json-rpc", "base64 0.22.1", @@ -583,22 +622,22 @@ dependencies = [ "serde_json", "thiserror", "tokio", - "tower", + "tower 0.5.1", "tracing", "url", ] [[package]] name = "alloy-transport-http" -version = "0.2.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2437d145d80ea1aecde8574d2058cceb8b3c9cba05f6aea8e67907c660d46698" +checksum = "b367dcccada5b28987c2296717ee04b9a5637aacd78eacb1726ef211678b5212" dependencies = [ "alloy-json-rpc", "alloy-transport", "reqwest 0.12.7", "serde_json", - "tower", + "tower 0.5.1", "tracing", "url", ] @@ -1096,7 +1135,7 @@ dependencies = [ "rustversion", "serde", "sync_wrapper 0.1.2", - "tower", + "tower 0.4.13", "tower-layer", "tower-service", ] @@ -1802,7 +1841,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7328b20597b53c2454f0b1919720c25c7339051c02b72b7e05409e00b14132be" dependencies = [ "async-trait", - "convert_case 0.6.0", + "convert_case", "json5", "lazy_static", "nom", @@ -1883,12 +1922,6 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" -[[package]] -name = "convert_case" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" - [[package]] name = "convert_case" version = "0.6.0" @@ -2233,11 +2266,12 @@ dependencies = [ [[package]] name = "dashmap" -version = "5.5.3" +version = "6.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" dependencies = [ "cfg-if", + "crossbeam-utils", "hashbrown 0.14.5", "lock_api", "once_cell", @@ -2346,15 +2380,23 @@ dependencies = [ [[package]] name = "derive_more" -version = "0.99.18" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ - "convert_case 0.4.0", "proc-macro2", "quote", - "rustc_version 0.4.1", "syn 2.0.77", + "unicode-xid", ] [[package]] @@ -3763,6 +3805,7 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ "ahash", "allocator-api2", + "serde", ] [[package]] @@ -4132,7 +4175,7 @@ dependencies = [ "pin-project-lite", "socket2", "tokio", - "tower", + "tower 0.4.13", "tower-service", "tracing", ] @@ -4294,6 +4337,7 @@ checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" dependencies = [ "equivalent", "hashbrown 0.14.5", + "serde", ] [[package]] @@ -6461,6 +6505,28 @@ dependencies = [ "version_check", ] +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "proc-macro2" version = "1.0.86" @@ -6782,6 +6848,7 @@ dependencies = [ "libc", "rand_chacha 0.3.1", "rand_core 0.6.4", + "serde", ] [[package]] @@ -7817,6 +7884,16 @@ dependencies = [ "opaque-debug 0.3.1", ] +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + [[package]] name = "sha3-asm" version = "0.1.4" @@ -8020,7 +8097,7 @@ dependencies = [ "serde_derive", "sha2 0.8.2", "sha2 0.9.9", - "sha3", + "sha3 0.9.1", "thiserror", "typenum", "zeroize", @@ -8518,9 +8595,9 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "0.7.7" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c837dc8852cb7074e46b444afb81783140dab12c58867b49fb3898fbafedf7ea" +checksum = "0ab661c8148c2261222a4d641ad5477fd4bea79406a99056096a0b41b35617a5" dependencies = [ "paste", "proc-macro2", @@ -8971,7 +9048,7 @@ dependencies = [ "tokio-rustls 0.22.0", "tokio-stream", "tokio-util 0.6.10", - "tower", + "tower 0.4.13", "tower-layer", "tower-service", "tracing", @@ -9000,7 +9077,7 @@ dependencies = [ "prost 0.11.9", "tokio", "tokio-stream", - "tower", + "tower 0.4.13", "tower-layer", "tower-service", "tracing", @@ -9038,6 +9115,20 @@ dependencies = [ "tracing", ] +[[package]] +name = "tower" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper 0.1.2", + "tower-layer", + "tower-service", +] + [[package]] name = "tower-layer" version = "0.3.3" diff --git a/evmlib/Cargo.toml b/evmlib/Cargo.toml index 79c2170270..14880f3455 100644 --- a/evmlib/Cargo.toml +++ b/evmlib/Cargo.toml @@ -9,7 +9,7 @@ repository = "https://github.com/maidsafe/safe_network" version = "0.1.0" [dependencies] -alloy = { version = "0.2", default-features = false, features = ["std", "reqwest-rustls-tls", "provider-anvil-node", "sol-types", "json", "signers", "contract", "signer-local", "network"] } +alloy = { version = "0.4.2", default-features = false, features = ["std", "reqwest-rustls-tls", "provider-anvil-node", "sol-types", "json", "signers", "contract", "signer-local", "network"] } serde = "1.0" thiserror = "1.0" tokio = "1.38.0" diff --git a/evmlib/src/contract/chunk_payments/error.rs b/evmlib/src/contract/chunk_payments/error.rs index 9e0770a0a8..84bd2c6c9a 100644 --- a/evmlib/src/contract/chunk_payments/error.rs +++ b/evmlib/src/contract/chunk_payments/error.rs @@ -9,6 +9,8 @@ pub enum Error { RpcError(#[from] RpcError), #[error(transparent)] NetworkTokenError(#[from] network_token::Error), + #[error(transparent)] + PendingTransactionError(#[from] alloy::providers::PendingTransactionError), #[error("The transfer limit of 256 has been exceeded")] TransferLimitExceeded, } diff --git a/evmlib/src/contract/chunk_payments/mod.rs b/evmlib/src/contract/chunk_payments/mod.rs index 9a8378c4bd..1d92dd035f 100644 --- a/evmlib/src/contract/chunk_payments/mod.rs +++ b/evmlib/src/contract/chunk_payments/mod.rs @@ -3,7 +3,7 @@ pub mod error; use crate::common; use crate::common::{Address, TxHash}; use crate::contract::chunk_payments::error::Error; -use crate::contract::chunk_payments::ChunkPaymentsContract::ChunkPaymentsContractInstance; +use crate::contract::chunk_payments::DataPaymentsContract::DataPaymentsContractInstance; use alloy::providers::{Network, Provider}; use alloy::sol; use alloy::transports::Transport; @@ -15,15 +15,15 @@ sol!( #[allow(clippy::too_many_arguments)] #[allow(missing_docs)] #[sol(rpc)] - ChunkPaymentsContract, + DataPaymentsContract, "artifacts/ChunkPayments.json" ); -pub struct ChunkPayments, N: Network> { - pub contract: ChunkPaymentsContractInstance, +pub struct DataPayments, N: Network> { + pub contract: DataPaymentsContractInstance, } -impl ChunkPayments +impl DataPayments where T: Transport + Clone, P: Provider, @@ -31,23 +31,23 @@ where { /// Create a new ChunkPayments contract instance. pub fn new(contract_address: Address, provider: P) -> Self { - let contract = ChunkPaymentsContract::new(contract_address, provider); - ChunkPayments { contract } + let contract = DataPaymentsContract::new(contract_address, provider); + DataPayments { contract } } /// Deploys the ChunkPayments smart contract to the network of the provider. /// ONLY DO THIS IF YOU KNOW WHAT YOU ARE DOING! pub async fn deploy(provider: P, payment_token_address: Address) -> Self { - let contract = ChunkPaymentsContract::deploy(provider, payment_token_address) + let contract = DataPaymentsContract::deploy(provider, payment_token_address) .await .expect("Could not deploy contract"); - ChunkPayments { contract } + DataPayments { contract } } pub fn set_provider(&mut self, provider: P) { let address = *self.contract.address(); - self.contract = ChunkPaymentsContract::new(address, provider); + self.contract = DataPaymentsContract::new(address, provider); } /// Pay for quotes. @@ -56,9 +56,9 @@ where &self, chunk_payments: I, ) -> Result { - let chunk_payments: Vec = chunk_payments + let chunk_payments: Vec = chunk_payments .into_iter() - .map(|(hash, addr, amount)| ChunkPaymentsContract::ChunkPayment { + .map(|(hash, addr, amount)| ChunkPayments::ChunkPayment { rewardAddress: addr, amount, quoteHash: hash, diff --git a/evmlib/src/contract/network_token.rs b/evmlib/src/contract/network_token.rs index 588f5eb12d..0b02a7be8d 100644 --- a/evmlib/src/contract/network_token.rs +++ b/evmlib/src/contract/network_token.rs @@ -18,6 +18,8 @@ pub enum Error { ContractError(#[from] alloy::contract::Error), #[error(transparent)] RpcError(#[from] RpcError), + #[error(transparent)] + PendingTransactionError(#[from] alloy::providers::PendingTransactionError), } pub struct NetworkToken, N: Network> { diff --git a/evmlib/src/testnet.rs b/evmlib/src/testnet.rs index 015ee035c1..06e5da1361 100644 --- a/evmlib/src/testnet.rs +++ b/evmlib/src/testnet.rs @@ -1,12 +1,14 @@ use crate::common::Address; -use crate::contract::chunk_payments::ChunkPayments; +use crate::contract::chunk_payments::DataPayments; use crate::contract::network_token::NetworkToken; use crate::{CustomNetwork, Network}; use alloy::hex::ToHexExt; use alloy::network::{Ethereum, EthereumWallet}; use alloy::node_bindings::{Anvil, AnvilInstance}; -use alloy::providers::fillers::{FillProvider, JoinFill, RecommendedFiller, WalletFiller}; -use alloy::providers::{ProviderBuilder, ReqwestProvider}; +use alloy::providers::fillers::{ + BlobGasFiller, ChainIdFiller, FillProvider, GasFiller, JoinFill, NonceFiller, WalletFiller, +}; +use alloy::providers::{Identity, ProviderBuilder, ReqwestProvider}; use alloy::signers::local::PrivateKeySigner; use alloy::transports::http::{Client, Http}; @@ -67,7 +69,13 @@ pub async fn deploy_network_token_contract( ) -> NetworkToken< Http, FillProvider< - JoinFill>, + JoinFill< + JoinFill< + Identity, + JoinFill>>, + >, + WalletFiller, + >, ReqwestProvider, Http, Ethereum, @@ -92,10 +100,16 @@ pub async fn deploy_network_token_contract( pub async fn deploy_chunk_payments_contract( anvil: &AnvilInstance, token_address: Address, -) -> ChunkPayments< +) -> DataPayments< Http, FillProvider< - JoinFill>, + JoinFill< + JoinFill< + Identity, + JoinFill>>, + >, + WalletFiller, + >, ReqwestProvider, Http, Ethereum, @@ -114,5 +128,5 @@ pub async fn deploy_chunk_payments_contract( .on_http(rpc_url); // Deploy the contract. - ChunkPayments::deploy(provider, token_address).await + DataPayments::deploy(provider, token_address).await } diff --git a/evmlib/src/wallet.rs b/evmlib/src/wallet.rs index 498eb3afc2..dfc79ff990 100644 --- a/evmlib/src/wallet.rs +++ b/evmlib/src/wallet.rs @@ -1,13 +1,13 @@ use std::collections::BTreeMap; use crate::common::{Address, QuoteHash, QuotePayment, TxHash, U256}; -use crate::contract::chunk_payments::{ChunkPayments, MAX_TRANSFERS_PER_TRANSACTION}; +use crate::contract::chunk_payments::{DataPayments, MAX_TRANSFERS_PER_TRANSACTION}; use crate::contract::network_token::NetworkToken; use crate::contract::{chunk_payments, network_token}; use crate::Network; use alloy::network::{Ethereum, EthereumWallet, NetworkWallet, TransactionBuilder}; use alloy::providers::fillers::{ - ChainIdFiller, FillProvider, GasFiller, JoinFill, NonceFiller, RecommendedFiller, WalletFiller, + BlobGasFiller, ChainIdFiller, FillProvider, GasFiller, JoinFill, NonceFiller, WalletFiller, }; use alloy::providers::{Identity, Provider, ProviderBuilder, ReqwestProvider}; use alloy::rpc::types::TransactionRequest; @@ -123,7 +123,10 @@ fn from_private_key(private_key: &str) -> Result { fn http_provider( rpc_url: reqwest::Url, ) -> FillProvider< - JoinFill, NonceFiller>, ChainIdFiller>, + JoinFill< + Identity, + JoinFill>>, + >, ReqwestProvider, Http, Ethereum, @@ -133,11 +136,18 @@ fn http_provider( .on_http(rpc_url) } +#[allow(clippy::type_complexity)] fn http_provider_with_wallet( rpc_url: reqwest::Url, wallet: EthereumWallet, ) -> FillProvider< - JoinFill>, + JoinFill< + JoinFill< + Identity, + JoinFill>>, + >, + WalletFiller, + >, ReqwestProvider, Http, Ethereum, @@ -241,7 +251,7 @@ pub async fn pay_for_quotes>( .map_err(|err| PayForQuotesError(Error::from(err), tx_hashes_by_quote.clone()))?; let provider = http_provider_with_wallet(network.rpc_url().clone(), wallet); - let chunk_payments = ChunkPayments::new(*network.chunk_payments_address(), provider); + let chunk_payments = DataPayments::new(*network.chunk_payments_address(), provider); // Divide transfers over multiple transactions if they exceed the max per transaction. let chunks = payments.chunks(MAX_TRANSFERS_PER_TRANSACTION); diff --git a/evmlib/tests/chunk_payments.rs b/evmlib/tests/chunk_payments.rs index 244cceab43..e101e57e15 100644 --- a/evmlib/tests/chunk_payments.rs +++ b/evmlib/tests/chunk_payments.rs @@ -5,12 +5,14 @@ use alloy::network::{Ethereum, EthereumWallet}; use alloy::node_bindings::AnvilInstance; use alloy::primitives::utils::parse_ether; use alloy::providers::ext::AnvilApi; -use alloy::providers::fillers::{FillProvider, JoinFill, RecommendedFiller, WalletFiller}; -use alloy::providers::{ProviderBuilder, ReqwestProvider, WalletProvider}; +use alloy::providers::fillers::{ + BlobGasFiller, ChainIdFiller, FillProvider, GasFiller, JoinFill, NonceFiller, WalletFiller, +}; +use alloy::providers::{Identity, ProviderBuilder, ReqwestProvider, WalletProvider}; use alloy::signers::local::{LocalSigner, PrivateKeySigner}; use alloy::transports::http::{Client, Http}; use evmlib::common::U256; -use evmlib::contract::chunk_payments::{ChunkPayments, MAX_TRANSFERS_PER_TRANSACTION}; +use evmlib::contract::chunk_payments::{DataPayments, MAX_TRANSFERS_PER_TRANSACTION}; use evmlib::contract::network_token::NetworkToken; use evmlib::testnet::{deploy_chunk_payments_contract, deploy_network_token_contract, start_node}; use evmlib::wallet::wallet_address; @@ -20,17 +22,35 @@ async fn setup() -> ( NetworkToken< Http, FillProvider< - JoinFill>, + JoinFill< + JoinFill< + Identity, + JoinFill< + GasFiller, + JoinFill>, + >, + >, + WalletFiller, + >, ReqwestProvider, Http, Ethereum, >, Ethereum, >, - ChunkPayments< + DataPayments< Http, FillProvider< - JoinFill>, + JoinFill< + JoinFill< + Identity, + JoinFill< + GasFiller, + JoinFill>, + >, + >, + WalletFiller, + >, ReqwestProvider, Http, Ethereum, @@ -54,7 +74,13 @@ async fn setup() -> ( async fn provider_with_gas_funded_wallet( anvil: &AnvilInstance, ) -> FillProvider< - JoinFill>, + JoinFill< + JoinFill< + Identity, + JoinFill>>, + >, + WalletFiller, + >, ReqwestProvider, Http, Ethereum, diff --git a/evmlib/tests/network_token.rs b/evmlib/tests/network_token.rs index 4f7a521abd..40ea9ba041 100644 --- a/evmlib/tests/network_token.rs +++ b/evmlib/tests/network_token.rs @@ -3,8 +3,10 @@ mod common; use alloy::network::{Ethereum, EthereumWallet, NetworkWallet}; use alloy::node_bindings::AnvilInstance; use alloy::primitives::U256; -use alloy::providers::fillers::{FillProvider, JoinFill, RecommendedFiller, WalletFiller}; -use alloy::providers::{ReqwestProvider, WalletProvider}; +use alloy::providers::fillers::{ + BlobGasFiller, ChainIdFiller, FillProvider, GasFiller, JoinFill, NonceFiller, WalletFiller, +}; +use alloy::providers::{Identity, ReqwestProvider, WalletProvider}; use alloy::signers::local::PrivateKeySigner; use alloy::transports::http::{Client, Http}; use evmlib::contract::network_token::NetworkToken; @@ -17,7 +19,16 @@ async fn setup() -> ( NetworkToken< Http, FillProvider< - JoinFill>, + JoinFill< + JoinFill< + Identity, + JoinFill< + GasFiller, + JoinFill>, + >, + >, + WalletFiller, + >, ReqwestProvider, Http, Ethereum,