@aztec/protocol-contracts 0.0.1-commit.b64cb54f6 → 0.0.1-commit.b6e433891

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -71,7 +71,7 @@
71
71
  }
72
72
  },
73
73
  "bytecode": "JwACBAEoAAABBIBIJwAABEglAAAASicCBAQCJwIFBAAfCgAEAAUARhwAR0cGLQhGAi0IRwMlAAAAeicCAgRIJwIDBAA7DgADAAIsAABDADBkTnLhMaApuFBFtoGBWF0oM+hIeblwkUPh9ZPwAAAAJwBEBAMnAEUAACYlAAABjx4CAAQBCiIEQwUWCgUGHAoGBwAEKgcEBicCBAEACioFBAckAgAHAAAAsicCCAQAPAYIAR4CAAUACioGBQckAgAHAAAAySUAAAG1JwIFAAEpAgAGAO9SU00tCAEHJwIIBAQACAEIAScDBwQBACIHAggtCggJLQ4GCQAiCQIJLQ4FCQAiCQIJLQ4CCScCBQQILQgACC0KBwotCEQLAAgABQAlAAABxy0CAAAtCgoCCiICRQUKKgUEBiQCAAYAAAFDJQAABP8eAgAEAC8qAAIABAAFHAoFBgYcCgYEABwKBAUGACoFAwQOKgUEBiQCAAYAAAF2JQAABREtCwcDACIDAgMtDgMHHAoEAwAwCgADAAImKAAABAR4SAwAAAQDJAAAAwAAAbQqAQABBdrF9da0SjJtPAQCASYqAQABBXff7AtjnJehPAQCASYlAAABjxwKAwYAKwIABwAAAAAAAAAAAQAAAAAAAAAABCoGBwgtCAEFJwIGBAUACAEGAScDBQQBACIFAgYtCgYHLQxFBwAiBwIHLQxFBwAiBwIHLQxFBwAiBwIHLQ4IBwYiA0QGJwIHBAAnAggBAScCCQQBJwIKBAItCgcEIwAAAkgMKgQGCwAqBQkMLQsMDAAqBQoNLQsNDSQCAAsAAAO7IwAAAmwGIgNECwQiC0QOAioDDgYKKgYHCxYKCw4tCgUEJAIACwAAApQtCgQEJAIACwAAA2ojAAACoQIqAwYLDioGAw8kAgAPAAACuCUAAAUjDCILRA8kAgAPAAACyiUAAAU1ACICAhAAKhALDy0LDw8AKgwPEC0CBQMnAAQEBSUAAAVHLQgFDAAqDAkPLQ4QDwwqCQYFJAIABQAAAw4tCgwEIwAAA2oAKgsJBQ4qCwUGJAIABgAAAyUlAAAFEQwiBUQGJAIABgAAAzclAAAFNQAiAgIIACoIBQYtCwYGACoNBgItAgwDJwAEBAUlAAAFRy0IBQQAKgQKBS0OAgUjAAADagoqAwcFEioFDgMkAgADAAADhS0KBAIjAAADrS0IAQInAgMEBQAIAQMBJwMCBAEAIgQCAwAiAgIFPw8AAwAFIwAAA60AKgIJAy0LAwMtCgMCJgQiBEQLBiILRA8KKg8EDiQCAA4AAAPXJQAABaEMIgtEDiQCAA4AAAPpJQAABTUAIgICDwAqDwsOLQsODgAqDA4PLQIFAycABAQFJQAABUctCAUMACoMCQ4tDg8OACoLCQ4OKgsODyQCAA8AAAQuJQAABREMIg5EDyQCAA8AAARAJQAABTUAIgICEAAqEA4PLQsPDwAqDQ8OLQIMAycABAQFJQAABUctCAUNACoNCg8tDg4PACIFRAwtCwwMACoLCg4OKgsODyQCAA8AAASOJQAABREMIg5ECyQCAAsAAASgJQAABTUAIgICDwAqDw4LLQsLCwAqDAsOLQINAycABAQFJQAABUctCAULACILRAwtDg4MLQgBBScCDAQFAAgBDAEnAwUEAQAiCwIMACIFAg0/DwAMAA0AKgQJCy0KCwQjAAACSCoBAAEFursh14IzGGQ8BAIBJioBAAEF0Afr9MvGZ5A8BAIBJioBAAEFG7xl0D/c6tw8BAIBJioBAAEF5AhQRQK1jB88BAIBJi0BAwYKAAYCByQAAAcAAAWcLQABBQAAAQQBAAADBAktAAMKLQAFCwoACgkMJAAADAAABZItAQoILQQICwAACgIKAAALAgsjAAAFbicBBQQBIwAABaAtAAMFJioBAAEFBQQbmSCvYEw8BAIBJg==",
74
- "debug_symbols": "rZnbbhs5DIbfxde50IEipbxKURRu6hYGDCdwkwUWRd59SUnkOF1IcOXeZL7hRL8pkqLk8a/dt8PXtx9fjufvzz93j59+7b5ejqfT8ceX0/PT/vX4fGbrr52TPz7Q7jE+7HwMu8ckV2pX8M0O2K6J70mu2K7Y77G0K0G/5t2jdww5MniB3KFgg+B4rEcB7OCTQukQQEEtUS1RLRAVqEMKCqqM+lkoH1EYyCmAQu6QgwJ1KGqpzjNEx8ODF0gdvFp87hDYsUACYpFRUcIoj2pcK6hFIhujAHZAtUhwK4irMQvkDhLeBuwqBAZxFTh1gOwPoAB7COwGZOxQWBmyQGqQZDoN1OLV4s1SOsi8GuQOUjYNqAN4BeyQRJCDkDIosGDiIkkFFFgwcTTQxQ6BR6UgkDpEtUSxcFgQXAeSUSCQO2S1yJQbsD+J40NSfg1KBw8KaglqkZkmDiZFESQB6gBBQS2SygbYQXKROAgkpZWKAHUo3ZIlBQ14XsjRyJKCBrmDRL6BWqJaxB/kiGXxB4MAdhB/GqhF/GmQOkhpYRTguSMHqkh8EAVSh+pPBbUEtQS1RLVIASAJYIck/8NBKPXTK6iF1CKJqyCJwyKQO0jiBLyrnjUymzebOEfSelytnUZgVJSi2WJWklbSicNJ0q6cNJNOZhPHG4nnFColJfG9U1YqZitqY2eYYiVq5e69zKMTKgWz1UVQqa6CRtJyoVJRknlQqpSVktlq024kbRyFyBsVJVmoncxWzFbnIb0+yGKtnxtkHo18MDKbzKMTKsk8qFQCo6IEZgOzJbMls9V85Pf3h53ubV9eL4eDbG1Xmx1vgS/7y+H8uns8v51OD7t/9qe3+k8/X/bnen3dX/gpV8Dh/I2vLPj9eDoIvT9so914KGHGPprIbwLJf1DwYwUEWX5VAYFoUygfFMJYIUp3rQIRwcZTuN2DEtSDBDDyACYeZJ0CeB5lAmtRLKMo4kwhmgDaePA3e0AhmQCkkQd5EkU+8mgUgwujKJaxAp9IukAowzzeGkWg0RxmCsVpJfBG5YfVPClGXroaSB/KFsj8sRh8nMQh64KMJW+5DPGjwqQeCx9ku0TxtK3KyHH9oJEm+XRRSwodbDX1J17YsijhKpr/84LGGplHdo1csIw18qw/6ERi3uLJJ9nbk+qLthjeiXCU1DAprZS3aG4JybRUmnHYaMNkFkUOwy0dFEYuhElh8g6edIUxT5o1zEScJxPhY8lQJN3dbALe2W1mEymFwjYPyEMnZqWZttpMEzfmSYGrpJRhMOKkuvjEYxrFx63pQForUBwVaJwUaLBVFv1Vu8i3u5DAXKA4dAHubt8x3du+I97fviPd275vDWYeB7PM2qazYProRy0HZoXJ3y7AqjtPTmeTAx6f8c2P7PKwuueOcEltjlwf0n5zZLpWE249g5vYUGR22ETSiETyaeGgxKvd22q/2s5+3xLnEs4kgluSKFssrlfrH0gEl1SC36qlNYmcTKKseeGjxoIxL0mAMwnwa17A5gUkvyZhX4RC8rQkkeyQwWeFsiYR09+UgLVwJitwfpu6VOD8Nd2bBC1K2HbEEmtJRdsI/ooELElEfvVmh3DCRQnre8UthZPfFttxq+B4IjjZ3nlhaGEkfgFkGj7f7kXevChrGeG3eNZy/JqEs/2MJcK9vXNVwoMdwz26RYmwSfi7O/iqBBWTyGu9028Z4ewsSljLCYtd62oiqxIhokkQDCUory2zz3y3fzpePvyy9y5al+P+6+nQb7+/nZ+unr7++6JP9JfBl8vz0+Hb2+UgStvPg/znE28hD4H8Z3mFzbf83pqy3Hh5xnsc75Wf38WV/wA="
74
+ "debug_symbols": "rZlbbhs7DIb34uc8iLpRzFaKonBTtzBgOIGbHOCgyN5LSiLHLiAhlfuS+YYT/aZIipLHv3bfDl/ffnw5nr8//9w9fvq1+3o5nk7HH19Oz0/71+Pzma2/dk7+gMfdY3jYQfC7xyRXbNcIzR5zuya+R7nmds39PlO7YuzXsnsEx1ACAwiUDpQbeMdjIQvkDpAUqIOPCmoJaglqiUEBOySvoMpZPyvLRxADOoWoUDoUr4AdSC3VeYbgeLgHgdQB1AKlg2fHPAqIRUYFCaM8qnGtoBaJbAgCuUNWiwS3grgaikDpIOFtwK5GzyCuRk5dzOxPzALsYWQ3YskdiJVjEUgNkkyngVpALWAW6iDzalA6SNk0wA4RFHKHJIIchFSiAgsmLpJEUYEFE0cju9DB86jkBVKHoJYgFg5Ljq4DyqgoUDoUtciUG7A/ieODUn4NqANEBbV4tchMEwcTgwiiAHaIXkEtksoGuYPkInEQUEorkQB2oG4pkoIGPK/M0SiSggalg0S+gVqCWsSfzBEr4k/2ArmD+NNALeJPg9RBSisHAZ575kCRxCdngdSh+lNBLV4tXi1BLVIAGQVyhyT/w0Gg+ukV1IJqkcRVkMRlEigdJHEC4KpnjcwGZhPnUFqPq7XTKBqRUjBbKErSSjpxOFHalZNm0sls4ngj8Rx9paQkvncqSmQ2Uhs7wxQqYSt3AJlHp6zkzVYXQaW6ChpJy42VSEnmgalSUUpmq027kbTxLIRgREqyUDuZjcxW5yG93stirZ/rZR6NwBuZTebRKSvJPJAqRSNSimaLZktmS2ar+Sjv7w873du+vF4OB9narjY73gJf9pfD+XX3eH47nR52/+1Pb/Wffr7sz/X6ur/wU66Aw/kbX1nw+/F0EHp/2Ea78VAkp6N5aUcTSHCjAGOFHGX5VYUcETcFulHwY4Ug3bUKhLx5gP7jHpBXD1KMIw/ixIOiU4jAo0xgKYohjKKYJwrSzJoAZhsf4eMeBDIPrqdwq1AmUeQjj0bROz+KIo0V+ETSBTwN8/jRKGYYzWGiUEAOTVWhQEjDap4UIy/d1CXA0yZRbosBwiQORacRqGy5DLeLEib1SHyQ7RIEuC3rQHirkSb5dEFLKru41VT4Cy9sWRA3w7EXOMkIj9SMUKaxRpn1B51IKFs8gysfTyqQrg7eifIoqX5SWqls0dwSUnCpNOOw0frJLEgOwy0d6Ecu+Elh8g6e1AnmSbOOMxEHaCJ8LBmKpLubjc93dpvZRIjQb/OIZejErDTTVptp4sY8KfEqKTQMRphUF594TIMgXDWdslSgyY0KNEwK1NsqC3DVLv7ChVzMhYJDF+Ld7Tuke9t3yPe374D3tu+PBpPGwaRZ23QWTAgwajlxVpj87SJadZfJ6WxywOMzvvlRXBlW99wRpK1tcUSGjkzXaspbz+AmNhSZHTYzakQCQlo4KPFqB1vtV9vZn1viXMKZhHdLErTFgjCsSHiXVILfqqU1iZJMgta8gKCxYCxLEtGOrj7Cmhdx8yImWJOwL0I+AS5JJDtk8FmB1iRC+pcScS2cyQqc36YuFTh/TQeTwEUJ245YYi2p2TaCfyIRlyQCv3qzQzjmRQnre+SWwslvi+24df0N8U+JPNneeWFoYSR+AWQa8BdelM0LWssIv8WzlgNrEs72M5bw9/bOVQmIdgyH7BYl/CYBd3fwVQkkkyhrvRO2jHB2FiWs5fjFrnU1kVUJH7JJYBxKYFlbZp/5bv90vNz8svcuWpfj/uvp0G+/v52frp6+/v+iT/SXwZfL89Ph29vlIErbz4P85xNvIQ8e4bO8wuZbfm+NRW5AnvEex3vl53dx5Tc="
75
75
  },
76
76
  {
77
77
  "name": "balance_of_public",
@@ -123,7 +123,7 @@
123
123
  }
124
124
  },
125
125
  "bytecode": "JwACBAEoAAABBIBFJwAABEUnAgMEAScCBAQAHwoAAwAEAEMtCEMCJQAAAEAtAgJEJwIDBEQnAgQEATsOAAQAAyUAAAEtHgIAAwknAgQBASQCAAMAAABcJQAAAVMpAgADAO9SU00nAgQAASsCAAUAAAAAAAAAAAMAAAAAAAAAAC0IAQYnAgcEBQAIAQcBJwMGBAEAIgYCBy0KBwgtDgMIACIIAggtDgQIACIIAggtDgIIACIIAggtDgUILQgBAicCAwQFAAgBAwEnAwIEAQAiBgIDACICAgQ/DwADAAQnAgMEAQAqAgMELQsEBCcCAgAACioEAgMnAgIBAAoqAwIFJAIABQAAAQwlAAABZR4CAAIALyoABAACAAMcCgMEBhwKBAIAHAoCAwYtCgMCJigAAAQEeEUMAAAEAyQAAAMAAAFSKgEAAQXaxfXWtEoybTwEAgEmKgEAAQXcG27r+7a8QzwEAgEmKgEAAQW6uyHXgjMYZDwEAgEm",
126
- "debug_symbols": "nZbLjuowDIbfJesuYudqXgUhVKCMKlUFdeBIR4h3H6dT97JINGJD/jrt1z+2G/JSl+b0/Dq2/fX2rXb7lzoNbde1X8fudq4f7a3n6Evp9ONJ7UylglU7ywONQwzjQKh2AJUCDSL8JDBMwsiUkSkrESsRJxHnRNAkvBURJxGMCHlFFBsxAdkskBbhfgVqLUIiIBGQCCYbNgk/CSMRk+7xLKwWIREnEScRb0SwZ0QWyTMmTmQgpqlkdRQ0Rt7vSknuj4+haVLqV8XgEt3roekfatc/u65S/+ruOd70fa/7cXzUA8/qSjX9hUcGXtuuSepdLU/r/KNcRW2nx1mzKUE42DAgzyCfFjUiyNuwEGhDwJKLOJsAvRACfrqOmFtHkYE2zgz0IcdwBQb3iCCQ3EyIbkPweQJGKaehZRUWzQYQCuWAOZnE7T0jDNkNIuYRkVIHj4hInrIIyiOMNbKMuCzD6G0eoFAOhEATAiGGzxhopDURg80zCs3pIEhFHK6aE+KfbXAl52wQQdZGqbGAJBtgtM81FhQQbjbh9bJVcGY/+z4CZfeKUnfaIM3JX3fGBMSiC+dXLrL7DVAJoiHMEG1sdtMq5MNDlHR41JhFFLZODEJAsrltr7QQ4iwu67Axa8IUutMt36or2CgXxa6KQvlklFqc9xphEJhl77Pc4we+rM/tsDmtvBNsaOtT10yX12d/Xs0+/t9lRk479+F2bi7PoUmk5ciTTgZ7biwPBz5C8P/z3rvKh8M7vfoH"
126
+ "debug_symbols": "nZbLjuowDIbfJesuYudqXgUhVKCMKlUFdeBIR4h3H6dT97JINGJD/jrNV8d2TF7q0pyeX8e2v96+1W7/Uqeh7br269jdzvWjvfVsfSmdfjypnalUsGpneaBxiGEcCNUOoFKgQYSfBIZJGJkyMmXFYsXixOKcCJqEtyLiJIIRIZ+I4kZMQHYWSItwvwK1FiEWEAuIBZMbNgk/CSMWk97xLKwWIRYnFicWb0Swz4gsks+YOJGBmKaSq6Og0fJ+V0pif3wMTZNCv0oGp+heD03/ULv+2XWV+ld3z/Gl73vdj+OjHnhWV6rpLzwy8Np2TVLvalmt80tBG4jTctZ2QTjYMCDPIJ82NSLI27AQaEPAkhfRihOgF0LAT/eBuX0UGdbjzLARcgxXYHCNCALJzYToNgSfJ2CUdBqK83prtikNhXTAHEzi8p4RhsIGEfOISCiBiOQpi6A8wlgj24jLNoyO26oqpAMh0IRAiOEzBhopTcRg84xCcToIkhGHq+KEv7vBmZyjQQRZN0qFBSTRAKN9rrCggHCzE14v5zyGD88HmWyvKFWnDVKcAXNOQCx5gc7PXmDI9hugEkRDmCHcL7JNqxAPD1FajkeNWUShdWIQApLNtb3SRoijuOzDxqwTplCdbjmrruBGOSl2lRTKB6NU4txrhEFgVr2PT8mBH+tzO2xuK+8EG9r61DXT4/XZn1ezj/93mZHbzn24nZvLc2gSabnypJvBngvLw4GvEPz/vPeu8uHwTp/+AQ=="
127
127
  },
128
128
  {
129
129
  "name": "check_balance",
@@ -165,7 +165,7 @@
165
165
  }
166
166
  },
167
167
  "bytecode": "JwACBAEoAAABBIBFJwAABEUlAAAARicCAwQBJwIEBAAfCgADAAQARBwAREQGLQhEAiUAAABsJwICBEUnAgMEADsOAAMAAiwAAEMAMGROcuExoCm4UEW2gYFYXSgz6Eh5uXCRQ+H1k/AAAAAmJQAAAZoeAgADCScCBAEBJAIAAwAAAIglAAABwB4CAAMBCiIDQwQWCgQFHAoFBgAEKgYDBScCAwEACioEAwYkAgAGAAAAuycCBwQAPAYHASkCAAQA71JTTScCBgABKwIABwAAAAAAAAAAAwAAAAAAAAAALQgBCCcCCQQFAAgBCQEnAwgEAQAiCAIJLQoJCi0OBAoAIgoCCi0OBgoAIgoCCi0OBQoAIgoCCi0OBwotCAEEJwIFBAUACAEFAScDBAQBACIIAgUAIgQCBj8PAAUABicCBQQBACoEBQYtCwYGJwIEAAAKKgYEBQoqBQMEJAIABAAAAWYlAAAB0h4CAAQALyoABgAEAAUcCgUGBhwKBgQAHAoEBQYMKgUCBAoqBAMCJAIAAgAAAZklAAAB5CYoAAAEBHhFDAAABAMkAAADAAABvyoBAAEF2sX11rRKMm08BAIBJioBAAEFDv4gSes3Tjw8BAIBJioBAAEFursh14IzGGQ8BAIBJioBAAEFhHKAwoQjC0Y8BAIBJg==",
168
- "debug_symbols": "nZbbiuMwDIbfJde9sA4+9VWGYci06RAIacm0C0vpu688tXJYsBl6U/+W6y+yJCu5N8fu8/b10Y+n83ezf7s3n1M/DP3Xx3A+tNf+PIr13pj0A0DNnnYyhmbPMiI9R4I8umbvZWSZxzS652jN027tc3QyB0jCZuHV4kMWgVR4EUFEdE+BBrJAVKFLpEukFlYLqyV58xSsImbhSEXIwusjfHYDgwDRJGGziEZFtpAxKtQCagFxA+VchKBCLZT+Q0nYLFgtrBZLKsRDlOBS8pnSdi9ASkveZRHUEpJFMkQRVGQLG07i8dg1mvCP69R1Kd+rCpC6uLRTN16b/Xgbhl3zpx1uP3/6vrTjz3htJ1mVI3bjUUYBnvqhS+qxW3ab8tYQrcu7Q/RhBljYEKBMiA6VEB37hRA3BCwTwATOBACzEDy+dIpgSqeoECKA+hCBinGwZYJjpwQJQzEOrkwgjhlAjktRqHoQUT2wzCUPQsWDOREMsmsGvBTFdS38V00VhHeUCd67GcC/T6SJiwtARRdq9YhstR6lvcyIsI0DUBmBQe8kxaWYGGlL4Foo51xERJgZFHnLsLVrgThfCxfLjGpRaj4oLCeRHrsl+EoswGtdo7xYXmPIu0UZ6LnMiGWGlRdeZlhctRkIv3ZDkjlHI0You1GrLogaDiDjStWFFYSdvXBmaXYS2lfuiLWlO4K18mSvBGlQBRfQ1po+zj1bdLlhoqtBDPgZYqjY87CSVAchaDjRYBFR6ZvolYCx2LlrB4kSxeUcHEpOUCWrZJeraitu1JPCq6TEYjCoVuDSa5QRVx2Y2b5UoH77Pn+XWXvop8238iOxpr79HLo8Pd3Gw2r1+veiK/qtfZnOh+54m7pEWn1wy++bh5137+mrWybSywO+P9Kj/wE="
168
+ "debug_symbols": "nZbbjuIwDIbfpddcxHYSJ7zKaDTqQBlVqgrqwEorxLuvM8Q9rJRolxv81yFfHdt1e2+O3eft66MfT+fvZv92bz6nfhj6r4/hfGiv/XkU770x6QeAmj3txIZmb8UiPS1Btr7Zs1gr1zFZ/7TOPP3OPa2Xa4AkXBasHg5ZBFLBIoKI6J8CDWSBqEKXSJdIPVY9Vj0pmqewKmIWnlSELFhvwTkMDAJEk4TLIhoV2UPGqFAPqAckDJRzEYIK9VD6DyXhsrDqsepxpEIiREkupZgpbWcBUlpin0VQT0geqRBFUJE91tgkHo9dowX/uE5dl+q96gDpi0s7deO12Y+3Ydg1v9rh9vOn70s7/thrO8mqHLEbj2IFeOqHLqnHbtltylujdEHeHSHiDHCwIUCF4NErwVteCHFDwDIBTLCZAGAWAuNrp7ClU9QIhEEJ5Ip5cGWCt15PIWko5sGXCWRjBpC3pSxUI4ioEThrSxGESgRzISzIrhnwUhY9FLupgmBPmcDsZ4D9j0KaJQTkYgi1fkTrtB9lvMyIsM0DUBmBQfuRYlhOQdvnEmytpedaRMQllRR5y6g0RJCdmRGij2VGtSm1HhSWk0iStwSu5AJY+xrlxfIaQ94tykC2ZUYsM9wyJByuxgz8exhSzDkbMUI5jFp3QdR0ABlf6i6sINwchTfLzA/80jOy6ou/nhGstadlJTCWQkBXG/rotKSiywMTfQ1igGeIoeLMw0pRPQTNhkeDRURlbiIrAWNxctcOEiWLyzlsKAVBlaqSWx5VVwmjXhS7KkosJoNqDS6zRhkRaDX9wksNGrbv83e5ag/9tPlWfiTW1LefQ5cvT7fxsFq9/r7oin5rX6bzoTvepi6RVh/c8vvGsGP/nr665UJmecD3R7r1Hw=="
169
169
  },
