diff --git a/.gitignore b/.gitignore index 07d1eefc0..bf4f3d9f7 100644 --- a/.gitignore +++ b/.gitignore @@ -48,6 +48,9 @@ madara.log starknet-e2e-test/contracts/cache starknet-e2e-test/contracts/build +# proptest report +**/proptest-regressions/ + # vscode settings .vscode/settings.json diff --git a/CHANGELOG.md b/CHANGELOG.md index 21f3007a9..06d9f4f49 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## Next release +- feat: declare v0, l1 handler support added - feat: strk gas price cli param added - fix(snos): added special address while closing block for SNOS - fix(mempool): validator errors were ignored in `mempool/rsc/lib.rs` diff --git a/Cargo.lock b/Cargo.lock index 67b1651d1..7c8b128f0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,18 +4,18 @@ version = 3 [[package]] name = "addr2line" -version = "0.22.0" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "gimli", ] [[package]] -name = "adler" -version = "1.0.2" +name = "adler2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] name = "aes" @@ -57,15 +57,16 @@ 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", "alloy-core", "alloy-eips", "alloy-genesis", + "alloy-network", "alloy-node-bindings", "alloy-provider", "alloy-rpc-client", @@ -77,33 +78,36 @@ dependencies = [ [[package]] name = "alloy-chains" -version = "0.1.24" +version = "0.1.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47ff94ce0f141c2671c23d02c7b88990dd432856639595c5d010663d017c2c58" +checksum = "c54e2fbc026948a0f638bf6a94fc0ce6e44652280fed40bb0dd970e3357bc5f2" dependencies = [ + "alloy-primitives", "num_enum", - "strum 0.26.2", + "strum 0.26.3", ] [[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 1.0.0", "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", @@ -121,21 +125,22 @@ dependencies = [ [[package]] name = "alloy-core" -version = "0.7.7" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "529fc6310dc1126c8de51c376cbc59c79c7f662bd742be7dc67055d5421a81b4" +checksum = "eeb750349efda145ca6aada68d0336067f7f364d7d44ef09e2cf000b040c5e99" 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.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413902aa18a97569e60f679c23f46a18db1656d87ab4d4e49d0e1e52042f66df" +checksum = "f95d76a38cae906fd394a5afb0736aaceee5432efe76addfd71048e623e208af" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -145,19 +150,44 @@ dependencies = [ "itoa", "serde", "serde_json", - "winnow 0.6.13", + "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 1.0.0", "once_cell", "serde", "sha2", @@ -165,9 +195,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", @@ -176,9 +206,9 @@ dependencies = [ [[package]] name = "alloy-json-abi" -version = "0.7.7" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc05b04ac331a9f07e3a4036ef7926e49a8bf84a99a1ccfc7e2ab55a5fcbb372" +checksum = "03c66eec1acdd96b39b995b8f5ee5239bc0c871d62c527ae1ac9fd1d7fecd455" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -188,9 +218,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", @@ -202,9 +232,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", @@ -223,10 +253,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", @@ -234,13 +266,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", "serde_json", "tempfile", "thiserror", @@ -250,31 +283,37 @@ dependencies = [ [[package]] name = "alloy-primitives" -version = "0.7.7" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccb3ead547f4532bc8af961649942f0b9c16ee9226e26caa3f38420651cc0bf4" +checksum = "8ecb848c43f6b06ae3de2e4a67496cbbabd78ae87db0f1248934f15d76192c6a" dependencies = [ "alloy-rlp", "bytes", "cfg-if", "const-hex", - "derive_more", + "derive_more 1.0.0", + "foldhash", + "hashbrown 0.15.0", "hex-literal", + "indexmap 2.6.0", "itoa", "k256", "keccak-asm", + "paste", "proptest", "rand", "ruint", + "rustc-hash 2.0.0", "serde", + "sha3", "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", @@ -293,14 +332,15 @@ dependencies = [ "async-stream", "async-trait", "auto_impl", - "dashmap", + "dashmap 6.1.0", "futures", "futures-utils-wasm", "lru", "pin-project", - "reqwest 0.12.5", + "reqwest 0.12.8", "serde", "serde_json", + "thiserror", "tokio", "tracing", "url", @@ -308,9 +348,9 @@ dependencies = [ [[package]] name = "alloy-rlp" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a43b18702501396fa9bcdeecd533bc85fac75150d308fc0f6800a01e6234a003" +checksum = "26154390b1d205a4a7ac7352aa2eb4f81f391399d4e2f546fb81a2f8bb383f62" dependencies = [ "alloy-rlp-derive", "arrayvec", @@ -319,42 +359,44 @@ dependencies = [ [[package]] name = "alloy-rlp-derive" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d83524c1f6162fcb5b0decf775498a125066c86dda6066ed609531b0e912f85a" +checksum = "4d0f2d905ebd295e7effec65e5f6868d153936130ae718352771de3e7d03c75c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[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", "pin-project", - "reqwest 0.12.5", + "reqwest 0.12.8", "serde", "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-eth", "alloy-serde", "serde", @@ -362,9 +404,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", @@ -373,9 +415,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", @@ -384,17 +426,17 @@ dependencies = [ "alloy-rlp", "alloy-serde", "alloy-sol-types", + "derive_more 1.0.0", "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", @@ -403,9 +445,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", @@ -417,9 +459,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", @@ -433,42 +475,42 @@ dependencies = [ [[package]] name = "alloy-sol-macro" -version = "0.7.7" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b40397ddcdcc266f59f959770f601ce1280e699a91fc1862f29cef91707cd09" +checksum = "661c516eb1fa3294cc7f2fb8955b3b609d639c282ac81a4eedb14d3046db503a" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", - "proc-macro-error", + "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] name = "alloy-sol-macro-expander" -version = "0.7.7" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "867a5469d61480fea08c7333ffeca52d5b621f5ca2e44f271b117ec1fc9a0525" +checksum = "ecbabb8fc3d75a0c2cea5215be22e7a267e3efde835b0f2a8922f5e3f5d47683" dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", "const-hex", "heck 0.5.0", - "indexmap 2.2.6", - "proc-macro-error", + "indexmap 2.6.0", + "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", "syn-solidity", "tiny-keccak", ] [[package]] name = "alloy-sol-macro-input" -version = "0.7.7" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e482dc33a32b6fadbc0f599adea520bd3aaa585c141a80b404d0a3e3fa72528" +checksum = "16517f2af03064485150d89746b8ffdcdbc9b6eeb3d536fb66efd7c2846fbc75" dependencies = [ "alloy-json-abi", "const-hex", @@ -477,25 +519,25 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.66", + "syn 2.0.79", "syn-solidity", ] [[package]] name = "alloy-sol-type-parser" -version = "0.7.7" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbcba3ca07cf7975f15d871b721fb18031eec8bce51103907f6dcce00b255d98" +checksum = "c07ebb0c1674ff8cbb08378d7c2e0e27919d2a2dae07ad3bca26174deda8d389" dependencies = [ "serde", - "winnow 0.6.13", + "winnow", ] [[package]] name = "alloy-sol-types" -version = "0.7.7" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a91ca40fa20793ae9c3841b83e74569d1cc9af29a2f5237314fd3452d51e38c7" +checksum = "8e448d879903624863f608c552d10efb0e0905ddbee98b0049412799911eb062" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -506,9 +548,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", @@ -518,22 +560,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.5", + "reqwest 0.12.8", "serde_json", - "tower", + "tower 0.5.1", "tracing", "url", ] @@ -555,9 +597,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.14" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" dependencies = [ "anstyle", "anstyle-parse", @@ -570,33 +612,33 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" [[package]] name = "anstyle-parse" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" dependencies = [ "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.3" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" dependencies = [ "anstyle", "windows-sys 0.52.0", @@ -604,9 +646,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.86" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" [[package]] name = "ark-ec" @@ -659,7 +701,7 @@ dependencies = [ "num-bigint", "num-traits 0.2.19", "paste", - "rustc_version 0.4.0", + "rustc_version 0.4.1", "zeroize", ] @@ -798,9 +840,9 @@ dependencies = [ [[package]] name = "arrayvec" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "ascii-canvas" @@ -862,14 +904,14 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.13.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7ebdfa2ebdab6b1760375fa7d6f382b9f486eac35fc994625a00e89280bdbb7" +checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" dependencies = [ "async-task", "concurrent-queue", - "fastrand 2.1.0", - "futures-lite 2.3.0", + "fastrand", + "futures-lite", "slab", ] @@ -881,59 +923,30 @@ checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" dependencies = [ "async-channel 2.3.1", "async-executor", - "async-io 2.3.3", - "async-lock 3.4.0", + "async-io", + "async-lock", "blocking", - "futures-lite 2.3.0", + "futures-lite", "once_cell", ] [[package]] name = "async-io" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" -dependencies = [ - "async-lock 2.8.0", - "autocfg", - "cfg-if", - "concurrent-queue", - "futures-lite 1.13.0", - "log", - "parking", - "polling 2.8.0", - "rustix 0.37.27", - "slab", - "socket2 0.4.10", - "waker-fn", -] - -[[package]] -name = "async-io" -version = "2.3.3" +version = "2.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d6baa8f0178795da0e71bc42c9e5d13261aac7ee549853162e66a241ba17964" +checksum = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8" dependencies = [ - "async-lock 3.4.0", + "async-lock", "cfg-if", "concurrent-queue", "futures-io", - "futures-lite 2.3.0", + "futures-lite", "parking", - "polling 3.7.2", - "rustix 0.38.34", + "polling", + "rustix", "slab", "tracing", - "windows-sys 0.52.0", -] - -[[package]] -name = "async-lock" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" -dependencies = [ - "event-listener 2.5.3", + "windows-sys 0.59.0", ] [[package]] @@ -949,65 +962,67 @@ dependencies = [ [[package]] name = "async-object-pool" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aeb901c30ebc2fc4ab46395bbfbdba9542c16559d853645d75190c3056caf3bc" +checksum = "333c456b97c3f2d50604e8b2624253b7f787208cb72eb75e64b0ad11b221652c" dependencies = [ "async-std", ] [[package]] name = "async-process" -version = "1.8.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea6438ba0a08d81529c69b36700fa2f95837bfe3e776ab39cde9c14d9149da88" +checksum = "63255f1dc2381611000436537bbedfe83183faa303a5a0edaf191edef06526bb" dependencies = [ - "async-io 1.13.0", - "async-lock 2.8.0", + "async-channel 2.3.1", + "async-io", + "async-lock", "async-signal", + "async-task", "blocking", "cfg-if", - "event-listener 3.1.0", - "futures-lite 1.13.0", - "rustix 0.38.34", - "windows-sys 0.48.0", + "event-listener 5.3.1", + "futures-lite", + "rustix", + "tracing", ] [[package]] name = "async-signal" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfb3634b73397aa844481f814fad23bbf07fdb0eabec10f2eb95e58944b1ec32" +checksum = "637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3" dependencies = [ - "async-io 2.3.3", - "async-lock 3.4.0", + "async-io", + "async-lock", "atomic-waker", "cfg-if", "futures-core", "futures-io", - "rustix 0.38.34", + "rustix", "signal-hook-registry", "slab", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "async-std" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d" +checksum = "c634475f29802fde2b8f0b505b1bd00dfe4df7d4a000f0b36f7671197d5c3615" dependencies = [ "async-attributes", "async-channel 1.9.0", "async-global-executor", - "async-io 1.13.0", - "async-lock 2.8.0", + "async-io", + "async-lock", "async-process", "crossbeam-utils", "futures-channel", "futures-core", "futures-io", - "futures-lite 1.13.0", + "futures-lite", "gloo-timers", "kv-log-macro", "log", @@ -1021,9 +1036,9 @@ dependencies = [ [[package]] name = "async-stream" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" dependencies = [ "async-stream-impl", "futures-core", @@ -1032,13 +1047,13 @@ dependencies = [ [[package]] name = "async-stream-impl" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -1049,13 +1064,13 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.80" +version = "0.1.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -1096,28 +1111,28 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "backtrace" -version = "0.3.73" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", - "cc", "cfg-if", "libc", "miniz_oxide", "object", "rustc-demangle", + "windows-targets 0.52.6", ] [[package]] @@ -1190,11 +1205,11 @@ dependencies = [ [[package]] name = "bindgen" -version = "0.69.4" +version = "0.69.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" +checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cexpr", "clang-sys", "itertools 0.12.1", @@ -1203,9 +1218,9 @@ dependencies = [ "proc-macro2", "quote", "regex", - "rustc-hash", + "rustc-hash 1.1.0", "shlex", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -1231,9 +1246,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "bitvec" @@ -1282,8 +1297,8 @@ dependencies = [ "cairo-lang-starknet-classes", "cairo-lang-utils 2.7.0", "cairo-vm", - "derive_more", - "indexmap 2.2.6", + "derive_more 0.99.18", + "indexmap 2.6.0", "itertools 0.10.5", "keccak", "log", @@ -1316,7 +1331,7 @@ dependencies = [ "async-channel 2.3.1", "async-task", "futures-io", - "futures-lite 2.3.0", + "futures-lite", "piper", ] @@ -1335,10 +1350,10 @@ dependencies = [ [[package]] name = "bonsai-trie" version = "0.1.0" -source = "git+https://github.com/cchudant/bonsai-trie.git?branch=fix_inserts_remove_leaks#1a77166d1a3c9afa590b337d8d70670b8d43eadd" +source = "git+https://github.com/cchudant/bonsai-trie.git?branch=fix_inserts_remove_leaks#755034f62eb38dca0e5c7730e6ba11cf32fe3aef" dependencies = [ "bitvec", - "derive_more", + "derive_more 0.99.18", "hashbrown 0.14.5", "log", "parity-scale-codec", @@ -1378,9 +1393,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.6.0" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" dependencies = [ "serde", ] @@ -1408,15 +1423,16 @@ dependencies = [ [[package]] name = "c-kzg" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdf100c4cea8f207e883ff91ca886d621d8a166cb04971dfaa9bb8fd99ed95df" +checksum = "f0307f72feab3300336fb803a57134159f6e20139af1357f36c54cb90d8e8928" dependencies = [ "blst", "cc", "glob", "hex", "libc", + "once_cell", "serde", ] @@ -2183,7 +2199,7 @@ checksum = "3d55dcf98a6e1a03e0b36129fad4253f9e6666a1746ab9c075d212ba68a4e9c1" dependencies = [ "cairo-lang-debug 2.7.0", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -2234,7 +2250,7 @@ dependencies = [ "serde", "smol_str 0.2.2", "thiserror", - "toml 0.8.14", + "toml 0.8.19", ] [[package]] @@ -2361,7 +2377,7 @@ dependencies = [ "once_cell", "salsa", "smol_str 0.2.2", - "toml 0.8.14", + "toml 0.8.19", ] [[package]] @@ -3113,7 +3129,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8bd5c8c127b9362a12ffb9dede38e792c81b4ded5a98b448baec157b745f47d1" dependencies = [ "hashbrown 0.14.5", - "indexmap 2.2.6", + "indexmap 2.6.0", "itertools 0.12.1", "num-bigint", "num-traits 0.2.19", @@ -3155,13 +3171,13 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.99" +version = "1.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" +checksum = "58e804ac3194a48bb129643eb1d62fcc20d18c6b8c181704489353d13120bcd1" dependencies = [ "jobserver", "libc", - "once_cell", + "shlex", ] [[package]] @@ -3191,7 +3207,7 @@ dependencies = [ "num-traits 0.2.19", "serde", "wasm-bindgen", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -3217,9 +3233,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.7" +version = "4.5.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5db83dced34638ad474f39f250d7fea9598bdd239eaced1bdf45d597da0f433f" +checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" dependencies = [ "clap_builder", "clap_derive", @@ -3227,9 +3243,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.7" +version = "4.5.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7e204572485eb3fbf28f871612191521df159bc3e15a9f5064c66dba3a8c05f" +checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" dependencies = [ "anstream", "anstyle", @@ -3239,27 +3255,27 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.5" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c780290ccf4fb26629baa7a1081e68ced113f1d3ec302fa5948f1c381ebf06c6" +checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] name = "clap_lex" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" [[package]] name = "colorchoice" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "colored" @@ -3288,9 +3304,9 @@ checksum = "32b13ea120a812beba79e34316b3942a857c86ec1593cb34f27bb28272ce2cca" [[package]] name = "const-hex" -version = "1.12.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94fb8a24a26d37e1ffd45343323dc9fe6654ceea44c12f2fcb3d7ac29e610bc6" +checksum = "0121754e84117e65f9d90648ee6aa4882a6e63110307ab73967a4c5e7e69e586" dependencies = [ "cfg-if", "cpufeatures", @@ -3307,18 +3323,18 @@ checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" [[package]] name = "const_format" -version = "0.2.32" +version = "0.2.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3a214c7af3d04997541b18d432afaff4c455e79e2029079647e72fc2bd27673" +checksum = "50c655d81ff1114fb0dcdea9225ea9f0cc712a6f8d189378e82bdf62a473a64b" dependencies = [ "const_format_proc_macros", ] [[package]] name = "const_format_proc_macros" -version = "0.2.32" +version = "0.2.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7f6ff08fd20f4f299298a28e2dfa8a8ba1036e6cd2460ac1de7b425d76f2500" +checksum = "eff1a44b93f47b1bac19a27932f5c591e43d1ba357ee4f61526c8a25603f0eb1" dependencies = [ "proc-macro2", "quote", @@ -3358,15 +3374,15 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" dependencies = [ "libc", ] @@ -3454,12 +3470,12 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" dependencies = [ - "darling_core 0.20.9", - "darling_macro 0.20.9", + "darling_core 0.20.10", + "darling_macro 0.20.10", ] [[package]] @@ -3478,16 +3494,16 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -3503,13 +3519,13 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ - "darling_core 0.20.9", + "darling_core 0.20.10", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -3525,6 +3541,20 @@ dependencies = [ "parking_lot_core 0.9.10", ] +[[package]] +name = "dashmap" +version = "6.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" +dependencies = [ + "cfg-if", + "crossbeam-utils", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core 0.9.10", +] + [[package]] name = "data-encoding" version = "2.6.0" @@ -3571,8 +3601,29 @@ dependencies = [ "convert_case 0.4.0", "proc-macro2", "quote", - "rustc_version 0.4.0", - "syn 2.0.66", + "rustc_version 0.4.1", + "syn 2.0.79", +] + +[[package]] +name = "derive_more" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", + "unicode-xid", ] [[package]] @@ -3632,17 +3683,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "displaydoc" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", -] - [[package]] name = "dotenv" version = "0.15.0" @@ -3657,9 +3697,9 @@ checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" [[package]] name = "dunce" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "dyn-clone" @@ -3683,9 +3723,9 @@ dependencies = [ [[package]] name = "either" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "elliptic-curve" @@ -3726,9 +3766,9 @@ dependencies = [ [[package]] name = "env_filter" -version = "0.1.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a009aa4810eb158359dda09d0c87378e4bbb89b5a801f016885a4707ba24f7ea" +checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" dependencies = [ "log", "regex", @@ -3749,9 +3789,9 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.3" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b35839ba51819680ba087cd351788c9a3c476841207e0b8cee0b04722343b9" +checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d" dependencies = [ "anstream", "anstyle", @@ -3841,17 +3881,6 @@ version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" -[[package]] -name = "event-listener" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d93877bcde0eb80ca09131a08d23f0a5c18a620b01db137dba666d18cd9b30c2" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - [[package]] name = "event-listener" version = "5.3.1" @@ -3875,18 +3904,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" -dependencies = [ - "instant", -] - -[[package]] -name = "fastrand" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "fastrlp" @@ -3939,9 +3959,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.30" +version = "1.0.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" +checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" dependencies = [ "crc32fast", "miniz_oxide", @@ -3953,6 +3973,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" + [[package]] name = "foreign-types" version = "0.3.2" @@ -4001,9 +4027,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ "futures-channel", "futures-core", @@ -4016,9 +4042,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -4026,15 +4052,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-executor" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" dependencies = [ "futures-core", "futures-task", @@ -4044,24 +4070,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" - -[[package]] -name = "futures-lite" -version = "1.13.0" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" -dependencies = [ - "fastrand 1.9.0", - "futures-core", - "futures-io", - "memchr", - "parking", - "pin-project-lite", - "waker-fn", -] +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-lite" @@ -4069,7 +4080,7 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" dependencies = [ - "fastrand 2.1.0", + "fastrand", "futures-core", "futures-io", "parking", @@ -4078,26 +4089,26 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-timer" @@ -4107,9 +4118,9 @@ checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-channel", "futures-core", @@ -4148,7 +4159,7 @@ checksum = "553630feadf7b76442b0849fd25fdf89b860d933623aec9693fed19af0400c78" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -4177,9 +4188,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.29.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "glob" @@ -4189,22 +4200,22 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "globset" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1" +checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" dependencies = [ "aho-corasick", "bstr", "log", - "regex-automata 0.4.7", - "regex-syntax 0.8.4", + "regex-automata 0.4.8", + "regex-syntax 0.8.5", ] [[package]] name = "gloo-timers" -version = "0.2.6" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" +checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" dependencies = [ "futures-channel", "futures-core", @@ -4229,7 +4240,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68a7f542ee6b35af73b06abc0dad1c1bae89964e4e253bc4b587b91c9637867b" dependencies = [ "cfg-if", - "dashmap", + "dashmap 5.5.3", "futures", "futures-timer", "no-std-compat", @@ -4265,7 +4276,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.2.6", + "indexmap 2.6.0", "slab", "tokio", "tokio-util", @@ -4274,9 +4285,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab" +checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" dependencies = [ "atomic-waker", "bytes", @@ -4284,7 +4295,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.1.0", - "indexmap 2.2.6", + "indexmap 2.6.0", "slab", "tokio", "tokio-util", @@ -4318,6 +4329,18 @@ dependencies = [ "serde", ] +[[package]] +name = "hashbrown" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", + "serde", +] + [[package]] name = "heck" version = "0.3.3" @@ -4419,9 +4442,9 @@ dependencies = [ [[package]] name = "http-body" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", "http 1.1.0", @@ -4436,7 +4459,7 @@ dependencies = [ "bytes", "futures-util", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "pin-project-lite", ] @@ -4448,9 +4471,9 @@ checksum = "add0ab9360ddbd88cfeb3bd9574a1d85cfdfa14db10b3e21d3700dbc4328758f" [[package]] name = "httparse" -version = "1.9.4" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" [[package]] name = "httpdate" @@ -4473,7 +4496,7 @@ dependencies = [ "crossbeam-utils", "form_urlencoded", "futures-util", - "hyper 0.14.29", + "hyper 0.14.30", "lazy_static", "levenshtein", "log", @@ -4494,9 +4517,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.29" +version = "0.14.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f361cde2f109281a220d4307746cdfd5ee3f410da58a70377762396775634b33" +checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" dependencies = [ "bytes", "futures-channel", @@ -4509,7 +4532,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2 0.5.7", + "socket2", "tokio", "tower-service", "tracing", @@ -4518,16 +4541,16 @@ dependencies = [ [[package]] name = "hyper" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe575dd17d0862a9a33781c8c4696a55c320909004a67a00fb286ba8b1bc496d" +checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.5", + "h2 0.4.6", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "httparse", "itoa", "pin-project-lite", @@ -4544,7 +4567,7 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http 0.2.12", - "hyper 0.14.29", + "hyper 0.14.30", "rustls 0.21.12", "tokio", "tokio-rustls 0.24.1", @@ -4552,15 +4575,15 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.2" +version = "0.27.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" +checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" dependencies = [ "futures-util", "http 1.1.0", - "hyper 1.3.1", + "hyper 1.4.1", "hyper-util", - "rustls 0.23.10", + "rustls 0.23.14", "rustls-pki-types", "tokio", "tokio-rustls 0.26.0", @@ -4575,7 +4598,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.3.1", + "hyper 1.4.1", "hyper-util", "native-tls", "tokio", @@ -4585,29 +4608,28 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.5" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b875924a60b96e5d7b9ae7b066540b1dd1cbd90d1828f54c92e02a283351c56" +checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" dependencies = [ "bytes", "futures-channel", "futures-util", "http 1.1.0", - "http-body 1.0.0", - "hyper 1.3.1", + "http-body 1.0.1", + "hyper 1.4.1", "pin-project-lite", - "socket2 0.5.7", + "socket2", "tokio", - "tower", "tower-service", "tracing", ] [[package]] name = "iana-time-zone" -version = "0.1.60" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -4627,158 +4649,38 @@ dependencies = [ ] [[package]] -name = "icu_collections" -version = "1.5.0" +name = "id-arena" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", - "zerovec", -] +checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005" [[package]] -name = "icu_locid" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_locid_transform" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_locid_transform_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_locid_transform_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" - -[[package]] -name = "icu_normalizer" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" -dependencies = [ - "displaydoc", - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec", - "utf16_iter", - "utf8_iter", - "write16", - "zerovec", -] - -[[package]] -name = "icu_normalizer_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" - -[[package]] -name = "icu_properties" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f8ac670d7422d7f76b32e17a5db556510825b29ec9154f235977c9caba61036" -dependencies = [ - "displaydoc", - "icu_collections", - "icu_locid_transform", - "icu_properties_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_properties_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" - -[[package]] -name = "icu_provider" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_provider_macros", - "stable_deref_trait", - "tinystr", - "writeable", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_provider_macros" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", -] - -[[package]] -name = "id-arena" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005" - -[[package]] -name = "ident_case" -version = "1.0.1" +name = "ident_case" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "1.0.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4716a3a0933a1d01c2f72450e89596eb51dd34ef3c211ccd875acdf1f8fe47ed" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ - "icu_normalizer", - "icu_properties", - "smallvec", - "utf8_iter", + "unicode-bidi", + "unicode-normalization", ] [[package]] name = "ignore" -version = "0.4.22" +version = "0.4.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b46810df39e66e925525d6e38ce1e7f6e1d208f72dc39757880fcb66e2c58af1" +checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" dependencies = [ "crossbeam-deque", "globset", "log", "memchr", - "regex-automata 0.4.7", + "regex-automata 0.4.8", "same-file", "walkdir", "winapi-util", @@ -4841,12 +4743,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.6" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.14.5", + "hashbrown 0.15.0", "serde", ] @@ -4880,17 +4782,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "io-lifetimes" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" -dependencies = [ - "hermit-abi 0.3.9", - "libc", - "windows-sys 0.48.0", -] - [[package]] name = "ip_network" version = "0.4.1" @@ -4899,26 +4790,26 @@ checksum = "aa2f047c0a98b2f299aa5d6d7088443570faae494e9ae1305e48be000c9e0eb1" [[package]] name = "ipnet" -version = "2.9.0" +version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" [[package]] name = "is-terminal" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" +checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" dependencies = [ - "hermit-abi 0.3.9", + "hermit-abi 0.4.0", "libc", "windows-sys 0.52.0", ] [[package]] name = "is_terminal_polyfill" -version = "1.70.0" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "itertools" @@ -4964,18 +4855,18 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jobserver" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" dependencies = [ "libc", ] [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" dependencies = [ "wasm-bindgen", ] @@ -5004,11 +4895,11 @@ dependencies = [ "async-trait", "beef", "futures-util", - "hyper 0.14.29", + "hyper 0.14.30", "jsonrpsee-types", "parking_lot 0.12.3", "rand", - "rustc-hash", + "rustc-hash 1.1.0", "serde", "serde_json", "thiserror", @@ -5026,7 +4917,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -5037,7 +4928,7 @@ checksum = "12d8b6a9674422a8572e0b0abb12feeb3f2aeda86528c80d0350c2bd0923ab41" dependencies = [ "futures-util", "http 0.2.12", - "hyper 0.14.29", + "hyper 0.14.30", "jsonrpsee-core", "jsonrpsee-types", "pin-project", @@ -5049,7 +4940,7 @@ dependencies = [ "tokio", "tokio-stream", "tokio-util", - "tower", + "tower 0.4.13", "tracing", ] @@ -5068,9 +4959,9 @@ dependencies = [ [[package]] name = "k256" -version = "0.13.3" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" dependencies = [ "cfg-if", "ecdsa", @@ -5090,9 +4981,9 @@ dependencies = [ [[package]] name = "keccak-asm" -version = "0.1.1" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47a3633291834c4fbebf8673acbc1b04ec9d151418ff9b8e26dcd79129928758" +checksum = "505d1856a39b200489082f90d897c3f07c455563880bc5952e38eabf731c83b6" dependencies = [ "digest 0.10.7", "sha3-asm", @@ -5143,7 +5034,7 @@ dependencies = [ "petgraph", "pico-args", "regex", - "regex-syntax 0.8.4", + "regex-syntax 0.8.5", "string_cache", "term", "tiny-keccak", @@ -5166,7 +5057,7 @@ version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553" dependencies = [ - "regex-automata 0.4.7", + "regex-automata 0.4.8", ] [[package]] @@ -5193,11 +5084,11 @@ dependencies = [ [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" dependencies = [ - "spin 0.5.2", + "spin", ] [[package]] @@ -5214,18 +5105,18 @@ checksum = "db13adb97ab515a3691f56e4dbab09283d0b86cb45abd991d8634a9d6f501760" [[package]] name = "libc" -version = "0.2.155" +version = "0.2.159" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" [[package]] name = "libloading" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" +checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -5240,7 +5131,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "libc", ] @@ -5262,33 +5153,21 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.18" +version = "1.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c15da26e5af7e25c90b37a2d75cdbf940cf4a55316de9d84c679c9b8bfabf82e" +checksum = "d2d16453e800a8cf6dd2fc3eb4bc99b786a9b90c663b8559a5b1a041bf89e472" dependencies = [ "cc", "pkg-config", "vcpkg", ] -[[package]] -name = "linux-raw-sys" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" - [[package]] name = "linux-raw-sys" version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" -[[package]] -name = "litemap" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" - [[package]] name = "lock_api" version = "0.4.12" @@ -5301,27 +5180,27 @@ dependencies = [ [[package]] name = "log" -version = "0.4.21" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" dependencies = [ "value-bag", ] [[package]] name = "lru" -version = "0.12.3" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3262e75e648fce39813cb56ac41f3c3e3f65217ebf3844d818d1f9398cfb0dc" +checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" dependencies = [ - "hashbrown 0.14.5", + "hashbrown 0.15.0", ] [[package]] name = "lz4-sys" -version = "1.9.5" +version = "1.11.1+lz4-1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9764018d143cc854c9f17f0b907de70f14393b1f502da6375dce70f00514eb3" +checksum = "6bd8c0d6c6ed0cd30b3652886bb8711dc4bb01d637a68105a3d5158039b418e6" dependencies = [ "cc", "libc", @@ -5331,9 +5210,10 @@ dependencies = [ name = "m-proc-macros" version = "0.7.0" dependencies = [ + "indoc 2.0.5", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -5346,12 +5226,12 @@ dependencies = [ "blockifier", "chrono", "clap", - "env_logger 0.11.3", + "env_logger 0.11.5", "fdlimit", "forwarded-header-value", "futures", "governor", - "hyper 0.14.29", + "hyper 0.14.30", "ip_network", "jsonrpsee", "log", @@ -5372,17 +5252,17 @@ dependencies = [ "primitive-types", "rand", "rayon", - "reqwest 0.12.5", + "reqwest 0.12.8", "serde", "serde_json", "serde_yaml", - "starknet-core", + "starknet-core 0.11.0", "starknet-providers", "starknet-signers", "starknet_api", "thiserror", "tokio", - "tower", + "tower 0.4.13", "tower-http", "url", ] @@ -5427,7 +5307,7 @@ dependencies = [ "rayon", "rstest 0.18.2", "serde", - "starknet-core", + "starknet-core 0.11.0", "starknet-types-core", "starknet_api", "tempfile", @@ -5455,7 +5335,7 @@ dependencies = [ "rayon", "rocksdb", "serde", - "starknet-core", + "starknet-core 0.11.0", "starknet-types-core", "starknet_api", "tempfile", @@ -5470,7 +5350,7 @@ dependencies = [ "anyhow", "assert_matches", "blockifier", - "env_logger 0.11.3", + "env_logger 0.11.5", "log", "mc-block-import", "mc-db", @@ -5488,7 +5368,7 @@ dependencies = [ "proptest-derive", "rstest 0.18.2", "serde_json", - "starknet-core", + "starknet-core 0.11.0", "starknet-signers", "starknet-types-core", "starknet_api", @@ -5500,14 +5380,14 @@ name = "mc-e2e-tests" version = "0.7.0" dependencies = [ "anyhow", - "env_logger 0.11.3", + "env_logger 0.11.5", "flate2", "lazy_static", - "reqwest 0.12.5", + "reqwest 0.12.8", "rstest 0.18.2", "serde_json", "starknet", - "starknet-core", + "starknet-core 0.11.0", "starknet-providers", "tempfile", "tokio", @@ -5564,7 +5444,7 @@ dependencies = [ "mp-class", "mp-convert", "rstest 0.18.2", - "starknet-core", + "starknet-core 0.11.0", "starknet-types-core", "starknet_api", "thiserror", @@ -5578,7 +5458,7 @@ dependencies = [ "anyhow", "bytes", "flate2", - "hyper 0.14.29", + "hyper 0.14.30", "log", "mc-db", "mc-rpc", @@ -5586,11 +5466,11 @@ dependencies = [ "mp-class", "mp-gateway", "mp-utils", - "reqwest 0.12.5", + "reqwest 0.12.8", "rstest 0.18.2", "serde", "serde_json", - "starknet-core", + "starknet-core 0.11.0", "starknet-signers", "starknet-types-core", "thiserror", @@ -5606,7 +5486,7 @@ dependencies = [ "assert_matches", "bitvec", "blockifier", - "env_logger 0.11.3", + "env_logger 0.11.5", "lazy_static", "log", "mc-block-import", @@ -5624,7 +5504,7 @@ dependencies = [ "proptest", "proptest-derive", "rstest 0.18.2", - "starknet-core", + "starknet-core 0.11.0", "starknet-types-core", "starknet_api", "thiserror", @@ -5637,7 +5517,7 @@ version = "0.7.0" dependencies = [ "anyhow", "async-trait", - "hyper 0.14.29", + "hyper 0.14.30", "log", "mp-utils", "prometheus", @@ -5651,7 +5531,7 @@ version = "0.7.0" dependencies = [ "anyhow", "blockifier", - "env_logger 0.11.3", + "env_logger 0.11.5", "jsonrpsee", "log", "m-proc-macros", @@ -5668,7 +5548,7 @@ dependencies = [ "paste", "rstest 0.18.2", "serde_json", - "starknet-core", + "starknet-core 0.11.0", "starknet-providers", "starknet-types-core", "starknet_api", @@ -5696,10 +5576,10 @@ dependencies = [ "mp-transactions", "mp-utils", "regex", - "reqwest 0.12.5", + "reqwest 0.12.8", "rstest 0.18.2", "serde_json", - "starknet-core", + "starknet-core 0.11.0", "starknet-types-core", "starknet_api", "tempfile", @@ -5718,7 +5598,7 @@ dependencies = [ "futures", "log", "mp-utils", - "reqwest 0.12.5", + "reqwest 0.12.8", "reqwest-websocket", "serde_json", "sysinfo", @@ -5755,22 +5635,23 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" dependencies = [ - "adler", + "adler2", ] [[package]] name = "mio" -version = "0.8.11" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" dependencies = [ + "hermit-abi 0.3.9", "libc", "wasi", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -5796,7 +5677,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -5809,7 +5690,7 @@ dependencies = [ "mp-transactions", "primitive-types", "serde", - "starknet-core", + "starknet-core 0.11.0", "starknet-types-core", "thiserror", ] @@ -5852,7 +5733,7 @@ dependencies = [ "num-bigint", "serde", "serde_json", - "starknet-core", + "starknet-core 0.11.0", "starknet-providers", "starknet-types-core", "thiserror", @@ -5867,7 +5748,7 @@ dependencies = [ "primitive-types", "serde", "serde_with 3.11.0", - "starknet-core", + "starknet-core 0.11.0", "starknet-types-core", "starknet_api", "thiserror", @@ -5889,7 +5770,7 @@ dependencies = [ "serde", "serde_json", "serde_with 3.11.0", - "starknet-core", + "starknet-core 0.11.0", "starknet-types-core", ] @@ -5900,13 +5781,15 @@ dependencies = [ "bincode 1.3.3", "blockifier", "cairo-vm", + "log", "mp-convert", "rstest 0.18.2", "serde", - "starknet-core", + "starknet-core 0.11.0", "starknet-providers", "starknet-types-core", "starknet_api", + "thiserror", ] [[package]] @@ -5916,7 +5799,7 @@ dependencies = [ "bincode 1.3.3", "mp-convert", "serde", - "starknet-core", + "starknet-core 0.11.0", "starknet-providers", "starknet-types-core", "thiserror", @@ -5938,8 +5821,9 @@ dependencies = [ "mp-convert", "num-bigint", "serde", + "serde_json", "serde_with 3.11.0", - "starknet-core", + "starknet-core 0.11.0", "starknet-providers", "starknet-types-core", "starknet_api", @@ -5959,8 +5843,8 @@ dependencies = [ "rstest 0.18.2", "serde", "serde_yaml", - "starknet-core", - "starknet-crypto 0.7.1", + "starknet-core 0.11.0", + "starknet-crypto 0.7.2", "starknet-types-core", "tokio", "url", @@ -6051,9 +5935,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ "num-integer", "num-traits 0.2.19", @@ -6156,22 +6040,22 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" dependencies = [ "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -6185,24 +6069,24 @@ dependencies = [ [[package]] name = "object" -version = "0.36.0" +version = "0.36.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "576dfe1fc8f9df304abb159d767a29d0476f7750fbf8aa7ad07816004a207434" +checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "oorandom" -version = "11.1.3" +version = "11.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" +checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9" [[package]] name = "opaque-debug" @@ -6212,11 +6096,11 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "openssl" -version = "0.10.64" +version = "0.10.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" +checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cfg-if", "foreign-types", "libc", @@ -6233,7 +6117,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -6244,9 +6128,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.102" +version = "0.9.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" +checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" dependencies = [ "cc", "libc", @@ -6288,9 +6172,9 @@ dependencies = [ [[package]] name = "parking" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" @@ -6335,9 +6219,9 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.2", + "redox_syscall 0.5.7", "smallvec", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -6389,9 +6273,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.11" +version = "2.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd53dff83f26735fdc1ca837098ccf133605d794cdae66acfc2bfac3ec809d95" +checksum = "fdbef9d1d47087a895abd220ed25eb4ad973a5e26f6a4367b038c25e28dfc2d9" dependencies = [ "memchr", "thiserror", @@ -6405,7 +6289,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.2.6", + "indexmap 2.6.0", ] [[package]] @@ -6438,7 +6322,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -6467,22 +6351,22 @@ checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" [[package]] name = "pin-project" -version = "1.1.5" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.5" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -6499,12 +6383,12 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "piper" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae1d5c74c9876f070d3e8fd503d748c7d974c3e48da8f41350fa5222ef9b4391" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" dependencies = [ "atomic-waker", - "fastrand 2.1.0", + "fastrand", "futures-io", ] @@ -6520,46 +6404,30 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "polling" -version = "2.8.0" +version = "3.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" -dependencies = [ - "autocfg", - "bitflags 1.3.2", - "cfg-if", - "concurrent-queue", - "libc", - "log", - "pin-project-lite", - "windows-sys 0.48.0", -] - -[[package]] -name = "polling" -version = "3.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3ed00ed3fbf728b5816498ecd316d1716eecaced9c0c8d2c5a6740ca214985b" +checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511" dependencies = [ "cfg-if", "concurrent-queue", "hermit-abi 0.4.0", "pin-project-lite", - "rustix 0.38.34", + "rustix", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "portable-atomic" -version = "1.6.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" +checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" [[package]] name = "powerfmt" @@ -6569,9 +6437,12 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "precomputed-hash" @@ -6607,9 +6478,9 @@ dependencies = [ [[package]] name = "pretty_assertions" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66" +checksum = "3ae130e2f271fbc2ac3a40fb1d07180839cdbbe443c7a27e1e3c13c5cac0116d" dependencies = [ "diff", "yansi", @@ -6630,42 +6501,40 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" dependencies = [ - "toml_edit 0.21.1", + "toml_edit", ] [[package]] -name = "proc-macro-error" -version = "1.0.4" +name = "proc-macro-error-attr2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" dependencies = [ - "proc-macro-error-attr", "proc-macro2", "quote", - "syn 1.0.109", - "version_check", ] [[package]] -name = "proc-macro-error-attr" -version = "1.0.4" +name = "proc-macro-error2" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" dependencies = [ + "proc-macro-error-attr2", "proc-macro2", "quote", - "version_check", + "syn 2.0.79", ] [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "b3e4daa0dcf6feba26f985457cdf104d4b4256fc5a09547140f3631bb076b19a" dependencies = [ "unicode-ident", ] @@ -6693,13 +6562,13 @@ checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.5.0", + "bitflags 2.6.0", "lazy_static", "num-traits 0.2.19", "rand", "rand_chacha", "rand_xorshift", - "regex-syntax 0.8.4", + "regex-syntax 0.8.5", "rusty-fork", "tempfile", "unarray", @@ -6713,7 +6582,7 @@ checksum = "6ff7ff745a347b87471d859a377a9a404361e7efc2a971d73424a6d183c0fc77" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -6745,9 +6614,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -6767,6 +6636,7 @@ dependencies = [ "libc", "rand_chacha", "rand_core", + "serde", ] [[package]] @@ -6799,11 +6669,11 @@ dependencies = [ [[package]] name = "raw-cpuid" -version = "11.0.2" +version = "11.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e29830cbb1290e404f24c73af91c5d8d631ce7e128691e9477556b540cd01ecd" +checksum = "1ab240315c661615f2ee9f0f2cd32d5a7343a84d5ebcccb99d46e6637565e7b0" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", ] [[package]] @@ -6843,18 +6713,18 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.2" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", ] [[package]] name = "redox_users" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom", "libredox", @@ -6863,14 +6733,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.6" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.7", - "regex-syntax 0.8.4", + "regex-automata 0.4.8", + "regex-syntax 0.8.5", ] [[package]] @@ -6884,13 +6754,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.4", + "regex-syntax 0.8.5", ] [[package]] @@ -6901,9 +6771,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "relative-path" @@ -6925,7 +6795,7 @@ dependencies = [ "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.29", + "hyper 0.14.30", "hyper-rustls 0.24.2", "ipnet", "js-sys", @@ -6940,7 +6810,7 @@ dependencies = [ "serde_json", "serde_urlencoded", "sync_wrapper 0.1.2", - "system-configuration", + "system-configuration 0.5.1", "tokio", "tokio-rustls 0.24.1", "tower-service", @@ -6949,14 +6819,14 @@ dependencies = [ "wasm-bindgen-futures", "web-sys", "webpki-roots", - "winreg 0.50.0", + "winreg", ] [[package]] name = "reqwest" -version = "0.12.5" +version = "0.12.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7d6d2a27d57148378eb5e111173f4276ad26340ecc5c49a4a2152167a2d6a37" +checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b" dependencies = [ "base64 0.22.1", "bytes", @@ -6964,12 +6834,12 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "h2 0.4.5", + "h2 0.4.6", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "http-body-util", - "hyper 1.3.1", - "hyper-rustls 0.27.2", + "hyper 1.4.1", + "hyper-rustls 0.27.3", "hyper-tls", "hyper-util", "ipnet", @@ -6980,12 +6850,12 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls-pemfile 2.1.2", + "rustls-pemfile 2.2.0", "serde", "serde_json", "serde_urlencoded", "sync_wrapper 1.0.1", - "system-configuration", + "system-configuration 0.6.1", "tokio", "tokio-native-tls", "tower-service", @@ -6993,7 +6863,7 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "winreg 0.52.0", + "windows-registry", ] [[package]] @@ -7004,7 +6874,7 @@ checksum = "f577b873973670ae646078b04ca30fc5af08f40af0160af3242684c12d575983" dependencies = [ "async-tungstenite", "futures-util", - "reqwest 0.12.5", + "reqwest 0.12.8", "thiserror", "tokio", "tokio-util", @@ -7033,7 +6903,7 @@ dependencies = [ "cfg-if", "getrandom", "libc", - "spin 0.9.8", + "spin", "untrusted", "windows-sys 0.52.0", ] @@ -7073,7 +6943,7 @@ dependencies = [ "futures", "futures-timer", "rstest_macros 0.17.0", - "rustc_version 0.4.0", + "rustc_version 0.4.1", ] [[package]] @@ -7085,7 +6955,7 @@ dependencies = [ "futures", "futures-timer", "rstest_macros 0.18.2", - "rustc_version 0.4.0", + "rustc_version 0.4.1", ] [[package]] @@ -7097,7 +6967,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "rustc_version 0.4.0", + "rustc_version 0.4.1", "syn 1.0.109", "unicode-ident", ] @@ -7114,8 +6984,8 @@ dependencies = [ "quote", "regex", "relative-path", - "rustc_version 0.4.0", - "syn 2.0.66", + "rustc_version 0.4.1", + "syn 2.0.79", "unicode-ident", ] @@ -7151,9 +7021,9 @@ checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" [[package]] name = "rust_decimal" -version = "1.35.0" +version = "1.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1790d1c4c0ca81211399e0e0af16333276f375209e71a37b67698a373db5b47a" +checksum = "b082d80e3e3cc52b2ed634388d436fe1f4de6af5786cc2de9ba9737527bdf555" dependencies = [ "arrayvec", "num-traits 0.2.19", @@ -7171,6 +7041,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +[[package]] +name = "rustc-hash" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" + [[package]] name = "rustc-hex" version = "2.1.0" @@ -7188,37 +7064,23 @@ dependencies = [ [[package]] name = "rustc_version" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ "semver 1.0.23", ] [[package]] name = "rustix" -version = "0.37.27" +version = "0.38.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2" +checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", "errno", - "io-lifetimes", "libc", - "linux-raw-sys 0.3.8", - "windows-sys 0.48.0", -] - -[[package]] -name = "rustix" -version = "0.38.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" -dependencies = [ - "bitflags 2.5.0", - "errno", - "libc", - "linux-raw-sys 0.4.14", + "linux-raw-sys", "windows-sys 0.52.0", ] @@ -7236,13 +7098,13 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.10" +version = "0.23.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05cff451f60db80f490f3c182b77c35260baace73209e9cdbbe526bfe3a4d402" +checksum = "415d9944693cb90382053259f89fbb077ea730ad7273047ec63b19bc9b160ba8" dependencies = [ "once_cell", "rustls-pki-types", - "rustls-webpki 0.102.4", + "rustls-webpki 0.102.8", "subtle", "zeroize", ] @@ -7258,19 +7120,18 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" dependencies = [ - "base64 0.22.1", "rustls-pki-types", ] [[package]] name = "rustls-pki-types" -version = "1.7.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" +checksum = "0e696e35370c65c9c541198af4543ccd580cf17fc25d8e05c5a242b202488c55" [[package]] name = "rustls-webpki" @@ -7284,9 +7145,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.102.4" +version = "0.102.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff448f7e92e913c4b7d4c6d8e4540a1724b319b4152b8aef6d4cf8339712b33e" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" dependencies = [ "ring", "rustls-pki-types", @@ -7329,7 +7190,7 @@ dependencies = [ "log", "oorandom", "parking_lot 0.11.2", - "rustc-hash", + "rustc-hash 1.1.0", "salsa-macros", "smallvec", ] @@ -7366,20 +7227,20 @@ dependencies = [ [[package]] name = "scc" -version = "2.1.17" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c947adb109a8afce5fc9c7bf951f87f146e9147b3a6a58413105628fb1d1e66" +checksum = "836f1e0f4963ef5288b539b643b35e043e76a32d0f4e47e67febf69576527f50" dependencies = [ "sdd", ] [[package]] name = "schannel" -version = "0.1.23" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -7404,7 +7265,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -7457,11 +7318,11 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.11.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "core-foundation", "core-foundation-sys", "libc", @@ -7470,9 +7331,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.0" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" +checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" dependencies = [ "core-foundation-sys", "libc", @@ -7504,22 +7365,22 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.203" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.203" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -7530,7 +7391,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -7544,11 +7405,12 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.117" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] @@ -7576,9 +7438,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.6" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" dependencies = [ "serde", ] @@ -7621,7 +7483,7 @@ dependencies = [ "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.2.6", + "indexmap 2.6.0", "serde", "serde_derive", "serde_json", @@ -7635,10 +7497,10 @@ version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "881b6f881b17d13214e5d494c939ebab463d01264ce1811e9d4ac3a882e7695f" dependencies = [ - "darling 0.20.9", + "darling 0.20.10", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -7647,10 +7509,10 @@ version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d" dependencies = [ - "darling 0.20.9", + "darling 0.20.10", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -7659,7 +7521,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.6.0", "itoa", "ryu", "serde", @@ -7688,7 +7550,7 @@ checksum = "82fe9db325bcef1fbcde82e078a5cc4efdf787e96b3b9cf45b50b529f2083d67" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -7738,9 +7600,9 @@ dependencies = [ [[package]] name = "sha3-asm" -version = "0.1.1" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9b57fd861253bff08bb1919e995f90ba8f4889de2726091c8876f3a4e823b40" +checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46" dependencies = [ "cc", "cfg-if", @@ -7828,16 +7690,6 @@ dependencies = [ "serde", ] -[[package]] -name = "socket2" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" -dependencies = [ - "libc", - "winapi", -] - [[package]] name = "socket2" version = "0.5.7" @@ -7864,12 +7716,6 @@ dependencies = [ "sha-1", ] -[[package]] -name = "spin" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" - [[package]] name = "spin" version = "0.9.8" @@ -7906,12 +7752,6 @@ dependencies = [ "num-traits 0.1.43", ] -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - [[package]] name = "starknet" version = "0.11.0" @@ -7920,8 +7760,8 @@ checksum = "1e633a772f59214c296d5037c95c36b72792c9360323818da2b625c7b4ec4b49" dependencies = [ "starknet-accounts", "starknet-contract", - "starknet-core", - "starknet-crypto 0.7.1", + "starknet-core 0.11.0", + "starknet-crypto 0.7.2", "starknet-macros", "starknet-providers", "starknet-signers", @@ -7935,8 +7775,8 @@ checksum = "eee8a6b588a22c7e79f5d8d4e33413387db63a8beb98be8610138541794cc0a5" dependencies = [ "async-trait", "auto_impl", - "starknet-core", - "starknet-crypto 0.7.1", + "starknet-core 0.11.0", + "starknet-crypto 0.7.2", "starknet-providers", "starknet-signers", "thiserror", @@ -7952,7 +7792,7 @@ dependencies = [ "serde_json", "serde_with 2.3.3", "starknet-accounts", - "starknet-core", + "starknet-core 0.11.0", "starknet-providers", "thiserror", ] @@ -7975,6 +7815,25 @@ dependencies = [ "starknet-types-core", ] +[[package]] +name = "starknet-core" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2538240cbe6663c673fe77465f294da707080f39678dd7066761554899e46100" +dependencies = [ + "base64 0.21.7", + "crypto-bigint", + "flate2", + "hex", + "serde", + "serde_json", + "serde_json_pythonic", + "serde_with 3.11.0", + "sha3", + "starknet-crypto 0.7.2", + "starknet-types-core", +] + [[package]] name = "starknet-crypto" version = "0.5.2" @@ -8028,17 +7887,17 @@ dependencies = [ "num-traits 0.2.19", "rfc6979", "sha2", - "starknet-crypto-codegen 0.4.0 (git+https://github.com/kasarlabs/starknet-rs.git?branch=fork)", - "starknet-curve 0.5.0 (git+https://github.com/kasarlabs/starknet-rs.git?branch=fork)", + "starknet-crypto-codegen 0.4.0", + "starknet-curve 0.5.0", "starknet-types-core", "zeroize", ] [[package]] name = "starknet-crypto" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2a821ad8d98c6c3e4d0e5097f3fe6e2ed120ada9d32be87cd1330c7923a2f0" +checksum = "60a5064173a8e8d2675e67744fd07f310de44573924b6b7af225a6bdd8102913" dependencies = [ "crypto-bigint", "hex", @@ -8048,8 +7907,7 @@ dependencies = [ "num-traits 0.2.19", "rfc6979", "sha2", - "starknet-crypto-codegen 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "starknet-curve 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "starknet-curve 0.5.1", "starknet-types-core", "zeroize", ] @@ -8062,18 +7920,7 @@ checksum = "bbc159a1934c7be9761c237333a57febe060ace2bc9e3b337a59a37af206d19f" dependencies = [ "starknet-curve 0.4.2", "starknet-ff", - "syn 2.0.66", -] - -[[package]] -name = "starknet-crypto-codegen" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e179dedc3fa6da064e56811d3e05d446aa2f7459e4eb0e3e49378a337235437" -dependencies = [ - "starknet-curve 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "starknet-types-core", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -8081,9 +7928,9 @@ name = "starknet-crypto-codegen" version = "0.4.0" source = "git+https://github.com/kasarlabs/starknet-rs.git?branch=fork#1a0428e28e31e02cee1f4ddb80476d23eac77dc1" dependencies = [ - "starknet-curve 0.5.0 (git+https://github.com/kasarlabs/starknet-rs.git?branch=fork)", + "starknet-curve 0.5.0", "starknet-types-core", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -8107,16 +7954,16 @@ dependencies = [ [[package]] name = "starknet-curve" version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56935b306dcf0b8f14bb2a1257164b8478bb8be4801dfae0923f5b266d1b457c" +source = "git+https://github.com/kasarlabs/starknet-rs.git?branch=fork#1a0428e28e31e02cee1f4ddb80476d23eac77dc1" dependencies = [ "starknet-types-core", ] [[package]] name = "starknet-curve" -version = "0.5.0" -source = "git+https://github.com/kasarlabs/starknet-rs.git?branch=fork#1a0428e28e31e02cee1f4ddb80476d23eac77dc1" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcde6bd74269b8161948190ace6cf069ef20ac6e79cd2ba09b320efa7500b6de" dependencies = [ "starknet-types-core", ] @@ -8135,12 +7982,12 @@ dependencies = [ [[package]] name = "starknet-macros" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4fe4f8d615329410578cbedcdbaa4a36c7f28f68c3f3ac56006cfbdaeaa2b41" +checksum = "8986a940af916fc0a034f4e42c6ba76d94f1e97216d75447693dfd7aefaf3ef2" dependencies = [ - "starknet-core", - "syn 2.0.66", + "starknet-core 0.12.0", + "syn 2.0.79", ] [[package]] @@ -8158,7 +8005,7 @@ dependencies = [ "serde", "serde_json", "serde_with 2.3.3", - "starknet-core", + "starknet-core 0.11.0", "thiserror", "url", ] @@ -8175,8 +8022,8 @@ dependencies = [ "eth-keystore", "getrandom", "rand", - "starknet-core", - "starknet-crypto 0.7.1", + "starknet-core 0.11.0", + "starknet-crypto 0.7.2", "thiserror", ] @@ -8203,9 +8050,9 @@ checksum = "1b505c9c076d9fce854304bd743c93ea540ebea6b16ec96819b07343a3aa2c7c" dependencies = [ "bitvec", "cairo-lang-starknet-classes", - "derive_more", + "derive_more 0.99.18", "hex", - "indexmap 2.2.6", + "indexmap 2.6.0", "itertools 0.12.1", "once_cell", "primitive-types", @@ -8264,9 +8111,9 @@ checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" [[package]] name = "strum" -version = "0.26.2" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" dependencies = [ "strum_macros 0.26.4", ] @@ -8294,7 +8141,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -8307,26 +8154,26 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] name = "subtle" -version = "2.5.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "sval" -version = "2.13.0" +version = "2.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53eb957fbc79a55306d5d25d87daf3627bc3800681491cda0709eef36c748bfe" +checksum = "eaf38d1fa2ce984086ea42fb856a9f374d94680a4f796831a7fc868d7f2af1b9" [[package]] name = "sval_buffer" -version = "2.13.0" +version = "2.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96e860aef60e9cbf37888d4953a13445abf523c534640d1f6174d310917c410d" +checksum = "81682ff859964ca1d7cf3d3d0f9ec7204ea04c2c32acb8cc2cf68ecbd3127354" dependencies = [ "sval", "sval_ref", @@ -8334,18 +8181,18 @@ dependencies = [ [[package]] name = "sval_dynamic" -version = "2.13.0" +version = "2.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea3f2b07929a1127d204ed7cb3905049381708245727680e9139dac317ed556f" +checksum = "2a213b93bb4c6f4c9f9b17f2e740e077fd18746bbf7c80c72bbadcac68fa7ee4" dependencies = [ "sval", ] [[package]] name = "sval_fmt" -version = "2.13.0" +version = "2.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4e188677497de274a1367c4bda15bd2296de4070d91729aac8f0a09c1abf64d" +checksum = "6902c6d3fb52c89206fe0dc93546c0123f7d48b5997fd14e61c9e64ff0b63275" dependencies = [ "itoa", "ryu", @@ -8354,9 +8201,9 @@ dependencies = [ [[package]] name = "sval_json" -version = "2.13.0" +version = "2.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f456c07dae652744781f2245d5e3b78e6a9ebad70790ac11eb15dbdbce5282" +checksum = "11a28041ea78cdc394b930ae6b897d36246dc240a29a6edf82d76562487fb0b4" dependencies = [ "itoa", "ryu", @@ -8365,9 +8212,9 @@ dependencies = [ [[package]] name = "sval_nested" -version = "2.13.0" +version = "2.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "886feb24709f0476baaebbf9ac10671a50163caa7e439d7a7beb7f6d81d0a6fb" +checksum = "850346e4b0742a7f2fd2697d703ff80084d0b658f0f2e336d71b8a06abf9b68e" dependencies = [ "sval", "sval_buffer", @@ -8376,18 +8223,18 @@ dependencies = [ [[package]] name = "sval_ref" -version = "2.13.0" +version = "2.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be2e7fc517d778f44f8cb64140afa36010999565528d48985f55e64d45f369ce" +checksum = "824afd97a8919f28a35b0fdea979845cc2ae461a8a3aaa129455cb89c88bb77a" dependencies = [ "sval", ] [[package]] name = "sval_serde" -version = "2.13.0" +version = "2.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79bf66549a997ff35cd2114a27ac4b0c2843280f2cfa84b240d169ecaa0add46" +checksum = "8ada7520dd719ed672c786c7db7de4f5230f4d504b0821bd8305cd30ca442315" dependencies = [ "serde", "sval", @@ -8407,9 +8254,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.66" +version = "2.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" +checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" dependencies = [ "proc-macro2", "quote", @@ -8418,14 +8265,14 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "0.7.7" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c837dc8852cb7074e46b444afb81783140dab12c58867b49fb3898fbafedf7ea" +checksum = "20e7b52ad118b2153644eea95c6fc740b6c1555b2344fdab763fc9de4075f665" dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -8439,23 +8286,15 @@ name = "sync_wrapper" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" - -[[package]] -name = "synstructure" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", + "futures-core", ] [[package]] name = "sysinfo" -version = "0.30.12" +version = "0.30.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "732ffa00f53e6b2af46208fba5718d9662a421049204e156328b66791ffa15ae" +checksum = "0a5b4ddaee55fb2bea2bf0e5000747e5f5c0de765e5a5ff87f4cd106439f4bb3" dependencies = [ "cfg-if", "core-foundation-sys", @@ -8474,7 +8313,18 @@ checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" dependencies = [ "bitflags 1.3.2", "core-foundation", - "system-configuration-sys", + "system-configuration-sys 0.5.0", +] + +[[package]] +name = "system-configuration" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +dependencies = [ + "bitflags 2.6.0", + "core-foundation", + "system-configuration-sys 0.6.0", ] [[package]] @@ -8487,6 +8337,16 @@ dependencies = [ "libc", ] +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "tap" version = "1.0.1" @@ -8495,14 +8355,15 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.10.1" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" dependencies = [ "cfg-if", - "fastrand 2.1.0", - "rustix 0.38.34", - "windows-sys 0.52.0", + "fastrand", + "once_cell", + "rustix", + "windows-sys 0.59.0", ] [[package]] @@ -8533,22 +8394,22 @@ checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" [[package]] name = "thiserror" -version = "1.0.61" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" +checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.61" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" +checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -8633,43 +8494,47 @@ dependencies = [ ] [[package]] -name = "tinystr" -version = "0.7.6" +name = "tinyvec" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ - "displaydoc", - "zerovec", + "tinyvec_macros", ] +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + [[package]] name = "tokio" -version = "1.38.0" +version = "1.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" +checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" dependencies = [ "backtrace", "bytes", "libc", "mio", - "num_cpus", "parking_lot 0.12.3", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.7", + "socket2", "tokio-macros", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "tokio-macros" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -8698,16 +8563,16 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ - "rustls 0.23.10", + "rustls 0.23.14", "rustls-pki-types", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" dependencies = [ "futures-core", "pin-project-lite", @@ -8717,9 +8582,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.11" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" dependencies = [ "bytes", "futures-core", @@ -8740,47 +8605,36 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.14" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.14", + "toml_edit", ] [[package]] name = "toml_datetime" -version = "0.6.6" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" -dependencies = [ - "indexmap 2.2.6", - "toml_datetime", - "winnow 0.5.40", -] - -[[package]] -name = "toml_edit" -version = "0.22.14" +version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.6.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.13", + "winnow", ] [[package]] @@ -8793,19 +8647,32 @@ dependencies = [ "futures-util", "pin-project", "pin-project-lite", - "tokio", "tower-layer", "tower-service", "tracing", ] +[[package]] +name = "tower" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper 0.1.2", + "tower-layer", + "tower-service", +] + [[package]] name = "tower-http" version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61c5bb1d698276a2443e5ecfabc1008bf15a36c12e6a7176e7bf089ea9131140" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "bytes", "futures-core", "futures-util", @@ -8819,15 +8686,15 @@ dependencies = [ [[package]] name = "tower-layer" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] name = "tower-service" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" @@ -8849,7 +8716,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -8909,7 +8776,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04659ddb06c87d233c566112c1c9c5b9e98256d9af50ec3bc9c8327f873a7568" dependencies = [ "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -8939,9 +8806,9 @@ dependencies = [ [[package]] name = "typeid" -version = "1.0.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "059d83cc991e7a42fc37bd50941885db0888e34209f8cfd9aab07ddec03bc9cf" +checksum = "0e13db2e0ccd5e14a544e8a246ba2312cd25223f616442d7f2cb0e3db614236e" [[package]] name = "typenum" @@ -8951,9 +8818,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "ucd-trie" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" [[package]] name = "uint" @@ -8975,30 +8842,45 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unescaper" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0adf6ad32eb5b3cadff915f7b770faaac8f7ff0476633aa29eb0d9584d889d34" +checksum = "c878a167baa8afd137494101a688ef8c67125089ff2249284bd2b5f9bfedb815" dependencies = [ "thiserror", ] +[[package]] +name = "unicode-bidi" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" + [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" + +[[package]] +name = "unicode-normalization" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" +dependencies = [ + "tinyvec", +] [[package]] name = "unicode-segmentation" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-xid" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "unsafe-libyaml" @@ -9014,9 +8896,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.1" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c25da092f0a868cdf09e8674cd3b7ef3a7d92a24253e663a2fb85e2496de56" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", "idna", @@ -9029,18 +8911,6 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" -[[package]] -name = "utf16_iter" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" - -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - [[package]] name = "utf8parse" version = "0.2.2" @@ -9107,9 +8977,9 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "wait-timeout" @@ -9120,12 +8990,6 @@ dependencies = [ "libc", ] -[[package]] -name = "waker-fn" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7" - [[package]] name = "walkdir" version = "2.5.0" @@ -9153,34 +9017,35 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.42" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" dependencies = [ "cfg-if", "js-sys", @@ -9190,9 +9055,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -9200,28 +9065,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] name = "web-sys" -version = "0.3.69" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" dependencies = [ "js-sys", "wasm-bindgen", @@ -9251,11 +9116,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -9271,7 +9136,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" dependencies = [ "windows-core", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -9280,7 +9145,37 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +dependencies = [ + "windows-result", + "windows-strings", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result", + "windows-targets 0.52.6", ] [[package]] @@ -9298,7 +9193,16 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", ] [[package]] @@ -9318,18 +9222,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.5", - "windows_aarch64_msvc 0.52.5", - "windows_i686_gnu 0.52.5", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", "windows_i686_gnullvm", - "windows_i686_msvc 0.52.5", - "windows_x86_64_gnu 0.52.5", - "windows_x86_64_gnullvm 0.52.5", - "windows_x86_64_msvc 0.52.5", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -9340,9 +9244,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -9352,9 +9256,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -9364,15 +9268,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -9382,9 +9286,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -9394,9 +9298,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -9406,9 +9310,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -9418,24 +9322,15 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" - -[[package]] -name = "winnow" -version = "0.5.40" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" -dependencies = [ - "memchr", -] +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.6.13" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" dependencies = [ "memchr", ] @@ -9450,28 +9345,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "winreg" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] - -[[package]] -name = "write16" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" - -[[package]] -name = "writeable" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" - [[package]] name = "wyz" version = "0.5.1" @@ -9498,73 +9371,29 @@ checksum = "9d422e8e38ec76e2f06ee439ccc765e9c6a9638b9e7c9f2e8255e4d41e8bd852" [[package]] name = "yansi" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" - -[[package]] -name = "yoke" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" -dependencies = [ - "serde", - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.7.4" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", - "synstructure", -] +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" [[package]] name = "zerocopy" -version = "0.7.34" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ + "byteorder", "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", -] - -[[package]] -name = "zerofrom" -version = "0.1.4" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" -dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", - "synstructure", + "syn 2.0.79", ] [[package]] @@ -9584,29 +9413,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", -] - -[[package]] -name = "zerovec" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2cc8827d6c0994478a15c53f374f46fbd41bea663d809b14744bc42e6b109c" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97cf56601ee5052b4417d90c8755c6683473c926039908196cf35d99f893ebe7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -9650,9 +9457,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.11+zstd.1.5.6" +version = "2.0.13+zstd.1.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75652c55c0b6f3e6f12eb786fe1bc960396bf05a1eb3bf1f3691c3610ac2e6d4" +checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" dependencies = [ "cc", "pkg-config", diff --git a/Cargo.toml b/Cargo.toml index dcf7244fe..ae7018dab 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -137,7 +137,7 @@ starknet_api = "=0.13.0-rc.1" cairo-lang-starknet-classes = "=2.7.0" cairo-lang-utils = "=2.7.0" -alloy = { version = "0.2.0", features = [ +alloy = { version = "0.4.0", features = [ "node-bindings", "rpc-types", "provider-http", @@ -174,6 +174,7 @@ num-traits = "0.2" num-bigint = "0.4" primitive-types = "0.12" rand = "0.8" +indoc = "2" reqwest = { version = "0.12", features = ["blocking", "json"] } rstest = "0.18" serde = { version = "1.0", default-features = false, features = ["std"] } diff --git a/crates/client/db/src/class_db.rs b/crates/client/db/src/class_db.rs index aa57efd80..a12719b5a 100644 --- a/crates/client/db/src/class_db.rs +++ b/crates/client/db/src/class_db.rs @@ -35,7 +35,6 @@ impl MadaraBackend { return Ok(Some(bincode::deserialize(&res)?)); // found in pending } } - log::debug!("get encoded: not in pending"); let col = self.db.get_column(nonpending_col); let Some(val) = self.db.get_pinned_cf(&col, &key_encoded)? else { return Ok(None) }; diff --git a/crates/client/eth/src/l1_messaging.rs b/crates/client/eth/src/l1_messaging.rs index b9df9c56a..d1576ff40 100644 --- a/crates/client/eth/src/l1_messaging.rs +++ b/crates/client/eth/src/l1_messaging.rs @@ -1,22 +1,20 @@ -use alloy::eips::BlockNumberOrTag; -use anyhow::Context; -use futures::StreamExt; -use std::sync::Arc; - use crate::client::StarknetCoreContract::LogMessageToL2; use crate::client::{EthereumClient, StarknetCoreContract}; use crate::utils::u256_to_felt; +use alloy::eips::BlockNumberOrTag; use alloy::primitives::{keccak256, FixedBytes, U256}; use alloy::sol_types::SolValue; -use blockifier::transaction::transactions::L1HandlerTransaction as BlockifierL1HandlerTransaction; +use anyhow::Context; +use blockifier::transaction::transaction_execution::Transaction as BlockifierTransation; +use futures::StreamExt; use mc_db::{l1_db::LastSyncedEventBlock, MadaraBackend}; +use mc_mempool::{Mempool, MempoolProvider}; use mp_utils::channel_wait_or_graceful_shutdown; use starknet_api::core::{ChainId, ContractAddress, EntryPointSelector, Nonce}; -use starknet_api::transaction::{ - Calldata, Fee, L1HandlerTransaction, Transaction, TransactionHash, TransactionVersion, -}; +use starknet_api::transaction::{Calldata, Fee, L1HandlerTransaction, Transaction, TransactionVersion}; use starknet_api::transaction_hash::get_transaction_hash; use starknet_types_core::felt::Felt; +use std::sync::Arc; impl EthereumClient { /// Get cancellation status of an L1 to L2 message @@ -39,7 +37,12 @@ impl EthereumClient { } } -pub async fn sync(backend: &MadaraBackend, client: &EthereumClient, chain_id: &ChainId) -> anyhow::Result<()> { +pub async fn sync( + backend: &MadaraBackend, + client: &EthereumClient, + chain_id: &ChainId, + mempool: Arc, +) -> anyhow::Result<()> { tracing::info!("⟠ Starting L1 Messages Syncing..."); let last_synced_event_block = match backend.messaging_last_synced_l1_block_with_event() { @@ -53,14 +56,14 @@ pub async fn sync(backend: &MadaraBackend, client: &EthereumClient, chain_id: &C } }; let event_filter = client.l1_core_contract.event_filter::(); + let mut event_stream = event_filter .from_block(last_synced_event_block.block_number) - .select(BlockNumberOrTag::Finalized) + .to_block(BlockNumberOrTag::Finalized) .watch() .await .context("Failed to watch event filter")? .into_stream(); - while let Some(event_result) = channel_wait_or_graceful_shutdown(event_stream.next()).await { if let Ok((event, meta)) = event_result { tracing::info!( @@ -92,7 +95,9 @@ pub async fn sync(backend: &MadaraBackend, client: &EthereumClient, chain_id: &C continue; } - match process_l1_message(backend, &event, &meta.block_number, &meta.log_index, chain_id).await { + match process_l1_message(backend, &event, &meta.block_number, &meta.log_index, chain_id, mempool.clone()) + .await + { Ok(Some(tx_hash)) => { tracing::info!( "⟠ L1 Message from block: {:?}, transaction_hash: {:?}, log_index: {:?} submitted, \ @@ -127,7 +132,8 @@ async fn process_l1_message( l1_block_number: &Option, event_index: &Option, chain_id: &ChainId, -) -> anyhow::Result> { + mempool: Arc, +) -> anyhow::Result> { let transaction = parse_handle_l1_message_transaction(event)?; let tx_nonce = transaction.nonce; @@ -147,17 +153,22 @@ async fn process_l1_message( }; let tx_hash = get_transaction_hash(&Transaction::L1Handler(transaction.clone()), chain_id, &transaction.version)?; - let blockifier_transaction: BlockifierL1HandlerTransaction = - BlockifierL1HandlerTransaction { tx: transaction.clone(), tx_hash, paid_fee_on_l1: Fee(event.fee.try_into()?) }; - - // TODO: submit tx to mempool + let blockifier_transaction = BlockifierTransation::from_api( + Transaction::L1Handler(transaction), + tx_hash, + None, + Some(Fee(event.fee.try_into()?)), + None, + false, + )?; + let res = mempool.accept_l1_handler_tx(blockifier_transaction)?; // TODO: remove unwraps + // Ques: shall it panic if no block number of event_index? let block_sent = LastSyncedEventBlock::new(l1_block_number.unwrap(), event_index.unwrap()); backend.messaging_update_last_synced_l1_block_with_event(block_sent)?; - // TODO: replace by tx hash from mempool - Ok(Some(blockifier_transaction.tx_hash)) + Ok(Some(res.transaction_hash)) } pub fn parse_handle_l1_message_transaction(event: &LogMessageToL2) -> anyhow::Result { @@ -211,7 +222,7 @@ mod l1_messaging_tests { use std::{sync::Arc, time::Duration}; - use super::Felt; + use crate::l1_messaging::sync; use crate::{ client::{ EthereumClient, L1BlockMetrics, @@ -229,16 +240,16 @@ mod l1_messaging_tests { transports::http::{Client, Http}, }; use mc_db::DatabaseService; + use mc_mempool::{GasPriceProvider, L1DataProvider, Mempool}; use mc_metrics::{MetricsRegistry, MetricsService}; use mp_chain_config::ChainConfig; use rstest::*; use starknet_api::core::Nonce; + use starknet_types_core::felt::Felt; use tempfile::TempDir; use tracing_test::traced_test; use url::Url; - use crate::l1_messaging::sync; - use self::DummyContract::DummyContractInstance; struct TestRunner { @@ -248,6 +259,7 @@ mod l1_messaging_tests { db_service: Arc, dummy_contract: DummyContractInstance, RootProvider>>, eth_client: EthereumClient, + mempool: Arc, } // LogMessageToL2 from https://etherscan.io/tx/0x21980d6674d33e50deee43c6c30ef3b439bd148249b4539ce37b7856ac46b843 @@ -348,6 +360,11 @@ mod l1_messaging_tests { .expect("Failed to create database service"), ); + let l1_gas_setter = GasPriceProvider::new(); + let l1_data_provider: Arc = Arc::new(l1_gas_setter.clone()); + + let mempool = Arc::new(Mempool::new(Arc::clone(db.backend()), Arc::clone(&l1_data_provider))); + // Set up metrics service let prometheus_service = MetricsService::new(true, false, 9615).unwrap(); let l1_block_metrics = L1BlockMetrics::register(prometheus_service.registry()).unwrap(); @@ -367,7 +384,7 @@ mod l1_messaging_tests { l1_block_metrics: l1_block_metrics.clone(), }; - TestRunner { anvil, chain_config, db_service: db, dummy_contract: contract, eth_client } + TestRunner { anvil, chain_config, db_service: db, dummy_contract: contract, eth_client, mempool } } /// Test the basic workflow of l1 -> l2 messaging @@ -386,13 +403,13 @@ mod l1_messaging_tests { #[traced_test] #[tokio::test] async fn e2e_test_basic_workflow(#[future] setup_test_env: TestRunner) { - let TestRunner { chain_config, db_service: db, dummy_contract: contract, eth_client, anvil: _anvil } = + let TestRunner { chain_config, db_service: db, dummy_contract: contract, eth_client, anvil: _anvil, mempool } = setup_test_env.await; // Start worker let worker_handle = { let db = Arc::clone(&db); - tokio::spawn(async move { sync(db.backend(), ð_client, &chain_config.chain_id).await }) + tokio::spawn(async move { sync(db.backend(), ð_client, &chain_config.chain_id, mempool).await }) }; let _ = contract.setIsCanceled(false).send().await; @@ -438,13 +455,13 @@ mod l1_messaging_tests { #[traced_test] #[tokio::test] async fn e2e_test_already_processed_event(#[future] setup_test_env: TestRunner) { - let TestRunner { chain_config, db_service: db, dummy_contract: contract, eth_client, anvil: _anvil } = + let TestRunner { chain_config, db_service: db, dummy_contract: contract, eth_client, anvil: _anvil, mempool } = setup_test_env.await; // Start worker let worker_handle = { let db = Arc::clone(&db); - tokio::spawn(async move { sync(db.backend(), ð_client, &chain_config.chain_id).await }) + tokio::spawn(async move { sync(db.backend(), ð_client, &chain_config.chain_id, mempool).await }) }; let _ = contract.setIsCanceled(false).send().await; @@ -485,13 +502,13 @@ mod l1_messaging_tests { #[traced_test] #[tokio::test] async fn e2e_test_message_canceled(#[future] setup_test_env: TestRunner) { - let TestRunner { chain_config, db_service: db, dummy_contract: contract, eth_client, anvil: _anvil } = + let TestRunner { chain_config, db_service: db, dummy_contract: contract, eth_client, anvil: _anvil, mempool } = setup_test_env.await; // Start worker let worker_handle = { let db = Arc::clone(&db); - tokio::spawn(async move { sync(db.backend(), ð_client, &chain_config.chain_id).await }) + tokio::spawn(async move { sync(db.backend(), ð_client, &chain_config.chain_id, mempool).await }) }; // Mock cancelled message diff --git a/crates/client/eth/src/state_update.rs b/crates/client/eth/src/state_update.rs index f8ef4b361..2031a8395 100644 --- a/crates/client/eth/src/state_update.rs +++ b/crates/client/eth/src/state_update.rs @@ -6,9 +6,11 @@ use crate::{ use anyhow::Context; use futures::StreamExt; use mc_db::MadaraBackend; +use mp_convert::ToFelt; use mp_transactions::MAIN_CHAIN_ID; use mp_utils::channel_wait_or_graceful_shutdown; use serde::Deserialize; +use starknet_api::core::ChainId; use starknet_types_core::felt::Felt; #[derive(Debug, Clone, Deserialize, PartialEq)] @@ -33,7 +35,7 @@ pub async fn listen_and_update_state( eth_client: &EthereumClient, backend: &MadaraBackend, block_metrics: &L1BlockMetrics, - chain_id: Felt, + chain_id: ChainId, ) -> anyhow::Result<()> { let event_filter = eth_client.l1_core_contract.event_filter::(); @@ -43,7 +45,7 @@ pub async fn listen_and_update_state( let log = event_result.context("listening for events")?; let format_event: L1StateUpdate = convert_log_state_update(log.0.clone()).context("formatting event into an L1StateUpdate")?; - update_l1(backend, format_event, block_metrics, chain_id)?; + update_l1(backend, format_event, block_metrics, chain_id.clone())?; } Ok(()) @@ -53,12 +55,12 @@ pub fn update_l1( backend: &MadaraBackend, state_update: L1StateUpdate, block_metrics: &L1BlockMetrics, - chain_id: Felt, + chain_id: ChainId, ) -> anyhow::Result<()> { // This is a provisory check to avoid updating the state with an L1StateUpdate that should not have been detected // // TODO: Remove this check when the L1StateUpdate is properly verified - if state_update.block_number > 500000u64 || chain_id == MAIN_CHAIN_ID { + if state_update.block_number > 500000u64 || chain_id.to_felt() == MAIN_CHAIN_ID { log::info!( "🔄 Updated L1 head #{} ({}) with state root ({})", state_update.block_number, @@ -80,7 +82,7 @@ pub fn update_l1( pub async fn state_update_worker( backend: &MadaraBackend, eth_client: &EthereumClient, - chain_id: Felt, + chain_id: ChainId, ) -> anyhow::Result<()> { // Clear L1 confirmed block at startup backend.clear_last_confirmed_block().context("Clearing l1 last confirmed block number")?; @@ -90,7 +92,7 @@ pub async fn state_update_worker( // ideally here there would be one service which will update the l1 gas prices and another one for messages and one that's already present is state update // Get and store the latest verified state let initial_state = get_initial_state(eth_client).await.context("Getting initial ethereum state")?; - update_l1(backend, initial_state, ð_client.l1_block_metrics, chain_id)?; + update_l1(backend, initial_state, ð_client.l1_block_metrics, chain_id.clone())?; // Listen to LogStateUpdate (0x77552641) update and send changes continusly listen_and_update_state(eth_client, backend, ð_client.l1_block_metrics, chain_id) @@ -109,7 +111,6 @@ mod eth_client_event_subscription_test { use mc_db::DatabaseService; use mc_metrics::{MetricsRegistry, MetricsService}; use mp_chain_config::ChainConfig; - use mp_convert::ToFelt; use rstest::*; use tempfile::TempDir; use url::Url; @@ -190,7 +191,7 @@ mod eth_client_event_subscription_test { ð_client, db.backend(), ð_client.l1_block_metrics, - chain_info.chain_id.clone().to_felt(), + chain_info.chain_id.clone(), ) .await }) diff --git a/crates/client/eth/src/sync.rs b/crates/client/eth/src/sync.rs index d730adf27..6d9d6196d 100644 --- a/crates/client/eth/src/sync.rs +++ b/crates/client/eth/src/sync.rs @@ -1,8 +1,10 @@ use crate::client::EthereumClient; use crate::l1_gas_price::gas_price_worker; +use crate::l1_messaging::sync; use crate::state_update::state_update_worker; -use mc_mempool::GasPriceProvider; -use starknet_types_core::felt::Felt; +use mc_mempool::{GasPriceProvider, Mempool}; +use starknet_api::core::ChainId; +use std::sync::Arc; use std::time::Duration; use mc_db::MadaraBackend; @@ -10,17 +12,22 @@ use mc_db::MadaraBackend; pub async fn l1_sync_worker( backend: &MadaraBackend, eth_client: &EthereumClient, - chain_id: Felt, + chain_id: ChainId, l1_gas_provider: GasPriceProvider, gas_price_sync_disabled: bool, gas_price_poll_ms: Duration, + mempool: Arc, ) -> anyhow::Result<()> { - tokio::try_join!(state_update_worker(backend, eth_client, chain_id), async { - if !gas_price_sync_disabled { - gas_price_worker(eth_client, l1_gas_provider, gas_price_poll_ms).await?; - } - Ok(()) - })?; + tokio::try_join!( + state_update_worker(backend, eth_client, chain_id.clone()), + async { + if !gas_price_sync_disabled { + gas_price_worker(eth_client, l1_gas_provider, gas_price_poll_ms).await?; + } + Ok(()) + }, + sync(backend, eth_client, &chain_id, mempool) + )?; Ok(()) } diff --git a/crates/client/exec/src/lib.rs b/crates/client/exec/src/lib.rs index 12ef6e9ac..2bc1880b7 100644 --- a/crates/client/exec/src/lib.rs +++ b/crates/client/exec/src/lib.rs @@ -13,7 +13,7 @@ use starknet_types_core::felt::Felt; mod block_context; mod blockifier_state_adapter; mod call; -mod execution; +pub mod execution; mod fee; mod trace; diff --git a/crates/client/mempool/src/block_production.rs b/crates/client/mempool/src/block_production.rs index d3d5f6bb7..e69141073 100644 --- a/crates/client/mempool/src/block_production.rs +++ b/crates/client/mempool/src/block_production.rs @@ -1,14 +1,10 @@ // TODO: Move this into its own crate. -use crate::close_block::close_block; -use crate::header::make_pending_header; -use crate::{clone_account_tx, L1DataProvider, MempoolProvider, MempoolTransaction}; use blockifier::blockifier::transaction_executor::{TransactionExecutor, VisitedSegmentsMapping}; use blockifier::bouncer::{Bouncer, BouncerWeights, BuiltinCount}; use blockifier::state::cached_state::CommitmentStateDiff; use blockifier::state::state_api::StateReader; use blockifier::transaction::errors::TransactionExecutionError; -use blockifier::transaction::transaction_execution::Transaction; use mc_block_import::{BlockImportError, BlockImporter}; use mc_db::db_block_id::DbBlockId; use mc_db::{MadaraBackend, MadaraStorageError}; @@ -30,6 +26,10 @@ use std::mem; use std::sync::Arc; use std::time::Instant; +use crate::close_block::close_block; +use crate::header::make_pending_header; +use crate::{clone_transaction, L1DataProvider, MempoolProvider, MempoolTransaction}; + #[derive(Default, Clone)] struct ContinueBlockStats { /// Number of batches executed before reaching the bouncer capacity. @@ -241,12 +241,8 @@ impl BlockProductionTask { if to_take > 0 { self.mempool.take_txs_chunk(/* extend */ &mut txs_to_process, batch_size); - txs_to_process_blockifier.extend( - txs_to_process - .iter() - .skip(cur_len) - .map(|tx| Transaction::AccountTransaction(clone_account_tx(&tx.tx))), - ); + txs_to_process_blockifier + .extend(txs_to_process.iter().skip(cur_len).map(|tx| clone_transaction(&tx.tx))); } if txs_to_process.is_empty() { @@ -280,11 +276,11 @@ impl BlockProductionTask { self.declared_classes.push(class); } - self.block.inner.receipts.push(from_blockifier_execution_info( - &execution_info, - &Transaction::AccountTransaction(clone_account_tx(&mempool_tx.tx)), - )); - let converted_tx = TransactionWithHash::from(clone_account_tx(&mempool_tx.tx)); // TODO: too many tx clones! + self.block + .inner + .receipts + .push(from_blockifier_execution_info(&execution_info, &clone_transaction(&mempool_tx.tx))); + let converted_tx = TransactionWithHash::from(clone_transaction(&mempool_tx.tx)); // TODO: too many tx clones! self.block.info.tx_hashes.push(converted_tx.hash); self.block.inner.transactions.push(converted_tx.transaction); } @@ -426,7 +422,7 @@ impl BlockProductionTask { let address = Felt::ONE; new_state_diff.storage_diffs.push(ContractStorageDiffItem { address, - storage_entries: vec![StorageEntry { key: Felt::from(block_n), value: prev_block_hash }], + storage_entries: vec![StorageEntry { key: Felt::from(prev_block_number), value: prev_block_hash }], }); } diff --git a/crates/client/mempool/src/inner.rs b/crates/client/mempool/src/inner.rs index 0a7eb845a..bc430e7d1 100644 --- a/crates/client/mempool/src/inner.rs +++ b/crates/client/mempool/src/inner.rs @@ -6,9 +6,11 @@ //! TODO: mempool size limits //! TODO(perf): should we box the MempoolTransaction? -use crate::{clone_account_tx, contract_addr, nonce, tx_hash}; +use crate::{clone_transaction, contract_addr, nonce, tx_hash}; use blockifier::transaction::account_transaction::AccountTransaction; +use blockifier::transaction::transaction_execution::Transaction; use core::fmt; +use mc_exec::execution::TxInfo; use mp_class::ConvertedClass; use mp_convert::FeltHexDisplay; use starknet_api::{ @@ -25,7 +27,7 @@ use std::{ pub type ArrivedAtTimestamp = SystemTime; pub struct MempoolTransaction { - pub tx: AccountTransaction, + pub tx: Transaction, pub arrived_at: ArrivedAtTimestamp, pub converted_class: Option, } @@ -45,7 +47,7 @@ impl fmt::Debug for MempoolTransaction { impl Clone for MempoolTransaction { fn clone(&self) -> Self { Self { - tx: clone_account_tx(&self.tx), + tx: clone_transaction(&self.tx), arrived_at: self.arrived_at, converted_class: self.converted_class.clone(), } @@ -144,6 +146,7 @@ impl NonceChain { ) -> Result<(InsertedPosition, ReplacedState), TxInsersionError> { let mempool_tx_arrived_at = mempool_tx.arrived_at; let mempool_tx_nonce = mempool_tx.nonce(); + #[cfg(debug_assertions)] let mempool_tx_hash = mempool_tx.tx_hash(); let replaced = if force { @@ -156,6 +159,7 @@ impl NonceChain { match self.transactions.entry(OrderMempoolTransactionByNonce(mempool_tx)) { btree_map::Entry::Occupied(entry) => { // duplicate nonce, either it's because the hash is duplicated or nonce conflict with another tx. + #[cfg(debug_assertions)] if entry.key().0.tx_hash() == mempool_tx_hash { return Err(TxInsersionError::DuplicateTxn); } else { @@ -292,7 +296,7 @@ impl MempoolInner { assert!(tx_queue.is_empty()); let mut deployed_contracts = self.deployed_contracts.clone(); for (contract, _) in self.nonce_chains.values().flat_map(|chain| &chain.transactions) { - if let AccountTransaction::DeployAccount(tx) = &contract.0.tx { + if let Transaction::AccountTransaction(AccountTransaction::DeployAccount(tx)) = &contract.0.tx { deployed_contracts.decrement(tx.contract_address) } } @@ -304,7 +308,11 @@ impl MempoolInner { let contract_addr = mempool_tx.contract_address(); let arrived_at = mempool_tx.arrived_at; let deployed_contract_address = - if let AccountTransaction::DeployAccount(tx) = &mempool_tx.tx { Some(tx.contract_address) } else { None }; + if let Transaction::AccountTransaction(AccountTransaction::DeployAccount(tx)) = &mempool_tx.tx { + Some(tx.contract_address) + } else { + None + }; let is_replaced = match self.nonce_chains.entry(contract_addr) { hash_map::Entry::Occupied(mut entry) => { @@ -387,7 +395,7 @@ impl MempoolInner { } // Update deployed contracts. - if let AccountTransaction::DeployAccount(tx) = &mempool_tx.tx { + if let Transaction::AccountTransaction(AccountTransaction::DeployAccount(tx)) = &mempool_tx.tx { self.deployed_contracts.decrement(tx.contract_address); } @@ -414,6 +422,7 @@ mod tests { test_utils::{contracts::FeatureContract, CairoVersion}, transaction::{transaction_execution::Transaction, transaction_types::TransactionType}, }; + use mc_exec::execution::TxInfo; use mp_convert::ToFelt; use proptest::prelude::*; use proptest_derive::Arbitrary; @@ -426,6 +435,9 @@ mod tests { }, }; use starknet_types_core::felt::Felt; + + use blockifier::abi::abi_utils::selector_from_name; + use starknet_api::transaction::Fee; use std::{collections::HashSet, fmt, time::Duration}; lazy_static::lazy_static! { @@ -460,6 +472,7 @@ mod tests { Declare, DeployAccount, InvokeFunction, + L1Handler, } <(TxTy, u8, u8, u8, bool)>::arbitrary() @@ -520,6 +533,16 @@ mod tests { account_deployment_data: Default::default(), }), ), + // TODO: maybe update the values? + TxTy::L1Handler => starknet_api::transaction::Transaction::L1Handler( + starknet_api::transaction::L1HandlerTransaction { + version: TransactionVersion::ZERO, + nonce, + contract_address: contract_addr, + entry_point_selector: selector_from_name("l1_handler_set_value"), + calldata: Default::default(), + }, + ), }; let deployed = if let starknet_api::transaction::Transaction::DeployAccount(tx) = &tx { @@ -536,12 +559,17 @@ mod tests { None }; + // providing dummy l1 gas for now + let l1_gas_paid = match &tx { + starknet_api::transaction::Transaction::L1Handler(_) => Some(Fee(1)), + _ => None, + }; + let tx_hash = tx.calculate_transaction_hash(&ChainId::Mainnet, &TransactionVersion::THREE).unwrap(); let tx = - Transaction::from_api(tx, tx_hash, Some(DUMMY_CLASS.clone()), None, deployed, false).unwrap(); - - let Transaction::AccountTransaction(tx) = tx else { unimplemented!() }; + Transaction::from_api(tx, tx_hash, Some(DUMMY_CLASS.clone()), l1_gas_paid, deployed, false) + .unwrap(); Insert(MempoolTransaction { tx, arrived_at, converted_class: None }, force) }) diff --git a/crates/client/mempool/src/lib.rs b/crates/client/mempool/src/lib.rs index 38e6b43eb..48b5aadb6 100644 --- a/crates/client/mempool/src/lib.rs +++ b/crates/client/mempool/src/lib.rs @@ -1,9 +1,9 @@ use blockifier::blockifier::stateful_validator::StatefulValidatorError; use blockifier::transaction::account_transaction::AccountTransaction; use blockifier::transaction::transaction_execution::Transaction; -use blockifier::transaction::transactions::DeclareTransaction; use blockifier::transaction::transactions::DeployAccountTransaction; use blockifier::transaction::transactions::InvokeTransaction; +use blockifier::transaction::transactions::{DeclareTransaction, L1HandlerTransaction}; use header::make_pending_header; use inner::MempoolInner; use mc_db::db_block_id::DbBlockId; @@ -15,8 +15,10 @@ use mp_block::BlockTag; use mp_block::MadaraPendingBlockInfo; use mp_class::ConvertedClass; use mp_convert::ToFelt; -use mp_transactions::broadcasted_to_blockifier; -use mp_transactions::BroadcastedToBlockifierError; +use mp_transactions::{ + broadcasted_declare_v0_to_blockifier, broadcasted_to_blockifier, BroadcastedDeclareTransactionV0, +}; +use mp_transactions::{BroadcastedToBlockifierError, L1HandlerTransactionResult}; use starknet_api::core::{ContractAddress, Nonce}; use starknet_api::transaction::TransactionHash; use starknet_core::types::BroadcastedDeclareTransaction; @@ -64,11 +66,13 @@ impl Error { #[cfg_attr(test, mockall::automock)] pub trait MempoolProvider: Send + Sync { fn accept_invoke_tx(&self, tx: BroadcastedInvokeTransaction) -> Result; + fn accept_declare_v0_tx(&self, tx: BroadcastedDeclareTransactionV0) -> Result; fn accept_declare_tx(&self, tx: BroadcastedDeclareTransaction) -> Result; fn accept_deploy_account_tx( &self, tx: BroadcastedDeployAccountTransaction, ) -> Result; + fn accept_l1_handler_tx(&self, tx: Transaction) -> Result; fn take_txs_chunk + 'static>(&self, dest: &mut I, n: usize) where Self: Sized; @@ -91,8 +95,6 @@ impl Mempool { } fn accept_tx(&self, tx: Transaction, converted_class: Option) -> Result<(), Error> { - let Transaction::AccountTransaction(tx) = tx else { panic!("L1HandlerTransaction not supported yet") }; - // The timestamp *does not* take the transaction validation time into account. let arrived_at = ArrivedAtTimestamp::now(); @@ -115,7 +117,7 @@ impl Mempool { // If the contract has been deployed for the same block is is invoked, we need to skip validations. // NB: the lock is NOT taken the entire time the tx is being validated. As such, the deploy tx // may appear during that time - but it is not a problem. - let deploy_account_tx_hash = if let AccountTransaction::Invoke(tx) = &tx { + let deploy_account_tx_hash = if let Transaction::AccountTransaction(AccountTransaction::Invoke(tx)) = &tx { let mempool = self.inner.read().expect("Poisoned lock"); if mempool.has_deployed_contract(&tx.tx.sender_address()) { Some(tx.tx_hash) // we return the wrong tx hash here but it's ok because the actual hash is unused by blockifier @@ -131,7 +133,10 @@ impl Mempool { // Perform validations let exec_context = ExecutionContext::new_in_block(Arc::clone(&self.backend), &pending_block_info)?; let mut validator = exec_context.tx_validator(); - validator.perform_validations(clone_account_tx(&tx), deploy_account_tx_hash.is_some())?; + + if let Transaction::AccountTransaction(account_tx) = clone_transaction(&tx) { + validator.perform_validations(account_tx, deploy_account_tx_hash.is_some())? + } if !is_only_query(&tx) { log::debug!("Adding to mempool tx_hash={:#x}", tx_hash(&tx).to_felt()); @@ -185,6 +190,28 @@ impl MempoolProvider for Mempool { Ok(res) } + fn accept_declare_v0_tx(&self, tx: BroadcastedDeclareTransactionV0) -> Result { + let (tx, classes) = broadcasted_declare_v0_to_blockifier( + tx, + self.chain_id(), + self.backend.chain_config().latest_protocol_version, + )?; + + let res = DeclareTransactionResult { + transaction_hash: transaction_hash(&tx), + class_hash: declare_class_hash(&tx).expect("Created transaction should be declare"), + }; + + self.accept_tx(tx, classes)?; + Ok(res) + } + + fn accept_l1_handler_tx(&self, tx: Transaction) -> Result { + let res = L1HandlerTransactionResult { transaction_hash: transaction_hash(&tx) }; + self.accept_tx(tx, None)?; + Ok(res) + } + fn accept_declare_tx(&self, tx: BroadcastedDeclareTransaction) -> Result { let (tx, classes) = broadcasted_to_blockifier( BroadcastedTransaction::Declare(tx), @@ -240,59 +267,76 @@ impl MempoolProvider for Mempool { } } -pub(crate) fn is_only_query(tx: &AccountTransaction) -> bool { +pub(crate) fn is_only_query(tx: &Transaction) -> bool { match tx { - AccountTransaction::Declare(tx) => tx.only_query(), - AccountTransaction::DeployAccount(tx) => tx.only_query, - AccountTransaction::Invoke(tx) => tx.only_query, + Transaction::AccountTransaction(account_tx) => match account_tx { + AccountTransaction::Declare(tx) => tx.only_query(), + AccountTransaction::DeployAccount(tx) => tx.only_query, + AccountTransaction::Invoke(tx) => tx.only_query, + }, + Transaction::L1HandlerTransaction(_) => false, } } -pub(crate) fn contract_addr(tx: &AccountTransaction) -> ContractAddress { +pub(crate) fn contract_addr(tx: &Transaction) -> ContractAddress { match tx { - AccountTransaction::Declare(tx) => tx.tx.sender_address(), - AccountTransaction::DeployAccount(tx) => tx.contract_address, - AccountTransaction::Invoke(tx) => tx.tx.sender_address(), + Transaction::AccountTransaction(account_tx) => match account_tx { + AccountTransaction::Declare(tx) => tx.tx.sender_address(), + AccountTransaction::DeployAccount(tx) => tx.contract_address, + AccountTransaction::Invoke(tx) => tx.tx.sender_address(), + }, + Transaction::L1HandlerTransaction(tx) => tx.tx.contract_address, } } -pub(crate) fn nonce(tx: &AccountTransaction) -> Nonce { +pub(crate) fn nonce(tx: &Transaction) -> Nonce { match tx { - AccountTransaction::Declare(tx) => tx.tx.nonce(), - AccountTransaction::DeployAccount(tx) => tx.tx.nonce(), - AccountTransaction::Invoke(tx) => tx.tx.nonce(), + Transaction::AccountTransaction(account_tx) => match account_tx { + AccountTransaction::Declare(tx) => tx.tx.nonce(), + AccountTransaction::DeployAccount(tx) => tx.tx.nonce(), + AccountTransaction::Invoke(tx) => tx.tx.nonce(), + }, + Transaction::L1HandlerTransaction(tx) => tx.tx.nonce, } } -pub(crate) fn tx_hash(tx: &AccountTransaction) -> TransactionHash { +pub(crate) fn tx_hash(tx: &Transaction) -> TransactionHash { match tx { - AccountTransaction::Declare(tx) => tx.tx_hash, - AccountTransaction::DeployAccount(tx) => tx.tx_hash, - AccountTransaction::Invoke(tx) => tx.tx_hash, + Transaction::AccountTransaction(account_tx) => match account_tx { + AccountTransaction::Declare(tx) => tx.tx_hash, + AccountTransaction::DeployAccount(tx) => tx.tx_hash, + AccountTransaction::Invoke(tx) => tx.tx_hash, + }, + Transaction::L1HandlerTransaction(tx) => tx.tx_hash, } } // AccountTransaction does not implement Clone :( -pub(crate) fn clone_account_tx(tx: &AccountTransaction) -> AccountTransaction { +pub(crate) fn clone_transaction(tx: &Transaction) -> Transaction { match tx { - // Declare has a private field :( - AccountTransaction::Declare(tx) => AccountTransaction::Declare(match tx.only_query() { - // These should never fail - true => DeclareTransaction::new_for_query(tx.tx.clone(), tx.tx_hash, tx.class_info.clone()) - .expect("Making blockifier transaction for query"), - false => DeclareTransaction::new(tx.tx.clone(), tx.tx_hash, tx.class_info.clone()) - .expect("Making blockifier transaction"), - }), - AccountTransaction::DeployAccount(tx) => AccountTransaction::DeployAccount(DeployAccountTransaction { - tx: tx.tx.clone(), - tx_hash: tx.tx_hash, - contract_address: tx.contract_address, - only_query: tx.only_query, + Transaction::AccountTransaction(account_tx) => Transaction::AccountTransaction(match account_tx { + AccountTransaction::Declare(tx) => AccountTransaction::Declare(match tx.only_query() { + true => DeclareTransaction::new_for_query(tx.tx.clone(), tx.tx_hash, tx.class_info.clone()) + .expect("Making blockifier transaction for query"), + false => DeclareTransaction::new(tx.tx.clone(), tx.tx_hash, tx.class_info.clone()) + .expect("Making blockifier transaction"), + }), + AccountTransaction::DeployAccount(tx) => AccountTransaction::DeployAccount(DeployAccountTransaction { + tx: tx.tx.clone(), + tx_hash: tx.tx_hash, + contract_address: tx.contract_address, + only_query: tx.only_query, + }), + AccountTransaction::Invoke(tx) => AccountTransaction::Invoke(InvokeTransaction { + tx: tx.tx.clone(), + tx_hash: tx.tx_hash, + only_query: tx.only_query, + }), }), - AccountTransaction::Invoke(tx) => AccountTransaction::Invoke(InvokeTransaction { + Transaction::L1HandlerTransaction(tx) => Transaction::L1HandlerTransaction(L1HandlerTransaction { tx: tx.tx.clone(), tx_hash: tx.tx_hash, - only_query: tx.only_query, + paid_fee_on_l1: tx.paid_fee_on_l1, }), } } diff --git a/crates/client/rpc/src/lib.rs b/crates/client/rpc/src/lib.rs index 42e981afc..f63ff9e8e 100644 --- a/crates/client/rpc/src/lib.rs +++ b/crates/client/rpc/src/lib.rs @@ -93,11 +93,17 @@ impl Starknet { } /// Returns the RpcModule merged with all the supported RPC versions. -pub fn versioned_rpc_api(starknet: &Starknet, read: bool, write: bool, trace: bool) -> anyhow::Result> { +pub fn versioned_rpc_api( + starknet: &Starknet, + read: bool, + write: bool, + trace: bool, + internal: bool, +) -> anyhow::Result> { let mut rpc_api = RpcModule::new(()); merge_rpc_versions!( - rpc_api, starknet, read, write, trace, + rpc_api, starknet, read, write, trace, internal, v0_7_1, // We can add new versions by adding the version module below // , v0_8_0 (for example) ); diff --git a/crates/client/rpc/src/macros.rs b/crates/client/rpc/src/macros.rs index 2eddd1129..cb46b06dc 100644 --- a/crates/client/rpc/src/macros.rs +++ b/crates/client/rpc/src/macros.rs @@ -1,6 +1,6 @@ #[macro_export] macro_rules! merge_rpc_versions { - ($rpc_api:expr, $starknet:expr, $read:expr, $write:expr, $trace:expr, $($version:ident),+ $(,)?) => { + ($rpc_api:expr, $starknet:expr, $read:expr, $write:expr, $trace:expr, $internal:expr, $($version:ident),+ $(,)?) => { $( paste::paste! { if $read { @@ -12,6 +12,9 @@ macro_rules! merge_rpc_versions { if $trace { $rpc_api.merge(versions::[<$version>]::[]::into_rpc($starknet.clone()))?; } + if $internal { + $rpc_api.merge(versions::[<$version>]::[]::into_rpc($starknet.clone()))?; + } } )+ }; diff --git a/crates/client/rpc/src/providers/forward_to_provider.rs b/crates/client/rpc/src/providers/forward_to_provider.rs index e9d09445b..9bead7924 100644 --- a/crates/client/rpc/src/providers/forward_to_provider.rs +++ b/crates/client/rpc/src/providers/forward_to_provider.rs @@ -1,12 +1,12 @@ +use crate::{bail_internal_server_error, errors::StarknetRpcApiError}; use jsonrpsee::core::{async_trait, RpcResult}; +use mp_transactions::BroadcastedDeclareTransactionV0; use starknet_core::types::{ BroadcastedDeclareTransaction, BroadcastedDeployAccountTransaction, BroadcastedInvokeTransaction, DeclareTransactionResult, DeployAccountTransactionResult, InvokeTransactionResult, }; use starknet_providers::{Provider, ProviderError}; -use crate::{bail_internal_server_error, errors::StarknetRpcApiError}; - use super::AddTransactionProvider; pub struct ForwardToProvider { @@ -21,6 +21,12 @@ impl ForwardToProvider

