diff --git a/.gitignore b/.gitignore index 4dc5528c4..f89c52a8b 100644 --- a/.gitignore +++ b/.gitignore @@ -46,6 +46,10 @@ starknet-venv/ starknet_programs/cairo2/*.casm starknet_programs/cairo2/*.sierra +starknet_programs/cairo1/*.sierra +starknet_programs/cairo1/*.casm +starknet_programs/kakarot/*.casm +starknet_programs/kakarot/*.sierra default.profraw **.DS_Store /scripts/reports @@ -56,4 +60,5 @@ lcov.info .rusty-hook.toml !/starknet_programs/raw_contract_classes/*.json cairo-*.tar -starknet-pypy-env/ \ No newline at end of file +starknet-pypy-env/ +cairo1/ diff --git a/Cargo.lock b/Cargo.lock index b0211fd6e..8eea5c54f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "addr2line" -version = "0.21.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" dependencies = [ "gimli", ] @@ -41,9 +41,9 @@ dependencies = [ [[package]] name = "ahash" -version = "0.8.9" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d713b3834d76b85304d4d525563c1276e2e30dc97cc67bfb4585a4a29fc2c89f" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", "once_cell", @@ -53,18 +53,253 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] [[package]] name = "allocator-api2" -version = "0.2.16" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" + +[[package]] +name = "alloy-chains" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03fd095a9d70f4b1c5c102c84a4c782867a5c6416dbf6dcd42a63e7c7a89d3c8" +dependencies = [ + "alloy-rlp", + "num_enum", + "serde", + "strum 0.26.2", +] + +[[package]] +name = "alloy-consensus" +version = "0.1.0" +source = "git+https://github.com/alloy-rs/alloy?rev=39b8695#39b869585955d95e9c64c3e1b66f16432ae4f132" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "c-kzg", + "serde", + "sha2", +] + +[[package]] +name = "alloy-eips" +version = "0.1.0" +source = "git+https://github.com/alloy-rs/alloy?rev=39b8695#39b869585955d95e9c64c3e1b66f16432ae4f132" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "c-kzg", + "once_cell", + "serde", +] + +[[package]] +name = "alloy-genesis" +version = "0.1.0" +source = "git+https://github.com/alloy-rs/alloy?rev=39b8695#39b869585955d95e9c64c3e1b66f16432ae4f132" +dependencies = [ + "alloy-primitives", + "alloy-serde", + "serde", +] + +[[package]] +name = "alloy-primitives" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5277af0cbcc483ee6ad2c1e818090b5928d27f04fd6580680f31c1cf8068bcc2" +dependencies = [ + "alloy-rlp", + "bytes", + "cfg-if", + "const-hex", + "derive_more", + "getrandom", + "hex-literal", + "itoa", + "k256", + "keccak-asm", + "proptest", + "rand", + "ruint", + "serde", + "tiny-keccak", +] + +[[package]] +name = "alloy-rlp" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b155716bab55763c95ba212806cf43d05bcc70e5f35b02bad20cf5ec7fe11fed" +dependencies = [ + "alloy-rlp-derive", + "arrayvec", + "bytes", +] + +[[package]] +name = "alloy-rlp-derive" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8037e03c7f462a063f28daec9fda285a9a89da003c552f8637a80b9c8fd96241" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "alloy-rpc-types" +version = "0.1.0" +source = "git+https://github.com/alloy-rs/alloy?rev=39b8695#39b869585955d95e9c64c3e1b66f16432ae4f132" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-genesis", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "alloy-sol-types", + "itertools 0.12.1", + "jsonrpsee-types", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "alloy-rpc-types-anvil" +version = "0.1.0" +source = "git+https://github.com/alloy-rs/alloy?rev=39b8695#39b869585955d95e9c64c3e1b66f16432ae4f132" +dependencies = [ + "alloy-primitives", + "alloy-serde", + "serde", +] + +[[package]] +name = "alloy-rpc-types-engine" +version = "0.1.0" +source = "git+https://github.com/alloy-rs/alloy?rev=39b8695#39b869585955d95e9c64c3e1b66f16432ae4f132" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types", + "alloy-serde", + "jsonrpsee-types", + "serde", + "thiserror", +] + +[[package]] +name = "alloy-rpc-types-trace" +version = "0.1.0" +source = "git+https://github.com/alloy-rs/alloy?rev=39b8695#39b869585955d95e9c64c3e1b66f16432ae4f132" +dependencies = [ + "alloy-primitives", + "alloy-rpc-types", + "alloy-serde", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-serde" +version = "0.1.0" +source = "git+https://github.com/alloy-rs/alloy?rev=39b8695#39b869585955d95e9c64c3e1b66f16432ae4f132" +dependencies = [ + "alloy-primitives", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-sol-macro" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30708a79919b082f2692423c8cc72fc250477e4a2ecb0d4a7244cd3cdb299965" +dependencies = [ + "alloy-sol-macro-expander", + "alloy-sol-macro-input", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "alloy-sol-macro-expander" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c7a679ac01774ab7e00a567a918d4231ae692c5c8cedaf4e16956c3116d7896" +dependencies = [ + "alloy-sol-macro-input", + "const-hex", + "heck 0.5.0", + "indexmap 2.2.6", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.66", + "syn-solidity", + "tiny-keccak", +] + +[[package]] +name = "alloy-sol-macro-input" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "356da0c2228aa6675a5faaa08a3e4061b967f924753983d72b9a18d9a3fad44e" +dependencies = [ + "const-hex", + "dunce", + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.66", + "syn-solidity", +] + +[[package]] +name = "alloy-sol-types" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" +checksum = "6eb5e6234c0b62514992589fe1578f64d418dbc8ef5cd1ab2d7f2f568f599698" +dependencies = [ + "alloy-primitives", + "alloy-sol-macro", + "const-hex", +] + +[[package]] +name = "alloy-trie" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "beb28aa4ecd32fdfa1b1bdd111ff7357dd562c6b2372694cf9e613434fcba659" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "derive_more", + "hashbrown 0.14.5", + "nybbles", + "serde", + "smallvec", + "tracing", +] [[package]] name = "android-tzdata" @@ -83,47 +318,48 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.12" +version = "0.6.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96b09b5178381e0874812a9b157f7fe84982617e48f71f4e3235482775e5b540" +checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", + "is_terminal_polyfill", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.6" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" +checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" [[package]] name = "anstyle-parse" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" +checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" +checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" dependencies = [ "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.2" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" +checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" dependencies = [ "anstyle", "windows-sys 0.52.0", @@ -131,9 +367,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.80" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ad32ce52e4161730f7098c077cd2ed6229b5804ccf99e5366be1ab72a98b4e1" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" [[package]] name = "arbitrary" @@ -147,14 +383,32 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" dependencies = [ - "ark-ff", + "ark-ff 0.4.2", "ark-poly", - "ark-serialize", - "ark-std", + "ark-serialize 0.4.2", + "ark-std 0.4.0", "derivative", "hashbrown 0.13.2", "itertools 0.10.5", - "num-traits 0.2.18", + "num-traits 0.2.19", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" +dependencies = [ + "ark-ff-asm 0.3.0", + "ark-ff-macros 0.3.0", + "ark-serialize 0.3.0", + "ark-std 0.3.0", + "derivative", + "num-bigint", + "num-traits 0.2.19", + "paste", + "rustc_version 0.3.3", "zeroize", ] @@ -164,20 +418,30 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" dependencies = [ - "ark-ff-asm", - "ark-ff-macros", - "ark-serialize", - "ark-std", + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", "derivative", - "digest", + "digest 0.10.7", "itertools 0.10.5", "num-bigint", - "num-traits 0.2.18", + "num-traits 0.2.19", "paste", - "rustc_version", + "rustc_version 0.4.0", "zeroize", ] +[[package]] +name = "ark-ff-asm" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" +dependencies = [ + "quote", + "syn 1.0.109", +] + [[package]] name = "ark-ff-asm" version = "0.4.2" @@ -188,6 +452,18 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-ff-macros" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" +dependencies = [ + "num-bigint", + "num-traits 0.2.19", + "quote", + "syn 1.0.109", +] + [[package]] name = "ark-ff-macros" version = "0.4.2" @@ -195,7 +471,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" dependencies = [ "num-bigint", - "num-traits 0.2.18", + "num-traits 0.2.19", "proc-macro2", "quote", "syn 1.0.109", @@ -207,9 +483,9 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" dependencies = [ - "ark-ff", - "ark-serialize", - "ark-std", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", "derivative", "hashbrown 0.13.2", ] @@ -221,8 +497,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c02e954eaeb4ddb29613fee20840c2bbc85ca4396d53e33837e11905363c5f2" dependencies = [ "ark-ec", - "ark-ff", - "ark-std", + "ark-ff 0.4.2", + "ark-std 0.4.0", ] [[package]] @@ -232,8 +508,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3975a01b0a6e3eae0f72ec7ca8598a6620fc72fa5981f6f5cca33b7cd788f633" dependencies = [ "ark-ec", - "ark-ff", - "ark-std", + "ark-ff 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-serialize" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" +dependencies = [ + "ark-std 0.3.0", + "digest 0.9.0", ] [[package]] @@ -243,8 +529,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" dependencies = [ "ark-serialize-derive", - "ark-std", - "digest", + "ark-std 0.4.0", + "digest 0.10.7", "num-bigint", ] @@ -259,13 +545,23 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-std" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" +dependencies = [ + "num-traits 0.2.19", + "rand", +] + [[package]] name = "ark-std" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" dependencies = [ - "num-traits 0.2.18", + "num-traits 0.2.19", "rand", ] @@ -292,37 +588,47 @@ checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" [[package]] name = "async-trait" -version = "0.1.77" +version = "0.1.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" +checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.66", +] + +[[package]] +name = "aurora-engine-modexp" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0aef7712851e524f35fbbb74fa6599c5cd8692056a1c36f9ca0d2001b670e7e5" +dependencies = [ + "hex", + "num", ] [[package]] name = "auto_impl" -version = "1.1.2" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "823b8bb275161044e2ac7a25879cb3e2480cb403e3943022c7c769c599b756aa" +checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.66", ] [[package]] name = "autocfg" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "backtrace" -version = "0.3.69" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +checksum = "17c6a35df3749d2e8bb1b7b21a976d82b15548788d2735b9d82f329268f71a11" dependencies = [ "addr2line", "cc", @@ -351,6 +657,12 @@ version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + [[package]] name = "base64ct" version = "1.6.0" @@ -358,23 +670,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] -name = "bigdecimal" -version = "0.3.1" +name = "beef" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6773ddc0eafc0e509fb60e48dff7f450f8e674a0686ae8605e8d9901bd5eefa" +checksum = "3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1" dependencies = [ - "num-bigint", - "num-integer", - "num-traits 0.2.18", "serde", ] [[package]] -name = "bincode" -version = "1.3.3" +name = "bigdecimal" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +checksum = "a6773ddc0eafc0e509fb60e48dff7f450f8e674a0686ae8605e8d9901bd5eefa" dependencies = [ + "num-bigint", + "num-integer", + "num-traits 0.2.19", "serde", ] @@ -389,47 +701,24 @@ dependencies = [ [[package]] name = "bindgen" -version = "0.66.1" +version = "0.69.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2b84e06fc203107bfbad243f4aba2af864eb7db3b1cf46ea0a023b0b433d2a7" +checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" dependencies = [ - "bitflags 2.4.2", - "cexpr", - "clang-sys", - "lazy_static", - "lazycell", - "log", - "peeking_take_while", - "prettyplease", - "proc-macro2", - "quote", - "regex", - "rustc-hash", - "shlex", - "syn 2.0.51", - "which", -] - -[[package]] -name = "bindgen" -version = "0.68.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "726e4313eb6ec35d2730258ad4e15b547ee75d6afaa1361a922e78e59b7d8078" -dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "cexpr", "clang-sys", + "itertools 0.12.1", "lazy_static", "lazycell", "log", - "peeking_take_while", "prettyplease", "proc-macro2", "quote", "regex", "rustc-hash", "shlex", - "syn 2.0.51", + "syn 2.0.66", "which", ] @@ -456,9 +745,12 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.2" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +dependencies = [ + "serde", +] [[package]] name = "bitvec" @@ -468,6 +760,7 @@ checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" dependencies = [ "funty", "radium", + "serde", "tap", "wyz", ] @@ -488,7 +781,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b5acc7622f7b7af1e1df0c4065211d4665f29bbd0e658b8d21975f4a0ab6b8e" dependencies = [ "ark-ec", - "ark-ff", + "ark-ff 0.4.2", "ark-secp256k1", "ark-secp256r1", "cached", @@ -500,30 +793,42 @@ dependencies = [ "cairo-vm 0.9.2", "ctor", "derive_more", - "indexmap 2.2.3", + "indexmap 2.2.6", "itertools 0.10.5", "keccak", "log", "memoize", "num-bigint", "num-integer", - "num-traits 0.2.18", + "num-traits 0.2.19", "phf", "serde", "serde_json", "sha3", "starknet-crypto 0.5.2", - "starknet_api", - "strum", - "strum_macros", + "starknet_api 0.7.0-dev.0", + "strum 0.24.1", + "strum_macros 0.24.3", "thiserror", ] +[[package]] +name = "blst" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62dc83a094a71d43eeadd254b1ec2d24cb6a0bb6cadce00df51f0db594711a32" +dependencies = [ + "cc", + "glob", + "threadpool", + "zeroize", +] + [[package]] name = "bumpalo" -version = "3.15.3" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea184aa71bb362a1157c896979544cc23974e08fd265f29ea96b59f0b4a555b" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "byte-slice-cast" @@ -531,6 +836,12 @@ version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" +[[package]] +name = "bytemuck" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78834c15cb5d5efe3452d58b1e8ba890dd62d21907f867f383358198e56ebca5" + [[package]] name = "byteorder" version = "1.5.0" @@ -539,9 +850,12 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +dependencies = [ + "serde", +] [[package]] name = "bzip2" @@ -564,6 +878,20 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "c-kzg" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdf100c4cea8f207e883ff91ca886d621d8a166cb04971dfaa9bb8fd99ed95df" +dependencies = [ + "blst", + "cc", + "glob", + "hex", + "libc", + "serde", +] + [[package]] name = "cached" version = "0.44.0" @@ -609,29 +937,29 @@ dependencies = [ "lazy_static", "num-bigint", "num-integer", - "num-traits 0.2.18", + "num-traits 0.2.19", "serde", ] [[package]] name = "cairo-lang-casm" -version = "2.5.4" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ceb71a4cbf5b474bd671c79b2c05e8168a97199bfea1c01ef63b1bdaac3db03" +checksum = "10d9c31baeb6b52586b5adc88f01e90f86389d63d94363c562de5c79352e545b" dependencies = [ "cairo-lang-utils", "indoc", "num-bigint", - "num-traits 0.2.18", + "num-traits 0.2.19", "parity-scale-codec", "serde", ] [[package]] name = "cairo-lang-compiler" -version = "2.5.4" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95c1aab3213462c5b7c21508f1a4330bdf0766c90e6dd4ed79b0002c2b96a715" +checksum = "7148cb2d72a3db24a6d2ef2b2602102cc5099cb9f6b913e5047fb009cb3a22a1" dependencies = [ "anyhow", "cairo-lang-defs", @@ -646,23 +974,24 @@ dependencies = [ "cairo-lang-syntax", "cairo-lang-utils", "salsa", + "smol_str", "thiserror", ] [[package]] name = "cairo-lang-debug" -version = "2.5.4" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03623ba892200c6b3c55fab260d4aa0bff833d6bcecdb1fb022565ac00d5a683" +checksum = "5a761eb8e31ea65a2dd45f729c74f1770315f97124dad93d1f6853a10d460c6b" dependencies = [ "cairo-lang-utils", ] [[package]] name = "cairo-lang-defs" -version = "2.5.4" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09131755b08a485322656e061ad05602215a198dd4a2daf3897e64dc76e7544e" +checksum = "f6d60bc5d72fe7a95ba34e041dcbdf1cf3bfccb87008a515514b74913fa8ff05" dependencies = [ "cairo-lang-debug", "cairo-lang-diagnostics", @@ -677,9 +1006,9 @@ dependencies = [ [[package]] name = "cairo-lang-diagnostics" -version = "2.5.4" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b8185cc9472c648ac9db970ce558595c71259eebd55d25a502fe569cb871448" +checksum = "356089e1b0a0ba9e115566191745613b3806a20259ad76764df82ab534d5412a" dependencies = [ "cairo-lang-debug", "cairo-lang-filesystem", @@ -689,9 +1018,9 @@ dependencies = [ [[package]] name = "cairo-lang-eq-solver" -version = "2.5.4" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae71750096b64d4dd54dd2c39ef50651bb4aff4bc829e3d07549a5035620e0a" +checksum = "fc43246cc2e5afd5a028bcdd63876ac3f8b1f4fb3ff785daaa0f0fbb51c9d906" dependencies = [ "cairo-lang-utils", "good_lp", @@ -699,9 +1028,9 @@ dependencies = [ [[package]] name = "cairo-lang-filesystem" -version = "2.5.4" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1819ef5a5396df695dcec993500c46bc44c309590b503da26965c873dfe8a84a" +checksum = "6bcb9a4a40e53fa099774bd08bbcc3430f51213cc7fb1b50c2e9d01155731798" dependencies = [ "cairo-lang-debug", "cairo-lang-utils", @@ -713,9 +1042,9 @@ dependencies = [ [[package]] name = "cairo-lang-lowering" -version = "2.5.4" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0968f0da6117dca1a70d6ac7d2e252d8b1710f333458c54ce08dbef1c0323881" +checksum = "1ba60e1e2477aa0f610ccf29189097d580464607c94b51741e1c18e64d6cee5f" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -730,7 +1059,7 @@ dependencies = [ "itertools 0.11.0", "log", "num-bigint", - "num-traits 0.2.18", + "num-traits 0.2.19", "once_cell", "salsa", "smol_str", @@ -738,9 +1067,9 @@ dependencies = [ [[package]] name = "cairo-lang-parser" -version = "2.5.4" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae556e49c0a90d30e52f068b0fb5ed4d419766661d3713a1644f3894a9255a5a" +checksum = "7f16ba1535e0cc5e79c2eff6592859bbdac03dc53d4dcdd26dbdbc04a77c3f5c" dependencies = [ "cairo-lang-diagnostics", "cairo-lang-filesystem", @@ -750,7 +1079,7 @@ dependencies = [ "colored", "itertools 0.11.0", "num-bigint", - "num-traits 0.2.18", + "num-traits 0.2.19", "salsa", "smol_str", "unescaper", @@ -758,9 +1087,9 @@ dependencies = [ [[package]] name = "cairo-lang-plugins" -version = "2.5.4" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d319f3e84ff679159f97e3baa1d918d369ba9e3ade5ad490e0a9e4eca19591" +checksum = "81c8cf6e0ee3d6b19429cc1663738b22f1ecea7d51bf7452e8e1086f08798baf" dependencies = [ "cairo-lang-defs", "cairo-lang-diagnostics", @@ -777,20 +1106,20 @@ dependencies = [ [[package]] name = "cairo-lang-proc-macros" -version = "2.5.4" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fef002aac874d76492eb9577dab663f9a84fe4584b4215c7ebfda7d025fcadae" +checksum = "67f9da66325ce7ed6c002360f26106fe79deb9f8a2fca30abdbb8d388da7bb46" dependencies = [ "cairo-lang-debug", "quote", - "syn 2.0.51", + "syn 2.0.66", ] [[package]] name = "cairo-lang-project" -version = "2.5.4" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f384c26e6907de9c94b44051e386498159e8c9e1567b9b1eae9c22e16ff17e5" +checksum = "e198af1ab3d05c7fb8b6a9a7a2e9bce245a6c855df5f770b751d29874a23b152" dependencies = [ "cairo-lang-filesystem", "cairo-lang-utils", @@ -802,16 +1131,17 @@ dependencies = [ [[package]] name = "cairo-lang-runner" -version = "2.5.4" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ccd9dce6f931508a21ac4d29965dadcaf7c22bbf2a237239763128b8647a53" +checksum = "0bf211f5431e2a6f4802b1b6483bf8e998e506a3be5369ed54a8807aae6e4dbf" dependencies = [ - "ark-ff", + "ark-ff 0.4.2", "ark-secp256k1", "ark-secp256r1", - "ark-std", + "ark-std 0.4.0", "cairo-felt", "cairo-lang-casm", + "cairo-lang-lowering", "cairo-lang-sierra", "cairo-lang-sierra-ap-change", "cairo-lang-sierra-generator", @@ -824,17 +1154,17 @@ dependencies = [ "keccak", "num-bigint", "num-integer", - "num-traits 0.2.18", + "num-traits 0.2.19", "smol_str", - "starknet-crypto 0.6.1", + "starknet-crypto 0.6.2", "thiserror", ] [[package]] name = "cairo-lang-semantic" -version = "2.5.4" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "311434caae9542b7c442ac69a04e3c8eaa477654f215abe0bd7dfd3c0de70669" +checksum = "6d7df81521c2125e3e95b683cc99374db1aebd7ddb317c5ca3dd92a235a9eb13" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -849,7 +1179,7 @@ dependencies = [ "indoc", "itertools 0.11.0", "num-bigint", - "num-traits 0.2.18", + "num-traits 0.2.19", "once_cell", "salsa", "smol_str", @@ -857,9 +1187,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra" -version = "2.5.4" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52c00c34fcaf97bbc4111d1631af8c65838841a38b3502b5bbc04355b7d46982" +checksum = "07da3ca1434c62a7cc7cd77d2941ef47a1c23b37325781b59407b78d8c61d863" dependencies = [ "anyhow", "cairo-felt", @@ -871,7 +1201,7 @@ dependencies = [ "lalrpop", "lalrpop-util", "num-bigint", - "num-traits 0.2.18", + "num-traits 0.2.19", "regex", "salsa", "serde", @@ -883,39 +1213,39 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-ap-change" -version = "2.5.4" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c99a0be021b359c51383cce4372cb1061f7d53438d80f208c56af2154583c98e" +checksum = "122c9055eb609a511178e3dce577de061819fd4c4c6b7452804557f76ca43bbf" dependencies = [ "cairo-lang-eq-solver", "cairo-lang-sierra", "cairo-lang-sierra-type-size", "cairo-lang-utils", "itertools 0.11.0", - "num-traits 0.2.18", + "num-traits 0.2.19", "thiserror", ] [[package]] name = "cairo-lang-sierra-gas" -version = "2.5.4" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f273d4de9d30e556e72ebe2751f9ed6bf3d84a70f6c76f52b178c24cddb12e43" +checksum = "cf049d9aea65c6e38da219a3700c72f78795d11449d9adcec28047ef8d63bd23" dependencies = [ "cairo-lang-eq-solver", "cairo-lang-sierra", "cairo-lang-sierra-type-size", "cairo-lang-utils", "itertools 0.11.0", - "num-traits 0.2.18", + "num-traits 0.2.19", "thiserror", ] [[package]] name = "cairo-lang-sierra-generator" -version = "2.5.4" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "734f72e9e8b1ec7a96208aa8dfba87ca1614188e3646ae67c519afe707569490" +checksum = "3e1d75e0830279ca1bd0189e3326720d6e081225f7d81ed060bbd22c6b37e980" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -928,7 +1258,7 @@ dependencies = [ "cairo-lang-syntax", "cairo-lang-utils", "itertools 0.11.0", - "num-bigint", + "num-traits 0.2.19", "once_cell", "salsa", "smol_str", @@ -936,9 +1266,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-to-casm" -version = "2.5.4" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "842ae37ee3f1cd06b926aceb480fd70b84300aae82e9606b876678d30c21649a" +checksum = "6a3c3be88c8562fbf93b0803c186e7282f6daad93576c07f61b04a591fde468f" dependencies = [ "assert_matches", "cairo-felt", @@ -951,15 +1281,15 @@ dependencies = [ "indoc", "itertools 0.11.0", "num-bigint", - "num-traits 0.2.18", + "num-traits 0.2.19", "thiserror", ] [[package]] name = "cairo-lang-sierra-type-size" -version = "2.5.4" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f969cbaf81f3beb1dc693674fc792a815bf8fc13471227020a5faf309d5faf80" +checksum = "a38da6f98c6b16945c89d2ae351c82d636ed38d3e6eb02f7c8679e3e03a63988" dependencies = [ "cairo-lang-sierra", "cairo-lang-utils", @@ -967,13 +1297,12 @@ dependencies = [ [[package]] name = "cairo-lang-starknet" -version = "2.5.4" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67cd2d120f39369c7bd7d124dee638c250495054030d01d4e1d1b88f0063bd80" +checksum = "2c9ffa8b3b8c47138c36b1907cebb5047dfc4de29ec10ece5bd6d6853243ec50" dependencies = [ "anyhow", "cairo-felt", - "cairo-lang-casm", "cairo-lang-compiler", "cairo-lang-defs", "cairo-lang-diagnostics", @@ -983,37 +1312,56 @@ dependencies = [ "cairo-lang-semantic", "cairo-lang-sierra", "cairo-lang-sierra-generator", - "cairo-lang-sierra-to-casm", + "cairo-lang-starknet-classes", "cairo-lang-syntax", "cairo-lang-utils", "const_format", - "convert_case 0.6.0", "indent", "indoc", "itertools 0.11.0", + "once_cell", + "serde", + "serde_json", + "smol_str", + "thiserror", +] + +[[package]] +name = "cairo-lang-starknet-classes" +version = "2.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47c64ae2bb00173e3a88760128bf72de356fa80eb19fa47602479063648b4003" +dependencies = [ + "cairo-felt", + "cairo-lang-casm", + "cairo-lang-sierra", + "cairo-lang-sierra-to-casm", + "cairo-lang-utils", + "convert_case 0.6.0", + "itertools 0.11.0", "num-bigint", "num-integer", - "num-traits 0.2.18", + "num-traits 0.2.19", "once_cell", "serde", "serde_json", "sha3", "smol_str", - "starknet-crypto 0.6.1", + "starknet-crypto 0.6.2", "thiserror", ] [[package]] name = "cairo-lang-syntax" -version = "2.5.4" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "552d3438fec55832976bc7c7d7490100e8ce7385d3f3f1539f9a46fffa2197c6" +checksum = "8262c426a57e1e5ec297db24278464841500613445e2cb1c43d5f71ad91ee8d6" dependencies = [ "cairo-lang-debug", "cairo-lang-filesystem", "cairo-lang-utils", "num-bigint", - "num-traits 0.2.18", + "num-traits 0.2.19", "salsa", "smol_str", "unescaper", @@ -1021,9 +1369,9 @@ dependencies = [ [[package]] name = "cairo-lang-syntax-codegen" -version = "2.5.4" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dab4d07bd78658f0fdc3fd20f1236bc3e6ebdd8a8fc72ece95a5dd03b7a09da" +checksum = "70e2d692eae4bb4179a4a1148fd5eb738a91653d86750c813658ffad4a99fa97" dependencies = [ "genco", "xshell", @@ -1031,9 +1379,9 @@ dependencies = [ [[package]] name = "cairo-lang-test-plugin" -version = "2.5.4" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab5e416a932754f190de2de011f3b3eb20dcb8093fb073cad15a8e70be833c3d" +checksum = "29c2d77976328ac79509b9c33e4380d15aeff7c8ee07fbaea6b41dd469084738" dependencies = [ "anyhow", "cairo-felt", @@ -1047,34 +1395,35 @@ dependencies = [ "cairo-lang-sierra", "cairo-lang-sierra-generator", "cairo-lang-starknet", + "cairo-lang-starknet-classes", "cairo-lang-syntax", "cairo-lang-utils", "indoc", "itertools 0.11.0", "num-bigint", - "num-traits 0.2.18", + "num-traits 0.2.19", "serde", ] [[package]] name = "cairo-lang-utils" -version = "2.5.4" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12d0939f42d40fb1d975cae073d7d4f82d83de4ba2149293115525245425f909" +checksum = "bf733a7cdc4166d0baf0ed8a98d9ada827daee6653b37d9326e334e53481c6d3" dependencies = [ - "hashbrown 0.14.3", - "indexmap 2.2.3", + "hashbrown 0.14.5", + "indexmap 2.2.6", "itertools 0.11.0", "num-bigint", - "num-traits 0.2.18", + "num-traits 0.2.19", "schemars", "serde", ] [[package]] name = "cairo-native" -version = "0.1.0" -source = "git+https://github.com/lambdaclass/cairo_native?rev=baf57d2dde0036ac4848fc40c672826fb7ffcde4#baf57d2dde0036ac4848fc40c672826fb7ffcde4" +version = "0.2.0" +source = "git+https://github.com/lambdaclass/cairo_native?rev=e90c4ce0a7d5cea856c6b0c4e7e8a04078de323b#e90c4ce0a7d5cea856c6b0c4e7e8a04078de323b" dependencies = [ "anyhow", "bumpalo", @@ -1091,6 +1440,7 @@ dependencies = [ "cairo-lang-sierra-gas", "cairo-lang-sierra-generator", "cairo-lang-starknet", + "cairo-lang-starknet-classes", "cairo-lang-test-plugin", "cairo-lang-utils", "cairo-native-runtime", @@ -1099,7 +1449,9 @@ dependencies = [ "colored", "educe", "id-arena", - "itertools 0.12.1", + "itertools 0.13.0", + "k256", + "keccak", "lazy_static", "libc", "libloading", @@ -1107,7 +1459,9 @@ dependencies = [ "melior", "mlir-sys", "num-bigint", - "num-traits 0.2.18", + "num-traits 0.2.19", + "p256", + "sec1", "starknet-types-core", "tempfile", "thiserror", @@ -1117,14 +1471,15 @@ dependencies = [ [[package]] name = "cairo-native-runtime" -version = "0.1.0" -source = "git+https://github.com/lambdaclass/cairo_native?rev=baf57d2dde0036ac4848fc40c672826fb7ffcde4#baf57d2dde0036ac4848fc40c672826fb7ffcde4" +version = "0.2.0" +source = "git+https://github.com/lambdaclass/cairo_native?rev=e90c4ce0a7d5cea856c6b0c4e7e8a04078de323b#e90c4ce0a7d5cea856c6b0c4e7e8a04078de323b" dependencies = [ "cairo-lang-runner", + "cairo-lang-sierra-gas", "lazy_static", "libc", - "starknet-crypto 0.6.1", - "starknet-curve 0.4.1", + "starknet-crypto 0.6.2", + "starknet-curve 0.4.2", "starknet-types-core", ] @@ -1135,11 +1490,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd569684da80d747273613d5c809e4f81bf6f6b1b64d0301b12bac8f2fb8ffb1" dependencies = [ "anyhow", - "bincode 2.0.0-rc.3", + "bincode", "bitvec", "cairo-felt", "generic-array", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "hex", "keccak", "lazy_static", @@ -1148,46 +1503,47 @@ dependencies = [ "num-bigint", "num-integer", "num-prime", - "num-traits 0.2.18", + "num-traits 0.2.19", "rand", "serde", "serde_json", "sha2", "sha3", - "starknet-crypto 0.6.1", - "starknet-curve 0.4.1", + "starknet-crypto 0.6.2", + "starknet-curve 0.4.2", "thiserror-no-std", ] [[package]] name = "cairo-vm" -version = "1.0.0-rc1" -source = "git+https://github.com/lambdaclass/cairo-vm?rev=3547089579dd74f815edbc2d1caa91e00fc8a2f7#3547089579dd74f815edbc2d1caa91e00fc8a2f7" +version = "1.0.0-rc3" +source = "git+https://github.com/lambdaclass/cairo-vm?rev=c65591e9c0cc9bcc59a41c14c0be1ff34332adc8#c65591e9c0cc9bcc59a41c14c0be1ff34332adc8" dependencies = [ "anyhow", - "ark-ff", - "ark-std", - "bincode 2.0.0-rc.3", + "ark-ff 0.4.2", + "ark-std 0.4.0", + "bincode", "bitvec", "cairo-lang-casm", "cairo-lang-starknet", + "cairo-lang-starknet-classes", "generic-array", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "hex", "keccak", "lazy_static", - "mimalloc", "nom", "num-bigint", "num-integer", "num-prime", - "num-traits 0.2.18", + "num-traits 0.2.19", "rand", + "rust_decimal", "serde", "serde_json", "sha2", "sha3", - "starknet-crypto 0.6.1", + "starknet-crypto 0.6.2", "starknet-types-core", "thiserror-no-std", "zip", @@ -1195,11 +1551,13 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.88" +version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02f341c093d19155a6e41631ce5971aac4e9a868262212153124c15fa22d1cdc" +checksum = "41c270e7540d725e65ac7f1b212ac8ce349719624d7bcff99f8e2e488e8cf03f" dependencies = [ + "jobserver", "libc", + "once_cell", ] [[package]] @@ -1219,15 +1577,15 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.34" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bc015644b92d5890fab7489e49d21f879d5c990186827d42ec511919404f38b" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ "android-tzdata", "iana-time-zone", - "num-traits 0.2.18", + "num-traits 0.2.19", "serde", - "windows-targets 0.52.3", + "windows-targets 0.52.5", ] [[package]] @@ -1242,9 +1600,9 @@ dependencies = [ [[package]] name = "clang-sys" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67523a3b4be3ce1989d607a828d036249522dd9c1c8de7f4dd2dae43a37369d1" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" dependencies = [ "glob", "libc", @@ -1253,9 +1611,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.1" +version = "4.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c918d541ef2913577a0f9566e9ce27cb35b6df072075769e0b26cb5a554520da" +checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" dependencies = [ "clap_builder", "clap_derive", @@ -1263,27 +1621,26 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.1" +version = "4.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f3e7391dad68afb0c2ede1bf619f579a3dc9c2ec67f089baa397123a2f3d1eb" +checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" dependencies = [ "anstream", "anstyle", "clap_lex", - "strsim 0.11.0", - "terminal_size", + "strsim 0.11.1", ] [[package]] name = "clap_derive" -version = "4.5.0" +version = "4.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "307bc0538d5f0f83b8248db3087aa92fe504e4691294d0c96c0eabc33f47ba47" +checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" dependencies = [ - "heck 0.4.1", + "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.66", ] [[package]] @@ -1294,9 +1651,9 @@ checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" [[package]] name = "colorchoice" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" [[package]] name = "colored" @@ -1310,22 +1667,18 @@ dependencies = [ [[package]] name = "comrak" -version = "0.21.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6751998a48e2327773c95f6f8e03c6e77c0156ce539d74c17d2199ff3d05e197" +checksum = "5a972c8ec1be8065f7b597b5f7f5b3be535db780280644aebdcd1966decf58dc" dependencies = [ - "clap", "derive_builder", "entities", "memchr", "once_cell", "regex", - "shell-words", "slug", - "syntect", "typed-arena", "unicode_categories", - "xdg", ] [[package]] @@ -1347,6 +1700,19 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32b13ea120a812beba79e34316b3942a857c86ec1593cb34f27bb28272ce2cca" +[[package]] +name = "const-hex" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8a24a26d37e1ffd45343323dc9fe6654ceea44c12f2fcb3d7ac29e610bc6" +dependencies = [ + "cfg-if", + "cpufeatures", + "hex", + "proptest", + "serde", +] + [[package]] name = "const-oid" version = "0.9.6" @@ -1383,7 +1749,7 @@ checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" name = "contract_execution" version = "0.4.0" dependencies = [ - "cairo-vm 1.0.0-rc1", + "cairo-vm 1.0.0-rc3", "serde_json", "starknet_in_rust", ] @@ -1421,9 +1787,9 @@ checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "coverage-helper" -version = "0.2.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3036399e8abfc9d696c1ee94f7677f9704e903d96299b0026e339eed6055dcaf" +checksum = "8174551717bb3d1e75935e38d33f5f8ee8f680dd8dd42c90851e6c644faad14e" [[package]] name = "cpufeatures" @@ -1434,20 +1800,54 @@ dependencies = [ "libc", ] +[[package]] +name = "crc" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" + [[package]] name = "crc32fast" -version = "1.4.0" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ "cfg-if", ] +[[package]] +name = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-utils" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "crunchy" @@ -1479,12 +1879,12 @@ dependencies = [ [[package]] name = "ctor" -version = "0.2.6" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30d2b3721e861707777e3195b0158f950ae6dc4a27e4d02ff9f67e3eb3de199e" +checksum = "edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f" dependencies = [ "quote", - "syn 2.0.51", + "syn 2.0.66", ] [[package]] @@ -1508,12 +1908,12 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.8" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391" +checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1" dependencies = [ - "darling_core 0.20.8", - "darling_macro 0.20.8", + "darling_core 0.20.9", + "darling_macro 0.20.9", ] [[package]] @@ -1532,16 +1932,16 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.8" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c2cf1c23a687a1feeb728783b993c4e1ad83d99f351801977dd809b48d0a70f" +checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", - "strsim 0.10.0", - "syn 2.0.51", + "strsim 0.11.1", + "syn 2.0.66", ] [[package]] @@ -1557,13 +1957,13 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.20.8" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" +checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" dependencies = [ - "darling_core 0.20.8", + "darling_core 0.20.9", "quote", - "syn 2.0.51", + "syn 2.0.66", ] [[package]] @@ -1585,17 +1985,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ "cfg-if", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "lock_api", "once_cell", - "parking_lot_core 0.9.9", + "parking_lot_core 0.9.10", ] [[package]] name = "der" -version = "0.7.8" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c" +checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" dependencies = [ "const-oid", "pem-rfc7468", @@ -1625,33 +2025,33 @@ dependencies = [ [[package]] name = "derive_builder" -version = "0.12.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d67778784b508018359cbc8696edb3db78160bab2c2a28ba7f56ef6932997f8" +checksum = "0350b5cb0331628a5916d6c5c0b72e97393b8b6b03b47a9284f4e7f5a405ffd7" dependencies = [ "derive_builder_macro", ] [[package]] name = "derive_builder_core" -version = "0.12.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c11bdc11a0c47bc7d37d582b5285da6849c96681023680b906673c5707af7b0f" +checksum = "d48cda787f839151732d396ac69e3473923d54312c070ee21e9effcaa8ca0b1d" dependencies = [ - "darling 0.14.4", + "darling 0.20.9", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.66", ] [[package]] name = "derive_builder_macro" -version = "0.12.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebcda35c7a396850a55ffeac740804b40ffec779b98fffbb1738f4033f0ee79e" +checksum = "206868b8242f27cecce124c19fd88157fbd0dd334df2587f36417bafbc85097b" dependencies = [ "derive_builder_core", - "syn 1.0.109", + "syn 2.0.66", ] [[package]] @@ -1663,15 +2063,15 @@ dependencies = [ "convert_case 0.4.0", "proc-macro2", "quote", - "rustc_version", + "rustc_version 0.4.0", "syn 1.0.109", ] [[package]] name = "deunicode" -version = "1.4.3" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6e854126756c496b8c81dec88f9a706b15b875c5849d4097a3854476b9fdf94" +checksum = "339544cc9e2c4dc3fc7149fd630c5f22263a4fdf18a98afd0075784968b5cf00" [[package]] name = "diff" @@ -1679,6 +2079,15 @@ version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + [[package]] name = "digest" version = "0.10.7" @@ -1718,6 +2127,12 @@ version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" +[[package]] +name = "dunce" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" + [[package]] name = "dyn-clone" version = "1.0.17" @@ -1731,7 +2146,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" dependencies = [ "der", - "digest", + "digest 0.10.7", "elliptic-curve", "rfc6979", "signature", @@ -1747,14 +2162,14 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.66", ] [[package]] name = "either" -version = "1.10.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" +checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" [[package]] name = "elliptic-curve" @@ -1764,7 +2179,7 @@ checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" dependencies = [ "base16ct", "crypto-bigint", - "digest", + "digest 0.10.7", "ff", "generic-array", "group", @@ -1778,9 +2193,9 @@ dependencies = [ [[package]] name = "ena" -version = "0.14.2" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c533630cf40e9caa44bd91aadc88a75d75a4c3a12b4cfde353cbed41daa1e1f1" +checksum = "3d248bdd43ce613d87415282f69b9bb99d947d290b10962dd6c56233312c2ad5" dependencies = [ "log", ] @@ -1793,13 +2208,32 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "encoding_rs" -version = "0.8.33" +version = "0.8.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" dependencies = [ "cfg-if", ] +[[package]] +name = "enr" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a3d8dc56e02f954cac8eb489772c552c473346fc34f67412bb6244fd647f7e4" +dependencies = [ + "base64 0.21.7", + "bytes", + "hex", + "k256", + "log", + "rand", + "rlp", + "secp256k1 0.27.0", + "serde", + "sha3", + "zeroize", +] + [[package]] name = "entities" version = "1.0.1" @@ -1823,7 +2257,18 @@ checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.66", +] + +[[package]] +name = "enumn" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fd000fd6988e73bbe993ea3db9b1aa64906ab88766d654973924340c8cddb42" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", ] [[package]] @@ -1834,9 +2279,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", "windows-sys 0.52.0", @@ -1850,7 +2295,7 @@ checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab" dependencies = [ "aes", "ctr", - "digest", + "digest 0.10.7", "hex", "hmac", "pbkdf2", @@ -1892,20 +2337,21 @@ dependencies = [ ] [[package]] -name = "fancy-regex" -version = "0.11.0" +name = "fastrand" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b95f7c0680e4142284cf8b22c14a476e87d61b004a3a0861872b32ef7ead40a2" -dependencies = [ - "bit-set", - "regex", -] +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] -name = "fastrand" -version = "2.0.1" +name = "fastrlp" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" +checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] [[package]] name = "ff" @@ -1937,9 +2383,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.28" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" dependencies = [ "crc32fast", "miniz_oxide", @@ -2031,20 +2477,20 @@ dependencies = [ name = "fuzzer" version = "0.4.0" dependencies = [ - "cairo-vm 1.0.0-rc1", + "cairo-vm 1.0.0-rc3", "honggfuzz", - "num-traits 0.2.18", + "num-traits 0.2.19", "serde_json", - "starknet_api", + "starknet_api 0.11.0", "starknet_in_rust", "tempfile", ] [[package]] name = "genco" -version = "0.17.8" +version = "0.17.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98d7af598790738fee616426e669360fa361273b1b9c9b7f30c92fa627605cad" +checksum = "afac3cbb14db69ac9fef9cdb60d8a87e39a7a527f85a81a923436efa40ad42c6" dependencies = [ "genco-macros", "relative-path", @@ -2053,13 +2499,13 @@ dependencies = [ [[package]] name = "genco-macros" -version = "0.17.8" +version = "0.17.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4cf186fea4af17825116f72932fe52cce9a13bae39ff63b4dc0cfdb3fb4bde1" +checksum = "553630feadf7b76442b0849fd25fdf89b860d933623aec9693fed19af0400c78" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.66", ] [[package]] @@ -2075,9 +2521,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.12" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "js-sys", @@ -2100,9 +2546,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.1" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" [[package]] name = "glob" @@ -2112,9 +2558,9 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "good_lp" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa124423ded10046a849fa0ae9747c541895557f1af177e0890b09879e7e9e7d" +checksum = "3198bd13dea84c76a64621d6ee8ee26a4960a9a0d538eca95ca8f1320a469ac9" dependencies = [ "fnv", "minilp", @@ -2133,9 +2579,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.24" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" dependencies = [ "bytes", "fnv", @@ -2143,7 +2589,7 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap 2.2.3", + "indexmap 2.2.6", "slab", "tokio", "tokio-util", @@ -2165,16 +2611,16 @@ version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" dependencies = [ - "ahash 0.8.9", + "ahash 0.8.11", ] [[package]] name = "hashbrown" -version = "0.14.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ - "ahash 0.8.9", + "ahash 0.8.11", "allocator-api2", "serde", ] @@ -2194,17 +2640,32 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + [[package]] name = "hermit-abi" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "379dada1584ad501b383485dd706b8afb7a70fcbc7f4da7d780638a5a6124a60" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] name = "hex" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +dependencies = [ + "serde", +] + +[[package]] +name = "hex-literal" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "hmac" @@ -2212,7 +2673,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest", + "digest 0.10.7", ] [[package]] @@ -2226,14 +2687,14 @@ dependencies = [ [[package]] name = "honggfuzz" -version = "0.5.55" +version = "0.5.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "848e9c511092e0daa0a35a63e8e6e475a3e8f870741448b9f6028d69b142f18e" +checksum = "7c76b6234c13c9ea73946d1379d33186151148e0da231506b964b44f3d023505" dependencies = [ "arbitrary", "lazy_static", "memmap2", - "rustc_version", + "rustc_version 0.4.0", ] [[package]] @@ -2247,9 +2708,9 @@ dependencies = [ [[package]] name = "http" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" dependencies = [ "bytes", "fnv", @@ -2281,9 +2742,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "0.14.28" +version = "0.14.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" +checksum = "f361cde2f109281a220d4307746cdfd5ee3f410da58a70377762396775634b33" dependencies = [ "bytes", "futures-channel", @@ -2312,7 +2773,7 @@ dependencies = [ "futures-util", "http", "hyper", - "rustls 0.21.10", + "rustls 0.21.12", "tokio", "tokio-rustls", ] @@ -2419,12 +2880,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.3" +version = "2.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233cf39063f058ea2caae4091bf4a3ef70a653afbc026f5c4a4135d114e3c177" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "serde", ] @@ -2443,9 +2904,9 @@ dependencies = [ [[package]] name = "indoc" -version = "2.0.4" +version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" +checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" [[package]] name = "inout" @@ -2458,9 +2919,9 @@ dependencies = [ [[package]] name = "instant" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ "cfg-if", ] @@ -2472,15 +2933,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" [[package]] -name = "is-terminal" -version = "0.4.12" +name = "is_terminal_polyfill" +version = "1.70.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" -dependencies = [ - "hermit-abi", - "libc", - "windows-sys 0.52.0", -] +checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" [[package]] name = "itertools" @@ -2509,21 +2965,52 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + [[package]] name = "itoa" -version = "1.0.10" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "jobserver" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" +checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" +dependencies = [ + "libc", +] [[package]] name = "js-sys" -version = "0.3.68" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" dependencies = [ "wasm-bindgen", ] +[[package]] +name = "jsonrpsee-types" +version = "0.22.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "150d6168405890a7a3231a3c74843f58b8959471f6df76078db2619ddee1d07d" +dependencies = [ + "anyhow", + "beef", + "serde", + "serde_json", + "thiserror", +] + [[package]] name = "k256" version = "0.13.3" @@ -2547,43 +3034,52 @@ dependencies = [ "cpufeatures", ] +[[package]] +name = "keccak-asm" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47a3633291834c4fbebf8673acbc1b04ec9d151418ff9b8e26dcd79129928758" +dependencies = [ + "digest 0.10.7", + "sha3-asm", +] + [[package]] name = "lalrpop" -version = "0.20.0" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da4081d44f4611b66c6dd725e6de3169f9f63905421e8626fcb86b6a898998b8" +checksum = "55cb077ad656299f160924eb2912aa147d7339ea7d69e1b5517326fdcec3c1ca" dependencies = [ "ascii-canvas", "bit-set", - "diff", "ena", - "is-terminal", - "itertools 0.10.5", + "itertools 0.11.0", "lalrpop-util", "petgraph", "pico-args", "regex", - "regex-syntax 0.7.5", + "regex-syntax 0.8.3", "string_cache", "term", "tiny-keccak", "unicode-xid", + "walkdir", ] [[package]] name = "lalrpop-util" -version = "0.20.0" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f35c735096c0293d313e8f2a641627472b83d01b937177fe76e5e2708d31e0d" +checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553" dependencies = [ - "regex", + "regex-automata 0.4.6", ] [[package]] name = "lambdaworks-crypto" -version = "0.5.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d4c222d5b2fdc0faf702d3ab361d14589b097f40eac9dc550e27083483edc65" +checksum = "7fb5d4f22241504f7c7b8d2c3a7d7835d7c07117f10bff2a7d96a9ef6ef217c3" dependencies = [ "lambdaworks-math", "serde", @@ -2593,9 +3089,9 @@ dependencies = [ [[package]] name = "lambdaworks-math" -version = "0.5.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ee7dcab3968c71896b8ee4dc829147acc918cffe897af6265b1894527fe3add" +checksum = "358e172628e713b80a530a59654154bfc45783a6ed70ea284839800cebdf8f97" dependencies = [ "serde", "serde_json", @@ -2618,25 +3114,31 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.153" +version = "0.2.155" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" [[package]] name = "libloading" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" +checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" dependencies = [ "cfg-if", - "windows-sys 0.48.0", + "windows-targets 0.52.5", ] +[[package]] +name = "libm" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" + [[package]] name = "libmimalloc-sys" -version = "0.1.35" +version = "0.1.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3979b5c37ece694f1f5e51e7ecc871fdb0f517ed04ee45f88d15d6d553cb9664" +checksum = "0e7bb23d733dfcc8af652a78b7bf232f0e967710d044732185e561e47c0336b6" dependencies = [ "cc", "libc", @@ -2644,55 +3146,39 @@ dependencies = [ [[package]] name = "libredox" -version = "0.0.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "libc", - "redox_syscall 0.4.1", ] -[[package]] -name = "line-wrap" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30344350a2a51da54c1d53be93fade8a237e545dbcc4bdbe635413f2117cab9" -dependencies = [ - "safemem", -] - -[[package]] -name = "linked-hash-map" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" - [[package]] name = "linux-raw-sys" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "llvm-sys" -version = "170.0.1" +version = "180.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eed90f72df5504c0af2e3a08ee7762a4a3e42ec2605811fc19f64879de40c50a" +checksum = "778fa5fa02e32728e718f11eec147e6f134137399ab02fd2c13d32476337affa" dependencies = [ "anyhow", "cc", "lazy_static", "libc", "regex-lite", - "semver", + "semver 1.0.23", ] [[package]] name = "lock_api" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -2700,9 +3186,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.20" +version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] name = "lru" @@ -2715,11 +3201,11 @@ dependencies = [ [[package]] name = "lru" -version = "0.11.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a83fb7698b3643a0e34f9ae6f2e8f0178c0fd42f8b59d493aa271ff3a5bf21" +checksum = "d3262e75e648fce39813cb56ac41f3c3e3f65217ebf3844d818d1f9398cfb0dc" dependencies = [ - "hashbrown 0.14.3", + "hashbrown 0.14.5", ] [[package]] @@ -2742,9 +3228,9 @@ dependencies = [ [[package]] name = "melior" -version = "0.16.2" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e76dd7ff903474595023aebb93f8287667a2fe95132c65e1c77efdb99c64a973" +checksum = "5f904b36a8146f1c99548f6b38eca76595e346d2f59fcc4f75c07efe847bd8e1" dependencies = [ "dashmap", "melior-macro", @@ -2754,9 +3240,9 @@ dependencies = [ [[package]] name = "melior-macro" -version = "0.10.2" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "270cbbbd69a4d75a4c3f0266d6a046f4ab4c3457a352ed1879640c14d5c561e0" +checksum = "3426487cfa27f472c09150149b972ef0c0dacb17cae00734c2c4862e98725bca" dependencies = [ "comrak", "convert_case 0.6.0", @@ -2764,22 +3250,22 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.51", - "tblgen", + "syn 2.0.66", + "tblgen-alt", "unindent", ] [[package]] name = "memchr" -version = "2.7.1" +version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" +checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" [[package]] name = "memmap2" -version = "0.5.10" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" +checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322" dependencies = [ "libc", ] @@ -2809,9 +3295,9 @@ dependencies = [ [[package]] name = "mimalloc" -version = "0.1.39" +version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa01922b5ea280a911e323e4d2fd24b7fe5cc4042e0d2cda3c40775cdc4bdc9c" +checksum = "e9186d86b79b52f4a77af65604b51225e8db1d6ee7e3f41aec1e40829c71a176" dependencies = [ "libmimalloc-sys", ] @@ -2840,18 +3326,18 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae" dependencies = [ "adler", ] [[package]] name = "mio" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", "wasi", @@ -2860,11 +3346,32 @@ dependencies = [ [[package]] name = "mlir-sys" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5e19a5391ed2759fd9060f538330b9b89191e7b13503d7499a4f9580af6699a" +checksum = "1b1b5806a63bc959cd5c4e5db8cadd20e40045d41969d325132748db8af11b7f" dependencies = [ - "bindgen 0.68.1", + "bindgen", +] + +[[package]] +name = "modular-bitfield" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a53d79ba8304ac1c4f9eb3b9d281f21f7be9d4626f72ce7df4ad8fbde4f38a74" +dependencies = [ + "modular-bitfield-impl", + "static_assertions", +] + +[[package]] +name = "modular-bitfield-impl" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a7d5f7076603ebc68de2dc6a650ec331a062a13abaa346975be747bbfa4b789" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] @@ -2874,17 +3381,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac06db03ec2f46ee0ecdca1a1c34a99c0d188a0d83439b84bf0cb4b386e4ab09" dependencies = [ "matrixmultiply", - "num-complex", + "num-complex 0.2.4", "num-integer", - "num-traits 0.2.18", + "num-traits 0.2.19", "rawpointer", ] [[package]] name = "new_debug_unreachable" -version = "1.0.4" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" [[package]] name = "nom" @@ -2906,15 +3413,28 @@ dependencies = [ "winapi", ] +[[package]] +name = "num" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" +dependencies = [ + "num-bigint", + "num-complex 0.4.6", + "num-integer", + "num-iter", + "num-rational", + "num-traits 0.2.19", +] + [[package]] name = "num-bigint" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" dependencies = [ - "autocfg", "num-integer", - "num-traits 0.2.18", + "num-traits 0.2.19", "rand", "serde", ] @@ -2926,7 +3446,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95" dependencies = [ "autocfg", - "num-traits 0.2.18", + "num-traits 0.2.19", +] + +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits 0.2.19", ] [[package]] @@ -2941,7 +3470,18 @@ version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [ - "num-traits 0.2.18", + "num-traits 0.2.19", +] + +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits 0.2.19", ] [[package]] @@ -2952,86 +3492,119 @@ checksum = "64a5fe11d4135c3bcdf3a95b18b194afa9608a5f6ff034f5d857bc9a27fb0119" dependencies = [ "num-bigint", "num-integer", - "num-traits 0.2.18", + "num-traits 0.2.19", ] [[package]] name = "num-prime" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f4e3bc495f6e95bc15a6c0c55ac00421504a5a43d09e3cc455d1fea7015581d" +checksum = "e238432a7881ec7164503ccc516c014bf009be7984cde1ba56837862543bdec3" dependencies = [ "bitvec", "either", - "lru 0.7.8", + "lru 0.12.3", "num-bigint", "num-integer", "num-modular", - "num-traits 0.2.18", + "num-traits 0.2.19", "rand", ] +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits 0.2.19", +] + [[package]] name = "num-traits" version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31" dependencies = [ - "num-traits 0.2.18", + "num-traits 0.2.19", ] [[package]] name = "num-traits" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", + "libm", ] [[package]] -name = "number_prefix" -version = "0.4.0" +name = "num_cpus" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] [[package]] -name = "object" -version = "0.32.2" +name = "num_enum" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" dependencies = [ - "memchr", + "num_enum_derive", ] [[package]] -name = "once_cell" -version = "1.19.0" +name = "num_enum_derive" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "number_prefix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] -name = "onig" -version = "6.4.0" +name = "nybbles" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c4b31c8722ad9171c6d77d3557db078cab2bd50afcc9d09c8b315c59df8ca4f" +checksum = "95f06be0417d97f81fe4e5c86d7d01b392655a9cac9c19a848aa033e18937b23" dependencies = [ - "bitflags 1.3.2", - "libc", - "once_cell", - "onig_sys", + "alloy-rlp", + "const-hex", + "proptest", + "serde", + "smallvec", ] [[package]] -name = "onig_sys" -version = "69.8.1" +name = "object" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b829e3d7e9cc74c7e315ee8edb185bf4190da5acde74afd7fc59c35b1f086e7" +checksum = "b8ec7ab813848ba4522158d5517a6093db1ded27575b070f4177b8d12b41db5e" dependencies = [ - "cc", - "pkg-config", + "memchr", ] +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + [[package]] name = "oorandom" version = "11.1.3" @@ -3044,7 +3617,7 @@ version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c" dependencies = [ - "num-traits 0.2.18", + "num-traits 0.2.19", ] [[package]] @@ -3104,12 +3677,12 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", - "parking_lot_core 0.9.9", + "parking_lot_core 0.9.10", ] [[package]] @@ -3128,15 +3701,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.4.1", + "redox_syscall 0.5.1", "smallvec", - "windows-targets 0.48.5", + "windows-targets 0.52.5", ] [[package]] @@ -3152,9 +3725,9 @@ dependencies = [ [[package]] name = "paste" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "path-clean" @@ -3168,18 +3741,12 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" dependencies = [ - "digest", + "digest 0.10.7", "hmac", "password-hash", "sha2", ] -[[package]] -name = "peeking_take_while" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" - [[package]] name = "pem-rfc7468" version = "0.7.0" @@ -3195,14 +3762,25 @@ version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +[[package]] +name = "pest" +version = "2.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "560131c633294438da9f7c4b08189194b20946c8274c6b9e38881a7874dc8ee8" +dependencies = [ + "memchr", + "thiserror", + "ucd-trie", +] + [[package]] name = "petgraph" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.2.3", + "indexmap 2.2.6", ] [[package]] @@ -3235,7 +3813,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.66", ] [[package]] @@ -3264,9 +3842,9 @@ checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" [[package]] name = "pin-project-lite" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" [[package]] name = "pin-utils" @@ -3290,20 +3868,6 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" -[[package]] -name = "plist" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5699cc8a63d1aa2b1ee8e12b9ad70ac790d65788cd36101fa37f87ea46c4cef" -dependencies = [ - "base64 0.21.7", - "indexmap 2.2.3", - "line-wrap", - "quick-xml", - "serde", - "time", -] - [[package]] name = "portable-atomic" version = "1.6.0" @@ -3350,12 +3914,12 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.16" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a41cf62165e97c7f814d2221421dbb9afcbcdb0a88068e5ea206e19951c2cbb5" +checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" dependencies = [ "proc-macro2", - "syn 2.0.51", + "syn 2.0.66", ] [[package]] @@ -3416,27 +3980,44 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.78" +version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" dependencies = [ "unicode-ident", ] [[package]] -name = "quick-xml" -version = "0.31.0" +name = "proptest" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33" +checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf" dependencies = [ - "memchr", + "bit-set", + "bit-vec", + "bitflags 2.5.0", + "lazy_static", + "num-traits 0.2.19", + "rand", + "rand_chacha", + "rand_xorshift", + "regex-syntax 0.8.3", + "rusty-fork", + "tempfile", + "unarray", ] +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + [[package]] name = "quote" -version = "1.0.35" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] @@ -3477,12 +4058,41 @@ dependencies = [ "getrandom", ] +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core", +] + [[package]] name = "rawpointer" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + [[package]] name = "redox_syscall" version = "0.2.16" @@ -3494,18 +4104,18 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.4.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.5.0", ] [[package]] name = "redox_users" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" +checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" dependencies = [ "getrandom", "libredox", @@ -3514,14 +4124,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.3" +version = "1.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" +checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.5", - "regex-syntax 0.8.2", + "regex-automata 0.4.6", + "regex-syntax 0.8.3", ] [[package]] @@ -3535,13 +4145,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.2", + "regex-syntax 0.8.3", ] [[package]] @@ -3558,21 +4168,15 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" - -[[package]] -name = "regex-syntax" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" [[package]] name = "relative-path" -version = "1.9.2" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e898588f33fdd5b9420719948f9f2a32c922a246964576f71ba7f24f80610fbc" +checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" [[package]] name = "replay" @@ -3582,7 +4186,7 @@ dependencies = [ "clap", "indicatif", "rpc_state_reader", - "starknet_api", + "starknet_api 0.11.0", "starknet_in_rust", "tracing", "tracing-subscriber", @@ -3590,9 +4194,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.11.24" +version = "0.11.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6920094eb85afde5e4a138be3f2de8bbdf28000f0029e72c45025a56b042251" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" dependencies = [ "base64 0.21.7", "bytes", @@ -3611,7 +4215,7 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls 0.21.10", + "rustls 0.21.12", "rustls-pemfile", "serde", "serde_json", @@ -3629,6 +4233,159 @@ dependencies = [ "winreg", ] +[[package]] +name = "reth-codecs" +version = "0.2.0-beta.6" +source = "git+https://github.com/paradigmxyz/reth.git?tag=v0.2.0-beta.6#ac29b4b73be382caf2a2462d426e6bad75e18af9" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "bytes", + "reth-codecs-derive", +] + +[[package]] +name = "reth-codecs-derive" +version = "0.2.0-beta.6" +source = "git+https://github.com/paradigmxyz/reth.git?tag=v0.2.0-beta.6#ac29b4b73be382caf2a2462d426e6bad75e18af9" +dependencies = [ + "convert_case 0.6.0", + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "reth-ethereum-forks" +version = "0.2.0-beta.6" +source = "git+https://github.com/paradigmxyz/reth.git?tag=v0.2.0-beta.6#ac29b4b73be382caf2a2462d426e6bad75e18af9" +dependencies = [ + "alloy-chains", + "alloy-primitives", + "alloy-rlp", + "crc", + "serde", + "thiserror", +] + +[[package]] +name = "reth-primitives" +version = "0.2.0-beta.6" +source = "git+https://github.com/paradigmxyz/reth.git?tag=v0.2.0-beta.6#ac29b4b73be382caf2a2462d426e6bad75e18af9" +dependencies = [ + "alloy-chains", + "alloy-eips", + "alloy-genesis", + "alloy-primitives", + "alloy-rlp", + "alloy-trie", + "byteorder", + "bytes", + "cfg-if", + "derive_more", + "enr", + "itertools 0.12.1", + "modular-bitfield", + "nybbles", + "once_cell", + "rayon", + "reth-codecs", + "reth-ethereum-forks", + "reth-rpc-types", + "revm", + "revm-primitives", + "roaring", + "secp256k1 0.27.0", + "serde", + "serde_json", + "serde_with 3.8.1", + "strum 0.26.2", + "thiserror", +] + +[[package]] +name = "reth-rpc-types" +version = "0.2.0-beta.6" +source = "git+https://github.com/paradigmxyz/reth.git?tag=v0.2.0-beta.6#ac29b4b73be382caf2a2462d426e6bad75e18af9" +dependencies = [ + "alloy-genesis", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types", + "alloy-rpc-types-anvil", + "alloy-rpc-types-engine", + "alloy-rpc-types-trace", + "enr", + "jsonrpsee-types", + "secp256k1 0.27.0", + "serde", + "serde_json", + "serde_with 3.8.1", + "thiserror", + "url", +] + +[[package]] +name = "revm" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72a454c1c650b2b2e23f0c461af09e6c31e1d15e1cbebe905a701c46b8a50afc" +dependencies = [ + "auto_impl", + "cfg-if", + "dyn-clone", + "revm-interpreter", + "revm-precompile", + "serde", + "serde_json", +] + +[[package]] +name = "revm-interpreter" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d322f2730cd300e99d271a1704a2dfb8973d832428f5aa282aaa40e2473b5eec" +dependencies = [ + "revm-primitives", + "serde", +] + +[[package]] +name = "revm-precompile" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "931f692f3f4fc72ec39d5d270f8e9d208c4a6008de7590ee96cf948e3b6d3f8d" +dependencies = [ + "aurora-engine-modexp", + "c-kzg", + "k256", + "once_cell", + "revm-primitives", + "ripemd", + "secp256k1 0.28.2", + "sha2", + "substrate-bn", +] + +[[package]] +name = "revm-primitives" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbbc9640790cebcb731289afb7a7d96d16ad94afeb64b5d0b66443bd151e79d6" +dependencies = [ + "alloy-primitives", + "auto_impl", + "bitflags 2.5.0", + "bitvec", + "c-kzg", + "cfg-if", + "dyn-clone", + "enumn", + "hashbrown 0.14.5", + "hex", + "serde", +] + [[package]] name = "rfc6979" version = "0.4.0" @@ -3654,6 +4411,15 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "ripemd" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" +dependencies = [ + "digest 0.10.7", +] + [[package]] name = "rlp" version = "0.5.2" @@ -3664,6 +4430,16 @@ dependencies = [ "rustc-hex", ] +[[package]] +name = "roaring" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b26f4c25a604fcb3a1bcd96dd6ba37c93840de95de8198d94c0d571a74a804d1" +dependencies = [ + "bytemuck", + "byteorder", +] + [[package]] name = "rpc_state_reader" version = "0.4.0" @@ -3672,26 +4448,66 @@ dependencies = [ "cairo-lang-starknet", "cairo-lang-utils", "cairo-vm 0.9.2", - "cairo-vm 1.0.0-rc1", + "cairo-vm 1.0.0-rc3", "dotenv", "flate2", "pretty_assertions_sorted", "serde", "serde_json", - "serde_with 3.6.1", + "serde_with 3.8.1", "starknet", - "starknet_api", + "starknet_api 0.11.0", "starknet_in_rust", "test-case", "thiserror", "ureq", ] +[[package]] +name = "ruint" +version = "1.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c3cc4c2511671f327125da14133d0c5c5d137f006a1017a16f557bc85b16286" +dependencies = [ + "alloy-rlp", + "ark-ff 0.3.0", + "ark-ff 0.4.2", + "bytes", + "fastrlp", + "num-bigint", + "num-traits 0.2.19", + "parity-scale-codec", + "primitive-types", + "proptest", + "rand", + "rlp", + "ruint-macro", + "serde", + "valuable", + "zeroize", +] + +[[package]] +name = "ruint-macro" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" + +[[package]] +name = "rust_decimal" +version = "1.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1790d1c4c0ca81211399e0e0af16333276f375209e71a37b67698a373db5b47a" +dependencies = [ + "arrayvec", + "num-traits 0.2.19", +] + [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" @@ -3705,22 +4521,31 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", +] + [[package]] name = "rustc_version" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver", + "semver 1.0.23", ] [[package]] name = "rustix" -version = "0.38.31" +version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "errno", "libc", "linux-raw-sys", @@ -3729,9 +4554,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.21.10" +version = "0.21.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" dependencies = [ "log", "ring", @@ -3741,14 +4566,14 @@ dependencies = [ [[package]] name = "rustls" -version = "0.22.2" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e87c9956bd9807afa1f77e0f7594af32566e830e088a5576d27c5b6f30f49d41" +checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" dependencies = [ "log", "ring", "rustls-pki-types", - "rustls-webpki 0.102.2", + "rustls-webpki 0.102.4", "subtle", "zeroize", ] @@ -3764,9 +4589,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.3.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ede67b28608b4c60685c7d54122d4400d90f62b40caee7700e700380a390fa8" +checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" [[package]] name = "rustls-webpki" @@ -3780,9 +4605,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.102.2" +version = "0.102.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faaa0a62740bedb9b2ef5afa303da42764c012f743917351dc9a237ea1663610" +checksum = "ff448f7e92e913c4b7d4c6d8e4540a1724b319b4152b8aef6d4cf8339712b33e" dependencies = [ "ring", "rustls-pki-types", @@ -3791,21 +4616,27 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.14" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" [[package]] -name = "ryu" -version = "1.0.17" +name = "rusty-fork" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" +checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +dependencies = [ + "fnv", + "quick-error", + "tempfile", + "wait-timeout", +] [[package]] -name = "safemem" -version = "0.3.3" +name = "ryu" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "salsa" @@ -3856,9 +4687,9 @@ dependencies = [ [[package]] name = "schemars" -version = "0.8.16" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45a28f4c49489add4ce10783f7911893516f15afe45d015608d41faca6bc4d29" +checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" dependencies = [ "dyn-clone", "indexmap 1.9.3", @@ -3869,14 +4700,14 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.16" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c767fd6fa65d9ccf9cf026122c1b555f2ef9a4f0cea69da4d7dbc3e258d30967" +checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 1.0.109", + "syn 2.0.66", ] [[package]] @@ -3921,49 +4752,106 @@ dependencies = [ "zeroize", ] +[[package]] +name = "secp256k1" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f" +dependencies = [ + "rand", + "secp256k1-sys 0.8.1", +] + +[[package]] +name = "secp256k1" +version = "0.28.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24b59d129cdadea20aea4fb2352fa053712e5d713eee47d700cd4b2bc002f10" +dependencies = [ + "rand", + "secp256k1-sys 0.9.2", +] + +[[package]] +name = "secp256k1-sys" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70a129b9e9efbfb223753b9163c4ab3b13cff7fd9c7f010fbac25ab4099fa07e" +dependencies = [ + "cc", +] + +[[package]] +name = "secp256k1-sys" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d1746aae42c19d583c3c1a8c646bfad910498e2051c551a7f2e3c0c9fbb7eb" +dependencies = [ + "cc", +] + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser", +] + [[package]] name = "semver" -version = "1.0.22" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" + +[[package]] +name = "semver-parser" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" +checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" +dependencies = [ + "pest", +] [[package]] name = "serde" -version = "1.0.197" +version = "1.0.203" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.197" +version = "1.0.203" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.66", ] [[package]] name = "serde_derive_internals" -version = "0.26.0" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.66", ] [[package]] name = "serde_json" -version = "1.0.114" +version = "1.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" +checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" dependencies = [ + "indexmap 2.2.6", "itoa", "ryu", "serde", @@ -3982,9 +4870,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.5" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" +checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" dependencies = [ "serde", ] @@ -4019,19 +4907,19 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.6.1" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15d167997bd841ec232f5b2b8e0e26606df2e7caa4c31b95ea9ca52b200bd270" +checksum = "0ad483d2ab0149d5a5ebcd9972a3852711e0153d863bf5a5d0391d28883c4a20" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.2.3", + "indexmap 2.2.6", "serde", "serde_derive", "serde_json", - "serde_with_macros 3.6.1", + "serde_with_macros 3.8.1", "time", ] @@ -4041,22 +4929,22 @@ version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "881b6f881b17d13214e5d494c939ebab463d01264ce1811e9d4ac3a882e7695f" dependencies = [ - "darling 0.20.8", + "darling 0.20.9", "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.66", ] [[package]] name = "serde_with_macros" -version = "3.6.1" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "865f9743393e638991566a8b7a479043c2c8da94a33e0a31f18214c9cae0a64d" +checksum = "65569b702f41443e8bc8bbb1c5779bd0450bbe723b56198980e80ec45780bce2" dependencies = [ - "darling 0.20.8", + "darling 0.20.9", "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.66", ] [[package]] @@ -4067,7 +4955,7 @@ checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", "cpufeatures", - "digest", + "digest 0.10.7", ] [[package]] @@ -4078,7 +4966,7 @@ checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", - "digest", + "digest 0.10.7", ] [[package]] @@ -4087,10 +4975,20 @@ version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" dependencies = [ - "digest", + "digest 0.10.7", "keccak", ] +[[package]] +name = "sha3-asm" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9b57fd861253bff08bb1919e995f90ba8f4889de2726091c8876f3a4e823b40" +dependencies = [ + "cc", + "cfg-if", +] + [[package]] name = "sharded-slab" version = "0.1.7" @@ -4100,12 +4998,6 @@ dependencies = [ "lazy_static", ] -[[package]] -name = "shell-words" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" - [[package]] name = "shlex" version = "1.3.0" @@ -4118,7 +5010,7 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ - "digest", + "digest 0.10.7", "rand_core", ] @@ -4149,24 +5041,27 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +dependencies = [ + "serde", +] [[package]] name = "smol_str" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6845563ada680337a52d43bb0b29f396f2d911616f6573012645b9e3d048a49" +checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead" dependencies = [ "serde", ] [[package]] name = "socket2" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", "windows-sys 0.52.0", @@ -4201,20 +5096,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec63571489873d4506683915840eeb1bb16b3198ee4894cc6f2fe3013d505e56" dependencies = [ "ndarray", - "num-complex", + "num-complex 0.2.4", "num-traits 0.1.43", ] [[package]] name = "starknet" -version = "0.7.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "351ffff1bcf6a1dc569a1b330dfd85779e16506e7d4a87baa8be3744cb5415a6" +checksum = "20b9a7b7bfd87287af85854f7458b8170ba6aa59c39113436532b7ff3d2fcbd8" dependencies = [ "starknet-accounts", "starknet-contract", - "starknet-core 0.7.2", - "starknet-crypto 0.6.1", + "starknet-core", + "starknet-crypto 0.6.2", "starknet-ff", "starknet-macros", "starknet-providers", @@ -4223,13 +5118,13 @@ dependencies = [ [[package]] name = "starknet-accounts" -version = "0.6.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7062b020f65d9da7f9dd9f1d97bfb644e881cda8ddb999799a799e6f2e408dd" +checksum = "2095d7584608ae1707bd1cf2889368ab3734d9f54e4fcef4765cba1f3b3f7618" dependencies = [ "async-trait", "auto_impl", - "starknet-core 0.7.2", + "starknet-core", "starknet-providers", "starknet-signers", "thiserror", @@ -4237,42 +5132,24 @@ dependencies = [ [[package]] name = "starknet-contract" -version = "0.6.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d858efc93d85de95065a5732cb3e94d0c746674964c0859aab442ffbb9de76b4" +checksum = "cb3b73d437b4d62241612d13fce612602de6684c149cccf696e76a20757e2156" dependencies = [ "serde", "serde_json", "serde_with 2.3.3", "starknet-accounts", - "starknet-core 0.7.2", + "starknet-core", "starknet-providers", "thiserror", ] [[package]] name = "starknet-core" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f1683ca7c63f0642310eddedb7d35056d8306084dff323d440711065c63ed87" -dependencies = [ - "base64 0.21.7", - "flate2", - "hex", - "serde", - "serde_json", - "serde_json_pythonic", - "serde_with 2.3.3", - "sha3", - "starknet-crypto 0.6.1", - "starknet-ff", -] - -[[package]] -name = "starknet-core" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b15034c07557615f6bea248cb2ac91a103f56792c515319025a5edc4de2a60e" +checksum = "5ed286d637e34fb8ae1cd2f9615120ec8ff38d1cffd311ed7fdd497cdd2bd01f" dependencies = [ "base64 0.21.7", "flate2", @@ -4282,7 +5159,7 @@ dependencies = [ "serde_json_pythonic", "serde_with 2.3.3", "sha3", - "starknet-crypto 0.6.1", + "starknet-crypto 0.6.2", "starknet-ff", ] @@ -4297,7 +5174,7 @@ dependencies = [ "hmac", "num-bigint", "num-integer", - "num-traits 0.2.18", + "num-traits 0.2.19", "rfc6979", "sha2", "starknet-crypto-codegen", @@ -4308,33 +5185,33 @@ dependencies = [ [[package]] name = "starknet-crypto" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33c03f5ac70f9b067f48db7d2d70bdf18ee0f731e8192b6cfa679136becfcdb0" +checksum = "2e2c30c01e8eb0fc913c4ee3cf676389fffc1d1182bfe5bb9670e4e72e968064" dependencies = [ "crypto-bigint", "hex", "hmac", "num-bigint", "num-integer", - "num-traits 0.2.18", + "num-traits 0.2.19", "rfc6979", "sha2", "starknet-crypto-codegen", - "starknet-curve 0.4.1", + "starknet-curve 0.4.2", "starknet-ff", "zeroize", ] [[package]] name = "starknet-crypto-codegen" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af6527b845423542c8a16e060ea1bc43f67229848e7cd4c4d80be994a84220ce" +checksum = "bbc159a1934c7be9761c237333a57febe060ace2bc9e3b337a59a37af206d19f" dependencies = [ - "starknet-curve 0.4.1", + "starknet-curve 0.4.2", "starknet-ff", - "syn 2.0.51", + "syn 2.0.66", ] [[package]] @@ -4348,20 +5225,20 @@ dependencies = [ [[package]] name = "starknet-curve" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63c454fecadfb3fe56ee82c405439d663c8a037667cc9d8e4acb1fb17e15b1af" +checksum = "d1c383518bb312751e4be80f53e8644034aa99a0afb29d7ac41b89a997db875b" dependencies = [ "starknet-ff", ] [[package]] name = "starknet-ff" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "067419451efdea1ee968df8438369960c167e0e905c05b84afd074f50e1d6f3d" +checksum = "7abf1b44ec5b18d87c1ae5f54590ca9d0699ef4dd5b2ffa66fc97f24613ec585" dependencies = [ - "ark-ff", + "ark-ff 0.4.2", "bigdecimal", "crypto-bigint", "getrandom", @@ -4372,19 +5249,19 @@ dependencies = [ [[package]] name = "starknet-macros" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c5d2964612f0ccd0a700279e33cfc98d6db04f64645ff834f3b7ec422142d7a" +checksum = "95d549d3078bdbe775d0deaa8ddb57a19942989ce7c1f2dfd60beeb322bb4945" dependencies = [ - "starknet-core 0.9.0", - "syn 2.0.51", + "starknet-core", + "syn 2.0.66", ] [[package]] name = "starknet-providers" -version = "0.7.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52072c2d258bf692affeccd602613d5f6c61a6ffc84da8f191ab4a1b0a5e24d1" +checksum = "b6abf40ffcbe3b887b4d5cfc8ab73170c816b4aa78d1d4ad59abd3fb3b0f53cd" dependencies = [ "async-trait", "auto_impl", @@ -4395,40 +5272,38 @@ dependencies = [ "serde", "serde_json", "serde_with 2.3.3", - "starknet-core 0.7.2", + "starknet-core", "thiserror", "url", ] [[package]] name = "starknet-signers" -version = "0.5.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "347b1bfc09846aafe16d2b3a5bc2d8a2f845e2958602442182d265fbd6011c2e" +checksum = "5e9a2bd4fd66090003c3b7f0d76476e5b63cd44f6a49ede2442673f4427d5a40" dependencies = [ "async-trait", "auto_impl", "crypto-bigint", "eth-keystore", "rand", - "starknet-core 0.7.2", - "starknet-crypto 0.6.1", + "starknet-core", + "starknet-crypto 0.6.2", "thiserror", ] [[package]] name = "starknet-types-core" -version = "0.0.9" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d53160556d1f23425100f42b3230df747ea05763efee685a2cd939dfb640701" +checksum = "4098ac4ad57621cc7ec133b80fe72814d2cc4bee63ca8e7be4450ba6f42a07e8" dependencies = [ - "bitvec", "lambdaworks-crypto", "lambdaworks-math", - "lazy_static", "num-bigint", "num-integer", - "num-traits 0.2.18", + "num-traits 0.2.19", "serde", ] @@ -4441,7 +5316,7 @@ dependencies = [ "cairo-lang-starknet", "derive_more", "hex", - "indexmap 2.2.3", + "indexmap 2.2.6", "once_cell", "parity-scale-codec", "parity-scale-codec-derive", @@ -4449,8 +5324,28 @@ dependencies = [ "serde", "serde_json", "starknet-crypto 0.5.2", - "strum", - "strum_macros", + "strum 0.24.1", + "strum_macros 0.24.3", + "thiserror", +] + +[[package]] +name = "starknet_api" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "365ec5c0662466f299762bd012012da30e9a28319000cfade372b8787111f202" +dependencies = [ + "cairo-lang-starknet-classes", + "derive_more", + "hex", + "indexmap 2.2.6", + "once_cell", + "primitive-types", + "serde", + "serde_json", + "starknet-crypto 0.5.2", + "strum 0.24.1", + "strum_macros 0.24.3", "thiserror", ] @@ -4460,13 +5355,14 @@ version = "0.4.0" dependencies = [ "anyhow", "assert_matches", - "base64 0.21.7", + "base64 0.22.1", "cairo-lang-casm", "cairo-lang-sierra", "cairo-lang-starknet", + "cairo-lang-starknet-classes", "cairo-lang-utils", "cairo-native", - "cairo-vm 1.0.0-rc1", + "cairo-vm 1.0.0-rc3", "coverage-helper", "flate2", "getset", @@ -4474,22 +5370,23 @@ dependencies = [ "k256", "keccak", "lazy_static", - "lru 0.11.1", + "lru 0.12.3", "mimalloc", "num-bigint", "num-integer", - "num-traits 0.2.18", + "num-traits 0.2.19", "once_cell", "p256", "pretty_assertions_sorted", + "reth-primitives", "sec1", "serde", "serde_json", "serde_json_pythonic", "sha3", "starknet", - "starknet-crypto 0.6.1", - "starknet_api", + "starknet-crypto 0.6.2", + "starknet_api 0.11.0", "thiserror", "tracing", "tracing-subscriber", @@ -4509,7 +5406,7 @@ checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" dependencies = [ "new_debug_unreachable", "once_cell", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "phf_shared 0.10.0", "precomputed-hash", ] @@ -4522,9 +5419,9 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "strsim" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "strum" @@ -4532,6 +5429,15 @@ version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" +[[package]] +name = "strum" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29" +dependencies = [ + "strum_macros 0.26.4", +] + [[package]] name = "strum_macros" version = "0.24.3" @@ -4545,6 +5451,32 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.66", +] + +[[package]] +name = "substrate-bn" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b5bbfa79abbae15dd642ea8176a21a635ff3c00059961d1ea27ad04e5b441c" +dependencies = [ + "byteorder", + "crunchy", + "lazy_static", + "rand", + "rustc-hex", +] + [[package]] name = "subtle" version = "2.5.0" @@ -4564,9 +5496,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.51" +version = "2.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ab617d94515e94ae53b8406c628598680aa0c9587474ecbe58188f7b345d66c" +checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" dependencies = [ "proc-macro2", "quote", @@ -4574,33 +5506,22 @@ dependencies = [ ] [[package]] -name = "sync_wrapper" -version = "0.1.2" +name = "syn-solidity" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +checksum = "e6fe08d08d84f2c0a77f1e7c46518789d745c2e87a2721791ed7c3c9bc78df28" +dependencies = [ + "paste", + "proc-macro2", + "quote", + "syn 2.0.66", +] [[package]] -name = "syntect" -version = "5.2.0" +name = "sync_wrapper" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "874dcfa363995604333cf947ae9f751ca3af4522c60886774c4963943b4746b1" -dependencies = [ - "bincode 1.3.3", - "bitflags 1.3.2", - "fancy-regex", - "flate2", - "fnv", - "once_cell", - "onig", - "plist", - "regex-syntax 0.8.2", - "serde", - "serde_derive", - "serde_json", - "thiserror", - "walkdir", - "yaml-rust", -] +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" [[package]] name = "system-configuration" @@ -4630,12 +5551,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] -name = "tblgen" -version = "0.3.0" +name = "tblgen-alt" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d19c09266feb8b16718d1183044d14703a0b4b59e55ce8beb4d6e21dd066b1b" +checksum = "8128e684b18b518f32cd15779659c4a8dbb54ef6a36b532f7e3520f27dd01c95" dependencies = [ - "bindgen 0.66.1", + "bindgen", "cc", "paste", "thiserror", @@ -4643,9 +5564,9 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.10.0" +version = "3.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a365e8cd18e44762ef95d87f284f4b5cd04107fec2ff3052bd6a3e6069669e67" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" dependencies = [ "cfg-if", "fastrand", @@ -4664,16 +5585,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "terminal_size" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7" -dependencies = [ - "rustix", - "windows-sys 0.48.0", -] - [[package]] name = "test-case" version = "3.3.1" @@ -4692,7 +5603,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.66", ] [[package]] @@ -4703,28 +5614,28 @@ checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.66", "test-case-core", ] [[package]] name = "thiserror" -version = "1.0.57" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" +checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.57" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" +checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.66", ] [[package]] @@ -4757,11 +5668,20 @@ dependencies = [ "once_cell", ] +[[package]] +name = "threadpool" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" +dependencies = [ + "num_cpus", +] + [[package]] name = "time" -version = "0.3.34" +version = "0.3.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" dependencies = [ "deranged", "itoa", @@ -4780,9 +5700,9 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.17" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" dependencies = [ "num-conv", "time-core", @@ -4814,15 +5734,15 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.36.0" +version = "1.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" +checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" dependencies = [ "backtrace", "bytes", "libc", "mio", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "pin-project-lite", "socket2", "tokio-macros", @@ -4831,13 +5751,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.66", ] [[package]] @@ -4846,41 +5766,40 @@ version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ - "rustls 0.21.10", + "rustls 0.21.12", "tokio", ] [[package]] name = "tokio-util" -version = "0.7.10" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" dependencies = [ "bytes", "futures-core", "futures-sink", "pin-project-lite", "tokio", - "tracing", ] [[package]] name = "toml" -version = "0.8.10" +version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a9aad4a3066010876e8dcf5a8a06e70a558751117a145c6ce2b82c2e2054290" +checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.6", + "toml_edit 0.22.14", ] [[package]] name = "toml_datetime" -version = "0.6.5" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" dependencies = [ "serde", ] @@ -4891,22 +5810,22 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.2.3", + "indexmap 2.2.6", "toml_datetime", "winnow 0.5.40", ] [[package]] name = "toml_edit" -version = "0.22.6" +version = "0.22.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c1b5fd4128cc8d3e0cb74d4ed9a9cc7c7284becd4df68f5f940e1ad123606f6" +checksum = "f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38" dependencies = [ - "indexmap 2.2.3", + "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.2", + "winnow 0.6.11", ] [[package]] @@ -4934,7 +5853,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.66", ] [[package]] @@ -4994,6 +5913,12 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +[[package]] +name = "ucd-trie" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" + [[package]] name = "uint" version = "0.9.5" @@ -5006,6 +5931,12 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + [[package]] name = "unescaper" version = "0.1.4" @@ -5044,9 +5975,9 @@ checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" [[package]] name = "unicode-width" -version = "0.1.11" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" +checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" [[package]] name = "unicode-xid" @@ -5074,21 +6005,21 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "ureq" -version = "2.9.6" +version = "2.9.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f214ce18d8b2cbe84ed3aa6486ed3f5b285cf8d8fbdbce9f3f767a724adc35" +checksum = "d11a831e3c0b56e438a28308e7c810799e3c118417f342d30ecec080105395cd" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "flate2", "log", "once_cell", - "rustls 0.22.2", + "rustls 0.22.4", "rustls-pki-types", - "rustls-webpki 0.102.2", + "rustls-webpki 0.102.4", "serde", "serde_json", "url", - "webpki-roots 0.26.1", + "webpki-roots 0.26.2", ] [[package]] @@ -5136,11 +6067,20 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +[[package]] +name = "wait-timeout" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +dependencies = [ + "libc", +] + [[package]] name = "walkdir" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" dependencies = [ "same-file", "winapi-util", @@ -5163,9 +6103,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -5173,24 +6113,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.66", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.41" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877b9c3f61ceea0e56331985743b13f3d25c406a7098d45180fb5f09bc19ed97" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" dependencies = [ "cfg-if", "js-sys", @@ -5200,9 +6140,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -5210,28 +6150,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.66", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "web-sys" -version = "0.3.68" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96565907687f7aceb35bc5fc03770a8a0471d82e479f25832f54a0e3f4b28446" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" dependencies = [ "js-sys", "wasm-bindgen", @@ -5245,9 +6185,9 @@ checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" [[package]] name = "webpki-roots" -version = "0.26.1" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3de34ae270483955a94f4b21bdaaeb83d508bb84a01435f393818edb0012009" +checksum = "3c452ad30530b54a4d8e71952716a212b08efd0f3562baa66c29a618b07da7c3" dependencies = [ "rustls-pki-types", ] @@ -5282,11 +6222,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" dependencies = [ - "winapi", + "windows-sys 0.52.0", ] [[package]] @@ -5301,7 +6241,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.3", + "windows-targets 0.52.5", ] [[package]] @@ -5319,7 +6259,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.3", + "windows-targets 0.52.5", ] [[package]] @@ -5339,17 +6279,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.3" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d380ba1dc7187569a8a9e91ed34b8ccfc33123bbacb8c0aed2d1ad7f3ef2dc5f" +checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" dependencies = [ - "windows_aarch64_gnullvm 0.52.3", - "windows_aarch64_msvc 0.52.3", - "windows_i686_gnu 0.52.3", - "windows_i686_msvc 0.52.3", - "windows_x86_64_gnu 0.52.3", - "windows_x86_64_gnullvm 0.52.3", - "windows_x86_64_msvc 0.52.3", + "windows_aarch64_gnullvm 0.52.5", + "windows_aarch64_msvc 0.52.5", + "windows_i686_gnu 0.52.5", + "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", ] [[package]] @@ -5360,9 +6301,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.3" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68e5dcfb9413f53afd9c8f86e56a7b4d86d9a2fa26090ea2dc9e40fba56c6ec6" +checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" [[package]] name = "windows_aarch64_msvc" @@ -5372,9 +6313,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.3" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8dab469ebbc45798319e69eebf92308e541ce46760b49b18c6b3fe5e8965b30f" +checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" [[package]] name = "windows_i686_gnu" @@ -5384,9 +6325,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.3" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a4e9b6a7cac734a8b4138a4e1044eac3404d8326b6c0f939276560687a033fb" +checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" [[package]] name = "windows_i686_msvc" @@ -5396,9 +6343,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.3" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28b0ec9c422ca95ff34a78755cfa6ad4a51371da2a5ace67500cf7ca5f232c58" +checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" [[package]] name = "windows_x86_64_gnu" @@ -5408,9 +6355,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.3" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "704131571ba93e89d7cd43482277d6632589b18ecf4468f591fbae0a8b101614" +checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" [[package]] name = "windows_x86_64_gnullvm" @@ -5420,9 +6367,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.3" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42079295511643151e98d61c38c0acc444e52dd42ab456f7ccfd5152e8ecf21c" +checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" [[package]] name = "windows_x86_64_msvc" @@ -5432,9 +6379,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.3" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0770833d60a970638e989b3fa9fd2bb1aaadcf88963d1659fd7d9990196ed2d6" +checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" [[package]] name = "winnow" @@ -5447,9 +6394,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.2" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a4191c47f15cc3ec71fcb4913cb83d58def65dd3787610213c649283b5ce178" +checksum = "56c52728401e1dc672a56e81e593e912aa54c78f40246869f78359a2bf24d29d" dependencies = [ "memchr", ] @@ -5473,35 +6420,20 @@ dependencies = [ "tap", ] -[[package]] -name = "xdg" -version = "2.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213b7324336b53d2414b2db8537e56544d981803139155afa84f76eeebb7a546" - [[package]] name = "xshell" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce2107fe03e558353b4c71ad7626d58ed82efaf56c54134228608893c77023ad" +checksum = "6db0ab86eae739efd1b054a8d3d16041914030ac4e01cd1dca0cf252fd8b6437" dependencies = [ "xshell-macros", ] [[package]] name = "xshell-macros" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e2c411759b501fb9501aac2b1b2d287a6e93e5bdcf13c25306b23e1b716dd0e" - -[[package]] -name = "yaml-rust" -version = "0.4.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" -dependencies = [ - "linked-hash-map", -] +checksum = "9d422e8e38ec76e2f06ee439ccc765e9c6a9638b9e7c9f2e8255e4d41e8bd852" [[package]] name = "yansi" @@ -5511,29 +6443,29 @@ checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" [[package]] name = "zerocopy" -version = "0.7.32" +version = "0.7.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.32" +version = "0.7.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.66", ] [[package]] name = "zeroize" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" dependencies = [ "zeroize_derive", ] @@ -5546,7 +6478,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.66", ] [[package]] @@ -5590,9 +6522,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.9+zstd.1.5.5" +version = "2.0.10+zstd.1.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656" +checksum = "c253a4914af5bafc8fa8c86ee400827e83cf6ec01195ec1f1ed8441bf00d65aa" dependencies = [ "cc", "pkg-config", diff --git a/Cargo.toml b/Cargo.toml index 347a2d31d..901ad19f6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,66 +15,71 @@ replay_benchmark = [] [workspace] members = [ - "fuzzer", - "rpc_state_reader", - "replay", - "examples/contract_execution", + "fuzzer", + "rpc_state_reader", + "replay", + "examples/contract_execution", ] [workspace.dependencies] -cairo-lang-casm = "=2.5.4" -cairo-lang-sierra = "=2.5.4" -cairo-lang-starknet = "=2.5.4" -cairo-lang-utils = "=2.5.4" -cairo-vm = { git = "https://github.com/lambdaclass/cairo-vm", rev = "3547089579dd74f815edbc2d1caa91e00fc8a2f7", features = ["cairo-1-hints"] } +cairo-lang-casm = "2.6.3" +cairo-lang-sierra = "2.6.3" +cairo-lang-starknet = "2.6.3" +cairo-lang-utils = "2.6.3" +cairo-lang-starknet-classes = "2.6.3" +cairo-vm = { git = "https://github.com/lambdaclass/cairo-vm", rev = "c65591e9c0cc9bcc59a41c14c0be1ff34332adc8", features = [ + "cairo-1-hints", +] } num-traits = "0.2.15" -starknet = "0.7.0" # todo: update to 0.9.0+ once cairo-lang is 2.6.0+ -starknet_api = "0.7.0-dev.0" # todo: update to 0.9.0+ once cairo-lang is 2.6.0+ -thiserror = "1.0.32" +starknet = "0.10.0" +starknet_api = "0.11.0" +thiserror = "1.0.58" [dependencies] anyhow = "1.0" -base64 = { version = "0.21.0", default-features = false, features = ["alloc"] } +base64 = { version = "0.22.1", default-features = false, features = ["alloc"] } cairo-lang-casm = { workspace = true } cairo-lang-sierra = { workspace = true } cairo-lang-starknet = { workspace = true } cairo-lang-utils = { workspace = true } -cairo-native = { git = "https://github.com/lambdaclass/cairo_native", rev = "baf57d2dde0036ac4848fc40c672826fb7ffcde4", optional = true } +cairo-lang-starknet-classes = { workspace = true } +cairo-native = { git = "https://github.com/lambdaclass/cairo_native", rev = "e90c4ce0a7d5cea856c6b0c4e7e8a04078de323b", optional = true } k256 = "0.13.3" p256 = "0.13.2" sec1 = "0.7.3" cairo-vm = { workspace = true } -flate2 = "1.0.25" +flate2 = "1.0.30" getset = "0.1.2" hex = "0.4.3" # TODO: Replace with sha3. We should look how to integrate it correctly to calculate sn_keccak -keccak = "0.1.3" +keccak = "0.1.5" lazy_static = "1.4.0" -mimalloc = { version = "0.1.29", default-features = false, optional = true } -num-bigint = { version = "0.4", features = ["serde"] } -num-integer = "0.1.45" +mimalloc = { version = "0.1.42", default-features = false, optional = true } +num-bigint = { version = "0.4.5", features = ["serde"] } +num-integer = "0.1.46" num-traits = { workspace = true } -once_cell = "1.17.1" -sha3 = "0.10.1" -serde = { version = "1.0.152", features = ["derive"] } -serde_json = { version = "1.0", features = [ - "arbitrary_precision", - "raw_value", +once_cell = "1.19.0" +sha3 = "0.10.8" +serde = { version = "1.0.203", features = ["derive"] } +serde_json = { version = "1.0.117", features = [ + "arbitrary_precision", + "raw_value", ] } serde_json_pythonic = "0.1.2" starknet = { workspace = true } starknet_api = { workspace = true } -starknet-crypto = "0.6.1" +starknet-crypto = "0.6.2" thiserror = { workspace = true } -tracing = "0.1.37" +tracing = "0.1.40" [dev-dependencies] assert_matches = "1.5.0" -coverage-helper = "0.2.0" -lru = "0.11.0" +coverage-helper = "0.2.2" +lru = "0.12.3" pretty_assertions_sorted = "1.2.3" -tracing-subscriber = { version = "0.3.17", features = ["env-filter"] } +reth-primitives = { git = "https://github.com/paradigmxyz/reth.git", tag = "v0.2.0-beta.6", default-features = false } +tracing-subscriber = { version = "0.3.18", features = ["env-filter"] } [[bench]] path = "bench/internals.rs" diff --git a/Makefile b/Makefile index da3b29b11..c25645e99 100644 --- a/Makefile +++ b/Makefile @@ -83,7 +83,7 @@ $(CAIRO_2_CONTRACTS_TEST_DIR)/%.casm: $(CAIRO_2_CONTRACTS_TEST_DIR)/%.sierra compile-cairo-2-sierra: $(CAIRO_2_COMPILED_SIERRA_CONTRACTS) compile-cairo-2-casm: $(CAIRO_2_COMPILED_CASM_CONTRACTS) -CAIRO_2_VERSION=2.5.4 +CAIRO_2_VERSION=2.6.3 cairo-repo-2-dir = cairo2 cairo-repo-2-dir-macos = cairo2-macos @@ -109,6 +109,40 @@ cairo-%-macos.tar: cairo-%.tar: curl -L -o "$@" "https://github.com/starkware-libs/cairo/releases/download/v$*/release-x86_64-unknown-linux-musl.tar.gz" +# ============================= +# Test Cairo Kakarot Contracts +# ============================= + +KAKAROT_VERSION=v0.1.8 +KAKAROT_DIR=starknet_programs/kakarot + +KAKAROT_FILES:=$(wildcard $(KAKAROT_DIR)/*.json) +KAKAROT_COMPILED_SIERRA_CONTRACTS:=$(patsubst $(KAKAROT_DIR)/%.contract_class.json, $(KAKAROT_DIR)/%.sierra, $(KAKAROT_FILES)) +KAKAROT_COMPILED_CASM_CONTRACTS:=$(patsubst $(KAKAROT_DIR)/%.compiled_contract_class.json, $(KAKAROT_DIR)/%.casm, $(KAKAROT_FILES)) + +build-kakarot: | $(KAKAROT_DIR) + +compile-kakarot-sierra: $(KAKAROT_COMPILED_SIERRA_CONTRACTS) +compile-kakarot-casm: $(KAKAROT_COMPILED_CASM_CONTRACTS) + +$(KAKAROT_DIR): + rm -fr $(KAKAROT_DIR) \ + && mkdir -p $(KAKAROT_DIR) \ + && curl -L -o $(KAKAROT_DIR)/artifacts.zip "https://github.com/kkrt-labs/kakarot-ssj/releases/download/$(KAKAROT_VERSION)/dev-artifacts.zip" \ + && $(MAKE) decompress-kakarot + +decompress-kakarot: + unzip $(KAKAROT_DIR)/artifacts.zip -d $(KAKAROT_DIR) \ + && rm $(KAKAROT_DIR)/artifacts.zip \ + && rm $(KAKAROT_DIR)/*.sierra.json \ + && rm $(KAKAROT_DIR)/*.starknet_artifacts.json + +$(KAKAROT_DIR)/%.sierra: $(KAKAROT_DIR)/%.contract_class.json + mv $< $@ + +$(KAKAROT_DIR)/%.casm: $(KAKAROT_DIR)/%.compiled_contract_class.json + mv $< $@ + # ================= # Normal rules. # ================= @@ -120,17 +154,17 @@ check: compile-cairo compile-starknet compile-cairo-2-casm compile-cairo-2-sierr cargo check --workspace --all-targets deps: check-python-version build-cairo-2-compiler - cargo install flamegraph --version 0.6.2 --locked - cargo install cargo-llvm-cov --version 0.5.14 --locked + cargo install flamegraph --version 0.6.5 --locked + cargo install cargo-llvm-cov --version 0.6.10 --locked -pyenv && pyenv install -s pypy3.9-7.3.9 -pyenv && pyenv install -s 3.9.15 python3.9 -m venv starknet-venv . starknet-venv/bin/activate && $(MAKE) deps-venv - cargo install cargo-nextest --version 0.9.49 --locked + cargo install cargo-nextest --version 0.9.72 --locked deps-macos: check-python-version build-cairo-2-compiler-macos - cargo install flamegraph --version 0.6.2 --locked - cargo install cargo-llvm-cov --version 0.5.14 --locked + cargo install flamegraph --version 0.6.5 --locked + cargo install cargo-llvm-cov --version 0.6.10 --locked -pyenv install -s pypy3.9-7.3.9 -pyenv install -s 3.9.15 python3.9 -m venv starknet-venv @@ -156,6 +190,11 @@ test: compile-cairo compile-starknet compile-cairo-2-casm compile-cairo-2-sierra test-cairo-native: compile-cairo compile-starknet compile-cairo-2-casm compile-cairo-2-sierra cargo nextest run --workspace --test tests --features=cairo-native integration_tests::cairo_native +deps-kakarot: build-kakarot + +test-kakarot: compile-kakarot-sierra compile-kakarot-casm + cargo test --test tests --features=cairo-native test_kakarot_contract + test-doctests: cargo test --workspace --doc diff --git a/examples/contract_execution/src/main.rs b/examples/contract_execution/src/main.rs index c25b2dd06..80b1aa489 100644 --- a/examples/contract_execution/src/main.rs +++ b/examples/contract_execution/src/main.rs @@ -153,7 +153,8 @@ fn test_contract( let sierra_contract_class: SierraContractClass = serde_json::from_reader(reader).expect("Could not load contract from JSON"); let casm_class = - CasmContractClass::from_contract_class(sierra_contract_class.clone(), false).unwrap(); + CasmContractClass::from_contract_class(sierra_contract_class.clone(), false, usize::MAX) + .unwrap(); let compiled_class_hash = compute_casm_class_hash(&casm_class).expect("Error computing sierra class hash"); //* -------------------------------------------- diff --git a/fuzzer/src/main.rs b/fuzzer/src/main.rs index 61b8daf38..7e2f72b53 100644 --- a/fuzzer/src/main.rs +++ b/fuzzer/src/main.rs @@ -94,7 +94,7 @@ fn main() { .entry_points_by_type() .get(&EntryPointType::External) .unwrap() - .get(0) + .first() .unwrap() .selector(); diff --git a/rpc_state_reader/Cargo.toml b/rpc_state_reader/Cargo.toml index 7b514fe6b..2755d1abc 100644 --- a/rpc_state_reader/Cargo.toml +++ b/rpc_state_reader/Cargo.toml @@ -15,7 +15,7 @@ serde_json = { version = "1.0", features = [ "arbitrary_precision", "raw_value", ] } -starknet_api = "0.7.0-dev.0" +starknet_api = "0.11.0" cairo-lang-starknet = { workspace = true } cairo-lang-utils = { workspace = true } starknet = { workspace = true } diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 4da0ec7b8..936613c1f 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,4 +1,4 @@ [toolchain] -channel = "1.74.1" +channel = "1.78.0" components = ["rustfmt", "clippy"] profile = "minimal" diff --git a/src/bin/fibonacci.rs b/src/bin/fibonacci.rs index 8003d65a4..67f371223 100644 --- a/src/bin/fibonacci.rs +++ b/src/bin/fibonacci.rs @@ -53,7 +53,7 @@ fn main() { let fib_entrypoint_selector = *entry_points_by_type .get(&EntryPointType::External) .unwrap() - .get(0) + .first() .unwrap() .selector(); diff --git a/src/bin/native_bench.rs b/src/bin/native_bench.rs index 41ecb30a8..274181929 100644 --- a/src/bin/native_bench.rs +++ b/src/bin/native_bench.rs @@ -97,7 +97,7 @@ fn bench_fibo(executions: usize, bench_type: BenchType) { let (contract_class, constructor_selector) = match bench_type { BenchType::VM => { let entrypoints = casm_contract_class.clone().entry_points_by_type; - let constructor_selector = entrypoints.external.get(0).unwrap().selector.clone(); + let constructor_selector = entrypoints.external.first().unwrap().selector.clone(); ( CompiledClass::Casm { @@ -109,11 +109,11 @@ fn bench_fibo(executions: usize, bench_type: BenchType) { } _ => { let sierra_data = include_bytes!("../../starknet_programs/cairo2/fibonacci.sierra"); - let sierra_contract_class: cairo_lang_starknet::contract_class::ContractClass = + let sierra_contract_class: cairo_lang_starknet_classes::contract_class::ContractClass = serde_json::from_slice(sierra_data).unwrap(); let entrypoints = sierra_contract_class.clone().entry_points_by_type; - let constructor_selector = entrypoints.external.get(0).unwrap().selector.clone(); + let constructor_selector = entrypoints.external.first().unwrap().selector.clone(); let sierra_program = sierra_contract_class.extract_sierra_program().unwrap(); let entrypoints = sierra_contract_class.entry_points_by_type; ( @@ -183,7 +183,7 @@ fn bench_fact(executions: usize, bench_type: BenchType) { let (contract_class, constructor_selector) = match bench_type { BenchType::VM => { let entrypoints = casm_contract_class.clone().entry_points_by_type; - let constructor_selector = entrypoints.external.get(0).unwrap().selector.clone(); + let constructor_selector = entrypoints.external.first().unwrap().selector.clone(); ( CompiledClass::Casm { @@ -195,11 +195,11 @@ fn bench_fact(executions: usize, bench_type: BenchType) { } _ => { let sierra_data = include_bytes!("../../starknet_programs/cairo2/factorial_tr.sierra"); - let sierra_contract_class: cairo_lang_starknet::contract_class::ContractClass = + let sierra_contract_class: cairo_lang_starknet_classes::contract_class::ContractClass = serde_json::from_slice(sierra_data).unwrap(); let entrypoints = sierra_contract_class.clone().entry_points_by_type; - let constructor_selector = entrypoints.external.get(0).unwrap().selector.clone(); + let constructor_selector = entrypoints.external.first().unwrap().selector.clone(); let sierra_program = sierra_contract_class.extract_sierra_program().unwrap(); let entrypoints = sierra_contract_class.entry_points_by_type; ( @@ -318,7 +318,7 @@ fn bench_erc20(executions: usize, bench_type: BenchType) { }; let entrypoints = erc20_deployer_class.clone().entry_points_by_type; - let deploy_entrypoint_selector = &entrypoints.external.get(0).unwrap().selector; + let deploy_entrypoint_selector = &entrypoints.external.first().unwrap().selector; // insert deployer and erc20 classes into the cache. contract_class_cache.set_contract_class( @@ -383,13 +383,13 @@ fn bench_erc20(executions: usize, bench_type: BenchType) { .unwrap(); // obtain the address of the deployed erc20 contract - let erc20_address = *call_info.call_info.unwrap().retdata.get(0).unwrap(); + let erc20_address = *call_info.call_info.unwrap().retdata.first().unwrap(); (Address(erc20_address), state) } _ => { let erc20_sierra_class = include_bytes!("../../starknet_programs/cairo2/erc20.sierra"); - let sierra_contract_class: cairo_lang_starknet::contract_class::ContractClass = + let sierra_contract_class: cairo_lang_starknet_classes::contract_class::ContractClass = serde_json::from_slice(erc20_sierra_class).unwrap(); let sierra_program = sierra_contract_class.extract_sierra_program().unwrap(); let entrypoints = sierra_contract_class.entry_points_by_type; @@ -399,7 +399,7 @@ fn bench_erc20(executions: usize, bench_type: BenchType) { }; let entrypoints = erc20_deployer_class.clone().entry_points_by_type; - let deploy_entrypoint_selector = &entrypoints.external.get(0).unwrap().selector; + let deploy_entrypoint_selector = &entrypoints.external.first().unwrap().selector; // insert deployer and erc20 classes into the cache. contract_class_cache.set_contract_class( @@ -464,7 +464,7 @@ fn bench_erc20(executions: usize, bench_type: BenchType) { .unwrap(); // obtain the address of the deployed erc20 contract - let erc20_address = *call_info.call_info.unwrap().retdata.get(0).unwrap(); + let erc20_address = *call_info.call_info.unwrap().retdata.first().unwrap(); (Address(erc20_address), state) } diff --git a/src/core/contract_address/casm_contract_address.rs b/src/core/contract_address/casm_contract_address.rs index 10de1d702..34123232e 100644 --- a/src/core/contract_address/casm_contract_address.rs +++ b/src/core/contract_address/casm_contract_address.rs @@ -1,6 +1,6 @@ use crate::core::errors::contract_address_errors::ContractAddressError; use crate::services::api::contract_classes::deprecated_contract_class::EntryPointType; -use cairo_lang_starknet::casm_contract_class::{CasmContractClass, CasmContractEntryPoint}; +use cairo_lang_starknet_classes::casm_contract_class::{CasmContractClass, CasmContractEntryPoint}; use cairo_vm::Felt252; use starknet_crypto::{poseidon_hash_many, FieldElement}; diff --git a/src/core/contract_address/deprecated_contract_address.rs b/src/core/contract_address/deprecated_contract_address.rs index 0ffb66a21..0c92dfe67 100644 --- a/src/core/contract_address/deprecated_contract_address.rs +++ b/src/core/contract_address/deprecated_contract_address.rs @@ -326,11 +326,7 @@ pub fn compute_deprecated_class_hash( for builtin_name in contract_class.program().iter_builtins() { builtin_list_vec.push(Felt252::from_bytes_be_slice( - builtin_name - .name() - .strip_suffix("_builtin") - .ok_or(ContractAddressError::BuiltinSuffix)? - .as_bytes(), + builtin_name.to_str().as_bytes(), )); } diff --git a/src/core/contract_address/sierra_contract_address.rs b/src/core/contract_address/sierra_contract_address.rs index 0a6b5f2a7..156717889 100644 --- a/src/core/contract_address/sierra_contract_address.rs +++ b/src/core/contract_address/sierra_contract_address.rs @@ -1,12 +1,10 @@ use crate::{core::errors::contract_address_errors::ContractAddressError, EntryPointType}; -use cairo_lang_starknet::{ - contract::starknet_keccak, +use cairo_lang_starknet_classes::{ contract_class::{ContractClass as SierraContractClass, ContractEntryPoint}, + keccak::starknet_keccak, }; use cairo_vm::Felt252; -use serde_json::ser::Formatter; use starknet_crypto::{poseidon_hash_many, FieldElement, PoseidonHasher}; -use std::io::{self}; const CONTRACT_CLASS_VERSION: &[u8] = b"CONTRACT_CLASS_V0.1.0"; @@ -142,7 +140,7 @@ fn get_contract_entry_points( #[cfg(test)] mod tests { use crate::core::contract_address::compute_sierra_class_hash; - use cairo_lang_starknet::contract_class::ContractClass as SierraContractClass; + use cairo_lang_starknet_classes::contract_class::ContractClass as SierraContractClass; use cairo_vm::Felt252; use std::{fs::File, io::BufReader}; @@ -167,56 +165,3 @@ mod tests { ) } } - -struct PythonJsonFormatter; - -impl Formatter for PythonJsonFormatter { - fn begin_array_value(&mut self, writer: &mut W, first: bool) -> io::Result<()> - where - W: ?Sized + io::Write, - { - if first { - Ok(()) - } else { - writer.write_all(b", ") - } - } - - fn begin_object_key(&mut self, writer: &mut W, first: bool) -> io::Result<()> - where - W: ?Sized + io::Write, - { - if first { - Ok(()) - } else { - writer.write_all(b", ") - } - } - - fn begin_object_value(&mut self, writer: &mut W) -> io::Result<()> - where - W: ?Sized + io::Write, - { - writer.write_all(b": ") - } - - fn write_string_fragment(&mut self, writer: &mut W, fragment: &str) -> io::Result<()> - where - W: ?Sized + io::Write, - { - let mut buf = [0, 0]; - - for c in fragment.chars() { - if c.is_ascii() { - writer.write_all(&[c as u8])?; - } else { - let buf = c.encode_utf16(&mut buf); - for i in buf { - write!(writer, r"\u{i:04x}")?; - } - } - } - - Ok(()) - } -} diff --git a/src/execution/execution_entry_point.rs b/src/execution/execution_entry_point.rs index f6a651081..346d48785 100644 --- a/src/execution/execution_entry_point.rs +++ b/src/execution/execution_entry_point.rs @@ -27,17 +27,17 @@ use crate::{ }, }; use cairo_lang_sierra::program::Program as SierraProgram; -use cairo_lang_starknet::casm_contract_class::{CasmContractClass, CasmContractEntryPoint}; -use cairo_lang_starknet::contract_class::ContractEntryPoints; +use cairo_lang_starknet_classes::casm_contract_class::{CasmContractClass, CasmContractEntryPoint}; +use cairo_lang_starknet_classes::contract_class::ContractEntryPoints; use cairo_vm::{ types::{ + layout_name::LayoutName, program::Program, relocatable::{MaybeRelocatable, Relocatable}, }, vm::{ errors::runner_errors::RunnerError, runners::cairo_runner::{CairoArg, CairoRunner, ExecutionResources, RunResources}, - vm_core::VirtualMachine, }, Felt252, }; @@ -138,6 +138,7 @@ impl ExecutionEntryPoint { match contract_class { CompiledClass::Deprecated(contract_class) => { + dbg!("deprecated"); let call_info = self._execute_version0_class( state, resources_manager, @@ -418,9 +419,9 @@ impl ExecutionEntryPoint { let entry_point = self.get_selected_entry_point_v0(&contract_class, class_hash)?; // create starknet runner - let mut vm = VirtualMachine::new(false); - let mut cairo_runner = CairoRunner::new(&contract_class.program, "starknet", false)?; - cairo_runner.initialize_function_runner(&mut vm)?; + let mut cairo_runner = + CairoRunner::new(&contract_class.program, LayoutName::starknet, false, false)?; + cairo_runner.initialize_function_runner()?; validate_contract_deployed(state, &self.contract_address)?; @@ -428,12 +429,11 @@ impl ExecutionEntryPoint { //let os_context = runner.prepare_os_context(); let os_context = StarknetRunner::>::prepare_os_context_cairo0( - &cairo_runner, - &mut vm, + &mut cairo_runner, ); // fetch syscall_ptr - let initial_syscall_ptr: Relocatable = match os_context.get(0) { + let initial_syscall_ptr: Relocatable = match os_context.first() { Some(MaybeRelocatable::RelocatableValue(ptr)) => ptr.to_owned(), _ => return Err(TransactionError::NotARelocatableValue), }; @@ -449,14 +449,14 @@ impl ExecutionEntryPoint { ); let hint_processor = DeprecatedSyscallHintProcessor::new(syscall_handler, RunResources::default()); - let mut runner = StarknetRunner::new(cairo_runner, vm, hint_processor); + let mut runner = StarknetRunner::new(cairo_runner, hint_processor); // Positional arguments are passed to *args in the 'run_from_entrypoint' function. let data: Vec = self.calldata.iter().map(|d| d.into()).collect(); let alloc_pointer = runner .hint_processor .syscall_handler - .allocate_segment(&mut runner.vm, data)? + .allocate_segment(&mut runner.cairo_runner.vm, data)? .into(); let entry_point_args = [ @@ -478,6 +478,7 @@ impl ExecutionEntryPoint { - (entry_point_args.len() + 2))?; runner + .cairo_runner .vm .mark_address_range_as_accessed(args_ptr, entry_point_args.len())?; @@ -526,21 +527,17 @@ impl ExecutionEntryPoint { let entry_point = self.get_selected_entry_point(&contract_class, class_hash)?; // create starknet runner - let mut vm = VirtualMachine::new(false); // get a program from the casm contract class let program: Program = contract_class.as_ref().clone().try_into()?; // create and initialize a cairo runner for running cairo 1 programs. - let mut cairo_runner = CairoRunner::new(&program, "starknet", false)?; + let mut cairo_runner = CairoRunner::new(&program, LayoutName::starknet, false, false)?; - cairo_runner.initialize_function_runner_cairo_1( - &mut vm, - &parse_builtin_names(&entry_point.builtins)?, - )?; + cairo_runner + .initialize_function_runner_cairo_1(&parse_builtin_names(&entry_point.builtins)?)?; validate_contract_deployed(state, &self.contract_address)?; // prepare OS context let os_context = StarknetRunner::>::prepare_os_context_cairo1( - &cairo_runner, - &mut vm, + &mut cairo_runner, self.initial_gas.into(), ); @@ -567,7 +564,7 @@ impl ExecutionEntryPoint { &contract_class.hints, RunResources::default(), ); - let mut runner = StarknetRunner::new(cairo_runner, vm, hint_processor); + let mut runner = StarknetRunner::new(cairo_runner, hint_processor); // Load builtin costs let builtin_costs: Vec = @@ -575,7 +572,7 @@ impl ExecutionEntryPoint { let builtin_costs_ptr: MaybeRelocatable = runner .hint_processor .syscall_handler - .allocate_segment(&mut runner.vm, builtin_costs)? + .allocate_segment(&mut runner.cairo_runner.vm, builtin_costs)? .into(); // Load extra data @@ -587,6 +584,7 @@ impl ExecutionEntryPoint { let program_extra_data: Vec = vec![0x208B7FFF7FFF7FFE.into(), builtin_costs_ptr]; runner + .cairo_runner .vm .load_data(core_program_end_ptr, &program_extra_data)?; @@ -595,7 +593,7 @@ impl ExecutionEntryPoint { let alloc_pointer: MaybeRelocatable = runner .hint_processor .syscall_handler - .allocate_segment(&mut runner.vm, data)? + .allocate_segment(&mut runner.cairo_runner.vm, data)? .into(); let mut entrypoint_args: Vec = os_context @@ -617,6 +615,7 @@ impl ExecutionEntryPoint { )?; runner + .cairo_runner .vm .mark_address_range_as_accessed(core_program_end_ptr, program_extra_data.len())?; @@ -631,6 +630,7 @@ impl ExecutionEntryPoint { let args_ptr = (initial_fp - (entrypoint_args.len() + 2))?; runner + .cairo_runner .vm .mark_address_range_as_accessed(args_ptr, entrypoint_args.len())?; @@ -687,9 +687,7 @@ impl ExecutionEntryPoint { class_hash: &ClassHash, program_cache: Rc>>, ) -> Result { - use cairo_native::{ - executor::NativeExecutor, metadata::syscall_handler::SyscallHandlerMeta, - }; + use cairo_native::executor::NativeExecutor; use crate::{ syscalls::{ @@ -757,14 +755,14 @@ impl ExecutionEntryPoint { resources_manager: Default::default(), }; - let syscall_meta = SyscallHandlerMeta::new(&mut syscall_handler); - let entry_point_fn = &sierra_program .funcs .iter() .find(|x| x.id.id == (entry_point.function_idx as u64)) .unwrap(); + std::fs::write("hello.sierra", sierra_program.to_string()).unwrap(); + let entry_point_id = &entry_point_fn.id; let value = match native_executor { @@ -772,13 +770,13 @@ impl ExecutionEntryPoint { entry_point_id, &self.calldata, Some(self.initial_gas), - Some(&syscall_meta), + &mut syscall_handler, ), NativeExecutor::Jit(executor) => executor.invoke_contract_dynamic( entry_point_id, &self.calldata, Some(self.initial_gas), - Some(&syscall_meta), + &mut syscall_handler, ), } .map_err(|e| TransactionError::CustomError(format!("cairo-native error: {:?}", e)))?; diff --git a/src/execution/mod.rs b/src/execution/mod.rs index 85c858677..ef151d288 100644 --- a/src/execution/mod.rs +++ b/src/execution/mod.rs @@ -303,6 +303,7 @@ impl<'de> Deserialize<'de> for CallInfo { // CallResult structure // ---------------------- +#[derive(Debug)] pub struct CallResult { pub gas_consumed: u128, pub is_success: bool, @@ -466,19 +467,15 @@ impl TxInfoStruct { ) -> Result { let version = get_big_int(vm, tx_info_ptr)?; - let account_contract_address = Address(get_big_int(vm, &tx_info_ptr + 1)?); - let max_fee = - get_big_int(vm, &tx_info_ptr + 2)? - .to_u128() - .ok_or(SyscallHandlerError::Conversion( - "Felt252".to_string(), - "u128".to_string(), - ))?; - let signature_len = get_integer(vm, &tx_info_ptr + 3)?; - let signature = get_relocatable(vm, &tx_info_ptr + 4)?; - let transaction_hash = get_big_int(vm, &tx_info_ptr + 5)?; - let chain_id = get_big_int(vm, &tx_info_ptr + 6)?; - let nonce = get_big_int(vm, &tx_info_ptr + 7)?; + let account_contract_address = Address(get_big_int(vm, (tx_info_ptr + 1)?)?); + let max_fee = get_big_int(vm, (tx_info_ptr + 2)?)?.to_u128().ok_or( + SyscallHandlerError::Conversion("Felt252".to_string(), "u128".to_string()), + )?; + let signature_len = get_integer(vm, (tx_info_ptr + 3)?)?; + let signature = get_relocatable(vm, (tx_info_ptr + 4)?)?; + let transaction_hash = get_big_int(vm, (tx_info_ptr + 5)?)?; + let chain_id = get_big_int(vm, (tx_info_ptr + 6)?)?; + let nonce = get_big_int(vm, (tx_info_ptr + 7)?)?; Ok(TxInfoStruct { version, diff --git a/src/execution/os_usage.rs b/src/execution/os_usage.rs index 5525773dd..3230632f4 100644 --- a/src/execution/os_usage.rs +++ b/src/execution/os_usage.rs @@ -1,6 +1,6 @@ use std::collections::HashMap; -use cairo_vm::vm::runners::cairo_runner::ExecutionResources; +use cairo_vm::{types::builtin_name::BuiltinName, vm::runners::cairo_runner::ExecutionResources}; use crate::{definitions::transaction_type::TransactionType, transaction::error::TransactionError}; @@ -29,8 +29,8 @@ impl Default for OsResources { n_steps: ESTIMATED_INVOKE_FUNCTION_STEPS, n_memory_holes: 68, builtin_instance_counter: HashMap::from([ - ("pedersen_builtin".to_string(), 16), - ("range_check_builtin".to_string(), 80), + (BuiltinName::pedersen, 16), + (BuiltinName::range_check, 80), ]), }, ), @@ -40,8 +40,8 @@ impl Default for OsResources { n_steps: ESTIMATED_DECLARE_STEPS, n_memory_holes: 66, builtin_instance_counter: HashMap::from([ - ("pedersen_builtin".to_string(), 15), - ("range_check_builtin".to_string(), 63), + (BuiltinName::pedersen, 15), + (BuiltinName::range_check, 63), ]), }, ), @@ -59,8 +59,8 @@ impl Default for OsResources { n_steps: ESTIMATED_DEPLOY_ACCOUNT_STEPS, n_memory_holes: 82, builtin_instance_counter: HashMap::from([ - ("pedersen_builtin".to_string(), 23), - ("range_check_builtin".to_string(), 83), + (BuiltinName::pedersen, 23), + (BuiltinName::range_check, 83), ]), }, ), @@ -70,8 +70,8 @@ impl Default for OsResources { n_steps: ESTIMATED_L1_HANDLER_STEPS, n_memory_holes: 0, builtin_instance_counter: HashMap::from([ - ("pedersen_builtin".to_string(), 11), - ("range_check_builtin".to_string(), 17), + (BuiltinName::pedersen, 11), + (BuiltinName::range_check, 17), ]), }, ), @@ -83,10 +83,7 @@ impl Default for OsResources { ExecutionResources { n_steps: 760, n_memory_holes: 4, - builtin_instance_counter: HashMap::from([( - "range_check_builtin".to_string(), - 20, - )]), + builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 20)]), }, ), ( @@ -94,10 +91,7 @@ impl Default for OsResources { ExecutionResources { n_steps: 713, n_memory_holes: 0, - builtin_instance_counter: HashMap::from([( - "range_check_builtin".to_string(), - 19, - )]), + builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 19)]), }, ), ( @@ -105,10 +99,7 @@ impl Default for OsResources { ExecutionResources { n_steps: 692, n_memory_holes: 0, - builtin_instance_counter: HashMap::from([( - "range_check_builtin".to_string(), - 15, - )]), + builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 15)]), }, ), ( @@ -117,8 +108,8 @@ impl Default for OsResources { n_steps: 1010, n_memory_holes: 13, builtin_instance_counter: HashMap::from([ - ("range_check_builtin".to_string(), 19), - ("pedersen_builtin".to_string(), 7), + (BuiltinName::range_check, 19), + (BuiltinName::pedersen, 7), ]), }, ), @@ -127,10 +118,7 @@ impl Default for OsResources { ExecutionResources { n_steps: 61, n_memory_holes: 0, - builtin_instance_counter: HashMap::from([( - "range_check_builtin".to_string(), - 1, - )]), + builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 1)]), }, ), ( @@ -138,10 +126,7 @@ impl Default for OsResources { ExecutionResources { n_steps: 74, n_memory_holes: 0, - builtin_instance_counter: HashMap::from([( - "range_check_builtin".to_string(), - 2, - )]), + builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 2)]), }, ), ( @@ -165,10 +150,7 @@ impl Default for OsResources { ExecutionResources { n_steps: 62, n_memory_holes: 0, - builtin_instance_counter: HashMap::from([( - "range_check_builtin".to_string(), - 1, - )]), + builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 1)]), }, ), ( @@ -176,10 +158,7 @@ impl Default for OsResources { ExecutionResources { n_steps: 62, n_memory_holes: 0, - builtin_instance_counter: HashMap::from([( - "range_check_builtin".to_string(), - 1, - )]), + builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 1)]), }, ), ( @@ -187,10 +166,7 @@ impl Default for OsResources { ExecutionResources { n_steps: 62, n_memory_holes: 0, - builtin_instance_counter: HashMap::from([( - "range_check_builtin".to_string(), - 1, - )]), + builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 1)]), }, ), ( @@ -206,10 +182,7 @@ impl Default for OsResources { ExecutionResources { n_steps: 62, n_memory_holes: 0, - builtin_instance_counter: HashMap::from([( - "range_check_builtin".to_string(), - 1, - )]), + builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 1)]), }, ), ( @@ -225,10 +198,7 @@ impl Default for OsResources { ExecutionResources { n_steps: 751, n_memory_holes: 4, - builtin_instance_counter: HashMap::from([( - "range_check_builtin".to_string(), - 20, - )]), + builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 20)]), }, ), ( @@ -236,10 +206,7 @@ impl Default for OsResources { ExecutionResources { n_steps: 659, n_memory_holes: 0, - builtin_instance_counter: HashMap::from([( - "range_check_builtin".to_string(), - 15, - )]), + builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 15)]), }, ), ( @@ -247,10 +214,7 @@ impl Default for OsResources { ExecutionResources { n_steps: 98, n_memory_holes: 0, - builtin_instance_counter: HashMap::from([( - "range_check_builtin".to_string(), - 1, - )]), + builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 1)]), }, ), ( @@ -258,10 +222,7 @@ impl Default for OsResources { ExecutionResources { n_steps: 139, n_memory_holes: 0, - builtin_instance_counter: HashMap::from([( - "range_check_builtin".to_string(), - 1, - )]), + builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 1)]), }, ), ( @@ -269,10 +230,7 @@ impl Default for OsResources { ExecutionResources { n_steps: 87, n_memory_holes: 0, - builtin_instance_counter: HashMap::from([( - "range_check_builtin".to_string(), - 1, - )]), + builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 1)]), }, ), ( @@ -280,10 +238,7 @@ impl Default for OsResources { ExecutionResources { n_steps: 89, n_memory_holes: 0, - builtin_instance_counter: HashMap::from([( - "range_check_builtin".to_string(), - 1, - )]), + builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 1)]), }, ), ]); @@ -337,8 +292,8 @@ fn get_additional_os_resources_test() { n_steps: 3990, n_memory_holes: 68, builtin_instance_counter: HashMap::from([ - ("range_check_builtin".to_string(), 85), - ("pedersen_builtin".to_string(), 16), + (BuiltinName::range_check, 85), + (BuiltinName::pedersen, 16), ]), }; diff --git a/src/lib.rs b/src/lib.rs index 940c9dfdb..ad56e145f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -30,7 +30,7 @@ extern crate assert_matches; pub use crate::services::api::contract_classes::deprecated_contract_class::{ ContractEntryPoint, EntryPointType, }; -pub use cairo_lang_starknet::{ +pub use cairo_lang_starknet_classes::{ casm_contract_class::CasmContractClass, contract_class::ContractClass, contract_class::ContractClass as SierraContractClass, }; @@ -284,7 +284,7 @@ mod test { }, }, }; - use cairo_lang_starknet::{ + use cairo_lang_starknet_classes::{ casm_contract_class::CasmContractClass, contract_class::ContractClass as SierraContractClass, }; @@ -350,7 +350,7 @@ mod test { let contract_class: CasmContractClass = serde_json::from_slice(program_data).unwrap(); let entrypoints = contract_class.clone().entry_points_by_type; - let entrypoint_selector = Felt252::from(&entrypoints.external.get(0).unwrap().selector); + let entrypoint_selector = Felt252::from(&entrypoints.external.first().unwrap().selector); let contract_class_cache = PermanentContractClassCache::default(); @@ -454,7 +454,7 @@ mod test { let program_data = include_bytes!("../starknet_programs/cairo2/fibonacci.casm"); let contract_class: CasmContractClass = serde_json::from_slice(program_data).unwrap(); let entrypoints = contract_class.clone().entry_points_by_type; - let entrypoint_selector = Felt252::from(&entrypoints.external.get(0).unwrap().selector); + let entrypoint_selector = Felt252::from(&entrypoints.external.first().unwrap().selector); let contract_class_cache = PermanentContractClassCache::default(); diff --git a/src/runner/mod.rs b/src/runner/mod.rs index 0d0a98256..08b82284a 100644 --- a/src/runner/mod.rs +++ b/src/runner/mod.rs @@ -1,19 +1,16 @@ use crate::execution::CallResult; use crate::syscalls::syscall_handler::HintProcessorPostRun; use crate::transaction::error::TransactionError; -use cairo_lang_starknet::casm_contract_class::CasmContractClass; +use cairo_lang_starknet_classes::casm_contract_class::CasmContractClass; use cairo_vm::hint_processor::hint_processor_definition::HintProcessor; -use cairo_vm::serde::deserialize_program::BuiltinName; +use cairo_vm::types::builtin_name::BuiltinName; use cairo_vm::types::errors::math_errors::MathError; use cairo_vm::Felt252; use cairo_vm::{ types::relocatable::{MaybeRelocatable, Relocatable}, - vm::{ - runners::{ - builtin_runner::BuiltinRunner, - cairo_runner::{CairoArg, CairoRunner, ExecutionResources}, - }, - vm_core::VirtualMachine, + vm::runners::{ + builtin_runner::BuiltinRunner, + cairo_runner::{CairoArg, CairoRunner, ExecutionResources}, }, }; use num_traits::{ToPrimitive, Zero}; @@ -35,23 +32,7 @@ pub fn get_casm_contract_builtins( .unwrap() .builtins .iter() - .map(|n| format!("{n}_builtin")) - .map(|s| match &*s { - cairo_vm::vm::runners::builtin_runner::OUTPUT_BUILTIN_NAME => BuiltinName::output, - cairo_vm::vm::runners::builtin_runner::RANGE_CHECK_BUILTIN_NAME => { - BuiltinName::range_check - } - cairo_vm::vm::runners::builtin_runner::HASH_BUILTIN_NAME => BuiltinName::pedersen, - cairo_vm::vm::runners::builtin_runner::SIGNATURE_BUILTIN_NAME => BuiltinName::ecdsa, - cairo_vm::vm::runners::builtin_runner::KECCAK_BUILTIN_NAME => BuiltinName::keccak, - cairo_vm::vm::runners::builtin_runner::BITWISE_BUILTIN_NAME => BuiltinName::bitwise, - cairo_vm::vm::runners::builtin_runner::EC_OP_BUILTIN_NAME => BuiltinName::ec_op, - cairo_vm::vm::runners::builtin_runner::POSEIDON_BUILTIN_NAME => BuiltinName::poseidon, - cairo_vm::vm::runners::builtin_runner::SEGMENT_ARENA_BUILTIN_NAME => { - BuiltinName::segment_arena - } - _ => panic!("Invalid builtin {s}"), - }) + .map(|n| BuiltinName::from_str(n).expect("invalid builtin")) .collect() } @@ -61,7 +42,6 @@ where H: HintProcessor + HintProcessorPostRun, { pub(crate) cairo_runner: CairoRunner, - pub(crate) vm: VirtualMachine, pub(crate) hint_processor: H, } @@ -69,10 +49,9 @@ impl StarknetRunner where H: HintProcessor + HintProcessorPostRun, { - pub const fn new(cairo_runner: CairoRunner, vm: VirtualMachine, hint_processor: H) -> Self { + pub const fn new(cairo_runner: CairoRunner, hint_processor: H) -> Self { StarknetRunner { cairo_runner, - vm, hint_processor, } } @@ -96,7 +75,6 @@ where &args, verify_secure, program_segment_size, - &mut self.vm, &mut self.hint_processor, )?; Ok(()) @@ -117,13 +95,15 @@ where let program_builtins = get_casm_contract_builtins(contract_class, entrypoint_offset); self.cairo_runner - .initialize_function_runner_cairo_1(&mut self.vm, &program_builtins)?; + .initialize_function_runner_cairo_1(&program_builtins)?; // Load builtin costs let builtin_costs: Vec = vec![0.into(), 0.into(), 0.into(), 0.into(), 0.into()]; - let builtin_costs_ptr = self.vm.add_memory_segment(); - self.vm.load_data(builtin_costs_ptr, &builtin_costs)?; + let builtin_costs_ptr = self.cairo_runner.vm.add_memory_segment(); + self.cairo_runner + .vm + .load_data(builtin_costs_ptr, &builtin_costs)?; // Load extra data let core_program_end_ptr = (self @@ -133,12 +113,16 @@ where + self.cairo_runner.get_program().data_len())?; let program_extra_data: Vec = vec![0x208B7FFF7FFF7FFE.into(), builtin_costs_ptr.into()]; - self.vm + self.cairo_runner + .vm .load_data(core_program_end_ptr, &program_extra_data)?; // Load calldata - let calldata_start = self.vm.add_memory_segment(); - let calldata_end = self.vm.load_data(calldata_start, &args.to_vec())?; + let calldata_start = self.cairo_runner.vm.add_memory_segment(); + let calldata_end = self + .cairo_runner + .vm + .load_data(calldata_start, &args.to_vec())?; // Create entrypoint_args let mut entrypoint_args: Vec = @@ -155,7 +139,6 @@ where &entrypoint_args, true, Some(self.cairo_runner.get_program().data_len() + program_extra_data.len()), - &mut self.vm, &mut self.hint_processor, )?; @@ -164,12 +147,12 @@ where /// Returns and ExecutionResources struct that contains the resources used by the contract being execute. pub fn get_execution_resources(&self) -> Result { - Ok(self.cairo_runner.get_execution_resources(&self.vm)?) + Ok(self.cairo_runner.get_execution_resources()?) } /// Return a vector that holds the data and pointers used to build the CallResult pub fn get_return_values(&self) -> Result, TransactionError> { - let ret_data = self.vm.get_return_values(2)?; + let ret_data = self.cairo_runner.vm.get_return_values(2)?; let n_rets = ret_data[0] .get_int_ref() @@ -179,7 +162,7 @@ where .get_relocatable() .ok_or(TransactionError::NotARelocatableValue)?; - let ret_data = self.vm.get_integer_range( + let ret_data = self.cairo_runner.vm.get_integer_range( ret_ptr, n_rets .to_usize() @@ -192,7 +175,7 @@ where /// ## Parameters /// - initial_gas: The amount of gas the caller has available. pub fn get_call_result(&self, initial_gas: u128) -> Result { - let return_values = self.vm.get_return_values(5)?; + let return_values = self.cairo_runner.vm.get_return_values(5)?; let remaining_gas = return_values[0] .get_int_ref() .and_then(ToPrimitive::to_u128) @@ -209,6 +192,7 @@ where .ok_or(TransactionError::NotARelocatableValue)?; let size = (retdata_end - retdata_start)?; let retdata: Vec = self + .cairo_runner .vm .get_continuous_range(retdata_start, size)? .iter() @@ -227,24 +211,24 @@ where /// - vm: An instance of the cairo virutal machine that will execute the contract. /// - gas: The amount of gas that the caller has available. pub fn prepare_os_context_cairo1( - cairo_runner: &CairoRunner, - vm: &mut VirtualMachine, + cairo_runner: &mut CairoRunner, gas: Felt252, ) -> Vec { let mut os_context = vec![]; // first, add for each builtin, its initial stack to the os_context - let builtin_runners = vm + let builtin_runners = cairo_runner + .vm .get_builtin_runners() .iter() .map(|runner| (runner.name(), runner.clone())) - .collect::>(); + .collect::>(); cairo_runner .get_program_builtins() .iter() .for_each(|builtin| { - if builtin_runners.contains_key(builtin.name()) { - let b_runner = builtin_runners.get(builtin.name()).unwrap(); + if builtin_runners.contains_key(builtin) { + let b_runner = builtin_runners.get(builtin).unwrap(); let stack = b_runner.initial_stack(); os_context.extend(stack); } @@ -254,7 +238,7 @@ where os_context.push(gas.into()); // finally add the syscall segment - let syscall_segment = vm.add_memory_segment(); + let syscall_segment = cairo_runner.vm.add_memory_segment(); os_context.push(syscall_segment.into()); os_context } @@ -263,24 +247,22 @@ where /// ## Parameters /// - CairoRunner: An instance of a cairo runner that will execute the contract. /// - vm: An instance of the cairo virutal machine that will execute the contract. - pub fn prepare_os_context_cairo0( - cairo_runner: &CairoRunner, - vm: &mut VirtualMachine, - ) -> Vec { - let syscall_segment = vm.add_memory_segment(); + pub fn prepare_os_context_cairo0(cairo_runner: &mut CairoRunner) -> Vec { + let syscall_segment = cairo_runner.vm.add_memory_segment(); let mut os_context = [syscall_segment.into()].to_vec(); - let builtin_runners = vm + let builtin_runners = cairo_runner + .vm .get_builtin_runners() .iter() .map(|runner| (runner.name(), runner)) - .collect::>(); + .collect::>(); cairo_runner .get_program_builtins() .iter() .for_each(|builtin| { - if builtin_runners.contains_key(builtin.name()) { - let b_runner = builtin_runners.get(builtin.name()).unwrap(); + if builtin_runners.contains_key(builtin) { + let b_runner = builtin_runners.get(builtin).unwrap(); let stack = b_runner.initial_stack(); os_context.extend(stack); } @@ -301,7 +283,7 @@ where return Err(TransactionError::IllegalOsPtrOffset); } - let os_context_end = (self.vm.get_ap() - 2)?; + let os_context_end = (self.cairo_runner.vm.get_ap() - 2)?; let final_os_context_ptr = (os_context_end - os_context.len())?; let os_context_ptr = os_context .get(ptr_offset) @@ -310,6 +292,7 @@ where let addr = (final_os_context_ptr + ptr_offset)?; let ptr_fetch_from_memory = self + .cairo_runner .vm .get_maybe(&addr) .ok_or(TransactionError::InvalidPtrFetch)?; @@ -332,11 +315,12 @@ where _ => return Err(TransactionError::NotARelocatableValue), }; - let expected_stop_ptr = seg_base_ptr + let expected_stop_ptr = ((*seg_base_ptr) + self + .cairo_runner .vm .get_segment_used_size(seg_base_ptr.segment_index as usize) - .ok_or(TransactionError::InvalidSegmentSize)?; + .ok_or(TransactionError::InvalidSegmentSize)?)?; let seg_stop_ptr: Relocatable = match segment_stop_ptr { MaybeRelocatable::RelocatableValue(val) => *val, @@ -359,11 +343,9 @@ where initial_os_context: Vec, ) -> Result<(), TransactionError> { // The returned values are os_context, retdata_size, retdata_ptr. - let os_context_end = (self.vm.get_ap() - 5)?; + let os_context_end = (self.cairo_runner.vm.get_ap() - 5)?; - let stack_ptr = self - .cairo_runner - .get_builtins_final_stack(&mut self.vm, os_context_end)?; + let stack_ptr = self.cairo_runner.get_builtins_final_stack(os_context_end)?; let final_os_context_ptr = (stack_ptr - 2)?; @@ -377,14 +359,15 @@ where .ok_or(TransactionError::EmptyOsContext)?; // Stack ends with: syscall_ptr, vairant_selector, retdata_start, retdata_end. let syscall_stop_ptr = self + .cairo_runner .vm - .get_maybe(&(self.vm.get_ap() - 4)?) + .get_maybe(&(self.cairo_runner.vm.get_ap() - 4)?) .ok_or(TransactionError::InvalidPtrFetch)?; self.validate_segment_pointers(syscall_base_ptr, &syscall_stop_ptr)?; self.hint_processor - .post_run(&mut self.vm, syscall_stop_ptr.try_into()?)?; + .post_run(&mut self.cairo_runner.vm, syscall_stop_ptr.try_into()?)?; Ok(()) } @@ -396,11 +379,9 @@ where initial_os_context: Vec, ) -> Result<(), TransactionError> { // The returned values are os_context, retdata_size, retdata_ptr. - let os_context_end = (self.vm.get_ap() - 2)?; + let os_context_end = (self.cairo_runner.vm.get_ap() - 2)?; - let stack_ptr = self - .cairo_runner - .get_builtins_final_stack(&mut self.vm, os_context_end)?; + let stack_ptr = self.cairo_runner.get_builtins_final_stack(os_context_end)?; let final_os_context_ptr = (stack_ptr - 1)?; @@ -415,7 +396,7 @@ where self.validate_segment_pointers(&syscall_base_ptr, &syscall_stop_ptr)?; self.hint_processor - .post_run(&mut self.vm, syscall_stop_ptr.try_into()?)?; + .post_run(&mut self.cairo_runner.vm, syscall_stop_ptr.try_into()?)?; Ok(()) } @@ -438,25 +419,25 @@ mod test { transaction::error::TransactionError, }; use cairo_vm::{ - types::relocatable::{MaybeRelocatable, Relocatable}, - vm::{ - runners::cairo_runner::{CairoRunner, RunResources}, - vm_core::VirtualMachine, + types::{ + layout_name::LayoutName, + relocatable::{MaybeRelocatable, Relocatable}, }, + vm::runners::cairo_runner::{CairoRunner, RunResources}, }; #[test] fn prepare_os_context_test() { let program = cairo_vm::types::program::Program::default(); - let cairo_runner = CairoRunner::new(&program, "starknet", false).unwrap(); - let mut vm = VirtualMachine::new(true); + let mut cairo_runner = + CairoRunner::new(&program, LayoutName::starknet, false, true).unwrap(); let os_context = StarknetRunner::< SyscallHintProcessor< CachedState, PermanentContractClassCache, >, - >::prepare_os_context_cairo0(&cairo_runner, &mut vm); + >::prepare_os_context_cairo0(&mut cairo_runner); // is expected to return a pointer to the first segment as there is nothing more in the vm let expected = Vec::from([MaybeRelocatable::from((0, 0))]); @@ -467,8 +448,7 @@ mod test { #[test] fn run_from_entrypoint_should_fail_with_no_exec_base() { let program = cairo_vm::types::program::Program::default(); - let cairo_runner = CairoRunner::new(&program, "starknet", false).unwrap(); - let vm = VirtualMachine::new(true); + let cairo_runner = CairoRunner::new(&program, LayoutName::starknet, false, true).unwrap(); let mut state = CachedState::::default(); let hint_processor = DeprecatedSyscallHintProcessor::new( @@ -476,15 +456,14 @@ mod test { RunResources::default(), ); - let mut runner = StarknetRunner::new(cairo_runner, vm, hint_processor); + let mut runner = StarknetRunner::new(cairo_runner, hint_processor); assert!(runner.run_from_entrypoint(1, &[], None).is_err()) } #[test] fn get_os_segment_ptr_range_should_fail_when_ptr_offset_is_not_zero() { let program = cairo_vm::types::program::Program::default(); - let cairo_runner = CairoRunner::new(&program, "starknet", false).unwrap(); - let vm = VirtualMachine::new(true); + let cairo_runner = CairoRunner::new(&program, LayoutName::starknet, false, true).unwrap(); let mut state = CachedState::::default(); let hint_processor = DeprecatedSyscallHintProcessor::new( @@ -492,7 +471,7 @@ mod test { RunResources::default(), ); - let runner = StarknetRunner::new(cairo_runner, vm, hint_processor); + let runner = StarknetRunner::new(cairo_runner, hint_processor); assert_matches!( runner.get_os_segment_ptr_range(1, vec![]).unwrap_err(), TransactionError::IllegalOsPtrOffset @@ -502,8 +481,7 @@ mod test { #[test] fn validate_segment_pointers_should_fail_when_offset_is_not_zero() { let program = cairo_vm::types::program::Program::default(); - let cairo_runner = CairoRunner::new(&program, "starknet", false).unwrap(); - let vm = VirtualMachine::new(true); + let cairo_runner = CairoRunner::new(&program, LayoutName::starknet, false, true).unwrap(); let mut state = CachedState::::default(); let hint_processor = DeprecatedSyscallHintProcessor::new( @@ -511,7 +489,7 @@ mod test { RunResources::default(), ); - let runner = StarknetRunner::new(cairo_runner, vm, hint_processor); + let runner = StarknetRunner::new(cairo_runner, hint_processor); let relocatable = MaybeRelocatable::RelocatableValue((0, 1).into()); assert_matches!( runner @@ -524,8 +502,7 @@ mod test { #[test] fn validate_segment_pointers_should_fail_when_base_is_not_a_value() { let program = cairo_vm::types::program::Program::default(); - let cairo_runner = CairoRunner::new(&program, "starknet", false).unwrap(); - let vm = VirtualMachine::new(true); + let cairo_runner = CairoRunner::new(&program, LayoutName::starknet, false, true).unwrap(); let mut state = CachedState::::default(); let hint_processor = DeprecatedSyscallHintProcessor::new( @@ -533,7 +510,7 @@ mod test { RunResources::default(), ); - let runner = StarknetRunner::new(cairo_runner, vm, hint_processor); + let runner = StarknetRunner::new(cairo_runner, hint_processor); let relocatable = MaybeRelocatable::Int((1).into()); assert_matches!( runner @@ -546,8 +523,7 @@ mod test { #[test] fn validate_segment_pointers_should_fail_with_invalid_segment_size() { let program = cairo_vm::types::program::Program::default(); - let cairo_runner = CairoRunner::new(&program, "starknet", false).unwrap(); - let vm = VirtualMachine::new(true); + let cairo_runner = CairoRunner::new(&program, LayoutName::starknet, false, true).unwrap(); let mut state = CachedState::::default(); let hint_processor = DeprecatedSyscallHintProcessor::new( @@ -555,7 +531,7 @@ mod test { RunResources::default(), ); - let runner = StarknetRunner::new(cairo_runner, vm, hint_processor); + let runner = StarknetRunner::new(cairo_runner, hint_processor); let base = MaybeRelocatable::RelocatableValue((0, 0).into()); assert_matches!( runner.validate_segment_pointers(&base, &base).unwrap_err(), @@ -566,10 +542,10 @@ mod test { #[test] fn validate_segment_pointers_should_fail_when_stop_is_not_a_value() { let program = cairo_vm::types::program::Program::default(); - let cairo_runner = CairoRunner::new(&program, "starknet", false).unwrap(); - let mut vm = VirtualMachine::new(true); - vm.add_memory_segment(); - vm.compute_segments_effective_sizes(); + let mut cairo_runner = + CairoRunner::new(&program, LayoutName::starknet, false, true).unwrap(); + cairo_runner.vm.add_memory_segment(); + cairo_runner.vm.compute_segments_effective_sizes(); let mut state = CachedState::::default(); let hint_processor = DeprecatedSyscallHintProcessor::new( @@ -577,7 +553,7 @@ mod test { RunResources::default(), ); - let runner = StarknetRunner::new(cairo_runner, vm, hint_processor); + let runner = StarknetRunner::new(cairo_runner, hint_processor); let base = MaybeRelocatable::RelocatableValue((0, 0).into()); let stop = MaybeRelocatable::Int((1).into()); assert_matches!( @@ -589,10 +565,10 @@ mod test { #[test] fn validate_segment_pointers_should_fail_with_invalid_stop_pointer() { let program = cairo_vm::types::program::Program::default(); - let cairo_runner = CairoRunner::new(&program, "starknet", false).unwrap(); - let mut vm = VirtualMachine::new(true); - vm.add_memory_segment(); - vm.compute_segments_effective_sizes(); + let mut cairo_runner = + CairoRunner::new(&program, LayoutName::starknet, false, true).unwrap(); + cairo_runner.vm.add_memory_segment(); + cairo_runner.vm.compute_segments_effective_sizes(); let mut state = CachedState::::default(); let hint_processor = DeprecatedSyscallHintProcessor::new( @@ -600,7 +576,7 @@ mod test { RunResources::default(), ); - let runner = StarknetRunner::new(cairo_runner, vm, hint_processor); + let runner = StarknetRunner::new(cairo_runner, hint_processor); let base = MaybeRelocatable::RelocatableValue((0, 0).into()); let stop = MaybeRelocatable::RelocatableValue((0, 1).into()); assert_matches!( diff --git a/src/services/api/contract_classes/compiled_class.rs b/src/services/api/contract_classes/compiled_class.rs index a6145624d..e24d2baca 100644 --- a/src/services/api/contract_classes/compiled_class.rs +++ b/src/services/api/contract_classes/compiled_class.rs @@ -9,9 +9,9 @@ use crate::{ContractEntryPoint, EntryPointType}; use super::deprecated_contract_class::ContractClass; use cairo_lang_sierra::program::Program as SierraProgram; -use cairo_lang_starknet::abi::Contract; -use cairo_lang_starknet::casm_contract_class::CasmContractClass; -use cairo_lang_starknet::contract_class::{ +use cairo_lang_starknet_classes::abi::Contract; +use cairo_lang_starknet_classes::casm_contract_class::CasmContractClass; +use cairo_lang_starknet_classes::contract_class::{ ContractClass as SierraContractClass, ContractEntryPoints, }; use cairo_lang_utils::bigint::BigUintAsHex; @@ -87,7 +87,8 @@ impl From for CompiledClass { sierra_cc.extract_sierra_program().unwrap(), sierra_cc.entry_points_by_type.clone(), )); - let casm_cc = CasmContractClass::from_contract_class(sierra_cc, true).unwrap(); + let casm_cc = + CasmContractClass::from_contract_class(sierra_cc, true, usize::MAX).unwrap(); // todo: check if usize::MAX is good here CompiledClass::Casm { casm: Arc::new(casm_cc), diff --git a/src/services/api/contract_classes/deprecated_contract_class.rs b/src/services/api/contract_classes/deprecated_contract_class.rs index 45a407aac..28336a395 100644 --- a/src/services/api/contract_classes/deprecated_contract_class.rs +++ b/src/services/api/contract_classes/deprecated_contract_class.rs @@ -1,9 +1,9 @@ use crate::core::contract_address::compute_hinted_class_hash; use crate::services::api::contract_class_errors::ContractClassError; use cairo_vm::serde::deserialize_program::{ - deserialize_array_of_bigint_hex, Attribute, BuiltinName, HintParams, Identifier, - ReferenceManager, + deserialize_array_of_bigint_hex, Attribute, HintParams, Identifier, ReferenceManager, }; +use cairo_vm::types::builtin_name::BuiltinName; use cairo_vm::types::relocatable::MaybeRelocatable; use cairo_vm::types::{errors::program_errors::ProgramError, program::Program}; use cairo_vm::utils::PRIME_STR; @@ -262,7 +262,7 @@ mod tests { use crate::core::contract_address::compute_deprecated_class_hash; use super::*; - use cairo_vm::{serde::deserialize_program::BuiltinName, Felt252}; + use cairo_vm::Felt252; use starknet_api::deprecated_contract_class::{FunctionAbiEntry, TypedParameter}; #[test] diff --git a/src/syscalls/deprecated_syscall_handler.rs b/src/syscalls/deprecated_syscall_handler.rs index 7654d4119..39388d9f7 100644 --- a/src/syscalls/deprecated_syscall_handler.rs +++ b/src/syscalls/deprecated_syscall_handler.rs @@ -492,7 +492,7 @@ mod tests { let event = syscall_handler .syscall_handler .events - .get(0) + .first() .unwrap() .clone(); diff --git a/src/syscalls/deprecated_syscall_request.rs b/src/syscalls/deprecated_syscall_request.rs index 337538e0c..0e5d1b8a0 100644 --- a/src/syscalls/deprecated_syscall_request.rs +++ b/src/syscalls/deprecated_syscall_request.rs @@ -145,16 +145,6 @@ pub(crate) struct DeprecatedReplaceClassRequest { pub(crate) class_hash: Felt252, } -/// Struct representing a deprecated delegate call request. -#[derive(Clone, Debug, PartialEq)] -pub(crate) struct DeprecatedDelegateCallRequest { - pub(crate) selector: Felt252, - pub(crate) contract_address: Address, - pub(crate) function_selector: Felt252, - pub(crate) calldata_size: usize, - pub(crate) calldata: Relocatable, -} - /// Implementation of a converter from different types to DeprecatedSyscallRequest impl From for DeprecatedSyscallRequest { fn from(emit_event_struct: DeprecatedEmitEventRequest) -> DeprecatedSyscallRequest { @@ -261,10 +251,10 @@ impl DeprecatedFromPtr for DeprecatedEmitEventRequest { syscall_ptr: Relocatable, ) -> Result { let selector = get_big_int(vm, syscall_ptr)?; - let keys_len = get_integer(vm, &syscall_ptr + 1)?; - let keys = get_relocatable(vm, &syscall_ptr + 2)?; - let data_len = get_integer(vm, &syscall_ptr + 3)?; - let data = get_relocatable(vm, &syscall_ptr + 4)?; + let keys_len = get_integer(vm, (syscall_ptr + 1)?)?; + let keys = get_relocatable(vm, (syscall_ptr + 2)?)?; + let data_len = get_integer(vm, (syscall_ptr + 3)?)?; + let data = get_relocatable(vm, (syscall_ptr + 4)?)?; Ok(DeprecatedEmitEventRequest { selector, @@ -294,10 +284,10 @@ impl DeprecatedFromPtr for DeprecatedLibraryCallRequest { syscall_ptr: Relocatable, ) -> Result { let selector = get_big_int(vm, syscall_ptr)?; - let class_hash = get_big_int(vm, &syscall_ptr + 1)?; - let function_selector = get_big_int(vm, &syscall_ptr + 2)?; - let calldata_size = get_integer(vm, &syscall_ptr + 3)?; - let calldata = get_relocatable(vm, &syscall_ptr + 4)?; + let class_hash = get_big_int(vm, (syscall_ptr + 1)?)?; + let function_selector = get_big_int(vm, (syscall_ptr + 2)?)?; + let calldata_size = get_integer(vm, (syscall_ptr + 3)?)?; + let calldata = get_relocatable(vm, (syscall_ptr + 4)?)?; Ok(DeprecatedLibraryCallRequest { selector, class_hash, @@ -315,10 +305,10 @@ impl DeprecatedFromPtr for DeprecatedCallContractRequest { syscall_ptr: Relocatable, ) -> Result { let selector = get_big_int(vm, syscall_ptr)?; - let contract_address = Address(get_big_int(vm, &syscall_ptr + 1)?); - let function_selector = get_big_int(vm, &syscall_ptr + 2)?; - let calldata_size = get_integer(vm, &syscall_ptr + 3)?; - let calldata = get_relocatable(vm, &syscall_ptr + 4)?; + let contract_address = Address(get_big_int(vm, (syscall_ptr + 1)?)?); + let function_selector = get_big_int(vm, (syscall_ptr + 2)?)?; + let calldata_size = get_integer(vm, (syscall_ptr + 3)?)?; + let calldata = get_relocatable(vm, (syscall_ptr + 4)?)?; Ok(DeprecatedCallContractRequest { selector, contract_address, @@ -337,11 +327,11 @@ impl DeprecatedFromPtr for DeprecatedDeployRequest { ) -> Result { // Get syscall parameters from the Virtual Machine let _selector = get_big_int(vm, syscall_ptr)?; - let class_hash = get_big_int(vm, &syscall_ptr + 1)?; - let contract_address_salt = get_big_int(vm, &syscall_ptr + 2)?; - let constructor_calldata_size = get_big_int(vm, &syscall_ptr + 3)?; - let constructor_calldata = get_relocatable(vm, &syscall_ptr + 4)?; - let deploy_from_zero = get_integer(vm, &syscall_ptr + 5)?; + let class_hash = get_big_int(vm, (syscall_ptr + 1)?)?; + let contract_address_salt = get_big_int(vm, (syscall_ptr + 2)?)?; + let constructor_calldata_size = get_big_int(vm, (syscall_ptr + 3)?)?; + let constructor_calldata = get_relocatable(vm, (syscall_ptr + 4)?)?; + let deploy_from_zero = get_integer(vm, (syscall_ptr + 5)?)?; Ok(DeprecatedSyscallRequest::Deploy(DeprecatedDeployRequest { _selector, @@ -360,9 +350,9 @@ impl DeprecatedFromPtr for DeprecatedSendMessageToL1SysCallRequest { syscall_ptr: Relocatable, ) -> Result { let _selector = get_big_int(vm, syscall_ptr)?; - let to_address = Address(get_big_int(vm, &syscall_ptr + 1)?); - let payload_size = get_integer(vm, &syscall_ptr + 2)?; - let payload_ptr = get_relocatable(vm, &syscall_ptr + 3)?; + let to_address = Address(get_big_int(vm, (syscall_ptr + 1)?)?); + let payload_size = get_integer(vm, (syscall_ptr + 2)?)?; + let payload_ptr = get_relocatable(vm, (syscall_ptr + 3)?)?; Ok(DeprecatedSyscallRequest::SendMessageToL1( DeprecatedSendMessageToL1SysCallRequest { diff --git a/src/syscalls/native_syscall_handler.rs b/src/syscalls/native_syscall_handler.rs index badeea73a..2632e9855 100644 --- a/src/syscalls/native_syscall_handler.rs +++ b/src/syscalls/native_syscall_handler.rs @@ -33,7 +33,7 @@ use cairo_native::{ cache::ProgramCache, starknet::{ BlockInfo, ExecutionInfo, ExecutionInfoV2, ResourceBounds, Secp256k1Point, Secp256r1Point, - StarkNetSyscallHandler, SyscallResult, TxInfo, TxV2Info, U256, + StarknetSyscallHandler, SyscallResult, TxInfo, TxV2Info, U256, }, }; use cairo_vm::Felt252; @@ -85,8 +85,8 @@ impl<'a, 'cache, S: StateReader, C: ContractClassCache> NativeSyscallHandler<'a, } } -impl<'a, 'cache, S: StateReader, C: ContractClassCache> StarkNetSyscallHandler - for NativeSyscallHandler<'a, 'cache, S, C> +impl<'a, 'cache, S: StateReader, C: ContractClassCache> StarknetSyscallHandler + for &mut NativeSyscallHandler<'a, 'cache, S, C> { fn get_block_hash( &mut self, @@ -528,8 +528,8 @@ impl<'a, 'cache, S: StateReader, C: ContractClassCache> StarkNetSyscallHandler }); } tip = fields.tip as u128; - paymaster_data = fields.paymaster_data.clone(); - account_deployment_data = fields.account_deployment_data.clone(); + paymaster_data.clone_from(&fields.paymaster_data); + account_deployment_data.clone_from(&fields.account_deployment_data); nonce_data_availability_mode = fields.nonce_data_availability_mode.into(); fee_data_availability_mode = fields.fee_data_availability_mode.into(); } @@ -568,18 +568,18 @@ impl<'a, 'cache, S: StateReader, C: ContractClassCache> StarkNetSyscallHandler &mut self, x: U256, y: U256, - _gas: &mut u128, + _remaining_gas: &mut u128, ) -> SyscallResult> { // The following unwraps should be unreachable because the iterator we provide has the // expected number of bytes. let point = k256::ProjectivePoint::from_encoded_point( &k256::EncodedPoint::from_affine_coordinates( &GenericArray::from_exact_iter( - x.hi.to_be_bytes().into_iter().chain(x.lo.to_be_bytes()), + x.lo.to_be_bytes().into_iter().chain(x.hi.to_be_bytes()), ) .unwrap(), &GenericArray::from_exact_iter( - y.hi.to_be_bytes().into_iter().chain(y.lo.to_be_bytes()), + y.lo.to_be_bytes().into_iter().chain(y.hi.to_be_bytes()), ) .unwrap(), false, @@ -597,7 +597,7 @@ impl<'a, 'cache, S: StateReader, C: ContractClassCache> StarkNetSyscallHandler &mut self, p0: Secp256k1Point, p1: Secp256k1Point, - _gas: &mut u128, + _remaining_gas: &mut u128, ) -> SyscallResult { // The inner unwraps should be unreachable because the iterator we provide has the expected // number of bytes. The outer unwraps depend on the felt values, which should be valid since @@ -605,17 +605,17 @@ impl<'a, 'cache, S: StateReader, C: ContractClassCache> StarkNetSyscallHandler let p0 = k256::ProjectivePoint::from_encoded_point( &k256::EncodedPoint::from_affine_coordinates( &GenericArray::from_exact_iter( - p0.x.hi + p0.x.lo .to_be_bytes() .into_iter() - .chain(p0.x.lo.to_be_bytes()), + .chain(p0.x.hi.to_be_bytes()), ) .unwrap(), &GenericArray::from_exact_iter( - p0.y.hi + p0.y.lo .to_be_bytes() .into_iter() - .chain(p0.y.lo.to_be_bytes()), + .chain(p0.y.hi.to_be_bytes()), ) .unwrap(), false, @@ -625,17 +625,17 @@ impl<'a, 'cache, S: StateReader, C: ContractClassCache> StarkNetSyscallHandler let p1 = k256::ProjectivePoint::from_encoded_point( &k256::EncodedPoint::from_affine_coordinates( &GenericArray::from_exact_iter( - p1.x.hi + p1.x.lo .to_be_bytes() .into_iter() - .chain(p1.x.lo.to_be_bytes()), + .chain(p1.x.hi.to_be_bytes()), ) .unwrap(), &GenericArray::from_exact_iter( - p1.y.hi + p1.y.lo .to_be_bytes() .into_iter() - .chain(p1.y.lo.to_be_bytes()), + .chain(p1.y.hi.to_be_bytes()), ) .unwrap(), false, @@ -661,12 +661,12 @@ impl<'a, 'cache, S: StateReader, C: ContractClassCache> StarkNetSyscallHandler let y: [u8; 32] = y.as_slice().try_into().unwrap(); Ok(Secp256k1Point { x: U256 { - hi: u128::from_be_bytes(x[0..16].try_into().unwrap()), - lo: u128::from_be_bytes(x[16..32].try_into().unwrap()), + lo: u128::from_be_bytes(x[0..16].try_into().unwrap()), + hi: u128::from_be_bytes(x[16..32].try_into().unwrap()), }, y: U256 { - hi: u128::from_be_bytes(y[0..16].try_into().unwrap()), - lo: u128::from_be_bytes(y[16..32].try_into().unwrap()), + lo: u128::from_be_bytes(y[0..16].try_into().unwrap()), + hi: u128::from_be_bytes(y[16..32].try_into().unwrap()), }, }) } @@ -675,7 +675,7 @@ impl<'a, 'cache, S: StateReader, C: ContractClassCache> StarkNetSyscallHandler &mut self, p: Secp256k1Point, m: U256, - _gas: &mut u128, + _remaining_gas: &mut u128, ) -> SyscallResult { // The inner unwrap should be unreachable because the iterator we provide has the expected // number of bytes. The outer unwrap depends on the felt values, which should be valid since @@ -683,11 +683,11 @@ impl<'a, 'cache, S: StateReader, C: ContractClassCache> StarkNetSyscallHandler let p = k256::ProjectivePoint::from_encoded_point( &k256::EncodedPoint::from_affine_coordinates( &GenericArray::from_exact_iter( - p.x.hi.to_be_bytes().into_iter().chain(p.x.lo.to_be_bytes()), + p.x.lo.to_be_bytes().into_iter().chain(p.x.hi.to_be_bytes()), ) .unwrap(), &GenericArray::from_exact_iter( - p.y.hi.to_be_bytes().into_iter().chain(p.y.lo.to_be_bytes()), + p.y.lo.to_be_bytes().into_iter().chain(p.y.hi.to_be_bytes()), ) .unwrap(), false, @@ -696,8 +696,8 @@ impl<'a, 'cache, S: StateReader, C: ContractClassCache> StarkNetSyscallHandler .unwrap(); let m: k256::Scalar = k256::elliptic_curve::ScalarPrimitive::from_slice(&{ let mut buf = [0u8; 32]; - buf[0..16].copy_from_slice(&m.hi.to_be_bytes()); - buf[16..32].copy_from_slice(&m.lo.to_be_bytes()); + buf[0..16].copy_from_slice(&m.lo.to_be_bytes()); + buf[16..32].copy_from_slice(&m.hi.to_be_bytes()); buf }) .map_err(|_| { @@ -725,12 +725,12 @@ impl<'a, 'cache, S: StateReader, C: ContractClassCache> StarkNetSyscallHandler let y: [u8; 32] = y.as_slice().try_into().unwrap(); Ok(Secp256k1Point { x: U256 { - hi: u128::from_be_bytes(x[0..16].try_into().unwrap()), - lo: u128::from_be_bytes(x[16..32].try_into().unwrap()), + lo: u128::from_be_bytes(x[0..16].try_into().unwrap()), + hi: u128::from_be_bytes(x[16..32].try_into().unwrap()), }, y: U256 { - hi: u128::from_be_bytes(y[0..16].try_into().unwrap()), - lo: u128::from_be_bytes(y[16..32].try_into().unwrap()), + lo: u128::from_be_bytes(y[0..16].try_into().unwrap()), + hi: u128::from_be_bytes(y[16..32].try_into().unwrap()), }, }) } @@ -739,7 +739,7 @@ impl<'a, 'cache, S: StateReader, C: ContractClassCache> StarkNetSyscallHandler &mut self, x: U256, y_parity: bool, - _gas: &mut u128, + _remaining_gas: &mut u128, ) -> SyscallResult> { // The inner unwrap should be unreachable because the iterator we provide has the expected // number of bytes. The outer unwrap depends on the encoding format, which should be valid @@ -748,8 +748,8 @@ impl<'a, 'cache, S: StateReader, C: ContractClassCache> StarkNetSyscallHandler &k256::EncodedPoint::from_bytes( k256::CompressedPoint::from_exact_iter( once(0x02 | y_parity as u8) - .chain(x.hi.to_be_bytes()) - .chain(x.lo.to_be_bytes()), + .chain(x.lo.to_be_bytes()) + .chain(x.hi.to_be_bytes()), ) .unwrap(), ) @@ -777,8 +777,8 @@ impl<'a, 'cache, S: StateReader, C: ContractClassCache> StarkNetSyscallHandler Ok(Some(Secp256k1Point { x, y: U256 { - hi: u128::from_be_bytes(y[0..16].try_into().unwrap()), - lo: u128::from_be_bytes(y[16..32].try_into().unwrap()), + lo: u128::from_be_bytes(y[0..16].try_into().unwrap()), + hi: u128::from_be_bytes(y[16..32].try_into().unwrap()), }, })) } else { @@ -789,7 +789,7 @@ impl<'a, 'cache, S: StateReader, C: ContractClassCache> StarkNetSyscallHandler fn secp256k1_get_xy( &mut self, p: Secp256k1Point, - _gas: &mut u128, + _remaining_gas: &mut u128, ) -> SyscallResult<(U256, U256)> { Ok((p.x, p.y)) } @@ -798,18 +798,18 @@ impl<'a, 'cache, S: StateReader, C: ContractClassCache> StarkNetSyscallHandler &mut self, x: U256, y: U256, - _gas: &mut u128, + _remaining_gas: &mut u128, ) -> SyscallResult> { // The following unwraps should be unreachable because the iterator we provide has the // expected number of bytes. let point = p256::ProjectivePoint::from_encoded_point( &k256::EncodedPoint::from_affine_coordinates( &GenericArray::from_exact_iter( - x.hi.to_be_bytes().into_iter().chain(x.lo.to_be_bytes()), + x.lo.to_be_bytes().into_iter().chain(x.hi.to_be_bytes()), ) .unwrap(), &GenericArray::from_exact_iter( - y.hi.to_be_bytes().into_iter().chain(y.lo.to_be_bytes()), + y.lo.to_be_bytes().into_iter().chain(y.hi.to_be_bytes()), ) .unwrap(), false, @@ -827,7 +827,7 @@ impl<'a, 'cache, S: StateReader, C: ContractClassCache> StarkNetSyscallHandler &mut self, p0: Secp256r1Point, p1: Secp256r1Point, - _gas: &mut u128, + _remaining_gas: &mut u128, ) -> SyscallResult { // The inner unwraps should be unreachable because the iterator we provide has the expected // number of bytes. The outer unwraps depend on the felt values, which should be valid since @@ -835,17 +835,17 @@ impl<'a, 'cache, S: StateReader, C: ContractClassCache> StarkNetSyscallHandler let p0 = p256::ProjectivePoint::from_encoded_point( &p256::EncodedPoint::from_affine_coordinates( &GenericArray::from_exact_iter( - p0.x.hi + p0.x.lo .to_be_bytes() .into_iter() - .chain(p0.x.lo.to_be_bytes()), + .chain(p0.x.hi.to_be_bytes()), ) .unwrap(), &GenericArray::from_exact_iter( - p0.y.hi + p0.y.lo .to_be_bytes() .into_iter() - .chain(p0.y.lo.to_be_bytes()), + .chain(p0.y.hi.to_be_bytes()), ) .unwrap(), false, @@ -855,17 +855,17 @@ impl<'a, 'cache, S: StateReader, C: ContractClassCache> StarkNetSyscallHandler let p1 = p256::ProjectivePoint::from_encoded_point( &p256::EncodedPoint::from_affine_coordinates( &GenericArray::from_exact_iter( - p1.x.hi + p1.x.lo .to_be_bytes() .into_iter() - .chain(p1.x.lo.to_be_bytes()), + .chain(p1.x.hi.to_be_bytes()), ) .unwrap(), &GenericArray::from_exact_iter( - p1.y.hi + p1.y.lo .to_be_bytes() .into_iter() - .chain(p1.y.lo.to_be_bytes()), + .chain(p1.y.hi.to_be_bytes()), ) .unwrap(), false, @@ -891,12 +891,12 @@ impl<'a, 'cache, S: StateReader, C: ContractClassCache> StarkNetSyscallHandler let y: [u8; 32] = y.as_slice().try_into().unwrap(); Ok(Secp256r1Point { x: U256 { - hi: u128::from_be_bytes(x[0..16].try_into().unwrap()), - lo: u128::from_be_bytes(x[16..32].try_into().unwrap()), + lo: u128::from_be_bytes(x[0..16].try_into().unwrap()), + hi: u128::from_be_bytes(x[16..32].try_into().unwrap()), }, y: U256 { - hi: u128::from_be_bytes(y[0..16].try_into().unwrap()), - lo: u128::from_be_bytes(y[16..32].try_into().unwrap()), + lo: u128::from_be_bytes(y[0..16].try_into().unwrap()), + hi: u128::from_be_bytes(y[16..32].try_into().unwrap()), }, }) } @@ -905,7 +905,7 @@ impl<'a, 'cache, S: StateReader, C: ContractClassCache> StarkNetSyscallHandler &mut self, p: Secp256r1Point, m: U256, - _gas: &mut u128, + _remaining_gas: &mut u128, ) -> SyscallResult { // The inner unwrap should be unreachable because the iterator we provide has the expected // number of bytes. The outer unwrap depends on the felt values, which should be valid since @@ -913,11 +913,11 @@ impl<'a, 'cache, S: StateReader, C: ContractClassCache> StarkNetSyscallHandler let p = p256::ProjectivePoint::from_encoded_point( &p256::EncodedPoint::from_affine_coordinates( &GenericArray::from_exact_iter( - p.x.hi.to_be_bytes().into_iter().chain(p.x.lo.to_be_bytes()), + p.x.lo.to_be_bytes().into_iter().chain(p.x.hi.to_be_bytes()), ) .unwrap(), &GenericArray::from_exact_iter( - p.y.hi.to_be_bytes().into_iter().chain(p.y.lo.to_be_bytes()), + p.y.lo.to_be_bytes().into_iter().chain(p.y.hi.to_be_bytes()), ) .unwrap(), false, @@ -926,8 +926,8 @@ impl<'a, 'cache, S: StateReader, C: ContractClassCache> StarkNetSyscallHandler .unwrap(); let m: p256::Scalar = p256::elliptic_curve::ScalarPrimitive::from_slice(&{ let mut buf = [0u8; 32]; - buf[0..16].copy_from_slice(&m.hi.to_be_bytes()); - buf[16..32].copy_from_slice(&m.lo.to_be_bytes()); + buf[0..16].copy_from_slice(&m.lo.to_be_bytes()); + buf[16..32].copy_from_slice(&m.hi.to_be_bytes()); buf }) .map_err(|_| { @@ -938,7 +938,6 @@ impl<'a, 'cache, S: StateReader, C: ContractClassCache> StarkNetSyscallHandler .into(); let p = p * m; - let p = p.to_encoded_point(false); let (x, y) = match p.coordinates() { Coordinates::Uncompressed { x, y } => (x, y), @@ -955,12 +954,12 @@ impl<'a, 'cache, S: StateReader, C: ContractClassCache> StarkNetSyscallHandler let y: [u8; 32] = y.as_slice().try_into().unwrap(); Ok(Secp256r1Point { x: U256 { - hi: u128::from_be_bytes(x[0..16].try_into().unwrap()), - lo: u128::from_be_bytes(x[16..32].try_into().unwrap()), + lo: u128::from_be_bytes(x[0..16].try_into().unwrap()), + hi: u128::from_be_bytes(x[16..32].try_into().unwrap()), }, y: U256 { - hi: u128::from_be_bytes(y[0..16].try_into().unwrap()), - lo: u128::from_be_bytes(y[16..32].try_into().unwrap()), + lo: u128::from_be_bytes(y[0..16].try_into().unwrap()), + hi: u128::from_be_bytes(y[16..32].try_into().unwrap()), }, }) } @@ -969,14 +968,14 @@ impl<'a, 'cache, S: StateReader, C: ContractClassCache> StarkNetSyscallHandler &mut self, x: U256, y_parity: bool, - _gas: &mut u128, + _remaining_gas: &mut u128, ) -> SyscallResult> { let point = p256::ProjectivePoint::from_encoded_point( &p256::EncodedPoint::from_bytes( p256::CompressedPoint::from_exact_iter( once(0x02 | y_parity as u8) - .chain(x.hi.to_be_bytes()) - .chain(x.lo.to_be_bytes()), + .chain(x.lo.to_be_bytes()) + .chain(x.hi.to_be_bytes()), ) .unwrap(), ) @@ -996,8 +995,8 @@ impl<'a, 'cache, S: StateReader, C: ContractClassCache> StarkNetSyscallHandler Ok(Some(Secp256r1Point { x, y: U256 { - hi: u128::from_be_bytes(y[0..16].try_into().unwrap()), - lo: u128::from_be_bytes(y[16..32].try_into().unwrap()), + lo: u128::from_be_bytes(y[0..16].try_into().unwrap()), + hi: u128::from_be_bytes(y[16..32].try_into().unwrap()), }, })) } else { @@ -1008,68 +1007,10 @@ impl<'a, 'cache, S: StateReader, C: ContractClassCache> StarkNetSyscallHandler fn secp256r1_get_xy( &mut self, p: Secp256r1Point, - _gas: &mut u128, + _remaining_gas: &mut u128, ) -> SyscallResult<(U256, U256)> { Ok((p.x, p.y)) } - - fn pop_log(&mut self) { - todo!() - } - - fn set_account_contract_address(&mut self, contract_address: Felt252) { - self.tx_execution_context.account_contract_address = Address(contract_address); - } - - fn set_block_number(&mut self, block_number: u64) { - self.block_context.block_info.block_number = block_number; - } - - fn set_block_timestamp(&mut self, block_timestamp: u64) { - self.block_context.block_info.block_timestamp = block_timestamp; - } - - fn set_caller_address(&mut self, address: Felt252) { - self.caller_address = Address(address); - } - - fn set_chain_id(&mut self, chain_id: Felt252) { - self.block_context.starknet_os_config.chain_id = chain_id; - } - - fn set_contract_address(&mut self, address: Felt252) { - self.contract_address = Address(address); - } - - fn set_max_fee(&mut self, max_fee: u128) { - if matches!( - self.tx_execution_context.account_tx_fields, - VersionSpecificAccountTxFields::Deprecated(_) - ) { - self.tx_execution_context.account_tx_fields = - VersionSpecificAccountTxFields::new_deprecated(max_fee) - }; - } - - fn set_nonce(&mut self, nonce: Felt252) { - self.tx_execution_context.nonce = nonce; - } - - fn set_sequencer_address(&mut self, _address: Felt252) { - todo!() - } - - fn set_signature(&mut self, signature: &[Felt252]) { - self.tx_execution_context.signature = signature.to_vec(); - } - - fn set_transaction_hash(&mut self, transaction_hash: Felt252) { - self.tx_execution_context.transaction_hash = transaction_hash; - } - - fn set_version(&mut self, version: Felt252) { - self.tx_execution_context.version = version; - } } impl<'a, 'cache, S, C> NativeSyscallHandler<'a, 'cache, S, C> @@ -1276,291 +1217,301 @@ mod test { fn secp256k1_new() { let mut test_ctx = TestContext::default(); let mut syscall_handler = test_ctx.new_syscall_handler(); + let mut syscall_handler = &mut syscall_handler; let mut gas = 0; let p = syscall_handler .secp256k1_new( U256 { - hi: 0, - lo: 0x6d921cc3a0edd, + lo: 0, + hi: 0x6d921cc3a0edd, }, U256 { - hi: 0xb7f551d9700e05d0979e993163abc1e2, - lo: 0xa46c825e7de30402be99422be4d4032a, + lo: 0xb7f551d9700e05d0979e993163abc1e2, + hi: 0xa46c825e7de30402be99422be4d4032a, }, &mut gas, ) .unwrap() .unwrap(); - assert_eq!(p.x.hi, 0); - assert_eq!(p.x.lo, 0x6d921cc3a0edd); - assert_eq!(p.y.hi, 0xb7f551d9700e05d0979e993163abc1e2); - assert_eq!(p.y.lo, 0xa46c825e7de30402be99422be4d4032a); + assert_eq!(p.x.lo, 0); + assert_eq!(p.x.hi, 0x6d921cc3a0edd); + assert_eq!(p.y.lo, 0xb7f551d9700e05d0979e993163abc1e2); + assert_eq!(p.y.hi, 0xa46c825e7de30402be99422be4d4032a); } #[test] fn secp256k1_add() { let mut test_ctx = TestContext::default(); let mut syscall_handler = test_ctx.new_syscall_handler(); + let mut syscall_handler = &mut syscall_handler; let mut gas = 0; let p = syscall_handler .secp256k1_add( Secp256k1Point { x: U256 { - hi: 0, - lo: 0x6d921cc3a0edd, + lo: 0, + hi: 0x6d921cc3a0edd, }, y: U256 { - hi: 0xb7f551d9700e05d0979e993163abc1e2, - lo: 0xa46c825e7de30402be99422be4d4032a, + lo: 0xb7f551d9700e05d0979e993163abc1e2, + hi: 0xa46c825e7de30402be99422be4d4032a, }, }, Secp256k1Point { x: U256 { - hi: 0, - lo: 0x6d921cc3a0edd, + lo: 0, + hi: 0x6d921cc3a0edd, }, y: U256 { - hi: 0xb7f551d9700e05d0979e993163abc1e2, - lo: 0xa46c825e7de30402be99422be4d4032a, + lo: 0xb7f551d9700e05d0979e993163abc1e2, + hi: 0xa46c825e7de30402be99422be4d4032a, }, }, &mut gas, ) .unwrap(); - assert_eq!(p.x.hi, 0x517455bb91f3fa3e97fa7bc38c922808); - assert_eq!(p.x.lo, 0xd00aff7b006af92bf118ae3ca4565898); - assert_eq!(p.y.hi, 0x783f0ba4eff238a1d67b4afc0f203095); - assert_eq!(p.y.lo, 0x4a67fed3709e9a8fc799fd55b8701b0c); + assert_eq!(p.x.lo, 0x517455bb91f3fa3e97fa7bc38c922808); + assert_eq!(p.x.hi, 0xd00aff7b006af92bf118ae3ca4565898); + assert_eq!(p.y.lo, 0x783f0ba4eff238a1d67b4afc0f203095); + assert_eq!(p.y.hi, 0x4a67fed3709e9a8fc799fd55b8701b0c); } #[test] fn secp256k1_mul() { let mut test_ctx = TestContext::default(); let mut syscall_handler = test_ctx.new_syscall_handler(); + let mut syscall_handler = &mut syscall_handler; let mut gas = 0; let p = syscall_handler .secp256k1_mul( Secp256k1Point { x: U256 { - hi: 0, - lo: 0x6d921cc3a0edd, + lo: 0, + hi: 0x6d921cc3a0edd, }, y: U256 { - hi: 0xb7f551d9700e05d0979e993163abc1e2, - lo: 0xa46c825e7de30402be99422be4d4032a, + lo: 0xb7f551d9700e05d0979e993163abc1e2, + hi: 0xa46c825e7de30402be99422be4d4032a, }, }, U256 { - hi: 0, - lo: 0xa46c825e7de30402be99422be4d4032a, + lo: 0, + hi: 0xa46c825e7de30402be99422be4d4032a, }, &mut gas, ) .unwrap(); - assert_eq!(p.x.hi, 0xf040ddde809857907bfd2f0236a0aca7); - assert_eq!(p.x.lo, 0x43a58b0924199ac714383765c011812c); - assert_eq!(p.y.hi, 0xaae02eaf3c58415a5daeccdeea05bd6a); - assert_eq!(p.y.lo, 0xf27938618d56e68e01b4d473b3ebff63); + assert_eq!(p.x.lo, 0xf040ddde809857907bfd2f0236a0aca7); + assert_eq!(p.x.hi, 0x43a58b0924199ac714383765c011812c); + assert_eq!(p.y.lo, 0xaae02eaf3c58415a5daeccdeea05bd6a); + assert_eq!(p.y.hi, 0xf27938618d56e68e01b4d473b3ebff63); } #[test] fn secp256k1_get_point_from_x() { let mut test_ctx = TestContext::default(); let mut syscall_handler = test_ctx.new_syscall_handler(); + let mut syscall_handler = &mut syscall_handler; let mut gas = 0; let p = syscall_handler .secp256k1_get_point_from_x( U256 { - hi: 0, - lo: 0x6d921cc3a0edd, + lo: 0, + hi: 0x6d921cc3a0edd, }, false, &mut gas, ) .unwrap() .unwrap(); - assert_eq!(p.x.hi, 0); - assert_eq!(p.x.lo, 0x6d921cc3a0edd); - assert_eq!(p.y.hi, 0xb7f551d9700e05d0979e993163abc1e2); - assert_eq!(p.y.lo, 0xa46c825e7de30402be99422be4d4032a); + assert_eq!(p.x.lo, 0); + assert_eq!(p.x.hi, 0x6d921cc3a0edd); + assert_eq!(p.y.lo, 0xb7f551d9700e05d0979e993163abc1e2); + assert_eq!(p.y.hi, 0xa46c825e7de30402be99422be4d4032a); } #[test] fn secp256k1_get_xy() { let mut test_ctx = TestContext::default(); let mut syscall_handler = test_ctx.new_syscall_handler(); + let mut syscall_handler = &mut syscall_handler; let mut gas = 0; let (x, y) = syscall_handler .secp256k1_get_xy( Secp256k1Point { x: U256 { - hi: 0, - lo: 0x6d921cc3a0edd, + lo: 0, + hi: 0x6d921cc3a0edd, }, y: U256 { - hi: 0xb7f551d9700e05d0979e993163abc1e2, - lo: 0xa46c825e7de30402be99422be4d4032a, + lo: 0xb7f551d9700e05d0979e993163abc1e2, + hi: 0xa46c825e7de30402be99422be4d4032a, }, }, &mut gas, ) .unwrap(); - assert_eq!(x.hi, 0); - assert_eq!(x.lo, 0x6d921cc3a0edd); - assert_eq!(y.hi, 0xb7f551d9700e05d0979e993163abc1e2); - assert_eq!(y.lo, 0xa46c825e7de30402be99422be4d4032a); + assert_eq!(x.lo, 0); + assert_eq!(x.hi, 0x6d921cc3a0edd); + assert_eq!(y.lo, 0xb7f551d9700e05d0979e993163abc1e2); + assert_eq!(y.hi, 0xa46c825e7de30402be99422be4d4032a); } #[test] fn secp256r1_new() { let mut test_ctx = TestContext::default(); let mut syscall_handler = test_ctx.new_syscall_handler(); + let mut syscall_handler = &mut syscall_handler; let mut gas = 0; let p = syscall_handler .secp256r1_new( U256 { - hi: 0, - lo: 0x6d921cc3a0edd, + lo: 0, + hi: 0x6d921cc3a0edd, }, U256 { - hi: 0xd9119d47792367d7d9333941abd39cd5, - lo: 0xe6152655e4230f0cb905fd549eb5f7d2, + lo: 0xd9119d47792367d7d9333941abd39cd5, + hi: 0xe6152655e4230f0cb905fd549eb5f7d2, }, &mut gas, ) .unwrap() .unwrap(); - assert_eq!(p.x.hi, 0); - assert_eq!(p.x.lo, 0x6d921cc3a0edd); - assert_eq!(p.y.hi, 0xd9119d47792367d7d9333941abd39cd5); - assert_eq!(p.y.lo, 0xe6152655e4230f0cb905fd549eb5f7d2); + assert_eq!(p.x.lo, 0); + assert_eq!(p.x.hi, 0x6d921cc3a0edd); + assert_eq!(p.y.lo, 0xd9119d47792367d7d9333941abd39cd5); + assert_eq!(p.y.hi, 0xe6152655e4230f0cb905fd549eb5f7d2); } #[test] fn secp256r1_add() { let mut test_ctx = TestContext::default(); let mut syscall_handler = test_ctx.new_syscall_handler(); + let mut syscall_handler = &mut syscall_handler; let mut gas = 0; let p = syscall_handler .secp256r1_add( Secp256r1Point { x: U256 { - hi: 0, - lo: 0x6d921cc3a0edd, + lo: 0, + hi: 0x6d921cc3a0edd, }, y: U256 { - hi: 0xd9119d47792367d7d9333941abd39cd5, - lo: 0xe6152655e4230f0cb905fd549eb5f7d2, + lo: 0xd9119d47792367d7d9333941abd39cd5, + hi: 0xe6152655e4230f0cb905fd549eb5f7d2, }, }, Secp256r1Point { x: U256 { - hi: 0, - lo: 0x6d921cc3a0edd, + lo: 0, + hi: 0x6d921cc3a0edd, }, y: U256 { - hi: 0xd9119d47792367d7d9333941abd39cd5, - lo: 0xe6152655e4230f0cb905fd549eb5f7d2, + lo: 0xd9119d47792367d7d9333941abd39cd5, + hi: 0xe6152655e4230f0cb905fd549eb5f7d2, }, }, &mut gas, ) .unwrap(); - assert_eq!(p.x.hi, 0x9fe25a0c399b16a4709557a5031fb25c); - assert_eq!(p.x.lo, 0x8fb69432718f1933ef8b61c5b57c3e57); - assert_eq!(p.y.hi, 0x5ba485aea97f150919109745af2bf644); - assert_eq!(p.y.lo, 0x1d00013db17f1f1862ef5462d62f7fe8); + assert_eq!(p.x.lo, 0x9fe25a0c399b16a4709557a5031fb25c); + assert_eq!(p.x.hi, 0x8fb69432718f1933ef8b61c5b57c3e57); + assert_eq!(p.y.lo, 0x5ba485aea97f150919109745af2bf644); + assert_eq!(p.y.hi, 0x1d00013db17f1f1862ef5462d62f7fe8); } #[test] fn secp256r1_mul() { let mut test_ctx = TestContext::default(); let mut syscall_handler = test_ctx.new_syscall_handler(); + let mut syscall_handler = &mut syscall_handler; let mut gas = 0; let p = syscall_handler .secp256r1_mul( Secp256r1Point { x: U256 { - hi: 0, - lo: 0x6d921cc3a0edd, + lo: 0, + hi: 0x6d921cc3a0edd, }, y: U256 { - hi: 0xd9119d47792367d7d9333941abd39cd5, - lo: 0xe6152655e4230f0cb905fd549eb5f7d2, + lo: 0xd9119d47792367d7d9333941abd39cd5, + hi: 0xe6152655e4230f0cb905fd549eb5f7d2, }, }, U256 { - hi: 0, - lo: 0xa46c825e7de30402be99422be4d4032a, + lo: 0, + hi: 0xa46c825e7de30402be99422be4d4032a, }, &mut gas, ) .unwrap(); - assert_eq!(p.x.hi, 0x4b34ef65707b6a8e369879aaee576c2c); - assert_eq!(p.x.lo, 0x3f1579c6bb240409fcd7b96311e81b07); - assert_eq!(p.y.hi, 0xf3bf5221ac6f4363287f9c34c706026f); - assert_eq!(p.y.lo, 0x4458cbd0a9af49eb5526765ba31fad15); + assert_eq!(p.x.lo, 0x4b34ef65707b6a8e369879aaee576c2c); + assert_eq!(p.x.hi, 0x3f1579c6bb240409fcd7b96311e81b07); + assert_eq!(p.y.lo, 0xf3bf5221ac6f4363287f9c34c706026f); + assert_eq!(p.y.hi, 0x4458cbd0a9af49eb5526765ba31fad15); } #[test] fn secp256r1_get_point_from_x() { let mut test_ctx = TestContext::default(); let mut syscall_handler = test_ctx.new_syscall_handler(); + let mut syscall_handler = &mut syscall_handler; let mut gas = 0; let p = syscall_handler .secp256r1_get_point_from_x( U256 { - hi: 0, - lo: 0x6d921cc3a0edd, + lo: 0, + hi: 0x6d921cc3a0edd, }, false, &mut gas, ) .unwrap() .unwrap(); - assert_eq!(p.x.hi, 0); - assert_eq!(p.x.lo, 0x6d921cc3a0edd); - assert_eq!(p.y.hi, 0xd9119d47792367d7d9333941abd39cd5); - assert_eq!(p.y.lo, 0xe6152655e4230f0cb905fd549eb5f7d2); + assert_eq!(p.x.lo, 0); + assert_eq!(p.x.hi, 0x6d921cc3a0edd); + assert_eq!(p.y.lo, 0xd9119d47792367d7d9333941abd39cd5); + assert_eq!(p.y.hi, 0xe6152655e4230f0cb905fd549eb5f7d2); } #[test] fn secp256r1_get_xy() { let mut test_ctx = TestContext::default(); let mut syscall_handler = test_ctx.new_syscall_handler(); + let mut syscall_handler = &mut syscall_handler; let mut gas = 0; let (x, y) = syscall_handler .secp256r1_get_xy( Secp256r1Point { x: U256 { - hi: 0, - lo: 0x6d921cc3a0edd, + lo: 0, + hi: 0x6d921cc3a0edd, }, y: U256 { - hi: 0xd9119d47792367d7d9333941abd39cd5, - lo: 0xe6152655e4230f0cb905fd549eb5f7d2, + lo: 0xd9119d47792367d7d9333941abd39cd5, + hi: 0xe6152655e4230f0cb905fd549eb5f7d2, }, }, &mut gas, ) .unwrap(); - assert_eq!(x.hi, 0); - assert_eq!(x.lo, 0x6d921cc3a0edd); - assert_eq!(y.hi, 0xd9119d47792367d7d9333941abd39cd5); - assert_eq!(y.lo, 0xe6152655e4230f0cb905fd549eb5f7d2); + assert_eq!(x.lo, 0); + assert_eq!(x.hi, 0x6d921cc3a0edd); + assert_eq!(y.lo, 0xd9119d47792367d7d9333941abd39cd5); + assert_eq!(y.hi, 0xe6152655e4230f0cb905fd549eb5f7d2); } } diff --git a/src/syscalls/syscall_handler.rs b/src/syscalls/syscall_handler.rs index cb19da701..92cfb2539 100644 --- a/src/syscalls/syscall_handler.rs +++ b/src/syscalls/syscall_handler.rs @@ -44,7 +44,7 @@ impl<'a, S: StateReader, C: ContractClassCache> SyscallHintProcessor<'a, S, C> { run_resources: RunResources, ) -> Self { SyscallHintProcessor { - cairo1_hint_processor: Cairo1HintProcessor::new(hints, run_resources.clone()), + cairo1_hint_processor: Cairo1HintProcessor::new(hints, run_resources.clone(), false), syscall_handler, run_resources, } diff --git a/src/syscalls/syscall_request.rs b/src/syscalls/syscall_request.rs index fe07e6479..a29a886a2 100644 --- a/src/syscalls/syscall_request.rs +++ b/src/syscalls/syscall_request.rs @@ -304,9 +304,9 @@ impl FromPtr for EmitEventRequest { syscall_ptr: Relocatable, ) -> Result { let keys_start = get_relocatable(vm, syscall_ptr)?; - let keys_end = get_relocatable(vm, &syscall_ptr + 1)?; - let data_start = get_relocatable(vm, &syscall_ptr + 2)?; - let data_end = get_relocatable(vm, &syscall_ptr + 3)?; + let keys_end = get_relocatable(vm, (syscall_ptr + 1)?)?; + let data_start = get_relocatable(vm, (syscall_ptr + 2)?)?; + let data_end = get_relocatable(vm, (syscall_ptr + 3)?)?; Ok(EmitEventRequest { keys_start, @@ -324,7 +324,7 @@ impl FromPtr for StorageReadRequest { syscall_ptr: Relocatable, ) -> Result { let reserved = get_big_int(vm, syscall_ptr)?; - let key = get_big_int(vm, &syscall_ptr + 1)?.to_bytes_be(); + let key = get_big_int(vm, (syscall_ptr + 1)?)?.to_bytes_be(); Ok(StorageReadRequest { key, reserved }.into()) } } @@ -356,9 +356,9 @@ impl FromPtr for CallContractRequest { syscall_ptr: Relocatable, ) -> Result { let contract_address = Address(get_big_int(vm, syscall_ptr)?); - let selector = get_big_int(vm, &syscall_ptr + 1)?; - let calldata_start = get_relocatable(vm, &syscall_ptr + 2)?; - let calldata_end = get_relocatable(vm, &syscall_ptr + 3)?; + let selector = get_big_int(vm, (syscall_ptr + 1)?)?; + let calldata_start = get_relocatable(vm, (syscall_ptr + 2)?)?; + let calldata_end = get_relocatable(vm, (syscall_ptr + 3)?)?; Ok(CallContractRequest { selector, contract_address, @@ -375,9 +375,9 @@ impl FromPtr for LibraryCallRequest { syscall_ptr: Relocatable, ) -> Result { let class_hash = get_big_int(vm, syscall_ptr)?; - let selector = get_big_int(vm, &syscall_ptr + 1)?; - let calldata_start = get_relocatable(vm, &syscall_ptr + 2)?; - let calldata_end = get_relocatable(vm, &syscall_ptr + 3)?; + let selector = get_big_int(vm, (syscall_ptr + 1)?)?; + let calldata_start = get_relocatable(vm, (syscall_ptr + 2)?)?; + let calldata_end = get_relocatable(vm, (syscall_ptr + 3)?)?; Ok(LibraryCallRequest { class_hash, @@ -395,8 +395,8 @@ impl FromPtr for SendMessageToL1Request { syscall_ptr: Relocatable, ) -> Result { let to_address = Address(get_big_int(vm, syscall_ptr)?); - let payload_start = get_relocatable(vm, &syscall_ptr + 1)?; - let payload_end = get_relocatable(vm, &syscall_ptr + 2)?; + let payload_start = get_relocatable(vm, (syscall_ptr + 1)?)?; + let payload_end = get_relocatable(vm, (syscall_ptr + 2)?)?; Ok(SendMessageToL1Request { to_address, @@ -413,8 +413,8 @@ impl FromPtr for StorageWriteRequest { syscall_ptr: Relocatable, ) -> Result { let reserved = get_big_int(vm, syscall_ptr)?; - let key = get_big_int(vm, &syscall_ptr + 1)?; - let value = get_big_int(vm, &syscall_ptr + 2)?; + let key = get_big_int(vm, (syscall_ptr + 1)?)?; + let value = get_big_int(vm, (syscall_ptr + 2)?)?; Ok(StorageWriteRequest { reserved, @@ -431,7 +431,7 @@ impl FromPtr for KeccakRequest { syscall_ptr: Relocatable, ) -> Result { let input_start = get_relocatable(vm, syscall_ptr)?; - let input_end = get_relocatable(vm, &syscall_ptr + 1)?; + let input_end = get_relocatable(vm, (syscall_ptr + 1)?)?; Ok(KeccakRequest { input_start, diff --git a/src/transaction/declare.rs b/src/transaction/declare.rs index 798283ac5..ca00f054a 100644 --- a/src/transaction/declare.rs +++ b/src/transaction/declare.rs @@ -32,8 +32,8 @@ use crate::{ }, utils::calculate_tx_resources, }; -use cairo_lang_starknet::casm_contract_class::CasmContractClass; -use cairo_lang_starknet::contract_class::ContractClass as SierraContractClass; +use cairo_lang_starknet_classes::casm_contract_class::CasmContractClass; +use cairo_lang_starknet_classes::contract_class::ContractClass as SierraContractClass; use cairo_vm::Felt252; use num_traits::Zero; use std::fmt::Debug; @@ -446,6 +446,7 @@ impl Declare { .clone() .ok_or(TransactionError::DeclareNoSierraOrCasm)?, true, + usize::MAX, // todo check if usize MAX is good here ) .map_err(|e| TransactionError::SierraCompileError(e.to_string()))?, Some(casm_contract_class) => casm_contract_class.clone(), @@ -545,7 +546,7 @@ impl Declare { if !execution_result .call_info .as_ref() - .map(|ci| ci.retdata == vec![*VALIDATE_RETDATA]) + .map(|ci| &ci.retdata == &vec![*VALIDATE_RETDATA]) .unwrap_or_default() { return Err(TransactionError::WrongValidateRetdata); @@ -612,7 +613,7 @@ mod tests { }, transaction::{Address, ClassHash}, }; - use cairo_lang_starknet::casm_contract_class::CasmContractClass; + use cairo_lang_starknet_classes::casm_contract_class::CasmContractClass; use cairo_vm::Felt252; use std::{fs::File, io::BufReader, path::PathBuf, sync::Arc}; @@ -625,11 +626,12 @@ mod tests { let file = File::open(path).unwrap(); let reader = BufReader::new(file); - let sierra_contract_class: cairo_lang_starknet::contract_class::ContractClass = + let sierra_contract_class: cairo_lang_starknet_classes::contract_class::ContractClass = serde_json::from_reader(reader).unwrap(); let sender_address = Address(1.into()); let casm_class = - CasmContractClass::from_contract_class(sierra_contract_class.clone(), true).unwrap(); + CasmContractClass::from_contract_class(sierra_contract_class.clone(), true, usize::MAX) + .unwrap(); let casm_class_hash = compute_casm_class_hash(&casm_class).unwrap(); // create declare @@ -659,6 +661,7 @@ mod tests { let expected_casm_class = CasmContractClass::from_contract_class( declare.sierra_contract_class.unwrap().clone(), true, + usize::MAX, ) .unwrap(); let declare_compiled_class_hash = ClassHash::from(declare.compiled_class_hash); @@ -681,11 +684,12 @@ mod tests { let file = File::open(path).unwrap(); let reader = BufReader::new(file); - let sierra_contract_class: cairo_lang_starknet::contract_class::ContractClass = + let sierra_contract_class: cairo_lang_starknet_classes::contract_class::ContractClass = serde_json::from_reader(reader).unwrap(); let sender_address = Address(1.into()); let casm_class = - CasmContractClass::from_contract_class(sierra_contract_class.clone(), true).unwrap(); + CasmContractClass::from_contract_class(sierra_contract_class.clone(), true, usize::MAX) + .unwrap(); let casm_class_hash = compute_casm_class_hash(&casm_class).unwrap(); // create declare @@ -712,9 +716,12 @@ mod tests { assert!(declare.compile_and_store_casm_class(&mut state).is_ok()); // test we can retreive the data - let expected_casm_class = - CasmContractClass::from_contract_class(declare.sierra_contract_class.unwrap(), true) - .unwrap(); + let expected_casm_class = CasmContractClass::from_contract_class( + declare.sierra_contract_class.unwrap(), + true, + usize::MAX, + ) + .unwrap(); let declare_compiled_class_hash = ClassHash::from(declare.compiled_class_hash); let casm_class = match state .get_contract_class(&declare_compiled_class_hash) @@ -735,12 +742,13 @@ mod tests { let file = File::open(path).unwrap(); let reader = BufReader::new(file); - let sierra_contract_class: cairo_lang_starknet::contract_class::ContractClass = + let sierra_contract_class: cairo_lang_starknet_classes::contract_class::ContractClass = serde_json::from_reader(reader).unwrap(); let sierra_class_hash = compute_sierra_class_hash(&sierra_contract_class).unwrap(); let sender_address = Address(1.into()); let casm_class = - CasmContractClass::from_contract_class(sierra_contract_class.clone(), true).unwrap(); + CasmContractClass::from_contract_class(sierra_contract_class.clone(), true, usize::MAX) + .unwrap(); let casm_class_hash = compute_casm_class_hash(&casm_class).unwrap(); // create declare tx @@ -768,9 +776,12 @@ mod tests { assert!(declare.compile_and_store_casm_class(&mut state).is_ok()); // test we can retreive the data - let expected_casm_class = - CasmContractClass::from_contract_class(declare.sierra_contract_class.unwrap(), true) - .unwrap(); + let expected_casm_class = CasmContractClass::from_contract_class( + declare.sierra_contract_class.unwrap(), + true, + usize::MAX, + ) + .unwrap(); let declare_compiled_class_hash = ClassHash::from(declare.compiled_class_hash); let casm_class = match state .get_contract_class(&declare_compiled_class_hash) @@ -791,11 +802,12 @@ mod tests { let file = File::open(path).unwrap(); let reader = BufReader::new(file); - let sierra_contract_class: cairo_lang_starknet::contract_class::ContractClass = + let sierra_contract_class: cairo_lang_starknet_classes::contract_class::ContractClass = serde_json::from_reader(reader).unwrap(); let sender_address = Address(1.into()); let casm_class = - CasmContractClass::from_contract_class(sierra_contract_class.clone(), true).unwrap(); + CasmContractClass::from_contract_class(sierra_contract_class.clone(), true, usize::MAX) + .unwrap(); let casm_class_hash = compute_casm_class_hash(&casm_class).unwrap(); // create declare tx @@ -825,6 +837,7 @@ mod tests { let expected_casm_class = CasmContractClass::from_contract_class( declare.sierra_contract_class.unwrap().clone(), true, + usize::MAX, ) .unwrap(); let declare_compiled_class_hash = ClassHash::from(declare.compiled_class_hash); @@ -847,11 +860,12 @@ mod tests { let file = File::open(path).unwrap(); let reader = BufReader::new(file); - let sierra_contract_class: cairo_lang_starknet::contract_class::ContractClass = + let sierra_contract_class: cairo_lang_starknet_classes::contract_class::ContractClass = serde_json::from_reader(reader).unwrap(); let sender_address = Address(1.into()); let casm_class = - CasmContractClass::from_contract_class(sierra_contract_class.clone(), true).unwrap(); + CasmContractClass::from_contract_class(sierra_contract_class.clone(), true, usize::MAX) + .unwrap(); let casm_class_hash = compute_casm_class_hash(&casm_class).unwrap(); let sended_class_hash = Felt252::from(5); @@ -893,7 +907,7 @@ mod tests { let path = PathBuf::from("starknet_programs/cairo2/fibonacci.sierra"); let file = File::open(path).unwrap(); let reader = BufReader::new(file); - let sierra_contract_class: cairo_lang_starknet::contract_class::ContractClass = + let sierra_contract_class: cairo_lang_starknet_classes::contract_class::ContractClass = serde_json::from_reader(reader).unwrap(); let chain_id = StarknetChainId::TestNet.to_felt(); diff --git a/src/transaction/deploy_account.rs b/src/transaction/deploy_account.rs index d09b98667..3d22dcb4d 100644 --- a/src/transaction/deploy_account.rs +++ b/src/transaction/deploy_account.rs @@ -512,7 +512,7 @@ impl DeployAccount { // return `VALID`. if !call_info .as_ref() - .map(|ci| ci.retdata == vec![*VALIDATE_RETDATA]) + .map(|ci| dbg!(&ci.retdata) == &vec![*VALIDATE_RETDATA]) .unwrap_or_default() { return Err(TransactionError::WrongValidateRetdata); diff --git a/src/transaction/invoke_function.rs b/src/transaction/invoke_function.rs index 892584cce..02b1245a7 100644 --- a/src/transaction/invoke_function.rs +++ b/src/transaction/invoke_function.rs @@ -297,7 +297,7 @@ impl InvokeFunction { // return `VALID`. if !call_info .as_ref() - .map(|ci| ci.retdata == vec![*VALIDATE_RETDATA]) + .map(|ci| &ci.retdata == &vec![*VALIDATE_RETDATA]) .unwrap_or_default() { return Err(TransactionError::WrongValidateRetdata); @@ -659,7 +659,7 @@ mod tests { transaction::ClassHash, utils::calculate_sn_keccak, }; - use cairo_lang_starknet::casm_contract_class::CasmContractClass; + use cairo_lang_starknet_classes::casm_contract_class::CasmContractClass; use pretty_assertions_sorted::{assert_eq, assert_eq_sorted}; use starknet_api::{ diff --git a/src/transaction/l1_handler.rs b/src/transaction/l1_handler.rs index ca9a7fe82..025ddcbcc 100644 --- a/src/transaction/l1_handler.rs +++ b/src/transaction/l1_handler.rs @@ -270,7 +270,9 @@ mod test { sync::Arc, }; - use cairo_vm::{vm::runners::cairo_runner::ExecutionResources, Felt252}; + use cairo_vm::{ + types::builtin_name::BuiltinName, vm::runners::cairo_runner::ExecutionResources, Felt252, + }; /// Test the correct execution of the L1Handler. #[test] @@ -363,8 +365,8 @@ mod test { n_steps: 141, n_memory_holes: 20, builtin_instance_counter: HashMap::from([ - ("range_check_builtin".to_string(), 6), - ("pedersen_builtin".to_string(), 2), + (BuiltinName::range_check, 6), + (BuiltinName::pedersen, 2), ]), }), events: vec![], diff --git a/src/transaction/mod.rs b/src/transaction/mod.rs index 58df5a425..2cf70f406 100644 --- a/src/transaction/mod.rs +++ b/src/transaction/mod.rs @@ -238,7 +238,7 @@ impl Transaction { } } - /// It creates a new transaction structure modificating the skip flags. It is meant to be used only to run a simulation + /// It creates a new transaction structure modifying the skip flags. It is meant to be used only to run a simulation ///## Parameters: ///- skip_validate: the transaction will not be verified. ///- skip_execute: the transaction will not be executed in the cairo vm. diff --git a/src/utils.rs b/src/utils.rs index ff64d2100..6fddc3489 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -12,8 +12,8 @@ use crate::{ syscalls::syscall_handler_errors::SyscallHandlerError, transaction::error::TransactionError, }; -use cairo_vm::vm::runners::builtin_runner::SEGMENT_ARENA_BUILTIN_NAME; -use cairo_vm::{serde::deserialize_program::BuiltinName, vm::runners::builtin_runner, Felt252}; +use cairo_vm::types::builtin_name::BuiltinName; +use cairo_vm::Felt252; use cairo_vm::{types::relocatable::Relocatable, vm::vm_core::VirtualMachine}; use num_traits::ToPrimitive; use serde_json::Value; @@ -122,12 +122,7 @@ pub fn field_element_to_felt(felt: &FieldElement) -> Felt252 { } pub fn felt_to_hash(value: &Felt252) -> ClassHash { - let mut output = [0; 32]; - - let bytes = value.to_bytes_be(); - output[32 - bytes.len()..].copy_from_slice(&bytes); - - ClassHash(output) + ClassHash(value.to_bytes_be()) } pub fn string_to_hash(class_string: &str) -> ClassHash { @@ -202,7 +197,7 @@ pub fn calculate_tx_resources( + n_reverted_steps + 10 * filtered_builtins .builtin_instance_counter - .remove(SEGMENT_ARENA_BUILTIN_NAME) + .remove(&BuiltinName::segment_arena) .unwrap_or(0); let mut resources: HashMap = HashMap::new(); @@ -212,7 +207,7 @@ pub fn calculate_tx_resources( n_steps + filtered_builtins.n_memory_holes, ); for (builtin, value) in filtered_builtins.builtin_instance_counter { - resources.insert(builtin, value); + resources.insert(builtin.to_str_with_suffix().to_string(), value); } Ok(resources) @@ -396,18 +391,9 @@ pub(crate) fn parse_builtin_names( ) -> Result, TransactionError> { builtin_strings .iter() - .map(|n| format!("{n}_builtin")) - .map(|s| match &*s { - builtin_runner::OUTPUT_BUILTIN_NAME => Ok(BuiltinName::output), - builtin_runner::RANGE_CHECK_BUILTIN_NAME => Ok(BuiltinName::range_check), - builtin_runner::HASH_BUILTIN_NAME => Ok(BuiltinName::pedersen), - builtin_runner::SIGNATURE_BUILTIN_NAME => Ok(BuiltinName::ecdsa), - builtin_runner::KECCAK_BUILTIN_NAME => Ok(BuiltinName::keccak), - builtin_runner::BITWISE_BUILTIN_NAME => Ok(BuiltinName::bitwise), - builtin_runner::EC_OP_BUILTIN_NAME => Ok(BuiltinName::ec_op), - builtin_runner::POSEIDON_BUILTIN_NAME => Ok(BuiltinName::poseidon), - builtin_runner::SEGMENT_ARENA_BUILTIN_NAME => Ok(BuiltinName::segment_arena), - s => Err(TransactionError::InvalidBuiltinContractClass(s.to_string())), + .map(|n| { + BuiltinName::from_str(n) + .ok_or_else(|| TransactionError::InvalidBuiltinContractClass(n.to_string())) }) .collect() } diff --git a/tests/integration_tests/account_panic.rs b/tests/integration_tests/account_panic.rs index 51e62359b..e498d1437 100644 --- a/tests/integration_tests/account_panic.rs +++ b/tests/integration_tests/account_panic.rs @@ -84,7 +84,7 @@ fn account_panic() { let selector_contract = &contract_class .entry_points_by_type .external - .get(0) + .first() .unwrap() .selector; // calldata of contract_a is 1 value. diff --git a/tests/integration_tests/cairo_1_syscalls.rs b/tests/integration_tests/cairo_1_syscalls.rs index 6cad66143..0cbefe979 100644 --- a/tests/integration_tests/cairo_1_syscalls.rs +++ b/tests/integration_tests/cairo_1_syscalls.rs @@ -1,7 +1,6 @@ -use cairo_lang_starknet::casm_contract_class::CasmContractClass; +use cairo_lang_starknet_classes::casm_contract_class::CasmContractClass; use cairo_vm::{ - vm::runners::{builtin_runner::RANGE_CHECK_BUILTIN_NAME, cairo_runner::ExecutionResources}, - Felt252, + types::builtin_name::BuiltinName, vm::runners::cairo_runner::ExecutionResources, Felt252, }; use num_bigint::BigUint; @@ -31,7 +30,7 @@ use std::{ sync::Arc, }; -fn create_execute_extrypoint( +fn create_execute_entrypoint( address: Address, class_hash: ClassHash, selector: &BigUint, @@ -56,9 +55,9 @@ fn storage_write_read() { let program_data = include_bytes!("../../starknet_programs/cairo2/simple_wallet.casm"); let contract_class: CasmContractClass = serde_json::from_slice(program_data).unwrap(); let entrypoints = contract_class.clone().entry_points_by_type; - let constructor_entrypoint_selector = &entrypoints.constructor.get(0).unwrap().selector; + let constructor_entrypoint_selector = &entrypoints.constructor.first().unwrap().selector; let get_balance_entrypoint_selector = &entrypoints.external.get(1).unwrap().selector; - let increase_balance_entrypoint_selector = &entrypoints.external.get(0).unwrap().selector; + let increase_balance_entrypoint_selector = &entrypoints.external.first().unwrap().selector; // Create state reader with class hash data let contract_class_cache = PermanentContractClassCache::default(); @@ -101,7 +100,7 @@ fn storage_write_read() { // RUN CONSTRUCTOR // Create an execution entry point let calldata = [25.into()].to_vec(); - let constructor_exec_entry_point = create_execute_extrypoint( + let constructor_exec_entry_point = create_execute_entrypoint( address.clone(), class_hash, constructor_entrypoint_selector, @@ -126,7 +125,7 @@ fn storage_write_read() { // RUN GET_BALANCE // Create an execution entry point let calldata = [].to_vec(); - let get_balance_exec_entry_point = create_execute_extrypoint( + let get_balance_exec_entry_point = create_execute_entrypoint( address.clone(), class_hash, get_balance_entrypoint_selector, @@ -152,7 +151,7 @@ fn storage_write_read() { // RUN INCREASE_BALANCE // Create an execution entry point let calldata = [100.into()].to_vec(); - let increase_balance_entry_point = create_execute_extrypoint( + let increase_balance_entry_point = create_execute_entrypoint( address.clone(), class_hash, increase_balance_entrypoint_selector, @@ -177,7 +176,7 @@ fn storage_write_read() { // RUN GET_BALANCE // Create an execution entry point let calldata = [].to_vec(); - let get_balance_exec_entry_point = create_execute_extrypoint( + let get_balance_exec_entry_point = create_execute_entrypoint( address, class_hash, get_balance_entrypoint_selector, @@ -207,7 +206,7 @@ fn library_call() { let program_data = include_bytes!("../../starknet_programs/cairo2/square_root.casm"); let contract_class: CasmContractClass = serde_json::from_slice(program_data).unwrap(); let entrypoints = contract_class.clone().entry_points_by_type; - let entrypoint_selector = &entrypoints.external.get(0).unwrap().selector; + let entrypoint_selector = &entrypoints.external.first().unwrap().selector; // Create state reader with class hash data let contract_class_cache = PermanentContractClassCache::default(); @@ -288,12 +287,12 @@ fn library_call() { let expected_execution_resources = ExecutionResources { n_steps: 238, n_memory_holes: 8, - builtin_instance_counter: HashMap::from([(RANGE_CHECK_BUILTIN_NAME.to_string(), 12)]), + builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 12)]), }; let expected_execution_resources_internal_call = ExecutionResources { n_steps: 78, n_memory_holes: 5, - builtin_instance_counter: HashMap::from([(RANGE_CHECK_BUILTIN_NAME.to_string(), 7)]), + builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 7)]), }; // expected results @@ -395,7 +394,7 @@ fn call_contract_storage_write_read() { let simple_wallet_constructor_entrypoint_selector = simple_wallet_contract_class .entry_points_by_type .constructor - .get(0) + .first() .unwrap() .selector .clone(); @@ -434,7 +433,7 @@ fn call_contract_storage_write_read() { let mut resources_manager = ExecutionResourcesManager::default(); - let create_execute_extrypoint = |selector: &BigUint, + let create_execute_entrypoint = |selector: &BigUint, calldata: Vec, entry_point_type: EntryPointType, class_hash: [u8; 32], @@ -455,7 +454,7 @@ fn call_contract_storage_write_read() { // RUN SIMPLE_WALLET CONSTRUCTOR // Create an execution entry point let calldata = [25.into()].to_vec(); - let constructor_exec_entry_point = create_execute_extrypoint( + let constructor_exec_entry_point = create_execute_entrypoint( &simple_wallet_constructor_entrypoint_selector, calldata, EntryPointType::Constructor, @@ -480,7 +479,7 @@ fn call_contract_storage_write_read() { // RUN GET_BALANCE // Create an execution entry point let calldata = [simple_wallet_address.0].to_vec(); - let get_balance_exec_entry_point = create_execute_extrypoint( + let get_balance_exec_entry_point = create_execute_entrypoint( get_balance_entrypoint_selector, calldata, EntryPointType::External, @@ -506,7 +505,7 @@ fn call_contract_storage_write_read() { // RUN INCREASE_BALANCE // Create an execution entry point let calldata = [100.into(), simple_wallet_address.0].to_vec(); - let increase_balance_entry_point = create_execute_extrypoint( + let increase_balance_entry_point = create_execute_entrypoint( increase_balance_entrypoint_selector, calldata, EntryPointType::External, @@ -531,7 +530,7 @@ fn call_contract_storage_write_read() { // RUN GET_BALANCE // Create an execution entry point let calldata = [simple_wallet_address.0].to_vec(); - let get_balance_exec_entry_point = create_execute_extrypoint( + let get_balance_exec_entry_point = create_execute_entrypoint( get_balance_entrypoint_selector, calldata, EntryPointType::External, @@ -561,7 +560,7 @@ fn emit_event() { let program_data = include_bytes!("../../starknet_programs/cairo2/emit_event.casm"); let contract_class: CasmContractClass = serde_json::from_slice(program_data).unwrap(); let entrypoints = contract_class.clone().entry_points_by_type; - let entrypoint_selector = &entrypoints.external.get(0).unwrap().selector; + let entrypoint_selector = &entrypoints.external.first().unwrap().selector; // Create state reader with class hash data let contract_class_cache = PermanentContractClassCache::default(); @@ -673,7 +672,7 @@ fn deploy_cairo1_from_cairo1() { let program_data = include_bytes!("../../starknet_programs/cairo2/deploy.casm"); let contract_class: CasmContractClass = serde_json::from_slice(program_data).unwrap(); let entrypoints = contract_class.clone().entry_points_by_type; - let entrypoint_selector = &entrypoints.external.get(0).unwrap().selector; + let entrypoint_selector = &entrypoints.external.first().unwrap().selector; // Create state reader with class hash data let contract_class_cache = PermanentContractClassCache::default(); @@ -783,7 +782,7 @@ fn deploy_cairo0_from_cairo1_without_constructor() { include_bytes!("../../starknet_programs/cairo2/deploy_without_constructor.casm"); let contract_class: CasmContractClass = serde_json::from_slice(program_data).unwrap(); let entrypoints = contract_class.clone().entry_points_by_type; - let entrypoint_selector = &entrypoints.external.get(0).unwrap().selector; + let entrypoint_selector = &entrypoints.external.first().unwrap().selector; // Create state reader with class hash data let contract_class_cache = PermanentContractClassCache::default(); @@ -890,7 +889,7 @@ fn deploy_cairo0_from_cairo1_with_constructor() { include_bytes!("../../starknet_programs/cairo2/deploy_with_constructor.casm"); let contract_class: CasmContractClass = serde_json::from_slice(program_data).unwrap(); let entrypoints = contract_class.clone().entry_points_by_type; - let entrypoint_selector = &entrypoints.external.get(0).unwrap().selector; + let entrypoint_selector = &entrypoints.external.first().unwrap().selector; // Create state reader with class hash data let contract_class_cache = PermanentContractClassCache::default(); @@ -998,7 +997,7 @@ fn deploy_cairo0_and_invoke() { include_bytes!("../../starknet_programs/cairo2/deploy_without_constructor.casm"); let contract_class: CasmContractClass = serde_json::from_slice(program_data).unwrap(); let entrypoints = contract_class.clone().entry_points_by_type; - let entrypoint_selector = &entrypoints.external.get(0).unwrap().selector; + let entrypoint_selector = &entrypoints.external.first().unwrap().selector; // Create state reader with class hash data let contract_class_cache = PermanentContractClassCache::default(); @@ -1136,7 +1135,7 @@ fn test_send_message_to_l1_syscall() { let contract_class: CasmContractClass = serde_json::from_slice(program_data).unwrap(); let entrypoints = contract_class.clone().entry_points_by_type; - let external_entrypoint_selector = &entrypoints.external.get(0).unwrap().selector; + let external_entrypoint_selector = &entrypoints.external.first().unwrap().selector; // Create state reader with class hash data let contract_class_cache = PermanentContractClassCache::default(); @@ -1166,7 +1165,7 @@ fn test_send_message_to_l1_syscall() { // RUN SEND_MSG // Create an execution entry point - let send_message_exec_entry_point = create_execute_extrypoint( + let send_message_exec_entry_point = create_execute_entrypoint( address.clone(), class_hash, external_entrypoint_selector, @@ -1214,7 +1213,7 @@ fn test_send_message_to_l1_syscall() { let expected_execution_resources = ExecutionResources { n_steps: expected_n_steps, n_memory_holes: expected_n_memory_holes, - builtin_instance_counter: HashMap::from([(RANGE_CHECK_BUILTIN_NAME.to_string(), 2)]), + builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 2)]), }; let expected_call_info = CallInfo { @@ -1239,7 +1238,7 @@ fn test_get_execution_info() { let program_data = include_bytes!("../../starknet_programs/cairo2/get_execution_info.casm"); let contract_class: CasmContractClass = serde_json::from_slice(program_data).unwrap(); let entrypoints = contract_class.clone().entry_points_by_type; - let external_entrypoint_selector = &entrypoints.external.get(0).unwrap().selector; + let external_entrypoint_selector = &entrypoints.external.first().unwrap().selector; // Create state reader with class hash data let contract_class_cache = PermanentContractClassCache::default(); @@ -1281,7 +1280,7 @@ fn test_get_execution_info() { // RUN GET_INFO // Create an execution entry point - let get_info_exec_entry_point = create_execute_extrypoint( + let get_info_exec_entry_point = create_execute_entrypoint( address.clone(), class_hash, external_entrypoint_selector, @@ -1316,7 +1315,7 @@ fn test_get_execution_info() { let expected_execution_resources = ExecutionResources { n_steps: expected_n_steps, n_memory_holes: 4, - builtin_instance_counter: HashMap::from([(RANGE_CHECK_BUILTIN_NAME.to_string(), 4)]), + builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 4)]), }; let expected_call_info = CallInfo { @@ -1342,7 +1341,7 @@ fn replace_class_internal() { let program_data_a = include_bytes!("../../starknet_programs/cairo2/get_number_a.casm"); let contract_class_a: CasmContractClass = serde_json::from_slice(program_data_a).unwrap(); let entrypoints_a = contract_class_a.clone().entry_points_by_type; - let upgrade_selector = &entrypoints_a.external.get(0).unwrap().selector; + let upgrade_selector = &entrypoints_a.external.first().unwrap().selector; // Create state reader with class hash data let contract_class_cache = PermanentContractClassCache::default(); @@ -1497,7 +1496,7 @@ fn replace_class_contract_call() { let wrapper_contract_class: CasmContractClass = serde_json::from_slice(program_data).unwrap(); let entrypoints = wrapper_contract_class.clone().entry_points_by_type; let get_number_entrypoint_selector = &entrypoints.external.get(1).unwrap().selector; - let upgrade_entrypoint_selector = &entrypoints.external.get(0).unwrap().selector; + let upgrade_entrypoint_selector = &entrypoints.external.first().unwrap().selector; let wrapper_address = Address(Felt252::from(2)); let wrapper_class_hash: ClassHash = ClassHash([3; 32]); @@ -2119,7 +2118,7 @@ fn test_out_of_gas_failure() { let program_data = include_bytes!("../../starknet_programs/cairo2/emit_event.casm"); let contract_class: CasmContractClass = serde_json::from_slice(program_data).unwrap(); let entrypoints = contract_class.clone().entry_points_by_type; - let entrypoint_selector = &entrypoints.external.get(0).unwrap().selector; + let entrypoint_selector = &entrypoints.external.first().unwrap().selector; // Create state reader with class hash data let contract_class_cache = PermanentContractClassCache::default(); @@ -2202,7 +2201,7 @@ fn deploy_syscall_failure_uninitialized_class_hash() { include_bytes!("../../starknet_programs/cairo2/deploy_contract_no_args.casm"); let contract_class: CasmContractClass = serde_json::from_slice(program_data).unwrap(); let entrypoints = contract_class.clone().entry_points_by_type; - let entrypoint_selector = &entrypoints.external.get(0).unwrap().selector; + let entrypoint_selector = &entrypoints.external.first().unwrap().selector; // Create state reader with class hash data let contract_class_cache = PermanentContractClassCache::default(); @@ -2284,7 +2283,7 @@ fn deploy_syscall_failure_in_constructor() { include_bytes!("../../starknet_programs/cairo2/deploy_contract_no_args.casm"); let contract_class: CasmContractClass = serde_json::from_slice(program_data).unwrap(); let entrypoints = contract_class.clone().entry_points_by_type; - let entrypoint_selector = &entrypoints.external.get(0).unwrap().selector; + let entrypoint_selector = &entrypoints.external.first().unwrap().selector; // Create state reader with class hash data let contract_class_cache = PermanentContractClassCache::default(); @@ -2423,7 +2422,7 @@ fn storage_read_no_value() { // RUN GET_BALANCE // Create an execution entry point let calldata = [].to_vec(); - let get_balance_exec_entry_point = create_execute_extrypoint( + let get_balance_exec_entry_point = create_execute_entrypoint( address, class_hash, get_balance_entrypoint_selector, @@ -2455,7 +2454,7 @@ fn storage_read_unavailable_address_domain() { include_bytes!("../../starknet_programs/cairo2/faulty_low_level_storage_read.casm"); let contract_class: CasmContractClass = serde_json::from_slice(program_data).unwrap(); let entrypoints = contract_class.clone().entry_points_by_type; - let read_storage_entrypoint_selector = &entrypoints.external.get(0).unwrap().selector; + let read_storage_entrypoint_selector = &entrypoints.external.first().unwrap().selector; // Create state reader with class hash data let contract_class_cache = PermanentContractClassCache::default(); @@ -2498,7 +2497,7 @@ fn storage_read_unavailable_address_domain() { // RUN READ_STORAGE // Create an execution entry point let calldata = [].to_vec(); - let read_storage_exec_entry_point = create_execute_extrypoint( + let read_storage_exec_entry_point = create_execute_entrypoint( address, class_hash, read_storage_entrypoint_selector, @@ -2533,7 +2532,7 @@ fn storage_write_unavailable_address_domain() { include_bytes!("../../starknet_programs/cairo2/faulty_low_level_storage_write.casm"); let contract_class: CasmContractClass = serde_json::from_slice(program_data).unwrap(); let entrypoints = contract_class.clone().entry_points_by_type; - let read_storage_entrypoint_selector = &entrypoints.external.get(0).unwrap().selector; + let read_storage_entrypoint_selector = &entrypoints.external.first().unwrap().selector; // Create state reader with class hash data let contract_class_cache = PermanentContractClassCache::default(); @@ -2576,7 +2575,7 @@ fn storage_write_unavailable_address_domain() { // RUN READ_STORAGE // Create an execution entry point let calldata = [].to_vec(); - let read_storage_exec_entry_point = create_execute_extrypoint( + let read_storage_exec_entry_point = create_execute_entrypoint( address, class_hash, read_storage_entrypoint_selector, @@ -2610,7 +2609,7 @@ fn library_call_failure() { let program_data = include_bytes!("../../starknet_programs/cairo2/square_root.casm"); let contract_class: CasmContractClass = serde_json::from_slice(program_data).unwrap(); let entrypoints = contract_class.clone().entry_points_by_type; - let entrypoint_selector = &entrypoints.external.get(0).unwrap().selector; + let entrypoint_selector = &entrypoints.external.first().unwrap().selector; // Create state reader with class hash data let contract_class_cache = PermanentContractClassCache::default(); @@ -2691,7 +2690,7 @@ fn library_call_failure() { let mut expected_execution_resources = ExecutionResources::default(); expected_execution_resources .builtin_instance_counter - .insert(RANGE_CHECK_BUILTIN_NAME.to_string(), 7); + .insert(BuiltinName::range_check, 7); expected_execution_resources.n_memory_holes = 6; let call_info = exec_entry_point @@ -3100,7 +3099,7 @@ fn keccak_syscall() { let program_data = include_bytes!("../../starknet_programs/cairo2/test_cairo_keccak.casm"); let contract_class: CasmContractClass = serde_json::from_slice(program_data).unwrap(); let entrypoints = contract_class.clone().entry_points_by_type; - let read_storage_entrypoint_selector = &entrypoints.external.get(0).unwrap().selector; + let read_storage_entrypoint_selector = &entrypoints.external.first().unwrap().selector; // Create state reader with class hash data let contract_class_cache = PermanentContractClassCache::default(); @@ -3143,7 +3142,7 @@ fn keccak_syscall() { // RUN READ_STORAGE // Create an execution entry point let calldata = [].to_vec(); - let read_storage_exec_entry_point = create_execute_extrypoint( + let read_storage_exec_entry_point = create_execute_entrypoint( address, class_hash, read_storage_entrypoint_selector, @@ -3177,7 +3176,7 @@ fn library_call_recursive_50_calls() { let program_data = include_bytes!("../../starknet_programs/cairo2/square_root_recursive.casm"); let contract_class: CasmContractClass = serde_json::from_slice(program_data).unwrap(); let entrypoints = contract_class.clone().entry_points_by_type; - let entrypoint_selector = &entrypoints.external.get(0).unwrap().selector; + let entrypoint_selector = &entrypoints.external.first().unwrap().selector; // Create state reader with class hash data let contract_class_cache = PermanentContractClassCache::default(); @@ -3263,7 +3262,7 @@ fn library_call_recursive_50_calls() { let expected_execution_resources_internal_call = ExecutionResources { n_steps: 78, n_memory_holes: 5, - builtin_instance_counter: HashMap::from([(RANGE_CHECK_BUILTIN_NAME.to_string(), 7)]), + builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 7)]), }; let call_info = exec_entry_point @@ -3348,7 +3347,7 @@ fn call_contract_storage_write_read_recursive_50_calls() { let simple_wallet_constructor_entrypoint_selector = simple_wallet_contract_class .entry_points_by_type .constructor - .get(0) + .first() .unwrap() .selector .clone(); @@ -3387,7 +3386,7 @@ fn call_contract_storage_write_read_recursive_50_calls() { let mut resources_manager = ExecutionResourcesManager::default(); - let create_execute_extrypoint = |selector: &BigUint, + let create_execute_entrypoint = |selector: &BigUint, calldata: Vec, entry_point_type: EntryPointType, class_hash: [u8; 32], @@ -3408,7 +3407,7 @@ fn call_contract_storage_write_read_recursive_50_calls() { // RUN SIMPLE_WALLET CONSTRUCTOR // Create an execution entry point let calldata = [25.into()].to_vec(); - let constructor_exec_entry_point = create_execute_extrypoint( + let constructor_exec_entry_point = create_execute_entrypoint( &simple_wallet_constructor_entrypoint_selector, calldata, EntryPointType::Constructor, @@ -3433,7 +3432,7 @@ fn call_contract_storage_write_read_recursive_50_calls() { // RUN GET_BALANCE // Create an execution entry point let calldata = [simple_wallet_address.0].to_vec(); - let get_balance_exec_entry_point = create_execute_extrypoint( + let get_balance_exec_entry_point = create_execute_entrypoint( get_balance_entrypoint_selector, calldata, EntryPointType::External, @@ -3459,7 +3458,7 @@ fn call_contract_storage_write_read_recursive_50_calls() { // RUN INCREASE_BALANCE // Create an execution entry point let calldata = [50.into(), simple_wallet_address.0].to_vec(); - let increase_balance_entry_point = create_execute_extrypoint( + let increase_balance_entry_point = create_execute_entrypoint( increase_balance_entrypoint_selector, calldata, EntryPointType::External, @@ -3489,7 +3488,7 @@ fn call_contract_storage_write_read_recursive_50_calls() { // RUN GET_BALANCE // Create an execution entry point let calldata = [simple_wallet_address.0].to_vec(); - let get_balance_exec_entry_point = create_execute_extrypoint( + let get_balance_exec_entry_point = create_execute_entrypoint( get_balance_entrypoint_selector, calldata, EntryPointType::External, @@ -3554,7 +3553,7 @@ fn call_contract_storage_write_read_recursive_100_calls() { let simple_wallet_constructor_entrypoint_selector = simple_wallet_contract_class .entry_points_by_type .constructor - .get(0) + .first() .unwrap() .selector .clone(); @@ -3593,7 +3592,7 @@ fn call_contract_storage_write_read_recursive_100_calls() { let mut resources_manager = ExecutionResourcesManager::default(); - let create_execute_extrypoint = |selector: &BigUint, + let create_execute_entrypoint = |selector: &BigUint, calldata: Vec, entry_point_type: EntryPointType, class_hash: [u8; 32], @@ -3614,7 +3613,7 @@ fn call_contract_storage_write_read_recursive_100_calls() { // RUN SIMPLE_WALLET CONSTRUCTOR // Create an execution entry point let calldata = [25.into()].to_vec(); - let constructor_exec_entry_point = create_execute_extrypoint( + let constructor_exec_entry_point = create_execute_entrypoint( &simple_wallet_constructor_entrypoint_selector, calldata, EntryPointType::Constructor, @@ -3639,7 +3638,7 @@ fn call_contract_storage_write_read_recursive_100_calls() { // RUN GET_BALANCE // Create an execution entry point let calldata = [simple_wallet_address.0].to_vec(); - let get_balance_exec_entry_point = create_execute_extrypoint( + let get_balance_exec_entry_point = create_execute_entrypoint( get_balance_entrypoint_selector, calldata, EntryPointType::External, @@ -3665,7 +3664,7 @@ fn call_contract_storage_write_read_recursive_100_calls() { // RUN INCREASE_BALANCE // Create an execution entry point let calldata = [100.into(), simple_wallet_address.0].to_vec(); - let increase_balance_entry_point = create_execute_extrypoint( + let increase_balance_entry_point = create_execute_entrypoint( increase_balance_entrypoint_selector, calldata, EntryPointType::External, @@ -3695,7 +3694,7 @@ fn call_contract_storage_write_read_recursive_100_calls() { // RUN GET_BALANCE // Create an execution entry point let calldata = [simple_wallet_address.0].to_vec(); - let get_balance_exec_entry_point = create_execute_extrypoint( + let get_balance_exec_entry_point = create_execute_entrypoint( get_balance_entrypoint_selector, calldata, EntryPointType::External, @@ -3729,7 +3728,7 @@ fn test_get_execution_info_v2() { let program_data = include_bytes!("../../starknet_programs/cairo2/get_execution_info_v2.casm"); let contract_class: CasmContractClass = serde_json::from_slice(program_data).unwrap(); let entrypoints = contract_class.clone().entry_points_by_type; - let external_entrypoint_selector = &entrypoints.external.get(0).unwrap().selector; + let external_entrypoint_selector = &entrypoints.external.first().unwrap().selector; // Create state reader with class hash data let contract_class_cache = PermanentContractClassCache::default(); @@ -3787,7 +3786,7 @@ fn test_get_execution_info_v2() { // RUN GET_INFO // Create an execution entry point - let get_info_exec_entry_point = create_execute_extrypoint( + let get_info_exec_entry_point = create_execute_entrypoint( address.clone(), class_hash, external_entrypoint_selector, @@ -3823,7 +3822,7 @@ fn test_get_execution_info_v2() { let expected_execution_resources = ExecutionResources { n_steps: expected_n_steps, n_memory_holes: 14, - builtin_instance_counter: HashMap::from([(RANGE_CHECK_BUILTIN_NAME.to_string(), 14)]), + builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 14)]), }; let expected_call_info = CallInfo { diff --git a/tests/integration_tests/cairo_native.rs b/tests/integration_tests/cairo_native.rs index 2a2275825..326bb090e 100644 --- a/tests/integration_tests/cairo_native.rs +++ b/tests/integration_tests/cairo_native.rs @@ -3,7 +3,10 @@ use assert_matches::assert_matches; use cairo_vm::Felt252; use pretty_assertions_sorted::*; +use starknet_in_rust::definitions::block_context::StarknetOsConfig; +use starknet_in_rust::execution::TransactionExecutionInfo; use starknet_in_rust::hash_utils::calculate_contract_address; +use starknet_in_rust::transaction::Transaction; use starknet_in_rust::{ definitions::{block_context::BlockContext, constants::TRANSACTION_VERSION}, execution::{ @@ -828,7 +831,7 @@ fn get_execution_info_test() { } #[derive(Debug, Default)] -struct TestStateSetup { +pub struct TestStateSetup { state_reader: InMemoryStateReader, cache_native: PermanentContractClassCache, @@ -900,17 +903,42 @@ impl TestStateSetup { TestState { state_vm: CachedState::new(state_reader.clone(), Arc::new(self.cache_vm)), state_native: CachedState::new(state_reader, Arc::new(self.cache_native)), + + starknet_os_config: Default::default(), + } + } + + pub fn finalize_with_starknet_os_config( + self, + starknet_os_config: StarknetOsConfig, + ) -> TestState { + let state_reader = Arc::new(self.state_reader); + + TestState { + state_vm: CachedState::new(state_reader.clone(), Arc::new(self.cache_vm)), + state_native: CachedState::new(state_reader, Arc::new(self.cache_native)), + + starknet_os_config, } } } #[derive(Debug)] -struct TestState { +pub struct TestState { state_native: CachedState, state_vm: CachedState, + + starknet_os_config: StarknetOsConfig, } impl TestState { + pub fn storage_writes_at(&self, k: (Address, [u8; 32])) -> (Option, Option) { + ( + self.state_vm.cache().storage_writes().get(&k).cloned(), + self.state_native.cache().storage_writes().get(&k).cloned(), + ) + } + pub fn insert_initial_storage_value(&mut self, k: (Address, [u8; 32]), v: Felt252) { self.state_native .cache_mut() @@ -1021,6 +1049,41 @@ impl TestState { Ok((execution_result_vm, execution_result_native)) } + pub fn execute_transaction( + &mut self, + tx: Transaction, + ) -> Result> { + let (_, contract_class_native) = + Self::get_contract_class_for_address(&self.state_native, &tx.contract_address()) + .ok_or("The contract address doesn't exist.")?; + + assert_matches!( + contract_class_native, + CompiledClass::Casm { + sierra: Some(_), + .. + }, + "The Native contract class doesn't contain the Sierra." + ); + + let mut block_context = BlockContext::default(); + block_context.block_info_mut().block_number = 30; + let context = block_context.starknet_os_config_mut(); + *context = self.starknet_os_config.clone(); + + let execution_result_native = tx + .execute( + &mut self.state_native, + &block_context, + u128::MAX, + #[cfg(feature = "cairo-native")] + None, + ) + .unwrap(); + + Ok(execution_result_native) + } + fn get_contract_class_for_address( state: &CachedState, address: &Address, diff --git a/tests/integration_tests/complex_contracts/amm_contracts/amm.rs b/tests/integration_tests/complex_contracts/amm_contracts/amm.rs index cf131eb70..03288c33d 100644 --- a/tests/integration_tests/complex_contracts/amm_contracts/amm.rs +++ b/tests/integration_tests/complex_contracts/amm_contracts/amm.rs @@ -1,11 +1,7 @@ use crate::integration_tests::complex_contracts::utils::get_accessed_keys; use crate::integration_tests::complex_contracts::utils::*; use cairo_vm::{ - vm::runners::{ - builtin_runner::{HASH_BUILTIN_NAME, RANGE_CHECK_BUILTIN_NAME}, - cairo_runner::ExecutionResources, - }, - Felt252, + types::builtin_name::BuiltinName, vm::runners::cairo_runner::ExecutionResources, Felt252, }; use starknet_in_rust::{ @@ -100,8 +96,8 @@ fn amm_init_pool_test() { n_steps: 232, n_memory_holes: 20, builtin_instance_counter: HashMap::from([ - (RANGE_CHECK_BUILTIN_NAME.to_string(), 14), - (HASH_BUILTIN_NAME.to_string(), 2), + (BuiltinName::range_check, 14), + (BuiltinName::keccak, 2), ]), }), class_hash: Some(class_hash), @@ -189,8 +185,8 @@ fn amm_add_demo_tokens_test() { n_steps: 393, n_memory_holes: 44, builtin_instance_counter: HashMap::from([ - (RANGE_CHECK_BUILTIN_NAME.to_string(), 20), - (HASH_BUILTIN_NAME.to_string(), 8), + (BuiltinName::range_check, 20), + (BuiltinName::keccak, 8), ]), }), class_hash: Some(class_hash), @@ -263,8 +259,8 @@ fn amm_get_pool_token_balance() { n_steps: 84, n_memory_holes: 10, builtin_instance_counter: HashMap::from([ - (RANGE_CHECK_BUILTIN_NAME.to_string(), 3), - (HASH_BUILTIN_NAME.to_string(), 1), + (BuiltinName::range_check, 3), + (BuiltinName::keccak, 1), ]), }), class_hash: Some(class_hash), @@ -358,8 +354,8 @@ fn amm_swap_test() { n_steps: 820, n_memory_holes: 95, builtin_instance_counter: HashMap::from([ - (RANGE_CHECK_BUILTIN_NAME.to_string(), 41), - (HASH_BUILTIN_NAME.to_string(), 14), + (BuiltinName::range_check, 41), + (BuiltinName::keccak, 14), ]), }), class_hash: Some(class_hash), @@ -612,8 +608,8 @@ fn amm_get_account_token_balance_test() { n_steps: 92, n_memory_holes: 11, builtin_instance_counter: HashMap::from([ - (RANGE_CHECK_BUILTIN_NAME.to_string(), 3), - (HASH_BUILTIN_NAME.to_string(), 2), + (BuiltinName::range_check, 3), + (BuiltinName::keccak, 2), ]), }), class_hash: Some(class_hash), diff --git a/tests/integration_tests/complex_contracts/amm_contracts/amm_proxy.rs b/tests/integration_tests/complex_contracts/amm_contracts/amm_proxy.rs index be359245d..68c9fb010 100644 --- a/tests/integration_tests/complex_contracts/amm_contracts/amm_proxy.rs +++ b/tests/integration_tests/complex_contracts/amm_contracts/amm_proxy.rs @@ -1,5 +1,7 @@ use crate::integration_tests::complex_contracts::utils::*; -use cairo_vm::{vm::runners::cairo_runner::ExecutionResources, Felt252}; +use cairo_vm::{ + types::builtin_name::BuiltinName, vm::runners::cairo_runner::ExecutionResources, Felt252, +}; use starknet_crypto::FieldElement; use starknet_in_rust::{ @@ -87,8 +89,8 @@ fn amm_proxy_init_pool_test() { n_steps: 232, n_memory_holes: 20, builtin_instance_counter: HashMap::from([ - ("pedersen_builtin".to_string(), 2), - ("range_check_builtin".to_string(), 14), + (BuiltinName::pedersen, 2), + (BuiltinName::range_check, 14), ]), }), class_hash: Some(contract_class_hash), @@ -109,8 +111,8 @@ fn amm_proxy_init_pool_test() { n_steps: 280, n_memory_holes: 20, builtin_instance_counter: HashMap::from([ - ("pedersen_builtin".to_string(), 2), - ("range_check_builtin".to_string(), 14), + (BuiltinName::pedersen, 2), + (BuiltinName::range_check, 14), ]), }), class_hash: Some(proxy_class_hash), @@ -195,8 +197,8 @@ fn amm_proxy_get_pool_token_balance_test() { n_steps: 84, n_memory_holes: 10, builtin_instance_counter: HashMap::from([ - ("pedersen_builtin".to_string(), 1), - ("range_check_builtin".to_string(), 3), + (BuiltinName::pedersen, 1), + (BuiltinName::range_check, 3), ]), }), class_hash: Some(contract_class_hash), @@ -216,8 +218,8 @@ fn amm_proxy_get_pool_token_balance_test() { n_steps: 140, n_memory_holes: 10, builtin_instance_counter: HashMap::from([ - ("pedersen_builtin".to_string(), 1), - ("range_check_builtin".to_string(), 3), + (BuiltinName::pedersen, 1), + (BuiltinName::range_check, 3), ]), }), class_hash: Some(proxy_class_hash), @@ -309,8 +311,8 @@ fn amm_proxy_add_demo_token_test() { n_steps: 397, n_memory_holes: 42, builtin_instance_counter: HashMap::from([ - ("pedersen_builtin".to_string(), 8), - ("range_check_builtin".to_string(), 20), + (BuiltinName::pedersen, 8), + (BuiltinName::range_check, 20), ]), }), class_hash: Some(contract_class_hash), @@ -329,8 +331,8 @@ fn amm_proxy_add_demo_token_test() { n_steps: 445, n_memory_holes: 42, builtin_instance_counter: HashMap::from([ - ("pedersen_builtin".to_string(), 8), - ("range_check_builtin".to_string(), 20), + (BuiltinName::pedersen, 8), + (BuiltinName::range_check, 20), ]), }), class_hash: Some(proxy_class_hash), @@ -429,8 +431,8 @@ fn amm_proxy_get_account_token_balance() { n_steps: 92, n_memory_holes: 11, builtin_instance_counter: HashMap::from([ - ("pedersen_builtin".to_string(), 2), - ("range_check_builtin".to_string(), 3), + (BuiltinName::pedersen, 2), + (BuiltinName::range_check, 3), ]), }), class_hash: Some(contract_class_hash), @@ -450,8 +452,8 @@ fn amm_proxy_get_account_token_balance() { n_steps: 151, n_memory_holes: 11, builtin_instance_counter: HashMap::from([ - ("pedersen_builtin".to_string(), 2), - ("range_check_builtin".to_string(), 3), + (BuiltinName::pedersen, 2), + (BuiltinName::range_check, 3), ]), }), class_hash: Some(proxy_class_hash), @@ -572,8 +574,8 @@ fn amm_proxy_swap() { n_steps: 826, n_memory_holes: 92, builtin_instance_counter: HashMap::from([ - ("pedersen_builtin".to_string(), 14), - ("range_check_builtin".to_string(), 41), + (BuiltinName::pedersen, 14), + (BuiltinName::range_check, 41), ]), }), class_hash: Some(contract_class_hash), @@ -593,8 +595,8 @@ fn amm_proxy_swap() { n_steps: 885, n_memory_holes: 92, builtin_instance_counter: HashMap::from([ - ("pedersen_builtin".to_string(), 14), - ("range_check_builtin".to_string(), 41), + (BuiltinName::pedersen, 14), + (BuiltinName::range_check, 41), ]), }), class_hash: Some(proxy_class_hash), diff --git a/tests/integration_tests/complex_contracts/erc20.rs b/tests/integration_tests/complex_contracts/erc20.rs index 50627e015..4d0467072 100644 --- a/tests/integration_tests/complex_contracts/erc20.rs +++ b/tests/integration_tests/complex_contracts/erc20.rs @@ -27,7 +27,7 @@ fn test_erc20_cairo2() { let program_data = include_bytes!("../../../starknet_programs/cairo2/deploy_erc20.casm"); let contract_class: CasmContractClass = serde_json::from_slice(program_data).unwrap(); let entrypoints = contract_class.clone().entry_points_by_type; - let entrypoint_selector = &entrypoints.external.get(0).unwrap().selector; + let entrypoint_selector = &entrypoints.external.first().unwrap().selector; // Create state reader with class hash data let contract_class_cache = Arc::new(PermanentContractClassCache::default()); @@ -124,7 +124,7 @@ fn test_erc20_cairo2() { None, ) .unwrap(); - let erc20_address = *call_info.call_info.unwrap().retdata.get(0).unwrap(); + let erc20_address = *call_info.call_info.unwrap().retdata.first().unwrap(); // ACCOUNT 1 let program_data_account = diff --git a/tests/integration_tests/complex_contracts/kakarot/mod.rs b/tests/integration_tests/complex_contracts/kakarot/mod.rs new file mode 100644 index 000000000..9de290882 --- /dev/null +++ b/tests/integration_tests/complex_contracts/kakarot/mod.rs @@ -0,0 +1,425 @@ +use std::str::FromStr; + +use cairo_vm::Felt252; +use reth_primitives::{sign_message, AccessList, Bytes, Signature, TransactionSigned, B256, U256}; +use starknet::core::utils::{get_contract_address, get_storage_var_address, starknet_keccak}; +use starknet_api::core::L2_ADDRESS_UPPER_BOUND; +use starknet_crypto::{poseidon_hash_many, FieldElement}; +use starknet_in_rust::definitions::block_context::{FeeTokenAddresses, StarknetOsConfig}; +use starknet_in_rust::definitions::constants::EXECUTE_ENTRY_POINT_SELECTOR; +use starknet_in_rust::transaction::Address; +use starknet_in_rust::transaction::{ + ClassHash, InvokeFunction, Transaction, VersionSpecificAccountTxFields, +}; +use starknet_in_rust::utils::{calculate_sn_keccak, felt_to_field_element, field_element_to_felt}; + +use crate::integration_tests::cairo_native::TestStateSetup; + +#[test] +// #[ignore = "Failed to deserialize param #1: see PR `https://github.com/lambdaclass/cairo_native/pull/630`"] +fn test_kakarot_contract() { + // Evm constants + let private_key: B256 = + B256::from_str("0x6ae82d865482a203603ecbf25c865e082396d7705a6bbce92c1ff1d6ab9b503c") + .unwrap(); + let public_key: reth_primitives::Address = + reth_primitives::Address::from_str("0x7513A12F74fFF533ee12F20EE524e4883CBd1945").unwrap(); + let contract_address: reth_primitives::Address = + reth_primitives::Address::from_str("0x0000000000000000000000000000000000001234").unwrap(); + + // Starknet constants + let chain_id = Felt252::from_hex("0x4B4B5254").unwrap(); + + let kakarot_class_hash = ClassHash([1; 32]); + let kakarot_address = Address(1.into()); + let uninitialized_account_class_hash = ClassHash([3; 32]); + + // EOA + let eoa_nonce = Felt252::ZERO; + let eoa_evm_address = Felt252::from_bytes_be_slice(public_key.0.as_slice()); + let eoa_class_hash = ClassHash([2; 32]); + let eoa_address = compute_starknet_address( + &eoa_evm_address, + &kakarot_address.0, + &Felt252::from_bytes_be(&uninitialized_account_class_hash.0), + ); + let eoa_address = Address(eoa_address); + + // Contract Account + let contract_nonce = Felt252::ZERO; + let contract_account_evm_address = Felt252::from_bytes_be_slice(contract_address.0.as_slice()); + let contract_account_class_hash = ClassHash([3; 32]); + let contract_account_address = compute_starknet_address( + &contract_account_evm_address, + &kakarot_address.0, + &Felt252::from_bytes_be(&uninitialized_account_class_hash.0), + ); + let contract_account_address = Address(contract_account_address); + // PUSH1 01 PUSH1 00 SSTORE PUSH1 02 PUSH1 00 MSTORE8 PUSH1 01 PUSH1 00 RETURN + let bytecode = Felt252::from_bytes_be_slice(&[ + 0x60, 0x01, 0x60, 0x00, 0x55, 0x60, 0x02, 0x60, 0x00, 0x53, 0x60, 0x01, 0x60, 0x00, 0xf3, + ]); + let bytecode_base_address = compute_storage_key("Account_bytecode", &[]); + + let bytecode_storage_key = field_element_to_felt(&poseidon_hash_many(&[ + felt_to_field_element(&bytecode_base_address).unwrap(), + FieldElement::ZERO, + ])); + + let fee_token_address = Address( + Felt252::from_hex("0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7") + .unwrap(), + ); + + let mut state = TestStateSetup::default(); + + dbg!("deploy"); + + // Deploy Kakarot + state + .load_contract_at_address( + kakarot_class_hash, + kakarot_address.clone(), + "starknet_programs/kakarot/contracts_KakarotCore.cairo", + ) + .unwrap(); + dbg!("deploy eoa"); + // Deploy EOA + state + .load_contract_at_address( + eoa_class_hash, + eoa_address.clone(), + "starknet_programs/kakarot/contracts_AccountContract.cairo", + ) + .unwrap(); + dbg!("deploy contract account"); + // Deploy Contract Account + state + .load_contract_at_address( + contract_account_class_hash, + contract_account_address.clone(), + "starknet_programs/kakarot/contracts_AccountContract.cairo", + ) + .unwrap(); + + dbg!("uninit account"); + // Declare uninitialized account class hash + state + .load_contract( + uninitialized_account_class_hash, + "starknet_programs/kakarot/contracts_UninitializedAccount.cairo", + ) + .unwrap(); + + dbg!("perepare storage"); + // Prepare storage for Kakarot + let kakarot_storage = vec![ + // Add the EOA to the address registry + ( + ( + kakarot_address.clone(), + compute_storage_key("Kakarot_evm_to_starknet_address", &[eoa_evm_address]), + ), + eoa_address.0, + ), + ( + // Add the contract account to the address registry + ( + kakarot_address.clone(), + compute_storage_key( + "Kakarot_evm_to_starknet_address", + &[contract_account_evm_address], + ), + ), + contract_account_address.0, + ), + ( + ( + kakarot_address.clone(), + compute_storage_key("Kakarot_uninitialized_account_class_hash", &[]), + ), + Felt252::from_bytes_be(&uninitialized_account_class_hash.0), + ), + ( + ( + kakarot_address.clone(), + compute_storage_key("Kakarot_account_contract_class_hash", &[]), + ), + Felt252::from_bytes_be(&contract_account_class_hash.0), + ), + ( + ( + kakarot_address.clone(), + compute_storage_key("Kakarot_native_token_address", &[]), + ), + fee_token_address.0, + ), + ( + ( + kakarot_address.clone(), + compute_storage_key("Kakarot_coinbase", &[]), + ), + eoa_address.0, + ), + ( + ( + kakarot_address.clone(), + compute_storage_key("Kakarot_base_fee", &[]), + ), + Felt252::ONE, + ), + ( + ( + kakarot_address.clone(), + compute_storage_key("Kakarot_prev_randao", &[]), + ), + Felt252::ZERO, + ), + ( + ( + kakarot_address.clone(), + compute_storage_key("Kakarot_block_gas_limit", &[]), + ), + Felt252::MAX, + ), + ( + ( + kakarot_address.clone(), + compute_storage_key("Ownable_owner", &[]), + ), + eoa_address.0, + ), + ]; + + // Prepare storage for EOA + let eoa_storage = vec![ + // Set the bytecode + ((eoa_address.clone(), bytecode_storage_key), Felt252::ZERO), + ( + ( + eoa_address.clone(), + compute_storage_key("Account_storage", &[]), + ), + Felt252::ZERO, + ), + ( + ( + eoa_address.clone(), + compute_storage_key("Account_is_initialized", &[]), + ), + Felt252::ONE, + ), + ( + ( + eoa_address.clone(), + compute_storage_key("Account_nonce", &[]), + ), + eoa_nonce, + ), + ( + ( + eoa_address.clone(), + compute_storage_key("Account_implementation", &[]), + ), + Felt252::from_bytes_be(&eoa_class_hash.0), + ), + ( + ( + eoa_address.clone(), + compute_storage_key("Account_evm_address", &[]), + ), + eoa_address.0, + ), + ( + ( + eoa_address.clone(), + compute_storage_key("Ownable_owner", &[]), + ), + kakarot_address.0, + ), + ]; + + // Prepare storage for Contract Account + let contract_account_storage = vec![ + // Set the bytecode + ( + (contract_account_address.clone(), bytecode_storage_key), + bytecode, + ), + ( + ( + contract_account_address.clone(), + compute_storage_key("Account_storage", &[]), + ), + Felt252::ZERO, + ), + ( + ( + contract_account_address.clone(), + compute_storage_key("Account_is_initialized", &[]), + ), + Felt252::ONE, + ), + ( + ( + contract_account_address.clone(), + compute_storage_key("Account_nonce", &[]), + ), + contract_nonce, + ), + ( + ( + contract_account_address.clone(), + compute_storage_key("Account_implementation", &[]), + ), + Felt252::from_bytes_be(&kakarot_class_hash.0), + ), + ( + ( + contract_account_address.clone(), + compute_storage_key("Account_evm_address", &[]), + ), + contract_account_evm_address, + ), + ( + ( + contract_account_address.clone(), + compute_storage_key("Ownable_owner", &[]), + ), + kakarot_address.0, + ), + ]; + + // Set the initial storage + let mut state = state.finalize_with_starknet_os_config(StarknetOsConfig::new( + chain_id, + FeeTokenAddresses::new(fee_token_address.clone(), fee_token_address), + Default::default(), + )); + + let storage = [kakarot_storage, eoa_storage, contract_account_storage].concat(); + for (k, v) in storage { + state.insert_initial_storage_value((k.0, k.1.to_bytes_be()), v); + } + + // Prepare the evm transaction + let mut transaction = TransactionSigned { + hash: B256::default(), + signature: Signature::default(), + transaction: reth_primitives::Transaction::Eip1559(reth_primitives::TxEip1559 { + chain_id: *chain_id.to_le_digits().first().unwrap(), + nonce: 0, + gas_limit: 1_000_000, + max_fee_per_gas: 0, + max_priority_fee_per_gas: 0, + to: reth_primitives::TransactionKind::Call(contract_address), + value: U256::from(u8::MIN), + access_list: AccessList::default(), + input: Bytes::default(), + }), + }; + let signature = sign_message(private_key, transaction.transaction.signature_hash()).unwrap(); + transaction.signature = signature; + + // Prepare the starknet transaction + let mut calldata: Vec = vec![]; + transaction + .transaction + .encode_without_signature(&mut calldata); + let mut calldata: Vec = calldata.into_iter().map(Felt252::from).collect::>(); + let mut execute_calldata = vec![ + Felt252::ONE, // call array length + kakarot_address.0, // contract address + Felt252::from_bytes_be(&calculate_sn_keccak(b"eth_send_transaction")), // selector + Felt252::from(calldata.len()), // calldata length + ]; + execute_calldata.append(&mut calldata); + + let [r_low, r_high] = split_u256(signature.r); + let [s_low, s_high] = split_u256(signature.s); + let signature = [r_low, r_high, s_low, s_high, signature.odd_y_parity as u128] + .into_iter() + .map(Felt252::from) + .collect::>(); + + let tx = Transaction::InvokeFunction( + InvokeFunction::new( + eoa_address, + *EXECUTE_ENTRY_POINT_SELECTOR, + VersionSpecificAccountTxFields::Deprecated(0), + Felt252::ONE, + execute_calldata, + signature, + chain_id, + Some(Felt252::ZERO), + ) + .unwrap(), + ); + + let tx = tx.create_for_simulation(false, false, true, true, true); + + dbg!("executing tx"); + let execution_result = state.execute_transaction(tx).unwrap(); + dbg!("after executing tx"); + assert!(execution_result.revert_error.is_none()); + + // Check that the storage var was updated (contract bytecode should update storage var at key 0u256 to 1) + let low_key = compute_poseidon_storage_base_address( + "contract_account_storage_keys", + &[Felt252::ZERO, Felt252::ZERO], + ); + let (_, value) = state.storage_writes_at((contract_account_address, low_key.to_bytes_be())); + assert!(value.is_some()); + assert_eq!(value.unwrap(), Felt252::ONE); +} + +fn compute_storage_key(key: &str, args: &[Felt252]) -> Felt252 { + let args = args + .iter() + .map(|arg| felt_to_field_element(arg).unwrap()) + .collect::>(); + field_element_to_felt(&get_storage_var_address(key, &args).unwrap()) +} + +fn compute_starknet_address( + evm_address: &Felt252, + kakarot_address: &Felt252, + account_class_hash: &Felt252, +) -> Felt252 { + let salt = felt_to_field_element(evm_address).unwrap(); + let class_hash = felt_to_field_element(account_class_hash).unwrap(); + let deployer_address = felt_to_field_element(kakarot_address).unwrap(); + + let constructor_args = vec![deployer_address, salt]; + + let starknet_address = + get_contract_address(salt, class_hash, &constructor_args, deployer_address); + + field_element_to_felt(&starknet_address) +} + +fn split_u256(value: U256) -> [u128; 2] { + [ + (value & U256::from(u128::MAX)).try_into().unwrap(), // safe unwrap <= U128::MAX. + (value >> U256::from(128)).try_into().unwrap(), // safe unwrap <= U128::MAX. + ] +} + +fn compute_poseidon_storage_base_address(storage_var_name: &str, keys: &[Felt252]) -> Felt252 { + let selector = starknet_keccak(storage_var_name.as_bytes()); + + let data: Vec<_> = keys + .iter() + .filter_map(|d| felt_to_field_element(d).ok()) + .collect(); + let data = [vec![selector], data].concat(); + + let key = poseidon_hash_many(&data); + let key = field_element_to_felt(&key); + + key.mod_floor( + &Felt252::from_bytes_le_slice(&L2_ADDRESS_UPPER_BOUND.to_bytes_be()) + .try_into() + .unwrap(), + ) +} diff --git a/tests/integration_tests/complex_contracts/mod.rs b/tests/integration_tests/complex_contracts/mod.rs index 1131126f3..3360c0143 100644 --- a/tests/integration_tests/complex_contracts/mod.rs +++ b/tests/integration_tests/complex_contracts/mod.rs @@ -1,4 +1,5 @@ pub mod amm_contracts; pub mod erc20; +pub mod kakarot; pub mod nft; pub mod utils; diff --git a/tests/integration_tests/complex_contracts/nft/erc721.rs b/tests/integration_tests/complex_contracts/nft/erc721.rs index 4688d91cf..b83bf7049 100644 --- a/tests/integration_tests/complex_contracts/nft/erc721.rs +++ b/tests/integration_tests/complex_contracts/nft/erc721.rs @@ -1,11 +1,7 @@ use crate::integration_tests::complex_contracts::utils::*; use assert_matches::assert_matches; use cairo_vm::{ - vm::runners::{ - builtin_runner::{HASH_BUILTIN_NAME, RANGE_CHECK_BUILTIN_NAME}, - cairo_runner::ExecutionResources, - }, - Felt252, + types::builtin_name::BuiltinName, vm::runners::cairo_runner::ExecutionResources, Felt252, }; use starknet_crypto::FieldElement; @@ -150,8 +146,8 @@ fn erc721_balance_of_test() { n_steps: 105, n_memory_holes: 10, builtin_instance_counter: HashMap::from([ - (RANGE_CHECK_BUILTIN_NAME.to_string(), 3), - (HASH_BUILTIN_NAME.to_string(), 1), + (BuiltinName::range_check, 3), + (BuiltinName::keccak, 1), ]), }), class_hash: Some(class_hash), @@ -232,8 +228,8 @@ fn erc721_test_owner_of() { n_steps: 116, n_memory_holes: 10, builtin_instance_counter: HashMap::from([ - (RANGE_CHECK_BUILTIN_NAME.to_string(), 5), - (HASH_BUILTIN_NAME.to_string(), 2), + (BuiltinName::range_check, 5), + (BuiltinName::keccak, 2), ]), }), class_hash: Some(class_hash), @@ -331,8 +327,8 @@ fn erc721_test_get_approved() { n_steps: 192, n_memory_holes: 20, builtin_instance_counter: HashMap::from([ - (RANGE_CHECK_BUILTIN_NAME.to_string(), 8), - (HASH_BUILTIN_NAME.to_string(), 4), + (BuiltinName::range_check, 8), + (BuiltinName::keccak, 4), ]), }), class_hash: Some(class_hash), @@ -433,8 +429,8 @@ fn erc721_test_is_approved_for_all() { n_steps: 101, n_memory_holes: 10, builtin_instance_counter: HashMap::from([ - (RANGE_CHECK_BUILTIN_NAME.to_string(), 3), - (HASH_BUILTIN_NAME.to_string(), 2), + (BuiltinName::range_check, 3), + (BuiltinName::keccak, 2), ]), }), class_hash: Some(class_hash), @@ -536,8 +532,8 @@ fn erc721_test_approve() { n_steps: 332, n_memory_holes: 30, builtin_instance_counter: HashMap::from([ - (RANGE_CHECK_BUILTIN_NAME.to_string(), 13), - (HASH_BUILTIN_NAME.to_string(), 6), + (BuiltinName::range_check, 13), + (BuiltinName::keccak, 6), ]), }), class_hash: Some(class_hash), @@ -634,8 +630,8 @@ fn erc721_set_approval_for_all() { n_steps: 154, n_memory_holes: 10, builtin_instance_counter: HashMap::from([ - (RANGE_CHECK_BUILTIN_NAME.to_string(), 3), - (HASH_BUILTIN_NAME.to_string(), 2), + (BuiltinName::range_check, 3), + (BuiltinName::keccak, 2), ]), }), class_hash: Some(class_hash), @@ -784,8 +780,8 @@ fn erc721_transfer_from_test() { n_steps: 1131, n_memory_holes: 117, builtin_instance_counter: HashMap::from([ - (RANGE_CHECK_BUILTIN_NAME.to_string(), 53), - (HASH_BUILTIN_NAME.to_string(), 16), + (BuiltinName::range_check, 53), + (BuiltinName::keccak, 16), ]), }), ..Default::default() @@ -875,8 +871,8 @@ fn erc721_transfer_from_and_get_owner_test() { n_steps: 116, n_memory_holes: 10, builtin_instance_counter: HashMap::from([ - (RANGE_CHECK_BUILTIN_NAME.to_string(), 5), - (HASH_BUILTIN_NAME.to_string(), 2), + (BuiltinName::range_check, 5), + (BuiltinName::keccak, 2), ]), }), ..Default::default() diff --git a/tests/integration_tests/delegate_call.rs b/tests/integration_tests/delegate_call.rs index ee044f0df..fc0befc41 100644 --- a/tests/integration_tests/delegate_call.rs +++ b/tests/integration_tests/delegate_call.rs @@ -59,7 +59,7 @@ fn delegate_call() { let test_delegate_call_selector = *entry_points_by_type .get(&EntryPointType::External) .unwrap() - .get(0) + .first() .unwrap() .selector(); diff --git a/tests/integration_tests/deploy_account.rs b/tests/integration_tests/deploy_account.rs index c206ca5b1..e94a4f4b0 100644 --- a/tests/integration_tests/deploy_account.rs +++ b/tests/integration_tests/deploy_account.rs @@ -1,3 +1,4 @@ +use cairo_vm::types::builtin_name::BuiltinName; use cairo_vm::{vm::runners::cairo_runner::ExecutionResources, Felt252}; use lazy_static::lazy_static; use pretty_assertions_sorted::assert_eq; @@ -231,10 +232,9 @@ fn internal_deploy_account_cairo1() { n_memory_holes: 2, builtin_instance_counter: [ - ("range_check_builtin", 2), + (BuiltinName::range_check, 2), ] .into_iter() - .map(|(k, v)| (k.to_string(), v)) .collect(), }), @@ -257,10 +257,9 @@ fn internal_deploy_account_cairo1() { n_memory_holes: 0, builtin_instance_counter: [ - ("range_check_builtin", 2), + (BuiltinName::range_check, 2), ] .into_iter() - .map(|(k, v)| (k.to_string(), v)) .collect(), }), ..Default::default() diff --git a/tests/integration_tests/fibonacci.rs b/tests/integration_tests/fibonacci.rs index 5f87ec2cf..da0c6749c 100644 --- a/tests/integration_tests/fibonacci.rs +++ b/tests/integration_tests/fibonacci.rs @@ -1,9 +1,8 @@ // #![deny(warnings)] -use cairo_lang_starknet::casm_contract_class::CasmContractClass; +use cairo_lang_starknet_classes::casm_contract_class::CasmContractClass; use cairo_vm::{ - vm::runners::{builtin_runner::RANGE_CHECK_BUILTIN_NAME, cairo_runner::ExecutionResources}, - Felt252, + types::builtin_name::BuiltinName, vm::runners::cairo_runner::ExecutionResources, Felt252, }; use pretty_assertions_sorted::assert_eq; @@ -39,7 +38,7 @@ fn integration_test() { let fib_entrypoint_selector = *entry_points_by_type .get(&EntryPointType::External) .unwrap() - .get(0) + .first() .unwrap() .selector(); @@ -148,7 +147,7 @@ fn integration_test_cairo1() { let program_data = include_bytes!("../../starknet_programs/cairo2/fibonacci.casm"); let contract_class: CasmContractClass = serde_json::from_slice(program_data).unwrap(); let entrypoints = contract_class.clone().entry_points_by_type; - let fib_entrypoint_selector = &entrypoints.external.get(0).unwrap().selector; + let fib_entrypoint_selector = &entrypoints.external.first().unwrap().selector; // Create state reader with class hash data let contract_class_cache = PermanentContractClassCache::default(); @@ -216,7 +215,7 @@ fn integration_test_cairo1() { execution_resources: Some(ExecutionResources { n_steps: 301, n_memory_holes: 0, - builtin_instance_counter: HashMap::from([(RANGE_CHECK_BUILTIN_NAME.to_string(), 15)]), + builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 15)]), }), class_hash: Some(class_hash), gas_consumed: 23020, diff --git a/tests/integration_tests/increase_balance.rs b/tests/integration_tests/increase_balance.rs index 4a87ef619..0256e57fc 100644 --- a/tests/integration_tests/increase_balance.rs +++ b/tests/integration_tests/increase_balance.rs @@ -36,7 +36,7 @@ fn hello_starknet_increase_balance() { let increase_balance_selector = *entry_points_by_type .get(&EntryPointType::External) .unwrap() - .get(0) + .first() .unwrap() .selector(); diff --git a/tests/integration_tests/internals.rs b/tests/integration_tests/internals.rs index ab57bca42..36e331cc2 100644 --- a/tests/integration_tests/internals.rs +++ b/tests/integration_tests/internals.rs @@ -1,8 +1,8 @@ // This module tests our code against the blockifier to ensure they work in the same way. use assert_matches::assert_matches; -use cairo_lang_starknet::contract_class::ContractClass as SierraContractClass; +use cairo_lang_starknet_classes::contract_class::ContractClass as SierraContractClass; use cairo_vm::{ - vm::runners::builtin_runner::{HASH_BUILTIN_NAME, RANGE_CHECK_BUILTIN_NAME}, + types::builtin_name::BuiltinName, vm::{ errors::{ cairo_run_errors::CairoRunError, vm_errors::VirtualMachineError, @@ -501,8 +501,8 @@ fn expected_fee_transfer_call_info( n_steps: 529, n_memory_holes: 57, builtin_instance_counter: HashMap::from([ - (RANGE_CHECK_BUILTIN_NAME.to_string(), 21), - (HASH_BUILTIN_NAME.to_string(), 4), + (BuiltinName::range_check, 21), + (BuiltinName::keccak, 4), ]), }), ..Default::default() @@ -662,8 +662,8 @@ fn expected_fee_transfer_info(fee: u128) -> CallInfo { n_steps: 525, n_memory_holes: 59, builtin_instance_counter: HashMap::from([ - (RANGE_CHECK_BUILTIN_NAME.to_string(), 21), - (HASH_BUILTIN_NAME.to_string(), 4), + (BuiltinName::range_check, 21), + (BuiltinName::keccak, 4), ]), }), l2_to_l1_messages: vec![], @@ -738,8 +738,8 @@ fn expected_fib_fee_transfer_info(fee: u128) -> CallInfo { n_steps: 525, n_memory_holes: 59, builtin_instance_counter: HashMap::from([ - ("range_check_builtin".to_string(), 21), - ("pedersen_builtin".to_string(), 4), + (BuiltinName::range_check, 21), + (BuiltinName::pedersen, 4), ]), }), l2_to_l1_messages: vec![], @@ -821,7 +821,8 @@ fn declarev2_tx() -> Declare { let sierra_contract_class: SierraContractClass = serde_json::from_slice(program_data).unwrap(); let sierra_class_hash = compute_sierra_class_hash(&sierra_contract_class).unwrap(); let casm_class = - CasmContractClass::from_contract_class(sierra_contract_class.clone(), true).unwrap(); + CasmContractClass::from_contract_class(sierra_contract_class.clone(), true, usize::MAX) + .unwrap(); let casm_class_hash = compute_casm_class_hash(&casm_class).unwrap(); Declare { @@ -846,7 +847,8 @@ fn declarev2_tx() -> Declare { fn deploy_fib_syscall() -> Deploy { let program_data = include_bytes!("../../starknet_programs/cairo2/fibonacci.sierra"); let sierra_contract_class: SierraContractClass = serde_json::from_slice(program_data).unwrap(); - let casm_class = CasmContractClass::from_contract_class(sierra_contract_class, true).unwrap(); + let casm_class = + CasmContractClass::from_contract_class(sierra_contract_class, true, usize::MAX).unwrap(); let contract_class = CompiledClass::Casm { casm: Arc::new(casm_class), sierra: None, @@ -933,8 +935,8 @@ fn expected_declare_fee_transfer_info(fee: u128) -> CallInfo { n_steps: 525, n_memory_holes: 59, builtin_instance_counter: HashMap::from([ - (RANGE_CHECK_BUILTIN_NAME.to_string(), 21), - (HASH_BUILTIN_NAME.to_string(), 4), + (BuiltinName::range_check, 21), + (BuiltinName::keccak, 4), ]), }), ..Default::default() @@ -1005,7 +1007,7 @@ fn test_declare_tx() { let resources = HashMap::from([ ("n_steps".to_string(), 2921), - ("range_check_builtin".to_string(), 63), + (BuiltinName::range_check.to_str().to_string(), 63), ("pedersen_builtin".to_string(), 15), ("l1_gas_usage".to_string(), 1652), ]); @@ -1104,7 +1106,7 @@ fn test_declarev2_tx() { let resources = HashMap::from([ ("n_steps".to_string(), 2921), - ("range_check_builtin".to_string(), 63), + (BuiltinName::range_check.to_str().to_string(), 63), ("pedersen_builtin".to_string(), 15), ("l1_gas_usage".to_string(), 2754), ]); @@ -1182,7 +1184,7 @@ fn expected_execute_call_info() -> CallInfo { execution_resources: Some(ExecutionResources { n_steps: 61, n_memory_holes: 0, - builtin_instance_counter: HashMap::from([(RANGE_CHECK_BUILTIN_NAME.to_string(), 1)]), + builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 1)]), }), ..Default::default() } @@ -1209,7 +1211,7 @@ fn expected_fib_execute_call_info() -> CallInfo { execution_resources: Some(ExecutionResources { n_steps: 148, n_memory_holes: 0, - builtin_instance_counter: HashMap::from([("range_check_builtin".to_string(), 4)]), + builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 4)]), }), l2_to_l1_messages: vec![], internal_calls: vec![CallInfo { @@ -1229,7 +1231,7 @@ fn expected_fib_execute_call_info() -> CallInfo { execution_resources: Some(ExecutionResources { n_steps: 109, n_memory_holes: 0, - builtin_instance_counter: HashMap::from([("range_check_builtin".to_string(), 3)]), + builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 3)]), }), ..Default::default() }], @@ -1256,7 +1258,7 @@ fn expected_validate_call_info_2() -> CallInfo { execution_resources: Some(ExecutionResources { n_steps: 21, n_memory_holes: 0, - builtin_instance_counter: HashMap::from([(RANGE_CHECK_BUILTIN_NAME.to_string(), 1)]), + builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 1)]), }), ..Default::default() } @@ -1281,7 +1283,7 @@ fn expected_fib_validate_call_info_2() -> CallInfo { execution_resources: Some(ExecutionResources { n_steps: 21, n_memory_holes: 0, - builtin_instance_counter: HashMap::from([("range_check_builtin".to_string(), 1)]), + builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 1)]), }), ..Default::default() } @@ -1292,7 +1294,7 @@ fn expected_transaction_execution_info(block_context: &BlockContext) -> Transact ("n_steps".to_string(), 4463), ("pedersen_builtin".to_string(), 16), ("l1_gas_usage".to_string(), 1652), - ("range_check_builtin".to_string(), 102), + (BuiltinName::range_check.to_str().to_string(), 102), ]); let fee = calculate_tx_fee(&resources, block_context, &FeeType::Eth).unwrap(); TransactionExecutionInfo::new( @@ -1314,7 +1316,7 @@ fn expected_fib_transaction_execution_info( ("n_steps".to_string(), n_steps), ("l1_gas_usage".to_string(), 5197), ("pedersen_builtin".to_string(), 16), - ("range_check_builtin".to_string(), 105), + (BuiltinName::range_check.to_str().to_string(), 105), ]); let fee = calculate_tx_fee(&resources, block_context, &FeeType::Eth).unwrap(); TransactionExecutionInfo::new( @@ -1677,7 +1679,7 @@ fn test_deploy_account() { let resources = HashMap::from([ ("n_steps".to_string(), 3893), - ("range_check_builtin".to_string(), 83), + (BuiltinName::range_check.to_str().to_string(), 83), ("pedersen_builtin".to_string(), 23), ("l1_gas_usage".to_string(), 2203), ]); @@ -2226,7 +2228,7 @@ fn test_library_call_with_declare_v2() { let program_data = include_bytes!("../../starknet_programs/cairo2/fibonacci_dispatcher.casm"); let contract_class: CasmContractClass = serde_json::from_slice(program_data).unwrap(); let entrypoints = contract_class.clone().entry_points_by_type; - let external_entrypoint_selector = &entrypoints.external.get(0).unwrap().selector; + let external_entrypoint_selector = &entrypoints.external.first().unwrap().selector; let address = Address(6666.into()); let mut class_hash: ClassHash = ClassHash([0; 32]); @@ -2253,7 +2255,7 @@ fn test_library_call_with_declare_v2() { ) .unwrap(); - let create_execute_extrypoint = |selector: &BigUint, + let create_execute_entrypoint = |selector: &BigUint, calldata: Vec, entry_point_type: EntryPointType| -> ExecutionEntryPoint { @@ -2277,7 +2279,7 @@ fn test_library_call_with_declare_v2() { 1.into(), 10.into(), ]; - let send_message_exec_entry_point = create_execute_extrypoint( + let send_message_exec_entry_point = create_execute_entrypoint( external_entrypoint_selector, calldata.clone(), EntryPointType::External, @@ -2323,7 +2325,7 @@ fn test_library_call_with_declare_v2() { execution_resources: Some(ExecutionResources { n_steps: 269, n_memory_holes: 0, - builtin_instance_counter: HashMap::from([("range_check_builtin".to_string(), 13)]), + builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 13)]), }), ..Default::default() }; @@ -2341,7 +2343,7 @@ fn test_library_call_with_declare_v2() { execution_resources: Some(ExecutionResources { n_steps: 463, n_memory_holes: 1, - builtin_instance_counter: HashMap::from([("range_check_builtin".to_string(), 16)]), + builtin_instance_counter: HashMap::from([(BuiltinName::range_check, 16)]), }), internal_calls: vec![expected_internal_call_info], ..Default::default() diff --git a/tests/integration_tests/multi_syscall_test.rs b/tests/integration_tests/multi_syscall_test.rs index 2ed158d3c..194a316cb 100644 --- a/tests/integration_tests/multi_syscall_test.rs +++ b/tests/integration_tests/multi_syscall_test.rs @@ -1,4 +1,4 @@ -use cairo_lang_starknet::casm_contract_class::CasmContractClass; +use cairo_lang_starknet_classes::casm_contract_class::CasmContractClass; use cairo_vm::Felt252; use starknet_in_rust::{ diff --git a/tests/integration_tests/storage.rs b/tests/integration_tests/storage.rs index 805cea6be..32de39a95 100644 --- a/tests/integration_tests/storage.rs +++ b/tests/integration_tests/storage.rs @@ -33,7 +33,7 @@ fn integration_storage_test() { let storage_entrypoint_selector = *entry_points_by_type .get(&EntryPointType::External) .unwrap() - .get(0) + .first() .unwrap() .selector(); diff --git a/tests/integration_tests/syscalls.rs b/tests/integration_tests/syscalls.rs index 12b53206a..3989d3948 100644 --- a/tests/integration_tests/syscalls.rs +++ b/tests/integration_tests/syscalls.rs @@ -1,12 +1,8 @@ #![deny(warnings)] -use cairo_lang_starknet::casm_contract_class::CasmContractClass; +use cairo_lang_starknet_classes::casm_contract_class::CasmContractClass; use cairo_vm::{ - vm::runners::{ - builtin_runner::{BITWISE_BUILTIN_NAME, HASH_BUILTIN_NAME, RANGE_CHECK_BUILTIN_NAME}, - cairo_runner::ExecutionResources, - }, - Felt252, + types::builtin_name::BuiltinName, vm::runners::cairo_runner::ExecutionResources, Felt252, }; use pretty_assertions_sorted::{assert_eq, assert_eq_sorted}; use starknet_in_rust::{ @@ -1444,7 +1440,7 @@ fn deploy_cairo1_and_invoke() { let calldata = [3.into()].to_vec(); let entrypoints = test_contract_class.entry_points_by_type; - let entrypoint_selector = &entrypoints.external.get(0).unwrap().selector; + let entrypoint_selector = &entrypoints.external.first().unwrap().selector; let exec_entry_point = ExecutionEntryPoint::new( ret_address, @@ -1665,9 +1661,9 @@ fn run_rabbitx_withdraw() { n_steps: 1115, n_memory_holes: 77, builtin_instance_counter: HashMap::from([ - (RANGE_CHECK_BUILTIN_NAME.to_owned(), 87), - (BITWISE_BUILTIN_NAME.to_owned(), 2), - (HASH_BUILTIN_NAME.to_owned(), 1), + (BuiltinName::range_check, 87), + (BuiltinName::bitwise, 2), + (BuiltinName::keccak, 1), ]), };