@aztec/accounts 0.0.1-commit.2e2504e2 → 0.0.1-commit.2eb6648a
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.
|
@@ -1910,7 +1910,7 @@
|
|
|
1910
1910
|
}
|
|
1911
1911
|
},
|
|
1912
1912
|
"bytecode": "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PZ0Vdz2dFXc9nRV3PZ0Vdz2dFXc9nRV3PZ0Vdz2dFXc9nRV3vSo6ZXVW3PV0Vtz1dFbc9XRW3PV0Vtz1dFbc9XRW3PV0Vtz1dFbc9XRW3PV0Vtz1dFbc9XRW3PV0Vtz1dFbc9XRW3PV0Vtz1dFbc9XRW3PV0Vtz1dFbc9XRW3PV0Vtz1dFbc9XRW3PVO1Smrs5Sud7pOWZ01cj2dNXI9nTVyvXo6ZXXWyPV01sj1dNbI9XTWyPV01sj1dNbI9XTWyPV01sj1dNbI9XTWyPV01sj1dNbI9XTWyPV01sj1dNbI9XTWyPV01sj1dNbI9XTWyPV01sj1dNbI9XTWyPV01sj1dNbI9XTWyPV01sj1dNbI9XTWyPV01sj1dNbI9XTWyPXa65TVWSPX01kj19NZI9fTWSPX01kj19NZI9fTWSPX01kj19NZI9e7Rqeszvq3ns76t57O+reezvq3ns76t57O+reezvq3ns76t57O+reezvq3ns76t57O+reezvq3ns76t57O+reezvq3ns76t57O+reezvq3ns76t57O+rdehk5ZnfVvPZ31bz2d9W89nfVvPZ31bz2d9W89nfVvPZ31bz2d9W89nfVvPZ31bz2d9W89nfVvPZ31bz2d9W89nfVvPZ31bz2d9W89nfVvPZ31bz2d9W89nfVvPZ31bz2d9W89nfVvPZ31bz2d9W89nfVvPZ31bz2d9W89nfVvvRydsjrr33o66996Ouvfejrr33o66996Ouvfejrr33o66996Ouvfejrr33o66996Ouvfejrr33o66996Ouvfejrr33o66996Ouvfejrr33o66996Ouvfejrr33o66996Ouvfejrr33o66996Ouvfejrr33o66996Ouvfejrr33ov6JTVWf/W01n/1tNZ/9bTWf/W01n/1tNZ/9bTWf/W01n/1tNZ/9bTWf/W01n/1tNZ/9bTWf/W01n/1tNZ/9bTWf/W01n/1tNZ/9bTWf/W01n/1tNZ/9bTWf/W01n/1tNZ/9YTrX/bOrlvesaQlmkpWRN6bvTuaNa8RctLW13Wuk3bdpe379Dxiis7db6qy9XXdL2223Xdr+/RM7lX7xtSbuyT2jctvV//jMysAQMHDR5y09Cbh90yPH5rPDt+W3xE/Pb4yPgd8VHxO+N3xe+Oj47fEx8Tvzc+Nj4uPj6eE58Qnxif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",
|
|
1913
|
-
"debug_symbols": "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yasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/Jq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EsESwRLBEsESwRLBEsESwRLBEsESwRLBEsESwRLBEsESwRLBEsESwRLBEsESwRLBEsESwRLBEsESwRLBEsESwRLBEsESwRLBEsESwRLBEsESwRLBEiSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppPyes+y0W5Kc9zHXGWThmU57kOnWXyt0XZU460JGukJVkjLcnn3OujJK1Ie5zHeZSkFWlFWpPWpDVpTVqT1qQ1aU1ak9aT9px7fZSLclMapVMGpSiTsihJW6Qt0hZpi7RF2iJtkbZIW6Qt0jZpm7RN2iZtk7ZJ26Rt0jZpmzQjzUgz0ow0I81IM9KMNCPNSHPSfDrgKXl9lKQ9WNJnGZSivKfdv2Q/yzrKx4/1lAdLrnJRbkqj9KPUWcZZ/uPnn/7fH/72pz/825//+D8//dP/3f/4n//7l3//+5/++pfnH//+//339X/+7W9/+vOf//Rf//rff/vrv//xP/73b3/81z//9d+P//fT7fjP8QT656Wf9/qX+z9ev/6r/fyn/7zv9+Z+pv9ffv7Jjv+f/fOqvv/p8c/v5x1Xx/HHdf6xf9638+dtlkz/Ofv6F3X7ufbx/53I+8/48Vcxf7X9593HX4m/yp/t/ME8/uq4K9o/577uyP1u1blIsW7e7/fxV80i6+et84DZBF8/++PvfrUL//jHv/zj/wc=",
|
|
1913
|
+
"debug_symbols": "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yasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyasheTUkr4bk1ZC8GpJXQ/JqSF4NyashebUa0YDViAasRjRgNaIBqxENWI1owGpEA1YjGrAa0YDViAasNmmbtE2akWakGWlGmpFmpBlpRpqRZqQ5aU6ak+akOWlOmpPmpDlpTlqQFqQFaUFakBakBWlBWpAWpIk0kSbSRJpIE2kiTaSJNJGWpCVpSVqSlqQlaUlakpakJWlFWpFWpBVpRVqRVqQVaUVakdakNWlNWpPWpDVpTVqT1qSNtMR6pCXWIy2xHmmJ9UhLrEdaYj3SEuuRlliPtMR6pCXWN9IWaYu0RdoibZG2SFukwZKGJQ1LGpY0LGlY0rCkYUnDkoYlDUsaljQsaVjSsKRhScOShiUNSxqWNCxpWNKwpGFJw5KGJQ1LGpY0LGlY0rCkYUnDkoYlDUsaljQsaVjSsKRhScOShiUNSxqWNCxpWNKwpGFJw5KGJQ1LGpY0LGlY0rCkYUnDkoYlDUsaljQsaVjSsOQped1nuSjPND9LozxH2W9nGZSiTMqi7Ckfg/OP8hqct57BeesZnLeewXnrGZy3notwrOciHOu5CMd6LsLx21yE47e5CMdvcxGO3+YiHL/NRTh+m4tw/DYX4fhtLsLx21yE47cbaYu0RdoibZG2SFukLdIWaYu0RdombZO2SdukbdI2aZu0TdombZNmpBlpRpqRZqQZaUaakWakGWlOmpPmpDlpTpqT5qQ5aU6akxakBWlBWpAWpAVpQVqQFqQFaSJNpIk0kSbSRJpIE2kiTaQlaUlakpakJWlJWpKWpCVpSVqRVqQVaUVakVakFWlFWpFWpDVpTVqT1qQ1aU1ak9akNWmwZMGSBUsWLFmwZMGSBUsWLFmwZMGSBUsWLFmwZMGSBUsWLFmwZMGSBUsWLFmwZMGSBUsWLFmwZMGSBUsWLFmwZMGSBUsWLFmwZMGSBUsWLFmwZMGSBUsWLFmwZMGSBUsWLFmwZMGSBUsWLFmwZMGSBUsWLFmwZMGSBUsWLFmwZMGSBUsWLFmwZMGSBUsWLFmwZMGSBUsWLFmwZMGSBUsWLFmwZMGSBUsWLFmwZMGSBUsWLFmwZMGSBUsWLFmwZMGSBUsWLFmwZMGSBUsWLFmwZMGSBUsWLFmwZMGSBUsWLFmwZMOSDUs2LNmwZMOSDUs2LNmwZMOSDUs2LNmwZMOSDUs2LNmwZMOSDUs2LNmwZMOSDUs2LNmwZMOSDUs2LNmwZMOSDUs2LNmwZMOSDUs2LNmwZMOSDUs2LNmwZMOSDUs2LNmwZMOSDUs2LNmwZMOSDUs2LNmwZMOSDUs2LNmwZMOSDUs2LNmwZMOSDUs2LNmwZMOSDUs2LNmwZMOSDUs2LNmwZMOSDUs2LNmwZMOSDUs2LNmwZMOSDUs2LNmwZMOSDUs2LNmwZMOSDUs2LNmwZMOSDUs2LNmwZMOSDUs2LNmwxGCJwRKDJQZLDJYYLDFYYrDEYInBEoMlBksMlhgsMVhisMRgicESgyUGSwyWGCwxWGKwxGCJwRKDJQZLDJYYLDFYYrDEYInBEoMlBksMlhgsMVhisMRgicESgyUGSwyWGCwxWGKwxGCJwRKDJQZLDJYYLDFYYrDEYInBEoMlBksMlhgsMVhisMRgicESgyUGSwyWGCwxWGKwxGCJwRKDJQZLDJYYLDFYYrDEYInBEoMlBksMlhgsMVhisMRgCZJXR/J6L0mDJUheHcmrI3l1JK+O5NWRvDqSV0fy6kheHcmrI3l1JK+O5NWRvDqSV0fy6kheHcmrI3l1JK+O5NWRvDqSV0fy6kheHcmrI3l1JK+O5NWRvDqSV0fy6kheHcmrI3l1JK+O5NWRvDqSV0fy6kheHcmrI3l1JK+O5NWRvDqSV0fy6kheHcmrI3l1JK+O5NWRvDqSV0fy6kheHcmrI3l1JK+O5NWRvDqSV0fy6kheHcmrI3l1JK+O5NWRvDqSV0fy6kheHcmrI3l1JK+O5NWRvDqSV0fy6kheHcmrI3l1JK+O5NWRvDqSV0fy6kheHcmrI3l1JK+O5NWRvDqSV0fy6kheHcmrI3l1JK+O5NWRvDqSV0fy6kheHcmrI3l1JK+O5NWRvDqSV0fy6kheHcmrI3l1JK+O5NWRvDqSV0fy6kheHcmrI3l1JK+O5NWRvDqSV0fy6kheHcmrI3l1JK+O5NWRvDqSV0fy6kheHcmrI3l1JK+O5NWRvDqSV0fy6kheHcmrI3l1JK+O5NWRvDqSV0fy6kheHcmrI3l1JK+O5NWRvDqSV0fy6khe/Sl53WcZlKI8z3XEWRZlT/k4j6OzXPztpjRKpwxKUZIm0kTa4zzOoyQtSUvSkrQkLUlL0pK0JK1IK9KKtCKtSCvSirQirUgr0pq0Jq1Ja9KatCatSWvSmrQRILlGgOQaAZI/514fpVE6ZVCKMimLkrRF2iJtkbZIW6Qt0hZpi7RF2iJtk7ZJ26Rt0jZpezrgKXl9lKSdLDnkOP6Ye32UJ0ue5ZGW5789WfIsjdIpg1KUSXmm6Sx7ypMlhzLHn8OueZZG6ZRBKcprGMgZdnWGXZ1hV2fY1Rl2dYZdnWFXZ9jVGXZ1hl2dYVdn2NUZdnWGXZ1hV2fY1Rl2dYZdnWFXZ9jVGXZ1hl2dYVdn2NUZdnWGXZ1hV2fY1Rl2dYZdnWFXZ9jVGXZ1hl2dYVdn2NUZdnWGXZ1hV2fY1Rl2dYZdnWFXZ9jVGXZ1hl2dYVdn2NUZdnWGXZ1hV2fY1Rl2dYZdnWFXZ9jVGXZ1hl2dYVdn2NUZdnWGXZ1hV2fY1Rl2dYZdnWFXZ9jVGXZ1hl2dYVdn2NUZdnWGXZ1hV2fY1Rl2dYZdnWFXZ9jVGXZ1hl2dYVdn2NUZdnWGXZ1hV2fY1Rl2dYZdnWFXZ9jVGXZ1hl2dYVdn2NUZdnWGXZ1hV2fY1Rl2dYZdnWFXZ9jVGXZ1hl2dYVdn2NUZdnWGXZ1hV2fY1Rl2dYZdnWFXZ9jVGXZ1hl2dYVdn2NUZdnWGXZ1hV2fY1Rl2dYZdnWFXZ9jVGXZ1hl2dYVdn2NUZdnWGXZ1hV2fY1Rl2dYZdnWFXZ9jVGXZ1hl2dYVdn2NUZdnWGXZ1hV2fY1Rl2dYZdnWFXZ9jVGXZ1hl2dYVdn2NUZdnWGXZ1hV2fY1Rl2dYZdnWFXZ9jVGXZ1hl2dYVdn2NUZdvWCJQVLCpYULClYUrCkYEnBkoIlBUsKlhQsKVhSsKRgScGSgiUFSwqWFCwpWFKwpGBJwZKCJQVLCpYULClYUrCkYEnBkoIlBUsKlhQsKVhSsKRgScGSgiUFSwqWFCwpWFKwpGBJwZKCJQVLCpYULClYUrCkYEnBkoIlBUsKlhQsKVhSsKRgScGSgiUFSwqWFCwpWFKwpGBJwZKCJQVLCpYULClYUrCkYEnBkoIlBUsKljQsaVjSsKRhScOShiUNSxqWNCxpWNKwpGFJw5KGJQ1LGpY0LGlY0rCkYUnDkoYlDUsaljQsaVjSsKRhScOShiUNSxqWNCxpWNKwpGFJw5KGJQ1LGpY0LGlY0rCkYUnDkoYlDUsaljQsaVjSsKRhScOShiUNSxqWNCxpWNKwpGFJw5KGJQ1LGpY0LGlY0rCkYUnDkoYlDUsaljQsaVjSsKRhScOShiUNSxqWNCxpWNKwpGFJw5KGJQ1LGpY0LEHy6kheHcmrI3l1JK+O5NWRvDqSV0fy6kheHclrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS1zBYguQ1kLwGktdA8hpIXgPJ670kDZYgeb2XpMESJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DWQvAaS10DyGkheA8lrIHkNJK+B5DV8RAPhIxoIH9FA+IgGwkc0ED7SkvCRloSPtCR8pCXhIy0JL9KKtCKtSCvSmrQmrUlr0pq0Jq1Ja9KatJGWRIy0JGKkJREjLYkYaUnESEsiRloSMdKSiJGWRIy0JOJG2iJtkbZIW6Qt0hZpi7RF2iJtkbZJ26Rt0jZpm7RN2iZtk7ZJ26QZaUaakWakGWlGmpFmpBlpRpqT5qQ5aU6ak+akOWlOmpPmpAVpQVqQFqQFaUFakBakBWlBmkgTaSJNpIk0kSbSRJpIE2lJWpKWpCVpSRosCVgSsCRgScCSgCUBSwKWBCwJWBKwJGBJwJKAJQFLApYELAlYErAkYEnAkoAlAUsClgQsESwRLBEsESwRLBEsESwRLBEsESwRLBEsESwRLBEsESwRLBEsESwRLBEsESwRLBEsESwRLBEsESwRLBEsESwRLBEsESwRLBEsESwRLHlKXvdZ9pQPlvhZLspzlP12lkbplEEpyqQsymtwPjSD86EZnA/N4HxoBudDcxFOaC7CCc1FOKG5CCc0F+GEgjSRJtJEmkgTaSJNpIk0kSbSkrQkLUlL0pK0JC1JS9KStCStSCvSirQirUgr0oq0Iq1IK9KatCatSWvSmrQmrUlr0pq0uQgnci7CiZyLcCLnIpzIuQgnci7CiZyLcCLnIpzIuQgnci7CibyRtkhbpC3SFmmLtEXaIm2RtkhbpG3SNmmbtE3aJm2TtknbpG3SNmlGmpFmpBlpRpqRZqQZaUaakeakOWlOmpPmpDlpTpqT5qTBkoQlCUsSliQsSViSsCRhScKShCUJSxKWJCxJWJKwJGFJwpKEJQlLEpYkLElYkrAkYUnCkoQlCUsSliQsSViSsCRhScKShCUJSxKWJCxJWJKwJGFJwpKEJQlLEpYkLElYkrAkYUnCkoQlCUsKlhQsKVhSsKRgScGSgiUFSwqWFCwpWFKwpGBJwZKCJQVLCpYULClYUrCkYEnBkoIlBUsKlhQsKVhSsKRgScGSgiUFSwqWFCwpWFKwpGBJwZKCJQVLCpYULClYUrCkYEnBkoIlBUsKlhQsKVhSsKRgScGSgiUFSwqWFCwpWFKwpGBJwZKCJQVLCpYULClYUrCkYEnBkoIlBUsKlhQsKVhSsKRgScGSgiUFSwqWFCwpWFKwpGBJwZKCJQVLCpYULClYUrCkYEnBkoIlBUsKlhQsKVhSsKRhScOShiUNSxqWNCxpWNKwpGFJw5KGJQ1LGpY0LGlY0rCkYUnDkoYlDUsaljQsaVjSsKRhScOShiUNSxqWNCxpWNKwpGFJw5KGJQ1LGpY0LGlY0rCkYUnDkoYlDUsaljQsaVjSsKRhScOShiUNSxqWNCxpWNKwpGFJw5KGJQ1LGpY0LGlY0rCkYUnDkoYlDUsaljQsaVjSsKRhScOShiUNSxqWNCxpWNKwpGFJw5KGJQ1LGpY0LGlY0rCkYUnDkoYlSF4DyWsgeQ0kr4HkNZC8BpLXQPIaSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXvWUvO6zNEqnPM91xFmKMinPcx06y56/HWmJ9khLtEdaoj3SEu2Rlug59/ooSdukPc7jPErSjDQjzUgz0ow0I81IM9KMNCPNSXPSnDQnzUlz0pw0J81Jc9KCtCAtSAvSgrQgLUgL0oK0IE2kiTSRJtJEmkgTaSJNpIm0JC1JS9KStCQtSUvSkrQkLUkr0oq0Iq3ogKIDirSTJXk2zsmSZ1mUR1qe//ZkybNclJvSKJ0yKM+0s7NOljzLM63v5XPYNc9yUW5Ko3TKaxhIDLuKYVcx7CqGXcWwqxh2FcOuYthVDLuKYVcx7CqGXcWwqxh2FcOuYthVDLuKYVcx7CqGXcWwqxh2FcOuYthVDLuKYVcx7CqGXcWwqxh2FcOuYthVDLuKYVcx7CqGXcWwqxh2FcOuYthVDLuKYVcx7CqGXcWwqxh2FcOuYthVDLuKYVcx7CqGXcWwqxh2FcOuYthVDLuKYVcx7CqGXcWwqxh2FcOuYthVDLuKYVcx7CqGXcWwqxh2FcOuYthVDLuKYVcx7HovSSvSirQirUgr0oq0Iq1Ia9KatCatSWvSmrQmrUlr0mbYVQy7imFXMewqhl3FsKsYdhXDrmLYVQy7imFXMewqhl3FsKsYdhXDrmLYVQy7imFXMewqhl3FsKsYdhXDrmLYVQy7imFXMewqhl3FsKsYdhXDrmLYVQy7imFXMewqhl3FsKsYdhXDrmLYVQy7imFXMewqhl3FsKsYdhXDrmLYVQy7imFXMewqhl3FsKsYdhXDrmLYVQy7imFXMewqhl3FsKsYdhXDrmLYVQy7imFXMewqhl3FsKsYdhXDrmLYVQy7imFXMewqhyUOSxyWOCxxWOKwxGGJwxKHJQ5LHJY4LHFY4rDEYYnDEoclDkscljgscVjisMRhicMShyUBSwKWBCwJWBKwJGBJwJKAJQFLApYELAlYErAkYEnAkoAlAUsClgQsCVgSsCRgScCSgCUBSwKWBCwJWBKwJGBJwJKAJQFLApYELAlYErAkYEnAkoAlAUsClgQsCVgSsCRgScCSgCUBSwKWBCwJWBKwJGBJwJKAJQFLApYELAlYErAkYEnAkoAlAUsClgQsCVgSsCRgScCSgCUBSwKWBCwJWBKwJGBJwJKAJQFLApYELAlYErAkYEnAkoAlAUsClgQsCVgSsCRgScCSgCUBSwKWBCwJWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIliC5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheRVSF6F5FVIXoXkVUheheQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJayJ5TSSvieQ1kbwmktdE8ppIXhPJa64RDeQa0UCuEQ3kGtFArhEN5BppSa6RluQaaUmukZbkGmlJLifNSXPSnDQnzUlz0oK0IC1IC9KCtCAtSAvSgrQgTaSJNJEm0kSaSBNpIk2kibQkLUlL0pK0JC1JS9KStCQtSSvSirQirUgr0oq0Iq1IK9KKtCatSWvSmrQmrUlr0pq0Jm2kJblHWpJ7pCW5R1qSe6QluUdaknukJblHWpJ7pCW5R1qS+0baIm2RtkhbpC3SFmmLtEXaIm2RtknbpG3SNmmbtE3aJm2TtknbpBlpRpqRBks2LNmwZMOSDUs2LNmwZMOSDUs2LNmwZMOSDUs2LNmwZMOSDUs2LNmwZMOSDUs2LNmwZMOSDUs2LNmwZMOSDUs2LNmwZMOSDUs2LNmwZMOSDUs2LNmwZMOSDUs2LNmwZMOSDUs2LNmwZMOSDUs2LNmwZMOSDUs2LNmwZMOSDUs2LNmwZMOSDUs2LNmw5Cl53WeZlGean2Vf5WPu9RDe5GPu9VluSqN0yqAU5TU4nzaD82kzOJ82g/NpMzifNhfhpM1FOGlzEU7aXISTNhfhpC3SFmmLtE3aJm2TtknbpG3SNmmbtE3aJs1IM9KMNCPNSDPSjDQjzUgz0pw0J81Jc9KcNCfNSXPSnDQnLUgL0oK0IC1IC9KCtCAtSAvSRJpIE2kiTaSJNJEm0kSaSEvSkrQkLUlL0pK0JC1JS9KStCKtSCvSirQirUgr0oq0Iq1Ia9KatCatSWvSmrQmrUlr0uYinPS5CCd9LsJJn4tw0ucinPS5CCd9LsJJn4tw0mGJwxKHJQ5LHJY4LHFY4rDEYYnDEoclDkscljgscVjisMRhicMShyUOSxyWOCxxWOKwxGGJwxKHJQ5LHJY4LHFY4rDEYYnDEoclDkscljgscVjisMRhicMShyUOSxyWOCxxWOKwxGGJwxKHJQ5LHJY4LHFY4rDEYYnDEoclDkscljgscVjisMRhicMShyUOSxyWOCxxWOKwxGGJwxKHJQ5LHJY4LHFY4rDEYYnDEoclDkscljgscVjisMRhicMShyUOSxyWBCwJWBKwJGBJwJKAJQFLApYELAlYErAkYEnAkoAlAUsClgQsCVgSsCRgScCSgCUBSwKWBCwJWBKwJGBJwJKAJQFLApYELAlYErAkYEnAkoAlAUsClgQsCVgSsCRgScCSgCUBSwKWBCwJWBKwJGBJwJKAJQFLApYELAlYErAkYEnAkoAlAUsClgQsCVgSsCRgScCSgCUBSwKWBCwJWBKwJGBJwJKAJQFLApYELAlYErAkYEnAkoAlAUsClgQsCVgSsCRgScCSgCUBSwKWBCwJWBKwJGCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYAmS10TymkheE8lrInlNJK+J5DWRvCaS10TymkheE8lrInlNJK+J5DWRvCaS10TymkheE8lrInlNJK+J5DWRvCaS10TymkheE8lrInlNJK+J5DWRvCaS10TymkheE8lrInlNJK+J5DWRvCaS10TymkheE8lrInlNJK+J5DWRvCaS10TymkheE8lrInlNJK+J5DWRvCaS10TymkheE8lrInlNJK+J5DWRvCaS10TymkheE8lrInlNJK+J5DWRvCaS10TymkheE8lrInlNJK+J5DWRvCaS10TymkheE8lrInlNJK+J5DWRvCaS10TymkheE8lrInlNJK+J5DWRvCaS10TymkheE8lrInlNJK+J5DWRvCaS10TymkheE8lrInlNJK+J5DWRvCaS10TymkheE8lrInlNJK+J5DWRvCaS10TymkheE8lrInlNJK+J5DWRvCaS10TymkheE8lrInlNJK+J5DWRvCaS10TymkheE8lrInlNJK+J5DWRvCaS10TymkheE8lrInlNJK+J5DWRvCaS10TymkheE8lrInlNJK+J5DWRvCaS10TymkheE8lrInlNJK+J5DWRvCaS10TymkheE8lrInlNJK+J5DWRvCaS10TymkheE8lrInlNJK+J5DWRvCaS10TymkheE8lrInlNJK+J5DWRvCaS10TymkheE8lrInlNJK+J5DWRvCaS10TymkheE8lrInlNJK+J5DWRvCaS10TymkheE8lrInlNJK+J5DWRvCaS10TymkheE8lrInnNp+R1n+Wi3JTnuY44S6cMyvNch84y+dui7ClHWpI10pKskZbkc+71UZJWpD3O4zxK0oq0Iq1Ja9KatCatSWvSmrQmrUnrSXvOvT7KRbkpjdIpg1KUSVmUpC3SFmmLtEXaIm2RtkhbpC3SFmmbtE3aJm2TtknbpG3SNmmbtE2akWakGWlGmpFmpBlpRpqRZqQ5aT4d8JS8PkrSHizpswxKUd7T7l+yn2Ud5ePHesqDJVe5KDelUfpR6izjLP/x80//9w9/+9Mf/vXPf/zvn/7pf+9//I//+cu//f1Pf/3L849////+6/o///q3P/35z3/6z3/5r7/99d/++O//87c//suf//pvx//76Xb853gC/Z+ln/f65/s/Xr/+q/38p/9n3+/N/Uz/P//8kx3/P/vnVX3/0+Of3887ro7jj+v8Y/+8b+fP2yyZ/nP29S/q9nPt4/87kfef8eOvYv5q+8+7j78Sf5U/2/mDefzVcVe0f8593ZH73apzkWLdvN/v46+aRdbPW+cBswm+fvbH3/1qF/7xj3/+x/8P",
|
|
1914
1914
|
"verification_key": "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"
|
|
1915
1915
|
},
|
|
1916
1916
|
{
|
|
@@ -3692,15 +3692,15 @@
|
|
|
3692
3692
|
"visibility": "databus"
|
|
3693
3693
|
},
|
|
3694
3694
|
"error_types": {
|
|
3695
|
-
"2754040237334517471": {
|
|
3696
|
-
"error_kind": "fmtstring",
|
|
3697
|
-
"length": 92,
|
|
3698
|
-
"item_types": []
|
|
3699
|
-
},
|
|
3700
3695
|
"9894212961085021188": {
|
|
3701
3696
|
"error_kind": "string",
|
|
3702
3697
|
"string": "Message not authorized by account"
|
|
3703
3698
|
},
|
|
3699
|
+
"12327971061804302172": {
|
|
3700
|
+
"error_kind": "fmtstring",
|
|
3701
|
+
"length": 98,
|
|
3702
|
+
"item_types": []
|
|
3703
|
+
},
|
|
3704
3704
|
"12469291177396340830": {
|
|
3705
3705
|
"error_kind": "string",
|
|
3706
3706
|
"string": "call to assert_max_bit_size"
|
|
@@ -3731,8 +3731,8 @@
|
|
|
3731
3731
|
}
|
|
3732
3732
|
}
|
|
3733
3733
|
},
|
|
3734
|
-
"bytecode": "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W8Xpf6s4/W8Vp/+t4vS/VfkcWk7/W8Xpf6s4/W8Vp/+t4vS/VZz+t4rT/1Zx+t8qTv9bxel/qzj9bxWn/63i9L9VnP63itP/VnH63ypO/1vF6X+rOP1vFaf/reL0v1Wc/reK0/9WcfrfKk7/W8Xpf6s4/W8Vp/+t4vS/VZz+t4rT/1Y9y6Hl9L9VnP63itP/VnH63ypO/1vF6X+rOP1vFaf/reL0v1Wc/reK0/9WcfrfKk7/W8Xpf6s4/W8Vp/+t4vS/VZz+t4rT/1Zx+t8qTv9bxel/qzj9bxWn/63i9L9VnP63itP/VnH63ypO/1vF6X+rOP1v1XYOLaf/reL0v1Wc/reK0/9WcfrfKk7/W8Xpf6s4/W8Vp/+t4vS/VZz+t4rT/1Zx+t8qTv9bxel/qzj9bxWn/63i9L9VnP63itP/VnH63ypO/1vF6X+rOP1vFaf/reL0v1Wc/reK0/9WcfrfKk7/W8Xpf6t+4NBy+t8qTv9bxel/qzj9bxWn/63i9L9VnP63itP/VnH63ypO/1vF6X+rOP1vFaf/reb0v9Wc/rea0/9Wc/rfak7/W83pf6s5/W81p/+t5vS/1Zz+t5rT/1Zz+t9qTv9bzel/qzn9bzWn/63m9L/VnP63ujKHltP/VnP632pO/1vN6X+rOf1vNaf/reb0v9Wc/rea0/9Wc/rfak7/W83pf6s5/W81p/+t5vS/1Zz+t5rT/1Zz+t9qTv9bzel/qzn9bzWn/63m9L/VnP63mtP/VnP632pO/1vN6X+rOf1vNaf/reb0v9UdOLSc/rea0/9Wc/rfak7/W83pf6s5/W81p/+t5vS/1Zz+t5rT/1Zz+t9qTv9bzel/qzn9bzWn/63m9L/VnP63mtP/VnP632pO/1vN6X+rOf1vNaf/reb0v9Wc/rea0/9Wc/rfak7/W83pf6s5/W81p/+tHsKh5fS/1Zz+t5rT/1Zz+t9qTv9bzel/qzn9bzWn/63m9L/VnP63mtP/VnP632pO/1vN6X+rOf1vNaf/reb0v9Wc/rea0/9Wc/rfak7/W83pf6s5/W81p/+t5vS/1Zz+t5rT/1Zz+t9qTv9bzel/qzn9b3UOh5bT/1Zz+t9qTv9bzel/qzn9bzWn/63m9L/VnP63mtP/VnP632pO/1vN6X+rOf1vNaf/reb0v9Wc/rea0/9Wc/rfak7/W83pf6s5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",
|
|
3735
|
-
"debug_symbols": "
|
|
3734
|
+
"bytecode": "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W8Xpf6s4/W8Vp/+t4vS/VfkcWk7/W8Xpf6s4/W8Vp/+t4vS/VZz+t4rT/1Zx+t8qTv9bxel/qzj9bxWn/63i9L9VnP63itP/VnH63ypO/1vF6X+rOP1vFaf/reL0v1Wc/reK0/9WcfrfKk7/W8Xpf6s4/W8Vp/+t4vS/VZz+t4rT/1Y9y6Hl9L9VnP63itP/VnH63ypO/1vF6X+rOP1vFaf/reL0v1Wc/reK0/9WcfrfKk7/W8Xpf6s4/W8Vp/+t4vS/VZz+t4rT/1Zx+t8qTv9bxel/qzj9bxWn/63i9L9VnP63itP/VnH63ypO/1vF6X+rOP1v1XYOLaf/reL0v1Wc/reK0/9WcfrfKk7/W8Xpf6s4/W8Vp/+t4vS/VZz+t4rT/1Zx+t8qTv9bxel/qzj9bxWn/63i9L9VnP63itP/VnH63ypO/1vF6X+rOP1vFaf/reL0v1Wc/reK0/9WcfrfKk7/W8Xpf6t+4NBy+t8qTv9bxel/qzj9bxWn/63i9L9VnP63itP/VnH63ypO/1vF6X+rOP1vFaf/reb0v9Wc/rea0/9Wc/rfak7/W83pf6s5/W81p/+t5vS/1Zz+t5rT/1Zz+t9qTv9bzel/qzn9bzWn/63m9L/VnP63ujKHltP/VnP632pO/1vN6X+rOf1vNaf/reb0v9Wc/rea0/9Wc/rfak7/W83pf6s5/W81p/+t5vS/1Zz+t5rT/1Zz+t9qTv9bzel/qzn9bzWn/63m9L/VnP63mtP/VnP632pO/1vN6X+rOf1vNaf/reb0v9XtObSc/rea0/9Wc/rfak7/W83pf6s5/W81p/+t5vS/1Zz+t5rT/1Zz+t9qTv9bzel/qzn9bzWn/63m9L/VnP63mtP/VnP632pO/1vN6X+rOf1vNaf/reb0v9Wc/rea0/9Wc/rfak7/W83pf6s5/W81p/+tHsyh5fS/1Zz+t5rT/1Zz+t9qTv9bzel/qzn9bzWn/63m9L/VnP63mtP/VnP632pO/1vN6X+rOf1vNaf/reb0v9Wc/rea0/9Wc/rfak7/W83pf6s5/W81p/+t5vS/1Zz+t5rT/1Zz+t9qTv9bzel/qzn9b3UOh5bT/1Zz+t9qTv9bzel/qzn9bzWn/63m9L/VnP63mtP/VnP632pO/1vN6X+rOf1vNaf/reb0v9Wc/rea0/9Wc/rfak7/W83pf6s5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",
|
|
3735
|
+
"debug_symbols": "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",
|
|
3736
3736
|
"verification_key": "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"
|
|
3737
3737
|
},
|
|
3738
3738
|
{
|
|
@@ -3980,7 +3980,7 @@
|
|
|
3980
3980
|
}
|
|
3981
3981
|
},
|
|
3982
3982
|
"bytecode": "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",
|
|
3983
|
-
"debug_symbols": "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bAPbwDawTWwT28Q2sU1sE9vENrFNbBNbYAtsgS2wBbbAFtgCW2CLbcv1k4UN7KCAChro4AAniK1ha9gatoatYWvYGraGrWFr2Dq2jq1j69g6to6tY+vYOraOTbAJNsFGlghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSV2ZIklKmhg2kbiANM2E2PjkSUHLtt6aqDn2tDCtEWiggYu21qs3XNtaOGyrTeF9VwbemJmyYlpyw3KLDlx2dace8+1oYXLNrORmSUnDnDZItubWXJgZsmJDeyggAoa6OAAsU1sgS2wBbbAFtgCW2ALbIEtti3XhhY2sIMCZt2WmBXWJ5TrPft6uVfP9Z6FHRQw22uJBjo4wAmmbR0lud6zsIEdFFDBu01uuRUrHwoHOMHYuPKhsIEdFFBBbIJN0pa7TyYYGzVtuaO0gWkbiQIqmLaZ6OAAly1Hx3O954krHwob2EEBFTTQwQFiM2yOzbE5Nsfm2Bybpy0POU+bJk4wNuZL/E9sYAcFVNBAB7ENbAPbxDaxTWwT28Q2sU1sE9vENrEFtsAW2AJbYAtsgS2wBbbYtlzv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"
|
|
3983
|
+
"debug_symbols": "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28A2sA1sA9vENrFNbBPbxDaxTWwT28Q2sQW2wBbYAltgC2yBLbAFtti2XD9Z2MAOCqiggQ4OcILYGraGrWFr2Bq2hq1ha9gatoatY+vYOraOrWPr2Dq2jq1j69gEm2ATbGSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYkeWWKKCBqZtJA4wbTMxNh5ZcuCyracGeq4NLUxbJCpo4LKtxdo914YWLtt6U1jPtaEnZpacmLbcoMySE5dtzbn3XBtauGwzG5lZcuIAly2yvZklB2aWnNjADgqooIEODhDbxBbYAltgC2yBLbAFtsAW2GLbcm1oYQM7KGDWbYlZYX1Cud6zr5d79VzvWdhBAbO9lmiggwOcYNrWUZLrPQsb2EEBFbzb5JZbsfKhcIATjI0rHwob2EEBFcQm2CRtuftkgrFR05Y7ShuYtpEooIJpm4kODnDZcnQ813ueuPKhsIEdFFBBAx0cIDbD5tgcm2NzbI7NsXna8pDztGniBGNjvsT/xAZ2UEAFDXQQ28A2sE1sE9vENrFNbBPbxDaxTWwTW2ALbIEtsAW2wBbYAltgi23L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"
|
|
3984
3984
|
},
|
|
3985
3985
|
{
|
|
3986
3986
|
"name": "sync_state",
|
|
@@ -4151,7 +4151,7 @@
|
|
|
4151
4151
|
}
|
|
4152
4152
|
},
|
|
4153
4153
|
"bytecode": "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",
|
|
4154
|
-
"debug_symbols": "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"
|
|
4154
|
+
"debug_symbols": "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"
|
|
4155
4155
|
},
|
|
4156
4156
|
{
|
|
4157
4157
|
"name": "public_dispatch",
|
|
@@ -4454,7 +4454,7 @@
|
|
|
4454
4454
|
},
|
|
4455
4455
|
"113": {
|
|
4456
4456
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/aztec-nr/aztec/src/macros/internals_functions_generation/external/private.nr",
|
|
4457
|
-
"source": "use crate::macros::{\n internals_functions_generation::external::helpers::{create_authorize_once_check, get_abi_relevant_attributes},\n utils::{\n fn_has_authorize_once, fn_has_noinitcheck,
|
|
4457
|
+
"source": "use crate::macros::{\n internals_functions_generation::external::helpers::{create_authorize_once_check, get_abi_relevant_attributes},\n utils::{\n fn_has_allow_phase_change, fn_has_authorize_once, fn_has_noinitcheck, is_fn_initializer, is_fn_only_self,\n is_fn_view, module_has_initializer, module_has_storage,\n },\n};\nuse crate::protocol::meta::utils::derive_serialization_quotes;\nuse std::meta::type_of;\n\npub(crate) comptime fn generate_private_external(f: FunctionDefinition) -> Quoted {\n let module_has_initializer = module_has_initializer(f.module());\n let module_has_storage = module_has_storage(f.module());\n\n // Private functions undergo a lot of transformations from their Aztec.nr form into a circuit that can be fed to\n // the Private Kernel Circuit. First we change the function signature so that it also receives\n // `PrivateContextInputs`, which contain information about the execution context (e.g. the caller).\n let original_params = f.parameters();\n\n let original_params_quotes =\n original_params.map(|(param_name, param_type)| quote { $param_name: $param_type }).join(quote {, });\n\n let params = quote { inputs: aztec::context::inputs::PrivateContextInputs, $original_params_quotes };\n\n let mut body = f.body().as_block().unwrap();\n\n // The original params are hashed and passed to the `context` object, so that the kernel can verify we've received\n // the correct values.\n let (args_serialization, _, serialized_args_name) = derive_serialization_quotes(original_params, false);\n\n let storage_init = if module_has_storage {\n // Contract has Storage defined so we initialize it.\n quote {\n let storage = Storage::init(&mut context);\n }\n } else {\n // Contract does not have Storage defined, so we set storage to the unit type `()`. ContractSelf requires a\n // storage struct in its constructor. Using an Option type would lead to worse developer experience and higher\n // constraint counts so we use the unit type `()` instead.\n quote {\n let storage = ();\n }\n };\n\n let contract_self_creation = quote {\n #[allow(unused_variables)]\n let mut self = {\n $args_serialization\n let args_hash = aztec::hash::hash_args($serialized_args_name);\n let mut context = aztec::context::PrivateContext::new(inputs, args_hash);\n $storage_init\n let self_address = context.this_address();\n let call_self: CallSelf<&mut aztec::context::PrivateContext> = CallSelf { address: self_address, context: &mut context };\n let enqueue_self: EnqueueSelf<&mut aztec::context::PrivateContext> = EnqueueSelf { address: self_address, context: &mut context };\n let call_self_static: CallSelfStatic<&mut aztec::context::PrivateContext> = CallSelfStatic { address: self_address, context: &mut context };\n let enqueue_self_static: EnqueueSelfStatic<&mut aztec::context::PrivateContext> = EnqueueSelfStatic { address: self_address, context: &mut context };\n let internal: CallInternal<&mut aztec::context::PrivateContext> = CallInternal { context: &mut context };\n aztec::ContractSelf::new_private(&mut context, storage, call_self, enqueue_self, call_self_static, enqueue_self_static, internal)\n };\n };\n\n let original_function_name = f.name();\n\n // Modifications introduced by the different marker attributes.\n let internal_check = if is_fn_only_self(f) {\n let assertion_message = f\"Function {original_function_name} can only be called by the same contract\";\n quote { assert(self.msg_sender() == self.address, $assertion_message); }\n } else {\n quote {}\n };\n\n let view_check = if is_fn_view(f) {\n let assertion_message = f\"Function {original_function_name} can only be called statically\".as_quoted_str();\n quote { assert(self.context.inputs.call_context.is_static_call, $assertion_message); }\n } else {\n quote {}\n };\n\n let (assert_initializer, mark_as_initialized) = if is_fn_initializer(f) {\n (\n quote { aztec::macros::functions::initialization_utils::assert_initialization_matches_address_preimage_private(*self.context); },\n quote { aztec::macros::functions::initialization_utils::mark_as_initialized_private(self.context); },\n )\n } else {\n (quote {}, quote {})\n };\n\n // Initialization checks are not included in contracts that don't have initializers.\n let init_check = if module_has_initializer & !is_fn_initializer(f) & !fn_has_noinitcheck(f) {\n quote { aztec::macros::functions::initialization_utils::assert_is_initialized_private(self.context); }\n } else {\n quote {}\n };\n\n // Phase checks are skipped in functions that request to manually handle phases\n let initial_phase_store = if fn_has_allow_phase_change(f) {\n quote {}\n } else {\n quote { let within_revertible_phase: bool = self.context.in_revertible_phase(); }\n };\n\n let no_phase_change_check = if fn_has_allow_phase_change(f) {\n quote {}\n } else {\n quote { \n assert_eq(\n within_revertible_phase,\n self.context.in_revertible_phase(),\n f\"Phase change detected on function with phase check. If this is expected, use #[allow_phase_change]\",\n ); \n }\n };\n\n // Inject the authwit check if the function is marked with #[authorize_once].\n let authorize_once_check = if fn_has_authorize_once(f) {\n create_authorize_once_check(f, true)\n } else {\n quote {}\n };\n\n // Finally, we need to change the return type to be `PrivateCircuitPublicInputs`, which is what the Private Kernel\n // circuit expects.\n let return_value_var_name = quote { macro__returned__values };\n\n let return_value_type = f.return_type();\n let return_value = if body.len() == 0 {\n quote {}\n } else if return_value_type != type_of(()) {\n // The original return value is serialized and hashed before being passed to the context.\n let (body_without_return, last_body_expr) = body.pop_back();\n let return_value = last_body_expr.quoted();\n let return_value_assignment = quote { let $return_value_var_name: $return_value_type = $return_value; };\n\n let (return_serialization, _, serialized_return_name) =\n derive_serialization_quotes([(return_value_var_name, return_value_type)], false);\n\n body = body_without_return;\n\n quote {\n $return_value_assignment\n $return_serialization\n self.context.set_return_hash($serialized_return_name);\n }\n } else {\n let (body_without_return, last_body_expr) = body.pop_back();\n if !last_body_expr.has_semicolon()\n & last_body_expr.as_for().is_none()\n & last_body_expr.as_assert().is_none()\n & last_body_expr.as_for_range().is_none()\n & last_body_expr.as_assert_eq().is_none()\n & last_body_expr.as_let().is_none() {\n let unused_return_value_name = f\"_{return_value_var_name}\".quoted_contents();\n body = body_without_return.push_back(quote { let $unused_return_value_name = $last_body_expr; }\n .as_expr()\n .unwrap());\n }\n quote {}\n };\n\n let context_finish = quote { self.context.finish() };\n\n // Preserve all attributes that are relevant to the function's ABI.\n let abi_relevant_attributes = get_abi_relevant_attributes(f);\n\n let fn_name = f\"__aztec_nr_internals__{original_function_name}\".quoted_contents();\n\n let to_prepend = quote {\n aztec::oracle::version::assert_compatible_oracle_version();\n $contract_self_creation\n $initial_phase_store\n $assert_initializer\n $init_check\n $internal_check\n $view_check\n $authorize_once_check\n };\n\n let body_quote = body.map(|expr| expr.quoted()).join(quote { });\n\n let to_append = quote {\n $return_value\n $mark_as_initialized\n $no_phase_change_check\n $context_finish\n };\n\n quote {\n #[aztec::macros::internals_functions_generation::abi_attributes::abi_private]\n $abi_relevant_attributes\n fn $fn_name($params) -> return_data aztec::protocol::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs {\n $to_prepend\n $body_quote\n $to_append\n }\n }\n}\n"
|
|
4458
4458
|
},
|
|
4459
4459
|
"124": {
|
|
4460
4460
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/aztec-nr/aztec/src/messages/discovery/mod.nr",
|
|
@@ -4564,31 +4564,31 @@
|
|
|
4564
4564
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/version.nr",
|
|
4565
4565
|
"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 `utilityAssertCompatibleOracleVersion` oracle is called\n/// and if the oracle version is incompatible an error is thrown.\npub global ORACLE_VERSION: Field = 11;\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(utilityAssertCompatibleOracleVersion)]\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"
|
|
4566
4566
|
},
|
|
4567
|
-
"
|
|
4567
|
+
"239": {
|
|
4568
4568
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/aztec-nr/aztec/src/utils/array/append.nr",
|
|
4569
4569
|
"source": "/// Appends the elements of the second `BoundedVec` to the end of the first one. The resulting `BoundedVec` can have\n/// any arbitrary maximum length, but it must be large enough to fit all of the elements of both the first and second\n/// vectors.\npub fn append<T, let ALen: u32, let BLen: u32, let DstLen: u32>(\n a: BoundedVec<T, ALen>,\n b: BoundedVec<T, BLen>,\n) -> BoundedVec<T, DstLen> {\n let mut dst = BoundedVec::new();\n\n dst.extend_from_bounded_vec(a);\n dst.extend_from_bounded_vec(b);\n\n dst\n}\n\nmod test {\n use super::append;\n\n #[test]\n unconstrained fn append_empty_vecs() {\n let a: BoundedVec<_, 3> = BoundedVec::new();\n let b: BoundedVec<_, 14> = BoundedVec::new();\n\n let result: BoundedVec<Field, 5> = append(a, b);\n\n assert_eq(result.len(), 0);\n assert_eq(result.storage(), std::mem::zeroed());\n }\n\n #[test]\n unconstrained fn append_non_empty_vecs() {\n let a: BoundedVec<_, 3> = BoundedVec::from_array([1, 2, 3]);\n let b: BoundedVec<_, 14> = BoundedVec::from_array([4, 5, 6]);\n\n let result: BoundedVec<Field, 8> = append(a, b);\n\n assert_eq(result.len(), 6);\n assert_eq(result.storage(), [1, 2, 3, 4, 5, 6, std::mem::zeroed(), std::mem::zeroed()]);\n }\n\n #[test(should_fail_with = \"out of bounds\")]\n unconstrained fn append_non_empty_vecs_insufficient_max_len() {\n let a: BoundedVec<_, 3> = BoundedVec::from_array([1, 2, 3]);\n let b: BoundedVec<_, 14> = BoundedVec::from_array([4, 5, 6]);\n\n let _: BoundedVec<Field, 5> = append(a, b);\n }\n}\n"
|
|
4570
4570
|
},
|
|
4571
|
-
"
|
|
4571
|
+
"242": {
|
|
4572
4572
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/aztec-nr/aztec/src/utils/array/subarray.nr",
|
|
4573
4573
|
"source": "/// Returns `DstLen` elements from a source array, starting at `offset`. `DstLen` must not be larger than the number of\n/// elements past `offset`.\n///\n/// Examples:\n/// ```\n/// let foo: [Field; 2] = subarray([1, 2, 3, 4, 5], 2);\n/// assert_eq(foo, [3, 4]);\n///\n/// let bar: [Field; 5] = subarray([1, 2, 3, 4, 5], 2); // fails - we can't return 5 elements since only 3 remain\n/// ```\npub fn subarray<T, let SrcLen: u32, let DstLen: u32>(src: [T; SrcLen], offset: u32) -> [T; DstLen] {\n assert(offset + DstLen <= SrcLen, \"DstLen too large for offset\");\n\n let mut dst: [T; DstLen] = std::mem::zeroed();\n for i in 0..DstLen {\n dst[i] = src[i + offset];\n }\n\n dst\n}\n\nmod test {\n use super::subarray;\n\n #[test]\n unconstrained fn subarray_into_empty() {\n // In all of these cases we're setting DstLen to be 0, so we always get back an empty array.\n assert_eq(subarray::<Field, _, _>([], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 2), []);\n }\n\n #[test]\n unconstrained fn subarray_complete() {\n assert_eq(subarray::<Field, _, _>([], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 0), [1, 2, 3, 4, 5]);\n }\n\n #[test]\n unconstrained fn subarray_different_end_sizes() {\n // We implicitly select how many values to read in the size of the return array\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3, 4, 5]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3, 4]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2]);\n }\n\n #[test(should_fail_with = \"DstLen too large for offset\")]\n unconstrained fn subarray_offset_too_large() {\n // With an offset of 1 we can only request up to 4 elements\n let _: [_; 5] = subarray([1, 2, 3, 4, 5], 1);\n }\n\n #[test(should_fail)]\n unconstrained fn subarray_bad_return_value() {\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [3, 3, 4, 5]);\n }\n}\n"
|
|
4574
4574
|
},
|
|
4575
|
-
"
|
|
4575
|
+
"243": {
|
|
4576
4576
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/aztec-nr/aztec/src/utils/array/subbvec.nr",
|
|
4577
4577
|
"source": "use crate::utils::array;\n\n/// Returns `DstMaxLen` elements from a source BoundedVec, starting at `offset`. `offset` must not be larger than the\n/// original length, and `DstLen` must not be larger than the total number of elements past `offset` (including the\n/// zeroed elements past `len()`).\n///\n/// Only elements at the beginning of the vector can be removed: it is not possible to also remove elements at the end\n/// of the vector by passing a value for `DstLen` that is smaller than `len() - offset`.\n///\n/// Examples:\n/// ```\n/// let foo = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n/// assert_eq(subbvec(foo, 2), BoundedVec::<_, 8>::from_array([3, 4, 5]));\n///\n/// let bar: BoundedVec<_, 1> = subbvec(foo, 2); // fails - we can't return just 1 element since 3 remain\n/// let baz: BoundedVec<_, 10> = subbvec(foo, 3); // fails - we can't return 10 elements since only 7 remain\n/// ```\npub fn subbvec<T, let SrcMaxLen: u32, let DstMaxLen: u32>(\n bvec: BoundedVec<T, SrcMaxLen>,\n offset: u32,\n) -> BoundedVec<T, DstMaxLen> {\n // from_parts_unchecked does not verify that the elements past len are zeroed, but that is not an issue in our case\n // because we're constructing the new storage array as a subarray of the original one (which should have zeroed\n // storage past len), guaranteeing correctness. This is because `subarray` does not allow extending arrays past\n // their original length.\n BoundedVec::from_parts_unchecked(array::subarray(bvec.storage(), offset), bvec.len() - offset)\n}\n\nmod test {\n use super::subbvec;\n\n #[test]\n unconstrained fn subbvec_empty() {\n let bvec = BoundedVec::<Field, 0>::from_array([]);\n assert_eq(subbvec(bvec, 0), bvec);\n }\n\n #[test]\n unconstrained fn subbvec_complete() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n assert_eq(subbvec(bvec, 0), bvec);\n\n let smaller_capacity = BoundedVec::<_, 5>::from_array([1, 2, 3, 4, 5]);\n assert_eq(subbvec(bvec, 0), smaller_capacity);\n }\n\n #[test]\n unconstrained fn subbvec_partial() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n assert_eq(subbvec(bvec, 2), BoundedVec::<_, 8>::from_array([3, 4, 5]));\n assert_eq(subbvec(bvec, 2), BoundedVec::<_, 3>::from_array([3, 4, 5]));\n }\n\n #[test]\n unconstrained fn subbvec_into_empty() {\n let bvec: BoundedVec<_, 10> = BoundedVec::from_array([1, 2, 3, 4, 5]);\n assert_eq(subbvec(bvec, 5), BoundedVec::<_, 5>::from_array([]));\n }\n\n #[test(should_fail)]\n unconstrained fn subbvec_offset_past_len() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n let _: BoundedVec<_, 1> = subbvec(bvec, 6);\n }\n\n #[test(should_fail)]\n unconstrained fn subbvec_insufficient_dst_len() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n // We're not providing enough space to hold all of the items inside the original BoundedVec. subbvec can cause\n // for the capacity to reduce, but not the length (other than by len - offset).\n let _: BoundedVec<_, 1> = subbvec(bvec, 2);\n }\n\n #[test(should_fail_with = \"DstLen too large for offset\")]\n unconstrained fn subbvec_dst_len_causes_enlarge() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n // subbvec does not support capacity increases\n let _: BoundedVec<_, 11> = subbvec(bvec, 0);\n }\n\n #[test(should_fail_with = \"DstLen too large for offset\")]\n unconstrained fn subbvec_dst_len_too_large_for_offset() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n // This effectively requests a capacity increase, since there'd be just one element plus the 5 empty slots,\n // which is less than 7.\n let _: BoundedVec<_, 7> = subbvec(bvec, 4);\n }\n}\n"
|
|
4578
4578
|
},
|
|
4579
|
-
"
|
|
4579
|
+
"246": {
|
|
4580
4580
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/aztec-nr/aztec/src/utils/conversion/bytes_to_fields.nr",
|
|
4581
4581
|
"source": "use std::static_assert;\n\n// These functions are used to facilitate the conversion of log ciphertext between byte and field representations.\n//\n// `bytes_to_fields` uses fixed-size arrays since encryption contexts have compile-time size information.\n// `bytes_from_fields` uses BoundedVec for flexibility in unconstrained contexts where sizes are dynamic.\n//\n// Together they provide bidirectional conversion between bytes and fields when processing encrypted logs.\n\n/// Converts the input bytes into an array of fields. A Field is ~254 bits meaning that each field can store 31 whole\n/// bytes. Use `bytes_from_fields` to obtain the original bytes array.\n///\n/// The input bytes are chunked into chunks of 31 bytes. Each 31-byte chunk is viewed as big-endian, and is converted\n/// into a Field. For example, [1, 10, 3, ..., 0] (31 bytes) is encoded as [1 * 256^30 + 10 * 256^29 + 3 * 256^28 + ...\n/// + 0] Note: N must be a multiple of 31 bytes\npub fn bytes_to_fields<let N: u32>(bytes: [u8; N]) -> [Field; N / 31] {\n // Assert that N is a multiple of 31\n static_assert(N % 31 == 0, \"N must be a multiple of 31\");\n\n let mut fields = [0; N / 31];\n\n // Since N is a multiple of 31, we can simply process all chunks fully\n for i in 0..N / 31 {\n let mut field = 0;\n for j in 0..31 {\n // Shift the existing value left by 8 bits and add the new byte\n field = field * 256 + bytes[i * 31 + j] as Field;\n }\n fields[i] = field;\n }\n\n fields\n}\n\n/// Converts an input BoundedVec of fields into a BoundedVec of bytes in big-endian order. Arbitrary Field arrays are\n/// not allowed: this is assumed to be an array obtained via `bytes_to_fields`, i.e. one that actually represents\n/// bytes. To convert a Field array into bytes, use `fields_to_bytes`.\n///\n/// Each input field must contain at most 31 bytes (this is constrained to be so). Each field is converted into 31\n/// big-endian bytes, and the resulting 31-byte chunks are concatenated back together in the order of the original\n/// fields.\npub fn bytes_from_fields<let N: u32>(fields: BoundedVec<Field, N>) -> BoundedVec<u8, N * 31> {\n let mut bytes = BoundedVec::new();\n\n for i in 0..fields.len() {\n let field = fields.get(i);\n\n // We expect that the field contains at most 31 bytes of information.\n field.assert_max_bit_size::<248>();\n\n // Now we can safely convert the field to 31 bytes.\n let field_as_bytes: [u8; 31] = field.to_be_bytes();\n\n for j in 0..31 {\n bytes.push(field_as_bytes[j]);\n }\n }\n\n bytes\n}\n\nmod tests {\n use crate::utils::array::subarray;\n use super::{bytes_from_fields, bytes_to_fields};\n\n #[test]\n unconstrained fn random_bytes_to_fields_and_back(input: [u8; 93]) {\n let fields = bytes_to_fields(input);\n\n // At this point in production, the log flies through the system and we get a BoundedVec on the other end. So\n // we need to convert the field array to a BoundedVec to be able to feed it to the `bytes_from_fields`\n // function.\n let fields_as_bounded_vec = BoundedVec::<_, 6>::from_array(fields);\n\n let bytes_back = bytes_from_fields(fields_as_bounded_vec);\n\n // Compare the original input with the round-tripped result\n assert_eq(bytes_back.len(), input.len());\n assert_eq(subarray(bytes_back.storage(), 0), input);\n }\n\n #[test(should_fail_with = \"N must be a multiple of 31\")]\n unconstrained fn bytes_to_fields_input_length_not_multiple_of_31() {\n // Try to convert 32 bytes (not a multiple of 31) to fields\n let _fields = bytes_to_fields([0; 32]);\n }\n\n}\n"
|
|
4582
4582
|
},
|
|
4583
|
-
"
|
|
4583
|
+
"247": {
|
|
4584
4584
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/aztec-nr/aztec/src/utils/conversion/fields_to_bytes.nr",
|
|
4585
4585
|
"source": "// These functions are used to facilitate the conversion of log plaintext represented as fields into bytes and back.\n//\n// `fields_to_bytes` uses fixed-size arrays since encryption contexts have compile-time size information.\n// `fields_from_bytes` uses BoundedVec for flexibility in unconstrained contexts where sizes are dynamic.\n//\n// Together they provide bidirectional conversion between fields and bytes.\n\n/// Converts an input array of fields into a single array of bytes. Use `fields_from_bytes` to obtain the original\n/// field array. Each field is converted to a 32-byte big-endian array.\n///\n/// For example, if you have a field array [123, 456], it will be converted to a 64-byte array:\n/// [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123, // First field (32 bytes)\n/// 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,200] // Second field (32 bytes)\n///\n/// Since a field is ~254 bits, you'll end up with a subtle 2-bit \"gap\" at the big end, every 32 bytes. Be careful that\n/// such a gap doesn't leak information! This could happen if you for example expected the output to be\n/// indistinguishable from random bytes.\npub fn fields_to_bytes<let N: u32>(fields: [Field; N]) -> [u8; 32 * N] {\n let mut bytes = [0; 32 * N];\n\n for i in 0..N {\n let field_as_bytes: [u8; 32] = fields[i].to_be_bytes();\n\n for j in 0..32 {\n bytes[i * 32 + j] = field_as_bytes[j];\n }\n }\n\n bytes\n}\n\n/// Converts an input BoundedVec of bytes into a BoundedVec of fields. Arbitrary byte arrays are not allowed: this is\n/// assumed to be an array obtained via `fields_to_bytes`, i.e. one that actually represents fields. To convert a byte\n/// array into Fields, use `bytes_to_fields`.\n///\n/// The input bytes are chunked into chunks of 32 bytes. Each 32-byte chunk is viewed as big-endian, and is converted\n/// into a Field. For example, [1, 10, 3, ..., 0] (32 bytes) is encoded as [1 * 256^31 + 10 * 256^30 + 3 * 256^29 + ...\n/// + 0] Note 1: N must be a multiple of 32 bytes Note 2: The max value check code was taken from\n/// std::field::to_be_bytes function.\npub fn fields_from_bytes<let N: u32>(bytes: BoundedVec<u8, N>) -> BoundedVec<Field, N / 32> {\n // Assert that input length is a multiple of 32\n assert(bytes.len() % 32 == 0, \"Input length must be a multiple of 32\");\n\n let mut fields = BoundedVec::new();\n\n let p = std::field::modulus_be_bytes();\n\n // Since input length is a multiple of 32, we can simply process all chunks fully\n for i in 0..bytes.len() / 32 {\n let mut field = 0;\n\n // Process each byte in the 32-byte chunk\n let mut ok = false;\n\n for j in 0..32 {\n let next_byte = bytes.get(i * 32 + j);\n field = field * 256 + next_byte as Field;\n\n if !ok {\n if next_byte != p[j] {\n assert(next_byte < p[j], \"Value does not fit in field\");\n ok = true;\n }\n }\n }\n assert(ok, \"Value does not fit in field\");\n\n fields.push(field);\n }\n\n fields\n}\n\nmod tests {\n use crate::utils::array::subarray;\n use super::{fields_from_bytes, fields_to_bytes};\n\n #[test]\n unconstrained fn random_fields_to_bytes_and_back(input: [Field; 3]) {\n // Convert to bytes\n let bytes = fields_to_bytes(input);\n\n // At this point in production, the log flies through the system and we get a BoundedVec on the other end. So\n // we need to convert the field array to a BoundedVec to be able to feed it to the `fields_from_bytes`\n // function. 113 is an arbitrary max length that is larger than the input length of 96.\n let bytes_as_bounded_vec = BoundedVec::<_, 113>::from_array(bytes);\n\n // Convert back to fields\n let fields_back = fields_from_bytes(bytes_as_bounded_vec);\n\n // Compare the original input with the round-tripped result\n assert_eq(fields_back.len(), input.len());\n assert_eq(subarray(fields_back.storage(), 0), input);\n }\n\n #[test(should_fail_with = \"Input length must be a multiple of 32\")]\n unconstrained fn to_fields_assert() {\n // 143 is an arbitrary max length that is larger than 33\n let input = BoundedVec::<_, 143>::from_array([\n 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,\n 30, 31, 32, 33,\n ]);\n\n // This should fail since 33 is not a multiple of 32\n let _fields = fields_from_bytes(input);\n }\n\n #[test]\n unconstrained fn fields_from_bytes_max_value() {\n let max_field_as_bytes: [u8; 32] = (-1).to_be_bytes();\n let input = BoundedVec::<_, 32>::from_array(max_field_as_bytes);\n\n let fields = fields_from_bytes(input);\n\n // The result should be a largest value storable in a field (-1 since we are modulo-ing)\n assert_eq(fields.get(0), -1);\n }\n\n // In this test we verify that overflow check works by taking the max allowed value, bumping a random byte and then\n // feeding it to `fields_from_bytes` as input.\n #[test(should_fail_with = \"Value does not fit in field\")]\n unconstrained fn fields_from_bytes_overflow(random_value: u8) {\n let index_of_byte_to_bump = random_value % 32;\n\n // Obtain the byte representation of the maximum field value\n let max_field_value_as_bytes: [u8; 32] = (-1).to_be_bytes();\n\n let byte_to_bump = max_field_value_as_bytes[index_of_byte_to_bump as u32];\n\n // Skip test execution if the selected byte is already at maximum value (255). This is acceptable since we are\n // using fuzz testing to generate many test cases.\n if byte_to_bump != 255 {\n let mut input = BoundedVec::<_, 32>::from_array(max_field_value_as_bytes);\n\n // Increment the selected byte to exceed the field's maximum value\n input.set(index_of_byte_to_bump as u32, byte_to_bump + 1);\n\n // Attempt the conversion, which should fail due to the value exceeding the field's capacity\n let _fields = fields_from_bytes(input);\n }\n }\n\n}\n"
|
|
4586
4586
|
},
|
|
4587
|
-
"
|
|
4587
|
+
"250": {
|
|
4588
4588
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/aztec-nr/aztec/src/utils/point.nr",
|
|
4589
4589
|
"source": "use crate::protocol::{point::Point, utils::field::sqrt};\n\n// I am storing the modulus minus 1 divided by 2 here because full modulus would throw \"String literal too large\" error\n// Full modulus is 21888242871839275222246405745257275088548364400416034343698204186575808495617\nglobal BN254_FR_MODULUS_DIV_2: Field = 10944121435919637611123202872628637544274182200208017171849102093287904247808;\n\n/// Returns: true if p.y <= MOD_DIV_2, else false.\npub fn get_sign_of_point(p: Point) -> bool {\n // We store only a \"sign\" of the y coordinate because the rest can be derived from the x coordinate. To get the\n // sign we check if the y coordinate is less or equal than the field's modulus minus 1 divided by 2. Ideally we'd\n // do `y <= MOD_DIV_2`, but there's no `lte` function, so instead we do `!(y > MOD_DIV_2)`, which is equivalent,\n // and then rewrite that as `!(MOD_DIV_2 < y)`, since we also have no `gt` function.\n !BN254_FR_MODULUS_DIV_2.lt(p.y)\n}\n\n/// Returns a `Point` in the Grumpkin curve given its x coordinate.\n///\n/// Because not all values in the field are valid x coordinates of points in the curve (i.e. there is no corresponding\n/// y value in the field that satisfies the curve equation), it may not be possible to reconstruct a `Point`.\n/// `Option::none()` is returned in such cases.\npub fn point_from_x_coord(x: Field) -> Option<Point> {\n // y ^ 2 = x ^ 3 - 17\n let rhs = x * x * x - 17;\n sqrt(rhs).map(|y| Point { x, y, is_infinite: false })\n}\n\n/// Returns a `Point` in the Grumpkin curve given its x coordinate and sign for the y coordinate.\n///\n/// Because not all values in the field are valid x coordinates of points in the curve (i.e. there is no corresponding\n/// y value in the field that satisfies the curve equation), it may not be possible to reconstruct a `Point`.\n/// `Option::none()` is returned in such cases.\n///\n/// @param x - The x coordinate of the point @param sign - The \"sign\" of the y coordinate - determines whether y <=\n/// (Fr.MODULUS - 1) / 2\npub fn point_from_x_coord_and_sign(x: Field, sign: bool) -> Option<Point> {\n // y ^ 2 = x ^ 3 - 17\n let rhs = x * x * x - 17;\n\n sqrt(rhs).map(|y| {\n // If there is a square root, we need to ensure it has the correct \"sign\"\n let y_is_positive = !BN254_FR_MODULUS_DIV_2.lt(y);\n let final_y = if y_is_positive == sign { y } else { -y };\n Point { x, y: final_y, is_infinite: false }\n })\n}\n\nmod test {\n use crate::protocol::point::Point;\n use crate::utils::point::{\n BN254_FR_MODULUS_DIV_2, get_sign_of_point, point_from_x_coord, point_from_x_coord_and_sign,\n };\n\n #[test]\n unconstrained fn test_point_from_x_coord_and_sign() {\n // Test positive y coordinate\n let x = 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73;\n let sign = true;\n let p = point_from_x_coord_and_sign(x, sign).unwrap();\n\n assert_eq(p.x, x);\n assert_eq(p.y, 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a);\n assert_eq(p.is_infinite, false);\n\n // Test negative y coordinate\n let x2 = 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5;\n let sign2 = false;\n let p2 = point_from_x_coord_and_sign(x2, sign2).unwrap();\n\n assert_eq(p2.x, x2);\n assert_eq(p2.y, 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0);\n assert_eq(p2.is_infinite, false);\n }\n\n #[test]\n unconstrained fn test_point_from_x_coord_valid() {\n // x = 8 is a known quadratic residue - should give a valid point\n let result = point_from_x_coord(Field::from(8));\n assert(result.is_some());\n\n let point = result.unwrap();\n assert_eq(point.x, Field::from(8));\n // Check curve equation y^2 = x^3 - 17\n assert_eq(point.y * point.y, point.x * point.x * point.x - 17);\n }\n\n #[test]\n unconstrained fn test_point_from_x_coord_invalid() {\n // x = 3 is a non-residue for this curve - should give None\n let x = Field::from(3);\n let maybe_point = point_from_x_coord(x);\n assert(maybe_point.is_none());\n }\n\n #[test]\n unconstrained fn test_both_roots_satisfy_curve() {\n // Derive a point from x = 8 (known to be valid from test_point_from_x_coord_valid)\n let x: Field = 8;\n let point = point_from_x_coord(x).unwrap();\n\n // Check y satisfies curve equation\n assert_eq(point.y * point.y, x * x * x - 17);\n\n // Check -y also satisfies curve equation\n let neg_y = 0 - point.y;\n assert_eq(neg_y * neg_y, x * x * x - 17);\n\n // Verify they are different (unless y = 0)\n assert(point.y != neg_y);\n }\n\n #[test]\n unconstrained fn test_point_from_x_coord_and_sign_invalid() {\n // x = 3 has no valid point on the curve (from test_point_from_x_coord_invalid)\n let x = Field::from(3);\n let result_positive = point_from_x_coord_and_sign(x, true);\n let result_negative = point_from_x_coord_and_sign(x, false);\n\n assert(result_positive.is_none());\n assert(result_negative.is_none());\n }\n\n #[test]\n unconstrained fn test_get_sign_of_point() {\n // Derive a point from x = 8, then test both possible y values\n let point = point_from_x_coord(8).unwrap();\n let neg_point = Point { x: point.x, y: 0 - point.y, is_infinite: false };\n\n // One should be \"positive\" (y <= MOD_DIV_2) and one \"negative\"\n let sign1 = get_sign_of_point(point);\n let sign2 = get_sign_of_point(neg_point);\n assert(sign1 != sign2);\n\n // y = 0 should return true (0 <= MOD_DIV_2)\n let zero_y_point = Point { x: 0, y: 0, is_infinite: false };\n assert(get_sign_of_point(zero_y_point) == true);\n\n // y = MOD_DIV_2 should return true (exactly at boundary)\n let boundary_point = Point { x: 0, y: BN254_FR_MODULUS_DIV_2, is_infinite: false };\n assert(get_sign_of_point(boundary_point) == true);\n\n // y = MOD_DIV_2 + 1 should return false (just over boundary)\n let over_boundary_point = Point { x: 0, y: BN254_FR_MODULUS_DIV_2 + 1, is_infinite: false };\n assert(get_sign_of_point(over_boundary_point) == false);\n }\n\n #[test]\n unconstrained fn test_point_from_x_coord_zero() {\n // x = 0: y^2 = 0^3 - 17 = -17, which is not a quadratic residue in BN254 scalar field\n let result = point_from_x_coord(0);\n assert(result.is_none());\n }\n\n #[test]\n unconstrained fn test_bn254_fr_modulus_div_2() {\n // Verify that BN254_FR_MODULUS_DIV_2 == (p - 1) / 2 This means: 2 * BN254_FR_MODULUS_DIV_2 + 1 == p == 0 (in\n // the field)\n assert_eq(2 * BN254_FR_MODULUS_DIV_2 + 1, 0);\n }\n\n}\n"
|
|
4590
4590
|
},
|
|
4591
|
-
"
|
|
4591
|
+
"261": {
|
|
4592
4592
|
"path": "/home/aztec-dev/nargo/github.com/noir-lang/poseidon/v0.2.3/src/poseidon2.nr",
|
|
4593
4593
|
"source": "use std::default::Default;\nuse std::hash::Hasher;\n\ncomptime global 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"
|
|
4594
4594
|
},
|
|
@@ -4596,47 +4596,47 @@
|
|
|
4596
4596
|
"path": "std/array/mod.nr",
|
|
4597
4597
|
"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 mut 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 mut 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 mut 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 mut 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"
|
|
4598
4598
|
},
|
|
4599
|
-
"
|
|
4599
|
+
"319": {
|
|
4600
4600
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr",
|
|
4601
4601
|
"source": "use crate::{\n address::{\n partial_address::PartialAddress, salted_initialization_hash::SaltedInitializationHash,\n },\n constants::{AZTEC_ADDRESS_LENGTH, DOM_SEP__CONTRACT_ADDRESS_V1, MAX_FIELD_VALUE},\n contract_class_id::ContractClassId,\n hash::poseidon2_hash_with_separator,\n public_keys::{IvpkM, NpkM, OvpkM, PublicKeys, ToPoint, TpkM},\n traits::{Deserialize, Empty, FromField, Packable, Serialize, ToField},\n utils::field::sqrt,\n};\n\n// We do below because `use crate::point::Point;` does not work\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\n\nuse crate::public_keys::AddressPoint;\nuse std::{\n embedded_curve_ops::{EmbeddedCurveScalar, fixed_base_scalar_mul as derive_public_key},\n ops::Add,\n};\nuse std::meta::derive;\n\n// Aztec address\n#[derive(Deserialize, Eq, Packable, Serialize)]\npub struct AztecAddress {\n pub inner: Field,\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self { inner: 0 }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n /// Returns an address's `AddressPoint`, which can be used to create shared secrets with the owner\n /// of the address. If the address is invalid (i.e. it is not a properly derived Aztec address), then this\n /// returns `Option::none()`, and no shared secrets can be created.\n pub fn to_address_point(self) -> Option<AddressPoint> {\n // We compute the address point by taking our address as x, and then solving for y in the\n // equation which defines the grumpkin curve:\n // y^2 = x^3 - 17; x = address\n let x = self.inner;\n let y_squared = x * x * x - 17;\n\n // An invalid AztecAddress is one for which no y coordinate satisfies the curve equation, which we'll\n // identify by proving that the square root of y_squared does not exist.\n sqrt(y_squared).map(|y| {\n // If we get a negative y coordinate (y > (r - 1) / 2), we swap it to the\n // positive one (where y <= (r - 1) / 2) by negating it.\n let final_y = if Self::is_positive(y) { y } else { -y };\n\n AddressPoint { inner: Point { x: self.inner, y: final_y, is_infinite: false } }\n })\n }\n\n /// Determines whether a y-coordinate is in the lower (positive) or upper (negative) \"half\" of the field.\n /// I.e.\n /// y <= (r - 1)/2 => positive.\n /// y > (r - 1)/2 => negative.\n /// An AddressPoint always uses the \"positive\" y.\n fn is_positive(y: Field) -> bool {\n // Note: The field modulus r is MAX_FIELD_VALUE + 1.\n let MID = MAX_FIELD_VALUE / 2; // (r - 1) / 2\n let MID_PLUS_1 = MID + 1; // (r - 1)/2 + 1\n // Note: y <= m implies y < m + 1.\n y.lt(MID_PLUS_1)\n }\n\n pub fn compute(public_keys: PublicKeys, partial_address: PartialAddress) -> AztecAddress {\n //\n // address = address_point.x\n // |\n // address_point = pre_address * G + Ivpk_m (always choose \"positive\" y-coord)\n // | ^\n // | |.....................\n // pre_address .\n // / \\ .\n // / \\ .\n // partial_address public_keys_hash .\n // / \\ / / \\ \\ .\n // / \\ Npk_m Ivpk_m Ovpk_m Tpk_m .\n // contract_class_id \\ |...................\n // / | \\ \\\n // artifact_hash | public_bytecode_commitment salted_initialization_hash\n // | / / \\\n // private_function_tree_root deployer_address salt initialization_hash\n // / \\ / \\\n // ... ... constructor_fn_selector constructor_args_hash\n // / \\\n // / \\ / \\\n // leaf leaf leaf leaf\n // ^\n // |\n // |---h(function_selector, vk_hash)\n // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n // Each of these represents a private function of the contract.\n\n let public_keys_hash = public_keys.hash();\n\n let pre_address = poseidon2_hash_with_separator(\n [public_keys_hash.to_field(), partial_address.to_field()],\n DOM_SEP__CONTRACT_ADDRESS_V1,\n );\n\n // Note: `.add()` will fail within the blackbox fn if either of the points are not on the curve. (See tests below).\n let address_point = derive_public_key(EmbeddedCurveScalar::from_field(pre_address)).add(\n public_keys.ivpk_m.to_point(),\n );\n\n // Note that our address is only the x-coordinate of the full address_point. This is okay because when people want to encrypt something and send it to us\n // they can recover our full point using the x-coordinate (our address itself). To do this, they recompute the y-coordinate according to the equation y^2 = x^3 - 17.\n // When they do this, they may get a positive y-coordinate (a value that is less than or equal to MAX_FIELD_VALUE / 2) or\n // a negative y-coordinate (a value that is more than MAX_FIELD_VALUE), and we cannot dictate which one they get and hence the recovered point may sometimes be different than the one\n // our secret can decrypt. Regardless though, they should and will always encrypt using point with the positive y-coordinate by convention.\n // This ensures that everyone encrypts to the same point given an arbitrary x-coordinate (address). This is allowed because even though our original point may not have a positive y-coordinate,\n // with our original secret, we will be able to derive the secret to the point with the flipped (and now positive) y-coordinate that everyone encrypts to.\n AztecAddress::from_field(address_point.x)\n }\n\n pub fn compute_from_class_id(\n contract_class_id: ContractClassId,\n salted_initialization_hash: SaltedInitializationHash,\n public_keys: PublicKeys,\n ) -> Self {\n let partial_address = PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n salted_initialization_hash,\n );\n\n AztecAddress::compute(public_keys, partial_address)\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n\n#[test]\nfn check_max_field_value() {\n // Check that it is indeed r-1.\n assert_eq(MAX_FIELD_VALUE + 1, 0);\n}\n\n#[test]\nfn check_is_positive() {\n assert(AztecAddress::is_positive(0));\n assert(AztecAddress::is_positive(1));\n assert(!AztecAddress::is_positive(-1));\n assert(AztecAddress::is_positive(MAX_FIELD_VALUE / 2));\n assert(!AztecAddress::is_positive((MAX_FIELD_VALUE / 2) + 1));\n}\n\n// Gives us confidence that we don't need to manually check that the input public keys need to be on the curve for `add`,\n// because the blackbox function does this check for us.\n#[test(should_fail_with = \"is not on curve\")]\nfn check_embedded_curve_point_add() {\n // Choose a point not on the curve:\n let p1 = Point { x: 1, y: 1, is_infinite: false };\n let p2 = Point::generator();\n let _ = p1 + p2;\n}\n\n// Gives us confidence that we don't need to manually check that the input public keys need to be on the curve for `add`,\n// because the blackbox function does this check for us.\n#[test(should_fail_with = \"is not on curve\")]\nfn check_embedded_curve_point_add_2() {\n // Choose a point not on the curve in the 2nd position.\n let p1 = Point::generator();\n let p2 = Point { x: 1, y: 1, is_infinite: false };\n let _ = p1 + p2;\n}\n\n#[test]\nfn compute_address_from_partial_and_pub_keys() {\n let public_keys = PublicKeys {\n npk_m: NpkM {\n inner: Point {\n x: 0x22f7fcddfa3ce3e8f0cc8e82d7b94cdd740afa3e77f8e4a63ea78a239432dcab,\n y: 0x0471657de2b6216ade6c506d28fbc22ba8b8ed95c871ad9f3e3984e90d9723a7,\n is_infinite: false,\n },\n },\n ivpk_m: IvpkM {\n inner: Point {\n x: 0x111223493147f6785514b1c195bb37a2589f22a6596d30bb2bb145fdc9ca8f1e,\n y: 0x273bbffd678edce8fe30e0deafc4f66d58357c06fd4a820285294b9746c3be95,\n is_infinite: false,\n },\n },\n ovpk_m: OvpkM {\n inner: Point {\n x: 0x09115c96e962322ffed6522f57194627136b8d03ac7469109707f5e44190c484,\n y: 0x0c49773308a13d740a7f0d4f0e6163b02c5a408b6f965856b6a491002d073d5b,\n is_infinite: false,\n },\n },\n tpk_m: TpkM {\n inner: Point {\n x: 0x00d3d81beb009873eb7116327cf47c612d5758ef083d4fda78e9b63980b2a762,\n y: 0x2f567d22d2b02fe1f4ad42db9d58a36afd1983e7e2909d1cab61cafedad6193a,\n is_infinite: false,\n },\n },\n };\n\n let partial_address = PartialAddress::from_field(\n 0x0a7c585381b10f4666044266a02405bf6e01fa564c8517d4ad5823493abd31de,\n );\n\n let address = AztecAddress::compute(public_keys, partial_address);\n\n // The following value was generated by `derivation.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let expected_computed_address_from_partial_and_pubkeys =\n 0x105626366aab4a53d471701395a4e0e04af65ad1fad8483c74de338f397f226c;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkeys);\n}\n\n#[test]\nfn compute_preaddress_from_partial_and_pub_keys() {\n let pre_address = poseidon2_hash_with_separator([1, 2], DOM_SEP__CONTRACT_ADDRESS_V1);\n let expected_computed_preaddress_from_partial_and_pubkey =\n 0x0b661dee14f3871040a5938dbc5c1a7977aede0b64cff6b7faa168d11a288d75;\n assert(pre_address == expected_computed_preaddress_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n // We use the AZTEC_ADDRESS_LENGTH constant to ensure that there is a match between the derived trait\n // implementation and the constant.\n let serialized: [Field; AZTEC_ADDRESS_LENGTH] = address.serialize();\n let deserialized = AztecAddress::deserialize(serialized);\n assert_eq(address, deserialized);\n}\n\n#[test]\nfn to_address_point_valid() {\n // x = 8 where x^3 - 17 = 512 - 17 = 495, which is a residue in this field\n let address = AztecAddress { inner: 8 };\n let maybe_point = address.to_address_point();\n assert(maybe_point.is_some());\n\n let point = maybe_point.unwrap().inner;\n // check that x is preserved\n assert_eq(point.x, Field::from(8));\n\n // check that the curve equation holds: y^2 == x^3 - 17\n assert_eq(point.y * point.y, point.x * point.x * point.x - 17);\n}\n\n#[test]\nunconstrained fn to_address_point_invalid() {\n // x = 3 where x^3 - 17 = 27 - 17 = 10, which is a non-residue in this field\n let address = AztecAddress { inner: 3 }; //\n let maybe_point = address.to_address_point();\n assert(maybe_point.is_none());\n}\n"
|
|
4602
4602
|
},
|
|
4603
|
-
"
|
|
4603
|
+
"340": {
|
|
4604
4604
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr",
|
|
4605
4605
|
"source": "// TODO: Expose other wrapped functions than debug (info, warn)\n// ['silent', 'fatal', 'error', 'warn', 'info', 'verbose', 'debug', 'trace']\n\npub global SILENT_LOG_LEVEL: u8 = 0;\npub global FATAL_LOG_LEVEL: u8 = 1;\npub global ERROR_LOG_LEVEL: u8 = 2;\npub global WARN_LOG_LEVEL: u8 = 3;\npub global INFO_LOG_LEVEL: u8 = 4;\npub global VERBOSE_LOG_LEVEL: u8 = 5;\npub global DEBUG_LOG_LEVEL: u8 = 6;\npub global TRACE_LOG_LEVEL: u8 = 7;\n\n/// Utility function to console.log data in the acir simulator.\n/// Example:\n/// debug_log(\"blah blah this is a debug string\");\npub fn debug_log<let N: u32>(msg: str<N>) {\n debug_log_format(msg, []);\n}\n\n/// Same as debug_log, but allows to customize the log level.\n/// Consider changing just to 'log'\npub fn debug_log_with_level<let N: u32>(log_level: u8, msg: str<N>) {\n debug_log_format_with_level(log_level, msg, []);\n}\n\n/// Utility function to console.log data in the acir simulator. This variant receives a format string in which the\n/// `${k}` tokens will be replaced with the k-eth value in the `args` array.\n/// Examples:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\n/// debug_log_format(\"whole array: {}\", [e1, e2, e3, e4]);\npub fn debug_log_format<let M: u32, let N: u32>(msg: str<M>, args: [Field; N]) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe { debug_log_array_oracle_wrapper(DEBUG_LOG_LEVEL, msg, args) };\n}\n\n/// Same as debug_log_format, but allows to customize the log level.\n/// Consider changing just to 'log_format'\npub fn debug_log_format_with_level<let M: u32, let N: u32>(\n log_level: u8,\n msg: str<M>,\n args: [Field; N],\n) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe { debug_log_array_oracle_wrapper(log_level, msg, args) };\n}\n\n/// Utility function to console.log data in the acir simulator. This variant receives a format string in which the\n/// `${k}` tokens will be replaced with the k-eth value in the `args` slice.\n/// Examples:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\n/// debug_log_format(\"whole slice: {}\", [e1, e2, e3, e4]);\npub fn debug_log_format_slice<let M: u32>(log_level: u8, msg: str<M>, args: [Field]) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe { debug_log_slice_oracle_wrapper(log_level, msg, args) };\n}\n\n// We provide two versions of the debug log oracle: one that takes args as a slice and another one that takes args as an array.\n// We do this since conversion from array to slice generates overhead in public functions, since opcodes need to be emitted for the conversion.\n// By exposing the two flavors, we avoid conversions since the AVM is able to handle both arrays an slices in this oracle.\n\nunconstrained fn debug_log_slice_oracle_wrapper<let M: u32>(\n log_level: u8,\n msg: str<M>,\n args: [Field],\n) {\n debug_log_slice_oracle(log_level, msg, args);\n}\n\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n#[oracle(utilityDebugLog)]\nunconstrained fn debug_log_slice_oracle<let M: u32>(log_level: u8, msg: str<M>, args: [Field]) {}\n\nunconstrained fn debug_log_array_oracle_wrapper<let M: u32, let N: u32>(\n log_level: u8,\n msg: str<M>,\n args: [Field; N],\n) {\n debug_log_array_oracle(log_level, msg, N, args);\n}\n\n#[oracle(utilityDebugLog)]\nunconstrained fn debug_log_array_oracle<let M: u32, let N: u32>(\n log_level: u8,\n msg: str<M>,\n length: u32,\n args: [Field; N],\n) {}\n"
|
|
4606
4606
|
},
|
|
4607
|
-
"
|
|
4607
|
+
"351": {
|
|
4608
4608
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr",
|
|
4609
4609
|
"source": "mod poseidon2_chunks;\n\nuse crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector,\n note_hash::NoteHash,\n nullifier::Nullifier,\n private_log::{PrivateLog, PrivateLogData},\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\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_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_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_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_siloed_note_hash(\n siloed_note_hash: Field,\n first_nullifier: Field,\n note_index_in_tx: u32,\n) -> Field {\n if siloed_note_hash == 0 {\n 0\n } else {\n compute_note_nonce_and_unique_note_hash(siloed_note_hash, first_nullifier, note_index_in_tx)\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 silo_note_hash(note_hash: Scoped<Counted<NoteHash>>) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_note_hash(note_hash.contract_address, note_hash.innermost())\n }\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 silo_nullifier(nullifier: Scoped<Counted<Nullifier>>) -> Field {\n let value = nullifier.innermost().value;\n // Q: shouldn't we be checking whether the _whole_ scoped, counted, nullifier struct is empty?\n // A: We don't have to. The init and inner circuits add a contract address only to non-empty nullifiers.\n // So we know we should silo it if the contract address is not empty.\n if nullifier.contract_address.is_zero() {\n // Return `.value` instead of 0, because already-siloed nullifiers also have a zero\n // contract_address field, and we of course want to return that already-siloed nullifier\n // (we just don't want to silo it a second time).\n value\n } else {\n compute_siloed_nullifier(nullifier.contract_address, value)\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 silo_private_log(private_log: Scoped<Counted<PrivateLogData>>) -> PrivateLog {\n let log = private_log.innermost().log;\n if private_log.contract_address.is_zero() {\n log\n } else {\n let mut fields = log.fields;\n fields[0] = compute_siloed_private_log_first_field(private_log.contract_address, fields[0]);\n PrivateLog::new(fields, log.length)\n }\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 app_secret_key_domain_separator: Field,\n) -> Field {\n poseidon2_hash_with_separator(\n [master_secret_key.hi, master_secret_key.lo, app_address.to_field()],\n app_secret_key_domain_separator,\n )\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n let contract_address_bytes: [u8; 32] = contract_address.to_field().to_be_bytes();\n let recipient_bytes: [u8; 20] = recipient.to_be_bytes();\n let content_bytes: [u8; 32] = 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\npub fn silo_l2_to_l1_message(\n msg: Scoped<L2ToL1Message>,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.inner.recipient,\n msg.inner.content,\n rollup_version_id,\n chain_id,\n )\n }\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// NB the below is the same as poseidon::poseidon2::Poseidon2::hash(), but replacing a range check with a bit check,\n// and absorbing in chunks of 3 below.\n#[no_predicates]\npub fn poseidon2_cheaper_variable_hash<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 poseidon_chunks_matches_fixed() {\n let in_len = 501;\n let mut input: [Field; 4096] = [0; 4096];\n let mut fixed_input = [3; 501];\n assert(in_len == fixed_input.len()); // sanity check\n for i in 0..in_len {\n input[i] = 3;\n }\n let sub_chunk_hash = poseidon2_hash_subarray(input, in_len);\n let fixed_len_hash = poseidon::poseidon2::Poseidon2::hash(fixed_input, fixed_input.len());\n assert(sub_chunk_hash == fixed_len_hash);\n}\n\n#[test]\nfn poseidon_chunks_matches_variable() {\n let in_len = 501;\n let mut input: [Field; 4096] = [0; 4096];\n for i in 0..in_len {\n input[i] = 3;\n }\n let variable_chunk_hash = poseidon2_cheaper_variable_hash(input, in_len);\n let variable_len_hash = poseidon::poseidon2::Poseidon2::hash(input, in_len);\n assert(variable_chunk_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 compute_l2_l1_hash() {\n // All zeroes\n let hash_result =\n compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0x3b18c58c739716e76429634a61375c45b3b5cd470c22ab6d3e14cee23dd992);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(\n AztecAddress::from_field(1),\n EthAddress::from_field(3),\n 5,\n 2,\n 4,\n );\n assert(hash_result == 0xaab2a5828156782b12a1dc6f336e2bc627eb1b9514b02d511f66296990c050);\n}\n\n#[test]\nfn silo_l2_to_l1_message_matches_typescript() {\n let version = 4;\n let chainId = 5;\n\n let hash = silo_l2_to_l1_message(\n L2ToL1Message { recipient: EthAddress::from_field(1), content: 2 }.scope(\n AztecAddress::from_field(3),\n ),\n version,\n chainId,\n );\n\n // The following value was generated by `yarn-project/stdlib/src/hash/hash.test.ts`\n let hash_from_typescript = 0x0081edf209e087ad31b3fd24263698723d57190bd1d6e9fe056fc0c0a68ee661;\n\n assert_eq(hash, hash_from_typescript);\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"
|
|
4610
4610
|
},
|
|
4611
|
-
"
|
|
4611
|
+
"367": {
|
|
4612
4612
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/poseidon2.nr",
|
|
4613
4613
|
"source": "use crate::constants::TWO_POW_64;\nuse crate::traits::{Deserialize, Serialize};\nuse std::meta::derive;\n// NB: This is a clone of noir/noir-repo/noir_stdlib/src/hash/poseidon2.nr\n// It exists as we sometimes need to perform custom absorption, but the stdlib version\n// has a private absorb() method (it's also designed to just be a hasher)\n// Can be removed when standalone noir poseidon lib exists: See noir#6679\n\ncomptime global RATE: u32 = 3;\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct Poseidon2Sponge {\n pub cache: [Field; 3],\n pub state: [Field; 4],\n pub cache_size: u32,\n pub squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2Sponge {\n #[no_predicates]\n pub fn hash<let N: u32>(input: [Field; N], message_size: u32) -> Field {\n Poseidon2Sponge::hash_internal(input, message_size, message_size != N)\n }\n\n pub(crate) fn new(iv: Field) -> Poseidon2Sponge {\n let mut result =\n Poseidon2Sponge { 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 for i in 0..RATE {\n // We effectively zero-pad the cache by only adding to the state\n // cache that is less than the specified `cache_size`\n if i < self.cache_size {\n self.state[i] += self.cache[i];\n }\n }\n self.state = std::hash::poseidon2_permutation(self.state, 4);\n }\n\n pub 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 pub 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>(\n input: [Field; N],\n in_len: u32,\n is_variable_length: bool,\n ) -> Field {\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n sponge.squeeze()\n }\n}\n"
|
|
4614
4614
|
},
|
|
4615
|
-
"
|
|
4615
|
+
"374": {
|
|
4616
4616
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/public_keys.nr",
|
|
4617
4617
|
"source": "use crate::{\n address::public_keys_hash::PublicKeysHash,\n constants::{\n DEFAULT_IVPK_M_X, DEFAULT_IVPK_M_Y, DEFAULT_NPK_M_X, DEFAULT_NPK_M_Y, DEFAULT_OVPK_M_X,\n DEFAULT_OVPK_M_Y, DEFAULT_TPK_M_X, DEFAULT_TPK_M_Y, DOM_SEP__PUBLIC_KEYS_HASH,\n },\n hash::poseidon2_hash_with_separator,\n traits::{Deserialize, Hash, Serialize},\n};\n\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse std::{default::Default, meta::derive};\n\npub trait ToPoint {\n fn to_point(self) -> Point;\n}\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct NpkM {\n pub inner: Point,\n}\n\nimpl ToPoint for NpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\n// Note: If we store npk_m_hash directly we can remove this trait implementation. See #8091\nimpl Hash for NpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct IvpkM {\n pub inner: Point,\n}\n\nimpl ToPoint for IvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct OvpkM {\n pub inner: Point,\n}\n\nimpl Hash for OvpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\nimpl ToPoint for OvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct TpkM {\n pub inner: Point,\n}\n\nimpl ToPoint for TpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct PublicKeys {\n pub npk_m: NpkM,\n pub ivpk_m: IvpkM,\n pub ovpk_m: OvpkM,\n pub tpk_m: TpkM,\n}\n\nimpl Default for PublicKeys {\n fn default() -> Self {\n PublicKeys {\n npk_m: NpkM {\n inner: Point { x: DEFAULT_NPK_M_X, y: DEFAULT_NPK_M_Y, is_infinite: false },\n },\n ivpk_m: IvpkM {\n inner: Point { x: DEFAULT_IVPK_M_X, y: DEFAULT_IVPK_M_Y, is_infinite: false },\n },\n ovpk_m: OvpkM {\n inner: Point { x: DEFAULT_OVPK_M_X, y: DEFAULT_OVPK_M_Y, is_infinite: false },\n },\n tpk_m: TpkM {\n inner: Point { x: DEFAULT_TPK_M_X, y: DEFAULT_TPK_M_Y, is_infinite: false },\n },\n }\n }\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(poseidon2_hash_with_separator(\n self.serialize(),\n DOM_SEP__PUBLIC_KEYS_HASH as Field,\n ))\n }\n}\n\npub struct AddressPoint {\n pub inner: Point,\n}\n\nimpl ToPoint for AddressPoint {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nmod test {\n use crate::{\n point::POINT_LENGTH,\n public_keys::{IvpkM, NpkM, OvpkM, PublicKeys, TpkM},\n traits::{Deserialize, Serialize},\n };\n use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\n\n #[test]\n unconstrained fn compute_public_keys_hash() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } },\n };\n\n let actual = keys.hash();\n\n // The following value was generated by `public_keys.test.ts`.\n let expected_public_keys_hash =\n 0x029d92319623fe2e5804a64b35d13e1c4881045371c41f36329b44dfc237d232;\n\n assert(actual.to_field() == expected_public_keys_hash);\n }\n\n #[test]\n unconstrained fn compute_default_hash() {\n let keys = PublicKeys::default();\n\n let actual = keys.hash();\n\n // The following value was generated by `public_keys.test.ts`.\n let test_data_default_hash =\n 0x1d631c5b105baebd0f480f04e79aef2a800d6cc5e3814b92cec83034cf9b959e;\n\n assert(actual.to_field() == test_data_default_hash);\n }\n\n #[test]\n unconstrained fn serde() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } },\n };\n\n // We use the PUBLIC_KEYS_LENGTH constant to ensure that there is a match between the derived trait\n let serialized: [Field; POINT_LENGTH * 4] = keys.serialize();\n let deserialized = PublicKeys::deserialize(serialized);\n\n assert_eq(keys, deserialized);\n }\n}\n"
|
|
4618
4618
|
},
|
|
4619
|
-
"
|
|
4619
|
+
"395": {
|
|
4620
4620
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr",
|
|
4621
4621
|
"source": "use crate::meta::derive_packable;\nuse crate::utils::field::field_from_bytes;\n\npub use serde::serialization::{Deserialize, Serialize};\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic\n// if a value can actually be zero. In a future refactor, we can\n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\npub trait Empty: Eq {\n fn empty() -> Self;\n\n fn is_empty(self) -> bool {\n self.eq(Self::empty())\n }\n\n // Requires this Noir fix: https://github.com/noir-lang/noir/issues/9002\n // fn assert_not_empty<let U: u32>(self, msg: str<U>) { // This msg version was failing with weird compiler errors.\n // // We provide a default impl but it's likely inefficient.\n // // The reason we include this function is because there's a lot of\n // // opportunity for optimisation on a per-struct basis.\n // // You only need to show one element is not empty to know that the whole thing\n // // is not empty.\n // // If you know an element of your struct which should always be nonempty,\n // // you can write an impl that solely checks that that element is nonempty.\n // assert(!self.is_empty(), msg);\n // }\n\n // This default impl is overwritten by types like arrays, because there's a much\n // more efficient approach.\n fn assert_empty<let S: u32>(self, msg: str<S>) {\n assert(self.is_empty(), msg);\n }\n}\n\nimpl Empty for Field {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\n\nimpl Empty for bool {\n #[inline_always]\n fn empty() -> Self {\n false\n }\n}\n\nimpl Empty for u1 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u8 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u16 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u32 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u64 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u128 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\n\nimpl<T, let N: u32> Empty for [T; N]\nwhere\n T: Empty,\n{\n #[inline_always]\n fn empty() -> Self {\n [T::empty(); N]\n }\n\n fn is_empty(self) -> bool {\n self.all(|elem| elem.is_empty())\n }\n\n fn assert_empty<let S: u32>(self, msg: str<S>) -> () {\n self.for_each(|elem| elem.assert_empty(msg))\n }\n}\n\nimpl<T> Empty for [T]\nwhere\n T: Empty,\n{\n #[inline_always]\n fn empty() -> Self {\n [T::empty()]\n }\n\n fn is_empty(self) -> bool {\n self.all(|elem| elem.is_empty())\n }\n\n fn assert_empty<let S: u32>(self, msg: str<S>) -> () {\n self.for_each(|elem| elem.assert_empty(msg))\n }\n}\nimpl<A, B> Empty for (A, B)\nwhere\n A: Empty,\n B: Empty,\n{\n #[inline_always]\n fn empty() -> Self {\n (A::empty(), B::empty())\n }\n}\n\nimpl<T> Empty for Option<T>\nwhere\n T: Eq,\n{\n #[inline_always]\n fn empty() -> Self {\n Option::none()\n }\n}\n\n// pub fn is_empty<T>(item: T) -> bool\n// where\n// T: Empty,\n// {\n// item.eq(T::empty())\n// }\n\n// pub fn is_empty_array<T, let N: u32>(array: [T; N]) -> bool\n// where\n// T: Empty,\n// {\n// array.all(|elem| is_empty(elem))\n// }\n\n// pub fn assert_empty<T>(item: T) -> ()\n// where\n// T: Empty,\n// {\n// assert(item.eq(T::empty()))\n// }\n\n// pub fn assert_empty_array<T, let N: u32>(array: [T; N]) -> ()\n// where\n// T: Empty,\n// {\n// // A cheaper option than `is_empty_array` for if you don't need to gracefully\n// // handle a bool result.\n// // Avoids the `&` operator of `is_empty_array`'s `.all()` call.\n// for i in 0..N {\n// assert(is_empty(array[i]));\n// }\n// }\n\npub trait Hash {\n fn hash(self) -> Field;\n}\n\npub trait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n #[inline_always]\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u1 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u8 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u16 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u32 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u64 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u128 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl<let N: u32> ToField for str<N> {\n #[inline_always]\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\npub trait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value != 0\n }\n}\nimpl FromField for u1 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u1\n }\n}\nimpl FromField for u8 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u8\n }\n}\nimpl FromField for u16 {\n fn from_field(value: Field) -> Self {\n value as u16\n }\n}\nimpl FromField for u32 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u32\n }\n}\nimpl FromField for u64 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u64\n }\n}\nimpl FromField for u128 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u128\n }\n}\n\n/// Trait for efficiently packing and unpacking Noir types into and from arrays of Fields.\n///\n/// The `Packable` trait allows types to be serialized and deserialized with a focus on minimizing the size of\n/// the resulting Field array. This trait is used when storage efficiency is critical (e.g. when storing data\n/// in the contract's public storage).\n///\n/// # Associated Constants\n/// * `N` - The length of the Field array, known at compile time\n#[derive_via(derive_packable)]\npub trait Packable {\n let N: u32;\n\n /// Packs the current value into a compact array of `Field` elements.\n fn pack(self) -> [Field; N];\n\n /// Unpacks a compact array of `Field` elements into the original value.\n fn unpack(fields: [Field; N]) -> Self;\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"
|
|
4622
4622
|
},
|
|
4623
|
-
"
|
|
4623
|
+
"403": {
|
|
4624
4624
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/utils/field.nr",
|
|
4625
4625
|
"source": "pub fn field_from_bytes<let N: u32>(bytes: [u8; N], big_endian: bool) -> Field {\n assert(bytes.len() < 32, \"field_from_bytes: N must be less than 32\");\n let mut as_field = 0;\n let mut offset = 1;\n for i in 0..N {\n let mut index = i;\n if big_endian {\n index = N - i - 1;\n }\n as_field += (bytes[index] as Field) * offset;\n offset *= 256;\n }\n\n as_field\n}\n\n// Convert a 32 byte array to a field element by truncating the final byte\npub fn field_from_bytes_32_trunc(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..15 {\n // covers bytes 16..30 (31 is truncated and ignored)\n low = low + (bytes32[15 + 15 - i] as Field) * v;\n v = v * 256;\n // covers bytes 0..14\n high = high + (bytes32[14 - i] as Field) * v;\n }\n // covers byte 15\n low = low + (bytes32[15] as Field) * v;\n\n low + high * v\n}\n\n// TODO to radix returns u8, so we cannot use bigger radixes. It'd be ideal to use a radix of the maximum range-constrained integer noir supports\npub fn full_field_less_than(lhs: Field, rhs: Field) -> bool {\n lhs.lt(rhs)\n}\n\npub fn full_field_greater_than(lhs: Field, rhs: Field) -> bool {\n rhs.lt(lhs)\n}\n\npub fn min(f1: Field, f2: Field) -> Field {\n if f1.lt(f2) {\n f1\n } else {\n f2\n }\n}\n\n// TODO: write doc-comments and tests for these magic constants.\n\nglobal KNOWN_NON_RESIDUE: Field = 5; // This is a non-residue in Noir's native Field.\nglobal C1: u32 = 28;\nglobal C3: Field = 40770029410420498293352137776570907027550720424234931066070132305055;\nglobal C5: Field = 19103219067921713944291392827692070036145651957329286315305642004821462161904;\n\n// @dev: only use this for _huge_ exponents y, when writing a constrained function.\n// If you're only exponentiating by a small value, first consider writing-out the multiplications by hand.\n// Only after you've measured the gates of that approach, consider using the native Field::pow_32 function.\n// Only if your exponent is larger than 32 bits, resort to using this function.\npub fn pow(x: Field, y: Field) -> Field {\n let mut r = 1 as Field;\n let b: [u1; 254] = y.to_le_bits();\n\n for i in 0..254 {\n r *= r;\n r *= (b[254 - 1 - i] as Field) * x + (1 - b[254 - 1 - i] as Field);\n }\n\n r\n}\n\n/// Returns Option::some(sqrt) if there is a square root, and Option::none() if there isn't.\npub fn sqrt(x: Field) -> Option<Field> {\n // Safety: if the hint returns the square root of x, then we simply square it\n // check the result equals x. If x is not square, we return a value that\n // enables us to prove that fact (see the `else` clause below).\n let (is_sq, maybe_sqrt) = unsafe { __sqrt(x) };\n\n if is_sq {\n let sqrt = maybe_sqrt;\n validate_sqrt_hint(x, sqrt);\n Option::some(sqrt)\n } else {\n let not_sqrt_hint = maybe_sqrt;\n validate_not_sqrt_hint(x, not_sqrt_hint);\n Option::none()\n }\n}\n\n// Boolean indicating whether Field element is a square, i.e. whether there exists a y in Field s.t. x = y*y.\nunconstrained fn is_square(x: Field) -> bool {\n let v = pow(x, -1 / 2);\n v * (v - 1) == 0\n}\n\n// Tonelli-Shanks algorithm for computing the square root of a Field element.\n// Requires C1 = max{c: 2^c divides (p-1)}, where p is the order of Field\n// as well as C3 = (C2 - 1)/2, where C2 = (p-1)/(2^c1),\n// and C5 = ZETA^C2, where ZETA is a non-square element of Field.\n// These are pre-computed above as globals.\nunconstrained fn tonelli_shanks_sqrt(x: Field) -> Field {\n let mut z = pow(x, C3);\n let mut t = z * z * x;\n z *= x;\n let mut b = t;\n let mut c = C5;\n\n for i in 0..(C1 - 1) {\n for _j in 1..(C1 - i - 1) {\n b *= b;\n }\n\n z *= if b == 1 { 1 } else { c };\n\n c *= c;\n\n t *= if b == 1 { 1 } else { c };\n\n b = t;\n }\n\n z\n}\n\n// NB: this doesn't return an option, because in the case of there _not_ being a square root, we still want to return a field element that allows us to then assert in the _constrained_ sqrt function that there is no sqrt.\nunconstrained fn __sqrt(x: Field) -> (bool, Field) {\n let is_sq = is_square(x);\n if is_sq {\n let sqrt = tonelli_shanks_sqrt(x);\n (true, sqrt)\n } else {\n // Demonstrate that x is not a square (a.k.a. a \"quadratic non-residue\").\n // Facts:\n // The Legendre symbol (\"LS\") of x, is x^((p-1)/2) (mod p).\n // - If x is a square, LS(x) = 1\n // - If x is not a square, LS(x) = -1\n // - If x = 0, LS(x) = 0.\n //\n // Hence:\n // sq * sq = sq // 1 * 1 = 1\n // non-sq * non-sq = sq // -1 * -1 = 1\n // sq * non-sq = non-sq // -1 * 1 = -1\n //\n // See: https://en.wikipedia.org/wiki/Legendre_symbol\n let demo_x_not_square = x * KNOWN_NON_RESIDUE;\n let not_sqrt = tonelli_shanks_sqrt(demo_x_not_square);\n (false, not_sqrt)\n }\n}\n\nfn validate_sqrt_hint(x: Field, hint: Field) {\n assert(hint * hint == x, f\"The claimed_sqrt {hint} is not the sqrt of x {x}\");\n}\n\nfn validate_not_sqrt_hint(x: Field, hint: Field) {\n // We need this assertion, because x = 0 would pass the other assertions in this\n // function, and we don't want people to be able to prove that 0 is not square!\n assert(x != 0, \"0 has a square root; you cannot claim it is not square\");\n // Demonstrate that x is not a square (a.k.a. a \"quadratic non-residue\").\n //\n // Facts:\n // The Legendre symbol (\"LS\") of x, is x^((p-1)/2) (mod p).\n // - If x is a square, LS(x) = 1\n // - If x is not a square, LS(x) = -1\n // - If x = 0, LS(x) = 0.\n //\n // Hence:\n // 1. sq * sq = sq // 1 * 1 = 1\n // 2. non-sq * non-sq = sq // -1 * -1 = 1\n // 3. sq * non-sq = non-sq // -1 * 1 = -1\n //\n // See: https://en.wikipedia.org/wiki/Legendre_symbol\n //\n // We want to demonstrate that this below multiplication falls under bullet-point (2):\n let demo_x_not_square = x * KNOWN_NON_RESIDUE;\n // I.e. we want to demonstrate that `demo_x_not_square` has Legendre symbol 1\n // (i.e. that it is a square), so we prove that it is square below.\n // Why do we want to prove that it has LS 1?\n // Well, since it was computed with a known-non-residue, its squareness implies we're\n // in case 2 (something multiplied by a known-non-residue yielding a result which\n // has a LS of 1), which implies that x must be a non-square. The unconstrained\n // function gave us the sqrt of demo_x_not_square, so all we need to do is\n // assert its squareness:\n assert(\n hint * hint == demo_x_not_square,\n f\"The hint {hint} does not demonstrate that {x} is not a square\",\n );\n}\n\n#[test]\nunconstrained fn bytes_field_test() {\n // Tests correctness of field_from_bytes_32_trunc against existing methods\n // Bytes representing 0x543e0a6642ffeb8039296861765a53407bba62bd1c97ca43374de950bbe0a7\n let inputs = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28,\n 151, 202, 67, 55, 77, 233, 80, 187, 224, 167,\n ];\n let field = field_from_bytes(inputs, true);\n let return_bytes: [u8; 31] = field.to_be_bytes();\n assert_eq(inputs, return_bytes);\n // 32 bytes - we remove the final byte, and check it matches the field\n let inputs2 = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28,\n 151, 202, 67, 55, 77, 233, 80, 187, 224, 167, 158,\n ];\n let field2 = field_from_bytes_32_trunc(inputs2);\n let return_bytes2: [u8; 31] = field2.to_be_bytes();\n\n assert_eq(return_bytes2, return_bytes);\n assert_eq(field2, field);\n}\n\n#[test]\nunconstrained fn max_field_test() {\n // Tests the hardcoded value in constants.nr vs underlying modulus\n // NB: We can't use 0-1 in constants.nr as it will be transpiled incorrectly to ts and sol constants files\n let max_value = crate::constants::MAX_FIELD_VALUE;\n assert_eq(max_value, 0 - 1);\n // modulus == 0 is tested elsewhere, so below is more of a sanity check\n let max_bytes: [u8; 32] = max_value.to_be_bytes();\n let mod_bytes = std::field::modulus_be_bytes();\n for i in 0..31 {\n assert_eq(max_bytes[i], mod_bytes[i]);\n }\n assert_eq(max_bytes[31], mod_bytes[31] - 1);\n}\n\n#[test]\nunconstrained fn sqrt_valid_test() {\n let x = 16; // examples: 16, 9, 25, 81\n let result = sqrt(x);\n assert(result.is_some());\n assert_eq(result.unwrap() * result.unwrap(), x);\n}\n\n#[test]\nunconstrained fn sqrt_invalid_test() {\n let x = KNOWN_NON_RESIDUE; // has no square root in the field\n let result = sqrt(x);\n assert(result.is_none());\n}\n\n#[test]\nunconstrained fn sqrt_zero_test() {\n let result = sqrt(0);\n assert(result.is_some());\n assert_eq(result.unwrap(), 0);\n}\n\n#[test]\nunconstrained fn sqrt_one_test() {\n let result = sqrt(1);\n assert(result.is_some());\n assert_eq(result.unwrap() * result.unwrap(), 1);\n}\n\n#[test]\nunconstrained fn field_from_bytes_empty_test() {\n let empty: [u8; 0] = [];\n let result = field_from_bytes(empty, true);\n assert_eq(result, 0);\n\n let result_le = field_from_bytes(empty, false);\n assert_eq(result_le, 0);\n}\n\n#[test]\nunconstrained fn field_from_bytes_little_endian_test() {\n // Test little-endian conversion: [0x01, 0x02] should be 0x0201 = 513\n let bytes = [0x01, 0x02];\n let result_le = field_from_bytes(bytes, false);\n assert_eq(result_le, 0x0201);\n\n // Compare with big-endian: [0x01, 0x02] should be 0x0102 = 258\n let result_be = field_from_bytes(bytes, true);\n assert_eq(result_be, 0x0102);\n}\n\n#[test]\nunconstrained fn pow_test() {\n assert_eq(pow(2, 0), 1);\n assert_eq(pow(2, 1), 2);\n assert_eq(pow(2, 10), 1024);\n assert_eq(pow(3, 5), 243);\n assert_eq(pow(0, 5), 0);\n assert_eq(pow(1, 100), 1);\n}\n\n#[test]\nunconstrained fn min_test() {\n assert_eq(min(5, 10), 5);\n assert_eq(min(10, 5), 5);\n assert_eq(min(7, 7), 7);\n assert_eq(min(0, 1), 0);\n}\n\n#[test]\nunconstrained fn full_field_comparison_test() {\n assert(full_field_less_than(5, 10));\n assert(!full_field_less_than(10, 5));\n assert(!full_field_less_than(5, 5));\n\n assert(full_field_greater_than(10, 5));\n assert(!full_field_greater_than(5, 10));\n assert(!full_field_greater_than(5, 5));\n}\n\n#[test]\nunconstrained fn sqrt_has_two_roots_test() {\n // Every square has two roots: r and -r (i.e., p - r)\n // sqrt(16) can return 4 or -4\n let x = 16;\n let result = sqrt(x).unwrap();\n assert(result * result == x);\n // The other root is -result\n let other_root = 0 - result;\n assert(other_root * other_root == x);\n // Verify they are different (unless x = 0)\n assert(result != other_root);\n\n // Same for 9: roots are 3 and -3\n let y = 9;\n let result_y = sqrt(y).unwrap();\n assert(result_y * result_y == y);\n let other_root_y = 0 - result_y;\n assert(other_root_y * other_root_y == y);\n assert(result_y != other_root_y);\n}\n\n#[test]\nunconstrained fn sqrt_negative_one_test() {\n let x = 0 - 1;\n let result = sqrt(x);\n assert(result.unwrap() == 0x30644e72e131a029048b6e193fd841045cea24f6fd736bec231204708f703636);\n}\n\n#[test]\nunconstrained fn validate_sqrt_hint_valid_test() {\n // 4 is a valid sqrt of 16\n validate_sqrt_hint(16, 4);\n // -4 is also a valid sqrt of 16\n validate_sqrt_hint(16, 0 - 4);\n // 0 is a valid sqrt of 0\n validate_sqrt_hint(0, 0);\n // 1 is a valid sqrt of 1\n validate_sqrt_hint(1, 1);\n // -1 is also a valid sqrt of 1\n validate_sqrt_hint(1, 0 - 1);\n}\n\n#[test(should_fail_with = \"is not the sqrt of x\")]\nunconstrained fn validate_sqrt_hint_invalid_test() {\n // 5 is not a valid sqrt of 16\n validate_sqrt_hint(16, 5);\n}\n\n#[test]\nunconstrained fn validate_not_sqrt_hint_valid_test() {\n // 5 (KNOWN_NON_RESIDUE) is not a square.\n let x = KNOWN_NON_RESIDUE;\n let hint = tonelli_shanks_sqrt(x * KNOWN_NON_RESIDUE);\n validate_not_sqrt_hint(x, hint);\n}\n\n#[test(should_fail_with = \"0 has a square root\")]\nunconstrained fn validate_not_sqrt_hint_zero_test() {\n // 0 has a square root, so we cannot claim it is not square\n validate_not_sqrt_hint(0, 0);\n}\n\n#[test(should_fail_with = \"does not demonstrate that\")]\nunconstrained fn validate_not_sqrt_hint_wrong_hint_test() {\n // Provide a wrong hint for a non-square\n let x = KNOWN_NON_RESIDUE;\n validate_not_sqrt_hint(x, 123);\n}\n"
|
|
4626
4626
|
},
|
|
4627
|
-
"
|
|
4627
|
+
"409": {
|
|
4628
4628
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/serde/src/reader.nr",
|
|
4629
4629
|
"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"
|
|
4630
4630
|
},
|
|
4631
|
-
"
|
|
4631
|
+
"410": {
|
|
4632
4632
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/serde/src/serialization.nr",
|
|
4633
4633
|
"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"
|
|
4634
4634
|
},
|
|
4635
|
-
"
|
|
4635
|
+
"412": {
|
|
4636
4636
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/serde/src/type_impls.nr",
|
|
4637
4637
|
"source": "use crate::{reader::Reader, serialization::{Deserialize, Serialize}, writer::Writer};\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint;\nuse dep::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"
|
|
4638
4638
|
},
|
|
4639
|
-
"
|
|
4639
|
+
"413": {
|
|
4640
4640
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/serde/src/writer.nr",
|
|
4641
4641
|
"source": "pub struct Writer<let N: u32> {\n data: [Field; N],\n offset: u32,\n}\n\nimpl<let N: u32> Writer<N> {\n pub fn new() -> Self {\n Self { data: [0; N], offset: 0 }\n }\n\n pub fn write(&mut self, value: Field) {\n self.data[self.offset] = value;\n self.offset += 1;\n }\n\n pub fn write_u32(&mut self, value: u32) {\n self.write(value as Field);\n }\n\n pub fn write_u64(&mut self, value: u64) {\n self.write(value as Field);\n }\n\n pub fn write_bool(&mut self, value: bool) {\n self.write(value as Field);\n }\n\n pub fn write_array<let K: u32>(&mut self, value: [Field; K]) {\n for i in 0..K {\n self.data[i + self.offset] = value[i];\n }\n self.offset += K;\n }\n\n pub fn write_struct<T, let K: u32>(&mut self, value: T, serialize: fn(T) -> [Field; K]) {\n self.write_array(serialize(value));\n }\n\n pub fn write_struct_array<T, let K: u32, let C: u32>(\n &mut self,\n value: [T; C],\n serialize: fn(T) -> [Field; K],\n ) {\n for i in 0..C {\n self.write_struct(value[i], serialize);\n }\n }\n\n pub fn advance_offset(&mut self, offset: u32) {\n self.offset += offset;\n }\n\n pub fn finish(self) -> [Field; N] {\n assert_eq(self.offset, self.data.len(), \"Writer did not write all data\");\n self.data\n }\n}\n"
|
|
4642
4642
|
},
|
|
@@ -4644,7 +4644,7 @@
|
|
|
4644
4644
|
"path": "std/option.nr",
|
|
4645
4645
|
"source": "use crate::cmp::{Eq, Ord, Ordering};\nuse crate::default::Default;\nuse crate::hash::{Hash, Hasher};\n\npub struct Option<T> {\n _is_some: bool,\n _value: T,\n}\n\nimpl<T> Option<T> {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::mem::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some {\n self._value\n } else {\n default\n }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else<Env>(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// Asserts `self.is_some()` with a provided custom message and returns the contained `Some` value\n pub fn expect<let N: u32, MessageTypes>(self, message: fmtstr<N, MessageTypes>) -> T {\n assert(self.is_some(), message);\n self._value\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> Option<U> {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or<U, Env>(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else<U, Env1, Env2>(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then<U, Env>(self, f: fn[Env](T) -> Option<U>) -> Option<U> {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some {\n self\n } else {\n other\n }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else<Env>(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some {\n self\n } else {\n default()\n }\n }\n\n // If only one of the two Options is Some, return that option.\n // Otherwise, if both options are Some or both are None, None is returned.\n pub fn xor(self, other: Self) -> Self {\n if self._is_some {\n if other._is_some {\n Option::none()\n } else {\n self\n }\n } else if other._is_some {\n other\n } else {\n Option::none()\n }\n }\n\n /// Returns `Some(x)` if self is `Some(x)` and `predicate(x)` is true.\n /// Otherwise, this returns `None`\n pub fn filter<Env>(self, predicate: fn[Env](T) -> bool) -> Self {\n if self._is_some {\n if predicate(self._value) {\n self\n } else {\n Option::none()\n }\n } else {\n Option::none()\n }\n }\n\n /// Flattens an Option<Option<T>> into a Option<T>.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option<Option<T>>) -> Option<T> {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n\nimpl<T> Default for Option<T> {\n fn default() -> Self {\n Option::none()\n }\n}\n\nimpl<T> Eq for Option<T>\nwhere\n T: Eq,\n{\n fn eq(self, other: Self) -> bool {\n if self._is_some == other._is_some {\n if self._is_some {\n self._value == other._value\n } else {\n true\n }\n } else {\n false\n }\n }\n}\n\nimpl<T> Hash for Option<T>\nwhere\n T: Hash,\n{\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n self._is_some.hash(state);\n if self._is_some {\n self._value.hash(state);\n }\n }\n}\n\n// For this impl we're declaring Option::none < Option::some\nimpl<T> Ord for Option<T>\nwhere\n T: Ord,\n{\n fn cmp(self, other: Self) -> Ordering {\n if self._is_some {\n if other._is_some {\n self._value.cmp(other._value)\n } else {\n Ordering::greater()\n }\n } else if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n"
|
|
4646
4646
|
},
|
|
4647
|
-
"
|
|
4647
|
+
"423": {
|
|
4648
4648
|
"path": "/home/aztec-dev/nargo/github.com/noir-lang/schnorr/v0.1.3/src/lib.nr",
|
|
4649
4649
|
"source": "use std::embedded_curve_ops::{EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul};\nuse std::hash::{blake2s, pedersen_hash};\n\n// the multiples of BN_P that are still less than 2^254 split into (lo, hi)\nglobal BN_P_m: [(Field, Field); 6] = [\n (0, 0),\n (201385395114098847380338600778089168199, 64323764613183177041862057485226039389),\n (62488423307259231297302594124410124942, 128647529226366354083724114970452078779),\n (263873818421358078677641194902499293141, 192971293839549531125586172455678118168),\n (124976846614518462594605188248820249884, 257295058452732708167448229940904157558),\n (326362241728617309974943789026909418083, 321618823065915885209310287426130196947),\n];\n\nglobal TWO_POW_128: Field = 0x100000000000000000000000000000000;\n\npub fn verify_signature<let N: u32>(\n public_key: EmbeddedCurvePoint,\n signature: [u8; 64],\n message: [u8; N],\n) -> bool {\n //scalar lo/hi from bytes\n let sig_s = scalar_from_bytes(signature, 0);\n let sig_e = scalar_from_bytes(signature, 32);\n // pub_key is on Grumpkin curve\n let mut is_ok = (public_key.y * public_key.y == public_key.x * public_key.x * public_key.x - 17)\n & (!public_key.is_infinite);\n\n if ((sig_s.lo != 0) | (sig_s.hi != 0)) & ((sig_e.lo != 0) | (sig_e.hi != 0)) {\n let (r_is_infinite, result) =\n calculate_signature_challenge(public_key, sig_s, sig_e, message);\n\n is_ok &= !r_is_infinite;\n for i in 0..32 {\n is_ok &= result[i] == signature[32 + i];\n }\n } else {\n is_ok = false;\n }\n is_ok\n}\n\npub fn assert_valid_signature<let N: u32>(\n public_key: EmbeddedCurvePoint,\n signature: [u8; 64],\n message: [u8; N],\n) {\n //scalar lo/hi from bytes\n let sig_s = scalar_from_bytes(signature, 0);\n let sig_e = scalar_from_bytes(signature, 32);\n\n // assert pub_key is on Grumpkin curve\n assert(public_key.y * public_key.y == public_key.x * public_key.x * public_key.x - 17);\n assert(public_key.is_infinite == false);\n // assert signature is not null\n assert((sig_s.lo != 0) | (sig_s.hi != 0));\n assert((sig_e.lo != 0) | (sig_e.hi != 0));\n\n let (r_is_infinite, result) = calculate_signature_challenge(public_key, sig_s, sig_e, message);\n\n assert(!r_is_infinite);\n for i in 0..32 {\n assert(result[i] == signature[32 + i]);\n }\n}\n\nfn calculate_signature_challenge<let N: u32>(\n public_key: EmbeddedCurvePoint,\n sig_s: EmbeddedCurveScalar,\n sig_e: EmbeddedCurveScalar,\n message: [u8; N],\n) -> (bool, [u8; 32]) {\n let g1 = EmbeddedCurvePoint {\n x: 1,\n y: 17631683881184975370165255887551781615748388533673675138860,\n is_infinite: false,\n };\n let reduced_sig_e = normalize_signature(sig_e);\n let r = multi_scalar_mul([g1, public_key], [sig_s, reduced_sig_e]);\n // compare the _hashes_ rather than field elements modulo r\n let pedersen_hash = pedersen_hash([r.x, public_key.x, public_key.y]);\n let pde: [u8; 32] = pedersen_hash.to_be_bytes();\n\n let mut hash_input = [0; N + 32];\n for i in 0..32 {\n hash_input[i] = pde[i];\n }\n for i in 0..N {\n hash_input[32 + i] = message[i];\n }\n\n let result = blake2s(hash_input);\n (r.is_infinite, result)\n}\n\nunconstrained fn __gt(a: Field, b: Field) -> bool {\n b.lt(a)\n}\n\n// gets the quotient of lo/hi when divided by BN254_Fq modulus\nunconstrained fn __get_quotient(hi: Field, lo: Field) -> u32 {\n let mut q: u32 = 0;\n let mut r_hi = hi;\n let mut r_lo = lo;\n let MODULUS = BN_P_m[1];\n\n for _ in 1..6 {\n // check if rhi, rlo is larger than BN_P\n let borrow = r_lo.lt(MODULUS.0);\n\n if borrow {\n r_lo = r_lo + TWO_POW_128;\n // rlo is always larger than BN_P lo now\n r_hi = r_hi - 1;\n }\n\n let MODULUS_hi = MODULUS.1;\n\n let gt_flag = !r_hi.lt(MODULUS_hi);\n\n if gt_flag {\n r_hi = r_hi - MODULUS.1;\n r_lo = r_lo - MODULUS.0;\n if TWO_POW_128.lt(r_lo) | TWO_POW_128.lt(r_hi) {\n break;\n }\n q += 1;\n }\n }\n q\n}\n\n// this method reduces the signature to the range [0, BN254_Fq_MODULUS)\nfn normalize_signature(sig_e: EmbeddedCurveScalar) -> EmbeddedCurveScalar {\n let mut hi = sig_e.hi;\n let mut lo = sig_e.lo;\n // get the quotient\n let q = unsafe { __get_quotient(hi, lo) };\n let MODULUSmq = (BN_P_m[q].0, BN_P_m[q].1);\n let MODULUS = BN_P_m[1];\n // remove MODULUS * q from lo/hi\n let borrow = unsafe { __gt(MODULUSmq.0, lo) };\n // rlo, rhi is the signature without the multiple of MODULUS\n let rlo = lo - MODULUSmq.0 + borrow as Field * TWO_POW_128;\n let rhi = hi - borrow as Field - MODULUSmq.1;\n // now we validate that rlo and rhi are positive\n rlo.assert_max_bit_size::<128>();\n rhi.assert_max_bit_size::<128>();\n // validate that rlo, rhi is smaller than MODULUS\n // if the lo is larger than the modulus lo we have to get a borrow\n let borrow = unsafe { __gt(rlo, MODULUS.0) };\n let rplo = MODULUS.0 - rlo + borrow as Field * TWO_POW_128;\n let rphi = MODULUS.1 - rhi - borrow as Field;\n // check that rplo and rphi are positive\n rplo.assert_max_bit_size::<128>();\n rphi.assert_max_bit_size::<128>();\n EmbeddedCurveScalar::new(rlo, rhi)\n}\n\n//Bytes to scalar: take the first (after the specified offset) 16 bytes of the input as the lo value, and the next 16 bytes as the hi value\nfn scalar_from_bytes(bytes: [u8; 64], offset: u32) -> EmbeddedCurveScalar {\n let mut v: Field = 1;\n let mut lo: Field = 0;\n let mut hi: Field = 0;\n for i in 0..16 {\n lo = lo + (bytes[offset + 31 - i] as Field) * v;\n hi = hi + (bytes[offset + 15 - i] as Field) * v;\n v = v * 256;\n }\n let sig_s = EmbeddedCurveScalar::new(lo, hi);\n sig_s\n}\n\nmod test {\n use super::normalize_signature;\n use super::verify_signature;\n use std::embedded_curve_ops::{EmbeddedCurvePoint, EmbeddedCurveScalar};\n\n #[test]\n fn test_zero_signature() {\n let public_key: EmbeddedCurvePoint = EmbeddedCurvePoint {\n x: 1,\n y: 17631683881184975370165255887551781615748388533673675138860,\n is_infinite: false,\n };\n let signature: [u8; 64] = [0; 64];\n let message: [u8; _] = [2; 64]; // every message\n let verified = verify_signature(public_key, signature, message);\n assert(!verified);\n }\n\n #[test]\n fn smoke_test() {\n let message: [u8; 10] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];\n let pub_key_x: Field = 0x04b260954662e97f00cab9adb773a259097f7a274b83b113532bce27fa3fb96a;\n let pub_key_y: Field = 0x2fd51571db6c08666b0edfbfbc57d432068bccd0110a39b166ab243da0037197;\n let signature: [u8; 64] = [\n 1, 13, 119, 112, 212, 39, 233, 41, 84, 235, 255, 93, 245, 172, 186, 83, 157, 253, 76,\n 77, 33, 128, 178, 15, 214, 67, 105, 107, 177, 234, 77, 48, 27, 237, 155, 84, 39, 84,\n 247, 27, 22, 8, 176, 230, 24, 115, 145, 220, 254, 122, 135, 179, 171, 4, 214, 202, 64,\n 199, 19, 84, 239, 138, 124, 12,\n ];\n\n let pub_key = EmbeddedCurvePoint { x: pub_key_x, y: pub_key_y, is_infinite: false };\n let valid_signature = verify_signature(pub_key, signature, message);\n assert(valid_signature);\n super::assert_valid_signature(pub_key, signature, message);\n }\n\n #[test]\n fn test_normalize_signature() {\n let sig_e = EmbeddedCurveScalar::new(\n 201385395114098847380338600778112493540,\n 64323764613183177041862057485226039389,\n );\n let normalized = normalize_signature(sig_e);\n let expected = EmbeddedCurveScalar::new(23325341, 0);\n assert(normalized == expected);\n }\n\n #[test]\n fn test_normalize_signature_2() {\n let sig_e = EmbeddedCurveScalar::new(\n 263873818421358078677641194902522618482,\n 192971293839549531125586172455678118168,\n );\n let normalized = normalize_signature(sig_e);\n let expected = EmbeddedCurveScalar::new(23325341, 0);\n assert(normalized == expected);\n }\n\n}\n\nmod bench {\n use super::{assert_valid_signature, verify_signature};\n use std::embedded_curve_ops::EmbeddedCurvePoint;\n\n #[export]\n pub fn bench_verify_signature(\n public_key: EmbeddedCurvePoint,\n signature: [u8; 64],\n message: [u8; 32],\n ) -> bool {\n verify_signature(public_key, signature, message)\n }\n\n #[export]\n pub fn bench_assert_valid_signature(\n public_key: EmbeddedCurvePoint,\n signature: [u8; 64],\n message: [u8; 32],\n ) {\n assert_valid_signature(public_key, signature, message)\n }\n}\n"
|
|
4650
4650
|
},
|
|
@@ -4662,7 +4662,7 @@
|
|
|
4662
4662
|
},
|
|
4663
4663
|
"52": {
|
|
4664
4664
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/noir-contracts/contracts/account/schnorr_single_key_account_contract/src/main.nr",
|
|
4665
|
-
"source": "mod util;\nmod auth_oracle;\n\nuse dep::aztec::macros::aztec;\n\n#[aztec]\npub contract SchnorrSingleKeyAccount {\n use dep::aztec::{\n authwit::{account::AccountActions, entrypoint::app::AppPayload},\n context::PrivateContext,\n oracle::notes::set_sender_for_tags,\n };\n\n use crate::{auth_oracle::get_auth_witness, util::recover_address};\n\n use dep::aztec::macros::functions::{
|
|
4665
|
+
"source": "mod util;\nmod auth_oracle;\n\nuse dep::aztec::macros::aztec;\n\n#[aztec]\npub contract SchnorrSingleKeyAccount {\n use dep::aztec::{\n authwit::{account::AccountActions, entrypoint::app::AppPayload},\n context::PrivateContext,\n oracle::notes::set_sender_for_tags,\n };\n\n use crate::{auth_oracle::get_auth_witness, util::recover_address};\n\n use dep::aztec::macros::functions::{allow_phase_change, external, view};\n\n // @dev: If you globally change the entrypoint signature don't forget to update account_entrypoint.ts (specifically `getEntrypointAbi()`)\n #[external(\"private\")]\n #[allow_phase_change]\n fn entrypoint(app_payload: AppPayload, fee_payment_method: u8, cancellable: bool) {\n // Safety: The sender for tags is only used to compute unconstrained shared secrets for emitting logs.\n // Since this value is only used for unconstrained tagging and not for any constrained logic,\n // it is safe to set from a constrained context.\n unsafe { set_sender_for_tags(self.address) };\n\n let actions = AccountActions::init(self.context, is_valid_impl);\n actions.entrypoint(app_payload, fee_payment_method, cancellable);\n }\n\n #[external(\"private\")]\n #[view]\n fn verify_private_authwit(inner_hash: Field) -> Field {\n let actions = AccountActions::init(self.context, is_valid_impl);\n actions.verify_private_authwit(inner_hash)\n }\n\n #[contract_library_method]\n fn is_valid_impl(context: &mut PrivateContext, outer_hash: Field) -> bool {\n // Safety: The witness is only used as a \"magical value\" that makes the signature verification\n // in `recover_address` and the address check below pass. Hence it's safe.\n let witness = unsafe { get_auth_witness(outer_hash) };\n recover_address(outer_hash, witness).eq(context.this_address())\n }\n}\n"
|
|
4666
4666
|
},
|
|
4667
4667
|
"53": {
|
|
4668
4668
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/noir-contracts/contracts/account/schnorr_single_key_account_contract/src/util.nr",
|