From 5b698ac8fffc513221bb7ff215c83587eaeb545c Mon Sep 17 00:00:00 2001 From: Gregory Edison Date: Wed, 27 Mar 2024 13:27:32 +0100 Subject: [PATCH 01/30] update makefile --- .gitignore | 4 +- Cargo.lock | 1014 +++++++++++++++++++++++++++++++++++++++++-- Cargo.toml | 3 +- Makefile | 39 ++ rust-toolchain.toml | 2 +- 5 files changed, 1011 insertions(+), 51 deletions(-) diff --git a/.gitignore b/.gitignore index 4dc5528c4..05172e267 100644 --- a/.gitignore +++ b/.gitignore @@ -46,6 +46,8 @@ starknet-venv/ starknet_programs/cairo2/*.casm starknet_programs/cairo2/*.sierra +starknet_programs/kakarot/*.casm +starknet_programs/kakarot/*.sierra default.profraw **.DS_Store /scripts/reports @@ -56,4 +58,4 @@ 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/ diff --git a/Cargo.lock b/Cargo.lock index b0211fd6e..2704975f9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -66,6 +66,137 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" +[[package]] +name = "alloy-chains" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e96c81b05c893348760f232c4cc6a6a77fd91cfb09885d4eaad25cd03bd7732e" +dependencies = [ + "alloy-rlp", + "num_enum", + "serde", + "strum 0.26.2", +] + +[[package]] +name = "alloy-eips" +version = "0.1.0" +source = "git+https://github.com/alloy-rs/alloy?rev=a4453d4#a4453d42ffb755a46bace2ceca3baa454e0cd807" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "thiserror", +] + +[[package]] +name = "alloy-genesis" +version = "0.1.0" +source = "git+https://github.com/alloy-rs/alloy?rev=a4453d4#a4453d42ffb755a46bace2ceca3baa454e0cd807" +dependencies = [ + "alloy-primitives", + "alloy-rpc-types", + "serde", +] + +[[package]] +name = "alloy-primitives" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "600d34d8de81e23b6d909c094e23b3d357e01ca36b78a8c5424c501eedbe86f0" +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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d58d9f5da7b40e9bfff0b7e7816700be4019db97d4b6359fe7f94a9e22e42ac" +dependencies = [ + "alloy-rlp-derive", + "arrayvec", + "bytes", +] + +[[package]] +name = "alloy-rlp-derive" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a047897373be4bbb0224c1afdabca92648dc57a9c9ef6e7b0be3aff7a859c83" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.51", +] + +[[package]] +name = "alloy-rpc-engine-types" +version = "0.1.0" +source = "git+https://github.com/alloy-rs/alloy?rev=a4453d4#a4453d42ffb755a46bace2ceca3baa454e0cd807" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types", + "jsonrpsee-types", + "serde", + "thiserror", +] + +[[package]] +name = "alloy-rpc-trace-types" +version = "0.1.0" +source = "git+https://github.com/alloy-rs/alloy?rev=a4453d4#a4453d42ffb755a46bace2ceca3baa454e0cd807" +dependencies = [ + "alloy-primitives", + "alloy-rpc-types", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-rpc-types" +version = "0.1.0" +source = "git+https://github.com/alloy-rs/alloy?rev=a4453d4#a4453d42ffb755a46bace2ceca3baa454e0cd807" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "itertools 0.12.1", + "jsonrpsee-types", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "alloy-trie" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59974c3c7778ebbcd73356a430fd4608aaf0630b1fdb4f5337bfd70f40b66618" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "derive_more", + "hashbrown 0.14.3", + "nybbles", + "serde", + "smallvec", + "tracing", +] + [[package]] name = "android-tzdata" version = "0.1.1" @@ -147,10 +278,10 @@ 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", @@ -158,26 +289,54 @@ dependencies = [ "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.18", + "paste", + "rustc_version 0.3.3", + "zeroize", +] + [[package]] name = "ark-ff" 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", "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 +347,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.18", + "quote", + "syn 1.0.109", +] + [[package]] name = "ark-ff-macros" version = "0.4.2" @@ -207,9 +378,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 +392,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 +403,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 +424,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,6 +440,16 @@ 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.18", + "rand", +] + [[package]] name = "ark-std" version = "0.4.0" @@ -301,6 +492,16 @@ dependencies = [ "syn 2.0.51", ] +[[package]] +name = "aurora-engine-modexp" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfacad86e9e138fca0670949eb8ed4ffdf73a55bded8887efe0863cd1a3a6f70" +dependencies = [ + "hex", + "num", +] + [[package]] name = "auto_impl" version = "1.1.2" @@ -357,6 +558,15 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +[[package]] +name = "beef" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1" +dependencies = [ + "serde", +] + [[package]] name = "bigdecimal" version = "0.3.1" @@ -459,6 +669,9 @@ name = "bitflags" version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" +dependencies = [ + "serde", +] [[package]] name = "bitvec" @@ -468,6 +681,7 @@ checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" dependencies = [ "funty", "radium", + "serde", "tap", "wyz", ] @@ -488,7 +702,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", @@ -514,11 +728,23 @@ dependencies = [ "sha3", "starknet-crypto 0.5.2", "starknet_api", - "strum", - "strum_macros", + "strum 0.24.1", + "strum_macros 0.24.3", "thiserror", ] +[[package]] +name = "blst" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c94087b935a822949d3291a9989ad2b2051ea141eda0fd4e478a75f6aa3e604b" +dependencies = [ + "cc", + "glob", + "threadpool", + "zeroize", +] + [[package]] name = "bumpalo" version = "3.15.3" @@ -542,6 +768,9 @@ name = "bytes" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +dependencies = [ + "serde", +] [[package]] name = "bzip2" @@ -564,6 +793,20 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "c-kzg" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94a4bc5367b6284358d2a6a6a1dc2d92ec4b86034561c3b9d3341909752fd848" +dependencies = [ + "blst", + "cc", + "glob", + "hex", + "libc", + "serde", +] + [[package]] name = "cached" version = "0.44.0" @@ -806,10 +1049,10 @@ version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95ccd9dce6f931508a21ac4d29965dadcaf7c22bbf2a237239763128b8647a53" 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-sierra", @@ -1074,7 +1317,7 @@ dependencies = [ [[package]] name = "cairo-native" version = "0.1.0" -source = "git+https://github.com/lambdaclass/cairo_native?rev=baf57d2dde0036ac4848fc40c672826fb7ffcde4#baf57d2dde0036ac4848fc40c672826fb7ffcde4" +source = "git+https://github.com/lambdaclass/cairo_native?rev=8fddcd3914badfe3f89752fe7a22befeaffc17f9#8fddcd3914badfe3f89752fe7a22befeaffc17f9" dependencies = [ "anyhow", "bumpalo", @@ -1118,7 +1361,7 @@ dependencies = [ [[package]] name = "cairo-native-runtime" version = "0.1.0" -source = "git+https://github.com/lambdaclass/cairo_native?rev=baf57d2dde0036ac4848fc40c672826fb7ffcde4#baf57d2dde0036ac4848fc40c672826fb7ffcde4" +source = "git+https://github.com/lambdaclass/cairo_native?rev=8fddcd3914badfe3f89752fe7a22befeaffc17f9#8fddcd3914badfe3f89752fe7a22befeaffc17f9" dependencies = [ "cairo-lang-runner", "lazy_static", @@ -1165,8 +1408,8 @@ version = "1.0.0-rc1" source = "git+https://github.com/lambdaclass/cairo-vm?rev=3547089579dd74f815edbc2d1caa91e00fc8a2f7#3547089579dd74f815edbc2d1caa91e00fc8a2f7" dependencies = [ "anyhow", - "ark-ff", - "ark-std", + "ark-ff 0.4.2", + "ark-std 0.4.0", "bincode 2.0.0-rc.3", "bitvec", "cairo-lang-casm", @@ -1292,6 +1535,19 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" +[[package]] +name = "codecs-derive" +version = "0.1.0-alpha.18" +source = "git+https://github.com/paradigmxyz/reth.git?tag=v0.1.0-alpha.18#11dbd0867ed020dad1c6b0763368ecd20d094056" +dependencies = [ + "convert_case 0.6.0", + "parity-scale-codec", + "proc-macro2", + "quote", + "serde", + "syn 2.0.51", +] + [[package]] name = "colorchoice" version = "1.0.0" @@ -1347,6 +1603,19 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32b13ea120a812beba79e34316b3942a857c86ec1593cb34f27bb28272ce2cca" +[[package]] +name = "const-hex" +version = "1.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ba00838774b4ab0233e355d26710fbfc8327a05c017f6dc4873f876d1f79f78" +dependencies = [ + "cfg-if", + "cpufeatures", + "hex", + "proptest", + "serde", +] + [[package]] name = "const-oid" version = "0.9.6" @@ -1434,6 +1703,21 @@ dependencies = [ "libc", ] +[[package]] +name = "crc" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86ec7a15cbe22e59248fc7eadb1907dab5ba09372595da4d73dd805ed4417dfe" +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" @@ -1443,6 +1727,25 @@ 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" @@ -1663,7 +1966,7 @@ dependencies = [ "convert_case 0.4.0", "proc-macro2", "quote", - "rustc_version", + "rustc_version 0.4.0", "syn 1.0.109", ] @@ -1679,6 +1982,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" @@ -1731,7 +2043,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" dependencies = [ "der", - "digest", + "digest 0.10.7", "elliptic-curve", "rfc6979", "signature", @@ -1764,7 +2076,7 @@ checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" dependencies = [ "base16ct", "crypto-bigint", - "digest", + "digest 0.10.7", "ff", "generic-array", "group", @@ -1826,6 +2138,17 @@ dependencies = [ "syn 2.0.51", ] +[[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.51", +] + [[package]] name = "equivalent" version = "1.0.1" @@ -1850,7 +2173,7 @@ checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab" dependencies = [ "aes", "ctr", - "digest", + "digest 0.10.7", "hex", "hmac", "pbkdf2", @@ -1907,6 +2230,17 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" +[[package]] +name = "fastrlp" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + [[package]] name = "ff" version = "0.13.0" @@ -2205,6 +2539,15 @@ 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 +2555,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest", + "digest 0.10.7", ] [[package]] @@ -2233,7 +2576,7 @@ dependencies = [ "arbitrary", "lazy_static", "memmap2", - "rustc_version", + "rustc_version 0.4.0", ] [[package]] @@ -2524,6 +2867,20 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "jsonrpsee-types" +version = "0.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be0be325642e850ed0bdff426674d2e66b2b7117c9be23a7caef68a2902b7d9" +dependencies = [ + "anyhow", + "beef", + "serde", + "serde_json", + "thiserror", + "tracing", +] + [[package]] name = "k256" version = "0.13.3" @@ -2548,7 +2905,17 @@ dependencies = [ ] [[package]] -name = "lalrpop" +name = "keccak-asm" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb8515fff80ed850aea4a1595f2e519c003e2a00a82fe168ebf5269196caf444" +dependencies = [ + "digest 0.10.7", + "sha3-asm", +] + +[[package]] +name = "lalrpop" version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da4081d44f4611b66c6dd725e6de3169f9f63905421e8626fcb86b6a898998b8" @@ -2632,6 +2999,12 @@ dependencies = [ "windows-sys 0.48.0", ] +[[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" @@ -2685,7 +3058,7 @@ dependencies = [ "lazy_static", "libc", "regex-lite", - "semver", + "semver 1.0.22", ] [[package]] @@ -2867,6 +3240,27 @@ dependencies = [ "bindgen 0.68.1", ] +[[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]] name = "ndarray" version = "0.13.1" @@ -2874,7 +3268,7 @@ 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", "rawpointer", @@ -2906,6 +3300,20 @@ dependencies = [ "winapi", ] +[[package]] +name = "num" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" +dependencies = [ + "num-bigint", + "num-complex 0.4.5", + "num-integer", + "num-iter", + "num-rational", + "num-traits 0.2.18", +] + [[package]] name = "num-bigint" version = "0.4.4" @@ -2929,6 +3337,15 @@ dependencies = [ "num-traits 0.2.18", ] +[[package]] +name = "num-complex" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6" +dependencies = [ + "num-traits 0.2.18", +] + [[package]] name = "num-conv" version = "0.1.0" @@ -2944,6 +3361,17 @@ dependencies = [ "num-traits 0.2.18", ] +[[package]] +name = "num-iter" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9" +dependencies = [ + "autocfg", + "num-integer", + "num-traits 0.2.18", +] + [[package]] name = "num-modular" version = "0.5.1" @@ -2971,6 +3399,18 @@ dependencies = [ "rand", ] +[[package]] +name = "num-rational" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +dependencies = [ + "autocfg", + "num-bigint", + "num-integer", + "num-traits 0.2.18", +] + [[package]] name = "num-traits" version = "0.1.43" @@ -2987,6 +3427,38 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" dependencies = [ "autocfg", + "libm", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.51", ] [[package]] @@ -2995,6 +3467,19 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" +[[package]] +name = "nybbles" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "836816c354fb2c09622b54545a6f98416147346b13cc7eba5f92fab6b3042c93" +dependencies = [ + "alloy-rlp", + "const-hex", + "proptest", + "serde", + "smallvec", +] + [[package]] name = "object" version = "0.32.2" @@ -3074,6 +3559,7 @@ dependencies = [ "arrayvec", "bitvec", "byte-slice-cast", + "bytes", "impl-trait-for-tuples", "parity-scale-codec-derive", "serde", @@ -3168,7 +3654,7 @@ 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", @@ -3195,6 +3681,17 @@ version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +[[package]] +name = "pest" +version = "2.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f8023d0fb78c8e03784ea1c7f3fa36e68a723138990b8d5a47d916b651e7a8" +dependencies = [ + "memchr", + "thiserror", + "ucd-trie", +] + [[package]] name = "petgraph" version = "0.6.4" @@ -3423,6 +3920,32 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "proptest" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf" +dependencies = [ + "bit-set", + "bit-vec", + "bitflags 2.4.2", + "lazy_static", + "num-traits 0.2.18", + "rand", + "rand_chacha", + "rand_xorshift", + "regex-syntax 0.8.2", + "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 = "quick-xml" version = "0.31.0" @@ -3477,12 +4000,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" @@ -3629,6 +4181,148 @@ dependencies = [ "winreg", ] +[[package]] +name = "reth-codecs" +version = "0.1.0-alpha.18" +source = "git+https://github.com/paradigmxyz/reth.git?tag=v0.1.0-alpha.18#11dbd0867ed020dad1c6b0763368ecd20d094056" +dependencies = [ + "alloy-primitives", + "bytes", + "codecs-derive", +] + +[[package]] +name = "reth-ethereum-forks" +version = "0.1.0-alpha.18" +source = "git+https://github.com/paradigmxyz/reth.git?tag=v0.1.0-alpha.18#11dbd0867ed020dad1c6b0763368ecd20d094056" +dependencies = [ + "alloy-chains", + "alloy-primitives", + "alloy-rlp", + "crc", + "serde", + "thiserror", +] + +[[package]] +name = "reth-primitives" +version = "0.1.0-alpha.18" +source = "git+https://github.com/paradigmxyz/reth.git?tag=v0.1.0-alpha.18#11dbd0867ed020dad1c6b0763368ecd20d094056" +dependencies = [ + "alloy-chains", + "alloy-eips", + "alloy-genesis", + "alloy-primitives", + "alloy-rlp", + "alloy-trie", + "byteorder", + "bytes", + "cfg-if", + "derive_more", + "itertools 0.12.1", + "modular-bitfield", + "num_enum", + "nybbles", + "once_cell", + "rayon", + "reth-codecs", + "reth-ethereum-forks", + "reth-rpc-types", + "revm", + "revm-primitives", + "secp256k1 0.27.0", + "serde", + "serde_json", + "sha2", + "smallvec", + "strum 0.26.2", + "sucds", + "tempfile", + "thiserror", + "tracing", + "zstd 0.12.4", +] + +[[package]] +name = "reth-rpc-types" +version = "0.1.0-alpha.18" +source = "git+https://github.com/paradigmxyz/reth.git?tag=v0.1.0-alpha.18#11dbd0867ed020dad1c6b0763368ecd20d094056" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-engine-types", + "alloy-rpc-trace-types", + "alloy-rpc-types", + "bytes", + "itertools 0.12.1", + "jsonrpsee-types", + "secp256k1 0.27.0", + "serde", + "serde_json", + "serde_with 3.6.1", + "thiserror", + "url", +] + +[[package]] +name = "revm" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "266f86bdefa6dac07d92e2f5c37d7d183f2575b2f9e0ee9cba9402dfde912524" +dependencies = [ + "auto_impl", + "cfg-if", + "revm-interpreter", + "revm-precompile", + "serde", + "serde_json", +] + +[[package]] +name = "revm-interpreter" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a80b516cc706630e604e2fd47c281501d2fb222712be4328921361388b7d2df" +dependencies = [ + "revm-primitives", + "serde", +] + +[[package]] +name = "revm-precompile" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db828d49d329560a70809d9d1fa0c74695edb49f50c5332db3eb24483076deac" +dependencies = [ + "aurora-engine-modexp", + "c-kzg", + "k256", + "once_cell", + "revm-primitives", + "ripemd", + "secp256k1 0.28.2", + "sha2", + "substrate-bn", +] + +[[package]] +name = "revm-primitives" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fecd125aad58e135e2ca5771ed6e4e7b1f05fa3a64e0dfb9cc643b7a800a8435" +dependencies = [ + "alloy-primitives", + "auto_impl", + "bitflags 2.4.2", + "bitvec", + "c-kzg", + "cfg-if", + "enumn", + "hashbrown 0.14.3", + "hex", + "serde", +] + [[package]] name = "rfc6979" version = "0.4.0" @@ -3654,6 +4348,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" @@ -3687,6 +4390,36 @@ dependencies = [ "ureq", ] +[[package]] +name = "ruint" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f308135fef9fc398342da5472ce7c484529df23743fb7c734e0f3d472971e62" +dependencies = [ + "alloy-rlp", + "ark-ff 0.3.0", + "ark-ff 0.4.2", + "bytes", + "fastrlp", + "num-bigint", + "num-traits 0.2.18", + "parity-scale-codec", + "primitive-types", + "proptest", + "rand", + "rlp", + "ruint-macro", + "serde", + "valuable", + "zeroize", +] + +[[package]] +name = "ruint-macro" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f86854cf50259291520509879a5c294c3c9a4c334e9ff65071c51e42ef1e2343" + [[package]] name = "rustc-demangle" version = "0.1.23" @@ -3705,13 +4438,22 @@ 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.22", ] [[package]] @@ -3795,6 +4537,18 @@ version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" +[[package]] +name = "rusty-fork" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +dependencies = [ + "fnv", + "quick-error", + "tempfile", + "wait-timeout", +] + [[package]] name = "ryu" version = "1.0.17" @@ -3921,12 +4675,67 @@ 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 = [ + "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" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" +[[package]] +name = "semver-parser" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" +dependencies = [ + "pest", +] + [[package]] name = "serde" version = "1.0.197" @@ -3964,6 +4773,7 @@ version = "1.0.114" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" dependencies = [ + "indexmap 2.2.3", "itoa", "ryu", "serde", @@ -4067,7 +4877,7 @@ checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", "cpufeatures", - "digest", + "digest 0.10.7", ] [[package]] @@ -4078,7 +4888,7 @@ checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", - "digest", + "digest 0.10.7", ] [[package]] @@ -4087,10 +4897,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.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bac61da6b35ad76b195eb4771210f947734321a8d81d7738e1580d953bc7a15e" +dependencies = [ + "cc", + "cfg-if", +] + [[package]] name = "sharded-slab" version = "0.1.7" @@ -4118,7 +4938,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", ] @@ -4152,6 +4972,10 @@ name = "smallvec" version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +dependencies = [ + "arbitrary", + "serde", +] [[package]] name = "smol_str" @@ -4201,7 +5025,7 @@ 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", ] @@ -4361,7 +5185,7 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "067419451efdea1ee968df8438369960c167e0e905c05b84afd074f50e1d6f3d" dependencies = [ - "ark-ff", + "ark-ff 0.4.2", "bigdecimal", "crypto-bigint", "getrandom", @@ -4449,8 +5273,8 @@ dependencies = [ "serde", "serde_json", "starknet-crypto 0.5.2", - "strum", - "strum_macros", + "strum 0.24.1", + "strum_macros 0.24.3", "thiserror", ] @@ -4482,6 +5306,7 @@ dependencies = [ "once_cell", "p256", "pretty_assertions_sorted", + "reth-primitives", "sec1", "serde", "serde_json", @@ -4532,6 +5357,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.2", +] + [[package]] name = "strum_macros" version = "0.24.3" @@ -4545,12 +5379,47 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "strum_macros" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6cf59daf282c0a494ba14fd21610a0325f9f90ec9d1231dea26bcb1d696c946" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.51", +] + +[[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" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +[[package]] +name = "sucds" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64accd20141dfbef67ad83c51d588146cff7810616e1bda35a975be369059533" +dependencies = [ + "anyhow", +] + [[package]] name = "syn" version = "1.0.109" @@ -4757,6 +5626,15 @@ 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" @@ -4994,6 +5872,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 +5890,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" @@ -5136,6 +6026,15 @@ 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" @@ -5566,7 +6465,7 @@ dependencies = [ "pbkdf2", "sha1", "time", - "zstd", + "zstd 0.11.2+zstd.1.5.2", ] [[package]] @@ -5575,7 +6474,16 @@ version = "0.11.2+zstd.1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" dependencies = [ - "zstd-safe", + "zstd-safe 5.0.2+zstd.1.5.2", +] + +[[package]] +name = "zstd" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a27595e173641171fc74a1232b7b1c7a7cb6e18222c11e9dfb9888fa424c53c" +dependencies = [ + "zstd-safe 6.0.6", ] [[package]] @@ -5588,6 +6496,16 @@ dependencies = [ "zstd-sys", ] +[[package]] +name = "zstd-safe" +version = "6.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee98ffd0b48ee95e6c5168188e44a54550b1564d9d530ee21d5f0eaed1069581" +dependencies = [ + "libc", + "zstd-sys", +] + [[package]] name = "zstd-sys" version = "2.0.9+zstd.1.5.5" diff --git a/Cargo.toml b/Cargo.toml index 347a2d31d..3ddd13cf3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -39,7 +39,7 @@ 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-native = { git = "https://github.com/lambdaclass/cairo_native", rev = "8fddcd3914badfe3f89752fe7a22befeaffc17f9", optional = true } k256 = "0.13.3" p256 = "0.13.2" sec1 = "0.7.3" @@ -74,6 +74,7 @@ assert_matches = "1.5.0" coverage-helper = "0.2.0" lru = "0.11.0" pretty_assertions_sorted = "1.2.3" +reth-primitives = { git = "https://github.com/paradigmxyz/reth.git", tag = "v0.1.0-alpha.18", default-features = false } tracing-subscriber = { version = "0.3.17", features = ["env-filter"] } [[bench]] diff --git a/Makefile b/Makefile index da3b29b11..90a22eb0a 100644 --- a/Makefile +++ b/Makefile @@ -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.1 +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. # ================= @@ -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/rust-toolchain.toml b/rust-toolchain.toml index 4da0ec7b8..10c84f3ba 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,4 +1,4 @@ [toolchain] -channel = "1.74.1" +channel = "1.75" components = ["rustfmt", "clippy"] profile = "minimal" From 1f421c44a5c6d2b9e21dac190a2aa4a2f01a34b4 Mon Sep 17 00:00:00 2001 From: Gregory Edison Date: Wed, 27 Mar 2024 13:28:49 +0100 Subject: [PATCH 02/30] fixes + typos --- fuzzer/src/main.rs | 2 +- src/bin/fibonacci.rs | 2 +- src/bin/native_bench.rs | 16 +-- .../sierra_contract_address.rs | 58 +++++----- src/execution/execution_entry_point.rs | 2 +- src/execution/mod.rs | 1 + src/lib.rs | 4 +- src/syscalls/deprecated_syscall_handler.rs | 2 +- src/transaction/mod.rs | 2 +- src/utils.rs | 2 +- tests/integration_tests/account_panic.rs | 2 +- tests/integration_tests/cairo_1_syscalls.rs | 102 +++++++++--------- tests/integration_tests/cairo_native.rs | 67 +++++++++++- .../complex_contracts/erc20.rs | 4 +- tests/integration_tests/delegate_call.rs | 2 +- tests/integration_tests/fibonacci.rs | 4 +- tests/integration_tests/increase_balance.rs | 2 +- tests/integration_tests/internals.rs | 6 +- tests/integration_tests/storage.rs | 2 +- tests/integration_tests/syscalls.rs | 2 +- 20 files changed, 174 insertions(+), 110 deletions(-) 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/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..f18bf1e4a 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 { @@ -113,7 +113,7 @@ fn bench_fibo(executions: usize, bench_type: BenchType) { 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 { @@ -199,7 +199,7 @@ fn bench_fact(executions: usize, bench_type: BenchType) { 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,7 +383,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) } @@ -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/sierra_contract_address.rs b/src/core/contract_address/sierra_contract_address.rs index 0a6b5f2a7..e6e7f9b66 100644 --- a/src/core/contract_address/sierra_contract_address.rs +++ b/src/core/contract_address/sierra_contract_address.rs @@ -139,35 +139,6 @@ fn get_contract_entry_points( Ok(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_vm::Felt252; - use std::{fs::File, io::BufReader}; - - /// Test the correctness of the compute_sierra_class_hash function for a specific testnet contract. - #[test] - fn test_declare_tx_from_testnet() { - let file = File::open("starknet_programs/raw_contract_classes/0x113bf26d112a164297e04381212c9bd7409f07591f0a04f539bdf56693eaaf3.sierra").unwrap(); - // 0x113bf26d112a164297e04381212c9bd7409f07591f0a04f539bdf56693eaaf3 - let reader = BufReader::new(file); - - let sierra_contract_class: SierraContractClass = serde_json::from_reader(reader).unwrap(); - - // this is the class_hash from: https://alpha4.starknet.io/feeder_gateway/get_transaction?transactionHash=0x01b852f1fe2b13db21a44f8884bc4b7760dc277bb3820b970dba929860275617 - let expected_result = Felt252::from_dec_str( - "487202222862199115032202787294865701687663153957776561394399544814644144883", - ) - .unwrap(); - - assert_eq!( - compute_sierra_class_hash(&sierra_contract_class).unwrap(), - expected_result - ) - } -} - struct PythonJsonFormatter; impl Formatter for PythonJsonFormatter { @@ -220,3 +191,32 @@ impl Formatter for PythonJsonFormatter { Ok(()) } } + +#[cfg(test)] +mod tests { + use crate::core::contract_address::compute_sierra_class_hash; + use cairo_lang_starknet::contract_class::ContractClass as SierraContractClass; + use cairo_vm::Felt252; + use std::{fs::File, io::BufReader}; + + /// Test the correctness of the compute_sierra_class_hash function for a specific testnet contract. + #[test] + fn test_declare_tx_from_testnet() { + let file = File::open("starknet_programs/raw_contract_classes/0x113bf26d112a164297e04381212c9bd7409f07591f0a04f539bdf56693eaaf3.sierra").unwrap(); + // 0x113bf26d112a164297e04381212c9bd7409f07591f0a04f539bdf56693eaaf3 + let reader = BufReader::new(file); + + let sierra_contract_class: SierraContractClass = serde_json::from_reader(reader).unwrap(); + + // this is the class_hash from: https://alpha4.starknet.io/feeder_gateway/get_transaction?transactionHash=0x01b852f1fe2b13db21a44f8884bc4b7760dc277bb3820b970dba929860275617 + let expected_result = Felt252::from_dec_str( + "487202222862199115032202787294865701687663153957776561394399544814644144883", + ) + .unwrap(); + + assert_eq!( + compute_sierra_class_hash(&sierra_contract_class).unwrap(), + expected_result + ) + } +} diff --git a/src/execution/execution_entry_point.rs b/src/execution/execution_entry_point.rs index f6a651081..f1b11a4a1 100644 --- a/src/execution/execution_entry_point.rs +++ b/src/execution/execution_entry_point.rs @@ -433,7 +433,7 @@ impl ExecutionEntryPoint { ); // 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), }; diff --git a/src/execution/mod.rs b/src/execution/mod.rs index 85c858677..f11861f9d 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, diff --git a/src/lib.rs b/src/lib.rs index 940c9dfdb..1746dc88c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -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/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/transaction/mod.rs b/src/transaction/mod.rs index 58df5a425..c5721de4f 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 modification 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..c7fe0d6b9 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -125,7 +125,7 @@ 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); + output[..].copy_from_slice(&bytes); ClassHash(output) } 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..4eeb8c5aa 100644 --- a/tests/integration_tests/cairo_1_syscalls.rs +++ b/tests/integration_tests/cairo_1_syscalls.rs @@ -31,7 +31,7 @@ use std::{ sync::Arc, }; -fn create_execute_extrypoint( +fn create_execute_entrypoint( address: Address, class_hash: ClassHash, selector: &BigUint, @@ -56,9 +56,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 +101,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 +126,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 +152,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 +177,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 +207,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(); @@ -395,7 +395,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 +434,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 +455,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 +480,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 +506,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 +531,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 +561,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 +673,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 +783,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 +890,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 +998,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 +1136,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 +1166,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, @@ -1239,7 +1239,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 +1281,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, @@ -1342,7 +1342,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 +1497,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 +2119,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 +2202,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 +2284,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 +2423,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 +2455,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 +2498,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 +2533,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 +2576,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 +2610,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(); @@ -3100,7 +3100,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 +3143,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 +3177,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(); @@ -3348,7 +3348,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 +3387,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 +3408,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 +3433,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 +3459,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 +3489,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 +3554,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 +3593,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 +3614,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 +3639,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 +3665,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 +3695,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 +3729,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 +3787,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, 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/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/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/fibonacci.rs b/tests/integration_tests/fibonacci.rs index 5f87ec2cf..b006823e5 100644 --- a/tests/integration_tests/fibonacci.rs +++ b/tests/integration_tests/fibonacci.rs @@ -39,7 +39,7 @@ fn integration_test() { let fib_entrypoint_selector = *entry_points_by_type .get(&EntryPointType::External) .unwrap() - .get(0) + .first() .unwrap() .selector(); @@ -148,7 +148,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(); 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..39fa85ba4 100644 --- a/tests/integration_tests/internals.rs +++ b/tests/integration_tests/internals.rs @@ -2226,7 +2226,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 +2253,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 +2277,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, 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..43f01cf5e 100644 --- a/tests/integration_tests/syscalls.rs +++ b/tests/integration_tests/syscalls.rs @@ -1444,7 +1444,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, From 9487300d38d90ab163d25cdef5c870b1dad28546 Mon Sep 17 00:00:00 2001 From: Gregory Edison Date: Wed, 27 Mar 2024 13:33:30 +0100 Subject: [PATCH 03/30] add kakarot testing to SiR --- .../complex_contracts/kakarot/mod.rs | 358 ++++++++++++++++++ .../complex_contracts/mod.rs | 1 + 2 files changed, 359 insertions(+) create mode 100644 tests/integration_tests/complex_contracts/kakarot/mod.rs 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..2b372ceb1 --- /dev/null +++ b/tests/integration_tests/complex_contracts/kakarot/mod.rs @@ -0,0 +1,358 @@ +use std::str::FromStr; + +use cairo_vm::Felt252; +use reth_primitives::{ + sign_message, AccessList, Bytes, Signature, TransactionSigned, TxValue, 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] +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_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_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); + 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("contract_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(); + + // Deploy Kakarot + state + .load_contract_at_address( + kakarot_class_hash, + kakarot_address.clone(), + "starknet_programs/kakarot/contracts_KakarotCore.cairo", + ) + .unwrap(); + // Deploy EOA + state + .load_contract_at_address( + eoa_class_hash, + eoa_address.clone(), + "starknet_programs/kakarot/contracts_ExternallyOwnedAccount.cairo", + ) + .unwrap(); + // Deploy Contract Account + state + .load_contract_at_address( + contract_account_class_hash, + contract_account_address.clone(), + "starknet_programs/kakarot/contracts_ContractAccount.cairo", + ) + .unwrap(); + + // Declare uninitialized account class hash + state + .load_contract( + uninitialized_account_class_hash, + "starknet_programs/kakarot/contracts_UninitializedAccount.cairo", + ) + .unwrap(); + + // Prepare storage for Kakarot + let kakarot_storage = vec![ + ( + (kakarot_address.clone(), compute_storage_key("owner", &[])), + eoa_address.0, + ), + ( + ( + kakarot_address.clone(), + compute_storage_key("chain_id", &[]), + ), + chain_id, + ), + ( + ( + kakarot_address.clone(), + compute_storage_key("native_token", &[]), + ), + fee_token_address.0, + ), + ( + ( + kakarot_address.clone(), + compute_storage_key("ca_class_hash", &[]), + ), + Felt252::from_bytes_be(&contract_account_class_hash.0), + ), + ( + ( + kakarot_address.clone(), + compute_storage_key("eoa_class_hash", &[]), + ), + Felt252::from_bytes_be(&eoa_class_hash.0), + ), + ( + ( + kakarot_address.clone(), + compute_storage_key("account_class_hash", &[]), + ), + Felt252::from_bytes_be(&uninitialized_account_class_hash.0), + ), + // Add the EOA to the address registry + ( + ( + kakarot_address.clone(), + compute_storage_key("address_registry", &[eoa_evm_address]), + ), + Felt252::ONE, // Set account type to 1 (EOA) + ), + ( + ( + kakarot_address.clone(), + compute_storage_key("address_registry", &[eoa_evm_address]) + Felt252::ONE, + ), + eoa_address.0, + ), + // Add the contract account to the address registry + ( + ( + kakarot_address.clone(), + compute_storage_key("address_registry", &[contract_account_evm_address]), + ), + Felt252::TWO, // Set account type to 1 (CA) + ), + ( + ( + kakarot_address.clone(), + compute_storage_key("address_registry", &[contract_account_evm_address]) + + Felt252::ONE, + ), + contract_account_address.0, + ), + ]; + + // Prepare storage for EOA + let eoa_storage = vec![ + ( + (eoa_address.clone(), compute_storage_key("evm_address", &[])), + eoa_evm_address, + ), + ( + (eoa_address.clone(), compute_storage_key("chain_id", &[])), + chain_id, + ), + ( + ( + eoa_address.clone(), + compute_storage_key("kakarot_core_address", &[]), + ), + kakarot_address.clone().0, + ), + ]; + + // Prepare storage for Contract Account + let contract_account_storage = vec![ + ( + ( + contract_account_address.clone(), + compute_storage_key("evm_address", &[]), + ), + contract_account_evm_address, + ), + ( + ( + contract_account_address.clone(), + compute_storage_key("chain_id", &[]), + ), + chain_id, + ), + ( + ( + contract_account_address.clone(), + compute_storage_key("kakarot_core_address", &[]), + ), + kakarot_address.0, + ), + // Set the bytecode + ( + (contract_account_address.clone(), bytecode_storage_key), + bytecode, + ), + ]; + + // 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: TxValue::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![]; + transaction + .transaction + .encode_without_signature(&mut calldata); + let mut calldata = 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); + + let execution_result = state.execute_transaction(tx).unwrap(); + 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_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; From d199153ff997371a1f326e4d992d63c3329c4cca Mon Sep 17 00:00:00 2001 From: Gregory Edison Date: Wed, 27 Mar 2024 13:36:13 +0100 Subject: [PATCH 04/30] add ignore --- src/transaction/mod.rs | 2 +- tests/integration_tests/complex_contracts/kakarot/mod.rs | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/transaction/mod.rs b/src/transaction/mod.rs index c5721de4f..2cf70f406 100644 --- a/src/transaction/mod.rs +++ b/src/transaction/mod.rs @@ -238,7 +238,7 @@ impl Transaction { } } - /// It creates a new transaction structure modification 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/tests/integration_tests/complex_contracts/kakarot/mod.rs b/tests/integration_tests/complex_contracts/kakarot/mod.rs index 2b372ceb1..e523d70ae 100644 --- a/tests/integration_tests/complex_contracts/kakarot/mod.rs +++ b/tests/integration_tests/complex_contracts/kakarot/mod.rs @@ -18,6 +18,7 @@ use starknet_in_rust::utils::{calculate_sn_keccak, felt_to_field_element, field_ use crate::integration_tests::cairo_native::TestStateSetup; #[test] +#[ignore = "linked to native issue #499 and #500"] fn test_kakarot_contract() { // Evm constants let private_key: B256 = @@ -54,6 +55,7 @@ fn test_kakarot_contract() { &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, ]); From e07a059b03a1fa26b665981f70c9effb3e5c78ee Mon Sep 17 00:00:00 2001 From: Gregory Edison Date: Thu, 11 Apr 2024 11:59:40 -0300 Subject: [PATCH 05/30] bump native --- Cargo.lock | 30 ++++++++++++------- Cargo.toml | 20 +++++++------ src/execution/execution_entry_point.rs | 10 ++----- src/syscalls/native_syscall_handler.rs | 6 ++-- src/utils.rs | 7 +---- .../complex_contracts/kakarot/mod.rs | 2 +- 6 files changed, 39 insertions(+), 36 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2704975f9..86070b093 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1317,7 +1317,7 @@ dependencies = [ [[package]] name = "cairo-native" version = "0.1.0" -source = "git+https://github.com/lambdaclass/cairo_native?rev=8fddcd3914badfe3f89752fe7a22befeaffc17f9#8fddcd3914badfe3f89752fe7a22befeaffc17f9" +source = "git+https://github.com/lambdaclass/cairo_native?rev=60ed062a3d6d40cd8688a580f440af525f40d437#60ed062a3d6d40cd8688a580f440af525f40d437" dependencies = [ "anyhow", "bumpalo", @@ -1361,7 +1361,7 @@ dependencies = [ [[package]] name = "cairo-native-runtime" version = "0.1.0" -source = "git+https://github.com/lambdaclass/cairo_native?rev=8fddcd3914badfe3f89752fe7a22befeaffc17f9#8fddcd3914badfe3f89752fe7a22befeaffc17f9" +source = "git+https://github.com/lambdaclass/cairo_native?rev=60ed062a3d6d40cd8688a580f440af525f40d437#60ed062a3d6d40cd8688a580f440af525f40d437" dependencies = [ "cairo-lang-runner", "lazy_static", @@ -1438,10 +1438,11 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.88" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02f341c093d19155a6e41631ce5971aac4e9a868262212153124c15fa22d1cdc" +checksum = "2678b2e3449475e95b0aa6f9b506a28e61b3dc8996592b983695e8ebb58a8b41" dependencies = [ + "jobserver", "libc", ] @@ -2858,6 +2859,15 @@ version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" +[[package]] +name = "jobserver" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab46a6e9526ddef3ae7f787c06f0f2600639ba80ea3eade3d8e670a2230f51d6" +dependencies = [ + "libc", +] + [[package]] name = "js-sys" version = "0.3.68" @@ -3115,9 +3125,9 @@ dependencies = [ [[package]] name = "melior" -version = "0.16.2" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e76dd7ff903474595023aebb93f8287667a2fe95132c65e1c77efdb99c64a973" +checksum = "672be978c3550fd9c329987c9457e60e4452049b24518a5acb2d3f14cf6d2777" dependencies = [ "dashmap", "melior-macro", @@ -5578,18 +5588,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.57" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" +checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.57" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" +checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 3ddd13cf3..6f9e7f690 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,10 +15,10 @@ replay_benchmark = [] [workspace] members = [ - "fuzzer", - "rpc_state_reader", - "replay", - "examples/contract_execution", + "fuzzer", + "rpc_state_reader", + "replay", + "examples/contract_execution", ] [workspace.dependencies] @@ -26,11 +26,13 @@ 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-vm = { git = "https://github.com/lambdaclass/cairo-vm", rev = "3547089579dd74f815edbc2d1caa91e00fc8a2f7", 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" +thiserror = "1.0.58" [dependencies] anyhow = "1.0" @@ -39,7 +41,7 @@ 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 = "8fddcd3914badfe3f89752fe7a22befeaffc17f9", optional = true } +cairo-native = { git = "https://github.com/lambdaclass/cairo_native", rev = "60ed062a3d6d40cd8688a580f440af525f40d437", optional = true } k256 = "0.13.3" p256 = "0.13.2" sec1 = "0.7.3" @@ -59,8 +61,8 @@ 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", + "arbitrary_precision", + "raw_value", ] } serde_json_pythonic = "0.1.2" starknet = { workspace = true } diff --git a/src/execution/execution_entry_point.rs b/src/execution/execution_entry_point.rs index f1b11a4a1..fea00314a 100644 --- a/src/execution/execution_entry_point.rs +++ b/src/execution/execution_entry_point.rs @@ -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,8 +755,6 @@ impl ExecutionEntryPoint { resources_manager: Default::default(), }; - let syscall_meta = SyscallHandlerMeta::new(&mut syscall_handler); - let entry_point_fn = &sierra_program .funcs .iter() @@ -772,13 +768,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/syscalls/native_syscall_handler.rs b/src/syscalls/native_syscall_handler.rs index badeea73a..c1414aab1 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, diff --git a/src/utils.rs b/src/utils.rs index c7fe0d6b9..675bb8090 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -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[..].copy_from_slice(&bytes); - - ClassHash(output) + ClassHash(value.to_bytes_be()) } pub fn string_to_hash(class_string: &str) -> ClassHash { diff --git a/tests/integration_tests/complex_contracts/kakarot/mod.rs b/tests/integration_tests/complex_contracts/kakarot/mod.rs index e523d70ae..a07891fa8 100644 --- a/tests/integration_tests/complex_contracts/kakarot/mod.rs +++ b/tests/integration_tests/complex_contracts/kakarot/mod.rs @@ -18,7 +18,7 @@ use starknet_in_rust::utils::{calculate_sn_keccak, felt_to_field_element, field_ use crate::integration_tests::cairo_native::TestStateSetup; #[test] -#[ignore = "linked to native issue #499 and #500"] +// #[ignore = "linked to native issue #499 and #500"] fn test_kakarot_contract() { // Evm constants let private_key: B256 = From bd782f1ed996416d4a298a4dc60e425019845885 Mon Sep 17 00:00:00 2001 From: Edgar Date: Tue, 4 Jun 2024 17:21:38 +0200 Subject: [PATCH 06/30] update native --- .gitignore | 3 + Cargo.lock | 1602 ++++++++++++++++++++----------------------- Cargo.toml | 46 +- Makefile | 14 +- rust-toolchain.toml | 2 +- 5 files changed, 780 insertions(+), 887 deletions(-) diff --git a/.gitignore b/.gitignore index 05172e267..f89c52a8b 100644 --- a/.gitignore +++ b/.gitignore @@ -46,6 +46,8 @@ 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 @@ -59,3 +61,4 @@ lcov.info !/starknet_programs/raw_contract_classes/*.json cairo-*.tar starknet-pypy-env/ +cairo1/ diff --git a/Cargo.lock b/Cargo.lock index 86070b093..db4707633 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,24 +53,24 @@ 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 = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" [[package]] name = "alloy-chains" -version = "0.1.15" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e96c81b05c893348760f232c4cc6a6a77fd91cfb09885d4eaad25cd03bd7732e" +checksum = "03fd095a9d70f4b1c5c102c84a4c782867a5c6416dbf6dcd42a63e7c7a89d3c8" dependencies = [ "alloy-rlp", "num_enum", @@ -123,9 +123,9 @@ dependencies = [ [[package]] name = "alloy-rlp" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d58d9f5da7b40e9bfff0b7e7816700be4019db97d4b6359fe7f94a9e22e42ac" +checksum = "b155716bab55763c95ba212806cf43d05bcc70e5f35b02bad20cf5ec7fe11fed" dependencies = [ "alloy-rlp-derive", "arrayvec", @@ -134,13 +134,13 @@ dependencies = [ [[package]] name = "alloy-rlp-derive" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a047897373be4bbb0224c1afdabca92648dc57a9c9ef6e7b0be3aff7a859c83" +checksum = "8037e03c7f462a063f28daec9fda285a9a89da003c552f8637a80b9c8fd96241" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.66", ] [[package]] @@ -190,7 +190,7 @@ dependencies = [ "alloy-primitives", "alloy-rlp", "derive_more", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "nybbles", "serde", "smallvec", @@ -214,47 +214,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.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" +checksum = "a64c907d4e79225ac72e2a354c9ce84d50ebb4586dee56c82b3ee73004f537f5" 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", @@ -262,9 +263,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" @@ -285,7 +286,7 @@ dependencies = [ "derivative", "hashbrown 0.13.2", "itertools 0.10.5", - "num-traits 0.2.18", + "num-traits 0.2.19", "zeroize", ] @@ -301,7 +302,7 @@ dependencies = [ "ark-std 0.3.0", "derivative", "num-bigint", - "num-traits 0.2.18", + "num-traits 0.2.19", "paste", "rustc_version 0.3.3", "zeroize", @@ -321,7 +322,7 @@ dependencies = [ "digest 0.10.7", "itertools 0.10.5", "num-bigint", - "num-traits 0.2.18", + "num-traits 0.2.19", "paste", "rustc_version 0.4.0", "zeroize", @@ -354,7 +355,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" dependencies = [ "num-bigint", - "num-traits 0.2.18", + "num-traits 0.2.19", "quote", "syn 1.0.109", ] @@ -366,7 +367,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", @@ -446,7 +447,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" dependencies = [ - "num-traits 0.2.18", + "num-traits 0.2.19", "rand", ] @@ -456,7 +457,7 @@ 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", ] @@ -483,20 +484,20 @@ 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.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfacad86e9e138fca0670949eb8ed4ffdf73a55bded8887efe0863cd1a3a6f70" +checksum = "0aef7712851e524f35fbbb74fa6599c5cd8692056a1c36f9ca0d2001b670e7e5" dependencies = [ "hex", "num", @@ -504,26 +505,26 @@ dependencies = [ [[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", @@ -552,6 +553,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" @@ -575,16 +582,7 @@ checksum = "a6773ddc0eafc0e509fb60e48dff7f450f8e674a0686ae8605e8d9901bd5eefa" dependencies = [ "num-bigint", "num-integer", - "num-traits 0.2.18", - "serde", -] - -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ + "num-traits 0.2.19", "serde", ] @@ -599,47 +597,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", ] @@ -666,9 +641,9 @@ 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", ] @@ -714,20 +689,20 @@ 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", + "starknet_api 0.7.0-dev.0", "strum 0.24.1", "strum_macros 0.24.3", "thiserror", @@ -735,9 +710,9 @@ dependencies = [ [[package]] name = "blst" -version = "0.3.11" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c94087b935a822949d3291a9989ad2b2051ea141eda0fd4e478a75f6aa3e604b" +checksum = "62dc83a094a71d43eeadd254b1ec2d24cb6a0bb6cadce00df51f0db594711a32" dependencies = [ "cc", "glob", @@ -747,9 +722,9 @@ dependencies = [ [[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" @@ -765,9 +740,9 @@ 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", ] @@ -852,29 +827,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", @@ -889,23 +864,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", @@ -920,9 +896,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", @@ -932,9 +908,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", @@ -942,9 +918,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", @@ -956,9 +932,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", @@ -973,7 +949,7 @@ dependencies = [ "itertools 0.11.0", "log", "num-bigint", - "num-traits 0.2.18", + "num-traits 0.2.19", "once_cell", "salsa", "smol_str", @@ -981,9 +957,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", @@ -993,7 +969,7 @@ dependencies = [ "colored", "itertools 0.11.0", "num-bigint", - "num-traits 0.2.18", + "num-traits 0.2.19", "salsa", "smol_str", "unescaper", @@ -1001,9 +977,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", @@ -1020,20 +996,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", @@ -1045,9 +1021,9 @@ 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 0.4.2", "ark-secp256k1", @@ -1055,6 +1031,7 @@ dependencies = [ "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", @@ -1067,17 +1044,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", @@ -1092,7 +1069,7 @@ dependencies = [ "indoc", "itertools 0.11.0", "num-bigint", - "num-traits 0.2.18", + "num-traits 0.2.19", "once_cell", "salsa", "smol_str", @@ -1100,9 +1077,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", @@ -1114,7 +1091,7 @@ dependencies = [ "lalrpop", "lalrpop-util", "num-bigint", - "num-traits 0.2.18", + "num-traits 0.2.19", "regex", "salsa", "serde", @@ -1126,39 +1103,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", @@ -1171,7 +1148,7 @@ dependencies = [ "cairo-lang-syntax", "cairo-lang-utils", "itertools 0.11.0", - "num-bigint", + "num-traits 0.2.19", "once_cell", "salsa", "smol_str", @@ -1179,9 +1156,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", @@ -1194,15 +1171,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", @@ -1210,13 +1187,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", @@ -1226,37 +1202,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", @@ -1264,9 +1259,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", @@ -1274,9 +1269,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", @@ -1290,26 +1285,27 @@ 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", ] @@ -1317,7 +1313,7 @@ dependencies = [ [[package]] name = "cairo-native" version = "0.1.0" -source = "git+https://github.com/lambdaclass/cairo_native?rev=60ed062a3d6d40cd8688a580f440af525f40d437#60ed062a3d6d40cd8688a580f440af525f40d437" +source = "git+https://github.com/lambdaclass/cairo_native?rev=15bd4b9e672a0c1a196de4b613ee72befaf08b28#15bd4b9e672a0c1a196de4b613ee72befaf08b28" dependencies = [ "anyhow", "bumpalo", @@ -1334,6 +1330,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", @@ -1343,6 +1340,8 @@ dependencies = [ "educe", "id-arena", "itertools 0.12.1", + "k256", + "keccak", "lazy_static", "libc", "libloading", @@ -1350,7 +1349,9 @@ dependencies = [ "melior", "mlir-sys", "num-bigint", - "num-traits 0.2.18", + "num-traits 0.2.19", + "p256", + "sec1", "starknet-types-core", "tempfile", "thiserror", @@ -1361,13 +1362,14 @@ dependencies = [ [[package]] name = "cairo-native-runtime" version = "0.1.0" -source = "git+https://github.com/lambdaclass/cairo_native?rev=60ed062a3d6d40cd8688a580f440af525f40d437#60ed062a3d6d40cd8688a580f440af525f40d437" +source = "git+https://github.com/lambdaclass/cairo_native?rev=15bd4b9e672a0c1a196de4b613ee72befaf08b28#15bd4b9e672a0c1a196de4b613ee72befaf08b28" 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", ] @@ -1378,11 +1380,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", @@ -1391,46 +1393,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 0.4.2", "ark-std 0.4.0", - "bincode 2.0.0-rc.3", + "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", @@ -1438,12 +1441,13 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.92" +version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2678b2e3449475e95b0aa6f9b506a28e61b3dc8996592b983695e8ebb58a8b41" +checksum = "41c270e7540d725e65ac7f1b212ac8ce349719624d7bcff99f8e2e488e8cf03f" dependencies = [ "jobserver", "libc", + "once_cell", ] [[package]] @@ -1463,15 +1467,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]] @@ -1486,9 +1490,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", @@ -1497,9 +1501,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", @@ -1507,27 +1511,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]] @@ -1546,14 +1549,14 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.51", + "syn 2.0.66", ] [[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" @@ -1567,22 +1570,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]] @@ -1606,9 +1605,9 @@ checksum = "32b13ea120a812beba79e34316b3942a857c86ec1593cb34f27bb28272ce2cca" [[package]] name = "const-hex" -version = "1.11.3" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ba00838774b4ab0233e355d26710fbfc8327a05c017f6dc4873f876d1f79f78" +checksum = "94fb8a24a26d37e1ffd45343323dc9fe6654ceea44c12f2fcb3d7ac29e610bc6" dependencies = [ "cfg-if", "cpufeatures", @@ -1653,7 +1652,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", ] @@ -1691,9 +1690,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" @@ -1706,9 +1705,9 @@ dependencies = [ [[package]] name = "crc" -version = "3.0.1" +version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86ec7a15cbe22e59248fc7eadb1907dab5ba09372595da4d73dd805ed4417dfe" +checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" dependencies = [ "crc-catalog", ] @@ -1721,9 +1720,9 @@ 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", ] @@ -1749,9 +1748,9 @@ dependencies = [ [[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" @@ -1783,12 +1782,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]] @@ -1812,12 +1811,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]] @@ -1836,16 +1835,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]] @@ -1861,13 +1860,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]] @@ -1889,17 +1888,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", @@ -1929,33 +1928,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]] @@ -1973,9 +1972,9 @@ dependencies = [ [[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" @@ -2060,14 +2059,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" @@ -2091,9 +2090,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", ] @@ -2106,9 +2105,9 @@ 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", ] @@ -2136,7 +2135,7 @@ checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.66", ] [[package]] @@ -2147,7 +2146,7 @@ checksum = "6fd000fd6988e73bbe993ea3db9b1aa64906ab88766d654973924340c8cddb42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.66", ] [[package]] @@ -2158,9 +2157,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", @@ -2215,21 +2214,11 @@ dependencies = [ "uint", ] -[[package]] -name = "fancy-regex" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b95f7c0680e4142284cf8b22c14a476e87d61b004a3a0861872b32ef7ead40a2" -dependencies = [ - "bit-set", - "regex", -] - [[package]] name = "fastrand" -version = "2.0.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "fastrlp" @@ -2272,9 +2261,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", @@ -2366,20 +2355,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", @@ -2388,13 +2377,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]] @@ -2410,9 +2399,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", @@ -2435,9 +2424,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" @@ -2447,9 +2436,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", @@ -2468,9 +2457,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", @@ -2478,7 +2467,7 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap 2.2.3", + "indexmap 2.2.6", "slab", "tokio", "tokio-util", @@ -2500,16 +2489,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", ] @@ -2529,11 +2518,17 @@ 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" @@ -2570,9 +2565,9 @@ 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", @@ -2591,9 +2586,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", @@ -2625,9 +2620,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", @@ -2656,7 +2651,7 @@ dependencies = [ "futures-util", "http", "hyper", - "rustls 0.21.10", + "rustls 0.21.12", "tokio", "tokio-rustls", ] @@ -2763,12 +2758,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", ] @@ -2787,9 +2782,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" @@ -2802,9 +2797,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", ] @@ -2816,15 +2811,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" @@ -2855,24 +2845,24 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jobserver" -version = "0.1.28" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab46a6e9526ddef3ae7f787c06f0f2600639ba80ea3eade3d8e670a2230f51d6" +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", ] @@ -2916,9 +2906,9 @@ dependencies = [ [[package]] name = "keccak-asm" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb8515fff80ed850aea4a1595f2e519c003e2a00a82fe168ebf5269196caf444" +checksum = "47a3633291834c4fbebf8673acbc1b04ec9d151418ff9b8e26dcd79129928758" dependencies = [ "digest 0.10.7", "sha3-asm", @@ -2926,41 +2916,40 @@ dependencies = [ [[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", @@ -2970,9 +2959,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", @@ -2995,18 +2984,18 @@ 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]] @@ -3017,9 +3006,9 @@ 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", @@ -3027,55 +3016,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 1.0.22", + "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", @@ -3083,9 +3056,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" @@ -3098,11 +3071,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]] @@ -3125,9 +3098,9 @@ dependencies = [ [[package]] name = "melior" -version = "0.17.0" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "672be978c3550fd9c329987c9457e60e4452049b24518a5acb2d3f14cf6d2777" +checksum = "5f904b36a8146f1c99548f6b38eca76595e346d2f59fcc4f75c07efe847bd8e1" dependencies = [ "dashmap", "melior-macro", @@ -3137,9 +3110,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", @@ -3147,22 +3120,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", ] @@ -3192,9 +3165,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", ] @@ -3223,18 +3196,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", @@ -3243,11 +3216,11 @@ 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]] @@ -3280,15 +3253,15 @@ dependencies = [ "matrixmultiply", "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" @@ -3312,27 +3285,26 @@ dependencies = [ [[package]] name = "num" -version = "0.4.1" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" dependencies = [ "num-bigint", - "num-complex 0.4.5", + "num-complex 0.4.6", "num-integer", "num-iter", "num-rational", - "num-traits 0.2.18", + "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", ] @@ -3344,16 +3316,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.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" dependencies = [ - "num-traits 0.2.18", + "num-traits 0.2.19", ] [[package]] @@ -3368,18 +3340,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.44" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" dependencies = [ "autocfg", "num-integer", - "num-traits 0.2.18", + "num-traits 0.2.19", ] [[package]] @@ -3390,35 +3362,34 @@ 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.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" dependencies = [ - "autocfg", "num-bigint", "num-integer", - "num-traits 0.2.18", + "num-traits 0.2.19", ] [[package]] @@ -3427,14 +3398,14 @@ 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", @@ -3465,10 +3436,10 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" dependencies = [ - "proc-macro-crate", + "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.66", ] [[package]] @@ -3492,9 +3463,9 @@ dependencies = [ [[package]] name = "object" -version = "0.32.2" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +checksum = "b8ec7ab813848ba4522158d5517a6093db1ded27575b070f4177b8d12b41db5e" dependencies = [ "memchr", ] @@ -3505,28 +3476,6 @@ version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" -[[package]] -name = "onig" -version = "6.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c4b31c8722ad9171c6d77d3557db078cab2bd50afcc9d09c8b315c59df8ca4f" -dependencies = [ - "bitflags 1.3.2", - "libc", - "once_cell", - "onig_sys", -] - -[[package]] -name = "onig_sys" -version = "69.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b829e3d7e9cc74c7e315ee8edb185bf4190da5acde74afd7fc59c35b1f086e7" -dependencies = [ - "cc", - "pkg-config", -] - [[package]] name = "oorandom" version = "11.1.3" @@ -3539,7 +3488,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]] @@ -3581,7 +3530,7 @@ version = "3.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "312270ee71e1cd70289dacf597cab7b207aa107d2f28191c2ae45b2ece18a260" dependencies = [ - "proc-macro-crate", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", "syn 1.0.109", @@ -3600,12 +3549,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]] @@ -3624,15 +3573,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]] @@ -3648,9 +3597,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" @@ -3670,12 +3619,6 @@ dependencies = [ "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" @@ -3693,9 +3636,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.8" +version = "2.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f8023d0fb78c8e03784ea1c7f3fa36e68a723138990b8d5a47d916b651e7a8" +checksum = "560131c633294438da9f7c4b08189194b20946c8274c6b9e38881a7874dc8ee8" dependencies = [ "memchr", "thiserror", @@ -3704,12 +3647,12 @@ dependencies = [ [[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]] @@ -3742,7 +3685,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.66", ] [[package]] @@ -3771,9 +3714,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" @@ -3797,20 +3740,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" @@ -3857,12 +3786,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]] @@ -3897,6 +3826,15 @@ dependencies = [ "toml_edit 0.19.15", ] +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit 0.21.1", +] + [[package]] name = "proc-macro-error" version = "1.0.4" @@ -3923,9 +3861,9 @@ 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", ] @@ -3938,13 +3876,13 @@ checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.4.2", + "bitflags 2.5.0", "lazy_static", - "num-traits 0.2.18", + "num-traits 0.2.19", "rand", "rand_chacha", "rand_xorshift", - "regex-syntax 0.8.2", + "regex-syntax 0.8.3", "rusty-fork", "tempfile", "unarray", @@ -3956,20 +3894,11 @@ version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" -[[package]] -name = "quick-xml" -version = "0.31.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33" -dependencies = [ - "memchr", -] - [[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", ] @@ -4056,18 +3985,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", @@ -4076,14 +4005,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]] @@ -4097,13 +4026,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]] @@ -4120,21 +4049,15 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.7.5" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" - -[[package]] -name = "regex-syntax" -version = "0.8.2" -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" @@ -4144,7 +4067,7 @@ dependencies = [ "clap", "indicatif", "rpc_state_reader", - "starknet_api", + "starknet_api 0.11.0", "starknet_in_rust", "tracing", "tracing-subscriber", @@ -4152,9 +4075,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", @@ -4173,7 +4096,7 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls 0.21.10", + "rustls 0.21.12", "rustls-pemfile", "serde", "serde_json", @@ -4269,7 +4192,7 @@ dependencies = [ "secp256k1 0.27.0", "serde", "serde_json", - "serde_with 3.6.1", + "serde_with 3.8.1", "thiserror", "url", ] @@ -4323,12 +4246,12 @@ checksum = "fecd125aad58e135e2ca5771ed6e4e7b1f05fa3a64e0dfb9cc643b7a800a8435" dependencies = [ "alloy-primitives", "auto_impl", - "bitflags 2.4.2", + "bitflags 2.5.0", "bitvec", "c-kzg", "cfg-if", "enumn", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "hex", "serde", ] @@ -4385,15 +4308,15 @@ 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.7.0-dev.0", "starknet_in_rust", "test-case", "thiserror", @@ -4402,9 +4325,9 @@ dependencies = [ [[package]] name = "ruint" -version = "1.12.1" +version = "1.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f308135fef9fc398342da5472ce7c484529df23743fb7c734e0f3d472971e62" +checksum = "2c3cc4c2511671f327125da14133d0c5c5d137f006a1017a16f557bc85b16286" dependencies = [ "alloy-rlp", "ark-ff 0.3.0", @@ -4412,7 +4335,7 @@ dependencies = [ "bytes", "fastrlp", "num-bigint", - "num-traits 0.2.18", + "num-traits 0.2.19", "parity-scale-codec", "primitive-types", "proptest", @@ -4426,15 +4349,25 @@ dependencies = [ [[package]] name = "ruint-macro" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f86854cf50259291520509879a5c294c3c9a4c334e9ff65071c51e42ef1e2343" +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" @@ -4463,16 +4396,16 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.22", + "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", @@ -4481,9 +4414,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", @@ -4493,14 +4426,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", ] @@ -4516,9 +4449,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" @@ -4532,9 +4465,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", @@ -4543,9 +4476,9 @@ 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 = "rusty-fork" @@ -4561,15 +4494,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" - -[[package]] -name = "safemem" -version = "0.3.3" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "salsa" @@ -4620,9 +4547,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", @@ -4633,14 +4560,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]] @@ -4733,9 +4660,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "semver-parser" @@ -4748,42 +4675,42 @@ dependencies = [ [[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.3", + "indexmap 2.2.6", "itoa", "ryu", "serde", @@ -4802,9 +4729,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", ] @@ -4839,19 +4766,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", ] @@ -4861,22 +4788,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]] @@ -4913,9 +4840,9 @@ dependencies = [ [[package]] name = "sha3-asm" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bac61da6b35ad76b195eb4771210f947734321a8d81d7738e1580d953bc7a15e" +checksum = "a9b57fd861253bff08bb1919e995f90ba8f4889de2726091c8876f3a4e823b40" dependencies = [ "cc", "cfg-if", @@ -4930,12 +4857,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" @@ -4979,9 +4900,9 @@ 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 = [ "arbitrary", "serde", @@ -4989,18 +4910,18 @@ dependencies = [ [[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", @@ -5041,14 +4962,14 @@ dependencies = [ [[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", @@ -5057,13 +4978,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", @@ -5071,42 +4992,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", @@ -5116,7 +5019,7 @@ dependencies = [ "serde_json_pythonic", "serde_with 2.3.3", "sha3", - "starknet-crypto 0.6.1", + "starknet-crypto 0.6.2", "starknet-ff", ] @@ -5131,7 +5034,7 @@ dependencies = [ "hmac", "num-bigint", "num-integer", - "num-traits 0.2.18", + "num-traits 0.2.19", "rfc6979", "sha2", "starknet-crypto-codegen", @@ -5142,33 +5045,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]] @@ -5182,18 +5085,18 @@ 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 0.4.2", "bigdecimal", @@ -5206,19 +5109,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", @@ -5229,40 +5132,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", ] @@ -5275,7 +5176,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", @@ -5288,19 +5189,39 @@ dependencies = [ "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", +] + [[package]] name = "starknet_in_rust" 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-utils", "cairo-native", - "cairo-vm 1.0.0-rc1", + "cairo-vm 1.0.0-rc3", "coverage-helper", "flate2", "getset", @@ -5308,11 +5229,11 @@ 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", @@ -5323,8 +5244,8 @@ dependencies = [ "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", @@ -5344,7 +5265,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", ] @@ -5357,9 +5278,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" @@ -5373,7 +5294,7 @@ version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29" dependencies = [ - "strum_macros 0.26.2", + "strum_macros 0.26.3", ] [[package]] @@ -5391,15 +5312,15 @@ dependencies = [ [[package]] name = "strum_macros" -version = "0.26.2" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6cf59daf282c0a494ba14fd21610a0325f9f90ec9d1231dea26bcb1d696c946" +checksum = "f7993a8e3a9e88a00351486baae9522c91b123a088f76469e5bd5cc17198ea87" dependencies = [ - "heck 0.4.1", + "heck 0.5.0", "proc-macro2", "quote", "rustversion", - "syn 2.0.51", + "syn 2.0.66", ] [[package]] @@ -5443,9 +5364,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", @@ -5458,29 +5379,6 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" -[[package]] -name = "syntect" -version = "5.2.0" -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", -] - [[package]] name = "system-configuration" version = "0.5.1" @@ -5509,12 +5407,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", @@ -5522,9 +5420,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", @@ -5543,16 +5441,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" @@ -5571,7 +5459,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.66", ] [[package]] @@ -5582,28 +5470,28 @@ checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.66", "test-case-core", ] [[package]] name = "thiserror" -version = "1.0.58" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" +checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.58" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" +checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.66", ] [[package]] @@ -5647,9 +5535,9 @@ dependencies = [ [[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", @@ -5668,9 +5556,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", @@ -5702,15 +5590,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", @@ -5719,13 +5607,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]] @@ -5734,41 +5622,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", ] @@ -5779,22 +5666,33 @@ 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.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +dependencies = [ + "indexmap 2.2.6", "toml_datetime", "winnow 0.5.40", ] [[package]] name = "toml_edit" -version = "0.22.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]] @@ -5822,7 +5720,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.66", ] [[package]] @@ -5944,9 +5842,9 @@ checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" [[package]] name = "unicode-width" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" +checksum = "68f5e5f3158ecfd4b8ff6fe086db7c8467a2dfdac97fe420f2b7c4aa97af66d6" [[package]] name = "unicode-xid" @@ -5974,17 +5872,17 @@ 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", @@ -6047,9 +5945,9 @@ dependencies = [ [[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", @@ -6072,9 +5970,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", @@ -6082,24 +5980,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", @@ -6109,9 +6007,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", @@ -6119,28 +6017,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", @@ -6191,11 +6089,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]] @@ -6210,7 +6108,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]] @@ -6228,7 +6126,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]] @@ -6248,17 +6146,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]] @@ -6269,9 +6168,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" @@ -6281,9 +6180,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" @@ -6293,9 +6192,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 = "2a4e9b6a7cac734a8b4138a4e1044eac3404d8326b6c0f939276560687a033fb" +checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" [[package]] name = "windows_i686_msvc" @@ -6305,9 +6210,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" @@ -6317,9 +6222,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" @@ -6329,9 +6234,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" @@ -6341,9 +6246,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" @@ -6356,9 +6261,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", ] @@ -6382,35 +6287,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" @@ -6420,29 +6310,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", ] @@ -6455,7 +6345,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.66", ] [[package]] @@ -6518,9 +6408,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 6f9e7f690..69e5a1b6c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,62 +22,62 @@ members = [ ] [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-lang-casm = "2.6.3" +cairo-lang-sierra = "2.6.3" +cairo-lang-starknet = "2.6.3" +cairo-lang-utils = "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+ +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 = "60ed062a3d6d40cd8688a580f440af525f40d437", optional = true } +cairo-native = { git = "https://github.com/lambdaclass/cairo_native", rev = "15bd4b9e672a0c1a196de4b613ee72befaf08b28", 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 = [ +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" reth-primitives = { git = "https://github.com/paradigmxyz/reth.git", tag = "v0.1.0-alpha.18", default-features = false } -tracing-subscriber = { version = "0.3.17", features = ["env-filter"] } +tracing-subscriber = { version = "0.3.18", features = ["env-filter"] } [[bench]] path = "bench/internals.rs" diff --git a/Makefile b/Makefile index 90a22eb0a..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 @@ -113,7 +113,7 @@ cairo-%.tar: # Test Cairo Kakarot Contracts # ============================= -KAKAROT_VERSION=v0.1.1 +KAKAROT_VERSION=v0.1.8 KAKAROT_DIR=starknet_programs/kakarot KAKAROT_FILES:=$(wildcard $(KAKAROT_DIR)/*.json) @@ -154,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 diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 10c84f3ba..936613c1f 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,4 +1,4 @@ [toolchain] -channel = "1.75" +channel = "1.78.0" components = ["rustfmt", "clippy"] profile = "minimal" From fff96fd13e23cff5495a27fee193c1ca03a86faf Mon Sep 17 00:00:00 2001 From: Edgar Date: Wed, 5 Jun 2024 12:02:10 +0200 Subject: [PATCH 07/30] update runner --- Cargo.lock | 1 + Cargo.toml | 2 + src/runner/mod.rs | 177 ++++++++++++++------------------ src/syscalls/syscall_handler.rs | 2 +- 4 files changed, 82 insertions(+), 100 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index db4707633..993db756e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5219,6 +5219,7 @@ dependencies = [ "cairo-lang-casm", "cairo-lang-sierra", "cairo-lang-starknet", + "cairo-lang-starknet-classes", "cairo-lang-utils", "cairo-native", "cairo-vm 1.0.0-rc3", diff --git a/Cargo.toml b/Cargo.toml index 69e5a1b6c..74c2f3176 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -26,6 +26,7 @@ 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", ] } @@ -41,6 +42,7 @@ cairo-lang-casm = { workspace = true } cairo-lang-sierra = { workspace = true } cairo-lang-starknet = { workspace = true } cairo-lang-utils = { workspace = true } +cairo-lang-starknet-classes = { workspace = true } cairo-native = { git = "https://github.com/lambdaclass/cairo_native", rev = "15bd4b9e672a0c1a196de4b613ee72befaf08b28", optional = true } k256 = "0.13.3" p256 = "0.13.2" diff --git a/src/runner/mod.rs b/src/runner/mod.rs index 0d0a98256..c92739629 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,7 +419,10 @@ mod test { transaction::error::TransactionError, }; use cairo_vm::{ - types::relocatable::{MaybeRelocatable, Relocatable}, + types::{ + layout_name::LayoutName, + relocatable::{MaybeRelocatable, Relocatable}, + }, vm::{ runners::cairo_runner::{CairoRunner, RunResources}, vm_core::VirtualMachine, @@ -448,15 +432,15 @@ mod test { #[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 +451,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 +459,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 +474,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 +484,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 +492,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 +505,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 +513,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 +526,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 +534,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 +545,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 +556,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 +568,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 +579,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/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, } From 45cc574d462022dffe7b3af66631d3dd482a9e2b Mon Sep 17 00:00:00 2001 From: Edgar Date: Wed, 5 Jun 2024 12:07:12 +0200 Subject: [PATCH 08/30] update os_usage --- src/execution/os_usage.rs | 101 +++++++++++--------------------------- 1 file changed, 28 insertions(+), 73 deletions(-) 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), ]), }; From c69f7a41deafa1b2c10f384741b849b8d3a6a75d Mon Sep 17 00:00:00 2001 From: Edgar Date: Wed, 5 Jun 2024 12:20:56 +0200 Subject: [PATCH 09/30] update execution entry point --- src/execution/execution_entry_point.rs | 41 +++++++++++++------------- src/utils.rs | 23 +++++---------- 2 files changed, 27 insertions(+), 37 deletions(-) diff --git a/src/execution/execution_entry_point.rs b/src/execution/execution_entry_point.rs index fea00314a..ef58fb6a2 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, }; @@ -418,9 +418,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,8 +428,7 @@ 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 @@ -449,14 +448,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 +477,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 +526,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 +563,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 +571,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 +583,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 +592,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 +614,7 @@ impl ExecutionEntryPoint { )?; runner + .cairo_runner .vm .mark_address_range_as_accessed(core_program_end_ptr, program_extra_data.len())?; @@ -631,6 +629,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())?; diff --git a/src/utils.rs b/src/utils.rs index 675bb8090..dc0b2b10c 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; @@ -197,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(); @@ -207,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().to_string(), value); } Ok(resources) @@ -391,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() } From d62144c25ecc0e7d30a00dbb4d302a8f23b8b657 Mon Sep 17 00:00:00 2001 From: Edgar Date: Wed, 5 Jun 2024 12:28:06 +0200 Subject: [PATCH 10/30] update execution mod --- src/execution/mod.rs | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/src/execution/mod.rs b/src/execution/mod.rs index f11861f9d..ef151d288 100644 --- a/src/execution/mod.rs +++ b/src/execution/mod.rs @@ -467,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, From 9784e7407aa918a5a3e1d71dfec13e7ca779e05a Mon Sep 17 00:00:00 2001 From: Edgar Date: Wed, 5 Jun 2024 12:29:36 +0200 Subject: [PATCH 11/30] update core contract_address --- src/core/contract_address/casm_contract_address.rs | 2 +- src/core/contract_address/deprecated_contract_address.rs | 6 +----- src/core/contract_address/sierra_contract_address.rs | 4 ++-- 3 files changed, 4 insertions(+), 8 deletions(-) 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 e6e7f9b66..04ad0115a 100644 --- a/src/core/contract_address/sierra_contract_address.rs +++ b/src/core/contract_address/sierra_contract_address.rs @@ -1,7 +1,7 @@ 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; From 8e182f724125906a57069c53d344fa81f0073d55 Mon Sep 17 00:00:00 2001 From: Edgar Date: Wed, 5 Jun 2024 12:32:08 +0200 Subject: [PATCH 12/30] update services api --- src/services/api/contract_classes/compiled_class.rs | 9 +++++---- .../api/contract_classes/deprecated_contract_class.rs | 4 ++-- 2 files changed, 7 insertions(+), 6 deletions(-) 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..75972bebf 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; From 11a58fad0b8d8672b0c3e393845eabc0ce5a48eb Mon Sep 17 00:00:00 2001 From: Edgar Date: Wed, 5 Jun 2024 12:36:55 +0200 Subject: [PATCH 13/30] update syscall request --- src/syscalls/deprecated_syscall_request.rs | 40 +++++++++++----------- src/syscalls/syscall_request.rs | 30 ++++++++-------- 2 files changed, 35 insertions(+), 35 deletions(-) diff --git a/src/syscalls/deprecated_syscall_request.rs b/src/syscalls/deprecated_syscall_request.rs index 337538e0c..1faa7fcd7 100644 --- a/src/syscalls/deprecated_syscall_request.rs +++ b/src/syscalls/deprecated_syscall_request.rs @@ -261,10 +261,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 +294,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 +315,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 +337,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 +360,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/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, From fe29c240a88fecedca46431c5744c1ee54bd5ae8 Mon Sep 17 00:00:00 2001 From: Edgar Date: Wed, 5 Jun 2024 12:37:53 +0200 Subject: [PATCH 14/30] update declare and lib --- src/lib.rs | 2 +- src/transaction/declare.rs | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 1746dc88c..ead2448a9 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, }; diff --git a/src/transaction/declare.rs b/src/transaction/declare.rs index 798283ac5..b18433bf4 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(), From b8b95abd7779ccd2d5b2637f4905d1ac685d8a71 Mon Sep 17 00:00:00 2001 From: Edgar Date: Wed, 5 Jun 2024 12:39:31 +0200 Subject: [PATCH 15/30] update handlers and remove unused structs --- .../sierra_contract_address.rs | 55 ------------------- src/syscalls/deprecated_syscall_request.rs | 10 ---- src/syscalls/native_syscall_handler.rs | 4 +- 3 files changed, 2 insertions(+), 67 deletions(-) diff --git a/src/core/contract_address/sierra_contract_address.rs b/src/core/contract_address/sierra_contract_address.rs index 04ad0115a..73fb2c41e 100644 --- a/src/core/contract_address/sierra_contract_address.rs +++ b/src/core/contract_address/sierra_contract_address.rs @@ -4,9 +4,7 @@ use cairo_lang_starknet_classes::{ 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"; @@ -139,59 +137,6 @@ fn get_contract_entry_points( Ok(entry_points) } -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(()) - } -} - #[cfg(test)] mod tests { use crate::core::contract_address::compute_sierra_class_hash; diff --git a/src/syscalls/deprecated_syscall_request.rs b/src/syscalls/deprecated_syscall_request.rs index 1faa7fcd7..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 { diff --git a/src/syscalls/native_syscall_handler.rs b/src/syscalls/native_syscall_handler.rs index c1414aab1..d8e79c95a 100644 --- a/src/syscalls/native_syscall_handler.rs +++ b/src/syscalls/native_syscall_handler.rs @@ -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(); } From 9702d2c6588a2de8d7eab0359802f38fe8fc4e14 Mon Sep 17 00:00:00 2001 From: Edgar Date: Wed, 5 Jun 2024 12:45:10 +0200 Subject: [PATCH 16/30] fix secp native syscall handler operations from native --- src/syscalls/native_syscall_handler.rs | 129 ++++++++++++------------- 1 file changed, 64 insertions(+), 65 deletions(-) diff --git a/src/syscalls/native_syscall_handler.rs b/src/syscalls/native_syscall_handler.rs index d8e79c95a..23476640e 100644 --- a/src/syscalls/native_syscall_handler.rs +++ b/src/syscalls/native_syscall_handler.rs @@ -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,12 +696,12 @@ 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(|_| { - vec![Felt252::from_bytes_be( + vec![Felt::from_bytes_be( b"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0invalid scalar", )] })? @@ -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,19 +926,18 @@ 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(|_| { - vec![Felt252::from_bytes_be( + vec![Felt::from_bytes_be( b"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0invalid scalar", )] })? .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,7 +1007,7 @@ 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)) } From 8fc33786b20c4fa913e79d59728232791df761dc Mon Sep 17 00:00:00 2001 From: Edgar Date: Wed, 5 Jun 2024 12:45:32 +0200 Subject: [PATCH 17/30] fix --- src/syscalls/native_syscall_handler.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/syscalls/native_syscall_handler.rs b/src/syscalls/native_syscall_handler.rs index 23476640e..7d487d3d2 100644 --- a/src/syscalls/native_syscall_handler.rs +++ b/src/syscalls/native_syscall_handler.rs @@ -701,7 +701,7 @@ impl<'a, 'cache, S: StateReader, C: ContractClassCache> StarknetSyscallHandler buf }) .map_err(|_| { - vec![Felt::from_bytes_be( + vec![Felt252::from_bytes_be( b"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0invalid scalar", )] })? @@ -931,7 +931,7 @@ impl<'a, 'cache, S: StateReader, C: ContractClassCache> StarknetSyscallHandler buf }) .map_err(|_| { - vec![Felt::from_bytes_be( + vec![Felt252::from_bytes_be( b"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0invalid scalar", )] })? From dcc4ffc9568426f5efd81356ada3cdf7c3cdca65 Mon Sep 17 00:00:00 2001 From: Edgar Date: Wed, 5 Jun 2024 12:54:11 +0200 Subject: [PATCH 18/30] lock --- Cargo.lock | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 993db756e..fbbd2228d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -244,9 +244,9 @@ dependencies = [ [[package]] name = "anstyle-query" -version = "1.0.3" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a64c907d4e79225ac72e2a354c9ce84d50ebb4586dee56c82b3ee73004f537f5" +checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" dependencies = [ "windows-sys 0.52.0", ] @@ -5295,7 +5295,7 @@ version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29" dependencies = [ - "strum_macros 0.26.3", + "strum_macros 0.26.4", ] [[package]] @@ -5313,9 +5313,9 @@ dependencies = [ [[package]] name = "strum_macros" -version = "0.26.3" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7993a8e3a9e88a00351486baae9522c91b123a088f76469e5bd5cc17198ea87" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ "heck 0.5.0", "proc-macro2", @@ -5843,9 +5843,9 @@ checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" [[package]] name = "unicode-width" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f5e5f3158ecfd4b8ff6fe086db7c8467a2dfdac97fe420f2b7c4aa97af66d6" +checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" [[package]] name = "unicode-xid" @@ -5887,7 +5887,7 @@ dependencies = [ "serde", "serde_json", "url", - "webpki-roots 0.26.1", + "webpki-roots 0.26.2", ] [[package]] @@ -6053,9 +6053,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", ] From 8a1b62859e4e5da10abf2250eb823d38fe946e1a Mon Sep 17 00:00:00 2001 From: Edgar Date: Wed, 5 Jun 2024 13:01:24 +0200 Subject: [PATCH 19/30] fixes --- Cargo.lock | 344 ++++++++++++------ Cargo.toml | 2 +- src/runner/mod.rs | 5 +- .../deprecated_contract_class.rs | 2 +- 4 files changed, 227 insertions(+), 126 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fbbd2228d..577a9ac85 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -78,31 +78,48 @@ dependencies = [ "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=a4453d4#a4453d42ffb755a46bace2ceca3baa454e0cd807" +source = "git+https://github.com/alloy-rs/alloy?rev=39b8695#39b869585955d95e9c64c3e1b66f16432ae4f132" dependencies = [ "alloy-primitives", "alloy-rlp", - "thiserror", + "alloy-serde", + "c-kzg", + "once_cell", + "serde", ] [[package]] name = "alloy-genesis" version = "0.1.0" -source = "git+https://github.com/alloy-rs/alloy?rev=a4453d4#a4453d42ffb755a46bace2ceca3baa454e0cd807" +source = "git+https://github.com/alloy-rs/alloy?rev=39b8695#39b869585955d95e9c64c3e1b66f16432ae4f132" dependencies = [ "alloy-primitives", - "alloy-rpc-types", + "alloy-serde", "serde", ] [[package]] name = "alloy-primitives" -version = "0.6.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "600d34d8de81e23b6d909c094e23b3d357e01ca36b78a8c5424c501eedbe86f0" +checksum = "5277af0cbcc483ee6ad2c1e818090b5928d27f04fd6580680f31c1cf8068bcc2" dependencies = [ "alloy-rlp", "bytes", @@ -144,48 +161,135 @@ dependencies = [ ] [[package]] -name = "alloy-rpc-engine-types" +name = "alloy-rpc-types" version = "0.1.0" -source = "git+https://github.com/alloy-rs/alloy?rev=a4453d4#a4453d42ffb755a46bace2ceca3baa454e0cd807" +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-trace-types" +name = "alloy-rpc-types-trace" version = "0.1.0" -source = "git+https://github.com/alloy-rs/alloy?rev=a4453d4#a4453d42ffb755a46bace2ceca3baa454e0cd807" +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-rpc-types" +name = "alloy-serde" version = "0.1.0" -source = "git+https://github.com/alloy-rs/alloy?rev=a4453d4#a4453d42ffb755a46bace2ceca3baa454e0cd807" +source = "git+https://github.com/alloy-rs/alloy?rev=39b8695#39b869585955d95e9c64c3e1b66f16432ae4f132" dependencies = [ "alloy-primitives", - "alloy-rlp", - "itertools 0.12.1", - "jsonrpsee-types", "serde", "serde_json", - "thiserror", +] + +[[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 = "6eb5e6234c0b62514992589fe1578f64d418dbc8ef5cd1ab2d7f2f568f599698" +dependencies = [ + "alloy-primitives", + "alloy-sol-macro", + "const-hex", ] [[package]] name = "alloy-trie" -version = "0.2.1" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59974c3c7778ebbcd73356a430fd4608aaf0630b1fdb4f5337bfd70f40b66618" +checksum = "beb28aa4ecd32fdfa1b1bdd111ff7357dd562c6b2372694cf9e613434fcba659" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -732,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" @@ -770,9 +880,9 @@ dependencies = [ [[package]] name = "c-kzg" -version = "0.4.2" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94a4bc5367b6284358d2a6a6a1dc2d92ec4b86034561c3b9d3341909752fd848" +checksum = "cdf100c4cea8f207e883ff91ca886d621d8a166cb04971dfaa9bb8fd99ed95df" dependencies = [ "blst", "cc", @@ -1539,19 +1649,6 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" -[[package]] -name = "codecs-derive" -version = "0.1.0-alpha.18" -source = "git+https://github.com/paradigmxyz/reth.git?tag=v0.1.0-alpha.18#11dbd0867ed020dad1c6b0763368ecd20d094056" -dependencies = [ - "convert_case 0.6.0", - "parity-scale-codec", - "proc-macro2", - "quote", - "serde", - "syn 2.0.66", -] - [[package]] name = "colorchoice" version = "1.0.1" @@ -2030,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" @@ -2112,6 +2215,25 @@ 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" @@ -2869,16 +2991,15 @@ dependencies = [ [[package]] name = "jsonrpsee-types" -version = "0.20.3" +version = "0.22.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5be0be325642e850ed0bdff426674d2e66b2b7117c9be23a7caef68a2902b7d9" +checksum = "150d6168405890a7a3231a3c74843f58b8959471f6df76078db2619ddee1d07d" dependencies = [ "anyhow", "beef", "serde", "serde_json", "thiserror", - "tracing", ] [[package]] @@ -3436,7 +3557,6 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" dependencies = [ - "proc-macro-crate 3.1.0", "proc-macro2", "quote", "syn 2.0.66", @@ -3450,9 +3570,9 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "nybbles" -version = "0.1.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836816c354fb2c09622b54545a6f98416147346b13cc7eba5f92fab6b3042c93" +checksum = "95f06be0417d97f81fe4e5c86d7d01b392655a9cac9c19a848aa033e18937b23" dependencies = [ "alloy-rlp", "const-hex", @@ -3518,7 +3638,6 @@ dependencies = [ "arrayvec", "bitvec", "byte-slice-cast", - "bytes", "impl-trait-for-tuples", "parity-scale-codec-derive", "serde", @@ -3530,7 +3649,7 @@ version = "3.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "312270ee71e1cd70289dacf597cab7b207aa107d2f28191c2ae45b2ece18a260" dependencies = [ - "proc-macro-crate 1.3.1", + "proc-macro-crate", "proc-macro2", "quote", "syn 1.0.109", @@ -3826,15 +3945,6 @@ dependencies = [ "toml_edit 0.19.15", ] -[[package]] -name = "proc-macro-crate" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" -dependencies = [ - "toml_edit 0.21.1", -] - [[package]] name = "proc-macro-error" version = "1.0.4" @@ -4116,18 +4226,30 @@ dependencies = [ [[package]] name = "reth-codecs" -version = "0.1.0-alpha.18" -source = "git+https://github.com/paradigmxyz/reth.git?tag=v0.1.0-alpha.18#11dbd0867ed020dad1c6b0763368ecd20d094056" +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", - "codecs-derive", + "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.1.0-alpha.18" -source = "git+https://github.com/paradigmxyz/reth.git?tag=v0.1.0-alpha.18#11dbd0867ed020dad1c6b0763368ecd20d094056" +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", @@ -4139,8 +4261,8 @@ dependencies = [ [[package]] name = "reth-primitives" -version = "0.1.0-alpha.18" -source = "git+https://github.com/paradigmxyz/reth.git?tag=v0.1.0-alpha.18#11dbd0867ed020dad1c6b0763368ecd20d094056" +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", @@ -4152,9 +4274,9 @@ dependencies = [ "bytes", "cfg-if", "derive_more", + "enr", "itertools 0.12.1", "modular-bitfield", - "num_enum", "nybbles", "once_cell", "rayon", @@ -4163,31 +4285,28 @@ dependencies = [ "reth-rpc-types", "revm", "revm-primitives", + "roaring", "secp256k1 0.27.0", "serde", "serde_json", - "sha2", - "smallvec", + "serde_with 3.8.1", "strum 0.26.2", - "sucds", - "tempfile", "thiserror", - "tracing", - "zstd 0.12.4", ] [[package]] name = "reth-rpc-types" -version = "0.1.0-alpha.18" -source = "git+https://github.com/paradigmxyz/reth.git?tag=v0.1.0-alpha.18#11dbd0867ed020dad1c6b0763368ecd20d094056" +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-engine-types", - "alloy-rpc-trace-types", "alloy-rpc-types", - "bytes", - "itertools 0.12.1", + "alloy-rpc-types-anvil", + "alloy-rpc-types-engine", + "alloy-rpc-types-trace", + "enr", "jsonrpsee-types", "secp256k1 0.27.0", "serde", @@ -4199,12 +4318,13 @@ dependencies = [ [[package]] name = "revm" -version = "5.0.0" +version = "8.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266f86bdefa6dac07d92e2f5c37d7d183f2575b2f9e0ee9cba9402dfde912524" +checksum = "72a454c1c650b2b2e23f0c461af09e6c31e1d15e1cbebe905a701c46b8a50afc" dependencies = [ "auto_impl", "cfg-if", + "dyn-clone", "revm-interpreter", "revm-precompile", "serde", @@ -4213,9 +4333,9 @@ dependencies = [ [[package]] name = "revm-interpreter" -version = "2.1.0" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a80b516cc706630e604e2fd47c281501d2fb222712be4328921361388b7d2df" +checksum = "d322f2730cd300e99d271a1704a2dfb8973d832428f5aa282aaa40e2473b5eec" dependencies = [ "revm-primitives", "serde", @@ -4223,9 +4343,9 @@ dependencies = [ [[package]] name = "revm-precompile" -version = "4.1.0" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db828d49d329560a70809d9d1fa0c74695edb49f50c5332db3eb24483076deac" +checksum = "931f692f3f4fc72ec39d5d270f8e9d208c4a6008de7590ee96cf948e3b6d3f8d" dependencies = [ "aurora-engine-modexp", "c-kzg", @@ -4240,9 +4360,9 @@ dependencies = [ [[package]] name = "revm-primitives" -version = "2.1.0" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fecd125aad58e135e2ca5771ed6e4e7b1f05fa3a64e0dfb9cc643b7a800a8435" +checksum = "cbbc9640790cebcb731289afb7a7d96d16ad94afeb64b5d0b66443bd151e79d6" dependencies = [ "alloy-primitives", "auto_impl", @@ -4250,6 +4370,7 @@ dependencies = [ "bitvec", "c-kzg", "cfg-if", + "dyn-clone", "enumn", "hashbrown 0.14.5", "hex", @@ -4300,6 +4421,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" @@ -4628,6 +4759,7 @@ version = "0.28.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d24b59d129cdadea20aea4fb2352fa053712e5d713eee47d700cd4b2bc002f10" dependencies = [ + "rand", "secp256k1-sys 0.9.2", ] @@ -4904,7 +5036,6 @@ version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" dependencies = [ - "arbitrary", "serde", ] @@ -5343,15 +5474,6 @@ version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" -[[package]] -name = "sucds" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64accd20141dfbef67ad83c51d588146cff7810616e1bda35a975be369059533" -dependencies = [ - "anyhow", -] - [[package]] name = "syn" version = "1.0.109" @@ -5374,6 +5496,18 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "syn-solidity" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6fe08d08d84f2c0a77f1e7c46518789d745c2e87a2721791ed7c3c9bc78df28" +dependencies = [ + "paste", + "proc-macro2", + "quote", + "syn 2.0.66", +] + [[package]] name = "sync_wrapper" version = "0.1.2" @@ -5672,17 +5806,6 @@ dependencies = [ "winnow 0.5.40", ] -[[package]] -name = "toml_edit" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" -dependencies = [ - "indexmap 2.2.6", - "toml_datetime", - "winnow 0.5.40", -] - [[package]] name = "toml_edit" version = "0.22.14" @@ -6366,7 +6489,7 @@ dependencies = [ "pbkdf2", "sha1", "time", - "zstd 0.11.2+zstd.1.5.2", + "zstd", ] [[package]] @@ -6375,16 +6498,7 @@ version = "0.11.2+zstd.1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" dependencies = [ - "zstd-safe 5.0.2+zstd.1.5.2", -] - -[[package]] -name = "zstd" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a27595e173641171fc74a1232b7b1c7a7cb6e18222c11e9dfb9888fa424c53c" -dependencies = [ - "zstd-safe 6.0.6", + "zstd-safe", ] [[package]] @@ -6397,16 +6511,6 @@ dependencies = [ "zstd-sys", ] -[[package]] -name = "zstd-safe" -version = "6.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee98ffd0b48ee95e6c5168188e44a54550b1564d9d530ee21d5f0eaed1069581" -dependencies = [ - "libc", - "zstd-sys", -] - [[package]] name = "zstd-sys" version = "2.0.10+zstd.1.5.6" diff --git a/Cargo.toml b/Cargo.toml index 74c2f3176..d3c25907c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -78,7 +78,7 @@ assert_matches = "1.5.0" coverage-helper = "0.2.2" lru = "0.12.3" pretty_assertions_sorted = "1.2.3" -reth-primitives = { git = "https://github.com/paradigmxyz/reth.git", tag = "v0.1.0-alpha.18", default-features = false } +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]] diff --git a/src/runner/mod.rs b/src/runner/mod.rs index c92739629..08b82284a 100644 --- a/src/runner/mod.rs +++ b/src/runner/mod.rs @@ -423,10 +423,7 @@ mod test { layout_name::LayoutName, relocatable::{MaybeRelocatable, Relocatable}, }, - vm::{ - runners::cairo_runner::{CairoRunner, RunResources}, - vm_core::VirtualMachine, - }, + vm::runners::cairo_runner::{CairoRunner, RunResources}, }; #[test] diff --git a/src/services/api/contract_classes/deprecated_contract_class.rs b/src/services/api/contract_classes/deprecated_contract_class.rs index 75972bebf..28336a395 100644 --- a/src/services/api/contract_classes/deprecated_contract_class.rs +++ b/src/services/api/contract_classes/deprecated_contract_class.rs @@ -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] From 1699488dc0fd1a4919d8fd2e8755101acc5af8f1 Mon Sep 17 00:00:00 2001 From: Edgar Date: Wed, 5 Jun 2024 13:07:13 +0200 Subject: [PATCH 20/30] fixes --- .../sierra_contract_address.rs | 2 +- src/lib.rs | 2 +- src/syscalls/native_syscall_handler.rs | 10 +++++++ src/transaction/declare.rs | 30 ++++++++++--------- src/transaction/invoke_function.rs | 2 +- src/transaction/l1_handler.rs | 6 ++-- 6 files changed, 32 insertions(+), 20 deletions(-) diff --git a/src/core/contract_address/sierra_contract_address.rs b/src/core/contract_address/sierra_contract_address.rs index 73fb2c41e..156717889 100644 --- a/src/core/contract_address/sierra_contract_address.rs +++ b/src/core/contract_address/sierra_contract_address.rs @@ -140,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}; diff --git a/src/lib.rs b/src/lib.rs index ead2448a9..ad56e145f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -284,7 +284,7 @@ mod test { }, }, }; - use cairo_lang_starknet::{ + use cairo_lang_starknet_classes::{ casm_contract_class::CasmContractClass, contract_class::ContractClass as SierraContractClass, }; diff --git a/src/syscalls/native_syscall_handler.rs b/src/syscalls/native_syscall_handler.rs index 7d487d3d2..5f44ffe17 100644 --- a/src/syscalls/native_syscall_handler.rs +++ b/src/syscalls/native_syscall_handler.rs @@ -1275,6 +1275,7 @@ 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 @@ -1301,6 +1302,7 @@ mod 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 @@ -1339,6 +1341,7 @@ mod 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 @@ -1371,6 +1374,7 @@ mod 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 @@ -1394,6 +1398,7 @@ mod 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 @@ -1421,6 +1426,7 @@ mod 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 @@ -1447,6 +1453,7 @@ mod 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 @@ -1485,6 +1492,7 @@ mod 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 @@ -1517,6 +1525,7 @@ mod 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 @@ -1540,6 +1549,7 @@ mod 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 diff --git a/src/transaction/declare.rs b/src/transaction/declare.rs index b18433bf4..9517adbd4 100644 --- a/src/transaction/declare.rs +++ b/src/transaction/declare.rs @@ -613,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}; @@ -626,11 +626,11 @@ 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 @@ -660,6 +660,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); @@ -682,11 +683,11 @@ 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 @@ -714,7 +715,7 @@ mod tests { // test we can retreive the data let expected_casm_class = - CasmContractClass::from_contract_class(declare.sierra_contract_class.unwrap(), true) + 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 @@ -736,12 +737,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 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 @@ -770,7 +771,7 @@ mod tests { // test we can retreive the data let expected_casm_class = - CasmContractClass::from_contract_class(declare.sierra_contract_class.unwrap(), true) + 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 @@ -792,11 +793,11 @@ 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 @@ -826,6 +827,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); @@ -848,11 +850,11 @@ 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); @@ -894,7 +896,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/invoke_function.rs b/src/transaction/invoke_function.rs index 892584cce..5d1e2086b 100644 --- a/src/transaction/invoke_function.rs +++ b/src/transaction/invoke_function.rs @@ -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..99576b57e 100644 --- a/src/transaction/l1_handler.rs +++ b/src/transaction/l1_handler.rs @@ -270,7 +270,7 @@ 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 +363,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![], From bf12f320e50d10ccd63ff3ebf8034c9a5058b036 Mon Sep 17 00:00:00 2001 From: Edgar Date: Wed, 5 Jun 2024 13:12:59 +0200 Subject: [PATCH 21/30] fixes --- src/syscalls/native_syscall_handler.rs | 176 ++++++++++++------------- src/transaction/declare.rs | 37 ++++-- src/transaction/l1_handler.rs | 4 +- 3 files changed, 115 insertions(+), 102 deletions(-) diff --git a/src/syscalls/native_syscall_handler.rs b/src/syscalls/native_syscall_handler.rs index 5f44ffe17..599826a99 100644 --- a/src/syscalls/native_syscall_handler.rs +++ b/src/syscalls/native_syscall_handler.rs @@ -1281,21 +1281,21 @@ mod test { 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] @@ -1309,32 +1309,32 @@ mod test { .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] @@ -1348,26 +1348,26 @@ mod test { .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] @@ -1380,18 +1380,18 @@ mod test { 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] @@ -1405,21 +1405,21 @@ mod test { .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] @@ -1432,21 +1432,21 @@ mod test { 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] @@ -1460,32 +1460,32 @@ mod test { .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] @@ -1499,26 +1499,26 @@ mod test { .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] @@ -1531,18 +1531,18 @@ mod test { 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] @@ -1556,20 +1556,20 @@ mod test { .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/transaction/declare.rs b/src/transaction/declare.rs index 9517adbd4..22f886e8e 100644 --- a/src/transaction/declare.rs +++ b/src/transaction/declare.rs @@ -630,7 +630,8 @@ mod tests { serde_json::from_reader(reader).unwrap(); let sender_address = Address(1.into()); let casm_class = - CasmContractClass::from_contract_class(sierra_contract_class.clone(), true, usize::MAX).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 @@ -660,7 +661,7 @@ mod tests { let expected_casm_class = CasmContractClass::from_contract_class( declare.sierra_contract_class.unwrap().clone(), true, - usize::MAX + usize::MAX, ) .unwrap(); let declare_compiled_class_hash = ClassHash::from(declare.compiled_class_hash); @@ -687,7 +688,8 @@ mod tests { serde_json::from_reader(reader).unwrap(); let sender_address = Address(1.into()); let casm_class = - CasmContractClass::from_contract_class(sierra_contract_class.clone(), true, usize::MAX).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 @@ -714,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, usize::MAX) - .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) @@ -742,7 +747,8 @@ mod tests { 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, usize::MAX).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 @@ -770,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, usize::MAX) - .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) @@ -797,7 +806,8 @@ mod tests { serde_json::from_reader(reader).unwrap(); let sender_address = Address(1.into()); let casm_class = - CasmContractClass::from_contract_class(sierra_contract_class.clone(), true, usize::MAX).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 @@ -827,7 +837,7 @@ mod tests { let expected_casm_class = CasmContractClass::from_contract_class( declare.sierra_contract_class.unwrap().clone(), true, - usize::MAX + usize::MAX, ) .unwrap(); let declare_compiled_class_hash = ClassHash::from(declare.compiled_class_hash); @@ -854,7 +864,8 @@ mod tests { serde_json::from_reader(reader).unwrap(); let sender_address = Address(1.into()); let casm_class = - CasmContractClass::from_contract_class(sierra_contract_class.clone(), true, usize::MAX).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); diff --git a/src/transaction/l1_handler.rs b/src/transaction/l1_handler.rs index 99576b57e..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::{types::builtin_name::BuiltinName, 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] From 7fb8b02518ab99a92b2e9589a21e735c58cd748c Mon Sep 17 00:00:00 2001 From: Edgar Date: Wed, 5 Jun 2024 13:19:52 +0200 Subject: [PATCH 22/30] fixes --- Cargo.lock | 2 +- examples/contract_execution/src/main.rs | 3 +- rpc_state_reader/Cargo.toml | 2 +- src/bin/native_bench.rs | 6 +-- .../complex_contracts/amm_contracts/amm.rs | 26 +++++------ .../amm_contracts/amm_proxy.rs | 44 ++++++++++--------- .../complex_contracts/kakarot/mod.rs | 6 +-- .../complex_contracts/nft/erc721.rs | 38 +++++++--------- 8 files changed, 60 insertions(+), 67 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 577a9ac85..4bbceb723 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4447,7 +4447,7 @@ dependencies = [ "serde_json", "serde_with 3.8.1", "starknet", - "starknet_api 0.7.0-dev.0", + "starknet_api 0.11.0", "starknet_in_rust", "test-case", "thiserror", 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/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/src/bin/native_bench.rs b/src/bin/native_bench.rs index f18bf1e4a..274181929 100644 --- a/src/bin/native_bench.rs +++ b/src/bin/native_bench.rs @@ -109,7 +109,7 @@ 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; @@ -195,7 +195,7 @@ 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; @@ -389,7 +389,7 @@ fn bench_erc20(executions: usize, bench_type: BenchType) { } _ => { 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; 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/kakarot/mod.rs b/tests/integration_tests/complex_contracts/kakarot/mod.rs index a07891fa8..a9ede7701 100644 --- a/tests/integration_tests/complex_contracts/kakarot/mod.rs +++ b/tests/integration_tests/complex_contracts/kakarot/mod.rs @@ -1,9 +1,7 @@ use std::str::FromStr; use cairo_vm::Felt252; -use reth_primitives::{ - sign_message, AccessList, Bytes, Signature, TransactionSigned, TxValue, B256, U256, -}; +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}; @@ -251,7 +249,7 @@ fn test_kakarot_contract() { max_fee_per_gas: 0, max_priority_fee_per_gas: 0, to: reth_primitives::TransactionKind::Call(contract_address), - value: TxValue::from(u8::MIN), + value: u8::MIN.try_into().unwrap(), access_list: AccessList::default(), input: Bytes::default(), }), 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() From 132cd55fc694616cc80700b89a01c8f6f28b080e Mon Sep 17 00:00:00 2001 From: Edgar Date: Wed, 5 Jun 2024 13:25:44 +0200 Subject: [PATCH 23/30] fixes --- tests/integration_tests/cairo_1_syscalls.rs | 19 ++++--- tests/integration_tests/deploy_account.rs | 7 ++- tests/integration_tests/fibonacci.rs | 7 ++- tests/integration_tests/internals.rs | 50 ++++++++++--------- tests/integration_tests/multi_syscall_test.rs | 2 +- tests/integration_tests/syscalls.rs | 14 ++---- 6 files changed, 47 insertions(+), 52 deletions(-) diff --git a/tests/integration_tests/cairo_1_syscalls.rs b/tests/integration_tests/cairo_1_syscalls.rs index 4eeb8c5aa..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; @@ -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 @@ -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 { @@ -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 { @@ -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 @@ -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 @@ -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/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 b006823e5..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; @@ -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/internals.rs b/tests/integration_tests/internals.rs index 39fa85ba4..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), ]); @@ -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/syscalls.rs b/tests/integration_tests/syscalls.rs index 43f01cf5e..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::{ @@ -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), ]), }; From a69490eeffeff0ec23f01441d1ee73fcb7b17974 Mon Sep 17 00:00:00 2001 From: Edgar Date: Wed, 5 Jun 2024 15:30:59 +0200 Subject: [PATCH 24/30] add changes from greged --- .../complex_contracts/kakarot/mod.rs | 141 +++++++++++++----- 1 file changed, 100 insertions(+), 41 deletions(-) diff --git a/tests/integration_tests/complex_contracts/kakarot/mod.rs b/tests/integration_tests/complex_contracts/kakarot/mod.rs index a9ede7701..7e7bd9546 100644 --- a/tests/integration_tests/complex_contracts/kakarot/mod.rs +++ b/tests/integration_tests/complex_contracts/kakarot/mod.rs @@ -16,7 +16,7 @@ use starknet_in_rust::utils::{calculate_sn_keccak, felt_to_field_element, field_ use crate::integration_tests::cairo_native::TestStateSetup; #[test] -// #[ignore = "linked to native issue #499 and #500"] +// #[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 = @@ -35,6 +35,7 @@ fn test_kakarot_contract() { 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( @@ -45,6 +46,7 @@ fn test_kakarot_contract() { 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( @@ -57,7 +59,8 @@ fn test_kakarot_contract() { 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("contract_account_bytecode", &[]); + 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, @@ -83,7 +86,7 @@ fn test_kakarot_contract() { .load_contract_at_address( eoa_class_hash, eoa_address.clone(), - "starknet_programs/kakarot/contracts_ExternallyOwnedAccount.cairo", + "starknet_programs/kakarot/contracts_AccountContract.cairo", ) .unwrap(); // Deploy Contract Account @@ -91,7 +94,7 @@ fn test_kakarot_contract() { .load_contract_at_address( contract_account_class_hash, contract_account_address.clone(), - "starknet_programs/kakarot/contracts_ContractAccount.cairo", + "starknet_programs/kakarot/contracts_AccountContract.cairo", ) .unwrap(); @@ -105,124 +108,179 @@ fn test_kakarot_contract() { // Prepare storage for Kakarot let kakarot_storage = vec![ + // Add the EOA to the address registry ( - (kakarot_address.clone(), compute_storage_key("owner", &[])), + ( + 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("chain_id", &[]), + compute_storage_key( + "Kakarot_evm_to_starknet_address", + &[contract_account_evm_address], + ), ), - chain_id, + contract_account_address.0, ), ( ( kakarot_address.clone(), - compute_storage_key("native_token", &[]), + compute_storage_key("Kakarot_uninitialized_account_class_hash", &[]), ), - fee_token_address.0, + Felt252::from_bytes_be(&uninitialized_account_class_hash.0), ), ( ( kakarot_address.clone(), - compute_storage_key("ca_class_hash", &[]), + compute_storage_key("Kakarot_account_contract_class_hash", &[]), ), Felt252::from_bytes_be(&contract_account_class_hash.0), ), ( ( kakarot_address.clone(), - compute_storage_key("eoa_class_hash", &[]), + compute_storage_key("Kakarot_native_token_address", &[]), ), - Felt252::from_bytes_be(&eoa_class_hash.0), + fee_token_address.0, ), ( ( kakarot_address.clone(), - compute_storage_key("account_class_hash", &[]), + compute_storage_key("Kakarot_coinbase", &[]), ), - Felt252::from_bytes_be(&uninitialized_account_class_hash.0), + eoa_address.0, ), - // Add the EOA to the address registry ( ( kakarot_address.clone(), - compute_storage_key("address_registry", &[eoa_evm_address]), + compute_storage_key("Kakarot_base_fee", &[]), ), - Felt252::ONE, // Set account type to 1 (EOA) + Felt252::ONE, ), ( ( kakarot_address.clone(), - compute_storage_key("address_registry", &[eoa_evm_address]) + Felt252::ONE, + compute_storage_key("Kakarot_prev_randao", &[]), ), - eoa_address.0, + Felt252::ZERO, ), - // Add the contract account to the address registry ( ( kakarot_address.clone(), - compute_storage_key("address_registry", &[contract_account_evm_address]), + compute_storage_key("Kakarot_block_gas_limit", &[]), ), - Felt252::TWO, // Set account type to 1 (CA) + Felt252::MAX, ), ( ( kakarot_address.clone(), - compute_storage_key("address_registry", &[contract_account_evm_address]) - + Felt252::ONE, + compute_storage_key("Ownable_owner", &[]), ), - contract_account_address.0, + 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("evm_address", &[])), - eoa_evm_address, + ( + eoa_address.clone(), + compute_storage_key("Account_storage", &[]), + ), + Felt252::ZERO, ), ( - (eoa_address.clone(), compute_storage_key("chain_id", &[])), - chain_id, + ( + 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("kakarot_core_address", &[]), + compute_storage_key("Account_evm_address", &[]), ), - kakarot_address.clone().0, + 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("evm_address", &[]), + compute_storage_key("Account_storage", &[]), ), - contract_account_evm_address, + Felt252::ZERO, ), ( ( contract_account_address.clone(), - compute_storage_key("chain_id", &[]), + compute_storage_key("Account_is_initialized", &[]), ), - chain_id, + Felt252::ONE, ), ( ( contract_account_address.clone(), - compute_storage_key("kakarot_core_address", &[]), + compute_storage_key("Account_nonce", &[]), ), - kakarot_address.0, + contract_nonce, ), - // Set the bytecode ( - (contract_account_address.clone(), bytecode_storage_key), - bytecode, + ( + 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, ), ]; @@ -249,7 +307,7 @@ fn test_kakarot_contract() { max_fee_per_gas: 0, max_priority_fee_per_gas: 0, to: reth_primitives::TransactionKind::Call(contract_address), - value: u8::MIN.try_into().unwrap(), + value: U256::from(u8::MIN), access_list: AccessList::default(), input: Bytes::default(), }), @@ -303,6 +361,7 @@ fn test_kakarot_contract() { &[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); } From 8760ed74dbd50b6e58f7fe2621ae7babadb9b738 Mon Sep 17 00:00:00 2001 From: Edgar Date: Thu, 6 Jun 2024 16:15:29 +0200 Subject: [PATCH 25/30] temp --- Cargo.lock | 18 ++++-- Cargo.toml | 3 +- src/execution/execution_entry_point.rs | 7 +++ src/syscalls/native_syscall_handler.rs | 60 ++----------------- src/transaction/declare.rs | 2 +- src/transaction/deploy_account.rs | 2 +- src/transaction/invoke_function.rs | 9 ++- .../complex_contracts/kakarot/mod.rs | 12 +++- 8 files changed, 46 insertions(+), 67 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4bbceb723..e29aa3aa5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1422,8 +1422,7 @@ dependencies = [ [[package]] name = "cairo-native" -version = "0.1.0" -source = "git+https://github.com/lambdaclass/cairo_native?rev=15bd4b9e672a0c1a196de4b613ee72befaf08b28#15bd4b9e672a0c1a196de4b613ee72befaf08b28" +version = "0.2.0" dependencies = [ "anyhow", "bumpalo", @@ -1449,7 +1448,7 @@ dependencies = [ "colored", "educe", "id-arena", - "itertools 0.12.1", + "itertools 0.13.0", "k256", "keccak", "lazy_static", @@ -1471,8 +1470,7 @@ dependencies = [ [[package]] name = "cairo-native-runtime" -version = "0.1.0" -source = "git+https://github.com/lambdaclass/cairo_native?rev=15bd4b9e672a0c1a196de4b613ee72befaf08b28#15bd4b9e672a0c1a196de4b613ee72befaf08b28" +version = "0.2.0" dependencies = [ "cairo-lang-runner", "cairo-lang-sierra-gas", @@ -2965,6 +2963,15 @@ 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.11" @@ -5358,6 +5365,7 @@ dependencies = [ "flate2", "getset", "hex", + "itertools 0.13.0", "k256", "keccak", "lazy_static", diff --git a/Cargo.toml b/Cargo.toml index d3c25907c..0f0e681d8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -43,7 +43,7 @@ cairo-lang-sierra = { workspace = true } cairo-lang-starknet = { workspace = true } cairo-lang-utils = { workspace = true } cairo-lang-starknet-classes = { workspace = true } -cairo-native = { git = "https://github.com/lambdaclass/cairo_native", rev = "15bd4b9e672a0c1a196de4b613ee72befaf08b28", optional = true } +cairo-native = { path = "/Users/edgar/Documents/cairo_sierra_to_mlir", optional = true } k256 = "0.13.3" p256 = "0.13.2" sec1 = "0.7.3" @@ -76,6 +76,7 @@ tracing = "0.1.40" [dev-dependencies] assert_matches = "1.5.0" coverage-helper = "0.2.2" +itertools = "0.13.0" lru = "0.12.3" pretty_assertions_sorted = "1.2.3" reth-primitives = { git = "https://github.com/paradigmxyz/reth.git", tag = "v0.2.0-beta.6", default-features = false } diff --git a/src/execution/execution_entry_point.rs b/src/execution/execution_entry_point.rs index ef58fb6a2..19fb1a9b1 100644 --- a/src/execution/execution_entry_point.rs +++ b/src/execution/execution_entry_point.rs @@ -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, @@ -157,6 +158,7 @@ impl ExecutionEntryPoint { sierra: Some(sierra_program_and_entrypoints), .. } => { + dbg!("casm"); let mut transactional_state = state.create_transactional()?; let program_cache = program_cache.unwrap_or_else(|| { @@ -716,6 +718,7 @@ impl ExecutionEntryPoint { .iter() .find(|entry_point| entry_point.selector == self.entry_point_selector.to_biguint()) .unwrap(); + dbg!(&entry_point); let native_executor: NativeExecutor = { let mut cache = program_cache.borrow_mut(); let cache = &mut *cache; @@ -760,6 +763,10 @@ impl ExecutionEntryPoint { .find(|x| x.id.id == (entry_point.function_idx as u64)) .unwrap(); + dbg!(&entry_point_fn.id.debug_name.as_ref()); + dbg!(&entry_point_fn.params); + std::fs::write("hello.sierra", sierra_program.to_string()).unwrap(); + let entry_point_id = &entry_point_fn.id; let value = match native_executor { diff --git a/src/syscalls/native_syscall_handler.rs b/src/syscalls/native_syscall_handler.rs index 599826a99..aff308994 100644 --- a/src/syscalls/native_syscall_handler.rs +++ b/src/syscalls/native_syscall_handler.rs @@ -1012,62 +1012,10 @@ impl<'a, 'cache, S: StateReader, C: ContractClassCache> StarknetSyscallHandler 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; + fn cheatcode(&mut self, _selector: Felt252, _input: &[Felt252]) -> Vec { + dbg!(_selector); + dbg!(_input); + vec![Felt252::ONE] } } diff --git a/src/transaction/declare.rs b/src/transaction/declare.rs index 22f886e8e..65f299672 100644 --- a/src/transaction/declare.rs +++ b/src/transaction/declare.rs @@ -546,7 +546,7 @@ impl Declare { if !execution_result .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/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 5d1e2086b..f2a6735b7 100644 --- a/src/transaction/invoke_function.rs +++ b/src/transaction/invoke_function.rs @@ -297,7 +297,13 @@ impl InvokeFunction { // return `VALID`. if !call_info .as_ref() - .map(|ci| ci.retdata == vec![*VALIDATE_RETDATA]) + .map(|ci| { + dbg!(ci.retdata[0].to_hex_string()); + dbg!(ci.retdata[0].to_string()); + dbg!(ci.retdata[0].to_bigint()); + + dbg!(&ci.retdata) == &vec![*VALIDATE_RETDATA] + }) .unwrap_or_default() { return Err(TransactionError::WrongValidateRetdata); @@ -439,6 +445,7 @@ impl InvokeFunction { Rc>>, >, ) -> Result { + dbg!("execute transaction native"); if !(self.version == Felt252::ZERO || self.version == Felt252::ONE || self.version == Felt252::THREE) diff --git a/tests/integration_tests/complex_contracts/kakarot/mod.rs b/tests/integration_tests/complex_contracts/kakarot/mod.rs index 7e7bd9546..9de290882 100644 --- a/tests/integration_tests/complex_contracts/kakarot/mod.rs +++ b/tests/integration_tests/complex_contracts/kakarot/mod.rs @@ -73,6 +73,8 @@ fn test_kakarot_contract() { let mut state = TestStateSetup::default(); + dbg!("deploy"); + // Deploy Kakarot state .load_contract_at_address( @@ -81,6 +83,7 @@ fn test_kakarot_contract() { "starknet_programs/kakarot/contracts_KakarotCore.cairo", ) .unwrap(); + dbg!("deploy eoa"); // Deploy EOA state .load_contract_at_address( @@ -89,6 +92,7 @@ fn test_kakarot_contract() { "starknet_programs/kakarot/contracts_AccountContract.cairo", ) .unwrap(); + dbg!("deploy contract account"); // Deploy Contract Account state .load_contract_at_address( @@ -98,6 +102,7 @@ fn test_kakarot_contract() { ) .unwrap(); + dbg!("uninit account"); // Declare uninitialized account class hash state .load_contract( @@ -106,6 +111,7 @@ fn test_kakarot_contract() { ) .unwrap(); + dbg!("perepare storage"); // Prepare storage for Kakarot let kakarot_storage = vec![ // Add the EOA to the address registry @@ -316,11 +322,11 @@ fn test_kakarot_contract() { transaction.signature = signature; // Prepare the starknet transaction - let mut calldata = vec![]; + let mut calldata: Vec = vec![]; transaction .transaction .encode_without_signature(&mut calldata); - let mut calldata = calldata.into_iter().map(Felt252::from).collect::>(); + 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 @@ -352,7 +358,9 @@ fn test_kakarot_contract() { 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) From 6a5ec1acb6368988a7b912a0a959b6b2031c365c Mon Sep 17 00:00:00 2001 From: Edgar Date: Thu, 6 Jun 2024 16:51:40 +0200 Subject: [PATCH 26/30] fix --- Cargo.lock | 3 ++- Cargo.toml | 3 +-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e29aa3aa5..8eea5c54f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1423,6 +1423,7 @@ dependencies = [ [[package]] name = "cairo-native" version = "0.2.0" +source = "git+https://github.com/lambdaclass/cairo_native?rev=e90c4ce0a7d5cea856c6b0c4e7e8a04078de323b#e90c4ce0a7d5cea856c6b0c4e7e8a04078de323b" dependencies = [ "anyhow", "bumpalo", @@ -1471,6 +1472,7 @@ dependencies = [ [[package]] name = "cairo-native-runtime" version = "0.2.0" +source = "git+https://github.com/lambdaclass/cairo_native?rev=e90c4ce0a7d5cea856c6b0c4e7e8a04078de323b#e90c4ce0a7d5cea856c6b0c4e7e8a04078de323b" dependencies = [ "cairo-lang-runner", "cairo-lang-sierra-gas", @@ -5365,7 +5367,6 @@ dependencies = [ "flate2", "getset", "hex", - "itertools 0.13.0", "k256", "keccak", "lazy_static", diff --git a/Cargo.toml b/Cargo.toml index 0f0e681d8..901ad19f6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -43,7 +43,7 @@ cairo-lang-sierra = { workspace = true } cairo-lang-starknet = { workspace = true } cairo-lang-utils = { workspace = true } cairo-lang-starknet-classes = { workspace = true } -cairo-native = { path = "/Users/edgar/Documents/cairo_sierra_to_mlir", optional = 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" @@ -76,7 +76,6 @@ tracing = "0.1.40" [dev-dependencies] assert_matches = "1.5.0" coverage-helper = "0.2.2" -itertools = "0.13.0" lru = "0.12.3" pretty_assertions_sorted = "1.2.3" reth-primitives = { git = "https://github.com/paradigmxyz/reth.git", tag = "v0.2.0-beta.6", default-features = false } From cb6c7db682f86cd9ad2145dc1f916e27fe8ca6f5 Mon Sep 17 00:00:00 2001 From: Esteve Soler Arderiu Date: Thu, 13 Jun 2024 17:39:37 +0200 Subject: [PATCH 27/30] Fix YAS benchmark. --- src/utils.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils.rs b/src/utils.rs index dc0b2b10c..6fddc3489 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -207,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.to_str().to_string(), value); + resources.insert(builtin.to_str_with_suffix().to_string(), value); } Ok(resources) From c9e7a1915a089a1254ef54462646d00f91b2ea76 Mon Sep 17 00:00:00 2001 From: Esteve Soler Arderiu Date: Thu, 13 Jun 2024 17:39:44 +0200 Subject: [PATCH 28/30] Remove debug messages. --- src/transaction/declare.rs | 2 +- src/transaction/invoke_function.rs | 9 +-------- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/src/transaction/declare.rs b/src/transaction/declare.rs index 65f299672..ca00f054a 100644 --- a/src/transaction/declare.rs +++ b/src/transaction/declare.rs @@ -546,7 +546,7 @@ impl Declare { if !execution_result .call_info .as_ref() - .map(|ci| dbg!(&ci.retdata) == &vec![*VALIDATE_RETDATA]) + .map(|ci| &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 f2a6735b7..02b1245a7 100644 --- a/src/transaction/invoke_function.rs +++ b/src/transaction/invoke_function.rs @@ -297,13 +297,7 @@ impl InvokeFunction { // return `VALID`. if !call_info .as_ref() - .map(|ci| { - dbg!(ci.retdata[0].to_hex_string()); - dbg!(ci.retdata[0].to_string()); - dbg!(ci.retdata[0].to_bigint()); - - dbg!(&ci.retdata) == &vec![*VALIDATE_RETDATA] - }) + .map(|ci| &ci.retdata == &vec![*VALIDATE_RETDATA]) .unwrap_or_default() { return Err(TransactionError::WrongValidateRetdata); @@ -445,7 +439,6 @@ impl InvokeFunction { Rc>>, >, ) -> Result { - dbg!("execute transaction native"); if !(self.version == Felt252::ZERO || self.version == Felt252::ONE || self.version == Felt252::THREE) From ab290e56b70acdcdf63b487a78d2689c05c5d5c6 Mon Sep 17 00:00:00 2001 From: Esteve Soler Arderiu Date: Thu, 13 Jun 2024 17:56:23 +0200 Subject: [PATCH 29/30] Remove cheatcodes. --- src/syscalls/native_syscall_handler.rs | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/syscalls/native_syscall_handler.rs b/src/syscalls/native_syscall_handler.rs index aff308994..2632e9855 100644 --- a/src/syscalls/native_syscall_handler.rs +++ b/src/syscalls/native_syscall_handler.rs @@ -1011,12 +1011,6 @@ impl<'a, 'cache, S: StateReader, C: ContractClassCache> StarknetSyscallHandler ) -> SyscallResult<(U256, U256)> { Ok((p.x, p.y)) } - - fn cheatcode(&mut self, _selector: Felt252, _input: &[Felt252]) -> Vec { - dbg!(_selector); - dbg!(_input); - vec![Felt252::ONE] - } } impl<'a, 'cache, S, C> NativeSyscallHandler<'a, 'cache, S, C> From 8a333056572cb1e20417a6caada512e276794056 Mon Sep 17 00:00:00 2001 From: Esteve Soler Arderiu Date: Thu, 13 Jun 2024 18:06:06 +0200 Subject: [PATCH 30/30] Remove more debug statements. --- src/execution/execution_entry_point.rs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/execution/execution_entry_point.rs b/src/execution/execution_entry_point.rs index 19fb1a9b1..346d48785 100644 --- a/src/execution/execution_entry_point.rs +++ b/src/execution/execution_entry_point.rs @@ -158,7 +158,6 @@ impl ExecutionEntryPoint { sierra: Some(sierra_program_and_entrypoints), .. } => { - dbg!("casm"); let mut transactional_state = state.create_transactional()?; let program_cache = program_cache.unwrap_or_else(|| { @@ -718,7 +717,6 @@ impl ExecutionEntryPoint { .iter() .find(|entry_point| entry_point.selector == self.entry_point_selector.to_biguint()) .unwrap(); - dbg!(&entry_point); let native_executor: NativeExecutor = { let mut cache = program_cache.borrow_mut(); let cache = &mut *cache; @@ -763,8 +761,6 @@ impl ExecutionEntryPoint { .find(|x| x.id.id == (entry_point.function_idx as u64)) .unwrap(); - dbg!(&entry_point_fn.id.debug_name.as_ref()); - dbg!(&entry_point_fn.params); std::fs::write("hello.sierra", sierra_program.to_string()).unwrap(); let entry_point_id = &entry_point_fn.id;