@aztec/accounts 0.75.0 → 0.76.0
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.
- package/artifacts/EcdsaKAccount.json +500 -500
- package/artifacts/EcdsaRAccount.json +364 -364
- package/artifacts/SchnorrAccount.json +743 -743
- package/artifacts/SchnorrSingleKeyAccount.json +121 -121
- package/package.json +8 -8
|
@@ -1,50 +1,76 @@
|
|
|
1
1
|
{
|
|
2
2
|
"transpiled": true,
|
|
3
|
-
"noir_version": "1.0.0-beta.1+
|
|
3
|
+
"noir_version": "1.0.0-beta.1+3f8376928465907d",
|
|
4
4
|
"name": "SchnorrAccount",
|
|
5
5
|
"functions": [
|
|
6
6
|
{
|
|
7
|
-
"name": "
|
|
7
|
+
"name": "sync_notes",
|
|
8
|
+
"is_unconstrained": true,
|
|
9
|
+
"custom_attributes": [],
|
|
10
|
+
"abi": {
|
|
11
|
+
"error_types": {
|
|
12
|
+
"17843811134343075018": {
|
|
13
|
+
"error_kind": "string",
|
|
14
|
+
"string": "Stack too deep"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"parameters": [],
|
|
18
|
+
"return_type": null
|
|
19
|
+
},
|
|
20
|
+
"bytecode": "H4sIAAAAAAAA/7WTyw7CIBBFqcUo0sTEx39MU0y7dOHafyCtLHVRN+766dZkJkyI0QVwEzJMgMNcHoXwKjBKESGCHDEqjAs2Xs7tjDnEqVbBvin5HRijvvhLWH+jkFnk4QPxM50/rJBzmTyfe6F913PTrF8J/z5y+af7y+l//8OzRq9bzCvh/8P4uvfXx/M2ij/SbJGc0ptoOwAqvkT+EvmhJBvn8w+Yb4Svj6KMqNO1tnaNdfZkh8H0dhfwP+KH/QbzqHp4zgQAAA==",
|
|
21
|
+
"debug_symbols": "bY/dCoMwDIXfJde9aLof0FeRIVWjFEortQ6G9N2XDtm6zZuQE75zyNlgoG6dWuNGv0DdbGB9r6PxjtWWBHTBWGumtjyDzANPL36ZtctyiTpEqNUZBZAb8laxfzSWoL6qJP5QlCjVDvOuPjhm6xFf4ZtXKL/4W2J518HoztL+/Li6vugSHzP91JqD72lYA+WCRTeeDV6EkhzL0U8=",
|
|
22
|
+
"brillig_names": [
|
|
23
|
+
"sync_notes"
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "constructor",
|
|
8
28
|
"is_unconstrained": false,
|
|
9
29
|
"custom_attributes": [
|
|
10
30
|
"private",
|
|
11
|
-
"
|
|
12
|
-
"view"
|
|
31
|
+
"initializer"
|
|
13
32
|
],
|
|
14
33
|
"abi": {
|
|
15
34
|
"error_types": {
|
|
16
|
-
"
|
|
17
|
-
"error_kind": "
|
|
18
|
-
"
|
|
19
|
-
"length": 20
|
|
35
|
+
"14514982005979867414": {
|
|
36
|
+
"error_kind": "string",
|
|
37
|
+
"string": "attempt to bit-shift with overflow"
|
|
20
38
|
},
|
|
21
39
|
"16761564377371454734": {
|
|
22
40
|
"error_kind": "string",
|
|
23
41
|
"string": "Array index out of bounds"
|
|
24
42
|
},
|
|
25
|
-
"
|
|
43
|
+
"17618083556256589634": {
|
|
26
44
|
"error_kind": "string",
|
|
27
|
-
"string": "
|
|
45
|
+
"string": "Initialization hash does not match"
|
|
28
46
|
},
|
|
29
47
|
"17843811134343075018": {
|
|
30
48
|
"error_kind": "string",
|
|
31
49
|
"string": "Stack too deep"
|
|
32
50
|
},
|
|
33
|
-
"
|
|
51
|
+
"2233873454491509486": {
|
|
34
52
|
"error_kind": "string",
|
|
35
|
-
"string": "
|
|
53
|
+
"string": "Initializer address is not the contract deployer"
|
|
36
54
|
},
|
|
37
|
-
"
|
|
55
|
+
"2709101749560550278": {
|
|
38
56
|
"error_kind": "string",
|
|
39
|
-
"string": "
|
|
57
|
+
"string": "Cannot serialize point at infinity as bytes."
|
|
58
|
+
},
|
|
59
|
+
"2920182694213909827": {
|
|
60
|
+
"error_kind": "string",
|
|
61
|
+
"string": "attempt to subtract with overflow"
|
|
40
62
|
},
|
|
41
63
|
"5019202896831570965": {
|
|
42
64
|
"error_kind": "string",
|
|
43
65
|
"string": "attempt to add with overflow"
|
|
44
66
|
},
|
|
45
|
-
"
|
|
67
|
+
"6485997221020871071": {
|
|
46
68
|
"error_kind": "string",
|
|
47
|
-
"string": "
|
|
69
|
+
"string": "call to assert_max_bit_size"
|
|
70
|
+
},
|
|
71
|
+
"7233212735005103307": {
|
|
72
|
+
"error_kind": "string",
|
|
73
|
+
"string": "attempt to multiply with overflow"
|
|
48
74
|
}
|
|
49
75
|
},
|
|
50
76
|
"parameters": [
|
|
@@ -530,7 +556,14 @@
|
|
|
530
556
|
"visibility": "private"
|
|
531
557
|
},
|
|
532
558
|
{
|
|
533
|
-
"name": "
|
|
559
|
+
"name": "signing_pub_key_x",
|
|
560
|
+
"type": {
|
|
561
|
+
"kind": "field"
|
|
562
|
+
},
|
|
563
|
+
"visibility": "private"
|
|
564
|
+
},
|
|
565
|
+
{
|
|
566
|
+
"name": "signing_pub_key_y",
|
|
534
567
|
"type": {
|
|
535
568
|
"kind": "field"
|
|
536
569
|
},
|
|
@@ -1642,51 +1675,122 @@
|
|
|
1642
1675
|
"visibility": "databus"
|
|
1643
1676
|
}
|
|
1644
1677
|
},
|
|
1645
|
-
"bytecode": "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",
|
|
1646
|
-
"debug_symbols": "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",
|
|
1678
|
+
"bytecode": "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",
|
|
1679
|
+
"debug_symbols": "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",
|
|
1647
1680
|
"brillig_names": [
|
|
1648
|
-
"
|
|
1681
|
+
"get_contract_instance_internal",
|
|
1649
1682
|
"decompose_hint",
|
|
1650
|
-
"
|
|
1651
|
-
"
|
|
1652
|
-
"
|
|
1683
|
+
"lte_hint",
|
|
1684
|
+
"notify_created_nullifier_oracle_wrapper",
|
|
1685
|
+
"notify_created_note_oracle_wrapper",
|
|
1686
|
+
"debug_log_oracle_wrapper",
|
|
1687
|
+
"random",
|
|
1688
|
+
"field_less_than",
|
|
1689
|
+
"build_msg_block",
|
|
1690
|
+
"attach_len_to_msg_block",
|
|
1691
|
+
"get_random_bytes",
|
|
1692
|
+
"get_app_tag_as_sender",
|
|
1693
|
+
"increment_app_tagging_secret_index_as_sender_wrapper",
|
|
1653
1694
|
"directive_integer_quotient",
|
|
1695
|
+
"directive_invert",
|
|
1654
1696
|
"directive_to_radix"
|
|
1655
1697
|
],
|
|
1656
|
-
"verification_key": "
|
|
1698
|
+
"verification_key": "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"
|
|
1657
1699
|
},
|
|
1658
1700
|
{
|
|
1659
|
-
"name": "
|
|
1660
|
-
"is_unconstrained":
|
|
1661
|
-
"custom_attributes": [
|
|
1662
|
-
"private",
|
|
1663
|
-
"initializer"
|
|
1664
|
-
],
|
|
1701
|
+
"name": "lookup_validity",
|
|
1702
|
+
"is_unconstrained": true,
|
|
1703
|
+
"custom_attributes": [],
|
|
1665
1704
|
"abi": {
|
|
1666
1705
|
"error_types": {
|
|
1667
|
-
"
|
|
1706
|
+
"12099279057757775880": {
|
|
1668
1707
|
"error_kind": "string",
|
|
1669
|
-
"string": "
|
|
1708
|
+
"string": "DST_LEN too large for offset"
|
|
1670
1709
|
},
|
|
1671
1710
|
"16761564377371454734": {
|
|
1672
1711
|
"error_kind": "string",
|
|
1673
1712
|
"string": "Array index out of bounds"
|
|
1674
1713
|
},
|
|
1675
|
-
"
|
|
1714
|
+
"16954218183513903507": {
|
|
1676
1715
|
"error_kind": "string",
|
|
1677
|
-
"string": "
|
|
1716
|
+
"string": "Attempted to read past end of BoundedVec"
|
|
1678
1717
|
},
|
|
1679
1718
|
"17843811134343075018": {
|
|
1680
1719
|
"error_kind": "string",
|
|
1681
1720
|
"string": "Stack too deep"
|
|
1682
1721
|
},
|
|
1683
|
-
"
|
|
1722
|
+
"2920182694213909827": {
|
|
1684
1723
|
"error_kind": "string",
|
|
1685
|
-
"string": "
|
|
1724
|
+
"string": "attempt to subtract with overflow"
|
|
1686
1725
|
},
|
|
1687
|
-
"
|
|
1726
|
+
"5019202896831570965": {
|
|
1688
1727
|
"error_kind": "string",
|
|
1689
|
-
"string": "
|
|
1728
|
+
"string": "attempt to add with overflow"
|
|
1729
|
+
},
|
|
1730
|
+
"5727012404371710682": {
|
|
1731
|
+
"error_kind": "string",
|
|
1732
|
+
"string": "push out of bounds"
|
|
1733
|
+
},
|
|
1734
|
+
"7233212735005103307": {
|
|
1735
|
+
"error_kind": "string",
|
|
1736
|
+
"string": "attempt to multiply with overflow"
|
|
1737
|
+
}
|
|
1738
|
+
},
|
|
1739
|
+
"parameters": [
|
|
1740
|
+
{
|
|
1741
|
+
"name": "consumer",
|
|
1742
|
+
"type": {
|
|
1743
|
+
"fields": [
|
|
1744
|
+
{
|
|
1745
|
+
"name": "inner",
|
|
1746
|
+
"type": {
|
|
1747
|
+
"kind": "field"
|
|
1748
|
+
}
|
|
1749
|
+
}
|
|
1750
|
+
],
|
|
1751
|
+
"kind": "struct",
|
|
1752
|
+
"path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress"
|
|
1753
|
+
},
|
|
1754
|
+
"visibility": "private"
|
|
1755
|
+
},
|
|
1756
|
+
{
|
|
1757
|
+
"name": "inner_hash",
|
|
1758
|
+
"type": {
|
|
1759
|
+
"kind": "field"
|
|
1760
|
+
},
|
|
1761
|
+
"visibility": "private"
|
|
1762
|
+
}
|
|
1763
|
+
],
|
|
1764
|
+
"return_type": {
|
|
1765
|
+
"abi_type": {
|
|
1766
|
+
"kind": "boolean"
|
|
1767
|
+
},
|
|
1768
|
+
"visibility": "public"
|
|
1769
|
+
}
|
|
1770
|
+
},
|
|
1771
|
+
"bytecode": "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",
|
|
1772
|
+
"debug_symbols": "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",
|
|
1773
|
+
"brillig_names": [
|
|
1774
|
+
"lookup_validity"
|
|
1775
|
+
]
|
|
1776
|
+
},
|
|
1777
|
+
{
|
|
1778
|
+
"name": "process_log",
|
|
1779
|
+
"is_unconstrained": true,
|
|
1780
|
+
"custom_attributes": [],
|
|
1781
|
+
"abi": {
|
|
1782
|
+
"error_types": {
|
|
1783
|
+
"16761564377371454734": {
|
|
1784
|
+
"error_kind": "string",
|
|
1785
|
+
"string": "Array index out of bounds"
|
|
1786
|
+
},
|
|
1787
|
+
"16954218183513903507": {
|
|
1788
|
+
"error_kind": "string",
|
|
1789
|
+
"string": "Attempted to read past end of BoundedVec"
|
|
1790
|
+
},
|
|
1791
|
+
"17843811134343075018": {
|
|
1792
|
+
"error_kind": "string",
|
|
1793
|
+
"string": "Stack too deep"
|
|
1690
1794
|
},
|
|
1691
1795
|
"2920182694213909827": {
|
|
1692
1796
|
"error_kind": "string",
|
|
@@ -1696,64 +1800,227 @@
|
|
|
1696
1800
|
"error_kind": "string",
|
|
1697
1801
|
"string": "attempt to add with overflow"
|
|
1698
1802
|
},
|
|
1699
|
-
"
|
|
1803
|
+
"6753155520859132764": {
|
|
1700
1804
|
"error_kind": "string",
|
|
1701
|
-
"string": "
|
|
1805
|
+
"string": "Failed to deliver note"
|
|
1702
1806
|
},
|
|
1703
|
-
"
|
|
1807
|
+
"8270195893599566439": {
|
|
1704
1808
|
"error_kind": "string",
|
|
1705
|
-
"string": "
|
|
1809
|
+
"string": "Invalid public keys hint for address"
|
|
1810
|
+
},
|
|
1811
|
+
"8861757336002045335": {
|
|
1812
|
+
"error_kind": "fmtstring",
|
|
1813
|
+
"item_types": [
|
|
1814
|
+
{
|
|
1815
|
+
"kind": "integer",
|
|
1816
|
+
"sign": "unsigned",
|
|
1817
|
+
"width": 32
|
|
1818
|
+
},
|
|
1819
|
+
{
|
|
1820
|
+
"kind": "integer",
|
|
1821
|
+
"sign": "unsigned",
|
|
1822
|
+
"width": 32
|
|
1823
|
+
},
|
|
1824
|
+
{
|
|
1825
|
+
"kind": "field"
|
|
1826
|
+
}
|
|
1827
|
+
],
|
|
1828
|
+
"length": 99
|
|
1829
|
+
},
|
|
1830
|
+
"9862881900111276825": {
|
|
1831
|
+
"error_kind": "fmtstring",
|
|
1832
|
+
"item_types": [
|
|
1833
|
+
{
|
|
1834
|
+
"kind": "field"
|
|
1835
|
+
}
|
|
1836
|
+
],
|
|
1837
|
+
"length": 35
|
|
1706
1838
|
}
|
|
1707
1839
|
},
|
|
1708
1840
|
"parameters": [
|
|
1709
1841
|
{
|
|
1710
|
-
"name": "
|
|
1842
|
+
"name": "log_plaintext",
|
|
1711
1843
|
"type": {
|
|
1712
1844
|
"fields": [
|
|
1713
1845
|
{
|
|
1714
|
-
"name": "
|
|
1846
|
+
"name": "storage",
|
|
1715
1847
|
"type": {
|
|
1716
|
-
"
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1848
|
+
"kind": "array",
|
|
1849
|
+
"length": 18,
|
|
1850
|
+
"type": {
|
|
1851
|
+
"kind": "field"
|
|
1852
|
+
}
|
|
1853
|
+
}
|
|
1854
|
+
},
|
|
1855
|
+
{
|
|
1856
|
+
"name": "len",
|
|
1857
|
+
"type": {
|
|
1858
|
+
"kind": "integer",
|
|
1859
|
+
"sign": "unsigned",
|
|
1860
|
+
"width": 32
|
|
1861
|
+
}
|
|
1862
|
+
}
|
|
1863
|
+
],
|
|
1864
|
+
"kind": "struct",
|
|
1865
|
+
"path": "std::collections::bounded_vec::BoundedVec"
|
|
1866
|
+
},
|
|
1867
|
+
"visibility": "private"
|
|
1868
|
+
},
|
|
1869
|
+
{
|
|
1870
|
+
"name": "tx_hash",
|
|
1871
|
+
"type": {
|
|
1872
|
+
"kind": "field"
|
|
1873
|
+
},
|
|
1874
|
+
"visibility": "private"
|
|
1875
|
+
},
|
|
1876
|
+
{
|
|
1877
|
+
"name": "unique_note_hashes_in_tx",
|
|
1878
|
+
"type": {
|
|
1879
|
+
"fields": [
|
|
1880
|
+
{
|
|
1881
|
+
"name": "storage",
|
|
1882
|
+
"type": {
|
|
1883
|
+
"kind": "array",
|
|
1884
|
+
"length": 64,
|
|
1885
|
+
"type": {
|
|
1886
|
+
"kind": "field"
|
|
1887
|
+
}
|
|
1888
|
+
}
|
|
1889
|
+
},
|
|
1890
|
+
{
|
|
1891
|
+
"name": "len",
|
|
1892
|
+
"type": {
|
|
1893
|
+
"kind": "integer",
|
|
1894
|
+
"sign": "unsigned",
|
|
1895
|
+
"width": 32
|
|
1896
|
+
}
|
|
1897
|
+
}
|
|
1898
|
+
],
|
|
1899
|
+
"kind": "struct",
|
|
1900
|
+
"path": "std::collections::bounded_vec::BoundedVec"
|
|
1901
|
+
},
|
|
1902
|
+
"visibility": "private"
|
|
1903
|
+
},
|
|
1904
|
+
{
|
|
1905
|
+
"name": "first_nullifier_in_tx",
|
|
1906
|
+
"type": {
|
|
1907
|
+
"kind": "field"
|
|
1908
|
+
},
|
|
1909
|
+
"visibility": "private"
|
|
1910
|
+
},
|
|
1911
|
+
{
|
|
1912
|
+
"name": "recipient",
|
|
1913
|
+
"type": {
|
|
1914
|
+
"fields": [
|
|
1915
|
+
{
|
|
1916
|
+
"name": "inner",
|
|
1917
|
+
"type": {
|
|
1918
|
+
"kind": "field"
|
|
1919
|
+
}
|
|
1920
|
+
}
|
|
1921
|
+
],
|
|
1922
|
+
"kind": "struct",
|
|
1923
|
+
"path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress"
|
|
1924
|
+
},
|
|
1925
|
+
"visibility": "private"
|
|
1926
|
+
}
|
|
1927
|
+
],
|
|
1928
|
+
"return_type": null
|
|
1929
|
+
},
|
|
1930
|
+
"bytecode": "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",
|
|
1931
|
+
"debug_symbols": "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",
|
|
1932
|
+
"brillig_names": [
|
|
1933
|
+
"process_log"
|
|
1934
|
+
]
|
|
1935
|
+
},
|
|
1936
|
+
{
|
|
1937
|
+
"name": "entrypoint",
|
|
1938
|
+
"is_unconstrained": false,
|
|
1939
|
+
"custom_attributes": [
|
|
1940
|
+
"private",
|
|
1941
|
+
"noinitcheck"
|
|
1942
|
+
],
|
|
1943
|
+
"abi": {
|
|
1944
|
+
"error_types": {
|
|
1945
|
+
"11091894166229312484": {
|
|
1946
|
+
"error_kind": "fmtstring",
|
|
1947
|
+
"item_types": [],
|
|
1948
|
+
"length": 20
|
|
1949
|
+
},
|
|
1950
|
+
"16761564377371454734": {
|
|
1951
|
+
"error_kind": "string",
|
|
1952
|
+
"string": "Array index out of bounds"
|
|
1953
|
+
},
|
|
1954
|
+
"1705275289401561847": {
|
|
1955
|
+
"error_kind": "string",
|
|
1956
|
+
"string": "Mismatch note header storage slot."
|
|
1957
|
+
},
|
|
1958
|
+
"17843811134343075018": {
|
|
1959
|
+
"error_kind": "string",
|
|
1960
|
+
"string": "Stack too deep"
|
|
1961
|
+
},
|
|
1962
|
+
"5019202896831570965": {
|
|
1963
|
+
"error_kind": "string",
|
|
1964
|
+
"string": "attempt to add with overflow"
|
|
1965
|
+
},
|
|
1966
|
+
"5727012404371710682": {
|
|
1967
|
+
"error_kind": "string",
|
|
1968
|
+
"string": "push out of bounds"
|
|
1969
|
+
},
|
|
1970
|
+
"6869395374906889440": {
|
|
1971
|
+
"error_kind": "string",
|
|
1972
|
+
"string": "Mismatch note header contract address."
|
|
1973
|
+
}
|
|
1974
|
+
},
|
|
1975
|
+
"parameters": [
|
|
1976
|
+
{
|
|
1977
|
+
"name": "inputs",
|
|
1978
|
+
"type": {
|
|
1979
|
+
"fields": [
|
|
1980
|
+
{
|
|
1981
|
+
"name": "call_context",
|
|
1982
|
+
"type": {
|
|
1983
|
+
"fields": [
|
|
1984
|
+
{
|
|
1985
|
+
"name": "msg_sender",
|
|
1986
|
+
"type": {
|
|
1987
|
+
"fields": [
|
|
1988
|
+
{
|
|
1989
|
+
"name": "inner",
|
|
1990
|
+
"type": {
|
|
1991
|
+
"kind": "field"
|
|
1992
|
+
}
|
|
1993
|
+
}
|
|
1994
|
+
],
|
|
1995
|
+
"kind": "struct",
|
|
1996
|
+
"path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress"
|
|
1997
|
+
}
|
|
1998
|
+
},
|
|
1999
|
+
{
|
|
2000
|
+
"name": "contract_address",
|
|
2001
|
+
"type": {
|
|
2002
|
+
"fields": [
|
|
2003
|
+
{
|
|
2004
|
+
"name": "inner",
|
|
2005
|
+
"type": {
|
|
2006
|
+
"kind": "field"
|
|
2007
|
+
}
|
|
2008
|
+
}
|
|
2009
|
+
],
|
|
2010
|
+
"kind": "struct",
|
|
2011
|
+
"path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress"
|
|
2012
|
+
}
|
|
2013
|
+
},
|
|
2014
|
+
{
|
|
2015
|
+
"name": "function_selector",
|
|
2016
|
+
"type": {
|
|
2017
|
+
"fields": [
|
|
2018
|
+
{
|
|
2019
|
+
"name": "inner",
|
|
2020
|
+
"type": {
|
|
2021
|
+
"kind": "integer",
|
|
2022
|
+
"sign": "unsigned",
|
|
2023
|
+
"width": 32
|
|
1757
2024
|
}
|
|
1758
2025
|
}
|
|
1759
2026
|
],
|
|
@@ -2188,16 +2455,173 @@
|
|
|
2188
2455
|
"visibility": "private"
|
|
2189
2456
|
},
|
|
2190
2457
|
{
|
|
2191
|
-
"name": "
|
|
2458
|
+
"name": "app_payload",
|
|
2192
2459
|
"type": {
|
|
2193
|
-
"
|
|
2460
|
+
"fields": [
|
|
2461
|
+
{
|
|
2462
|
+
"name": "function_calls",
|
|
2463
|
+
"type": {
|
|
2464
|
+
"kind": "array",
|
|
2465
|
+
"length": 4,
|
|
2466
|
+
"type": {
|
|
2467
|
+
"fields": [
|
|
2468
|
+
{
|
|
2469
|
+
"name": "args_hash",
|
|
2470
|
+
"type": {
|
|
2471
|
+
"kind": "field"
|
|
2472
|
+
}
|
|
2473
|
+
},
|
|
2474
|
+
{
|
|
2475
|
+
"name": "function_selector",
|
|
2476
|
+
"type": {
|
|
2477
|
+
"fields": [
|
|
2478
|
+
{
|
|
2479
|
+
"name": "inner",
|
|
2480
|
+
"type": {
|
|
2481
|
+
"kind": "integer",
|
|
2482
|
+
"sign": "unsigned",
|
|
2483
|
+
"width": 32
|
|
2484
|
+
}
|
|
2485
|
+
}
|
|
2486
|
+
],
|
|
2487
|
+
"kind": "struct",
|
|
2488
|
+
"path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"
|
|
2489
|
+
}
|
|
2490
|
+
},
|
|
2491
|
+
{
|
|
2492
|
+
"name": "target_address",
|
|
2493
|
+
"type": {
|
|
2494
|
+
"fields": [
|
|
2495
|
+
{
|
|
2496
|
+
"name": "inner",
|
|
2497
|
+
"type": {
|
|
2498
|
+
"kind": "field"
|
|
2499
|
+
}
|
|
2500
|
+
}
|
|
2501
|
+
],
|
|
2502
|
+
"kind": "struct",
|
|
2503
|
+
"path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress"
|
|
2504
|
+
}
|
|
2505
|
+
},
|
|
2506
|
+
{
|
|
2507
|
+
"name": "is_public",
|
|
2508
|
+
"type": {
|
|
2509
|
+
"kind": "boolean"
|
|
2510
|
+
}
|
|
2511
|
+
},
|
|
2512
|
+
{
|
|
2513
|
+
"name": "is_static",
|
|
2514
|
+
"type": {
|
|
2515
|
+
"kind": "boolean"
|
|
2516
|
+
}
|
|
2517
|
+
}
|
|
2518
|
+
],
|
|
2519
|
+
"kind": "struct",
|
|
2520
|
+
"path": "authwit::entrypoint::function_call::FunctionCall"
|
|
2521
|
+
}
|
|
2522
|
+
}
|
|
2523
|
+
},
|
|
2524
|
+
{
|
|
2525
|
+
"name": "nonce",
|
|
2526
|
+
"type": {
|
|
2527
|
+
"kind": "field"
|
|
2528
|
+
}
|
|
2529
|
+
}
|
|
2530
|
+
],
|
|
2531
|
+
"kind": "struct",
|
|
2532
|
+
"path": "authwit::entrypoint::app::AppPayload"
|
|
2194
2533
|
},
|
|
2195
2534
|
"visibility": "private"
|
|
2196
2535
|
},
|
|
2197
2536
|
{
|
|
2198
|
-
"name": "
|
|
2537
|
+
"name": "fee_payload",
|
|
2199
2538
|
"type": {
|
|
2200
|
-
"
|
|
2539
|
+
"fields": [
|
|
2540
|
+
{
|
|
2541
|
+
"name": "function_calls",
|
|
2542
|
+
"type": {
|
|
2543
|
+
"kind": "array",
|
|
2544
|
+
"length": 2,
|
|
2545
|
+
"type": {
|
|
2546
|
+
"fields": [
|
|
2547
|
+
{
|
|
2548
|
+
"name": "args_hash",
|
|
2549
|
+
"type": {
|
|
2550
|
+
"kind": "field"
|
|
2551
|
+
}
|
|
2552
|
+
},
|
|
2553
|
+
{
|
|
2554
|
+
"name": "function_selector",
|
|
2555
|
+
"type": {
|
|
2556
|
+
"fields": [
|
|
2557
|
+
{
|
|
2558
|
+
"name": "inner",
|
|
2559
|
+
"type": {
|
|
2560
|
+
"kind": "integer",
|
|
2561
|
+
"sign": "unsigned",
|
|
2562
|
+
"width": 32
|
|
2563
|
+
}
|
|
2564
|
+
}
|
|
2565
|
+
],
|
|
2566
|
+
"kind": "struct",
|
|
2567
|
+
"path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"
|
|
2568
|
+
}
|
|
2569
|
+
},
|
|
2570
|
+
{
|
|
2571
|
+
"name": "target_address",
|
|
2572
|
+
"type": {
|
|
2573
|
+
"fields": [
|
|
2574
|
+
{
|
|
2575
|
+
"name": "inner",
|
|
2576
|
+
"type": {
|
|
2577
|
+
"kind": "field"
|
|
2578
|
+
}
|
|
2579
|
+
}
|
|
2580
|
+
],
|
|
2581
|
+
"kind": "struct",
|
|
2582
|
+
"path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress"
|
|
2583
|
+
}
|
|
2584
|
+
},
|
|
2585
|
+
{
|
|
2586
|
+
"name": "is_public",
|
|
2587
|
+
"type": {
|
|
2588
|
+
"kind": "boolean"
|
|
2589
|
+
}
|
|
2590
|
+
},
|
|
2591
|
+
{
|
|
2592
|
+
"name": "is_static",
|
|
2593
|
+
"type": {
|
|
2594
|
+
"kind": "boolean"
|
|
2595
|
+
}
|
|
2596
|
+
}
|
|
2597
|
+
],
|
|
2598
|
+
"kind": "struct",
|
|
2599
|
+
"path": "authwit::entrypoint::function_call::FunctionCall"
|
|
2600
|
+
}
|
|
2601
|
+
}
|
|
2602
|
+
},
|
|
2603
|
+
{
|
|
2604
|
+
"name": "nonce",
|
|
2605
|
+
"type": {
|
|
2606
|
+
"kind": "field"
|
|
2607
|
+
}
|
|
2608
|
+
},
|
|
2609
|
+
{
|
|
2610
|
+
"name": "is_fee_payer",
|
|
2611
|
+
"type": {
|
|
2612
|
+
"kind": "boolean"
|
|
2613
|
+
}
|
|
2614
|
+
}
|
|
2615
|
+
],
|
|
2616
|
+
"kind": "struct",
|
|
2617
|
+
"path": "authwit::entrypoint::fee::FeePayload"
|
|
2618
|
+
},
|
|
2619
|
+
"visibility": "private"
|
|
2620
|
+
},
|
|
2621
|
+
{
|
|
2622
|
+
"name": "cancellable",
|
|
2623
|
+
"type": {
|
|
2624
|
+
"kind": "boolean"
|
|
2201
2625
|
},
|
|
2202
2626
|
"visibility": "private"
|
|
2203
2627
|
}
|
|
@@ -3300,41 +3724,139 @@
|
|
|
3300
3724
|
"path": "authwit::aztec::protocol_types::transaction::tx_context::TxContext"
|
|
3301
3725
|
}
|
|
3302
3726
|
}
|
|
3303
|
-
],
|
|
3304
|
-
"kind": "struct",
|
|
3305
|
-
"path": "authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"
|
|
3727
|
+
],
|
|
3728
|
+
"kind": "struct",
|
|
3729
|
+
"path": "authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"
|
|
3730
|
+
},
|
|
3731
|
+
"visibility": "databus"
|
|
3732
|
+
}
|
|
3733
|
+
},
|
|
3734
|
+
"bytecode": "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",
|
|
3735
|
+
"debug_symbols": "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lvXEQs8W2nefGbYsyu016PXus74ti3K7tuiypWfLemKha8tay+3astZyu7astdyuLWstt2cL67vPjIUF2nefjeGf9t1nhi3riYWuLbps6dmynljo2rIot9ugF+V2bVmU27VlUW7HFmV995lly1rL7dqy1nK7tqy13K4tumzp2bKeWOgsLCjtu8+G8K+07z4zbFlPLHRtWU8s9GyhffeZYcui3F6DXu8+69uyKLdriy5berasJxa6tqy13K4tay23a8tay+3astZye7awvvvMWFigfffZGP5p331m2LKeWOjaosuWni3riYWuLYtyuw16UW7XlkW5XVsW5fZsYX33mWXLWsvt2rLWcru2rLXcri26bOnZsp5Y6C0s0L77bAz/tO8+M2xZTyx0bVlPLPRsoX33mWHLotxeg17vPuvbsii3a4suW3q2rCcWurastdyuLWstt2vLWsvt2rLWcnu2sL77zFhYoH332Rj+ad99Ztiynljo2qLLlp4t64mFri2LcrsNelFu15ZFuV1bFuX2bGF995lly1rL7dqy1nK7tqy13K4tumzp2bKeWOgtLNC++2wM/7TvPjNsWU8sdG1ZTyz0bKF995lhy6LcXoNe7z7r27Iot2uLLlt6tqwnFrq2rLXcri1rLbdry1rL7dqy1nJ7trC++8xYWKB999kY/mnffWbYsp5Y6Nqiy5aeLeuJha4ti3K7DXpRbteWRbldWxbl9mxhffeZZctay+3astZyu7astdyuLbps6dmynljoLSzQvvtsDP+07z4zbFlPLHRtWU8sdGxJtO8+M2xZlNtp0Gm9+6xvy6Lcri26bOnZsp5Y6Nqy1nK7tqy13K4tay23a8tay+3Zwvrus/HCQqJ999kY/mnffWbYsp5Y6Nqiy5aeLeuJha4ti3K7DXpRbteWRbldWxbl9mxhffeZZctay+3astZyu7astdyuLbps6dmynljoLSzQvvtsDP+07z4zbFlPLHRtWU8s9GyhffeZYcui3F6DXu8+69uyKLdriy5berasJxa6tqy13K4tay23a8tay+3astZye7awvvvMWFigfffZGP5p331m2LKeWOjaosuWni3riYWuLYtyuw16UW7XlkW5XVsW5fZsYX33mWXLWsvt2rLWcru2rLXcri26bOnZsp5Y6C0s0L77bAz/tO8+M2xZTyx0bVlPLPRsoX33mWHLotxeg17vPuvbsii3a4suW3q2rCcWurastdyuLWstt2vLWsvt2rLWcnu2sL77zFhYoH332Rj+ad99Ztiynljo2qLLlp4t64mFri2LcrsNelFu15ZFuV1bFuX2bGF995lly1rL7dqy1nK7tqy13K4tumzp2bKeWOgtLNC++2wM/7TvPjNsWU8sdG1ZTyz0bKF995lhy6LcXoNe7z7r27Iot2uLLlt6tqwnFrq2rLXcri1rLbdry1rL7dqy1nI7tmTWd5+NFxYy7bvPhvCfad99Ztiynljo2qLLlp4t64mFri2LcrsNelFu15ZFuV1bFuX2bGF995lly1rL7dqy1nK7tqy13K4tumzp2bKeWOgtLNC++2wM/7TvPjNsWU8sdG1ZTyz0bKF995lhy6LcXoNe7z7r27Iot2uLLlt6tqwnFrq2rLXcri1rLbdry1rL7dqy1nJ7trC++8xYWKB999kY/mnffWbYsp5Y6Nqiy5aeLeuJha4ti3K7DXpRbteWRbldWxbl9mxhffeZZctay+3astZyu7astdyuLbps6dmynljoLSzQvvtsDP+07z4zbFlPLHRtWU8s9GyhffeZYcui3F6DXu8+69uyKLdriy5berasJxa6tqy13K4tay23a8tay+3astZye7awvvvMWFigfffZGP5p331m2LKeWOjaosuWni3riYWuLYtyuw16UW7XlkW5XVsW5fZsYX33mWXLWsvt2rLWcru2rLXcri26bOnZsp5Y6C0s0L77bAz/tO8+M2xZTyx0bVlPLPRsoX33mWHLotxeg17vPuvbsii3a4suW3q2rCcWurastdyuLWstt2vLWsvt2rLWcnu2sL77zFhYoH332Rj+ad99Ztiynljo2qLLlp4t64mFri2LcrsNmpRyrQa91nK7P6K1ltuxpbC++8yyZVFu15ZFuV1b1lpup0GXTVeDfmzQZb37rP8jWk8sdG1ZTyx0bVmU27VlUW7PlvXus26DXu8+69uynljo2rIot2uLctqi4U65GsqjLaSUa9kyDeWm7VZFSCH/tPWLUmRwrXr74FpKp3ZkurRqR0ZAo3bot3dZtSPDVI11WDsy8Vi+I2OJVbs6rh25wVu1I3dh67fquK9Cv+XIqt1xX4V+X5BVu+O+Cv3mHct3x30V+h02Vu2O+yr022Cs36rjvgr9XhWrdsd9FfoNJVbt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",
|
|
3736
|
+
"brillig_names": [
|
|
3737
|
+
"get_note_internal",
|
|
3738
|
+
"decompose_hint",
|
|
3739
|
+
"get_auth_witness",
|
|
3740
|
+
"enqueue_public_function_call_internal",
|
|
3741
|
+
"call_private_function_internal",
|
|
3742
|
+
"debug_log_oracle_wrapper",
|
|
3743
|
+
"notify_set_min_revertible_side_effect_counter_oracle_wrapper",
|
|
3744
|
+
"notify_created_nullifier_oracle_wrapper",
|
|
3745
|
+
"directive_invert",
|
|
3746
|
+
"directive_integer_quotient",
|
|
3747
|
+
"directive_to_radix"
|
|
3748
|
+
],
|
|
3749
|
+
"verification_key": "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"
|
|
3750
|
+
},
|
|
3751
|
+
{
|
|
3752
|
+
"name": "compute_note_hash_and_optionally_a_nullifier",
|
|
3753
|
+
"is_unconstrained": true,
|
|
3754
|
+
"custom_attributes": [],
|
|
3755
|
+
"abi": {
|
|
3756
|
+
"error_types": {
|
|
3757
|
+
"11091894166229312484": {
|
|
3758
|
+
"error_kind": "fmtstring",
|
|
3759
|
+
"item_types": [],
|
|
3760
|
+
"length": 20
|
|
3761
|
+
},
|
|
3762
|
+
"16761564377371454734": {
|
|
3763
|
+
"error_kind": "string",
|
|
3764
|
+
"string": "Array index out of bounds"
|
|
3765
|
+
},
|
|
3766
|
+
"17843811134343075018": {
|
|
3767
|
+
"error_kind": "string",
|
|
3768
|
+
"string": "Stack too deep"
|
|
3769
|
+
},
|
|
3770
|
+
"5019202896831570965": {
|
|
3771
|
+
"error_kind": "string",
|
|
3772
|
+
"string": "attempt to add with overflow"
|
|
3773
|
+
},
|
|
3774
|
+
"8270195893599566439": {
|
|
3775
|
+
"error_kind": "string",
|
|
3776
|
+
"string": "Invalid public keys hint for address"
|
|
3777
|
+
}
|
|
3778
|
+
},
|
|
3779
|
+
"parameters": [
|
|
3780
|
+
{
|
|
3781
|
+
"name": "contract_address",
|
|
3782
|
+
"type": {
|
|
3783
|
+
"fields": [
|
|
3784
|
+
{
|
|
3785
|
+
"name": "inner",
|
|
3786
|
+
"type": {
|
|
3787
|
+
"kind": "field"
|
|
3788
|
+
}
|
|
3789
|
+
}
|
|
3790
|
+
],
|
|
3791
|
+
"kind": "struct",
|
|
3792
|
+
"path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress"
|
|
3793
|
+
},
|
|
3794
|
+
"visibility": "private"
|
|
3795
|
+
},
|
|
3796
|
+
{
|
|
3797
|
+
"name": "nonce",
|
|
3798
|
+
"type": {
|
|
3799
|
+
"kind": "field"
|
|
3800
|
+
},
|
|
3801
|
+
"visibility": "private"
|
|
3802
|
+
},
|
|
3803
|
+
{
|
|
3804
|
+
"name": "storage_slot",
|
|
3805
|
+
"type": {
|
|
3806
|
+
"kind": "field"
|
|
3807
|
+
},
|
|
3808
|
+
"visibility": "private"
|
|
3809
|
+
},
|
|
3810
|
+
{
|
|
3811
|
+
"name": "note_type_id",
|
|
3812
|
+
"type": {
|
|
3813
|
+
"kind": "field"
|
|
3814
|
+
},
|
|
3815
|
+
"visibility": "private"
|
|
3816
|
+
},
|
|
3817
|
+
{
|
|
3818
|
+
"name": "compute_nullifier",
|
|
3819
|
+
"type": {
|
|
3820
|
+
"kind": "boolean"
|
|
3821
|
+
},
|
|
3822
|
+
"visibility": "private"
|
|
3823
|
+
},
|
|
3824
|
+
{
|
|
3825
|
+
"name": "packed_note_content",
|
|
3826
|
+
"type": {
|
|
3827
|
+
"kind": "array",
|
|
3828
|
+
"length": 3,
|
|
3829
|
+
"type": {
|
|
3830
|
+
"kind": "field"
|
|
3831
|
+
}
|
|
3832
|
+
},
|
|
3833
|
+
"visibility": "private"
|
|
3834
|
+
}
|
|
3835
|
+
],
|
|
3836
|
+
"return_type": {
|
|
3837
|
+
"abi_type": {
|
|
3838
|
+
"kind": "array",
|
|
3839
|
+
"length": 4,
|
|
3840
|
+
"type": {
|
|
3841
|
+
"kind": "field"
|
|
3842
|
+
}
|
|
3306
3843
|
},
|
|
3307
|
-
"visibility": "
|
|
3844
|
+
"visibility": "public"
|
|
3308
3845
|
}
|
|
3309
3846
|
},
|
|
3310
|
-
"bytecode": "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",
|
|
3311
|
-
"debug_symbols": "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",
|
|
3847
|
+
"bytecode": "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",
|
|
3848
|
+
"debug_symbols": "7Z3drty2koXfxde+EMniX17lYBDk7wQGjCRwkgEGQd59erctdW+Lu2lVUWqytM6FcRyrpOK3qGatYrf0z7uff/nx71+///Dbf3//8913//nn3cfff/rhrw+//3b52z//vn/346cPHz9++PX7+//8bnr5w8fr8X/+8cNvL3/9868fPv317jtL5v27X377+eX/5Uv8fz98/OXdd8H++z/v3wWzOcJujnCbI2hzhN8cETZHbKebNkfkrRFx2hyxWfO4WfO4WfO4WfO4WfO4WfO4WfO4WfO4WfO0WfO0WfO0WfO0WfO0WfO0WfO0WfO0WfO0WfO0WfO8WfO8WfO8WfO8WfO8WfO8WfO8WfO8WfO8WfO8WXMzTdtDzPYQuz3EbQ+h7SF+e0jYHhK3h6TtIdvVN9vVN9vVN9vVN9vVN9vVN9vVN9vVN9vVN9vUf786NNovR8a4HOi/nDvvd2477Xhus+O57Y7ndjuem3Y8t9/x3GHHc8cdz73jfWl3vC/djvel2/G+dDvel27H+9LteF+6He9Lt+N96Xa8L92O96WT3pfZfTnyUtV8fXKa9jy52fPkds+Tuz1PTnue3O958rDnyeOeJ097nnzPO9TveYf6Pe9QL53nYaL59GFKdjn4snSWjo7ziUMKt2MTfU7G95RM6CmZ2FMyqadkckfJhKmnZExPydieknE9JdPTJ3AQfwJfqtX5/Ca8TuZ6gbD3BeLeF0h7XyDvfIE47X0Bs/cF7N4XcHtfgPa+wN53ctz7To5738lRficvpXWwPlU+ea3zYT6zC7ejbcif08ldpZOmvtIxfaVj+0rH9ZUO9ZWO7yud0Fc68eB0zJIOOfsqnfXRKYT5MzyFWEg+jZx8Hjj5PI2cvBk5eTty8m7k5Gnk5H3XyVNYks/TOvkwcvJ9r7CV5PteYSvJ973CPkzeTn2vsJXk+15hK8n3vcJWku97ha0k3/cKW0l+4BXWTn2vsHlJPjpXO5rscjRFqhx9s8dk77GUkr5UgHPS1twn/Rlh3+v8EAj7rjaGQNh3zTMCQtN35TUEwr7rvyEQ9l2FDoGw71p4CIQEhFKEffuCIRDCnYgRwp2IEcKdiBHCnUgRWrgTMUK4EzFCuBMxQrgTMUICQilCuBMxQrgTMUK4EzFCuBMxQrgTKUIHdyJGCHciRgh3IkYIdyJGSEAoRYi6sI7wMtEWhOS/RkhYkesIo8lz0q/T+IwQK7IYIVZkMUKsyGKEWJHFCNEvFCNEv1CMEHWhGCH6hWKE6BdKEYqfnRhsijNCRzWExqU5G+NNfHX0NR3TVzq2r3RcX+lQX+n4vtIJfaUT+0on9ZVOPjQda24PhblsHFZXkoePFrBhGjl5M3LyduTk3cjJ08jJ+5GTDyMnH7tO/vFvxEMaOfm+V9jHyce+V9hK8n2vsJXk+15hK8n3vcJWku97ha0k3/cKW0m+7xW2kvzIK2zse4Ud4Rsjse91fgSEqe9qYwiEfdc8QyDsu/IaAmHf9d8QCAkIpQj7roWHQNh3RT4Ewr59wRAI4U7ECOFOpAgz3IkYIdyJGCHciRgh3IkYIQGhFCHciRgh3IkYIdyJGCHciRgh3IkQoZvgTsQI4U7ECOFOxAjhTsQICQilCOFOxAhRFwofIeIMVmTh7xydwYosRogVWYwQK7IYIVZkMUL0C8UI0S8UI0RdKEaIfqEUoUW/UIxQvCLTlGaERKGC0Fw85pejjaXbT/lD6WDv8/x7UB/cVDv1tDzgxUzutZbXkYbTjDSeZqTpNCPNZxmp/CHow4zUnGak9jQjdacZKZ1mpKepkdxpaiR3mhrJ6amRaPkBuPFTLRF7M0nWhdXTZJzTU1E15UJ66q+2XPRUa2256Knt2nLRUwm25ULgUuSip8psy0VPTdqWi54KdiOXbQ/yfvhMQUenrY6bUjxtLd2Soj9t5b2N4sPHgDl/2jq9KcXTVvVNKZ7WAzSlSKDYgOJp/UVTiqd1I00pwru0oAjv0oIivEsDigHepQVFeBctb992AQ5Kj5bwcXq0JGipRkt4Wj1awlnr0RL+Xo+W6DLo0RK9DjVaRnRc9GiJvo8eLdH30aMl+j56tCRoqUZL9H30aIm+jx4t0ffRoyX6Pnq0RN9HjZYJfR89WqLvo0dL9H30aIm+jx4tCVqq0RJ9Hz1aou+jR0v0ffRoib6PGi0z/OVAWj5+j5D8dcXQ8jgtHz91PaOO1aMl6lg9WqKO1aMl6lg9WmL/UouWNGH/Uo+W8Jd6tMT+pR4tsX+pR0tSo6VLedHSRMHRVy56eihtuejpR7Tlosfbt+Wixye35aLHczblYvT4t7Zc9Hihtlz0+Iq2XPTU6Ju4bH2L8sNn5pMhUGxA8aS1dGOKJ628t1J8+AxUMiet0xtTPGlV35jiST1AW4r2pI6hMcWT+ovGFE/qRhpThHdpQZFAsQFFeJcWFOFdWlCEd/kmigP8doIsHJQeLeHj1Gjp4Cb1aAlPq0dLOGs9WsLf69GSoKUaLdHr0KMlOi56tETfR4+W6Pvo0RJ9HzVaEvo+erRE30ePluj76NESfR89WhK0VKMl+j56tETfR4+W6Pvo0RJ9Hz1aou+jRkuPvo8eLdH30aMl+j56tETfR4+WBC3VaAl/OZCWD9/fQAF17EBaPn4mY0Adq0dL1LF6tEQdq0dLgpZqtMT+pR4tsX+pR0v4Sz1aYv9Sj5bYv1SjZTy675PiDNwZeqzl5RRpOTjd2o9mioWjaelvUbq1t8yl1XUdpznJOO1JxulOMk46yTj9ScYZtIzTL2uQD4VxxpOMM51knFnNOONSIMa8GmdSUw9VxqmmHqqMU0095Je9+DC59TjV1EOVcdJJxqmmHrobpzHrceqphx6PU009FOKcc0jTepxq6qHKONXUQ4/HmdXUQyH5OY9M63GqqYcq41RTD1XGqaYeitPcv40mrcdJJxmnmnqoMk419VBlnGrqobtx2rAep5p6qDJONfXQw3H6SU09FPO8fqaJ1uNUUw9VxqmmHqqMU0899HicpGWcafkcSuv1009q6qHKONXUQ5VxqqmHKuNUUw8l5+Zxkl2PU0099HicRk09VBmnmnqoMk419dDdOP20HqeaeqgyTtIyzmzmM+eCLzNq6qHKONXUQ5VxqqmHKuNUUw9lN+ecyazHqaYeejxOq6YeqoxTTT1UGaeaeigv3+/LYf05ZNXUQ5Vx0knGqaceejxOPfXQbZxx3de0euqhx+NUUw+Zyc9fTDVTWDszq6Yiqo3UqamJqiNVUxVVR9pzXXT7LaWhGCsjdW6aGyjOmVvW1pfSdlOYt5/cdPd9c5t96eg4zV8KdfGuunw5+kqx56prHIoEig0o9lwxjkOx53p0HIo9V7vjUOy5lh6HYs91+jAUqWcPMA7Fnv3FOBThXVpQhHdpQZFAsQFFeJcWFOFdWlCEd2lBEd6lBUV4lwYUPbxLC4rwLi0owru0oAjv0oIigWIDivAuLSjCu7SgCO/SgiK8SwuK8C4NKAZ4lxYUT+td7Pzo/UseqUIxBVqeYR/y/XPpc+FoitOsEMW7QTpnPzM/rdN5IvPT+qInMicwP5z5aT3XE5mf1qE9kflp/dwTmZ/W/T2R+Wm94vOYd/3mKK3M4UOPZw4fejxz+NDjmROYH84cPvR45vChxzOHDz2eOXzo4cy7fqvasMxzXJjntGZOYN6c+e0hvpSsXTNH3SJkfqWISqQFRdQWLSiiWvgminmhGF8G9vBTNN3yTnT3rKvy0W55LhbZe30Kh1qzvGvQWmPvD75qiW64Gi27fv8etNymJdyBHi2xK6BHS+w26NGSoKUaLdFl0KMleh16tETHRY+W6Pvo0RJ9Hy1ahq7fMwwtt2mJvo8eLdH30aMl+j56tCRoqUZL9H30aIm+jx4t0ffRoyX6Pnq0RN9HjZYGfR89WqLvo0dL9H30aIm+jx4tCVqq0RJ9Hz1aou+jRksLTzKQltbdtCS/0hK1z0BaRjP/DNe+TuOzlgQt1WiJ2kePlqh99GiJPS89WmLPS4+W2PNSo6WDv9SjJfa89GiJPS89Wurp+5BdtCSKr7S8jpROM1I9PYPaSPU46tpI9fjN2kj1uLHaSPV4lcpISU8lXxupnjq3NlJFVaCf5pF6YypVYAphPjqFmF5ValcuinbSmnIhcClyUbTD05SLot2SplwU7Tw05aKoi9+Ui6KOeEsuXlF3eRuXh098Dl5Rp7Ypl9PWuxUup613K1wIXIpcTlvvVrictt6tcDltvVvhctp6t8LltPXuYy4B9W6Zy2nr3RF+YxJOW3UPoc5pa/8h1CGo07E6p/VBQ6hzWjc2hDqn9YRDqHNaZzqEOqf1xyOoE0/r0odQB72CntVBr6BnddAr6Fkdgjodq4NeQc/qoFfQszroFfSsDnoFPauDXkHH6iT0CnpWB72CntVBr6BnddAr6Fkdgjodq4NeQc/qoFfQszroFfSsDnoFHauT4Xc6fr57JqjT71PYMmq2ntVBzdazOqjZelYHNVvP6mB/p1914oT9nZ7Vgd/pWR3s7/SsDvZ3elaH1Kjjl2eAuTBRRR1LtGChdHfu0qlN9vPjUU2+TyR9ZqjH0T+PoR7f/TyGetzx8xjq8bDPY6jHaT6NodHjB5/HUI9rex5DPd7Kk70x9BWG5Mx8NLlo7hlesegxNU2xELCUsCgyCC2xKKr5W2JRVMa3xKKoMm+JRVGx3RCLVVQ/t8SiqCRuiQVVbhELqtwiFgKWEhZUuUUsqHKLWFDlFrGgyi1iQZVbwuJQ5RaxoMotYkGVW8SCKreIhU6KhW5YLv+7x1I4dQxz1i4Zt2J41pK4JcOz1s8tGZ612G7J8KyVeUuGZy3jGzKks9b8LRme1SC0ZHhWN9GS4VmtR0uGBIZ1honcwtDHFUP4FDlD+BQ5Q/iUb2EYllOnGFYM4VPkDOFTxAw9fMq3MMwzD5fvTj0zhE+RM4RPkTOET9nIcO1TPIGhmCF8ipyhUp+SKwzNRPNvqC6nM48Z+tvzD701tGKo1Ke0ZWgpLAzDuj5U6lMaM1weIuGdW/llr9SnHMkwKPUpbRm6OB/s6e55sDNDpT6lLUOK8xi9n1afh0GpT2nMMIQbw/W9rNSntGUY4szDR1MpJi9I56xjSKtiMhCAHwtcqQPqFzjs0sHA4a0OBg4jdjBwuLbmwPM8xBjN6qvsERbvYODwgwcDh3lsDTxavwB3eQUcTvNg4ATgxwKH0xQBvzKEeZQzhB+UM4TFkzOEaxMzVPQW++cxhLeSM4RdkjOEA5IzJDCsM0xmYZi8rfVJHrZeFb0wfRDgcEAHA4ddOhg4vNXBwGHEjgWe4dqaA3+4m5Nh8Q4GDj94MHCYx9bAH+/mZALwY4HDaR4KPGl6g+QzgF8ZwjzKGcIPihlqenPf0xiippUzRJkqZ4g1Rc4Qa4qcIdqGYoZaXx92KEOsy3KGWJfrDINZEgkmxBVDAsNvYDjRjWFaMUSTR84QfRs5Q9TY38DQmjnrYH1YMUSN/S3zMPsbw/WaghpbzFDrO90OZQifImfYtU+Z8lsMr7l37Q8qudPAuT+xHra+kruZlnvDmLsnbmZfOJrsfGai231kU+lYt9QVjuyrY69MApismEQwWTFJYLJiksHkaybPfP9Xt0wMmKyYWDBZMXFgsmJCYLJigjp2zURPHXv/MP0Kk3Rz64ni3dEhF936fDDZ6e7YwqH29oR5a++eqHw5+EpbT4U8Am09tfcItPVU9QPQ9nr8wgi09TiREWjr8Tgj0NbjnkagTaB9IG09jm8E2vCSR9KGlzySNrzkkbThJQ+kHeAlj6QNL3kkbXjJI2nDSx5Jm0D7QNrwkkfShpc8kja85JG04SWPpA0veSDtCC95JG14ySNpw0seSRte8kjaqLeb0rbuRpv8ijZqkqa0o5l/wGbjC4HXtBNqkiNpoyY5kjZqkiNpoyY5kjaB9oG00d8+kjbq7SNpo799JG30t4+kfbCXdH4B6GJ+TNv5+cxkbomXn4kT8vK2In937Av3tS5hdtf+jt7LsS9Ejn6z0QBEDIh8RcSCyFdEHIh8RYRA5CsiHkS+IhJA5CsiEUS+IpLOR8QvxbC/f0h18djL1Zbnz03p9hjcl42TK78TVrgN+eXphPVwU37dVM/XbLqpXK/ZdFM1XrOhrrLpplq6ZtNNpXLNppsq4ZpNNyv0NZtu1ruXbMzRq0daPoy9TY9XjxTCnHoK8e6T+9Jzu+ZuBs7dDpy7Gzh3Gjh3P3DuYeDc48C5p55zp2VPJeRpnXseN3fb9bpayb3rdbWSe9fraiX3rtfVSu5dr6uV3LteVyu5d72uVnLvel2t5D7wumq7XleXNmB6/XWI0vcsnvR7iuy6Xt2HINh1jTEEwa4rnSEIdl1vDUGQQFBIsOvacwiCXVfAQxDsug4fgmDXbmAIgvAkQoIETyIlCE8iJQhPIiUITyIlSCAoJAhPIiUITyIlCE8iJQhPIiUITyIk6OFJpAThSaQE4UmkBOFJpAQJBIUE4UmkBOFJpARRD8qejJkD1mLZ82BywFosJYi1WEoQa7GUINZiKUH0B6UE0R+UEkQ9KCQY0R+UEkR/UEqQxATjtBCM5hXB6wX83hcIe18g7n2BtPcF8s4XaPAWgsoFzN4XsHtfwO19gb3v5LT3nZz2vpMz2gfV5cJN87HWGfp6uTj8sZH6CKJ9ICWI9oGUINoHUoJoH0gJon0gI2imCf2D+o5ctgvCya8RooEgRohdTTFC+BIxQgJCKUI4EzFCWBMxQngTMUKYEzFCuBMpwr6fTzwGQrxI8Ug/bfAmxUNx41WKh+LOwH0g7qMfgXx23Aa4j8RtgftI3A64D6y7j36c99lxe+A+Ejdc5aG44SoPxQ1XeShuuMojcTu4ykNxw1Ueihuu8lDcBNxH4n7iUnnXUyjjvkExFO9eKl18WbW7vVXVeXP7nYX1pbQH+TYlTZCnZ3kM5OlZHgt5epbHQZ6e5SHI07M8HvL0LE+APB1/i40i5OlZngR5epYHXYOe5fHoGnQtD7oGXcuDrkHX8qBr0LU8BHl6lgddg67lgS3tWZ6gqDSY3CyPM7kij5vszOWSx+13jOWN70E6dEFRIQExCWLqEVNRkQIxFW2EQExF9SnEVLTJAjEVbcnoF7PiM6OiDRyIqWi7B2KiA6RITHSAFIlJEFOPmOgAKRITHSBFYqIDpEhMdID0iJnQNFAkJqzJN4lJizwhTxV5KOZ5kJf/ezu3c/YLdAL05tCTWW6KZE0BOkr9J0BHSf4E6CidnwAdJe4O0K1foDsqQMdm5PHQM+r/J0DH5t4ToGMT7gnQ4UifAJ0A/XjocKQ7QJ/yrU63BehwpE+ADkf6BOhwpE+ADkd6OHQzwZE+AToc6ROgw5E+AToc6ROgE6AfDx2O9AnQ4UifAB2O9Hjo5ujqZXkzhrEUH0P3Ps/PkfHBTbVT379w3cTK0dYsX9iy9u717G98F2yIH4Ia4yCmHjEJYuoR00NMPWIGiKlHzAgx9YiZIKYeMTPEHEfMxz9qMXaCmHrENBBTj5joACkSEx0gRWISxNQjJjpAisREB0iRmOgAKRITHSA9Yjo0DRSJqacAouUrGMZPtUQuvc1FTHJ2EDErvVmnpwCCmE5PAQQxnZ4CCGI6PVtgEJP0VLMQk/RsgUFM0rMFdgIxKz6T9GyBQUwiiKlHTHSAFImJDpAiMdEBUiQmOkCKxEQHSI+YHh0gRWKiA6RITDQNFIkpLoBuj4YI7u6JDCf68ZXPYChlGCYwFDM0YChmaMFQzNCBoZghgaGYoQdDaX0YAhiKGUYwFDOET5EzhE8RM4zwKXKG8ClyhvApcobwKXKGBIZihqixxQyTeE0xeX4OcbC+ylDjV3uTBUMxQweGYoYEhmKGHgzFDAMYihlGMBQzTGAorg8zGEoZyt+cDoYZPkXOED5FzhA+Rc6QwFDMED5FzhA+Rc4QPkXOEDW2lKGdigw9Ld9qf/0N+GuMmRgxhhFjGTGOEUOMGM+ICYyYyIhJjBjGPLCMeWAZ88Ay5oFlzAPLmAeWMQ8sYx5YxjywjHlgGfPAMeaBY8wDx5gHjjEPHGMeOMY8cIx54BjzwDHmgWPMA2LMA2LMA2LMA2LMA2LMA2LMA2LMA2LMA2LMA2LMA8+YB54xDzxjHnjGPPCMeeAZ88Az5oFnzAPPmAeeMQ8CYx4ExjwIjHkQGPMgMOZBYMyDwJgHgTEPAmMeBMY8iIx5EBnzIDLmQWTMg8iYB5ExDyJjHkTGPIiMeRAZ8yAx5kFizIPEmAeJMQ8SYx4kxjxIjHmQGPMgMeZBYsyDzJgHmTEPMmMeZMY8yIx5kLfNg0IPKIb5O5gumVt/ycQvFwh7XyDufYG09wXyvhdw07T3BczeF7B7X8DtfQHa+wLiOzmRWy7g4/oCYe8LxL0vkHa+QLlTTHHyc5883n3PyV2a95/DHC+MeGGeF1aUn5JdwpIrhUVeWOKFZVZYuYNcDzO8MMsLK8+SNOUlzNpCGPHCPC8s8MIiLyzxwjIrzE28MMMLs7ww3ix5o5+77AZ6e/u0+7Jn597o5z6Oydtj3ujnPo4xjBjLiHGMGGLEeEZMYMQw5sEb/dxweyKZWcfk7TFv9HMfx5TnQaYvMcHYdYxlxDhGDDFiPCMmMGIiIyYxYvL2mDf6uY9jGPMgMOZBYMyDN37THM38kW1ff3HjS1TxSiaEuUI1Ia3vh3LPsBrlWVGBFVWceSbG+SPIxOzXUYkVlTlR5f5hNcqwoiwryrGiiBXlWVGBFcWaG4k1NxJrbmTW3MisuZFZcyOz5ka5t2jy7Rml2RaiPCsqsKIiI4rKnas4zZ/X8e7z2qQvMZYRU6R++VyfY+6+I7jEUDlmHlAMbh1TJB6XN8vGHNcxgRFTpJ3uvj1YYJDKMbPtTT6sY4p3YYozg1TIrfy9wFtMLuhTtvJmWtZgM4W0mj1lJ1+NKt+BZpkMLw+OXkcRK8qzogIrqnwHmuCXqLSmUbbHF+Xnsv7lJl1HWVaUY0URK6pM3tuFoffTOiqwoiIrKrGiMieq7OGrUYYVZVlRjhVFrCjW3KA35sbywWZ8tuuoyIpKrKjMifITK8qwoiwryrGiyiq7W0Vy6Q2uowIrKrKiEisqc6LKrr0aZVhRlhXlWFHEimLNjcCaG+GNuUFxiQrrT5uQWFGZExUnVpRhRVlWlGNFESvKc+qNN7ottajIikqMKF/2DJfdmLk+vGxe3NWHprABeymtzVJaO/91Ge/LFqPtJfLulygbmLaXMPtfwu5/Cbf/JWj/SxTv98sW1vJ9j0spcX+Jz1HhjSjzMKp8D176Ew+jEisqc6LKe/HVqFzulSw9DFp10H3ZQ2Za+gTer2McI4YYMZ4RExjdCP+Gd6xFJVZU5kS94R1rUYYVZVlRjhVFrCjPimLNDWLNDWLNDWLNDc+aG2UX+PjTouwB89L1zbYQw7jzy06ucp3EiMnbY8oerhJjtjMIjE/mwPhkDgx9AuOTuezbKjGREVOeB36e1znadUzeHlP2a5UYw4ixjBjHiCFGTG0elGIY8yAy5kHZn1Vi8vaY8k54JYbxeZAYnweJ8XmQGJ8HifF5kBjzIDHmQWLMg8SYB3njPPj38rf//eHThx9+/PjLn5eIl3/8+7ef/vrw+29f/vrX//0x/8uPnz58/Pjh1+//+PT7T7/8/PenX77/+PtPL//2bvryx38MJXp/seb+ks2L7C68p/CS2fUf7WTfX/6IL//BfD7avL/84S55XHL5fw==",
|
|
3312
3849
|
"brillig_names": [
|
|
3313
|
-
"
|
|
3314
|
-
|
|
3315
|
-
"lte_hint",
|
|
3316
|
-
"notify_created_nullifier_oracle_wrapper",
|
|
3317
|
-
"notify_created_note_oracle_wrapper",
|
|
3318
|
-
"debug_log_oracle_wrapper",
|
|
3319
|
-
"random",
|
|
3320
|
-
"field_less_than",
|
|
3321
|
-
"build_msg_block",
|
|
3322
|
-
"attach_len_to_msg_block",
|
|
3323
|
-
"get_random_bytes",
|
|
3324
|
-
"get_app_tag_as_sender",
|
|
3325
|
-
"increment_app_tagging_secret_index_as_sender_wrapper",
|
|
3326
|
-
"directive_integer_quotient",
|
|
3327
|
-
"directive_invert",
|
|
3328
|
-
"directive_to_radix"
|
|
3329
|
-
],
|
|
3330
|
-
"verification_key": "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"
|
|
3850
|
+
"compute_note_hash_and_optionally_a_nullifier"
|
|
3851
|
+
]
|
|
3331
3852
|
},
|
|
3332
3853
|
{
|
|
3333
|
-
"name": "
|
|
3854
|
+
"name": "verify_private_authwit",
|
|
3334
3855
|
"is_unconstrained": false,
|
|
3335
3856
|
"custom_attributes": [
|
|
3336
3857
|
"private",
|
|
3337
|
-
"noinitcheck"
|
|
3858
|
+
"noinitcheck",
|
|
3859
|
+
"view"
|
|
3338
3860
|
],
|
|
3339
3861
|
"abi": {
|
|
3340
3862
|
"error_types": {
|
|
@@ -3355,13 +3877,17 @@
|
|
|
3355
3877
|
"error_kind": "string",
|
|
3356
3878
|
"string": "Stack too deep"
|
|
3357
3879
|
},
|
|
3358
|
-
"
|
|
3880
|
+
"19458536156181958": {
|
|
3359
3881
|
"error_kind": "string",
|
|
3360
|
-
"string": "
|
|
3882
|
+
"string": "Function verify_private_authwit can only be called statically"
|
|
3361
3883
|
},
|
|
3362
|
-
"
|
|
3884
|
+
"4939791462094160055": {
|
|
3363
3885
|
"error_kind": "string",
|
|
3364
|
-
"string": "
|
|
3886
|
+
"string": "Message not authorized by account"
|
|
3887
|
+
},
|
|
3888
|
+
"5019202896831570965": {
|
|
3889
|
+
"error_kind": "string",
|
|
3890
|
+
"string": "attempt to add with overflow"
|
|
3365
3891
|
},
|
|
3366
3892
|
"6869395374906889440": {
|
|
3367
3893
|
"error_kind": "string",
|
|
@@ -3825,199 +4351,35 @@
|
|
|
3825
4351
|
"kind": "struct",
|
|
3826
4352
|
"path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees"
|
|
3827
4353
|
}
|
|
3828
|
-
}
|
|
3829
|
-
],
|
|
3830
|
-
"kind": "struct",
|
|
3831
|
-
"path": "authwit::aztec::protocol_types::abis::gas_settings::GasSettings"
|
|
3832
|
-
}
|
|
3833
|
-
}
|
|
3834
|
-
],
|
|
3835
|
-
"kind": "struct",
|
|
3836
|
-
"path": "authwit::aztec::protocol_types::transaction::tx_context::TxContext"
|
|
3837
|
-
}
|
|
3838
|
-
},
|
|
3839
|
-
{
|
|
3840
|
-
"name": "start_side_effect_counter",
|
|
3841
|
-
"type": {
|
|
3842
|
-
"kind": "integer",
|
|
3843
|
-
"sign": "unsigned",
|
|
3844
|
-
"width": 32
|
|
3845
|
-
}
|
|
3846
|
-
}
|
|
3847
|
-
],
|
|
3848
|
-
"kind": "struct",
|
|
3849
|
-
"path": "aztec::context::inputs::private_context_inputs::PrivateContextInputs"
|
|
3850
|
-
},
|
|
3851
|
-
"visibility": "private"
|
|
3852
|
-
},
|
|
3853
|
-
{
|
|
3854
|
-
"name": "app_payload",
|
|
3855
|
-
"type": {
|
|
3856
|
-
"fields": [
|
|
3857
|
-
{
|
|
3858
|
-
"name": "function_calls",
|
|
3859
|
-
"type": {
|
|
3860
|
-
"kind": "array",
|
|
3861
|
-
"length": 4,
|
|
3862
|
-
"type": {
|
|
3863
|
-
"fields": [
|
|
3864
|
-
{
|
|
3865
|
-
"name": "args_hash",
|
|
3866
|
-
"type": {
|
|
3867
|
-
"kind": "field"
|
|
3868
|
-
}
|
|
3869
|
-
},
|
|
3870
|
-
{
|
|
3871
|
-
"name": "function_selector",
|
|
3872
|
-
"type": {
|
|
3873
|
-
"fields": [
|
|
3874
|
-
{
|
|
3875
|
-
"name": "inner",
|
|
3876
|
-
"type": {
|
|
3877
|
-
"kind": "integer",
|
|
3878
|
-
"sign": "unsigned",
|
|
3879
|
-
"width": 32
|
|
3880
|
-
}
|
|
3881
|
-
}
|
|
3882
|
-
],
|
|
3883
|
-
"kind": "struct",
|
|
3884
|
-
"path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"
|
|
3885
|
-
}
|
|
3886
|
-
},
|
|
3887
|
-
{
|
|
3888
|
-
"name": "target_address",
|
|
3889
|
-
"type": {
|
|
3890
|
-
"fields": [
|
|
3891
|
-
{
|
|
3892
|
-
"name": "inner",
|
|
3893
|
-
"type": {
|
|
3894
|
-
"kind": "field"
|
|
3895
|
-
}
|
|
3896
|
-
}
|
|
3897
|
-
],
|
|
3898
|
-
"kind": "struct",
|
|
3899
|
-
"path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress"
|
|
3900
|
-
}
|
|
3901
|
-
},
|
|
3902
|
-
{
|
|
3903
|
-
"name": "is_public",
|
|
3904
|
-
"type": {
|
|
3905
|
-
"kind": "boolean"
|
|
3906
|
-
}
|
|
3907
|
-
},
|
|
3908
|
-
{
|
|
3909
|
-
"name": "is_static",
|
|
3910
|
-
"type": {
|
|
3911
|
-
"kind": "boolean"
|
|
3912
|
-
}
|
|
3913
|
-
}
|
|
3914
|
-
],
|
|
3915
|
-
"kind": "struct",
|
|
3916
|
-
"path": "authwit::entrypoint::function_call::FunctionCall"
|
|
3917
|
-
}
|
|
3918
|
-
}
|
|
3919
|
-
},
|
|
3920
|
-
{
|
|
3921
|
-
"name": "nonce",
|
|
3922
|
-
"type": {
|
|
3923
|
-
"kind": "field"
|
|
3924
|
-
}
|
|
3925
|
-
}
|
|
3926
|
-
],
|
|
3927
|
-
"kind": "struct",
|
|
3928
|
-
"path": "authwit::entrypoint::app::AppPayload"
|
|
3929
|
-
},
|
|
3930
|
-
"visibility": "private"
|
|
3931
|
-
},
|
|
3932
|
-
{
|
|
3933
|
-
"name": "fee_payload",
|
|
3934
|
-
"type": {
|
|
3935
|
-
"fields": [
|
|
3936
|
-
{
|
|
3937
|
-
"name": "function_calls",
|
|
3938
|
-
"type": {
|
|
3939
|
-
"kind": "array",
|
|
3940
|
-
"length": 2,
|
|
3941
|
-
"type": {
|
|
3942
|
-
"fields": [
|
|
3943
|
-
{
|
|
3944
|
-
"name": "args_hash",
|
|
3945
|
-
"type": {
|
|
3946
|
-
"kind": "field"
|
|
3947
|
-
}
|
|
3948
|
-
},
|
|
3949
|
-
{
|
|
3950
|
-
"name": "function_selector",
|
|
3951
|
-
"type": {
|
|
3952
|
-
"fields": [
|
|
3953
|
-
{
|
|
3954
|
-
"name": "inner",
|
|
3955
|
-
"type": {
|
|
3956
|
-
"kind": "integer",
|
|
3957
|
-
"sign": "unsigned",
|
|
3958
|
-
"width": 32
|
|
3959
|
-
}
|
|
3960
|
-
}
|
|
3961
|
-
],
|
|
3962
|
-
"kind": "struct",
|
|
3963
|
-
"path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"
|
|
3964
|
-
}
|
|
3965
|
-
},
|
|
3966
|
-
{
|
|
3967
|
-
"name": "target_address",
|
|
3968
|
-
"type": {
|
|
3969
|
-
"fields": [
|
|
3970
|
-
{
|
|
3971
|
-
"name": "inner",
|
|
3972
|
-
"type": {
|
|
3973
|
-
"kind": "field"
|
|
3974
|
-
}
|
|
3975
|
-
}
|
|
3976
|
-
],
|
|
3977
|
-
"kind": "struct",
|
|
3978
|
-
"path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress"
|
|
3979
|
-
}
|
|
3980
|
-
},
|
|
3981
|
-
{
|
|
3982
|
-
"name": "is_public",
|
|
3983
|
-
"type": {
|
|
3984
|
-
"kind": "boolean"
|
|
3985
|
-
}
|
|
3986
|
-
},
|
|
3987
|
-
{
|
|
3988
|
-
"name": "is_static",
|
|
3989
|
-
"type": {
|
|
3990
|
-
"kind": "boolean"
|
|
3991
|
-
}
|
|
3992
|
-
}
|
|
3993
|
-
],
|
|
3994
|
-
"kind": "struct",
|
|
3995
|
-
"path": "authwit::entrypoint::function_call::FunctionCall"
|
|
3996
|
-
}
|
|
3997
|
-
}
|
|
3998
|
-
},
|
|
3999
|
-
{
|
|
4000
|
-
"name": "nonce",
|
|
4001
|
-
"type": {
|
|
4002
|
-
"kind": "field"
|
|
4354
|
+
}
|
|
4355
|
+
],
|
|
4356
|
+
"kind": "struct",
|
|
4357
|
+
"path": "authwit::aztec::protocol_types::abis::gas_settings::GasSettings"
|
|
4358
|
+
}
|
|
4359
|
+
}
|
|
4360
|
+
],
|
|
4361
|
+
"kind": "struct",
|
|
4362
|
+
"path": "authwit::aztec::protocol_types::transaction::tx_context::TxContext"
|
|
4003
4363
|
}
|
|
4004
4364
|
},
|
|
4005
4365
|
{
|
|
4006
|
-
"name": "
|
|
4366
|
+
"name": "start_side_effect_counter",
|
|
4007
4367
|
"type": {
|
|
4008
|
-
"kind": "
|
|
4368
|
+
"kind": "integer",
|
|
4369
|
+
"sign": "unsigned",
|
|
4370
|
+
"width": 32
|
|
4009
4371
|
}
|
|
4010
4372
|
}
|
|
4011
4373
|
],
|
|
4012
4374
|
"kind": "struct",
|
|
4013
|
-
"path": "
|
|
4375
|
+
"path": "aztec::context::inputs::private_context_inputs::PrivateContextInputs"
|
|
4014
4376
|
},
|
|
4015
4377
|
"visibility": "private"
|
|
4016
4378
|
},
|
|
4017
4379
|
{
|
|
4018
|
-
"name": "
|
|
4380
|
+
"name": "inner_hash",
|
|
4019
4381
|
"type": {
|
|
4020
|
-
"kind": "
|
|
4382
|
+
"kind": "field"
|
|
4021
4383
|
},
|
|
4022
4384
|
"visibility": "private"
|
|
4023
4385
|
}
|
|
@@ -5104,403 +5466,41 @@
|
|
|
5104
5466
|
"type": {
|
|
5105
5467
|
"kind": "field"
|
|
5106
5468
|
}
|
|
5107
|
-
}
|
|
5108
|
-
],
|
|
5109
|
-
"kind": "struct",
|
|
5110
|
-
"path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees"
|
|
5111
|
-
}
|
|
5112
|
-
}
|
|
5113
|
-
],
|
|
5114
|
-
"kind": "struct",
|
|
5115
|
-
"path": "authwit::aztec::protocol_types::abis::gas_settings::GasSettings"
|
|
5116
|
-
}
|
|
5117
|
-
}
|
|
5118
|
-
],
|
|
5119
|
-
"kind": "struct",
|
|
5120
|
-
"path": "authwit::aztec::protocol_types::transaction::tx_context::TxContext"
|
|
5121
|
-
}
|
|
5122
|
-
}
|
|
5123
|
-
],
|
|
5124
|
-
"kind": "struct",
|
|
5125
|
-
"path": "authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"
|
|
5126
|
-
},
|
|
5127
|
-
"visibility": "databus"
|
|
5128
|
-
}
|
|
5129
|
-
},
|
|
5130
|
-
"bytecode": "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",
|
|
5131
|
-
"debug_symbols": "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9W1ZTyx0bVlPLPRsoX33mWHLotxeg17vPuvbsii3a4suW3q2rCcWurastdyuLWstt2vLWsvt2rLWcnu2sL77zFhYoH332Rj+ad99Ztiynljo2qLLlp4t64mFri2LcrsNelFu15ZFuV1bFuV2bFHWd59Ztqy13K4tay23a8tay+3aosuWni3riYXOwoLSvvtsCP9K++4zw5b1xELXlvXEQs8W2nefGbYsyu016PXus74ti3K7tuiypWfLemKha8tay+3astZyu7astdyuLWstt2cL67vPjIUF2nefjeGf9t1nhi3riYWuLbps6dmynljo2rIot9ugF+V2bVmU27VlUW7PFtZ3n1m2rLXcri1rLbdry1rL7dqiy5aeLeuJhd7CAu27z8bwT/vuM8OW9cRC15b1xELPFtp3nxm2LMrtNej17rO+LYtyu7bosqVny3pioWvLWsvt2rLWcru2rLXcri1rLbdnC+u7z4yFBdp3n43hn/bdZ4Yt64mFri26bOnZsp5Y6NqyKLfboBfldm1ZlNu1ZVFuzxbWd59Ztqy13K4tay23a8tay+3aosuWni3riYXewgLtu8/G8E/77jPDlvXEQteW9cRCzxbad58ZtizK7TXo9e6zvi2Lcru26LKlZ8t6YqFry1rL7dqy1nK7tqy13K4tay23Zwvru8+MhQXad5+N4Z/23WeGLeuJha4tumzp2bKeWOjasii326AX5XZtWZTbtWVRbs8W1nefWbastdyuLWstt2vLWsvt2qLLlp4t64mF3sIC7bvPxvBP++4zw5b1xELXlvXEQseWRPvuM8OWRbmdBp3Wu8/6tizK7dqiy5aeLeuJha4tay23a8tay+3astZyu7astdyeLazvPhsvLCTad5+N4Z/23WeGLeuJha4tumzp2bKeWOjasii326AX5XZtWZTbtWVRbs8W1nefWbastdyuLWstt2vLWsvt2qLLlp4t64mF3sIC7bvPxvBP++4zw5b1xELXlvXEQs8W2nefGbYsyu016PXus74ti3K7tuiypWfLemKha8tay+3astZyu7astdyuLWstt2cL67vPjIUF2nefjeGf9t1nhi3riYWuLbps6dmynljo2rIot9ugF+V2bVmU27VlUW7PFtZ3n1m2rLXcri1rLbdry1rL7dqiy5aeLeuJhd7CAu27z8bwT/vuM8OW9cRC15b1xELPFtp3nxm2LMrtNej17rO+LYtyu7bosqVny3pioWvLWsvt2rLWcru2rLXcri1rLbdnC+u7z4yFBdp3n43hn/bdZ4Yt64mFri26bOnZsp5Y6NqyKLfboBfldm1ZlNu1ZVFuzxbWd59Ztqy13K4tay23a8tay+3aosuWni3riYXewgLtu8/G8E/77jPDlvXEQteW9cRCzxbad58ZtizK7TXo9e6zvi2Lcru26LKlZ8t6YqFry1rL7dqy1nK7tqy13K4tay23Y0tmfffZeGEh0777bAj/mfbdZ4Yt64mFri26bOnZsp5Y6NqyKLfboBfldm1ZlNu1ZVFuzxbWd59Ztqy13K4tay23a8tay+3aosuWni3riYXewgLtu8/G8E/77jPDlvXEQteW9cRCzxbad58ZtizK7TXo9e6zvi2Lcru26LKlZ8t6YqFry1rL7dqy1nK7tqy13K4tay23Zwvru8+MhQXad5+N4Z/23WeGLeuJha4tumzp2bKeWOjasii326AX5XZtWZTbtWVRbs8W1nefWbastdyuLWstt2vLWsvt2qLLlp4t64mF3sIC7bvPxvBP++4zw5b1xELXlvXEQs8W2nefGbYsyu016PXus74ti3K7tuiypWfLemKha8tay+3astZyu7astdyuLWstt2cL67vPjIUF2nefjeGf9t1nhi3riYWuLbps6dmynljo2rIot9ugF+V2bVmU27VlUW7PFtZ3n1m2rLXcri1rLbdry1rL7dqiy5aeLeuJhd7CAu27z8bwT/vuM8OW9cRC15b1xELPFtp3nxm2LMrtNej17rO+LYtyu7bosqVny3pioWvLWsvt2rLWcru2rLXcri1rLbdnC+u7z4yFBdp3n43hn/bdZ4Yt64mFri26bOnZsp5Y6NqyKLfboEkp12rQay23+yNaa7kdWwrru88sWxbldm1ZlNu1Za3ldhp02XQ16McGXda7z/o/ovXEQteW9cRC15ZFuV1bFuX2bFnvPus26PXus74t64mFri2Lcru2KKctGu6Uq6E82kJKuZYt01Bu2m5VhBTyL1u/KkUG16q3D66ldGpHpkurdmQENGqHfnuXVTsyTNVYh7UjE4/lOzKWWLWr49qRG7xVO3IXtn6rjvsq9FuOrNod91Xo9wVZtTvuq9Bv3rF8d9xXod9hY9XuuK9Cvw3G+q067qvQ71Wxanfc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",
|
|
5132
|
-
"brillig_names": [
|
|
5133
|
-
"get_note_internal",
|
|
5134
|
-
"decompose_hint",
|
|
5135
|
-
"get_auth_witness",
|
|
5136
|
-
"enqueue_public_function_call_internal",
|
|
5137
|
-
"call_private_function_internal",
|
|
5138
|
-
"debug_log_oracle_wrapper",
|
|
5139
|
-
"notify_set_min_revertible_side_effect_counter_oracle_wrapper",
|
|
5140
|
-
"notify_created_nullifier_oracle_wrapper",
|
|
5141
|
-
"directive_invert",
|
|
5142
|
-
"directive_integer_quotient",
|
|
5143
|
-
"directive_to_radix"
|
|
5144
|
-
],
|
|
5145
|
-
"verification_key": "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"
|
|
5146
|
-
},
|
|
5147
|
-
{
|
|
5148
|
-
"name": "process_log",
|
|
5149
|
-
"is_unconstrained": true,
|
|
5150
|
-
"custom_attributes": [],
|
|
5151
|
-
"abi": {
|
|
5152
|
-
"error_types": {
|
|
5153
|
-
"16761564377371454734": {
|
|
5154
|
-
"error_kind": "string",
|
|
5155
|
-
"string": "Array index out of bounds"
|
|
5156
|
-
},
|
|
5157
|
-
"16954218183513903507": {
|
|
5158
|
-
"error_kind": "string",
|
|
5159
|
-
"string": "Attempted to read past end of BoundedVec"
|
|
5160
|
-
},
|
|
5161
|
-
"17843811134343075018": {
|
|
5162
|
-
"error_kind": "string",
|
|
5163
|
-
"string": "Stack too deep"
|
|
5164
|
-
},
|
|
5165
|
-
"2920182694213909827": {
|
|
5166
|
-
"error_kind": "string",
|
|
5167
|
-
"string": "attempt to subtract with overflow"
|
|
5168
|
-
},
|
|
5169
|
-
"5019202896831570965": {
|
|
5170
|
-
"error_kind": "string",
|
|
5171
|
-
"string": "attempt to add with overflow"
|
|
5172
|
-
},
|
|
5173
|
-
"6753155520859132764": {
|
|
5174
|
-
"error_kind": "string",
|
|
5175
|
-
"string": "Failed to deliver note"
|
|
5176
|
-
},
|
|
5177
|
-
"8270195893599566439": {
|
|
5178
|
-
"error_kind": "string",
|
|
5179
|
-
"string": "Invalid public keys hint for address"
|
|
5180
|
-
},
|
|
5181
|
-
"8861757336002045335": {
|
|
5182
|
-
"error_kind": "fmtstring",
|
|
5183
|
-
"item_types": [
|
|
5184
|
-
{
|
|
5185
|
-
"kind": "integer",
|
|
5186
|
-
"sign": "unsigned",
|
|
5187
|
-
"width": 32
|
|
5188
|
-
},
|
|
5189
|
-
{
|
|
5190
|
-
"kind": "integer",
|
|
5191
|
-
"sign": "unsigned",
|
|
5192
|
-
"width": 32
|
|
5193
|
-
},
|
|
5194
|
-
{
|
|
5195
|
-
"kind": "field"
|
|
5196
|
-
}
|
|
5197
|
-
],
|
|
5198
|
-
"length": 99
|
|
5199
|
-
},
|
|
5200
|
-
"9862881900111276825": {
|
|
5201
|
-
"error_kind": "fmtstring",
|
|
5202
|
-
"item_types": [
|
|
5203
|
-
{
|
|
5204
|
-
"kind": "field"
|
|
5205
|
-
}
|
|
5206
|
-
],
|
|
5207
|
-
"length": 35
|
|
5208
|
-
}
|
|
5209
|
-
},
|
|
5210
|
-
"parameters": [
|
|
5211
|
-
{
|
|
5212
|
-
"name": "log_plaintext",
|
|
5213
|
-
"type": {
|
|
5214
|
-
"fields": [
|
|
5215
|
-
{
|
|
5216
|
-
"name": "storage",
|
|
5217
|
-
"type": {
|
|
5218
|
-
"kind": "array",
|
|
5219
|
-
"length": 18,
|
|
5220
|
-
"type": {
|
|
5221
|
-
"kind": "field"
|
|
5222
|
-
}
|
|
5223
|
-
}
|
|
5224
|
-
},
|
|
5225
|
-
{
|
|
5226
|
-
"name": "len",
|
|
5227
|
-
"type": {
|
|
5228
|
-
"kind": "integer",
|
|
5229
|
-
"sign": "unsigned",
|
|
5230
|
-
"width": 32
|
|
5231
|
-
}
|
|
5232
|
-
}
|
|
5233
|
-
],
|
|
5234
|
-
"kind": "struct",
|
|
5235
|
-
"path": "std::collections::bounded_vec::BoundedVec"
|
|
5236
|
-
},
|
|
5237
|
-
"visibility": "private"
|
|
5238
|
-
},
|
|
5239
|
-
{
|
|
5240
|
-
"name": "tx_hash",
|
|
5241
|
-
"type": {
|
|
5242
|
-
"kind": "field"
|
|
5243
|
-
},
|
|
5244
|
-
"visibility": "private"
|
|
5245
|
-
},
|
|
5246
|
-
{
|
|
5247
|
-
"name": "unique_note_hashes_in_tx",
|
|
5248
|
-
"type": {
|
|
5249
|
-
"fields": [
|
|
5250
|
-
{
|
|
5251
|
-
"name": "storage",
|
|
5252
|
-
"type": {
|
|
5253
|
-
"kind": "array",
|
|
5254
|
-
"length": 64,
|
|
5255
|
-
"type": {
|
|
5256
|
-
"kind": "field"
|
|
5257
|
-
}
|
|
5258
|
-
}
|
|
5259
|
-
},
|
|
5260
|
-
{
|
|
5261
|
-
"name": "len",
|
|
5262
|
-
"type": {
|
|
5263
|
-
"kind": "integer",
|
|
5264
|
-
"sign": "unsigned",
|
|
5265
|
-
"width": 32
|
|
5266
|
-
}
|
|
5267
|
-
}
|
|
5268
|
-
],
|
|
5269
|
-
"kind": "struct",
|
|
5270
|
-
"path": "std::collections::bounded_vec::BoundedVec"
|
|
5271
|
-
},
|
|
5272
|
-
"visibility": "private"
|
|
5273
|
-
},
|
|
5274
|
-
{
|
|
5275
|
-
"name": "first_nullifier_in_tx",
|
|
5276
|
-
"type": {
|
|
5277
|
-
"kind": "field"
|
|
5278
|
-
},
|
|
5279
|
-
"visibility": "private"
|
|
5280
|
-
},
|
|
5281
|
-
{
|
|
5282
|
-
"name": "recipient",
|
|
5283
|
-
"type": {
|
|
5284
|
-
"fields": [
|
|
5285
|
-
{
|
|
5286
|
-
"name": "inner",
|
|
5287
|
-
"type": {
|
|
5288
|
-
"kind": "field"
|
|
5289
|
-
}
|
|
5290
|
-
}
|
|
5291
|
-
],
|
|
5292
|
-
"kind": "struct",
|
|
5293
|
-
"path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress"
|
|
5294
|
-
},
|
|
5295
|
-
"visibility": "private"
|
|
5296
|
-
}
|
|
5297
|
-
],
|
|
5298
|
-
"return_type": null
|
|
5299
|
-
},
|
|
5300
|
-
"bytecode": "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",
|
|
5301
|
-
"debug_symbols": "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",
|
|
5302
|
-
"brillig_names": [
|
|
5303
|
-
"process_log"
|
|
5304
|
-
]
|
|
5305
|
-
},
|
|
5306
|
-
{
|
|
5307
|
-
"name": "compute_note_hash_and_optionally_a_nullifier",
|
|
5308
|
-
"is_unconstrained": true,
|
|
5309
|
-
"custom_attributes": [],
|
|
5310
|
-
"abi": {
|
|
5311
|
-
"error_types": {
|
|
5312
|
-
"11091894166229312484": {
|
|
5313
|
-
"error_kind": "fmtstring",
|
|
5314
|
-
"item_types": [],
|
|
5315
|
-
"length": 20
|
|
5316
|
-
},
|
|
5317
|
-
"16761564377371454734": {
|
|
5318
|
-
"error_kind": "string",
|
|
5319
|
-
"string": "Array index out of bounds"
|
|
5320
|
-
},
|
|
5321
|
-
"17843811134343075018": {
|
|
5322
|
-
"error_kind": "string",
|
|
5323
|
-
"string": "Stack too deep"
|
|
5324
|
-
},
|
|
5325
|
-
"5019202896831570965": {
|
|
5326
|
-
"error_kind": "string",
|
|
5327
|
-
"string": "attempt to add with overflow"
|
|
5328
|
-
},
|
|
5329
|
-
"8270195893599566439": {
|
|
5330
|
-
"error_kind": "string",
|
|
5331
|
-
"string": "Invalid public keys hint for address"
|
|
5332
|
-
}
|
|
5333
|
-
},
|
|
5334
|
-
"parameters": [
|
|
5335
|
-
{
|
|
5336
|
-
"name": "contract_address",
|
|
5337
|
-
"type": {
|
|
5338
|
-
"fields": [
|
|
5339
|
-
{
|
|
5340
|
-
"name": "inner",
|
|
5341
|
-
"type": {
|
|
5342
|
-
"kind": "field"
|
|
5343
|
-
}
|
|
5469
|
+
}
|
|
5470
|
+
],
|
|
5471
|
+
"kind": "struct",
|
|
5472
|
+
"path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees"
|
|
5473
|
+
}
|
|
5474
|
+
}
|
|
5475
|
+
],
|
|
5476
|
+
"kind": "struct",
|
|
5477
|
+
"path": "authwit::aztec::protocol_types::abis::gas_settings::GasSettings"
|
|
5478
|
+
}
|
|
5479
|
+
}
|
|
5480
|
+
],
|
|
5481
|
+
"kind": "struct",
|
|
5482
|
+
"path": "authwit::aztec::protocol_types::transaction::tx_context::TxContext"
|
|
5344
5483
|
}
|
|
5345
|
-
],
|
|
5346
|
-
"kind": "struct",
|
|
5347
|
-
"path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress"
|
|
5348
|
-
},
|
|
5349
|
-
"visibility": "private"
|
|
5350
|
-
},
|
|
5351
|
-
{
|
|
5352
|
-
"name": "nonce",
|
|
5353
|
-
"type": {
|
|
5354
|
-
"kind": "field"
|
|
5355
|
-
},
|
|
5356
|
-
"visibility": "private"
|
|
5357
|
-
},
|
|
5358
|
-
{
|
|
5359
|
-
"name": "storage_slot",
|
|
5360
|
-
"type": {
|
|
5361
|
-
"kind": "field"
|
|
5362
|
-
},
|
|
5363
|
-
"visibility": "private"
|
|
5364
|
-
},
|
|
5365
|
-
{
|
|
5366
|
-
"name": "note_type_id",
|
|
5367
|
-
"type": {
|
|
5368
|
-
"kind": "field"
|
|
5369
|
-
},
|
|
5370
|
-
"visibility": "private"
|
|
5371
|
-
},
|
|
5372
|
-
{
|
|
5373
|
-
"name": "compute_nullifier",
|
|
5374
|
-
"type": {
|
|
5375
|
-
"kind": "boolean"
|
|
5376
|
-
},
|
|
5377
|
-
"visibility": "private"
|
|
5378
|
-
},
|
|
5379
|
-
{
|
|
5380
|
-
"name": "packed_note_content",
|
|
5381
|
-
"type": {
|
|
5382
|
-
"kind": "array",
|
|
5383
|
-
"length": 3,
|
|
5384
|
-
"type": {
|
|
5385
|
-
"kind": "field"
|
|
5386
5484
|
}
|
|
5387
|
-
|
|
5388
|
-
"
|
|
5389
|
-
|
|
5390
|
-
],
|
|
5391
|
-
"return_type": {
|
|
5392
|
-
"abi_type": {
|
|
5393
|
-
"kind": "array",
|
|
5394
|
-
"length": 4,
|
|
5395
|
-
"type": {
|
|
5396
|
-
"kind": "field"
|
|
5397
|
-
}
|
|
5398
|
-
},
|
|
5399
|
-
"visibility": "public"
|
|
5400
|
-
}
|
|
5401
|
-
},
|
|
5402
|
-
"bytecode": "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",
|
|
5403
|
-
"debug_symbols": "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1AO0pWhP6hgaUzypv2hM8aRupDFFeJcWFAkUG1CEd2lBEd6lBUV4l2+iOMBvJ8jCQenREj5OjZYOblKPlvC0erSEs9ajJfy9Hi0JWqrREr0OPVqi46JHS/R99GiJvo8eLdH3UaMloe+jR0v0ffRoib6PHi3R99GjJUFLNVqi76NHS/R99GiJvo8eLdH30aMl+j5qtPTo++jREn0fPVqi76NHS/R99GhJ0FKNlvCXA2n58P0NFFDHDqTl42cyBtSxerREHatHS9SxerQkaKlGS+xf6tES+5d6tIS/1KMl9i/1aIn9SzVaxqP7PinOwJ2hx1peTpGWg9Ot/WimWDialv4WpVt7y1xaXddxmpOM055knO4k46STjNOfZJxByzj9sgb5UBhnPMk400nGmdWMMy4FYsyrcSY19VBlnGrqoco41dRDftmLD5Nbj1NNPVQZJ51knGrqobtxGrMep5566PE41dRDIc45hzStx6mmHqqMU0099HicWU09FJKf88i0HqeaeqgyTjX1UGWcauqhOM3922jSepx0knGqqYcq41RTD1XGqaYeuhunDetxqqmHKuNUUw89HKef1NRDMc/rZ5poPU419VBlnGrqoco49dRDj8dJWsaZls+htF4//aSmHqqMU009VBmnmnqoMk419VBybh4n2fU41dRDj8dp1NRDlXGqqYcq41RTD92N00/rcaqphyrjJC3jzGY+cy74MqOmHqqMU009VBmnmnqoMk419VB2c86ZzHqcauqhx+O0auqhyjjV1EOVcaqph/Ly/b4c1p9DVk09VBknnWSceuqhx+PUUw/dxhnXfU2rpx56PE419ZCZ/PzFVDOFtTOzaiqi2kidmpqoOlI1VVF1pD3XRbffUhqKsTJS56a5geKcuWVtvSkdPYV5+8lNd983ty/fQVofHaf5S6Eu3lWXL0dfKfZcdY1DkUCxAcWeK8ZxKPZcj45DsedqdxyKPdfS41DsuU4fhiL17AHGodizvxiHIrxLC4rwLi0oEig2oAjv0oIivEsLivAuLSjCu7SgCO/SgKKHd2lBEd6lBUV4lxYU4V1aUCRQbEAR3qUFRXiXFhThXVpQhHdpQRHepQHFAO/SguJpvYudH71/ySNVKKZAyzPsQ75/Ln3pGfYUp1khineDvKT1hflpnc4TmZ/WFz2ROYH54cxP67meyPy0Du2JzE/r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",
|
|
5404
|
-
"brillig_names": [
|
|
5405
|
-
"compute_note_hash_and_optionally_a_nullifier"
|
|
5406
|
-
]
|
|
5407
|
-
},
|
|
5408
|
-
{
|
|
5409
|
-
"name": "lookup_validity",
|
|
5410
|
-
"is_unconstrained": true,
|
|
5411
|
-
"custom_attributes": [],
|
|
5412
|
-
"abi": {
|
|
5413
|
-
"error_types": {
|
|
5414
|
-
"12099279057757775880": {
|
|
5415
|
-
"error_kind": "string",
|
|
5416
|
-
"string": "DST_LEN too large for offset"
|
|
5417
|
-
},
|
|
5418
|
-
"16761564377371454734": {
|
|
5419
|
-
"error_kind": "string",
|
|
5420
|
-
"string": "Array index out of bounds"
|
|
5421
|
-
},
|
|
5422
|
-
"16954218183513903507": {
|
|
5423
|
-
"error_kind": "string",
|
|
5424
|
-
"string": "Attempted to read past end of BoundedVec"
|
|
5425
|
-
},
|
|
5426
|
-
"17843811134343075018": {
|
|
5427
|
-
"error_kind": "string",
|
|
5428
|
-
"string": "Stack too deep"
|
|
5429
|
-
},
|
|
5430
|
-
"2920182694213909827": {
|
|
5431
|
-
"error_kind": "string",
|
|
5432
|
-
"string": "attempt to subtract with overflow"
|
|
5433
|
-
},
|
|
5434
|
-
"5019202896831570965": {
|
|
5435
|
-
"error_kind": "string",
|
|
5436
|
-
"string": "attempt to add with overflow"
|
|
5437
|
-
},
|
|
5438
|
-
"5727012404371710682": {
|
|
5439
|
-
"error_kind": "string",
|
|
5440
|
-
"string": "push out of bounds"
|
|
5441
|
-
},
|
|
5442
|
-
"7233212735005103307": {
|
|
5443
|
-
"error_kind": "string",
|
|
5444
|
-
"string": "attempt to multiply with overflow"
|
|
5445
|
-
}
|
|
5446
|
-
},
|
|
5447
|
-
"parameters": [
|
|
5448
|
-
{
|
|
5449
|
-
"name": "consumer",
|
|
5450
|
-
"type": {
|
|
5451
|
-
"fields": [
|
|
5452
|
-
{
|
|
5453
|
-
"name": "inner",
|
|
5454
|
-
"type": {
|
|
5455
|
-
"kind": "field"
|
|
5456
|
-
}
|
|
5457
|
-
}
|
|
5458
|
-
],
|
|
5459
|
-
"kind": "struct",
|
|
5460
|
-
"path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress"
|
|
5461
|
-
},
|
|
5462
|
-
"visibility": "private"
|
|
5463
|
-
},
|
|
5464
|
-
{
|
|
5465
|
-
"name": "inner_hash",
|
|
5466
|
-
"type": {
|
|
5467
|
-
"kind": "field"
|
|
5468
|
-
},
|
|
5469
|
-
"visibility": "private"
|
|
5470
|
-
}
|
|
5471
|
-
],
|
|
5472
|
-
"return_type": {
|
|
5473
|
-
"abi_type": {
|
|
5474
|
-
"kind": "boolean"
|
|
5485
|
+
],
|
|
5486
|
+
"kind": "struct",
|
|
5487
|
+
"path": "authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"
|
|
5475
5488
|
},
|
|
5476
|
-
"visibility": "
|
|
5489
|
+
"visibility": "databus"
|
|
5477
5490
|
}
|
|
5478
5491
|
},
|
|
5479
|
-
"bytecode": "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",
|
|
5480
|
-
"debug_symbols": "7V3tjus2snyX8zs/yGbza19lcREk2eziAAdJkI8LXAR59yt7RrJP1HbvcGRPNck/wSRRm1Vluaskm60/P/3rx+//+M+3n3/698+/ffrHP//89OXnH777/fPPPy3/9udf33z6/tfPX758/s+31//5kzv9g+h8/G+/fPfT6V9/+/27X3//9A+fEn3z6cef/nX6M9PyCv/+/OXHT/9Iy5+7g4uLr8cWCtuhJQiHRloPjdFth/qQ//qfbz5ReD+UmFYoudyHwqG+Hsqp7KDwu6FUF16PrT7fh5I2AROlHZT4fijsVyiRFSjFvR6a3f4NSm+EcqrJDTWloaa+vSa4hhrfUEMNNaGhhhtqYkNNw3kQGs6DIJ4HIVN+rQk5hfunfsjbxzDkq5Pfxyx9UApvH9pSr85/ko723sX103L62391/Al/tY2fnXH83jh+Mo4/GMfPxvFH4/iTcfzZOH7j/svG/TfC+2+9wl/3+OH9V8EP778KfnT/9eGC34c9fnT/1fCj+6+GH91/l8vHC/6Ud/jR/VfDj+6/Gn50/1XwJ3T/1fCj+6+GH91/Nfzw/qvgh/dfBT+8/yr4jftvMu6/Cd1/yeUNP7myw4/uvwr+jO6/Gn50/y3bF4Onv2mHH91/Nfzo/qvhR/ffkusFf3E7/Oj+q+FH918NP7r/Vn/pn9Xv+ye6/2r40f1XwV/Q/bde3T+v+/vnBd1/Nfzo/qvhR/LfEx4kPz3hQfLHEx4kvzvhQfKvEx4kPzrhQfKXBU9F8osTHqT+f8KD1M9PeMD6cwXrzxWsP1ew/lzB+nN9en+u2+/Zaw11h6di4fHOoQHyaIAIDVBAA8RogCIaoIQGKKMBAmvU3qF1ao/WqT1ap/ZondqjdWqP1qk9Wqf2aJ3ao3Vqj9apPVqnJrROTWidmtA6NaF1akLr1ITWqQmtUxNapya0Tk1onTqgdeqA1qkDWqcOaJ06oHXqgNapA1qnDmidOqB16oDWqRmtUzNap2a0Ts1onZrROjWjdWpG69SM1qkZrVMzWqeOaJ06onXqiNapI1qnjmidOqJ16ojWqSNap45onTqideqE1qkTWqdOaJ06oXXqhNapE1qnTmidOqF16oTWqRNap85onTqjdeqM1qkzWqfOaJ06o3XqjNapM1qnzmidOqN16oLWqQtapy5onbqgdeqC1qkLWqcuaJ26oHXqgtapC1qnrmiduqJ16orWqStap65onbqideqK1qkrWqdG26Lo0fYoEtoeRULbo0hoexQJbY8iObBOTWh7FAltjyKh7VEktD2KhLZHkdD2KBLaHkVC26NIaHsUCW2PIqHtUSS0PYqEtkeR0PYoEtoeRULbo0hoexQJbY8ioe1RJLQ9ioS2R5HQ9igS2h5FQtujSGh7FAltjyKh7VEktD2KhLZHkdD2KBLaHkVC26NIaHsUCW2PIqHtUSS0PYqEtkeR0PYoEtoeRULbo0hoexQJbY8ioe1RJLQ9ioS2R5HQ9igS2h5FQtujSGh7FAltjyKh7VEktD2KhLZHkdD2KBLaHkVC26NIaHsUCW2PIqHtUSS0PYr0AXsUK22AatgDSmiAMhqgggaoggH6gD2KCiCPBojQAAU0QIwGCK1TZ7ROndE6dUbr1E/fo+idq+vh3sXTMVeQ9scv7+EKZfnz8szHF/hP39F4MHxvGz7Zhh9sw2fb8CM4/MgblMjXr85VfHVft6djO/Luq+PPhBM84bweHgtXhXBKq7GkdPUo3hJeyOaRyJaRyKInhreRZZ9W4Bxj2n1qK3rCOJgueiI5mC56gjmYLnriOZguj0UXP1EdSrevPKXS7StRqXT7ylQq3aFSVXBDparghkpVwQ2VqoIbKlUFx2PRHSpVBTdUqgpuqFQVnOVUdSZgOSedCHjLyedMAD7LlOw3AsXtCcCnE40AfN7QCLApAnlPAD4TaATgXV4jAO/blTcCNQqfAXgn1gjAO7FCgOA/AzXVjUDdhzlCfweWrw9XAin7sCMQsLLQGRJWujlDwsorZ0jPTyCxuAukqv/0xK3fYVMm2o5+hc+24Ufb8JNt+Nk2/GIbfjUNn51t+N42fLIN37brPn16xMHwbbsu23Zdtu26bNt12bbrRtuuG227brTtutG26z59EsjB8G27brTtutG260bbrhttu26y7brJtusm266bbLvu06e6HAzftusm266bbLtusu26ybbrZtuum227brbtutm26z59Qs/B8G27brbtutm262bbrpttu26x7brFtusW265bbLvuB8whOhS+bdcttl232HbdYtt1i23XrbZdt9p23Wrbdatt1/2A2TaHwrftutW261bbrlttu2417brsTLsuO9Ouy86067Iz7brsTLsuO9Ouy86067Iz7brsTLsuO9uu6227rrft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",
|
|
5481
|
-
"brillig_names": [
|
|
5482
|
-
"lookup_validity"
|
|
5483
|
-
]
|
|
5484
|
-
},
|
|
5485
|
-
{
|
|
5486
|
-
"name": "sync_notes",
|
|
5487
|
-
"is_unconstrained": true,
|
|
5488
|
-
"custom_attributes": [],
|
|
5489
|
-
"abi": {
|
|
5490
|
-
"error_types": {
|
|
5491
|
-
"17843811134343075018": {
|
|
5492
|
-
"error_kind": "string",
|
|
5493
|
-
"string": "Stack too deep"
|
|
5494
|
-
}
|
|
5495
|
-
},
|
|
5496
|
-
"parameters": [],
|
|
5497
|
-
"return_type": null
|
|
5498
|
-
},
|
|
5499
|
-
"bytecode": "H4sIAAAAAAAA/7WTyw7CIBBFqcUo0sTEx39MU0y7dOHafyCtLHVRN+766dZkJkyI0QVwEzJMgMNcHoXwKjBKESGCHDEqjAs2Xs7tjDnEqVbBvin5HRijvvhLWH+jkFnk4QPxM50/rJBzmTyfe6F913PTrF8J/z5y+af7y+l//8OzRq9bzCvh/8P4uvfXx/M2ij/SbJGc0ptoOwAqvkT+EvmhJBvn8w+Yb4Svj6KMqNO1tnaNdfZkh8H0dhfwP+KH/QbzqHp4zgQAAA==",
|
|
5500
|
-
"debug_symbols": "bY/dCoMwDIXfJde9aLof0FeRIVWjFEortQ6G9N2XDtm6zZuQE75zyNlgoG6dWuNGv0DdbGB9r6PxjtWWBHTBWGumtjyDzANPL36ZtctyiTpEqNUZBZAb8laxfzSWoL6qJP5QlCjVDvOuPjhm6xFf4ZtXKL/4W2J518HoztL+/Li6vugSHzP91JqD72lYA+WCRTeeDV6EkhzL0U8=",
|
|
5492
|
+
"bytecode": "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",
|
|
5493
|
+
"debug_symbols": "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",
|
|
5501
5494
|
"brillig_names": [
|
|
5502
|
-
"
|
|
5503
|
-
|
|
5495
|
+
"get_note_internal",
|
|
5496
|
+
"decompose_hint",
|
|
5497
|
+
"get_auth_witness",
|
|
5498
|
+
"store_in_execution_cache_oracle_wrapper",
|
|
5499
|
+
"directive_invert",
|
|
5500
|
+
"directive_integer_quotient",
|
|
5501
|
+
"directive_to_radix"
|
|
5502
|
+
],
|
|
5503
|
+
"verification_key": "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"
|
|
5504
5504
|
}
|
|
5505
5505
|
],
|
|
5506
5506
|
"outputs": {
|
|
@@ -5636,33 +5636,6 @@
|
|
|
5636
5636
|
},
|
|
5637
5637
|
"structs": {
|
|
5638
5638
|
"functions": [
|
|
5639
|
-
{
|
|
5640
|
-
"fields": [
|
|
5641
|
-
{
|
|
5642
|
-
"name": "parameters",
|
|
5643
|
-
"type": {
|
|
5644
|
-
"fields": [
|
|
5645
|
-
{
|
|
5646
|
-
"name": "inner_hash",
|
|
5647
|
-
"type": {
|
|
5648
|
-
"kind": "field"
|
|
5649
|
-
}
|
|
5650
|
-
}
|
|
5651
|
-
],
|
|
5652
|
-
"kind": "struct",
|
|
5653
|
-
"path": "SchnorrAccount::verify_private_authwit_parameters"
|
|
5654
|
-
}
|
|
5655
|
-
},
|
|
5656
|
-
{
|
|
5657
|
-
"name": "return_type",
|
|
5658
|
-
"type": {
|
|
5659
|
-
"kind": "field"
|
|
5660
|
-
}
|
|
5661
|
-
}
|
|
5662
|
-
],
|
|
5663
|
-
"kind": "struct",
|
|
5664
|
-
"path": "SchnorrAccount::verify_private_authwit_abi"
|
|
5665
|
-
},
|
|
5666
5639
|
{
|
|
5667
5640
|
"fields": [
|
|
5668
5641
|
{
|
|
@@ -5846,6 +5819,33 @@
|
|
|
5846
5819
|
"kind": "struct",
|
|
5847
5820
|
"path": "SchnorrAccount::entrypoint_abi"
|
|
5848
5821
|
},
|
|
5822
|
+
{
|
|
5823
|
+
"fields": [
|
|
5824
|
+
{
|
|
5825
|
+
"name": "parameters",
|
|
5826
|
+
"type": {
|
|
5827
|
+
"fields": [
|
|
5828
|
+
{
|
|
5829
|
+
"name": "inner_hash",
|
|
5830
|
+
"type": {
|
|
5831
|
+
"kind": "field"
|
|
5832
|
+
}
|
|
5833
|
+
}
|
|
5834
|
+
],
|
|
5835
|
+
"kind": "struct",
|
|
5836
|
+
"path": "SchnorrAccount::verify_private_authwit_parameters"
|
|
5837
|
+
}
|
|
5838
|
+
},
|
|
5839
|
+
{
|
|
5840
|
+
"name": "return_type",
|
|
5841
|
+
"type": {
|
|
5842
|
+
"kind": "field"
|
|
5843
|
+
}
|
|
5844
|
+
}
|
|
5845
|
+
],
|
|
5846
|
+
"kind": "struct",
|
|
5847
|
+
"path": "SchnorrAccount::verify_private_authwit_abi"
|
|
5848
|
+
},
|
|
5849
5849
|
{
|
|
5850
5850
|
"fields": [
|
|
5851
5851
|
{
|
|
@@ -5969,43 +5969,43 @@
|
|
|
5969
5969
|
"path": "std/field/bn254.nr",
|
|
5970
5970
|
"source": "use crate::field::field_less_than;\nuse crate::runtime::is_unconstrained;\n\n// The low and high decomposition of the field modulus\nglobal PLO: Field = 53438638232309528389504892708671455233;\nglobal PHI: Field = 64323764613183177041862057485226039389;\n\npub(crate) global TWO_POW_128: Field = 0x100000000000000000000000000000000;\nglobal TWO_POW_64: Field = 0x10000000000000000;\n\n// Decomposes a single field into two 16 byte fields.\nfn compute_decomposition(mut x: Field) -> (Field, Field) {\n // Here's we're taking advantage of truncating 64 bit limbs from the input field\n // and then subtracting them from the input such the field division is equivalent to integer division.\n let low_lower_64 = (x as u64) as Field;\n x = (x - low_lower_64) / TWO_POW_64;\n let low_upper_64 = (x as u64) as Field;\n\n let high = (x - low_upper_64) / TWO_POW_64;\n let low = low_upper_64 * TWO_POW_64 + low_lower_64;\n\n (low, high)\n}\n\npub(crate) unconstrained fn decompose_hint(x: Field) -> (Field, Field) {\n compute_decomposition(x)\n}\n\nunconstrained fn lte_hint(x: Field, y: Field) -> bool {\n if x == y {\n true\n } else {\n field_less_than(x, y)\n }\n}\n\n// Assert that (alo > blo && ahi >= bhi) || (alo <= blo && ahi > bhi)\nfn assert_gt_limbs(a: (Field, Field), b: (Field, Field)) {\n let (alo, ahi) = a;\n let (blo, bhi) = b;\n /// Safety: borrow is enforced to be boolean due to its type.\n /// if borrow is 0, it asserts that (alo > blo && ahi >= bhi)\n /// if borrow is 1, it asserts that (alo <= blo && ahi > bhi)\n unsafe {\n let borrow = lte_hint(alo, blo);\n\n let rlo = alo - blo - 1 + (borrow as Field) * TWO_POW_128;\n let rhi = ahi - bhi - (borrow as Field);\n\n rlo.assert_max_bit_size::<128>();\n rhi.assert_max_bit_size::<128>();\n }\n}\n\n/// Decompose a single field into two 16 byte fields.\npub fn decompose(x: Field) -> (Field, Field) {\n if is_unconstrained() {\n compute_decomposition(x)\n } else {\n /// Safety: decomposition is properly checked below\n unsafe {\n // Take hints of the decomposition\n let (xlo, xhi) = decompose_hint(x);\n\n // Range check the limbs\n xlo.assert_max_bit_size::<128>();\n xhi.assert_max_bit_size::<128>();\n\n // Check that the decomposition is correct\n assert_eq(x, xlo + TWO_POW_128 * xhi);\n\n // Assert that the decomposition of P is greater than the decomposition of x\n assert_gt_limbs((PLO, PHI), (xlo, xhi));\n (xlo, xhi)\n }\n }\n}\n\npub fn assert_gt(a: Field, b: Field) {\n if is_unconstrained() {\n assert(\n /// Safety: already unconstrained\n unsafe { field_less_than(b, a) },\n );\n } else {\n // Decompose a and b\n let a_limbs = decompose(a);\n let b_limbs = decompose(b);\n\n // Assert that a_limbs is greater than b_limbs\n assert_gt_limbs(a_limbs, b_limbs)\n }\n}\n\npub fn assert_lt(a: Field, b: Field) {\n assert_gt(b, a);\n}\n\npub fn gt(a: Field, b: Field) -> bool {\n if is_unconstrained() {\n /// Safety: unsafe in unconstrained\n unsafe {\n field_less_than(b, a)\n }\n } else if a == b {\n false\n } else {\n /// Safety: Take a hint of the comparison and verify it\n unsafe {\n if field_less_than(a, b) {\n assert_gt(b, a);\n false\n } else {\n assert_gt(a, b);\n true\n }\n }\n }\n}\n\npub fn lt(a: Field, b: Field) -> bool {\n gt(b, a)\n}\n\nmod tests {\n // TODO: Allow imports from \"super\"\n use crate::field::bn254::{assert_gt, decompose, gt, lte_hint, PHI, PLO, TWO_POW_128};\n\n #[test]\n fn check_decompose() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n unconstrained fn check_decompose_unconstrained() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n unconstrained fn check_lte_hint() {\n assert(lte_hint(0, 1));\n assert(lte_hint(0, 0x100));\n assert(lte_hint(0x100, TWO_POW_128 - 1));\n assert(!lte_hint(0 - 1, 0));\n\n assert(lte_hint(0, 0));\n assert(lte_hint(0x100, 0x100));\n assert(lte_hint(0 - 1, 0 - 1));\n }\n\n #[test]\n fn check_assert_gt() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n unconstrained fn check_assert_gt_unconstrained() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n fn check_gt() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n unconstrained fn check_gt_unconstrained() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n fn check_plo_phi() {\n assert_eq(PLO + PHI * TWO_POW_128, 0);\n let p_bytes = crate::field::modulus_le_bytes();\n let mut p_low: Field = 0;\n let mut p_high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n p_low += (p_bytes[i] as Field) * offset;\n p_high += (p_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n assert_eq(p_low, PLO);\n assert_eq(p_high, PHI);\n }\n}\n"
|
|
5971
5971
|
},
|
|
5972
|
-
"
|
|
5972
|
+
"184": {
|
|
5973
5973
|
"path": "/build-volume/noir-projects/aztec-nr/aztec/src/utils/array/subarray.nr",
|
|
5974
5974
|
"source": "/// Returns `DST_LEN` elements from a source array, starting at `offset`. `DST_LEN` must not be larger than the number\n/// of 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 SRC_LEN: u32, let DST_LEN: u32>(\n src: [T; SRC_LEN],\n offset: u32,\n) -> [T; DST_LEN] {\n assert(offset + DST_LEN <= SRC_LEN, \"DST_LEN too large for offset\");\n\n let mut dst: [T; DST_LEN] = std::mem::zeroed();\n for i in 0..DST_LEN {\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 DST_LEN to be 0, so we always get back an emtpy 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 = \"DST_LEN 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"
|
|
5975
5975
|
},
|
|
5976
|
-
"
|
|
5976
|
+
"185": {
|
|
5977
5977
|
"path": "/build-volume/noir-projects/aztec-nr/aztec/src/utils/array/subbvec.nr",
|
|
5978
5978
|
"source": "use crate::utils::array;\n\n/// Returns `DST_MAX_LEN` elements from a source BoundedVec, starting at `offset`. `offset` must not be larger than the\n/// original length, and `DST_LEN` 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 `DST_LEN` 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 SRC_MAX_LEN: u32, let DST_MAX_LEN: u32>(\n vec: BoundedVec<T, SRC_MAX_LEN>,\n offset: u32,\n) -> BoundedVec<T, DST_MAX_LEN> {\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(vec.storage(), offset), vec.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 = \"DST_LEN 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 supprt capacity increases\n let _: BoundedVec<_, 11> = subbvec(bvec, 0);\n }\n\n #[test(should_fail_with = \"DST_LEN 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"
|
|
5979
5979
|
},
|
|
5980
|
-
"
|
|
5980
|
+
"186": {
|
|
5981
5981
|
"path": "/build-volume/noir-projects/aztec-nr/aztec/src/utils/bytes.nr",
|
|
5982
5982
|
"source": "use crate::oracle::random::random;\n\n/// Converts the input bytes into an array of fields. A Field is ~254 bits meaning that each field can store 31 whole bytes.\n///\n/// The input bytes are chunked into chunks of 31 bytes. Each 31-byte chunk is viewed as big-endian, and is converted into a Field. If the last chunk\n/// is less than 31 bytes long, then only the relevant bytes are considered.\n/// For example, [1, 10, 3] is encoded as [1 * 256^2 + 10 * 256 + 3]\n/// Note: ceil(N / 31) = (N + 30) / 31\npub fn be_bytes_31_to_fields<let N: u32>(bytes: [u8; N]) -> [Field; (N + 30) / 31] {\n let mut fields = [0; (N + 30) / 31];\n\n // There are N / 31 whole fields that can be populated.\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 // Note: if 31 divides N, then this loop does not execute.\n // ceil(N/31) - floor(N/31) = 1, unless 31 divides N, in which case it's 0.\n for _ in 0..((N + 30) / 31) - (N / 31) {\n let mut final_field = 0;\n let final_field_idx = fields.len() - 1;\n let final_offset = final_field_idx * 31;\n // N - ((N / 31) * 31) = N - floor(N/31) * 31 = the number of bytes to go in the final field.\n for j in 0..N - ((N / 31) * 31) {\n // Shift the existing value left by 8 bits and add the new byte\n final_field = final_field * 256 + bytes[final_offset + j] as Field;\n }\n\n fields[final_field_idx] = final_field;\n }\n\n fields\n}\n\npub fn le_bytes_31_to_fields<let N: u32>(bytes: [u8; N]) -> [Field; (N + 30) / 31] {\n let mut fields = [0; (N + 30) / 31];\n\n // There are N / 31 whole fields that can be populated.\n for i in 0..N / 31 {\n let mut field = 0;\n for j in 0..31 {\n let k = 31 - j - 1; // iterate in reverse.\n // Shift the existing value left by 8 bits and add the new byte\n field = field * 256 + bytes[i * 31 + k] as Field;\n }\n fields[i] = field;\n }\n\n // Note: if 31 divides N, then this loop does not execute.\n // ceil(N/31) - floor(N/31) = 1, unless 31 divides N, in which case it's 0.\n for _ in 0..((N + 30) / 31) - (N / 31) {\n let mut final_field = 0;\n let final_field_idx = fields.len() - 1;\n let final_offset = final_field_idx * 31;\n // N - ((N / 31) * 31) = N - floor(N/31) * 31 = the number of bytes to go in the final field.\n for j in 0..N - ((N / 31) * 31) {\n let k = (N - ((N / 31) * 31)) - j - 1; // iterate in reverse.\n // Shift the existing value left by 8 bits and add the new byte\n final_field = final_field * 256 + bytes[final_offset + k] as Field;\n }\n fields[final_field_idx] = final_field;\n }\n\n fields\n}\n\n/// Converts an input array of fields into a single array of bytes.\n/// Each input field must contain only 31 bytes (this is constrained to be so).\n/// Each field is converted into 31 big-endian bytes, and the resulting 31-byte\n/// chunks are concatenated back together in the order of the original fields.\n///\n/// It appears that the original author of this function wants to give the caller some control\n/// over the number of bytes that are returned: the final field can be mapped to fewer than 31 bytes,\n/// based on the caller's choice of M.\n/// Given the input is N fields, and each field (except the last) is mapped to 31 bytes,\n/// we definitely need M > (N - 1) * 31 to cover those first (N - 1) fields. Hence the static assertion.\n/// TODO: this is the same as the \"le\" version of this function, save for the `field.to_be_bytes()` calls. I tried passing the conversion function in as a parameter, to reduce code duplication, but couldn't get it to work.\npub fn fields_to_be_bytes_31<let N: u32, let M: u32>(fields: [Field; N]) -> [u8; M] {\n let mut bytes = [0; M];\n\n std::static_assert(M > (N - 1) * 31, \"Not enough output bytes specified\");\n // We make this assertion to keep the logic simpler:\n std::static_assert(N * 31 >= M, \"Too many output bytes specified.\");\n\n for i in 0..N - 1 {\n let field = fields[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[i * 31 + j] = field_as_bytes[j];\n }\n }\n\n let final_field = fields[N - 1];\n final_field.assert_max_bit_size::<8 * (M - ((N - 1) * 31))>();\n\n let final_field_as_bytes: [u8; M - ((N - 1) * 31)] = final_field.to_be_bytes();\n\n let start_index = (N - 1) * 31;\n for j in 0..M - ((N - 1) * 31) {\n bytes[start_index + j] = final_field_as_bytes[j];\n }\n\n bytes\n}\n\n/// Converts an input array of fields into a single array of bytes.\n/// Each input field must contain only 31 bytes (this is constrained to be so).\n/// Each field is converted into 31 little-endian bytes, and the resulting 31-byte\n/// chunks are concatenated back together in the order of the original fields. You'll\n/// end up with quite a strange ordering of bytes if you use this particular function.\npub fn fields_to_le_bytes_31<let N: u32, let M: u32>(fields: [Field; N]) -> [u8; M] {\n let mut bytes = [0; M];\n\n std::static_assert(M > (N - 1) * 31, \"Not enough output bytes specified\");\n // We make this assertion to keep the logic simpler:\n std::static_assert(N * 31 >= M, \"Too many output bytes specified.\");\n\n for i in 0..N - 1 {\n let field = fields[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_le_bytes();\n\n for j in 0..31 {\n bytes[i * 31 + j] = field_as_bytes[j];\n }\n }\n\n let final_field = fields[N - 1];\n final_field.assert_max_bit_size::<8 * (M - ((N - 1) * 31))>();\n\n let final_field_as_bytes: [u8; M - ((N - 1) * 31)] = final_field.to_le_bytes();\n\n let start_index = (N - 1) * 31;\n for j in 0..M - ((N - 1) * 31) {\n bytes[start_index + j] = final_field_as_bytes[j];\n }\n\n bytes\n}\n\n/// Converts an input array of fields into a single array of bytes.\n/// Each field is converted to a 32-byte big-endian array.\n/// Since a field is ~254 bits, you'll end up with a subtle 2-bit \"gap\" at the big end,\n/// every 32 bytes. Be careful that such a gap doesn't leak information!\npub fn fields_to_be_bytes_32<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 = fields[i];\n let field_as_bytes: [u8; 32] = field.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\nunconstrained fn byte_to_bits(byte: u8) -> [u1; 8] {\n let mut mut_byte = byte;\n let mut bits: [u1; 8] = [0; 8];\n for i in 0..8 {\n bits[i] = (mut_byte & 1) as u1;\n mut_byte >>= 1;\n }\n bits\n}\n\n/// Returns as many random bytes as specified through N.\npub unconstrained fn get_random_bytes<let N: u32>() -> [u8; N] {\n let mut bytes = [0; N];\n let mut idx = 32;\n let mut randomness = [0; 32];\n for i in 0..N {\n if idx == 32 {\n randomness = random().to_be_bytes();\n idx = 1; // Skip the first byte as it's always 0.\n }\n bytes[i] = randomness[idx];\n idx += 1;\n }\n bytes\n}\n\n/// Returns as many random bits as specified through N.\nunconstrained fn get_random_bits<let N: u32>() -> [u1; N] {\n // Note: (N + 7) / 8 = ceil(N / 8)\n let bytes = get_random_bytes::<(N + 7) / 8>();\n let mut bits: [u1; N] = [0; N];\n for i in 0..bytes.len() - 1 {\n let mut byte = bytes[i];\n for j in 0..8 {\n let bit_idx = i * 8 + j;\n bits[bit_idx] = (byte & 1) as u1;\n byte >>= 1;\n }\n }\n\n // N - ((N / 8) * 8) = N - floor(N/8) * 8 = the number of bits remaining.\n let byte_idx = bytes.len() - 1;\n let mut byte = bytes[byte_idx];\n for j in 0..N - ((N / 8) * 8) {\n let bit_idx = (byte_idx) * 8 + j;\n bits[bit_idx] = (byte & 1) as u1;\n byte >>= 1;\n }\n\n bits\n}\n\n/// Returns random bits, in chunks, according to the provided numeric generics.\nunconstrained fn get_chunks_of_random_bits<let NUM_CHUNKS: u32, let NUM_BITS: u32>() -> [[u1; NUM_BITS]; NUM_CHUNKS] {\n let random_bits = get_random_bits::<NUM_CHUNKS * NUM_BITS>();\n let mut chunks: [[u1; NUM_BITS]; NUM_CHUNKS] = [[0; NUM_BITS]; NUM_CHUNKS];\n for i in 0..NUM_CHUNKS {\n let mut chunk: [u1; NUM_BITS] = [0; NUM_BITS];\n for j in 0..NUM_BITS {\n chunk[j] = random_bits[i * NUM_BITS + j];\n }\n chunks[i] = chunk;\n }\n chunks\n}\n\n/**\n * Helper fn for be/le_bytes_to_padded_fields() fns.\n */\nfn pad_31_byte_fields_with_random_bits<let N: u32>(input: [Field; N]) -> [Field; N] {\n /// Safety: we can't constrain whether or not the returned bits are actually random;\n /// we can only rely on it being in the caller's best interest.\n let chunks_of_random_bits = unsafe { get_chunks_of_random_bits::<((N + 30) / 31), 6>() };\n let mut fields = input;\n // We push the random bits to the \"big end\" of each field\n let TWO_POW_248 = 0x100000000000000000000000000000000000000000000000000000000000000;\n for i in 0..fields.len() {\n let mut shift = TWO_POW_248;\n for j in 0..5 {\n fields[i] += shift * chunks_of_random_bits[i][j] as Field;\n shift *= 2;\n }\n\n // This might overflow the field modulus, so we need to be careful.\n // By this point, shift = 2 ^ 253, so will populate the 254th bit (counting from 1)\n let field_with_254th_bit = fields[i] + shift * chunks_of_random_bits[i][6 - 1] as Field;\n\n // Expensive comparison (one for each field), but it's important -- if we want to hide that we were\n // working with bytes -- that we include the 254th random bit when it fits.\n fields[i] = if (fields[i].lt(field_with_254th_bit)) {\n field_with_254th_bit\n } else {\n fields[i]\n };\n }\n fields\n}\n\n/**\n * The above functions be_bytes_31_to_fields and le_bytes_31_to_fields have a privacy-leakage problem:\n * they result in fields which are all 248-bits instead of 254-bits.\n * That means if the above functions are used to convert a ciphertext from bytes to\n * fields, it leaks (with very high probability) to all observers of the log that the\n * ciphertext was created with a \"bit twiddly\" encryption scheme like AES.\n * This reduces privacy sets for all apps.\n *\n * This function seeks to \"pad\" those remaining 6 bits with randomness, so that all\n * encrypted logs look even more similar (full fields of 254-bits of random-looking\n * information). Of course, this adds some extra constraints, unfortunately.\n */\npub fn le_bytes_to_padded_fields<let N: u32>(input: [u8; N]) -> [Field; (N + 30) / 31] {\n let mut fields = le_bytes_31_to_fields(input);\n pad_31_byte_fields_with_random_bits(fields)\n}\n\npub fn be_bytes_to_padded_fields<let N: u32>(input: [u8; N]) -> [Field; (N + 30) / 31] {\n let mut fields = be_bytes_31_to_fields(input);\n pad_31_byte_fields_with_random_bits(fields)\n}\n\nmod test {\n use crate::utils::bytes::{\n be_bytes_31_to_fields, fields_to_be_bytes_31, fields_to_le_bytes_31, le_bytes_31_to_fields,\n };\n\n // BE BYTES\n\n #[test]\n fn test_be_bytes_31_to_1_field() {\n let input = [\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,\n 25, 26, 27, 28, 29, 30, 31,\n ];\n let output = be_bytes_31_to_fields(input);\n\n assert_eq(output[0], 0x0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f);\n }\n\n #[test]\n fn test_1_field_to_be_bytes_31() {\n let input = [0x0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f];\n let output: [u8; 31] = fields_to_be_bytes_31(input);\n\n assert_eq(\n output,\n [\n 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,\n 24, 25, 26, 27, 28, 29, 30, 31,\n ],\n );\n }\n\n #[test]\n fn test_3_small_fields_to_be_bytes_31() {\n let input = [1, 2, 3];\n let output: [u8; 93] = fields_to_be_bytes_31(input);\n\n // Each field should occupy 31 bytes with the non-zero value being placed in the last one.\n assert_eq(\n output,\n [\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,\n 0, 0, 1, 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,\n 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 3,\n ],\n );\n }\n\n #[test]\n fn test_3_small_fields_to_fewer_be_bytes() {\n let input = [1, 2, 3];\n let output: [u8; 63] = fields_to_be_bytes_31(input);\n println(f\"output: {output}\");\n\n // First 2 fields should occupy 31 bytes with the non-zero value being placed in the last one while the last\n // field should occupy 1 byte. There is not information destruction here because the last field fits into\n // 1 byte.\n assert_eq(\n output,\n [\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,\n 0, 0, 1, 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,\n 0, 0, 0, 0, 0, 2, 3,\n ],\n );\n }\n\n #[test]\n fn test_be_bytes_31_to_2_fields() {\n let input = [\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,\n 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,\n 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\n ];\n let output = be_bytes_31_to_fields(input);\n\n assert_eq(output[0], 0x0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f);\n assert_eq(output[1], 0x202122232425262728292a2b2c2d2e2f303132333435363738393a3b);\n }\n\n #[test]\n fn test_2_fields_to_be_bytes_31() {\n let input = [\n 0x0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f,\n 0x202122232425262728292a2b2c2d2e2f303132333435363738393a3b,\n ];\n let output: [u8; 62] = fields_to_be_bytes_31(input);\n\n assert_eq(\n output,\n [\n 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,\n 24, 25, 26, 27, 28, 29, 30, 31, 0, 0, 0, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,\n 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\n ],\n );\n }\n\n #[test]\n fn test_large_random_be_bytes_31_input_to_fields_and_back(input: [u8; 128]) {\n let output = be_bytes_31_to_fields(input);\n let input_back: [u8; 128] = fields_to_be_bytes_31(output);\n\n assert_eq(input, input_back);\n }\n\n // I need to get an array of random values lower than 2^248 on input and since there is no u248 type and modulo\n // operation is not supported on a Field (to do field % 2^248), I will take multiple smaller values and combine\n // them to get a value lower than 2^248.\n #[test]\n fn test_large_random_input_to_be_bytes_31_and_back(\n input1: [u64; 5],\n input2: [u64; 5],\n input3: [u64; 5],\n input4: [u32; 5],\n input5: [u16; 5],\n input6: [u8; 5],\n ) {\n let mut input = [0; 5];\n for i in 0..5 {\n input[i] = (input1[i] as Field * 2.pow_32(184))\n + (input2[i] as Field * 2.pow_32(120))\n + (input3[i] as Field * 2.pow_32(56))\n + (input4[i] as Field * 2.pow_32(24))\n + (input5[i] as Field * 2.pow_32(8))\n + input6[i] as Field;\n }\n\n let output: [u8; 155] = fields_to_be_bytes_31(input);\n let input_back = be_bytes_31_to_fields(output);\n\n assert_eq(input, input_back);\n }\n\n #[test(should_fail_with = \"call to assert_max_bit_size\")]\n fn test_too_few_destination_be_bytes() {\n // We should get an error here because first field gets converted to 31 bytes and the second field needs\n // at least 2 bytes but we provide it with 1.\n let input = [1, 256];\n let _ignored_result: [u8; 32] = fields_to_be_bytes_31(input);\n }\n\n #[test(should_fail_with = \"call to assert_max_bit_size\")]\n fn test_fields_to_be_bytes_31_value_too_large() {\n let input = [2.pow_32(248)]; // this number is 1 bit larger than 31 bytes.\n let _ignored_result: [u8; 31] = fields_to_be_bytes_31(input);\n }\n\n #[test]\n fn test_fields_to_be_bytes_31_max_value() {\n let input = [2.pow_32(248) - 1];\n let result: [u8; 31] = fields_to_be_bytes_31(input);\n\n // We check that all the bytes were set to max value (255)\n for i in 0..31 {\n assert_eq(result[i], 255);\n }\n }\n\n // LE BYTES\n\n #[test]\n fn test_le_bytes_31_to_1_field() {\n let input = [\n 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10,\n 9, 8, 7, 6, 5, 4, 3, 2, 1,\n ];\n let output = le_bytes_31_to_fields(input);\n\n assert_eq(output[0], 0x0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f);\n }\n\n #[test]\n fn test_1_field_to_le_bytes_31() {\n let input = [0x0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f];\n let output: [u8; 31] = fields_to_le_bytes_31(input);\n\n assert_eq(\n output,\n [\n 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11,\n 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,\n ],\n );\n }\n\n #[test]\n fn test_3_small_fields_to_le_bytes_31() {\n let input = [1, 2, 3];\n let output: [u8; 93] = fields_to_le_bytes_31(input);\n\n // Each field should occupy 31 bytes with the non-zero value being placed in the last one.\n assert_eq(\n output,\n [\n 1, 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,\n 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0,\n ],\n );\n }\n\n #[test]\n fn test_3_small_fields_to_fewer_le_bytes() {\n let input = [1, 2, 3];\n let output: [u8; 63] = fields_to_le_bytes_31(input);\n\n // First 2 fields should occupy 31 bytes with the non-zero value being placed in the last one while the last\n // field should occupy 1 byte. There is not information destruction here because the last field fits into\n // 1 byte.\n assert_eq(\n output,\n [\n 1, 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,\n 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 3,\n ],\n );\n }\n\n #[test]\n fn test_le_bytes_31_to_2_fields() {\n let input = [\n 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38,\n 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16,\n 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,\n ];\n let output = le_bytes_31_to_fields(input);\n\n assert_eq(output[0], 0x1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b);\n assert_eq(output[1], 0x0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c);\n }\n\n #[test]\n fn test_2_fields_to_le_bytes_31() {\n let input = [\n 0x0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f,\n 0x202122232425262728292a2b2c2d2e2f303132333435363738393a3b,\n ];\n let output: [u8; 62] = fields_to_le_bytes_31(input);\n\n assert_eq(\n output,\n [\n 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11,\n 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47,\n 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 0, 0, 0,\n ],\n );\n }\n\n #[test]\n fn test_large_random_le_bytes_input_to_fields_and_back(input: [u8; 128]) {\n let output = le_bytes_31_to_fields(input);\n let input_back: [u8; 128] = fields_to_le_bytes_31(output);\n\n assert_eq(input, input_back);\n }\n\n // I need to get an array of random values lower than 2^248 on input and since there is no u248 type and modulo\n // operation is not supported on a Field (to do field % 2^248), I will take multiple smaller values and combine\n // them to get a value lower than 2^248.\n #[test]\n fn test_large_random_input_to_le_bytes_and_back(\n input1: [u64; 5],\n input2: [u64; 5],\n input3: [u64; 5],\n input4: [u32; 5],\n input5: [u16; 5],\n input6: [u8; 5],\n ) {\n let mut input = [0; 5];\n for i in 0..5 {\n input[i] = (input1[i] as Field * 2.pow_32(184))\n + (input2[i] as Field * 2.pow_32(120))\n + (input3[i] as Field * 2.pow_32(56))\n + (input4[i] as Field * 2.pow_32(24))\n + (input5[i] as Field * 2.pow_32(8))\n + input6[i] as Field;\n }\n\n let output: [u8; 155] = fields_to_le_bytes_31(input);\n let input_back = le_bytes_31_to_fields(output);\n\n assert_eq(input, input_back);\n }\n\n #[test(should_fail_with = \"call to assert_max_bit_size\")]\n fn test_too_few_destination_le_bytes() {\n // We should get an error here because first field gets converted to 31 bytes and the second field needs\n // at least 2 bytes but we provide it with 1.\n let input = [1, 256];\n let _ignored_result: [u8; 32] = fields_to_le_bytes_31(input);\n }\n\n #[test(should_fail_with = \"call to assert_max_bit_size\")]\n fn test_fields_to_le_bytes_31_value_too_large() {\n let input = [2.pow_32(248)];\n let _ignored_result: [u8; 31] = fields_to_le_bytes_31(input);\n }\n\n #[test]\n fn test_fields_to_le_bytes_31_max_value() {\n let input = [2.pow_32(248) - 1];\n let result: [u8; 31] = fields_to_le_bytes_31(input);\n\n // We check that all the bytes were set to max value (255)\n for i in 0..31 {\n assert_eq(result[i], 255);\n }\n }\n}\n"
|
|
5983
5983
|
},
|
|
5984
|
-
"189": {
|
|
5985
|
-
"path": "/build-volume/noir-projects/aztec-nr/aztec/src/utils/point.nr",
|
|
5986
|
-
"source": "use crate::utils::field::sqrt;\nuse dep::protocol_types::point::Point;\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 =\n 10944121435919637611123202872628637544274182200208017171849102093287904247808;\n\n/// Converts a point to a byte array.\n///\n/// We don't serialize the point at infinity flag because this function is used in situations where we do not want\n/// to waste the extra byte (encrypted log).\npub fn point_to_bytes(p: Point) -> [u8; 32] {\n // Note that there is 1 more free bit in the 32 bytes (254 bits currently occupied by the x coordinate, 1 bit for\n // the \"sign\") so it's possible to use that last bit as an \"is_infinite\" flag if desired in the future.\n assert(!p.is_infinite, \"Cannot serialize point at infinity as bytes.\");\n\n let mut result: [u8; 32] = p.x.to_be_bytes();\n\n if get_sign_of_point(p) {\n // y is <= (modulus - 1) / 2 so we set the sign bit to 1\n // Here we leverage that field fits into 254 bits (log2(Fr.MODULUS) < 254) and given that we serialize Fr to 32\n // bytes and we use big-endian the 2 most significant bits are never populated. Hence we can use one of\n // the bits as a sign bit.\n result[0] += 128;\n }\n\n result\n}\n\n/**\n * Returns: true if p.y <= MOD_DIV_2, else false.\n */\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\n // the sign we check if the y coordinate is less or equal than the curve's order minus 1 divided by 2.\n // Ideally we'd do `y <= MOD_DIV_2`, but there's no `lte` function, so instead we do `!(y > MOD_DIV_2)`, which is\n // equivalent, 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\npub fn point_from_x_coord(x: Field) -> Point {\n // y ^ 2 = x ^ 3 - 17\n let rhs = x * x * x - 17;\n let y = sqrt(rhs).unwrap();\n Point { x, y, is_infinite: false }\n}\n\nmod test {\n use crate::utils::point::point_to_bytes;\n use dep::protocol_types::point::Point;\n\n #[test]\n unconstrained fn test_point_to_bytes_positive_sign() {\n let p = Point {\n x: 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73,\n y: 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a,\n is_infinite: false,\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_positive_sign = [\n 154, 244, 31, 93, 233, 100, 70, 220, 55, 118, 161, 235, 45, 152, 187, 149, 107, 122,\n 205, 153, 121, 166, 120, 84, 190, 198, 250, 124, 41, 115, 189, 115,\n ];\n assert_eq(expected_compressed_point_positive_sign, compressed_point);\n }\n\n #[test]\n unconstrained fn test_point_to_bytes_negative_sign() {\n let p = Point {\n x: 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5,\n y: 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0,\n is_infinite: false,\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_negative_sign = [\n 36, 115, 113, 101, 46, 85, 221, 116, 201, 175, 141, 190, 159, 180, 73, 49, 186, 41, 169,\n 34, 153, 148, 56, 75, 215, 7, 119, 150, 193, 78, 226, 181,\n ];\n\n assert_eq(expected_compressed_point_negative_sign, compressed_point);\n }\n}\n"
|
|
5987
|
-
},
|
|
5988
5984
|
"19": {
|
|
5989
5985
|
"path": "std/field/mod.nr",
|
|
5990
5986
|
"source": "pub mod bn254;\nuse crate::{runtime::is_unconstrained, static_assert};\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n /// Asserts that `self` can be represented in `bit_size` bits.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{bit_size}`.\n // docs:start:assert_max_bit_size\n pub fn assert_max_bit_size<let BIT_SIZE: u32>(self) {\n // docs:end:assert_max_bit_size\n static_assert(\n BIT_SIZE < modulus_num_bits() as u32,\n \"BIT_SIZE must be less than modulus_num_bits\",\n );\n self.__assert_max_bit_size(BIT_SIZE);\n }\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(self, bit_size: u32) {}\n\n /// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n /// This slice will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n /// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n #[builtin(to_le_bits)]\n fn _to_le_bits<let N: u32>(self: Self) -> [u1; N] {}\n\n /// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n /// This array will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n /// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n #[builtin(to_be_bits)]\n fn _to_be_bits<let N: u32>(self: Self) -> [u1; N] {}\n\n /// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n /// This slice will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// The bit decomposition returned is canonical and is guaranteed to not overflow the modulus.\n // docs:start:to_le_bits\n pub fn to_le_bits<let N: u32>(self: Self) -> [u1; N] {\n // docs:end:to_le_bits\n let bits = self._to_le_bits();\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bits();\n assert(bits.len() <= p.len());\n let mut ok = bits.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bits[N - 1 - i] != p[N - 1 - i]) {\n assert(p[N - 1 - i] == 1);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bits\n }\n\n /// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n /// This array will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// The bit decomposition returned is canonical and is guaranteed to not overflow the modulus.\n // docs:start:to_be_bits\n pub fn to_be_bits<let N: u32>(self: Self) -> [u1; N] {\n // docs:end:to_be_bits\n let bits = self._to_be_bits();\n\n if !is_unconstrained() {\n // Ensure that the decomposition does not overflow the modulus\n let p = modulus_be_bits();\n assert(bits.len() <= p.len());\n let mut ok = bits.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bits[i] != p[i]) {\n assert(p[i] == 1);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bits\n }\n\n /// Decomposes `self` into its little endian byte decomposition as a `[u8;N]` array\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n ///\n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self',\n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_le_bytes\n pub fn to_le_bytes<let N: u32>(self: Self) -> [u8; N] {\n // docs:end:to_le_bytes\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n // Compute the byte decomposition\n let bytes = self.to_le_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[N - 1 - i] != p[N - 1 - i]) {\n assert(bytes[N - 1 - i] < p[N - 1 - i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n /// Decomposes `self` into its big endian byte decomposition as a `[u8;N]` array of length required to represent the field modulus\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n ///\n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self',\n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_be_bytes\n pub fn to_be_bytes<let N: u32>(self: Self) -> [u8; N] {\n // docs:end:to_be_bytes\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n // Compute the byte decomposition\n let bytes = self.to_be_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_be_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[i] != p[i]) {\n assert(bytes[i] < p[i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n // docs:start:to_le_radix\n pub fn to_le_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n static_assert(1 < radix, \"radix must be greater than 1\");\n static_assert(radix <= 256, \"radix must be less than or equal to 256\");\n static_assert(radix & (radix - 1) == 0, \"radix must be a power of 2\");\n }\n self.__to_le_radix(radix)\n }\n // docs:end:to_le_radix\n\n // docs:start:to_be_radix\n pub fn to_be_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n crate::assert_constant(radix);\n }\n self.__to_be_radix(radix)\n }\n // docs:end:to_be_radix\n\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\n\n // `_radix` must be less than 256\n #[builtin(to_be_radix)]\n fn __to_be_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b: [u1; 32] = exponent.to_le_bits();\n\n for i in 1..33 {\n r *= r;\n r = (b[32 - i] as Field) * (r * self) + (1 - b[32 - i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x `elem` {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n\n /// Convert a little endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_le_bytes<let N: u32>(bytes: [u8; N]) -> Field {\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[i] as Field) * v;\n v = v * 256;\n }\n result\n }\n\n /// Convert a big endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_be_bytes<let N: u32>(bytes: [u8; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[N - 1 - i] as Field) * v;\n v = v * 256;\n }\n result\n }\n}\n\n#[builtin(modulus_num_bits)]\npub comptime fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub comptime fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub comptime fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub comptime fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub comptime fn modulus_le_bytes() -> [u8] {}\n\n/// An unconstrained only built in to efficiently compare fields.\n#[builtin(field_less_than)]\nunconstrained fn __field_less_than(x: Field, y: Field) -> bool {}\n\npub(crate) unconstrained fn field_less_than(x: Field, y: Field) -> bool {\n __field_less_than(x, y)\n}\n\n// Convert a 32 byte array to a field element by modding\npub fn bytes32_to_field(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..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n if is_unconstrained() {\n /// Safety: unconstrained context\n unsafe {\n field_less_than(x, y)\n }\n } else {\n let x_bytes: [u8; 32] = x.to_le_bytes();\n let y_bytes: [u8; 32] = y.to_le_bytes();\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..32 {\n if (!done) {\n let x_byte = x_bytes[32 - 1 - i] as u8;\n let y_byte = y_bytes[32 - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n }\n}\n\nmod tests {\n use crate::{panic::panic, runtime};\n use super::field_less_than;\n\n #[test]\n // docs:start:to_be_bits_example\n fn test_to_be_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_be_bits();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 1, 0]);\n }\n // docs:end:to_be_bits_example\n\n #[test]\n // docs:start:to_le_bits_example\n fn test_to_le_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_le_bits();\n assert_eq(bits, [0, 1, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_bits_example\n\n #[test]\n // docs:start:to_be_bytes_example\n fn test_to_be_bytes() {\n let field = 2;\n let bytes: [u8; 8] = field.to_be_bytes();\n assert_eq(bytes, [0, 0, 0, 0, 0, 0, 0, 2]);\n assert_eq(Field::from_be_bytes::<8>(bytes), field);\n }\n // docs:end:to_be_bytes_example\n\n #[test]\n // docs:start:to_le_bytes_example\n fn test_to_le_bytes() {\n let field = 2;\n let bytes: [u8; 8] = field.to_le_bytes();\n assert_eq(bytes, [2, 0, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bytes), field);\n }\n // docs:end:to_le_bytes_example\n\n #[test]\n // docs:start:to_be_radix_example\n fn test_to_be_radix() {\n // 259, in base 256, big endian, is [1, 3].\n // i.e. 3 * 256^0 + 1 * 256^1\n let field = 259;\n\n // The radix (in this example, 256) must be a power of 2.\n // The length of the returned byte array can be specified to be\n // >= the amount of space needed.\n let bytes: [u8; 8] = field.to_be_radix(256);\n assert_eq(bytes, [0, 0, 0, 0, 0, 0, 1, 3]);\n assert_eq(Field::from_be_bytes::<8>(bytes), field);\n }\n // docs:end:to_be_radix_example\n\n #[test]\n // docs:start:to_le_radix_example\n fn test_to_le_radix() {\n // 259, in base 256, little endian, is [3, 1].\n // i.e. 3 * 256^0 + 1 * 256^1\n let field = 259;\n\n // The radix (in this example, 256) must be a power of 2.\n // The length of the returned byte array can be specified to be\n // >= the amount of space needed.\n let bytes: [u8; 8] = field.to_le_radix(256);\n assert_eq(bytes, [3, 1, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bytes), field);\n }\n // docs:end:to_le_radix_example\n\n #[test(should_fail_with = \"radix must be greater than 1\")]\n fn test_to_le_radix_1() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(1);\n } else {\n panic(f\"radix must be greater than 1\");\n }\n }\n\n // TODO: Update this test to account for the Brillig restriction that the radix must be greater than 2\n //#[test]\n //fn test_to_le_radix_brillig_1() {\n // // this test should only fail in constrained mode\n // if runtime::is_unconstrained() {\n // let field = 1;\n // let out: [u8; 8] = field.to_le_radix(1);\n // crate::println(out);\n // let expected = [0; 8];\n // assert(out == expected, \"unexpected result\");\n // }\n //}\n\n #[test(should_fail_with = \"radix must be a power of 2\")]\n fn test_to_le_radix_3() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(3);\n } else {\n panic(f\"radix must be a power of 2\");\n }\n }\n\n #[test]\n fn test_to_le_radix_brillig_3() {\n // this test should only fail in constrained mode\n if runtime::is_unconstrained() {\n let field = 1;\n let out: [u8; 8] = field.to_le_radix(3);\n let mut expected = [0; 8];\n expected[0] = 1;\n assert(out == expected, \"unexpected result\");\n }\n }\n\n #[test(should_fail_with = \"radix must be less than or equal to 256\")]\n fn test_to_le_radix_512() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(512);\n } else {\n panic(f\"radix must be less than or equal to 256\")\n }\n }\n\n // TODO: Update this test to account for the Brillig restriction that the radix must be less than 512\n //#[test]\n //fn test_to_le_radix_brillig_512() {\n // // this test should only fail in constrained mode\n // if runtime::is_unconstrained() {\n // let field = 1;\n // let out: [u8; 8] = field.to_le_radix(512);\n // let mut expected = [0; 8];\n // expected[0] = 1;\n // assert(out == expected, \"unexpected result\");\n // }\n //}\n\n #[test]\n unconstrained fn test_field_less_than() {\n assert(field_less_than(0, 1));\n assert(field_less_than(0, 0x100));\n assert(field_less_than(0x100, 0 - 1));\n assert(!field_less_than(0 - 1, 0));\n }\n}\n"
|
|
5991
5987
|
},
|
|
5988
|
+
"190": {
|
|
5989
|
+
"path": "/build-volume/noir-projects/aztec-nr/aztec/src/utils/point.nr",
|
|
5990
|
+
"source": "use crate::utils::field::sqrt;\nuse dep::protocol_types::point::Point;\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 =\n 10944121435919637611123202872628637544274182200208017171849102093287904247808;\n\n/// Converts a point to a byte array.\n///\n/// We don't serialize the point at infinity flag because this function is used in situations where we do not want\n/// to waste the extra byte (encrypted log).\npub fn point_to_bytes(p: Point) -> [u8; 32] {\n // Note that there is 1 more free bit in the 32 bytes (254 bits currently occupied by the x coordinate, 1 bit for\n // the \"sign\") so it's possible to use that last bit as an \"is_infinite\" flag if desired in the future.\n assert(!p.is_infinite, \"Cannot serialize point at infinity as bytes.\");\n\n let mut result: [u8; 32] = p.x.to_be_bytes();\n\n if get_sign_of_point(p) {\n // y is <= (modulus - 1) / 2 so we set the sign bit to 1\n // Here we leverage that field fits into 254 bits (log2(Fr.MODULUS) < 254) and given that we serialize Fr to 32\n // bytes and we use big-endian the 2 most significant bits are never populated. Hence we can use one of\n // the bits as a sign bit.\n result[0] += 128;\n }\n\n result\n}\n\n/**\n * Returns: true if p.y <= MOD_DIV_2, else false.\n */\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\n // the sign we check if the y coordinate is less or equal than the curve's order minus 1 divided by 2.\n // Ideally we'd do `y <= MOD_DIV_2`, but there's no `lte` function, so instead we do `!(y > MOD_DIV_2)`, which is\n // equivalent, 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\npub fn point_from_x_coord(x: Field) -> Point {\n // y ^ 2 = x ^ 3 - 17\n let rhs = x * x * x - 17;\n let y = sqrt(rhs).unwrap();\n Point { x, y, is_infinite: false }\n}\n\nmod test {\n use crate::utils::point::point_to_bytes;\n use dep::protocol_types::point::Point;\n\n #[test]\n unconstrained fn test_point_to_bytes_positive_sign() {\n let p = Point {\n x: 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73,\n y: 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a,\n is_infinite: false,\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_positive_sign = [\n 154, 244, 31, 93, 233, 100, 70, 220, 55, 118, 161, 235, 45, 152, 187, 149, 107, 122,\n 205, 153, 121, 166, 120, 84, 190, 198, 250, 124, 41, 115, 189, 115,\n ];\n assert_eq(expected_compressed_point_positive_sign, compressed_point);\n }\n\n #[test]\n unconstrained fn test_point_to_bytes_negative_sign() {\n let p = Point {\n x: 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5,\n y: 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0,\n is_infinite: false,\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_negative_sign = [\n 36, 115, 113, 101, 46, 85, 221, 116, 201, 175, 141, 190, 159, 180, 73, 49, 186, 41, 169,\n 34, 153, 148, 56, 75, 215, 7, 119, 150, 193, 78, 226, 181,\n ];\n\n assert_eq(expected_compressed_point_negative_sign, compressed_point);\n }\n}\n"
|
|
5991
|
+
},
|
|
5992
5992
|
"21": {
|
|
5993
5993
|
"path": "std/hash/mod.nr",
|
|
5994
5994
|
"source": "pub mod poseidon;\npub mod poseidon2;\npub mod keccak;\npub mod sha256;\npub mod sha512;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\nuse crate::uint128::U128;\n\n// Kept for backwards compatibility\npub use sha256::{digest, sha256, sha256_compression, sha256_var};\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment<let N: u32>(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator<let N: u32>(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash<let N: u32>(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator<let N: u32>(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0]\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators<let N: u32, let M: u32>(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators<let N: u32, let M: u32>(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n /// Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n// docs:start:keccak256\npub fn keccak256<let N: u32>(input: [u8; N], message_size: u32) -> [u8; 32]\n// docs:end:keccak256\n{\n crate::hash::keccak::keccak256(input, message_size)\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation<let N: u32>(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: StructDefinition) -> Quoted {\n let name = quote { Hash };\n let signature = quote { fn hash<H>(_self: Self, _state: &mut H) where H: std::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher<H>\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault<H>;\n\nimpl<H> BuildHasher<H> for BuildHasherDefault<H>\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl<H> Default for BuildHasherDefault<H>\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash<H>(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for U128 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self.lo as Field);\n H::write(state, self.hi as Field);\n }\n}\n\nimpl<T, let N: u32> Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<T> Hash for [T]\nwhere\n T: Hash,\n{\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<A, B> Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl<A, B, C> Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl<A, B, C, D> Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl<A, B, C, D, E> Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n"
|
|
5995
5995
|
},
|
|
5996
|
-
"
|
|
5996
|
+
"245": {
|
|
5997
5997
|
"path": "/build-volume/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr",
|
|
5998
5998
|
"source": "use crate::{point::Point, traits::{Deserialize, Empty, Serialize}};\npub use crate::constants::KEY_VALIDATION_REQUEST_LENGTH;\n\npub struct KeyValidationRequest {\n pub pk_m: Point,\n pub sk_app: Field, // not a grumpkin scalar because it's output of poseidon2\n}\n\nimpl Eq for KeyValidationRequest {\n fn eq(self, request: KeyValidationRequest) -> bool {\n (request.pk_m.eq(self.pk_m)) & (request.sk_app.eq(self.sk_app))\n }\n}\n\nimpl Empty for KeyValidationRequest {\n fn empty() -> Self {\n KeyValidationRequest { pk_m: Point::empty(), sk_app: 0 }\n }\n}\n\nimpl Serialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {\n [self.pk_m.x, self.pk_m.y, self.pk_m.is_infinite as Field, self.sk_app]\n }\n}\n\nimpl Deserialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n Self {\n pk_m: Point { x: fields[0], y: fields[1], is_infinite: fields[2] as bool },\n sk_app: fields[3],\n }\n }\n}\n"
|
|
5999
5999
|
},
|
|
6000
|
-
"
|
|
6000
|
+
"252": {
|
|
6001
6001
|
"path": "/build-volume/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr",
|
|
6002
6002
|
"source": "use crate::{\n abis::function_selector::FunctionSelector,\n address::{\n partial_address::PartialAddress, salted_initialization_hash::SaltedInitializationHash,\n },\n constants::{\n AZTEC_ADDRESS_LENGTH, FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__CONTRACT_ADDRESS_V1,\n MAX_FIELD_VALUE,\n },\n contract_class_id::ContractClassId,\n hash::{poseidon2_hash_with_separator, private_functions_root_from_siblings},\n merkle_tree::membership::MembershipWitness,\n public_keys::{IvpkM, NpkM, OvpkM, PublicKeys, ToPoint, TpkM},\n traits::{Deserialize, Empty, FromField, Packable, Serialize, ToField},\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 ec::{pow, sqrt};\nuse std::{\n embedded_curve_ops::{EmbeddedCurveScalar, fixed_base_scalar_mul as derive_public_key},\n ops::Add,\n};\n\n// Aztec address\npub struct AztecAddress {\n pub inner: Field,\n}\n\nimpl Eq for AztecAddress {\n fn eq(self, other: Self) -> bool {\n self.to_field() == other.to_field()\n }\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 Serialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n FromField::from_field(fields[0])\n }\n}\n\n/// We implement the Packable trait for AztecAddress because it can be stored in contract's storage (and there\n/// the implementation of Packable is required).\nimpl Packable<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn pack(self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n self.serialize()\n }\n\n fn unpack(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n Self::deserialize(fields)\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn to_address_point(self) -> AddressPoint {\n // We compute the address point by taking our address, setting it to x, and then solving for y in the\n // equation which defines our bn curve:\n // y^2 = x^3 - 17; x = address\n let x = self.inner;\n let y_squared = pow(x, 3) - 17;\n\n // TODO (#8970): Handle cases where we cannot recover a point from an address\n let mut y = sqrt(y_squared);\n\n // If we get a negative y coordinate (any y where y > MAX_FIELD_VALUE / 2), we pin it to the\n // positive one (any value where y <= MAX_FIELD_VALUE / 2) by subtracting it from the Field modulus\n // note: The field modulus is MAX_FIELD_VALUE + 1\n if (!(y.lt(MAX_FIELD_VALUE / 2) | y.eq(MAX_FIELD_VALUE / 2))) {\n y = (MAX_FIELD_VALUE + 1) - y;\n }\n\n AddressPoint { inner: Point { x: self.inner, y, is_infinite: false } }\n }\n\n pub fn compute(public_keys: PublicKeys, partial_address: PartialAddress) -> AztecAddress {\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 GENERATOR_INDEX__CONTRACT_ADDRESS_V1,\n );\n\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 secrect 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_private_function(\n function_selector: FunctionSelector,\n function_vk_hash: Field,\n function_leaf_membership_witness: MembershipWitness<FUNCTION_TREE_HEIGHT>,\n contract_class_artifact_hash: Field,\n contract_class_public_bytecode_commitment: Field,\n salted_initialization_hash: SaltedInitializationHash,\n public_keys: PublicKeys,\n ) -> Self {\n let private_functions_root = private_functions_root_from_siblings(\n function_selector,\n function_vk_hash,\n function_leaf_membership_witness.leaf_index,\n function_leaf_membership_witness.sibling_path,\n );\n\n let contract_class_id = ContractClassId::compute(\n contract_class_artifact_hash,\n private_functions_root,\n contract_class_public_bytecode_commitment,\n );\n\n // Compute contract address using the preimage which includes the class_id.\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 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 0x24e4646f58b9fbe7d38e317db8d5636c423fbbdfbe119fc190fe9c64747e0c62;\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], GENERATOR_INDEX__CONTRACT_ADDRESS_V1);\n let expected_computed_preaddress_from_partial_and_pubkey =\n 0x23ce9be3fa3c846b0f9245cc796902e731d04f086e8a42473bb29e405fc98075;\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 assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n"
|
|
6003
6003
|
},
|
|
6004
|
-
"
|
|
6004
|
+
"255": {
|
|
6005
6005
|
"path": "/build-volume/noir-projects/noir-protocol-circuits/crates/types/src/address/partial_address.nr",
|
|
6006
6006
|
"source": "use crate::{\n address::{aztec_address::AztecAddress, salted_initialization_hash::SaltedInitializationHash},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS,\n contract_class_id::ContractClassId,\n hash::poseidon2_hash_with_separator,\n traits::{Deserialize, Serialize, ToField},\n};\n\nglobal PARTIAL_ADDRESS_LENGTH: u32 = 1;\n\n// Partial address\npub struct PartialAddress {\n pub inner: Field,\n}\n\nimpl ToField for PartialAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl Serialize<PARTIAL_ADDRESS_LENGTH> for PartialAddress {\n fn serialize(self: Self) -> [Field; PARTIAL_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<PARTIAL_ADDRESS_LENGTH> for PartialAddress {\n fn deserialize(fields: [Field; PARTIAL_ADDRESS_LENGTH]) -> Self {\n PartialAddress { inner: fields[0] }\n }\n}\n\nimpl PartialAddress {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(\n contract_class_id: ContractClassId,\n salt: Field,\n initialization_hash: Field,\n deployer: AztecAddress,\n ) -> Self {\n PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n SaltedInitializationHash::compute(salt, initialization_hash, deployer),\n )\n }\n\n pub fn compute_from_salted_initialization_hash(\n contract_class_id: ContractClassId,\n salted_initialization_hash: SaltedInitializationHash,\n ) -> Self {\n PartialAddress::from_field(poseidon2_hash_with_separator(\n [contract_class_id.to_field(), salted_initialization_hash.to_field()],\n GENERATOR_INDEX__PARTIAL_ADDRESS,\n ))\n }\n\n pub fn to_field(self) -> Field {\n self.inner\n }\n\n pub fn is_zero(self) -> bool {\n self.to_field() == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"
|
|
6007
6007
|
},
|
|
6008
|
-
"
|
|
6008
|
+
"257": {
|
|
6009
6009
|
"path": "/build-volume/noir-projects/noir-protocol-circuits/crates/types/src/address/salted_initialization_hash.nr",
|
|
6010
6010
|
"source": "use crate::{\n address::aztec_address::AztecAddress, constants::GENERATOR_INDEX__PARTIAL_ADDRESS,\n hash::poseidon2_hash_with_separator, traits::ToField,\n};\n\n// Salted initialization hash. Used in the computation of a partial address.\npub struct SaltedInitializationHash {\n pub inner: Field,\n}\n\nimpl ToField for SaltedInitializationHash {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl SaltedInitializationHash {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(salt: Field, initialization_hash: Field, deployer: AztecAddress) -> Self {\n SaltedInitializationHash::from_field(poseidon2_hash_with_separator(\n [salt, initialization_hash, deployer.to_field()],\n GENERATOR_INDEX__PARTIAL_ADDRESS,\n ))\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"
|
|
6011
6011
|
},
|
|
@@ -6013,51 +6013,51 @@
|
|
|
6013
6013
|
"path": "std/hash/poseidon2.nr",
|
|
6014
6014
|
"source": "use crate::default::Default;\nuse crate::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, message_size != N)\n }\n\n pub 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 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 = crate::hash::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>(\n input: [Field; N],\n in_len: u32,\n is_variable_length: bool,\n ) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = Poseidon2::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\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"
|
|
6015
6015
|
},
|
|
6016
|
-
"
|
|
6016
|
+
"262": {
|
|
6017
6017
|
"path": "/build-volume/noir-projects/noir-protocol-circuits/crates/types/src/contract_instance.nr",
|
|
6018
6018
|
"source": "use crate::{\n address::{aztec_address::AztecAddress, partial_address::PartialAddress},\n constants::CONTRACT_INSTANCE_LENGTH,\n contract_class_id::ContractClassId,\n public_keys::PublicKeys,\n traits::{Deserialize, FromField, Hash, Serialize, ToField},\n};\n\npub struct ContractInstance {\n pub salt: Field,\n pub deployer: AztecAddress,\n pub contract_class_id: ContractClassId,\n pub initialization_hash: Field,\n pub public_keys: PublicKeys,\n}\n\nimpl Eq for ContractInstance {\n fn eq(self, other: Self) -> bool {\n self.public_keys.eq(other.public_keys)\n & self.initialization_hash.eq(other.initialization_hash)\n & self.contract_class_id.eq(other.contract_class_id)\n & self.salt.eq(other.salt)\n }\n}\n\nimpl Serialize<CONTRACT_INSTANCE_LENGTH> for ContractInstance {\n fn serialize(self) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n let public_keys_serialized = self.public_keys.serialize();\n [\n self.salt,\n self.deployer.to_field(),\n self.contract_class_id.to_field(),\n self.initialization_hash,\n public_keys_serialized[0],\n public_keys_serialized[1],\n public_keys_serialized[2],\n public_keys_serialized[3],\n public_keys_serialized[4],\n public_keys_serialized[5],\n public_keys_serialized[6],\n public_keys_serialized[7],\n public_keys_serialized[8],\n public_keys_serialized[9],\n public_keys_serialized[10],\n public_keys_serialized[11],\n ]\n }\n}\n\nimpl Deserialize<CONTRACT_INSTANCE_LENGTH> for ContractInstance {\n fn deserialize(serialized: [Field; CONTRACT_INSTANCE_LENGTH]) -> Self {\n Self {\n salt: serialized[0],\n deployer: AztecAddress::from_field(serialized[1]),\n contract_class_id: ContractClassId::from_field(serialized[2]),\n initialization_hash: serialized[3],\n public_keys: PublicKeys::deserialize([\n serialized[4],\n serialized[5],\n serialized[6],\n serialized[7],\n serialized[8],\n serialized[9],\n serialized[10],\n serialized[11],\n serialized[12],\n serialized[13],\n serialized[14],\n serialized[15],\n ]),\n }\n }\n}\n\nimpl Hash for ContractInstance {\n fn hash(self) -> Field {\n self.to_address().to_field()\n }\n}\n\nimpl ContractInstance {\n pub fn to_address(self) -> AztecAddress {\n AztecAddress::compute(\n self.public_keys,\n PartialAddress::compute(\n self.contract_class_id,\n self.salt,\n self.initialization_hash,\n self.deployer,\n ),\n )\n }\n}\n"
|
|
6019
6019
|
},
|
|
6020
|
-
"
|
|
6020
|
+
"268": {
|
|
6021
6021
|
"path": "/build-volume/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr",
|
|
6022
6022
|
"source": "/// 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/// 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_oracle_wrapper(msg, args) };\n}\n\npub unconstrained fn debug_log_oracle_wrapper<let M: u32, let N: u32>(\n msg: str<M>,\n args: [Field; N],\n) {\n debug_log_oracle(msg, args.as_slice());\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(debugLog)]\nunconstrained fn debug_log_oracle<let M: u32>(_msg: str<M>, args: [Field]) {}\n"
|
|
6023
6023
|
},
|
|
6024
|
-
"
|
|
6024
|
+
"269": {
|
|
6025
6025
|
"path": "/build-volume/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr",
|
|
6026
6026
|
"source": "use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector,\n log_hash::{LogHash, ScopedLogHash},\n note_hash::ScopedNoteHash,\n nullifier::ScopedNullifier,\n private_log::{PrivateLog, PrivateLogData},\n side_effect::{OrderedValue, scoped::Scoped},\n },\n address::{AztecAddress, EthAddress},\n constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__UNIQUE_NOTE_HASH,\n },\n merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::{L2ToL1Message, ScopedL2ToL1Message},\n poseidon2::Poseidon2Sponge,\n traits::{FromField, Hash, is_empty, ToField},\n utils::field::field_from_bytes_32_trunc,\n};\nuse super::{constants::TWO_POW_64, utils::{arrays::array_concat, field::field_from_bytes}};\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 GENERATOR_INDEX__NOTE_HASH_NONCE,\n )\n}\n\npub fn compute_unique_note_hash(nonce: Field, siloed_note_hash: Field) -> Field {\n let inputs = [nonce, siloed_note_hash];\n poseidon2_hash_with_separator(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, note_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), note_hash],\n GENERATOR_INDEX__SILOED_NOTE_HASH,\n )\n}\n\n/// Computes unique note hashes from siloed note hashes\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 let nonce = compute_note_hash_nonce(first_nullifier, note_index_in_tx);\n compute_unique_note_hash(nonce, siloed_note_hash)\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: ScopedNoteHash) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_note_hash(note_hash.contract_address, note_hash.value())\n }\n}\n\npub fn compute_siloed_nullifier(app: AztecAddress, nullifier: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), nullifier],\n GENERATOR_INDEX__OUTER_NULLIFIER,\n )\n}\n\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn compute_siloed_private_log_field(contract_address: AztecAddress, field: Field) -> Field {\n poseidon2_hash([contract_address.to_field(), field])\n}\n\npub fn silo_private_log(private_log: Scoped<PrivateLogData>) -> PrivateLog {\n if private_log.contract_address.is_zero() {\n private_log.inner.log\n } else {\n let mut fields = private_log.inner.log.fields;\n fields[0] = compute_siloed_private_log_field(private_log.contract_address, fields[0]);\n PrivateLog { fields }\n }\n}\n\nfn compute_siloed_contract_class_log_hash(address: AztecAddress, log_hash: Field) -> Field {\n accumulate_sha256([address.to_field(), log_hash])\n}\n\npub fn silo_contract_class_log_hash(log_hash: ScopedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_contract_class_log_hash(log_hash.contract_address, log_hash.value())\n }\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n poseidon2_hash([left, right])\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 mut bytes: [u8; 160] = std::mem::zeroed();\n\n let inputs =\n [contract_address.to_field(), rollup_version_id, recipient.to_field(), chain_id, content];\n for i in 0..5 {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes: [u8; 32] = inputs[i].to_be_bytes();\n for j in 0..32 {\n bytes[32 * i + j] = item_bytes[j];\n }\n }\n\n sha256_to_field(bytes)\n}\n\npub fn silo_l2_to_l1_message(\n msg: ScopedL2ToL1Message,\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.message.recipient,\n msg.message.content,\n rollup_version_id,\n chain_id,\n )\n }\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a U128.\n // 4 Field elements when converted to bytes will usually\n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field\n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes: [u8; 32] = input[offset].to_be_bytes();\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\n// Computes the final logs hash for a tx.\npub fn compute_tx_logs_hash<let N: u32>(logs: [LogHash; N]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; N * 32];\n for offset in 0..N {\n // TODO: This is not checking that the decomposition is smaller than P\n let input_as_bytes: [u8; 32] = logs[offset].value.to_be_radix(256);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn verification_key_hash<let N: u32>(key: [Field; N]) -> Field {\n crate::hash::poseidon2_hash(key)\n}\n\n#[inline_always]\npub fn pedersen_hash<let N: u32>(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<let N: u32>(inputs: [Field; N]) -> Field {\n std::hash::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 = array_concat([separator.to_field()], inputs);\n poseidon2_hash(inputs_with_separator)\n}\n\n// Performs a fixed length hash with a subarray of the given input.\n// Useful for SpongeBlob in which we aborb M things and want to check it vs a hash of M elts of an N-len array.\n// Using stdlib poseidon, this will always absorb an extra 1 as a 'variable' hash, and not match spongeblob.squeeze()\n// or any ts implementation. Also checks that any remaining elts not hashed are empty.\n#[no_predicates]\npub fn poseidon2_hash_subarray<let N: u32>(input: [Field; N], in_len: u32) -> Field {\n let mut sponge = poseidon2_absorb_chunks(input, in_len, false);\n sponge.squeeze()\n}\n\n// NB the below is the same as std::hash::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_chunks(input, in_len, true);\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if in_len != N {\n sponge.absorb(1);\n }\n sponge.squeeze()\n}\n\n// The below fn reduces gates of a conditional poseidon2 hash by approx 3x (thank you ~* Giant Brain Dev @IlyasRidhuan *~ for the idea)\n// Why? Because when we call stdlib poseidon, we call absorb for each item. When absorbing is conditional, it seems the compiler does not know\n// what cache_size will be when calling absorb, so it assigns the permutation gates for /each i/ rather than /every 3rd i/, which is actually required.\n// The below code forces the compiler to:\n// - absorb normally up to 2 times to set cache_size to 1\n// - absorb in chunks of 3 to ensure perm. only happens every 3rd absorb\n// - absorb normally up to 2 times to add any remaining values to the hash\n// In fixed len hashes, the compiler is able to tell that it will only need to perform the permutation every 3 absorbs.\n// NB: it also replaces unnecessary range checks (i < thing) with a bit check (&= i != thing), which alone reduces the gates of a var. hash by half.\n\n#[no_predicates]\nfn poseidon2_absorb_chunks<let N: u32>(\n input: [Field; N],\n in_len: u32,\n variable: bool,\n) -> Poseidon2Sponge {\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n // Even though shift is always 1 here, if we input in_len = 0 we get an underflow\n // since we cannot isolate computation branches. The below is just to avoid that.\n let shift = if in_len == 0 { 0 } else { 1 };\n if in_len != 0 {\n // cache_size = 0, init absorb\n sponge.cache[0] = input[0];\n sponge.cache_size = 1;\n // shift = num elts already added to make cache_size 1 = 1 for a fresh sponge\n // M = max_chunks = (N - 1 - (N - 1) % 3) / 3: (must be written as a fn of N to compile)\n // max_remainder = (N - 1) % 3;\n // max_chunks = (N - 1 - max_remainder) / 3;\n sponge = poseidon2_absorb_chunks_loop::<N, (N - 1 - (N - 1) % 3) / 3>(\n sponge,\n input,\n in_len,\n variable,\n shift,\n );\n }\n sponge\n}\n\n// NB: If it's not required to check that the non-absorbed elts of 'input' are 0s, set skip_0_check=true\n#[no_predicates]\npub fn poseidon2_absorb_chunks_existing_sponge<let N: u32>(\n in_sponge: Poseidon2Sponge,\n input: [Field; N],\n in_len: u32,\n skip_0_check: bool,\n) -> Poseidon2Sponge {\n let mut sponge = in_sponge;\n // 'shift' is to account for already added inputs\n let mut shift = 0;\n // 'stop' is to avoid an underflow when inputting in_len = 0\n let mut stop = false;\n for i in 0..3 {\n if shift == in_len {\n stop = true;\n }\n if (sponge.cache_size != 1) & (!stop) {\n sponge.absorb(input[i]);\n shift += 1;\n }\n }\n sponge = if stop {\n sponge\n } else {\n // max_chunks = (N - (N % 3)) / 3;\n poseidon2_absorb_chunks_loop::<N, (N - (N % 3)) / 3>(\n sponge,\n input,\n in_len,\n skip_0_check,\n shift,\n )\n };\n sponge\n}\n\n// The below is the loop to absorb elts into a poseidon sponge in chunks of 3\n// shift - the num of elts already absorbed to ensure the sponge's cache_size = 1\n// M - the max number of chunks required to absorb N things (must be comptime to compile)\n// NB: The 0 checks ('Found non-zero field...') are messy, but having a separate loop over N to check\n// for 0s costs 3N gates. Current approach is approx 2N gates.\n#[no_predicates]\nfn poseidon2_absorb_chunks_loop<let N: u32, let M: u32>(\n in_sponge: Poseidon2Sponge,\n input: [Field; N],\n in_len: u32,\n variable: bool,\n shift: u32,\n) -> Poseidon2Sponge {\n assert(in_len <= N, \"Given in_len to absorb is larger than the input array len\");\n // When we have an existing sponge, we may have a shift of 0, and the final 'k+2' below = N\n // The below avoids an overflow\n let skip_last = 3 * M == N;\n // Writing in_sponge: &mut does not compile\n let mut sponge = in_sponge;\n let mut should_add = true;\n // The num of things left over after absorbing in 3s\n let remainder = (in_len - shift) % 3;\n // The num of chunks of 3 to absorb (maximum M)\n let chunks = (in_len - shift - remainder) / 3;\n for i in 0..M {\n // Now we loop through cache size = 1 -> 3\n should_add &= i != chunks;\n // This is the index at the start of the chunk (for readability)\n let k = 3 * i + shift;\n if should_add {\n // cache_size = 1, 2 => just assign\n sponge.cache[1] = input[k];\n sponge.cache[2] = input[k + 1];\n // cache_size = 3 => duplex + perm\n for j in 0..3 {\n sponge.state[j] += sponge.cache[j];\n }\n sponge.state = std::hash::poseidon2_permutation(sponge.state, 4);\n sponge.cache[0] = input[k + 2];\n // cache_size is now 1 again, repeat loop\n } else if (!variable) & (i != chunks) {\n // if we are hashing a fixed len array which is a subarray, we check the remaining elts are 0\n // NB: we don't check at i == chunks, because that chunk contains elts to be absorbed or checked below\n let last_0 = if (i == M - 1) & (skip_last) {\n 0\n } else {\n input[k + 2]\n };\n let all_0 = (input[k] == 0) & (input[k + 1] == 0) & (last_0 == 0);\n assert(all_0, \"Found non-zero field after breakpoint\");\n }\n }\n // we have 'remainder' num of items left to absorb\n should_add = true;\n // below is to avoid overflows (i.e. if inlen is close to N)\n let mut should_check = !variable;\n for i in 0..3 {\n should_add &= i != remainder;\n should_check &= in_len - remainder + i != N;\n if should_add {\n // we want to absorb the final 'remainder' items\n sponge.absorb(input[in_len - remainder + i]);\n } else if should_check {\n assert(input[in_len - remainder + i] == 0, \"Found non-zero field after breakpoint\");\n }\n }\n sponge\n}\n\npub fn poseidon2_hash_with_separator_slice<T>(inputs: [Field], separator: T) -> 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[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 = std::hash::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 = std::hash::poseidon2::Poseidon2::hash(input, in_len);\n assert(variable_chunk_hash == variable_len_hash);\n}\n\n#[test]\nfn existing_sponge_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 // absorb 250 of the 501 things\n let empty_sponge = Poseidon2Sponge::new((in_len as Field) * TWO_POW_64);\n let first_sponge = poseidon2_absorb_chunks_existing_sponge(empty_sponge, input, 250, true);\n // now absorb the final 251 (since they are all 3s, im being lazy and not making a new array)\n let mut final_sponge = poseidon2_absorb_chunks_existing_sponge(first_sponge, input, 251, true);\n let fixed_len_hash = Poseidon2Sponge::hash(fixed_input, fixed_input.len());\n assert(final_sponge.squeeze() == fixed_len_hash);\n}\n\n#[test]\nfn poseidon_chunks_empty_inputs() {\n let in_len = 0;\n let mut input: [Field; 4096] = [0; 4096];\n let mut constructed_empty_sponge = poseidon2_absorb_chunks(input, in_len, true);\n let mut first_sponge =\n poseidon2_absorb_chunks_existing_sponge(constructed_empty_sponge, input, in_len, true);\n assert(first_sponge.squeeze() == constructed_empty_sponge.squeeze());\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 == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\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 == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\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 ScopedL2ToL1Message {\n message: L2ToL1Message { recipient: EthAddress::from_field(1), content: 2, counter: 0 },\n contract_address: AztecAddress::from_field(3),\n },\n version,\n chainId,\n );\n\n // The following value was generated by `l2_to_l1_message.test.ts`\n let hash_from_typescript = 0x00c6155d69febb9d5039b374dd4f77bf57b7c881709aa524a18acaa0bd57476a;\n\n assert_eq(hash, hash_from_typescript);\n}\n"
|
|
6027
6027
|
},
|
|
6028
|
-
"269": {
|
|
6029
|
-
"path": "/build-volume/noir-projects/noir-protocol-circuits/crates/types/src/indexed_tagging_secret.nr",
|
|
6030
|
-
"source": "use crate::traits::{Deserialize, Serialize, ToField};\nuse super::{address::aztec_address::AztecAddress, hash::poseidon2_hash};\nuse std::meta::derive;\n\npub global INDEXED_TAGGING_SECRET_LENGTH: u32 = 2;\n\n#[derive(Serialize, Deserialize)]\npub struct IndexedTaggingSecret {\n app_tagging_secret: Field,\n index: u32,\n}\n\nimpl IndexedTaggingSecret {\n pub fn compute_tag(self, recipient: AztecAddress) -> Field {\n poseidon2_hash(\n [self.app_tagging_secret, recipient.to_field(), self.index as Field],\n )\n }\n}\n"
|
|
6031
|
-
},
|
|
6032
6028
|
"27": {
|
|
6033
6029
|
"path": "std/hash/sha256.nr",
|
|
6034
6030
|
"source": "use crate::runtime::is_unconstrained;\n\n// Implementation of SHA-256 mapping a byte array of variable length to\n// 32 bytes.\n\n// A message block is up to 64 bytes taken from the input.\nglobal BLOCK_SIZE: u32 = 64;\n\n// The first index in the block where the 8 byte message size will be written.\nglobal MSG_SIZE_PTR: u32 = 56;\n\n// Size of the message block when packed as 4-byte integer array.\nglobal INT_BLOCK_SIZE: u32 = 16;\n\n// A `u32` integer consists of 4 bytes.\nglobal INT_SIZE: u32 = 4;\n\n// Index of the integer in the `INT_BLOCK` where the length is written.\nglobal INT_SIZE_PTR: u32 = MSG_SIZE_PTR / INT_SIZE;\n\n// Magic numbers for bit shifting.\n// Works with actual bit shifting as well as the compiler turns them into * and /\n// but circuit execution appears to be 10% faster this way.\nglobal TWO_POW_8: u32 = 256;\nglobal TWO_POW_16: u32 = TWO_POW_8 * 256;\nglobal TWO_POW_24: u32 = TWO_POW_16 * 256;\nglobal TWO_POW_32: u64 = TWO_POW_24 as u64 * 256;\n\n// Index of a byte in a 64 byte block; ie. 0..=63\ntype BLOCK_BYTE_PTR = u32;\n\n// The foreign function to compress blocks works on 16 pieces of 4-byte integers, instead of 64 bytes.\ntype INT_BLOCK = [u32; INT_BLOCK_SIZE];\n\n// A message block is a slice of the original message of a fixed size,\n// potentially padded with zeros, with neighbouring 4 bytes packed into integers.\ntype MSG_BLOCK = INT_BLOCK;\n\n// The hash is 32 bytes.\ntype HASH = [u8; 32];\n\n// The state accumulates the blocks.\n// Its overall size is the same as the `HASH`.\ntype STATE = [u32; 8];\n\n// Deprecated in favour of `sha256_var`\n// docs:start:sha256\npub fn sha256<let N: u32>(input: [u8; N]) -> HASH\n// docs:end:sha256\n{\n digest(input)\n}\n\n#[foreign(sha256_compression)]\npub fn sha256_compression(_input: INT_BLOCK, _state: STATE) -> STATE {}\n\n// SHA-256 hash function\n#[no_predicates]\npub fn digest<let N: u32>(msg: [u8; N]) -> HASH {\n sha256_var(msg, N as u64)\n}\n\n// Variable size SHA-256 hash\npub fn sha256_var<let N: u32>(msg: [u8; N], message_size: u64) -> HASH {\n let message_size = message_size as u32;\n let num_blocks = N / BLOCK_SIZE;\n let mut msg_block: MSG_BLOCK = [0; INT_BLOCK_SIZE];\n // Intermediate hash, starting with the canonical initial value\n let mut h: STATE = [\n 1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635,\n 1541459225,\n ];\n // Pointer into msg_block on a 64 byte scale\n let mut msg_byte_ptr = 0;\n for i in 0..num_blocks {\n let msg_start = BLOCK_SIZE * i;\n /// Safety: the msg_block is checked below in verify_msg_block\n let (new_msg_block, new_msg_byte_ptr) =\n unsafe { build_msg_block(msg, message_size, msg_start) };\n\n if msg_start < message_size {\n msg_block = new_msg_block;\n }\n\n if !is_unconstrained() {\n // Verify the block we are compressing was appropriately constructed\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n } else if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n\n // If the block is filled, compress it.\n // An un-filled block is handled after this loop.\n if (msg_start < message_size) & (msg_byte_ptr == BLOCK_SIZE) {\n h = sha256_compression(msg_block, h);\n }\n }\n\n let modulo = N % BLOCK_SIZE;\n // Handle setup of the final msg block.\n // This case is only hit if the msg is less than the block size,\n // or our message cannot be evenly split into blocks.\n if modulo != 0 {\n let msg_start = BLOCK_SIZE * num_blocks;\n /// Safety: the msg_block is checked below in verify_msg_block\n let (new_msg_block, new_msg_byte_ptr) =\n unsafe { build_msg_block(msg, message_size, msg_start) };\n\n if msg_start < message_size {\n msg_block = new_msg_block;\n }\n\n if !is_unconstrained() {\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n verify_msg_block_padding(msg_block, msg_byte_ptr);\n }\n } else if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n }\n\n // If we had modulo == 0 then it means the last block was full,\n // and we can reset the pointer to zero to overwrite it.\n if msg_byte_ptr == BLOCK_SIZE {\n msg_byte_ptr = 0;\n }\n\n // Pad the rest such that we have a [u32; 2] block at the end representing the length\n // of the message, and a block of 1 0 ... 0 following the message (i.e. [1 << 7, 0, ..., 0]).\n // Here we rely on the fact that everything beyond the available input is set to 0.\n msg_block = update_block_item(\n msg_block,\n msg_byte_ptr,\n |msg_item| set_item_byte_then_zeros(msg_item, msg_byte_ptr, 1 << 7),\n );\n msg_byte_ptr = msg_byte_ptr + 1;\n let last_block = msg_block;\n\n // If we don't have room to write the size, compress the block and reset it.\n if msg_byte_ptr > MSG_SIZE_PTR {\n h = sha256_compression(msg_block, h);\n // `attach_len_to_msg_block` will zero out everything after the `msg_byte_ptr`.\n msg_byte_ptr = 0;\n }\n\n /// Safety: the msg_len is checked below in verify_msg_len\n msg_block = unsafe { attach_len_to_msg_block(msg_block, msg_byte_ptr, message_size) };\n\n if !is_unconstrained() {\n verify_msg_len(msg_block, last_block, msg_byte_ptr, message_size);\n }\n\n hash_final_block(msg_block, h)\n}\n\n// Take `BLOCK_SIZE` number of bytes from `msg` starting at `msg_start`.\n// Returns the block and the length that has been copied rather than padded with zeros.\nunconstrained fn build_msg_block<let N: u32>(\n msg: [u8; N],\n message_size: u32,\n msg_start: u32,\n) -> (MSG_BLOCK, BLOCK_BYTE_PTR) {\n let mut msg_block: MSG_BLOCK = [0; INT_BLOCK_SIZE];\n\n // We insert `BLOCK_SIZE` bytes (or up to the end of the message)\n let block_input = if msg_start + BLOCK_SIZE > message_size {\n if message_size < msg_start {\n // This function is sometimes called with `msg_start` past the end of the message.\n // In this case we return an empty block and zero pointer to signal that the result should be ignored.\n 0\n } else {\n message_size - msg_start\n }\n } else {\n BLOCK_SIZE\n };\n\n // Figure out the number of items in the int array that we have to pack.\n // e.g. if the input is [0,1,2,3,4,5] then we need to pack it as 2 items: [0123, 4500]\n let mut int_input = block_input / INT_SIZE;\n if block_input % INT_SIZE != 0 {\n int_input = int_input + 1;\n };\n\n for i in 0..int_input {\n let mut msg_item: u32 = 0;\n // Always construct the integer as 4 bytes, even if it means going beyond the input.\n for j in 0..INT_SIZE {\n let k = i * INT_SIZE + j;\n let msg_byte = if k < block_input {\n msg[msg_start + k]\n } else {\n 0\n };\n msg_item = lshift8(msg_item, 1) + msg_byte as u32;\n }\n msg_block[i] = msg_item;\n }\n\n // Returning the index as if it was a 64 byte array.\n // We have to project it down to 16 items and bit shifting to get a byte back if we need it.\n (msg_block, block_input)\n}\n\n// Verify the block we are compressing was appropriately constructed by `build_msg_block`\n// and matches the input data. Returns the index of the first unset item.\n// If `message_size` is less than `msg_start` then this is called with the old non-empty block;\n// in that case we can skip verification, ie. no need to check that everything is zero.\nfn verify_msg_block<let N: u32>(\n msg: [u8; N],\n message_size: u32,\n msg_block: MSG_BLOCK,\n msg_start: u32,\n) -> BLOCK_BYTE_PTR {\n let mut msg_byte_ptr = 0;\n let mut msg_end = msg_start + BLOCK_SIZE;\n if msg_end > N {\n msg_end = N;\n }\n // We might have to go beyond the input to pad the fields.\n if msg_end % INT_SIZE != 0 {\n msg_end = msg_end + INT_SIZE - msg_end % INT_SIZE;\n }\n\n // Reconstructed packed item.\n let mut msg_item: u32 = 0;\n\n // Inclusive at the end so that we can compare the last item.\n let mut i: u32 = 0;\n for k in msg_start..=msg_end {\n if k % INT_SIZE == 0 {\n // If we consumed some input we can compare against the block.\n if (msg_start < message_size) & (k > msg_start) {\n assert_eq(msg_block[i], msg_item as u32);\n i = i + 1;\n msg_item = 0;\n }\n }\n // Shift the accumulator\n msg_item = lshift8(msg_item, 1);\n // If we have input to consume, add it at the rightmost position.\n if k < message_size & k < msg_end {\n msg_item = msg_item + msg[k] as u32;\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n\n msg_byte_ptr\n}\n\n// Verify the block we are compressing was appropriately padded with zeros by `build_msg_block`.\n// This is only relevant for the last, potentially partially filled block.\nfn verify_msg_block_padding(msg_block: MSG_BLOCK, msg_byte_ptr: BLOCK_BYTE_PTR) {\n // Check all the way to the end of the block.\n verify_msg_block_zeros(msg_block, msg_byte_ptr, INT_BLOCK_SIZE);\n}\n\n// Verify that a region of ints in the message block are (partially) zeroed,\n// up to an (exclusive) maximum which can either be the end of the block\n// or just where the size is to be written.\nfn verify_msg_block_zeros(\n msg_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n max_int_byte_ptr: u32,\n) {\n // This variable is used to get around the compiler under-constrained check giving a warning.\n // We want to check against a constant zero, but if it does not come from the circuit inputs\n // or return values the compiler check will issue a warning.\n let zero = msg_block[0] - msg_block[0];\n\n // First integer which is supposed to be (partially) zero.\n let mut int_byte_ptr = msg_byte_ptr / INT_SIZE;\n\n // Check partial zeros.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n let zeros = INT_SIZE - modulo;\n let mask = if zeros == 3 {\n TWO_POW_24\n } else if zeros == 2 {\n TWO_POW_16\n } else {\n TWO_POW_8\n };\n assert_eq(msg_block[int_byte_ptr] % mask, zero);\n int_byte_ptr = int_byte_ptr + 1;\n }\n\n // Check the rest of the items.\n for i in 0..max_int_byte_ptr {\n if i >= int_byte_ptr {\n assert_eq(msg_block[i], zero);\n }\n }\n}\n\n// Verify that up to the byte pointer the two blocks are equal.\n// At the byte pointer the new block can be partially zeroed.\nfn verify_msg_block_equals_last(\n msg_block: MSG_BLOCK,\n last_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n) {\n // msg_byte_ptr is the position at which they are no longer have to be the same.\n // First integer which is supposed to be (partially) zero contains that pointer.\n let mut int_byte_ptr = msg_byte_ptr / INT_SIZE;\n\n // Check partial zeros.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n // Reconstruct the partially zero item from the last block.\n let last_field = last_block[int_byte_ptr];\n let mut msg_item: u32 = 0;\n // Reset to where they are still equal.\n msg_byte_ptr = msg_byte_ptr - modulo;\n for i in 0..INT_SIZE {\n msg_item = lshift8(msg_item, 1);\n if i < modulo {\n msg_item = msg_item + get_item_byte(last_field, msg_byte_ptr) as u32;\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n assert_eq(msg_block[int_byte_ptr], msg_item);\n }\n\n for i in 0..INT_SIZE_PTR {\n if i < int_byte_ptr {\n assert_eq(msg_block[i], last_block[i]);\n }\n }\n}\n\n// Apply a function on the block item which the pointer indicates.\nfn update_block_item<Env>(\n mut msg_block: MSG_BLOCK,\n msg_byte_ptr: BLOCK_BYTE_PTR,\n f: fn[Env](u32) -> u32,\n) -> MSG_BLOCK {\n let i = msg_byte_ptr / INT_SIZE;\n msg_block[i] = f(msg_block[i]);\n msg_block\n}\n\n// Set the rightmost `zeros` number of bytes to 0.\nfn set_item_zeros(item: u32, zeros: u8) -> u32 {\n lshift8(rshift8(item, zeros), zeros)\n}\n\n// Replace one byte in the item with a value, and set everything after it to zero.\nfn set_item_byte_then_zeros(msg_item: u32, msg_byte_ptr: BLOCK_BYTE_PTR, msg_byte: u8) -> u32 {\n let zeros = INT_SIZE - msg_byte_ptr % INT_SIZE;\n let zeroed_item = set_item_zeros(msg_item, zeros as u8);\n let new_item = byte_into_item(msg_byte, msg_byte_ptr);\n zeroed_item + new_item\n}\n\n// Get a byte of a message item according to its overall position in the `BLOCK_SIZE` space.\nfn get_item_byte(mut msg_item: u32, msg_byte_ptr: BLOCK_BYTE_PTR) -> u8 {\n // How many times do we have to shift to the right to get to the position we want?\n let max_shifts = INT_SIZE - 1;\n let shifts = max_shifts - msg_byte_ptr % INT_SIZE;\n msg_item = rshift8(msg_item, shifts as u8);\n // At this point the byte we want is in the rightmost position.\n msg_item as u8\n}\n\n// Project a byte into a position in a field based on the overall block pointer.\n// For example putting 1 into pointer 5 would be 100, because overall we would\n// have [____, 0100] with indexes [0123,4567].\nfn byte_into_item(msg_byte: u8, msg_byte_ptr: BLOCK_BYTE_PTR) -> u32 {\n let mut msg_item = msg_byte as u32;\n // How many times do we have to shift to the left to get to the position we want?\n let max_shifts = INT_SIZE - 1;\n let shifts = max_shifts - msg_byte_ptr % INT_SIZE;\n lshift8(msg_item, shifts as u8)\n}\n\n// Construct a field out of 4 bytes.\nfn make_item(b0: u8, b1: u8, b2: u8, b3: u8) -> u32 {\n let mut item = b0 as u32;\n item = lshift8(item, 1) + b1 as u32;\n item = lshift8(item, 1) + b2 as u32;\n item = lshift8(item, 1) + b3 as u32;\n item\n}\n\n// Shift by 8 bits to the left between 0 and 4 times.\n// Checks `is_unconstrained()` to just use a bitshift if we're running in an unconstrained context,\n// otherwise multiplies by 256.\nfn lshift8(item: u32, shifts: u8) -> u32 {\n if is_unconstrained() {\n if item == 0 {\n 0\n } else {\n // Brillig wouldn't shift 0<<4 without overflow.\n item << (8 * shifts)\n }\n } else {\n // We can do a for loop up to INT_SIZE or an if-else.\n if shifts == 0 {\n item\n } else if shifts == 1 {\n item * TWO_POW_8\n } else if shifts == 2 {\n item * TWO_POW_16\n } else if shifts == 3 {\n item * TWO_POW_24\n } else {\n // Doesn't make sense, but it's most likely called on 0 anyway.\n 0\n }\n }\n}\n\n// Shift by 8 bits to the right between 0 and 4 times.\n// Checks `is_unconstrained()` to just use a bitshift if we're running in an unconstrained context,\n// otherwise divides by 256.\nfn rshift8(item: u32, shifts: u8) -> u32 {\n if is_unconstrained() {\n item >> (8 * shifts)\n } else {\n // Division wouldn't work on `Field`.\n if shifts == 0 {\n item\n } else if shifts == 1 {\n item / TWO_POW_8\n } else if shifts == 2 {\n item / TWO_POW_16\n } else if shifts == 3 {\n item / TWO_POW_24\n } else {\n 0\n }\n }\n}\n\n// Zero out all bytes between the end of the message and where the length is appended,\n// then write the length into the last 8 bytes of the block.\nunconstrained fn attach_len_to_msg_block(\n mut msg_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n message_size: u32,\n) -> MSG_BLOCK {\n // We assume that `msg_byte_ptr` is less than 57 because if not then it is reset to zero before calling this function.\n // In any case, fill blocks up with zeros until the last 64 bits (i.e. until msg_byte_ptr = 56).\n // There can be one item which has to be partially zeroed.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n // Index of the block in which we find the item we need to partially zero.\n let i = msg_byte_ptr / INT_SIZE;\n let zeros = INT_SIZE - modulo;\n msg_block[i] = set_item_zeros(msg_block[i], zeros as u8);\n msg_byte_ptr = msg_byte_ptr + zeros;\n }\n\n // The rest can be zeroed without bit shifting anything.\n for i in (msg_byte_ptr / INT_SIZE)..INT_SIZE_PTR {\n msg_block[i] = 0;\n }\n\n // Set the last two 4 byte ints as the first/second half of the 8 bytes of the length.\n let len = 8 * message_size;\n let len_bytes: [u8; 8] = (len as Field).to_be_bytes();\n for i in 0..=1 {\n let shift = i * 4;\n msg_block[INT_SIZE_PTR + i] = make_item(\n len_bytes[shift],\n len_bytes[shift + 1],\n len_bytes[shift + 2],\n len_bytes[shift + 3],\n );\n }\n msg_block\n}\n\n// Verify that the message length was correctly written by `attach_len_to_msg_block`,\n// and that everything between the byte pointer and the size pointer was zeroed,\n// and that everything before the byte pointer was untouched.\nfn verify_msg_len(\n msg_block: MSG_BLOCK,\n last_block: MSG_BLOCK,\n msg_byte_ptr: BLOCK_BYTE_PTR,\n message_size: u32,\n) {\n // Check zeros up to the size pointer.\n verify_msg_block_zeros(msg_block, msg_byte_ptr, INT_SIZE_PTR);\n\n // Check that up to the pointer we match the last block.\n verify_msg_block_equals_last(msg_block, last_block, msg_byte_ptr);\n\n // We verify the message length was inserted correctly by reversing the byte decomposition.\n let mut reconstructed_len: u64 = 0;\n for i in INT_SIZE_PTR..INT_BLOCK_SIZE {\n reconstructed_len = reconstructed_len * TWO_POW_32;\n reconstructed_len = reconstructed_len + msg_block[i] as u64;\n }\n let len = 8 * message_size as u64;\n assert_eq(reconstructed_len, len);\n}\n\n// Perform the final compression, then transform the `STATE` into `HASH`.\nfn hash_final_block(msg_block: MSG_BLOCK, mut state: STATE) -> HASH {\n let mut out_h: HASH = [0; 32]; // Digest as sequence of bytes\n // Hash final padded block\n state = sha256_compression(msg_block, state);\n\n // Return final hash as byte array\n for j in 0..8 {\n let h_bytes: [u8; 4] = (state[j] as Field).to_be_bytes();\n for k in 0..4 {\n out_h[4 * j + k] = h_bytes[k];\n }\n }\n\n out_h\n}\n\nmod tests {\n use super::{\n attach_len_to_msg_block, build_msg_block, byte_into_item, get_item_byte, make_item,\n set_item_byte_then_zeros, set_item_zeros,\n };\n use super::INT_BLOCK;\n use super::sha256_var;\n\n #[test]\n fn smoke_test() {\n let input = [0xbd];\n let result = [\n 0x68, 0x32, 0x57, 0x20, 0xaa, 0xbd, 0x7c, 0x82, 0xf3, 0x0f, 0x55, 0x4b, 0x31, 0x3d,\n 0x05, 0x70, 0xc9, 0x5a, 0xcc, 0xbb, 0x7d, 0xc4, 0xb5, 0xaa, 0xe1, 0x12, 0x04, 0xc0,\n 0x8f, 0xfe, 0x73, 0x2b,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_just_over_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116,\n ];\n let result = [\n 91, 122, 146, 93, 52, 109, 133, 148, 171, 61, 156, 70, 189, 238, 153, 7, 222, 184, 94,\n 24, 65, 114, 192, 244, 207, 199, 87, 232, 192, 224, 171, 207,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_multiple_over_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116, 61, 117, 115, 45, 97, 115,\n 99, 105, 105, 13, 10, 109, 105, 109, 101, 45, 118, 101, 114, 115, 105, 111, 110, 58, 49,\n 46, 48, 32, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 77, 97, 105, 108, 32, 49, 54, 46,\n 48, 32, 92, 40, 51, 55, 51, 49, 46, 53, 48, 48, 46, 50, 51, 49, 92, 41, 41, 13, 10, 115,\n 117, 98, 106, 101, 99, 116, 58, 72, 101, 108, 108, 111, 13, 10, 109, 101, 115, 115, 97,\n 103, 101, 45, 105, 100, 58, 60, 56, 70, 56, 49, 57, 68, 51, 50, 45, 66, 54, 65, 67, 45,\n 52, 56, 57, 68, 45, 57, 55, 55, 70, 45, 52, 51, 56, 66, 66, 67, 52, 67, 65, 66, 50, 55,\n 64, 109, 101, 46, 99, 111, 109, 62, 13, 10, 100, 97, 116, 101, 58, 83, 97, 116, 44, 32,\n 50, 54, 32, 65, 117, 103, 32, 50, 48, 50, 51, 32, 49, 50, 58, 50, 53, 58, 50, 50, 32,\n 43, 48, 52, 48, 48, 13, 10, 116, 111, 58, 122, 107, 101, 119, 116, 101, 115, 116, 64,\n 103, 109, 97, 105, 108, 46, 99, 111, 109, 13, 10, 100, 107, 105, 109, 45, 115, 105, 103,\n 110, 97, 116, 117, 114, 101, 58, 118, 61, 49, 59, 32, 97, 61, 114, 115, 97, 45, 115,\n 104, 97, 50, 53, 54, 59, 32, 99, 61, 114, 101, 108, 97, 120, 101, 100, 47, 114, 101,\n 108, 97, 120, 101, 100, 59, 32, 100, 61, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109,\n 59, 32, 115, 61, 49, 97, 49, 104, 97, 105, 59, 32, 116, 61, 49, 54, 57, 51, 48, 51, 56,\n 51, 51, 55, 59, 32, 98, 104, 61, 55, 120, 81, 77, 68, 117, 111, 86, 86, 85, 52, 109, 48,\n 87, 48, 87, 82, 86, 83, 114, 86, 88, 77, 101, 71, 83, 73, 65, 83, 115, 110, 117, 99, 75,\n 57, 100, 74, 115, 114, 99, 43, 118, 85, 61, 59, 32, 104, 61, 102, 114, 111, 109, 58, 67,\n 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 77, 105, 109, 101, 45, 86, 101,\n 114, 115, 105, 111, 110, 58, 83, 117, 98, 106, 101, 99,\n ];\n let result = [\n 116, 90, 151, 31, 78, 22, 138, 180, 211, 189, 69, 76, 227, 200, 155, 29, 59, 123, 154,\n 60, 47, 153, 203, 129, 157, 251, 48, 2, 79, 11, 65, 47,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_just_under_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59,\n ];\n let result = [\n 143, 140, 76, 173, 222, 123, 102, 68, 70, 149, 207, 43, 39, 61, 34, 79, 216, 252, 213,\n 165, 74, 16, 110, 74, 29, 64, 138, 167, 30, 1, 9, 119,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_big_not_block_multiple() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116, 61, 117, 115, 45, 97, 115,\n 99, 105, 105, 13, 10, 109, 105, 109, 101, 45, 118, 101, 114, 115, 105, 111, 110, 58, 49,\n 46, 48, 32, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 77, 97, 105, 108, 32, 49, 54, 46,\n 48, 32, 92, 40, 51, 55, 51, 49, 46, 53, 48, 48, 46, 50, 51, 49, 92, 41, 41, 13, 10, 115,\n 117, 98, 106, 101, 99, 116, 58, 72, 101, 108, 108, 111, 13, 10, 109, 101, 115, 115, 97,\n 103, 101, 45, 105, 100, 58, 60, 56, 70, 56, 49, 57, 68, 51, 50, 45, 66, 54, 65, 67, 45,\n 52, 56, 57, 68, 45, 57, 55, 55, 70, 45, 52, 51, 56, 66, 66, 67, 52, 67, 65, 66, 50, 55,\n 64, 109, 101, 46, 99, 111, 109, 62, 13, 10, 100, 97, 116, 101, 58, 83, 97, 116, 44, 32,\n 50, 54, 32, 65, 117, 103, 32, 50, 48, 50, 51, 32, 49, 50, 58, 50, 53, 58, 50, 50, 32,\n 43, 48, 52, 48, 48, 13, 10, 116, 111, 58, 122, 107, 101, 119, 116, 101, 115, 116, 64,\n 103, 109, 97, 105, 108, 46, 99, 111, 109, 13, 10, 100, 107, 105, 109, 45, 115, 105, 103,\n 110, 97, 116, 117, 114, 101, 58, 118, 61, 49, 59, 32, 97, 61, 114, 115, 97, 45, 115,\n 104, 97, 50, 53, 54, 59, 32, 99, 61, 114, 101, 108, 97, 120, 101, 100, 47, 114, 101,\n 108, 97, 120, 101, 100, 59, 32, 100, 61, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109,\n 59, 32, 115, 61, 49, 97, 49, 104, 97, 105, 59, 32, 116, 61, 49, 54, 57, 51, 48, 51, 56,\n 51, 51, 55, 59, 32, 98, 104, 61, 55, 120, 81, 77, 68, 117, 111, 86, 86, 85, 52, 109, 48,\n 87, 48, 87, 82, 86, 83, 114, 86, 88, 77, 101, 71, 83, 73, 65, 83, 115, 110, 117, 99, 75,\n 57, 100, 74, 115, 114, 99, 43, 118, 85, 61, 59, 32, 104, 61, 102, 114, 111, 109, 58, 67,\n 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 77, 105, 109, 101, 45, 86, 101,\n 114, 115, 105, 111, 110, 58, 83, 117, 98, 106, 101, 99, 116, 58, 77, 101, 115, 115, 97,\n 103, 101, 45, 73, 100, 58, 68, 97, 116, 101, 58, 116, 111, 59, 32, 98, 61,\n ];\n let result = [\n 112, 144, 73, 182, 208, 98, 9, 238, 54, 229, 61, 145, 222, 17, 72, 62, 148, 222, 186,\n 55, 192, 82, 220, 35, 66, 47, 193, 200, 22, 38, 26, 186,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_big_with_padding() {\n let input = [\n 48, 130, 1, 37, 2, 1, 0, 48, 11, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 1, 48, 130, 1, 17,\n 48, 37, 2, 1, 1, 4, 32, 176, 223, 31, 133, 108, 84, 158, 102, 70, 11, 165, 175, 196, 12,\n 201, 130, 25, 131, 46, 125, 156, 194, 28, 23, 55, 133, 157, 164, 135, 136, 220, 78, 48,\n 37, 2, 1, 2, 4, 32, 190, 82, 180, 235, 222, 33, 79, 50, 152, 136, 142, 35, 116, 224, 6,\n 242, 156, 141, 128, 248, 10, 61, 98, 86, 248, 45, 207, 210, 90, 232, 175, 38, 48, 37, 2,\n 1, 3, 4, 32, 0, 194, 104, 108, 237, 246, 97, 230, 116, 198, 69, 110, 26, 87, 17, 89,\n 110, 199, 108, 250, 36, 21, 39, 87, 110, 102, 250, 213, 174, 131, 171, 174, 48, 37, 2,\n 1, 11, 4, 32, 136, 155, 87, 144, 111, 15, 152, 127, 85, 25, 154, 81, 20, 58, 51, 75,\n 193, 116, 234, 0, 60, 30, 29, 30, 183, 141, 72, 247, 255, 203, 100, 124, 48, 37, 2, 1,\n 12, 4, 32, 41, 234, 106, 78, 31, 11, 114, 137, 237, 17, 92, 71, 134, 47, 62, 78, 189,\n 233, 201, 214, 53, 4, 47, 189, 201, 133, 6, 121, 34, 131, 64, 142, 48, 37, 2, 1, 13, 4,\n 32, 91, 222, 210, 193, 62, 222, 104, 82, 36, 41, 138, 253, 70, 15, 148, 208, 156, 45,\n 105, 171, 241, 195, 185, 43, 217, 162, 146, 201, 222, 89, 238, 38, 48, 37, 2, 1, 14, 4,\n 32, 76, 123, 216, 13, 51, 227, 72, 245, 59, 193, 238, 166, 103, 49, 23, 164, 171, 188,\n 194, 197, 156, 187, 249, 28, 198, 95, 69, 15, 182, 56, 54, 38, 0, 0, 0, 0, 0, 0, 0, 0,\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,\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,\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,\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,\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,\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,\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,\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,\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,\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,\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,\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,\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,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n ];\n let result = [\n 32, 85, 108, 174, 127, 112, 178, 182, 8, 43, 134, 123, 192, 211, 131, 66, 184, 240, 212,\n 181, 240, 180, 106, 195, 24, 117, 54, 129, 19, 10, 250, 53,\n ];\n let message_size = 297;\n assert_eq(sha256_var(input, message_size), result);\n }\n\n #[test]\n fn msg_big_no_padding() {\n let input = [\n 48, 130, 1, 37, 2, 1, 0, 48, 11, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 1, 48, 130, 1, 17,\n 48, 37, 2, 1, 1, 4, 32, 176, 223, 31, 133, 108, 84, 158, 102, 70, 11, 165, 175, 196, 12,\n 201, 130, 25, 131, 46, 125, 156, 194, 28, 23, 55, 133, 157, 164, 135, 136, 220, 78, 48,\n 37, 2, 1, 2, 4, 32, 190, 82, 180, 235, 222, 33, 79, 50, 152, 136, 142, 35, 116, 224, 6,\n 242, 156, 141, 128, 248, 10, 61, 98, 86, 248, 45, 207, 210, 90, 232, 175, 38, 48, 37, 2,\n 1, 3, 4, 32, 0, 194, 104, 108, 237, 246, 97, 230, 116, 198, 69, 110, 26, 87, 17, 89,\n 110, 199, 108, 250, 36, 21, 39, 87, 110, 102, 250, 213, 174, 131, 171, 174, 48, 37, 2,\n 1, 11, 4, 32, 136, 155, 87, 144, 111, 15, 152, 127, 85, 25, 154, 81, 20, 58, 51, 75,\n 193, 116, 234, 0, 60, 30, 29, 30, 183, 141, 72, 247, 255, 203, 100, 124, 48, 37, 2, 1,\n 12, 4, 32, 41, 234, 106, 78, 31, 11, 114, 137, 237, 17, 92, 71, 134, 47, 62, 78, 189,\n 233, 201, 214, 53, 4, 47, 189, 201, 133, 6, 121, 34, 131, 64, 142, 48, 37, 2, 1, 13, 4,\n 32, 91, 222, 210, 193, 62, 222, 104, 82, 36, 41, 138, 253, 70, 15, 148, 208, 156, 45,\n 105, 171, 241, 195, 185, 43, 217, 162, 146, 201, 222, 89, 238, 38, 48, 37, 2, 1, 14, 4,\n 32, 76, 123, 216, 13, 51, 227, 72, 245, 59, 193, 238, 166, 103, 49, 23, 164, 171, 188,\n 194, 197, 156, 187, 249, 28, 198, 95, 69, 15, 182, 56, 54, 38,\n ];\n let result = [\n 32, 85, 108, 174, 127, 112, 178, 182, 8, 43, 134, 123, 192, 211, 131, 66, 184, 240, 212,\n 181, 240, 180, 106, 195, 24, 117, 54, 129, 19, 10, 250, 53,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn same_msg_len_variable_padding() {\n let input = [\n 29, 81, 165, 84, 243, 114, 101, 37, 242, 146, 127, 99, 69, 145, 39, 72, 213, 39, 253,\n 179, 218, 37, 217, 201, 172, 93, 198, 50, 249, 70, 15, 30, 162, 112, 187, 40, 140, 9,\n 236, 53, 32, 44, 38, 163, 113, 254, 192, 197, 44, 89, 71, 130, 169, 242, 17, 211, 214,\n 72, 19, 178, 186, 168, 147, 127, 99, 101, 252, 227, 8, 147, 150, 85, 97, 158, 17, 107,\n 218, 244, 82, 113, 247, 91, 208, 214, 60, 244, 87, 137, 173, 201, 130, 18, 66, 56, 198,\n 149, 207, 189, 175, 120, 123, 224, 177, 167, 251, 159, 143, 110, 68, 183, 189, 70, 126,\n 32, 35, 164, 44, 30, 44, 12, 65, 18, 62, 239, 242, 2, 248, 104, 2, 178, 64, 28, 126, 36,\n 137, 24, 14, 116, 91, 98, 90, 159, 218, 102, 45, 11, 110, 223, 245, 184, 52, 99, 59,\n 245, 136, 175, 3, 72, 164, 146, 145, 116, 22, 66, 24, 49, 193, 121, 3, 60, 37, 41, 97,\n 3, 190, 66, 195, 225, 63, 46, 3, 118, 4, 208, 15, 1, 40, 254, 235, 151, 123, 70, 180,\n 170, 44, 172, 90, 4, 254, 53, 239, 116, 246, 67, 56, 129, 61, 22, 169, 213, 65, 27, 216,\n 116, 162, 239, 214, 207, 126, 177, 20, 100, 25, 48, 143, 84, 215, 70, 197, 53, 65, 70,\n 86, 172, 61, 62, 9, 212, 167, 169, 133, 41, 126, 213, 196, 33, 192, 238, 0, 63, 246,\n 215, 58, 128, 110, 101, 92, 3, 170, 214, 130, 149, 52, 81, 125, 118, 233, 3, 118, 193,\n 104, 207, 120, 115, 77, 253, 191, 122, 0, 107, 164, 207, 113, 81, 169, 36, 201, 228, 74,\n 134, 131, 218, 178, 35, 30, 216, 101, 2, 103, 174, 87, 95, 50, 50, 215, 157, 5, 210,\n 188, 54, 211, 78, 45, 199, 96, 121, 241, 241, 176, 226, 194, 134, 130, 89, 217, 210,\n 186, 32, 140, 39, 91, 103, 212, 26, 87, 32, 72, 144, 228, 230, 117, 99, 188, 50, 15, 69,\n 79, 179, 50, 12, 106, 86, 218, 101, 73, 142, 243, 29, 250, 122, 228, 233, 29, 255, 22,\n 121, 114, 125, 103, 41, 250, 241, 179, 126, 158, 198, 116, 209, 65, 94, 98, 228, 175,\n 169, 96, 3, 9, 233, 133, 214, 55, 161, 164, 103, 80, 85, 24, 186, 64, 167, 92, 131, 53,\n 101, 202, 47, 25, 104, 118, 155, 14, 12, 12, 25, 116, 45, 221, 249, 28, 246, 212, 200,\n 157, 167, 169, 56, 197, 181, 4, 245, 146, 1, 140, 234, 191, 212, 228, 125, 87, 81, 86,\n 119, 30, 63, 129, 143, 32, 96,\n ];\n\n // Prepare inputs of different lengths\n let mut input_511 = [0; 511];\n let mut input_512 = [0; 512]; // Next block\n let mut input_575 = [0; 575];\n let mut input_576 = [0; 576]; // Next block\n for i in 0..input.len() {\n input_511[i] = input[i];\n input_512[i] = input[i];\n input_575[i] = input[i];\n input_576[i] = input[i];\n }\n\n // Compute hashes of all inputs (with same message length)\n let fixed_length_hash = super::sha256(input);\n let var_full_length_hash = sha256_var(input, input.len() as u64);\n let var_length_hash_511 = sha256_var(input_511, input.len() as u64);\n let var_length_hash_512 = sha256_var(input_512, input.len() as u64);\n let var_length_hash_575 = sha256_var(input_575, input.len() as u64);\n let var_length_hash_576 = sha256_var(input_576, input.len() as u64);\n\n // All of the above should have produced the same hash\n assert_eq(var_full_length_hash, fixed_length_hash);\n assert_eq(var_length_hash_511, fixed_length_hash);\n assert_eq(var_length_hash_512, fixed_length_hash);\n assert_eq(var_length_hash_575, fixed_length_hash);\n assert_eq(var_length_hash_576, fixed_length_hash);\n }\n\n #[test]\n fn test_get_item_byte() {\n let fld = make_item(10, 20, 30, 40);\n assert_eq(fld, 0x0a141e28);\n assert_eq(get_item_byte(fld, 0), 10);\n assert_eq(get_item_byte(fld, 4), 10);\n assert_eq(get_item_byte(fld, 6), 30);\n }\n\n #[test]\n fn test_byte_into_item() {\n let fld = make_item(0, 20, 0, 0);\n assert_eq(byte_into_item(20, 1), fld);\n assert_eq(byte_into_item(20, 5), fld);\n }\n\n #[test]\n fn test_set_item_zeros() {\n let fld0 = make_item(10, 20, 30, 40);\n let fld1 = make_item(10, 0, 0, 0);\n assert_eq(set_item_zeros(fld0, 3), fld1);\n assert_eq(set_item_zeros(fld0, 4), 0);\n assert_eq(set_item_zeros(0, 4), 0);\n }\n\n #[test]\n fn test_set_item_byte_then_zeros() {\n let fld0 = make_item(10, 20, 30, 40);\n let fld1 = make_item(10, 50, 0, 0);\n assert_eq(set_item_byte_then_zeros(fld0, 1, 50), fld1);\n }\n\n #[test]\n fn test_build_msg_block_start_0() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48,\n ];\n assert_eq(input.len(), 22);\n\n /// Safety: testing context\n let (msg_block, msg_byte_ptr) = unsafe { build_msg_block(input, input.len(), 0) };\n assert_eq(msg_byte_ptr, input.len());\n assert_eq(msg_block[0], make_item(input[0], input[1], input[2], input[3]));\n assert_eq(msg_block[1], make_item(input[4], input[5], input[6], input[7]));\n assert_eq(msg_block[5], make_item(input[20], input[21], 0, 0));\n assert_eq(msg_block[6], 0);\n }\n\n #[test]\n fn test_build_msg_block_start_1() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116,\n ];\n assert_eq(input.len(), 68);\n /// Safety: test context\n let (msg_block, msg_byte_ptr) = unsafe { build_msg_block(input, input.len(), 64) };\n assert_eq(msg_byte_ptr, 4);\n assert_eq(msg_block[0], make_item(input[64], input[65], input[66], input[67]));\n assert_eq(msg_block[1], 0);\n }\n\n #[test]\n fn test_attach_len_to_msg_block() {\n let input: INT_BLOCK = [\n 2152555847, 1397309779, 1936618851, 1262052426, 1936876331, 1985297723, 543702374,\n 1919905082, 1131376244, 1701737517, 1417244773, 978151789, 1697470053, 1920166255,\n 1849316213, 1651139939,\n ];\n /// Safety: testing context\n let msg_block = unsafe { attach_len_to_msg_block(input, 1, 448) };\n assert_eq(msg_block[0], ((1 << 7) as u32) * 256 * 256 * 256);\n assert_eq(msg_block[1], 0);\n assert_eq(msg_block[15], 3584);\n }\n}\n"
|
|
6035
6031
|
},
|
|
6036
|
-
"
|
|
6032
|
+
"270": {
|
|
6033
|
+
"path": "/build-volume/noir-projects/noir-protocol-circuits/crates/types/src/indexed_tagging_secret.nr",
|
|
6034
|
+
"source": "use crate::traits::{Deserialize, Serialize, ToField};\nuse super::{address::aztec_address::AztecAddress, hash::poseidon2_hash};\nuse std::meta::derive;\n\npub global INDEXED_TAGGING_SECRET_LENGTH: u32 = 2;\n\n#[derive(Serialize, Deserialize)]\npub struct IndexedTaggingSecret {\n app_tagging_secret: Field,\n index: u32,\n}\n\nimpl IndexedTaggingSecret {\n pub fn compute_tag(self, recipient: AztecAddress) -> Field {\n poseidon2_hash(\n [self.app_tagging_secret, recipient.to_field(), self.index as Field],\n )\n }\n}\n"
|
|
6035
|
+
},
|
|
6036
|
+
"285": {
|
|
6037
6037
|
"path": "/build-volume/noir-projects/noir-protocol-circuits/crates/types/src/point.nr",
|
|
6038
6038
|
"source": "pub use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse crate::{hash::poseidon2_hash, traits::{Deserialize, Empty, Hash, Packable, Serialize}};\n\npub global POINT_LENGTH: u32 = 3;\n\nimpl Serialize<POINT_LENGTH> for Point {\n fn serialize(self: Self) -> [Field; POINT_LENGTH] {\n [self.x, self.y, self.is_infinite as Field]\n }\n}\n\nimpl Hash for Point {\n fn hash(self) -> Field {\n poseidon2_hash(self.serialize())\n }\n}\n\nimpl Empty for Point {\n /// Note: Does not return a valid point on curve - instead represents an empty/\"unpopulated\" point struct (e.g.\n /// empty/unpopulated value in an array of points).\n fn empty() -> Self {\n Point { x: 0, y: 0, is_infinite: false }\n }\n}\n\nimpl Deserialize<POINT_LENGTH> for Point {\n fn deserialize(serialized: [Field; POINT_LENGTH]) -> Point {\n Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] as bool }\n }\n}\n// TODO(#11356): use compact representation here.\nimpl Packable<POINT_LENGTH> for Point {\n fn pack(self) -> [Field; POINT_LENGTH] {\n self.serialize()\n }\n\n fn unpack(packed: [Field; POINT_LENGTH]) -> Self {\n Self::deserialize(packed)\n }\n}\n"
|
|
6039
6039
|
},
|
|
6040
|
-
"
|
|
6040
|
+
"286": {
|
|
6041
6041
|
"path": "/build-volume/noir-projects/noir-protocol-circuits/crates/types/src/poseidon2.nr",
|
|
6042
6042
|
"source": "use crate::constants::TWO_POW_64;\n\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\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 // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n"
|
|
6043
6043
|
},
|
|
6044
|
-
"
|
|
6044
|
+
"295": {
|
|
6045
6045
|
"path": "/build-volume/noir-projects/noir-protocol-circuits/crates/types/src/public_keys.nr",
|
|
6046
6046
|
"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, GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n },\n hash::poseidon2_hash_with_separator,\n point::POINT_LENGTH,\n traits::{Deserialize, Hash, Serialize},\n};\n\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse std::default::Default;\n\npub global PUBLIC_KEYS_LENGTH: u32 = 12;\n\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\npub trait ToPoint {\n fn to_point(self) -> Point;\n}\n\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\nimpl Serialize<POINT_LENGTH> for NpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\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\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\nimpl Serialize<POINT_LENGTH> for IvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\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\nimpl Serialize<POINT_LENGTH> for OvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\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\nimpl Serialize<POINT_LENGTH> for TpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\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 Eq for PublicKeys {\n fn eq(self, other: PublicKeys) -> bool {\n (self.npk_m.inner == other.npk_m.inner)\n & (self.ivpk_m.inner == other.ivpk_m.inner)\n & (self.ovpk_m.inner == other.ovpk_m.inner)\n & (self.tpk_m.inner == other.tpk_m.inner)\n }\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(poseidon2_hash_with_separator(\n self.serialize(),\n GENERATOR_INDEX__PUBLIC_KEYS_HASH as Field,\n ))\n }\n}\n\nimpl Serialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn serialize(self) -> [Field; PUBLIC_KEYS_LENGTH] {\n [\n self.npk_m.inner.x,\n self.npk_m.inner.y,\n self.npk_m.inner.is_infinite as Field,\n self.ivpk_m.inner.x,\n self.ivpk_m.inner.y,\n self.ivpk_m.inner.is_infinite as Field,\n self.ovpk_m.inner.x,\n self.ovpk_m.inner.y,\n self.ovpk_m.inner.is_infinite as Field,\n self.tpk_m.inner.x,\n self.tpk_m.inner.y,\n self.tpk_m.inner.is_infinite as Field,\n ]\n }\n}\n\nimpl Deserialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn deserialize(serialized: [Field; PUBLIC_KEYS_LENGTH]) -> PublicKeys {\n PublicKeys {\n npk_m: NpkM {\n inner: Point {\n x: serialized[0],\n y: serialized[1],\n is_infinite: serialized[2] as bool,\n },\n },\n ivpk_m: IvpkM {\n inner: Point {\n x: serialized[3],\n y: serialized[4],\n is_infinite: serialized[5] as bool,\n },\n },\n ovpk_m: OvpkM {\n inner: Point {\n x: serialized[6],\n y: serialized[7],\n is_infinite: serialized[8] as bool,\n },\n },\n tpk_m: TpkM {\n inner: Point {\n x: serialized[9],\n y: serialized[10],\n is_infinite: serialized[11] as bool,\n },\n },\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\n#[test]\nunconstrained 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 let expected_public_keys_hash =\n 0x0fecd9a32db731fec1fded1b9ff957a1625c069245a3613a2538bd527068b0ad;\n\n assert(actual.to_field() == expected_public_keys_hash);\n}\n\n#[test]\nunconstrained fn compute_default_hash() {\n let keys = PublicKeys::default();\n\n let actual = keys.hash();\n let test_data_default_hash = 0x1d3bf1fb93ae0e9cda83b203dd91c3bfb492a9aecf30ec90e1057eced0f0e62d;\n\n assert(actual.to_field() == test_data_default_hash);\n}\n\n#[test]\nunconstrained fn test_public_keys_serialization() {\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 serialized = keys.serialize();\n let deserialized = PublicKeys::deserialize(serialized);\n\n assert_eq(keys.npk_m.inner.x, deserialized.npk_m.inner.x);\n assert_eq(keys.npk_m.inner.y, deserialized.npk_m.inner.y);\n assert_eq(keys.ivpk_m.inner.x, deserialized.ivpk_m.inner.x);\n assert_eq(keys.ivpk_m.inner.y, deserialized.ivpk_m.inner.y);\n assert_eq(keys.ovpk_m.inner.x, deserialized.ovpk_m.inner.x);\n assert_eq(keys.ovpk_m.inner.y, deserialized.ovpk_m.inner.y);\n assert_eq(keys.tpk_m.inner.x, deserialized.tpk_m.inner.x);\n assert_eq(keys.tpk_m.inner.y, deserialized.tpk_m.inner.y);\n}\n"
|
|
6047
6047
|
},
|
|
6048
|
-
"
|
|
6048
|
+
"332": {
|
|
6049
6049
|
"path": "/build-volume/noir-projects/noir-protocol-circuits/crates/types/src/utils/arrays.nr",
|
|
6050
6050
|
"source": "pub mod assert_array_appended;\npub mod assert_array_prepended;\npub mod assert_combined_array;\npub mod assert_combined_transformed_array;\npub mod assert_exposed_sorted_transformed_value_array;\npub mod assert_sorted_array;\npub mod assert_sorted_transformed_value_array;\npub mod assert_split_sorted_transformed_value_arrays;\npub mod assert_split_transformed_value_arrays;\npub mod get_sorted_result;\npub mod get_sorted_tuple;\npub mod sort_by;\npub mod sort_by_counter;\n\n// Re-exports.\npub use assert_array_appended::{\n assert_array_appended, assert_array_appended_and_scoped, assert_array_appended_reversed,\n assert_array_appended_scoped,\n};\npub use assert_array_prepended::assert_array_prepended;\npub use assert_combined_array::{assert_combined_array, combine_arrays};\npub use assert_combined_transformed_array::{\n assert_combined_transformed_array, combine_and_transform_arrays,\n};\npub use assert_exposed_sorted_transformed_value_array::{\n assert_exposed_sorted_transformed_value_array,\n get_order_hints::{get_order_hints_asc, get_order_hints_desc, OrderHint},\n};\npub use assert_sorted_array::assert_sorted_array;\npub use assert_sorted_transformed_value_array::{\n assert_sorted_transformed_value_array, assert_sorted_transformed_value_array_capped_size,\n};\npub use assert_split_sorted_transformed_value_arrays::{\n assert_split_sorted_transformed_value_arrays_asc,\n assert_split_sorted_transformed_value_arrays_desc,\n get_split_order_hints::{get_split_order_hints_asc, get_split_order_hints_desc, SplitOrderHints},\n};\npub use assert_split_transformed_value_arrays::assert_split_transformed_value_arrays;\npub use get_sorted_result::{get_sorted_result, SortedResult};\npub use sort_by_counter::{sort_by_counter_asc, sort_by_counter_desc};\n\nuse crate::traits::{Empty, is_empty};\n\npub fn subarray<let SRC_LEN: u32, let DST_LEN: u32>(\n src: [Field; SRC_LEN],\n offset: u32,\n) -> [Field; DST_LEN] {\n assert(offset + DST_LEN <= SRC_LEN, \"offset too large\");\n\n let mut dst: [Field; DST_LEN] = std::mem::zeroed();\n for i in 0..DST_LEN {\n dst[i] = src[i + offset];\n }\n\n dst\n}\n\n// Helper function to convert a validated array to BoundedVec.\n// Important: Only use it for validated arrays: validate_array(array) should be true.\npub unconstrained fn array_to_bounded_vec<T, let N: u32>(array: [T; N]) -> BoundedVec<T, N>\nwhere\n T: Empty + Eq,\n{\n let len = array_length(array);\n BoundedVec::from_parts_unchecked(array, len)\n}\n\n// Helper function to find the index of the first element in an array that satisfies a given predicate. If the element\n// is not found, the function returns N as the index.\npub unconstrained fn find_index_hint<T, let N: u32, Env>(\n array: [T; N],\n find: fn[Env](T) -> bool,\n) -> u32 {\n let mut index = N;\n for i in 0..N {\n // We check `index == N` to ensure that we only update the index if we haven't found a match yet.\n if (index == N) & find(array[i]) {\n index = i;\n }\n }\n index\n}\n\n// Routine which validates that all zero values of an array form a contiguous region at the end, i.e.,\n// of the form: [*,*,*...,0,0,0,0] where any * is non-zero. Note that a full array of non-zero values is\n// valid.\npub fn validate_array<T, let N: u32>(array: [T; N]) -> u32\nwhere\n T: Empty + Eq,\n{\n let mut seen_empty = false;\n let mut length = 0;\n for i in 0..N {\n if is_empty(array[i]) {\n seen_empty = true;\n } else {\n assert(seen_empty == false, \"invalid array\");\n length += 1;\n }\n }\n length\n}\n\n// Helper function to count the number of non-empty elements in a validated array.\n// Important: Only use it for validated arrays where validate_array(array) returns true,\n// which ensures that:\n// 1. All elements before the first empty element are non-empty\n// 2. All elements after and including the first empty element are empty\n// 3. The array forms a contiguous sequence of non-empty elements followed by empty elements\npub fn array_length<T, let N: u32>(array: [T; N]) -> u32\nwhere\n T: Empty + Eq,\n{\n // We get the length by checking the index of the first empty element.\n\n /// Safety: This is safe because we have validated the array (see function doc above) and the emptiness\n /// of the element and non-emptiness of the previous element is checked below.\n let length = unsafe { find_index_hint(array, |elem: T| is_empty(elem)) };\n if length != 0 {\n assert(!is_empty(array[length - 1]));\n }\n if length != N {\n assert(is_empty(array[length]));\n }\n length\n}\n\npub fn array_concat<T, let N: u32, let M: u32>(array1: [T; N], array2: [T; M]) -> [T; N + M] {\n let mut result = [array1[0]; N + M];\n for i in 1..N {\n result[i] = array1[i];\n }\n for i in 0..M {\n result[i + N] = array2[i];\n }\n result\n}\n\npub fn array_merge<T, let N: u32>(array1: [T; N], array2: [T; N]) -> [T; N]\nwhere\n T: Empty + Eq,\n{\n let mut result: [T; N] = [T::empty(); N];\n let mut i = 0;\n for elem in array1 {\n if !is_empty(elem) {\n result[i] = elem;\n i += 1;\n }\n }\n for elem in array2 {\n if !is_empty(elem) {\n result[i] = elem;\n i += 1;\n }\n }\n result\n}\n\n// Helper fn to create a subarray from a given array\npub fn array_splice<T, let N: u32, let M: u32>(array: [T; N], offset: u32) -> [T; M]\nwhere\n T: Empty,\n{\n assert(M + offset <= N, \"Subarray length larger than array length\");\n let mut result: [T; M] = [T::empty(); M];\n for i in 0..M {\n result[i] = array[offset + i];\n }\n result\n}\n\npub fn check_permutation<T, let N: u32>(\n original_array: [T; N],\n permuted_array: [T; N],\n original_indexes: [u32; N],\n)\nwhere\n T: Eq + Empty,\n{\n let mut seen_value = [false; N];\n for i in 0..N {\n let index = original_indexes[i];\n let original_value = original_array[index];\n assert(permuted_array[i].eq(original_value), \"Invalid index\");\n assert(!seen_value[index], \"Duplicated index\");\n seen_value[index] = true;\n }\n}\n\n#[test]\nfn smoke_validate_array() {\n let valid_array: [Field; 0] = [];\n assert(validate_array(valid_array) == 0);\n\n let valid_array = [0];\n assert(validate_array(valid_array) == 0);\n\n let valid_array = [3];\n assert(validate_array(valid_array) == 1);\n\n let valid_array = [1, 2, 3];\n assert(validate_array(valid_array) == 3);\n\n let valid_array = [1, 2, 3, 0];\n assert(validate_array(valid_array) == 3);\n\n let valid_array = [1, 2, 3, 0, 0];\n assert(validate_array(valid_array) == 3);\n}\n\n#[test(should_fail_with = \"invalid array\")]\nfn smoke_validate_array_invalid_case0() {\n let invalid_array = [0, 1];\n let _ = validate_array(invalid_array);\n}\n\n#[test(should_fail_with = \"invalid array\")]\nfn smoke_validate_array_invalid_case1() {\n let invalid_array = [1, 0, 0, 1, 0];\n let _ = validate_array(invalid_array);\n}\n\n#[test(should_fail_with = \"invalid array\")]\nfn smoke_validate_array_invalid_case2() {\n let invalid_array = [0, 0, 0, 0, 1];\n let _ = validate_array(invalid_array);\n}\n\n#[test]\nfn test_empty_array_length() {\n assert_eq(array_length([0]), 0);\n assert_eq(array_length([0, 0, 0]), 0);\n}\n\n#[test]\nfn test_array_length() {\n assert_eq(array_length([123]), 1);\n assert_eq(array_length([123, 0, 0]), 1);\n assert_eq(array_length([123, 456]), 2);\n assert_eq(array_length([123, 456, 0]), 2);\n}\n\n#[test]\nfn test_array_length_invalid_arrays() {\n // Result can be misleading (but correct) for invalid arrays.\n assert_eq(array_length([0, 0, 123]), 0);\n assert_eq(array_length([0, 123, 0]), 0);\n assert_eq(array_length([0, 123, 456]), 0);\n assert_eq(array_length([123, 0, 456]), 1);\n}\n\n#[test]\nunconstrained fn find_index_greater_than_min() {\n let values = [10, 20, 30, 40];\n let min = 22;\n let index = find_index_hint(values, |v: Field| min.lt(v));\n assert_eq(index, 2);\n}\n\n#[test]\nunconstrained fn find_index_not_found() {\n let values = [10, 20, 30, 40];\n let min = 100;\n let index = find_index_hint(values, |v: Field| min.lt(v));\n assert_eq(index, 4);\n}\n\n#[test]\nfn test_array_concat() {\n let array0 = [1, 2, 3];\n let array1 = [4, 5];\n let concatenated = array_concat(array0, array1);\n assert_eq(concatenated, [1, 2, 3, 4, 5]);\n}\n\n#[test]\nfn check_permutation_basic_test() {\n let original_array = [1, 2, 3];\n let permuted_array = [3, 1, 2];\n let indexes = [2, 0, 1];\n check_permutation(original_array, permuted_array, indexes);\n}\n\n#[test(should_fail_with = \"Duplicated index\")]\nfn check_permutation_duplicated_index() {\n let original_array = [0, 1, 0];\n let permuted_array = [1, 0, 0];\n let indexes = [1, 0, 0];\n check_permutation(original_array, permuted_array, indexes);\n}\n\n#[test(should_fail_with = \"Invalid index\")]\nfn check_permutation_invalid_index() {\n let original_array = [0, 1, 2];\n let permuted_array = [1, 0, 0];\n let indexes = [1, 0, 2];\n check_permutation(original_array, permuted_array, indexes);\n}\n"
|
|
6051
6051
|
},
|
|
6052
|
-
"
|
|
6052
|
+
"335": {
|
|
6053
6053
|
"path": "/build-volume/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr",
|
|
6054
6054
|
"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_bool(&mut self) -> bool {\n self.read() as bool\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 finish(self) {\n assert(self.offset == self.data.len(), \"Reader did not read all data\");\n }\n}\n"
|
|
6055
6055
|
},
|
|
6056
|
-
"
|
|
6056
|
+
"340": {
|
|
6057
6057
|
"path": "/root/nargo/github.com/noir-lang/ec/v0.1.2/src/lib.nr",
|
|
6058
6058
|
"source": "// Elliptic curve implementation\n// Overview\n// ========\n// The following three elliptic curve representations are admissible:\npub mod tecurve; // Twisted Edwards curves\npub mod swcurve; // Elliptic curves in Short Weierstrass form\npub mod montcurve; // Montgomery curves\npub mod consts; // Commonly used curve presets\n//\n// Note that Twisted Edwards and Montgomery curves are (birationally) equivalent, so that\n// they may be freely converted between one another, whereas Short Weierstrass curves are\n// more general. Diagramatically:\n//\n// tecurve == montcurve `subset` swcurve\n//\n// Each module is further divided into two submodules, 'affine' and 'curvegroup', depending\n// on the preferred coordinate representation. Affine coordinates are none other than the usual\n// two-dimensional Cartesian coordinates used in the definitions of these curves, whereas\n// 'CurveGroup' coordinates (terminology borrowed from Arkworks, whose conventions we try\n// to follow) are special coordinate systems with respect to which the group operations may be\n// implemented more efficiently, usually by means of an appropriate choice of projective coordinates.\n//\n// In each of these submodules, there is a Point struct and a Curve struct, the former\n// representing a point in the coordinate system and the latter a curve configuration.\n//\n// Points\n// ======\n// Points may be instantiated using the associated function `new`, which takes coordinates\n// as its arguments. For instance,\n//\n// `let p = swcurve::Point::new(1,1);`\n//\n// The additive identity may be constructed by a call to the associated function `zero` of no\n// arguments:\n//\n// `let zero = swcurve::Point::zero();`\n//\n// Points may be tested for equality by calling the method `eq`:\n//\n// `let pred = p.eq(zero);`\n//\n// There is also the method `is_zero` to explicitly check whether a point is the additive identity:\n//\n// `constrain pred == p.is_zero();`\n//\n// Points may be negated by calling the `negate` method and converted to CurveGroup (or affine)\n// coordinates by calling the `into_group` (resp. `into_affine`) method on them. Finally,\n// Points may be freely mapped between their respective Twisted Edwards and Montgomery\n// representations by calling the `into_montcurve` or `into_tecurve` methods. For mappings\n// between Twisted Edwards/Montgomery curves and Short Weierstrass curves, see the Curve section\n// below, as the underlying mappings are those of curves rather than ambient spaces.\n// As a rule, Points in affine (or CurveGroup) coordinates are mapped to Points in affine\n// (resp. CurveGroup) coordinates.\n//\n// Curves\n// ======\n// A curve configuration (Curve) is completely determined by the Field coefficients of its defining\n// equation (a and b in the case of swcurve, a and d in the case of tecurve, and j and k in\n// the case of montcurve) together with a generator (`gen`) in the corresponding coordinate system.\n// For example, the Baby Jubjub curve configuration as defined in ERC-2494 may be instantiated as a Twisted\n// Edwards curve in affine coordinates as follows:\n//\n// `let bjj_affine = tecurve::Curve::new(168700, 168696, tecurve::Point::new(995203441582195749578291179787384436505546430278305826713579947235728471134,5472060717959818805561601436314318772137091100104008585924551046643952123905));`\n//\n// The `contains` method may be used to check whether a Point lies on a given curve:\n//\n// `constrain bjj_affine.contains(tecurve::Point::zero());`\n//\n// The elliptic curve group's addition operation is exposed as the `add` method, e.g.\n//\n// `let p = bjj_affine.add(bjj_affine.gen, bjj_affine.gen);`\n//\n// subtraction as the `subtract` method, e.g.\n//\n// `constrain tecurve::Point::zero().eq(bjj_affine.subtract(bjj_affine.gen, bjj_affine.gen));`\n//\n// scalar multiplication as the `mul` method, where the scalar is assumed to be a Field* element, e.g.\n//\n// `constrain tecurve::Point::zero().eq(bjj_affine.mul(2, tecurve::Point::zero());`\n//\n// There is a scalar multiplication method (`bit_mul`) provided where the scalar input is expected to be\n// an array of bits (little-endian convention), as well as a multi-scalar multiplication method** (`msm`)\n// which takes an array of Field elements and an array of elliptic curve points as arguments, both assumed\n// to be of the same length.\n//\n// Curve configurations may be converted between different coordinate representations by calling the `into_group`\n// and `into_affine` methods on them, e.g.\n//\n// `let bjj_curvegroup = bjj_affine.into_group();`\n//\n// Curve configurations may also be converted between different curve representations by calling the `into_swcurve`,\n// `into_montcurve` and `into_tecurve` methods subject to the relation between the curve representations mentioned\n// above. Note that it is possible to map Points from a Twisted Edwards/Montgomery curve to the corresponding\n// Short Weierstrass representation and back, and the methods to do so are exposed as `map_into_swcurve` and\n// `map_from_swcurve`, which each take one argument, the point to be mapped.\n//\n// Curve maps\n// ==========\n// There are a few different ways of mapping Field elements to elliptic curves. Here we provide the simplified\n// Shallue-van de Woestijne-Ulas and Elligator 2 methods, the former being applicable to all curve types\n// provided above subject to the constraint that the coefficients of the corresponding Short Weierstrass curve satisfies\n// a*b != 0 and the latter being applicable to Montgomery and Twisted Edwards curves subject to the constraint that\n// the coefficients of the corresponding Montgomery curve satisfy j*k != 0 and (j^2 - 4)/k^2 is non-square.\n//\n// The simplified Shallue-van de Woestijne-Ulas method is exposed as the method `swu_map` on the Curve configuration and\n// depends on two parameters, a Field element z != -1 for which g(x) - z is irreducible over Field and g(b/(z*a)) is\n// square, where g(x) = x^3 + a*x + b is the right-hand side of the defining equation of the corresponding Short\n// Weierstrass curve, and a Field element u to be mapped onto the curve. For example, in the case of bjj_affine above,\n// it may be determined using the scripts provided at <https://github.com/cfrg/draft-irtf-cfrg-hash-to-curve> that z = 5.\n//\n// The Elligator 2 method is exposed as the method `elligator2_map` on the Curve configurations of Montgomery and\n// Twisted Edwards curves. Like the simplified SWU method above, it depends on a certain non-square element of Field,\n// but this element need not satisfy any further conditions, so it is included as the (Field-dependent) constant\n//`ZETA` below. Thus, the `elligator2_map` method depends only on one parameter, the Field element to be mapped onto\n// the curve.\n//\n// For details on all of the above in the context of hashing to elliptic curves, see <https://datatracker.ietf.org/doc/id/draft-irtf-cfrg-hash-to-curve-06.html>.\n//\n//\n// *TODO: Replace Field with Bigint.\n// **TODO: Support arrays of structs to make this work.\n// Field-dependent constant ZETA = a non-square element of Field\n// Required for Elligator 2 map\n// TODO: Replace with built-in constant.\nglobal ZETA: Field = 5;\n// Field-dependent constants for Tonelli-Shanks algorithm (see sqrt function below)\n// TODO: Possibly make this built-in.\nglobal C1: u32 = 28;\nglobal C3: Field = 40770029410420498293352137776570907027550720424234931066070132305055;\nglobal C5: Field = 19103219067921713944291392827692070036145651957329286315305642004821462161904;\n// Higher-order version of scalar multiplication\n// TODO: Make this work so that the submodules' bit_mul may be defined in terms of it.\n//fn bit_mul<T,N>(add: fn(T,T) -> T, e: T, bits: [u1; N], p: T) -> T {\n// let mut out = e;\n// let n = bits.len();\n//\n// for i in 0..n {\n// out = add(\n// add(out, out),\n// if(bits[n - i - 1] == 0) {e} else {p});\n// }\n//\n// out\n//}\n// TODO: Make this built-in.\npub fn safe_inverse(x: Field) -> Field {\n if x == 0 {\n 0\n } else {\n 1 / x\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.\npub fn is_square(x: Field) -> bool {\n let v = pow(x, 0 - 1 / 2);\n\n v * (v - 1) == 0\n}\n// Power function of two Field arguments of arbitrary size.\n// Adapted from std::field::pow_32.\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// 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.\npub fn 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\nmod tests {\n use crate::montcurve::affine::Point as MGaffine;\n use crate::montcurve::curvegroup::Point as MG;\n use crate::swcurve::affine::Point as SWGaffine;\n use crate::swcurve::curvegroup::Point as SWG;\n use crate::tecurve::affine::Curve as AffineCurve;\n use crate::tecurve::affine::Point as Gaffine;\n use crate::tecurve::curvegroup::Point as G;\n\n #[test]\n fn smoke_test() {\n // Tests may be checked against https://github.com/cfrg/draft-irtf-cfrg-hash-to-curve/tree/main/poc\n // Define Baby Jubjub (ERC-2494) parameters in affine representation\n let bjj_affine = AffineCurve::new(\n 168700,\n 168696,\n Gaffine::new(\n 995203441582195749578291179787384436505546430278305826713579947235728471134,\n 5472060717959818805561601436314318772137091100104008585924551046643952123905,\n ),\n );\n // Test addition\n let p1_affine = Gaffine::new(\n 17777552123799933955779906779655732241715742912184938656739573121738514868268,\n 2626589144620713026669568689430873010625803728049924121243784502389097019475,\n );\n let p2_affine = Gaffine::new(\n 16540640123574156134436876038791482806971768689494387082833631921987005038935,\n 20819045374670962167435360035096875258406992893633759881276124905556507972311,\n );\n\n let p3_affine = bjj_affine.add(p1_affine, p2_affine);\n assert(p3_affine.eq(Gaffine::new(\n 7916061937171219682591368294088513039687205273691143098332585753343424131937,\n 14035240266687799601661095864649209771790948434046947201833777492504781204499,\n )));\n // Test scalar multiplication\n let p4_affine = bjj_affine.mul(2, p1_affine);\n assert(p4_affine.eq(Gaffine::new(\n 6890855772600357754907169075114257697580319025794532037257385534741338397365,\n 4338620300185947561074059802482547481416142213883829469920100239455078257889,\n )));\n assert(p4_affine.eq(bjj_affine.bit_mul([0, 1], p1_affine)));\n // Test subtraction\n let p5_affine = bjj_affine.subtract(p3_affine, p3_affine);\n assert(p5_affine.eq(Gaffine::zero()));\n // Check that these points are on the curve\n assert(\n bjj_affine.contains(bjj_affine.gen)\n & bjj_affine.contains(p1_affine)\n & bjj_affine.contains(p2_affine)\n & bjj_affine.contains(p3_affine)\n & bjj_affine.contains(p4_affine)\n & bjj_affine.contains(p5_affine),\n );\n // Test CurveGroup equivalents\n let bjj = bjj_affine.into_group(); // Baby Jubjub\n let p1 = p1_affine.into_group();\n let p2 = p2_affine.into_group();\n let p3 = p3_affine.into_group();\n let p4 = p4_affine.into_group();\n let p5 = p5_affine.into_group();\n // Test addition\n assert(p3.eq(bjj.add(p1, p2)));\n // Test scalar multiplication\n assert(p4.eq(bjj.mul(2, p1)));\n assert(p4.eq(bjj.bit_mul([0, 1], p1)));\n // Test subtraction\n assert(G::zero().eq(bjj.subtract(p3, p3)));\n assert(p5.eq(G::zero()));\n // Check that these points are on the curve\n assert(\n bjj.contains(bjj.gen)\n & bjj.contains(p1)\n & bjj.contains(p2)\n & bjj.contains(p3)\n & bjj.contains(p4)\n & bjj.contains(p5),\n );\n // Test SWCurve equivalents of the above\n // First the affine representation\n let bjj_swcurve_affine = bjj_affine.into_swcurve();\n\n let p1_swcurve_affine = bjj_affine.map_into_swcurve(p1_affine);\n let p2_swcurve_affine = bjj_affine.map_into_swcurve(p2_affine);\n let p3_swcurve_affine = bjj_affine.map_into_swcurve(p3_affine);\n let p4_swcurve_affine = bjj_affine.map_into_swcurve(p4_affine);\n let p5_swcurve_affine = bjj_affine.map_into_swcurve(p5_affine);\n // Addition\n assert(p3_swcurve_affine.eq(bjj_swcurve_affine.add(p1_swcurve_affine, p2_swcurve_affine)));\n // Doubling\n assert(p4_swcurve_affine.eq(bjj_swcurve_affine.mul(2, p1_swcurve_affine)));\n assert(p4_swcurve_affine.eq(bjj_swcurve_affine.bit_mul([0, 1], p1_swcurve_affine)));\n // Subtraction\n assert(SWGaffine::zero().eq(bjj_swcurve_affine.subtract(\n p3_swcurve_affine,\n p3_swcurve_affine,\n )));\n assert(p5_swcurve_affine.eq(SWGaffine::zero()));\n // Check that these points are on the curve\n assert(\n bjj_swcurve_affine.contains(bjj_swcurve_affine.gen)\n & bjj_swcurve_affine.contains(p1_swcurve_affine)\n & bjj_swcurve_affine.contains(p2_swcurve_affine)\n & bjj_swcurve_affine.contains(p3_swcurve_affine)\n & bjj_swcurve_affine.contains(p4_swcurve_affine)\n & bjj_swcurve_affine.contains(p5_swcurve_affine),\n );\n // Then the CurveGroup representation\n let bjj_swcurve = bjj.into_swcurve();\n\n let p1_swcurve = bjj.map_into_swcurve(p1);\n let p2_swcurve = bjj.map_into_swcurve(p2);\n let p3_swcurve = bjj.map_into_swcurve(p3);\n let p4_swcurve = bjj.map_into_swcurve(p4);\n let p5_swcurve = bjj.map_into_swcurve(p5);\n // Addition\n assert(p3_swcurve.eq(bjj_swcurve.add(p1_swcurve, p2_swcurve)));\n // Doubling\n assert(p4_swcurve.eq(bjj_swcurve.mul(2, p1_swcurve)));\n assert(p4_swcurve.eq(bjj_swcurve.bit_mul([0, 1], p1_swcurve)));\n // Subtraction\n assert(SWG::zero().eq(bjj_swcurve.subtract(p3_swcurve, p3_swcurve)));\n assert(p5_swcurve.eq(SWG::zero()));\n // Check that these points are on the curve\n assert(\n bjj_swcurve.contains(bjj_swcurve.gen)\n & bjj_swcurve.contains(p1_swcurve)\n & bjj_swcurve.contains(p2_swcurve)\n & bjj_swcurve.contains(p3_swcurve)\n & bjj_swcurve.contains(p4_swcurve)\n & bjj_swcurve.contains(p5_swcurve),\n );\n // Test MontCurve conversions\n // First the affine representation\n let bjj_montcurve_affine = bjj_affine.into_montcurve();\n\n let p1_montcurve_affine = p1_affine.into_montcurve();\n let p2_montcurve_affine = p2_affine.into_montcurve();\n let p3_montcurve_affine = p3_affine.into_montcurve();\n let p4_montcurve_affine = p4_affine.into_montcurve();\n let p5_montcurve_affine = p5_affine.into_montcurve();\n // Addition\n assert(p3_montcurve_affine.eq(bjj_montcurve_affine.add(\n p1_montcurve_affine,\n p2_montcurve_affine,\n )));\n // Doubling\n assert(p4_montcurve_affine.eq(bjj_montcurve_affine.mul(2, p1_montcurve_affine)));\n assert(p4_montcurve_affine.eq(bjj_montcurve_affine.bit_mul([0, 1], p1_montcurve_affine)));\n // Subtraction\n assert(MGaffine::zero().eq(bjj_montcurve_affine.subtract(\n p3_montcurve_affine,\n p3_montcurve_affine,\n )));\n assert(p5_montcurve_affine.eq(MGaffine::zero()));\n // Check that these points are on the curve\n assert(\n bjj_montcurve_affine.contains(bjj_montcurve_affine.gen)\n & bjj_montcurve_affine.contains(p1_montcurve_affine)\n & bjj_montcurve_affine.contains(p2_montcurve_affine)\n & bjj_montcurve_affine.contains(p3_montcurve_affine)\n & bjj_montcurve_affine.contains(p4_montcurve_affine)\n & bjj_montcurve_affine.contains(p5_montcurve_affine),\n );\n // Then the CurveGroup representation\n let bjj_montcurve = bjj.into_montcurve();\n\n let p1_montcurve = p1_montcurve_affine.into_group();\n let p2_montcurve = p2_montcurve_affine.into_group();\n let p3_montcurve = p3_montcurve_affine.into_group();\n let p4_montcurve = p4_montcurve_affine.into_group();\n let p5_montcurve = p5_montcurve_affine.into_group();\n // Addition\n assert(p3_montcurve.eq(bjj_montcurve.add(p1_montcurve, p2_montcurve)));\n // Doubling\n assert(p4_montcurve.eq(bjj_montcurve.mul(2, p1_montcurve)));\n assert(p4_montcurve.eq(bjj_montcurve.bit_mul([0, 1], p1_montcurve)));\n // Subtraction\n assert(MG::zero().eq(bjj_montcurve.subtract(p3_montcurve, p3_montcurve)));\n assert(p5_montcurve.eq(MG::zero()));\n // Check that these points are on the curve\n assert(\n bjj_montcurve.contains(bjj_montcurve.gen)\n & bjj_montcurve.contains(p1_montcurve)\n & bjj_montcurve.contains(p2_montcurve)\n & bjj_montcurve.contains(p3_montcurve)\n & bjj_montcurve.contains(p4_montcurve)\n & bjj_montcurve.contains(p5_montcurve),\n );\n // Elligator 2 map-to-curve\n let ell2_pt_map = bjj_affine.elligator2_map(27);\n\n assert(ell2_pt_map.eq(MGaffine::new(\n 7972459279704486422145701269802978968072470631857513331988813812334797879121,\n 8142420778878030219043334189293412482212146646099536952861607542822144507872,\n )\n .into_tecurve()));\n // SWU map-to-curve\n let swu_pt_map = bjj_affine.swu_map(5, 27);\n\n assert(swu_pt_map.eq(bjj_affine.map_from_swcurve(SWGaffine::new(\n 2162719247815120009132293839392097468339661471129795280520343931405114293888,\n 5341392251743377373758788728206293080122949448990104760111875914082289313973,\n ))));\n }\n\n}\n"
|
|
6059
6059
|
},
|
|
6060
|
-
"
|
|
6060
|
+
"347": {
|
|
6061
6061
|
"path": "/root/nargo/github.com/noir-lang/schnorr/v0.1.1/src/lib.nr",
|
|
6062
6062
|
"source": "use std::embedded_curve_ops::{EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul};\nuse std::hash::{blake2s, pedersen_hash};\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 r = multi_scalar_mul([g1, public_key], [sig_s, 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\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 std::embedded_curve_ops::EmbeddedCurvePoint;\n\n use super::verify_signature;\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}\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"
|
|
6063
6063
|
},
|
|
@@ -6071,7 +6071,7 @@
|
|
|
6071
6071
|
},
|
|
6072
6072
|
"6": {
|
|
6073
6073
|
"path": "std/cmp.nr",
|
|
6074
|
-
"source": "use crate::meta::derive_via;\n\n#[derive_via(derive_eq)]\n// docs:start:eq-trait\npub trait Eq {\n fn eq(self, other: Self) -> bool;\n}\n// docs:end:eq-trait\n\n// docs:start:derive_eq\ncomptime fn derive_eq(s: StructDefinition) -> Quoted {\n let signature = quote { fn eq(_self: Self, _other: Self) -> bool };\n let for_each_field = |name| quote { (_self.$name == _other.$name) };\n let body = |fields| {\n if s.fields_as_written().len() == 0 {\n quote { true }\n } else {\n fields\n }\n };\n crate::meta::make_trait_impl(\n s,\n quote { Eq },\n signature,\n for_each_field,\n quote { & },\n body,\n )\n}\n// docs:end:derive_eq\n\nimpl Eq for Field {\n fn eq(self, other: Field) -> bool {\n self == other\n }\n}\n\nimpl Eq for u64 {\n fn eq(self, other: u64) -> bool {\n self == other\n }\n}\nimpl Eq for u32 {\n fn eq(self, other: u32) -> bool {\n self == other\n }\n}\nimpl Eq for u16 {\n fn eq(self, other: u16) -> bool {\n self == other\n }\n}\nimpl Eq for u8 {\n fn eq(self, other: u8) -> bool {\n self == other\n }\n}\nimpl Eq for u1 {\n fn eq(self, other: u1) -> bool {\n self == other\n }\n}\n\nimpl Eq for i8 {\n fn eq(self, other: i8) -> bool {\n self == other\n }\n}\nimpl Eq for i16 {\n fn eq(self, other: i16) -> bool {\n self == other\n }\n}\nimpl Eq for i32 {\n fn eq(self, other: i32) -> bool {\n self == other\n }\n}\nimpl Eq for i64 {\n fn eq(self, other: i64) -> bool {\n self == other\n }\n}\n\nimpl Eq for () {\n fn eq(_self: Self, _other: ()) -> bool {\n true\n }\n}\nimpl Eq for bool {\n fn eq(self, other: bool) -> bool {\n self == other\n }\n}\n\nimpl<T, let N: u32> Eq for [T; N]\nwhere\n T: Eq,\n{\n fn eq(self, other: [T; N]) -> bool {\n let mut result = true;\n for i in 0..self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl<T> Eq for [T]\nwhere\n T: Eq,\n{\n fn eq(self, other: [T]) -> bool {\n let mut result = self.len() == other.len();\n for i in 0..self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl<let N: u32> Eq for str<N> {\n fn eq(self, other: str<N>) -> bool {\n let self_bytes = self.as_bytes();\n let other_bytes = other.as_bytes();\n self_bytes == other_bytes\n }\n}\n\nimpl<A, B> Eq for (A, B)\nwhere\n A: Eq,\n B: Eq,\n{\n fn eq(self, other: (A, B)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1)\n }\n}\n\nimpl<A, B, C> Eq for (A, B, C)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n{\n fn eq(self, other: (A, B, C)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2)\n }\n}\n\nimpl<A, B, C, D> Eq for (A, B, C, D)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n D: Eq,\n{\n fn eq(self, other: (A, B, C, D)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2) & self.3.eq(other.3)\n }\n}\n\nimpl<A, B, C, D, E> Eq for (A, B, C, D, E)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n D: Eq,\n E: Eq,\n{\n fn eq(self, other: (A, B, C, D, E)) -> bool {\n self.0.eq(other.0)\n & self.1.eq(other.1)\n & self.2.eq(other.2)\n & self.3.eq(other.3)\n & self.4.eq(other.4)\n }\n}\n\nimpl Eq for Ordering {\n fn eq(self, other: Ordering) -> bool {\n self.result == other.result\n }\n}\n\n// Noir doesn't have enums yet so we emulate (Lt | Eq | Gt) with a struct\n// that has 3 public functions for constructing the struct.\npub struct Ordering {\n result: Field,\n}\n\nimpl Ordering {\n // Implementation note: 0, 1, and 2 for Lt, Eq, and Gt are built\n // into the compiler, do not change these without also updating\n // the compiler itself!\n pub fn less() -> Ordering {\n Ordering { result: 0 }\n }\n\n pub fn equal() -> Ordering {\n Ordering { result: 1 }\n }\n\n pub fn greater() -> Ordering {\n Ordering { result: 2 }\n }\n}\n\n#[derive_via(derive_ord)]\n// docs:start:ord-trait\npub trait Ord {\n fn cmp(self, other: Self) -> Ordering;\n}\n// docs:end:ord-trait\n\n// docs:start:derive_ord\ncomptime fn derive_ord(s: StructDefinition) -> Quoted {\n let signature = quote { fn cmp(_self: Self, _other: Self) -> std::cmp::Ordering };\n let for_each_field = |name| quote {\n if result == std::cmp::Ordering::equal() {\n result = _self.$name.cmp(_other.$name);\n }\n };\n let body = |fields| quote {\n let mut result = std::cmp::Ordering::equal();\n $fields\n result\n };\n crate::meta::make_trait_impl(s, quote { Ord }, signature, for_each_field, quote {}, body)\n}\n// docs:end:derive_ord\n\n// Note: Field deliberately does not implement Ord\n\nimpl Ord for u64 {\n fn cmp(self, other: u64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u32 {\n fn cmp(self, other: u32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u16 {\n fn cmp(self, other: u16) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u8 {\n fn cmp(self, other: u8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i8 {\n fn cmp(self, other: i8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i16 {\n fn cmp(self, other: i16) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i32 {\n fn cmp(self, other: i32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i64 {\n fn cmp(self, other: i64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for () {\n fn cmp(_self: Self, _other: ()) -> Ordering {\n Ordering::equal()\n }\n}\n\nimpl Ord for bool {\n fn cmp(self, other: bool) -> Ordering {\n if self {\n if other {\n Ordering::equal()\n } else {\n Ordering::greater()\n }\n } else if other {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl<T, let N: u32> Ord for [T; N]\nwhere\n T: Ord,\n{\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T; N]) -> Ordering {\n let mut result = Ordering::equal();\n for i in 0..self.len() {\n if result == Ordering::equal() {\n let result_i = self[i].cmp(other[i]);\n\n if result_i == Ordering::less() {\n result = result_i;\n } else if result_i == Ordering::greater() {\n result = result_i;\n }\n }\n }\n result\n }\n}\n\nimpl<T> Ord for [T]\nwhere\n T: Ord,\n{\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T]) -> Ordering {\n let mut result = self.len().cmp(other.len());\n for i in 0..self.len() {\n if result == Ordering::equal() {\n let result_i = self[i].cmp(other[i]);\n\n if result_i == Ordering::less() {\n result = result_i;\n } else if result_i == Ordering::greater() {\n result = result_i;\n }\n }\n }\n result\n }\n}\n\nimpl<A, B> Ord for (A, B)\nwhere\n A: Ord,\n B: Ord,\n{\n fn cmp(self, other: (A, B)) -> Ordering {\n let result = self.0.cmp(other.0);\n\n if result != Ordering::equal() {\n result\n } else {\n self.1.cmp(other.1)\n }\n }\n}\n\nimpl<A, B, C> Ord for (A, B, C)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n{\n fn cmp(self, other: (A, B, C)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n result\n }\n}\n\nimpl<A, B, C, D> Ord for (A, B, C, D)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n D: Ord,\n{\n fn cmp(self, other: (A, B, C, D)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n result\n }\n}\n\nimpl<A, B, C, D, E> Ord for (A, B, C, D, E)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n D: Ord,\n E: Ord,\n{\n fn cmp(self, other: (A, B, C, D, E)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n if result == Ordering::equal() {\n result = self.4.cmp(other.4);\n }\n\n result\n }\n}\n\n// Compares and returns the maximum of two values.\n//\n// Returns the second argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::max(1, 2), 2);\n// assert_eq(cmp::max(2, 2), 2);\n// ```\npub fn max<T>(v1: T, v2: T) -> T\nwhere\n T: Ord,\n{\n if v1 > v2 {\n v1\n } else {\n v2\n }\n}\n\n// Compares and returns the minimum of two values.\n//\n// Returns the first argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::min(1, 2), 1);\n// assert_eq(cmp::min(2, 2), 2);\n// ```\npub fn min<T>(v1: T, v2: T) -> T\nwhere\n T: Ord,\n{\n if v1 > v2 {\n v2\n } else {\n v1\n }\n}\n\nmod cmp_tests {\n use crate::cmp::{max, min};\n\n #[test]\n fn sanity_check_min() {\n assert_eq(min(0 as u64, 1 as u64), 0);\n assert_eq(min(0 as u64, 0 as u64), 0);\n assert_eq(min(1 as u64, 1 as u64), 1);\n assert_eq(min(255 as u8, 0 as u8), 0);\n }\n\n #[test]\n fn sanity_check_max() {\n assert_eq(max(0 as u64, 1 as u64), 1);\n assert_eq(max(0 as u64, 0 as u64), 0);\n assert_eq(max(1 as u64, 1 as u64), 1);\n assert_eq(max(255 as u8, 0 as u8), 255);\n }\n}\n"
|
|
6074
|
+
"source": "use crate::meta::derive_via;\n\n#[derive_via(derive_eq)]\n// docs:start:eq-trait\npub trait Eq {\n fn eq(self, other: Self) -> bool;\n}\n// docs:end:eq-trait\n\n// docs:start:derive_eq\ncomptime fn derive_eq(s: StructDefinition) -> Quoted {\n let signature = quote { fn eq(_self: Self, _other: Self) -> bool };\n let for_each_field = |name| quote { (_self.$name == _other.$name) };\n let body = |fields| {\n if s.fields_as_written().len() == 0 {\n quote { true }\n } else {\n fields\n }\n };\n crate::meta::make_trait_impl(\n s,\n quote { Eq },\n signature,\n for_each_field,\n quote { & },\n body,\n )\n}\n// docs:end:derive_eq\n\nimpl Eq for Field {\n fn eq(self, other: Field) -> bool {\n self == other\n }\n}\n\nimpl Eq for u64 {\n fn eq(self, other: u64) -> bool {\n self == other\n }\n}\nimpl Eq for u32 {\n fn eq(self, other: u32) -> bool {\n self == other\n }\n}\nimpl Eq for u16 {\n fn eq(self, other: u16) -> bool {\n self == other\n }\n}\nimpl Eq for u8 {\n fn eq(self, other: u8) -> bool {\n self == other\n }\n}\nimpl Eq for u1 {\n fn eq(self, other: u1) -> bool {\n self == other\n }\n}\n\nimpl Eq for i8 {\n fn eq(self, other: i8) -> bool {\n self == other\n }\n}\nimpl Eq for i16 {\n fn eq(self, other: i16) -> bool {\n self == other\n }\n}\nimpl Eq for i32 {\n fn eq(self, other: i32) -> bool {\n self == other\n }\n}\nimpl Eq for i64 {\n fn eq(self, other: i64) -> bool {\n self == other\n }\n}\n\nimpl Eq for () {\n fn eq(_self: Self, _other: ()) -> bool {\n true\n }\n}\nimpl Eq for bool {\n fn eq(self, other: bool) -> bool {\n self == other\n }\n}\n\nimpl<T, let N: u32> Eq for [T; N]\nwhere\n T: Eq,\n{\n fn eq(self, other: [T; N]) -> bool {\n let mut result = true;\n for i in 0..self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl<T> Eq for [T]\nwhere\n T: Eq,\n{\n fn eq(self, other: [T]) -> bool {\n let mut result = self.len() == other.len();\n for i in 0..self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl<let N: u32> Eq for str<N> {\n fn eq(self, other: str<N>) -> bool {\n let self_bytes = self.as_bytes();\n let other_bytes = other.as_bytes();\n self_bytes == other_bytes\n }\n}\n\nimpl<A, B> Eq for (A, B)\nwhere\n A: Eq,\n B: Eq,\n{\n fn eq(self, other: (A, B)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1)\n }\n}\n\nimpl<A, B, C> Eq for (A, B, C)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n{\n fn eq(self, other: (A, B, C)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2)\n }\n}\n\nimpl<A, B, C, D> Eq for (A, B, C, D)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n D: Eq,\n{\n fn eq(self, other: (A, B, C, D)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2) & self.3.eq(other.3)\n }\n}\n\nimpl<A, B, C, D, E> Eq for (A, B, C, D, E)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n D: Eq,\n E: Eq,\n{\n fn eq(self, other: (A, B, C, D, E)) -> bool {\n self.0.eq(other.0)\n & self.1.eq(other.1)\n & self.2.eq(other.2)\n & self.3.eq(other.3)\n & self.4.eq(other.4)\n }\n}\n\nimpl Eq for Ordering {\n fn eq(self, other: Ordering) -> bool {\n self.result == other.result\n }\n}\n\n// Noir doesn't have enums yet so we emulate (Lt | Eq | Gt) with a struct\n// that has 3 public functions for constructing the struct.\npub struct Ordering {\n result: Field,\n}\n\nimpl Ordering {\n // Implementation note: 0, 1, and 2 for Lt, Eq, and Gt are built\n // into the compiler, do not change these without also updating\n // the compiler itself!\n pub fn less() -> Ordering {\n Ordering { result: 0 }\n }\n\n pub fn equal() -> Ordering {\n Ordering { result: 1 }\n }\n\n pub fn greater() -> Ordering {\n Ordering { result: 2 }\n }\n}\n\n#[derive_via(derive_ord)]\n// docs:start:ord-trait\npub trait Ord {\n fn cmp(self, other: Self) -> Ordering;\n}\n// docs:end:ord-trait\n\n// docs:start:derive_ord\ncomptime fn derive_ord(s: StructDefinition) -> Quoted {\n let signature = quote { fn cmp(_self: Self, _other: Self) -> std::cmp::Ordering };\n let for_each_field = |name| quote {\n if result == std::cmp::Ordering::equal() {\n result = _self.$name.cmp(_other.$name);\n }\n };\n let body = |fields| quote {\n let mut result = std::cmp::Ordering::equal();\n $fields\n result\n };\n crate::meta::make_trait_impl(s, quote { Ord }, signature, for_each_field, quote {}, body)\n}\n// docs:end:derive_ord\n\n// Note: Field deliberately does not implement Ord\n\nimpl Ord for u64 {\n fn cmp(self, other: u64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u32 {\n fn cmp(self, other: u32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u16 {\n fn cmp(self, other: u16) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u8 {\n fn cmp(self, other: u8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i8 {\n fn cmp(self, other: i8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i16 {\n fn cmp(self, other: i16) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i32 {\n fn cmp(self, other: i32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i64 {\n fn cmp(self, other: i64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for () {\n fn cmp(_self: Self, _other: ()) -> Ordering {\n Ordering::equal()\n }\n}\n\nimpl Ord for bool {\n fn cmp(self, other: bool) -> Ordering {\n if self {\n if other {\n Ordering::equal()\n } else {\n Ordering::greater()\n }\n } else if other {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl<T, let N: u32> Ord for [T; N]\nwhere\n T: Ord,\n{\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T; N]) -> Ordering {\n let mut result = Ordering::equal();\n for i in 0..self.len() {\n if result == Ordering::equal() {\n result = self[i].cmp(other[i]);\n }\n }\n result\n }\n}\n\nimpl<T> Ord for [T]\nwhere\n T: Ord,\n{\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T]) -> Ordering {\n let mut result = self.len().cmp(other.len());\n for i in 0..self.len() {\n if result == Ordering::equal() {\n result = self[i].cmp(other[i]);\n }\n }\n result\n }\n}\n\nimpl<A, B> Ord for (A, B)\nwhere\n A: Ord,\n B: Ord,\n{\n fn cmp(self, other: (A, B)) -> Ordering {\n let result = self.0.cmp(other.0);\n\n if result != Ordering::equal() {\n result\n } else {\n self.1.cmp(other.1)\n }\n }\n}\n\nimpl<A, B, C> Ord for (A, B, C)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n{\n fn cmp(self, other: (A, B, C)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n result\n }\n}\n\nimpl<A, B, C, D> Ord for (A, B, C, D)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n D: Ord,\n{\n fn cmp(self, other: (A, B, C, D)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n result\n }\n}\n\nimpl<A, B, C, D, E> Ord for (A, B, C, D, E)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n D: Ord,\n E: Ord,\n{\n fn cmp(self, other: (A, B, C, D, E)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n if result == Ordering::equal() {\n result = self.4.cmp(other.4);\n }\n\n result\n }\n}\n\n// Compares and returns the maximum of two values.\n//\n// Returns the second argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::max(1, 2), 2);\n// assert_eq(cmp::max(2, 2), 2);\n// ```\npub fn max<T>(v1: T, v2: T) -> T\nwhere\n T: Ord,\n{\n if v1 > v2 {\n v1\n } else {\n v2\n }\n}\n\n// Compares and returns the minimum of two values.\n//\n// Returns the first argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::min(1, 2), 1);\n// assert_eq(cmp::min(2, 2), 2);\n// ```\npub fn min<T>(v1: T, v2: T) -> T\nwhere\n T: Ord,\n{\n if v1 > v2 {\n v2\n } else {\n v1\n }\n}\n\nmod cmp_tests {\n use crate::cmp::{max, min};\n\n #[test]\n fn sanity_check_min() {\n assert_eq(min(0 as u64, 1 as u64), 0);\n assert_eq(min(0 as u64, 0 as u64), 0);\n assert_eq(min(1 as u64, 1 as u64), 1);\n assert_eq(min(255 as u8, 0 as u8), 0);\n }\n\n #[test]\n fn sanity_check_max() {\n assert_eq(max(0 as u64, 1 as u64), 1);\n assert_eq(max(0 as u64, 0 as u64), 0);\n assert_eq(max(1 as u64, 1 as u64), 1);\n assert_eq(max(255 as u8, 0 as u8), 255);\n }\n}\n"
|
|
6075
6075
|
},
|
|
6076
6076
|
"62": {
|
|
6077
6077
|
"path": "/build-volume/noir-projects/noir-contracts/contracts/schnorr_account_contract/src/main.nr",
|