170
170
  {
171
171
  "name": "claim",
@@ -2019,8 +2019,8 @@
2019
2019
  }
2020
2020
  }
2021
2021
  },
2022
- "bytecode": "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2+kc2xkc25kc21kc29kc2zkc27kc23kc2684tvM5tgs4tl9zbBdybL/h2H7LsSV9KW4Rx/Z7ju0PHNsfObY/cWx/5tgu5tgu4dj+wrH9lWPr49gKju1Sju0yju1yju0Kju1Kju0qju1qju0aju1aju06ju16ju0Gju1Gju0mju1mju0Wju1Wju02ju12ju0Oju1Oju0uju1uju0eju1eju0+ju1vHNv9HNsD6l+U0rE9yFntIY7tYY7tEY7tUY7tMY7tcY7tCY7tSY7tKY7taY7t7xzbMxzbPzi2f3Js/+LYnuXY/s2x/Ydje45jy+nba3P69tqcvr02p2+vzenba3P69tqcvr02p2+vzenba3P69tqcvr02p2+vzenba3P69tqcvr02p2+vneW+vVBPCDtnBtITgvPRop2Ls6fcyJ5cnC8v2pwewDanB7DN6QFsc3oA25wewDanB7DN6QFsc3oA25wewDanB7DN6QFsc3oA25wewDanB7DN6QFsc3oA25wewDanB7DN6QFsc3oA25wewDanB7DN6QFsc3oA25wewDanB7DN6QFsc3oA25wewDanB7DN6QFsl+LYcnoA25wewDanB7DN6QFsc3oA25wewDanB7DN6QFsc3oA25wewDanB7DN6QFsc3oA209SPoW1OT2AbU4PYJvTA9jm9AC2OT2AbU4PYJvTA9jm9AC2K3BsK3JsK3Fsn+XYVubYVuHYcnrp2pxeujanl65dnWPL6aVrc3rp2pxeujanl67N6aVrc3rp2pxeujanl67N6aVrc3rp2pxeujanl67N6aVrc3rp2pxeujanl67N6aVrc3rp2pxeujanl67N6aVrc3rp2pxeujanl67N6aVrc3rp2pxeujanl67N6aVrc3rp2pxeunYax5bTS9fm9NK1Ob10bU4vXZvTS9fm9NK1Ob10bU4vXZvTS9fm9NK1Ob10bU4vXZvTS9fm9NK1Ob10bU4vXZvTS9fm9NK1Ob10bU4vXZvTS9fm9NK1Ob10bU4vXZvTS9fm9NK1Ob10bU4vXZvTS9fm9NK1Ob107QyOLaeXrs3ppWtzeunanF66NqeXrs3ppWtzeunanF66Nunr6Jxeujanl67N6aVrc3rp2pxeujanl67N6aVrc3rp2pxeujanl67N6aVrc3rp2pxeujanl67N6aVrc3rp2pxeujanl67N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",
2023
- "debug_symbols": "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",
2022
+ "bytecode": "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2+kc2xkc25kc21kc29kc2zkc27kc23kc2684tvM5tgs4tl9zbBdybL/h2H7LsSV9KW4Rx/Z7ju0PHNsfObY/cWx/5tgu5tgu4dj+wrH9lWPr49gKju1Sju0yju1yju0Kju1Kju0qju1qju0aju1aju06ju16ju0Gju1Gju0mju1mju0Wju1Wju02ju12ju0Oju1Oju0uju1uju0eju1eju0+ju1vHNv9HNsD6l+U0rE9yFntIY7tYY7tEY7tUY7tMY7tcY7tCY7tSY7tKY7taY7t7xzbMxzbPzi2f3Js/+LYnuXY/s2x/Ydje45jy+nba3P69tqcvr02p2+vzenba3P69tqcvr02p2+vzenba3P69tqcvr02p2+vzenba3P69tqcvr02p2+vneW+vVBPCDtnBtITgvPRop2Ls6fcyJ5cnC8v2pwewDanB7DN6QFsc3oA25wewDanB7DN6QFsc3oA25wewDanB7DN6QFsc3oA25wewDanB7DN6QFsc3oA25wewDanB7DN6QFsc3oA25wewDanB7DN6QFsc3oA25wewDanB7DN6QFsc3oA25wewDanB7DN6QFsl+LYcnoA25wewDanB7DN6QFsc3oA25wewDanB7DN6QFsc3oA25wewDanB7DN6QFsc3oA209SPoW1OT2AbU4PYJvTA9jm9AC2OT2AbU4PYJvTA9jm9AC2K3BsK3JsK3Fsn+XYVubYVuHYcnrp2pxeujanl65dnWPL6aVrc3rp2pxeujanl67N6aVrc3rp2pxeujanl67N6aVrc3rp2pxeujanl67N6aVrc3rp2pxeujanl67N6aVrc3rp2pxeujanl67N6aVrc3rp2pxeujanl67N6aVrc3rp2pxeujanl67N6aVrc3rp2pxeunYax5bTS9fm9NK1Ob10bU4vXZvTS9fm9NK1Ob10bU4vXZvTS9fm9NK1Ob10bU4vXZvTS9fm9NK1Ob10bU4vXZvTS9fm9NK1Ob10bU4vXZvTS9fm9NK1Ob10bU4vXZvTS9fm9NK1Ob10bU4vXZvTS9fm9NK1Ob107QyOLaeXrs3ppWtzeunanF66NqeXrs3ppWtzeunanF66Nunr6Jxeujanl67N6aVrc3rp2pxeujanl67N6aVrc3rp2pxeujanl67N6aVrc3rp2pxeujanl67N6aVrc3rp2pxeujanl67N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",
2023
+ "debug_symbols": "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",
2024
2024
  "verification_key": "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"
2025
2025
  },
2026
2026
  {
@@ -3875,8 +3875,8 @@
3875
3875
  }
3876
3876
  }
3877
3877
  },
3878
- "bytecode": "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",
3879
- "debug_symbols": "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",
3878
+ "bytecode": "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",
3879
+ "debug_symbols": "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MVxiuMRwyVr3umiT/YZLDJcYLrEJbULDJYZLDJc4LnFc4rjEccla93rS1rrXHZNYxEGE1qDhEscljksclzgucVziuGSte120du03xyWOSxyXONc4a93rjtBwieMSxyWOSxyXOC5Z614XzZ3ITOISxyXONc5a97ojNFziuMRxieMSxyWOS9a610UL9hsucVziuMS5xlnrXneEhksclzgucVziuMRxyVr3umjJfsMljksclzjXOGvd647QcInjEscljksclzguWeteF63Yb7jEcYnjEucax3GJc17inJc4LnGucda61x2h4RLHJY5LnPOSte71+JUztta9ns9jX+tedwxiJyaxiIM4Fde61x0b0YhODGInJrGIgwitQWvQGrQGrUFr0Bq0Bq1Ba9AMmkEzaAbNoBk0g2bQTpes5/6eLlnxdMmOB+18Cuxa97qjE4PYiUmFIkI7XbL+7emSHaEFtIAW0AJaQAtoAS0YW2dsHVqH1qF1aB3a6ZIdiziIjC2hnS7Z0YhODCK0hJbQElpCK2ayGFsxtmJsBe10yY7MZDGTxUwWtAFtQBvQBrTBTA7GNhjbYGwD2mC/TWZyMpOTmZzQJrQJbUKb0CYzOa+xrXWvOzbiRVvrXncMYicmsagwiNAatAatGdGJQexEaK2Ig3jN5Fr3uiM0g2bQDJpBsyQyNmNsxthwyVr3uiMz6cykM5O4ZK173RGaQ8MlHZd0XNJxSccla93rfuo4+w2XdFzSccla97oqdGi4pOOSjks6Lum4pOOSjkvWutdF6+w3XNJxSccla93rqpDQcEnHJR2XdFzScUnHJR2XrHWvi1bsN1zScUnHJWvd664ADZd0XNJxScclHZd0XNJxyVr3umiD/YZLOi7puGSte10VJjRc0nFJxyUdl3Rc0nFJxyVr3etJW+tedzSiE4PYqZDEIg4iNFySuCRxSeKSte510VonJrGIgwjNoOGSxCWJSxKXJC5JXJK4JDkvSc5LEpckLklckpyXJOcliUsSlyQuSVySuCRxSeKSte510YL9hksSlyQuWetedwVouCRxSeKSxCWJSxKXJC5Z614XrbPfcEniksQla93rqpDQcEniksQliUsSlyQuSVyy1r0uWrHfcEniksQla93rrgANlyQuSVySuCRxSeKSxCVr3euiDfYbLklckrhkrXtdFSY0XJK4JHFJ4pLE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Eos4iPOKh0sUoSW0hJbQElpCS2gJLaEVtIJW0ApaQStoBa2gFbSCNqANaAPagDagDWgD2oA2oA1oE9qENqFNaBPahDahTWgT2hQtznWvio1oRCcGsROTWMRBhNagNWgNWoPWoDVoDVqD1qA1aAbNoBk0g2bQDJpBM2gGzaA5NIfm0ByaQ3NoDs2hOTSHFtACWkALaAEtoAW0gBbQAlqH1qF1aB1ah9ahdWgdWofWoSW0hJbQElpCS2gJLaEltIRW0ApaQStoBa2gFbSCVtAK2oA2oA1oA9qANqANaAPagDagTWgT2oQ2oU1oE9qENqFNaLik4ZKGSxouabik4ZKGSxouabik4ZKGSxouabik4ZKGSxouabik4ZKGSxouabik4ZKGSxouabik4ZKGSxouabik4ZKGSxouabik4ZKGSxouabik4ZKGSxouabik4ZKGSxouabik4ZKGSxouabik4ZKGSxouacslccaDFuv/OjGInXjQos540I6nSsW57lXxoPUzni7ZsRGNeNDSzxjEg5Z5xoOW698W8aBVO+NBq/Ntp0t2PGjVz2jEg1b107ff/J8///j9n//zh+/+95s//Ov5x//+51//8o/v//bX/cd//N+/62/+88fvf/jh+//5099//Ntfvvuvf/743Z9++Ntfjr/75nH852iD/2j5rbU/Pv9x2///P9zy2+et+D8+P+6Pv3/kt8/D/fmn85/78xze2+P4Yzv+2OL5xzzeb3r/89byt88bs/v9lvatlen9z9vr3z7vlev9z1vh3z5vfB/v9+P9ftb8Ntr17+3598dfB1sc37Z5/K+udzxPVd2vLRzfhh9/nb9+R/G/+rf2+ONPP/30x5/+Hw==",
3880
3880
  "verification_key": "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"
3881
3881
  },
3882
3882
  {
@@ -3949,7 +3949,7 @@
3949
3949
  }
3950
3950
  },
3951
3951
  "bytecode": "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",
3952
- "debug_symbols": "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"
3952
+ "debug_symbols": "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"
3953
3953
  }
3954
3954
  ],
3955
3955
  "outputs": {
@@ -4210,15 +4210,15 @@
4210
4210
  "path": "std/hash/mod.nr",
4211
4211
  "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\nuse crate::static_assert;\n\n/// The size of the state accepted by the backend in `poseidon2_permutation`.\nglobal POSEIDON2_CONFIG_STATE_SIZE: u32 = poseidon2_config_state_size();\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n// docs:start:blake3\npub fn blake3<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{\n if crate::runtime::is_unconstrained() {\n // Temporary measure while Barretenberg is main proving system.\n // Please open an issue if you're working on another proving system and running into problems due to this.\n crate::static_assert(\n N <= 1024,\n \"Barretenberg cannot prove blake3 hashes with inputs larger than 1024 bytes\",\n );\n }\n __blake3(input)\n}\n\n#[foreign(blake3)]\nfn __blake3<let N: u32>(input: [u8; N]) -> [u8; 32] {}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment<let N: u32>(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator<let N: u32>(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash<let N: u32>(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator<let N: u32>(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n crate::assert_constant(separator);\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars, true)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators<let N: u32, let M: u32>(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n crate::assert_constant(starting_index);\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators<let N: u32, let M: u32>(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Decompose the input 'bn254 scalar' into two 128 bits limbs.\n// It is called 'unsafe' because it does not assert the limbs are 128 bits\n// Assuming the limbs are 128 bits:\n// Assert the decomposition does not overflow the field size.\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n // Check that the decomposition does not overflow the field size\n let (a, b) = if xhi == crate::field::bn254::PHI {\n (xlo, crate::field::bn254::PLO)\n } else {\n (xhi, crate::field::bn254::PHI)\n };\n crate::field::bn254::assert_lt(a, b);\n\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn poseidon2_permutation<let N: u32>(input: [Field; N], state_len: u32) -> [Field; N] {\n assert_eq(input.len(), state_len);\n\n static_assert(\n N == POSEIDON2_CONFIG_STATE_SIZE,\n f\"the input length must equal the state size in the Poseidon2 config; expected {POSEIDON2_CONFIG_STATE_SIZE}, got {N}\",\n );\n poseidon2_permutation_internal(input)\n}\n\n#[foreign(poseidon2_permutation)]\nfn poseidon2_permutation_internal<let N: u32>(input: [Field; N]) -> [Field; N] {}\n\n#[foreign(poseidon2_config_state_size)]\ncomptime fn poseidon2_config_state_size() -> u32 {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash<H>(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault<H>;\n\nimpl<H> BuildHasher for BuildHasherDefault<H>\nwhere\n H: Hasher + Default,\n{\n type H = H;\n\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl<H> Default for BuildHasherDefault<H>\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as u8 as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as u16 as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as u32 as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as u64 as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash<H>(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl<T, let N: u32> Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<T> Hash for [T]\nwhere\n T: Hash,\n{\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<A, B> Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl<A, B, C> Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl<A, B, C, D> Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl<A, B, C, D, E> Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n"
4212
4212
  },
