diff --git a/.github/workflows/rust-tests.yml b/.github/workflows/rust-tests.yml index fde4a85c3..06d346647 100644 --- a/.github/workflows/rust-tests.yml +++ b/.github/workflows/rust-tests.yml @@ -19,7 +19,6 @@ jobs: uses: dtolnay/rust-toolchain@stable with: toolchain: ${{ env.RUST_TOOLCHAIN }} - override: true components: rustfmt, clippy - uses: Swatinem/rust-cache@v2 with: @@ -41,7 +40,6 @@ jobs: uses: dtolnay/rust-toolchain@stable with: toolchain: ${{ env.RUST_TOOLCHAIN }} - override: true components: rustfmt, clippy - uses: Swatinem/rust-cache@v2 with: @@ -65,7 +63,6 @@ jobs: uses: dtolnay/rust-toolchain@stable with: toolchain: ${{ env.RUST_TOOLCHAIN }} - override: true components: rustfmt, clippy - uses: Swatinem/rust-cache@v2 with: diff --git a/Cargo.lock b/Cargo.lock index dc1af7bea..3ec6c4f6f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -641,9 +641,9 @@ dependencies = [ [[package]] name = "cairo-lang-casm" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a0ca8ed0ff52856e853fb5ea8dfb01b018491546352aa9c1f3a7fc8c1060c2b" +checksum = "ffe86abd9f988018b39e1e41b467608ad9596ff466f141d41ffecc29a483c2f4" dependencies = [ "cairo-lang-utils", "indoc", @@ -658,9 +658,9 @@ dependencies = [ [[package]] name = "cairo-lang-compiler" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b06332cb3a73a26bbe31b1b22bbfc8f66637da2da242391f2a5099a9ff5d9448" +checksum = "220a48cb861ea7dac60f50e7aea044d7c0936ea602f64479e9577d4c4bed5c9e" dependencies = [ "anyhow", "cairo-lang-defs", @@ -683,18 +683,18 @@ dependencies = [ [[package]] name = "cairo-lang-debug" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65e5c740ff707fdbacdab8c2f1a284e01fc7e150641926859d486aa9b96e98ed" +checksum = "4bd06a99f5ac52f466a64fbdd0615baddb078b9e0cb97fdc7575faea916a66b5" dependencies = [ "cairo-lang-utils", ] [[package]] name = "cairo-lang-defs" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae2645498415e739f868eaefef875f4cf925465b55ba07a6089685274d25254a" +checksum = "6b8512ee5f8b3a2a18c7ffbaa23a815e56d9f8737ba0d3a0d5dcbf9b2fcbe96b" dependencies = [ "cairo-lang-debug", "cairo-lang-diagnostics", @@ -710,9 +710,9 @@ dependencies = [ [[package]] name = "cairo-lang-diagnostics" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f41b76cac082acffd72ec7b6a4cef1aed7eb0f16fba185accacc35bfff7cf902" +checksum = "e0a351f6441a55ce70b7ba62814670d0c154b2fdc4a7453387b71027a8440da2" dependencies = [ "cairo-lang-filesystem", "cairo-lang-utils", @@ -722,9 +722,9 @@ dependencies = [ [[package]] name = "cairo-lang-eq-solver" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7133fcad9e2c97eecff4faf7f729e1e7d9d120379704d9198d4ee07f7bf4b671" +checksum = "824ee8e225355e09ac57f537a9612049e4367b2bd3934d0591559bf87337cdbe" dependencies = [ "cairo-lang-utils", "good_lp", @@ -734,9 +734,9 @@ dependencies = [ [[package]] name = "cairo-lang-filesystem" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed215b63f87a6a15c583f5825c7860556a021d412ec70a6154010c3a7647c75c" +checksum = "1da7ceb69b84fb8b0d6e4d4648c4f2218feddcf0b9929094358b2bd3b2603ef0" dependencies = [ "cairo-lang-debug", "cairo-lang-utils", @@ -748,9 +748,9 @@ dependencies = [ [[package]] name = "cairo-lang-lowering" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a876eb7ccd108f0e2e4158a1ef0d0f1ee296725410bb2b5f712ca914d99e38db" +checksum = "a70fb2960cc39ceee250090109f9df05b26f781dab8c0ba48b6fd6f663858587" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -773,9 +773,9 @@ dependencies = [ [[package]] name = "cairo-lang-parser" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5c50f91f869b1d5e0898f0b9061ab1746c522e1a396e34bcb144dc1a8ab2127" +checksum = "48c44c66f5aeb3d80189f4f2fd0bc6872b4c6f5cc25002402dc6e85561d2cc53" dependencies = [ "cairo-lang-diagnostics", "cairo-lang-filesystem", @@ -794,9 +794,9 @@ dependencies = [ [[package]] name = "cairo-lang-plugins" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08ff6279c4d988983919322baf1f1e20dbb124ca9dacd0a88047624ff588861" +checksum = "d0acfa9aca2811c5df6d72a160c4168fd6cc53eb3c3f966c933e791b0f91ce01" dependencies = [ "cairo-lang-defs", "cairo-lang-diagnostics", @@ -813,9 +813,9 @@ dependencies = [ [[package]] name = "cairo-lang-proc-macros" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34f005a51a6569f81efbe99112c887b1dd6b921f8e4d6a1f71a6649d1f953746" +checksum = "0e5ce4ad906f6491bc82eaae14eea6a96755d651a8809fc1adb53feb99bcc55a" dependencies = [ "cairo-lang-debug", "quote", @@ -824,9 +824,9 @@ dependencies = [ [[package]] name = "cairo-lang-project" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dad578d6dae004a6ef49538fcdb6516818b169db6e7da26b70e0f040b5b5dc7" +checksum = "46f7c638a2a30010071a176396c29bc065701f353f2c3205b96f03463b54721c" dependencies = [ "cairo-lang-filesystem", "cairo-lang-utils", @@ -838,9 +838,9 @@ dependencies = [ [[package]] name = "cairo-lang-semantic" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29d22c7c40884a35fa0a71345019460141ae642a8c8b53377aaf8c70269ae77c" +checksum = "bb3e68af88e60a1e30776877b0a3a346a21a3d15c54c9f8ace844e0652b1036f" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -861,9 +861,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52124b04dcdb88b187029e134e5944d7f2b6e94f340d30b843f94198c32aa08d" +checksum = "3e4ccc934f2d4a063f7f72554d422e724134925c981cd0e592b4defb73ca103a" dependencies = [ "cairo-lang-utils", "const-fnv1a-hash", @@ -884,9 +884,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-ap-change" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9435c76b39013bb24a8e9acc9d689ad21d8d9d87e756035b61b52683a9524b75" +checksum = "ad6e742ec576f773c9d6c4f1e4be6fbe9f1e5b470cd374f27f5c82e15c151b85" dependencies = [ "cairo-lang-eq-solver", "cairo-lang-sierra", @@ -897,9 +897,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-gas" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce39e1e39382030291779f974a98ff75171984431ba39ea49fc45e4d79fe4aeb" +checksum = "2dc4e1b3793f639724f59f34eb4007253a91d5179de8b2ab2c511c6c5d56155c" dependencies = [ "cairo-lang-eq-solver", "cairo-lang-sierra", @@ -910,9 +910,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-generator" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdfc04823bfee8a17d535253fdb24003b01227d93cef4c96bcdaea3e457aaea4" +checksum = "20c323c6f656398254f9404126c4a60e0a5234214255590288783eb323f6f187" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -936,9 +936,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-to-casm" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee0d8a131df3966781bb37cf5a08757019b1316eefe3c3df767b4501d9dbeb6" +checksum = "b26fffdbf578f9aaf00d74001ac93cad4a713b510642161a0594f1403a59c543" dependencies = [ "assert_matches", "cairo-felt 0.6.1", @@ -957,9 +957,9 @@ dependencies = [ [[package]] name = "cairo-lang-starknet" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "713da559465a7b8d81bfae55e15504d0235a2b1604e708bd7167c519fa13a672" +checksum = "c63e026127221a7bb5b5081b631eeef552a99cbdae76414dced7a224694afeaa" dependencies = [ "anyhow", "cairo-felt 0.6.1", @@ -997,9 +997,9 @@ dependencies = [ [[package]] name = "cairo-lang-syntax" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ca10a76416506fe025b7fec8b51e945417c594468d8a671740a948e220a5d95" +checksum = "d6b48a1c67679bc19165c2ce45b38e7bc7ce5a4fbb004a07f60361f99b618e73" dependencies = [ "cairo-lang-debug", "cairo-lang-filesystem", @@ -1014,9 +1014,9 @@ dependencies = [ [[package]] name = "cairo-lang-syntax-codegen" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2634b5fd3dc31db50fa5d0e79a569ad90d047407de13ba847b27fcac20d4bd50" +checksum = "8b2102b91819a7638f1efb39379351578a296d042de53f7492684eeb47c3a844" dependencies = [ "genco", "xshell", @@ -1024,9 +1024,9 @@ dependencies = [ [[package]] name = "cairo-lang-utils" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c996c7f6d5da304eddf06b64a03f16655117abec2c326fde0d9786f7e94dbe0" +checksum = "25d0873d45a7f6020fa39ebda1386a20d328bf5e448056d5a507641d0bfde0cf" dependencies = [ "indexmap 1.9.3", "itertools", @@ -1085,9 +1085,9 @@ dependencies = [ [[package]] name = "cargo-config2" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ee1e7a7c5bc8f3389f125fb3da214c86d8e21c2b7259923079e0142ac47ffe4" +checksum = "41d622c3fcbf7cbd550bd4df0cd519724857608af8c1d16599e5d42f9af4abef" dependencies = [ "cfg-expr", "home", @@ -1204,7 +1204,7 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.23", ] [[package]] @@ -1221,9 +1221,9 @@ checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" [[package]] name = "colored" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3616f750b84d8f0de8a58bda93e08e2a81ad3f523089b05f1dffecab48c6cbd" +checksum = "17bfac9400fe632590700de801b5dfbdca8b6944073832d1284bdbeef7f00e45" dependencies = [ "atty", "lazy_static", @@ -1556,7 +1556,6 @@ dependencies = [ "honggfuzz", "num-traits 0.2.15", "serde_json", - "starknet-contract-class", "starknet_api", "starknet_in_rust", "tempfile", @@ -1711,9 +1710,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" +checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" [[package]] name = "hex" @@ -1842,9 +1841,9 @@ dependencies = [ [[package]] name = "indoc" -version = "2.0.1" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f2cb48b81b1dc9f39676bf99f5499babfec7cd8fe14307f7b3d747208fb5690" +checksum = "761cde40c27e2a9877f8c928fd248b7eec9dd48623dd514b256858ca593fbba7" [[package]] name = "instant" @@ -1861,7 +1860,7 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "hermit-abi 0.3.1", + "hermit-abi 0.3.2", "libc", "windows-sys", ] @@ -1872,8 +1871,8 @@ version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24fddda5af7e54bf7da53067d6e802dbcc381d0a8eef629df528e3ebf68755cb" dependencies = [ - "hermit-abi 0.3.1", - "rustix 0.38.1", + "hermit-abi 0.3.2", + "rustix 0.38.2", "windows-sys", ] @@ -1897,9 +1896,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.6" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" +checksum = "62b02a5381cc465bd3041d84623d0fa3b66738b52b8e2fc3bab8ad63ab032f4a" [[package]] name = "jobserver" @@ -2261,7 +2260,7 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.3.1", + "hermit-abi 0.3.2", "libc", ] @@ -2309,9 +2308,9 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "3.6.2" +version = "3.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7467bc45fea3d77e829a4df331b9e969e2ec6a4dcd4e126e660f8509b40a475" +checksum = "756d439303e94fae44f288ba881ad29670c65b0c4b0e05674ca81061bb65f2c5" dependencies = [ "arrayvec", "bitvec", @@ -2323,9 +2322,9 @@ dependencies = [ [[package]] name = "parity-scale-codec-derive" -version = "3.6.2" +version = "3.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9de611934c78014c455793552d0bf7d65a58211179c49996fde925aa667c38" +checksum = "9d884d78fcf214d70b1e239fcd1c6e5e95aa3be1881918da2e488cc946c7a476" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2383,9 +2382,9 @@ dependencies = [ [[package]] name = "paste" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f746c4065a8fa3fe23974dd82f15431cc8d40779821001404d10d2e79ca7d79" +checksum = "b4b27ab7be369122c218afc2079489cdcb4b517c0a3fc386ff11e1fedfcc2b35" [[package]] name = "path-clean" @@ -2420,9 +2419,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" +checksum = "4c40d25201921e5ff0c862a505c6557ea88568a4e3ace775ab55e93f2f4f9d57" [[package]] name = "pin-utils" @@ -2666,9 +2665,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.37.21" +version = "0.37.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f25693a73057a1b4cb56179dd3c7ea21a7c6c5ee7d85781f5749b46f34b79c" +checksum = "8818fa822adcc98b18fedbb3632a6a33213c070556b5aa7c4c8cc21cff565c4c" dependencies = [ "bitflags 1.3.2", "errno", @@ -2680,9 +2679,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.1" +version = "0.38.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc6396159432b5c8490d4e301d8c705f61860b8b6c863bf79942ce5401968f3" +checksum = "aabcb0461ebd01d6b79945797c27f8529082226cb630a9865a71870ff63532a4" dependencies = [ "bitflags 2.3.3", "errno", @@ -2693,15 +2692,15 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06" +checksum = "dc31bd9b61a32c31f9650d18add92aa83a49ba979c143eefd27fe7177b05bd5f" [[package]] name = "ryu" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" +checksum = "fe232bdf6be8c8de797b22184ee71118d63780ea42ac85b61d1baa6d3b782ae9" [[package]] name = "salsa" @@ -2783,31 +2782,31 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.164" +version = "1.0.166" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" +checksum = "d01b7404f9d441d3ad40e6a636a7782c377d2abdbe4fa2440e2edcc2f4f10db8" dependencies = [ "serde_derive", ] [[package]] name = "serde_bytes" -version = "0.11.9" +version = "0.11.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294" +checksum = "f3c5113243e4a3a1c96587342d067f3e6b0f50790b6cf40d2868eb647a3eef0e" dependencies = [ "serde", ] [[package]] name = "serde_derive" -version = "1.0.164" +version = "1.0.166" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" +checksum = "5dd83d6dde2b6b2d466e14d9d1acce8816dedee94f735eac6395808b3483c6d6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.23", ] [[package]] @@ -2823,9 +2822,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.99" +version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46266871c240a00b8f503b877622fe33430b3c7d963bdc0f2adc511e54a1eae3" +checksum = "0f1e14e89be7aa4c4b78bdbdc9eb5bf8517829a600ae8eaa39a6e1d960b5185c" dependencies = [ "itoa", "ryu", @@ -2967,17 +2966,6 @@ dependencies = [ "num-traits 0.1.43", ] -[[package]] -name = "starknet-contract-class" -version = "0.2.0" -dependencies = [ - "cairo-vm", - "getset", - "serde", - "serde_json", - "starknet_api", -] - [[package]] name = "starknet-crypto" version = "0.5.1" @@ -2993,20 +2981,20 @@ dependencies = [ "rfc6979", "sha2", "starknet-crypto-codegen", - "starknet-curve", + "starknet-curve 0.3.0", "starknet-ff", "zeroize", ] [[package]] name = "starknet-crypto-codegen" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6dc88f1f470d9de1001ffbb90d2344c9dd1a615f5467daf0574e2975dfd9ebd" +checksum = "af6527b845423542c8a16e060ea1bc43f67229848e7cd4c4d80be994a84220ce" dependencies = [ - "starknet-curve", + "starknet-curve 0.4.0", "starknet-ff", - "syn 2.0.22", + "syn 2.0.23", ] [[package]] @@ -3018,6 +3006,15 @@ dependencies = [ "starknet-ff", ] +[[package]] +name = "starknet-curve" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a68a0d87ae56572abf83ddbfd44259a7c90dbeeee1629a1ffe223e7f9a8f3052" +dependencies = [ + "starknet-ff", +] + [[package]] name = "starknet-ff" version = "0.3.4" @@ -3087,7 +3084,6 @@ dependencies = [ "serde", "serde_json", "sha3", - "starknet-contract-class", "starknet-crypto", "starknet_api", "thiserror", @@ -3137,9 +3133,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.22" +version = "2.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2efbeae7acf4eabd6bcdcbd11c92f45231ddda7539edc7806bd1a04a03b24616" +checksum = "59fb7d6d8281a51045d62b8eb3a7d1ce347b76f312af50cd3dc0af39c87c1737" dependencies = [ "proc-macro2", "quote", @@ -3162,7 +3158,7 @@ dependencies = [ "cfg-if", "fastrand", "redox_syscall 0.3.5", - "rustix 0.37.21", + "rustix 0.37.22", "windows-sys", ] @@ -3188,22 +3184,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.40" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" +checksum = "c16a64ba9387ef3fdae4f9c1a7f07a0997fce91985c0336f1ddc1822b3b37802" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.40" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" +checksum = "d14928354b01c4d6a4f0e549069adef399a284e7995c7ccca94e8a07a5346c59" dependencies = [ "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.23", ] [[package]] @@ -3408,9 +3404,9 @@ checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" +checksum = "22049a19f4a68748a168c0fc439f9516686aa045927ff767eca0a85101fb6e73" [[package]] name = "unicode-normalization" @@ -3493,7 +3489,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.23", "wasm-bindgen-shared", ] @@ -3515,7 +3511,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.23", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -3673,7 +3669,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.23", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index c296cf5e5..a617f921b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,24 +11,27 @@ with_mimalloc = ["mimalloc"] cairo_1_tests = [] [workspace] -members = ["crates/starknet-contract-class", "cli", "fuzzer"] +members = ["cli", "fuzzer"] [workspace.dependencies] -cairo-vm = { version = "0.8.1", features = ["cairo-1-hints"]} +cairo-vm = { version = "0.8.1", features = ["cairo-1-hints"] } starknet_api = "0.1.0" num-traits = "0.2.15" [dependencies] cairo-lang-starknet = "2.0.0" cairo-lang-casm = "2.0.0" -cairo-vm = { workspace=true, features = ["cairo-1-hints"]} +cairo-vm = { workspace = true, features = ["cairo-1-hints"] } getset = "0.1.2" lazy_static = "1.4.0" num-bigint = { version = "0.4", features = ["serde"] } num-integer = "0.1.45" num-traits = { workspace = true } serde = { version = "1.0.152", features = ["derive"] } -serde_json = { version = "1.0", features = ["arbitrary_precision", "raw_value"] } +serde_json = { version = "1.0", features = [ + "arbitrary_precision", + "raw_value", +] } sha3 = "0.10.1" starknet_api = { workspace = true } starknet-crypto = "0.5.1" @@ -38,7 +41,6 @@ mimalloc = { version = "0.1.29", default-features = false, optional = true } hex = "0.4.3" cargo-llvm-cov = "0.5.14" anyhow = "1.0.66" -starknet-contract-class = { path = "./crates/starknet-contract-class", version = "0.2.0" } once_cell = "1.17.1" [dev-dependencies] diff --git a/crates/starknet-contract-class/Cargo.toml b/crates/starknet-contract-class/Cargo.toml deleted file mode 100644 index c46ed063b..000000000 --- a/crates/starknet-contract-class/Cargo.toml +++ /dev/null @@ -1,13 +0,0 @@ -[package] -name = "starknet-contract-class" -version = "0.2.0" -edition = "2021" -description = "Crate that parses a Starknet contract class from API" -license = "Apache-2.0" - -[dependencies] -serde = "1.0.156" -serde_json = "1.0.94" -getset = "0.1.2" -cairo-vm = { workspace=true, features = ["cairo-1-hints"]} -starknet_api = { workspace = true } diff --git a/crates/starknet-contract-class/src/lib.rs b/crates/starknet-contract-class/src/lib.rs deleted file mode 100644 index 4ecb626ef..000000000 --- a/crates/starknet-contract-class/src/lib.rs +++ /dev/null @@ -1,327 +0,0 @@ -#![deny(warnings)] - -use cairo_vm::felt::{Felt252, PRIME_STR}; -use cairo_vm::{ - serde::deserialize_program::{ - deserialize_array_of_bigint_hex, Attribute, BuiltinName, HintParams, Identifier, - ReferenceManager, - }, - types::{ - errors::program_errors::ProgramError, program::Program, relocatable::MaybeRelocatable, - }, -}; -use getset::{CopyGetters, Getters}; -use serde::Deserialize; -use starknet_api::deprecated_contract_class::{ContractClassAbiEntry, EntryPoint}; -use std::{collections::HashMap, fs::File, io::BufReader, path::PathBuf}; - -// TODO: move this crate's functionality into SiR and remove the crate - -pub type AbiType = Vec; - -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -pub enum EntryPointType { - External, - L1Handler, - Constructor, -} - -#[derive(Clone, CopyGetters, Debug, Default, Eq, Getters, Hash, PartialEq)] -pub struct ContractEntryPoint { - #[getset(get = "pub")] - pub selector: Felt252, - #[getset(get_copy = "pub")] - pub offset: usize, -} - -impl ContractEntryPoint { - pub fn new(selector: Felt252, offset: usize) -> ContractEntryPoint { - ContractEntryPoint { selector, offset } - } -} - -// ------------------------------- -// Contract Class -// ------------------------------- - -#[derive(Clone, Debug, Eq, PartialEq, Deserialize)] -#[serde(try_from = "starknet_api::deprecated_contract_class::ContractClass")] -pub struct ParsedContractClass { - pub program: Program, - pub entry_points_by_type: HashMap>, - pub abi: Option, -} - -// ------------------------------- -// From traits -// ------------------------------- - -impl From<&ContractEntryPoint> for Vec { - fn from(entry_point: &ContractEntryPoint) -> Self { - vec![ - MaybeRelocatable::from(entry_point.selector.clone()), - MaybeRelocatable::from(entry_point.offset), - ] - } -} - -impl From for EntryPointType { - fn from(entry_type: starknet_api::deprecated_contract_class::EntryPointType) -> Self { - type ApiEPT = starknet_api::deprecated_contract_class::EntryPointType; - type StarknetEPT = EntryPointType; - - match entry_type { - ApiEPT::Constructor => StarknetEPT::Constructor, - ApiEPT::External => StarknetEPT::External, - ApiEPT::L1Handler => StarknetEPT::L1Handler, - } - } -} - -impl TryFrom for ParsedContractClass { - type Error = ProgramError; - - fn try_from( - contract_class: starknet_api::deprecated_contract_class::ContractClass, - ) -> Result { - let program = to_cairo_runner_program(&contract_class.program)?; - let entry_points_by_type = convert_entry_points(contract_class.entry_points_by_type); - Ok(Self { - program, - entry_points_by_type, - abi: contract_class.abi, - }) - } -} - -// ------------------- -// Helper Functions -// ------------------- - -impl TryFrom<&str> for ParsedContractClass { - type Error = ProgramError; - - fn try_from(s: &str) -> Result { - let raw_contract_class: starknet_api::deprecated_contract_class::ContractClass = - serde_json::from_str(s)?; - - Self::try_from(raw_contract_class) - } -} - -impl TryFrom for ParsedContractClass { - type Error = ProgramError; - - fn try_from(path: PathBuf) -> Result { - Self::try_from(&path) - } -} - -impl TryFrom<&PathBuf> for ParsedContractClass { - type Error = ProgramError; - - fn try_from(path: &PathBuf) -> Result { - let file = File::open(path)?; - let reader = BufReader::new(file); - let raw_contract_class: starknet_api::deprecated_contract_class::ContractClass = - serde_json::from_reader(reader)?; - Self::try_from(raw_contract_class) - } -} - -fn convert_entry_points( - entry_points: HashMap>, -) -> HashMap> { - let mut converted_entries: HashMap> = HashMap::new(); - for (entry_type, entry_points) in entry_points { - let en_type = entry_type.into(); - - let contracts_entry_points = entry_points - .into_iter() - .map(|e| { - let selector = Felt252::from_bytes_be(e.selector.0.bytes()); - let offset = e.offset.0; - ContractEntryPoint::new(selector, offset) - }) - .collect::>(); - - converted_entries.insert(en_type, contracts_entry_points); - } - - converted_entries -} - -pub fn to_cairo_runner_program( - program: &starknet_api::deprecated_contract_class::Program, -) -> Result { - let program = program.clone(); - let identifiers = serde_json::from_value::>(program.identifiers)?; - - if program.prime != *PRIME_STR { - return Err(ProgramError::PrimeDiffers(program.prime.to_string())); - }; - - let error_message_attributes = serde_json::from_value::>(program.attributes) - .unwrap_or(Vec::new()) - .into_iter() - .filter(|attr| attr.name == "error_message") - .collect(); - - let program = Program::new( - serde_json::from_value::>(program.builtins)?, - deserialize_array_of_bigint_hex(program.data)?, - None, - serde_json::from_value::>>(program.hints)?, - serde_json::from_value::(program.reference_manager)?, - identifiers, - error_message_attributes, - None, - )?; - - Ok(program) -} - -#[cfg(test)] -mod tests { - use super::*; - use cairo_vm::felt::felt_str; - use starknet_api::deprecated_contract_class::{ - ContractClassAbiEntry, FunctionAbiEntry, FunctionAbiEntryType, FunctionAbiEntryWithType, - TypedParameter, - }; - use std::io::Read; - - #[test] - fn try_from_string_abi() { - let mut serialized = String::new(); - - // This specific contract compiles with --no_debug_info - File::open(PathBuf::from("../../starknet_programs/fibonacci.json")) - .and_then(|mut f| f.read_to_string(&mut serialized)) - .expect("should be able to read file"); - - let res = ParsedContractClass::try_from(serialized.as_str()); - - let contract_class = res.unwrap(); - - let expected_abi = Some(vec![ContractClassAbiEntry::Function( - FunctionAbiEntryWithType { - r#type: FunctionAbiEntryType::Function, - entry: FunctionAbiEntry { - name: "fib".to_string(), - inputs: vec![ - TypedParameter { - name: "first_element".to_string(), - r#type: "felt".to_string(), - }, - TypedParameter { - name: "second_element".to_string(), - r#type: "felt".to_string(), - }, - TypedParameter { - name: "n".to_string(), - r#type: "felt".to_string(), - }, - ], - outputs: vec![TypedParameter { - name: "res".to_string(), - r#type: "felt".to_string(), - }], - }, - }, - )]); - assert_eq!(contract_class.abi, expected_abi); - } - - #[test] - fn try_from_string() { - let mut serialized = String::new(); - - // This specific contract compiles with --no_debug_info - File::open(PathBuf::from("../../starknet_programs/AccountPreset.json")) - .and_then(|mut f| f.read_to_string(&mut serialized)) - .expect("should be able to read file"); - - let res = ParsedContractClass::try_from(serialized.as_str()); - - let contract_class = res.unwrap(); - - let program_builtins: Vec = - contract_class.program.iter_builtins().cloned().collect(); - assert_eq!( - program_builtins, - vec![ - BuiltinName::pedersen, - BuiltinName::range_check, - BuiltinName::ecdsa, - BuiltinName::bitwise - ] - ); - assert_eq!( - contract_class - .entry_points_by_type - .get(&EntryPointType::L1Handler) - .unwrap(), - &vec![] - ); - assert_eq!( - contract_class - .entry_points_by_type - .get(&EntryPointType::Constructor) - .unwrap(), - &vec![ContractEntryPoint { - selector: felt_str!( - "1159040026212278395030414237414753050475174923702621880048416706425641521556" - ), - offset: 366 - }] - ); - } - - #[test] - fn try_from_string_without_program_attributes() { - let mut serialized = String::new(); - - // This specific contract was extracted from: https://testnet.starkscan.co/class/0x068dd0dd8a54ebdaa10563fbe193e6be1e0f7c423c0c3ce1e91c0b682a86b5f9 - File::open(PathBuf::from( - "../../starknet_programs/raw_contract_classes/program_without_attributes.json", - )) - .and_then(|mut f| f.read_to_string(&mut serialized)) - .expect("should be able to read file"); - - let res = ParsedContractClass::try_from(serialized.as_str()); - - res.unwrap(); - } - - #[test] - fn try_from_string_without_program_attributes_2() { - let mut serialized = String::new(); - - // This specific contract was extracted from: https://testnet.starkscan.co/class/0x071b7f73b5e2b4f81f7cf01d4d1569ccba2921b3fa3170cf11cff3720dfe918e - File::open(PathBuf::from( - "../../starknet_programs/raw_contract_classes/program_without_attributes_2.json", - )) - .and_then(|mut f| f.read_to_string(&mut serialized)) - .expect("should be able to read file"); - - let res = ParsedContractClass::try_from(serialized.as_str()); - - res.unwrap(); - } - - #[test] - fn deserialize_equals_try_from() { - let mut serialized = String::new(); - - // This specific contract compiles with --no_debug_info - File::open(PathBuf::from("../../starknet_programs/AccountPreset.json")) - .and_then(|mut f| f.read_to_string(&mut serialized)) - .expect("should be able to read file"); - - let result_try_from = ParsedContractClass::try_from(serialized.as_str()).unwrap(); - let result_deserialize = serde_json::from_str(&serialized).unwrap(); - - assert_eq!(result_try_from, result_deserialize); - } -} diff --git a/fuzzer/Cargo.toml b/fuzzer/Cargo.toml index a2061d803..9b2c01bfc 100644 --- a/fuzzer/Cargo.toml +++ b/fuzzer/Cargo.toml @@ -12,5 +12,4 @@ num-traits = { workspace = true } starknet_api = { workspace = true } serde_json = { version = "1.0", features = ["arbitrary_precision"] } tempfile = "3.2.0" -cairo-vm = { workspace=true, features = ["cairo-1-hints"]} -starknet-contract-class = { path = "../crates/starknet-contract-class/", version = "0.2.0" } +cairo-vm = { workspace = true, features = ["cairo-1-hints"] } diff --git a/fuzzer/src/main.rs b/fuzzer/src/main.rs index 000f71c82..4fe21d8da 100644 --- a/fuzzer/src/main.rs +++ b/fuzzer/src/main.rs @@ -6,7 +6,7 @@ extern crate honggfuzz; use cairo_vm::felt::Felt252; use cairo_vm::vm::runners::cairo_runner::ExecutionResources; use num_traits::Zero; -use starknet_contract_class::EntryPointType; +use starknet_in_rust::EntryPointType; use starknet_in_rust::{ definitions::{block_context::BlockContext, constants::TRANSACTION_VERSION}, execution::{ diff --git a/src/core/contract_address/deprecated_contract_address.rs b/src/core/contract_address/deprecated_contract_address.rs index a8f1ee34a..8d27630c7 100644 --- a/src/core/contract_address/deprecated_contract_address.rs +++ b/src/core/contract_address/deprecated_contract_address.rs @@ -1,3 +1,6 @@ +use crate::services::api::contract_classes::deprecated_contract_class::{ + ContractEntryPoint, EntryPointType, +}; /// Contains functionality for computing class hashes for deprecated Declare transactions /// (ie, declarations that do not correspond to Cairo 1 contracts) /// The code used for hinted class hash computation was extracted from the Pathfinder and xJonathanLEI implementations @@ -13,7 +16,6 @@ use cairo_vm::felt::Felt252; use num_traits::Zero; use serde::Serialize; use sha3::Digest; -use starknet_contract_class::{ContractEntryPoint, EntryPointType}; use std::{borrow::Cow, collections::BTreeMap, io}; /// Instead of doing a Mask with 250 bits, we are only masking the most significant byte. @@ -349,26 +351,18 @@ pub fn compute_deprecated_class_hash( #[cfg(test)] mod tests { - use std::{fs, str::FromStr}; - use super::*; use cairo_vm::felt::{felt_str, Felt252}; use coverage_helper::test; use num_traits::Num; - use starknet_contract_class::ParsedContractClass; #[test] fn test_compute_hinted_class_hash_with_abi() { - let contract_str = - fs::read_to_string("starknet_programs/raw_contract_classes/class_with_abi.json") - .unwrap(); - let parsed_contract_class = ParsedContractClass::try_from(contract_str.as_str()).unwrap(); - let contract_class = ContractClass { - program_json: serde_json::Value::from_str(&contract_str).unwrap(), - program: parsed_contract_class.program, - entry_points_by_type: parsed_contract_class.entry_points_by_type, - abi: parsed_contract_class.abi, - }; + let contract_class = ContractClass::new_from_path( + "starknet_programs/raw_contract_classes/class_with_abi.json", + ) + .unwrap(); + assert_eq!( compute_hinted_class_hash(&contract_class).unwrap(), Felt252::from_str_radix( @@ -381,14 +375,7 @@ mod tests { #[test] fn test_compute_class_hash_1354433237b0039baa138bf95b98fe4a8ae3df7ac4fd4d4845f0b41cd11bec4() { - let contract_str = fs::read_to_string("starknet_programs/raw_contract_classes/0x1354433237b0039baa138bf95b98fe4a8ae3df7ac4fd4d4845f0b41cd11bec4.json").unwrap(); - let parsed_contract_class = ParsedContractClass::try_from(contract_str.as_str()).unwrap(); - let contract_class = ContractClass { - program_json: serde_json::Value::from_str(&contract_str).unwrap(), - program: parsed_contract_class.program, - entry_points_by_type: parsed_contract_class.entry_points_by_type, - abi: parsed_contract_class.abi, - }; + let contract_class = ContractClass::new_from_path("starknet_programs/raw_contract_classes/0x1354433237b0039baa138bf95b98fe4a8ae3df7ac4fd4d4845f0b41cd11bec4.json").unwrap(); assert_eq!( compute_deprecated_class_hash(&contract_class).unwrap(), @@ -403,14 +390,7 @@ mod tests { #[test] fn test_compute_class_hash_0x03131fa018d520a037686ce3efddeab8f28895662f019ca3ca18a626650f7d1e() { - let contract_str = fs::read_to_string("starknet_programs/raw_contract_classes/0x03131fa018d520a037686ce3efddeab8f28895662f019ca3ca18a626650f7d1e.json").unwrap(); - let parsed_contract_class = ParsedContractClass::try_from(contract_str.as_str()).unwrap(); - let contract_class = ContractClass { - program_json: serde_json::Value::from_str(&contract_str).unwrap(), - program: parsed_contract_class.program, - entry_points_by_type: parsed_contract_class.entry_points_by_type, - abi: parsed_contract_class.abi, - }; + let contract_class = ContractClass::new_from_path("starknet_programs/raw_contract_classes/0x03131fa018d520a037686ce3efddeab8f28895662f019ca3ca18a626650f7d1e.json").unwrap(); assert_eq!( compute_deprecated_class_hash(&contract_class).unwrap(), @@ -425,14 +405,7 @@ mod tests { #[test] fn test_compute_class_hash_0x025ec026985a3bf9d0cc1fe17326b245dfdc3ff89b8fde106542a3ea56c5a918() { - let contract_str = fs::read_to_string("starknet_programs/raw_contract_classes/0x025ec026985a3bf9d0cc1fe17326b245dfdc3ff89b8fde106542a3ea56c5a918.json").unwrap(); - let parsed_contract_class = ParsedContractClass::try_from(contract_str.as_str()).unwrap(); - let contract_class = ContractClass { - program_json: serde_json::Value::from_str(&contract_str).unwrap(), - program: parsed_contract_class.program, - entry_points_by_type: parsed_contract_class.entry_points_by_type, - abi: parsed_contract_class.abi, - }; + let contract_class = ContractClass::new_from_path("starknet_programs/raw_contract_classes/0x025ec026985a3bf9d0cc1fe17326b245dfdc3ff89b8fde106542a3ea56c5a918.json").unwrap(); assert_eq!( compute_deprecated_class_hash(&contract_class).unwrap(), @@ -447,14 +420,7 @@ mod tests { #[test] fn test_compute_class_hash_0x02c3348ad109f7f3967df6494b3c48741d61675d9a7915b265aa7101a631dc33() { - let contract_str = fs::read_to_string("starknet_programs/raw_contract_classes/0x02c3348ad109f7f3967df6494b3c48741d61675d9a7915b265aa7101a631dc33.json").unwrap(); - let parsed_contract_class = ParsedContractClass::try_from(contract_str.as_str()).unwrap(); - let contract_class = ContractClass { - program_json: serde_json::Value::from_str(&contract_str).unwrap(), - program: parsed_contract_class.program, - entry_points_by_type: parsed_contract_class.entry_points_by_type, - abi: parsed_contract_class.abi, - }; + let contract_class = ContractClass::new_from_path("starknet_programs/raw_contract_classes/0x02c3348ad109f7f3967df6494b3c48741d61675d9a7915b265aa7101a631dc33.json").unwrap(); assert_eq!( compute_deprecated_class_hash(&contract_class).unwrap(), @@ -471,14 +437,7 @@ mod tests { #[test] fn test_compute_class_hash_0x00801ad5dc7c995addf7fbce1c4c74413586acb44f9ff44ba903a08a6153fa80() { - let contract_str = fs::read_to_string("starknet_programs/raw_contract_classes/0x00801ad5dc7c995addf7fbce1c4c74413586acb44f9ff44ba903a08a6153fa80.json").unwrap(); - let parsed_contract_class = ParsedContractClass::try_from(contract_str.as_str()).unwrap(); - let contract_class = ContractClass { - program_json: serde_json::Value::from_str(&contract_str).unwrap(), - program: parsed_contract_class.program, - entry_points_by_type: parsed_contract_class.entry_points_by_type, - abi: parsed_contract_class.abi, - }; + let contract_class = ContractClass::new_from_path("starknet_programs/raw_contract_classes/0x00801ad5dc7c995addf7fbce1c4c74413586acb44f9ff44ba903a08a6153fa80.json").unwrap(); assert_eq!( compute_deprecated_class_hash(&contract_class).unwrap(), diff --git a/src/core/contract_address/sierra_contract_address.rs b/src/core/contract_address/sierra_contract_address.rs index eb8a84353..b9b9666cd 100644 --- a/src/core/contract_address/sierra_contract_address.rs +++ b/src/core/contract_address/sierra_contract_address.rs @@ -1,9 +1,11 @@ use crate::core::errors::contract_address_errors::ContractAddressError; +use crate::services::api::contract_classes::deprecated_contract_class::{ + ContractEntryPoint, EntryPointType, +}; use cairo_lang_starknet::{ contract::starknet_keccak, contract_class::ContractClass as SierraContractClass, }; use cairo_vm::felt::Felt252; -use starknet_contract_class::{ContractEntryPoint, EntryPointType}; use starknet_crypto::{poseidon_hash_many, FieldElement}; const CONTRACT_CLASS_VERSION: &[u8] = b"CONTRACT_CLASS_V0.1.0"; diff --git a/src/execution/execution_entry_point.rs b/src/execution/execution_entry_point.rs index b7e4a4ee7..56b576d13 100644 --- a/src/execution/execution_entry_point.rs +++ b/src/execution/execution_entry_point.rs @@ -1,3 +1,6 @@ +use crate::services::api::contract_classes::deprecated_contract_class::{ + ContractEntryPoint, EntryPointType, +}; use crate::{ definitions::{block_context::BlockContext, constants::DEFAULT_ENTRY_POINT_SELECTOR}, runner::StarknetRunner, @@ -31,7 +34,6 @@ use cairo_vm::{ vm_core::VirtualMachine, }, }; -use starknet_contract_class::{ContractEntryPoint, EntryPointType}; use super::{ CallInfo, CallResult, CallType, OrderedEvent, OrderedL2ToL1Message, TransactionExecutionContext, diff --git a/src/execution/mod.rs b/src/execution/mod.rs index bb959088b..51e3add8f 100644 --- a/src/execution/mod.rs +++ b/src/execution/mod.rs @@ -2,6 +2,7 @@ pub mod execution_entry_point; pub mod gas_usage; pub mod os_usage; +use crate::services::api::contract_classes::deprecated_contract_class::EntryPointType; use crate::{ definitions::{ block_context::StarknetChainId, constants::CONSTRUCTOR_ENTRY_POINT_SELECTOR, @@ -19,7 +20,6 @@ use cairo_vm::{ }; use getset::Getters; use num_traits::{ToPrimitive, Zero}; -use starknet_contract_class::EntryPointType; use std::collections::{HashMap, HashSet}; #[derive(Debug, Clone, PartialEq, Eq)] diff --git a/src/lib.rs b/src/lib.rs index 2ad0ccb13..6b0fc94f6 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -25,11 +25,13 @@ use utils::Address; extern crate assert_matches; // Re-exports +pub use crate::services::api::contract_classes::deprecated_contract_class::{ + ContractEntryPoint, EntryPointType, +}; pub use cairo_lang_starknet::casm_contract_class::CasmContractClass; pub use cairo_lang_starknet::contract_class::ContractClass; pub use cairo_lang_starknet::contract_class::ContractClass as SierraContractClass; pub use cairo_vm::felt::Felt252; -pub use starknet_contract_class::EntryPointType; pub mod core; pub mod definitions; @@ -205,6 +207,7 @@ mod test { use crate::estimate_message_fee; use crate::hash_utils::calculate_contract_address; use crate::services::api::contract_classes::deprecated_contract_class::ContractClass; + use crate::services::api::contract_classes::deprecated_contract_class::EntryPointType; use crate::state::state_api::State; use crate::testing::{ create_account_tx_test_state, TEST_ACCOUNT_CONTRACT_ADDRESS, TEST_CONTRACT_ADDRESS, @@ -218,7 +221,6 @@ mod test { use cairo_lang_starknet::contract_class::ContractClass as SierraContractClass; use cairo_vm::felt::{felt_str, Felt252}; use num_traits::{Num, One, Zero}; - use starknet_contract_class::EntryPointType; use crate::{ call_contract, @@ -258,7 +260,7 @@ mod test { ContractClass::try_from(PathBuf::from(TEST_CONTRACT_PATH)).unwrap(); let entrypoints = contract_class.entry_points_by_type; - let entrypoint_selector = &entrypoints.get(&EntryPointType::External).unwrap()[0].selector; + let entrypoint_selector = entrypoints.get(&EntryPointType::External).unwrap()[0].selector(); let (block_context, state) = create_account_tx_test_state().unwrap(); diff --git a/src/parser_errors.rs b/src/parser_errors.rs index e5aadcbcb..552c8c42d 100644 --- a/src/parser_errors.rs +++ b/src/parser_errors.rs @@ -1,9 +1,9 @@ +use crate::services::api::contract_classes::deprecated_contract_class::EntryPointType; use crate::{ core::errors::{contract_address_errors::ContractAddressError, state_errors::StateError}, syscalls::syscall_handler_errors::SyscallHandlerError, transaction::error::TransactionError, }; -use starknet_contract_class::EntryPointType; use thiserror::Error; #[derive(Debug, Error)] diff --git a/src/serde_structs/mod.rs b/src/serde_structs/mod.rs index 47628e9c3..db4adb862 100644 --- a/src/serde_structs/mod.rs +++ b/src/serde_structs/mod.rs @@ -1,6 +1,6 @@ +use crate::services::api::contract_classes::deprecated_contract_class::EntryPointType; use serde::Deserialize; use serde_json::Value; -use starknet_contract_class::EntryPointType; use std::{collections::HashMap, fs::File, path::PathBuf}; #[allow(dead_code)] diff --git a/src/services/api/contract_class_errors.rs b/src/services/api/contract_class_errors.rs index b22b749bb..fff199688 100644 --- a/src/services/api/contract_class_errors.rs +++ b/src/services/api/contract_class_errors.rs @@ -1,4 +1,4 @@ -use starknet_contract_class::ContractEntryPoint; +use crate::services::api::contract_classes::deprecated_contract_class::ContractEntryPoint; use thiserror::Error; #[derive(Debug, PartialEq, Eq, Error)] diff --git a/src/services/api/contract_classes/deprecated_contract_class.rs b/src/services/api/contract_classes/deprecated_contract_class.rs index 06498a903..0ac5f8047 100644 --- a/src/services/api/contract_classes/deprecated_contract_class.rs +++ b/src/services/api/contract_classes/deprecated_contract_class.rs @@ -1,16 +1,71 @@ use crate::services::api::contract_class_errors::ContractClassError; -use cairo_vm::felt::Felt252; +use cairo_vm::felt::{Felt252, PRIME_STR}; +use cairo_vm::serde::deserialize_program::{ + deserialize_array_of_bigint_hex, Attribute, BuiltinName, HintParams, Identifier, + ReferenceManager, +}; +use cairo_vm::types::relocatable::MaybeRelocatable; use cairo_vm::types::{errors::program_errors::ProgramError, program::Program}; -use getset::Getters; +use getset::{CopyGetters, Getters}; use serde_json::Value; -use starknet_api::deprecated_contract_class::EntryPoint; -pub use starknet_contract_class::to_cairo_runner_program; -use starknet_contract_class::AbiType; -use starknet_contract_class::{ContractEntryPoint, EntryPointType}; +use starknet_api::deprecated_contract_class::{ContractClassAbiEntry, EntryPoint}; use std::collections::HashMap; use std::io::{BufReader, Read}; use std::path::{Path, PathBuf}; +pub type AbiType = Vec; + +// ------------------------------- +// Entry Point types +// ------------------------------- + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +pub enum EntryPointType { + External, + L1Handler, + Constructor, +} + +#[derive(Clone, CopyGetters, Debug, Default, Eq, Getters, Hash, PartialEq)] +pub struct ContractEntryPoint { + #[getset(get = "pub")] + selector: Felt252, + #[getset(get_copy = "pub")] + offset: usize, +} + +impl ContractEntryPoint { + pub fn new(selector: Felt252, offset: usize) -> ContractEntryPoint { + ContractEntryPoint { selector, offset } + } +} + +// ------------------------------- +// From traits +// ------------------------------- + +impl From<&ContractEntryPoint> for Vec { + fn from(entry_point: &ContractEntryPoint) -> Self { + vec![ + MaybeRelocatable::from(entry_point.selector.clone()), + MaybeRelocatable::from(entry_point.offset), + ] + } +} + +impl From for EntryPointType { + fn from(entry_type: starknet_api::deprecated_contract_class::EntryPointType) -> Self { + type ApiEPT = starknet_api::deprecated_contract_class::EntryPointType; + type StarknetEPT = EntryPointType; + + match entry_type { + ApiEPT::Constructor => StarknetEPT::Constructor, + ApiEPT::External => StarknetEPT::External, + ApiEPT::L1Handler => StarknetEPT::L1Handler, + } + } +} + // ------------------------------- // Contract Class // ------------------------------- @@ -119,7 +174,7 @@ impl TryFrom> for ContractClass { // Helper Functions // ------------------- -fn convert_entry_points( +pub(crate) fn convert_entry_points( entry_points: HashMap>, ) -> HashMap> { let mut converted_entries: HashMap> = HashMap::new(); @@ -141,6 +196,36 @@ fn convert_entry_points( converted_entries } +pub(crate) fn to_cairo_runner_program( + program: &starknet_api::deprecated_contract_class::Program, +) -> Result { + let program = program.clone(); + let identifiers = serde_json::from_value::>(program.identifiers)?; + + if program.prime != *PRIME_STR { + return Err(ProgramError::PrimeDiffers(program.prime.to_string())); + }; + + let error_message_attributes = serde_json::from_value::>(program.attributes) + .unwrap_or(Vec::new()) + .into_iter() + .filter(|attr| attr.name == "error_message") + .collect(); + + let program = Program::new( + serde_json::from_value::>(program.builtins)?, + deserialize_array_of_bigint_hex(program.data)?, + None, + serde_json::from_value::>>(program.hints)?, + serde_json::from_value::(program.reference_manager)?, + identifiers, + error_message_attributes, + None, + )?; + + Ok(program) +} + #[cfg(test)] mod tests { use crate::core::contract_address::compute_deprecated_class_hash; @@ -150,21 +235,16 @@ mod tests { felt::{felt_str, PRIME_STR}, serde::deserialize_program::BuiltinName, }; - use starknet_contract_class::ParsedContractClass; - use std::{fs, str::FromStr}; + use starknet_api::deprecated_contract_class::{ + FunctionAbiEntry, FunctionAbiEntryType, FunctionAbiEntryWithType, TypedParameter, + }; #[test] fn deserialize_contract_class() { // This specific contract compiles with --no_debug_info - let serialized = fs::read_to_string("starknet_programs/AccountPreset.json") + let contract_class = ContractClass::new_from_path("starknet_programs/AccountPreset.json") .expect("should be able to read file"); - let res = ContractClass::try_from(serialized.as_str()); - - assert!(res.is_ok()); - - let contract_class = res.unwrap(); - // We check only some of the attributes. Ideally we would serialize // and compare with original // TODO: add abi. @@ -204,35 +284,10 @@ mod tests { ); } - #[test] - fn test_contract_class_new_equals_raw_instantiation() { - let contract_str = fs::read_to_string("starknet_programs/raw_contract_classes/0x4479c3b883b34f1eafa5065418225d78a11ee7957c371e1b285e4b77afc6dad.json").unwrap(); - - let parsed_contract_class = ParsedContractClass::try_from(contract_str.as_str()).unwrap(); - let contract_class = ContractClass { - program_json: serde_json::Value::from_str(&contract_str).unwrap(), - program: parsed_contract_class.program.clone(), - entry_points_by_type: parsed_contract_class.entry_points_by_type.clone(), - abi: parsed_contract_class.abi.clone(), - }; - - let contract_class_new = ContractClass::new( - serde_json::Value::from_str(&contract_str).unwrap(), - parsed_contract_class.program, - parsed_contract_class.entry_points_by_type, - parsed_contract_class.abi, - ) - .unwrap(); - - assert_eq!(contract_class, contract_class_new); - } - #[test] fn test_compute_class_hash_0x4479c3b883b34f1eafa5065418225d78a11ee7957c371e1b285e4b77afc6dad_try_from( ) { - let contract_str = fs::read_to_string("starknet_programs/raw_contract_classes/0x4479c3b883b34f1eafa5065418225d78a11ee7957c371e1b285e4b77afc6dad.json").unwrap(); - - let contract_class = ContractClass::try_from(contract_str.as_str()).unwrap(); + let contract_class = ContractClass::new_from_path("starknet_programs/raw_contract_classes/0x4479c3b883b34f1eafa5065418225d78a11ee7957c371e1b285e4b77afc6dad.json").expect("should be able to read file"); assert_eq!( compute_deprecated_class_hash(&contract_class).unwrap(), @@ -244,71 +299,96 @@ mod tests { } #[test] - fn test_new_equals_try_from() { - let contract_str = fs::read_to_string("starknet_programs/raw_contract_classes/0x4479c3b883b34f1eafa5065418225d78a11ee7957c371e1b285e4b77afc6dad.json").unwrap(); - - let parsed_contract_class = ParsedContractClass::try_from(contract_str.as_str()).unwrap(); - - let contract_class_new = ContractClass::new( - serde_json::Value::from_str(&contract_str).unwrap(), - parsed_contract_class.program, - parsed_contract_class.entry_points_by_type, - parsed_contract_class.abi, - ) - .unwrap(); - - let contract_class = ContractClass::try_from(contract_str.as_str()).unwrap(); - - assert_eq!(contract_class.abi, contract_class_new.abi); - assert_eq!(contract_class.program, contract_class_new.program); - assert_eq!(contract_class.program_json, contract_class_new.program_json); - assert_eq!( - contract_class.entry_points_by_type, - contract_class_new.entry_points_by_type - ); + fn parse_abi_is_correct() { + // This specific contract compiles with --no_debug_info + let res = ContractClass::new_from_path("starknet_programs/fibonacci.json"); + let contract_class = res.expect("should be able to read file"); + + let expected_abi = Some(vec![ContractClassAbiEntry::Function( + FunctionAbiEntryWithType { + r#type: FunctionAbiEntryType::Function, + entry: FunctionAbiEntry { + name: "fib".to_string(), + inputs: vec![ + TypedParameter { + name: "first_element".to_string(), + r#type: "felt".to_string(), + }, + TypedParameter { + name: "second_element".to_string(), + r#type: "felt".to_string(), + }, + TypedParameter { + name: "n".to_string(), + r#type: "felt".to_string(), + }, + ], + outputs: vec![TypedParameter { + name: "res".to_string(), + r#type: "felt".to_string(), + }], + }, + }, + )]); + assert_eq!(contract_class.abi, expected_abi); } #[test] - fn test_compute_class_hash_0x4479c3b883b34f1eafa5065418225d78a11ee7957c371e1b285e4b77afc6dad_new( - ) { - let contract_str = fs::read_to_string("starknet_programs/raw_contract_classes/0x4479c3b883b34f1eafa5065418225d78a11ee7957c371e1b285e4b77afc6dad.json").unwrap(); + fn parse_without_debug_info() { + // This specific contract compiles with --no_debug_info + let res = ContractClass::new_from_path("starknet_programs/AccountPreset.json"); - let parsed_contract_class = ParsedContractClass::try_from(contract_str.as_str()).unwrap(); - let contract_class = ContractClass::new( - serde_json::Value::from_str(&contract_str).unwrap(), - parsed_contract_class.program, - parsed_contract_class.entry_points_by_type, - parsed_contract_class.abi, - ) - .unwrap(); + let contract_class = res.expect("should be able to read file"); + let program_builtins: Vec = + contract_class.program.iter_builtins().cloned().collect(); assert_eq!( - compute_deprecated_class_hash(&contract_class).unwrap(), - felt_str!( - "4479c3b883b34f1eafa5065418225d78a11ee7957c371e1b285e4b77afc6dad", - 16 - ) + program_builtins, + vec![ + BuiltinName::pedersen, + BuiltinName::range_check, + BuiltinName::ecdsa, + BuiltinName::bitwise + ] + ); + assert_eq!( + contract_class + .entry_points_by_type + .get(&EntryPointType::L1Handler) + .unwrap(), + &vec![] + ); + assert_eq!( + contract_class + .entry_points_by_type + .get(&EntryPointType::Constructor) + .unwrap(), + &vec![ContractEntryPoint { + selector: felt_str!( + "1159040026212278395030414237414753050475174923702621880048416706425641521556" + ), + offset: 366 + }] ); } #[test] - fn test_compute_class_hash_0x4479c3b883b34f1eafa5065418225d78a11ee7957c371e1b285e4b77afc6dad() { - let contract_str = fs::read_to_string("starknet_programs/raw_contract_classes/0x4479c3b883b34f1eafa5065418225d78a11ee7957c371e1b285e4b77afc6dad.json").unwrap(); + fn parse_without_program_attributes() { + // This specific contract was extracted from: https://testnet.starkscan.co/class/0x068dd0dd8a54ebdaa10563fbe193e6be1e0f7c423c0c3ce1e91c0b682a86b5f9 + let res = ContractClass::new_from_path( + "starknet_programs/raw_contract_classes/program_without_attributes.json", + ); - let parsed_contract_class = ParsedContractClass::try_from(contract_str.as_str()).unwrap(); - let contract_class = ContractClass { - program_json: serde_json::Value::from_str(&contract_str).unwrap(), - program: parsed_contract_class.program, - entry_points_by_type: parsed_contract_class.entry_points_by_type, - abi: parsed_contract_class.abi, - }; + res.expect("should be able to read file"); + } - assert_eq!( - compute_deprecated_class_hash(&contract_class).unwrap(), - felt_str!( - "4479c3b883b34f1eafa5065418225d78a11ee7957c371e1b285e4b77afc6dad", - 16 - ) + #[test] + fn parse_without_program_attributes_2() { + // This specific contract was extracted from: https://testnet.starkscan.co/class/0x071b7f73b5e2b4f81f7cf01d4d1569ccba2921b3fa3170cf11cff3720dfe918e + let res = ContractClass::new_from_path( + "starknet_programs/raw_contract_classes/program_without_attributes_2.json", ); + + res.expect("should be able to read file"); } } diff --git a/src/state/cached_state.rs b/src/state/cached_state.rs index 753b21b89..c433bb987 100644 --- a/src/state/cached_state.rs +++ b/src/state/cached_state.rs @@ -337,10 +337,12 @@ impl State for CachedState { #[cfg(test)] mod tests { use super::*; + use crate::services::api::contract_classes::deprecated_contract_class::{ + ContractEntryPoint, EntryPointType, + }; use crate::state::in_memory_state_reader::InMemoryStateReader; use cairo_vm::types::program::Program; use num_traits::One; - use starknet_contract_class::{ContractEntryPoint, EntryPointType}; #[test] fn get_class_hash_and_nonce_from_state_reader() { diff --git a/src/state/in_memory_state_reader.rs b/src/state/in_memory_state_reader.rs index 7fe784380..92895d0dc 100644 --- a/src/state/in_memory_state_reader.rs +++ b/src/state/in_memory_state_reader.rs @@ -116,8 +116,10 @@ impl StateReader for InMemoryStateReader { #[cfg(test)] mod tests { use super::*; + use crate::services::api::contract_classes::deprecated_contract_class::{ + ContractEntryPoint, EntryPointType, + }; use cairo_vm::types::program::Program; - use starknet_contract_class::{ContractEntryPoint, EntryPointType}; #[test] fn get_contract_state_test() { diff --git a/src/syscalls/business_logic_syscall_handler.rs b/src/syscalls/business_logic_syscall_handler.rs index 26f3bcef9..835976525 100644 --- a/src/syscalls/business_logic_syscall_handler.rs +++ b/src/syscalls/business_logic_syscall_handler.rs @@ -51,8 +51,8 @@ use cairo_vm::{ }; use lazy_static::lazy_static; +use crate::services::api::contract_classes::deprecated_contract_class::EntryPointType; use num_traits::{One, ToPrimitive, Zero}; -use starknet_contract_class::EntryPointType; const STEP: u128 = 100; const SYSCALL_BASE: u128 = 100 * STEP; diff --git a/src/syscalls/deprecated_business_logic_syscall_handler.rs b/src/syscalls/deprecated_business_logic_syscall_handler.rs index 669e97af0..35b4b7d02 100644 --- a/src/syscalls/deprecated_business_logic_syscall_handler.rs +++ b/src/syscalls/deprecated_business_logic_syscall_handler.rs @@ -10,6 +10,7 @@ use super::{ syscall_handler_errors::SyscallHandlerError, syscall_info::get_deprecated_syscall_size_from_name, }; +use crate::services::api::contract_classes::deprecated_contract_class::EntryPointType; use crate::{ core::errors::state_errors::StateError, definitions::{ @@ -36,7 +37,6 @@ use cairo_vm::{ vm::vm_core::VirtualMachine, }; use num_traits::{One, ToPrimitive, Zero}; -use starknet_contract_class::EntryPointType; use std::borrow::{Borrow, BorrowMut}; //* ----------------------------------- diff --git a/src/syscalls/deprecated_syscall_handler.rs b/src/syscalls/deprecated_syscall_handler.rs index c126c4c25..003c94c6d 100644 --- a/src/syscalls/deprecated_syscall_handler.rs +++ b/src/syscalls/deprecated_syscall_handler.rs @@ -215,6 +215,7 @@ fn get_syscall_ptr( #[cfg(test)] mod tests { use super::*; + use crate::services::api::contract_classes::deprecated_contract_class::EntryPointType; use crate::{ add_segments, allocate_selector, any_box, definitions::{ @@ -242,7 +243,6 @@ mod tests { }; use cairo_vm::relocatable; use num_traits::Num; - use starknet_contract_class::EntryPointType; use std::path::PathBuf; type DeprecatedBLSyscallHandler<'a> = diff --git a/src/testing/state.rs b/src/testing/state.rs index a28d8d04d..ad7568c6a 100644 --- a/src/testing/state.rs +++ b/src/testing/state.rs @@ -1,4 +1,5 @@ use super::{state_error::StarknetStateError, type_utils::ExecutionInfo}; +use crate::services::api::contract_classes::deprecated_contract_class::EntryPointType; use crate::{ definitions::{block_context::BlockContext, constants::TRANSACTION_VERSION}, execution::{ @@ -20,7 +21,6 @@ use crate::{ }; use cairo_vm::felt::Felt252; use num_traits::{One, Zero}; -use starknet_contract_class::EntryPointType; use std::collections::HashMap; // --------------------------------------------------------------------- diff --git a/src/transaction/declare.rs b/src/transaction/declare.rs index ca077d423..44332a944 100644 --- a/src/transaction/declare.rs +++ b/src/transaction/declare.rs @@ -1,3 +1,4 @@ +use crate::services::api::contract_classes::deprecated_contract_class::EntryPointType; use crate::{ core::{ contract_address::compute_deprecated_class_hash, errors::state_errors::StateError, @@ -25,7 +26,6 @@ use crate::{ }; use cairo_vm::felt::Felt252; use num_traits::Zero; -use starknet_contract_class::EntryPointType; use std::collections::HashMap; use super::Transaction; diff --git a/src/transaction/declare_v2.rs b/src/transaction/declare_v2.rs index 910cdcd8c..a01290385 100644 --- a/src/transaction/declare_v2.rs +++ b/src/transaction/declare_v2.rs @@ -1,3 +1,4 @@ +use crate::services::api::contract_classes::deprecated_contract_class::EntryPointType; use crate::{ core::transaction_hash::calculate_declare_v2_transaction_hash, definitions::{ @@ -22,7 +23,6 @@ use cairo_lang_starknet::casm_contract_class::CasmContractClass; use cairo_lang_starknet::contract_class::ContractClass as SierraContractClass; use cairo_vm::felt::Felt252; use num_traits::Zero; -use starknet_contract_class::EntryPointType; use std::collections::HashMap; use super::Transaction; diff --git a/src/transaction/deploy.rs b/src/transaction/deploy.rs index f6655756d..adbd630c7 100644 --- a/src/transaction/deploy.rs +++ b/src/transaction/deploy.rs @@ -1,3 +1,4 @@ +use crate::services::api::contract_classes::deprecated_contract_class::EntryPointType; use crate::{ core::{ contract_address::compute_deprecated_class_hash, errors::state_errors::StateError, @@ -26,7 +27,6 @@ use crate::{ }; use cairo_vm::felt::Felt252; use num_traits::Zero; -use starknet_contract_class::EntryPointType; use super::Transaction; diff --git a/src/transaction/deploy_account.rs b/src/transaction/deploy_account.rs index 78abe2518..976d859b7 100644 --- a/src/transaction/deploy_account.rs +++ b/src/transaction/deploy_account.rs @@ -1,4 +1,5 @@ use super::{invoke_function::verify_no_calls_to_other_contracts, Transaction}; +use crate::services::api::contract_classes::deprecated_contract_class::EntryPointType; use crate::{ core::{ errors::state_errors::StateError, @@ -32,7 +33,6 @@ use crate::{ use cairo_vm::felt::Felt252; use getset::Getters; use num_traits::Zero; -use starknet_contract_class::EntryPointType; use std::collections::HashMap; #[derive(Clone, Debug, PartialEq, Eq)] diff --git a/src/transaction/fee.rs b/src/transaction/fee.rs index 2928dc8a9..f06222903 100644 --- a/src/transaction/fee.rs +++ b/src/transaction/fee.rs @@ -1,4 +1,5 @@ use super::error::TransactionError; +use crate::services::api::contract_classes::deprecated_contract_class::EntryPointType; use crate::{ definitions::{ block_context::BlockContext, @@ -12,7 +13,6 @@ use crate::{ }; use cairo_vm::felt::Felt252; use num_traits::ToPrimitive; -use starknet_contract_class::EntryPointType; use std::collections::HashMap; // second element is the actual fee that the transaction uses diff --git a/src/transaction/invoke_function.rs b/src/transaction/invoke_function.rs index 785d96cd8..bb87af56f 100644 --- a/src/transaction/invoke_function.rs +++ b/src/transaction/invoke_function.rs @@ -20,10 +20,10 @@ use crate::{ utils::{calculate_tx_resources, Address}, }; +use crate::services::api::contract_classes::deprecated_contract_class::EntryPointType; use cairo_vm::felt::Felt252; use getset::Getters; use num_traits::Zero; -use starknet_contract_class::EntryPointType; use super::Transaction; diff --git a/src/transaction/l1_handler.rs b/src/transaction/l1_handler.rs index e1221e893..da1be50b8 100644 --- a/src/transaction/l1_handler.rs +++ b/src/transaction/l1_handler.rs @@ -1,7 +1,7 @@ +use crate::services::api::contract_classes::deprecated_contract_class::EntryPointType; use cairo_vm::felt::Felt252; use getset::Getters; use num_traits::Zero; -use starknet_contract_class::EntryPointType; use crate::{ core::transaction_hash::{calculate_transaction_hash_common, TransactionHashPrefix}, @@ -185,12 +185,12 @@ mod test { path::PathBuf, }; + use crate::services::api::contract_classes::deprecated_contract_class::EntryPointType; use cairo_vm::{ felt::{felt_str, Felt252}, vm::runners::cairo_runner::ExecutionResources, }; use num_traits::{Num, Zero}; - use starknet_contract_class::EntryPointType; use crate::{ definitions::{block_context::BlockContext, transaction_type::TransactionType}, diff --git a/src/utils.rs b/src/utils.rs index c530d4297..e87c638fb 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -1,3 +1,4 @@ +use crate::services::api::contract_classes::deprecated_contract_class::EntryPointType; use crate::{ definitions::transaction_type::TransactionType, execution::{ @@ -17,7 +18,6 @@ use cairo_vm::{types::relocatable::Relocatable, vm::vm_core::VirtualMachine}; use num_traits::{Num, ToPrimitive}; use serde::{Deserialize, Serialize}; use sha3::{Digest, Keccak256}; -use starknet_contract_class::EntryPointType; use starknet_crypto::FieldElement; use std::{ collections::{HashMap, HashSet}, diff --git a/tests/cairo_1_syscalls.rs b/tests/cairo_1_syscalls.rs index 1d49a01e9..a47817751 100644 --- a/tests/cairo_1_syscalls.rs +++ b/tests/cairo_1_syscalls.rs @@ -11,7 +11,7 @@ use cairo_vm::{ }; use num_bigint::BigUint; use num_traits::{Num, One, Zero}; -use starknet_contract_class::EntryPointType; +use starknet_in_rust::EntryPointType; use starknet_in_rust::{ definitions::{block_context::BlockContext, constants::TRANSACTION_VERSION}, execution::{ diff --git a/tests/complex_contracts/amm_contracts/amm.rs b/tests/complex_contracts/amm_contracts/amm.rs index 5761d3935..a6e52408b 100644 --- a/tests/complex_contracts/amm_contracts/amm.rs +++ b/tests/complex_contracts/amm_contracts/amm.rs @@ -4,8 +4,8 @@ use cairo_vm::vm::runners::builtin_runner::HASH_BUILTIN_NAME; use cairo_vm::vm::runners::cairo_runner::ExecutionResources; use cairo_vm::{felt::Felt252, vm::runners::builtin_runner::RANGE_CHECK_BUILTIN_NAME}; use num_traits::Zero; -use starknet_contract_class::EntryPointType; use starknet_in_rust::definitions::block_context::BlockContext; +use starknet_in_rust::EntryPointType; use starknet_in_rust::{ execution::{CallInfo, CallType}, services::api::contract_classes::deprecated_contract_class::ContractClass, diff --git a/tests/complex_contracts/amm_contracts/amm_proxy.rs b/tests/complex_contracts/amm_contracts/amm_proxy.rs index 05b6d8d32..c2c0a7212 100644 --- a/tests/complex_contracts/amm_contracts/amm_proxy.rs +++ b/tests/complex_contracts/amm_contracts/amm_proxy.rs @@ -1,10 +1,10 @@ use crate::complex_contracts::utils::*; use cairo_vm::felt::Felt252; use cairo_vm::vm::runners::cairo_runner::ExecutionResources; -use starknet_contract_class::EntryPointType; use starknet_crypto::FieldElement; use starknet_in_rust::definitions::block_context::BlockContext; use starknet_in_rust::services::api::contract_classes::deprecated_contract_class::ContractClass; +use starknet_in_rust::EntryPointType; use starknet_in_rust::{ execution::{CallInfo, CallType}, state::{cached_state::CachedState, state_api::StateReader}, diff --git a/tests/complex_contracts/nft/erc721.rs b/tests/complex_contracts/nft/erc721.rs index 1f13412d1..23f9c6b40 100644 --- a/tests/complex_contracts/nft/erc721.rs +++ b/tests/complex_contracts/nft/erc721.rs @@ -5,12 +5,12 @@ use cairo_vm::felt::Felt252; use cairo_vm::vm::runners::builtin_runner::{HASH_BUILTIN_NAME, RANGE_CHECK_BUILTIN_NAME}; use cairo_vm::vm::runners::cairo_runner::ExecutionResources; use num_traits::Zero; -use starknet_contract_class::EntryPointType; use starknet_crypto::FieldElement; use starknet_in_rust::definitions::block_context::BlockContext; use starknet_in_rust::services::api::contract_classes::deprecated_contract_class::ContractClass; use starknet_in_rust::state::cached_state::CachedState; use starknet_in_rust::transaction::error::TransactionError; +use starknet_in_rust::EntryPointType; use starknet_in_rust::{ execution::{CallInfo, CallType, OrderedEvent}, state::state_api::StateReader, diff --git a/tests/complex_contracts/utils.rs b/tests/complex_contracts/utils.rs index 268628417..7b63223a5 100644 --- a/tests/complex_contracts/utils.rs +++ b/tests/complex_contracts/utils.rs @@ -2,7 +2,6 @@ use cairo_vm::felt::Felt252; use num_traits::Zero; -use starknet_contract_class::{ContractEntryPoint, EntryPointType}; use starknet_crypto::{pedersen_hash, FieldElement}; use starknet_in_rust::{ definitions::{ @@ -18,6 +17,7 @@ use starknet_in_rust::{ transaction::{error::TransactionError, Deploy}, utils::{calculate_sn_keccak, Address}, }; +use starknet_in_rust::{ContractEntryPoint, EntryPointType}; use std::{ collections::{HashMap, HashSet}, fs::File, diff --git a/tests/delegate_call.rs b/tests/delegate_call.rs index 9b7c7926f..f0c0b3e1e 100644 --- a/tests/delegate_call.rs +++ b/tests/delegate_call.rs @@ -4,7 +4,7 @@ mod cairo_1_syscalls; use cairo_vm::felt::Felt252; use num_traits::{One, Zero}; -use starknet_contract_class::EntryPointType; +use starknet_in_rust::EntryPointType; use starknet_in_rust::{ definitions::{block_context::BlockContext, constants::TRANSACTION_VERSION}, execution::{ diff --git a/tests/delegate_l1_handler.rs b/tests/delegate_l1_handler.rs index a222dddc9..20940bc94 100644 --- a/tests/delegate_l1_handler.rs +++ b/tests/delegate_l1_handler.rs @@ -4,7 +4,7 @@ mod cairo_1_syscalls; use cairo_vm::felt::{felt_str, Felt252}; use num_traits::{One, Zero}; -use starknet_contract_class::EntryPointType; +use starknet_in_rust::EntryPointType; use starknet_in_rust::{ definitions::{block_context::BlockContext, constants::TRANSACTION_VERSION}, execution::{ diff --git a/tests/deploy_account.rs b/tests/deploy_account.rs index 1632492f6..c92dfa8c9 100644 --- a/tests/deploy_account.rs +++ b/tests/deploy_account.rs @@ -4,7 +4,7 @@ use cairo_vm::{ }; use lazy_static::lazy_static; use num_traits::Zero; -use starknet_contract_class::EntryPointType; +use starknet_in_rust::EntryPointType; use starknet_in_rust::{ core::contract_address::compute_deprecated_class_hash, definitions::{ diff --git a/tests/fibonacci.rs b/tests/fibonacci.rs index 0bcf23e69..ebb2c5f3d 100644 --- a/tests/fibonacci.rs +++ b/tests/fibonacci.rs @@ -5,8 +5,8 @@ use cairo_lang_starknet::casm_contract_class::CasmContractClass; use cairo_vm::vm::runners::cairo_runner::ExecutionResources; use cairo_vm::{felt::Felt252, vm::runners::builtin_runner::RANGE_CHECK_BUILTIN_NAME}; use num_traits::Zero; -use starknet_contract_class::EntryPointType; use starknet_in_rust::definitions::block_context::BlockContext; +use starknet_in_rust::EntryPointType; use starknet_in_rust::{ definitions::constants::TRANSACTION_VERSION, execution::{ diff --git a/tests/increase_balance.rs b/tests/increase_balance.rs index b9df55f97..a506a63fc 100644 --- a/tests/increase_balance.rs +++ b/tests/increase_balance.rs @@ -5,7 +5,7 @@ mod cairo_1_syscalls; use cairo_vm::felt::Felt252; use cairo_vm::vm::runners::cairo_runner::ExecutionResources; use num_traits::Zero; -use starknet_contract_class::EntryPointType; +use starknet_in_rust::EntryPointType; use starknet_in_rust::{ definitions::{block_context::BlockContext, constants::TRANSACTION_VERSION}, execution::{ diff --git a/tests/internal_calls.rs b/tests/internal_calls.rs index 08c47299f..a138fb8dd 100644 --- a/tests/internal_calls.rs +++ b/tests/internal_calls.rs @@ -2,7 +2,7 @@ use cairo_vm::felt::Felt252; use num_traits::Zero; -use starknet_contract_class::EntryPointType; +use starknet_in_rust::EntryPointType; use starknet_in_rust::{ definitions::{block_context::BlockContext, constants::TRANSACTION_VERSION}, execution::{ diff --git a/tests/internals.rs b/tests/internals.rs index ed10d5abc..f2e893d0e 100644 --- a/tests/internals.rs +++ b/tests/internals.rs @@ -12,7 +12,6 @@ use cairo_vm::vm::{ use lazy_static::lazy_static; use num_bigint::BigUint; use num_traits::{Num, One, ToPrimitive, Zero}; -use starknet_contract_class::EntryPointType; use starknet_in_rust::core::errors::state_errors::StateError; use starknet_in_rust::definitions::constants::{ DEFAULT_CAIRO_RESOURCE_FEE_WEIGHTS, VALIDATE_ENTRY_POINT_SELECTOR, @@ -23,6 +22,7 @@ use starknet_in_rust::services::api::contract_classes::deprecated_contract_class use starknet_in_rust::state::ExecutionResourcesManager; use starknet_in_rust::transaction::{DeclareV2, Deploy}; use starknet_in_rust::CasmContractClass; +use starknet_in_rust::EntryPointType; use starknet_in_rust::{ definitions::{ block_context::{BlockContext, StarknetChainId, StarknetOsConfig}, diff --git a/tests/storage.rs b/tests/storage.rs index d0f9e0d75..9ebbd2894 100644 --- a/tests/storage.rs +++ b/tests/storage.rs @@ -1,7 +1,7 @@ use cairo_vm::felt::Felt252; use cairo_vm::vm::runners::cairo_runner::ExecutionResources; use num_traits::Zero; -use starknet_contract_class::EntryPointType; +use starknet_in_rust::EntryPointType; use starknet_in_rust::{ definitions::{block_context::BlockContext, constants::TRANSACTION_VERSION}, execution::{ diff --git a/tests/syscalls.rs b/tests/syscalls.rs index 2d5e34230..fea917e27 100644 --- a/tests/syscalls.rs +++ b/tests/syscalls.rs @@ -10,7 +10,7 @@ use cairo_vm::{ }, }; use num_traits::{Num, One, Zero}; -use starknet_contract_class::EntryPointType; +use starknet_in_rust::EntryPointType; use starknet_in_rust::{ definitions::{ block_context::{BlockContext, StarknetChainId}, diff --git a/tests/syscalls_errors.rs b/tests/syscalls_errors.rs index c9ccbc4b7..cda562fb2 100644 --- a/tests/syscalls_errors.rs +++ b/tests/syscalls_errors.rs @@ -1,7 +1,7 @@ #![deny(warnings)] use cairo_vm::felt::Felt252; -use starknet_contract_class::EntryPointType; +use starknet_in_rust::EntryPointType; use starknet_in_rust::{ core::errors::state_errors::StateError, definitions::{block_context::BlockContext, constants::TRANSACTION_VERSION},