{ #[async_trait] impl AddTransactionProvider for ForwardToProvider

{ + async fn add_declare_v0_transaction( + &self, + _declare_v0_transaction: BroadcastedDeclareTransactionV0, + ) -> RpcResult { + Err(StarknetRpcApiError::UnimplementedMethod.into()) + } async fn add_declare_transaction( &self, declare_transaction: BroadcastedDeclareTransaction, diff --git a/crates/client/rpc/src/providers/mempool.rs b/crates/client/rpc/src/providers/mempool.rs index a71492ce4..58721e082 100644 --- a/crates/client/rpc/src/providers/mempool.rs +++ b/crates/client/rpc/src/providers/mempool.rs @@ -3,6 +3,7 @@ use crate::{errors::StarknetRpcApiError, utils::display_internal_server_error}; use jsonrpsee::core::{async_trait, RpcResult}; use mc_mempool::Mempool; use mc_mempool::MempoolProvider; +use mp_transactions::BroadcastedDeclareTransactionV0; use starknet_core::types::{ BroadcastedDeclareTransaction, BroadcastedDeployAccountTransaction, BroadcastedInvokeTransaction, DeclareTransactionResult, DeployAccountTransactionResult, InvokeTransactionResult, @@ -43,6 +44,12 @@ impl From for StarknetRpcApiError { #[async_trait] impl AddTransactionProvider for MempoolAddTxProvider { + async fn add_declare_v0_transaction( + &self, + declare_v0_transaction: BroadcastedDeclareTransactionV0, + ) -> RpcResult { + Ok(self.mempool.accept_declare_v0_tx(declare_v0_transaction).map_err(StarknetRpcApiError::from)?) + } async fn add_declare_transaction( &self, declare_transaction: BroadcastedDeclareTransaction, diff --git a/crates/client/rpc/src/providers/mod.rs b/crates/client/rpc/src/providers/mod.rs index 1f89ca62b..e5ee2fd7e 100644 --- a/crates/client/rpc/src/providers/mod.rs +++ b/crates/client/rpc/src/providers/mod.rs @@ -5,6 +5,7 @@ pub use forward_to_provider::*; pub use mempool::*; use jsonrpsee::core::{async_trait, RpcResult}; +use mp_transactions::BroadcastedDeclareTransactionV0; use starknet_core::types::{ BroadcastedDeclareTransaction, BroadcastedDeployAccountTransaction, BroadcastedInvokeTransaction, DeclareTransactionResult, DeployAccountTransactionResult, InvokeTransactionResult, @@ -12,6 +13,10 @@ use starknet_core::types::{ #[async_trait] pub trait AddTransactionProvider: Send + Sync { + async fn add_declare_v0_transaction( + &self, + declare_v0_transaction: BroadcastedDeclareTransactionV0, + ) -> RpcResult; async fn add_declare_transaction( &self, declare_transaction: BroadcastedDeclareTransaction, diff --git a/crates/client/rpc/src/test_utils.rs b/crates/client/rpc/src/test_utils.rs index 55a9f1d4e..f70a0dc41 100644 --- a/crates/client/rpc/src/test_utils.rs +++ b/crates/client/rpc/src/test_utils.rs @@ -13,7 +13,7 @@ use mp_state_update::{ ContractStorageDiffItem, DeclaredClassItem, DeployedContractItem, NonceUpdate, ReplacedClassItem, StateDiff, StorageEntry, }; -use mp_transactions::{InvokeTransaction, InvokeTransactionV0, Transaction}; +use mp_transactions::{BroadcastedDeclareTransactionV0, InvokeTransaction, InvokeTransactionV0, Transaction}; use rstest::fixture; use starknet_core::types::{ BroadcastedDeclareTransaction, BroadcastedDeployAccountTransaction, BroadcastedInvokeTransaction, @@ -29,6 +29,12 @@ pub struct TestTransactionProvider; #[cfg(test)] #[async_trait] impl AddTransactionProvider for TestTransactionProvider { + async fn add_declare_v0_transaction( + &self, + _declare_v0_transaction: BroadcastedDeclareTransactionV0, + ) -> RpcResult { + unimplemented!() + } async fn add_declare_transaction( &self, _declare_transaction: BroadcastedDeclareTransaction, diff --git a/crates/client/rpc/src/versions/v0_7_1/api.rs b/crates/client/rpc/src/versions/v0_7_1/api.rs index 8dbab251d..40dcb202c 100644 --- a/crates/client/rpc/src/versions/v0_7_1/api.rs +++ b/crates/client/rpc/src/versions/v0_7_1/api.rs @@ -10,8 +10,8 @@ use starknet_core::types::{ }; use starknet_types_core::felt::Felt; -use m_proc_macros::versioned_starknet_rpc; - +use m_proc_macros::versioned_rpc; +use mp_transactions::BroadcastedDeclareTransactionV0; // Starknet RPC API trait and types // // Starkware maintains [a description of the Starknet API](https://github.com/starkware-libs/starknet-specs/blob/master/api/starknet_api_openrpc.json) @@ -19,7 +19,19 @@ use m_proc_macros::versioned_starknet_rpc; // This crate uses `jsonrpsee` to define such an API in Rust terms. /// Starknet write rpc interface. -#[versioned_starknet_rpc("V0_7_1")] +/// + +#[versioned_rpc("V0_7_1", "madara")] +pub trait MadaraWriteRpcApi { + /// Submit a new class v0 declaration transaction + #[method(name = "addDeclareV0Transaction")] + async fn add_declare_v0_transaction( + &self, + declare_transaction_v0: BroadcastedDeclareTransactionV0, + ) -> RpcResult; +} + +#[versioned_rpc("V0_7_1", "starknet")] pub trait StarknetWriteRpcApi { /// Submit a new transaction to be added to the chain #[method(name = "addInvokeTransaction")] @@ -28,14 +40,14 @@ pub trait StarknetWriteRpcApi { invoke_transaction: BroadcastedInvokeTransaction, ) -> RpcResult; - /// Submit a new class declaration transaction + /// Submit a new deploy account transaction #[method(name = "addDeployAccountTransaction")] async fn add_deploy_account_transaction( &self, deploy_account_transaction: BroadcastedDeployAccountTransaction, ) -> RpcResult; - /// Submit a new deploy account transaction + /// Submit a new class declaration transaction #[method(name = "addDeclareTransaction")] async fn add_declare_transaction( &self, @@ -43,7 +55,7 @@ pub trait StarknetWriteRpcApi { ) -> RpcResult; } -#[versioned_starknet_rpc("V0_7_1")] +#[versioned_rpc("V0_7_1", "starknet")] pub trait StarknetReadRpcApi { /// Get the Version of the StarkNet JSON-RPC Specification Being Used #[method(name = "specVersion")] @@ -144,7 +156,7 @@ pub trait StarknetReadRpcApi { fn get_state_update(&self, block_id: BlockId) -> RpcResult; } -#[versioned_starknet_rpc("V0_7_1")] +#[versioned_rpc("V0_7_1", "starknet")] pub trait StarknetTraceRpcApi { /// Returns the execution trace of a transaction by simulating it in the runtime. #[method(name = "simulateTransactions")] diff --git a/crates/client/rpc/src/versions/v0_7_1/methods/internal/mod.rs b/crates/client/rpc/src/versions/v0_7_1/methods/internal/mod.rs new file mode 100644 index 000000000..5638b0d0b --- /dev/null +++ b/crates/client/rpc/src/versions/v0_7_1/methods/internal/mod.rs @@ -0,0 +1,23 @@ +use crate::{versions::v0_7_1::MadaraWriteRpcApiV0_7_1Server, Starknet}; +use jsonrpsee::core::{async_trait, RpcResult}; +use mp_transactions::BroadcastedDeclareTransactionV0; +use starknet_core::types::DeclareTransactionResult; + +#[async_trait] +impl MadaraWriteRpcApiV0_7_1Server for Starknet { + /// Submit a new declare transaction to be added to the chain + /// + /// # Arguments + /// + /// * `declare_v0_transaction` - the declare v0 transaction to be added to the chain + /// + /// # Returns + /// + /// * `declare_transaction_result` - the result of the declare transaction + async fn add_declare_v0_transaction( + &self, + declare_transaction: BroadcastedDeclareTransactionV0, + ) -> RpcResult { + Ok(self.add_transaction_provider.add_declare_v0_transaction(declare_transaction).await?) + } +} diff --git a/crates/client/rpc/src/versions/v0_7_1/methods/mod.rs b/crates/client/rpc/src/versions/v0_7_1/methods/mod.rs index 7d8625fb7..083aeccfb 100644 --- a/crates/client/rpc/src/versions/v0_7_1/methods/mod.rs +++ b/crates/client/rpc/src/versions/v0_7_1/methods/mod.rs @@ -1,3 +1,4 @@ +pub mod internal; pub mod read; pub mod trace; pub mod write; diff --git a/crates/client/rpc/src/versions/v0_7_1/methods/write/mod.rs b/crates/client/rpc/src/versions/v0_7_1/methods/write/mod.rs index 95b7796f4..df7dff155 100644 --- a/crates/client/rpc/src/versions/v0_7_1/methods/write/mod.rs +++ b/crates/client/rpc/src/versions/v0_7_1/methods/write/mod.rs @@ -1,11 +1,10 @@ +use crate::{versions::v0_7_1::StarknetWriteRpcApiV0_7_1Server, Starknet}; use jsonrpsee::core::{async_trait, RpcResult}; use starknet_core::types::{ BroadcastedDeclareTransaction, BroadcastedDeployAccountTransaction, BroadcastedInvokeTransaction, DeclareTransactionResult, DeployAccountTransactionResult, InvokeTransactionResult, }; -use crate::{versions::v0_7_1::StarknetWriteRpcApiV0_7_1Server, Starknet}; - #[async_trait] impl StarknetWriteRpcApiV0_7_1Server for Starknet { /// Submit a new declare transaction to be added to the chain diff --git a/crates/node/src/main.rs b/crates/node/src/main.rs index 3ae400e32..def1742e8 100644 --- a/crates/node/src/main.rs +++ b/crates/node/src/main.rs @@ -109,6 +109,9 @@ async fn main() -> anyhow::Result<()> { } let l1_data_provider: Arc = Arc::new(l1_gas_setter.clone()); + // declare mempool here so that it can be used to process l1->l2 messages in the l1 service + let mempool = Arc::new(Mempool::new(Arc::clone(db_service.backend()), Arc::clone(&l1_data_provider))); + let l1_service = L1SyncService::new( &run_cmd.l1_sync_params, &db_service, @@ -118,6 +121,7 @@ async fn main() -> anyhow::Result<()> { chain_config.eth_core_contract_address, run_cmd.is_sequencer(), run_cmd.is_devnet(), + Arc::clone(&mempool), ) .await .context("Initializing the l1 sync service")?; @@ -128,8 +132,6 @@ async fn main() -> anyhow::Result<()> { match run_cmd.is_sequencer() { // Block production service. (authority) true => { - let mempool = Arc::new(Mempool::new(Arc::clone(db_service.backend()), Arc::clone(&l1_data_provider))); - let block_production_service = BlockProductionService::new( &run_cmd.block_production_params, &db_service, diff --git a/crates/node/src/service/l1.rs b/crates/node/src/service/l1.rs index 6aba53ce5..8873c546f 100644 --- a/crates/node/src/service/l1.rs +++ b/crates/node/src/service/l1.rs @@ -3,10 +3,9 @@ use alloy::primitives::Address; use anyhow::Context; use mc_db::{DatabaseService, MadaraBackend}; use mc_eth::client::{EthereumClient, L1BlockMetrics}; -use mc_mempool::GasPriceProvider; +use mc_mempool::{GasPriceProvider, Mempool}; use mc_metrics::MetricsRegistry; use mp_block::H160; -use mp_convert::ToFelt; use mp_utils::service::Service; use starknet_api::core::ChainId; use std::sync::Arc; @@ -21,6 +20,7 @@ pub struct L1SyncService { chain_id: ChainId, gas_price_sync_disabled: bool, gas_price_poll: Duration, + mempool: Arc, } impl L1SyncService { @@ -34,6 +34,7 @@ impl L1SyncService { l1_core_address: H160, authority: bool, devnet: bool, + mempool: Arc, ) -> anyhow::Result { let eth_client = if !config.sync_l1_disabled && (config.l1_endpoint.is_some() || !devnet) { if let Some(l1_rpc_url) = &config.l1_endpoint { @@ -78,6 +79,7 @@ impl L1SyncService { chain_id, gas_price_sync_disabled: !gas_price_sync_enabled, gas_price_poll, + mempool, }) } } @@ -85,7 +87,8 @@ impl L1SyncService { #[async_trait::async_trait] impl Service for L1SyncService { async fn start(&mut self, join_set: &mut JoinSet>) -> anyhow::Result<()> { - let L1SyncService { l1_gas_provider, chain_id, gas_price_sync_disabled, gas_price_poll, .. } = self.clone(); + let L1SyncService { l1_gas_provider, chain_id, gas_price_sync_disabled, gas_price_poll, mempool, .. } = + self.clone(); if let Some(eth_client) = self.eth_client.take() { // enabled @@ -95,10 +98,11 @@ impl Service for L1SyncService { mc_eth::sync::l1_sync_worker( &db_backend, ð_client, - chain_id.to_felt(), + chain_id, l1_gas_provider, gas_price_sync_disabled, gas_price_poll, + mempool, ) .await }); diff --git a/crates/node/src/service/rpc.rs b/crates/node/src/service/rpc.rs index 4653d6072..7254a437f 100644 --- a/crates/node/src/service/rpc.rs +++ b/crates/node/src/service/rpc.rs @@ -34,7 +34,7 @@ impl RpcService { return Ok(Self { server_config: None, server_handle: None }); } - let (rpcs, _node_operator) = match (config.rpc_methods, config.rpc_external) { + let (rpcs, node_operator) = match (config.rpc_methods, config.rpc_external) { (RpcMethods::Safe, _) => (true, false), (RpcMethods::Unsafe, _) => (true, true), (RpcMethods::Auto, false) => (true, true), @@ -46,8 +46,8 @@ impl RpcService { (true, false) } }; - let (read, write, trace) = (rpcs, rpcs, rpcs); - let starknet = Starknet::new(Arc::clone(db.backend()), chain_config.clone(), add_txs_method_provider); + let (read, write, trace, internal) = (rpcs, rpcs, rpcs, node_operator); + let starknet = Starknet::new(Arc::clone(db.backend()), chain_config.clone(), add_txs_method_provider.clone()); let metrics = RpcMetrics::register(metrics_handle)?; Ok(Self { @@ -59,7 +59,7 @@ impl RpcService { max_payload_out_mb: config.rpc_max_response_size, max_subs_per_conn: config.rpc_max_subscriptions_per_connection, message_buffer_capacity: config.rpc_message_buffer_capacity_per_connection, - rpc_api: versioned_rpc_api(&starknet, read, write, trace)?, + rpc_api: versioned_rpc_api(&starknet, read, write, trace, internal)?, metrics, cors: config.cors(), rate_limit: config.rpc_rate_limit, diff --git a/crates/node/src/service/rpc/middleware.rs b/crates/node/src/service/rpc/middleware.rs index e1aeef3b8..75a6a4d7e 100644 --- a/crates/node/src/service/rpc/middleware.rs +++ b/crates/node/src/service/rpc/middleware.rs @@ -176,6 +176,10 @@ enum VersionMiddlewareError { InvalidVersion, #[error("Unsupported version specified")] UnsupportedVersion, + #[error("Invalid method format. Namespace required: {0}")] + InvalidMethodFormat(String), + #[error("Missing method in RPC request")] + MissingMethod, } impl From for VersionMiddlewareError { @@ -275,12 +279,15 @@ async fn add_rpc_version_to_method(req: &mut hyper::Request) -> Result<(), for item in items.iter_mut() { if let Some(method) = item.get_mut("method").as_deref().and_then(Value::as_str) { - let new_method = - format!("starknet_{}_{}", version.name(), method.strip_prefix("starknet_").unwrap_or(method)); - + let new_method = if let Some((prefix, suffix)) = method.split_once('_') { + format!("{}_{}_{}", prefix, version.name(), suffix) + } else { + return Err(VersionMiddlewareError::InvalidMethodFormat(method.to_string())); + }; item["method"] = Value::String(new_method); + } else { + return Err(VersionMiddlewareError::MissingMethod); } - // we don't need to throw an error here, the request will be rejected later if the method is not supported } let response = if batched_request { serde_json::to_vec(&items)? } else { serde_json::to_vec(&items[0])? }; diff --git a/crates/primitives/receipt/Cargo.toml b/crates/primitives/receipt/Cargo.toml index 5d032923e..e4f01873b 100644 --- a/crates/primitives/receipt/Cargo.toml +++ b/crates/primitives/receipt/Cargo.toml @@ -22,11 +22,13 @@ mp-convert = { workspace = true } # Starknet blockifier = { workspace = true } cairo-vm = { workspace = true } +log = { workspace = true } rstest.workspace = true starknet-core = { workspace = true } starknet-providers = { workspace = true } starknet-types-core = { workspace = true } starknet_api = { workspace = true } +thiserror = { workspace = true } # Other serde = { workspace = true, features = ["derive"] } diff --git a/crates/primitives/receipt/src/from_blockifier.rs b/crates/primitives/receipt/src/from_blockifier.rs index 719baf443..dfa8f51bf 100644 --- a/crates/primitives/receipt/src/from_blockifier.rs +++ b/crates/primitives/receipt/src/from_blockifier.rs @@ -3,13 +3,16 @@ use blockifier::transaction::{ account_transaction::AccountTransaction, objects::{FeeType, GasVector, HasRelatedFeeType, TransactionExecutionInfo}, transaction_execution::Transaction, + transactions::L1HandlerTransaction, }; use cairo_vm::types::builtin_name::BuiltinName; +use starknet_core::types::MsgToL2; use starknet_types_core::felt::Felt; +use thiserror::Error; use crate::{ DeclareTransactionReceipt, DeployAccountTransactionReceipt, Event, ExecutionResources, ExecutionResult, FeePayment, - InvokeTransactionReceipt, L1Gas, MsgToL1, PriceUnit, TransactionReceipt, + InvokeTransactionReceipt, L1Gas, L1HandlerTransactionReceipt, MsgToL1, PriceUnit, TransactionReceipt, }; fn blockifier_tx_fee_type(tx: &Transaction) -> FeeType { @@ -29,6 +32,33 @@ fn blockifier_tx_hash(tx: &Transaction) -> Felt { } } +#[derive(Debug, Error)] +pub enum L1HandlerMessageError { + #[error("Empty calldata")] + EmptyCalldata, + #[error("From address out of range")] + FromAddressOutOfRange, + #[error("Invalid nonce")] + InvalidNonce, +} + +fn get_l1_handler_message_hash(tx: &L1HandlerTransaction) -> Result { + let (from_address, payload) = tx.tx.calldata.0.split_first().ok_or(L1HandlerMessageError::EmptyCalldata)?; + + let from_address = (*from_address).try_into().map_err(|_| L1HandlerMessageError::FromAddressOutOfRange)?; + + let nonce = tx.tx.nonce.0.to_bigint().try_into().map_err(|_| L1HandlerMessageError::InvalidNonce)?; + + let message = MsgToL2 { + from_address, + to_address: tx.tx.contract_address.into(), + selector: tx.tx.entry_point_selector.0, + payload: payload.into(), + nonce, + }; + Ok(Felt::from_bytes_le(message.hash().as_bytes())) +} + pub fn from_blockifier_execution_info(res: &TransactionExecutionInfo, tx: &Transaction) -> TransactionReceipt { let price_unit = match blockifier_tx_fee_type(tx) { FeeType::Eth => PriceUnit::Wei, @@ -41,6 +71,17 @@ pub fn from_blockifier_execution_info(res: &TransactionExecutionInfo, tx: &Trans let mut events: Vec = Vec::new(); get_events_from_call_info(res.execute_call_info.as_ref(), 0, &mut events); + let message_hash = match tx { + Transaction::L1HandlerTransaction(tx) => match get_l1_handler_message_hash(tx) { + Ok(hash) => Some(hash), + Err(err) => { + log::error!("Error getting l1 handler message hash: {:?}", err); + None + } + }, + _ => None, + }; + let messages_sent = res .non_optional_call_infos() .flat_map(|call| { @@ -113,16 +154,15 @@ pub fn from_blockifier_execution_info(res: &TransactionExecutionInfo, tx: &Trans execution_result, }) } - Transaction::L1HandlerTransaction(_tx) => unimplemented!("l1 handler tx"), - // Transaction::L1HandlerTransactionv(tx) => TransactionReceipt::L1Handler(L1HandlerTransactionReceipt { - // transaction_hash, - // actual_fee, - // messages_sent, - // events, - // execution_resources, - // execution_result, - // message_hash: todo!(), - // }), + Transaction::L1HandlerTransaction(_tx) => TransactionReceipt::L1Handler(L1HandlerTransactionReceipt { + transaction_hash, + actual_fee, + messages_sent, + events, + execution_resources, + execution_result, + message_hash: message_hash.unwrap(), // it's a safe unwrap because it would've panicked earlier if it was Err + }), } } diff --git a/crates/primitives/transactions/Cargo.toml b/crates/primitives/transactions/Cargo.toml index ffdcdfc59..59450f7c7 100644 --- a/crates/primitives/transactions/Cargo.toml +++ b/crates/primitives/transactions/Cargo.toml @@ -42,3 +42,4 @@ thiserror = { workspace = true } [dev-dependencies] assert_matches = { workspace = true } +serde_json = { workspace = true } diff --git a/crates/primitives/transactions/src/broadcasted_to_blockifier.rs b/crates/primitives/transactions/src/broadcasted_to_blockifier.rs index 96cb5e30f..8fab80793 100644 --- a/crates/primitives/transactions/src/broadcasted_to_blockifier.rs +++ b/crates/primitives/transactions/src/broadcasted_to_blockifier.rs @@ -1,6 +1,8 @@ use std::sync::Arc; -use crate::{into_starknet_api::TransactionApiError, Transaction, TransactionWithHash}; +use crate::{ + into_starknet_api::TransactionApiError, BroadcastedDeclareTransactionV0, Transaction, TransactionWithHash, +}; use blockifier::{execution::errors::ContractClassError, transaction::errors::TransactionExecutionError}; use mp_chain_config::StarknetVersion; use mp_class::{ @@ -30,6 +32,49 @@ pub enum BroadcastedToBlockifierError { CompiledClassHashMismatch { expected: Felt, compilation: Felt }, } +pub fn broadcasted_declare_v0_to_blockifier( + transaction: BroadcastedDeclareTransactionV0, + chain_id: Felt, + starknet_version: StarknetVersion, +) -> Result< + (blockifier::transaction::transaction_execution::Transaction, Option), + BroadcastedToBlockifierError, +> { + let (class_info, class_hash, extra_class_info) = { + let compressed_legacy_class: CompressedLegacyContractClass = (*transaction.contract_class).clone(); + let class_hash = compressed_legacy_class.compute_class_hash().unwrap(); + let compressed_legacy_class: CompressedLegacyContractClass = (*transaction.contract_class).clone(); + let class_blockifier = + compressed_legacy_class.to_blockifier_class().map_err(BroadcastedToBlockifierError::CompilationFailed)?; + + let class_info = LegacyClassInfo { contract_class: Arc::new(compressed_legacy_class) }; + + ( + Some(blockifier::execution::contract_class::ClassInfo::new(&class_blockifier, 0, 0)?), + Some(class_hash), + Some(ConvertedClass::Legacy(LegacyConvertedClass { class_hash, info: class_info })), + ) + }; + + let is_query = transaction.is_query; + let TransactionWithHash { transaction, hash } = + TransactionWithHash::from_broadcasted_declare_v0(transaction, chain_id, starknet_version, class_hash); + + let transaction: starknet_api::transaction::Transaction = transaction.try_into()?; + + Ok(( + blockifier::transaction::transaction_execution::Transaction::from_api( + transaction, + TransactionHash(hash), + class_info, + None, + None, + is_query, + )?, + extra_class_info, + )) +} + pub fn broadcasted_to_blockifier( transaction: starknet_core::types::BroadcastedTransaction, chain_id: Felt, @@ -129,7 +174,7 @@ pub fn broadcasted_to_blockifier( TransactionHash(hash), class_info, None, - deployed_address.map(|address| address.try_into().unwrap()), + deployed_address.map(|address| address.try_into().expect("Address conversion should never fail")), is_query, )?, extra_class_info, diff --git a/crates/primitives/transactions/src/from_broadcasted_transaction.rs b/crates/primitives/transactions/src/from_broadcasted_transaction.rs index 9cc80a4ca..a6f5e54cc 100644 --- a/crates/primitives/transactions/src/from_broadcasted_transaction.rs +++ b/crates/primitives/transactions/src/from_broadcasted_transaction.rs @@ -2,9 +2,10 @@ use mp_chain_config::StarknetVersion; use starknet_types_core::felt::Felt; use crate::{ - DeclareTransaction, DeclareTransactionV1, DeclareTransactionV2, DeclareTransactionV3, DeployAccountTransaction, - DeployAccountTransactionV1, DeployAccountTransactionV3, InvokeTransaction, InvokeTransactionV1, - InvokeTransactionV3, Transaction, TransactionWithHash, + BroadcastedDeclareTransactionV0, DeclareTransaction, DeclareTransactionV0, DeclareTransactionV1, + DeclareTransactionV2, DeclareTransactionV3, DeployAccountTransaction, DeployAccountTransactionV1, + DeployAccountTransactionV3, InvokeTransaction, InvokeTransactionV1, InvokeTransactionV3, Transaction, + TransactionWithHash, }; // class_hash is required for DeclareTransaction @@ -19,13 +20,31 @@ impl TransactionWithHash { let transaction: Transaction = match tx { starknet_core::types::BroadcastedTransaction::Invoke(tx) => Transaction::Invoke(tx.into()), starknet_core::types::BroadcastedTransaction::Declare(tx) => { - Transaction::Declare(DeclareTransaction::from_broadcasted(tx, class_hash.unwrap())) + Transaction::Declare(DeclareTransaction::from_broadcasted( + tx, + class_hash.expect("Class hash must be provided for DeclareTransaction"), + )) } starknet_core::types::BroadcastedTransaction::DeployAccount(tx) => Transaction::DeployAccount(tx.into()), }; let hash = transaction.compute_hash(chain_id, starknet_version, is_query); Self { hash, transaction } } + + pub fn from_broadcasted_declare_v0( + tx: BroadcastedDeclareTransactionV0, + chain_id: Felt, + starknet_version: StarknetVersion, + class_hash: Option, + ) -> Self { + let is_query = tx.is_query; + let transaction: Transaction = Transaction::Declare(DeclareTransaction::from_broadcasted_declare_v0( + tx, + class_hash.expect("Class hash must be provided for DeclareTransactionV0"), + )); + let hash = transaction.compute_hash(chain_id, starknet_version, is_query); + Self { hash, transaction } + } } impl From for InvokeTransaction { @@ -80,6 +99,16 @@ impl DeclareTransaction { } } } + + fn from_broadcasted_declare_v0(tx: BroadcastedDeclareTransactionV0, class_hash: Felt) -> Self { + DeclareTransaction::V0(DeclareTransactionV0::from_broadcasted_declare_v0(tx, class_hash)) + } +} + +impl DeclareTransactionV0 { + fn from_broadcasted_declare_v0(tx: BroadcastedDeclareTransactionV0, class_hash: Felt) -> Self { + Self { sender_address: tx.sender_address, max_fee: tx.max_fee, signature: tx.signature, class_hash } + } } impl DeclareTransactionV1 { diff --git a/crates/primitives/transactions/src/lib.rs b/crates/primitives/transactions/src/lib.rs index 0db22e1a9..141461fef 100644 --- a/crates/primitives/transactions/src/lib.rs +++ b/crates/primitives/transactions/src/lib.rs @@ -1,3 +1,7 @@ +use serde::{Deserialize, Serialize}; +use starknet_types_core::{felt::Felt, hash::StarkHash}; +use std::sync::Arc; + mod broadcasted_to_blockifier; mod from_blockifier; mod from_broadcasted_transaction; @@ -11,10 +15,12 @@ pub mod utils; use mp_convert::{hex_serde::U128AsHex, hex_serde::U64AsHex, ToFelt}; // pub use from_starknet_provider::TransactionTypeError; -pub use broadcasted_to_blockifier::{broadcasted_to_blockifier, BroadcastedToBlockifierError}; +pub use broadcasted_to_blockifier::{ + broadcasted_declare_v0_to_blockifier, broadcasted_to_blockifier, BroadcastedToBlockifierError, +}; +use mp_class::CompressedLegacyContractClass; use serde_with::serde_as; use starknet_api::transaction::TransactionVersion; -use starknet_types_core::{felt::Felt, hash::StarkHash}; const SIMULATE_TX_VERSION_OFFSET: Felt = Felt::from_hex_unchecked("0x100000000000000000000000000000000"); @@ -40,6 +46,26 @@ impl TransactionWithHash { } } +#[derive(Debug, Eq, PartialEq, serde::Serialize, serde::Deserialize)] +pub struct BroadcastedDeclareTransactionV0 { + /// The address of the account contract sending the declaration transaction + pub sender_address: Felt, + /// The maximal fee that can be charged for including the transaction + pub max_fee: Felt, + /// Signature + pub signature: Vec, + /// The class to be declared + pub contract_class: Arc, + /// If set to `true`, uses a query-only transaction version that's invalid for execution + pub is_query: bool, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +pub struct L1HandlerTransactionResult { + /// The hash of the invoke transaction + pub transaction_hash: Felt, +} + #[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)] pub enum Transaction { Invoke(InvokeTransaction), @@ -700,6 +726,7 @@ impl From for DataAvailabilityMode { #[cfg(test)] mod tests { use super::*; + use mp_class::{CompressedLegacyContractClass, LegacyEntryPointsByType}; #[test] fn test_tx_with_hash() { @@ -970,6 +997,60 @@ mod tests { assert_eq!(da_mode, da_mode_back); } + #[test] + fn test_broadcasted_declare_transaction_v0_serialization() { + let contract_class = CompressedLegacyContractClass { + program: Vec::new(), + entry_points_by_type: LegacyEntryPointsByType { + constructor: Vec::new(), + external: Vec::new(), + l1_handler: Vec::new(), + }, + abi: None, + }; + + let tx = BroadcastedDeclareTransactionV0 { + sender_address: Felt::from(1), + max_fee: Felt::from(1000), + signature: vec![Felt::from(2), Felt::from(3)], + contract_class: Arc::new(contract_class), + is_query: false, + }; + + let serialized = serde_json::to_string(&tx).unwrap(); + let deserialized: BroadcastedDeclareTransactionV0 = serde_json::from_str(&serialized).unwrap(); + + assert_eq!(tx, deserialized); + } + + #[test] + fn test_broadcasted_declare_transaction_v0_deserialization() { + let json = r#" + { + "sender_address": "0x1", + "max_fee": "0x3e8", + "signature": ["0x2", "0x3"], + "contract_class": { + "program": [], + "entry_points_by_type": { + "CONSTRUCTOR": [], + "EXTERNAL": [], + "L1_HANDLER": [] + }, + "abi": null + }, + "is_query": false + } + "#; + + let deserialized: BroadcastedDeclareTransactionV0 = serde_json::from_str(json).unwrap(); + + assert_eq!(deserialized.sender_address, Felt::from(1)); + assert_eq!(deserialized.max_fee, Felt::from(1000)); + assert_eq!(deserialized.signature, vec![Felt::from(2), Felt::from(3)]); + assert!(!deserialized.is_query); + } + pub(crate) fn dummy_tx_invoke_v0() -> InvokeTransactionV0 { InvokeTransactionV0 { max_fee: Felt::from(1), diff --git a/crates/proc-macros/Cargo.toml b/crates/proc-macros/Cargo.toml index 05003920a..ad6b33cec 100644 --- a/crates/proc-macros/Cargo.toml +++ b/crates/proc-macros/Cargo.toml @@ -15,6 +15,7 @@ workspace = true targets = ["x86_64-unknown-linux-gnu"] [dependencies] +indoc = { workspace = true } proc-macro2 = "1.0.86" quote = "1.0.26" syn = { version = "2.0.39", features = ["full"] } diff --git a/crates/proc-macros/src/lib.rs b/crates/proc-macros/src/lib.rs index 0e09189f9..83abd1df3 100644 --- a/crates/proc-macros/src/lib.rs +++ b/crates/proc-macros/src/lib.rs @@ -33,13 +33,17 @@ use proc_macro2::Span; use quote::quote; use syn::{parse::Parse, parse_macro_input, Attribute, Ident, ItemTrait, LitStr, TraitItem}; +#[derive(Debug)] struct VersionedRpcAttr { version: String, + namespace: String, } impl Parse for VersionedRpcAttr { fn parse(input: syn::parse::ParseStream) -> syn::Result { let version = input.parse::()?.value(); + input.parse::()?; + let namespace = input.parse::()?.value(); if !version.starts_with('V') { return Err(syn::Error::new(Span::call_site(), "Version must start with 'V'")); @@ -60,7 +64,20 @@ impl Parse for VersionedRpcAttr { } } - Ok(VersionedRpcAttr { version }) + if namespace.trim().is_empty() { + return Err(syn::Error::new( + Span::call_site(), + indoc::indoc!( + " + Namespace cannot be empty. + Please provide a non-empty namespace string. + Example: #[versioned_rpc(\"V0_7_1\", \"starknet\")] + " + ), + )); + } + + Ok(VersionedRpcAttr { version, namespace }) } } @@ -79,8 +96,8 @@ fn version_method_name(attr: &Attribute, version: &str) -> syn::Result TokenStream { - let VersionedRpcAttr { version } = parse_macro_input!(attr as VersionedRpcAttr); +pub fn versioned_rpc(attr: TokenStream, input: TokenStream) -> TokenStream { + let VersionedRpcAttr { version, namespace } = parse_macro_input!(attr as VersionedRpcAttr); let mut item_trait = parse_macro_input!(input as ItemTrait); let trait_name = &item_trait.ident; @@ -103,7 +120,7 @@ pub fn versioned_starknet_rpc(attr: TokenStream, input: TokenStream) -> TokenStr } let versioned_trait = ItemTrait { - attrs: vec![syn::parse_quote!(#[rpc(server, namespace = "starknet")])], + attrs: vec![syn::parse_quote!(#[rpc(server, namespace = #namespace)])], ident: versioned_trait_name, ..item_trait }; @@ -113,3 +130,54 @@ pub fn versioned_starknet_rpc(attr: TokenStream, input: TokenStream) -> TokenStr } .into() } + +#[cfg(test)] +mod tests { + use super::*; + use quote::{quote, ToTokens}; + use syn::parse_quote; + + #[test] + fn test_versioned_rpc_attribute_parsing() { + let attr: VersionedRpcAttr = parse_quote!("V0_7_1", "starknet"); + assert_eq!(attr.version, "V0_7_1"); + assert_eq!(attr.namespace, "starknet"); + } + + #[test] + fn test_versioned_rpc_attribute_parsing_invalid_version() { + let result: syn::Result = syn::parse2(quote!("0_7_1", "starknet")); + assert!(result.is_err()); + assert_eq!(result.unwrap_err().to_string(), "Version must start with 'V'"); + } + + #[test] + fn test_versioned_rpc_attribute_parsing_invalid_parts() { + let result: syn::Result = syn::parse2(quote!("V0_7", "starknet")); + assert!(result.is_err()); + assert_eq!(result.unwrap_err().to_string(), "Version must have exactly three parts (VMAJOR_MINOR_PATCH)"); + } + + #[test] + fn test_versioned_rpc_attribute_parsing_empty_namespace() { + let result: syn::Result = syn::parse2(quote!("V0_7_1", "")); + assert!(result.is_err()); + assert_eq!( + result.unwrap_err().to_string(), + indoc::indoc!( + " + Namespace cannot be empty. + Please provide a non-empty namespace string. + Example: #[versioned_rpc(\"V0_7_1\", \"starknet\")] + " + ) + ); + } + + #[test] + fn test_version_method_name() { + let attr: Attribute = parse_quote!(#[method(name = "blockNumber")]); + let result = version_method_name(&attr, "V0_7_1").unwrap(); + assert_eq!(result.to_token_stream().to_string(), "# [method (name = \"V0_7_1_blockNumber\")]"); + } +} diff --git a/crates/tests/src/lib.rs b/crates/tests/src/lib.rs index 67e4dbe3f..25a31ac4d 100644 --- a/crates/tests/src/lib.rs +++ b/crates/tests/src/lib.rs @@ -232,7 +232,7 @@ async fn madara_can_sync_a_few_blocks() { "sepolia", "--no-sync-polling", "--n-blocks-to-sync", - "10", + "20", "--no-l1-sync", "--gas-price", "0", @@ -240,14 +240,14 @@ async fn madara_can_sync_a_few_blocks() { let mut node = cmd_builder.run(); node.wait_for_ready().await; - node.wait_for_sync_to(9).await; + node.wait_for_sync_to(19).await; assert_eq!( node.json_rpc().block_hash_and_number().await.unwrap(), BlockHashAndNumber { - // https://sepolia.voyager.online/block/0x4174555d24718e8225a3d536ca96d2c4cc8a31bff6a6c758ab84a16a9e92d6c - block_hash: Felt::from_hex_unchecked("0x4174555d24718e8225a3d536ca96d2c4cc8a31bff6a6c758ab84a16a9e92d6c"), - block_number: 9 + // https://sepolia.voyager.online/block/0x4177d1ba942a4ab94f86a476c06f0f9e02363ad410cdf177c54064788c9bcb5 + block_hash: Felt::from_hex_unchecked("0x4177d1ba942a4ab94f86a476c06f0f9e02363ad410cdf177c54064788c9bcb5"), + block_number: 19 } ); }