4213
- "238": {
4213
+ "240": {
4214
4214
  "path": "/home/aztec-dev/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/version.nr",
4215
- "source": "/// The ORACLE_VERSION constant is used to check that the oracle interface is in sync between PXE and Aztec.nr. We need\n/// to version the oracle interface to ensure that developers get a reasonable error message if they use incompatible\n/// versions of Aztec.nr and PXE. The TypeScript counterpart is in `oracle_version.ts`.\n///\n/// @dev Whenever a contract function or Noir test is run, the `aztec_utl_assertCompatibleOracleVersion` oracle is\n/// called and if the oracle version is incompatible an error is thrown.\npub global ORACLE_VERSION: Field = 16;\n\n/// Asserts that the version of the oracle is compatible with the version expected by the contract.\npub fn assert_compatible_oracle_version() {\n // Safety: This oracle call returns nothing: we only call it to check Aztec.nr and Oracle interface versions are\n // compatible. It is therefore always safe to call.\n unsafe {\n assert_compatible_oracle_version_wrapper();\n }\n}\n\nunconstrained fn assert_compatible_oracle_version_wrapper() {\n assert_compatible_oracle_version_oracle(ORACLE_VERSION);\n}\n\n#[oracle(aztec_utl_assertCompatibleOracleVersion)]\nunconstrained fn assert_compatible_oracle_version_oracle(version: Field) {}\n\nmod test {\n use super::{assert_compatible_oracle_version_oracle, ORACLE_VERSION};\n\n #[test]\n unconstrained fn compatible_oracle_version() {\n assert_compatible_oracle_version_oracle(ORACLE_VERSION);\n }\n\n #[test(should_fail_with = \"Incompatible oracle version. TXE is using version\")]\n unconstrained fn incompatible_oracle_version() {\n let arbitrary_incorrect_version = 318183437;\n assert_compatible_oracle_version_oracle(arbitrary_incorrect_version);\n }\n}\n"
4215
+ "source": "/// The ORACLE_VERSION constant is used to check that the oracle interface is in sync between PXE and Aztec.nr. We need\n/// to version the oracle interface to ensure that developers get a reasonable error message if they use incompatible\n/// versions of Aztec.nr and PXE. The TypeScript counterpart is in `oracle_version.ts`.\n///\n/// @dev Whenever a contract function or Noir test is run, the `aztec_utl_assertCompatibleOracleVersion` oracle is\n/// called and if the oracle version is incompatible an error is thrown.\npub global ORACLE_VERSION: Field = 18;\n\n/// Asserts that the version of the oracle is compatible with the version expected by the contract.\npub fn assert_compatible_oracle_version() {\n // Safety: This oracle call returns nothing: we only call it to check Aztec.nr and Oracle interface versions are\n // compatible. It is therefore always safe to call.\n unsafe {\n assert_compatible_oracle_version_wrapper();\n }\n}\n\nunconstrained fn assert_compatible_oracle_version_wrapper() {\n assert_compatible_oracle_version_oracle(ORACLE_VERSION);\n}\n\n#[oracle(aztec_utl_assertCompatibleOracleVersion)]\nunconstrained fn assert_compatible_oracle_version_oracle(version: Field) {}\n\nmod test {\n use super::{assert_compatible_oracle_version_oracle, ORACLE_VERSION};\n\n #[test]\n unconstrained fn compatible_oracle_version() {\n assert_compatible_oracle_version_oracle(ORACLE_VERSION);\n }\n\n #[test(should_fail_with = \"Incompatible oracle version. TXE is using version\")]\n unconstrained fn incompatible_oracle_version() {\n let arbitrary_incorrect_version = 318183437;\n assert_compatible_oracle_version_oracle(arbitrary_incorrect_version);\n }\n}\n"
4216
4216
  },
4217
4217
  "3": {
4218
4218
  "path": "std/array/mod.nr",
4219
4219
  "source": "use crate::cmp::{Eq, Ord};\nuse crate::convert::From;\nuse crate::runtime::is_unconstrained;\n\nmod check_shuffle;\nmod quicksort;\n\nimpl<T, let N: u32> [T; N] {\n /// Returns the length of this array.\n ///\n /// ```noir\n /// fn len(self) -> Field\n /// ```\n ///\n /// example\n ///\n /// ```noir\n /// fn main() {\n /// let array = [42, 42];\n /// assert(array.len() == 2);\n /// }\n /// ```\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n /// Returns this array as a vector.\n ///\n /// ```noir\n /// let array = [1, 2];\n /// let vector = array.as_vector();\n /// assert_eq(vector, [1, 2].as_vector());\n /// ```\n #[builtin(as_vector)]\n pub fn as_vector(self) -> [T] {}\n\n /// Returns this array as a vector.\n /// This method is deprecated in favor of `as_vector`.\n ///\n /// ```noir\n /// let array = [1, 2];\n /// let vector = array.as_slice();\n /// assert_eq(vector, [1, 2].as_vector());\n /// ```\n #[builtin(as_vector)]\n #[deprecated(\"This method has been renamed to `as_vector`\")]\n pub fn as_slice(self) -> [T] {}\n\n /// Applies a function to each element of this array, returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.map(|a| a * 2);\n /// assert_eq(b, [2, 4, 6]);\n /// ```\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array along with its index,\n /// returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.mapi(|i, a| i + a * 2);\n /// assert_eq(b, [2, 5, 8]);\n /// ```\n pub fn mapi<U, Env>(self, f: fn[Env](u32, T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(i, self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// let mut i = 0;\n /// a.for_each(|x| {\n /// b[i] = x;\n /// i += 1;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_each<Env>(self, f: fn[Env](T) -> ()) {\n for i in 0..self.len() {\n f(self[i]);\n }\n }\n\n /// Applies a function to each element of this array along with its index.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// a.for_eachi(|i, x| {\n /// b[i] = x;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_eachi<Env>(self, f: fn[Env](u32, T) -> ()) {\n for i in 0..self.len() {\n f(i, self[i]);\n }\n }\n\n /// Applies a function to each element of the array, returning the final accumulated value. The first\n /// parameter is the initial value.\n ///\n /// This is a left fold, so the given function will be applied to the accumulator and first element of\n /// the array, then the second, and so on. For a given call the expected result would be equivalent to:\n ///\n /// ```rust\n /// let a1 = [1];\n /// let a2 = [1, 2];\n /// let a3 = [1, 2, 3];\n ///\n /// let f = |a, b| a - b;\n /// a1.fold(10, f); //=> f(10, 1)\n /// a2.fold(10, f); //=> f(f(10, 1), 2)\n /// a3.fold(10, f); //=> f(f(f(10, 1), 2), 3)\n ///\n /// assert_eq(a3.fold(10, f), 10 - 1 - 2 - 3);\n /// ```\n pub fn fold<U, Env>(self, mut accumulator: U, f: fn[Env](U, T) -> U) -> U {\n for elem in self {\n accumulator = f(accumulator, elem);\n }\n accumulator\n }\n\n /// Same as fold, but uses the first element as the starting element.\n ///\n /// Requires the input array to be non-empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [1, 2, 3, 4];\n /// let reduced = arr.reduce(|a, b| a + b);\n /// assert(reduced == 10);\n /// }\n /// ```\n pub fn reduce<Env>(self, f: fn[Env](T, T) -> T) -> T {\n let mut accumulator = self[0];\n for i in 1..self.len() {\n accumulator = f(accumulator, self[i]);\n }\n accumulator\n }\n\n /// Returns true if all the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 2];\n /// let all = arr.all(|a| a == 2);\n /// assert(all);\n /// }\n /// ```\n pub fn all<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = true;\n for elem in self {\n ret &= predicate(elem);\n }\n ret\n }\n\n /// Returns true if any of the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 5];\n /// let any = arr.any(|a| a == 5);\n /// assert(any);\n /// }\n /// ```\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n for elem in self {\n ret |= predicate(elem);\n }\n ret\n }\n\n /// Concatenates this array with another array.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr1 = [1, 2, 3, 4];\n /// let arr2 = [6, 7, 8, 9, 10, 11];\n /// let concatenated_arr = arr1.concat(arr2);\n /// assert(concatenated_arr == [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n /// }\n /// ```\n pub fn concat<let M: u32>(self, array2: [T; M]) -> [T; N + M] {\n let mut result = [crate::mem::zeroed(); N + M];\n for i in 0..N {\n result[i] = self[i];\n }\n for i in 0..M {\n result[i + N] = array2[i];\n }\n result\n }\n}\n\nimpl<T, let N: u32> [T; N]\nwhere\n T: Ord + Eq,\n{\n /// Returns a new sorted array. The original array remains untouched. Notice that this function will\n /// only work for arrays of fields or integers, not for any arbitrary type. This is because the sorting\n /// logic it uses internally is optimized specifically for these values. If you need a sort function to\n /// sort any type, you should use the [`Self::sort_via`] function.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32];\n /// let sorted = arr.sort();\n /// assert(sorted == [32, 42]);\n /// }\n /// ```\n pub fn sort(self) -> Self {\n self.sort_via(|a, b| a <= b)\n }\n}\n\nimpl<T, let N: u32> [T; N]\nwhere\n T: Eq,\n{\n /// Returns a new sorted array by sorting it with a custom comparison function.\n /// The original array remains untouched.\n /// The ordering function must return true if the first argument should be sorted to be before the second argument or is equal to the second argument.\n ///\n /// Using this method with an operator like `<` that does not return `true` for equal values will result in an assertion failure for arrays with equal elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32]\n /// let sorted_ascending = arr.sort_via(|a, b| a <= b);\n /// assert(sorted_ascending == [32, 42]); // verifies\n ///\n /// let sorted_descending = arr.sort_via(|a, b| a >= b);\n /// assert(sorted_descending == [32, 42]); // does not verify\n /// }\n /// ```\n pub fn sort_via<Env>(self, ordering: fn[Env](T, T) -> bool) -> Self {\n // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = unsafe { quicksort::quicksort(self, ordering) };\n\n if !is_unconstrained() {\n for i in 0..N - 1 {\n assert(\n ordering(sorted[i], sorted[i + 1]),\n \"Array has not been sorted correctly according to `ordering`.\",\n );\n }\n check_shuffle::check_shuffle(self, sorted);\n }\n sorted\n }\n}\n\nimpl<let N: u32> [u8; N] {\n /// Converts a byte array of type `[u8; N]` to a string. Note that this performs no UTF-8 validation -\n /// the given array is interpreted as-is as a string.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let hi = [104, 105].as_str_unchecked();\n /// assert_eq(hi, \"hi\");\n /// }\n /// ```\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str<N> {}\n}\n\nimpl<let N: u32> From<str<N>> for [u8; N] {\n /// Returns an array of the string bytes.\n fn from(s: str<N>) -> Self {\n s.as_bytes()\n }\n}\n\nmod test {\n #[test]\n fn map_empty() {\n assert_eq([].map(|x| x + 1), []);\n }\n\n global arr_with_100_values: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2, 54,\n 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41, 19, 98,\n 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21, 43, 86, 35,\n 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15, 127, 81, 30, 8,\n 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n global expected_with_100_values: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30, 32,\n 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58, 61, 62,\n 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82, 84, 84, 86,\n 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114, 114, 116, 118,\n 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n fn sort_u32(a: u32, b: u32) -> bool {\n a <= b\n }\n\n #[test]\n fn test_sort() {\n let arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort();\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values() {\n let arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort();\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values_comptime() {\n let sorted = arr_with_100_values.sort();\n assert(sorted == expected_with_100_values);\n }\n\n #[test]\n fn test_sort_via() {\n let arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_via_100_values() {\n let arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn mapi_empty() {\n assert_eq([].mapi(|i, x| i * x + 1), []);\n }\n\n #[test]\n fn for_each_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_each(|_x| assert(false));\n }\n\n #[test]\n fn for_eachi_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_eachi(|_i, _x| assert(false));\n }\n\n #[test]\n fn map_example() {\n let a = [1, 2, 3];\n let b = a.map(|a| a * 2);\n assert_eq(b, [2, 4, 6]);\n }\n\n #[test]\n fn mapi_example() {\n let a = [1, 2, 3];\n let b = a.mapi(|i, a| i + a * 2);\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn for_each_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n let mut i = 0;\n let i_ref = &mut i;\n a.for_each(|x| {\n b_ref[*i_ref] = x * 2;\n *i_ref += 1;\n });\n assert_eq(b, [2, 4, 6]);\n assert_eq(i, 3);\n }\n\n #[test]\n fn for_eachi_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n a.for_eachi(|i, a| { b_ref[i] = i + a * 2; });\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn concat() {\n let arr1 = [1, 2, 3, 4];\n let arr2 = [6, 7, 8, 9, 10, 11];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n }\n\n #[test]\n fn concat_zero_length_with_something() {\n let arr1 = [];\n let arr2 = [1];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_something_with_zero_length() {\n let arr1 = [1];\n let arr2 = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_zero_lengths() {\n let arr1: [Field; 0] = [];\n let arr2: [Field; 0] = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, []);\n }\n}\n"
4220
4220
  },
4221
- "305": {
4221
+ "308": {
4222
4222
  "path": "/home/aztec-dev/nargo/github.com/noir-lang/poseidon/v0.2.6/src/poseidon2.nr",
4223
4223
  "source": "use std::default::Default;\nuse std::hash::Hasher;\n\nglobal RATE: u32 = 3;\n\npub struct Poseidon2 {\n cache: [Field; 3],\n state: [Field; 4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n #[no_predicates]\n pub fn hash<let N: u32>(input: [Field; N], message_size: u32) -> Field {\n Poseidon2::hash_internal(input, message_size)\n }\n\n pub(crate) fn new(iv: Field) -> Poseidon2 {\n let mut result =\n Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) {\n // add the cache into sponge state\n self.state[0] += self.cache[0];\n self.state[1] += self.cache[1];\n self.state[2] += self.cache[2];\n self.state = crate::poseidon2_permutation(self.state, 4);\n }\n\n fn absorb(&mut self, input: Field) {\n assert(!self.squeeze_mode);\n if self.cache_size == RATE {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n assert(!self.squeeze_mode);\n // If we're in absorb mode, apply sponge permutation to compress the cache.\n self.perform_duplex();\n self.squeeze_mode = true;\n\n // Pop one item off the top of the permutation and return it.\n self.state[0]\n }\n\n fn hash_internal<let N: u32>(input: [Field; N], in_len: u32) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut state = [0; 4];\n state[RATE] = iv;\n\n if std::runtime::is_unconstrained() {\n for i in 0..(in_len / RATE) {\n state[0] += input[i * RATE];\n state[1] += input[i * RATE + 1];\n state[2] += input[i * RATE + 2];\n state = crate::poseidon2_permutation(state, 4);\n }\n\n // handle remaining elements after last full RATE-sized chunk\n let num_extra_fields = in_len % RATE;\n if num_extra_fields != 0 {\n let remainder_start = in_len - num_extra_fields;\n state[0] += input[remainder_start];\n if num_extra_fields > 1 {\n state[1] += input[remainder_start + 1];\n }\n }\n } else {\n let mut states: [[Field; 4]; N / RATE + 1] = [[0; 4]; N / RATE + 1];\n states[0] = state;\n\n // process all full RATE-sized chunks, storing state after each permutation\n for chunk_idx in 0..(N / RATE) {\n for i in 0..RATE {\n state[i] += input[chunk_idx * RATE + i];\n }\n state = crate::poseidon2_permutation(state, 4);\n states[chunk_idx + 1] = state;\n }\n\n // get state at the last full block before in_len\n let first_partially_filled_chunk = in_len / RATE;\n state = states[first_partially_filled_chunk];\n\n // handle remaining elements after last full RATE-sized chunk\n let remainder_start = (in_len / RATE) * RATE;\n for j in 0..RATE {\n let idx = remainder_start + j;\n if idx < in_len {\n state[j] += input[idx];\n }\n }\n }\n\n // always run final permutation unless we just completed a full chunk\n // still need to permute once if in_len is 0\n if (in_len == 0) | (in_len % RATE != 0) {\n state = crate::poseidon2_permutation(state, 4);\n };\n\n state[0]\n }\n}\n\npub struct Poseidon2Hasher {\n _state: [Field],\n}\n\nimpl Hasher for Poseidon2Hasher {\n fn finish(self) -> Field {\n let iv: Field = (self._state.len() as Field) * 18446744073709551616; // iv = (self._state.len() << 64)\n let mut sponge = Poseidon2::new(iv);\n for i in 0..self._state.len() {\n sponge.absorb(self._state[i]);\n }\n sponge.squeeze()\n }\n\n fn write(&mut self, input: Field) {\n self._state = self._state.push_back(input);\n }\n}\n\nimpl Default for Poseidon2Hasher {\n fn default() -> Self {\n Poseidon2Hasher { _state: &[] }\n }\n}\n"
4224
4224
  },
@@ -4226,15 +4226,15 @@
4226
4226
  "path": "std/ops/arith.nr",
4227
4227
  "source": "use crate::convert::AsPrimitive;\n\n// docs:start:add-trait\npub trait Add {\n fn add(self, other: Self) -> Self;\n}\n// docs:end:add-trait\n\nimpl Add for Field {\n fn add(self, other: Field) -> Field {\n self + other\n }\n}\n\nimpl Add for u128 {\n fn add(self, other: u128) -> u128 {\n self + other\n }\n}\nimpl Add for u64 {\n fn add(self, other: u64) -> u64 {\n self + other\n }\n}\nimpl Add for u32 {\n fn add(self, other: u32) -> u32 {\n self + other\n }\n}\nimpl Add for u16 {\n fn add(self, other: u16) -> u16 {\n self + other\n }\n}\nimpl Add for u8 {\n fn add(self, other: u8) -> u8 {\n self + other\n }\n}\nimpl Add for u1 {\n fn add(self, other: u1) -> u1 {\n self + other\n }\n}\n\nimpl Add for i8 {\n fn add(self, other: i8) -> i8 {\n self + other\n }\n}\nimpl Add for i16 {\n fn add(self, other: i16) -> i16 {\n self + other\n }\n}\nimpl Add for i32 {\n fn add(self, other: i32) -> i32 {\n self + other\n }\n}\nimpl Add for i64 {\n fn add(self, other: i64) -> i64 {\n self + other\n }\n}\n\n// docs:start:sub-trait\npub trait Sub {\n fn sub(self, other: Self) -> Self;\n}\n// docs:end:sub-trait\n\nimpl Sub for Field {\n fn sub(self, other: Field) -> Field {\n self - other\n }\n}\n\nimpl Sub for u128 {\n fn sub(self, other: u128) -> u128 {\n self - other\n }\n}\nimpl Sub for u64 {\n fn sub(self, other: u64) -> u64 {\n self - other\n }\n}\nimpl Sub for u32 {\n fn sub(self, other: u32) -> u32 {\n self - other\n }\n}\nimpl Sub for u16 {\n fn sub(self, other: u16) -> u16 {\n self - other\n }\n}\nimpl Sub for u8 {\n fn sub(self, other: u8) -> u8 {\n self - other\n }\n}\nimpl Sub for u1 {\n fn sub(self, other: u1) -> u1 {\n self - other\n }\n}\n\nimpl Sub for i8 {\n fn sub(self, other: i8) -> i8 {\n self - other\n }\n}\nimpl Sub for i16 {\n fn sub(self, other: i16) -> i16 {\n self - other\n }\n}\nimpl Sub for i32 {\n fn sub(self, other: i32) -> i32 {\n self - other\n }\n}\nimpl Sub for i64 {\n fn sub(self, other: i64) -> i64 {\n self - other\n }\n}\n\n// docs:start:mul-trait\npub trait Mul {\n fn mul(self, other: Self) -> Self;\n}\n// docs:end:mul-trait\n\nimpl Mul for Field {\n fn mul(self, other: Field) -> Field {\n self * other\n }\n}\n\nimpl Mul for u128 {\n fn mul(self, other: u128) -> u128 {\n self * other\n }\n}\nimpl Mul for u64 {\n fn mul(self, other: u64) -> u64 {\n self * other\n }\n}\nimpl Mul for u32 {\n fn mul(self, other: u32) -> u32 {\n self * other\n }\n}\nimpl Mul for u16 {\n fn mul(self, other: u16) -> u16 {\n self * other\n }\n}\nimpl Mul for u8 {\n fn mul(self, other: u8) -> u8 {\n self * other\n }\n}\nimpl Mul for u1 {\n fn mul(self, other: u1) -> u1 {\n self * other\n }\n}\n\nimpl Mul for i8 {\n fn mul(self, other: i8) -> i8 {\n self * other\n }\n}\nimpl Mul for i16 {\n fn mul(self, other: i16) -> i16 {\n self * other\n }\n}\nimpl Mul for i32 {\n fn mul(self, other: i32) -> i32 {\n self * other\n }\n}\nimpl Mul for i64 {\n fn mul(self, other: i64) -> i64 {\n self * other\n }\n}\n\n// docs:start:div-trait\npub trait Div {\n fn div(self, other: Self) -> Self;\n}\n// docs:end:div-trait\n\nimpl Div for Field {\n fn div(self, other: Field) -> Field {\n self / other\n }\n}\n\nimpl Div for u128 {\n fn div(self, other: u128) -> u128 {\n self / other\n }\n}\nimpl Div for u64 {\n fn div(self, other: u64) -> u64 {\n self / other\n }\n}\nimpl Div for u32 {\n fn div(self, other: u32) -> u32 {\n self / other\n }\n}\nimpl Div for u16 {\n fn div(self, other: u16) -> u16 {\n self / other\n }\n}\nimpl Div for u8 {\n fn div(self, other: u8) -> u8 {\n self / other\n }\n}\nimpl Div for u1 {\n fn div(self, other: u1) -> u1 {\n self / other\n }\n}\n\nimpl Div for i8 {\n fn div(self, other: i8) -> i8 {\n self / other\n }\n}\nimpl Div for i16 {\n fn div(self, other: i16) -> i16 {\n self / other\n }\n}\nimpl Div for i32 {\n fn div(self, other: i32) -> i32 {\n self / other\n }\n}\nimpl Div for i64 {\n fn div(self, other: i64) -> i64 {\n self / other\n }\n}\n\n// docs:start:rem-trait\npub trait Rem {\n fn rem(self, other: Self) -> Self;\n}\n// docs:end:rem-trait\n\nimpl Rem for u128 {\n fn rem(self, other: u128) -> u128 {\n self % other\n }\n}\nimpl Rem for u64 {\n fn rem(self, other: u64) -> u64 {\n self % other\n }\n}\nimpl Rem for u32 {\n fn rem(self, other: u32) -> u32 {\n self % other\n }\n}\nimpl Rem for u16 {\n fn rem(self, other: u16) -> u16 {\n self % other\n }\n}\nimpl Rem for u8 {\n fn rem(self, other: u8) -> u8 {\n self % other\n }\n}\nimpl Rem for u1 {\n fn rem(self, other: u1) -> u1 {\n self % other\n }\n}\n\nimpl Rem for i8 {\n fn rem(self, other: i8) -> i8 {\n self % other\n }\n}\nimpl Rem for i16 {\n fn rem(self, other: i16) -> i16 {\n self % other\n }\n}\nimpl Rem for i32 {\n fn rem(self, other: i32) -> i32 {\n self % other\n }\n}\nimpl Rem for i64 {\n fn rem(self, other: i64) -> i64 {\n self % other\n }\n}\n\n// docs:start:neg-trait\npub trait Neg {\n fn neg(self) -> Self;\n}\n// docs:end:neg-trait\n\n// docs:start:neg-trait-impls\nimpl Neg for Field {\n fn neg(self) -> Field {\n -self\n }\n}\n\nimpl Neg for i8 {\n fn neg(self) -> i8 {\n -self\n }\n}\nimpl Neg for i16 {\n fn neg(self) -> i16 {\n -self\n }\n}\nimpl Neg for i32 {\n fn neg(self) -> i32 {\n -self\n }\n}\nimpl Neg for i64 {\n fn neg(self) -> i64 {\n -self\n }\n}\n// docs:end:neg-trait-impls\n\n// docs:start:wrapping-add-trait\npub trait WrappingAdd {\n fn wrapping_add(self, y: Self) -> Self;\n}\n// docs:end:wrapping-add-trait\n\nimpl WrappingAdd for u1 {\n fn wrapping_add(self: u1, y: u1) -> u1 {\n self ^ y\n }\n}\n\nimpl WrappingAdd for u8 {\n fn wrapping_add(self: u8, y: u8) -> u8 {\n wrapping_add_hlp(self, y)\n }\n}\n\nimpl WrappingAdd for u16 {\n fn wrapping_add(self: u16, y: u16) -> u16 {\n wrapping_add_hlp(self, y)\n }\n}\n\nimpl WrappingAdd for u32 {\n fn wrapping_add(self: u32, y: u32) -> u32 {\n wrapping_add_hlp(self, y)\n }\n}\n\nimpl WrappingAdd for u64 {\n fn wrapping_add(self: u64, y: u64) -> u64 {\n wrapping_add_hlp(self, y)\n }\n}\n\nimpl WrappingAdd for u128 {\n fn wrapping_add(self: u128, y: u128) -> u128 {\n wrapping_add_hlp(self, y)\n }\n}\n\nimpl WrappingAdd for i8 {\n fn wrapping_add(self: i8, y: i8) -> i8 {\n let x = self as u8;\n x.wrapping_add(y as u8) as i8\n }\n}\n\nimpl WrappingAdd for i16 {\n fn wrapping_add(self: i16, y: i16) -> i16 {\n let x = self as u16;\n x.wrapping_add(y as u16) as i16\n }\n}\n\nimpl WrappingAdd for i32 {\n fn wrapping_add(self: i32, y: i32) -> i32 {\n let x = self as u32;\n x.wrapping_add(y as u32) as i32\n }\n}\n\nimpl WrappingAdd for i64 {\n fn wrapping_add(self: i64, y: i64) -> i64 {\n let x = self as u64;\n x.wrapping_add(y as u64) as i64\n }\n}\nimpl WrappingAdd for Field {\n fn wrapping_add(self: Field, y: Field) -> Field {\n self + y\n }\n}\n\n// docs:start:wrapping-sub-trait\npub trait WrappingSub {\n fn wrapping_sub(self, y: Self) -> Self;\n}\n// docs:start:wrapping-sub-trait\n\nimpl WrappingSub for u1 {\n fn wrapping_sub(self: u1, y: u1) -> u1 {\n self ^ y\n }\n}\n\nimpl WrappingSub for u8 {\n fn wrapping_sub(self: u8, y: u8) -> u8 {\n wrapping_sub_hlp(self, y) as u8\n }\n}\n\nimpl WrappingSub for u16 {\n fn wrapping_sub(self: u16, y: u16) -> u16 {\n wrapping_sub_hlp(self, y) as u16\n }\n}\n\nimpl WrappingSub for u32 {\n fn wrapping_sub(self: u32, y: u32) -> u32 {\n wrapping_sub_hlp(self, y) as u32\n }\n}\nimpl WrappingSub for u64 {\n fn wrapping_sub(self: u64, y: u64) -> u64 {\n wrapping_sub_hlp(self, y) as u64\n }\n}\nimpl WrappingSub for u128 {\n fn wrapping_sub(self: u128, y: u128) -> u128 {\n wrapping_sub_hlp(self, y) as u128\n }\n}\n\nimpl WrappingSub for i8 {\n fn wrapping_sub(self: i8, y: i8) -> i8 {\n let x = self as u8;\n x.wrapping_sub(y as u8) as i8\n }\n}\n\nimpl WrappingSub for i16 {\n fn wrapping_sub(self: i16, y: i16) -> i16 {\n let x = self as u16;\n x.wrapping_sub(y as u16) as i16\n }\n}\n\nimpl WrappingSub for i32 {\n fn wrapping_sub(self: i32, y: i32) -> i32 {\n let x = self as u32;\n x.wrapping_sub(y as u32) as i32\n }\n}\nimpl WrappingSub for i64 {\n fn wrapping_sub(self: i64, y: i64) -> i64 {\n let x = self as u64;\n x.wrapping_sub(y as u64) as i64\n }\n}\nimpl WrappingSub for Field {\n fn wrapping_sub(self: Field, y: Field) -> Field {\n self - y\n }\n}\n\n// docs:start:wrapping-mul-trait\npub trait WrappingMul {\n fn wrapping_mul(self, y: Self) -> Self;\n}\n// docs:start:wrapping-mul-trait\n\nimpl WrappingMul for u1 {\n fn wrapping_mul(self: u1, y: u1) -> u1 {\n self & y\n }\n}\n\nimpl WrappingMul for u8 {\n fn wrapping_mul(self: u8, y: u8) -> u8 {\n wrapping_mul_hlp(self, y)\n }\n}\n\nimpl WrappingMul for u16 {\n fn wrapping_mul(self: u16, y: u16) -> u16 {\n wrapping_mul_hlp(self, y)\n }\n}\n\nimpl WrappingMul for u32 {\n fn wrapping_mul(self: u32, y: u32) -> u32 {\n wrapping_mul_hlp(self, y)\n }\n}\nimpl WrappingMul for u64 {\n fn wrapping_mul(self: u64, y: u64) -> u64 {\n wrapping_mul_hlp(self, y)\n }\n}\n\nimpl WrappingMul for i8 {\n fn wrapping_mul(self: i8, y: i8) -> i8 {\n let x = self as u8;\n x.wrapping_mul(y as u8) as i8\n }\n}\n\nimpl WrappingMul for i16 {\n fn wrapping_mul(self: i16, y: i16) -> i16 {\n let x = self as u16;\n x.wrapping_mul(y as u16) as i16\n }\n}\n\nimpl WrappingMul for i32 {\n fn wrapping_mul(self: i32, y: i32) -> i32 {\n let x = self as u32;\n x.wrapping_mul(y as u32) as i32\n }\n}\n\nimpl WrappingMul for i64 {\n fn wrapping_mul(self: i64, y: i64) -> i64 {\n let x = self as u64;\n x.wrapping_mul(y as u64) as i64\n }\n}\n\nimpl WrappingMul for u128 {\n fn wrapping_mul(self: u128, y: u128) -> u128 {\n wrapping_mul128_hlp(self, y)\n }\n}\nimpl WrappingMul for Field {\n fn wrapping_mul(self: Field, y: Field) -> Field {\n self * y\n }\n}\n\nfn wrapping_add_hlp<T>(x: T, y: T) -> T\nwhere\n T: AsPrimitive<Field>,\n Field: AsPrimitive<T>,\n{\n AsPrimitive::as_(x.as_() + y.as_())\n}\n\nfn wrapping_sub_hlp<T>(x: T, y: T) -> Field\nwhere\n T: AsPrimitive<Field>,\n{\n //340282366920938463463374607431768211456 is 2^128, it is used to avoid underflow\n x.as_() + 340282366920938463463374607431768211456 - y.as_()\n}\n\nfn wrapping_mul_hlp<T>(x: T, y: T) -> T\nwhere\n T: AsPrimitive<Field>,\n Field: AsPrimitive<T>,\n{\n AsPrimitive::as_(x.as_() * y.as_())\n}\n\nglobal two_pow_64: u128 = 0x10000000000000000;\n/// Splits a 128 bits number into two 64 bits limbs\nunconstrained fn split64(x: u128) -> (u64, u64) {\n let lo = x as u64;\n let hi = (x / two_pow_64) as u64;\n (lo, hi)\n}\n\n/// Split a 128 bits number into two 64 bits limbs\n/// It will fail if the number is more than 128 bits\nfn split_into_64_bit_limbs(x: u128) -> (u64, u64) {\n // Safety: the limbs are constrained below\n let (x_lo, x_hi) = unsafe { split64(x) };\n assert(x as Field == x_lo as Field + x_hi as Field * two_pow_64 as Field);\n (x_lo, x_hi)\n}\n\n#[field(bn254)]\nfn wrapping_mul128_hlp(x: u128, y: u128) -> u128 {\n let (x_lo, x_hi) = split_into_64_bit_limbs(x);\n let (y_lo, y_hi) = split_into_64_bit_limbs(y);\n // Multiplication using the limbs:(x_lo + 2**64*x_hi)*(y_lo + 2**64*y_hi)=x_lo*y_lo+...\n // and skipping the terms over 2**128\n // Working with u64 limbs ensures that we cannot overflow the field modulus.\n let low = x_lo as Field * y_lo as Field;\n let lo = low as u64 as Field;\n let carry = (low - lo) / two_pow_64 as Field;\n let high = x_lo as Field * y_hi as Field + x_hi as Field * y_lo as Field + carry;\n let hi = high as u64 as Field;\n (lo + two_pow_64 as Field * hi) as u128\n}\n\nmod tests {\n #[test(should_fail_with = \"custom message\")]\n fn test_static_assert_custom_message() {\n crate::static_assert(1 == 2, \"custom message\");\n }\n\n mod arithmetic {\n use crate::ops::arith::{Add, Div, Mul, Neg, Rem, Sub};\n #[test]\n fn test_basic_arithmetic_traits() {\n // add\n assert_eq(5.add(3), 8);\n assert_eq(0u8.add(255u8), 255u8);\n assert_eq(42.add(58), 100);\n\n // sub\n assert_eq(10.sub(3), 7);\n assert_eq(100.sub(42), 58);\n\n // mul\n assert_eq(6.mul(7), 42);\n\n // div\n assert_eq(15.div(3), 5);\n assert_eq(10u8.div(3u8), 3u8);\n assert_eq(15.div(3), 5);\n\n // rem\n assert_eq(17.rem(5), 2);\n assert_eq(10u8.rem(3u8), 1u8);\n\n // neg\n assert_eq(42.neg(), -42);\n assert_eq((-10).neg(), 10);\n assert_eq(42.neg(), -42);\n }\n\n #[test]\n fn test_division() {\n // test division by one\n assert_eq(42.div(1), 42);\n assert_eq(0.div(1), 0);\n assert_eq(255u8.div(1u8), 255u8);\n\n // test division by self\n assert_eq(42.div(42), 1);\n assert_eq(1.div(1), 1);\n\n // test remainder\n assert_eq(42.rem(42), 0);\n assert_eq(0.rem(42), 0);\n assert_eq(1.rem(42), 1);\n }\n\n #[test(should_fail)]\n fn test_u8_sub_overflow_failure() {\n let _ = 0u8.sub(1u8);\n }\n\n #[test(should_fail)]\n fn test_u8_add_overflow_failure() {\n let _ = 255u8.add(1u8);\n }\n\n #[test(should_fail)]\n fn test_u8_mul_overflow_failure() {\n let _ = 255u8.mul(2u8);\n }\n\n #[test(should_fail)]\n fn test_u16_sub_overflow_failure() {\n let _ = 0u16.sub(1u16);\n }\n\n #[test(should_fail)]\n fn test_u16_add_overflow_failure() {\n let _ = 65535u16.add(1u16);\n }\n\n #[test(should_fail)]\n fn test_u16_mul_overflow_failure() {\n let _ = 65535u16.mul(2u16);\n }\n\n #[test(should_fail)]\n fn test_signed_sub_overflow_failure() {\n let val: i8 = -128;\n let _ = val.sub(1i8);\n }\n\n #[test(should_fail)]\n fn test_signed_overflow_failure() {\n let _ = 127i8.add(1i8);\n }\n\n #[test]\n fn test_field() {\n let zero: Field = 0;\n let one: Field = 1;\n\n // test Field basic operations\n assert_eq(zero.add(one), one);\n assert_eq(one.add(zero), one);\n assert_eq(one.sub(one), zero);\n assert_eq(one.mul(one), one);\n assert_eq(one.div(one), one);\n assert_eq(zero.neg(), zero);\n assert_eq(one.neg(), -one);\n }\n\n }\n\n mod wrapping_arithmetic {\n use crate::ops::arith::{Add, Div, Mul, Neg, Sub, WrappingAdd, WrappingMul, WrappingSub};\n #[test]\n fn test_wrapping_add() {\n assert_eq(255u8.wrapping_add(1u8), 0u8);\n assert_eq(255u8.wrapping_add(255u8), 254u8);\n assert_eq(0u8.wrapping_add(0u8), 0u8);\n assert_eq(128u8.wrapping_add(128u8), 0u8);\n\n // test u16 wrapping add\n assert_eq(65535u16.wrapping_add(1u16), 0u16);\n assert_eq(65535u16.wrapping_add(65535u16), 65534u16);\n\n // test u32 wrapping add\n assert_eq(0xffffffffu32.wrapping_add(1u32), 0u32);\n assert_eq(0xffffffffu32.wrapping_add(0xffffffffu32), 0xfffffffeu32);\n\n // test u64 wrapping add\n assert_eq(0xffffffffffffffffu64.wrapping_add(1u64), 0u64);\n assert_eq(\n 0xffffffffffffffffu64.wrapping_add(0xffffffffffffffffu64),\n 0xfffffffffffffffeu64,\n );\n\n // test u128 wrapping add\n assert_eq(0xffffffffffffffffffffffffffffffffu128.wrapping_add(1u128), 0u128);\n\n // test signed types\n assert_eq(127i8.wrapping_add(1i8), -128i8);\n let val: i8 = -128;\n assert_eq(val.wrapping_add(-1i8), 127i8);\n\n // test Field wrapping add\n let forty_two: Field = 42;\n let fifty_eight: Field = 58;\n let hundred: Field = 100;\n let neg_two: Field = -2;\n let two: Field = 2;\n let zero: Field = 0;\n let neg_two_hundred: Field = -200;\n let neg_one_ninety_eight: Field = -198;\n assert_eq(forty_two.wrapping_add(fifty_eight), hundred);\n assert_eq(neg_two.wrapping_add(two), zero);\n assert_eq(neg_two_hundred.wrapping_add(two), neg_one_ninety_eight);\n }\n\n #[test]\n fn test_wrapping_sub() {\n assert_eq(0u8.wrapping_sub(1u8), 255u8);\n assert_eq(255u8.wrapping_sub(255u8), 0u8);\n assert_eq(0u8.wrapping_sub(0u8), 0u8);\n assert_eq(1u8.wrapping_sub(2u8), 255u8);\n\n // test u16 wrapping sub\n assert_eq(0u16.wrapping_sub(1u16), 65535u16);\n assert_eq(65535u16.wrapping_sub(65535u16), 0u16);\n\n // test u32 wrapping sub\n assert_eq(0u32.wrapping_sub(1u32), 0xffffffffu32);\n assert_eq(0xffffffffu32.wrapping_sub(0xffffffffu32), 0u32);\n\n // test u64 wrapping sub\n assert_eq(0u64.wrapping_sub(1u64), 0xffffffffffffffffu64);\n assert_eq(0xffffffffffffffffu64.wrapping_sub(0xffffffffffffffffu64), 0u64);\n\n // test u128 wrapping sub\n assert_eq(0u128.wrapping_sub(1u128), 0xffffffffffffffffffffffffffffffffu128);\n\n // test signed types\n let val: i8 = -128;\n assert_eq(val.wrapping_sub(1i8), 127i8);\n assert_eq(127i8.wrapping_sub(-1i8), -128i8);\n\n // test Field wrapping sub\n let forty_two: Field = 42;\n let fifty_eight: Field = 58;\n let neg_sixteen: Field = -16;\n assert_eq(forty_two.wrapping_sub(fifty_eight), neg_sixteen);\n }\n\n #[test]\n fn test_wrapping_mul() {\n let zero: u128 = 0;\n let one: u128 = 1;\n let two_pow_64: u128 = 0x10000000000000000;\n let u128_max: u128 = 0xffffffffffffffffffffffffffffffff;\n\n assert_eq(zero, zero.wrapping_mul(one));\n assert_eq(zero, one.wrapping_mul(zero));\n assert_eq(one, one.wrapping_mul(one));\n assert_eq(zero, zero.wrapping_mul(two_pow_64));\n assert_eq(zero, two_pow_64.wrapping_mul(zero));\n assert_eq(two_pow_64, two_pow_64.wrapping_mul(one));\n assert_eq(two_pow_64, one.wrapping_mul(two_pow_64));\n assert_eq(zero, two_pow_64.wrapping_mul(two_pow_64));\n assert_eq(one, u128_max.wrapping_mul(u128_max));\n\n // test u8 wrapping mul\n assert_eq(255u8.wrapping_mul(2u8), 254u8);\n assert_eq(255u8.wrapping_mul(255u8), 1u8);\n assert_eq(128u8.wrapping_mul(2u8), 0u8);\n\n // test u16 wrapping mul\n assert_eq(65535u16.wrapping_mul(2u16), 65534u16);\n assert_eq(65535u16.wrapping_mul(65535u16), 1u16);\n\n // test u32 wrapping mul\n assert_eq(0xffffffffu32.wrapping_mul(2u32), 0xfffffffeu32);\n assert_eq(0xffffffffu32.wrapping_mul(0xffffffffu32), 1u32);\n\n // test u64 wrapping mul\n // 0xffffffffffffffffu64 is 2^64 - 1\n assert_eq(0xffffffffffffffffu64.wrapping_mul(2u64), 0xfffffffffffffffeu64);\n assert_eq(0xffffffffffffffffu64.wrapping_mul(0xffffffffffffffffu64), 1u64);\n\n // test signed types\n assert_eq(127i8.wrapping_mul(2i8), -2i8);\n let val: i8 = -128;\n assert_eq(val.wrapping_mul(-1i8), -128i8);\n\n // test Field wrapping mul\n let six: Field = 6;\n let seven: Field = 7;\n let forty_two: Field = 42;\n let neg_two: Field = -2;\n let two: Field = 2;\n let neg_four: Field = -4;\n assert_eq(six.wrapping_mul(seven), forty_two);\n assert_eq(neg_two.wrapping_mul(two), neg_four);\n }\n\n #[test]\n fn test_u1_behavior() {\n // u1 wrapping add is XOR\n assert_eq(0u1.wrapping_add(0u1), 0u1);\n assert_eq(0u1.wrapping_add(1u1), 1u1);\n assert_eq(1u1.wrapping_add(0u1), 1u1);\n assert_eq(1u1.wrapping_add(1u1), 0u1);\n\n // u1 wrapping sub is XOR\n assert_eq(0u1.wrapping_sub(0u1), 0u1);\n assert_eq(0u1.wrapping_sub(1u1), 1u1);\n assert_eq(1u1.wrapping_sub(0u1), 1u1);\n assert_eq(1u1.wrapping_sub(1u1), 0u1);\n\n // u1 wrapping mul is AND\n assert_eq(0u1.wrapping_mul(0u1), 0u1);\n assert_eq(0u1.wrapping_mul(1u1), 0u1);\n assert_eq(1u1.wrapping_mul(0u1), 0u1);\n assert_eq(1u1.wrapping_mul(1u1), 1u1);\n }\n\n // test wrapping operations is the same as the regular operations\n #[test]\n fn test_wrapping_vs_regular() {\n let u64_large = 0x123456789abcdef0u64;\n let u128_large = 0x123456789abcdef0123456789abcdef0u128;\n\n assert_eq(u64_large.wrapping_add(1u64), u64_large + 1u64);\n assert_eq(u64_large.wrapping_sub(1u64), u64_large - 1u64);\n assert_eq(u64_large.wrapping_mul(2u64), u64_large * 2u64);\n\n assert_eq(u128_large.wrapping_add(1u128), u128_large + 1u128);\n assert_eq(u128_large.wrapping_sub(1u128), u128_large - 1u128);\n assert_eq(u128_large.wrapping_mul(2u128), u128_large * 2u128);\n }\n\n #[test]\n fn test_field_wrapping_operations() {\n let zero: Field = 0;\n let one: Field = 1;\n let large_val = 0xffffffffffffffff;\n\n // test Field wrapping operations\n assert_eq(zero.wrapping_add(one), one);\n assert_eq(one.wrapping_add(large_val), one + large_val);\n assert_eq(zero.wrapping_sub(one), -one);\n assert_eq(one.wrapping_sub(large_val), one - large_val);\n assert_eq(zero.wrapping_mul(one), zero);\n assert_eq(one.wrapping_mul(large_val), large_val);\n\n // test Field basic operations\n assert_eq(zero.add(one), one);\n assert_eq(one.add(zero), one);\n assert_eq(one.sub(one), zero);\n assert_eq(one.mul(one), one);\n assert_eq(one.div(one), one);\n assert_eq(zero.neg(), zero);\n assert_eq(one.neg(), -one);\n }\n\n }\n\n mod split_functions {\n\n use crate::ops::arith::{split64, split_into_64_bit_limbs};\n\n // test split64 and split_into_64_bit_limbs functions\n #[test]\n fn test_split_functions() {\n let small_val = 0x123456789abcdefu128;\n let large_val = 0x123456789abcdef0123456789abcdef0u128;\n let max_val = 0xffffffffffffffffffffffffffffffffu128;\n\n // test split64 (unconstrained)\n // Safety: testing\n unsafe {\n let (lo, hi) = split64(small_val);\n assert_eq(lo, 0x123456789abcdefu64);\n assert_eq(hi, 0u64);\n\n let (lo2, hi2) = split64(large_val);\n assert_eq(lo2, 0x123456789abcdef0u64);\n assert_eq(hi2, 0x123456789abcdef0u64);\n }\n\n // test split_into_64_bit_limbs (constrained)\n let (lo3, hi3) = split_into_64_bit_limbs(small_val);\n assert_eq(lo3, 0x123456789abcdefu64);\n assert_eq(hi3, 0u64);\n\n let (lo4, hi4) = split_into_64_bit_limbs(large_val);\n assert_eq(lo4, 0x123456789abcdef0u64);\n assert_eq(hi4, 0x123456789abcdef0u64);\n\n let (lo5, hi5) = split_into_64_bit_limbs(max_val);\n assert_eq(lo5, 0xffffffffffffffffu64);\n assert_eq(hi5, 0xffffffffffffffffu64);\n }\n }\n}\n"
4228
4228
  },
4229
- "394": {
4229
+ "397": {
4230
4230
  "path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr",
4231
4231
  "source": "mod poseidon2_chunks;\n\nuse crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector, nullifier::Nullifier, private_log::PrivateLog,\n transaction::tx_request::TxRequest,\n },\n address::{AztecAddress, EthAddress},\n constants::{\n CONTRACT_CLASS_LOG_SIZE_IN_FIELDS, DOM_SEP__NOTE_HASH_NONCE,\n DOM_SEP__PRIVATE_LOG_FIRST_FIELD, DOM_SEP__SILOED_NOTE_HASH, DOM_SEP__SILOED_NULLIFIER,\n DOM_SEP__UNIQUE_NOTE_HASH, FUNCTION_TREE_HEIGHT, NULL_MSG_SENDER_CONTRACT_ADDRESS,\n TWO_POW_64,\n },\n merkle_tree::root_from_sibling_path,\n messaging::l2_to_l1_message::L2ToL1Message,\n poseidon2::Poseidon2Sponge,\n side_effect::{Counted, Scoped},\n traits::{FromField, Hash, ToField},\n utils::field::{field_from_bytes, field_from_bytes_32_trunc},\n};\n\npub use poseidon2_chunks::poseidon2_absorb_in_chunks_existing_sponge;\nuse poseidon2_chunks::poseidon2_absorb_in_chunks;\nuse std::embedded_curve_ops::EmbeddedCurveScalar;\n\n// TODO: refactor these into their own files: sha256, poseidon2, some protocol-specific hash computations, some merkle computations.\n\npub fn sha256_to_field<let N: u32>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256::digest(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT],\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(\n function_leaf,\n function_leaf_index,\n function_leaf_sibling_path,\n )\n}\n\n/// Siloing in the context of Aztec refers to the process of hashing a note hash with a contract address (this way\n/// the note hash is scoped to a specific contract). This is used to prevent intermingling of notes between contracts.\npub fn compute_siloed_note_hash(contract_address: AztecAddress, note_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [contract_address.to_field(), note_hash],\n DOM_SEP__SILOED_NOTE_HASH,\n )\n}\n\n/// Computes unique, siloed note hashes from siloed note hashes.\n///\n/// The protocol injects uniqueness into every note_hash, so that every single note_hash in the\n/// tree is unique. This prevents faerie gold attacks, where a malicious sender could create\n/// two identical note_hashes for a recipient (meaning only one would be nullifiable in future).\n///\n/// Most privacy protocols will inject the note's leaf_index (its position in the Note Hashes Tree)\n/// into the note, but this requires the creator of a note to wait until their tx is included in\n/// a block to know the note's final note hash (the unique, siloed note hash), because inserting\n/// leaves into trees is the job of a block producer.\n///\n/// We took a different approach so that the creator of a note will know each note's unique, siloed\n/// note hash before broadcasting their tx to the network.\n/// (There was also a historical requirement relating to \"chained transactions\" -- a feature that\n/// Aztec Connect had to enable notes to be spent from distinct txs earlier in the same block,\n/// and hence before an archive block root had been established for that block -- but that feature\n/// was abandoned for the Aztec Network for having too many bad tradeoffs).\n///\n/// (\n/// Edit: it is no longer true that all final note_hashes will be known by the creator of a tx\n/// before they send it to the network. If a tx makes public function calls, then _revertible_\n/// note_hashes that are created in private will not be made unique in private by the Reset circuit,\n/// but will instead be made unique by the AVM, because the `note_index_in_tx` will not be known\n/// until the AVM has executed the public functions of the tx. (See an explanation in\n/// reset_output_composer.nr for why).\n/// For some such txs, the `note_index_in_tx` might still be predictable through simulation, but\n/// for txs whose public functions create a varying number of non-revertible notes (determined at\n/// runtime), the `note_index_in_tx` will not be deterministically derivable before submitting the\n/// tx to the network.\n/// )\n///\n/// We use the `first_nullifier` of a tx as a seed of uniqueness. We have a guarantee that there will\n/// always be at least one nullifier per tx, because the init circuit will create one if one isn't\n/// created naturally by any functions of the tx. (Search \"protocol_nullifier\").\n/// We combine the `first_nullifier` with the note's index (its position within this tx's new\n/// note_hashes array) (`note_index_in_tx`) to get a truly unique value to inject into a note, which\n/// we call a `note_nonce`.\npub fn compute_unique_note_hash(note_nonce: Field, siloed_note_hash: Field) -> Field {\n let inputs = [note_nonce, siloed_note_hash];\n poseidon2_hash_with_separator(inputs, DOM_SEP__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_note_hash_nonce(first_nullifier_in_tx: Field, note_index_in_tx: u32) -> Field {\n // Hashing the first nullifier with note index in tx is guaranteed to be unique (because all nullifiers are also\n // unique).\n poseidon2_hash_with_separator(\n [first_nullifier_in_tx, note_index_in_tx as Field],\n DOM_SEP__NOTE_HASH_NONCE,\n )\n}\n\npub fn compute_note_nonce_and_unique_note_hash(\n siloed_note_hash: Field,\n first_nullifier: Field,\n note_index_in_tx: u32,\n) -> Field {\n let note_nonce = compute_note_hash_nonce(first_nullifier, note_index_in_tx);\n compute_unique_note_hash(note_nonce, siloed_note_hash)\n}\n\npub fn compute_siloed_nullifier(contract_address: AztecAddress, nullifier: Field) -> Field {\n poseidon2_hash_with_separator(\n [contract_address.to_field(), nullifier],\n DOM_SEP__SILOED_NULLIFIER,\n )\n}\n\npub fn create_protocol_nullifier(tx_request: TxRequest) -> Scoped<Counted<Nullifier>> {\n // The protocol nullifier is ascribed a special side-effect counter of 1. No other side-effect\n // can have counter 1 (see `validate_as_first_call` for that assertion).\n Nullifier { value: tx_request.hash(), note_hash: 0 }.count(1).scope(\n NULL_MSG_SENDER_CONTRACT_ADDRESS,\n )\n}\n\npub fn compute_siloed_private_log_first_field(\n contract_address: AztecAddress,\n field: Field,\n) -> Field {\n poseidon2_hash_with_separator(\n [contract_address.to_field(), field],\n DOM_SEP__PRIVATE_LOG_FIRST_FIELD,\n )\n}\n\npub fn compute_siloed_private_log(contract_address: AztecAddress, log: PrivateLog) -> PrivateLog {\n let mut fields = log.fields;\n fields[0] = compute_siloed_private_log_first_field(contract_address, fields[0]);\n PrivateLog::new(fields, log.length)\n}\n\npub fn compute_contract_class_log_hash(log: [Field; CONTRACT_CLASS_LOG_SIZE_IN_FIELDS]) -> Field {\n poseidon2_hash(log)\n}\n\npub fn compute_app_siloed_secret_key(\n master_secret_key: EmbeddedCurveScalar,\n app_address: AztecAddress,\n key_type_domain_separator: Field,\n) -> Field {\n poseidon2_hash_with_separator(\n [master_secret_key.hi, master_secret_key.lo, app_address.to_field()],\n key_type_domain_separator,\n )\n}\n\npub fn compute_l2_to_l1_message_hash(\n message: Scoped<L2ToL1Message>,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n let contract_address_bytes: [u8; 32] = message.contract_address.to_field().to_be_bytes();\n let recipient_bytes: [u8; 20] = message.inner.recipient.to_be_bytes();\n let content_bytes: [u8; 32] = message.inner.content.to_be_bytes();\n let rollup_version_id_bytes: [u8; 32] = rollup_version_id.to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n\n let mut bytes: [u8; 148] = std::mem::zeroed();\n for i in 0..32 {\n bytes[i] = contract_address_bytes[i];\n bytes[i + 32] = rollup_version_id_bytes[i];\n // 64 - 84 are for recipient.\n bytes[i + 84] = chain_id_bytes[i];\n bytes[i + 116] = content_bytes[i];\n }\n\n for i in 0..20 {\n bytes[64 + i] = recipient_bytes[i];\n }\n\n sha256_to_field(bytes)\n}\n\n// TODO: consider a variant that enables domain separation with a u32 (we seem to have standardised u32s for domain separators)\n/// Computes sha256 hash of 2 input fields.\n///\n/// @returns A truncated field (i.e., the first byte is always 0).\npub fn accumulate_sha256(v0: Field, v1: Field) -> Field {\n // Concatenate two fields into 32 x 2 = 64 bytes\n let v0_as_bytes: [u8; 32] = v0.to_be_bytes();\n let v1_as_bytes: [u8; 32] = v1.to_be_bytes();\n let hash_input_flattened = v0_as_bytes.concat(v1_as_bytes);\n\n sha256_to_field(hash_input_flattened)\n}\n\npub fn poseidon2_hash<let N: u32>(inputs: [Field; N]) -> Field {\n poseidon::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[no_predicates]\npub fn poseidon2_hash_with_separator<let N: u32, T>(inputs: [Field; N], separator: T) -> Field\nwhere\n T: ToField,\n{\n let inputs_with_separator = [separator.to_field()].concat(inputs);\n poseidon2_hash(inputs_with_separator)\n}\n\n/// Computes a Poseidon2 hash over a dynamic-length subarray of the given input.\n/// Only the first `in_len` fields of `input` are absorbed; any remaining fields are ignored.\n/// The caller is responsible for ensuring that the input is padded with zeros if required.\n#[no_predicates]\npub fn poseidon2_hash_subarray<let N: u32>(input: [Field; N], in_len: u32) -> Field {\n let mut sponge = poseidon2_absorb_in_chunks(input, in_len);\n sponge.squeeze()\n}\n\n// This function is unconstrained because it is intended to be used in unconstrained context only as\n// in constrained contexts it would be too inefficient.\npub unconstrained fn poseidon2_hash_with_separator_bounded_vec<let N: u32, T>(\n inputs: BoundedVec<Field, N>,\n separator: T,\n) -> Field\nwhere\n T: ToField,\n{\n let in_len = inputs.len() + 1;\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs.get(i));\n }\n\n sponge.squeeze()\n}\n\n#[no_predicates]\npub fn poseidon2_hash_bytes<let N: u32>(inputs: [u8; N]) -> Field {\n let mut fields = [0; (N + 30) / 31];\n let mut field_index = 0;\n let mut current_field = [0; 31];\n for i in 0..inputs.len() {\n let index = i % 31;\n current_field[index] = inputs[i];\n if index == 30 {\n fields[field_index] = field_from_bytes(current_field, false);\n current_field = [0; 31];\n field_index += 1;\n }\n }\n if field_index != fields.len() {\n fields[field_index] = field_from_bytes(current_field, false);\n }\n poseidon2_hash(fields)\n}\n\n#[test]\nfn subarray_hash_matches_fixed() {\n let values_to_hash = [3; 17];\n let padded = values_to_hash.concat([0; 11]);\n let subarray_hash = poseidon2_hash_subarray(padded, values_to_hash.len());\n\n // Hash the entire values_to_hash.\n let fixed_len_hash = poseidon::poseidon2::Poseidon2::hash(values_to_hash, values_to_hash.len());\n\n assert_eq(subarray_hash, fixed_len_hash);\n}\n\n#[test]\nfn subarray_hash_matches_variable() {\n let values_to_hash = [3; 17];\n let padded = values_to_hash.concat([0; 11]);\n let subarray_hash = poseidon2_hash_subarray(padded, values_to_hash.len());\n\n // Hash up to values_to_hash.len() fields of the padded array.\n let variable_len_hash = poseidon::poseidon2::Poseidon2::hash(padded, values_to_hash.len());\n\n assert_eq(subarray_hash, variable_len_hash);\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,\n 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,\n 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,\n 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,\n 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,\n 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,\n 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = sha256::digest(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn unique_siloed_note_hash_matches_typescript() {\n let inner_note_hash = 1;\n let contract_address = AztecAddress::from_field(2);\n let first_nullifier = 3;\n let note_index_in_tx = 4;\n\n let siloed_note_hash = compute_siloed_note_hash(contract_address, inner_note_hash);\n let siloed_note_hash_from_ts =\n 0x1986a4bea3eddb1fff917d629a13e10f63f514f401bdd61838c6b475db949169;\n assert_eq(siloed_note_hash, siloed_note_hash_from_ts);\n\n let nonce: Field = compute_note_hash_nonce(first_nullifier, note_index_in_tx);\n let note_hash_nonce_from_ts =\n 0x28e7799791bf066a57bb51fdd0fbcaf3f0926414314c7db515ea343f44f5d58b;\n assert_eq(nonce, note_hash_nonce_from_ts);\n\n let unique_siloed_note_hash_from_nonce = compute_unique_note_hash(nonce, siloed_note_hash);\n let unique_siloed_note_hash = compute_note_nonce_and_unique_note_hash(\n siloed_note_hash,\n first_nullifier,\n note_index_in_tx,\n );\n assert_eq(unique_siloed_note_hash_from_nonce, unique_siloed_note_hash);\n\n let unique_siloed_note_hash_from_ts =\n 0x29949aef207b715303b24639737c17fbfeb375c1d965ecfa85c7e4f0febb7d16;\n assert_eq(unique_siloed_note_hash, unique_siloed_note_hash_from_ts);\n}\n\n#[test]\nfn siloed_nullifier_matches_typescript() {\n let contract_address = AztecAddress::from_field(123);\n let nullifier = 456;\n\n let res = compute_siloed_nullifier(contract_address, nullifier);\n\n let siloed_nullifier_from_ts =\n 0x169b50336c1f29afdb8a03d955a81e485f5ac7d5f0b8065673d1e407e5877813;\n\n assert_eq(res, siloed_nullifier_from_ts);\n}\n\n#[test]\nfn siloed_private_log_first_field_matches_typescript() {\n let contract_address = AztecAddress::from_field(123);\n let field = 456;\n let res = compute_siloed_private_log_first_field(contract_address, field);\n\n let siloed_private_log_first_field_from_ts =\n 0x29480984f7b9257fded523d50addbcfc8d1d33adcf2db73ef3390a8fd5cdffaa;\n\n assert_eq(res, siloed_private_log_first_field_from_ts);\n}\n\n#[test]\nfn empty_l2_to_l1_message_hash_matches_typescript() {\n // All zeroes\n let res = compute_l2_to_l1_message_hash(\n L2ToL1Message { recipient: EthAddress::zero(), content: 0 }.scope(AztecAddress::from_field(\n 0,\n )),\n 0,\n 0,\n );\n\n let empty_l2_to_l1_msg_hash_from_ts =\n 0x003b18c58c739716e76429634a61375c45b3b5cd470c22ab6d3e14cee23dd992;\n\n assert_eq(res, empty_l2_to_l1_msg_hash_from_ts);\n}\n\n#[test]\nfn l2_to_l1_message_hash_matches_typescript() {\n let message = L2ToL1Message { recipient: EthAddress::from_field(1), content: 2 }.scope(\n AztecAddress::from_field(3),\n );\n let version = 4;\n let chainId = 5;\n\n let hash = compute_l2_to_l1_message_hash(message, version, chainId);\n\n // The following value was generated by `yarn-project/stdlib/src/hash/hash.test.ts`\n let l2_to_l1_message_hash_from_ts =\n 0x0081edf209e087ad31b3fd24263698723d57190bd1d6e9fe056fc0c0a68ee661;\n\n assert_eq(hash, l2_to_l1_message_hash_from_ts);\n}\n\n#[test]\nunconstrained fn poseidon2_hash_with_separator_bounded_vec_matches_non_bounded_vec_version() {\n let inputs = BoundedVec::<Field, 4>::from_array([1, 2, 3]);\n let separator = 42;\n\n // Hash using bounded vec version\n let bounded_result = poseidon2_hash_with_separator_bounded_vec(inputs, separator);\n\n // Hash using regular version\n let regular_result = poseidon2_hash_with_separator([1, 2, 3], separator);\n\n // Results should match\n assert_eq(bounded_result, regular_result);\n}\n"
4232
4232
  },
4233
- "402": {
4233
+ "405": {
4234
4234
  "path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/merkle_tree/merkle_tree.nr",
4235
4235
  "source": "use crate::{\n hash::{accumulate_sha256, poseidon2_hash},\n traits::Empty,\n utils::math::is_power_of_2_u32,\n};\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n poseidon2_hash([left, right])\n}\n\npub fn sha_merkle_hash(left: Field, right: Field) -> Field {\n accumulate_sha256(left, right)\n}\n\n#[derive(Eq)]\npub struct MerkleTree<let N: u32> {\n pub leaves: [Field; N],\n pub nodes: [Field; N - 1],\n}\n\nimpl<let N: u32> Empty for MerkleTree<N> {\n fn empty() -> Self {\n MerkleTree { leaves: [0; N], nodes: [0; N - 1] }\n }\n}\n\nimpl<let N: u32> MerkleTree<N> {\n pub fn new(leaves: [Field; N]) -> Self {\n let nodes = compute_merkle_tree_nodes(leaves, merkle_hash);\n MerkleTree { leaves, nodes }\n }\n\n pub fn new_sha(leaves: [Field; N]) -> Self {\n let nodes = compute_merkle_tree_nodes(leaves, sha_merkle_hash);\n MerkleTree { leaves, nodes }\n }\n\n pub fn get_root(self) -> Field {\n self.nodes[N - 2]\n }\n\n pub fn get_sibling_path<let K: u32>(self, leaf_index: u32) -> [Field; K] {\n assert_eq(2.pow_32(K as Field), N as Field, \"Invalid path length\");\n\n let mut path = [0; K];\n let mut current_index = leaf_index;\n let mut subtree_width = N;\n\n let mut current_sibling_index = sibling_index(current_index);\n\n path[0] = self.leaves[current_sibling_index];\n\n let mut subtree_offset: u32 = 0;\n\n for i in 1..K {\n current_index = current_index / 2;\n subtree_width = subtree_width / 2;\n\n current_sibling_index = sibling_index(current_index);\n\n path[i] = self.nodes[subtree_offset + current_sibling_index];\n\n subtree_offset += subtree_width;\n }\n\n path\n }\n}\n\npub fn sibling_index(index: u32) -> u32 {\n if index % 2 == 0 {\n index + 1\n } else {\n index - 1\n }\n}\n\npub fn compute_merkle_tree_nodes<let N: u32>(\n leaves: [Field; N],\n hasher: fn(Field, Field) -> Field,\n) -> [Field; N - 1] {\n // Note: `N` must be a power of 2.\n std::static_assert(is_power_of_2_u32(N), \"N must be a power of 2\");\n std::static_assert(N != 1, \"2 must divide N\");\n\n let mut nodes = [0; N - 1];\n\n let total_nodes = N - 1;\n let half_size = N / 2;\n\n // Hash base layer.\n for i in 0..half_size {\n nodes[i] = hasher(leaves[2 * i], leaves[2 * i + 1]);\n }\n\n // Hash the other layers.\n for i in 0..(total_nodes - half_size) {\n nodes[half_size + i] = hasher(nodes[2 * i], nodes[2 * i + 1]);\n }\n\n nodes\n}\n"
4236
4236
  },
4237
- "404": {
4237
+ "407": {
4238
4238
  "path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/merkle_tree/root.nr",
4239
4239
  "source": "use crate::merkle_tree::merkle_tree::{compute_merkle_tree_nodes, merkle_hash, sha_merkle_hash};\n\n/// Calculate the Merkle tree root from the sibling path and leaf, using the default merkle hash.\npub fn root_from_sibling_path<let N: u32>(\n leaf: Field,\n leaf_index: Field,\n sibling_path: [Field; N],\n) -> Field {\n root_from_sibling_path_with_hasher(leaf, leaf_index, sibling_path, merkle_hash)\n}\n\n/// Calculate the Merkle tree root from the sibling path and leaf, using a custom hasher.\n///\n/// The leaf is hashed with its sibling, the result is then hashed with the next sibling in the path. and so on.\n/// The last hash is the root.\npub fn root_from_sibling_path_with_hasher<let N: u32>(\n leaf: Field,\n leaf_index: Field,\n sibling_path: [Field; N],\n hasher: fn(Field, Field) -> Field,\n) -> Field {\n let mut node = leaf;\n let indices: [u1; N] = leaf_index.to_le_bits();\n\n for i in 0..N {\n let (hash_left, hash_right) = if indices[i] == 1 {\n (sibling_path[i], node)\n } else {\n (node, sibling_path[i])\n };\n node = hasher(hash_left, hash_right);\n }\n node\n}\n\npub fn compute_tree_root<let N: u32>(leaves: [Field; N]) -> Field {\n compute_tree_root_with_hasher(leaves, merkle_hash)\n}\n\npub fn compute_sha_tree_root<let N: u32>(leaves: [Field; N]) -> Field {\n compute_tree_root_with_hasher(leaves, sha_merkle_hash)\n}\n\nfn compute_tree_root_with_hasher<let N: u32>(\n leaves: [Field; N],\n hasher: fn(Field, Field) -> Field,\n) -> Field {\n compute_merkle_tree_nodes(leaves, hasher)[N - 2]\n}\n\npub fn compute_empty_tree_root<let TreeHeight: u32>() -> Field {\n compute_empty_tree_root_with_hasher::<TreeHeight>(merkle_hash)\n}\n\npub fn compute_empty_sha_tree_root<let TreeHeight: u32>() -> Field {\n compute_empty_tree_root_with_hasher::<TreeHeight>(sha_merkle_hash)\n}\n\npub fn compute_empty_tree_root_with_hasher<let TreeHeight: u32>(\n hasher: fn(Field, Field) -> Field,\n) -> Field {\n let mut hashes = [0; TreeHeight + 1];\n for i in 1..TreeHeight + 1 {\n hashes[i] = hasher(hashes[i - 1], hashes[i - 1]);\n }\n hashes[TreeHeight]\n}\n\n#[test]\nfn test_merkle_roots_match_typescript() {\n // The following hardcoded values are generated from yarn-project/foundation/src/trees/balanced_merkle_tree_root.test.ts\n\n let root = compute_tree_root([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]);\n let expected_tree_root_from_ts =\n 0x1528946361c480e8dc1e9ae3f8c31c997625fa1ddeddc7db5ad0dce3ac58fc4c;\n assert_eq(root, expected_tree_root_from_ts);\n\n let empty_root = compute_tree_root([0; 16]);\n let expected_empty_root_from_ts =\n 0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e;\n assert_eq(empty_root, expected_empty_root_from_ts);\n\n let sha_root = compute_sha_tree_root([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]);\n let expected_sha_root_from_ts =\n 0x00b007869b8a5e2a9b3b580a318e702cea04b2f5438f2e26743f545e4d1ecbdb;\n assert_eq(sha_root, expected_sha_root_from_ts);\n}\n\n#[test]\nfn test_empty_tree_root() {\n assert_eq(compute_empty_tree_root::<0>(), 0);\n\n assert_eq(\n compute_empty_tree_root::<1>(),\n 0x0b63a53787021a4a962a452c2921b3663aff1ffd8d5510540f8e659e782956f1,\n );\n\n assert_eq(\n compute_empty_tree_root::<2>(),\n 0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290,\n );\n\n assert_eq(\n compute_empty_tree_root::<6>(),\n 0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76,\n );\n\n assert_eq(\n compute_empty_tree_root::<10>(),\n 0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686,\n );\n}\n"
4240
4240
  },
@@ -4246,27 +4246,27 @@
4246
4246
  "path": "std/panic.nr",
4247
4247
  "source": "pub fn panic<T, U>(message: T) -> U\nwhere\n T: StringLike,\n{\n assert(false, message);\n crate::mem::zeroed()\n}\n\ntrait StringLike {}\n\nimpl<let N: u32> StringLike for str<N> {}\nimpl<let N: u32, T> StringLike for fmtstr<N, T> {}\n"
4248
4248
  },
4249
- "423": {
4249
+ "430": {
4250
4250
  "path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/storage/map.nr",
4251
4251
  "source": "use crate::{\n constants::DOM_SEP__PUBLIC_STORAGE_MAP_SLOT, hash::poseidon2_hash_with_separator,\n traits::ToField,\n};\n\n// TODO: Move this to src/public_data/storage/map.nr\npub fn derive_storage_slot_in_map<K>(storage_slot: Field, key: K) -> Field\nwhere\n K: ToField,\n{\n poseidon2_hash_with_separator(\n [storage_slot, key.to_field()],\n DOM_SEP__PUBLIC_STORAGE_MAP_SLOT,\n )\n}\n\nmod test {\n use crate::{address::AztecAddress, storage::map::derive_storage_slot_in_map, traits::FromField};\n\n #[test]\n fn test_derive_storage_slot_in_map_matches_typescript() {\n let map_slot = 0x132258fb6962c4387ba659d9556521102d227549a386d39f0b22d1890d59c2b5;\n let key = AztecAddress::from_field(\n 0x302dbc2f9b50a73283d5fb2f35bc01eae8935615817a0b4219a057b2ba8a5a3f,\n );\n\n let slot = derive_storage_slot_in_map(map_slot, key);\n\n // The following value was generated by `map_slot.test.ts`\n let slot_from_typescript =\n 0x2d225f361108379adc2da91378b9702675c5546b57e78bafc1e74ec7fec55967;\n\n assert_eq(slot, slot_from_typescript);\n }\n}\n"
4252
4252
  },
4253
- "445": {
4253
+ "438": {
4254
4254
  "path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/type_packing.nr",
4255
4255
  "source": "use crate::traits::Packable;\n\nglobal BOOL_PACKED_LEN: u32 = 1;\nglobal U8_PACKED_LEN: u32 = 1;\nglobal U16_PACKED_LEN: u32 = 1;\nglobal U32_PACKED_LEN: u32 = 1;\nglobal U64_PACKED_LEN: u32 = 1;\nglobal U128_PACKED_LEN: u32 = 1;\nglobal FIELD_PACKED_LEN: u32 = 1;\nglobal I8_PACKED_LEN: u32 = 1;\nglobal I16_PACKED_LEN: u32 = 1;\nglobal I32_PACKED_LEN: u32 = 1;\nglobal I64_PACKED_LEN: u32 = 1;\n\nimpl Packable for bool {\n let N: u32 = BOOL_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> bool {\n (fields[0] as u1) != 0\n }\n}\n\nimpl Packable for u8 {\n let N: u32 = U8_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u8\n }\n}\n\nimpl Packable for u16 {\n let N: u32 = U16_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u16\n }\n}\n\nimpl Packable for u32 {\n let N: u32 = U32_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u32\n }\n}\n\nimpl Packable for u64 {\n let N: u32 = U64_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u64\n }\n}\n\nimpl Packable for u128 {\n let N: u32 = U128_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u128\n }\n}\n\nimpl Packable for Field {\n let N: u32 = FIELD_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0]\n }\n}\n\nimpl Packable for i8 {\n let N: u32 = I8_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as u8 as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u8 as i8\n }\n}\n\nimpl Packable for i16 {\n let N: u32 = I16_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as u16 as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u16 as i16\n }\n}\n\nimpl Packable for i32 {\n let N: u32 = I32_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as u32 as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u32 as i32\n }\n}\n\nimpl Packable for i64 {\n let N: u32 = I64_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as u64 as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u64 as i64\n }\n}\n\nimpl<T, let M: u32> Packable for [T; M]\nwhere\n T: Packable,\n{\n let N: u32 = M * <T as Packable>::N;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n let mut result: [Field; Self::N] = std::mem::zeroed();\n for i in 0..M {\n let serialized = self[i].pack();\n for j in 0..<T as Packable>::N {\n result[i * <T as Packable>::N + j] = serialized[j];\n }\n }\n result\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n let mut reader = crate::utils::reader::Reader::new(fields);\n let result: [T; M] = std::mem::zeroed();\n reader.read_struct_array::<T, <T as Packable>::N, M>(Packable::unpack, result)\n }\n}\n\n#[test]\nfn test_u16_packing() {\n let a: u16 = 10;\n assert_eq(a, u16::unpack(a.pack()));\n}\n\n#[test]\nfn test_i8_packing() {\n let a: i8 = -10;\n assert_eq(a, i8::unpack(a.pack()));\n}\n\n#[test]\nfn test_i16_packing() {\n let a: i16 = -10;\n assert_eq(a, i16::unpack(a.pack()));\n}\n\n#[test]\nfn test_i32_packing() {\n let a: i32 = -10;\n assert_eq(a, i32::unpack(a.pack()));\n}\n\n#[test]\nfn test_i64_packing() {\n let a: i64 = -10;\n assert_eq(a, i64::unpack(a.pack()));\n}\n"
4256
4256
  },
4257
- "458": {
4257
+ "451": {
4258
4258
  "path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/serde/src/reader.nr",
4259
4259
  "source": "pub struct Reader<let N: u32> {\n data: [Field; N],\n offset: u32,\n}\n\nimpl<let N: u32> Reader<N> {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_u64(&mut self) -> u64 {\n self.read() as u64\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() != 0\n }\n\n pub fn read_array<let K: u32>(&mut self) -> [Field; K] {\n let mut result = [0; K];\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n pub fn read_struct<T, let K: u32>(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array());\n result\n }\n\n pub fn read_struct_array<T, let K: u32, let C: u32>(\n &mut self,\n deserialise: fn([Field; K]) -> T,\n mut result: [T; C],\n ) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn peek_offset(&mut self, offset: u32) -> Field {\n self.data[self.offset + offset]\n }\n\n pub fn advance_offset(&mut self, offset: u32) {\n self.offset += offset;\n }\n\n pub fn finish(self) {\n assert_eq(self.offset, self.data.len(), \"Reader did not read all data\");\n }\n}\n"
4260
4260
  },
4261
- "459": {
4261
+ "452": {
4262
4262
  "path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/serde/src/serialization.nr",
4263
4263
  "source": "use crate::{reader::Reader, writer::Writer};\n\n// docs:start:serialize\n/// Trait for serializing Noir types into arrays of Fields.\n///\n/// An implementation of the Serialize trait has to follow Noir's intrinsic serialization (each member of a struct\n/// converted directly into one or more Fields without any packing or compression). This trait (and Deserialize) are\n/// typically used to communicate between Noir and TypeScript (via oracles and function arguments).\n///\n/// # On Following Noir's Intrinsic Serialization\n/// When calling a Noir function from TypeScript (TS), first the function arguments are serialized into an array\n/// of fields. This array is then included in the initial witness. Noir's intrinsic serialization is then used\n/// to deserialize the arguments from the witness. When the same Noir function is called from Noir this Serialize trait\n/// is used instead of the serialization in TS. For this reason we need to have a match between TS serialization,\n/// Noir's intrinsic serialization and the implementation of this trait. If there is a mismatch, the function calls\n/// fail with an arguments hash mismatch error message.\n///\n/// # Associated Constants\n/// * `N` - The length of the output Field array, known at compile time\n///\n/// # Example\n/// ```\n/// impl<let N: u32> Serialize for str<N> {\n/// let N: u32 = N;\n///\n/// fn serialize(self) -> [Field; Self::N] {\n/// let mut writer: Writer<Self::N> = Writer::new();\n/// self.stream_serialize(&mut writer);\n/// writer.finish()\n/// }\n///\n/// fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n/// let bytes = self.as_bytes();\n/// for i in 0..bytes.len() {\n/// writer.write(bytes[i] as Field);\n/// }\n/// }\n/// }\n/// ```\n#[derive_via(derive_serialize)]\npub trait Serialize {\n let N: u32;\n\n fn serialize(self) -> [Field; Self::N];\n\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>);\n}\n\n/// Generates a `Serialize` trait implementation for a struct type.\n///\n/// # Parameters\n/// - `s`: The struct type definition to generate the implementation for\n///\n/// # Returns\n/// A quoted code block containing the trait implementation\n///\n/// # Example\n/// For a struct defined as:\n/// ```\n/// struct Log<N> {\n/// fields: [Field; N],\n/// length: u32\n/// }\n/// ```\n///\n/// This function generates code equivalent to:\n/// ```\n/// impl<let N: u32> Serialize for Log<N> {\n/// let N: u32 = <[Field; N] as Serialize>::N + <u32 as Serialize>::N;\n///\n/// fn serialize(self) -> [Field; Self::N] {\n/// let mut writer: Writer<Self::N> = Writer::new();\n/// self.stream_serialize(&mut writer);\n/// writer.finish()\n/// }\n///\n/// #[inline_always]\n/// fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n/// Serialize::stream_serialize(self.fields, writer);\n/// Serialize::stream_serialize(self.length, writer);\n/// }\n/// }\n/// ```\npub comptime fn derive_serialize(s: TypeDefinition) -> Quoted {\n let typ = s.as_type();\n let nested_struct = typ.as_data_type().unwrap();\n\n // We care only about the name and type so we drop the last item of the tuple\n let params = nested_struct.0.fields(nested_struct.1).map(|(name, typ, _)| (name, typ));\n\n // Generates the generic parameter declarations (to be placed after the `impl` keyword) and the `where` clause\n // for the `Serialize` trait.\n let generics_declarations = get_generics_declarations(s);\n let where_serialize_clause = get_where_trait_clause(s, quote {Serialize});\n\n let params_len_quote = get_params_len_quote(params);\n\n let function_body = params\n .map(|(name, _typ): (Quoted, Type)| {\n quote {\n $crate::serialization::Serialize::stream_serialize(self.$name, writer);\n }\n })\n .join(quote {});\n\n quote {\n impl$generics_declarations $crate::serialization::Serialize for $typ\n $where_serialize_clause\n {\n let N: u32 = $params_len_quote;\n\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: $crate::writer::Writer<Self::N> = $crate::writer::Writer::new();\n $crate::serialization::Serialize::stream_serialize(self, &mut writer);\n writer.finish()\n }\n\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut $crate::writer::Writer<K>) {\n $function_body\n }\n }\n }\n}\n\n// docs:start:deserialize\n/// Trait for deserializing Noir types from arrays of Fields.\n///\n/// An implementation of the Deserialize trait has to follow Noir's intrinsic serialization (each member of a struct\n/// converted directly into one or more Fields without any packing or compression). This trait is typically used when\n/// deserializing return values from function calls in Noir. Since the same function could be called from TypeScript\n/// (TS), in which case the TS deserialization would get used, we need to have a match between the 2.\n///\n/// # Associated Constants\n/// * `N` - The length of the input Field array, known at compile time\n///\n/// # Example\n/// ```\n/// impl<let M: u32> Deserialize for str<M> {\n/// let N: u32 = M;\n///\n/// fn deserialize(fields: [Field; Self::N]) -> Self {\n/// let mut reader = Reader::new(fields);\n/// let result = Self::stream_deserialize(&mut reader);\n/// reader.finish();\n/// result\n/// }\n///\n/// fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n/// let mut bytes = [0 as u8; M];\n/// for i in 0..M {\n/// bytes[i] = reader.read() as u8;\n/// }\n/// str::<M>::from(bytes)\n/// }\n/// }\n/// ```\n#[derive_via(derive_deserialize)]\npub trait Deserialize {\n let N: u32;\n\n fn deserialize(fields: [Field; Self::N]) -> Self;\n\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self;\n}\n\n/// Generates a `Deserialize` trait implementation for a given struct `s`.\n///\n/// # Arguments\n/// * `s` - The struct type definition to generate the implementation for\n///\n/// # Returns\n/// A `Quoted` block containing the generated trait implementation\n///\n/// # Requirements\n/// Each struct member type must implement the `Deserialize` trait (it gets used in the generated code).\n///\n/// # Example\n/// For a struct like:\n/// ```\n/// struct MyStruct {\n/// x: AztecAddress,\n/// y: Field,\n/// }\n/// ```\n///\n/// This generates:\n/// ```\n/// impl Deserialize for MyStruct {\n/// let N: u32 = <AztecAddress as Deserialize>::N + <Field as Deserialize>::N;\n///\n/// fn deserialize(fields: [Field; Self::N]) -> Self {\n/// let mut reader = Reader::new(fields);\n/// let result = Self::stream_deserialize(&mut reader);\n/// reader.finish();\n/// result\n/// }\n///\n/// #[inline_always]\n/// fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n/// let x = <AztecAddress as Deserialize>::stream_deserialize(reader);\n/// let y = <Field as Deserialize>::stream_deserialize(reader);\n/// Self { x, y }\n/// }\n/// }\n/// ```\npub comptime fn derive_deserialize(s: TypeDefinition) -> Quoted {\n let typ = s.as_type();\n let nested_struct = typ.as_data_type().unwrap();\n let params = nested_struct.0.fields(nested_struct.1);\n\n // Generates the generic parameter declarations (to be placed after the `impl` keyword) and the `where` clause\n // for the `Deserialize` trait.\n let generics_declarations = get_generics_declarations(s);\n let where_deserialize_clause = get_where_trait_clause(s, quote {Deserialize});\n\n // The following will give us:\n // <type_of_struct_member_1 as Deserialize>::N + <type_of_struct_member_2 as Deserialize>::N + ...\n // (or 0 if the struct has no members)\n let right_hand_side_of_definition_of_n = if params.len() > 0 {\n params\n .map(|(_, param_type, _): (Quoted, Type, Quoted)| {\n quote {\n <$param_type as $crate::serialization::Deserialize>::N\n }\n })\n .join(quote {+})\n } else {\n quote {0}\n };\n\n // For structs containing a single member, we can enhance performance by directly deserializing the input array,\n // bypassing the need for loop-based array construction. While this optimization yields significant benefits in\n // Brillig where the loops are expected to not be optimized, it is not relevant in ACIR where the loops are\n // expected to be optimized away.\n let function_body = if params.len() > 1 {\n // This generates deserialization code for each struct member and concatenates them together.\n let deserialization_of_struct_members = params\n .map(|(param_name, param_type, _): (Quoted, Type, Quoted)| {\n quote {\n let $param_name = <$param_type as Deserialize>::stream_deserialize(reader);\n }\n })\n .join(quote {});\n\n // We join the struct member names with a comma to be used in the `Self { ... }` syntax\n // This will give us e.g. `a, b, c` for a struct with three fields named `a`, `b`, and `c`.\n let struct_members = params\n .map(|(param_name, _, _): (Quoted, Type, Quoted)| quote { $param_name })\n .join(quote {,});\n\n quote {\n $deserialization_of_struct_members\n\n Self { $struct_members }\n }\n } else if params.len() == 1 {\n let param_name = params[0].0;\n quote {\n Self { $param_name: $crate::serialization::Deserialize::stream_deserialize(reader) }\n }\n } else {\n quote {\n Self {}\n }\n };\n\n quote {\n impl$generics_declarations $crate::serialization::Deserialize for $typ\n $where_deserialize_clause\n {\n let N: u32 = $right_hand_side_of_definition_of_n;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = $crate::reader::Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut $crate::reader::Reader<K>) -> Self {\n $function_body\n }\n }\n }\n}\n\n/// Generates a quoted expression that computes the total serialized length of function parameters.\n///\n/// # Parameters\n/// * `params` - An array of tuples where each tuple contains a quoted parameter name and its Type. The type needs\n/// to implement the Serialize trait.\n///\n/// # Returns\n/// A quoted expression that evaluates to:\n/// * `0` if there are no parameters\n/// * `(<type1 as Serialize>::N + <type2 as Serialize>::N + ...)` for one or more parameters\ncomptime fn get_params_len_quote(params: [(Quoted, Type)]) -> Quoted {\n if params.len() == 0 {\n quote { 0 }\n } else {\n let params_quote_without_parentheses = params\n .map(|(_, param_type): (Quoted, Type)| {\n quote {\n <$param_type as $crate::serialization::Serialize>::N\n }\n })\n .join(quote {+});\n quote { ($params_quote_without_parentheses) }\n }\n}\n\ncomptime fn get_generics_declarations(s: TypeDefinition) -> Quoted {\n let generics = s.generics();\n\n if generics.len() > 0 {\n let generics_declarations_items = generics\n .map(|(name, maybe_integer_typ)| {\n // The second item in the generics tuple is an Option of an integer type that is Some only if\n // the generic is numeric.\n if maybe_integer_typ.is_some() {\n // The generic is numeric, so we return a quote defined as e.g. \"let N: u32\"\n let integer_type = maybe_integer_typ.unwrap();\n quote {let $name: $integer_type}\n } else {\n // The generic is not numeric, so we return a quote containing the name of the generic (e.g. \"T\")\n quote {$name}\n }\n })\n .join(quote {,});\n quote {<$generics_declarations_items>}\n } else {\n // The struct doesn't have any generics defined, so we just return an empty quote.\n quote {}\n }\n}\n\ncomptime fn get_where_trait_clause(s: TypeDefinition, trait_name: Quoted) -> Quoted {\n let generics = s.generics();\n\n // The second item in the generics tuple is an Option of an integer type that is Some only if the generic is\n // numeric.\n let non_numeric_generics =\n generics.filter(|(_, maybe_integer_typ)| maybe_integer_typ.is_none());\n\n if non_numeric_generics.len() > 0 {\n let non_numeric_generics_declarations =\n non_numeric_generics.map(|(name, _)| quote {$name: $trait_name}).join(quote {,});\n quote {where $non_numeric_generics_declarations}\n } else {\n // There are no non-numeric generics, so we return an empty quote.\n quote {}\n }\n}\n"
4264
4264
  },
4265
- "461": {
4265
+ "454": {
4266
4266
  "path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/serde/src/type_impls.nr",
4267
4267
  "source": "use crate::{reader::Reader, serialization::{Deserialize, Serialize}, writer::Writer};\nuse std::embedded_curve_ops::EmbeddedCurvePoint;\nuse std::embedded_curve_ops::EmbeddedCurveScalar;\n\nglobal U1_SERIALIZED_LEN: u32 = 1;\nglobal BOOL_SERIALIZED_LEN: u32 = 1;\nglobal U8_SERIALIZED_LEN: u32 = 1;\nglobal U16_SERIALIZED_LEN: u32 = 1;\nglobal U32_SERIALIZED_LEN: u32 = 1;\nglobal U64_SERIALIZED_LEN: u32 = 1;\nglobal U128_SERIALIZED_LEN: u32 = 1;\nglobal FIELD_SERIALIZED_LEN: u32 = 1;\nglobal I8_SERIALIZED_LEN: u32 = 1;\nglobal I16_SERIALIZED_LEN: u32 = 1;\nglobal I32_SERIALIZED_LEN: u32 = 1;\nglobal I64_SERIALIZED_LEN: u32 = 1;\n\nimpl Serialize for bool {\n let N: u32 = BOOL_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as Field);\n }\n}\n\nimpl Deserialize for bool {\n let N: u32 = BOOL_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> bool {\n reader.read() != 0\n }\n}\n\nimpl Serialize for u1 {\n let N: u32 = U1_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as Field);\n }\n}\n\nimpl Deserialize for u1 {\n let N: u32 = U1_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u1\n }\n}\n\nimpl Serialize for u8 {\n let N: u32 = U8_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as Field);\n }\n}\n\nimpl Deserialize for u8 {\n let N: u32 = U8_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u8\n }\n}\n\nimpl Serialize for u16 {\n let N: u32 = U16_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as Field);\n }\n}\n\nimpl Deserialize for u16 {\n let N: u32 = U16_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u16\n }\n}\n\nimpl Serialize for u32 {\n let N: u32 = U32_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as Field);\n }\n}\n\nimpl Deserialize for u32 {\n let N: u32 = U32_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u32\n }\n}\n\nimpl Serialize for u64 {\n let N: u32 = U64_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as Field);\n }\n}\n\nimpl Deserialize for u64 {\n let N: u32 = U64_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u64\n }\n}\n\nimpl Serialize for u128 {\n let N: u32 = U128_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as Field);\n }\n}\n\nimpl Deserialize for u128 {\n let N: u32 = U128_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u128\n }\n}\n\nimpl Serialize for Field {\n let N: u32 = FIELD_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self);\n }\n}\n\nimpl Deserialize for Field {\n let N: u32 = FIELD_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read()\n }\n}\n\nimpl Serialize for i8 {\n let N: u32 = I8_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as u8 as Field);\n }\n}\n\nimpl Deserialize for i8 {\n let N: u32 = I8_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u8 as i8\n }\n}\n\nimpl Serialize for i16 {\n let N: u32 = I16_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as u16 as Field);\n }\n}\n\nimpl Deserialize for i16 {\n let N: u32 = I16_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u16 as i16\n }\n}\n\nimpl Serialize for i32 {\n let N: u32 = I32_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as u32 as Field);\n }\n}\n\nimpl Deserialize for i32 {\n let N: u32 = I32_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u32 as i32\n }\n}\n\nimpl Serialize for i64 {\n let N: u32 = I64_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as u64 as Field);\n }\n}\n\nimpl Deserialize for i64 {\n let N: u32 = I64_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u64 as i64\n }\n}\n\nimpl<T, let M: u32> Serialize for [T; M]\nwhere\n T: Serialize,\n{\n let N: u32 = <T as Serialize>::N * M;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n for i in 0..M {\n self[i].stream_serialize(writer);\n }\n }\n}\n\nimpl<T, let M: u32> Deserialize for [T; M]\nwhere\n T: Deserialize,\n{\n let N: u32 = <T as Deserialize>::N * M;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n let mut result: [T; M] = std::mem::zeroed();\n for i in 0..M {\n result[i] = T::stream_deserialize(reader);\n }\n result\n }\n}\n\nimpl<T> Serialize for Option<T>\nwhere\n T: Serialize,\n{\n let N: u32 = <T as Serialize>::N + 1;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write_bool(self.is_some());\n if self.is_some() {\n self.unwrap_unchecked().stream_serialize(writer);\n } else {\n writer.advance_offset(<T as Serialize>::N);\n }\n }\n}\n\nimpl<T> Deserialize for Option<T>\nwhere\n T: Deserialize,\n{\n let N: u32 = <T as Deserialize>::N + 1;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n if reader.read_bool() {\n Option::some(<T as Deserialize>::stream_deserialize(reader))\n } else {\n reader.advance_offset(<T as Deserialize>::N);\n Option::none()\n }\n }\n}\n\nglobal SCALAR_SIZE: u32 = 2;\n\nimpl Serialize for EmbeddedCurveScalar {\n\n let N: u32 = SCALAR_SIZE;\n\n fn serialize(self) -> [Field; SCALAR_SIZE] {\n [self.lo, self.hi]\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self.lo);\n writer.write(self.hi);\n }\n}\n\nimpl Deserialize for EmbeddedCurveScalar {\n let N: u32 = SCALAR_SIZE;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n Self { lo: fields[0], hi: fields[1] }\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n Self { lo: reader.read(), hi: reader.read() }\n }\n}\n\nglobal POINT_SIZE: u32 = 3;\n\nimpl Serialize for EmbeddedCurvePoint {\n let N: u32 = POINT_SIZE;\n\n fn serialize(self) -> [Field; Self::N] {\n [self.x, self.y, self.is_infinite as Field]\n }\n\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self.x);\n writer.write(self.y);\n writer.write(self.is_infinite as Field);\n }\n}\n\nimpl Deserialize for EmbeddedCurvePoint {\n let N: u32 = POINT_SIZE;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n Self { x: fields[0], y: fields[1], is_infinite: fields[2] != 0 }\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n Self { x: reader.read(), y: reader.read(), is_infinite: reader.read_bool() }\n }\n}\n\nimpl<let M: u32> Deserialize for str<M> {\n let N: u32 = M;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n let u8_arr = <[u8; Self::N] as Deserialize>::stream_deserialize(reader);\n str::<Self::N>::from(u8_arr)\n }\n}\n\nimpl<let M: u32> Serialize for str<M> {\n let N: u32 = M;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n self.as_bytes().stream_serialize(writer);\n }\n}\n\n// Note: Not deriving this because it's not supported to call derive_serialize on a \"remote\" struct (and it will never\n// be supported).\nimpl<T, let M: u32> Deserialize for BoundedVec<T, M>\nwhere\n T: Deserialize,\n{\n let N: u32 = <T as Deserialize>::N * M + 1;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n let mut new_bounded_vec: BoundedVec<T, M> = BoundedVec::new();\n let payload_len = Self::N - 1;\n\n // Length is stored in the last field as we need to match intrinsic Noir serialization and the `len` struct\n // field is after `storage` struct field (see `bounded_vec.nr` in noir-stdlib)\n let len = reader.peek_offset(payload_len) as u32;\n\n for i in 0..M {\n if i < len {\n new_bounded_vec.push(<T as Deserialize>::stream_deserialize(reader));\n }\n }\n\n // +1 for the length of the BoundedVec\n reader.advance_offset((M - len) * <T as Deserialize>::N + 1);\n\n new_bounded_vec\n }\n}\n\n// This may cause issues if used as program input, because noir disallows empty arrays for program input.\n// I think this is okay because I don't foresee a unit type being used as input. But leaving this comment as a hint\n// if someone does run into this in the future.\nimpl Deserialize for () {\n let N: u32 = 0;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(_reader: &mut Reader<K>) -> Self {\n ()\n }\n}\n\n// Note: Not deriving this because it's not supported to call derive_serialize on a \"remote\" struct (and it will never\n// be supported).\nimpl<T, let M: u32> Serialize for BoundedVec<T, M>\nwhere\n T: Serialize,\n{\n let N: u32 = <T as Serialize>::N * M + 1; // +1 for the length of the BoundedVec\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n self.storage().stream_serialize(writer);\n // Length is stored in the last field as we need to match intrinsic Noir serialization and the `len` struct\n // field is after `storage` struct field (see `bounded_vec.nr` in noir-stdlib)\n writer.write_u32(self.len() as u32);\n }\n}\n\n// Create a slice of the given length with each element made from `f(i)` where `i` is the current index\ncomptime fn make_slice<Env, T>(length: u32, f: fn[Env](u32) -> T) -> [T] {\n let mut slice = @[];\n for i in 0..length {\n slice = slice.push_back(f(i));\n }\n slice\n}\n\n// Implements Serialize and Deserialize for an arbitrary tuple type\ncomptime fn impl_serialize_for_tuple(_m: Module, length: u32) -> Quoted {\n // `T0`, `T1`, `T2`\n let type_names = make_slice(length, |i| f\"T{i}\".quoted_contents());\n\n // `result0`, `result1`, `result2`\n let result_names = make_slice(length, |i| f\"result{i}\".quoted_contents());\n\n // `T0, T1, T2`\n let field_generics = type_names.join(quote [,]);\n\n // `<T0 as Serialize>::N + <T1 as Serialize>::N + <T2 as Serialize>::N`\n let full_size_serialize = type_names\n .map(|type_name| quote {\n <$type_name as Serialize>::N\n })\n .join(quote [+]);\n\n // `<T0 as Deserialize>::N + <T1 as Deserialize>::N + <T2 as Deserialize>::N`\n let full_size_deserialize = type_names\n .map(|type_name| quote {\n <$type_name as Deserialize>::N\n })\n .join(quote [+]);\n\n // `T0: Serialize, T1: Serialize, T2: Serialize,`\n let serialize_constraints = type_names\n .map(|field_name| quote {\n $field_name: Serialize,\n })\n .join(quote []);\n\n // `T0: Deserialize, T1: Deserialize, T2: Deserialize,`\n let deserialize_constraints = type_names\n .map(|field_name| quote {\n $field_name: Deserialize,\n })\n .join(quote []);\n\n // Statements to serialize each field\n let serialized_fields = type_names\n .mapi(|i, _type_name| quote {\n $crate::serialization::Serialize::stream_serialize(self.$i, writer);\n })\n .join(quote []);\n\n // Statements to deserialize each field\n let deserialized_fields = type_names\n .mapi(|i, type_name| {\n let result_name = result_names[i];\n quote {\n let $result_name = <$type_name as $crate::serialization::Deserialize>::stream_deserialize(reader);\n }\n })\n .join(quote []);\n let deserialize_results = result_names.join(quote [,]);\n\n quote {\n impl<$field_generics> Serialize for ($field_generics) where $serialize_constraints {\n let N: u32 = $full_size_serialize;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: $crate::writer::Writer<Self::N> = $crate::writer::Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut $crate::writer::Writer<K>) {\n\n $serialized_fields\n }\n }\n\n impl<$field_generics> Deserialize for ($field_generics) where $deserialize_constraints {\n let N: u32 = $full_size_deserialize;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = $crate::reader::Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n \n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut $crate::reader::Reader<K>) -> Self {\n $deserialized_fields\n ($deserialize_results)\n }\n }\n }\n}\n\n// Keeping these manual impls. They are more efficient since they do not\n// require copying sub-arrays from any serialized arrays.\nimpl<T1> Serialize for (T1,)\nwhere\n T1: Serialize,\n{\n let N: u32 = <T1 as Serialize>::N;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: crate::writer::Writer<Self::N> = crate::writer::Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n self.0.stream_serialize(writer);\n }\n}\n\nimpl<T1> Deserialize for (T1,)\nwhere\n T1: Deserialize,\n{\n let N: u32 = <T1 as Deserialize>::N;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = crate::reader::Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n (<T1 as Deserialize>::stream_deserialize(reader),)\n }\n}\n\n#[impl_serialize_for_tuple(2)]\n#[impl_serialize_for_tuple(3)]\n#[impl_serialize_for_tuple(4)]\n#[impl_serialize_for_tuple(5)]\n#[impl_serialize_for_tuple(6)]\nmod impls {\n use crate::serialization::{Deserialize, Serialize};\n}\n\n#[test]\nunconstrained fn bounded_vec_serialization() {\n // Test empty BoundedVec\n let empty_vec: BoundedVec<Field, 3> = BoundedVec::from_array([]);\n let serialized = empty_vec.serialize();\n let deserialized = BoundedVec::<Field, 3>::deserialize(serialized);\n assert_eq(empty_vec, deserialized);\n assert_eq(deserialized.len(), 0);\n\n // Test partially filled BoundedVec\n let partial_vec: BoundedVec<[u32; 2], 3> = BoundedVec::from_array([[1, 2]]);\n let serialized = partial_vec.serialize();\n let deserialized = BoundedVec::<[u32; 2], 3>::deserialize(serialized);\n assert_eq(partial_vec, deserialized);\n assert_eq(deserialized.len(), 1);\n assert_eq(deserialized.get(0), [1, 2]);\n\n // Test full BoundedVec\n let full_vec: BoundedVec<[u32; 2], 3> = BoundedVec::from_array([[1, 2], [3, 4], [5, 6]]);\n let serialized = full_vec.serialize();\n let deserialized = BoundedVec::<[u32; 2], 3>::deserialize(serialized);\n assert_eq(full_vec, deserialized);\n assert_eq(deserialized.len(), 3);\n assert_eq(deserialized.get(0), [1, 2]);\n assert_eq(deserialized.get(1), [3, 4]);\n assert_eq(deserialized.get(2), [5, 6]);\n}\n"
4268
4268
  },
4269
- "471": {
4269
+ "464": {
4270
4270
  "path": "/home/aztec-dev/nargo/github.com/noir-lang/sha256/v0.3.0/src/sha256.nr",
4271
4271
  "source": "use std::hash::sha256_compression;\nuse std::runtime::is_unconstrained;\n\nuse constants::{\n BLOCK_BYTE_PTR, BLOCK_SIZE, HASH, INITIAL_STATE, INT_BLOCK_SIZE, INT_SIZE, INT_SIZE_PTR,\n MSG_BLOCK, MSG_SIZE_PTR, STATE, TWO_POW_16, TWO_POW_24, TWO_POW_32, TWO_POW_8,\n};\n\npub(crate) mod constants;\nmod tests;\nmod oracle_tests;\n\n// Implementation of SHA-256 mapping a byte array of variable length to\n// 32 bytes.\n\n// Deprecated in favour of `sha256_var`\n// docs:start:sha256\npub fn sha256<let N: u32>(input: [u8; N]) -> HASH\n// docs:end:sha256\n{\n digest(input)\n}\n\n// SHA-256 hash function\n#[no_predicates]\npub fn digest<let N: u32>(msg: [u8; N]) -> HASH {\n sha256_var(msg, N)\n}\n\n// Variable size SHA-256 hash\npub fn sha256_var<let N: u32>(msg: [u8; N], message_size: u32) -> HASH {\n assert(message_size <= N);\n\n let (h, msg_block) = process_full_blocks(msg, message_size, INITIAL_STATE);\n\n finalize_sha256_blocks(message_size, h, msg_block)\n}\n\n/// Returns the first partially filled message block along with the internal state prior to its compression.\npub(crate) fn process_full_blocks<let N: u32>(\n msg: [u8; N],\n message_size: u32,\n initial_state: STATE,\n) -> (STATE, MSG_BLOCK) {\n if std::runtime::is_unconstrained() {\n let num_full_blocks = message_size / BLOCK_SIZE;\n // Intermediate hash, starting with the canonical initial value\n let mut h: STATE = initial_state;\n // Pointer into msg_block on a 64 byte scale\n for i in 0..num_full_blocks {\n let msg_block = build_msg_block(msg, message_size, BLOCK_SIZE * i);\n h = sha256_compression(msg_block, h);\n }\n\n // We now build the final un-filled block.\n let msg_byte_ptr = message_size % BLOCK_SIZE;\n let msg_block: MSG_BLOCK = if msg_byte_ptr != 0 {\n let num_full_blocks = message_size / BLOCK_SIZE;\n let msg_start = BLOCK_SIZE * num_full_blocks;\n build_msg_block(msg, message_size, msg_start)\n } else {\n // If the message size is a multiple of the block size (i.e. `msg_byte_ptr == 0`) then this block will be empty,\n // so we short-circuit in this case.\n [0; 16]\n };\n\n (h, msg_block)\n } else {\n let num_blocks = N / BLOCK_SIZE;\n\n // We store the intermediate hash states and message blocks in these two arrays which allows us to select the correct state\n // for the given message size with a lookup.\n //\n // These can be reasoned about as followed:\n // Consider a message with an unknown number of bytes, `msg_size. It can be seen that this will have `msg_size / BLOCK_SIZE` full blocks.\n // - `states[i]` should then be the state after processing the first `i` blocks.\n // - `blocks[i]` should then be the next message block after processing the first `i` blocks.\n // blocks[first_partially_filled_block_index] is the last block that is partially filled or all 0 if the message is a multiple of the block size.\n //\n // In other words:\n //\n // blocks = [block 1, block 2, ..., block N / BLOCK_SIZE, block N / BLOCK_SIZE + 1]\n // states = [INITIAL_STATE, state after block 1, state after block 2, ..., state after block N / BLOCK_SIZE]\n //\n // We place the initial state in `states[0]` as in the case where the `message_size < BLOCK_SIZE` then there are no full blocks to process and no compressions should occur.\n let mut blocks: [MSG_BLOCK; N / BLOCK_SIZE + 1] = std::mem::zeroed();\n let mut states: [STATE; N / BLOCK_SIZE + 1] = [initial_state; N / BLOCK_SIZE + 1];\n\n // Optimization for small messages. If the largest possible message is smaller than a block then we know that the first block is partially filled\n // no matter the value of `message_size`.\n //\n // Note that the condition `N >= BLOCK_SIZE` is known during monomorphization so this has no runtime cost.\n let first_partially_filled_block_index = if N >= BLOCK_SIZE {\n message_size / BLOCK_SIZE\n } else {\n 0\n };\n\n for i in 0..num_blocks {\n let msg_start = BLOCK_SIZE * i;\n let new_msg_block = build_msg_block(msg, message_size, msg_start);\n\n blocks[i] = new_msg_block;\n states[i + 1] = sha256_compression(new_msg_block, states[i]);\n }\n // If message_size/BLOCK_SIZE == N/BLOCK_SIZE, and there is a remainder, we need to process the last block.\n if N % BLOCK_SIZE != 0 {\n let new_msg_block = build_msg_block(msg, message_size, BLOCK_SIZE * num_blocks);\n\n blocks[num_blocks] = new_msg_block;\n }\n\n (states[first_partially_filled_block_index], blocks[first_partially_filled_block_index])\n }\n}\n\n// Take `BLOCK_SIZE` number of bytes from `msg` starting at `msg_start` and pack them into a `MSG_BLOCK`.\npub(crate) unconstrained fn build_msg_block_helper<let N: u32>(\n msg: [u8; N],\n message_size: u32,\n msg_start: u32,\n) -> MSG_BLOCK {\n let mut msg_block: MSG_BLOCK = [0; INT_BLOCK_SIZE];\n\n // We insert `BLOCK_SIZE` bytes (or up to the end of the message)\n let block_input = if message_size < msg_start {\n // This function is sometimes called with `msg_start` past the end of the message.\n // In this case we return an empty block and zero pointer to signal that the result should be ignored.\n 0\n } else if message_size < msg_start + BLOCK_SIZE {\n message_size - msg_start\n } else {\n BLOCK_SIZE\n };\n\n // Figure out the number of items in the int array that we have to pack.\n // e.g. if the input is [0,1,2,3,4,5] then we need to pack it as 2 items: [0123, 4500]\n let int_input = (block_input + INT_SIZE - 1) / INT_SIZE;\n\n for i in 0..int_input {\n let mut msg_item: u32 = 0;\n // Always construct the integer as 4 bytes, even if it means going beyond the input.\n for j in 0..INT_SIZE {\n let k = i * INT_SIZE + j;\n let msg_byte = if k < block_input {\n msg[msg_start + k]\n } else {\n 0\n };\n msg_item = (msg_item << 8) + msg_byte as u32;\n }\n msg_block[i] = msg_item;\n }\n\n // Returning the index as if it was a 64 byte array.\n // We have to project it down to 16 items and bit shifting to get a byte back if we need it.\n msg_block\n}\n\n// Build a message block from the input message starting at `msg_start`.\n//\n// If `message_size` is less than `msg_start` then this is called with the old non-empty block;\n// in that case we can skip verification, ie. no need to check that everything is zero.\nfn build_msg_block<let N: u32>(msg: [u8; N], message_size: u32, msg_start: u32) -> MSG_BLOCK {\n let msg_block =\n // Safety: We constrain the block below by reconstructing each `u32` word from the input bytes.\n unsafe { build_msg_block_helper(msg, message_size, msg_start) };\n\n if !is_unconstrained() {\n let mut msg_end = msg_start + BLOCK_SIZE;\n\n let max_read_index = std::cmp::min(message_size, msg_end);\n\n // Reconstructed packed item\n let mut msg_item: Field = 0;\n\n // Inclusive at the end so that we can compare the last item.\n for k in msg_start..=msg_end {\n if (k != msg_start) & (k % INT_SIZE == 0) {\n // If we consumed some input we can compare against the block.\n let msg_block_index = (k - msg_start) / INT_SIZE - 1;\n assert_eq(msg_block[msg_block_index] as Field, msg_item);\n\n msg_item = 0;\n }\n\n // If we have input to consume, add it at the rightmost position.\n let msg_byte = if k < max_read_index { msg[k] } else { 0 };\n msg_item = msg_item * (TWO_POW_8 as Field) + msg_byte as Field;\n }\n }\n msg_block\n}\n\n// Encode `8 * message_size` into two `u32` limbs.\nunconstrained fn encode_len(message_size: u32) -> (u32, u32) {\n let len = 8 * message_size as u64;\n let lo = len & 0xFFFFFFFF;\n let hi = (len >> 32) & 0xFFFFFFFF;\n (lo as u32, hi as u32)\n}\n\n// Write the length into the last 8 bytes of the block.\nfn attach_len_to_msg_block(mut msg_block: MSG_BLOCK, message_size: u32) -> MSG_BLOCK {\n // Safety: We assert the correctness of the decomposition below.\n // 2 `u32` limbs cannot overflow the field modulus so performing the check as `Field`s is safe.\n let (lo, hi) = unsafe { encode_len(message_size) };\n assert_eq(8 * (message_size as Field), lo as Field + hi as Field * TWO_POW_32);\n\n msg_block[INT_SIZE_PTR] = hi;\n msg_block[INT_SIZE_PTR + 1] = lo;\n msg_block\n}\n\n// Perform the final compression, then transform the `STATE` into `HASH`.\nfn hash_final_block(msg_block: MSG_BLOCK, mut state: STATE) -> HASH {\n // Hash final padded block\n state = sha256_compression(msg_block, state);\n\n // Return final hash as byte array\n let mut out_h: HASH = [0; 32]; // Digest as sequence of bytes\n for j in 0..8 {\n let h_bytes: [u8; 4] = (state[j] as Field).to_be_bytes();\n for k in 0..4 {\n out_h[4 * j + k] = h_bytes[k];\n }\n }\n\n out_h\n}\n\n/// Lookup table for the position of the padding bit within one of the `u32` words in the final message block.\nglobal PADDING_BIT_TABLE: [u32; 4] =\n [(1 << 7) * TWO_POW_24, (1 << 7) * TWO_POW_16, (1 << 7) * TWO_POW_8, (1 << 7)];\n\n/// Add 1 bit padding to end of message and compress the block if there's not enough room for the 8-byte length.\n/// Returns the updated hash state and message block that will be used to write the message size.\n///\n/// # Assumptions:\n///\n/// - `msg_block[i] == 0` for all `i > msg_byte_ptr / INT_SIZE`\n/// - `msg_block[msg_byte_ptr / INT_SIZE] & ((1 << 7) * (msg_byte_ptr % INT_SIZE)) == 0`\nfn add_padding_byte_and_compress_if_needed(\n mut msg_block: MSG_BLOCK,\n msg_byte_ptr: BLOCK_BYTE_PTR,\n h: STATE,\n) -> (STATE, MSG_BLOCK) {\n // Pad the rest such that we have a [u32; 2] block at the end representing the length\n // of the message, and a block of 1 0 ... 0 following the message (i.e. [1 << 7, 0, ..., 0]).\n // Here we rely on the fact that everything beyond the available input is set to 0.\n let index = msg_byte_ptr / INT_SIZE;\n\n // Lookup the position of the padding bit and insert it into the message block.\n msg_block[index] += PADDING_BIT_TABLE[msg_byte_ptr % INT_SIZE];\n\n // If we don't have room to write the size, compress the block and reset it.\n if msg_byte_ptr >= MSG_SIZE_PTR {\n let h = sha256_compression(msg_block, h);\n\n // In this case, the final block consists of all zeros with the last 8 bytes containing the length.\n // We set msg_block to all zeros and attach_len_to_msg_block will add the length to the last 8 bytes.\n let msg_block = [0; INT_BLOCK_SIZE];\n (h, msg_block)\n } else {\n (h, msg_block)\n }\n}\n\npub(crate) fn finalize_sha256_blocks(\n message_size: u32,\n mut h: STATE,\n mut msg_block: MSG_BLOCK,\n) -> HASH {\n let msg_byte_ptr = message_size % BLOCK_SIZE;\n\n let (h, mut msg_block) = add_padding_byte_and_compress_if_needed(msg_block, msg_byte_ptr, h);\n\n msg_block = attach_len_to_msg_block(msg_block, message_size);\n\n hash_final_block(msg_block, h)\n}\n\n/**\n * Given some state of a partially computed sha256 hash and part of the preimage, continue hashing\n * @notice used for complex/ recursive offloading of post-partial hashing\n *\n * @param N - the maximum length of the message to hash\n * @param h - the intermediate hash state\n * @param msg - the preimage to hash\n * @param message_size - the actual length of the preimage to hash\n * @return the intermediate hash state after compressing in msg to h\n */\npub fn partial_sha256_var_interstitial<let N: u32>(\n mut h: [u32; 8],\n msg: [u8; N],\n message_size: u32,\n) -> [u32; 8] {\n assert(message_size % BLOCK_SIZE == 0, \"Message size must be a multiple of the block size\");\n if std::runtime::is_unconstrained() {\n // Safety: running as an unconstrained function\n unsafe {\n __sha_partial_var_interstitial(h, msg, message_size)\n }\n } else {\n let (h, _) = process_full_blocks(msg, message_size, h);\n\n h\n }\n}\n\n/**\n * Given some state of a partially computed sha256 hash and remaining preimage, complete the hash\n * @notice used for traditional partial hashing\n *\n * @param N - the maximum length of the message to hash\n * @param h - the intermediate hash state\n * @param msg - the remaining preimage to hash\n * @param message_size - the size of the current chunk\n * @param real_message_size - the total size of the original preimage\n * @return finalized sha256 hash\n */\npub fn partial_sha256_var_end<let N: u32>(\n mut h: [u32; 8],\n msg: [u8; N],\n message_size: u32,\n real_message_size: u32,\n) -> [u8; 32] {\n assert(message_size % BLOCK_SIZE == 0, \"Message size must be a multiple of the block size\");\n if std::runtime::is_unconstrained() {\n // Safety: running as an unconstrained function\n unsafe {\n h = __sha_partial_var_interstitial(h, msg, message_size);\n\n // Handle setup of the final msg block.\n // This case is only hit if the msg is less than the block size,\n // or our message cannot be evenly split into blocks.\n\n finalize_last_sha256_block(h, real_message_size, msg)\n }\n } else {\n let (h, msg_block) = process_full_blocks(msg, message_size, h);\n finalize_sha256_blocks(real_message_size, h, msg_block)\n }\n}\n\nunconstrained fn __sha_partial_var_interstitial<let N: u32>(\n mut h: [u32; 8],\n msg: [u8; N],\n message_size: u32,\n) -> [u32; 8] {\n let num_full_blocks = message_size / BLOCK_SIZE;\n // Intermediate hash, starting with the canonical initial value\n // Pointer into msg_block on a 64 byte scale\n for i in 0..num_full_blocks {\n let msg_block = build_msg_block(msg, message_size, BLOCK_SIZE * i);\n h = sha256_compression(msg_block, h);\n }\n h\n}\n\n// Helper function to finalize the message block with padding and length\nunconstrained fn finalize_last_sha256_block<let N: u32>(\n mut h: STATE,\n message_size: u32,\n msg: [u8; N],\n) -> HASH {\n let msg_byte_ptr = message_size % BLOCK_SIZE;\n\n // We now build the final un-filled block.\n let msg_block: MSG_BLOCK = if msg_byte_ptr != 0 {\n let num_full_blocks = message_size / BLOCK_SIZE;\n let msg_start = BLOCK_SIZE * num_full_blocks;\n build_msg_block(msg, message_size, msg_start)\n } else {\n // If the message size is a multiple of the block size (i.e. `msg_byte_ptr == 0`) then this block will be empty,\n // so we short-circuit in this case.\n [0; 16]\n };\n\n // Once built, we need to add the necessary padding bytes and encoded length\n let (h, mut msg_block) = add_padding_byte_and_compress_if_needed(msg_block, msg_byte_ptr, h);\n msg_block = attach_len_to_msg_block(msg_block, message_size);\n\n hash_final_block(msg_block, h)\n}\n\nmod test_process_full_blocks {\n\n /// Wrapper to force an unconstrained runtime on process_full_blocks.\n unconstrained fn unconstrained_process_full_blocks<let N: u32>(\n msg: [u8; N],\n message_size: u32,\n h: super::STATE,\n ) -> (super::STATE, super::MSG_BLOCK) {\n super::process_full_blocks(msg, message_size, h)\n }\n\n #[test]\n fn test_implementations_agree(msg: [u8; 100], message_size: u32) {\n let message_size = message_size % 100;\n // Safety: test function\n let unconstrained_state =\n unsafe { unconstrained_process_full_blocks(msg, message_size, super::INITIAL_STATE) };\n let state = super::process_full_blocks(msg, message_size, super::INITIAL_STATE);\n assert_eq(state, unconstrained_state);\n }\n}\n\nmod test_sha256_var {\n\n /// Wrapper to force an unconstrained runtime on sha256.\n unconstrained fn unconstrained_sha256<let N: u32>(\n msg: [u8; N],\n message_size: u32,\n ) -> super::HASH {\n super::sha256_var(msg, message_size)\n }\n\n #[test]\n fn test_implementations_agree(msg: [u8; 100], message_size: u32) {\n let message_size = message_size % 100;\n // Safety: test function\n let unconstrained_sha = unsafe { unconstrained_sha256(msg, message_size) };\n let sha = super::sha256_var(msg, message_size);\n assert_eq(sha, unconstrained_sha);\n }\n\n}\n"
4272
4272
  },
@@ -4280,7 +4280,7 @@
4280
4280
  },
4281
4281
  "51": {
4282
4282
  "path": "/home/aztec-dev/aztec-packages/noir-projects/noir-contracts/contracts/protocol/fee_juice_contract/src/main.nr",
4283
- "source": "/// Protocol contract that manages the native gas token (\"Fee Juice\") used to pay transaction fees.\n///\n/// Fee Juice is minted on L2 by bridging from L1: a user deposits ERC-20 tokens into the L1 FeeJuicePortal, which\n/// sends an L1-to-L2 message. On L2, `claim` or `claim_and_end_setup` consumes that message and credits the\n/// recipient's balance via an enqueued public call to `_increase_public_balance`.\n///\n/// The protocol's base rollup circuits read directly from this contract's `balances` storage map (at slot 1) to verify\n/// fee payers can cover their transaction costs. This storage layout is protocol-critical and must not change without\n/// updating the base rollup circuits.\n///\n/// There is no withdrawal mechanism -- Fee Juice can only be bridged in, not withdrawn or transferred by users. Tokens\n/// leave the L1 portal only via `distributeFees` called by the Rollup contract to pay sequencers.\n\nmod lib;\n\npub contract FeeJuice {\n use crate::lib::get_bridge_gas_msg_hash;\n use aztec::{\n protocol::{\n abis::function_selector::FunctionSelector,\n address::{AztecAddress, EthAddress},\n constants::FEE_JUICE_ADDRESS,\n traits::{Deserialize, ToField},\n },\n state_vars::{Map, PublicMutable},\n };\n use std::ops::Add;\n\n struct Storage<Context> {\n // contract address --> public fee juice balance\n balances: Map<AztecAddress, PublicMutable<u128, Context>, Context>,\n }\n\n global INCREASE_PUBLIC_BALANCE_SELECTOR: Field = comptime {\n FunctionSelector::from_signature(\"_increase_public_balance((Field),u128)\").to_field()\n };\n\n global CHECK_BALANCE_SELECTOR: Field =\n comptime { FunctionSelector::from_signature(\"check_balance(u128)\").to_field() };\n\n global BALANCE_OF_PUBLIC_SELECTOR: Field =\n comptime { FunctionSelector::from_signature(\"balance_of_public((Field))\").to_field() };\n\n /// A helper implementing the core L1-to-L2 message claim logic shared by `claim` and `claim_and_end_setup`.\n /// Computes the expected content hash, consumes the L1-to-L2 message (emitting a nullifier to prevent\n /// double-claiming), and enqueues a public call to `_increase_public_balance` to credit the recipient.\n #[contract_library_method]\n fn claim_helper(\n context: &mut aztec::context::PrivateContext,\n to: AztecAddress,\n amount: u128,\n secret: Field,\n message_leaf_index: Field,\n ) {\n let content_hash: Field = get_bridge_gas_msg_hash(to, amount);\n let portal_address: EthAddress = EthAddress::from_field(FEE_JUICE_ADDRESS.to_field());\n assert(!portal_address.is_zero());\n\n // Consume the L1-to-L2 message (verifies existence + emits nullifier to prevent replay).\n context.consume_l1_to_l2_message(content_hash, secret, portal_address, message_leaf_index);\n\n // Enqueue a public call to _increase_public_balance to credit the recipient.\n let serialized_params: [Field; 2] = [to.to_field(), amount.to_field()];\n let calldata: [Field; 1 + 2] = [INCREASE_PUBLIC_BALANCE_SELECTOR].concat(serialized_params);\n let calldata_hash: Field = aztec::hash::hash_calldata_array(calldata);\n aztec::oracle::execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n context.this_address(),\n calldata_hash,\n false,\n false,\n );\n }\n\n /// Claims Fee Juice by consuming an L1-to-L2 message from the FeeJuicePortal.\n ///\n /// Use this variant when the claimed Fee Juice is NOT intended to pay for the current transaction's fees (e.g.,\n /// pre-funding an account for future transactions).\n #[aztec::macros::internals_functions_generation::abi_attributes::abi_private]\n fn claim(\n inputs: aztec::context::inputs::PrivateContextInputs,\n to: AztecAddress,\n amount: u128,\n secret: Field,\n message_leaf_index: Field,\n ) -> return_data aztec::protocol::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs {\n // MACRO CODE START\n // Note: The macros initially inserted a phase check here, but since there is no phase change in this function\n // nor in the claim helper function or the enqueued public function call, I have removed that check.\n aztec::oracle::version::assert_compatible_oracle_version();\n let serialized_params: [Field; 4] =\n [to.to_field(), amount.to_field(), secret, message_leaf_index];\n let args_hash: Field = aztec::hash::hash_args(serialized_params);\n let mut context: aztec::context::PrivateContext =\n aztec::context::PrivateContext::new(inputs, args_hash);\n // MACRO CODE END\n\n claim_helper(&mut context, to, amount, secret, message_leaf_index);\n\n // MACRO CODE START\n context.finish()\n // MACRO CODE END\n }\n\n /// Claims Fee Juice and ends the transaction setup phase.\n ///\n /// Use this variant when the claimed Fee Juice is intended to pay for THIS transaction's fees. By ending setup\n /// after the claim, the balance increase is placed in the non-revertible phase, ensuring the fee payer's balance\n /// is credited even if the revertible portion of the transaction fails. This guarantees the sequencer can collect\n /// fees.\n #[aztec::macros::internals_functions_generation::abi_attributes::abi_private]\n fn claim_and_end_setup(\n inputs: aztec::context::inputs::PrivateContextInputs,\n to: AztecAddress,\n amount: u128,\n secret: Field,\n message_leaf_index: Field,\n ) -> return_data aztec::protocol::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs {\n // MACRO CODE START\n aztec::oracle::version::assert_compatible_oracle_version();\n let serialized_params: [Field; 4] =\n [to.to_field(), amount.to_field(), secret, message_leaf_index];\n let args_hash: Field = aztec::hash::hash_args(serialized_params);\n let mut context: aztec::context::PrivateContext =\n aztec::context::PrivateContext::new(inputs, args_hash);\n // MACRO CODE END\n\n claim_helper(&mut context, to, amount, secret, message_leaf_index);\n\n // MACRO CODE START\n // End setup: everything before this point (including the enqueued _increase_public_balance\n // call) is non-revertible. Everything after is revertible.\n context.end_setup();\n context.finish()\n // MACRO CODE END\n }\n\n /// Internal function that credits a recipient's Fee Juice balance. Only callable by this contract itself\n /// (`#[only_self]`), enqueued by `claim` / `claim_and_end_setup` after consuming an L1-to-L2 message.\n #[aztec::macros::internals_functions_generation::abi_attributes::abi_public]\n #[aztec::macros::internals_functions_generation::abi_attributes::abi_only_self]\n unconstrained fn _increase_public_balance(to: AztecAddress, amount: u128) {\n // MACRO CODE START\n let context: aztec::context::PublicContext = aztec::context::PublicContext::new(\n || -> Field {\n let serialized_args: [Field; 2] = aztec::oracle::avm::calldata_copy(\n 1,\n <AztecAddress as aztec::protocol::traits::Serialize>::N\n + <u128 as aztec::protocol::traits::Serialize>::N,\n );\n aztec::hash::hash_args(serialized_args)\n },\n );\n let storage: Storage<aztec::context::PublicContext> =\n Storage::<aztec::context::PublicContext>::init(context);\n\n assert(\n context.maybe_msg_sender().unwrap() == context.this_address(),\n \"Function _increase_public_balance can only be called by the same contract\",\n );\n // MACRO CODE END\n\n let new_balance = storage.balances.at(to).read().add(amount);\n storage.balances.at(to).write(new_balance);\n }\n\n /// Asserts the caller has at least `fee_limit` Fee Juice. Used during transaction validation to verify the fee\n /// payer can cover the transaction's fee limit.\n #[aztec::macros::internals_functions_generation::abi_attributes::abi_public]\n #[aztec::macros::internals_functions_generation::abi_attributes::abi_view]\n unconstrained fn check_balance(fee_limit: u128) {\n // MACRO CODE START\n let context: aztec::context::PublicContext = aztec::context::PublicContext::new(\n || -> Field {\n let serialized_args: [Field; 1] = aztec::oracle::avm::calldata_copy(\n 1,\n <u128 as aztec::protocol::traits::Serialize>::N,\n );\n aztec::hash::hash_args(serialized_args)\n },\n );\n let storage: Storage<aztec::context::PublicContext> =\n Storage::<aztec::context::PublicContext>::init(context);\n\n assert(context.is_static_call(), \"Function check_balance can only be called statically\");\n // MACRO CODE END\n\n assert(\n storage.balances.at(context.maybe_msg_sender().unwrap()).read() >= fee_limit,\n \"Balance too low\",\n );\n }\n\n /// Returns the Fee Juice balance of the given address.\n #[aztec::macros::internals_functions_generation::abi_attributes::abi_public]\n #[aztec::macros::internals_functions_generation::abi_attributes::abi_view]\n unconstrained fn balance_of_public(owner: AztecAddress) -> pub u128 {\n // MACRO CODE START\n let context: aztec::context::PublicContext = aztec::context::PublicContext::new(\n || -> Field {\n let serialized_args: [Field; 1] = aztec::oracle::avm::calldata_copy(\n 1,\n <AztecAddress as aztec::protocol::traits::Serialize>::N,\n );\n aztec::hash::hash_args(serialized_args)\n },\n );\n let storage: Storage<aztec::context::PublicContext> =\n Storage::<aztec::context::PublicContext>::init(context);\n\n assert(\n context.is_static_call(),\n \"Function balance_of_public can only be called statically\",\n );\n // MACRO CODE END\n\n storage.balances.at(owner).read()\n }\n\n // THE REST OF THE CODE IN THIS CONTRACT WAS ORIGINALLY INJECTED BY THE #[aztec] MACRO.\n\n #[aztec::macros::internals_functions_generation::abi_attributes::abi_public]\n pub unconstrained fn public_dispatch(selector: Field) {\n if selector == INCREASE_PUBLIC_BALANCE_SELECTOR {\n let input_calldata: [Field; 2] = aztec::oracle::avm::calldata_copy(\n 1,\n <AztecAddress as aztec::protocol::traits::Serialize>::N\n + <u128 as aztec::protocol::traits::Serialize>::N,\n );\n let mut reader: aztec::protocol::utils::reader::Reader<2> =\n aztec::protocol::utils::reader::Reader::<2>::new(input_calldata);\n let arg0: AztecAddress = <AztecAddress as Deserialize>::stream_deserialize(&mut reader);\n let arg1: u128 = <u128 as Deserialize>::stream_deserialize(&mut reader);\n _increase_public_balance(arg0, arg1);\n aztec::oracle::avm::avm_return([].as_vector());\n };\n if selector == CHECK_BALANCE_SELECTOR {\n let input_calldata: [Field; 1] = aztec::oracle::avm::calldata_copy(\n 1,\n <u128 as aztec::protocol::traits::Serialize>::N,\n );\n let mut reader: aztec::protocol::utils::reader::Reader<1> =\n aztec::protocol::utils::reader::Reader::<1>::new(input_calldata);\n let arg0: u128 = <u128 as Deserialize>::stream_deserialize(&mut reader);\n check_balance(arg0);\n aztec::oracle::avm::avm_return([].as_vector());\n };\n if selector == BALANCE_OF_PUBLIC_SELECTOR {\n let input_calldata: [Field; 1] = aztec::oracle::avm::calldata_copy(\n 1,\n <AztecAddress as aztec::protocol::traits::Serialize>::N,\n );\n let mut reader: aztec::protocol::utils::reader::Reader<1> =\n aztec::protocol::utils::reader::Reader::<1>::new(input_calldata);\n let arg0: AztecAddress = <AztecAddress as Deserialize>::stream_deserialize(&mut reader);\n let return_value: [Field; 1] =\n <u128 as aztec::protocol::traits::Serialize>::serialize(balance_of_public(arg0));\n aztec::oracle::avm::avm_return(return_value.as_vector());\n };\n panic(f\"Unknown selector {selector}\")\n }\n\n pub struct StorageLayoutFields {\n pub balances: aztec::state_vars::Storable,\n }\n\n pub struct StorageLayout<let N: u32> {\n pub contract_name: str<N>,\n pub fields: StorageLayoutFields,\n }\n\n #[abi(storage)]\n pub global STORAGE_LAYOUT_FeeJuice: StorageLayout<8> = StorageLayout::<8> {\n contract_name: \"FeeJuice\",\n fields: StorageLayoutFields { balances: aztec::state_vars::Storable { slot: 1 } },\n };\n\n impl<Context> Storage<Context> {\n fn init(context: Context) -> Self {\n Self {\n balances: <Map<AztecAddress, PublicMutable<u128, Context>, Context> as aztec::state_vars::StateVariable<1, Context>>::new(\n context,\n 1,\n ),\n }\n }\n }\n\n pub struct _increase_public_balance_parameters {\n pub _to: AztecAddress,\n pub _amount: u128,\n }\n\n pub struct balance_of_public_parameters {\n pub _owner: AztecAddress,\n }\n\n pub struct check_balance_parameters {\n pub _fee_limit: u128,\n }\n\n pub struct claim_and_end_setup_parameters {\n pub _to: AztecAddress,\n pub _amount: u128,\n pub _secret: Field,\n pub _message_leaf_index: Field,\n }\n\n pub struct claim_parameters {\n pub _to: AztecAddress,\n pub _amount: u128,\n pub _secret: Field,\n pub _message_leaf_index: Field,\n }\n\n #[abi(functions)]\n pub struct _increase_public_balance_abi {\n parameters: _increase_public_balance_parameters,\n }\n\n #[abi(functions)]\n pub struct balance_of_public_abi {\n parameters: balance_of_public_parameters,\n return_type: u128,\n }\n\n #[abi(functions)]\n pub struct check_balance_abi {\n parameters: check_balance_parameters,\n }\n\n #[abi(functions)]\n pub struct claim_abi {\n parameters: claim_parameters,\n }\n\n #[abi(functions)]\n pub struct claim_and_end_setup_abi {\n parameters: claim_and_end_setup_parameters,\n }\n}\n"
4283
+ "source": "/// Protocol contract that manages the native gas token (\"Fee Juice\") used to pay transaction fees.\n///\n/// Fee Juice is minted on L2 by bridging from L1: a user deposits ERC-20 tokens into the L1 FeeJuicePortal, which\n/// sends an L1-to-L2 message. On L2, `claim` or `claim_and_end_setup` consumes that message and credits the\n/// recipient's balance via an enqueued public call to `_increase_public_balance`.\n///\n/// The protocol's base rollup circuits read directly from this contract's `balances` storage map (at slot 1) to verify\n/// fee payers can cover their transaction costs. This storage layout is protocol-critical and must not change without\n/// updating the base rollup circuits.\n///\n/// There is no withdrawal mechanism -- Fee Juice can only be bridged in, not withdrawn or transferred by users. Tokens\n/// leave the L1 portal only via `distributeFees` called by the Rollup contract to pay sequencers.\n\nmod lib;\n\npub contract FeeJuice {\n use crate::lib::get_bridge_gas_msg_hash;\n use aztec::{\n protocol::{\n abis::function_selector::FunctionSelector,\n address::{AztecAddress, EthAddress},\n constants::FEE_JUICE_ADDRESS,\n traits::{Deserialize, ToField},\n },\n state_vars::{Map, PublicMutable},\n };\n use std::ops::Add;\n\n struct Storage<Context> {\n // contract address --> public fee juice balance\n balances: Map<AztecAddress, PublicMutable<u128, Context>, Context>,\n }\n\n global INCREASE_PUBLIC_BALANCE_SELECTOR: Field = comptime {\n FunctionSelector::from_signature(\"_increase_public_balance((Field),u128)\").to_field()\n };\n\n global CHECK_BALANCE_SELECTOR: Field =\n comptime { FunctionSelector::from_signature(\"check_balance(u128)\").to_field() };\n\n global BALANCE_OF_PUBLIC_SELECTOR: Field =\n comptime { FunctionSelector::from_signature(\"balance_of_public((Field))\").to_field() };\n\n /// A helper implementing the core L1-to-L2 message claim logic shared by `claim` and `claim_and_end_setup`.\n /// Computes the expected content hash, consumes the L1-to-L2 message (emitting a nullifier to prevent\n /// double-claiming), and enqueues a public call to `_increase_public_balance` to credit the recipient.\n #[contract_library_method]\n fn claim_helper(\n context: &mut aztec::context::PrivateContext,\n to: AztecAddress,\n amount: u128,\n secret: Field,\n message_leaf_index: Field,\n ) {\n let content_hash: Field = get_bridge_gas_msg_hash(to, amount);\n // The Inbox changes the sender's address to `FEE_JUICE_ADDRESS` if it's from the FeeJuicePortal.\n // This avoids the need to store the L1 address on L2 and prevents friction if the address changes.\n let portal_address: EthAddress = EthAddress::from_field(FEE_JUICE_ADDRESS.to_field());\n assert(!portal_address.is_zero());\n\n // Consume the L1-to-L2 message (verifies existence + emits nullifier to prevent replay).\n context.consume_l1_to_l2_message(content_hash, secret, portal_address, message_leaf_index);\n\n // Enqueue a public call to _increase_public_balance to credit the recipient.\n let serialized_params: [Field; 2] = [to.to_field(), amount.to_field()];\n let calldata: [Field; 1 + 2] = [INCREASE_PUBLIC_BALANCE_SELECTOR].concat(serialized_params);\n let calldata_hash: Field = aztec::hash::hash_calldata_array(calldata);\n aztec::oracle::execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n context.this_address(),\n calldata_hash,\n false,\n false,\n );\n }\n\n /// Claims Fee Juice by consuming an L1-to-L2 message from the FeeJuicePortal.\n ///\n /// Use this variant when the claimed Fee Juice is NOT intended to pay for the current transaction's fees (e.g.,\n /// pre-funding an account for future transactions).\n #[aztec::macros::internals_functions_generation::abi_attributes::abi_private]\n fn claim(\n inputs: aztec::context::inputs::PrivateContextInputs,\n to: AztecAddress,\n amount: u128,\n secret: Field,\n message_leaf_index: Field,\n ) -> return_data aztec::protocol::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs {\n // MACRO CODE START\n // Note: The macros initially inserted a phase check here, but since there is no phase change in this function\n // nor in the claim helper function or the enqueued public function call, I have removed that check.\n aztec::oracle::version::assert_compatible_oracle_version();\n let serialized_params: [Field; 4] =\n [to.to_field(), amount.to_field(), secret, message_leaf_index];\n let args_hash: Field = aztec::hash::hash_args(serialized_params);\n let mut context: aztec::context::PrivateContext =\n aztec::context::PrivateContext::new(inputs, args_hash);\n // MACRO CODE END\n\n claim_helper(&mut context, to, amount, secret, message_leaf_index);\n\n // MACRO CODE START\n context.finish()\n // MACRO CODE END\n }\n\n /// Claims Fee Juice and ends the transaction setup phase.\n ///\n /// Use this variant when the claimed Fee Juice is intended to pay for THIS transaction's fees. By ending setup\n /// after the claim, the balance increase is placed in the non-revertible phase, ensuring the fee payer's balance\n /// is credited even if the revertible portion of the transaction fails. This guarantees the sequencer can collect\n /// fees.\n #[aztec::macros::internals_functions_generation::abi_attributes::abi_private]\n fn claim_and_end_setup(\n inputs: aztec::context::inputs::PrivateContextInputs,\n to: AztecAddress,\n amount: u128,\n secret: Field,\n message_leaf_index: Field,\n ) -> return_data aztec::protocol::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs {\n // MACRO CODE START\n aztec::oracle::version::assert_compatible_oracle_version();\n let serialized_params: [Field; 4] =\n [to.to_field(), amount.to_field(), secret, message_leaf_index];\n let args_hash: Field = aztec::hash::hash_args(serialized_params);\n let mut context: aztec::context::PrivateContext =\n aztec::context::PrivateContext::new(inputs, args_hash);\n // MACRO CODE END\n\n claim_helper(&mut context, to, amount, secret, message_leaf_index);\n\n // MACRO CODE START\n // End setup: everything before this point (including the enqueued _increase_public_balance\n // call) is non-revertible. Everything after is revertible.\n context.end_setup();\n context.finish()\n // MACRO CODE END\n }\n\n /// Internal function that credits a recipient's Fee Juice balance. Only callable by this contract itself\n /// (`#[only_self]`), enqueued by `claim` / `claim_and_end_setup` after consuming an L1-to-L2 message.\n #[aztec::macros::internals_functions_generation::abi_attributes::abi_public]\n #[aztec::macros::internals_functions_generation::abi_attributes::abi_only_self]\n unconstrained fn _increase_public_balance(to: AztecAddress, amount: u128) {\n // MACRO CODE START\n let context: aztec::context::PublicContext = aztec::context::PublicContext::new(\n || -> Field {\n let serialized_args: [Field; 2] = aztec::oracle::avm::calldata_copy(\n 1,\n <AztecAddress as aztec::protocol::traits::Serialize>::N\n + <u128 as aztec::protocol::traits::Serialize>::N,\n );\n aztec::hash::hash_args(serialized_args)\n },\n );\n let storage: Storage<aztec::context::PublicContext> =\n Storage::<aztec::context::PublicContext>::init(context);\n\n assert(\n context.maybe_msg_sender().unwrap() == context.this_address(),\n \"Function _increase_public_balance can only be called by the same contract\",\n );\n // MACRO CODE END\n\n let new_balance = storage.balances.at(to).read().add(amount);\n storage.balances.at(to).write(new_balance);\n }\n\n /// Asserts the caller has at least `fee_limit` Fee Juice. Used during transaction validation to verify the fee\n /// payer can cover the transaction's fee limit.\n #[aztec::macros::internals_functions_generation::abi_attributes::abi_public]\n #[aztec::macros::internals_functions_generation::abi_attributes::abi_view]\n unconstrained fn check_balance(fee_limit: u128) {\n // MACRO CODE START\n let context: aztec::context::PublicContext = aztec::context::PublicContext::new(\n || -> Field {\n let serialized_args: [Field; 1] = aztec::oracle::avm::calldata_copy(\n 1,\n <u128 as aztec::protocol::traits::Serialize>::N,\n );\n aztec::hash::hash_args(serialized_args)\n },\n );\n let storage: Storage<aztec::context::PublicContext> =\n Storage::<aztec::context::PublicContext>::init(context);\n\n assert(context.is_static_call(), \"Function check_balance can only be called statically\");\n // MACRO CODE END\n\n assert(\n storage.balances.at(context.maybe_msg_sender().unwrap()).read() >= fee_limit,\n \"Balance too low\",\n );\n }\n\n /// Returns the Fee Juice balance of the given address.\n #[aztec::macros::internals_functions_generation::abi_attributes::abi_public]\n #[aztec::macros::internals_functions_generation::abi_attributes::abi_view]\n unconstrained fn balance_of_public(owner: AztecAddress) -> pub u128 {\n // MACRO CODE START\n let context: aztec::context::PublicContext = aztec::context::PublicContext::new(\n || -> Field {\n let serialized_args: [Field; 1] = aztec::oracle::avm::calldata_copy(\n 1,\n <AztecAddress as aztec::protocol::traits::Serialize>::N,\n );\n aztec::hash::hash_args(serialized_args)\n },\n );\n let storage: Storage<aztec::context::PublicContext> =\n Storage::<aztec::context::PublicContext>::init(context);\n\n assert(\n context.is_static_call(),\n \"Function balance_of_public can only be called statically\",\n );\n // MACRO CODE END\n\n storage.balances.at(owner).read()\n }\n\n // THE REST OF THE CODE IN THIS CONTRACT WAS ORIGINALLY INJECTED BY THE #[aztec] MACRO.\n\n #[aztec::macros::internals_functions_generation::abi_attributes::abi_public]\n pub unconstrained fn public_dispatch(selector: Field) {\n if selector == INCREASE_PUBLIC_BALANCE_SELECTOR {\n let input_calldata: [Field; 2] = aztec::oracle::avm::calldata_copy(\n 1,\n <AztecAddress as aztec::protocol::traits::Serialize>::N\n + <u128 as aztec::protocol::traits::Serialize>::N,\n );\n let mut reader: aztec::protocol::utils::reader::Reader<2> =\n aztec::protocol::utils::reader::Reader::<2>::new(input_calldata);\n let arg0: AztecAddress = <AztecAddress as Deserialize>::stream_deserialize(&mut reader);\n let arg1: u128 = <u128 as Deserialize>::stream_deserialize(&mut reader);\n _increase_public_balance(arg0, arg1);\n aztec::oracle::avm::avm_return([].as_vector());\n };\n if selector == CHECK_BALANCE_SELECTOR {\n let input_calldata: [Field; 1] = aztec::oracle::avm::calldata_copy(\n 1,\n <u128 as aztec::protocol::traits::Serialize>::N,\n );\n let mut reader: aztec::protocol::utils::reader::Reader<1> =\n aztec::protocol::utils::reader::Reader::<1>::new(input_calldata);\n let arg0: u128 = <u128 as Deserialize>::stream_deserialize(&mut reader);\n check_balance(arg0);\n aztec::oracle::avm::avm_return([].as_vector());\n };\n if selector == BALANCE_OF_PUBLIC_SELECTOR {\n let input_calldata: [Field; 1] = aztec::oracle::avm::calldata_copy(\n 1,\n <AztecAddress as aztec::protocol::traits::Serialize>::N,\n );\n let mut reader: aztec::protocol::utils::reader::Reader<1> =\n aztec::protocol::utils::reader::Reader::<1>::new(input_calldata);\n let arg0: AztecAddress = <AztecAddress as Deserialize>::stream_deserialize(&mut reader);\n let return_value: [Field; 1] =\n <u128 as aztec::protocol::traits::Serialize>::serialize(balance_of_public(arg0));\n aztec::oracle::avm::avm_return(return_value.as_vector());\n };\n panic(f\"Unknown selector {selector}\")\n }\n\n pub struct StorageLayoutFields {\n pub balances: aztec::state_vars::Storable,\n }\n\n pub struct StorageLayout<let N: u32> {\n pub contract_name: str<N>,\n pub fields: StorageLayoutFields,\n }\n\n #[abi(storage)]\n pub global STORAGE_LAYOUT_FeeJuice: StorageLayout<8> = StorageLayout::<8> {\n contract_name: \"FeeJuice\",\n fields: StorageLayoutFields { balances: aztec::state_vars::Storable { slot: 1 } },\n };\n\n impl<Context> Storage<Context> {\n fn init(context: Context) -> Self {\n Self {\n balances: <Map<AztecAddress, PublicMutable<u128, Context>, Context> as aztec::state_vars::StateVariable<1, Context>>::new(\n context,\n 1,\n ),\n }\n }\n }\n\n pub struct _increase_public_balance_parameters {\n pub _to: AztecAddress,\n pub _amount: u128,\n }\n\n pub struct balance_of_public_parameters {\n pub _owner: AztecAddress,\n }\n\n pub struct check_balance_parameters {\n pub _fee_limit: u128,\n }\n\n pub struct claim_and_end_setup_parameters {\n pub _to: AztecAddress,\n pub _amount: u128,\n pub _secret: Field,\n pub _message_leaf_index: Field,\n }\n\n pub struct claim_parameters {\n pub _to: AztecAddress,\n pub _amount: u128,\n pub _secret: Field,\n pub _message_leaf_index: Field,\n }\n\n #[abi(functions)]\n pub struct _increase_public_balance_abi {\n parameters: _increase_public_balance_parameters,\n }\n\n #[abi(functions)]\n pub struct balance_of_public_abi {\n parameters: balance_of_public_parameters,\n return_type: u128,\n }\n\n #[abi(functions)]\n pub struct check_balance_abi {\n parameters: check_balance_parameters,\n }\n\n #[abi(functions)]\n pub struct claim_abi {\n parameters: claim_parameters,\n }\n\n #[abi(functions)]\n pub struct claim_and_end_setup_abi {\n parameters: claim_and_end_setup_parameters,\n }\n}\n"
4284
4284
  },
4285
4285
  "58": {
4286
4286
  "path": "/home/aztec-dev/aztec-packages/noir-projects/noir-contracts/contracts/protocol/aztec_sublib/src/context/private_context.nr",