diff --git a/Cargo.lock b/Cargo.lock index 6b5dc8f09..8407c9fe1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -21,17 +21,17 @@ dependencies = [ [[package]] name = "actix-http" -version = "3.3.1" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2079246596c18b4a33e274ae10c0e50613f4d32a4198e09c7b93771013fed74" +checksum = "a92ef85799cba03f76e4f7c10f533e66d87c9a7e7055f3391f09000ad8351bc9" dependencies = [ "actix-codec", "actix-rt", "actix-service", "actix-utils", "ahash 0.8.3", - "base64 0.21.2", - "bitflags 1.3.2", + "base64 0.21.3", + "bitflags 2.4.0", "brotli", "bytes", "bytestring", @@ -65,7 +65,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" dependencies = [ "quote", - "syn 2.0.28", + "syn 2.0.29", ] [[package]] @@ -83,9 +83,9 @@ dependencies = [ [[package]] name = "actix-rt" -version = "2.8.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15265b6b8e2347670eb363c47fc8c75208b4a4994b27192f345fcbe707804f3e" +checksum = "28f32d40287d3f402ae0028a9d54bef51af15c8769492826a69d28f81893151d" dependencies = [ "futures-core", "tokio", @@ -93,9 +93,9 @@ dependencies = [ [[package]] name = "actix-server" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e8613a75dd50cc45f473cee3c34d59ed677c0f7b44480ce3b8247d7dc519327" +checksum = "3eb13e7eef0423ea6eab0e59f6c72e7cb46d33691ad56a726b3cd07ddec2c2d4" dependencies = [ "actix-rt", "actix-service", @@ -103,8 +103,7 @@ dependencies = [ "futures-core", "futures-util", "mio", - "num_cpus", - "socket2", + "socket2 0.5.3", "tokio", "tracing", ] @@ -122,19 +121,22 @@ dependencies = [ [[package]] name = "actix-tls" -version = "3.0.3" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fde0cf292f7cdc7f070803cb9a0d45c018441321a78b1042ffbbb81ec333297" +checksum = "72616e7fbec0aa99c6f3164677fa48ff5a60036d0799c98cab894a44f3e0efc3" dependencies = [ - "actix-codec", "actix-rt", "actix-service", "actix-utils", "futures-core", "http", - "log", + "impl-more", "pin-project-lite", + "rustls", + "rustls-webpki 0.101.4", + "tokio", "tokio-util", + "tracing", ] [[package]] @@ -149,9 +151,9 @@ dependencies = [ [[package]] name = "actix-web" -version = "4.3.1" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd3cb42f9566ab176e1ef0b8b3a896529062b4efc6be0123046095914c4c1c96" +checksum = "0e4a5b5e29603ca8c94a77c65cf874718ceb60292c5a5c3e5f4ace041af462b9" dependencies = [ "actix-codec", "actix-http", @@ -162,7 +164,7 @@ dependencies = [ "actix-service", "actix-utils", "actix-web-codegen", - "ahash 0.7.6", + "ahash 0.8.3", "bytes", "bytestring", "cfg-if", @@ -171,7 +173,6 @@ dependencies = [ "encoding_rs", "futures-core", "futures-util", - "http", "itoa", "language-tags", "log", @@ -183,28 +184,28 @@ dependencies = [ "serde_json", "serde_urlencoded", "smallvec", - "socket2", + "socket2 0.5.3", "time", "url", ] [[package]] name = "actix-web-codegen" -version = "4.2.0" +version = "4.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2262160a7ae29e3415554a3f1fc04c764b1540c116aa524683208078b7a75bc9" +checksum = "eb1f50ebbb30eca122b188319a4398b3f7bb4a8cdf50ecfb73bfc6a3c3ce54f5" dependencies = [ "actix-router", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.29", ] [[package]] name = "addr2line" -version = "0.20.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" dependencies = [ "gimli", ] @@ -251,9 +252,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.0.2" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" +checksum = "0c378d78423fdad8089616f827526ee33c19f2fddbd5de1629152c9593ba4783" dependencies = [ "memchr", ] @@ -296,24 +297,23 @@ dependencies = [ [[package]] name = "anstream" -version = "0.3.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163" +checksum = "b1f58811cfac344940f1a400b6e6231ce35171f614f26439e80f8c1465c5cc0c" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", - "is-terminal", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd" +checksum = "15c4c2c83f81532e5845a733998b6971faca23490340a418e9b72a3ec9de12ea" [[package]] name = "anstyle-parse" @@ -335,9 +335,9 @@ dependencies = [ [[package]] name = "anstyle-wincon" -version = "1.0.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188" +checksum = "58f54d10c6dfa51283a066ceab3ec1ab78d13fae00aa49243a45e4571fb79dfd" dependencies = [ "anstyle", "windows-sys", @@ -345,9 +345,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.72" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b13c32d80ecc7ab747b80c3784bce54ee8a7a0cc4fbda9bf4cda2cf6fe90854" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" [[package]] name = "arbitrary" @@ -506,13 +506,13 @@ checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" [[package]] name = "async-trait" -version = "0.1.72" +version = "0.1.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc6dde6e4ed435a4c1ee4e73592f5ba9da2151af10076cc04858746af9352d09" +checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.29", ] [[package]] @@ -535,9 +535,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "awc" -version = "3.1.1" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ef547a81796eb2dfe9b345aba34c2e08391a0502493711395b36dd64052b69" +checksum = "7fa3c705a9c7917ac0f41c0757a0a747b43bbc29b0b364b081bd7c5fc67fb223" dependencies = [ "actix-codec", "actix-http", @@ -545,8 +545,7 @@ dependencies = [ "actix-service", "actix-tls", "actix-utils", - "ahash 0.7.6", - "base64 0.21.2", + "base64 0.21.3", "bytes", "cfg-if", "cookie", @@ -569,9 +568,9 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.68" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" dependencies = [ "addr2line", "cc", @@ -590,9 +589,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.2" +version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" +checksum = "414dcefbc63d77c526a76b3afcf6fbb9b5e2791c19c3aa2297733208750c6e53" [[package]] name = "bigdecimal" @@ -638,9 +637,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.3.3" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" +checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" [[package]] name = "bitvec" @@ -789,9 +788,9 @@ checksum = "3a4f925191b4367301851c6d99b09890311d74b0d43f274c0b34c86d308a3663" [[package]] name = "cairo-felt" -version = "0.8.5" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed22664386f178bf9ca7b9ae7235727d92fa37b731a9063b5122488a1f699834" +checksum = "5972097b8800ca5dffb458040e74c724a2ac4fa4b5b480b50f5b96c7e67d6427" dependencies = [ "lazy_static", "num-bigint", @@ -802,9 +801,9 @@ dependencies = [ [[package]] name = "cairo-lang-casm" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213103e1cf9049abd443f97088939d9cf6ef5500b295003be2b244c702d8fe9c" +checksum = "afc7f7cb89bc3f52c2c738f3e87c8f8773bd3456cae1d322d100d4b0da584f3c" dependencies = [ "cairo-lang-utils", "indoc", @@ -819,9 +818,9 @@ dependencies = [ [[package]] name = "cairo-lang-compiler" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eb857feb6d7a73fd33193a2cc141c04ab345d47bcbd9e2c014ef3422ebc6d55" +checksum = "d4f2c54b065f7fd97bf8d5df76cbcbbd01d8a8c319d281796ee20ecc48e16ca8" dependencies = [ "anyhow", "cairo-lang-defs", @@ -836,6 +835,7 @@ dependencies = [ "cairo-lang-sierra-generator", "cairo-lang-syntax", "cairo-lang-utils", + "itertools 0.11.0", "log", "salsa", "smol_str", @@ -844,18 +844,18 @@ dependencies = [ [[package]] name = "cairo-lang-debug" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af06d0c89bd515707d6f0140a880f6463b955189fa5f97719edd62348c36ee2c" +checksum = "873ba77d4c3f780c727c7d6c738cded22b3f6d4023e30546dfe14f97a087887e" dependencies = [ "cairo-lang-utils", ] [[package]] name = "cairo-lang-defs" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ead2773a4d8147c3c25666d9a97a41161eeb59e0d0d1060b5f9b6fa68d0da1" +checksum = "f5031fff038c27ed43769b73a6f5d41aeaea34df9af862e024c23fbb4f076249" dependencies = [ "cairo-lang-debug", "cairo-lang-diagnostics", @@ -871,9 +871,9 @@ dependencies = [ [[package]] name = "cairo-lang-diagnostics" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6924bc3d558495a5327955da3aec15e6ab71c0f83e955258ffbb0e1a20ead87" +checksum = "7b6cb1492e5784e1076320a5018ce7584f391b2f3b414bc0a8ab7c289fa118ce" dependencies = [ "cairo-lang-debug", "cairo-lang-filesystem", @@ -884,9 +884,9 @@ dependencies = [ [[package]] name = "cairo-lang-eq-solver" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ac8853dae37b4f3b4d3d8d36002b2fb0b52aa5f578f15b0bf47cedd2ec7358b" +checksum = "c35dddbc63b2a4870891cc74498726aa32bfaa518596352f9bb101411cc4c584" dependencies = [ "cairo-lang-utils", "good_lp", @@ -896,9 +896,9 @@ dependencies = [ [[package]] name = "cairo-lang-filesystem" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acb3fc0d5582fd27910e63cca94a7c9d41acc0045a815ff99ed941eb45183375" +checksum = "32ce0b8e66a6085ae157d43b5c162d60166f0027d6f125c50ee74e4dc7916ff6" dependencies = [ "cairo-lang-debug", "cairo-lang-utils", @@ -910,9 +910,9 @@ dependencies = [ [[package]] name = "cairo-lang-lowering" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7d7f5acc6e4c67a6f2232df1d1f13039453cb50d2971183a1fd254067735cd0" +checksum = "29cc679f501725e03ee703559ed27d084c6f4031bd51ff86378cf845a85ee207" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -929,15 +929,16 @@ dependencies = [ "log", "num-bigint", "num-traits 0.2.16", + "once_cell", "salsa", "smol_str", ] [[package]] name = "cairo-lang-parser" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a9716a807fd4430a4af396ad9f7bd1228414c972a24a7e4211ac83d83f538d1" +checksum = "cdcadb046659134466bc7e11961ea8a56969dae8a54d8f985955ce0b95185c7f" dependencies = [ "cairo-lang-diagnostics", "cairo-lang-filesystem", @@ -956,17 +957,17 @@ dependencies = [ [[package]] name = "cairo-lang-plugins" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb782377b1cb01ccb3e00aec3903912895ae3cf6b5a8e05918bc0e4a837c1929" +checksum = "4632790cd4ea11d4849934456a400eae7ed419f6d721f24a6b637df67b7e902f" dependencies = [ "cairo-lang-defs", "cairo-lang-diagnostics", "cairo-lang-filesystem", "cairo-lang-parser", - "cairo-lang-semantic", "cairo-lang-syntax", "cairo-lang-utils", + "indent", "indoc", "itertools 0.11.0", "num-bigint", @@ -976,20 +977,20 @@ dependencies = [ [[package]] name = "cairo-lang-proc-macros" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4756fe3fdb86d3d8fda40ee250d146300381e98110ec7e4a624407c7e0b7e63f" +checksum = "170838817fc33ddb65e0a9480526df0b226b148a0fca0a5cd7071be4c6683157" dependencies = [ "cairo-lang-debug", "quote", - "syn 2.0.28", + "syn 2.0.29", ] [[package]] name = "cairo-lang-project" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "913cdcd5e567d7ca13d1b37822feeac19973f5133a4fbab76b67e12c847bff3a" +checksum = "4162ee976c61fdeb3b621f4a76fd256e46a5c0890f750a3a9d2c9560a3bc1daf" dependencies = [ "cairo-lang-filesystem", "cairo-lang-utils", @@ -1001,9 +1002,9 @@ dependencies = [ [[package]] name = "cairo-lang-runner" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55ce3aa736c0180b5ed5320138b3f8ed70696618f2cb23bc86217eebfa2274ea" +checksum = "11d66ef01350e2e7f7e6b2b43b865da2513a42600082ee1a2975d3af3da7f0ca" dependencies = [ "anyhow", "ark-ff", @@ -1038,15 +1039,16 @@ dependencies = [ [[package]] name = "cairo-lang-semantic" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6962d05da3c355f8fc49e97dda4252dfa71969399ef5658130b9cdc86d8a805" +checksum = "13e544fa9a222bf2d007df2b5fc9b21c2a20ab7e17d6fefbcbc193de209451cd" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", "cairo-lang-diagnostics", "cairo-lang-filesystem", "cairo-lang-parser", + "cairo-lang-plugins", "cairo-lang-proc-macros", "cairo-lang-syntax", "cairo-lang-utils", @@ -1055,15 +1057,16 @@ dependencies = [ "log", "num-bigint", "num-traits 0.2.16", + "once_cell", "salsa", "smol_str", ] [[package]] name = "cairo-lang-sierra" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "872cf03415aa48c7757e4cee4b0223a158fcc9abddf55574f6c387324f25cc1f" +checksum = "d5e136b79e95a14ef38a2be91a67ceb85317407d336a5b0d418c33b23c78596a" dependencies = [ "cairo-lang-utils", "const-fnv1a-hash", @@ -1084,9 +1087,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-ap-change" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eba2fbd5f13210a46c2050fe156776490c556f6f0335401bda810640c1e65fd" +checksum = "511ca7708faa7ba8d14ae26e1d60ead2d02028c8f664baf5ecb0fd6a0d1e20f6" dependencies = [ "cairo-lang-eq-solver", "cairo-lang-sierra", @@ -1098,9 +1101,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-gas" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9f4cec68f861b86dd6429592d9c0c535cbb983a9b7c21fc906b659b35e7882e" +checksum = "351a25bc010b910919c01d5c57e937b0c3d330fc30d92702c0cb4061819df8df" dependencies = [ "cairo-lang-eq-solver", "cairo-lang-sierra", @@ -1112,9 +1115,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-generator" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65f050d6c717090ee10be52950cfe639709af27138eb9cd4122b0ab171a5cf2a" +checksum = "114091bb971c06fd072aca816af1c3f62566cd8a4b1453c786155161a36c7bce" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -1132,15 +1135,16 @@ dependencies = [ "indexmap 2.0.0", "itertools 0.11.0", "num-bigint", + "once_cell", "salsa", "smol_str", ] [[package]] name = "cairo-lang-sierra-to-casm" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58c53fa4c6013827c42c1e02ee9a58fa5901cb18a711bdfeb1af379f69d2055c" +checksum = "fa1c799de62972dfd7112d563000695be94305b6f7d9bedd29f347799bf03e1c" dependencies = [ "assert_matches", "cairo-felt", @@ -1160,9 +1164,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-type-size" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07a5e70b5a5826edeb61ec375886847f51e1b995709e3f36d657844fbd703d45" +checksum = "d2fe73d9d58aaf9088f6ba802bcf43ce9ca4bd198190cf5bf91caa7d408dd11a" dependencies = [ "cairo-lang-sierra", "cairo-lang-utils", @@ -1170,9 +1174,9 @@ dependencies = [ [[package]] name = "cairo-lang-starknet" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfaa6629cd5a9cc13543d59bd5494fc01cc4118efbcc5b13528be4539a35f77f" +checksum = "75df624e71e33a31a924e799dd2a9a8284204b41d8db9c51803317bd9edff81f" dependencies = [ "anyhow", "cairo-felt", @@ -1211,9 +1215,9 @@ dependencies = [ [[package]] name = "cairo-lang-syntax" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b23b312f07e45bc0bb2d240187a37db2816393c285896c9ab453c8ca8e128d25" +checksum = "0b1af0ae21f9e539f97cfdf56f5ce0934dae5d87f568fd778c3d624a102f8dbb" dependencies = [ "cairo-lang-debug", "cairo-lang-filesystem", @@ -1228,9 +1232,9 @@ dependencies = [ [[package]] name = "cairo-lang-syntax-codegen" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0225e4b5f09523bc424fae216ea899cb8f9132fb0da164096cee5e2ce79076fe" +checksum = "822ffabf24f6a5506262edcece315260a82d9dfba3abe6548791a6d654563ad0" dependencies = [ "genco", "xshell", @@ -1238,9 +1242,9 @@ dependencies = [ [[package]] name = "cairo-lang-utils" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2b4bdb1d6509e2579d04d1757070f88c2542ff033194f749772669a1615c7e4" +checksum = "f974b6e859f0b09c0f13ec8188c96e9e8bbb5da04214f911dbb5bcda67cb812b" dependencies = [ "indexmap 2.0.0", "itertools 0.11.0", @@ -1254,9 +1258,9 @@ dependencies = [ [[package]] name = "cairo-vm" -version = "0.8.5" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74af2798567c670dc274245ca135c4501100fc5639e91c83b8527d9e46a97249" +checksum = "00d9bf139b0fe845627cf09d11af43eec9575dba702033bf6b08050c776b8553" dependencies = [ "anyhow", "ark-ff", @@ -1288,11 +1292,12 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.79" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" dependencies = [ "jobserver", + "libc", ] [[package]] @@ -1303,15 +1308,15 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.26" +version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" +checksum = "95ed24df0632f708f5f6d8082675bef2596f7084dee3dd55f632290bf35bfe0f" dependencies = [ "android-tzdata", "iana-time-zone", "num-traits 0.2.16", "serde", - "winapi", + "windows-targets", ] [[package]] @@ -1326,20 +1331,19 @@ dependencies = [ [[package]] name = "clap" -version = "4.3.19" +version = "4.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fd304a20bff958a57f04c4e96a2e7594cc4490a0e809cbd48bb6437edaa452d" +checksum = "6a13b88d2c62ff462f88e4a121f17a82c1af05693a2f192b5c38d14de73c19f6" dependencies = [ "clap_builder", "clap_derive", - "once_cell", ] [[package]] name = "clap_builder" -version = "4.3.19" +version = "4.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01c6a3f08f1fe5662a35cfe393aec09c4df95f60ee93b7556505260f75eee9e1" +checksum = "2bb9faaa7c2ef94b2743a21f5a29e6f0010dff4caa69ac8e9d6cf8b6fa74da08" dependencies = [ "anstream", "anstyle", @@ -1349,21 +1353,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.3.12" +version = "4.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54a9bb5758fc5dfe728d1019941681eccaf0cf8a4189b692a0ee2f2ecf90a050" +checksum = "0862016ff20d69b84ef8247369fabf5c008a7417002411897d40ee1f4532b873" dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.29", ] [[package]] name = "clap_lex" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" +checksum = "cd7cc57abe963c6d3b9d8be5b06ba7c8957a930305ca90304f24ef040aa6f961" [[package]] name = "colorchoice" @@ -1487,7 +1491,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f34ba9a9bcb8645379e9de8cb3ecfcf4d1c85ba66d90deb3259206fa5aa193b" dependencies = [ "quote", - "syn 2.0.28", + "syn 2.0.29", ] [[package]] @@ -1544,7 +1548,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.28", + "syn 2.0.29", ] [[package]] @@ -1566,14 +1570,14 @@ checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core 0.20.3", "quote", - "syn 2.0.28", + "syn 2.0.29", ] [[package]] name = "deranged" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8810e7e2cf385b1e9b50d68264908ec367ba642c96d02edfe61c39e88e2a3c01" +checksum = "f2696e8a945f658fd14dc3b87242e6b80cd0f36ff04ea560fa39082368847946" dependencies = [ "serde", ] @@ -1648,9 +1652,9 @@ checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" [[package]] name = "dyn-clone" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "304e6508efa593091e97a9abbc10f90aa7ca635b6d2784feff3c89d41dd12272" +checksum = "bbfc4744c1b8f2a09adc0e55242f60b1af195d88596bd8700be74418c056c555" [[package]] name = "either" @@ -1669,9 +1673,9 @@ dependencies = [ [[package]] name = "encoding_rs" -version = "0.8.32" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" dependencies = [ "cfg-if", ] @@ -1684,9 +1688,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f" +checksum = "136526188508e25c6fef639d7927dfb3e0e3084488bf202267829cf7fc23dbdd" dependencies = [ "errno-dragonfly", "libc", @@ -1778,9 +1782,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.26" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" +checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010" dependencies = [ "crc32fast", "miniz_oxide", @@ -1851,7 +1855,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.29", ] [[package]] @@ -1953,15 +1957,15 @@ dependencies = [ [[package]] name = "gimli" -version = "0.27.3" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" +checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" [[package]] name = "good_lp" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0833c2bc3cee9906df9969ade12b0b3b8759faa7bc2682b428be767033cdcd4" +checksum = "fa7f3b0e0de4e671b6ffc1274b153a9394cb58bf04ee67505b0cb9915513115f" dependencies = [ "fnv", "minilp", @@ -1969,9 +1973,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.20" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049" +checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" dependencies = [ "bytes", "fnv", @@ -2093,9 +2097,9 @@ checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "httpdate" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" @@ -2114,7 +2118,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2", + "socket2 0.4.9", "tokio", "tower-service", "tracing", @@ -2189,6 +2193,12 @@ dependencies = [ "parity-scale-codec", ] +[[package]] +name = "impl-more" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "206ca75c9c03ba3d4ace2460e57b189f39f43de612c2f85836e65c929701bb2d" + [[package]] name = "impl-rlp" version = "0.3.0" @@ -2393,9 +2403,9 @@ checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "libmimalloc-sys" -version = "0.1.33" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4ac0e912c8ef1b735e92369695618dc5b1819f5a7bf3f167301a3ba1cea515e" +checksum = "25d058a81af0d1c22d7a1c948576bee6d673f7af3c0f35564abd6c81122f513d" dependencies = [ "cc", "libc", @@ -2437,9 +2447,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.19" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "lru" @@ -2461,9 +2471,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.5.0" +version = "2.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "5486aed0026218e61b8a01d5fbd5a0a134649abb71a0e53b7bc088529dced86e" [[package]] name = "memmap2" @@ -2476,9 +2486,9 @@ dependencies = [ [[package]] name = "mimalloc" -version = "0.1.37" +version = "0.1.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e2894987a3459f3ffb755608bd82188f8ed00d0ae077f1edea29c068d639d98" +checksum = "972e5f23f6716f62665760b0f4cbf592576a80c7b879ba9beaafc0e558894127" dependencies = [ "libmimalloc-sys", ] @@ -2557,9 +2567,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" dependencies = [ "autocfg", "num-integer", @@ -2633,21 +2643,11 @@ dependencies = [ "autocfg", ] -[[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 = "object" -version = "0.31.1" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" +checksum = "77ac5bbd07aea88c60a577a1ce218075ffd59208b2d7ca97adf9bfc5aeb21ebe" dependencies = [ "memchr", ] @@ -2680,9 +2680,9 @@ dependencies = [ [[package]] name = "parity-scale-codec-derive" -version = "3.6.4" +version = "3.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a296c3079b5fefbc499e1de58dc26c09b1b9a5952d26694ee89f04a43ebbb3e" +checksum = "312270ee71e1cd70289dacf597cab7b207aa107d2f28191c2ae45b2ece18a260" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2767,12 +2767,12 @@ checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" [[package]] name = "petgraph" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dd7d28ee937e54fe3080c91faa1c3a46c06de6252988a7f4592ba2310ef22a4" +checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" dependencies = [ "fixedbitset", - "indexmap 1.9.3", + "indexmap 2.0.0", ] [[package]] @@ -2805,7 +2805,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.29", ] [[package]] @@ -2834,9 +2834,9 @@ checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" [[package]] name = "pin-project-lite" -version = "0.2.10" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c40d25201921e5ff0c862a505c6557ea88568a4e3ace775ab55e93f2f4f9d57" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" [[package]] name = "pin-utils" @@ -2920,9 +2920,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.32" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] @@ -3000,9 +3000,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.9.1" +version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575" +checksum = "12de2eff854e5fa4b1295edd650e227e9d8fb0c9e90b12e7f36d6a6811791a29" dependencies = [ "aho-corasick", "memchr", @@ -3012,9 +3012,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.3.4" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7b6d6190b7594385f61bd3911cd1be99dfddcfc365a4160cc2ab5bff4aed294" +checksum = "49530408a136e16e5b486e883fbb6ba058e8e4e8ae6621a77b048b314336e629" dependencies = [ "aho-corasick", "memchr", @@ -3023,23 +3023,23 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" +checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" [[package]] name = "relative-path" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bf2521270932c3c7bed1a59151222bd7643c79310f2916f01925e1e16255698" +checksum = "c707298afce11da2efef2f600116fa93ffa7a032b5d7b628aa17711ec81383ca" [[package]] name = "reqwest" -version = "0.11.18" +version = "0.11.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55" +checksum = "3e9ad3fe7488d7e34558a2033d45a0c90b72d97b4f80705666fea71472e2e6a1" dependencies = [ - "base64 0.21.2", + "base64 0.21.3", "bytes", "encoding_rs", "futures-core", @@ -3068,7 +3068,7 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots 0.22.6", + "webpki-roots 0.25.2", "winreg", ] @@ -3116,7 +3116,7 @@ dependencies = [ "dotenv", "serde", "serde_json", - "serde_with 3.1.0", + "serde_with 3.3.0", "starknet", "starknet_api", "starknet_in_rust", @@ -3136,9 +3136,10 @@ dependencies = [ "flate2", "serde", "serde_json", - "serde_with 3.1.0", + "serde_with 3.3.0", "starknet", "starknet_api", + "starknet_in_rust", "thiserror", "ureq", ] @@ -3172,11 +3173,11 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.4" +version = "0.38.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a962918ea88d644592894bc6dc55acc6c0956488adcebbfb6e273506b7fd6e5" +checksum = "c0c3dde1fc030af041adc40e79c0e7fbcf431dd24870053d187d7c66e4b87453" dependencies = [ - "bitflags 2.3.3", + "bitflags 2.4.0", "errno", "libc", "linux-raw-sys", @@ -3185,13 +3186,13 @@ dependencies = [ [[package]] name = "rustls" -version = "0.21.5" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79ea77c539259495ce8ca47f53e66ae0330a8819f67e23ac96ca02f50e7b7d36" +checksum = "cd8d6c9f025a446bc4d18ad9632e69aec8f287aa84499ee335599fabd20c3fd8" dependencies = [ "log", "ring", - "rustls-webpki 0.101.2", + "rustls-webpki 0.101.4", "sct", ] @@ -3201,14 +3202,14 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" dependencies = [ - "base64 0.21.2", + "base64 0.21.3", ] [[package]] name = "rustls-webpki" -version = "0.100.1" +version = "0.100.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6207cd5ed3d8dca7816f8f3725513a34609c0c765bf652b8c3cb4cfd87db46b" +checksum = "e98ff011474fa39949b7e5c0428f9b4937eda7da7848bbb947786b7be0b27dab" dependencies = [ "ring", "untrusted", @@ -3216,9 +3217,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.101.2" +version = "0.101.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "513722fd73ad80a71f72b61009ea1b584bcfa1483ca93949c8f290298837fa59" +checksum = "7d93931baf2d282fff8d3a532bbfd7653f734643161b87e3e01e59a04439bf0d" dependencies = [ "ring", "untrusted", @@ -3276,9 +3277,9 @@ dependencies = [ [[package]] name = "schemars" -version = "0.8.12" +version = "0.8.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02c613288622e5f0c3fdc5dbd4db1c5fbe752746b1d1a56a0630b78fd00de44f" +checksum = "763f8cd0d4c71ed8389c90cb8100cba87e763bd01a8e614d4f0af97bcd50a161" dependencies = [ "dyn-clone", "indexmap 1.9.3", @@ -3289,9 +3290,9 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.12" +version = "0.8.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109da1e6b197438deb6db99952990c7f959572794b80ff93707d55a232545e7c" +checksum = "ec0f696e21e10fa546b7ffb1c9672c6de8fbc7a81acf59524386d8639bf12737" dependencies = [ "proc-macro2", "quote", @@ -3350,7 +3351,7 @@ checksum = "389894603bd18c46fa56231694f8d827779c0951a667087194cf9de94ed24682" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.29", ] [[package]] @@ -3366,9 +3367,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.104" +version = "1.0.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "076066c5f1078eac5b722a31827a8832fe108bed65dfa75e233c89f8206e976c" +checksum = "693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360" dependencies = [ "itoa", "ryu", @@ -3435,17 +3436,18 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.1.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21e47d95bc83ed33b2ecf84f4187ad1ab9685d18ff28db000c99deac8ce180e3" +checksum = "1ca3b16a3d82c4088f343b7480a93550b3eabe1a358569c2dfe38bbcead07237" dependencies = [ - "base64 0.21.2", + "base64 0.21.3", "chrono", "hex", "indexmap 1.9.3", + "indexmap 2.0.0", "serde", "serde_json", - "serde_with_macros 3.1.0", + "serde_with_macros 3.3.0", "time", ] @@ -3458,19 +3460,19 @@ dependencies = [ "darling 0.20.3", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.29", ] [[package]] name = "serde_with_macros" -version = "3.1.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea3cee93715c2e266b9338b7544da68a9f24e227722ba482bd1c024367c77c65" +checksum = "2e6be15c453eb305019bfa438b1593c731f36a289a7853f7707ee29e870b3b3c" dependencies = [ "darling 0.20.3", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.29", ] [[package]] @@ -3516,15 +3518,15 @@ dependencies = [ [[package]] name = "siphasher" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" [[package]] name = "slab" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" dependencies = [ "autocfg", ] @@ -3554,6 +3556,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "socket2" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877" +dependencies = [ + "libc", + "windows-sys", +] + [[package]] name = "spin" version = "0.5.2" @@ -3621,7 +3633,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91f89c79b641618de8aa9668d74c6b6634659ceca311c6318a35c025f9d4d969" dependencies = [ - "base64 0.21.2", + "base64 0.21.3", "flate2", "hex", "serde", @@ -3681,7 +3693,7 @@ checksum = "af6527b845423542c8a16e060ea1bc43f67229848e7cd4c4d80be994a84220ce" dependencies = [ "starknet-curve 0.4.0", "starknet-ff", - "syn 2.0.28", + "syn 2.0.29", ] [[package]] @@ -3724,7 +3736,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28a5865ee0ed22ade86bdf45e7c09c5641f1c59ccae12c21ecde535b2b6bf64a" dependencies = [ "starknet-core", - "syn 2.0.28", + "syn 2.0.29", ] [[package]] @@ -3803,7 +3815,7 @@ version = "0.3.1" dependencies = [ "anyhow", "assert_matches", - "base64 0.21.2", + "base64 0.21.3", "cairo-lang-casm", "cairo-lang-runner", "cairo-lang-sierra", @@ -3894,9 +3906,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.28" +version = "2.0.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567" +checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a" dependencies = [ "proc-macro2", "quote", @@ -3911,9 +3923,9 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.7.0" +version = "3.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5486094ee78b2e5038a6382ed7645bc084dc2ec433426ca4c3cb61e2007b8998" +checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" dependencies = [ "cfg-if", "fastrand", @@ -3935,22 +3947,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.44" +version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "611040a08a0439f8248d1990b111c95baa9c704c805fa1f62104b39655fd7f90" +checksum = "97a802ec30afc17eee47b2855fc72e0c4cd62be9b4efe6591edde0ec5bd68d8f" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.44" +version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "090198534930841fab3a5d1bb637cde49e339654e606195f8d9c76eeb081dc96" +checksum = "6bb623b56e39ab7dcd4b1b98bb6c8f8d907ed255b18de254088016b27a8ee19b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.29", ] [[package]] @@ -3975,9 +3987,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.24" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b79eabcd964882a646b3584543ccabeae7869e9ac32a46f6f22b7a5bd405308b" +checksum = "a79d09ac6b08c1ab3906a2f7cc2e81a0e27c7ae89c63812df75e52bef0751e07" dependencies = [ "deranged", "itoa", @@ -3994,9 +4006,9 @@ checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" [[package]] name = "time-macros" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb71511c991639bb078fd5bf97757e03914361c48100d52878b8e52b46fb92cd" +checksum = "75c65469ed6b3a4809d987a41eb1dc918e9bc1d92211cbad7ae82931846f7451" dependencies = [ "time-core", ] @@ -4027,11 +4039,10 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.29.1" +version = "1.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "532826ff75199d5833b9d2c5fe410f29235e25704ee5f0ef599fb51c21f4a4da" +checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" dependencies = [ - "autocfg", "backtrace", "bytes", "libc", @@ -4039,7 +4050,7 @@ dependencies = [ "parking_lot 0.12.1", "pin-project-lite", "signal-hook-registry", - "socket2", + "socket2 0.5.3", "tokio-macros", "windows-sys", ] @@ -4052,7 +4063,7 @@ checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.29", ] [[package]] @@ -4166,9 +4177,9 @@ dependencies = [ [[package]] name = "unescaper" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "995483205de764db1185c9461a000fff73fa4b9ee2bbe4c8b4027a94692700fe" +checksum = "a96a44ae11e25afb520af4534fd7b0bd8cd613e35a78def813b8cf41631fa3c8" dependencies = [ "thiserror", ] @@ -4218,12 +4229,12 @@ version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b11c96ac7ee530603dcdf68ed1557050f374ce55a5a07193ebf8cbc9f8927e9" dependencies = [ - "base64 0.21.2", + "base64 0.21.3", "flate2", "log", "once_cell", "rustls", - "rustls-webpki 0.100.1", + "rustls-webpki 0.100.2", "serde", "serde_json", "url", @@ -4232,9 +4243,9 @@ dependencies = [ [[package]] name = "url" -version = "2.4.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" +checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" dependencies = [ "form_urlencoded", "idna", @@ -4299,7 +4310,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.29", "wasm-bindgen-shared", ] @@ -4333,7 +4344,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.29", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -4354,33 +4365,20 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "webpki" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" -dependencies = [ - "ring", - "untrusted", -] - [[package]] name = "webpki-roots" -version = "0.22.6" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" +checksum = "b03058f88386e5ff5310d9111d53f48b17d732b401aeb83a8d5190f2ac459338" dependencies = [ - "webpki", + "rustls-webpki 0.100.2", ] [[package]] name = "webpki-roots" -version = "0.23.1" +version = "0.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b03058f88386e5ff5310d9111d53f48b17d732b401aeb83a8d5190f2ac459338" -dependencies = [ - "rustls-webpki 0.100.1", -] +checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" [[package]] name = "winapi" @@ -4424,9 +4422,9 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.48.1" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ "windows_aarch64_gnullvm", "windows_aarch64_msvc", @@ -4439,62 +4437,63 @@ dependencies = [ [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_i686_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "winnow" -version = "0.5.3" +version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46aab759304e4d7b2075a9aecba26228bb073ee8c50db796b2c72c676b5d807" +checksum = "7c2e3184b9c4e92ad5167ca73039d0c42476302ab603e2fec4487511f38ccefc" dependencies = [ "memchr", ] [[package]] name = "winreg" -version = "0.10.1" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" dependencies = [ - "winapi", + "cfg-if", + "windows-sys", ] [[package]] @@ -4538,7 +4537,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.29", ] [[package]] diff --git a/rpc_state_reader_sn_api/Cargo.toml b/rpc_state_reader_sn_api/Cargo.toml index ba20520ba..7b9612204 100644 --- a/rpc_state_reader_sn_api/Cargo.toml +++ b/rpc_state_reader_sn_api/Cargo.toml @@ -22,3 +22,4 @@ serde_with = "3.0.0" dotenv = "0.15.0" cairo-vm = "0.8.5" blockifier = "0.2.0-rc0" +starknet_in_rust = { path = "../", version = "0.3.1" } diff --git a/rpc_state_reader_sn_api/src/lib.rs b/rpc_state_reader_sn_api/src/lib.rs index ef1c81d4a..61393d32a 100644 --- a/rpc_state_reader_sn_api/src/lib.rs +++ b/rpc_state_reader_sn_api/src/lib.rs @@ -16,7 +16,7 @@ use starknet_api::block::{BlockNumber, BlockTimestamp}; use starknet_api::core::{ChainId, ClassHash, EntryPointSelector}; use starknet_api::deprecated_contract_class::EntryPointOffset; use starknet_api::hash::StarkFelt; -use starknet_api::transaction::{InvokeTransaction, Transaction, TransactionHash}; +use starknet_api::transaction::{InvokeTransaction, Transaction as SNTransaction, TransactionHash}; use starknet_api::{core::ContractAddress, hash::StarkHash, state::StorageKey}; use std::collections::HashMap; use std::env; @@ -129,7 +129,7 @@ pub struct RpcBlockInfo { /// The sequencer address of this block. pub sequencer_address: ContractAddress, /// The transactions of this block. - pub transactions: Vec, + pub transactions: Vec, } #[derive(Deserialize)] @@ -185,12 +185,13 @@ impl RpcState { } } -#[derive(Debug)] +#[derive(Debug, Deserialize)] pub struct TransactionTrace { pub validate_invocation: RpcCallInfo, - pub function_invocation: RpcCallInfo, + pub function_invocation: Option, pub fee_transfer_invocation: RpcCallInfo, pub signature: Vec, + pub revert_error: Option, } #[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq)] @@ -277,53 +278,6 @@ impl<'de> Deserialize<'de> for RpcCallInfo { } } -impl<'de> Deserialize<'de> for TransactionTrace { - fn deserialize(deserializer: D) -> Result - where - D: Deserializer<'de>, - { - let value: serde_json::Value = Deserialize::deserialize(deserializer)?; - - let validate_invocation = value["validate_invocation"].clone(); - let function_invocation = value["function_invocation"].clone(); - let fee_transfer_invocation = value["fee_transfer_invocation"].clone(); - let signature_value = value["signature"].clone(); - - Ok(TransactionTrace { - validate_invocation: serde_json::from_value(validate_invocation) - .map_err(serde::de::Error::custom)?, - function_invocation: serde_json::from_value(function_invocation) - .map_err(serde::de::Error::custom)?, - fee_transfer_invocation: serde_json::from_value(fee_transfer_invocation) - .map_err(serde::de::Error::custom)?, - signature: serde_json::from_value(signature_value).map_err(serde::de::Error::custom)?, - }) - } -} - -/// Freestanding deserialize method to avoid a new type. -fn deserialize_transaction_json(transaction: serde_json::Value) -> serde_json::Result { - let tx_type: String = serde_json::from_value(transaction["type"].clone())?; - let tx_version: String = serde_json::from_value(transaction["version"].clone())?; - - match tx_type.as_str() { - "INVOKE" => match tx_version.as_str() { - "0x0" => Ok(Transaction::Invoke(InvokeTransaction::V0( - serde_json::from_value(transaction)?, - ))), - "0x1" => Ok(Transaction::Invoke(InvokeTransaction::V1( - serde_json::from_value(transaction)?, - ))), - x => Err(serde::de::Error::custom(format!( - "unimplemented invoke version: {x}" - ))), - }, - x => Err(serde::de::Error::custom(format!( - "unimplemented transaction type deserialization: {x}" - ))), - } -} - impl RpcState { /// Requests the transaction trace to the Feeder Gateway API. /// It's useful for testing the transaction outputs like: @@ -341,11 +295,11 @@ impl RpcState { .call() .unwrap(); - serde_json::from_str(&response.into_string().unwrap()).unwrap() + serde_json::from_value(response.into_json().unwrap()).unwrap() } /// Requests the given transaction to the Feeder Gateway API. - pub fn get_transaction(&self, hash: &TransactionHash) -> Transaction { + pub fn get_transaction(&self, hash: &TransactionHash) -> SNTransaction { let params = ureq::json!({ "jsonrpc": "2.0", "method": "starknet_getTransactionByHash", @@ -353,19 +307,7 @@ impl RpcState { "id": 1 }); let result = self.rpc_call::(¶ms).unwrap()["result"].clone(); - - match result["type"].as_str().unwrap() { - "INVOKE" => match result["version"].as_str().unwrap() { - "0x0" => Transaction::Invoke(InvokeTransaction::V0( - serde_json::from_value(result).unwrap(), - )), - "0x1" => Transaction::Invoke(InvokeTransaction::V1( - serde_json::from_value(result).unwrap(), - )), - _ => unimplemented!(), - }, - _ => unimplemented!(), - } + utils::deserialize_transaction_json(result).unwrap() } /// Gets the gas price of a given block. @@ -411,7 +353,7 @@ impl RpcState { .as_array() .unwrap() .iter() - .filter_map(|result| deserialize_transaction_json(result.clone()).ok()) + .filter_map(|result| utils::deserialize_transaction_json(result.clone()).ok()) .collect(); RpcBlockInfo { @@ -432,10 +374,7 @@ impl RpcState { } } - pub fn get_contract_class( - &self, - class_hash: &starknet_api::core::ClassHash, - ) -> BlockifierContractClass { + pub fn get_contract_class(&self, class_hash: &ClassHash) -> SNContractClass { let params = ureq::json!({ "jsonrpc": "2.0", "method": "starknet_getClass", @@ -443,37 +382,7 @@ impl RpcState { "id": 1 }); - let response = self.rpc_call_result(¶ms).unwrap(); - - match response { - SNContractClass::Legacy(compressed_legacy_cc) => { - let as_str = utils::decode_reader(compressed_legacy_cc.program).unwrap(); - let program = Program::from_bytes(as_str.as_bytes(), None).unwrap(); - let entry_points_by_type = utils::map_entry_points_by_type_legacy( - compressed_legacy_cc.entry_points_by_type, - ); - let inner = Arc::new(ContractClassV0Inner { - program, - entry_points_by_type, - }); - BlockifierContractClass::V0(ContractClassV0(inner)) - } - SNContractClass::Sierra(flattened_sierra_cc) => { - let middle_sierra: utils::MiddleSierraContractClass = { - let v = serde_json::to_value(flattened_sierra_cc).unwrap(); - serde_json::from_value(v).unwrap() - }; - let sierra_cc = SierraContractClass { - sierra_program: middle_sierra.sierra_program, - contract_class_version: middle_sierra.contract_class_version, - entry_points_by_type: middle_sierra.entry_points_by_type, - sierra_program_debug_info: None, - abi: None, - }; - let casm_cc = CasmContractClass::from_contract_class(sierra_cc, false).unwrap(); - BlockifierContractClass::V1(casm_cc.try_into().unwrap()) - } - } + self.rpc_call_result(¶ms).unwrap() } pub fn get_class_hash_at(&self, contract_address: &ContractAddress) -> ClassHash { @@ -574,8 +483,8 @@ mod utils { entry_points_by_type_map } - // Uncompresses a Gz Encoded vector of bytes and returns a string or error - // Here &[u8] implements BufRead + /// Uncompresses a Gz Encoded vector of bytes and returns a string or error + /// Here &[u8] implements BufRead pub(crate) fn decode_reader(bytes: Vec) -> io::Result { use flate2::bufread; let mut gz = bufread::GzDecoder::new(&bytes[..]); @@ -583,6 +492,31 @@ mod utils { gz.read_to_string(&mut s)?; Ok(s) } + + /// Freestanding deserialize method to avoid a new type. + pub(crate) fn deserialize_transaction_json( + transaction: serde_json::Value, + ) -> serde_json::Result { + let tx_type: String = serde_json::from_value(transaction["type"].clone())?; + let tx_version: String = serde_json::from_value(transaction["version"].clone())?; + + match tx_type.as_str() { + "INVOKE" => match tx_version.as_str() { + "0x0" => Ok(SNTransaction::Invoke(InvokeTransaction::V0( + serde_json::from_value(transaction)?, + ))), + "0x1" => Ok(SNTransaction::Invoke(InvokeTransaction::V1( + serde_json::from_value(transaction)?, + ))), + x => Err(serde::de::Error::custom(format!( + "unimplemented invoke version: {x}" + ))), + }, + x => Err(serde::de::Error::custom(format!( + "unimplemented transaction type deserialization: {x}" + ))), + } + } } #[cfg(test)] @@ -592,6 +526,9 @@ mod tests { hash::StarkFelt, stark_felt, }; + use starknet_in_rust::{ + definitions::block_context::StarknetChainId, transaction::InvokeFunction, + }; use super::*; @@ -684,6 +621,23 @@ mod tests { rpc_state.get_transaction(&tx_hash); } + #[test] + fn test_try_from_invoke() { + let rpc_state = RpcState::new(RpcChain::MainNet, BlockTag::Latest.into()); + let tx_hash = TransactionHash(stark_felt!( + "06da92cfbdceac5e5e94a1f40772d6c79d34f011815606742658559ec77b6955" + )); + + let tx = rpc_state.get_transaction(&tx_hash); + match tx { + SNTransaction::Invoke(tx) => { + InvokeFunction::from_invoke_transaction(tx, StarknetChainId::MainNet) + } + _ => unreachable!(), + } + .unwrap(); + } + #[test] fn test_get_block_info() { let rpc_state = RpcState::new(RpcChain::MainNet, BlockTag::Latest.into()); @@ -747,7 +701,7 @@ mod tests { assert_eq!(tx_trace.validate_invocation.internal_calls.len(), 1); assert_eq!( - tx_trace.function_invocation.calldata, + tx_trace.function_invocation.as_ref().unwrap().calldata, Some(vec![ stark_felt!("1"), stark_felt!("690c876e61beda61e994543af68038edac4e1cb1990ab06e52a2d27e56a1232"), @@ -767,11 +721,15 @@ mod tests { ]) ); assert_eq!( - tx_trace.function_invocation.retdata, + tx_trace.function_invocation.as_ref().unwrap().retdata, Some(vec![0u128.into()]) ); assert_eq!( - tx_trace.function_invocation.execution_resources, + tx_trace + .function_invocation + .as_ref() + .unwrap() + .execution_resources, VmExecutionResources { n_steps: 2808, n_memory_holes: 136, @@ -781,15 +739,32 @@ mod tests { ]), } ); - assert_eq!(tx_trace.function_invocation.internal_calls.len(), 1); assert_eq!( - tx_trace.function_invocation.internal_calls[0] + tx_trace + .function_invocation + .as_ref() + .unwrap() .internal_calls .len(), 1 ); assert_eq!( - tx_trace.function_invocation.internal_calls[0].internal_calls[0] + tx_trace + .function_invocation + .as_ref() + .unwrap() + .internal_calls[0] + .internal_calls + .len(), + 1 + ); + assert_eq!( + tx_trace + .function_invocation + .as_ref() + .unwrap() + .internal_calls[0] + .internal_calls[0] .internal_calls .len(), 7 @@ -882,7 +857,35 @@ mod blockifier_transaction_tests { &mut self, class_hash: &ClassHash, ) -> StateResult { - Ok(self.0.get_contract_class(class_hash)) + Ok(match self.0.get_contract_class(class_hash) { + SNContractClass::Legacy(compressed_legacy_cc) => { + let as_str = utils::decode_reader(compressed_legacy_cc.program).unwrap(); + let program = Program::from_bytes(as_str.as_bytes(), None).unwrap(); + let entry_points_by_type = utils::map_entry_points_by_type_legacy( + compressed_legacy_cc.entry_points_by_type, + ); + let inner = Arc::new(ContractClassV0Inner { + program, + entry_points_by_type, + }); + BlockifierContractClass::V0(ContractClassV0(inner)) + } + SNContractClass::Sierra(flattened_sierra_cc) => { + let middle_sierra: utils::MiddleSierraContractClass = { + let v = serde_json::to_value(flattened_sierra_cc).unwrap(); + serde_json::from_value(v).unwrap() + }; + let sierra_cc = SierraContractClass { + sierra_program: middle_sierra.sierra_program, + contract_class_version: middle_sierra.contract_class_version, + entry_points_by_type: middle_sierra.entry_points_by_type, + sierra_program_debug_info: None, + abi: None, + }; + let casm_cc = CasmContractClass::from_contract_class(sierra_cc, false).unwrap(); + BlockifierContractClass::V1(casm_cc.try_into().unwrap()) + } + }) } /// Returns the compiled class hash of the given class hash. @@ -969,7 +972,7 @@ mod blockifier_transaction_tests { // Map starknet_api transaction to blockifier's let blockifier_tx = match sn_api_tx { - Transaction::Invoke(tx) => { + SNTransaction::Invoke(tx) => { let invoke = InvokeTransaction { tx, tx_hash }; AccountTransaction::Invoke(invoke) } @@ -1020,13 +1023,247 @@ mod blockifier_transaction_tests { .. } = execute_call_info.unwrap(); - assert_eq!(vm_resources, trace.function_invocation.execution_resources); + assert_eq!(actual_fee.0, receipt.actual_fee); + assert_eq!( + vm_resources, + trace + .function_invocation + .as_ref() + .unwrap() + .execution_resources + ); assert_eq!( inner_calls.len(), - trace.function_invocation.internal_calls.len() + trace + .function_invocation + .as_ref() + .unwrap() + .internal_calls + .len() + ); + } + } +} + +mod starknet_in_rust_transaction_tests { + use cairo_vm::felt::{felt_str, Felt252}; + use starknet_api::{core::PatriciaKey, stark_felt, transaction::TransactionHash}; + use starknet_in_rust::{ + core::errors::state_errors::StateError, + definitions::{ + block_context::{BlockContext, StarknetChainId, StarknetOsConfig}, + constants::{ + DEFAULT_CAIRO_RESOURCE_FEE_WEIGHTS, + DEFAULT_CONTRACT_STORAGE_COMMITMENT_TREE_HEIGHT, + DEFAULT_GLOBAL_STATE_COMMITMENT_TREE_HEIGHT, DEFAULT_INVOKE_TX_MAX_N_STEPS, + DEFAULT_VALIDATE_MAX_N_STEPS, + }, + }, + execution::TransactionExecutionInfo, + services::api::contract_classes::compiled_class::CompiledClass, + state::{ + cached_state::{CachedState, ContractClassCache}, + state_api::StateReader, + state_cache::StorageEntry, + BlockInfo, + }, + transaction::{InvokeFunction, Transaction}, + utils::{Address, ClassHash}, + }; + + use super::*; + + pub struct RpcStateReader(RpcState); + + impl StateReader for RpcStateReader { + fn get_contract_class(&self, class_hash: &ClassHash) -> Result { + let hash = ClassHash(StarkHash::new(*class_hash).unwrap()); + Ok(CompiledClass::from(self.0.get_contract_class(&hash))) + } + + fn get_class_hash_at(&self, contract_address: &Address) -> Result { + let address = ContractAddress( + PatriciaKey::try_from( + StarkHash::new(contract_address.clone().0.to_be_bytes()).unwrap(), + ) + .unwrap(), ); + let mut bytes = [0u8; 32]; + bytes.copy_from_slice(self.0.get_class_hash_at(&address).0.bytes()); + Ok(bytes) + } - assert_eq!(actual_fee.0, receipt.actual_fee); + fn get_nonce_at(&self, contract_address: &Address) -> Result { + let address = ContractAddress( + PatriciaKey::try_from( + StarkHash::new(contract_address.clone().0.to_be_bytes()).unwrap(), + ) + .unwrap(), + ); + let nonce = self.0.get_nonce_at(&address); + Ok(Felt252::from_bytes_be(nonce.bytes())) + } + fn get_storage_at(&self, storage_entry: &StorageEntry) -> Result { + let (contract_address, key) = storage_entry; + let address = ContractAddress( + PatriciaKey::try_from( + StarkHash::new(contract_address.clone().0.to_be_bytes()).unwrap(), + ) + .unwrap(), + ); + let key = StorageKey(PatriciaKey::try_from(StarkHash::new(*key).unwrap()).unwrap()); + let value = self.0.get_storage_at(&address, &key); + Ok(Felt252::from_bytes_be(value.bytes())) + } + fn get_compiled_class_hash(&self, class_hash: &ClassHash) -> Result<[u8; 32], StateError> { + let address = ContractAddress( + PatriciaKey::try_from(StarkHash::new(*class_hash).unwrap()).unwrap(), + ); + let mut bytes = [0u8; 32]; + bytes.copy_from_slice(self.0.get_class_hash_at(&address).0.bytes()); + Ok(bytes) + } + } + + #[allow(unused)] + pub fn execute_tx( + tx_hash: &str, + network: RpcChain, + block_number: BlockNumber, + ) -> ( + TransactionExecutionInfo, + TransactionTrace, + RpcTransactionReceipt, + ) { + let fee_token_address = Address(felt_str!( + "049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + 16 + )); + + let tx_hash = tx_hash.strip_prefix("0x").unwrap(); + + // Instantiate the RPC StateReader and the CachedState + let rpc_reader = RpcStateReader(RpcState::new(network, block_number.into())); + let gas_price = rpc_reader.0.get_gas_price(block_number.0).unwrap(); + + // Get values for block context before giving ownership of the reader + let chain_id = match rpc_reader.0.chain { + RpcChain::MainNet => StarknetChainId::MainNet, + RpcChain::TestNet => StarknetChainId::TestNet, + RpcChain::TestNet2 => StarknetChainId::TestNet2, + }; + let starknet_os_config = + StarknetOsConfig::new(chain_id.to_felt(), fee_token_address, gas_price); + let block_info = { + let RpcBlockInfo { + block_number, + block_timestamp, + sequencer_address, + .. + } = rpc_reader.0.get_block_info(); + + let block_number = block_number.0; + let block_timestamp = block_timestamp.0; + let sequencer_address = + Address(Felt252::from_bytes_be(sequencer_address.0.key().bytes())); + + BlockInfo { + block_number, + block_timestamp, + gas_price, + sequencer_address, + } + }; + + // Get transaction before giving ownership of the reader + let tx_hash = TransactionHash(stark_felt!(tx_hash)); + let tx = match rpc_reader.0.get_transaction(&tx_hash) { + SNTransaction::Invoke(tx) => Transaction::InvokeFunction( + InvokeFunction::from_invoke_transaction(tx, chain_id).unwrap(), + ), + _ => unimplemented!(), + }; + + let trace = rpc_reader.0.get_transaction_trace(&tx_hash); + let receipt = rpc_reader.0.get_transaction_receipt(&tx_hash); + + let class_cache = ContractClassCache::default(); + let mut state = CachedState::new(Arc::new(rpc_reader), class_cache); + + let block_context = BlockContext::new( + starknet_os_config, + DEFAULT_CONTRACT_STORAGE_COMMITMENT_TREE_HEIGHT, + DEFAULT_GLOBAL_STATE_COMMITMENT_TREE_HEIGHT, + DEFAULT_CAIRO_RESOURCE_FEE_WEIGHTS.clone(), + DEFAULT_INVOKE_TX_MAX_N_STEPS, + DEFAULT_VALIDATE_MAX_N_STEPS, + block_info, + Default::default(), + true, + ); + + ( + tx.execute(&mut state, &block_context, u128::MAX).unwrap(), + trace, + receipt, + ) + } + + #[cfg(test)] + mod test { + use starknet_in_rust::execution::CallInfo; + + use super::*; + + #[test] + fn test_get_gas_price() { + let block = BlockValue::Number(BlockNumber(169928)); + let rpc_state = RpcState::new(RpcChain::MainNet, block); + + let price = rpc_state.get_gas_price(169928).unwrap(); + assert_eq!(price, 22804578690); + } + + #[test] + #[ignore = "working on fixes"] + fn test_recent_tx() { + let (tx_info, trace, receipt) = execute_tx( + "0x05d200ef175ba15d676a68b36f7a7b72c17c17604eda4c1efc2ed5e4973e2c91", + RpcChain::MainNet, + BlockNumber(169928), + ); + + let TransactionExecutionInfo { + call_info, + actual_fee, + .. + } = tx_info; + + let CallInfo { + execution_resources, + internal_calls, + .. + } = call_info.unwrap(); + + assert_eq!( + execution_resources, + trace + .function_invocation + .as_ref() + .unwrap() + .execution_resources + ); + assert_eq!( + internal_calls.len(), + trace + .function_invocation + .as_ref() + .unwrap() + .internal_calls + .len() + ); + + assert_eq!(actual_fee, receipt.actual_fee); } } } diff --git a/src/transaction/invoke_function.rs b/src/transaction/invoke_function.rs index 1f2cc3e08..f05e3e942 100644 --- a/src/transaction/invoke_function.rs +++ b/src/transaction/invoke_function.rs @@ -124,15 +124,10 @@ impl InvokeFunction { pub fn from_invoke_transaction( tx: starknet_api::transaction::InvokeTransaction, chain_id: StarknetChainId, - version: Felt252, ) -> Result { match tx { - starknet_api::transaction::InvokeTransaction::V0(v0) => { - convert_invoke_v0(v0, chain_id, version) - } - starknet_api::transaction::InvokeTransaction::V1(v1) => { - convert_invoke_v1(v1, chain_id, version) - } + starknet_api::transaction::InvokeTransaction::V0(v0) => convert_invoke_v0(v0, chain_id), + starknet_api::transaction::InvokeTransaction::V1(v1) => convert_invoke_v1(v1, chain_id), } } @@ -423,7 +418,6 @@ pub(crate) fn preprocess_invoke_function_fields( fn convert_invoke_v0( value: starknet_api::transaction::InvokeTransactionV0, chain_id: StarknetChainId, - version: Felt252, ) -> Result { let contract_address = Address(Felt252::from_bytes_be( value.contract_address.0.key().bytes(), @@ -450,7 +444,7 @@ fn convert_invoke_v0( contract_address, entry_point_selector, max_fee, - version, + Felt252::new(0), calldata, signature, chain_id.to_felt(), @@ -461,7 +455,6 @@ fn convert_invoke_v0( fn convert_invoke_v1( value: starknet_api::transaction::InvokeTransactionV1, chain_id: StarknetChainId, - version: Felt252, ) -> Result { let contract_address = Address(Felt252::from_bytes_be(value.sender_address.0.key().bytes())); let max_fee = value.max_fee.0; @@ -486,7 +479,7 @@ fn convert_invoke_v1( contract_address, entry_point_selector, max_fee, - version, + Felt252::new(1), calldata, signature, chain_id.to_felt(), @@ -506,7 +499,7 @@ mod tests { utils::calculate_sn_keccak, }; use cairo_lang_starknet::casm_contract_class::CasmContractClass; - use num_traits::{Num, One}; + use num_traits::Num; use starknet_api::{ core::{ContractAddress, Nonce, PatriciaKey}, hash::{StarkFelt, StarkHash}, @@ -573,9 +566,7 @@ mod tests { ])), }); - let tx_sir = - InvokeFunction::from_invoke_transaction(tx, StarknetChainId::MainNet, Felt252::one()) - .unwrap(); + let tx_sir = InvokeFunction::from_invoke_transaction(tx, StarknetChainId::MainNet).unwrap(); assert_eq!( tx_sir.hash_value.to_str_radix(16), "5b6cf416d56e7c7c519b44e6d06a41657ff6c6a3f2629044fac395e6d200ac4"