diff --git a/avm-transpiler/Cargo.lock b/avm-transpiler/Cargo.lock index 7c04170dd4e6..6378eb3250ff 100644 --- a/avm-transpiler/Cargo.lock +++ b/avm-transpiler/Cargo.lock @@ -4,7 +4,7 @@ version = 4 [[package]] name = "acir" -version = "1.0.0-beta.18" +version = "1.0.0-beta.19" dependencies = [ "acir_field", "base64 0.22.1", @@ -24,11 +24,10 @@ dependencies = [ [[package]] name = "acir_field" -version = "1.0.0-beta.18" +version = "1.0.0-beta.19" dependencies = [ "ark-bn254", "ark-ff", - "ark-std", "cfg-if", "hex", "num-bigint", @@ -37,12 +36,13 @@ dependencies = [ [[package]] name = "acvm" -version = "1.0.0-beta.18" +version = "1.0.0-beta.19" dependencies = [ "acir", "acvm_blackbox_solver", "brillig_vm", - "indexmap 2.13.0", + "indexmap 2.14.0", + "itertools 0.14.0", "rustc-hash", "serde", "thiserror", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "acvm_blackbox_solver" -version = "1.0.0-beta.18" +version = "1.0.0-beta.19" dependencies = [ "acir", "aes", @@ -121,9 +121,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.21" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" dependencies = [ "anstyle", "anstyle-parse", @@ -136,15 +136,15 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" [[package]] name = "anstyle-parse" -version = "0.2.7" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" dependencies = [ "utf8parse", ] @@ -200,7 +200,7 @@ dependencies = [ "educe", "fnv", "hashbrown 0.15.5", - "itertools", + "itertools 0.13.0", "num-bigint", "num-integer", "num-traits", @@ -220,7 +220,7 @@ dependencies = [ "arrayvec", "digest 0.10.7", "educe", - "itertools", + "itertools 0.13.0", "num-bigint", "num-traits", "paste", @@ -234,7 +234,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" dependencies = [ "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -247,7 +247,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -298,7 +298,7 @@ checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -373,12 +373,6 @@ version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" -[[package]] -name = "binary-merge" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597bb81c80a54b6a4381b23faba8d7774b144c94cbd1d6fe3f1329bd776554ab" - [[package]] name = "bitflags" version = "2.11.0" @@ -400,21 +394,21 @@ version = "0.11.0-rc.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d52965399b470437fc7f4d4b51134668dbc96573fea6f1b83318a420e4605745" dependencies = [ - "digest 0.11.1", + "digest 0.11.2", ] [[package]] name = "blake3" -version = "1.8.3" +version = "1.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2468ef7d57b3fb7e16b576e8377cdbde2320c60e1491e961d11da40fc4f02a2d" +checksum = "4d2d5991425dfd0785aed03aedcf0b321d61975c9b5b3689c774a2610ae0b51e" dependencies = [ "arrayref", "arrayvec", "cc", "cfg-if", "constant_time_eq", - "cpufeatures 0.2.17", + "cpufeatures 0.3.0", ] [[package]] @@ -437,7 +431,7 @@ dependencies = [ [[package]] name = "bn254_blackbox_solver" -version = "1.0.0-beta.18" +version = "1.0.0-beta.19" dependencies = [ "acir", "acvm_blackbox_solver", @@ -446,31 +440,35 @@ dependencies = [ "ark-ff", "ark-grumpkin", "hex", + "itertools 0.14.0", ] [[package]] name = "borsh" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f" +checksum = "cfd1e3f8955a5d7de9fab72fc8373fade9fb8a703968cb200ae3dc6cf08e185a" dependencies = [ + "bytes", "cfg_aliases", ] [[package]] name = "brillig" -version = "1.0.0-beta.18" +version = "1.0.0-beta.19" dependencies = [ "acir_field", + "itertools 0.14.0", "serde", ] [[package]] name = "brillig_vm" -version = "1.0.0-beta.18" +version = "1.0.0-beta.19" dependencies = [ "acir", "acvm_blackbox_solver", + "itertools 0.14.0", "num-bigint", "num-traits", "thiserror", @@ -488,6 +486,12 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +[[package]] +name = "bytes" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" + [[package]] name = "cbc" version = "0.1.2" @@ -499,9 +503,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.56" +version = "1.2.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +checksum = "43c5703da9466b66a946814e1adf53ea2c90f10063b86290cc9eb67ce3478a20" dependencies = [ "find-msvc-tools", "shlex", @@ -545,17 +549,17 @@ dependencies = [ [[package]] name = "cmov" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0758edba32d61d1fd9f4d69491b47604b91ee2f7e6b33de7e54ca4ebe55dc3" +checksum = "3f88a43d011fc4a6876cb7344703e297c71dda42494fee094d5f7c76bf13f746" [[package]] name = "codespan" -version = "0.11.1" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3362992a0d9f1dd7c3d0e89e0ab2bb540b7a95fea8cd798090e758fda2899b5e" +checksum = "583f52b0658b321b25fd6b209b6c76cf058f433071297de64e5980c3d9aad937" dependencies = [ - "codespan-reporting", + "codespan-reporting 0.13.1", "serde", ] @@ -564,17 +568,27 @@ name = "codespan-reporting" version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +dependencies = [ + "termcolor", + "unicode-width 0.1.14", +] + +[[package]] +name = "codespan-reporting" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af491d569909a7e4dee0ad7db7f5341fef5c614d5b8ec8cf765732aba3cff681" dependencies = [ "serde", "termcolor", - "unicode-width", + "unicode-width 0.2.2", ] [[package]] name = "colorchoice" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" +checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "const-oid" @@ -654,9 +668,9 @@ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crypto-bigint" -version = "0.7.0-rc.28" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96dacf199529fb801ae62a9aafdc01b189e9504c0d1ee1512a4c16bcd8666a93" +checksum = "42a0d26b245348befa0c121944541476763dcc46ede886c88f9d12e1697d27c3" dependencies = [ "cpubits", "ctutils", @@ -691,9 +705,9 @@ dependencies = [ [[package]] name = "ctutils" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1005a6d4446f5120ef475ad3d2af2b30c49c2c9c6904258e3bb30219bebed5e4" +checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" dependencies = [ "cmov", "subtle", @@ -701,9 +715,9 @@ dependencies = [ [[package]] name = "darling" -version = "0.21.3" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" +checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" dependencies = [ "darling_core", "darling_macro", @@ -711,27 +725,26 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.21.3" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" +checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" dependencies = [ - "fnv", "ident_case", "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn", ] [[package]] name = "darling_macro" -version = "0.21.3" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" +checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -766,9 +779,9 @@ dependencies = [ [[package]] name = "digest" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "285743a676ccb6b3e116bc14cc69319b957867930ae9c4822f8e0f54509d7243" +checksum = "4850db49bf08e663084f7fb5c87d202ef91a3907271aff24a94eb97ff039153c" dependencies = [ "block-buffer", "const-oid", @@ -789,7 +802,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91bbdd377139884fafcad8dc43a760a3e1e681aa26db910257fa6535b70e1829" dependencies = [ "der", - "digest 0.11.1", + "digest 0.11.2", "elliptic-curve", "rfc6979", "signature", @@ -806,7 +819,7 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -817,14 +830,14 @@ checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "elliptic-curve" -version = "0.14.0-rc.28" +version = "0.14.0-rc.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bde7860544606d222fd6bd6d9f9a0773321bf78072a637e1d560a058c0031978" +checksum = "7d7a0bfd012613a7bcfe02cbfccf2b846e9ef9e1bccb641c48d461253cfb034d" dependencies = [ "base16ct", "crypto-bigint", "crypto-common 0.2.1", - "digest 0.11.1", + "digest 0.11.2", "hybrid-array", "once_cell", "pem-rfc7468", @@ -854,14 +867,14 @@ checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] name = "env_filter" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a1c3cc8e57274ec99de65301228b537f1e4eedc1b8e0f9411c6caac8ae7308f" +checksum = "32e90c2accc4b07a8456ea0debdc2e7587bdd890680d71173a15d4ae604f6eef" dependencies = [ "log", "regex", @@ -869,9 +882,9 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.9" +version = "0.11.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2daee4ea451f429a58296525ddf28b45a3b64f1acf6587e2067437bb11e218d" +checksum = "0621c04f2196ac3f488dd583365b9c09be011a4ab8b9f37248ffcc8f6198b56a" dependencies = [ "anstream", "anstyle", @@ -910,10 +923,11 @@ dependencies = [ [[package]] name = "fm" -version = "1.0.0-beta.18" +version = "1.0.0-beta.19" dependencies = [ - "codespan-reporting", + "codespan-reporting 0.11.1", "iter-extended", + "itertools 0.14.0", "serde", ] @@ -980,15 +994,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.16.1" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" - -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +checksum = "4f467dd6dccf739c208452f8014c75c18bb8301b050ad1cfb27153803edb0f51" [[package]] name = "heck" @@ -1004,18 +1012,18 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "hmac" -version = "0.13.0-rc.5" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef451d73f36d8a3f93ad32c332ea01146c9650e1ec821a9b0e46c01277d544f8" +checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f" dependencies = [ - "digest 0.11.1", + "digest 0.11.2", ] [[package]] name = "hybrid-array" -version = "0.4.7" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1b229d73f5803b562cc26e4da0396c8610a4ee209f4fac8fa4f8d709166dc45" +checksum = "3944cf8cf766b40e2a1a333ee5e9b563f854d5fa49d6a8ca2764e97c6eddb214" dependencies = [ "subtle", "typenum", @@ -1086,12 +1094,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.13.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown 0.17.0", "serde", "serde_core", ] @@ -1106,15 +1114,6 @@ dependencies = [ "generic-array", ] -[[package]] -name = "inplace-vec-builder" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf64c2edc8226891a71f127587a2861b132d2b942310843814d5001d99a1d307" -dependencies = [ - "smallvec", -] - [[package]] name = "is_terminal_polyfill" version = "1.70.2" @@ -1123,7 +1122,7 @@ checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" [[package]] name = "iter-extended" -version = "1.0.0-beta.18" +version = "1.0.0-beta.19" [[package]] name = "itertools" @@ -1134,11 +1133,20 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + [[package]] name = "itoa" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "jiff" @@ -1161,14 +1169,14 @@ checksum = "2a8c8b344124222efd714b73bb41f8b5120b27a7cc1c75593a6ff768d9d05aa4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] name = "js-sys" -version = "0.3.91" +version = "0.3.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c" +checksum = "2964e92d1d9dc3364cae4d718d93f227e3abb088e747d92e0395bfdedf1c12ca" dependencies = [ "once_cell", "wasm-bindgen", @@ -1176,9 +1184,9 @@ dependencies = [ [[package]] name = "k256" -version = "0.14.0-rc.7" +version = "0.14.0-rc.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83da23da11f0b5db6f23d9280a84b3a33a746aa43ebb9270d6b445991da9cee3" +checksum = "f7d2c6c227649d5ec80eaae541f1736232641a0bcdb3062a52b34edb42054158" dependencies = [ "cpubits", "ecdsa", @@ -1189,19 +1197,14 @@ dependencies = [ [[package]] name = "keccak" -version = "0.2.0-rc.2" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "882b69cb15b1f78b51342322a97ccd16f5123d1dc8a3da981a95244f488e8692" +checksum = "9e24a010dd405bd7ed803e5253182815b41bf2e6a80cc3bfc066658e03a198aa" dependencies = [ + "cfg-if", "cpufeatures 0.3.0", ] -[[package]] -name = "lazy_static" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" - [[package]] name = "leb128fmt" version = "0.1.0" @@ -1210,9 +1213,9 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" [[package]] name = "libc" -version = "0.2.182" +version = "0.2.184" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" +checksum = "48f5d2a454e16a5ea0f4ced81bd44e4cfc7bd3a507b61887c99fd3538b28e4af" [[package]] name = "log" @@ -1238,10 +1241,11 @@ dependencies = [ [[package]] name = "noirc_abi" -version = "1.0.0-beta.18" +version = "1.0.0-beta.19" dependencies = [ "acvm", "iter-extended", + "itertools 0.14.0", "noirc_printable_type", "num-bigint", "num-traits", @@ -1253,16 +1257,16 @@ dependencies = [ [[package]] name = "noirc_arena" -version = "1.0.0-beta.18" +version = "1.0.0-beta.19" [[package]] name = "noirc_artifacts" -version = "1.0.0-beta.18" +version = "1.0.0-beta.19" dependencies = [ "acir", "acvm", "base64 0.22.1", - "codespan-reporting", + "codespan-reporting 0.11.1", "flate2", "fm", "noirc_abi", @@ -1276,18 +1280,19 @@ dependencies = [ [[package]] name = "noirc_errors" -version = "1.0.0-beta.18" +version = "1.0.0-beta.19" dependencies = [ - "codespan-reporting", + "codespan-reporting 0.11.1", "fm", "noirc_span", + "rangemap", "rustc-hash", "serde", ] [[package]] name = "noirc_evaluator" -version = "1.0.0-beta.18" +version = "1.0.0-beta.19" dependencies = [ "acvm", "bn254_blackbox_solver", @@ -1295,8 +1300,9 @@ dependencies = [ "chrono", "fm", "im", - "indexmap 2.13.0", + "indexmap 2.14.0", "iter-extended", + "itertools 0.14.0", "noirc_artifacts", "noirc_errors", "noirc_frontend", @@ -1314,12 +1320,11 @@ dependencies = [ "smallvec", "thiserror", "tracing", - "vec-collections", ] [[package]] name = "noirc_frontend" -version = "1.0.0-beta.18" +version = "1.0.0-beta.19" dependencies = [ "acvm", "bn254_blackbox_solver", @@ -1327,6 +1332,7 @@ dependencies = [ "fm", "im", "iter-extended", + "itertools 0.14.0", "noirc_arena", "noirc_artifacts", "noirc_errors", @@ -1348,17 +1354,18 @@ dependencies = [ [[package]] name = "noirc_printable_type" -version = "1.0.0-beta.18" +version = "1.0.0-beta.19" dependencies = [ "acvm", "iter-extended", + "itertools 0.14.0", "serde", "serde_json", ] [[package]] name = "noirc_span" -version = "1.0.0-beta.18" +version = "1.0.0-beta.19" dependencies = [ "codespan", "serde", @@ -1376,9 +1383,9 @@ dependencies = [ [[package]] name = "num-conv" -version = "0.1.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" +checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967" [[package]] name = "num-integer" @@ -1400,9 +1407,9 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" dependencies = [ "num_enum_derive", "rustversion", @@ -1410,21 +1417,21 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "once_cell_polyfill" @@ -1434,9 +1441,9 @@ checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] name = "p256" -version = "0.14.0-rc.7" +version = "0.14.0-rc.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "018bfbb86e05fd70a83e985921241035ee09fcd369c4a2c3680b389a01d2ad28" +checksum = "44f0a10fe314869359cb2901342b045f4e5a962ef9febc006f03d2a8c848fe4c" dependencies = [ "ecdsa", "elliptic-curve", @@ -1468,7 +1475,7 @@ checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" dependencies = [ "fixedbitset", "hashbrown 0.15.5", - "indexmap 2.13.0", + "indexmap 2.14.0", "serde", ] @@ -1496,9 +1503,9 @@ checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" [[package]] name = "portable-atomic-util" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a9db96d7fa8782dd8c15ce32ffe8680bbd1e978a43bf51a34d39483540495f5" +checksum = "091397be61a01d4be58e7841595bd4bfedb15f1cd54977d79b8271e94ed799a3" dependencies = [ "portable-atomic", ] @@ -1525,14 +1532,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.117", + "syn", ] [[package]] name = "primefield" -version = "0.14.0-rc.7" +version = "0.14.0-rc.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93401c13cc7ff24684571cfca9d3cf9ebabfaf3d4b7b9963ade41ec54da196b5" +checksum = "c6543f5eec854fbf74ba5ef651fbdc9408919b47c3e1526623687135c16d12e9" dependencies = [ "crypto-bigint", "crypto-common 0.2.1", @@ -1544,20 +1551,20 @@ dependencies = [ [[package]] name = "primeorder" -version = "0.14.0-rc.7" +version = "0.14.0-rc.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c5c8a39bcd764bfedf456e8d55e115fe86dda3e0f555371849f2a41cbc9706" +checksum = "569d9ad6ef822bb0322c7e7d84e5e286244050bd5246cac4c013535ae91c2c90" dependencies = [ "elliptic-curve", ] [[package]] name = "proc-macro-crate" -version = "3.4.0" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" dependencies = [ - "toml_edit 0.23.10+spec-1.0.0", + "toml_edit 0.25.11+spec-1.1.0", ] [[package]] @@ -1668,7 +1675,7 @@ checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -1731,9 +1738,9 @@ dependencies = [ [[package]] name = "rustc-hash" -version = "2.1.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" +checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" [[package]] name = "rustc-stable-hash" @@ -1743,9 +1750,9 @@ checksum = "781442f29170c5c93b7185ad559492601acdc71d5bb0706f5868094f45cfcd08" [[package]] name = "rustcrypto-ff" -version = "0.14.0-rc.0" +version = "0.14.0-rc.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5db129183b2c139d7d87d08be57cba626c715789db17aec65c8866bfd767d1f" +checksum = "fd2a8adb347447693cd2ba0d218c4b66c62da9b0a5672b17b981e4291ec65ff6" dependencies = [ "rand_core 0.10.0", "subtle", @@ -1753,9 +1760,9 @@ dependencies = [ [[package]] name = "rustcrypto-group" -version = "0.14.0-rc.0" +version = "0.14.0-rc.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c4b1463f274a3ff6fb2f44da43e576cb9424367bd96f185ead87b52fe00523" +checksum = "369f9b61aa45933c062c9f6b5c3c50ab710687eca83dd3802653b140b43f85ed" dependencies = [ "rand_core 0.10.0", "rustcrypto-ff", @@ -1794,9 +1801,9 @@ dependencies = [ [[package]] name = "sec1" -version = "0.8.0-rc.13" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2400ed44a13193820aa528a19f376c3843141a8ce96ff34b11104cc79763f2" +checksum = "d56d437c2f19203ce5f7122e507831de96f3d2d4d3be5af44a0b0a09d8a80e4d" dependencies = [ "base16ct", "ctutils", @@ -1808,9 +1815,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" [[package]] name = "serde" @@ -1848,7 +1855,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -1875,15 +1882,15 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.17.0" +version = "3.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "381b283ce7bc6b476d903296fb59d0d36633652b633b27f64db4fb46dcbfc3b9" +checksum = "dd5414fad8e6907dbdd5bc441a50ae8d6e26151a03b1de04d89a5576de61d01f" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.13.0", + "indexmap 2.14.0", "schemars 0.9.0", "schemars 1.2.1", "serde_core", @@ -1894,25 +1901,25 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.17.0" +version = "3.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6d4e30573c8cb306ed6ab1dca8423eec9a463ea0e155f45399455e0368b27e0" +checksum = "d3db8978e608f1fe7357e211969fd9abdcae80bac1ba7a3369bb7eb6b404eb65" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] name = "sha2" -version = "0.11.0-rc.5" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c5f3b1e2dc8aad28310d8410bd4d7e180eca65fca176c52ab00d364475d0024" +checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", - "digest 0.11.1", + "cpufeatures 0.3.0", + "digest 0.11.2", ] [[package]] @@ -1927,15 +1934,15 @@ version = "3.0.0-rc.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f1880df446116126965eeec169136b2e0251dba37c6223bcc819569550edea3" dependencies = [ - "digest 0.11.1", + "digest 0.11.2", "rand_core 0.10.0", ] [[package]] name = "simd-adler32" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" +checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" [[package]] name = "sized-chunks" @@ -1967,25 +1974,19 @@ dependencies = [ [[package]] name = "smol_str" -version = "0.3.2" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9676b89cd56310a87b93dec47b11af744f34d5fc9f367b829474eec0a891350d" +checksum = "4aaa7368fcf4852a4c2dd92df0cace6a71f2091ca0a23391ce7f3a31833f1523" dependencies = [ "borsh", - "serde", + "serde_core", ] -[[package]] -name = "sorted-iter" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bceb57dc07c92cdae60f5b27b3fa92ecaaa42fe36c55e22dbfb0b44893e0b1f7" - [[package]] name = "spki" -version = "0.8.0-rc.4" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8baeff88f34ed0691978ec34440140e1572b68c7dd4a495fd14a3dc1944daa80" +checksum = "1d9efca8738c78ee9484207732f728b1ef517bbb1833d6fc0879ca898a522f6f" dependencies = [ "base64ct", "der", @@ -1999,21 +2000,20 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "strum" -version = "0.24.1" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" [[package]] name = "strum_macros" -version = "0.24.3" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +checksum = "ab85eea0270ee17587ed4156089e10b9e6880ee688791d45a905f5b1ca36f664" dependencies = [ - "heck 0.4.1", + "heck", "proc-macro2", "quote", - "rustversion", - "syn 1.0.109", + "syn", ] [[package]] @@ -2022,17 +2022,6 @@ version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - [[package]] name = "syn" version = "2.0.117" @@ -2055,29 +2044,29 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.69" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.69" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] name = "time" -version = "0.3.45" +version = "0.3.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9e442fc33d7fdb45aa9bfeb312c095964abdf596f7567261062b2a7107aaabd" +checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" dependencies = [ "deranged", "itoa", @@ -2090,15 +2079,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b36ee98fd31ec7426d599183e8fe26932a8dc1fb76ddb6214d05493377d34ca" +checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" [[package]] name = "time-macros" -version = "0.2.25" +version = "0.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71e552d1249bf61ac2a52db88179fd0673def1e1ad8243a00d9ec9ed71fee3dd" +checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" dependencies = [ "num-conv", "time-core", @@ -2106,14 +2095,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.7.8" +version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ "serde", "serde_spanned", "toml_datetime 0.6.11", - "toml_edit 0.19.15", + "toml_edit 0.22.27", ] [[package]] @@ -2127,47 +2116,54 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.5+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] [[package]] name = "toml_edit" -version = "0.19.15" +version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.13.0", + "indexmap 2.14.0", "serde", "serde_spanned", "toml_datetime 0.6.11", - "winnow 0.5.40", + "toml_write", + "winnow 0.7.15", ] [[package]] name = "toml_edit" -version = "0.23.10+spec-1.0.0" +version = "0.25.11+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" +checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b" dependencies = [ - "indexmap 2.13.0", - "toml_datetime 0.7.5+spec-1.1.0", + "indexmap 2.14.0", + "toml_datetime 1.1.1+spec-1.1.0", "toml_parser", - "winnow 0.7.14", + "winnow 1.0.1", ] [[package]] name = "toml_parser" -version = "1.0.9+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ - "winnow 0.7.14", + "winnow 1.0.1", ] +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + [[package]] name = "tracing" version = "0.1.44" @@ -2187,7 +2183,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -2217,6 +2213,12 @@ version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" +[[package]] +name = "unicode-width" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" + [[package]] name = "unicode-xid" version = "0.2.6" @@ -2229,21 +2231,6 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" -[[package]] -name = "vec-collections" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c9965c8f2ffed1dbcd16cafe18a009642f540fa22661c6cfd6309ddb02e4982" -dependencies = [ - "binary-merge", - "inplace-vec-builder", - "lazy_static", - "num-traits", - "serde", - "smallvec", - "sorted-iter", -] - [[package]] name = "version_check" version = "0.9.5" @@ -2252,11 +2239,11 @@ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "wasip2" -version = "1.0.1+wasi-0.2.4" +version = "1.0.2+wasi-0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" dependencies = [ - "wit-bindgen 0.46.0", + "wit-bindgen", ] [[package]] @@ -2265,14 +2252,14 @@ version = "0.4.0+wasi-0.3.0-rc-2026-01-06" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" dependencies = [ - "wit-bindgen 0.51.0", + "wit-bindgen", ] [[package]] name = "wasm-bindgen" -version = "0.2.114" +version = "0.2.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e" +checksum = "0bf938a0bacb0469e83c1e148908bd7d5a6010354cf4fb73279b7447422e3a89" dependencies = [ "cfg-if", "once_cell", @@ -2283,9 +2270,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.114" +version = "0.2.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6" +checksum = "eeff24f84126c0ec2db7a449f0c2ec963c6a49efe0698c4242929da037ca28ed" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2293,22 +2280,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.114" +version = "0.2.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3" +checksum = "9d08065faf983b2b80a79fd87d8254c409281cf7de75fc4b773019824196c904" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.117", + "syn", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.114" +version = "0.2.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16" +checksum = "5fd04d9e306f1907bd13c6361b5c6bfc7b3b3c095ed3f8a9246390f8dbdee129" dependencies = [ "unicode-ident", ] @@ -2330,7 +2317,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" dependencies = [ "anyhow", - "indexmap 2.13.0", + "indexmap 2.14.0", "wasm-encoder", "wasmparser", ] @@ -2343,7 +2330,7 @@ checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" dependencies = [ "bitflags", "hashbrown 0.15.5", - "indexmap 2.13.0", + "indexmap 2.14.0", "semver", ] @@ -2377,7 +2364,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -2388,7 +2375,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -2426,28 +2413,22 @@ dependencies = [ [[package]] name = "winnow" -version = "0.5.40" +version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" dependencies = [ "memchr", ] [[package]] name = "winnow" -version = "0.7.14" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "09dac053f1cd375980747450bfc7250c264eaae0583872e845c0c7cd578872b5" dependencies = [ "memchr", ] -[[package]] -name = "wit-bindgen" -version = "0.46.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" - [[package]] name = "wit-bindgen" version = "0.51.0" @@ -2464,7 +2445,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" dependencies = [ "anyhow", - "heck 0.5.0", + "heck", "wit-parser", ] @@ -2475,10 +2456,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" dependencies = [ "anyhow", - "heck 0.5.0", - "indexmap 2.13.0", + "heck", + "indexmap 2.14.0", "prettyplease", - "syn 2.0.117", + "syn", "wasm-metadata", "wit-bindgen-core", "wit-component", @@ -2494,7 +2475,7 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn 2.0.117", + "syn", "wit-bindgen-core", "wit-bindgen-rust", ] @@ -2507,7 +2488,7 @@ checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" dependencies = [ "anyhow", "bitflags", - "indexmap 2.13.0", + "indexmap 2.14.0", "log", "serde", "serde_derive", @@ -2526,7 +2507,7 @@ checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" dependencies = [ "anyhow", "id-arena", - "indexmap 2.13.0", + "indexmap 2.14.0", "log", "semver", "serde", @@ -2538,22 +2519,22 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.40" +version = "0.8.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a789c6e490b576db9f7e6b6d661bcc9799f7c0ac8352f56ea20193b2681532e5" +checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.40" +version = "0.8.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f65c489a7071a749c849713807783f70672b28094011623e200cb86dcb835953" +checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -2573,7 +2554,7 @@ checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] diff --git a/barretenberg/acir_tests/bootstrap.sh b/barretenberg/acir_tests/bootstrap.sh index 2b7c1268705c..d0d725aafcd8 100755 --- a/barretenberg/acir_tests/bootstrap.sh +++ b/barretenberg/acir_tests/bootstrap.sh @@ -108,9 +108,6 @@ function build { rm -rf acir_tests/{diamond_deps_0,workspace,workspace_default_member,regression_7323} # These use folding, which is not currently supported. rm -rf acir_tests/{fold_call_witness_condition,fold_after_inlined_calls,fold_complex_outputs,fold_basic_nested_call,fold_numeric_generic_poseidon,fold_fibonacci,fold_basic,fold_2_to_17,fold_distinct_return} - # These are breaking with: - # Failed to solve program: 'Failed to solve blackbox function: embedded_curve_add, reason: Infinite input: embedded_curve_add(infinity, infinity)' - rm -rf acir_tests/{regression_5045,regression_7744} # The following test fails because it uses CallData/ReturnData with UltraBuilder, which is not supported rm -rf acir_tests/{regression_7612,regression_7143,databus_composite_calldata,databus_two_calldata_simple,databus_two_calldata,databus} # Mark tests that are expected to fail with a failing_ prefix. diff --git a/barretenberg/cpp/pil/vm2/constants_gen.pil b/barretenberg/cpp/pil/vm2/constants_gen.pil index 2029daa6bb0a..235af2d2fa64 100644 --- a/barretenberg/cpp/pil/vm2/constants_gen.pil +++ b/barretenberg/cpp/pil/vm2/constants_gen.pil @@ -165,9 +165,9 @@ namespace constants; pol UPDATES_DELAYED_PUBLIC_MUTABLE_METADATA_BIT_SIZE = 144; pol GRUMPKIN_ONE_X = 1; pol GRUMPKIN_ONE_Y = 17631683881184975370165255887551781615748388533673675138860; - pol DOM_SEP__NOTE_HASH_NONCE = 1721808740; - pol DOM_SEP__UNIQUE_NOTE_HASH = 226850429; pol DOM_SEP__SILOED_NOTE_HASH = 3361878420; + pol DOM_SEP__UNIQUE_NOTE_HASH = 226850429; + pol DOM_SEP__NOTE_HASH_NONCE = 1721808740; pol DOM_SEP__SILOED_NULLIFIER = 57496191; pol DOM_SEP__PUBLIC_LEAF_SLOT = 1247650290; pol DOM_SEP__PUBLIC_STORAGE_MAP_SLOT = 4015149901; diff --git a/barretenberg/cpp/src/barretenberg/vm2/common/aztec_constants.hpp b/barretenberg/cpp/src/barretenberg/vm2/common/aztec_constants.hpp index 1939294f3582..76a8978f2ddd 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/common/aztec_constants.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/common/aztec_constants.hpp @@ -257,9 +257,9 @@ #define UPDATES_DELAYED_PUBLIC_MUTABLE_VALUES_LEN 3 #define UPDATES_DELAYED_PUBLIC_MUTABLE_METADATA_BIT_SIZE 144 #define DEFAULT_MAX_DEBUG_LOG_MEMORY_READS 125000 -#define DOM_SEP__NOTE_HASH_NONCE 1721808740UL -#define DOM_SEP__UNIQUE_NOTE_HASH 226850429UL #define DOM_SEP__SILOED_NOTE_HASH 3361878420UL +#define DOM_SEP__UNIQUE_NOTE_HASH 226850429UL +#define DOM_SEP__NOTE_HASH_NONCE 1721808740UL #define DOM_SEP__SILOED_NULLIFIER 57496191UL #define DOM_SEP__PUBLIC_LEAF_SLOT 1247650290UL #define DOM_SEP__PUBLIC_STORAGE_MAP_SLOT 4015149901UL diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/note_hash_tree_check_impl.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/note_hash_tree_check_impl.hpp index e2ce50a972ab..ef2f9c8f39f2 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/note_hash_tree_check_impl.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/note_hash_tree_check_impl.hpp @@ -18,9 +18,9 @@ void note_hash_tree_checkImpl::accumulate(ContainerOverSubrelations& evals, const auto constants_NOTE_HASH_TREE_HEIGHT = FF(42); const auto constants_AVM_PUBLIC_INPUTS_PREVIOUS_NON_REVERTIBLE_ACCUMULATED_DATA_NULLIFIERS_ROW_IDX = FF(169); const auto constants_AVM_PUBLIC_INPUTS_AVM_ACCUMULATED_DATA_NOTE_HASHES_ROW_IDX = FF(386); - const auto constants_DOM_SEP__NOTE_HASH_NONCE = FF(1721808740); - const auto constants_DOM_SEP__UNIQUE_NOTE_HASH = FF(226850429); const auto constants_DOM_SEP__SILOED_NOTE_HASH = FF(3361878420UL); + const auto constants_DOM_SEP__UNIQUE_NOTE_HASH = FF(226850429); + const auto constants_DOM_SEP__NOTE_HASH_NONCE = FF(1721808740); const auto note_hash_tree_check_READ = (FF(1) - in.get(C::note_hash_tree_check_write)); const auto note_hash_tree_check_PREV_LEAF_VALUE_UNIQUE_NOTE_HASH_DIFF = (in.get(C::note_hash_tree_check_prev_leaf_value) - in.get(C::note_hash_tree_check_unique_note_hash)); diff --git a/docs/examples/contracts/nft/src/main.nr b/docs/examples/contracts/nft/src/main.nr index 7de05c9c330d..d4181cac3cb5 100644 --- a/docs/examples/contracts/nft/src/main.nr +++ b/docs/examples/contracts/nft/src/main.nr @@ -21,7 +21,7 @@ pub contract NFTPunk { struct Storage { admin: PublicImmutable, minter: PublicImmutable, - nfts: Map, Context>, + nfts: Map, Context>, owners: Owned, Context>, } #[external("public")] diff --git a/noir-projects/aztec-nr/aztec/Nargo.toml b/noir-projects/aztec-nr/aztec/Nargo.toml index 8d0c2cf49fff..e2e8400e4f0e 100644 --- a/noir-projects/aztec-nr/aztec/Nargo.toml +++ b/noir-projects/aztec-nr/aztec/Nargo.toml @@ -7,4 +7,4 @@ type = "lib" [dependencies] protocol_types = { path = "../../noir-protocol-circuits/crates/types" } sha256 = { tag = "v0.3.0", git = "https://github.com/noir-lang/sha256" } -poseidon = { tag = "v0.2.3", git = "https://github.com/noir-lang/poseidon" } +poseidon = { tag = "v0.3.0", git = "https://github.com/noir-lang/poseidon" } diff --git a/noir-projects/aztec-nr/aztec/src/context/private_context.nr b/noir-projects/aztec-nr/aztec/src/context/private_context.nr index a9dfe39e1f2a..a4416cc95249 100644 --- a/noir-projects/aztec-nr/aztec/src/context/private_context.nr +++ b/noir-projects/aztec-nr/aztec/src/context/private_context.nr @@ -1121,7 +1121,7 @@ impl PrivateContext { args_hash: Field, is_static_call: bool, ) -> ReturnsHash { - let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call; + let is_static_call = is_static_call | self.inputs.call_context.is_static_call; let start_side_effect_counter = self.side_effect_counter; // Safety: The oracle simulates the private call and returns the value of the side effects counter after @@ -1288,7 +1288,7 @@ impl PrivateContext { ) { let counter = self.next_counter(); - let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call; + let is_static_call = is_static_call | self.inputs.call_context.is_static_call; assert_valid_public_call_data(calldata_hash); diff --git a/noir-projects/aztec-nr/aztec/src/context/public_context.nr b/noir-projects/aztec-nr/aztec/src/context/public_context.nr index 8a70842b0bb1..33b87501cb7c 100644 --- a/noir-projects/aztec-nr/aztec/src/context/public_context.nr +++ b/noir-projects/aztec-nr/aztec/src/context/public_context.nr @@ -131,7 +131,9 @@ impl PublicContext { /// pub fn note_hash_exists(_self: Self, note_hash: Field, leaf_index: u64) -> bool { // Safety: AVM opcodes are constrained by the AVM itself - unsafe { avm::note_hash_exists(note_hash, leaf_index) } == 1 + unsafe { + avm::note_hash_exists(note_hash, leaf_index) + } } /// Checks if a specific L1-to-L2 message exists in the L1-to-L2 message tree at a particular leaf index. @@ -153,7 +155,9 @@ impl PublicContext { /// pub fn l1_to_l2_msg_exists(_self: Self, msg_hash: Field, msg_leaf_index: Field) -> bool { // Safety: AVM opcodes are constrained by the AVM itself TODO(alvaro): Make l1l2msg leaf index a u64 upstream - unsafe { avm::l1_to_l2_msg_exists(msg_hash, msg_leaf_index as u64) } == 1 + unsafe { + avm::l1_to_l2_msg_exists(msg_hash, msg_leaf_index as u64) + } } /// Returns `true` if an `unsiloed_nullifier` has been emitted by `contract_address`. @@ -204,7 +208,9 @@ impl PublicContext { pub fn nullifier_exists_unsafe(_self: Self, unsiloed_nullifier: Field, contract_address: AztecAddress) -> bool { let siloed_nullifier = compute_siloed_nullifier(contract_address, unsiloed_nullifier); // Safety: AVM opcodes are constrained by the AVM itself - unsafe { avm::nullifier_exists(siloed_nullifier) } == 1 + unsafe { + avm::nullifier_exists(siloed_nullifier) + } } /// Consumes a message sent from Ethereum (L1) to Aztec (L2) -- effectively marking it as "read". @@ -662,7 +668,9 @@ impl PublicContext { /// pub fn is_static_call(_self: Self) -> bool { // Safety: AVM opcodes are constrained by the AVM itself - unsafe { avm::is_static_call() } == 1 + unsafe { + avm::is_static_call() + } } /// Reads raw field values from public storage. Reads N consecutive storage slots starting from the given slot. diff --git a/noir-projects/aztec-nr/aztec/src/history/test.nr b/noir-projects/aztec-nr/aztec/src/history/test.nr index 0d740c4a6739..f1b66eb671f1 100644 --- a/noir-projects/aztec-nr/aztec/src/history/test.nr +++ b/noir-projects/aztec-nr/aztec/src/history/test.nr @@ -16,7 +16,7 @@ pub(crate) unconstrained fn create_note() -> (TestEnvironment, HintedNote Point { - multi_scalar_mul([public_key], [secret]) + // TODO(F-553): Drop the `.to_embedded()` / `.into()` round-trip once the custom `Point` wrapper is removed and we + // use `EmbeddedCurvePoint` directly. + multi_scalar_mul([public_key.to_embedded()], [secret]).into() } /// Computes an app-siloed shared secret from a raw ECDH shared secret point and a contract address. @@ -76,8 +78,8 @@ unconstrained fn test_shared_secret_computation_in_both_directions() { let secret_a = Scalar { lo: 0x1234, hi: 0x2345 }; let secret_b = Scalar { lo: 0x3456, hi: 0x4567 }; - let pk_a = std::embedded_curve_ops::fixed_base_scalar_mul(secret_a); - let pk_b = std::embedded_curve_ops::fixed_base_scalar_mul(secret_b); + let pk_a: Point = std::embedded_curve_ops::fixed_base_scalar_mul(secret_a).into(); + let pk_b: Point = std::embedded_curve_ops::fixed_base_scalar_mul(secret_b).into(); let shared_secret = derive_ecdh_shared_secret(secret_a, pk_b); let shared_secret_alt = derive_ecdh_shared_secret(secret_b, pk_a); @@ -90,8 +92,8 @@ unconstrained fn test_shared_secret_computation_from_address_in_both_directions( let secret_a = Scalar { lo: 0x1234, hi: 0x2345 }; let secret_b = Scalar { lo: 0x3456, hi: 0x4567 }; - let mut pk_a = std::embedded_curve_ops::fixed_base_scalar_mul(secret_a); - let mut pk_b = std::embedded_curve_ops::fixed_base_scalar_mul(secret_b); + let mut pk_a: Point = std::embedded_curve_ops::fixed_base_scalar_mul(secret_a).into(); + let mut pk_b: Point = std::embedded_curve_ops::fixed_base_scalar_mul(secret_b).into(); let address_b = AztecAddress::from_field(pk_b.x); @@ -118,7 +120,7 @@ unconstrained fn test_shared_secret_computation_from_address_in_both_directions( #[test] unconstrained fn test_app_siloed_shared_secret_differs_per_contract() { let secret_a = Scalar { lo: 0x1234, hi: 0x2345 }; - let pk_b = std::embedded_curve_ops::fixed_base_scalar_mul(Scalar { lo: 0x3456, hi: 0x4567 }); + let pk_b: Point = std::embedded_curve_ops::fixed_base_scalar_mul(Scalar { lo: 0x3456, hi: 0x4567 }).into(); let shared_secret = derive_ecdh_shared_secret(secret_a, pk_b); diff --git a/noir-projects/aztec-nr/aztec/src/keys/ephemeral.nr b/noir-projects/aztec-nr/aztec/src/keys/ephemeral.nr index 0e24bb42a526..e7758e43579a 100644 --- a/noir-projects/aztec-nr/aztec/src/keys/ephemeral.nr +++ b/noir-projects/aztec-nr/aztec/src/keys/ephemeral.nr @@ -17,7 +17,9 @@ pub fn generate_ephemeral_key_pair() -> (Scalar, Point) { // TODO(#12757): compute the key pair without constraining eph_sk twice (once in from_field, once in the black box // called by fixed_base_scalar_mul). let eph_sk = EmbeddedCurveScalar::from_field(randomness); - let eph_pk = fixed_base_scalar_mul(eph_sk); + // TODO(F-553): Drop the `.into()` once the custom `Point` wrapper is removed and we use `EmbeddedCurvePoint` + // directly. Applies to the other `fixed_base_scalar_mul(...).into()` call sites in this file as well. + let eph_pk: Point = fixed_base_scalar_mul(eph_sk).into(); (eph_sk, eph_pk) } @@ -35,7 +37,7 @@ pub fn generate_positive_ephemeral_key_pair() -> (Scalar, Point) { // anyway, and so the recipient already trusts them to not disclose this information. We can therefore assume that // the sender will cooperate in the random value generation. let eph_sk = unsafe { generate_secret_key_for_positive_public_key() }; - let eph_pk = fixed_base_scalar_mul(eph_sk); + let eph_pk: Point = fixed_base_scalar_mul(eph_sk).into(); assert(get_sign_of_point(eph_pk), "Got an ephemeral public key with a negative y coordinate"); @@ -51,7 +53,7 @@ unconstrained fn generate_secret_key_for_positive_public_key() -> EmbeddedCurveS // @todo Need to draw randomness from the full domain of Fq not only Fr sk = EmbeddedCurveScalar::from_field(random()); - let pk = fixed_base_scalar_mul(sk); + let pk: Point = fixed_base_scalar_mul(sk).into(); if get_sign_of_point(pk) { break; } diff --git a/noir-projects/aztec-nr/aztec/src/macros/aztec/compute_note_hash_and_nullifier.nr b/noir-projects/aztec-nr/aztec/src/macros/aztec/compute_note_hash_and_nullifier.nr index 8edb6b33393e..32a39cc3910d 100644 --- a/noir-projects/aztec-nr/aztec/src/macros/aztec/compute_note_hash_and_nullifier.nr +++ b/noir-projects/aztec-nr/aztec/src/macros/aztec/compute_note_hash_and_nullifier.nr @@ -65,9 +65,8 @@ comptime fn generate_contract_library_method_compute_note_hash() -> Quoted { } else { // Contracts that do define notes produce an if-else chain where `note_type_id` is matched against the // `get_note_type_id()` function of each note type that we know of, in order to identify the note type. Once we - // know it we call the correct `unpack` method from the `Packable` trait to obtain the underlying note type, - // and - // compute the note hash (non-siloed). + // know it we call the correct `unpack` method from the `Packable` trait to obtain the underlying + // note type, and compute the note hash (non-siloed). // We resolve the log format calls here so that the resulting Quoted values can be spliced into the quote // block below. @@ -175,9 +174,8 @@ comptime fn generate_contract_library_method_compute_note_nullifier() -> Quoted } else { // Contracts that do define notes produce an if-else chain where `note_type_id` is matched against the // `get_note_type_id()` function of each note type that we know of, in order to identify the note type. Once we - // know it we call the correct `unpack` method from the `Packable` trait to obtain the underlying note type, - // and - // compute the inner nullifier (non-siloed). + // know it we call the correct `unpack` method from the `Packable` trait to obtain the underlying + // note type, and compute the inner nullifier (non-siloed). // We resolve the log format calls here so that the resulting Quoted values can be spliced into the quote // block below. diff --git a/noir-projects/aztec-nr/aztec/src/macros/events.nr b/noir-projects/aztec-nr/aztec/src/macros/events.nr index 9325349de011..1c60937bdbf9 100644 --- a/noir-projects/aztec-nr/aztec/src/macros/events.nr +++ b/noir-projects/aztec-nr/aztec/src/macros/events.nr @@ -57,7 +57,7 @@ pub comptime fn event(s: TypeDefinition) -> Quoted { let serialize_impl = derive_serialize_if_not_implemented(s); - s.add_attribute("abi(events)"); + s.add_abi("events"); quote { $event_interface_impl diff --git a/noir-projects/aztec-nr/aztec/src/macros/functions/initialization_utils.nr b/noir-projects/aztec-nr/aztec/src/macros/functions/initialization_utils.nr index 80cdcf048fb9..524c6ec0ef69 100644 --- a/noir-projects/aztec-nr/aztec/src/macros/functions/initialization_utils.nr +++ b/noir-projects/aztec-nr/aztec/src/macros/functions/initialization_utils.nr @@ -116,9 +116,9 @@ pub fn assert_is_initialized_private(context: &mut PrivateContext) { /// Asserts that the contract has been initialized, from a utility function's perspective. /// -/// Only checks the private initialization nullifier in the settled nullifier tree. Since both nullifiers are emitted -/// in the same transaction, the private nullifier's presence in settled state guarantees the public one is also -/// settled. +/// Only checks the private initialization nullifier in the settled nullifier tree. Since both nullifiers are +/// emitted in the same transaction, the private nullifier's presence in settled state guarantees the public one +/// is also settled. pub unconstrained fn assert_is_initialized_utility(context: UtilityContext) { let address = context.this_address(); let instance = get_contract_instance(address); diff --git a/noir-projects/aztec-nr/aztec/src/macros/functions/mod.nr b/noir-projects/aztec-nr/aztec/src/macros/functions/mod.nr index fbc24ace498f..ab345e9c31e2 100644 --- a/noir-projects/aztec-nr/aztec/src/macros/functions/mod.nr +++ b/noir-projects/aztec-nr/aztec/src/macros/functions/mod.nr @@ -137,8 +137,8 @@ pub comptime fn noinitcheck(f: FunctionDefinition) { } } -/// An `allow_phase_change` function will allow transitioning from the non-revertible to the revertible phase during -/// its execution. +/// An `allow_phase_change` function will allow transitioning from the non-revertible to the revertible phase +/// during its execution. /// /// This is an advanced feature that is typically only required for account contract entrypoints that handle /// transaction fee payment. @@ -245,8 +245,6 @@ pub comptime fn only_self(f: FunctionDefinition) { f"The #[only_self] attribute can only be applied to #[external(\"private\")] or #[external(\"public\")] functions - {name} is neither", ); } - - f.add_attribute("noinitcheck"); } /// View functions cannot modify state in any way, including performing contract calls that would in turn modify state. diff --git a/noir-projects/aztec-nr/aztec/src/macros/internals_functions_generation/mod.nr b/noir-projects/aztec-nr/aztec/src/macros/internals_functions_generation/mod.nr index f6b686128403..58f0290c4e8e 100644 --- a/noir-projects/aztec-nr/aztec/src/macros/internals_functions_generation/mod.nr +++ b/noir-projects/aztec-nr/aztec/src/macros/internals_functions_generation/mod.nr @@ -25,25 +25,10 @@ comptime fn make_functions_uncallable(functions: [FunctionDefinition // directly and a std::mem::zeroed() to make the compilation fail on the static_assert and not on a missing // return value. let error_message = f"{error_message_template}{name}. See https://docs.aztec.network/errors/6"; - let body = f"{{ std::static_assert(false, \"{error_message}\"); std::mem::zeroed() }}".quoted_contents(); - let body_expr = body.as_expr().expect(f"Body is not an expression: {body}"); - // Prefix all parameter names with "_" to suppress unused variable warnings - let params = function.parameters(); - let prefixed_params = params.map(|(param_name, param_type)| { - let prefixed_name = f"_{param_name}".quoted_contents(); - (prefixed_name, param_type) - }); - - function.set_body(body_expr); - function.set_parameters(prefixed_params); - // We need to add the `contract_library_method` attribute to the function to prevent this function from being - // compiled as an entrypoint function (function that's compiled as its own circuit). - function.add_attribute("contract_library_method"); - - // Contract functions need to have a public return type so we mark it as such to avoid undesired compilation - // errors. - function.set_return_public(true); + // Disabling the function also adds a `contract_library_method` attribute to the function to prevent this + // function from being compiled as an entrypoint function (function that's compiled as its own circuit). + function.disable(error_message); }); } diff --git a/noir-projects/aztec-nr/aztec/src/macros/utils.nr b/noir-projects/aztec-nr/aztec/src/macros/utils.nr index 40cdd20251c9..e806693421ae 100644 --- a/noir-projects/aztec-nr/aztec/src/macros/utils.nr +++ b/noir-projects/aztec-nr/aztec/src/macros/utils.nr @@ -30,7 +30,9 @@ pub(crate) comptime fn is_fn_initializer(f: FunctionDefinition) -> bool { } pub(crate) comptime fn fn_has_noinitcheck(f: FunctionDefinition) -> bool { - f.has_named_attribute("noinitcheck") + // #[only_self] functions automatically skip the initialization check as the check is assumed to be done by the + // calling external function or explicitly skipped. See only_self function docs for more details. + f.has_named_attribute("noinitcheck") | is_fn_only_self(f) } pub(crate) comptime fn fn_has_allow_phase_change(f: FunctionDefinition) -> bool { diff --git a/noir-projects/aztec-nr/aztec/src/messages/encryption/poseidon2.nr b/noir-projects/aztec-nr/aztec/src/messages/encryption/poseidon2.nr index f06b1a1981a3..1704be0162b0 100644 --- a/noir-projects/aztec-nr/aztec/src/messages/encryption/poseidon2.nr +++ b/noir-projects/aztec-nr/aztec/src/messages/encryption/poseidon2.nr @@ -53,7 +53,7 @@ pub fn poseidon2_encrypt( } for i in 0..CEIL { - s = poseidon2_permutation(s, 4); + s = poseidon2_permutation(s); // Absorb 3 elements of the message: let j = 3 * i; @@ -68,7 +68,7 @@ pub fn poseidon2_encrypt( } // Iterate Poseidon2 on the state, one last time: - s = poseidon2_permutation(s, 4); + s = poseidon2_permutation(s); // Release the last ciphertext element: c[L_UPPER_BOUND] = s[1]; @@ -91,7 +91,7 @@ pub fn poseidon2_decrypt( let c = ciphertext; for i in 0..CEIL { - s = poseidon2_permutation(s, 4); + s = poseidon2_permutation(s); // Release 3 elements of message: let j = 3 * i; @@ -108,7 +108,7 @@ pub fn poseidon2_decrypt( } // Iterate Poseidon2 on the state, one last time: - s = poseidon2_permutation(s, 4); + s = poseidon2_permutation(s); let mut msg: [Field; L] = [0; L]; for i in 0..L { @@ -139,6 +139,7 @@ pub fn poseidon2_decrypt( } mod test { + use crate::protocol::point::Point; use super::{poseidon2_decrypt, poseidon2_encrypt, TWO_POW_128}; use std::embedded_curve_ops::{EmbeddedCurveScalar, fixed_base_scalar_mul, multi_scalar_mul}; @@ -151,7 +152,7 @@ mod test { let eph_sk = 0x5678; let eph_pk = fixed_base_scalar_mul(EmbeddedCurveScalar::from_field(eph_sk)); - let shared_secret = multi_scalar_mul([bob_pk], [EmbeddedCurveScalar::from_field(eph_sk)]); + let shared_secret: Point = multi_scalar_mul([bob_pk], [EmbeddedCurveScalar::from_field(eph_sk)]).into(); let encryption_nonce = 3; // TODO. Can even be a timestamp. Why is this even needed? @@ -161,7 +162,7 @@ mod test { // Bob sees: [Epk, ciphertext, encryption_nonce]: - let shared_secret = multi_scalar_mul([eph_pk], [EmbeddedCurveScalar::from_field(bob_sk)]); + let shared_secret: Point = multi_scalar_mul([eph_pk], [EmbeddedCurveScalar::from_field(bob_sk)]).into(); let result = poseidon2_decrypt(ciphertext, shared_secret, encryption_nonce); @@ -192,7 +193,7 @@ mod test { let eph_sk = 0x5678; let eph_pk = fixed_base_scalar_mul(EmbeddedCurveScalar::from_field(eph_sk)); - let shared_secret = multi_scalar_mul([bob_pk], [EmbeddedCurveScalar::from_field(eph_sk)]); + let shared_secret: Point = multi_scalar_mul([bob_pk], [EmbeddedCurveScalar::from_field(eph_sk)]).into(); let msg = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; @@ -204,7 +205,7 @@ mod test { // Bob sees: [Epk, ciphertext, encryption_nonce]: - let mut shared_secret = multi_scalar_mul([eph_pk], [EmbeddedCurveScalar::from_field(bob_sk)]); + let mut shared_secret: Point = multi_scalar_mul([eph_pk], [EmbeddedCurveScalar::from_field(bob_sk)]).into(); // Let's intentionally corrupt the shared secret, so that decryption should fail shared_secret.x += 1; @@ -221,7 +222,7 @@ mod test { let bob_pk = fixed_base_scalar_mul(EmbeddedCurveScalar::from_field(bob_sk)); let eph_sk = 0x5678; - let shared_secret = multi_scalar_mul([bob_pk], [EmbeddedCurveScalar::from_field(eph_sk)]); + let shared_secret: Point = multi_scalar_mul([bob_pk], [EmbeddedCurveScalar::from_field(eph_sk)]).into(); let encryption_nonce = 3; // TODO. Can even be a timestamp. Why is this even needed? diff --git a/noir-projects/aztec-nr/aztec/src/oracle/avm.nr b/noir-projects/aztec-nr/aztec/src/oracle/avm.nr index 8f8c3c669bc9..9d90108a05b2 100644 --- a/noir-projects/aztec-nr/aztec/src/oracle/avm.nr +++ b/noir-projects/aztec-nr/aztec/src/oracle/avm.nr @@ -38,16 +38,16 @@ pub unconstrained fn l2_gas_left() -> u32 { pub unconstrained fn da_gas_left() -> u32 { da_gas_left_opcode() } -pub unconstrained fn is_static_call() -> u1 { +pub unconstrained fn is_static_call() -> bool { is_static_call_opcode() } -pub unconstrained fn note_hash_exists(note_hash: Field, leaf_index: u64) -> u1 { +pub unconstrained fn note_hash_exists(note_hash: Field, leaf_index: u64) -> bool { note_hash_exists_opcode(note_hash, leaf_index) } pub unconstrained fn emit_note_hash(note_hash: Field) { emit_note_hash_opcode(note_hash) } -pub unconstrained fn nullifier_exists(siloed_nullifier: Field) -> u1 { +pub unconstrained fn nullifier_exists(siloed_nullifier: Field) -> bool { nullifier_exists_opcode(siloed_nullifier) } pub unconstrained fn emit_nullifier(nullifier: Field) { @@ -56,7 +56,7 @@ pub unconstrained fn emit_nullifier(nullifier: Field) { pub unconstrained fn emit_public_log(message: [Field]) { emit_public_log_opcode(message) } -pub unconstrained fn l1_to_l2_msg_exists(msg_hash: Field, msg_leaf_index: u64) -> u1 { +pub unconstrained fn l1_to_l2_msg_exists(msg_hash: Field, msg_leaf_index: u64) -> bool { l1_to_l2_msg_exists_opcode(msg_hash, msg_leaf_index) } pub unconstrained fn send_l2_to_l1_msg(recipient: EthAddress, content: Field) { @@ -152,16 +152,16 @@ unconstrained fn l2_gas_left_opcode() -> u32 {} unconstrained fn da_gas_left_opcode() -> u32 {} #[oracle(aztec_avm_isStaticCall)] -unconstrained fn is_static_call_opcode() -> u1 {} +unconstrained fn is_static_call_opcode() -> bool {} #[oracle(aztec_avm_noteHashExists)] -unconstrained fn note_hash_exists_opcode(note_hash: Field, leaf_index: u64) -> u1 {} +unconstrained fn note_hash_exists_opcode(note_hash: Field, leaf_index: u64) -> bool {} #[oracle(aztec_avm_emitNoteHash)] unconstrained fn emit_note_hash_opcode(note_hash: Field) {} #[oracle(aztec_avm_nullifierExists)] -unconstrained fn nullifier_exists_opcode(siloed_nullifier: Field) -> u1 {} +unconstrained fn nullifier_exists_opcode(siloed_nullifier: Field) -> bool {} #[oracle(aztec_avm_emitNullifier)] unconstrained fn emit_nullifier_opcode(nullifier: Field) {} @@ -170,7 +170,7 @@ unconstrained fn emit_nullifier_opcode(nullifier: Field) {} unconstrained fn emit_public_log_opcode(message: [Field]) {} #[oracle(aztec_avm_l1ToL2MsgExists)] -unconstrained fn l1_to_l2_msg_exists_opcode(msg_hash: Field, msg_leaf_index: u64) -> u1 {} +unconstrained fn l1_to_l2_msg_exists_opcode(msg_hash: Field, msg_leaf_index: u64) -> bool {} #[oracle(aztec_avm_sendL2ToL1Msg)] unconstrained fn send_l2_to_l1_msg_opcode(recipient: EthAddress, content: Field) {} diff --git a/noir-projects/aztec-nr/aztec/src/oracle/keys.nr b/noir-projects/aztec-nr/aztec/src/oracle/keys.nr index 6834a04975ac..8f3d2788bf7a 100644 --- a/noir-projects/aztec-nr/aztec/src/oracle/keys.nr +++ b/noir-projects/aztec-nr/aztec/src/oracle/keys.nr @@ -9,6 +9,9 @@ pub unconstrained fn get_public_keys_and_partial_address(address: AztecAddress) try_get_public_keys_and_partial_address(address).expect(f"Public keys not registered for account {address}") } +// TODO(F-553): The oracle returns 13 fields because each public key is serialized as 3 fields (x, y, is_infinite) by +// the custom `Point` wrapper. Once we drop the wrapper and use `EmbeddedCurvePoint` directly each point will +// serialize to 2 fields and this should become `[Field; 9]` again, with the indices below shifted accordingly. #[oracle(aztec_utl_getPublicKeysAndPartialAddress)] unconstrained fn get_public_keys_and_partial_address_oracle(_address: AztecAddress) -> Option<[Field; 13]> {} diff --git a/noir-projects/aztec-nr/aztec/src/state_vars/mod.nr b/noir-projects/aztec-nr/aztec/src/state_vars/mod.nr index f050e2aa8f0b..634f5822b8b9 100644 --- a/noir-projects/aztec-nr/aztec/src/state_vars/mod.nr +++ b/noir-projects/aztec-nr/aztec/src/state_vars/mod.nr @@ -43,8 +43,8 @@ //! } //! //! fn unpack(packed: [Field; Self::N]) -> Self { -//! let b = (packed[0] as u1) != 0; -//! let a = (((packed[0] - b as Field) / 2.pow_32(1)) as u1) != 0; +//! let b = (packed[0] as u8) % 2 != 0; +//! let a = ((packed[0] - b as Field) / 2.pow_32(1)) != 0; //! //! Self { a, b } //! } diff --git a/noir-projects/aztec-nr/aztec/src/state_vars/single_use_claim/test.nr b/noir-projects/aztec-nr/aztec/src/state_vars/single_use_claim/test.nr index f50c14c97bd8..6faf2ac8cc04 100644 --- a/noir-projects/aztec-nr/aztec/src/state_vars/single_use_claim/test.nr +++ b/noir-projects/aztec-nr/aztec/src/state_vars/single_use_claim/test.nr @@ -136,7 +136,7 @@ unconstrained fn claim_two_claim_ids_different_state_vars() { #[test(should_fail_with = "Public keys not registered for account")] unconstrained fn claim_owner_unknown_public_keys() { - let mut env = TestEnvironment::new(); + let env = TestEnvironment::new(); let owner = AztecAddress::from_field(random()); diff --git a/noir-projects/aztec-nr/aztec/src/test/helpers/test_environment.nr b/noir-projects/aztec-nr/aztec/src/test/helpers/test_environment.nr index fdf98c3ca42e..b2dcd79f3ea1 100644 --- a/noir-projects/aztec-nr/aztec/src/test/helpers/test_environment.nr +++ b/noir-projects/aztec-nr/aztec/src/test/helpers/test_environment.nr @@ -240,7 +240,7 @@ impl TestEnvironment { ) -> T { txe_oracles::set_public_txe_context(opts.contract_address); - let mut context = PublicContext::new(|| 0); + let context = PublicContext::new(|| 0); let ret_value = f(context); txe_oracles::set_top_level_txe_context(); diff --git a/noir-projects/noir-contracts/contracts/account/schnorr_account_contract/Nargo.toml b/noir-projects/noir-contracts/contracts/account/schnorr_account_contract/Nargo.toml index 2649ecf38d77..4ef03aed2d98 100644 --- a/noir-projects/noir-contracts/contracts/account/schnorr_account_contract/Nargo.toml +++ b/noir-projects/noir-contracts/contracts/account/schnorr_account_contract/Nargo.toml @@ -6,4 +6,4 @@ type = "contract" [dependencies] aztec = { path = "../../../../aztec-nr/aztec" } -schnorr = { tag = "v0.1.3", git = "https://github.com/noir-lang/schnorr" } +schnorr = { tag = "v0.2.0", git = "https://github.com/noir-lang/schnorr" } diff --git a/noir-projects/noir-contracts/contracts/account/schnorr_account_contract/src/main.nr b/noir-projects/noir-contracts/contracts/account/schnorr_account_contract/src/main.nr index fc46e37ba62b..1e7549a46499 100644 --- a/noir-projects/noir-contracts/contracts/account/schnorr_account_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/account/schnorr_account_contract/src/main.nr @@ -104,11 +104,8 @@ pub contract SchnorrAccount { signature[i] = witness[i] as u8; } - let pub_key = std::embedded_curve_ops::EmbeddedCurvePoint { - x: public_key.x, - y: public_key.y, - is_infinite: false, - }; + let pub_key = + std::embedded_curve_ops::EmbeddedCurvePoint { x: public_key.x, y: public_key.y }; // Verify signature of the payload bytes schnorr::verify_signature(pub_key, signature, outer_hash.to_be_bytes::<32>()) // docs:end:is_valid_impl @@ -136,11 +133,8 @@ pub contract SchnorrAccount { for i in 0..64 { signature[i] = witness[i] as u8; } - let pub_key = std::embedded_curve_ops::EmbeddedCurvePoint { - x: public_key.x, - y: public_key.y, - is_infinite: false, - }; + let pub_key = + std::embedded_curve_ops::EmbeddedCurvePoint { x: public_key.x, y: public_key.y }; let valid_in_private = schnorr::verify_signature(pub_key, signature, message_hash.to_be_bytes::<32>()); diff --git a/noir-projects/noir-contracts/contracts/account/schnorr_hardcoded_account_contract/Nargo.toml b/noir-projects/noir-contracts/contracts/account/schnorr_hardcoded_account_contract/Nargo.toml index 58de2c8d8b67..dd7202a458c5 100644 --- a/noir-projects/noir-contracts/contracts/account/schnorr_hardcoded_account_contract/Nargo.toml +++ b/noir-projects/noir-contracts/contracts/account/schnorr_hardcoded_account_contract/Nargo.toml @@ -6,4 +6,4 @@ type = "contract" [dependencies] aztec = { path = "../../../../aztec-nr/aztec" } -schnorr = { tag = "v0.1.3", git = "https://github.com/noir-lang/schnorr" } +schnorr = { tag = "v0.2.0", git = "https://github.com/noir-lang/schnorr" } diff --git a/noir-projects/noir-contracts/contracts/account/schnorr_hardcoded_account_contract/src/main.nr b/noir-projects/noir-contracts/contracts/account/schnorr_hardcoded_account_contract/src/main.nr index 33836d615a85..ac0d6e83f6f9 100644 --- a/noir-projects/noir-contracts/contracts/account/schnorr_hardcoded_account_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/account/schnorr_hardcoded_account_contract/src/main.nr @@ -14,7 +14,6 @@ pub contract SchnorrHardcodedAccount { global signing_public_key: EmbeddedCurvePoint = EmbeddedCurvePoint { x: 0x16b93f4afae55cab8507baeb8e7ab4de80f5ab1e9e1f5149bf8cd0d375451d90, y: 0x208d44b36eb6e73b254921134d002da1a90b41131024e3b1d721259182106205, - is_infinite: false, }; // @dev: If you globally change the entrypoint signature don't forget to update account_entrypoint.ts (specifically `getEntrypointAbi()`) diff --git a/noir-projects/noir-contracts/contracts/app/card_game_contract/src/game.nr b/noir-projects/noir-contracts/contracts/app/card_game_contract/src/game.nr index 7941807b85ac..197ea2dc99bd 100644 --- a/noir-projects/noir-contracts/contracts/app/card_game_contract/src/game.nr +++ b/noir-projects/noir-contracts/contracts/app/card_game_contract/src/game.nr @@ -93,11 +93,11 @@ impl Packable for Game { let rounds_cards: [Card; PLAYABLE_CARDS] = Packable::unpack(cards_packed); let mut tmp = packed[SCALARS_OFFSET]; - let started = (tmp as u1) != 0; + let started = (tmp as u8) % 2 != 0; tmp = (tmp - started as Field) / 2.pow_32(1); - let finished = (tmp as u1) != 0; + let finished = (tmp as u8) % 2 != 0; tmp = (tmp - finished as Field) / 2.pow_32(1); - let claimed = (tmp as u1) != 0; + let claimed = (tmp as u8) % 2 != 0; tmp = (tmp - claimed as Field) / 2.pow_32(1); let current_player = tmp as u32; tmp = (tmp - current_player as Field) / 2.pow_32(32); diff --git a/noir-projects/noir-contracts/contracts/app/card_game_contract/src/main.nr b/noir-projects/noir-contracts/contracts/app/card_game_contract/src/main.nr index be19a9597cb6..bcb4fadca991 100644 --- a/noir-projects/noir-contracts/contracts/app/card_game_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/app/card_game_contract/src/main.nr @@ -29,7 +29,7 @@ pub contract CardGame { seed: Field, // The randomness used to generate the cards. Passed in for now. ) { let buyer = self.msg_sender(); - let mut cards = get_pack_cards(seed, buyer, self.context); + let cards = get_pack_cards(seed, buyer, self.context); let mut collection = self.storage.collections; let _inserted_cards = collection.add_cards(cards, buyer); diff --git a/noir-projects/noir-contracts/contracts/app/orderbook_contract/src/order.nr b/noir-projects/noir-contracts/contracts/app/orderbook_contract/src/order.nr index c9faf3c6d0e1..2565b6a4aa9d 100644 --- a/noir-projects/noir-contracts/contracts/app/orderbook_contract/src/order.nr +++ b/noir-projects/noir-contracts/contracts/app/orderbook_contract/src/order.nr @@ -24,7 +24,7 @@ impl Packable for Order { } fn unpack(packed: [Field; Self::N]) -> Self { - let bid_token_is_zero = (packed[0] as u1) != 0; + let bid_token_is_zero = (packed[0] as u8) % 2 != 0; let bid_amount = ((packed[0] - bid_token_is_zero as Field) / 2.pow_32(1)) as u128; let ask_amount = packed[1] as u128; Self { bid_amount, ask_amount, bid_token_is_zero } diff --git a/noir-projects/noir-contracts/contracts/app/private_voting_contract/src/test/first.nr b/noir-projects/noir-contracts/contracts/app/private_voting_contract/src/test/first.nr index 1c337d3db8ee..d4200123d7d7 100644 --- a/noir-projects/noir-contracts/contracts/app/private_voting_contract/src/test/first.nr +++ b/noir-projects/noir-contracts/contracts/app/private_voting_contract/src/test/first.nr @@ -6,7 +6,7 @@ use crate::PrivateVoting::ElectionId; #[test] unconstrained fn test_initializer() { - let (mut env, voting_contract_address, admin) = utils::setup(); + let (env, voting_contract_address, admin) = utils::setup(); env.public_context_at(voting_contract_address, |context| { let current_admin = context.storage_read(PrivateVoting::storage_layout().admin.slot); @@ -16,7 +16,7 @@ unconstrained fn test_initializer() { #[test] unconstrained fn test_check_vote_status() { - let (mut env, voting_contract_address, _) = utils::setup(); + let (env, voting_contract_address, _) = utils::setup(); env.public_context_at(voting_contract_address, |context| { let vote_ended = context.storage_read(PrivateVoting::storage_layout().vote_ended.slot); diff --git a/noir-projects/noir-contracts/contracts/protocol/aztec_sublib/src/context/public_context.nr b/noir-projects/noir-contracts/contracts/protocol/aztec_sublib/src/context/public_context.nr index b1d6c4aa16ac..c30d8df1942e 100644 --- a/noir-projects/noir-contracts/contracts/protocol/aztec_sublib/src/context/public_context.nr +++ b/noir-projects/noir-contracts/contracts/protocol/aztec_sublib/src/context/public_context.nr @@ -43,13 +43,13 @@ impl PublicContext { /// Checks if a given note hash exists in the note hash tree at a particular leaf_index. pub fn note_hash_exists(_self: Self, note_hash: Field, leaf_index: u64) -> bool { // Safety: AVM opcodes are constrained by the AVM itself - unsafe { avm::note_hash_exists(note_hash, leaf_index) } == 1 + unsafe { avm::note_hash_exists(note_hash, leaf_index) } } /// Checks if a specific L1-to-L2 message exists in the L1-to-L2 message tree at a particular leaf index. pub fn l1_to_l2_msg_exists(_self: Self, msg_hash: Field, msg_leaf_index: Field) -> bool { // Safety: AVM opcodes are constrained by the AVM itself TODO(alvaro): Make l1l2msg leaf index a u64 upstream - unsafe { avm::l1_to_l2_msg_exists(msg_hash, msg_leaf_index as u64) } == 1 + unsafe { avm::l1_to_l2_msg_exists(msg_hash, msg_leaf_index as u64) } } /// Returns `true` if an `unsiloed_nullifier` has been emitted by `contract_address`. @@ -60,7 +60,7 @@ impl PublicContext { ) -> bool { let siloed_nullifier = compute_siloed_nullifier(contract_address, unsiloed_nullifier); // Safety: AVM opcodes are constrained by the AVM itself - unsafe { avm::nullifier_exists(siloed_nullifier) } == 1 + unsafe { avm::nullifier_exists(siloed_nullifier) } } /// Consumes a message sent from Ethereum (L1) to Aztec (L2). @@ -279,7 +279,7 @@ impl PublicContext { /// Checks if the current execution is within a staticcall context. pub fn is_static_call(_self: Self) -> bool { // Safety: AVM opcodes are constrained by the AVM itself - unsafe { avm::is_static_call() } == 1 + unsafe { avm::is_static_call() } } /// Reads raw field values from public storage. diff --git a/noir-projects/noir-contracts/contracts/protocol/aztec_sublib/src/oracle/avm.nr b/noir-projects/noir-contracts/contracts/protocol/aztec_sublib/src/oracle/avm.nr index 8f8c3c669bc9..9d90108a05b2 100644 --- a/noir-projects/noir-contracts/contracts/protocol/aztec_sublib/src/oracle/avm.nr +++ b/noir-projects/noir-contracts/contracts/protocol/aztec_sublib/src/oracle/avm.nr @@ -38,16 +38,16 @@ pub unconstrained fn l2_gas_left() -> u32 { pub unconstrained fn da_gas_left() -> u32 { da_gas_left_opcode() } -pub unconstrained fn is_static_call() -> u1 { +pub unconstrained fn is_static_call() -> bool { is_static_call_opcode() } -pub unconstrained fn note_hash_exists(note_hash: Field, leaf_index: u64) -> u1 { +pub unconstrained fn note_hash_exists(note_hash: Field, leaf_index: u64) -> bool { note_hash_exists_opcode(note_hash, leaf_index) } pub unconstrained fn emit_note_hash(note_hash: Field) { emit_note_hash_opcode(note_hash) } -pub unconstrained fn nullifier_exists(siloed_nullifier: Field) -> u1 { +pub unconstrained fn nullifier_exists(siloed_nullifier: Field) -> bool { nullifier_exists_opcode(siloed_nullifier) } pub unconstrained fn emit_nullifier(nullifier: Field) { @@ -56,7 +56,7 @@ pub unconstrained fn emit_nullifier(nullifier: Field) { pub unconstrained fn emit_public_log(message: [Field]) { emit_public_log_opcode(message) } -pub unconstrained fn l1_to_l2_msg_exists(msg_hash: Field, msg_leaf_index: u64) -> u1 { +pub unconstrained fn l1_to_l2_msg_exists(msg_hash: Field, msg_leaf_index: u64) -> bool { l1_to_l2_msg_exists_opcode(msg_hash, msg_leaf_index) } pub unconstrained fn send_l2_to_l1_msg(recipient: EthAddress, content: Field) { @@ -152,16 +152,16 @@ unconstrained fn l2_gas_left_opcode() -> u32 {} unconstrained fn da_gas_left_opcode() -> u32 {} #[oracle(aztec_avm_isStaticCall)] -unconstrained fn is_static_call_opcode() -> u1 {} +unconstrained fn is_static_call_opcode() -> bool {} #[oracle(aztec_avm_noteHashExists)] -unconstrained fn note_hash_exists_opcode(note_hash: Field, leaf_index: u64) -> u1 {} +unconstrained fn note_hash_exists_opcode(note_hash: Field, leaf_index: u64) -> bool {} #[oracle(aztec_avm_emitNoteHash)] unconstrained fn emit_note_hash_opcode(note_hash: Field) {} #[oracle(aztec_avm_nullifierExists)] -unconstrained fn nullifier_exists_opcode(siloed_nullifier: Field) -> u1 {} +unconstrained fn nullifier_exists_opcode(siloed_nullifier: Field) -> bool {} #[oracle(aztec_avm_emitNullifier)] unconstrained fn emit_nullifier_opcode(nullifier: Field) {} @@ -170,7 +170,7 @@ unconstrained fn emit_nullifier_opcode(nullifier: Field) {} unconstrained fn emit_public_log_opcode(message: [Field]) {} #[oracle(aztec_avm_l1ToL2MsgExists)] -unconstrained fn l1_to_l2_msg_exists_opcode(msg_hash: Field, msg_leaf_index: u64) -> u1 {} +unconstrained fn l1_to_l2_msg_exists_opcode(msg_hash: Field, msg_leaf_index: u64) -> bool {} #[oracle(aztec_avm_sendL2ToL1Msg)] unconstrained fn send_l2_to_l1_msg_opcode(recipient: EthAddress, content: Field) {} diff --git a/noir-projects/noir-contracts/contracts/protocol/aztec_sublib/src/oracle/version.nr b/noir-projects/noir-contracts/contracts/protocol/aztec_sublib/src/oracle/version.nr index 2ffff93dab5f..7c7f7c0785b7 100644 --- a/noir-projects/noir-contracts/contracts/protocol/aztec_sublib/src/oracle/version.nr +++ b/noir-projects/noir-contracts/contracts/protocol/aztec_sublib/src/oracle/version.nr @@ -30,7 +30,9 @@ unconstrained fn assert_compatible_oracle_version_wrapper() { unconstrained fn assert_compatible_oracle_version_oracle(major: Field, minor: Field) {} mod test { - use super::{assert_compatible_oracle_version_oracle, ORACLE_VERSION_MAJOR, ORACLE_VERSION_MINOR}; + use super::{ + assert_compatible_oracle_version_oracle, ORACLE_VERSION_MAJOR, ORACLE_VERSION_MINOR, + }; #[test] unconstrained fn compatible_oracle_version() { diff --git a/noir-projects/noir-contracts/contracts/protocol/contract_class_registry_contract/src/main.nr b/noir-projects/noir-contracts/contracts/protocol/contract_class_registry_contract/src/main.nr index d630d3330f92..37ac1626071c 100644 --- a/noir-projects/noir-contracts/contracts/protocol/contract_class_registry_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/protocol/contract_class_registry_contract/src/main.nr @@ -74,7 +74,7 @@ pub contract ContractClassRegistry { // Safety: We load the bytecode via a capsule, which is unconstrained. In order to ensure the loaded bytecode // matches the expected one, we recompute the commitment and assert it matches the one provided by the caller. - let mut packed_public_bytecode: [Field; MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS] = unsafe { + let packed_public_bytecode: [Field; MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS] = unsafe { capsules::load( context.this_address(), CONTRACT_CLASS_REGISTRY_BYTECODE_CAPSULE_SLOT, diff --git a/noir-projects/noir-contracts/contracts/test/avm_gadgets_test_contract/Nargo.toml b/noir-projects/noir-contracts/contracts/test/avm_gadgets_test_contract/Nargo.toml index 9efa513a1f31..6c0ba5c3ba06 100644 --- a/noir-projects/noir-contracts/contracts/test/avm_gadgets_test_contract/Nargo.toml +++ b/noir-projects/noir-contracts/contracts/test/avm_gadgets_test_contract/Nargo.toml @@ -8,4 +8,4 @@ type = "contract" aztec = { path = "../../../../aztec-nr/aztec" } keccak256 = { tag = "v0.1.3", git = "https://github.com/noir-lang/keccak256" } sha256 = { tag = "v0.3.0", git = "https://github.com/noir-lang/sha256" } -poseidon = { tag= "v0.2.3", git = "https://github.com/noir-lang/poseidon" } +poseidon = { tag= "v0.3.0", git = "https://github.com/noir-lang/poseidon" } diff --git a/noir-projects/noir-contracts/contracts/test/avm_test_contract/Nargo.toml b/noir-projects/noir-contracts/contracts/test/avm_test_contract/Nargo.toml index b90c685a9fd3..0290bcb5a8d7 100644 --- a/noir-projects/noir-contracts/contracts/test/avm_test_contract/Nargo.toml +++ b/noir-projects/noir-contracts/contracts/test/avm_test_contract/Nargo.toml @@ -9,7 +9,7 @@ aztec = { path = "../../../../aztec-nr/aztec" } compressed_string = { path = "../../../../aztec-nr/compressed-string" } sha256 = { tag = "v0.3.0", git = "https://github.com/noir-lang/sha256" } keccak256 = { tag = "v0.1.3", git = "https://github.com/noir-lang/keccak256" } -poseidon = { tag= "v0.2.3", git = "https://github.com/noir-lang/poseidon" } +poseidon = { tag= "v0.3.0", git = "https://github.com/noir-lang/poseidon" } fee_juice = { path = "../../protocol_interface/fee_juice_interface" } auth_contract = { path = "../../protocol_interface/auth_registry_interface" } instance_contract = { path = "../../protocol_interface/contract_instance_registry_interface" } diff --git a/noir-projects/noir-contracts/contracts/test/avm_test_contract/src/main.nr b/noir-projects/noir-contracts/contracts/test/avm_test_contract/src/main.nr index 820e24452a80..720cd22ab4d4 100644 --- a/noir-projects/noir-contracts/contracts/test/avm_test_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/test/avm_test_contract/src/main.nr @@ -38,7 +38,7 @@ pub contract AvmTest { use aztec::state_vars::PublicMutable; use aztec::state_vars::StateVariable; use compressed_string::CompressedString; - use std::embedded_curve_ops::{EmbeddedCurvePoint, multi_scalar_mul}; + use std::embedded_curve_ops::multi_scalar_mul; use auth_contract::AuthRegistry; use aztec::context::PublicContext; @@ -228,16 +228,16 @@ pub contract AvmTest { let g = Point { x: GRUMPKIN_ONE_X, y: GRUMPKIN_ONE_Y, is_infinite: false }; let triple_g = multi_scalar_mul( - [g, g], + [g.to_embedded(), g.to_embedded()], [Scalar { lo: scalar_lo, hi: scalar_hi }, Scalar { lo: scalar2_lo, hi: scalar2_hi }], ); - triple_g + triple_g.into() } #[external("public")] - fn pedersen_commit(x: Field, y: Field) -> EmbeddedCurvePoint { + fn pedersen_commit(x: Field, y: Field) -> Point { let commitment = ::std::hash::pedersen_commitment_with_separator([x, y], 20); - commitment + commitment.into() } #[external("public")] @@ -253,8 +253,8 @@ pub contract AvmTest { fn bitwise_ops(x: u32, y: u32) -> u32 { let mut result = x & y; result = result | x; - result = result >> x; - result = result << y; + result = result >> (x % 32); + result = result << (y % 32); result ^ y } @@ -290,12 +290,12 @@ pub contract AvmTest { } #[external("public")] - fn to_le_bits(input: Field) -> [u1; 16] { + fn to_le_bits(input: Field) -> [bool; 16] { _to_le_bits(input) } #[contract_library_method] - fn _to_le_bits(input: Field) -> [u1; 16] { + fn _to_le_bits(input: Field) -> [bool; 16] { input.to_le_bits() } @@ -1010,7 +1010,7 @@ pub contract AvmTest { assert(first_byte != 0); aztec::oracle::logging::debug_log("to_le_bits"); let first_bit = _to_le_bits(args_field[0])[0]; - assert(first_bit != 0); + assert(first_bit); //let _ = nested_call_to_nothing_recovers(); } } diff --git a/noir-projects/noir-contracts/contracts/test/counter_contract/src/main.nr b/noir-projects/noir-contracts/contracts/test/counter_contract/src/main.nr index 6a735d3af490..6f67a87424fc 100644 --- a/noir-projects/noir-contracts/contracts/test/counter_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/test/counter_contract/src/main.nr @@ -106,7 +106,7 @@ pub contract Counter { #[test] unconstrained fn test_increment() { let initial_value = 5; - let (mut env, contract_address, owner) = setup(initial_value); + let (env, contract_address, owner) = setup(initial_value); // Read the stored value in the note let initial_counter = diff --git a/noir-projects/noir-contracts/contracts/test/only_self_contract/src/main.nr b/noir-projects/noir-contracts/contracts/test/only_self_contract/src/main.nr index b54400f950d9..72c20504009a 100644 --- a/noir-projects/noir-contracts/contracts/test/only_self_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/test/only_self_contract/src/main.nr @@ -38,7 +38,7 @@ mod test { #[test(should_fail_with = "Function only_self_private can only be called by the same contract")] unconstrained fn only_self_private_function_fails_if_called_from_other_contract() { - let (mut env, caller, instance_address) = setup(); + let (env, caller, instance_address) = setup(); let instance = OnlySelf::at(instance_address); env.call_private(caller, instance.only_self_private()); @@ -46,7 +46,7 @@ mod test { #[test(should_fail_with = "Function only_self_public can only be called by the same contract")] unconstrained fn only_self_public_function_fails_if_called_from_other_contract() { - let (mut env, caller, instance_address) = setup(); + let (env, caller, instance_address) = setup(); let instance = OnlySelf::at(instance_address); env.call_public(caller, instance.only_self_public()); @@ -54,7 +54,7 @@ mod test { #[test] unconstrained fn only_self_private_function_succeeds_if_called_from_same_contract() { - let (mut env, caller, instance_address) = setup(); + let (env, caller, instance_address) = setup(); let instance = OnlySelf::at(instance_address); env.call_private(caller, instance.call_only_self_private()); @@ -62,7 +62,7 @@ mod test { #[test] unconstrained fn only_self_public_function_succeeds_if_called_from_same_contract() { - let (mut env, caller, instance_address) = setup(); + let (env, caller, instance_address) = setup(); let instance = OnlySelf::at(instance_address); env.call_public(caller, instance.call_only_self_public()); diff --git a/noir-projects/noir-contracts/contracts/test/public_immutable_contract/src/main.nr b/noir-projects/noir-contracts/contracts/test/public_immutable_contract/src/main.nr index 9a48ef77bf64..a655d5fd7bdd 100644 --- a/noir-projects/noir-contracts/contracts/test/public_immutable_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/test/public_immutable_contract/src/main.nr @@ -42,7 +42,7 @@ mod tests { #[test] unconstrained fn reading_after_initialization_succeeds() { - let (mut env, contract_address) = setup(); + let (env, contract_address) = setup(); let test_contract = PublicImmutableContract::at(contract_address); // set x to 10 diff --git a/noir-projects/noir-contracts/contracts/test/returning_tuple_contract/src/main.nr b/noir-projects/noir-contracts/contracts/test/returning_tuple_contract/src/main.nr index 4167f9ad9652..b5887569e14e 100644 --- a/noir-projects/noir-contracts/contracts/test/returning_tuple_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/test/returning_tuple_contract/src/main.nr @@ -41,7 +41,7 @@ pub contract ReturningTuple { #[external("private")] #[view] fn fn_that_returns_6() -> (Field, u128, bool, str<3>, AztecAddress, Point) { - (1, 2, false, "xyz", AztecAddress::from_field(1), Point::deserialize([1, 2, 3])) + (1, 2, false, "xyz", AztecAddress::from_field(1), Point::deserialize([1, 2, 0])) } #[external("public")] @@ -77,7 +77,7 @@ pub contract ReturningTuple { #[external("public")] #[view] fn fn_that_returns_6_public() -> (Field, u128, bool, str<3>, AztecAddress, Point) { - (1, 2, false, "xyz", AztecAddress::from_field(1), Point::deserialize([1, 2, 3])) + (1, 2, false, "xyz", AztecAddress::from_field(1), Point::deserialize([1, 2, 0])) } } diff --git a/noir-projects/noir-contracts/contracts/test/state_vars_contract/src/main.nr b/noir-projects/noir-contracts/contracts/test/state_vars_contract/src/main.nr index 09228377ff58..f993d4312453 100644 --- a/noir-projects/noir-contracts/contracts/test/state_vars_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/test/state_vars_contract/src/main.nr @@ -41,7 +41,7 @@ pub contract StateVars { #[external("public")] fn initialize_public_immutable(value: u8) { - let mut new_mock_struct = MockStruct { account: self.msg_sender(), value }; + let new_mock_struct = MockStruct { account: self.msg_sender(), value }; self.storage.public_immutable.initialize(new_mock_struct); } diff --git a/noir-projects/noir-contracts/contracts/test/storage_proof_test_contract/src/storage_proofs/account_hash.nr b/noir-projects/noir-contracts/contracts/test/storage_proof_test_contract/src/storage_proofs/account_hash.nr index 0ef228a44781..e49b8fbb0ef1 100644 --- a/noir-projects/noir-contracts/contracts/test/storage_proof_test_contract/src/storage_proofs/account_hash.nr +++ b/noir-projects/noir-contracts/contracts/test/storage_proof_test_contract/src/storage_proofs/account_hash.nr @@ -26,7 +26,7 @@ fn rlp_encode_to_sink( let key_length = 32 - (current_nibble_idx as u8) / 2 + 1; - let mut leaf_key_rlp_length = get_rlp_length(first_key_byte, key_length); + let leaf_key_rlp_length = get_rlp_length(first_key_byte, key_length); assert(account.nonce_length <= 8); let leaf_value_rlp_data_length = get_rlp_length(account.balance[0], account.balance_length) diff --git a/noir-projects/noir-protocol-circuits/crates/blob/Nargo.toml b/noir-projects/noir-protocol-circuits/crates/blob/Nargo.toml index a9e600c0a7ba..73de619151b6 100644 --- a/noir-projects/noir-protocol-circuits/crates/blob/Nargo.toml +++ b/noir-projects/noir-protocol-circuits/crates/blob/Nargo.toml @@ -5,7 +5,7 @@ authors = [""] compiler_version = ">=0.30.0" [dependencies] -bignum = { git = "https://github.com/noir-lang/noir-bignum", tag = "v0.9.0" } -bigcurve = { git = "https://github.com/noir-lang/noir_bigcurve", tag = "v0.13.0" } +bignum = { git = "https://github.com/noir-lang/noir-bignum", tag = "v0.10.0" } +bigcurve = { git = "https://github.com/noir-lang/noir_bigcurve", tag = "v0.14.0" } types = { path = "../types" } protocol_test_utils = { path = "../protocol-test-utils" } diff --git a/noir-projects/noir-protocol-circuits/crates/blob/src/config.nr b/noir-projects/noir-protocol-circuits/crates/blob/src/config.nr index e59603a54b6a..67c5516ef0d4 100644 --- a/noir-projects/noir-protocol-circuits/crates/blob/src/config.nr +++ b/noir-projects/noir-protocol-circuits/crates/blob/src/config.nr @@ -20550,8 +20550,8 @@ mod tests { let PLUS = FIELDS_PER_BLOB >> 1; let MINUS = PLUS >> 1; let mut I = 0; - let mut next_diff = PLUS - (MINUS >> 1); - let mut big_minus = next_diff + MINUS; + let next_diff = PLUS - (MINUS >> 1); + let big_minus = next_diff + MINUS; let big_minus_arr = compute_big_minus_arr(big_minus, next_diff); diff --git a/noir-projects/noir-protocol-circuits/crates/blob/src/utils/compress_to_blob_commitment.nr b/noir-projects/noir-protocol-circuits/crates/blob/src/utils/compress_to_blob_commitment.nr index 21c71af7c460..4f6ca2e0bbf9 100644 --- a/noir-projects/noir-protocol-circuits/crates/blob/src/utils/compress_to_blob_commitment.nr +++ b/noir-projects/noir-protocol-circuits/crates/blob/src/utils/compress_to_blob_commitment.nr @@ -15,9 +15,9 @@ use bignum::{BigNum, BLS12_381_Fq}; pub fn compress_to_blob_commitment(point: BLSPoint) -> (BatchingBlobCommitment) { let (flags, x) = get_flags(point); let mut compressed = x.to_be_bytes(); - let most_sig_bits: [u1; 8] = (compressed[0] as Field).to_be_bits(); + let most_sig_bits: [bool; 8] = (compressed[0] as Field).to_be_bits(); for i in 0..3 { - assert_eq(most_sig_bits[i], 0, "Invalid BLS12-381 x coordinate given to compress()."); + assert_eq(most_sig_bits[i], false, "Invalid BLS12-381 x coordinate given to compress()."); } compressed[0] = set_flags(flags, compressed[0]); BatchingBlobCommitment { point, compressed } @@ -80,7 +80,7 @@ mod tests { // y^2 = x^3 + ax + b let reconstructed_y_squared = reconstructed_x.__pow(BLS12_381_Fq::from(3)).add(a.mul(reconstructed_x)).add(b); - let mut reconstructed_y = -(reconstructed_y_squared.__sqrt().unwrap()); + let reconstructed_y = -(reconstructed_y_squared.__sqrt().unwrap()); assert_eq(reconstructed_y, point.y); } diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/components/private_call_data_validator/validate_side_effect_counters.nr b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/components/private_call_data_validator/validate_side_effect_counters.nr index f9ee18780f92..671c5c293923 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/components/private_call_data_validator/validate_side_effect_counters.nr +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/components/private_call_data_validator/validate_side_effect_counters.nr @@ -737,7 +737,7 @@ mod tests { impl TestBuilder { pub fn new() -> Self { - let mut private_call = FixtureBuilder::new_from_counter(50); + let private_call = FixtureBuilder::new_from_counter(50); // Safety: For testing purposes only. let hints = diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/components/tail_to_public_output_composer.nr b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/components/tail_to_public_output_composer.nr index 8371ea5e95c0..b1d65355b023 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/components/tail_to_public_output_composer.nr +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/components/tail_to_public_output_composer.nr @@ -59,7 +59,7 @@ impl TailToPublicOutputComposer { max_timestamp, ); - let mut output = PrivateToPublicKernelCircuitPublicInputs { + let output = PrivateToPublicKernelCircuitPublicInputs { constants: source.constants.to_tx_constant_data(), non_revertible_accumulated_data, revertible_accumulated_data, diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/reset/key_validation_request/tests/mod.nr b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/reset/key_validation_request/tests/mod.nr index c0f69f6c064f..1f5d66b0d683 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/reset/key_validation_request/tests/mod.nr +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/reset/key_validation_request/tests/mod.nr @@ -10,6 +10,7 @@ use types::{ abis::validation_requests::{KeyValidationRequest, KeyValidationRequestAndSeparator}, address::AztecAddress, hash::compute_app_siloed_secret_key, + point::Point, scalar::Scalar, side_effect::Scoped, traits::{Empty, FromField}, @@ -72,7 +73,7 @@ impl TestBuilder { let contract_address = AztecAddress::from_field(456654); let sk_m = Scalar::from_field(sk); - let pk_m = derive_public_key(sk_m); + let pk_m: Point = derive_public_key(sk_m).into(); let key_type_domain_separator = 123321; let sk_app = diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/reset/key_validation_request/validate_key_validation_request.nr b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/reset/key_validation_request/validate_key_validation_request.nr index cc059b761e1b..d8c0ff6f4abe 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/reset/key_validation_request/validate_key_validation_request.nr +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/reset/key_validation_request/validate_key_validation_request.nr @@ -1,7 +1,7 @@ use std::embedded_curve_ops::fixed_base_scalar_mul as derive_public_key; use types::{ abis::validation_requests::KeyValidationRequestAndSeparator, - hash::compute_app_siloed_secret_key, scalar::Scalar, side_effect::Scoped, + hash::compute_app_siloed_secret_key, point::Point, scalar::Scalar, side_effect::Scoped, }; /// Validates a Key Validation Request that an app circuit has submitted to the kernel. @@ -55,7 +55,7 @@ pub fn validate_key_validation_request( let key_type_domain_separator = request_and_separator.key_type_domain_separator; // First we check that the derived public key matches the master public key from the request. - let pk_m = derive_public_key(sk_m); + let pk_m: Point = derive_public_key(sk_m).into(); assert_eq( pk_m, request.pk_m, diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/reset/read_request/tests/read_request_validator_tests.nr b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/reset/read_request/tests/read_request_validator_tests.nr index a2ce41b08ed7..0d44d93e9245 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/reset/read_request/tests/read_request_validator_tests.nr +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/reset/read_request/tests/read_request_validator_tests.nr @@ -113,14 +113,14 @@ fn validate_with_zero_pending_read_amount_hints_non_empty() { #[test(should_fail_with = "SettledReadAmount should match the length of the hints array")] fn validate_with_fewer_settled_read_amount_fails() { - let mut builder = TestBuilder::new_mixed(); + let builder = TestBuilder::new_mixed(); // Validate 1 less than the `settled_read_hints` array length. builder.validate_with_amount::(); } #[test(should_fail_with = "SettledReadAmount should match the length of the hints array")] fn validate_with_more_settled_read_amount_fails() { - let mut builder = TestBuilder::new_mixed(); + let builder = TestBuilder::new_mixed(); // Validate 1 more than the `settled_read_hints` array length. builder.validate_with_amount::(); } diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/tests/private_kernel_init/private_call_data/validate_contract_address_tests.nr b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/tests/private_kernel_init/private_call_data/validate_contract_address_tests.nr index ab3428dedccb..574ae4cceeef 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/tests/private_kernel_init/private_call_data/validate_contract_address_tests.nr +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/tests/private_kernel_init/private_call_data/validate_contract_address_tests.nr @@ -89,7 +89,7 @@ fn incorrect_address_preimage() { let mut builder = TestBuilder::new_with_regular_contract(); builder.private_call.public_keys.ivpk_m.inner = - derive_public_key(EmbeddedCurveScalar::from_field(69)); + derive_public_key(EmbeddedCurveScalar::from_field(69)).into(); builder.execute_and_fail(); } diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/tests/private_kernel_inner/output_composition_tests.nr b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/tests/private_kernel_inner/output_composition_tests.nr index ca4761253b77..d35a85356126 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/tests/private_kernel_inner/output_composition_tests.nr +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/tests/private_kernel_inner/output_composition_tests.nr @@ -30,7 +30,7 @@ fn reverse_array(array: [T; N]) -> [T; N] { #[test] fn with_everything_empty() { - let mut builder = TestBuilder::new(); + let builder = TestBuilder::new(); let pi = builder.execute(); diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/tests/private_kernel_reset/mod.nr b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/tests/private_kernel_reset/mod.nr index aad73cfb1b59..1505a21a533c 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/tests/private_kernel_reset/mod.nr +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/tests/private_kernel_reset/mod.nr @@ -32,6 +32,7 @@ use types::{ }, hash::{compute_app_siloed_secret_key, compute_siloed_nullifier}, merkle_tree::{LeafPreimage, MembershipWitness, test_utils::SingleSubtreeMerkleTree}, + point::Point, side_effect::{Counted, Scoped}, traits::Empty, utils::arrays::find_first_index, @@ -108,7 +109,7 @@ impl TestBuilder { previous_kernel.anchor_block_header.state.partial.nullifier_tree.next_available_leaf_index = nullifier_tree.get_next_available_index(); - let mut output = previous_kernel; + let output = previous_kernel; Self { previous_kernel, @@ -193,7 +194,7 @@ impl TestBuilder { pub fn add_key_validation_request(&mut self, sk: Field) { let sk_m = EmbeddedCurveScalar::from_field(sk); - let pk_m = derive_public_key(sk_m); + let pk_m: Point = derive_public_key(sk_m).into(); let key_type_domain_separator = 123321; let contract_address = self.previous_kernel.contract_address; diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/Nargo.toml b/noir-projects/noir-protocol-circuits/crates/rollup-lib/Nargo.toml index 22f4f9fb9744..bb3dbe8f9d58 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/Nargo.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/Nargo.toml @@ -5,8 +5,8 @@ authors = [""] compiler_version = ">=0.18.0" [dependencies] -bignum = { git = "https://github.com/noir-lang/noir-bignum", tag = "v0.9.0" } -bigcurve = { git = "https://github.com/noir-lang/noir_bigcurve", tag = "v0.13.0" } +bignum = { git = "https://github.com/noir-lang/noir-bignum", tag = "v0.10.0" } +bigcurve = { git = "https://github.com/noir-lang/noir_bigcurve", tag = "v0.14.0" } types = { path = "../types" } protocol_test_utils = { path = "../protocol-test-utils" } blob = { path = "../blob" } diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/checkpoint_merge/tests/mod.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/checkpoint_merge/tests/mod.nr index 70613567ffae..96f8a16da3ee 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/checkpoint_merge/tests/mod.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/checkpoint_merge/tests/mod.nr @@ -44,7 +44,7 @@ impl TestBuilder { Self::validate_input_vk_index(left_rollup_vk_index, num_left_checkpoints); Self::validate_input_vk_index(right_rollup_vk_index, num_right_checkpoints); - let mut fixture_builder = RollupFixtureBuilder::new(); + let fixture_builder = RollupFixtureBuilder::new(); let start_slot_number = fixture_builder.start_slot_number; let left_rollup = fixture_builder.get_merged_checkpoint_rollup_public_inputs( diff --git a/noir-projects/noir-protocol-circuits/crates/serde/src/type_impls.nr b/noir-projects/noir-protocol-circuits/crates/serde/src/type_impls.nr index 7d533d01f1a3..7400319af14f 100644 --- a/noir-projects/noir-protocol-circuits/crates/serde/src/type_impls.nr +++ b/noir-projects/noir-protocol-circuits/crates/serde/src/type_impls.nr @@ -2,7 +2,6 @@ use crate::{reader::Reader, serialization::{Deserialize, Serialize}, writer::Wri use std::embedded_curve_ops::EmbeddedCurvePoint; use std::embedded_curve_ops::EmbeddedCurveScalar; -global U1_SERIALIZED_LEN: u32 = 1; global BOOL_SERIALIZED_LEN: u32 = 1; global U8_SERIALIZED_LEN: u32 = 1; global U16_SERIALIZED_LEN: u32 = 1; @@ -46,37 +45,6 @@ impl Deserialize for bool { } } -impl Serialize for u1 { - let N: u32 = U1_SERIALIZED_LEN; - - fn serialize(self) -> [Field; Self::N] { - let mut writer: Writer = Writer::new(); - self.stream_serialize(&mut writer); - writer.finish() - } - - #[inline_always] - fn stream_serialize(self, writer: &mut Writer) { - writer.write(self as Field); - } -} - -impl Deserialize for u1 { - let N: u32 = U1_SERIALIZED_LEN; - - fn deserialize(fields: [Field; Self::N]) -> Self { - let mut reader = Reader::new(fields); - let result = Self::stream_deserialize(&mut reader); - reader.finish(); - result - } - - #[inline_always] - fn stream_deserialize(reader: &mut Reader) -> Self { - reader.read() as u1 - } -} - impl Serialize for u8 { let N: u32 = U8_SERIALIZED_LEN; @@ -507,19 +475,18 @@ impl Deserialize for EmbeddedCurveScalar { } } -global POINT_SIZE: u32 = 3; +global POINT_SIZE: u32 = 2; impl Serialize for EmbeddedCurvePoint { let N: u32 = POINT_SIZE; fn serialize(self) -> [Field; Self::N] { - [self.x, self.y, self.is_infinite as Field] + [self.x, self.y] } fn stream_serialize(self, writer: &mut Writer) { writer.write(self.x); writer.write(self.y); - writer.write(self.is_infinite as Field); } } @@ -527,12 +494,12 @@ impl Deserialize for EmbeddedCurvePoint { let N: u32 = POINT_SIZE; fn deserialize(fields: [Field; Self::N]) -> Self { - Self { x: fields[0], y: fields[1], is_infinite: fields[2] != 0 } + Self { x: fields[0], y: fields[1] } } #[inline_always] fn stream_deserialize(reader: &mut Reader) -> Self { - Self { x: reader.read(), y: reader.read(), is_infinite: reader.read_bool() } + Self { x: reader.read(), y: reader.read() } } } diff --git a/noir-projects/noir-protocol-circuits/crates/types/Nargo.toml b/noir-projects/noir-protocol-circuits/crates/types/Nargo.toml index 1a03a325e8f0..002e007d8064 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/Nargo.toml +++ b/noir-projects/noir-protocol-circuits/crates/types/Nargo.toml @@ -6,5 +6,5 @@ compiler_version = ">=0.18.0" [dependencies] sha256 = { tag = "v0.3.0", git = "https://github.com/noir-lang/sha256" } -poseidon = { tag = "v0.2.3", git = "https://github.com/noir-lang/poseidon" } +poseidon = { tag = "v0.3.0", git = "https://github.com/noir-lang/poseidon" } serde = { path = "../serde" } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/avm_circuit_public_inputs.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/avm_circuit_public_inputs.nr index be31184563df..df76c1f727db 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/avm_circuit_public_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/avm_circuit_public_inputs.nr @@ -383,19 +383,24 @@ impl AvmCircuitPublicInputs { ); // Previous non-revertible accumulated data array lengths - cols[0][AVM_PUBLIC_INPUTS_PREVIOUS_NON_REVERTIBLE_ACCUMULATED_DATA_ARRAY_LENGTHS_NOTE_HASHES_ROW_IDX] = + cols[0][ + AVM_PUBLIC_INPUTS_PREVIOUS_NON_REVERTIBLE_ACCUMULATED_DATA_ARRAY_LENGTHS_NOTE_HASHES_ROW_IDX] = self.previous_non_revertible_accumulated_data_array_lengths.note_hashes as Field; - cols[0][AVM_PUBLIC_INPUTS_PREVIOUS_NON_REVERTIBLE_ACCUMULATED_DATA_ARRAY_LENGTHS_NULLIFIERS_ROW_IDX] = + cols[0][ + AVM_PUBLIC_INPUTS_PREVIOUS_NON_REVERTIBLE_ACCUMULATED_DATA_ARRAY_LENGTHS_NULLIFIERS_ROW_IDX] = self.previous_non_revertible_accumulated_data_array_lengths.nullifiers as Field; cols[0][ - AVM_PUBLIC_INPUTS_PREVIOUS_NON_REVERTIBLE_ACCUMULATED_DATA_ARRAY_LENGTHS_L2_TO_L1_MSGS_ROW_IDX] = + AVM_PUBLIC_INPUTS_PREVIOUS_NON_REVERTIBLE_ACCUMULATED_DATA_ARRAY_LENGTHS_L2_TO_L1_MSGS_ROW_IDX] = self.previous_non_revertible_accumulated_data_array_lengths.l2_to_l1_msgs as Field; // Previous revertible accumulated data array lengths - cols[0][AVM_PUBLIC_INPUTS_PREVIOUS_REVERTIBLE_ACCUMULATED_DATA_ARRAY_LENGTHS_NOTE_HASHES_ROW_IDX] = - self.previous_revertible_accumulated_data_array_lengths.note_hashes as Field; - cols[0][AVM_PUBLIC_INPUTS_PREVIOUS_REVERTIBLE_ACCUMULATED_DATA_ARRAY_LENGTHS_NULLIFIERS_ROW_IDX] = - self.previous_revertible_accumulated_data_array_lengths.nullifiers as Field; - cols[0][AVM_PUBLIC_INPUTS_PREVIOUS_REVERTIBLE_ACCUMULATED_DATA_ARRAY_LENGTHS_L2_TO_L1_MSGS_ROW_IDX] = + cols[0][ + AVM_PUBLIC_INPUTS_PREVIOUS_REVERTIBLE_ACCUMULATED_DATA_ARRAY_LENGTHS_NOTE_HASHES_ROW_IDX + ] = self.previous_revertible_accumulated_data_array_lengths.note_hashes as Field; + cols[0][ + AVM_PUBLIC_INPUTS_PREVIOUS_REVERTIBLE_ACCUMULATED_DATA_ARRAY_LENGTHS_NULLIFIERS_ROW_IDX + ] = self.previous_revertible_accumulated_data_array_lengths.nullifiers as Field; + cols[0][ + AVM_PUBLIC_INPUTS_PREVIOUS_REVERTIBLE_ACCUMULATED_DATA_ARRAY_LENGTHS_L2_TO_L1_MSGS_ROW_IDX] = self.previous_revertible_accumulated_data_array_lengths.l2_to_l1_msgs as Field; // Previous non-revertible accumulated data diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr b/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr index 38e063a62be9..312ae5bb5c58 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr @@ -10,8 +10,7 @@ use crate::{ utils::field::sqrt, }; -// We do below because `use crate::point::Point;` does not work -use std::embedded_curve_ops::EmbeddedCurvePoint as Point; +use crate::point::Point; use crate::public_keys::AddressPoint; use std::{ @@ -139,9 +138,11 @@ impl AztecAddress { ); // Note: `.add()` will fail within the blackbox fn if either of the points are not on the curve. (See tests below). - let address_point = derive_public_key(EmbeddedCurveScalar::from_field(pre_address)).add( - public_keys.ivpk_m.to_point(), - ); + // TODO(F-553): Drop the `.to_embedded()` / `.into()` round-trip once the custom `Point` wrapper is removed and + // we use `EmbeddedCurvePoint` directly. + let address_point: Point = derive_public_key(EmbeddedCurveScalar::from_field(pre_address)) + .add(public_keys.ivpk_m.to_point().to_embedded()) + .into(); // Note that our address is only the x-coordinate of the full address_point. This is okay because when people want to encrypt something and send it to us // they can recover our full point using the x-coordinate (our address itself). To do this, they recompute the y-coordinate according to the equation y^2 = x^3 - 17. diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/blob_data/block_blob_data.nr b/noir-projects/noir-protocol-circuits/crates/types/src/blob_data/block_blob_data.nr index 21906c431213..867904610cf7 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/blob_data/block_blob_data.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/blob_data/block_blob_data.nr @@ -112,7 +112,7 @@ mod tests { NUM_TXS_BIT_SIZE, TIMESTAMP_BIT_SIZE, TOTAL_MANA_USED_BIT_SIZE, }; - fn accumulate_bits(bits: [u1; N], offset: u32, num_bits: u32) -> Field { + fn accumulate_bits(bits: [bool; N], offset: u32, num_bits: u32) -> Field { let mut accum = 0; let mut shift = 1; for i in 0..num_bits { @@ -131,7 +131,7 @@ mod tests { let block_end_marker = create_block_end_marker(global_variables, num_txs); - let bits: [u1; 254] = block_end_marker.to_le_bits(); + let bits: [bool; 254] = block_end_marker.to_le_bits(); let mut offset = 0; assert_eq(accumulate_bits(bits, offset, NUM_TXS_BIT_SIZE), 99); // num_txs offset += NUM_TXS_BIT_SIZE; @@ -157,7 +157,7 @@ mod tests { let block_end_marker = create_block_end_marker(global_variables, num_txs); - let bits: [u1; 254] = block_end_marker.to_le_bits(); + let bits: [bool; 254] = block_end_marker.to_le_bits(); let mut offset = 0; assert_eq(accumulate_bits(bits, offset, NUM_TXS_BIT_SIZE), 0xfedc); offset += NUM_TXS_BIT_SIZE; @@ -188,7 +188,7 @@ mod tests { let end_state_field = create_block_end_state_field(state, total_mana_used); - let bits: [u1; 254] = end_state_field.to_le_bits(); + let bits: [bool; 254] = end_state_field.to_le_bits(); let mut offset = 0; assert_eq(accumulate_bits(bits, offset, TOTAL_MANA_USED_BIT_SIZE), 87654321); // total_mana_used offset += TOTAL_MANA_USED_BIT_SIZE; @@ -222,7 +222,7 @@ mod tests { let end_state_field = create_block_end_state_field(state, total_mana_used); - let bits: [u1; 254] = end_state_field.to_le_bits(); + let bits: [bool; 254] = end_state_field.to_le_bits(); let mut offset = 0; assert_eq(accumulate_bits(bits, offset, TOTAL_MANA_USED_BIT_SIZE), total_mana_used); offset += TOTAL_MANA_USED_BIT_SIZE; diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr index b4d8c1a41347..16fd271a96b6 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr @@ -103,30 +103,30 @@ pub global MAX_KEY_VALIDATION_REQUESTS_PER_CALL: u32 = MAX_PRIVATE_LOGS_PER_CALL pub global NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP: u32 = 1 << L1_TO_L2_MSG_SUBTREE_HEIGHT; // VK TREE CONSTANTS -pub comptime global PRIVATE_KERNEL_INIT_VK_INDEX: u32 = 0; -pub comptime global PRIVATE_KERNEL_INNER_VK_INDEX: u32 = 1; -pub comptime global PRIVATE_KERNEL_TAIL_VK_INDEX: u32 = 2; -pub comptime global PRIVATE_KERNEL_TAIL_TO_PUBLIC_VK_INDEX: u32 = 3; -pub comptime global HIDING_KERNEL_TO_ROLLUP_VK_INDEX: u32 = 4; -pub comptime global HIDING_KERNEL_TO_PUBLIC_VK_INDEX: u32 = 5; -pub comptime global PUBLIC_CHONK_VERIFIER_VK_INDEX: u32 = 6; -pub comptime global PRIVATE_TX_BASE_ROLLUP_VK_INDEX: u32 = 7; -pub comptime global PUBLIC_TX_BASE_ROLLUP_VK_INDEX: u32 = 8; -pub comptime global TX_MERGE_ROLLUP_VK_INDEX: u32 = 9; -pub comptime global BLOCK_ROOT_FIRST_ROLLUP_VK_INDEX: u32 = 10; -pub comptime global BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP_VK_INDEX: u32 = 11; -pub comptime global BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP_VK_INDEX: u32 = 12; -pub comptime global BLOCK_ROOT_ROLLUP_VK_INDEX: u32 = 13; -pub comptime global BLOCK_ROOT_SINGLE_TX_ROLLUP_VK_INDEX: u32 = 14; -pub comptime global BLOCK_MERGE_ROLLUP_VK_INDEX: u32 = 15; -pub comptime global CHECKPOINT_ROOT_ROLLUP_VK_INDEX: u32 = 16; -pub comptime global CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP_VK_INDEX: u32 = 17; -pub comptime global CHECKPOINT_PADDING_ROLLUP_VK_INDEX: u32 = 18; -pub comptime global CHECKPOINT_MERGE_ROLLUP_VK_INDEX: u32 = 19; -pub comptime global ROOT_ROLLUP_VK_INDEX: u32 = 20; -pub comptime global PARITY_BASE_VK_INDEX: u32 = 21; -pub comptime global PARITY_ROOT_VK_INDEX: u32 = 22; -pub comptime global PRIVATE_KERNEL_RESET_VK_INDEX: u32 = 23; +pub global PRIVATE_KERNEL_INIT_VK_INDEX: u32 = 0; +pub global PRIVATE_KERNEL_INNER_VK_INDEX: u32 = 1; +pub global PRIVATE_KERNEL_TAIL_VK_INDEX: u32 = 2; +pub global PRIVATE_KERNEL_TAIL_TO_PUBLIC_VK_INDEX: u32 = 3; +pub global HIDING_KERNEL_TO_ROLLUP_VK_INDEX: u32 = 4; +pub global HIDING_KERNEL_TO_PUBLIC_VK_INDEX: u32 = 5; +pub global PUBLIC_CHONK_VERIFIER_VK_INDEX: u32 = 6; +pub global PRIVATE_TX_BASE_ROLLUP_VK_INDEX: u32 = 7; +pub global PUBLIC_TX_BASE_ROLLUP_VK_INDEX: u32 = 8; +pub global TX_MERGE_ROLLUP_VK_INDEX: u32 = 9; +pub global BLOCK_ROOT_FIRST_ROLLUP_VK_INDEX: u32 = 10; +pub global BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP_VK_INDEX: u32 = 11; +pub global BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP_VK_INDEX: u32 = 12; +pub global BLOCK_ROOT_ROLLUP_VK_INDEX: u32 = 13; +pub global BLOCK_ROOT_SINGLE_TX_ROLLUP_VK_INDEX: u32 = 14; +pub global BLOCK_MERGE_ROLLUP_VK_INDEX: u32 = 15; +pub global CHECKPOINT_ROOT_ROLLUP_VK_INDEX: u32 = 16; +pub global CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP_VK_INDEX: u32 = 17; +pub global CHECKPOINT_PADDING_ROLLUP_VK_INDEX: u32 = 18; +pub global CHECKPOINT_MERGE_ROLLUP_VK_INDEX: u32 = 19; +pub global ROOT_ROLLUP_VK_INDEX: u32 = 20; +pub global PARITY_BASE_VK_INDEX: u32 = 21; +pub global PARITY_ROOT_VK_INDEX: u32 = 22; +pub global PRIVATE_KERNEL_RESET_VK_INDEX: u32 = 23; // Important: Do not define indexes after the PRIVATE_KERNEL_RESET_VK_INDEX. They are allocated for the variants of private kernel reset. // SIDE EFFECT RELATED CONSTANTS diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/delayed_public_mutable/delayed_public_mutable_values.nr b/noir-projects/noir-protocol-circuits/crates/types/src/delayed_public_mutable/delayed_public_mutable_values.nr index 9d23856dabcb..eaa9b36b07cd 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/delayed_public_mutable/delayed_public_mutable_values.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/delayed_public_mutable/delayed_public_mutable_values.nr @@ -64,13 +64,13 @@ pub fn unpack_delay_change( let sdc_timestamp_of_change = tmp as u32; tmp = (tmp - sdc_timestamp_of_change as Field) / TWO_POW_32; - let sdc_post_is_some = (tmp as u1) != 0; + let sdc_post_is_some = (tmp as u8) % 2 != 0; tmp = (tmp - sdc_post_is_some as Field) / TWO_POW_8; let sdc_post_inner = tmp as u32; tmp = (tmp - sdc_post_inner as Field) / TWO_POW_32; - let sdc_pre_is_some = (tmp as u1) != 0; + let sdc_pre_is_some = (tmp as u8) % 2 != 0; tmp = (tmp - sdc_pre_is_some as Field) / TWO_POW_8; let sdc_pre_inner = tmp as u32; diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/delayed_public_mutable/scheduled_value_change/test.nr b/noir-projects/noir-protocol-circuits/crates/types/src/delayed_public_mutable/scheduled_value_change/test.nr index 7e01cd58e53a..aef81125c1e1 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/delayed_public_mutable/scheduled_value_change/test.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/delayed_public_mutable/scheduled_value_change/test.nr @@ -118,7 +118,7 @@ unconstrained fn test_get_time_horizon_n0_delay() { let anchor_block_timestamp = 100; let timestamp_of_change = 50; - let mut value_change: ScheduledValueChange = + let value_change: ScheduledValueChange = ScheduledValueChange::new(1, 2, timestamp_of_change); let time_horizon = value_change.get_time_horizon(anchor_block_timestamp, 0); diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr b/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr index 85cfcb3c3fb5..a9642b1937b5 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr @@ -273,8 +273,8 @@ pub fn poseidon2_hash_bytes(inputs: [u8; N]) -> Field { #[test] fn subarray_hash_matches_fixed() { - let mut values_to_hash = [3; 17]; - let mut padded = values_to_hash.concat([0; 11]); + let values_to_hash = [3; 17]; + let padded = values_to_hash.concat([0; 11]); let subarray_hash = poseidon2_hash_subarray(padded, values_to_hash.len()); // Hash the entire values_to_hash. @@ -285,8 +285,8 @@ fn subarray_hash_matches_fixed() { #[test] fn subarray_hash_matches_variable() { - let mut values_to_hash = [3; 17]; - let mut padded = values_to_hash.concat([0; 11]); + let values_to_hash = [3; 17]; + let padded = values_to_hash.concat([0; 11]); let subarray_hash = poseidon2_hash_subarray(padded, values_to_hash.len()); // Hash up to values_to_hash.len() fields of the padded array. diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/hash/poseidon2_chunks.nr b/noir-projects/noir-protocol-circuits/crates/types/src/hash/poseidon2_chunks.nr index 68b8ef88d8db..199303238866 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/hash/poseidon2_chunks.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/hash/poseidon2_chunks.nr @@ -68,7 +68,7 @@ fn absorb_full_permutations( for j in 0..3 { sponge.state[j] += sponge.cache[j]; } - sponge.state = std::hash::poseidon2_permutation(sponge.state, 4); + sponge.state = std::hash::poseidon2_permutation(sponge.state); sponge.cache[0] = input[chunk_base_index + 2]; } } @@ -274,7 +274,7 @@ mod tests { fn existing_sponge_poseidon_chunks_matches_fixed() { let in_len = 501; let mut input: [Field; 4096] = [0; 4096]; - let mut fixed_input = [3; 501]; + let fixed_input = [3; 501]; assert(in_len == fixed_input.len()); // sanity check for i in 0..in_len { input[i] = 3; @@ -291,7 +291,7 @@ mod tests { #[test] fn poseidon_chunks_empty_inputs() { let in_len = 0; - let mut input: [Field; 4096] = [0; 4096]; + let input: [Field; 4096] = [0; 4096]; let mut constructed_empty_sponge = poseidon2_absorb_in_chunks(input, in_len); let mut first_sponge = poseidon2_absorb_in_chunks_existing_sponge(constructed_empty_sponge, input, in_len); diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/merkle_tree/root.nr b/noir-projects/noir-protocol-circuits/crates/types/src/merkle_tree/root.nr index a6c49e8f41d3..098760a9e5ee 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/merkle_tree/root.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/merkle_tree/root.nr @@ -20,10 +20,10 @@ pub fn root_from_sibling_path_with_hasher( hasher: fn(Field, Field) -> Field, ) -> Field { let mut node = leaf; - let indices: [u1; N] = leaf_index.to_le_bits(); + let indices: [bool; N] = leaf_index.to_le_bits(); for i in 0..N { - let (hash_left, hash_right) = if indices[i] == 1 { + let (hash_left, hash_right) = if indices[i] { (sibling_path[i], node) } else { (node, sibling_path[i]) diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/point.nr b/noir-projects/noir-protocol-circuits/crates/types/src/point.nr index 07e1bfe0c3ff..289ee5fcb2b1 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/point.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/point.nr @@ -1,8 +1,72 @@ -pub use std::embedded_curve_ops::EmbeddedCurvePoint as Point; -use crate::{hash::poseidon2_hash, traits::{Deserialize, Empty, Hash, Packable, Serialize}}; +use crate::{ + hash::poseidon2_hash, + traits::{Deserialize, Empty, Hash, Packable, Serialize}, + utils::{reader::Reader, writer::Writer}, +}; +use std::embedded_curve_ops::EmbeddedCurvePoint; pub global POINT_LENGTH: u32 = 3; +// TODO(F-553): This custom `Point` struct is a temporary workaround. A newer version of Noir dropped the `is_infinite` +// field from `EmbeddedCurvePoint` and changed its serialization from 3 fields to 2. To preserve backwards compatibility +// of our onchain serialization format we re-introduced our own `Point` that wraps `EmbeddedCurvePoint` and keeps the +// old 3-field layout. Once we're ready to take the breaking change (e.g. alongside the v5 oracle changes), delete this +// struct, use `EmbeddedCurvePoint` directly and reduce `POINT_LENGTH` to 2. +pub struct Point { + pub x: Field, + pub y: Field, + pub is_infinite: bool, +} + +impl Point { + pub fn generator() -> Self { + let g = EmbeddedCurvePoint::generator(); + Point { x: g.x, y: g.y, is_infinite: false } + } + + pub fn point_at_infinity() -> Self { + Point { x: 0, y: 0, is_infinite: true } + } + + pub fn double(self) -> Self { + self.to_embedded().double().into() + } + + pub fn to_embedded(self) -> EmbeddedCurvePoint { + EmbeddedCurvePoint { x: self.x, y: self.y } + } +} + +impl From for Point { + fn from(p: EmbeddedCurvePoint) -> Self { + Point { x: p.x, y: p.y, is_infinite: p.is_infinite() } + } +} + +impl std::ops::Add for Point { + fn add(self, other: Point) -> Point { + (self.to_embedded() + other.to_embedded()).into() + } +} + +impl std::ops::Sub for Point { + fn sub(self, other: Point) -> Point { + (self.to_embedded() - other.to_embedded()).into() + } +} + +impl std::ops::Neg for Point { + fn neg(self) -> Point { + Point { x: self.x, y: -self.y, is_infinite: self.is_infinite } + } +} + +impl Eq for Point { + fn eq(self, other: Point) -> bool { + (self.x == other.x) & (self.y == other.y) & (self.is_infinite == other.is_infinite) + } +} + impl Hash for Point { fn hash(self) -> Field { poseidon2_hash(self.serialize()) @@ -17,6 +81,33 @@ impl Empty for Point { } } +impl Serialize for Point { + let N: u32 = POINT_LENGTH; + + fn serialize(self) -> [Field; Self::N] { + [self.x, self.y, self.is_infinite as Field] + } + + fn stream_serialize(self, writer: &mut Writer) { + writer.write(self.x); + writer.write(self.y); + writer.write(self.is_infinite as Field); + } +} + +impl Deserialize for Point { + let N: u32 = POINT_LENGTH; + + fn deserialize(fields: [Field; Self::N]) -> Self { + Point { x: fields[0], y: fields[1], is_infinite: fields[2] != 0 } + } + + #[inline_always] + fn stream_deserialize(reader: &mut Reader) -> Self { + Point { x: reader.read(), y: reader.read(), is_infinite: reader.read_bool() } + } +} + pub fn validate_on_curve(p: Point) { // y^2 == x^3 - 17 let x = p.x; @@ -44,8 +135,7 @@ impl Packable for Point { } mod tests { - use super::validate_on_curve; - use std::embedded_curve_ops::EmbeddedCurvePoint as Point; + use super::{Point, validate_on_curve}; #[test] unconstrained fn test_validate_on_curve_generator() { diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/poseidon2.nr b/noir-projects/noir-protocol-circuits/crates/types/src/poseidon2.nr index a4391b65fcdc..b56b419c225d 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/poseidon2.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/poseidon2.nr @@ -5,8 +5,9 @@ use std::meta::derive; // It exists as we sometimes need to perform custom absorption, but the stdlib version // has a private absorb() method (it's also designed to just be a hasher) // Can be removed when standalone noir poseidon lib exists: See noir#6679 +// TODO: Poseidon is stand-alone now -comptime global RATE: u32 = 3; +global RATE: u32 = 3; #[derive(Deserialize, Eq, Serialize)] pub struct Poseidon2Sponge { @@ -38,7 +39,7 @@ impl Poseidon2Sponge { self.state[i] += self.cache[i]; } } - self.state = std::hash::poseidon2_permutation(self.state, 4); + self.state = std::hash::poseidon2_permutation(self.state); } pub fn absorb(&mut self, input: Field) { diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/public_keys.nr b/noir-projects/noir-protocol-circuits/crates/types/src/public_keys.nr index 1841184d1bed..ee6c9e5b291a 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/public_keys.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/public_keys.nr @@ -9,8 +9,8 @@ use crate::{ traits::{Deserialize, Hash, Serialize}, }; +use crate::point::Point; use std::{default::Default, meta::derive}; -use std::embedded_curve_ops::EmbeddedCurvePoint as Point; pub trait ToPoint { fn to_point(self) -> Point; @@ -127,12 +127,12 @@ impl ToPoint for AddressPoint { } mod test { + use crate::point::Point; use crate::{ point::POINT_LENGTH, public_keys::{IvpkM, NpkM, OvpkM, PublicKeys, TpkM}, traits::{Deserialize, Serialize}, }; - use std::embedded_curve_ops::EmbeddedCurvePoint as Point; #[test] unconstrained fn compute_public_keys_hash() { diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/traits/empty.nr b/noir-projects/noir-protocol-circuits/crates/types/src/traits/empty.nr index 3aa3601b8a5c..ab073d2bd6e8 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/traits/empty.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/traits/empty.nr @@ -49,12 +49,6 @@ impl Empty for bool { } } -impl Empty for u1 { - #[inline_always] - fn empty() -> Self { - 0 - } -} impl Empty for u8 { #[inline_always] fn empty() -> Self { diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/traits/from_field.nr b/noir-projects/noir-protocol-circuits/crates/types/src/traits/from_field.nr index 0cfa123fef8d..cddeea66fe69 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/traits/from_field.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/traits/from_field.nr @@ -15,12 +15,6 @@ impl FromField for bool { value != 0 } } -impl FromField for u1 { - #[inline_always] - fn from_field(value: Field) -> Self { - value as u1 - } -} impl FromField for u8 { #[inline_always] fn from_field(value: Field) -> Self { diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/traits/packable.nr b/noir-projects/noir-protocol-circuits/crates/types/src/traits/packable.nr index 2ffc97c22dd9..62544e37ca81 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/traits/packable.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/traits/packable.nr @@ -66,8 +66,8 @@ use crate::meta::derive_packable; /// } /// /// fn unpack(packed: [Field; Self::N]) -> Self { -/// let b = (packed[0] as u1) != 0; -/// let a = (((packed[0] - b as Field) / 2.pow_32(1)) as u1) != 0; +/// let b = (packed[0] as u8) % 2 != 0; +/// let a = ((packed[0] - b as Field) / 2.pow_32(1)) != 0; /// /// Self { a, b } /// } @@ -105,8 +105,9 @@ mod test { } fn unpack(packed: [Field; Self::N]) -> Self { - let b = (packed[0] as u1) != 0; - let a = (((packed[0] - b as Field) / 2.pow_32(1)) as u1) != 0; + let bits: [bool; 2] = packed[0].to_le_bits(); + let b = bits[0]; + let a = bits[1]; Self { a, b } } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/traits/to_field.nr b/noir-projects/noir-protocol-circuits/crates/types/src/traits/to_field.nr index c1ddfaa3c593..6344c40cf629 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/traits/to_field.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/traits/to_field.nr @@ -17,12 +17,6 @@ impl ToField for bool { self as Field } } -impl ToField for u1 { - #[inline_always] - fn to_field(self) -> Field { - self as Field - } -} impl ToField for u8 { #[inline_always] fn to_field(self) -> Field { diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/type_packing.nr b/noir-projects/noir-protocol-circuits/crates/types/src/type_packing.nr index 97f1f779a494..bee6737454fd 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/type_packing.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/type_packing.nr @@ -22,7 +22,7 @@ impl Packable for bool { #[inline_always] fn unpack(fields: [Field; Self::N]) -> bool { - (fields[0] as u1) != 0 + (fields[0] as u8) % 2 != 0 } } @@ -187,7 +187,7 @@ where #[inline_always] fn unpack(fields: [Field; Self::N]) -> Self { let mut reader = crate::utils::reader::Reader::new(fields); - let mut result: [T; M] = std::mem::zeroed(); + let result: [T; M] = std::mem::zeroed(); reader.read_struct_array::::N, M>(Packable::unpack, result) } } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/utils/arrays/claimed_length_array.nr b/noir-projects/noir-protocol-circuits/crates/types/src/utils/arrays/claimed_length_array.nr index 78919339e4d7..c7570002e0b1 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/utils/arrays/claimed_length_array.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/utils/arrays/claimed_length_array.nr @@ -56,7 +56,7 @@ where pub fn pop(&mut self) -> T { assert(self.length != 0, "Array empty"); - let mut top_index = self.length - 1; + let top_index = self.length - 1; let popped_item = self.array[top_index]; self.array[top_index] = T::empty(); self.length -= 1; diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/utils/field.nr b/noir-projects/noir-protocol-circuits/crates/types/src/utils/field.nr index ff880bf992c1..83a23479b5be 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/utils/field.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/utils/field.nr @@ -55,7 +55,7 @@ global C5: Field = 1910321906792171394429139282769207003614565195732928631530564 // Only if your exponent is larger than 32 bits, resort to using this function. pub fn pow(x: Field, y: Field) -> Field { let mut r = 1 as Field; - let b: [u1; 254] = y.to_le_bits(); + let b: [bool; 254] = y.to_le_bits(); for i in 0..254 { r *= r; diff --git a/noir/noir-repo b/noir/noir-repo index 190931435915..842974fcf034 160000 --- a/noir/noir-repo +++ b/noir/noir-repo @@ -1 +1 @@ -Subproject commit 190931435915a6ef908d9be090036d98356237b3 +Subproject commit 842974fcf034b0a652631e69fc24f92f9ddd1d37 diff --git a/yarn-project/end-to-end/src/e2e_multiple_blobs.test.ts b/yarn-project/end-to-end/src/e2e_multiple_blobs.test.ts index c46a88a5954d..710a09ed3695 100644 --- a/yarn-project/end-to-end/src/e2e_multiple_blobs.test.ts +++ b/yarn-project/end-to-end/src/e2e_multiple_blobs.test.ts @@ -65,7 +65,7 @@ describe('e2e_multiple_blobs', () => { defaultAccountAddress, true, ), - contract.methods.emit_public(Fr.random()), + contract.methods.emit_full_size_public_log(Fr.random()), ]), ]; diff --git a/yarn-project/foundation/src/curves/grumpkin/point.ts b/yarn-project/foundation/src/curves/grumpkin/point.ts index 4254c0012407..05405446058d 100644 --- a/yarn-project/foundation/src/curves/grumpkin/point.ts +++ b/yarn-project/foundation/src/curves/grumpkin/point.ts @@ -125,9 +125,12 @@ export class Point { } /** - * Returns the contents of the point as an array of 2 fields. - * @returns The point as an array of 2 fields + * Returns the contents of the point as an array of 3 fields. + * @returns The point as an array of 3 fields */ + // TODO(F-553): Once we take the breaking change and drop the custom Noir `Point` wrapper in + // `noir-projects/noir-protocol-circuits/crates/types/src/point.nr`, revert this to serialize as `[x, y]` (2 fields) + // and drop the `is_infinite` flag from `fromFields` / `toNoirStruct` below. toFields() { return [this.x, this.y, new Fr(this.isInfinite)]; } diff --git a/yarn-project/noir-protocol-circuits-types/src/noir_test_gen.test.ts b/yarn-project/noir-protocol-circuits-types/src/noir_test_gen.test.ts index 78ff3eb1006e..b5b9b31845f8 100644 --- a/yarn-project/noir-protocol-circuits-types/src/noir_test_gen.test.ts +++ b/yarn-project/noir-protocol-circuits-types/src/noir_test_gen.test.ts @@ -111,7 +111,7 @@ describe('Data generation for noir tests', () => { // Run with AZTEC_GENERATE_TEST_DATA=1 to update noir test data. updateInlineTestData( - 'noir-projects/noir-protocol-circuits/crates/types/src/tests/fixtures/contracts.nr', + 'noir-projects/noir-protocol-circuits/crates/protocol-test-utils/src/fixtures/contracts.nr', `${namePrefix}_contract`, `ContractData ${format(contractData)}`, ); @@ -138,7 +138,7 @@ describe('Data generation for noir tests', () => { // Run with AZTEC_GENERATE_TEST_DATA=1 to update noir test data. updateInlineTestData( - 'noir-projects/noir-protocol-circuits/crates/types/src/tests/fixtures/contract_functions.nr', + 'noir-projects/noir-protocol-circuits/crates/protocol-test-utils/src/fixtures/contract_functions.nr', `${namePrefix}_private_function`, `ContractFunction ${format(functionData)}`, ); diff --git a/yarn-project/stdlib/src/abi/abi.ts b/yarn-project/stdlib/src/abi/abi.ts index abd991e430b4..3238ce944ada 100644 --- a/yarn-project/stdlib/src/abi/abi.ts +++ b/yarn-project/stdlib/src/abi/abi.ts @@ -224,7 +224,20 @@ export const FunctionDebugMetadataSchema = z.object({ acir_locations: z.record(z.number()), brillig_locations: z.record(z.record(z.number())), }), - files: z.record(z.object({ source: z.string(), path: z.string() })), + // `function_locations` is required in the static `DebugFileMap` type (noir-types compat), but legacy v4-next + // artifacts were compiled before this field existed — see {@link fillMissingFunctionLocations} for the full + // rationale. The preprocessor injects `[]` for missing entries so parsing succeeds; the cast restores the + // output type since `z.preprocess` widens the schema's input type to `unknown`. + files: z.preprocess( + fillMissingFunctionLocations, + z.record( + z.object({ + source: z.string(), + path: z.string(), + function_locations: z.array(z.object({ start: z.number(), name: z.string() })), + }), + ), + ) as z.ZodType, }) satisfies z.ZodType; /** The artifact entry of a function. */ @@ -305,6 +318,14 @@ export interface ProgramDebugInfo { debug_infos: Array; } +/** The range a function occupies in a file. */ +export type FunctionLocation = { + /** The byte where the function starts. */ + start: number; + /** The name of the function. */ + name: string; +}; + /** Maps a file ID to its metadata for debugging purposes. */ export type DebugFileMap = Record< FileId, @@ -313,9 +334,50 @@ export type DebugFileMap = Record< source: string; /** The path of the file. */ path: string; + /** The range each function occupies in the file. */ + function_locations: FunctionLocation[]; } >; +/** + * Preprocessor for {@link FunctionDebugMetadataSchema} / {@link ContractArtifactSchema} that injects an empty + * `function_locations` array on any file map entry missing it. Invoked via `z.preprocess(...)` before the strict + * object schema runs, so legacy inputs do not fail validation. + * + * Why this exists on v4-next (and not on `next` / v5): + * + * - The Noir submodule on `next` was bumped past nightly-2026-03-19, which added `function_locations` to the + * debug file map in the Noir `@aztec/noir-types` package and to every freshly-compiled artifact's `file_map` + * entries. The matching stdlib change (making `DebugFileMap.function_locations` required) was done in one + * go on `next`, so there `function_locations` is always present both at compile time and at runtime. + * + * - On v4-next we had to cherry-pick the Noir bump (chore: Update Noir to nightly-2026-04-10 (#22393)) without + * re-running the full noir-projects compilation pipeline, so the on-disk contract and protocol-circuit + * artifacts (e.g. `yarn-project/protocol-contracts/artifacts/AuthRegistry.json`) still carry the pre-update + * `file_map` shape with only `source` + `path`. Separately, `ivc-integration` compares our `DebugFileMap` + * against the Noir-types `DebugFileMap`, which *does* require `function_locations`, so we cannot simply make + * our own field optional — that would break the structural compatibility check. + * + * - To satisfy both constraints at once we keep `function_locations` required in the static TypeScript type + * (so `ivc-integration` keeps compiling) but relax the runtime input shape via this preprocessor (so legacy + * artifacts keep parsing). Once all v4-next artifacts get regenerated with the new Noir compiler, this + * helper — and both `z.preprocess(...)` wrappers — can be removed. + */ +function fillMissingFunctionLocations(val: unknown): unknown { + if (val && typeof val === 'object') { + for (const entry of Object.values(val as Record)) { + if ( + entry && + typeof entry === 'object' && + (entry as { function_locations?: unknown }).function_locations === undefined + ) { + (entry as { function_locations: FunctionLocation[] }).function_locations = []; + } + } + } + return val; +} + /** Type representing a field layout in the storage of a contract. */ export type FieldLayout = { /** Slot in which the field is stored. */ @@ -367,7 +429,21 @@ export const ContractArtifactSchema = zodFor()( globals: z.record(z.array(AbiValueSchema)), }), storageLayout: z.record(z.object({ slot: schemas.Fr })), - fileMap: z.record(z.coerce.number(), z.object({ source: z.string(), path: z.string() })), + // Legacy v4-next contract artifacts (e.g. `protocol-contracts/artifacts/AuthRegistry.json`) were emitted + // before Noir started including `function_locations` in their `file_map` entries — see + // {@link fillMissingFunctionLocations} for the full rationale. The preprocessor injects `[]` for missing + // entries so parsing succeeds without weakening the static `DebugFileMap` type. + fileMap: z.preprocess( + fillMissingFunctionLocations, + z.record( + z.coerce.number(), + z.object({ + source: z.string(), + path: z.string(), + function_locations: z.array(z.object({ start: z.number(), name: z.string() })), + }), + ), + ), }), ); diff --git a/yarn-project/yarn.lock b/yarn-project/yarn.lock index 61130cb43aa6..d6268a7bcc68 100644 --- a/yarn-project/yarn.lock +++ b/yarn-project/yarn.lock @@ -1671,8 +1671,8 @@ __metadata: version: 0.0.0-use.local resolution: "@aztec/noir-noir_codegen@portal:../noir/packages/noir_codegen::locator=%40aztec%2Faztec3-packages%40workspace%3A." dependencies: - "@aztec/noir-types": "npm:1.0.0-beta.18" - glob: "npm:^13.0.0" + "@aztec/noir-types": "npm:1.0.0-beta.19" + glob: "npm:^13.0.6" ts-command-line-args: "npm:^2.5.1" bin: noir-codegen: lib/main.js @@ -1680,14 +1680,14 @@ __metadata: linkType: soft "@aztec/noir-noir_js@file:../noir/packages/noir_js::locator=%40aztec%2Faztec3-packages%40workspace%3A.": - version: 1.0.0-beta.18 - resolution: "@aztec/noir-noir_js@file:../noir/packages/noir_js#../noir/packages/noir_js::hash=e37c31&locator=%40aztec%2Faztec3-packages%40workspace%3A." + version: 1.0.0-beta.19 + resolution: "@aztec/noir-noir_js@file:../noir/packages/noir_js#../noir/packages/noir_js::hash=c0ce11&locator=%40aztec%2Faztec3-packages%40workspace%3A." dependencies: - "@aztec/noir-acvm_js": "npm:1.0.0-beta.18" - "@aztec/noir-noirc_abi": "npm:1.0.0-beta.18" - "@aztec/noir-types": "npm:1.0.0-beta.18" + "@aztec/noir-acvm_js": "npm:1.0.0-beta.19" + "@aztec/noir-noirc_abi": "npm:1.0.0-beta.19" + "@aztec/noir-types": "npm:1.0.0-beta.19" pako: "npm:^2.1.0" - checksum: 10/77cbcdb9a2513f9a48aef0f017923cc54625062b54b40d7e1947c4be6023a30f9db520926a2e345e865700dac842a47ab2c66b3ffd8eee2f7071300b66fce460 + checksum: 10/8e144df7c33c34852a2e26dfff1efeb6d28b7d55e121f4047f53beee09fc73d5b3ba610e1abd108eb55911e084f346e0d101beb8830d916a79883bc6a78d0b6e languageName: node linkType: hard @@ -1695,7 +1695,7 @@ __metadata: version: 0.0.0-use.local resolution: "@aztec/noir-noirc_abi@portal:../noir/packages/noirc_abi::locator=%40aztec%2Faztec3-packages%40workspace%3A." dependencies: - "@aztec/noir-types": "npm:1.0.0-beta.18" + "@aztec/noir-types": "npm:1.0.0-beta.19" languageName: node linkType: soft @@ -10065,6 +10065,15 @@ __metadata: languageName: node linkType: hard +"brace-expansion@npm:^5.0.5": + version: 5.0.5 + resolution: "brace-expansion@npm:5.0.5" + dependencies: + balanced-match: "npm:^4.0.2" + checksum: 10/f259b2ddf04489da9512ad637ba6b4ef2d77abd4445d20f7f1714585f153435200a53fa6a2e4a5ee974df14ddad4cd16421f6f803e96e8b452bd48598878d0ee + languageName: node + linkType: hard + "braces@npm:^3.0.3, braces@npm:~3.0.2": version: 3.0.3 resolution: "braces@npm:3.0.3" @@ -13854,14 +13863,14 @@ __metadata: languageName: node linkType: hard -"glob@npm:^13.0.0": - version: 13.0.0 - resolution: "glob@npm:13.0.0" +"glob@npm:^13.0.6": + version: 13.0.6 + resolution: "glob@npm:13.0.6" dependencies: - minimatch: "npm:^10.1.1" - minipass: "npm:^7.1.2" - path-scurry: "npm:^2.0.0" - checksum: 10/de390721d29ee1c9ea41e40ec2aa0de2cabafa68022e237dc4297665a5e4d650776f2573191984ea1640aba1bf0ea34eddef2d8cbfbfc2ad24b5fb0af41d8846 + minimatch: "npm:^10.2.2" + minipass: "npm:^7.1.3" + path-scurry: "npm:^2.0.2" + checksum: 10/201ad69e5f0aa74e1d8c00a481581f8b8c804b6a4fbfabeeb8541f5d756932800331daeba99b58fb9e4cd67e12ba5a7eba5b82fb476691588418060b84353214 languageName: node linkType: hard @@ -16987,6 +16996,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:^10.2.2": + version: 10.2.5 + resolution: "minimatch@npm:10.2.5" + dependencies: + brace-expansion: "npm:^5.0.5" + checksum: 10/19e87a931aff60ee7b9d80f39f817b8bfc54f61f8356ee3549fbf636dbccacacfec8d803eac73293955c4527cd085247dfc064bce4a5e349f8f3b85e2bf5da0f + languageName: node + linkType: hard + "minimatch@npm:^5.0.1, minimatch@npm:^5.1.6": version: 5.1.9 resolution: "minimatch@npm:5.1.9" @@ -17097,6 +17115,13 @@ __metadata: languageName: node linkType: hard +"minipass@npm:^7.1.3": + version: 7.1.3 + resolution: "minipass@npm:7.1.3" + checksum: 10/175e4d5e20980c3cd316ae82d2c031c42f6c746467d8b1905b51060a0ba4461441a0c25bb67c025fd9617f9a3873e152c7b543c6b5ac83a1846be8ade80dffd6 + languageName: node + linkType: hard + "minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": version: 2.1.2 resolution: "minizlib@npm:2.1.2" @@ -18253,6 +18278,16 @@ __metadata: languageName: node linkType: hard +"path-scurry@npm:^2.0.2": + version: 2.0.2 + resolution: "path-scurry@npm:2.0.2" + dependencies: + lru-cache: "npm:^11.0.0" + minipass: "npm:^7.1.2" + checksum: 10/2b4257422bcb870a4c2d205b3acdbb213a72f5e2250f61c80f79c9d014d010f82bdf8584441612c8e1fa4eb098678f5704a66fa8377d72646bad4be38e57a2c3 + languageName: node + linkType: hard + "path-to-regexp@npm:0.1.12": version: 0.1.12 resolution: "path-to-regexp@npm:0.1.12"