@aztec/accounts 0.18.0 → 0.20.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/dest/artifacts/EcdsaAccount.json +1591 -944
- package/dest/artifacts/SchnorrAccount.json +1594 -943
- package/dest/artifacts/SchnorrSingleKeyAccount.json +1498 -811
- package/dest/ecdsa/artifact.d.ts +1 -2
- package/dest/ecdsa/artifact.d.ts.map +1 -1
- package/dest/ecdsa/artifact.js +3 -2
- package/dest/schnorr/artifact.d.ts +1 -2
- package/dest/schnorr/artifact.d.ts.map +1 -1
- package/dest/schnorr/artifact.js +3 -2
- package/dest/single_key/artifact.d.ts +1 -2
- package/dest/single_key/artifact.d.ts.map +1 -1
- package/dest/single_key/artifact.js +3 -2
- package/package.json +8 -8
|
@@ -1,1090 +1,1741 @@
|
|
|
1
1
|
{
|
|
2
|
+
"noir_version": "0.23.0+602f23f4fb698cf6e37071936a2a46593a998d08",
|
|
2
3
|
"name": "SchnorrAccount",
|
|
3
4
|
"functions": [
|
|
4
5
|
{
|
|
5
|
-
"name": "
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
"kind": "struct",
|
|
13
|
-
"path": "authwit::aztec::protocol_types::address::AztecAddress",
|
|
14
|
-
"fields": [
|
|
15
|
-
{
|
|
16
|
-
"name": "inner",
|
|
17
|
-
"type": {
|
|
18
|
-
"kind": "field"
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
]
|
|
22
|
-
},
|
|
23
|
-
"visibility": "private"
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
"name": "nonce",
|
|
27
|
-
"type": {
|
|
28
|
-
"kind": "field"
|
|
29
|
-
},
|
|
30
|
-
"visibility": "private"
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
"name": "storage_slot",
|
|
34
|
-
"type": {
|
|
35
|
-
"kind": "field"
|
|
36
|
-
},
|
|
37
|
-
"visibility": "private"
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
"name": "serialized_note",
|
|
41
|
-
"type": {
|
|
42
|
-
"kind": "array",
|
|
43
|
-
"length": 3,
|
|
6
|
+
"name": "set_is_valid_storage",
|
|
7
|
+
"function_type": "Open",
|
|
8
|
+
"is_internal": true,
|
|
9
|
+
"abi": {
|
|
10
|
+
"parameters": [
|
|
11
|
+
{
|
|
12
|
+
"name": "inputs",
|
|
44
13
|
"type": {
|
|
45
|
-
"kind": "
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
],
|
|
51
|
-
"returnTypes": [
|
|
52
|
-
{
|
|
53
|
-
"kind": "array",
|
|
54
|
-
"length": 4,
|
|
55
|
-
"type": {
|
|
56
|
-
"kind": "field"
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
],
|
|
60
|
-
"bytecode": "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",
|
|
61
|
-
"verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f"
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
"name": "constructor",
|
|
65
|
-
"functionType": "secret",
|
|
66
|
-
"isInternal": false,
|
|
67
|
-
"parameters": [
|
|
68
|
-
{
|
|
69
|
-
"name": "signing_pub_key_x",
|
|
70
|
-
"type": {
|
|
71
|
-
"kind": "field"
|
|
72
|
-
},
|
|
73
|
-
"visibility": "public"
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
"name": "signing_pub_key_y",
|
|
77
|
-
"type": {
|
|
78
|
-
"kind": "field"
|
|
79
|
-
},
|
|
80
|
-
"visibility": "public"
|
|
81
|
-
}
|
|
82
|
-
],
|
|
83
|
-
"returnTypes": [],
|
|
84
|
-
"bytecode": "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",
|
|
85
|
-
"verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f"
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
"name": "entrypoint",
|
|
89
|
-
"functionType": "secret",
|
|
90
|
-
"isInternal": false,
|
|
91
|
-
"parameters": [
|
|
92
|
-
{
|
|
93
|
-
"name": "payload",
|
|
94
|
-
"type": {
|
|
95
|
-
"kind": "struct",
|
|
96
|
-
"path": "authwit::entrypoint::EntrypointPayload",
|
|
97
|
-
"fields": [
|
|
98
|
-
{
|
|
99
|
-
"name": "function_calls",
|
|
100
|
-
"type": {
|
|
101
|
-
"kind": "array",
|
|
102
|
-
"length": 4,
|
|
14
|
+
"kind": "struct",
|
|
15
|
+
"path": "authwit::aztec::abi::PublicContextInputs",
|
|
16
|
+
"fields": [
|
|
17
|
+
{
|
|
18
|
+
"name": "call_context",
|
|
103
19
|
"type": {
|
|
104
20
|
"kind": "struct",
|
|
105
|
-
"path": "authwit::
|
|
21
|
+
"path": "authwit::aztec::protocol_types::abis::call_context::CallContext",
|
|
106
22
|
"fields": [
|
|
107
23
|
{
|
|
108
|
-
"name": "
|
|
24
|
+
"name": "msg_sender",
|
|
109
25
|
"type": {
|
|
110
|
-
"kind": "
|
|
26
|
+
"kind": "struct",
|
|
27
|
+
"path": "authwit::aztec::protocol_types::address::AztecAddress",
|
|
28
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
111
29
|
}
|
|
112
30
|
},
|
|
113
31
|
{
|
|
114
|
-
"name": "
|
|
32
|
+
"name": "storage_contract_address",
|
|
115
33
|
"type": {
|
|
116
34
|
"kind": "struct",
|
|
117
|
-
"path": "authwit::aztec::protocol_types::
|
|
118
|
-
"fields": [
|
|
119
|
-
{
|
|
120
|
-
"name": "inner",
|
|
121
|
-
"type": {
|
|
122
|
-
"kind": "integer",
|
|
123
|
-
"sign": "unsigned",
|
|
124
|
-
"width": 32
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
]
|
|
35
|
+
"path": "authwit::aztec::protocol_types::address::AztecAddress",
|
|
36
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
128
37
|
}
|
|
129
38
|
},
|
|
130
39
|
{
|
|
131
|
-
"name": "
|
|
40
|
+
"name": "portal_contract_address",
|
|
132
41
|
"type": {
|
|
133
42
|
"kind": "struct",
|
|
134
|
-
"path": "authwit::aztec::protocol_types::address::
|
|
135
|
-
"fields": [
|
|
136
|
-
{
|
|
137
|
-
"name": "inner",
|
|
138
|
-
"type": {
|
|
139
|
-
"kind": "field"
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
]
|
|
43
|
+
"path": "authwit::aztec::protocol_types::address::EthAddress",
|
|
44
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
143
45
|
}
|
|
144
46
|
},
|
|
145
47
|
{
|
|
146
|
-
"name": "
|
|
48
|
+
"name": "function_selector",
|
|
147
49
|
"type": {
|
|
148
|
-
"kind": "
|
|
50
|
+
"kind": "struct",
|
|
51
|
+
"path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector",
|
|
52
|
+
"fields": [
|
|
53
|
+
{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
|
|
54
|
+
]
|
|
149
55
|
}
|
|
56
|
+
},
|
|
57
|
+
{ "name": "is_delegate_call", "type": { "kind": "boolean" } },
|
|
58
|
+
{ "name": "is_static_call", "type": { "kind": "boolean" } },
|
|
59
|
+
{ "name": "is_contract_deployment", "type": { "kind": "boolean" } },
|
|
60
|
+
{
|
|
61
|
+
"name": "start_side_effect_counter",
|
|
62
|
+
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
150
63
|
}
|
|
151
64
|
]
|
|
152
65
|
}
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
"bytecode": "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",
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
}
|
|
182
|
-
],
|
|
183
|
-
"returnTypes": [],
|
|
184
|
-
"bytecode": "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",
|
|
185
|
-
"verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f"
|
|
186
|
-
},
|
|
187
|
-
{
|
|
188
|
-
"name": "is_valid_public",
|
|
189
|
-
"functionType": "open",
|
|
190
|
-
"isInternal": false,
|
|
191
|
-
"parameters": [
|
|
192
|
-
{
|
|
193
|
-
"name": "message_hash",
|
|
194
|
-
"type": {
|
|
195
|
-
"kind": "field"
|
|
196
|
-
},
|
|
197
|
-
"visibility": "private"
|
|
198
|
-
}
|
|
199
|
-
],
|
|
200
|
-
"returnTypes": [
|
|
201
|
-
{
|
|
202
|
-
"kind": "struct",
|
|
203
|
-
"path": "authwit::aztec::protocol_types::abis::public_circuit_public_inputs::PublicCircuitPublicInputs",
|
|
204
|
-
"fields": [
|
|
205
|
-
{
|
|
206
|
-
"name": "call_context",
|
|
207
|
-
"type": {
|
|
208
|
-
"kind": "struct",
|
|
209
|
-
"path": "authwit::aztec::protocol_types::abis::call_context::CallContext",
|
|
210
|
-
"fields": [
|
|
211
|
-
{
|
|
212
|
-
"name": "msg_sender",
|
|
213
|
-
"type": {
|
|
214
|
-
"kind": "struct",
|
|
215
|
-
"path": "authwit::aztec::protocol_types::address::AztecAddress",
|
|
216
|
-
"fields": [
|
|
217
|
-
{
|
|
218
|
-
"name": "inner",
|
|
219
|
-
"type": {
|
|
220
|
-
"kind": "field"
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
]
|
|
224
|
-
}
|
|
225
|
-
},
|
|
226
|
-
{
|
|
227
|
-
"name": "storage_contract_address",
|
|
228
|
-
"type": {
|
|
229
|
-
"kind": "struct",
|
|
230
|
-
"path": "authwit::aztec::protocol_types::address::AztecAddress",
|
|
231
|
-
"fields": [
|
|
232
|
-
{
|
|
233
|
-
"name": "inner",
|
|
234
|
-
"type": {
|
|
235
|
-
"kind": "field"
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
]
|
|
239
|
-
}
|
|
240
|
-
},
|
|
241
|
-
{
|
|
242
|
-
"name": "portal_contract_address",
|
|
243
|
-
"type": {
|
|
244
|
-
"kind": "struct",
|
|
245
|
-
"path": "authwit::aztec::protocol_types::address::EthAddress",
|
|
246
|
-
"fields": [
|
|
247
|
-
{
|
|
248
|
-
"name": "inner",
|
|
249
|
-
"type": {
|
|
250
|
-
"kind": "field"
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
]
|
|
254
|
-
}
|
|
255
|
-
},
|
|
256
|
-
{
|
|
257
|
-
"name": "function_selector",
|
|
258
|
-
"type": {
|
|
259
|
-
"kind": "struct",
|
|
260
|
-
"path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector",
|
|
261
|
-
"fields": [
|
|
262
|
-
{
|
|
263
|
-
"name": "inner",
|
|
264
|
-
"type": {
|
|
265
|
-
"kind": "integer",
|
|
266
|
-
"sign": "unsigned",
|
|
267
|
-
"width": 32
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
]
|
|
271
|
-
}
|
|
272
|
-
},
|
|
273
|
-
{
|
|
274
|
-
"name": "is_delegate_call",
|
|
275
|
-
"type": {
|
|
276
|
-
"kind": "boolean"
|
|
277
|
-
}
|
|
278
|
-
},
|
|
279
|
-
{
|
|
280
|
-
"name": "is_static_call",
|
|
281
|
-
"type": {
|
|
282
|
-
"kind": "boolean"
|
|
283
|
-
}
|
|
284
|
-
},
|
|
285
|
-
{
|
|
286
|
-
"name": "is_contract_deployment",
|
|
287
|
-
"type": {
|
|
288
|
-
"kind": "boolean"
|
|
289
|
-
}
|
|
290
|
-
},
|
|
291
|
-
{
|
|
292
|
-
"name": "start_side_effect_counter",
|
|
293
|
-
"type": {
|
|
294
|
-
"kind": "integer",
|
|
295
|
-
"sign": "unsigned",
|
|
296
|
-
"width": 32
|
|
297
|
-
}
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"name": "block_header",
|
|
69
|
+
"type": {
|
|
70
|
+
"kind": "struct",
|
|
71
|
+
"path": "authwit::aztec::protocol_types::abis::block_header::BlockHeader",
|
|
72
|
+
"fields": [
|
|
73
|
+
{ "name": "note_hash_tree_root", "type": { "kind": "field" } },
|
|
74
|
+
{ "name": "nullifier_tree_root", "type": { "kind": "field" } },
|
|
75
|
+
{ "name": "contract_tree_root", "type": { "kind": "field" } },
|
|
76
|
+
{ "name": "l1_to_l2_message_tree_root", "type": { "kind": "field" } },
|
|
77
|
+
{ "name": "archive_root", "type": { "kind": "field" } },
|
|
78
|
+
{ "name": "public_data_tree_root", "type": { "kind": "field" } },
|
|
79
|
+
{ "name": "global_variables_hash", "type": { "kind": "field" } }
|
|
80
|
+
]
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"name": "public_global_variables",
|
|
85
|
+
"type": {
|
|
86
|
+
"kind": "struct",
|
|
87
|
+
"path": "authwit::aztec::abi::PublicGlobalVariables",
|
|
88
|
+
"fields": [
|
|
89
|
+
{ "name": "chain_id", "type": { "kind": "field" } },
|
|
90
|
+
{ "name": "version", "type": { "kind": "field" } },
|
|
91
|
+
{ "name": "block_number", "type": { "kind": "field" } },
|
|
92
|
+
{ "name": "timestamp", "type": { "kind": "field" } }
|
|
93
|
+
]
|
|
298
94
|
}
|
|
299
|
-
]
|
|
300
|
-
}
|
|
301
|
-
},
|
|
302
|
-
{
|
|
303
|
-
"name": "args_hash",
|
|
304
|
-
"type": {
|
|
305
|
-
"kind": "field"
|
|
306
|
-
}
|
|
307
|
-
},
|
|
308
|
-
{
|
|
309
|
-
"name": "return_values",
|
|
310
|
-
"type": {
|
|
311
|
-
"kind": "array",
|
|
312
|
-
"length": 4,
|
|
313
|
-
"type": {
|
|
314
|
-
"kind": "field"
|
|
315
95
|
}
|
|
316
|
-
|
|
96
|
+
]
|
|
317
97
|
},
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
98
|
+
"visibility": "private"
|
|
99
|
+
},
|
|
100
|
+
{ "name": "message_hash", "type": { "kind": "field" }, "visibility": "private" },
|
|
101
|
+
{ "name": "value", "type": { "kind": "boolean" }, "visibility": "private" }
|
|
102
|
+
],
|
|
103
|
+
"param_witnesses": {
|
|
104
|
+
"inputs": [{ "start": 0, "end": 19 }],
|
|
105
|
+
"message_hash": [{ "start": 19, "end": 20 }],
|
|
106
|
+
"value": [{ "start": 20, "end": 21 }]
|
|
107
|
+
},
|
|
108
|
+
"return_type": {
|
|
109
|
+
"abi_type": {
|
|
110
|
+
"kind": "struct",
|
|
111
|
+
"path": "authwit::aztec::protocol_types::abis::public_circuit_public_inputs::PublicCircuitPublicInputs",
|
|
112
|
+
"fields": [
|
|
113
|
+
{
|
|
114
|
+
"name": "call_context",
|
|
323
115
|
"type": {
|
|
324
116
|
"kind": "struct",
|
|
325
|
-
"path": "authwit::aztec::protocol_types::
|
|
117
|
+
"path": "authwit::aztec::protocol_types::abis::call_context::CallContext",
|
|
326
118
|
"fields": [
|
|
327
119
|
{
|
|
328
|
-
"name": "
|
|
120
|
+
"name": "msg_sender",
|
|
329
121
|
"type": {
|
|
330
|
-
"kind": "
|
|
122
|
+
"kind": "struct",
|
|
123
|
+
"path": "authwit::aztec::protocol_types::address::AztecAddress",
|
|
124
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
331
125
|
}
|
|
332
126
|
},
|
|
333
127
|
{
|
|
334
|
-
"name": "
|
|
128
|
+
"name": "storage_contract_address",
|
|
335
129
|
"type": {
|
|
336
|
-
"kind": "
|
|
130
|
+
"kind": "struct",
|
|
131
|
+
"path": "authwit::aztec::protocol_types::address::AztecAddress",
|
|
132
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
337
133
|
}
|
|
338
134
|
},
|
|
339
135
|
{
|
|
340
|
-
"name": "
|
|
136
|
+
"name": "portal_contract_address",
|
|
341
137
|
"type": {
|
|
342
|
-
"kind": "
|
|
138
|
+
"kind": "struct",
|
|
139
|
+
"path": "authwit::aztec::protocol_types::address::EthAddress",
|
|
140
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
343
141
|
}
|
|
344
|
-
}
|
|
345
|
-
]
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
},
|
|
349
|
-
{
|
|
350
|
-
"name": "contract_storage_reads",
|
|
351
|
-
"type": {
|
|
352
|
-
"kind": "array",
|
|
353
|
-
"length": 16,
|
|
354
|
-
"type": {
|
|
355
|
-
"kind": "struct",
|
|
356
|
-
"path": "authwit::aztec::protocol_types::contrakt::storage_read::StorageRead",
|
|
357
|
-
"fields": [
|
|
142
|
+
},
|
|
358
143
|
{
|
|
359
|
-
"name": "
|
|
144
|
+
"name": "function_selector",
|
|
360
145
|
"type": {
|
|
361
|
-
"kind": "
|
|
146
|
+
"kind": "struct",
|
|
147
|
+
"path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector",
|
|
148
|
+
"fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }]
|
|
362
149
|
}
|
|
363
150
|
},
|
|
151
|
+
{ "name": "is_delegate_call", "type": { "kind": "boolean" } },
|
|
152
|
+
{ "name": "is_static_call", "type": { "kind": "boolean" } },
|
|
153
|
+
{ "name": "is_contract_deployment", "type": { "kind": "boolean" } },
|
|
364
154
|
{
|
|
365
|
-
"name": "
|
|
366
|
-
"type": {
|
|
367
|
-
"kind": "field"
|
|
368
|
-
}
|
|
155
|
+
"name": "start_side_effect_counter",
|
|
156
|
+
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
369
157
|
}
|
|
370
158
|
]
|
|
371
159
|
}
|
|
372
|
-
}
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
"kind": "array",
|
|
378
|
-
"length": 4,
|
|
160
|
+
},
|
|
161
|
+
{ "name": "args_hash", "type": { "kind": "field" } },
|
|
162
|
+
{ "name": "return_values", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } },
|
|
163
|
+
{
|
|
164
|
+
"name": "contract_storage_update_requests",
|
|
379
165
|
"type": {
|
|
380
|
-
"kind": "
|
|
166
|
+
"kind": "array",
|
|
167
|
+
"length": 16,
|
|
168
|
+
"type": {
|
|
169
|
+
"kind": "struct",
|
|
170
|
+
"path": "authwit::aztec::protocol_types::contrakt::storage_update_request::StorageUpdateRequest",
|
|
171
|
+
"fields": [
|
|
172
|
+
{ "name": "storage_slot", "type": { "kind": "field" } },
|
|
173
|
+
{ "name": "old_value", "type": { "kind": "field" } },
|
|
174
|
+
{ "name": "new_value", "type": { "kind": "field" } }
|
|
175
|
+
]
|
|
176
|
+
}
|
|
381
177
|
}
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
"name": "new_commitments",
|
|
386
|
-
"type": {
|
|
387
|
-
"kind": "array",
|
|
388
|
-
"length": 16,
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"name": "contract_storage_reads",
|
|
389
181
|
"type": {
|
|
390
|
-
"kind": "
|
|
391
|
-
"
|
|
392
|
-
"
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
}
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
"name": "counter",
|
|
401
|
-
"type": {
|
|
402
|
-
"kind": "integer",
|
|
403
|
-
"sign": "unsigned",
|
|
404
|
-
"width": 32
|
|
405
|
-
}
|
|
406
|
-
}
|
|
407
|
-
]
|
|
182
|
+
"kind": "array",
|
|
183
|
+
"length": 16,
|
|
184
|
+
"type": {
|
|
185
|
+
"kind": "struct",
|
|
186
|
+
"path": "authwit::aztec::protocol_types::contrakt::storage_read::StorageRead",
|
|
187
|
+
"fields": [
|
|
188
|
+
{ "name": "storage_slot", "type": { "kind": "field" } },
|
|
189
|
+
{ "name": "current_value", "type": { "kind": "field" } }
|
|
190
|
+
]
|
|
191
|
+
}
|
|
408
192
|
}
|
|
409
|
-
}
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
"
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
"name": "public_call_stack_hashes",
|
|
196
|
+
"type": { "kind": "array", "length": 4, "type": { "kind": "field" } }
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
"name": "new_commitments",
|
|
200
|
+
"type": {
|
|
201
|
+
"kind": "array",
|
|
202
|
+
"length": 16,
|
|
203
|
+
"type": {
|
|
204
|
+
"kind": "struct",
|
|
205
|
+
"path": "authwit::aztec::protocol_types::abis::side_effect::SideEffect",
|
|
206
|
+
"fields": [
|
|
207
|
+
{ "name": "value", "type": { "kind": "field" } },
|
|
208
|
+
{ "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
|
|
209
|
+
]
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
"name": "new_nullifiers",
|
|
215
|
+
"type": {
|
|
216
|
+
"kind": "array",
|
|
217
|
+
"length": 16,
|
|
218
|
+
"type": {
|
|
219
|
+
"kind": "struct",
|
|
220
|
+
"path": "authwit::aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash",
|
|
221
|
+
"fields": [
|
|
222
|
+
{ "name": "value", "type": { "kind": "field" } },
|
|
223
|
+
{ "name": "note_hash", "type": { "kind": "field" } },
|
|
224
|
+
{ "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
|
|
225
|
+
]
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
},
|
|
229
|
+
{ "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
|
|
230
|
+
{
|
|
231
|
+
"name": "unencrypted_logs_hash",
|
|
232
|
+
"type": { "kind": "array", "length": 2, "type": { "kind": "field" } }
|
|
233
|
+
},
|
|
234
|
+
{ "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } },
|
|
235
|
+
{
|
|
236
|
+
"name": "block_header",
|
|
416
237
|
"type": {
|
|
417
238
|
"kind": "struct",
|
|
418
|
-
"path": "authwit::aztec::protocol_types::abis::
|
|
239
|
+
"path": "authwit::aztec::protocol_types::abis::block_header::BlockHeader",
|
|
419
240
|
"fields": [
|
|
420
|
-
{
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
},
|
|
426
|
-
{
|
|
427
|
-
"name": "note_hash",
|
|
428
|
-
"type": {
|
|
429
|
-
"kind": "field"
|
|
430
|
-
}
|
|
431
|
-
},
|
|
432
|
-
{
|
|
433
|
-
"name": "counter",
|
|
434
|
-
"type": {
|
|
435
|
-
"kind": "integer",
|
|
436
|
-
"sign": "unsigned",
|
|
437
|
-
"width": 32
|
|
438
|
-
}
|
|
439
|
-
}
|
|
241
|
+
{ "name": "note_hash_tree_root", "type": { "kind": "field" } },
|
|
242
|
+
{ "name": "nullifier_tree_root", "type": { "kind": "field" } },
|
|
243
|
+
{ "name": "contract_tree_root", "type": { "kind": "field" } },
|
|
244
|
+
{ "name": "l1_to_l2_message_tree_root", "type": { "kind": "field" } },
|
|
245
|
+
{ "name": "archive_root", "type": { "kind": "field" } },
|
|
246
|
+
{ "name": "public_data_tree_root", "type": { "kind": "field" } },
|
|
247
|
+
{ "name": "global_variables_hash", "type": { "kind": "field" } }
|
|
440
248
|
]
|
|
441
249
|
}
|
|
442
|
-
}
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
"name": "new_l2_to_l1_msgs",
|
|
446
|
-
"type": {
|
|
447
|
-
"kind": "array",
|
|
448
|
-
"length": 2,
|
|
449
|
-
"type": {
|
|
450
|
-
"kind": "field"
|
|
451
|
-
}
|
|
452
|
-
}
|
|
453
|
-
},
|
|
454
|
-
{
|
|
455
|
-
"name": "unencrypted_logs_hash",
|
|
456
|
-
"type": {
|
|
457
|
-
"kind": "array",
|
|
458
|
-
"length": 2,
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
"name": "prover_address",
|
|
459
253
|
"type": {
|
|
460
|
-
"kind": "
|
|
254
|
+
"kind": "struct",
|
|
255
|
+
"path": "authwit::aztec::protocol_types::address::AztecAddress",
|
|
256
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
461
257
|
}
|
|
462
258
|
}
|
|
463
|
-
|
|
464
|
-
{
|
|
465
|
-
"name": "unencrypted_log_preimages_length",
|
|
466
|
-
"type": {
|
|
467
|
-
"kind": "field"
|
|
468
|
-
}
|
|
469
|
-
},
|
|
470
|
-
{
|
|
471
|
-
"name": "block_header",
|
|
472
|
-
"type": {
|
|
473
|
-
"kind": "struct",
|
|
474
|
-
"path": "authwit::aztec::protocol_types::abis::block_header::BlockHeader",
|
|
475
|
-
"fields": [
|
|
476
|
-
{
|
|
477
|
-
"name": "note_hash_tree_root",
|
|
478
|
-
"type": {
|
|
479
|
-
"kind": "field"
|
|
480
|
-
}
|
|
481
|
-
},
|
|
482
|
-
{
|
|
483
|
-
"name": "nullifier_tree_root",
|
|
484
|
-
"type": {
|
|
485
|
-
"kind": "field"
|
|
486
|
-
}
|
|
487
|
-
},
|
|
488
|
-
{
|
|
489
|
-
"name": "contract_tree_root",
|
|
490
|
-
"type": {
|
|
491
|
-
"kind": "field"
|
|
492
|
-
}
|
|
493
|
-
},
|
|
494
|
-
{
|
|
495
|
-
"name": "l1_to_l2_message_tree_root",
|
|
496
|
-
"type": {
|
|
497
|
-
"kind": "field"
|
|
498
|
-
}
|
|
499
|
-
},
|
|
500
|
-
{
|
|
501
|
-
"name": "archive_root",
|
|
502
|
-
"type": {
|
|
503
|
-
"kind": "field"
|
|
504
|
-
}
|
|
505
|
-
},
|
|
506
|
-
{
|
|
507
|
-
"name": "public_data_tree_root",
|
|
508
|
-
"type": {
|
|
509
|
-
"kind": "field"
|
|
510
|
-
}
|
|
511
|
-
},
|
|
512
|
-
{
|
|
513
|
-
"name": "global_variables_hash",
|
|
514
|
-
"type": {
|
|
515
|
-
"kind": "field"
|
|
516
|
-
}
|
|
517
|
-
}
|
|
518
|
-
]
|
|
519
|
-
}
|
|
520
|
-
},
|
|
521
|
-
{
|
|
522
|
-
"name": "prover_address",
|
|
523
|
-
"type": {
|
|
524
|
-
"kind": "struct",
|
|
525
|
-
"path": "authwit::aztec::protocol_types::address::AztecAddress",
|
|
526
|
-
"fields": [
|
|
527
|
-
{
|
|
528
|
-
"name": "inner",
|
|
529
|
-
"type": {
|
|
530
|
-
"kind": "field"
|
|
531
|
-
}
|
|
532
|
-
}
|
|
533
|
-
]
|
|
534
|
-
}
|
|
535
|
-
}
|
|
536
|
-
]
|
|
537
|
-
}
|
|
538
|
-
],
|
|
539
|
-
"bytecode": "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",
|
|
540
|
-
"verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f"
|
|
541
|
-
},
|
|
542
|
-
{
|
|
543
|
-
"name": "set_is_valid_storage",
|
|
544
|
-
"functionType": "open",
|
|
545
|
-
"isInternal": true,
|
|
546
|
-
"parameters": [
|
|
547
|
-
{
|
|
548
|
-
"name": "message_hash",
|
|
549
|
-
"type": {
|
|
550
|
-
"kind": "field"
|
|
259
|
+
]
|
|
551
260
|
},
|
|
552
|
-
"visibility": "
|
|
261
|
+
"visibility": "public"
|
|
553
262
|
},
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
"path": "authwit::aztec::protocol_types::abis::public_circuit_public_inputs::PublicCircuitPublicInputs",
|
|
566
|
-
"fields": [
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
263
|
+
"return_witnesses": [
|
|
264
|
+
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
|
|
265
|
+
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
|
|
266
|
+
75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
|
|
267
|
+
102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
|
|
268
|
+
124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
|
|
269
|
+
146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
|
|
270
|
+
168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
|
|
271
|
+
190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210
|
|
272
|
+
]
|
|
273
|
+
},
|
|
274
|
+
"bytecode": "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",
|
|
275
|
+
"debug_symbols": "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X+J0f4nT/SVO95c43V/idH+J0/0lTveXuNxf4nJ/icv9JS73l7jcX+Jyf4nL/SUu95e43F/icn+J2/0lbveXuN1f4nZ/idv9JW73l7jdX+J2f4nb/SVu95d43F/icX+Jx/0lHveXeNxf4nF/icf9JR73l3jcX+Jxf4mv+0t83V/i6/4SX/eX+Lq/xNf9Jb7uL/F1f4mv+0t8zV/i9Zi/xOsxf4nXY/4Sr8f8JV6P+Uu8HvOXeD3mL/F6zF/i9Zi/xOtxf4mX+0u83F/i5f4SL/eXeLm/xMv9JV7uL/Fyf4mX+0u83F/i7f4Sb/eXeLu/xNv9Jd7uL/F2f4m3+0u83V9i98bWcm9sLffG1nJvbC33xtZyb2wt98bWcm9sLffG1nJvbC33xtZyb2wt98bWcm9sLffG1nJvbC33xtZyb2wt98bWcm9sLffG1nJvbC33xtZyb2wt98bWcm9sLffG1nJvbC33xtZyb2wt98bWcm9sLffG1nJvbC33xtZyb2wt98bWcm9sLffG1nJvbC33xtZyb2wt98bWcm9sLffG1nJvbC33xtZyb2wt98bWcm9sLffG1nJvbC33xtZyb2wt98bWcm9sLffG1nJvbC33xtZyb2wt98bWcm9sLffG1nJvbC33xtZyb2wt98bWcm9sLffG1nJvbC33xtZyb2xt98bWdm9sbffG1nZvbO3H/CXe7o2t7d7Y2u6Nre3e2Nruja3t3tja7o2t7d7Y2u6Nre3e2Nruja3t3tja7o2t7d7Y2u6Nre3e2Nruja3t3tja7o2t7d7Y2u6Nre3e2Nruja3t3tja7o2t7d7Y2u6Nre3e2Nruja3t3tja7o2t7d7Y2u6Nre3e2Nruja3t3tja7o2t7d7Y2u6Nre3e2Nruja3t3tja7o2t7d7Y2u6Nre3e2Nruja3t3tja7o2t7d7Y2u6Nre3e2Nruja3t3tja7o2t7d7Y2u6Nre3e2Nruja3t3tja7o2t7d7Y2u6Nre3e2Nruja3t3tja7o2t7d7Y2u6Nre3e2Nruja3t3tja7o2t7d7Y2u6Nre3e2Nruja3t3tja7o2t7d7Y2u6Nre3e2Nruja3t3tja7o2t7d7Y2u6Nre3e2Nruja3t3tja7o2t7d7Y2u6Nre3e2Nruja3j3tg67o2t497YOu6NrfOYv8THvbF13Btbx72xddwbW8e9sXXcG1vH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"
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
"name": "is_valid",
|
|
279
|
+
"function_type": "Secret",
|
|
280
|
+
"is_internal": false,
|
|
281
|
+
"abi": {
|
|
282
|
+
"parameters": [
|
|
283
|
+
{
|
|
284
|
+
"name": "inputs",
|
|
285
|
+
"type": {
|
|
286
|
+
"kind": "struct",
|
|
287
|
+
"path": "authwit::aztec::abi::PrivateContextInputs",
|
|
288
|
+
"fields": [
|
|
289
|
+
{
|
|
290
|
+
"name": "call_context",
|
|
291
|
+
"type": {
|
|
292
|
+
"kind": "struct",
|
|
293
|
+
"path": "authwit::aztec::protocol_types::abis::call_context::CallContext",
|
|
294
|
+
"fields": [
|
|
295
|
+
{
|
|
296
|
+
"name": "msg_sender",
|
|
297
|
+
"type": {
|
|
298
|
+
"kind": "struct",
|
|
299
|
+
"path": "authwit::aztec::protocol_types::address::AztecAddress",
|
|
300
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
584
301
|
}
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
"path": "authwit::aztec::protocol_types::address::AztecAddress",
|
|
593
|
-
"fields": [
|
|
594
|
-
{
|
|
595
|
-
"name": "inner",
|
|
596
|
-
"type": {
|
|
597
|
-
"kind": "field"
|
|
598
|
-
}
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
"name": "storage_contract_address",
|
|
305
|
+
"type": {
|
|
306
|
+
"kind": "struct",
|
|
307
|
+
"path": "authwit::aztec::protocol_types::address::AztecAddress",
|
|
308
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
599
309
|
}
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
"path": "authwit::aztec::protocol_types::address::EthAddress",
|
|
608
|
-
"fields": [
|
|
609
|
-
{
|
|
610
|
-
"name": "inner",
|
|
611
|
-
"type": {
|
|
612
|
-
"kind": "field"
|
|
613
|
-
}
|
|
310
|
+
},
|
|
311
|
+
{
|
|
312
|
+
"name": "portal_contract_address",
|
|
313
|
+
"type": {
|
|
314
|
+
"kind": "struct",
|
|
315
|
+
"path": "authwit::aztec::protocol_types::address::EthAddress",
|
|
316
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
614
317
|
}
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
{
|
|
625
|
-
"name": "inner",
|
|
626
|
-
"type": {
|
|
627
|
-
"kind": "integer",
|
|
628
|
-
"sign": "unsigned",
|
|
629
|
-
"width": 32
|
|
630
|
-
}
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
"name": "function_selector",
|
|
321
|
+
"type": {
|
|
322
|
+
"kind": "struct",
|
|
323
|
+
"path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector",
|
|
324
|
+
"fields": [
|
|
325
|
+
{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
|
|
326
|
+
]
|
|
631
327
|
}
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
"
|
|
649
|
-
|
|
650
|
-
"kind": "
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
328
|
+
},
|
|
329
|
+
{ "name": "is_delegate_call", "type": { "kind": "boolean" } },
|
|
330
|
+
{ "name": "is_static_call", "type": { "kind": "boolean" } },
|
|
331
|
+
{ "name": "is_contract_deployment", "type": { "kind": "boolean" } },
|
|
332
|
+
{
|
|
333
|
+
"name": "start_side_effect_counter",
|
|
334
|
+
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
335
|
+
}
|
|
336
|
+
]
|
|
337
|
+
}
|
|
338
|
+
},
|
|
339
|
+
{
|
|
340
|
+
"name": "block_header",
|
|
341
|
+
"type": {
|
|
342
|
+
"kind": "struct",
|
|
343
|
+
"path": "authwit::aztec::protocol_types::abis::block_header::BlockHeader",
|
|
344
|
+
"fields": [
|
|
345
|
+
{ "name": "note_hash_tree_root", "type": { "kind": "field" } },
|
|
346
|
+
{ "name": "nullifier_tree_root", "type": { "kind": "field" } },
|
|
347
|
+
{ "name": "contract_tree_root", "type": { "kind": "field" } },
|
|
348
|
+
{ "name": "l1_to_l2_message_tree_root", "type": { "kind": "field" } },
|
|
349
|
+
{ "name": "archive_root", "type": { "kind": "field" } },
|
|
350
|
+
{ "name": "public_data_tree_root", "type": { "kind": "field" } },
|
|
351
|
+
{ "name": "global_variables_hash", "type": { "kind": "field" } }
|
|
352
|
+
]
|
|
353
|
+
}
|
|
354
|
+
},
|
|
355
|
+
{
|
|
356
|
+
"name": "contract_deployment_data",
|
|
357
|
+
"type": {
|
|
358
|
+
"kind": "struct",
|
|
359
|
+
"path": "authwit::aztec::protocol_types::contrakt::deployment_data::ContractDeploymentData",
|
|
360
|
+
"fields": [
|
|
361
|
+
{
|
|
362
|
+
"name": "deployer_public_key",
|
|
363
|
+
"type": {
|
|
364
|
+
"kind": "struct",
|
|
365
|
+
"path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint",
|
|
366
|
+
"fields": [
|
|
367
|
+
{ "name": "x", "type": { "kind": "field" } },
|
|
368
|
+
{ "name": "y", "type": { "kind": "field" } }
|
|
369
|
+
]
|
|
370
|
+
}
|
|
371
|
+
},
|
|
372
|
+
{ "name": "constructor_vk_hash", "type": { "kind": "field" } },
|
|
373
|
+
{ "name": "function_tree_root", "type": { "kind": "field" } },
|
|
374
|
+
{ "name": "contract_address_salt", "type": { "kind": "field" } },
|
|
375
|
+
{
|
|
376
|
+
"name": "portal_contract_address",
|
|
377
|
+
"type": {
|
|
378
|
+
"kind": "struct",
|
|
379
|
+
"path": "authwit::aztec::protocol_types::address::EthAddress",
|
|
380
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
]
|
|
384
|
+
}
|
|
385
|
+
},
|
|
386
|
+
{
|
|
387
|
+
"name": "private_global_variables",
|
|
388
|
+
"type": {
|
|
389
|
+
"kind": "struct",
|
|
390
|
+
"path": "authwit::aztec::abi::PrivateGlobalVariables",
|
|
391
|
+
"fields": [
|
|
392
|
+
{ "name": "chain_id", "type": { "kind": "field" } },
|
|
393
|
+
{ "name": "version", "type": { "kind": "field" } }
|
|
394
|
+
]
|
|
660
395
|
}
|
|
661
|
-
]
|
|
662
|
-
}
|
|
663
|
-
},
|
|
664
|
-
{
|
|
665
|
-
"name": "args_hash",
|
|
666
|
-
"type": {
|
|
667
|
-
"kind": "field"
|
|
668
|
-
}
|
|
669
|
-
},
|
|
670
|
-
{
|
|
671
|
-
"name": "return_values",
|
|
672
|
-
"type": {
|
|
673
|
-
"kind": "array",
|
|
674
|
-
"length": 4,
|
|
675
|
-
"type": {
|
|
676
|
-
"kind": "field"
|
|
677
396
|
}
|
|
678
|
-
|
|
397
|
+
]
|
|
679
398
|
},
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
399
|
+
"visibility": "private"
|
|
400
|
+
},
|
|
401
|
+
{ "name": "message_hash", "type": { "kind": "field" }, "visibility": "private" }
|
|
402
|
+
],
|
|
403
|
+
"param_witnesses": { "inputs": [{ "start": 0, "end": 23 }], "message_hash": [{ "start": 23, "end": 24 }] },
|
|
404
|
+
"return_type": {
|
|
405
|
+
"abi_type": {
|
|
406
|
+
"kind": "struct",
|
|
407
|
+
"path": "authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs",
|
|
408
|
+
"fields": [
|
|
409
|
+
{
|
|
410
|
+
"name": "call_context",
|
|
685
411
|
"type": {
|
|
686
412
|
"kind": "struct",
|
|
687
|
-
"path": "authwit::aztec::protocol_types::
|
|
413
|
+
"path": "authwit::aztec::protocol_types::abis::call_context::CallContext",
|
|
688
414
|
"fields": [
|
|
689
415
|
{
|
|
690
|
-
"name": "
|
|
416
|
+
"name": "msg_sender",
|
|
691
417
|
"type": {
|
|
692
|
-
"kind": "
|
|
418
|
+
"kind": "struct",
|
|
419
|
+
"path": "authwit::aztec::protocol_types::address::AztecAddress",
|
|
420
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
693
421
|
}
|
|
694
422
|
},
|
|
695
423
|
{
|
|
696
|
-
"name": "
|
|
424
|
+
"name": "storage_contract_address",
|
|
697
425
|
"type": {
|
|
698
|
-
"kind": "
|
|
426
|
+
"kind": "struct",
|
|
427
|
+
"path": "authwit::aztec::protocol_types::address::AztecAddress",
|
|
428
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
699
429
|
}
|
|
700
430
|
},
|
|
701
431
|
{
|
|
702
|
-
"name": "
|
|
432
|
+
"name": "portal_contract_address",
|
|
703
433
|
"type": {
|
|
704
|
-
"kind": "
|
|
434
|
+
"kind": "struct",
|
|
435
|
+
"path": "authwit::aztec::protocol_types::address::EthAddress",
|
|
436
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
705
437
|
}
|
|
706
|
-
}
|
|
707
|
-
]
|
|
708
|
-
}
|
|
709
|
-
}
|
|
710
|
-
},
|
|
711
|
-
{
|
|
712
|
-
"name": "contract_storage_reads",
|
|
713
|
-
"type": {
|
|
714
|
-
"kind": "array",
|
|
715
|
-
"length": 16,
|
|
716
|
-
"type": {
|
|
717
|
-
"kind": "struct",
|
|
718
|
-
"path": "authwit::aztec::protocol_types::contrakt::storage_read::StorageRead",
|
|
719
|
-
"fields": [
|
|
438
|
+
},
|
|
720
439
|
{
|
|
721
|
-
"name": "
|
|
440
|
+
"name": "function_selector",
|
|
722
441
|
"type": {
|
|
723
|
-
"kind": "
|
|
442
|
+
"kind": "struct",
|
|
443
|
+
"path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector",
|
|
444
|
+
"fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }]
|
|
724
445
|
}
|
|
725
446
|
},
|
|
447
|
+
{ "name": "is_delegate_call", "type": { "kind": "boolean" } },
|
|
448
|
+
{ "name": "is_static_call", "type": { "kind": "boolean" } },
|
|
449
|
+
{ "name": "is_contract_deployment", "type": { "kind": "boolean" } },
|
|
726
450
|
{
|
|
727
|
-
"name": "
|
|
728
|
-
"type": {
|
|
729
|
-
"kind": "field"
|
|
730
|
-
}
|
|
451
|
+
"name": "start_side_effect_counter",
|
|
452
|
+
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
731
453
|
}
|
|
732
454
|
]
|
|
733
455
|
}
|
|
734
|
-
}
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
"kind": "array",
|
|
740
|
-
"length": 4,
|
|
456
|
+
},
|
|
457
|
+
{ "name": "args_hash", "type": { "kind": "field" } },
|
|
458
|
+
{ "name": "return_values", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } },
|
|
459
|
+
{
|
|
460
|
+
"name": "read_requests",
|
|
741
461
|
"type": {
|
|
742
|
-
"kind": "
|
|
462
|
+
"kind": "array",
|
|
463
|
+
"length": 32,
|
|
464
|
+
"type": {
|
|
465
|
+
"kind": "struct",
|
|
466
|
+
"path": "authwit::aztec::protocol_types::abis::side_effect::SideEffect",
|
|
467
|
+
"fields": [
|
|
468
|
+
{ "name": "value", "type": { "kind": "field" } },
|
|
469
|
+
{ "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
|
|
470
|
+
]
|
|
471
|
+
}
|
|
743
472
|
}
|
|
744
|
-
}
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
473
|
+
},
|
|
474
|
+
{
|
|
475
|
+
"name": "new_commitments",
|
|
476
|
+
"type": {
|
|
477
|
+
"kind": "array",
|
|
478
|
+
"length": 16,
|
|
479
|
+
"type": {
|
|
480
|
+
"kind": "struct",
|
|
481
|
+
"path": "authwit::aztec::protocol_types::abis::side_effect::SideEffect",
|
|
482
|
+
"fields": [
|
|
483
|
+
{ "name": "value", "type": { "kind": "field" } },
|
|
484
|
+
{ "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
|
|
485
|
+
]
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
},
|
|
489
|
+
{
|
|
490
|
+
"name": "new_nullifiers",
|
|
491
|
+
"type": {
|
|
492
|
+
"kind": "array",
|
|
493
|
+
"length": 16,
|
|
494
|
+
"type": {
|
|
495
|
+
"kind": "struct",
|
|
496
|
+
"path": "authwit::aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash",
|
|
497
|
+
"fields": [
|
|
498
|
+
{ "name": "value", "type": { "kind": "field" } },
|
|
499
|
+
{ "name": "note_hash", "type": { "kind": "field" } },
|
|
500
|
+
{ "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
|
|
501
|
+
]
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
},
|
|
505
|
+
{
|
|
506
|
+
"name": "private_call_stack_hashes",
|
|
507
|
+
"type": { "kind": "array", "length": 4, "type": { "kind": "field" } }
|
|
508
|
+
},
|
|
509
|
+
{
|
|
510
|
+
"name": "public_call_stack_hashes",
|
|
511
|
+
"type": { "kind": "array", "length": 4, "type": { "kind": "field" } }
|
|
512
|
+
},
|
|
513
|
+
{ "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
|
|
514
|
+
{ "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } },
|
|
515
|
+
{ "name": "encrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
|
|
516
|
+
{
|
|
517
|
+
"name": "unencrypted_logs_hash",
|
|
518
|
+
"type": { "kind": "array", "length": 2, "type": { "kind": "field" } }
|
|
519
|
+
},
|
|
520
|
+
{ "name": "encrypted_log_preimages_length", "type": { "kind": "field" } },
|
|
521
|
+
{ "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } },
|
|
522
|
+
{
|
|
523
|
+
"name": "block_header",
|
|
524
|
+
"type": {
|
|
525
|
+
"kind": "struct",
|
|
526
|
+
"path": "authwit::aztec::protocol_types::abis::block_header::BlockHeader",
|
|
527
|
+
"fields": [
|
|
528
|
+
{ "name": "note_hash_tree_root", "type": { "kind": "field" } },
|
|
529
|
+
{ "name": "nullifier_tree_root", "type": { "kind": "field" } },
|
|
530
|
+
{ "name": "contract_tree_root", "type": { "kind": "field" } },
|
|
531
|
+
{ "name": "l1_to_l2_message_tree_root", "type": { "kind": "field" } },
|
|
532
|
+
{ "name": "archive_root", "type": { "kind": "field" } },
|
|
533
|
+
{ "name": "public_data_tree_root", "type": { "kind": "field" } },
|
|
534
|
+
{ "name": "global_variables_hash", "type": { "kind": "field" } }
|
|
535
|
+
]
|
|
536
|
+
}
|
|
537
|
+
},
|
|
538
|
+
{
|
|
539
|
+
"name": "contract_deployment_data",
|
|
751
540
|
"type": {
|
|
752
541
|
"kind": "struct",
|
|
753
|
-
"path": "authwit::aztec::protocol_types::
|
|
542
|
+
"path": "authwit::aztec::protocol_types::contrakt::deployment_data::ContractDeploymentData",
|
|
754
543
|
"fields": [
|
|
755
544
|
{
|
|
756
|
-
"name": "
|
|
545
|
+
"name": "deployer_public_key",
|
|
757
546
|
"type": {
|
|
758
|
-
"kind": "
|
|
547
|
+
"kind": "struct",
|
|
548
|
+
"path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint",
|
|
549
|
+
"fields": [
|
|
550
|
+
{ "name": "x", "type": { "kind": "field" } },
|
|
551
|
+
{ "name": "y", "type": { "kind": "field" } }
|
|
552
|
+
]
|
|
759
553
|
}
|
|
760
554
|
},
|
|
555
|
+
{ "name": "constructor_vk_hash", "type": { "kind": "field" } },
|
|
556
|
+
{ "name": "function_tree_root", "type": { "kind": "field" } },
|
|
557
|
+
{ "name": "contract_address_salt", "type": { "kind": "field" } },
|
|
761
558
|
{
|
|
762
|
-
"name": "
|
|
559
|
+
"name": "portal_contract_address",
|
|
763
560
|
"type": {
|
|
764
|
-
"kind": "
|
|
765
|
-
"
|
|
766
|
-
"
|
|
561
|
+
"kind": "struct",
|
|
562
|
+
"path": "authwit::aztec::protocol_types::address::EthAddress",
|
|
563
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
767
564
|
}
|
|
768
565
|
}
|
|
769
566
|
]
|
|
770
567
|
}
|
|
771
|
-
}
|
|
568
|
+
},
|
|
569
|
+
{ "name": "chain_id", "type": { "kind": "field" } },
|
|
570
|
+
{ "name": "version", "type": { "kind": "field" } }
|
|
571
|
+
]
|
|
572
|
+
},
|
|
573
|
+
"visibility": "public"
|
|
574
|
+
},
|
|
575
|
+
"return_witnesses": [
|
|
576
|
+
1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022,
|
|
577
|
+
1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040,
|
|
578
|
+
1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058,
|
|
579
|
+
1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076,
|
|
580
|
+
1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094,
|
|
581
|
+
1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112,
|
|
582
|
+
1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130,
|
|
583
|
+
1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148,
|
|
584
|
+
1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166,
|
|
585
|
+
1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184,
|
|
586
|
+
1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193
|
|
587
|
+
]
|
|
588
|
+
},
|
|
589
|
+
"bytecode": "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",
|
|
590
|
+
"debug_symbols": "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0pvecnrlviW96S0nWO5b0pvecorlviW96S0nWe5b0pvecprlviW96S0nWu5b0pvecqrlviW56W16rqXpuZam51qanmu5fyuvtyW56W16rqXpuZam51qanmtpeq6l6bmWpudamp5raXqupem5lqbnWpqea2l6rqXpuZam51qanmtpeq6l6bmWpudamp5raXqupem5lqbnWpqea2l6rqXpuZam51qanmtpeq6l6bmWpudamp5raXqupem5lqbnWpqea2l6rqXpuZam51qanmtpeq6l6bmWpudamp5raXqupem5lqbnWpqea2l6rqXpuZam51qanmtpeq6l6bmWpudamp5raXqupem5lqbnWpqea2l6rqXpuZam51qanmtpeq6l6bmWpudamp5raXqupem5lqbnWpqea2l6rqXpuZam51qanmtpeq6l6bmWpudamp5raXqupem5lqbnWpqea2l6rqXpuZam51qanmtpeq6l6bmWpudamp5raXqupem5lq7nWrqea+l6rqXruZa+yU1v13MtXc+1dD3X0vVcS9dzLV3PtXQ919L1XEvXcy1dz7V0PdfS9VxL13MtXc+1dD3X0vVcS9dzLV3PtXQ919L1XEvXcy1dz7V0PdfS9VxL13MtXc+1dD3X0vVcS9dzLV3PtXQ919L1XEvXcy1dz7V0PdfS9VxL13MtXc+1dD3X0vVcS9dzLV3PtXQ919L1XEvXcy1dz7V0PdfS9VxL13MtXc+1dD3X0vVcS9dzLV3PtXQ919L1XEvXcy1dz7V0PdfS9VxL13MtXc+1dD3X0vVcS9dzLV3PtXQ919L1XEvXcy1dz7V0PdfS9VxL13MtXc+1dD3X0vVcS9dzLV3PtXQ919L1XEvXcy1dz7V0PdfS9VxL13MtXc+1dD3X0vVcS9dzLV3PtXQ919L1XEvXcy1dz7V0Pdcy9FzL0HMtQ8+1DD3XMja56R16rmXouZah51qGnmsZeq5l6LmWoedahp5rGXquZei5lqHnWoaeaxl6rmXouZah51qGnmsZeq5l6LmWoedahp5rGXquZei5lqHnWoaeaxl6rmXouZah51qGnmsZeq5l6LmWoedahp5rGXquZei5lqHnWoaeaxl6rmXouZah51qGnmsZeq5l6LmWoedahp5rGXquZei5lqHnWoaeaxl6rmXouZah51qGnmsZeq5l6LmW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"
|
|
591
|
+
},
|
|
592
|
+
{
|
|
593
|
+
"name": "constructor",
|
|
594
|
+
"function_type": "Secret",
|
|
595
|
+
"is_internal": false,
|
|
596
|
+
"abi": {
|
|
597
|
+
"parameters": [
|
|
598
|
+
{
|
|
599
|
+
"name": "inputs",
|
|
600
|
+
"type": {
|
|
601
|
+
"kind": "struct",
|
|
602
|
+
"path": "authwit::aztec::abi::PrivateContextInputs",
|
|
603
|
+
"fields": [
|
|
604
|
+
{
|
|
605
|
+
"name": "call_context",
|
|
606
|
+
"type": {
|
|
607
|
+
"kind": "struct",
|
|
608
|
+
"path": "authwit::aztec::protocol_types::abis::call_context::CallContext",
|
|
609
|
+
"fields": [
|
|
610
|
+
{
|
|
611
|
+
"name": "msg_sender",
|
|
612
|
+
"type": {
|
|
613
|
+
"kind": "struct",
|
|
614
|
+
"path": "authwit::aztec::protocol_types::address::AztecAddress",
|
|
615
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
616
|
+
}
|
|
617
|
+
},
|
|
618
|
+
{
|
|
619
|
+
"name": "storage_contract_address",
|
|
620
|
+
"type": {
|
|
621
|
+
"kind": "struct",
|
|
622
|
+
"path": "authwit::aztec::protocol_types::address::AztecAddress",
|
|
623
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
624
|
+
}
|
|
625
|
+
},
|
|
626
|
+
{
|
|
627
|
+
"name": "portal_contract_address",
|
|
628
|
+
"type": {
|
|
629
|
+
"kind": "struct",
|
|
630
|
+
"path": "authwit::aztec::protocol_types::address::EthAddress",
|
|
631
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
632
|
+
}
|
|
633
|
+
},
|
|
634
|
+
{
|
|
635
|
+
"name": "function_selector",
|
|
636
|
+
"type": {
|
|
637
|
+
"kind": "struct",
|
|
638
|
+
"path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector",
|
|
639
|
+
"fields": [
|
|
640
|
+
{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
|
|
641
|
+
]
|
|
642
|
+
}
|
|
643
|
+
},
|
|
644
|
+
{ "name": "is_delegate_call", "type": { "kind": "boolean" } },
|
|
645
|
+
{ "name": "is_static_call", "type": { "kind": "boolean" } },
|
|
646
|
+
{ "name": "is_contract_deployment", "type": { "kind": "boolean" } },
|
|
647
|
+
{
|
|
648
|
+
"name": "start_side_effect_counter",
|
|
649
|
+
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
650
|
+
}
|
|
651
|
+
]
|
|
652
|
+
}
|
|
653
|
+
},
|
|
654
|
+
{
|
|
655
|
+
"name": "block_header",
|
|
656
|
+
"type": {
|
|
657
|
+
"kind": "struct",
|
|
658
|
+
"path": "authwit::aztec::protocol_types::abis::block_header::BlockHeader",
|
|
659
|
+
"fields": [
|
|
660
|
+
{ "name": "note_hash_tree_root", "type": { "kind": "field" } },
|
|
661
|
+
{ "name": "nullifier_tree_root", "type": { "kind": "field" } },
|
|
662
|
+
{ "name": "contract_tree_root", "type": { "kind": "field" } },
|
|
663
|
+
{ "name": "l1_to_l2_message_tree_root", "type": { "kind": "field" } },
|
|
664
|
+
{ "name": "archive_root", "type": { "kind": "field" } },
|
|
665
|
+
{ "name": "public_data_tree_root", "type": { "kind": "field" } },
|
|
666
|
+
{ "name": "global_variables_hash", "type": { "kind": "field" } }
|
|
667
|
+
]
|
|
668
|
+
}
|
|
669
|
+
},
|
|
670
|
+
{
|
|
671
|
+
"name": "contract_deployment_data",
|
|
672
|
+
"type": {
|
|
673
|
+
"kind": "struct",
|
|
674
|
+
"path": "authwit::aztec::protocol_types::contrakt::deployment_data::ContractDeploymentData",
|
|
675
|
+
"fields": [
|
|
676
|
+
{
|
|
677
|
+
"name": "deployer_public_key",
|
|
678
|
+
"type": {
|
|
679
|
+
"kind": "struct",
|
|
680
|
+
"path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint",
|
|
681
|
+
"fields": [
|
|
682
|
+
{ "name": "x", "type": { "kind": "field" } },
|
|
683
|
+
{ "name": "y", "type": { "kind": "field" } }
|
|
684
|
+
]
|
|
685
|
+
}
|
|
686
|
+
},
|
|
687
|
+
{ "name": "constructor_vk_hash", "type": { "kind": "field" } },
|
|
688
|
+
{ "name": "function_tree_root", "type": { "kind": "field" } },
|
|
689
|
+
{ "name": "contract_address_salt", "type": { "kind": "field" } },
|
|
690
|
+
{
|
|
691
|
+
"name": "portal_contract_address",
|
|
692
|
+
"type": {
|
|
693
|
+
"kind": "struct",
|
|
694
|
+
"path": "authwit::aztec::protocol_types::address::EthAddress",
|
|
695
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
696
|
+
}
|
|
697
|
+
}
|
|
698
|
+
]
|
|
699
|
+
}
|
|
700
|
+
},
|
|
701
|
+
{
|
|
702
|
+
"name": "private_global_variables",
|
|
703
|
+
"type": {
|
|
704
|
+
"kind": "struct",
|
|
705
|
+
"path": "authwit::aztec::abi::PrivateGlobalVariables",
|
|
706
|
+
"fields": [
|
|
707
|
+
{ "name": "chain_id", "type": { "kind": "field" } },
|
|
708
|
+
{ "name": "version", "type": { "kind": "field" } }
|
|
709
|
+
]
|
|
710
|
+
}
|
|
711
|
+
}
|
|
712
|
+
]
|
|
772
713
|
},
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
714
|
+
"visibility": "private"
|
|
715
|
+
},
|
|
716
|
+
{ "name": "signing_pub_key_x", "type": { "kind": "field" }, "visibility": "public" },
|
|
717
|
+
{ "name": "signing_pub_key_y", "type": { "kind": "field" }, "visibility": "public" }
|
|
718
|
+
],
|
|
719
|
+
"param_witnesses": {
|
|
720
|
+
"inputs": [{ "start": 0, "end": 23 }],
|
|
721
|
+
"signing_pub_key_x": [{ "start": 23, "end": 24 }],
|
|
722
|
+
"signing_pub_key_y": [{ "start": 24, "end": 25 }]
|
|
723
|
+
},
|
|
724
|
+
"return_type": {
|
|
725
|
+
"abi_type": {
|
|
726
|
+
"kind": "struct",
|
|
727
|
+
"path": "authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs",
|
|
728
|
+
"fields": [
|
|
729
|
+
{
|
|
730
|
+
"name": "call_context",
|
|
778
731
|
"type": {
|
|
779
732
|
"kind": "struct",
|
|
780
|
-
"path": "authwit::aztec::protocol_types::abis::
|
|
733
|
+
"path": "authwit::aztec::protocol_types::abis::call_context::CallContext",
|
|
781
734
|
"fields": [
|
|
782
735
|
{
|
|
783
|
-
"name": "
|
|
736
|
+
"name": "msg_sender",
|
|
737
|
+
"type": {
|
|
738
|
+
"kind": "struct",
|
|
739
|
+
"path": "authwit::aztec::protocol_types::address::AztecAddress",
|
|
740
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
741
|
+
}
|
|
742
|
+
},
|
|
743
|
+
{
|
|
744
|
+
"name": "storage_contract_address",
|
|
784
745
|
"type": {
|
|
785
|
-
"kind": "
|
|
746
|
+
"kind": "struct",
|
|
747
|
+
"path": "authwit::aztec::protocol_types::address::AztecAddress",
|
|
748
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
786
749
|
}
|
|
787
750
|
},
|
|
788
751
|
{
|
|
789
|
-
"name": "
|
|
752
|
+
"name": "portal_contract_address",
|
|
790
753
|
"type": {
|
|
791
|
-
"kind": "
|
|
754
|
+
"kind": "struct",
|
|
755
|
+
"path": "authwit::aztec::protocol_types::address::EthAddress",
|
|
756
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
792
757
|
}
|
|
793
758
|
},
|
|
794
759
|
{
|
|
795
|
-
"name": "
|
|
760
|
+
"name": "function_selector",
|
|
796
761
|
"type": {
|
|
797
|
-
"kind": "
|
|
798
|
-
"
|
|
799
|
-
"width": 32
|
|
762
|
+
"kind": "struct",
|
|
763
|
+
"path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector",
|
|
764
|
+
"fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }]
|
|
800
765
|
}
|
|
766
|
+
},
|
|
767
|
+
{ "name": "is_delegate_call", "type": { "kind": "boolean" } },
|
|
768
|
+
{ "name": "is_static_call", "type": { "kind": "boolean" } },
|
|
769
|
+
{ "name": "is_contract_deployment", "type": { "kind": "boolean" } },
|
|
770
|
+
{
|
|
771
|
+
"name": "start_side_effect_counter",
|
|
772
|
+
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
801
773
|
}
|
|
802
774
|
]
|
|
803
775
|
}
|
|
804
|
-
}
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
"kind": "array",
|
|
810
|
-
"length": 2,
|
|
811
|
-
"type": {
|
|
812
|
-
"kind": "field"
|
|
813
|
-
}
|
|
814
|
-
}
|
|
815
|
-
},
|
|
816
|
-
{
|
|
817
|
-
"name": "unencrypted_logs_hash",
|
|
818
|
-
"type": {
|
|
819
|
-
"kind": "array",
|
|
820
|
-
"length": 2,
|
|
776
|
+
},
|
|
777
|
+
{ "name": "args_hash", "type": { "kind": "field" } },
|
|
778
|
+
{ "name": "return_values", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } },
|
|
779
|
+
{
|
|
780
|
+
"name": "read_requests",
|
|
821
781
|
"type": {
|
|
822
|
-
"kind": "
|
|
823
|
-
|
|
824
|
-
|
|
782
|
+
"kind": "array",
|
|
783
|
+
"length": 32,
|
|
784
|
+
"type": {
|
|
785
|
+
"kind": "struct",
|
|
786
|
+
"path": "authwit::aztec::protocol_types::abis::side_effect::SideEffect",
|
|
787
|
+
"fields": [
|
|
788
|
+
{ "name": "value", "type": { "kind": "field" } },
|
|
789
|
+
{ "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
|
|
790
|
+
]
|
|
791
|
+
}
|
|
792
|
+
}
|
|
793
|
+
},
|
|
794
|
+
{
|
|
795
|
+
"name": "new_commitments",
|
|
796
|
+
"type": {
|
|
797
|
+
"kind": "array",
|
|
798
|
+
"length": 16,
|
|
799
|
+
"type": {
|
|
800
|
+
"kind": "struct",
|
|
801
|
+
"path": "authwit::aztec::protocol_types::abis::side_effect::SideEffect",
|
|
802
|
+
"fields": [
|
|
803
|
+
{ "name": "value", "type": { "kind": "field" } },
|
|
804
|
+
{ "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
|
|
805
|
+
]
|
|
806
|
+
}
|
|
807
|
+
}
|
|
808
|
+
},
|
|
809
|
+
{
|
|
810
|
+
"name": "new_nullifiers",
|
|
811
|
+
"type": {
|
|
812
|
+
"kind": "array",
|
|
813
|
+
"length": 16,
|
|
814
|
+
"type": {
|
|
815
|
+
"kind": "struct",
|
|
816
|
+
"path": "authwit::aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash",
|
|
817
|
+
"fields": [
|
|
818
|
+
{ "name": "value", "type": { "kind": "field" } },
|
|
819
|
+
{ "name": "note_hash", "type": { "kind": "field" } },
|
|
820
|
+
{ "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
|
|
821
|
+
]
|
|
822
|
+
}
|
|
823
|
+
}
|
|
824
|
+
},
|
|
825
|
+
{
|
|
826
|
+
"name": "private_call_stack_hashes",
|
|
827
|
+
"type": { "kind": "array", "length": 4, "type": { "kind": "field" } }
|
|
828
|
+
},
|
|
829
|
+
{
|
|
830
|
+
"name": "public_call_stack_hashes",
|
|
831
|
+
"type": { "kind": "array", "length": 4, "type": { "kind": "field" } }
|
|
832
|
+
},
|
|
833
|
+
{ "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
|
|
834
|
+
{ "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } },
|
|
835
|
+
{ "name": "encrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
|
|
836
|
+
{
|
|
837
|
+
"name": "unencrypted_logs_hash",
|
|
838
|
+
"type": { "kind": "array", "length": 2, "type": { "kind": "field" } }
|
|
839
|
+
},
|
|
840
|
+
{ "name": "encrypted_log_preimages_length", "type": { "kind": "field" } },
|
|
841
|
+
{ "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } },
|
|
842
|
+
{
|
|
843
|
+
"name": "block_header",
|
|
844
|
+
"type": {
|
|
845
|
+
"kind": "struct",
|
|
846
|
+
"path": "authwit::aztec::protocol_types::abis::block_header::BlockHeader",
|
|
847
|
+
"fields": [
|
|
848
|
+
{ "name": "note_hash_tree_root", "type": { "kind": "field" } },
|
|
849
|
+
{ "name": "nullifier_tree_root", "type": { "kind": "field" } },
|
|
850
|
+
{ "name": "contract_tree_root", "type": { "kind": "field" } },
|
|
851
|
+
{ "name": "l1_to_l2_message_tree_root", "type": { "kind": "field" } },
|
|
852
|
+
{ "name": "archive_root", "type": { "kind": "field" } },
|
|
853
|
+
{ "name": "public_data_tree_root", "type": { "kind": "field" } },
|
|
854
|
+
{ "name": "global_variables_hash", "type": { "kind": "field" } }
|
|
855
|
+
]
|
|
856
|
+
}
|
|
857
|
+
},
|
|
858
|
+
{
|
|
859
|
+
"name": "contract_deployment_data",
|
|
860
|
+
"type": {
|
|
861
|
+
"kind": "struct",
|
|
862
|
+
"path": "authwit::aztec::protocol_types::contrakt::deployment_data::ContractDeploymentData",
|
|
863
|
+
"fields": [
|
|
864
|
+
{
|
|
865
|
+
"name": "deployer_public_key",
|
|
866
|
+
"type": {
|
|
867
|
+
"kind": "struct",
|
|
868
|
+
"path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint",
|
|
869
|
+
"fields": [
|
|
870
|
+
{ "name": "x", "type": { "kind": "field" } },
|
|
871
|
+
{ "name": "y", "type": { "kind": "field" } }
|
|
872
|
+
]
|
|
873
|
+
}
|
|
874
|
+
},
|
|
875
|
+
{ "name": "constructor_vk_hash", "type": { "kind": "field" } },
|
|
876
|
+
{ "name": "function_tree_root", "type": { "kind": "field" } },
|
|
877
|
+
{ "name": "contract_address_salt", "type": { "kind": "field" } },
|
|
878
|
+
{
|
|
879
|
+
"name": "portal_contract_address",
|
|
880
|
+
"type": {
|
|
881
|
+
"kind": "struct",
|
|
882
|
+
"path": "authwit::aztec::protocol_types::address::EthAddress",
|
|
883
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
884
|
+
}
|
|
885
|
+
}
|
|
886
|
+
]
|
|
887
|
+
}
|
|
888
|
+
},
|
|
889
|
+
{ "name": "chain_id", "type": { "kind": "field" } },
|
|
890
|
+
{ "name": "version", "type": { "kind": "field" } }
|
|
891
|
+
]
|
|
892
|
+
},
|
|
893
|
+
"visibility": "public"
|
|
894
|
+
},
|
|
895
|
+
"return_witnesses": [
|
|
896
|
+
41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
|
|
897
|
+
68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
|
|
898
|
+
95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
|
|
899
|
+
118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
|
|
900
|
+
140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
|
|
901
|
+
162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
|
|
902
|
+
184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
|
|
903
|
+
206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
|
|
904
|
+
228, 229
|
|
905
|
+
]
|
|
906
|
+
},
|
|
907
|
+
"bytecode": "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",
|
|
908
|
+
"debug_symbols": "5ZbbSiNBEIbfpa9DqGNXVV5l8SLsuiBIXDa5C3l3R2N3j7FxcJRo9CoE/iq++evU+3R793u9u7nbbNNqnzStfu3T9t968/Bvu1v/36UVLNL15s/we1ikvze312lF4IfFCx0B6JOUgKyqBXtiFiliAaxiBOuoEcJKbkTgeKa/WqR8qeB2PnAxL2Jlfy+498Axew2yzJP4RBU/pOFTDwgJKk9QE+sc+rhoeoQPwEeofYwygW9k+CQ2isaT/REHvxYOfQSO1sli4CmcXGislda4I821DbK0rCY9hKgfycOcj4BjVs/wF3ZFiysG8LorTFFMGWfNsyyRM1viViyJcfX5EUY/EcZPYfKZYUIrzGie+83iVjZFDqDT4beLJfczkw9TEHU80F9nZ5WSmdVkYhsR1dQDx9TuUiiLTrUxx9GV+KmuGNalqDZ2pdODbhWZ2/ch8Zy1SPBjLbdiuY/u0LERCb+RK4yVQ3xKzbmIRUcPMzie0GX/YaFRWjJjs1K5BMmcoO6JlFoB1dbLTseduuzeA85laQvm043jS58REzNi+u/4qSB8axDhsn8WJZd+l/CTyj4E+ZygrhFai5RHzzYcpuzqcLgH"
|
|
909
|
+
},
|
|
910
|
+
{
|
|
911
|
+
"name": "compute_note_hash_and_nullifier",
|
|
912
|
+
"function_type": "Unconstrained",
|
|
913
|
+
"is_internal": false,
|
|
914
|
+
"abi": {
|
|
915
|
+
"parameters": [
|
|
916
|
+
{
|
|
917
|
+
"name": "contract_address",
|
|
918
|
+
"type": {
|
|
919
|
+
"kind": "struct",
|
|
920
|
+
"path": "authwit::aztec::protocol_types::address::AztecAddress",
|
|
921
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
825
922
|
},
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
923
|
+
"visibility": "private"
|
|
924
|
+
},
|
|
925
|
+
{ "name": "nonce", "type": { "kind": "field" }, "visibility": "private" },
|
|
926
|
+
{ "name": "storage_slot", "type": { "kind": "field" }, "visibility": "private" },
|
|
927
|
+
{
|
|
928
|
+
"name": "serialized_note",
|
|
929
|
+
"type": { "kind": "array", "length": 3, "type": { "kind": "field" } },
|
|
930
|
+
"visibility": "private"
|
|
931
|
+
}
|
|
932
|
+
],
|
|
933
|
+
"param_witnesses": {
|
|
934
|
+
"contract_address": [{ "start": 0, "end": 1 }],
|
|
935
|
+
"nonce": [{ "start": 1, "end": 2 }],
|
|
936
|
+
"serialized_note": [{ "start": 3, "end": 6 }],
|
|
937
|
+
"storage_slot": [{ "start": 2, "end": 3 }]
|
|
938
|
+
},
|
|
939
|
+
"return_type": {
|
|
940
|
+
"abi_type": { "kind": "array", "length": 4, "type": { "kind": "field" } },
|
|
941
|
+
"visibility": "public"
|
|
942
|
+
},
|
|
943
|
+
"return_witnesses": [6, 7, 8, 9]
|
|
944
|
+
},
|
|
945
|
+
"bytecode": "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",
|
|
946
|
+
"debug_symbols": "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2oK82oK82oK82oK82oK82oK82oK82oK82oK82oK82oK82oK82oK82oK82oK82oK82oK82oK82oK82oK82oK82oK82oK82oK82oK82oK82oK82oK82oK82oK82oK82oK8WkFerSCvVpBXK8ir1cXJ3YK8WkFerSCvVpBXK8irFeTVCvJqBXm1grxaQV6tIK9WkFcryKsV5NUK8moFebWCvFpBXq0gr1aQVyvIqxXk1QryagV5tYK8WkFerSCvVpBXK8irFeTVCvJqBXm1grxaQV6tIK9WkFcryKsV5NUK8moFebWCvFpBXq0gr1aQVyvIqxXk1QryagV5tYK8WkFerSCvVpBXK8irFeTVCvJqBXm1grxaQV6tIK9WkFcryKsV5NUK8moFebWCvFpBXq0gr1aQVyvIqxXk1QryagV5tYK8WkFerSCvVpBXK8irFeTVCvJqBXm1grxaQV6tIK9WkFcryKsV5NUK8moFebWCvFpBXq0gr1aQVyvIqxXk1Qryag15tYa8WkNerSGv1hcndxvyag15tYa8WkNerSGv1pBXa8irNeTVGvJqDXm1hrxaQ16tIa/WkFdryKs15NUa8moNebWGvFpDXq0hr9aQV2vIqzXk1Rryag15tYa8WkNerSGv1pBXa8irNeTVGvJqDXm1hrxaQ16tIa/WkFdryKs15NUa8moNebWGvFpDXq0hr9aQV2vIqzXk1Rryag15tYa8WkNerSGv1pBXa8irNeTVGvJqDXm1hrxaQ16tIa/WkFdryKs15NUa8moNebWGvFpDXq0hr9aQV2vIqzXk1Rryag15tYa8WkNerSGv1pBXa8irNeTVGvJqDXm1hrxaQ16tIa/WkFdryKs15NUa8moNebWGvFpDXq0hr9aQV2vIq23Iq23Iq23Iq23Iq+2Lk7sb8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8mob8moH8moH8moH8moH8mrn4uTugbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbzagbza+bu9Wq2vtfT5+2ppqJYN1XKcWv5ur3bLWgZUy4RqCaiWhGpZUC1Q7jaUuw3lbkO5u6Hc3VDubih3N5S7G8rdDeXuhnJ3Q7m7odzdUO4eKHcPlLsHyt0D5e6BcvdAuXug3D1Q7h4od4+Tu+NycYL3WoyTvNdinOi9FuNk77UYJ3yvxTjpey3Gid9rMU7+XotxAvhajJTAQ0rgISXwkBJ4SAk8pAQeUgIPKYGHlMBDSuAhJfCUEnhKCTylBJ5SAk8pgaeUwFNK4Ckl8JQSeEoJHFICh5TAISVwSAkcUgKHlMAhJXBICRxSAoeUwCklcEoJnFICp5TAKSVwSgmcUgKnlMApJXBKCbykBF5SAi8pgZeUwEtK4CUl8JISeEkJvKQEXlICl5TAJSVwSQlcUgKXlMAlJTBE3q7FSAkMobdrMVICQ+ztWoyUwBB8uxYjJTBE367FSAkM4bdrMVICQ/ztWoyUwBCAuxYjJTBE4K7FSAkMIbhrMVICQwzuWoyUwBCEuxYjJTBE4a7FSAkMYbhrMVICQxzuWoyUwBCIuxYjJTBE4q7FQAk8JBM3JBM3JBM3JBN3/VuyVAyUwEMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMycUMy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"
|
|
947
|
+
},
|
|
948
|
+
{
|
|
949
|
+
"name": "entrypoint",
|
|
950
|
+
"function_type": "Secret",
|
|
951
|
+
"is_internal": false,
|
|
952
|
+
"abi": {
|
|
953
|
+
"parameters": [
|
|
954
|
+
{
|
|
955
|
+
"name": "inputs",
|
|
956
|
+
"type": {
|
|
957
|
+
"kind": "struct",
|
|
958
|
+
"path": "authwit::aztec::abi::PrivateContextInputs",
|
|
959
|
+
"fields": [
|
|
960
|
+
{
|
|
961
|
+
"name": "call_context",
|
|
962
|
+
"type": {
|
|
963
|
+
"kind": "struct",
|
|
964
|
+
"path": "authwit::aztec::protocol_types::abis::call_context::CallContext",
|
|
965
|
+
"fields": [
|
|
966
|
+
{
|
|
967
|
+
"name": "msg_sender",
|
|
968
|
+
"type": {
|
|
969
|
+
"kind": "struct",
|
|
970
|
+
"path": "authwit::aztec::protocol_types::address::AztecAddress",
|
|
971
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
972
|
+
}
|
|
973
|
+
},
|
|
974
|
+
{
|
|
975
|
+
"name": "storage_contract_address",
|
|
976
|
+
"type": {
|
|
977
|
+
"kind": "struct",
|
|
978
|
+
"path": "authwit::aztec::protocol_types::address::AztecAddress",
|
|
979
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
980
|
+
}
|
|
981
|
+
},
|
|
982
|
+
{
|
|
983
|
+
"name": "portal_contract_address",
|
|
984
|
+
"type": {
|
|
985
|
+
"kind": "struct",
|
|
986
|
+
"path": "authwit::aztec::protocol_types::address::EthAddress",
|
|
987
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
988
|
+
}
|
|
989
|
+
},
|
|
990
|
+
{
|
|
991
|
+
"name": "function_selector",
|
|
992
|
+
"type": {
|
|
993
|
+
"kind": "struct",
|
|
994
|
+
"path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector",
|
|
995
|
+
"fields": [
|
|
996
|
+
{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
|
|
997
|
+
]
|
|
998
|
+
}
|
|
999
|
+
},
|
|
1000
|
+
{ "name": "is_delegate_call", "type": { "kind": "boolean" } },
|
|
1001
|
+
{ "name": "is_static_call", "type": { "kind": "boolean" } },
|
|
1002
|
+
{ "name": "is_contract_deployment", "type": { "kind": "boolean" } },
|
|
1003
|
+
{
|
|
1004
|
+
"name": "start_side_effect_counter",
|
|
1005
|
+
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
1006
|
+
}
|
|
1007
|
+
]
|
|
1008
|
+
}
|
|
1009
|
+
},
|
|
1010
|
+
{
|
|
1011
|
+
"name": "block_header",
|
|
1012
|
+
"type": {
|
|
1013
|
+
"kind": "struct",
|
|
1014
|
+
"path": "authwit::aztec::protocol_types::abis::block_header::BlockHeader",
|
|
1015
|
+
"fields": [
|
|
1016
|
+
{ "name": "note_hash_tree_root", "type": { "kind": "field" } },
|
|
1017
|
+
{ "name": "nullifier_tree_root", "type": { "kind": "field" } },
|
|
1018
|
+
{ "name": "contract_tree_root", "type": { "kind": "field" } },
|
|
1019
|
+
{ "name": "l1_to_l2_message_tree_root", "type": { "kind": "field" } },
|
|
1020
|
+
{ "name": "archive_root", "type": { "kind": "field" } },
|
|
1021
|
+
{ "name": "public_data_tree_root", "type": { "kind": "field" } },
|
|
1022
|
+
{ "name": "global_variables_hash", "type": { "kind": "field" } }
|
|
1023
|
+
]
|
|
1024
|
+
}
|
|
1025
|
+
},
|
|
1026
|
+
{
|
|
1027
|
+
"name": "contract_deployment_data",
|
|
1028
|
+
"type": {
|
|
1029
|
+
"kind": "struct",
|
|
1030
|
+
"path": "authwit::aztec::protocol_types::contrakt::deployment_data::ContractDeploymentData",
|
|
1031
|
+
"fields": [
|
|
1032
|
+
{
|
|
1033
|
+
"name": "deployer_public_key",
|
|
1034
|
+
"type": {
|
|
1035
|
+
"kind": "struct",
|
|
1036
|
+
"path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint",
|
|
1037
|
+
"fields": [
|
|
1038
|
+
{ "name": "x", "type": { "kind": "field" } },
|
|
1039
|
+
{ "name": "y", "type": { "kind": "field" } }
|
|
1040
|
+
]
|
|
1041
|
+
}
|
|
1042
|
+
},
|
|
1043
|
+
{ "name": "constructor_vk_hash", "type": { "kind": "field" } },
|
|
1044
|
+
{ "name": "function_tree_root", "type": { "kind": "field" } },
|
|
1045
|
+
{ "name": "contract_address_salt", "type": { "kind": "field" } },
|
|
1046
|
+
{
|
|
1047
|
+
"name": "portal_contract_address",
|
|
1048
|
+
"type": {
|
|
1049
|
+
"kind": "struct",
|
|
1050
|
+
"path": "authwit::aztec::protocol_types::address::EthAddress",
|
|
1051
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
1052
|
+
}
|
|
1053
|
+
}
|
|
1054
|
+
]
|
|
1055
|
+
}
|
|
1056
|
+
},
|
|
1057
|
+
{
|
|
1058
|
+
"name": "private_global_variables",
|
|
1059
|
+
"type": {
|
|
1060
|
+
"kind": "struct",
|
|
1061
|
+
"path": "authwit::aztec::abi::PrivateGlobalVariables",
|
|
1062
|
+
"fields": [
|
|
1063
|
+
{ "name": "chain_id", "type": { "kind": "field" } },
|
|
1064
|
+
{ "name": "version", "type": { "kind": "field" } }
|
|
1065
|
+
]
|
|
1066
|
+
}
|
|
1067
|
+
}
|
|
1068
|
+
]
|
|
831
1069
|
},
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
"name": "nullifier_tree_root",
|
|
846
|
-
"type": {
|
|
847
|
-
"kind": "field"
|
|
848
|
-
}
|
|
849
|
-
},
|
|
850
|
-
{
|
|
851
|
-
"name": "contract_tree_root",
|
|
852
|
-
"type": {
|
|
853
|
-
"kind": "field"
|
|
854
|
-
}
|
|
855
|
-
},
|
|
856
|
-
{
|
|
857
|
-
"name": "l1_to_l2_message_tree_root",
|
|
858
|
-
"type": {
|
|
859
|
-
"kind": "field"
|
|
860
|
-
}
|
|
861
|
-
},
|
|
862
|
-
{
|
|
863
|
-
"name": "archive_root",
|
|
1070
|
+
"visibility": "private"
|
|
1071
|
+
},
|
|
1072
|
+
{
|
|
1073
|
+
"name": "payload",
|
|
1074
|
+
"type": {
|
|
1075
|
+
"kind": "struct",
|
|
1076
|
+
"path": "authwit::entrypoint::EntrypointPayload",
|
|
1077
|
+
"fields": [
|
|
1078
|
+
{
|
|
1079
|
+
"name": "function_calls",
|
|
1080
|
+
"type": {
|
|
1081
|
+
"kind": "array",
|
|
1082
|
+
"length": 4,
|
|
864
1083
|
"type": {
|
|
865
|
-
"kind": "
|
|
1084
|
+
"kind": "struct",
|
|
1085
|
+
"path": "authwit::entrypoint::FunctionCall",
|
|
1086
|
+
"fields": [
|
|
1087
|
+
{ "name": "args_hash", "type": { "kind": "field" } },
|
|
1088
|
+
{
|
|
1089
|
+
"name": "function_selector",
|
|
1090
|
+
"type": {
|
|
1091
|
+
"kind": "struct",
|
|
1092
|
+
"path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector",
|
|
1093
|
+
"fields": [
|
|
1094
|
+
{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
|
|
1095
|
+
]
|
|
1096
|
+
}
|
|
1097
|
+
},
|
|
1098
|
+
{
|
|
1099
|
+
"name": "target_address",
|
|
1100
|
+
"type": {
|
|
1101
|
+
"kind": "struct",
|
|
1102
|
+
"path": "authwit::aztec::protocol_types::address::AztecAddress",
|
|
1103
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
1104
|
+
}
|
|
1105
|
+
},
|
|
1106
|
+
{ "name": "is_public", "type": { "kind": "boolean" } }
|
|
1107
|
+
]
|
|
866
1108
|
}
|
|
867
|
-
}
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
1109
|
+
}
|
|
1110
|
+
},
|
|
1111
|
+
{ "name": "nonce", "type": { "kind": "field" } }
|
|
1112
|
+
]
|
|
1113
|
+
},
|
|
1114
|
+
"visibility": "public"
|
|
1115
|
+
}
|
|
1116
|
+
],
|
|
1117
|
+
"param_witnesses": { "inputs": [{ "start": 0, "end": 23 }], "payload": [{ "start": 23, "end": 40 }] },
|
|
1118
|
+
"return_type": {
|
|
1119
|
+
"abi_type": {
|
|
1120
|
+
"kind": "struct",
|
|
1121
|
+
"path": "authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs",
|
|
1122
|
+
"fields": [
|
|
1123
|
+
{
|
|
1124
|
+
"name": "call_context",
|
|
1125
|
+
"type": {
|
|
1126
|
+
"kind": "struct",
|
|
1127
|
+
"path": "authwit::aztec::protocol_types::abis::call_context::CallContext",
|
|
1128
|
+
"fields": [
|
|
1129
|
+
{
|
|
1130
|
+
"name": "msg_sender",
|
|
1131
|
+
"type": {
|
|
1132
|
+
"kind": "struct",
|
|
1133
|
+
"path": "authwit::aztec::protocol_types::address::AztecAddress",
|
|
1134
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
1135
|
+
}
|
|
1136
|
+
},
|
|
1137
|
+
{
|
|
1138
|
+
"name": "storage_contract_address",
|
|
1139
|
+
"type": {
|
|
1140
|
+
"kind": "struct",
|
|
1141
|
+
"path": "authwit::aztec::protocol_types::address::AztecAddress",
|
|
1142
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
1143
|
+
}
|
|
1144
|
+
},
|
|
1145
|
+
{
|
|
1146
|
+
"name": "portal_contract_address",
|
|
1147
|
+
"type": {
|
|
1148
|
+
"kind": "struct",
|
|
1149
|
+
"path": "authwit::aztec::protocol_types::address::EthAddress",
|
|
1150
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
1151
|
+
}
|
|
1152
|
+
},
|
|
1153
|
+
{
|
|
1154
|
+
"name": "function_selector",
|
|
1155
|
+
"type": {
|
|
1156
|
+
"kind": "struct",
|
|
1157
|
+
"path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector",
|
|
1158
|
+
"fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }]
|
|
1159
|
+
}
|
|
1160
|
+
},
|
|
1161
|
+
{ "name": "is_delegate_call", "type": { "kind": "boolean" } },
|
|
1162
|
+
{ "name": "is_static_call", "type": { "kind": "boolean" } },
|
|
1163
|
+
{ "name": "is_contract_deployment", "type": { "kind": "boolean" } },
|
|
1164
|
+
{
|
|
1165
|
+
"name": "start_side_effect_counter",
|
|
1166
|
+
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
872
1167
|
}
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
1168
|
+
]
|
|
1169
|
+
}
|
|
1170
|
+
},
|
|
1171
|
+
{ "name": "args_hash", "type": { "kind": "field" } },
|
|
1172
|
+
{ "name": "return_values", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } },
|
|
1173
|
+
{
|
|
1174
|
+
"name": "read_requests",
|
|
1175
|
+
"type": {
|
|
1176
|
+
"kind": "array",
|
|
1177
|
+
"length": 32,
|
|
1178
|
+
"type": {
|
|
1179
|
+
"kind": "struct",
|
|
1180
|
+
"path": "authwit::aztec::protocol_types::abis::side_effect::SideEffect",
|
|
1181
|
+
"fields": [
|
|
1182
|
+
{ "name": "value", "type": { "kind": "field" } },
|
|
1183
|
+
{ "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
|
|
1184
|
+
]
|
|
1185
|
+
}
|
|
1186
|
+
}
|
|
1187
|
+
},
|
|
1188
|
+
{
|
|
1189
|
+
"name": "new_commitments",
|
|
1190
|
+
"type": {
|
|
1191
|
+
"kind": "array",
|
|
1192
|
+
"length": 16,
|
|
1193
|
+
"type": {
|
|
1194
|
+
"kind": "struct",
|
|
1195
|
+
"path": "authwit::aztec::protocol_types::abis::side_effect::SideEffect",
|
|
1196
|
+
"fields": [
|
|
1197
|
+
{ "name": "value", "type": { "kind": "field" } },
|
|
1198
|
+
{ "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
|
|
1199
|
+
]
|
|
1200
|
+
}
|
|
1201
|
+
}
|
|
1202
|
+
},
|
|
1203
|
+
{
|
|
1204
|
+
"name": "new_nullifiers",
|
|
1205
|
+
"type": {
|
|
1206
|
+
"kind": "array",
|
|
1207
|
+
"length": 16,
|
|
1208
|
+
"type": {
|
|
1209
|
+
"kind": "struct",
|
|
1210
|
+
"path": "authwit::aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash",
|
|
1211
|
+
"fields": [
|
|
1212
|
+
{ "name": "value", "type": { "kind": "field" } },
|
|
1213
|
+
{ "name": "note_hash", "type": { "kind": "field" } },
|
|
1214
|
+
{ "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
|
|
1215
|
+
]
|
|
1216
|
+
}
|
|
1217
|
+
}
|
|
1218
|
+
},
|
|
1219
|
+
{
|
|
1220
|
+
"name": "private_call_stack_hashes",
|
|
1221
|
+
"type": { "kind": "array", "length": 4, "type": { "kind": "field" } }
|
|
1222
|
+
},
|
|
1223
|
+
{
|
|
1224
|
+
"name": "public_call_stack_hashes",
|
|
1225
|
+
"type": { "kind": "array", "length": 4, "type": { "kind": "field" } }
|
|
1226
|
+
},
|
|
1227
|
+
{ "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
|
|
1228
|
+
{ "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } },
|
|
1229
|
+
{ "name": "encrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
|
|
1230
|
+
{
|
|
1231
|
+
"name": "unencrypted_logs_hash",
|
|
1232
|
+
"type": { "kind": "array", "length": 2, "type": { "kind": "field" } }
|
|
1233
|
+
},
|
|
1234
|
+
{ "name": "encrypted_log_preimages_length", "type": { "kind": "field" } },
|
|
1235
|
+
{ "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } },
|
|
1236
|
+
{
|
|
1237
|
+
"name": "block_header",
|
|
1238
|
+
"type": {
|
|
1239
|
+
"kind": "struct",
|
|
1240
|
+
"path": "authwit::aztec::protocol_types::abis::block_header::BlockHeader",
|
|
1241
|
+
"fields": [
|
|
1242
|
+
{ "name": "note_hash_tree_root", "type": { "kind": "field" } },
|
|
1243
|
+
{ "name": "nullifier_tree_root", "type": { "kind": "field" } },
|
|
1244
|
+
{ "name": "contract_tree_root", "type": { "kind": "field" } },
|
|
1245
|
+
{ "name": "l1_to_l2_message_tree_root", "type": { "kind": "field" } },
|
|
1246
|
+
{ "name": "archive_root", "type": { "kind": "field" } },
|
|
1247
|
+
{ "name": "public_data_tree_root", "type": { "kind": "field" } },
|
|
1248
|
+
{ "name": "global_variables_hash", "type": { "kind": "field" } }
|
|
1249
|
+
]
|
|
1250
|
+
}
|
|
1251
|
+
},
|
|
1252
|
+
{
|
|
1253
|
+
"name": "contract_deployment_data",
|
|
1254
|
+
"type": {
|
|
1255
|
+
"kind": "struct",
|
|
1256
|
+
"path": "authwit::aztec::protocol_types::contrakt::deployment_data::ContractDeploymentData",
|
|
1257
|
+
"fields": [
|
|
1258
|
+
{
|
|
1259
|
+
"name": "deployer_public_key",
|
|
1260
|
+
"type": {
|
|
1261
|
+
"kind": "struct",
|
|
1262
|
+
"path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint",
|
|
1263
|
+
"fields": [
|
|
1264
|
+
{ "name": "x", "type": { "kind": "field" } },
|
|
1265
|
+
{ "name": "y", "type": { "kind": "field" } }
|
|
1266
|
+
]
|
|
1267
|
+
}
|
|
1268
|
+
},
|
|
1269
|
+
{ "name": "constructor_vk_hash", "type": { "kind": "field" } },
|
|
1270
|
+
{ "name": "function_tree_root", "type": { "kind": "field" } },
|
|
1271
|
+
{ "name": "contract_address_salt", "type": { "kind": "field" } },
|
|
1272
|
+
{
|
|
1273
|
+
"name": "portal_contract_address",
|
|
1274
|
+
"type": {
|
|
1275
|
+
"kind": "struct",
|
|
1276
|
+
"path": "authwit::aztec::protocol_types::address::EthAddress",
|
|
1277
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
1278
|
+
}
|
|
878
1279
|
}
|
|
1280
|
+
]
|
|
1281
|
+
}
|
|
1282
|
+
},
|
|
1283
|
+
{ "name": "chain_id", "type": { "kind": "field" } },
|
|
1284
|
+
{ "name": "version", "type": { "kind": "field" } }
|
|
1285
|
+
]
|
|
1286
|
+
},
|
|
1287
|
+
"visibility": "public"
|
|
1288
|
+
},
|
|
1289
|
+
"return_witnesses": [
|
|
1290
|
+
3937, 3938, 3939, 3940, 3941, 3942, 3943, 3944, 3945, 3946, 3947, 3948, 3949, 3950, 3951, 3952, 3953, 3954,
|
|
1291
|
+
3955, 3956, 3957, 3958, 3959, 3960, 3961, 3962, 3963, 3964, 3965, 3966, 3967, 3968, 3969, 3970, 3971, 3972,
|
|
1292
|
+
3973, 3974, 3975, 3976, 3977, 3978, 3979, 3980, 3981, 3982, 3983, 3984, 3985, 3986, 3987, 3988, 3989, 3990,
|
|
1293
|
+
3991, 3992, 3993, 3994, 3995, 3996, 3997, 3998, 3999, 4000, 4001, 4002, 4003, 4004, 4005, 4006, 4007, 4008,
|
|
1294
|
+
4009, 4010, 4011, 4012, 4013, 4014, 4015, 4016, 4017, 4018, 4019, 4020, 4021, 4022, 4023, 4024, 4025, 4026,
|
|
1295
|
+
4027, 4028, 4029, 4030, 4031, 4032, 4033, 4034, 4035, 4036, 4037, 4038, 4039, 4040, 4041, 4042, 4043, 4044,
|
|
1296
|
+
4045, 4046, 4047, 4048, 4049, 4050, 4051, 4052, 4053, 4054, 4055, 4056, 4057, 4058, 4059, 4060, 4061, 4062,
|
|
1297
|
+
4063, 4064, 4065, 4066, 4067, 4068, 4069, 4070, 4071, 4072, 4073, 4074, 4075, 4076, 4077, 4078, 4079, 4080,
|
|
1298
|
+
4081, 4082, 4083, 4084, 4085, 4086, 4087, 4088, 4089, 4090, 4091, 4092, 4093, 4094, 4095, 4096, 4097, 4098,
|
|
1299
|
+
4099, 4100, 4101, 4102, 4103, 4104, 4105, 4106, 4107, 4108, 4109, 4110, 4111, 4112, 4113, 4114, 4115, 4116,
|
|
1300
|
+
4117, 4118, 4119, 4120, 4121, 4122, 4123, 4124, 4125
|
|
1301
|
+
]
|
|
1302
|
+
},
|
|
1303
|
+
"bytecode": "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",
|
|
1304
|
+
"debug_symbols": "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djsORdKOQ5G041Ak7TgUyTBJiKQdhyJpx6FI2nEoknYciqQdByI57DgUSTsORdKOQ5G041AkwyQhknYciqQdhyJpx6FI2nEoknYciORqx6FI2nEoknYciqQdhyIZJgmRtONQJO04FEk7DkXSjkORtONAJDc7DkXSjkORtONQJO04FMlQJ7mV7SC510WXpLzjvAxJecd5GZLyjvMyJOUd52VIyjvOq5Dc5R3nZUjKO87LkJR3nJchKe84L0MyTBIiacehSNpxKJJ2HIqkHYciacdhSMZix6FI2nEoknYciqQdhyIZJgmRtONQJO04FEk7DkXSjkORtONAJIsdhyJpx6FI2nEoknYcimSYJETSjkORtONQJO04FEk7DkXSjgORrHYciqQdhyJpx6FI2nEokmGSEEk7DkXSjkORtONQJO04FEk7DkSy2XEoknYciqQdhyJpx6FIhklCJO04FEk7DkXSjkORtONQJO04EMmw41Ak7TgUSTsORdKOQ5EMk4RI2nEoknYciqQdhyJpx6FI2nEgkt2OQ5G041Ak7TgUSTsORTJMEiJpx6FI2nEoknYciqQdhyJpx4FIDjsORdKOQ5G041Ak7TgUyTBJiKQdhyJpx6FI2nEoknYciqQdByK52nEoknYciqQdhyJpx6FIhklCJO04FEk7DkXSjkORtONQJO04EMnNjkORtONQJO04FEk7DkUyTBIiacehSNpxKJJ2HIqkHYciaceBSO52HIqkHYciacehSNpxKJJhkhBJOw5F0o5DkbTjUCTtOBRJOw5Dsi92HIqkHYciacehSNpxKJJhkhBJOw5F0o5DkbTjUCTtOBRJOw5EsthxKJJ2HIqkHYciacehSIZJQiTtOBRJOw5F0o5DkbTjUCTtOBDJasehSNpxKJJ2HIqkHYciGSYJkbTjUCTtOBRJOw5F0o5DkbTjQCSbHYciacehSNpxKJJ2HIpkmCRE0o5DkbTjUCTtOBRJOw5F0o4DkQw7DkXSjkORtONQJO04FMkwSYikHYciacehSNpxKJJ2HIqkHQci2e04FEk7DkXSjkORtONQJMMkIZJ2HIqkHYciacehSNpxKJJ2HIjkkHecvcflyT9efn0WydpavyBpvTwgKe84L0NS3nFehqS847wMyTBJiKS847wMSXnHeRmS8o7zMiTlHedlSMo7zquQXO04FEk7DkXS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JXtuley5VbLnVsmeWyVlWZLHleRxNXlcSx4XyeN68riRPG5NHrclj0uul5JcLyW5XkpyvZTkeinJ9VKS66Uk10tJrpeSXC8luV5qcr3U5HqpyfVSk+ulJtdLTa6XmlwvNbleanK9JHdmS3JrtiT3Zktyc7Ykd2dLcnu2JPdnS3KDtiR3aEtyi7Yk92hLcpO2JHdpS3KbtiT3aUtyo7Ykd2pLcqu2JPdqS3KztiR3a0tyu7Yk92tLcsO2JHdsS3LLtiT3bEty07Ykd21Lctu2JPdtS3LjtiR3bkty67Yk925LcvO2JHdvS3L7tiT3b0tyA7ckd3BLcgu3JPdwS3ITtyR3cUtyG7ck93FLciO3JHdyS3IrtyT3cktyM7ckd3NLcju3JPdzS3JDtyR3dEtyS7ck93RLclO3JHd1S3JbtyT3dUtyY7ckd3ZLcmu3JPd2S3JztyR3d0tye7ck93drcn+3Jvd3a3J/tyb3d2tyf7cm93drcn+3Jvd3a3J/tyb3d2tyf7cm93drcn+3Jvd3a3J/tyb3d2tyf7cm93drcn+3Jvd3a3J/tyb3d2tyf7cm93drcn+3Jvd3a3J/tyb3d2tyf7cm93drcn+3Jvd3a3J/tyb3d2tyf7cm93drcn+3Jvd3a3J/tyb3d2tyf7cm93drcn+3Jvd3a3J/tyb3d2tyf7cm93drcn+3Jvd3a3J/tyb3d2tyf7cm93drcn+3Jvd3a3J/tyb3d2tyf7cm93drcn+3Jvd3a3J/tyb3d2tyf7cm93drcn+3Jvd3a3J/tyb3d2tyf7cm93drcn+3Jvd3a3J/tyb3d2tyf7cm93drcn+3Jvd3a3J/tyb3d2tyf7cm93drcn+3Jvd3a3J/tyb3d2tyf7cm93drcn+3Jvd3a3J/tyb3d2tyf7cm93drcn+3Jvd3a3J/t+7ZSdbkKGtyf7cl93fb39nfXR8dF8njevK4+XrZx+1x93PLY1wGqMd6vTlK3Y6XWL/+Jbavf4n9y1/i7+xFP/ob/p296IfH1eRxybVdkmu7JNf239mLfnjcmjxuSx63546ryfVSk+ulJtdLTa6XmlwvNbleanK91OR6qcn1UpPrpSXXS/xsjbgctyaP25LH7bnj/sYe2uPjSvK4mjyuJY+L5HE9eVxyvfTkeunJ9dKT62Uk18tIrpeRXC8juV7+4kI5H3sz34/72OW+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"
|
|
1305
|
+
},
|
|
1306
|
+
{
|
|
1307
|
+
"name": "is_valid_public",
|
|
1308
|
+
"function_type": "Open",
|
|
1309
|
+
"is_internal": false,
|
|
1310
|
+
"abi": {
|
|
1311
|
+
"parameters": [
|
|
1312
|
+
{
|
|
1313
|
+
"name": "inputs",
|
|
1314
|
+
"type": {
|
|
1315
|
+
"kind": "struct",
|
|
1316
|
+
"path": "authwit::aztec::abi::PublicContextInputs",
|
|
1317
|
+
"fields": [
|
|
1318
|
+
{
|
|
1319
|
+
"name": "call_context",
|
|
1320
|
+
"type": {
|
|
1321
|
+
"kind": "struct",
|
|
1322
|
+
"path": "authwit::aztec::protocol_types::abis::call_context::CallContext",
|
|
1323
|
+
"fields": [
|
|
1324
|
+
{
|
|
1325
|
+
"name": "msg_sender",
|
|
1326
|
+
"type": {
|
|
1327
|
+
"kind": "struct",
|
|
1328
|
+
"path": "authwit::aztec::protocol_types::address::AztecAddress",
|
|
1329
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
1330
|
+
}
|
|
1331
|
+
},
|
|
1332
|
+
{
|
|
1333
|
+
"name": "storage_contract_address",
|
|
1334
|
+
"type": {
|
|
1335
|
+
"kind": "struct",
|
|
1336
|
+
"path": "authwit::aztec::protocol_types::address::AztecAddress",
|
|
1337
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
1338
|
+
}
|
|
1339
|
+
},
|
|
1340
|
+
{
|
|
1341
|
+
"name": "portal_contract_address",
|
|
1342
|
+
"type": {
|
|
1343
|
+
"kind": "struct",
|
|
1344
|
+
"path": "authwit::aztec::protocol_types::address::EthAddress",
|
|
1345
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
1346
|
+
}
|
|
1347
|
+
},
|
|
1348
|
+
{
|
|
1349
|
+
"name": "function_selector",
|
|
1350
|
+
"type": {
|
|
1351
|
+
"kind": "struct",
|
|
1352
|
+
"path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector",
|
|
1353
|
+
"fields": [
|
|
1354
|
+
{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
|
|
1355
|
+
]
|
|
1356
|
+
}
|
|
1357
|
+
},
|
|
1358
|
+
{ "name": "is_delegate_call", "type": { "kind": "boolean" } },
|
|
1359
|
+
{ "name": "is_static_call", "type": { "kind": "boolean" } },
|
|
1360
|
+
{ "name": "is_contract_deployment", "type": { "kind": "boolean" } },
|
|
1361
|
+
{
|
|
1362
|
+
"name": "start_side_effect_counter",
|
|
1363
|
+
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
1364
|
+
}
|
|
1365
|
+
]
|
|
879
1366
|
}
|
|
880
|
-
|
|
881
|
-
|
|
1367
|
+
},
|
|
1368
|
+
{
|
|
1369
|
+
"name": "block_header",
|
|
1370
|
+
"type": {
|
|
1371
|
+
"kind": "struct",
|
|
1372
|
+
"path": "authwit::aztec::protocol_types::abis::block_header::BlockHeader",
|
|
1373
|
+
"fields": [
|
|
1374
|
+
{ "name": "note_hash_tree_root", "type": { "kind": "field" } },
|
|
1375
|
+
{ "name": "nullifier_tree_root", "type": { "kind": "field" } },
|
|
1376
|
+
{ "name": "contract_tree_root", "type": { "kind": "field" } },
|
|
1377
|
+
{ "name": "l1_to_l2_message_tree_root", "type": { "kind": "field" } },
|
|
1378
|
+
{ "name": "archive_root", "type": { "kind": "field" } },
|
|
1379
|
+
{ "name": "public_data_tree_root", "type": { "kind": "field" } },
|
|
1380
|
+
{ "name": "global_variables_hash", "type": { "kind": "field" } }
|
|
1381
|
+
]
|
|
1382
|
+
}
|
|
1383
|
+
},
|
|
1384
|
+
{
|
|
1385
|
+
"name": "public_global_variables",
|
|
1386
|
+
"type": {
|
|
1387
|
+
"kind": "struct",
|
|
1388
|
+
"path": "authwit::aztec::abi::PublicGlobalVariables",
|
|
1389
|
+
"fields": [
|
|
1390
|
+
{ "name": "chain_id", "type": { "kind": "field" } },
|
|
1391
|
+
{ "name": "version", "type": { "kind": "field" } },
|
|
1392
|
+
{ "name": "block_number", "type": { "kind": "field" } },
|
|
1393
|
+
{ "name": "timestamp", "type": { "kind": "field" } }
|
|
1394
|
+
]
|
|
1395
|
+
}
|
|
1396
|
+
}
|
|
1397
|
+
]
|
|
882
1398
|
},
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
1399
|
+
"visibility": "private"
|
|
1400
|
+
},
|
|
1401
|
+
{ "name": "message_hash", "type": { "kind": "field" }, "visibility": "private" }
|
|
1402
|
+
],
|
|
1403
|
+
"param_witnesses": { "inputs": [{ "start": 0, "end": 19 }], "message_hash": [{ "start": 19, "end": 20 }] },
|
|
1404
|
+
"return_type": {
|
|
1405
|
+
"abi_type": {
|
|
1406
|
+
"kind": "struct",
|
|
1407
|
+
"path": "authwit::aztec::protocol_types::abis::public_circuit_public_inputs::PublicCircuitPublicInputs",
|
|
1408
|
+
"fields": [
|
|
1409
|
+
{
|
|
1410
|
+
"name": "call_context",
|
|
1411
|
+
"type": {
|
|
1412
|
+
"kind": "struct",
|
|
1413
|
+
"path": "authwit::aztec::protocol_types::abis::call_context::CallContext",
|
|
1414
|
+
"fields": [
|
|
1415
|
+
{
|
|
1416
|
+
"name": "msg_sender",
|
|
1417
|
+
"type": {
|
|
1418
|
+
"kind": "struct",
|
|
1419
|
+
"path": "authwit::aztec::protocol_types::address::AztecAddress",
|
|
1420
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
1421
|
+
}
|
|
1422
|
+
},
|
|
1423
|
+
{
|
|
1424
|
+
"name": "storage_contract_address",
|
|
1425
|
+
"type": {
|
|
1426
|
+
"kind": "struct",
|
|
1427
|
+
"path": "authwit::aztec::protocol_types::address::AztecAddress",
|
|
1428
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
1429
|
+
}
|
|
1430
|
+
},
|
|
1431
|
+
{
|
|
1432
|
+
"name": "portal_contract_address",
|
|
1433
|
+
"type": {
|
|
1434
|
+
"kind": "struct",
|
|
1435
|
+
"path": "authwit::aztec::protocol_types::address::EthAddress",
|
|
1436
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
1437
|
+
}
|
|
1438
|
+
},
|
|
1439
|
+
{
|
|
1440
|
+
"name": "function_selector",
|
|
1441
|
+
"type": {
|
|
1442
|
+
"kind": "struct",
|
|
1443
|
+
"path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector",
|
|
1444
|
+
"fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }]
|
|
1445
|
+
}
|
|
1446
|
+
},
|
|
1447
|
+
{ "name": "is_delegate_call", "type": { "kind": "boolean" } },
|
|
1448
|
+
{ "name": "is_static_call", "type": { "kind": "boolean" } },
|
|
1449
|
+
{ "name": "is_contract_deployment", "type": { "kind": "boolean" } },
|
|
1450
|
+
{
|
|
1451
|
+
"name": "start_side_effect_counter",
|
|
1452
|
+
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
893
1453
|
}
|
|
1454
|
+
]
|
|
1455
|
+
}
|
|
1456
|
+
},
|
|
1457
|
+
{ "name": "args_hash", "type": { "kind": "field" } },
|
|
1458
|
+
{ "name": "return_values", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } },
|
|
1459
|
+
{
|
|
1460
|
+
"name": "contract_storage_update_requests",
|
|
1461
|
+
"type": {
|
|
1462
|
+
"kind": "array",
|
|
1463
|
+
"length": 16,
|
|
1464
|
+
"type": {
|
|
1465
|
+
"kind": "struct",
|
|
1466
|
+
"path": "authwit::aztec::protocol_types::contrakt::storage_update_request::StorageUpdateRequest",
|
|
1467
|
+
"fields": [
|
|
1468
|
+
{ "name": "storage_slot", "type": { "kind": "field" } },
|
|
1469
|
+
{ "name": "old_value", "type": { "kind": "field" } },
|
|
1470
|
+
{ "name": "new_value", "type": { "kind": "field" } }
|
|
1471
|
+
]
|
|
1472
|
+
}
|
|
1473
|
+
}
|
|
1474
|
+
},
|
|
1475
|
+
{
|
|
1476
|
+
"name": "contract_storage_reads",
|
|
1477
|
+
"type": {
|
|
1478
|
+
"kind": "array",
|
|
1479
|
+
"length": 16,
|
|
1480
|
+
"type": {
|
|
1481
|
+
"kind": "struct",
|
|
1482
|
+
"path": "authwit::aztec::protocol_types::contrakt::storage_read::StorageRead",
|
|
1483
|
+
"fields": [
|
|
1484
|
+
{ "name": "storage_slot", "type": { "kind": "field" } },
|
|
1485
|
+
{ "name": "current_value", "type": { "kind": "field" } }
|
|
1486
|
+
]
|
|
1487
|
+
}
|
|
1488
|
+
}
|
|
1489
|
+
},
|
|
1490
|
+
{
|
|
1491
|
+
"name": "public_call_stack_hashes",
|
|
1492
|
+
"type": { "kind": "array", "length": 4, "type": { "kind": "field" } }
|
|
1493
|
+
},
|
|
1494
|
+
{
|
|
1495
|
+
"name": "new_commitments",
|
|
1496
|
+
"type": {
|
|
1497
|
+
"kind": "array",
|
|
1498
|
+
"length": 16,
|
|
1499
|
+
"type": {
|
|
1500
|
+
"kind": "struct",
|
|
1501
|
+
"path": "authwit::aztec::protocol_types::abis::side_effect::SideEffect",
|
|
1502
|
+
"fields": [
|
|
1503
|
+
{ "name": "value", "type": { "kind": "field" } },
|
|
1504
|
+
{ "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
|
|
1505
|
+
]
|
|
1506
|
+
}
|
|
1507
|
+
}
|
|
1508
|
+
},
|
|
1509
|
+
{
|
|
1510
|
+
"name": "new_nullifiers",
|
|
1511
|
+
"type": {
|
|
1512
|
+
"kind": "array",
|
|
1513
|
+
"length": 16,
|
|
1514
|
+
"type": {
|
|
1515
|
+
"kind": "struct",
|
|
1516
|
+
"path": "authwit::aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash",
|
|
1517
|
+
"fields": [
|
|
1518
|
+
{ "name": "value", "type": { "kind": "field" } },
|
|
1519
|
+
{ "name": "note_hash", "type": { "kind": "field" } },
|
|
1520
|
+
{ "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
|
|
1521
|
+
]
|
|
894
1522
|
}
|
|
895
|
-
|
|
1523
|
+
}
|
|
1524
|
+
},
|
|
1525
|
+
{ "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
|
|
1526
|
+
{
|
|
1527
|
+
"name": "unencrypted_logs_hash",
|
|
1528
|
+
"type": { "kind": "array", "length": 2, "type": { "kind": "field" } }
|
|
1529
|
+
},
|
|
1530
|
+
{ "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } },
|
|
1531
|
+
{
|
|
1532
|
+
"name": "block_header",
|
|
1533
|
+
"type": {
|
|
1534
|
+
"kind": "struct",
|
|
1535
|
+
"path": "authwit::aztec::protocol_types::abis::block_header::BlockHeader",
|
|
1536
|
+
"fields": [
|
|
1537
|
+
{ "name": "note_hash_tree_root", "type": { "kind": "field" } },
|
|
1538
|
+
{ "name": "nullifier_tree_root", "type": { "kind": "field" } },
|
|
1539
|
+
{ "name": "contract_tree_root", "type": { "kind": "field" } },
|
|
1540
|
+
{ "name": "l1_to_l2_message_tree_root", "type": { "kind": "field" } },
|
|
1541
|
+
{ "name": "archive_root", "type": { "kind": "field" } },
|
|
1542
|
+
{ "name": "public_data_tree_root", "type": { "kind": "field" } },
|
|
1543
|
+
{ "name": "global_variables_hash", "type": { "kind": "field" } }
|
|
1544
|
+
]
|
|
1545
|
+
}
|
|
1546
|
+
},
|
|
1547
|
+
{
|
|
1548
|
+
"name": "prover_address",
|
|
1549
|
+
"type": {
|
|
1550
|
+
"kind": "struct",
|
|
1551
|
+
"path": "authwit::aztec::protocol_types::address::AztecAddress",
|
|
1552
|
+
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
1553
|
+
}
|
|
896
1554
|
}
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
"bytecode": "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",
|
|
902
|
-
|
|
1555
|
+
]
|
|
1556
|
+
},
|
|
1557
|
+
"visibility": "public"
|
|
1558
|
+
},
|
|
1559
|
+
"return_witnesses": [
|
|
1560
|
+
20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
|
|
1561
|
+
47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
|
|
1562
|
+
74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
|
|
1563
|
+
101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
|
|
1564
|
+
123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
|
|
1565
|
+
145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
|
|
1566
|
+
167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
|
|
1567
|
+
189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209
|
|
1568
|
+
]
|
|
1569
|
+
},
|
|
1570
|
+
"bytecode": "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",
|
|
1571
|
+
"debug_symbols": "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nLhkcuKKyYkrJieumJy4YnLi6kE0gYvJiSsmJ66YnLhicuKKyYkrJieumJy4YnLiismJKyYnrpicuGJy4orJiSsmJ66YnLhicuKKyYkrJieumJy4YnLiismJKyYnrpicuGJy4orJiSsmJ66YnLhicuKKyYkrJieumJy4YnLiismJKyYnrpicuGJy4orJiSsmJ66YnLhicuKKyYkrJieumJy4YnLiismJKyYnrpicuGJy4orJiSsmJ66YnLhicuKKyYkrJieumJy4YnLiismJKyYnrpicuGJy4orJiSsmJ66YnLhicuKKyYkrJieumJy4YnLiismJKyYnrpicuGJy4orJiSsmJ66YnLhicuKKyYkrJieumJy4YnLiismJKyYnrpicuGJy4orJiSsmJ66YnLhicuKKyYkrJieumJy4YnLiismJKyYnrpicuGZy4prJiWsmJ66ZnLh+EE3gZnLimsmJayYnrpmcuGZy4prJiWsmJ66ZnLhmcuKayYlrJieumZy4ZnLimsmJayYnrpmcuGZy4prJiWsmJ66ZnLhmcuKayYlrJieumZy4ZnLimsmJayYnrpmcuGZy4prJiWsmJ66ZnLhmcuKayYlrJieumZy4ZnLimsmJayYnrpmcuGZy4prJiWsmJ66ZnLhmcuKayYlrJieumZy4ZnLimsmJayYnrpmcuGZy4prJiWsmJ66ZnLhmcuKayYlrJieumZy4ZnLimsmJayYnrpmcuGZy4prJiWsmJ66ZnLhmcuKayYlrJieumZy4ZnLimsmJayYnrpmcuGZy4prJiWsmJ66ZnLhmcuKayYlrJieumZy4ZnLimsmJayYnrpmcuGZy4prJiWsmJ66ZnLhmcuKayYlrJidumJy4YXLihsmJGyYnbh5EE3iYnLhhcuKGyYkbJidumJy4YXLihsmJGyYnbpicuGFy4obJiRsmJ26YnLhhcuKGyYkbJidumJy4YXLihsmJGyYnbpicuGFy4obJiRsmJ26YnLhhcuKGyYkbJidumJy4YXLihsmJGyYnbpicuGFy4obJiRsmJ26YnLhhcuKGyYkbJidumJy4YXLihsmJGyYnbpicuGFy4obJiRsmJ26YnLhhcuKGyYkbJidumJy4YXLihsmJGyYnbpicuGFy4obJiRsmJ26YnLhhcuKGyYkbJidumJy4YXLihsmJGyYnbpicuGFy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"
|
|
903
1572
|
}
|
|
904
1573
|
],
|
|
905
1574
|
"events": [],
|
|
906
|
-
"
|
|
907
|
-
"
|
|
908
|
-
"eJzt3d+O7MZxx/F3OddCwPrf1KsEuTASBzBgyEHkO0Pv7hGimV1DfcRzMj3b3yX7KkYwI1YVNT8WR/sZ/uPLX//2n3/6+1/+9tPPX378x5ft3yS+/Pjv//jy8//86adf/x8///1P//v3Lz9uP3z580//dfu/v/zw5b//8tc/f/lRt/2XH373Os1W8dtrb/+77Y/XZ3ZeLlX3F2/v/tH1y3/88GspySmlOKU0Tik7phTdOKUIpxTllGKcUpxTCidtlZO2yklb5aStctLWOGlrnLQ1TtoaJ22Nk7bGSVvjpK1x0tY4aWuctHVO2jonbZ2Tts5JW+ekrXPS1jlp65y0dU7aOidtg5O2wUnb4KRtcNI2OGkbnLQNTtoGJ22Dk7bBSdvkpG1y0jY5aZuctE1O2iYnbZOTtslJ2+SkbXLStjhpW5y0LU7aFidti5O2xUnb4qRtcdK2OGlbnLRtnLRtnLRtnLRtnLRtnLRtnLRtnLRtnLRtnLRtnLTdOWm7c9J256TtzknbnZO2Oydtd07a7py03Tlpu3PSVjZO3MrGyVvZOIErGydxZeNErmyczJWNE7qycVJXNk7sygbKXQHlroByV0C5K6DcFVDukmwZCZeRdBmJl4F8mYCAmYCEmYCImYCMmYCQmYCUmYCYmYCcmYCgmYCkmYComYCsmYCwmYC0mYC4mYC8mYDAmYDEmYDImYDMmYDQmYDUmYDYmYDcmYDgmYDkmYDomYDsmYDwmYD0mYD4mYD8mYAAmoAEmoAImoAMmoAQmoAUmoAYmoAcmoAgmoAkmoAomoAsmoAwmoA0moA4moA8moBAmoBEmoBImoBMmoBQmoBUmoBYmoBcmoBgmoBkmoBomoBsmoBwmoB0moB4moB8moCAmoCEmoCImoCMmoCQmoCUmoCYmoCcmoCgmoCkmoComoCsmoCwmoC0moC4moC8moK8moK8moK8moK8mm6c3FWQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQV1OQVzOQVzOQVzOQVzOQV7ONk7sG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moG8moO8moO8moO8moO8mq+cXLXQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV7NQV4tQF4tQF4tQF4tQF4tNk7uBsirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcirBcir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ycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQJycQpycQpycQpycQpycTpBkpgJZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4JZk4I5k4I5k4I5k4I5k420AJbCQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQTZyQT5yQT5yQT5yQT5yQT5xsogZ1k4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4pxk4oJk4oJk4oJk4oJk4mIDJXCQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFyQTFySTFySTFySTFySTFxuoAROkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkolLkokrkokrkokrkokrkomrDZTARTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxRTJxjWTiGsnENZKJayQT1zZQAjeSiWskE9dIJq6RTFwjmbhGMnGNZOIaycQ1kolrJBPXSCaukUxcI5m4RjJxjWTiGsnENZKJayQT10gmrpFMXCOZuEYycY1k4hrJxDWSiWskE9dIJq6RTFwjmbhGMnGNZOIaycQ1kolrJBPXSCaukUxc65s4111+e5vb1v6lpPsbu2n5LW/sJtu3vLGbQt/yxm5iuFk93rhL943dT/e3vLH7SXTfHqX6ngcn2nzbf3u1ubydu9LHUbofseFH6X52vvMolu+OIu+P0nnxrnZ/8e7ZKalvmuaW1P8cTS2p/wmdWlL/sz+1pH6qTC2pn1dTS+on4dSSRmTs4JJGBPLgknjp3fdQc0vipXffRs0tiZfefSc1tyReevfN1NySeOnd91NzS+Kld99SzS2Jl959VzW3JF569yXRC0uSzX97rYi9fXHij4I+OpWOCuq7mVcWpO1ekO69gj76s3ZY0Ed/0g4L+ujP2WFBH70jHRb02g3pfpTXhsv9KEMSI+rtKPrHw1Wxe2SoxNuLVbZHTUMWmcE1DdlkxtbUJzEvrSnjUVOzbk1D8nVwTUMidnBNQ1L2e2pSfdSk3q9pSNAOrmlI1g6uaUgyf7Wm+1Fem8z3o7w2a+9HeW16/t9R9j5QGX6U1ybc/Sivzaz7UV6bQvejvDZX7kd5bVLcj/IRn/297zGGH+UjPvt7X1CMPkqfRgw/yod89vuYYfhRPuSz3+cHw4/yIZ/9PhgYfpQhf3sh7XGUONp46lGSVnv3Rza//jnFd7363sGQv+uY2sGIzJraQR8qfKoORmTt3A5G5PjcDkZcI+Z2MOL6M7eDEde2ePzJn0VuBx34fm9Xw/SgA9n2ut8wi2z29oWpbP7oYcSVc3YPI67Ls3sYcWWe3cOIa/PkHvqI5ZP1MOL6PLuHEVfo2T2MuEbP7mHEVXp2Dye4Tvc50Cfr4QTX6T4++mQ9nOA63adOn6yHE1ynv4K1PlcPJ7hOf4Wwfa4ehlyn2+MbgXz3H4n7f0eoj7/BqXdfHvj/u4EhF+mZDQy5Qs9sYMjleWYDQ67NExsYIiinNjDkqjyzgSGX5JkNDLkez2xgyMV4ZgOf/Uo8RJVObeCzX4mHiNWpDXz2K/EQDZv1kDb17jDdBsLuDcS7f/ATDYy4Ek9tYMSVeGoDI67EUxsYcSWe2sCIK/HUBkZciac2MOJKPLWBEVfiqQ2MuBLPbGCIbJ7awGe/Eg9R01Mb+OxX4v5TLz9TA5/9SjzExFflvYH27lv/bgP18FrVRtzQDDH0UxsYcSWe2sCIK/HMBob86sHUBkZciac2MOJKPLWBEVfiqQ2MuBJPbWDElXhqA5/9SjzktymmNvDZr8RDfvViZgNDfiJjagOf/Uo85Mc3vv5LXL9/scZ+f7Gm1Ns/uv8nQxr3V4u985hfe/Xjv7SIHRWyy/2fvNfBnznF4zfAU/ygvfF/ETXkt0jWKXrpKRqxTa1T9NJTNGJfXKfopadoxEa8TtFLT9GInX+dopeeohF3NesUvfQUjbhvW6fodadItyE/VrZO0UtP0Yh773WKXnqK1rcL+FO0vl3An6L17QL+FK1vF/CnaH27gD9F69sF/Cla3y7gT9H6doF+iob8HPI6RS89RevbheNTlPo4RXX0uK6hsPF2ftZXC+zzs75XYJ+f9aUC+/ysbxTY52d9ncA+P+u7BPb5WV8ksM/P+hYBfX6GPEFknZ/XnZ/1/QH7/KzvD9jnZ31/wD4/6/sD9vlZ3x+wz891vz+o+w+M32bT/vi1Y3/+5Db1634rMHPq173Xnzn1697BT5z6kGeHral/79Sve7c9c+rXvYeeOfXr3hnPnPp173dnTv26d7Ezp77uTWdMfd2bzpj6ujedMfV1bzph6kOel7mm/r1TP9W9qb292reDP8sf+2N1t0me6n5z6iRPdQ85dZKnui+cOslT3etNneSp7t+mTvJU92RTJ3mq+6ypkzzVvdPMSQ55TPGa5K+TXPc4oya57nFGTXLd44ya5LrHGTXJdY8zapLwexyzRwuWcvDqtMffocbbcPbqfTv5aDDi7VnS+9tc4Hcs0+YCv/+YNhf43cSsuQx5cPoZ5wLf9KfNBb63T5sLfAufNhf4Tj1tLvANedpc1r7bn8vad/tzWftufy5r3+3Opda+25/L2nf7c1n7bn8ua9/tz2Xtu/25rH23P5e17/bnsvbd/lzWvtufy9p3u3Npa9/tz2Xtu/25rH23P5e17/bnsvbd/lzWvtufy9p3+3NZ+25/Lmvf7c9l7bvduexr3+3PZe27/bmsfbc/l7Xv9uey9t3+XNa+25/L2nf7c1n7bn8ua9/tz2Xtu725yLb23f5c1r7bn8vad/tzWftufy5r3+3PZe27/bmsfbc/l7Xv9uey9t3+XNa+250L/ZHy0+ay9t3+XNa+25/L2nf7c1n7bn8ua9/tz2Xtu/25rH23P5e17/bnsvbd7lzozz+eNper7ru73l+6SW8uV913j+Zy1X33aC4X3Xdzu1eR734A7N1cLrrvHs7lovvu4Vwuuu9m3p9OkVW9uVx03z2cy0X33aO50J8r+qq5lGy/vbTiX+by+5fu7fGQl1s5j9febhV6BX/Dj0wK/bGi5xz6RTf1uUO/6G3A3KFf9B5j7tAvegMzd+gXvTuaO/SL3nrNHfpF7+vmDv2iN41Th05/mug5h77uSCcMfd2RThj6uiOdMPR1Rzph6OuOdMLQ1x3phKGvO9IJQ193pBOGvu5IP37o9Oe5vmzodR9627b3Q7/P5ao3jUdzuep93dFcTnXrVfeqS/5lLvdmT3XLc9TsqW41jpo91Yp/1OypVuujZk+10h41e6pV8qDZcz1286jZU+1lR82eatk6avZKG9S5HmV51OyVNqhzPXTyqNkrbVDnejzkUbNX2qDO9SDHo2avtEGd65GLR81eaYM618MRj5q90gZ1rscYHjV7pQ3qXA8cPGr2ShvUuR4NeNTslTaocz3E76jZK21Q53rc3lGzV9qgzvVgvKNmr7RBnesRdkfNXmmDOtfD5o6avdIGda7Hwh01e6UN6lwPcDtq9kob1LketXbU7JU2qHM9FO2o2QttUHqux5cdNXuhDUrP9aCxo2YvtEHpdqENSs/1nK+jZi+0Qem5nsh11OyFNig917OzDpo91wOxjpq90gZ1rkdXHTV7pQ3qXA+ZOmr2ShvUuR4HddTslTaocz246ajZK21Q53rE0lGzV9qgzvUwpKNmr7RBneqxRbvv9xdvW73vtlfH/R9sWzxeKm+DOdO2NXQwZ9rMhg7mTFvc0MGcaeMbOpgzbYdfH8xv3Z7qiUTH3Z5pP5TN9dFueq/dM22I39DumXbEb2j3TFuibLodtHum3e8b2j3TRvcN7Z5pT5Pb5ef+atHeHd6pHjDyDe2eaac6bvdUD9WQrdpBu+faqg7bPddWddgufKtyu79awg9f/Q2/QKz05ye8oGP4bvWCjuHr1Qs6hm9YL+gYvmS9oGP4njW+Y/qvxb+gY/i29YKO4QvXCzq+3M5F/wH3F3R8uZ2L/lPuL+j4cjsX/UfdX9Dx5XYu+s+7v6Djy+1c9B96H9/xkN92sbz/F2hzkT/u+HbsR01vT87KR0FDfn9laEEjPgVDCxrxL+nQgkbs7UMLGrFWf1dBb59Lb72CRmy9QwsasZR+V0H6+MJd915BI3bGoQWNWOmGFvThSf3HBdmQ33kYWtCHJ/VRQR+e1EcFfXhSHxX04Ul9VNCHJ/VRQbCktiHGfmhBsKS2IVZ9ZEFDPPnQgmhJPcRlDy2IltRDfPPQgmhJPcQJDy2IltRDvO3QgmhJPcStDi2IltRD/OfQgmhJPcRRDi2IltRD3ODQgmhJ3QdSlnmvR97K2d/e1Q2Lw3d1P9GH7+p+7A7f1f1sHL3rK3/Z/HgUfWxvM3z8Cal95Q+Ej97Vz7ejd/VD6Ohd/aQ4elf/43z0rv5n7uhd/Q+G3P+7Rvz6Xz7e3vX7f9H94Yk83j4Tt7N8P0B/JRl4gP6KMe4AX/lbsO84QNxzw7P1DtD/93jgAfr/yo84wC+//BPeWnUo",
|
|
909
|
-
"
|
|
910
|
-
"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oUjacSiSdhyKpB2HImnHoUjacSiSdhyIpPztG45D0o5DkbTjUCTtOBRJOw5F0o5DkbTjUCTtOBRJOw5F0o4DkZS/Mc5xSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHYciacehSNpxIJLyt646Dkk7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkNylL/P33FI2nEoknYciqQdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEgkvL3TT0OSTsORdKOQ5G041Ak7TgUSTsORdKOQ5G041Ak7TgUSTsORFL+PtTHIWnHoUjacSiSdhyKpB2HImnHoUjacSiSdhyKpB2HImnHgUhmOw5F0o5DkbTjUCTtOBRJOw5F0o5DkbTjUCTtOBRJOw5F0o4DkSx2HIqkHYciacehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHQciWe04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkRysuNQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04EMnZjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONAJBc7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjgORXO04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkMyDXYciqQdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEoknYciqQdByI52nEoknYciqQdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEoknYciGSy41Ak7TgUSTsORdKOQ5G041Ak7TgUSTsORdKOQ5G041Ak7TgQyWzHoUjacSiSdhyKpB2HImnHoUjacSiSdhyKpB2HImnHoUjacSCSxY5DkbTjUCTtOBRJOw5F0o5DkbTjUCTtOBRJOw5F0o5DkbTjQCSrHYciacehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHYciaceBSE52HIqkHYciacehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHQciOdtxKJJ2HIqkHYciacehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIjkYsehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHYciacehSNpxIJKrHYciacehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHYciacdhSObBjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONAJEc7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjgORTHYciqQdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEoknYciqQdByKZ7TgUSTsORdKOQ5G041Ak7TgUSTsORdKOQ5G041Ak7TgUSTsORLLYcSiSdhyKpB2HImnHoUjacSiSdhyKpB2HImnHoUjacSiSdhyIZLXjUCTtOBRJOw5F0o5DkbTjUCTtOBRJOw5F0o5DkbTjUCTtOBDJyY5DkbTjUCTtOBRJOw5F0o5DkbTjUCTtOBRJOw5F0o5DkbTjQCRnOw5F0o5DkbTjUCTtOBRJOw5F0o5DkbTjUCTtOBRJOw5F0o4DkVzsOBRJOw5F0o5DkbTjUCTlHSdNdSOZp1mXpLzjHIakvOMchqS84xyGpLzjHIakvOMcheQq7ziHISnvOIchKe84hyEp7ziHIWnHoUjacSiSdhyKpB2HImnHoUjacRiSZbDjUCTtOBRJOw5F0o5DkbTjUCTtOBRJOw5F0o5DkbTjUCTtOBDJ0Y5DkbTjUCTtOBRJOw5F0o5DkbTjUCTtOBRJOw5F0o5DkbTjQCSTHYciacehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHYciaceBSGY7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjgORLHYciqQdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEoknYciqQdByJZ7TgUSTsORdKOQ5G041Ak7TgUSTsORdKOQ5G041Ak7TgUSTsORHKy41Ak7TgUSTsORdKOQ5G041Ak7TgUSTsORdKOQ5G041Ak7TgQydmOQ5G041Ak7TgUSTsORdKOQ5G041Ak7TgUSTsORdKOQ5G040AkFzsORdKOQ5G041Ak7TgUSTsORdKOQ5G041Ak7TgUSTsORdKOA5Fc7TgUSTsORdKOQ5G041Ak7TgUSTsORdKOQ5G041Ak7TgUSTsOQ7IOdhyKpB2HImnHoUjacSiSdhyKpB2HImnHoUjacSiSdhyKpB0HIjnacSiSdhyKpB2HImnHoUjacSiSdhyKpB2HImnHoUjacSiSdhyIZLLjUCTtOBRJOw5F0o5DkbTjUCTtOBRJOw5F0o5DkbTjUCTtOBDJbMehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHYciacehSNpxIJLFjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONAJKsdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEoknYciqQdhyJpx4FITvKOU4aNzR8/GelFMuV8+YumXMcdkvKOcxiS8o5zGJLyjnMYkvKOcxiS8o5zGJLyjnMYkvKOcxiS8o5zGJLyjnMUkrMdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEoknYciqQdhyJpx4FILnYciqQdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEoknYciqQdByK52nEoknYciqQdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEoknYchuQ02HEoknYciqQdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEoknYciORox6FI2nEoknYciqQdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEgksmOQ5G041Ak7TgUSTsORdKOQ5G041Ak7TgUSTsORdKOQ5G040Aksx2HImnHoUjacSiSdhyKpB2HImnHoUjacSiSdhyKpB2HImnHgUgWOw5F0o5DkbTjUCTtOBRJOw5F0o5DkbTjUCTtOBRJOw5F0o4Dkax2HIqkHYciacehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHQciOdlxKJJ2HIqkHYciacehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIjkbMehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHYciacehSNpxIJKLHYciacehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHYciaceBSK52HIqkHYciacehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHYchOQ92HIqkHYciacehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHQciOdpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIhksuNQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04EMlsx6FI2nEoknYciqQdhyJpx6FI2nEokvKOs2wPH8d1GG5JfiaQd4swgXxPHyaQ76WjBPr3sQ8TyPeOYQL5ni1MIN8rhQnke5QwgXxvECY4fE2Wvx92znO5/OM5r/U+gXpNjhOo1+Qwgfx9l+ME6jU5TqBek+ME6jU5TqBek+ME6jU5TqBek+ME8jW5lLwlqHm+TyBfk8ME8jU5SiB/n9A4gXxNrjfv5Cndd9fy98WME8jX5DCBfE2eynRN8Me/+NcE8jU5TCBfk8ME8jV5Hq4JPtq4+wTyNTlMIF+TowTy97XL882n6TLuJJCvyWEC+ZocJpCvyUu+STDdf5rK37espGXrTUsu912F/P3CysfjtwRlzPcJ1Gvyhx6M1wRruU+gXpNLHdOWYBp23gfqNTlOoF6TwwTy92Eq0/UfL/Nw/06Wv/9RnEC9Jpe5Xj+LPrT+NsHe127z9tmbbuJ+yOrOo+syfz14yTePLcsXG/Vq/yKbNM4bm5ICNikNl5eS0s1PqD7e1vsvZfu2s+abf7vmvUcP63z5ydU4DvkKcRzKF3v5PuU3ss8fxC8vJdUlYD+Nl4ZpWq5HeWPa/Ts9QV6+v/qd5Ou263Od52jXP0FTvtd7jeYwb915ujms+YPmZ16iM5yuP52YxzXK+9EKbW+WsQT/dipleyW3nW0Z9x48lnH7DLz5Cce8RzLldFGv9CGP1wenvfdsuvzD0xw8NKd1+3Ne/zrz7s9en9iPRN/rv8/v+/sQXb3/Pr/t79Phzitl2P4+t9/VPfg8X/K6/fGXMt5bV4c7ntAJfr5DoRMQXYHf5b/vXe4uRvvv4y5G++8jfzaJWs/S4U4kr1WkNU+bBa95XoK8y/boNCxpJ+/Pn3vmvOXNf7zo7/OO6/Y12J/Pvh2KDF8Bfv7YEw7w830oHEC9iavTvP3jdSl3P5JbOtzC4LUE03A9DJ/GNH7/pr/O107p5jC8rl9pf/4rv55pf/7rwZ5pf75cd0zb4ZL6PdP+fKnumfbn63rPtOqHUWxa9YMrNq16f8SmPVUv1eFy5i+mHWu6pp3vfjaydLiMOJ1AvueJEnS4bDadQL43CRPI9xthAvkeIkwg3xeECeRrfZhAvn6HCeRrchq2Q+jp9hd5WwL5mhwmkK/JUYIOl3mlE8jX5DCBfE0OE8jX5DCBfE0OE8jX5DCBfE0OE+jX5Ouo15Tm9T6Bfk2OEujX5CBBh8tW0gn0a3KUQL8mRwn0a3KUQL8mRwn0a3KUQL8mRwnka/K0XC8UPv/aVbx8Ut/hEpc908rXejJth0tn9kwr30OgaeX7DTStfG+CppXvY9C08j0Pmla+P0LTnqqX6nBp0hfTzuu1913G+963w6VJ4QQdLk1KJ5DvY8IE8r1JmEC+3wgTyPcQYQL5viBMIF/rwwTy9TtMIF+Tl5vzqGXnPKrDpUnhBB0uTUonkK/JYQL5mhwmkK/JYQL5mhwmkK/JYQL5mhwmkK/JYQL5mrymbf5/Wst0n0C+JkcJOlyalE4gX5PDBPI1OUwgX5PDBPI1OUwgX5PDBPI1OUwgX5PDBPo1ed0SzMP9rQsW5MKCXROs+jU5SqBfk6ME+jU5SqBfk6ME+jU5SqBfk6ME+jU5SqBfk6MEh6/JHS6T9+KFTIe8TU0uw3w3obHKX/guTqBek+ME6jU5TqBek5dhvSYYy3ifQL0mxwnUa3KcQL0mL2Pd5t2WdH9FwVX+GntxAvWaHCeQr8lRAvnr28UJ5GtymEC+JgeXqF/lry0XJ5CvyWEC+ZpcSrkmWO4MZ5W/rlucQL4mhwnka/I6XN8Ha935NJWvyTdXxP+wmbub1q7y12r7MJjtVwkf9fe+u5a/VttHzV23BCndvw/kr9UWJ1CvyXEC9Zr88Qq3zm7NaeedrF6T4wTqNfnFm1Ws83YusK43/3jDLV9X+avAvcYmDdtIVhryFLBJw7JsMceb236U3Zu4wrd8XeWvX/db2afl8sJT/mVn7tH8cJuvB6/r9Q0+pv2b18Tk1furtyUvf73A9yUv38++LXn5Pvxtycv7w9uSl/eetyUv72tvS/69PPNI5E9tsV3J22F7kbfDdiIvf33d9yVvh+1F3g7bi7wdthf5UztsSZdv1VKZhoB8XS7kp3pLfvdlP0H+1A7blfypHbYr+VM7bFfyp3bYruRP7bA9yctfC/59yZ/aYbuSP7XDdiV/aoftSt4O24u8HbYXeTtsL/J22F7k7bC9yNthO5GXv7fHbyU/Dds3I9Pto3fJT9vXKPN6O+cwfJE8tZOiJE/tmCjJUzsjSvLUDoiSPLXToSRP7WgoyVM7F0ry1A6Fkjy1E5Ek5e+VdBySdhyKpB2HImnHoUjacSiSdhyK5KkdZ05bzLmOAck/Lpy3/ds3UK4sT205MMtTew7M8tSmw7KUvwfdkVie2nZglqf2HZjlqY0HZnlq54FZntp6YJb2Ho6lvYdjae/hWNp7MJby9/k8Ekt7D8fyzN6T0/Wl5LH8wvKTznuZzLhsj07Dkn6h85lX3zaud937yLt+n7eOl18X15vbV9T0FVZfB8Cw+v06GFa/oQbD6ne8YFj9lpQKmwb5+9CiYfWbOjCsftcFhtVvosCw5+mgPsKep4P6CPu2HVSZ7sO+bQe1F/ZtO6i9sG/bQe2Elb9rMBr2bTuovbBv1kHNl2OrevPQLeybdVDfh32zDur7sG/WQX0f9s06qO/DvlkH9X3YN+ugvg/7Zh3Ut2H17/FMhn2zDur7sD/fVNTlcnPVPN/cjXs/7Dqly8tf57s7wH+8/p/vE156/eMwbB3sx3/X4Lu5afvicko318Cv61fan28Ueqb9+U6hZ9qfbxV6pv35XqFn2p9vFjqm7XDn355pf75d6Jn2509ceqYV747gtKfqpTrcPfXVtMu6pR3H4TbtZwL9/ihKoN/zRAn0+5gogX5vEiTocJdGOoF+DxEl0O8LogT6tT5KoF+/owTyNXkswzXBNN4nkK/JYQL5mhwmkK/JYQL5mhwl6HDXKTqBfE0OE8jX5DCBfE0OE8jX5DCBfk1er6cCaZzuE+jX5CiBfk2OEujX5CiBfk0OEnS4iwadQL8mRwn0a3KUQL8mRwn0a3KUQL4mT+PV9Kcp3SZ4+aS+wx0EeqaVr/VoWvm+AE0r30OQaTtc0b5nWvneBE0r38egaeV7HjStfH+Epj1VL9XhSuUvpp3z9o9//G3m27SfCeT7ozCBfM8TJpDvY6IEHa5ATSeQ7zfCBPI9RJhAvi8IE8jX+jCBfP0OE+jX5PWaYBl3EujX5CiBfk2OEujX5CBBh6uj0gn0a3KUQL8mRwn0a3KUQL8mRwn0a3KUQL4mL1O+JljKfQL5mhwmkK/JYQL5mhwkGDtcfZJOIF+TwwTyNTlMIF+TwwTyNTlMIF+TwwTyNXnN1wRrzfcJ5GtymEC+JocJ5GtylKDD9QzpBPI1OUwgX5PDBPI1OUwgX5PDBPI1OUxw+Jrc4RJ9ryX4eKduExpjyr9MTe48/PoDgHEqNw8uew/Oy3J5cEklePBwQ7JckXzdReiDpHpvcByS6j3KYUh2uHLhu5JU79mOQ1K9dzwOSfUe9jgk1Xvp45BU7+mPQ1LdLY5D0o5DkbTjUCTtOBBJ+eutHoekHYciacehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHQciKX+N5+OQtONQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONAJOWvmX8cknYciqQdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEoknYciKT8PUiOQ9KOQ5G041Ak7TgUSTsORdKOQ5G041Ak7TgUSTsORdKOA5GUv+/RcUjacSiSdhyKpB2HImnHoUjacSiSdhyKpB2HImnHoUjacSCS8vdPOw5JOw5F0o5DkbTjUCTtOBRJOw5F0o5DkbTjUCTtOBRJOw5EUv5+lMchacehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHYciacdhSCb5+/seh6QdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEoknYciqQdByIpf7/045C041Ak7TgUSTsORdKOQ5G041Ak7TgUSTsORdKOQ5G040Akkx2HImnHoUjacSiSdhyKpB2HImnHoUjacSiSdhyKpB2HImnHgUhmOw5F0o5DkbTjUCTtOBRJOw5F0o5DkbTjUCTtOBRJOw5F0o4DkSx2HIqkHYciacehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHQciWe04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkRysuNQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04EMnZjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONAJBc7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjgORXO04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkMyD3YciqQdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEoknYciqQdByI52nEoknYciqQdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEoknYciGSy41Ak7TgUSTsORdKOQ5G041Ak7TgUSTsORdKOQ5G041Ak7TgQyWzHoUjacSiSdhyKpB2HImnHoUjacSiSdhyKpB2HImnHoUjacSCSxY5DkbTjUCTtOBRJOw5F0o5DkbTjUCTtOBRJOw5F0o5DkbTjQCSrHYciacehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHYciaceBSE52HIqkHYciacehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHQciOdtxKJJ2HIqkHYciacehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIjkYsehSNpx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Ow5F0o5DkbTjUCTtOBRJOw5F0o5DkbTjMCTrYMehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHYciacehSNpxIJKjHYciacehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHYciaceBSCY7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjgORzHYciqQdhyJpx6FI2nEoknYciqQdhyJpx6FI2nEoknYciqQdByJZ7DgUSTsORdKOQ5G041Ak7TgUSTsORdKOQ5G041Ak7TgUSTsORLLacSiSdhyKpB2HImnHoUjacSiSdhyKpB2HImnHoUjacSiSdhyI5GTHoUjacSiSdhyKpB2HImnHoUjacSiSdhyKpB2HImnHoUjacSCSsx2HImnHoUjacSiSdhyKpB2HImnHoUjacSiSdhyKpB2HImnHgUgudhyKpB2HImnHoUjacSiSdhyKpB2HImnHoUjacSiSdhyKpB0HIrnacSiSdhyKpB2HImnHoUjacSiSdhyKpB2HImnHoUjacSiSdhyG5DTYcSiSdhyKpB2HImnHoUjacSiSdhyKpB2HImnHoUjacSiSdhyI5GjHoUjacSiSdhyKpB2HImnHoUjacSiSdhyKpB2HImnHoUjacSCSyY5DkbTjUCTlHSdNdSOZp1mXpLzjHIakvOMchqS84xyGpLzjHIakvOMchqS84xyGpLzjHIVklnecw5CUd5zDkLTjUCTtOBRJOw5F0o5DkbTjUCTtOBRJOw5F0o4DkSx2HIqkHYciacehSNpxKJJ2HIqkHYciacehSNpxKJJ2HIqkHQciWe04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkRysuNQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04EMnZjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONAJBc7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjgORXO04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkNyHuw4FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04FEk7DkRytONQJO04FEk7DkXSjkORtONQJO04FEk7DkXSjkORtONQJO04EMlkx6FI2nEoknYciqQd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435p/eFt4/nug+HaJ9Y17pfG890H05NPrGvcL43nuw/G455Y17hfGs93H8w/xesaz3cfTOU8sa5xvzSe76bG893UeL6bGs93U+P5bmo8302N57up8Xw3NZ7vpsbz3dR4vpsaz3dT4/luajzfTY3nu6nxfDc1nu+mxvPd1Hi++2DM6ol1jful8Xw3NZ7vpsbz3dR4vpsaz3dT4/luajzfTY3nu6nxfDc1nu+mxvPd1Hi+mxrPd1Pj+W5qPN9Njee7qfF8NzWe76bG893UeL6bGs93U+P5bmo8302N57up8Xw3NZ7vpsbz3dR4vpsaz3fTM+e78966J/bL7ron9svuuif2y+66J/bL7ron9svuuif2y866/Mz57u66J/bL7ron9svuurb9kp85391d17Zf8jPnu7vr2vZLfuZ8d3dd43555nx3d13jfnnmfHd3XeN+eeZ8d3dd43555nx3d128X9bpdt39NP40XS4LMM3X25ym61PEW+tvP0W8C//uUzxxwPx3n+KJM7Rfn+Ky7tW/4WXdq3+Yy7pXaX+te+IMbX9d/J7fXxe/5/fXxe/5/XXxe35/Xfye31/XuF+eOEPbX9e4X544Q9td98QZ2v66xv3yxBna/rrG/bJ/hpY+XPtrXSrL9Vo687qt27/uXrxu/xJ28br9q8HF6/YvrBav279GWbhu/wztiXX7V86K1+1fqihet3+BoHhd437ZP0N7Yl3jftk/Q3tiXeN+2T9Di9ftn6E9sa5xv+yfoT2xrnG/7J+hPbGucb/sn6E9sa5xv+yfoT2xrnG/7J+hPbGucb/sn6E9sa5xv+yfoT2xrnG/7J+hPbGucb/sn6E9sa5xv+yfoT2xrnG/7J+hPbGucb88uO99vK5xvzy4x3u8rnG/PLifebyubb+UB/epjte17Zfy4H7C8bq2/VL2z9CeWNe2X8qDG6/G69r2S3lwO9B4XeN+eXCTynhd4355cOvEeF3jfnlwQ794XeN+eXCbuXhd4355cPOzeF3jfnlwS654XeN+eXCjqHhd4355cPuieF3jfnlwU514XeN+eXCrl3hd4355cAOSeF3jfnlwW4x4XeN+eXCzhnhd4355cAuBeF3jfnlwYft4XeN+eXC59Xhd4355cBHweF3jftk/331iXeN+2T/ffWJd437ZP999Yl3jftk/331iXeN+2T/ffWJd435p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",
|
|
911
|
-
"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QKexycrJYpPqzmKTCkxikw3oNCY9S7FPNqDTmPQsxT7ZgE5jWpVMNqDTmFYlkw3oNCZVyTHZgE5jUpUckw3oNCZVybFJVXJMdn7TmFQlx2R/No1JVXJMdlGz2GRjNI1pVTLZvkxjWpVMNhnTmFYlk63ANKZVyWTDLo1pVTLZVktjWpVMNr/SmFYlky2qNKZVyWQjKY1pVTL5Gb40plXJZHMpjWlVMvkZvjSmVclk0ymNaVUy2R5KY1qVTDZy0phWJZPdmTSmVclkdyaNaVUy2W9JY1qVTPZE0phWJZN9izSmVclkbyGNaVUy4f9pTKuSCf9PY1qVTPh/GtOqZML/05hWJRP+n8a0Kpnw/zSmVcmE/6cxrUom/D+NaVUy4f9pTKsSzT05NPfk0NyTQ3NPDs09OWYcPYtpVTLj0VlMq5IZ101iM/aaxbQqmbHXLKZVyYy9ZjGtSjT2emjs9dDY66Gx10Njr4fGXg+NvR4aez009npo7PXQ2OuhsddDY6+Hxl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl67xl6HBlGHBlHHCYcJfV93HyccJZSNcIIqnoxwgiqejPD5w0WSEU44QsjK3XWwegQjnHB0QimPEXowwuePFclG+PyhIt8/FGCccHRQNsKPPv5hnHBsUDbCjz7+YZxwZFA2wglr+vsjnHBcUDbCCWs6GeGENZ2M8MPX9AnHBGUj/PA1fcIRQdkIP3xNT/Yszhzhh6/pM444Skb44Wt6sr9y5gg/fE3/8GOaxg8/pmn88GOaxg8/pmn88GOaxtPHND09wtMnOj0/wg9f00+fE/X8CD98TU/22M4c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",
|
|
912
|
-
"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AfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwAfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwCfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwBfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdwDfdw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8p/b6uVvBz621QdusDe2up5tdeb8ri7Mfs30zw+2+Ko5bP38t7J+xj/8TcO18Q9/x3Bt/MPfLlwb//D3CtfGP/yNwrXxD3+XcG38w2/+a+MffptfG//wG/rS+A88YDLxtW/dBw4wmfjat+4D/5dMfO1b94H7Sya+9q37wPslE1/71n3g/JKJr33rPvB9ycTXvnUfuL5k4mvfug88XzLxtW/dB44vmfjat+4Dv5dMfO1b94HbSya+9q37wOslE1/71n3g9JKJr33rPvB5ycTXvnUfuLxk4mvfug88XjLxtW/dBw4vmfjat+4Df5dMfO1b94G7Sya+9q37wNslE1/71n3g7JKJr33rPvB1ycTXvnUfuLpk4mvfug88XTLxtW/dB44umfjat+4DP5dMfO1b94GbSya+9q37wMslE1/71n3g5JKJr33rPvBxycTXvnUfuLhk4mvfug88XDLxtW/dBw4umfjat+4D/5ZMfOVb127Hu7euja98627xlW/dLb7yrbvFV751t/jKt+4WX/nW3eIr37pbfOVbd4uvfeseb9e6Nr72rXu8V+va+Nq37vFGrWvja9+6x7u0ro2vfese77y6Nr72rSvtptria9+60m6qLb72rSvtptria9+60m6qLb72rSvtptria9+60m6qLb72rSvtptria9+60m6qLb72rSvtptria9+60m6qLb72rSvtptria9+60m6qLb72rSvtptria9+60m6qLb72rSvtptria9+60m6qLb72rSvtptria9+60m6qLb72rSvtptria9+60m6qLb72rSvtptria9+60m6qLb72rSvtptria9+60m6qLb72rSvtptria9+60m6qLb72rSvtptria9+60m6qLb72rSvtptria9+60m6qLb72rSvtptria9+60m6qLT73reu3r++N97F+jb/zvNVfT9v1/dC4fe+U+4I+cqfcd/mRO+W+9n/fTlfs7ZT7HcKRO+V+M3HgTo+3tMwnO13zK/yqn4912wu/xft65jFuv/5LvPn3Dg4/q8t3cPh7v4t3MI7XtVy+g8PfAV6+g8PfBF6+g8PfB16+g8Pf312+g8Pft12+g8Pfj12+A/U7eRyvcbl8B/J38vEyl8t3IH8nH690uXwH8nfy8WKXZzvY/s/rZyr/13voHF/bHf3kidu+Htv+87E+v7d6+eX9ua1efst/bquXvx343FYvf9/wua1e/gbjY1vVFtwMbcHN0BbcDG3BzdAW3Axtwc3QFtwMbcHN0BbcDG3BzdAW3Axtwc3QFtwMbcHN0BbcDG3BzdAW3Axtwc3QFtwMbcHN0BbcDG3BzdAW3Axtwc3QFtwMbcHN0BbcDG3BzdAW3Axtwc3QFtwMbcHN0BbcDG3BzdAW3Axtwc3QFtwMbcHN0BbcDG3BzdAW3Axtwc3QFtwMbcHN0BbcDG3BzdAW3Axtwc3QFtwMbcHN0BbcDG3BzdAW3Axtwc3QFtwMbcHN0BbcDG3BzdAW3Axtwc3QFtwMbcHN0BbcDHLBzdP42rcuuYrmaXztW5dcGvM0vvat29q37tK+dZf2rbu0b92lfesu7Vt3ad+6S/vWPV7rdW187Vv3eKHXlfHn8Tava+NL37rzeI/XtfGlb915k7515/H6rmvjS9+683hx17XxpW/debyy69L4x/u6ro2vfeseb+q6Nr72rXu8o+va+Nq37vEurWvja9+6xzuvro2vfetqu6mmtptqarupprabamq7qaa2m2pqu6mmtptqarupprabamq7qaa2m2pqu6mmtptqarupprabamq7qaa2m2pqu6mmtptqarupprabamq7qaa2m2pqu6mmtptqarupprabamq7qaa2m2pqu6mmtptqarupprabamq7qaa2m2pqu6mmtptqarupprabamq7qaa2m2pqu6mmtptqarupprabamq7qaa2m2pqu6mmtptqarupprabamq7qaa2m2pqu6mmtptqarupprabamq7qaa2m2pqu6mmtptqarupprabamq7qaa2m2pqu6mmtptqarupprabamq7qaa2m2pqu6mmtptqarupprabamq7qaa2m2pqu6mmtpvKtN1URu6m8tvt/lgf69f4O89b/fW0Xd8Pjdv3Trkv6CN3yn2XH7lT7mv/9+10xd5Oud8hHLlT7jcTB+5039Ly9fS3J3uMVfdH5vj52Pie7PsSlcOeffc902HPvvuW5rBn333HcdSz7ws8Dnv23fv6sGffvSMPe/bde+mwZ9+9Cw579lNfq/vqhcOe/dTX6r644LBnP/W1uo/9H/bsp75W96H5w5791NfqPnJ+2LOf+lrdB7YPe/ZTX6v7uPNhz37qa3UfFj7s2U99re6jtoc9+4mvVR/vZZ+32/c78dv8+d9wftt7w9z+lWX7x/75tv3m32ne2uvhad6aY4eneWvuHZ7mrTl5eJq35iqYpvP7v/vG3E3z1hw+PM1bc/voNPt46sfSvHUvHJ7myln8PM2Fs3jN9Z0md1/h+2jnx9JcN2+2B39XY7dfrvBf01w3b15Jc928eSHNPpj3sTTXzZtX0lw3b15Jc928eSXNdfPmlTTXvfd7Jc117/1eSUM1i/eBsI+loZrF+7jWx9JQzeJ9mOpjaahm8T7q9LE0VLN4H0T6WBqqWbyPCX0sDdUs3od4PpaGahbvIzYfS0M1i/cBmI+loZrF+3jKx9JQzeJ9eORjaahm8T7a8bE0VLN4H7z4WBqqWbyPRXwsDdUs3ocWPpaGahbvIwUfS8M0ix98GfXH0jDN4gdfFf2xNEyz+MEXOX8sDdMsfvA1yx9LwzSLH3wJ8sfSUM3i/a8o/lgaqlm8/wXCH0tDNYv3v973Y2moZvF73Mjhaahm8XtcyuFpqGbxe9zL4WmoZvF7XM3haahm8XvczuFpqGbxe1zQ4WmoZvF73NHhaahm8Xtc0+FpqGbxe9zU4WmoZvF7XNbhaahm8Xvc1+FpqGbxe1zZ4WmoZvF73Nrhaahm8YVs2StpqGbxhWzZK2moZvGFbNkraahm8YVs2StpqGbxhWzZK2moZvGFbNkraahm8YVs2StpqGbx/pf6fSwN1Sym4u4efIPep9JQcXcPvt/uY2moZjEVd/fgy+Q+loZqFlNxdw++ue1jaahmMRV39+Br0j6WhmoWU3F3D76T7GNpqGYxFXf34AvAPpaGahZTcXcPvm3rU2mouLsH34X1sTRUs5iKu3vwxVMfS0M1i6m4uwff8vSxNFSzmIq7e/CVSh9LQzWLqbi7B99f9LE0VLOYirt78GVBH0tDNYupuLsH35hyUpr8+eBfvurj1zRXvsKfp7nwt3jG19dTbP9ou2ku/C1+Ic2Fv8UvpLnwHcXzNFcSSy+kue4dRY/4mjc9cnw/ePV3mOvGzQthLpw25v71YL+Nfzinf370uK36eu4xbr9+uc0v53rh+48T0l/4fuWE9BfeDCekv/AmOSH9hTfPv0h/T3MlEfVCmgv/6/GFNBe+t3whDce0/0rDMb2/0nBM4680F05Xd/tO476b5sJp+UKaC6ffC2kufN/9PM2VRNQLaS6cxS+kuXAWv5Dmwln8QpoLZ/ELaS6cxS+koZrFVxJRL6ShmsVXElHP01xJRL2QhmoWX0lEvZCGahZfSUS9kIZqFl9JRL2QhmoWX0lEvZCGahZfSUS9kIZqFl9JRL2QhmoWX0lEvZCGahZfSUS9kIZqFl9J/Yz59a2Qc+z//etK6ueFNBfOmxfSXDhvXkhz4bx5Ic2F8+aFNBfOm39Is/vJiCupnxfSXPje74U0F773e57mSurnhTRXzuL++cmIsXtPXUn9vJDmynnzPM2V8+Z5mivnzfM0V86b52munDdP01xJtsz4njezdm/NK8mWF9JcOG9eSHPhe78X0lz43u+FNBfO4hfSXPo51KdpLv0c6tM0l34O9WmaSz+H+izNlWTLC2moZvGVZMsLaahm8ZVkywtpLp3Fzz5NfSXZ8kIaKibgSrLlhTRMTIBf+Y1SL6S5dBY/TXPpLH6a5tJZ/DTNpbP4aRqmWexUfJZT8VlOxWc5FZ/lVHyWX/mNUi+koZrFVxJaL6ShmsVXElQvpKGaxVcSTi+koZrFV36j1PM0V/JTL6ShmsVX8lMvpKGaxVfyUy+koZp+VxJLz9PsUznz9t37/PIhojW/V+2+Ep+u2n3FPF21+5v9dNXub+DTVbu39uNVf/vb/wPc5T9G",
|
|
913
|
-
"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"
|
|
914
|
-
|
|
915
|
-
"
|
|
916
|
-
"
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
"
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
"
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
"
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
"
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
"
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
"
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
"
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
"
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
"44": {
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
"
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
"
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
"
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
"
|
|
969
|
-
"source": "use dep::protocol_types::{\n abis::{\n block_header::BlockHeader,\n call_context::CallContext,\n function_data::FunctionData,\n function_selector::FunctionSelector,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_circuit_public_inputs::PublicCircuitPublicInputs,\n call_stack_item::PrivateCallStackItem,\n call_stack_item::PublicCallStackItem,\n side_effect::{SideEffect, SideEffectLinkedToNoteHash},\n },\n address::{\n AztecAddress,\n EthAddress,\n },\n constants::{\n MAX_NEW_COMMITMENTS_PER_CALL,\n MAX_NEW_L2_TO_L1_MSGS_PER_CALL,\n MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL,\n MAX_READ_REQUESTS_PER_CALL,\n NUM_FIELDS_PER_SHA256,\n RETURN_VALUES_LENGTH,\n },\n contrakt::{\n deployment_data::ContractDeploymentData,\n storage_read::StorageRead,\n storage_update_request::StorageUpdateRequest,\n },\n hash::hash_args,\n grumpkin_point::GrumpkinPoint,\n};\n\n// TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n// use dep::std::collections::vec::Vec;\n\nuse crate::abi::{\n PrivateContextInputs,\n PublicContextInputs,\n};\n\n// l1 to l2 messaging\nuse crate::messaging::process_l1_to_l2_message;\n\nuse crate::types::{\n vec::BoundedVec,\n};\n\nuse crate::utils::Reader;\n\nuse crate::oracle::{\n arguments,\n call_private_function::call_private_function_internal,\n public_call::call_public_function_internal,\n enqueue_public_function_call::enqueue_public_function_call_internal,\n context::get_portal_address,\n get_block_header::get_block_header,\n};\n\nuse dep::std::option::Option;\n\n// When finished, one can call .finish() to convert back to the abi\nstruct PrivateContext {\n // docs:start:private-context\n inputs: PrivateContextInputs,\n side_effect_counter: u32,\n\n args_hash : Field,\n return_values : BoundedVec<Field, RETURN_VALUES_LENGTH>,\n\n read_requests: BoundedVec<SideEffect, MAX_READ_REQUESTS_PER_CALL>,\n\n new_commitments: BoundedVec<SideEffect, MAX_NEW_COMMITMENTS_PER_CALL>,\n new_nullifiers: BoundedVec<SideEffectLinkedToNoteHash, MAX_NEW_NULLIFIERS_PER_CALL>,\n\n private_call_stack_hashes : BoundedVec<Field, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>,\n public_call_stack_hashes : BoundedVec<Field, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n new_l2_to_l1_msgs : BoundedVec<Field, MAX_NEW_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n block_header: BlockHeader,\n\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n // encrypted_logs_preimages: Vec<Field>,\n // unencrypted_logs_preimages: Vec<Field>,\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs: inputs,\n side_effect_counter: inputs.call_context.start_side_effect_counter,\n\n args_hash: args_hash,\n return_values: BoundedVec::new(0),\n\n read_requests: BoundedVec::new(SideEffect::empty()),\n\n new_commitments: BoundedVec::new(SideEffect::empty()),\n new_nullifiers: BoundedVec::new(SideEffectLinkedToNoteHash::empty()),\n\n block_header: inputs.block_header,\n\n private_call_stack_hashes: BoundedVec::new(0),\n public_call_stack_hashes: BoundedVec::new(0),\n new_l2_to_l1_msgs: BoundedVec::new(0),\n\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n // encrypted_logs_preimages: Vec::new(),\n // unencrypted_logs_preimages: Vec::new(),\n }\n }\n\n pub fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n pub fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n pub fn this_portal_address(self) -> EthAddress {\n self.inputs.call_context.portal_contract_address\n }\n\n pub fn chain_id(self) -> Field {\n self.inputs.private_global_variables.chain_id\n }\n\n pub fn version(self) -> Field {\n self.inputs.private_global_variables.version\n }\n\n pub fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n pub fn get_block_header(self, block_number: u32) -> BlockHeader {\n get_block_header(block_number, self)\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n let encrypted_logs_hash = [0; NUM_FIELDS_PER_SHA256];\n let unencrypted_logs_hash = [0; NUM_FIELDS_PER_SHA256];\n let encrypted_log_preimages_length = 0;\n let unencrypted_log_preimages_length = 0;\n\n let priv_circuit_pub_inputs = PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n return_values: self.return_values.storage,\n read_requests: self.read_requests.storage,\n new_commitments: self.new_commitments.storage,\n new_nullifiers: self.new_nullifiers.storage,\n private_call_stack_hashes: self.private_call_stack_hashes.storage,\n public_call_stack_hashes: self.public_call_stack_hashes.storage,\n new_l2_to_l1_msgs: self.new_l2_to_l1_msgs.storage,\n end_side_effect_counter: self.side_effect_counter,\n encrypted_logs_hash: encrypted_logs_hash,\n unencrypted_logs_hash: unencrypted_logs_hash,\n encrypted_log_preimages_length: encrypted_log_preimages_length,\n unencrypted_log_preimages_length: unencrypted_log_preimages_length,\n block_header: self.block_header,\n contract_deployment_data: self.inputs.contract_deployment_data,\n chain_id: self.inputs.private_global_variables.chain_id,\n version: self.inputs.private_global_variables.version,\n };\n priv_circuit_pub_inputs\n }\n\n pub fn push_read_request(&mut self, read_request: Field) {\n let side_effect = SideEffect {\n value: read_request,\n counter: self.side_effect_counter,\n };\n self.read_requests.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn push_new_note_hash(&mut self, note_hash: Field) {\n let side_effect = SideEffect {\n value: note_hash,\n counter: self.side_effect_counter,\n };\n self.new_commitments.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn push_new_nullifier(&mut self, nullifier: Field, nullified_commitment: Field) {\n let side_effect = SideEffectLinkedToNoteHash {\n value: nullifier,\n note_hash: nullified_commitment,\n counter: self.side_effect_counter,\n };\n self.new_nullifiers.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, content: Field) \n // docs:end:context_message_portal\n {\n self.new_l2_to_l1_msgs.push(content);\n }\n\n // PrivateContextInputs must be temporarily passed in to prevent too many unknowns\n // Note this returns self to get around an issue where mutable structs do not maintain mutations unless reassigned\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(\n &mut self,\n msg_key: Field,\n content: Field,\n secret: Field\n ) \n // docs:end:context_consume_l1_to_l2_message\n {\n let nullifier = process_l1_to_l2_message(self.block_header.l1_to_l2_message_tree_root, self.this_address(), self.this_portal_address(), self.chain_id(), self.version(), msg_key, content, secret);\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_new_nullifier(nullifier, 0)\n }\n // docs:end:consume_l1_to_l2_message\n\n pub fn accumulate_encrypted_logs<N>(&mut self, log: [Field; N]) {\n let _void1 = self.inputs;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n pub fn accumulate_unencrypted_logs<T>(&mut self, log: T) {\n let _void1 = self.inputs;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n pub fn call_private_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector, \n args: [Field; ARGS_COUNT]\n ) -> [Field; RETURN_VALUES_LENGTH] {\n let args_hash = hash_args(args);\n assert(args_hash == arguments::pack_arguments(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash)\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector, \n ) -> [Field; RETURN_VALUES_LENGTH] {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0)\n }\n\n pub fn call_private_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field\n ) -> [Field; RETURN_VALUES_LENGTH] {\n let fields = call_private_function_internal(\n contract_address,\n function_selector, \n args_hash,\n self.side_effect_counter,\n );\n let mut reader = Reader::new(fields);\n\n let item = PrivateCallStackItem {\n contract_address: AztecAddress::from_field(reader.read()),\n function_data: FunctionData {\n selector: FunctionSelector::from_field(reader.read()),\n is_internal: reader.read() as bool,\n is_private: reader.read() as bool,\n is_constructor: reader.read() as bool,\n },\n public_inputs: PrivateCircuitPublicInputs {\n call_context: CallContext {\n msg_sender : AztecAddress::from_field(reader.read()),\n storage_contract_address : AztecAddress::from_field(reader.read()),\n portal_contract_address : EthAddress::from_field(reader.read()),\n function_selector: FunctionSelector::from_field(reader.read()), // practically same as fields[1]\n is_delegate_call : reader.read() as bool,\n is_static_call : reader.read() as bool,\n is_contract_deployment: reader.read() as bool,\n start_side_effect_counter: reader.read() as u32,\n },\n args_hash: reader.read(),\n return_values: reader.read_array([0; RETURN_VALUES_LENGTH]), // +1\n read_requests: reader.read_struct_array(SideEffect::deserialise, [SideEffect::empty(); MAX_READ_REQUESTS_PER_CALL]),\n new_commitments: reader.read_struct_array(SideEffect::deserialise, [SideEffect::empty(); MAX_NEW_COMMITMENTS_PER_CALL]),\n new_nullifiers: reader.read_struct_array(SideEffectLinkedToNoteHash::deserialise, [SideEffectLinkedToNoteHash::empty(); MAX_NEW_NULLIFIERS_PER_CALL]),\n private_call_stack_hashes: reader.read_array([0; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL]),\n public_call_stack_hashes: reader.read_array([0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL]),\n new_l2_to_l1_msgs: reader.read_array([0; MAX_NEW_L2_TO_L1_MSGS_PER_CALL]),\n end_side_effect_counter: reader.read() as u32,\n encrypted_logs_hash: reader.read_array([0; NUM_FIELDS_PER_SHA256]),\n unencrypted_logs_hash: reader.read_array([0; NUM_FIELDS_PER_SHA256]),\n encrypted_log_preimages_length: reader.read(),\n unencrypted_log_preimages_length: reader.read(),\n block_header: BlockHeader{\n // Must match order in `private_circuit_public_inputs.hpp`\n note_hash_tree_root : reader.read(),\n nullifier_tree_root : reader.read(),\n contract_tree_root : reader.read(),\n l1_to_l2_message_tree_root : reader.read(),\n archive_root : reader.read(),\n public_data_tree_root: reader.read(),\n global_variables_hash: reader.read(),\n },\n contract_deployment_data: ContractDeploymentData {\n deployer_public_key: GrumpkinPoint {\n x: reader.read(), \n y: reader.read()\n },\n constructor_vk_hash : reader.read(),\n function_tree_root : reader.read(),\n contract_address_salt : reader.read(),\n portal_contract_address : EthAddress::from_field(reader.read()),\n },\n chain_id: reader.read(),\n version: reader.read(),\n },\n is_execution_request: reader.read() as bool,\n };\n\n reader.finish();\n\n assert_eq(item.public_inputs.call_context.start_side_effect_counter, self.side_effect_counter);\n self.side_effect_counter = item.public_inputs.end_side_effect_counter + 1;\n \n assert(contract_address.eq(item.contract_address));\n assert(function_selector.eq(item.function_data.selector));\n\n assert(args_hash == item.public_inputs.args_hash);\n\n assert(item.is_execution_request == false);\n\n // Assert that the call context of the enqueued call generated by the oracle matches our request.\n // We are issuing a regular call which is not delegate, static, or deployment. We also constrain\n // the msg_sender in the nested call to be equal to our address, and the execution context address\n // for the nested call to be equal to the address we actually called.\n assert(item.public_inputs.call_context.is_delegate_call == false);\n assert(item.public_inputs.call_context.is_static_call == false);\n assert(item.public_inputs.call_context.is_contract_deployment == false);\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address));\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n\n self.private_call_stack_hashes.push(item.hash());\n\n item.public_inputs.return_values\n }\n\n pub fn call_public_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector, \n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args(args);\n assert(args_hash == arguments::pack_arguments(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash)\n }\n\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector,\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0)\n }\n\n pub fn call_public_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field\n ) {\n let fields = enqueue_public_function_call_internal(\n contract_address, \n function_selector, \n args_hash,\n self.side_effect_counter\n );\n\n let mut reader = Reader::new(fields);\n\n let item = PublicCallStackItem {\n contract_address: AztecAddress::from_field(reader.read()),\n function_data: FunctionData {\n selector: FunctionSelector::from_field(reader.read()),\n is_internal: reader.read() as bool,\n is_private: reader.read() as bool,\n is_constructor: reader.read() as bool,\n },\n public_inputs: PublicCircuitPublicInputs {\n call_context: CallContext {\n msg_sender : AztecAddress::from_field(reader.read()),\n storage_contract_address : AztecAddress::from_field(reader.read()),\n portal_contract_address : EthAddress::from_field(reader.read()),\n function_selector: FunctionSelector::from_field(reader.read()), // practically same as fields[1]\n is_delegate_call : reader.read() as bool,\n is_static_call : reader.read() as bool,\n is_contract_deployment: reader.read() as bool,\n start_side_effect_counter: reader.read() as u32,\n },\n args_hash: reader.read(),\n return_values: [0; RETURN_VALUES_LENGTH],\n contract_storage_update_requests: [StorageUpdateRequest::empty(); MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL],\n contract_storage_reads: [StorageRead::empty(); MAX_PUBLIC_DATA_READS_PER_CALL],\n public_call_stack_hashes: [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n new_commitments: [SideEffect::empty(); MAX_NEW_COMMITMENTS_PER_CALL],\n new_nullifiers: [SideEffectLinkedToNoteHash::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs:[0; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n unencrypted_logs_hash:[0; NUM_FIELDS_PER_SHA256],\n unencrypted_log_preimages_length: 0,\n block_header: BlockHeader::empty(),\n prover_address: AztecAddress::zero(),\n },\n is_execution_request: true,\n };\n reader.finish();\n\n assert(contract_address.eq(item.contract_address));\n assert(function_selector.eq(item.function_data.selector));\n\n assert_eq(item.public_inputs.call_context.start_side_effect_counter, self.side_effect_counter);\n // We increment the sideffect counter by one, to account for the call itself being a side effect.\n self.side_effect_counter = self.side_effect_counter + 1;\n \n assert(args_hash == item.public_inputs.args_hash);\n\n // Assert that the call context of the enqueued call generated by the oracle matches our request.\n // We are issuing a regular call which is not delegate, static, or deployment. We also constrain\n // the msg_sender in the nested call to be equal to our address, and the execution context address\n // for the nested call to be equal to the address we actually called.\n assert(item.public_inputs.call_context.is_delegate_call == false);\n assert(item.public_inputs.call_context.is_static_call == false);\n assert(item.public_inputs.call_context.is_contract_deployment == false);\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address));\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n\n self.public_call_stack_hashes.push(item.hash());\n }\n}\n\nstruct PublicContext {\n inputs: PublicContextInputs,\n side_effect_counter: u32,\n\n args_hash : Field,\n return_values : BoundedVec<Field, RETURN_VALUES_LENGTH>,\n\n contract_storage_update_requests: BoundedVec<StorageUpdateRequest, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL>,\n contract_storage_reads: BoundedVec<StorageRead, MAX_PUBLIC_DATA_READS_PER_CALL>,\n public_call_stack_hashes: BoundedVec<Field, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n\n new_commitments: BoundedVec<SideEffect, MAX_NEW_COMMITMENTS_PER_CALL>,\n new_nullifiers: BoundedVec<SideEffectLinkedToNoteHash, MAX_NEW_NULLIFIERS_PER_CALL>,\n\n new_l2_to_l1_msgs: BoundedVec<Field, MAX_NEW_L2_TO_L1_MSGS_PER_CALL>,\n\n unencrypted_logs_hash: BoundedVec<Field, NUM_FIELDS_PER_SHA256>,\n unencrypted_logs_preimages_length: Field,\n\n block_header: BlockHeader,\n prover_address: AztecAddress,\n}\n\nimpl PublicContext {\n pub fn new(inputs: PublicContextInputs, args_hash: Field) -> PublicContext {\n let empty_storage_read = StorageRead::empty();\n let empty_storage_update = StorageUpdateRequest::empty();\n PublicContext {\n inputs: inputs,\n side_effect_counter: inputs.call_context.start_side_effect_counter,\n\n args_hash: args_hash,\n return_values: BoundedVec::new(0),\n\n contract_storage_update_requests: BoundedVec::new(empty_storage_update),\n contract_storage_reads: BoundedVec::new(empty_storage_read),\n public_call_stack_hashes: BoundedVec::new(0),\n\n new_commitments: BoundedVec::new(SideEffect::empty()),\n new_nullifiers: BoundedVec::new(SideEffectLinkedToNoteHash::empty()),\n\n new_l2_to_l1_msgs: BoundedVec::new(0),\n\n \n unencrypted_logs_hash: BoundedVec::new(0),\n unencrypted_logs_preimages_length: 0,\n\n block_header: inputs.block_header,\n prover_address: AztecAddress::zero(),\n\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n // encrypted_logs_preimages: Vec::new(),\n // unencrypted_logs_preimages: Vec::new(),\n }\n }\n\n pub fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n pub fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n pub fn this_portal_address(self) -> EthAddress {\n self.inputs.call_context.portal_contract_address\n }\n\n pub fn chain_id(self) -> Field {\n self.inputs.public_global_variables.chain_id\n }\n\n pub fn version(self) -> Field {\n self.inputs.public_global_variables.version\n }\n\n pub fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n pub fn block_number(self) -> Field {\n self.inputs.public_global_variables.block_number\n }\n\n pub fn timestamp(self) -> Field {\n self.inputs.public_global_variables.timestamp\n }\n\n pub fn finish(self) -> PublicCircuitPublicInputs {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n let unencrypted_logs_hash = [0; NUM_FIELDS_PER_SHA256];\n let unencrypted_log_preimages_length = 0;\n\n\n // Compute the public call stack hashes\n let pub_circuit_pub_inputs = PublicCircuitPublicInputs {\n call_context: self.inputs.call_context, // Done\n args_hash: self.args_hash, // Done\n contract_storage_update_requests: self.contract_storage_update_requests.storage,\n contract_storage_reads: self.contract_storage_reads.storage,\n return_values: self.return_values.storage,\n new_commitments: self.new_commitments.storage,\n new_nullifiers: self.new_nullifiers.storage,\n public_call_stack_hashes: self.public_call_stack_hashes.storage,\n new_l2_to_l1_msgs: self.new_l2_to_l1_msgs.storage,\n unencrypted_logs_hash: unencrypted_logs_hash,\n unencrypted_log_preimages_length: unencrypted_log_preimages_length,\n block_header: self.inputs.block_header,\n prover_address: self.prover_address,\n };\n pub_circuit_pub_inputs\n }\n\n pub fn push_new_note_hash(&mut self, note_hash: Field) {\n let side_effect = SideEffect {\n value: note_hash,\n counter: self.side_effect_counter\n };\n self.new_commitments.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn push_new_nullifier(&mut self, nullifier: Field, _nullified_commitment: Field) {\n let side_effect = SideEffectLinkedToNoteHash {\n value: nullifier,\n note_hash: 0, // cannot nullify pending notes in public context\n counter: self.side_effect_counter\n };\n self.new_nullifiers.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn message_portal(&mut self, content: Field) {\n self.new_l2_to_l1_msgs.push(content);\n }\n\n // PrivateContextInputs must be temporarily passed in to prevent too many unknowns\n // Note this returns self to get around an issue where mutable structs do not maintain mutations unless reassigned\n pub fn consume_l1_to_l2_message(&mut self, msg_key: Field, content: Field, secret: Field) {\n let this = (*self).this_address();\n let nullifier = process_l1_to_l2_message(self.block_header.l1_to_l2_message_tree_root, this, self.this_portal_address(), self.chain_id(), self.version(), msg_key, content, secret);\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_new_nullifier(nullifier, 0)\n }\n\n pub fn accumulate_encrypted_logs<N>(&mut self, log: [Field; N]) {\n let _void1 = self;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n pub fn accumulate_unencrypted_logs<T>(&mut self, log: T) {\n let _void1 = self;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n pub fn call_public_function<ARGS_COUNT>(\n _self: Self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) -> [Field; RETURN_VALUES_LENGTH] {\n let args_hash = hash_args(args);\n assert(args_hash == arguments::pack_arguments(args));\n call_public_function_internal(\n contract_address, \n function_selector, \n args_hash,\n )\n }\n\n pub fn call_public_function_no_args(\n _self: Self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector,\n ) -> [Field; RETURN_VALUES_LENGTH] {\n call_public_function_internal(\n contract_address, \n function_selector, \n 0,\n )\n }\n\n}\n\nstruct Context {\n private: Option<&mut PrivateContext>,\n public: Option<&mut PublicContext>,\n}\n\nimpl Context {\n pub fn private(context: &mut PrivateContext) -> Context {\n Context {\n private: Option::some(context),\n public: Option::none()\n }\n }\n\n pub fn public(context: &mut PublicContext) -> Context {\n Context {\n public: Option::some(context),\n private: Option::none()\n }\n }\n\n pub fn none() -> Context {\n Context {\n public: Option::none(),\n private: Option::none()\n }\n }\n}\n",
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
"
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
"
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
"
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
"
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
"
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
"
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
"
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
"
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
"94": {
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
"
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
"
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
"
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
"
|
|
1021
|
-
"source": "use crate::address::{AztecAddress, EthAddress};\nuse crate::mocked::VerificationKey;\nuse crate::abis::function_selector::FunctionSelector;\nuse crate::abis::function_leaf_preimage::FunctionLeafPreimage;\nuse crate::abis::new_contract_data::NewContractData as ContractLeafPreimage;\nuse crate::abis::function_data::FunctionData;\nuse crate::abis::side_effect::{SideEffect};\nuse crate::utils::uint256::U256;\nuse crate::utils::bounded_vec::BoundedVec;\nuse crate::constants::{\n ARGS_HASH_CHUNK_COUNT,\n ARGS_HASH_CHUNK_LENGTH,\n CONTRACT_TREE_HEIGHT, \n FUNCTION_TREE_HEIGHT, \n NOTE_HASH_TREE_HEIGHT,\n NUM_FIELDS_PER_SHA256,\n GENERATOR_INDEX__SILOED_COMMITMENT,\n GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK,\n GENERATOR_INDEX__CONSTRUCTOR,\n GENERATOR_INDEX__PARTIAL_ADDRESS,\n GENERATOR_INDEX__CONTRACT_ADDRESS,\n GENERATOR_INDEX__COMMITMENT_NONCE,\n GENERATOR_INDEX__UNIQUE_COMMITMENT,\n GENERATOR_INDEX__FUNCTION_ARGS,\n};\n\nuse dep::std::hash::{pedersen_hash_with_separator, sha256};\n\npub fn sha256_to_field<N>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256(bytes_to_hash);\n\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 + (sha256_hashed[15 - i] as Field) * v;\n low = low + (sha256_hashed[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n let hash_in_a_field = low + high * v;\n\n hash_in_a_field\n}\n\npub fn hash_args<N>(args: [Field; N]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n let mut chunks_hashes = [0; ARGS_HASH_CHUNK_COUNT];\n for i in 0..ARGS_HASH_CHUNK_COUNT {\n let mut chunk_hash = 0;\n let start_chunk_index = i * ARGS_HASH_CHUNK_LENGTH;\n if start_chunk_index < (args.len() as u32) {\n let mut chunk_args = [0; ARGS_HASH_CHUNK_LENGTH];\n for j in 0..ARGS_HASH_CHUNK_LENGTH {\n let item_index = i * ARGS_HASH_CHUNK_LENGTH + j;\n if item_index < (args.len() as u32) {\n chunk_args[j] = args[item_index];\n }\n }\n chunk_hash = pedersen_hash(chunk_args, GENERATOR_INDEX__FUNCTION_ARGS);\n }\n chunks_hashes[i] = chunk_hash;\n }\n pedersen_hash(chunks_hashes, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n// Checks that `value` is a member of a merkle tree with root `root` at position `index`\n// The witness being the `sibling_path`\npub fn assert_check_membership<N>(value: Field, index: Field, sibling_path: [Field; N], root: Field) {\n let calculated_root = root_from_sibling_path(value, index, sibling_path);\n assert(calculated_root == root, \"membership check failed\");\n}\n\n// Calculate the Merkle tree root from the sibling path and leaf.\n//\n// The leaf is hashed with its sibling, and then the result is hashed\n// with the next sibling etc in the path. The last hash is the root.\n//\n// TODO(David/Someone): The cpp code is using a uint256, whereas its\n// TODO a bit simpler in Noir to just have a bit array.\n// TODO: I'd generally like to avoid u256 for algorithms like \n// this because it means we never even need to consider cases where \n// the index is greater than p.\npub fn root_from_sibling_path<N>(leaf: Field, leaf_index: Field, sibling_path: [Field; N]) -> Field {\n let mut node = leaf;\n let indices = leaf_index.to_le_bits(N);\n\n for i in 0..N {\n let (hash_left, hash_right) = if indices[i] == 1 {\n (sibling_path[i], node)\n } else {\n (node, sibling_path[i])\n };\n node = merkle_hash(hash_left, hash_right);\n }\n node\n}\n\n// Calculate the function tree root from the sibling path and leaf preimage.\n//\n// TODO: The cpp code passes in components of the FunctionLeafPreimage and then \n// builds it up. We should build it up and then pass the leaf preimage as a parameter.\n// We can then choose to have a general method that takes in anything hashable\n// and deduplicate the logic in `contract_tree_root_from_siblings`\npub fn function_tree_root_from_siblings(\n selector: FunctionSelector,\n is_internal: bool,\n is_private: bool,\n vk_hash: Field,\n acir_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = FunctionLeafPreimage { selector, is_internal, is_private, vk_hash, acir_hash };\n\n let function_leaf = function_leaf_preimage.hash();\n\n let function_tree_root = root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path);\n\n function_tree_root\n}\n\n// Calculate the contract tree root from the sibling path and leaf preimage.\npub fn contract_tree_root_from_siblings(\n function_tree_root: Field,\n storage_contract_address: AztecAddress,\n portal_contract_address: EthAddress,\n contract_leaf_index: Field,\n contract_leaf_sibling_path: [Field; CONTRACT_TREE_HEIGHT]\n) -> Field {\n //TODO(Kev): if we use shorthand syntax here, we get an error as expected,\n // since variable name is `storage_contract_address` but the span is incorrect.\n let contract_leaf_preimage = ContractLeafPreimage { contract_address: storage_contract_address, portal_contract_address, function_tree_root };\n\n let contract_leaf = contract_leaf_preimage.hash();\n\n let computed_contract_tree_root = root_from_sibling_path(contract_leaf, contract_leaf_index, contract_leaf_sibling_path);\n\n computed_contract_tree_root\n}\n\npub fn read_request_root_from_siblings(\n read_request: Field,\n leaf_index: Field,\n sibling_path: [Field; NOTE_HASH_TREE_HEIGHT]\n) -> Field {\n root_from_sibling_path(read_request, leaf_index, sibling_path)\n}\n\npub fn silo_commitment(address: AztecAddress, inner_commitment: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n inner_commitment\n ],\n GENERATOR_INDEX__SILOED_COMMITMENT\n )\n}\n\npub fn silo_nullifier(address: AztecAddress, nullifier: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n nullifier\n ],\n GENERATOR_INDEX__OUTER_NULLIFIER\n )\n}\n\nfn merkle_hash(left: Field, right: Field) -> Field {\n pedersen_hash([left, right], 0)\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk(_vk: VerificationKey) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key<CT::bn254>::compress_native(private_call.vk, GeneratorIndex::VK);\n // The above cpp method is only ever called on verification key, so it has been special cased here\n let _hash_index = GENERATOR_INDEX__VK;\n 0\n}\n\n// TODO CPP uses blake2s for this\npub fn compute_new_contract_address_hash(new_contract_address: AztecAddress) -> Field {\n dep::std::hash::pedersen_hash([new_contract_address.to_field()])\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n rollup_version_id: Field,\n portal_contract_address: EthAddress,\n chain_id: Field,\n content: Field\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new(0);\n\n let inputs = [\n contract_address.to_field(), rollup_version_id, portal_contract_address.to_field(), chain_id, content\n ];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes = inputs[i].to_be_bytes(32);\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage)\n}\n\npub fn compute_constructor_hash(\n function_data: FunctionData,\n args_hash: Field,\n constructor_vk_hash: Field\n) -> Field {\n let function_data_hash = function_data.hash();\n\n pedersen_hash(\n [\n function_data_hash,\n args_hash,\n constructor_vk_hash\n ],\n GENERATOR_INDEX__CONSTRUCTOR\n )\n}\n\n// Computes sha256 hash of 2 input hashes stored in 4 fields.\n// \n// This method is bn254 specific. Two fields is needed in order to \n// encode the sha256 output. It can be abstracted away with any 4-2 hash function.\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//\n// Returning a Field would be desirable because then this can be replaced with \n// poseidon without changing the rest of the code\n//\npub fn accumulate_sha256(input: [U128; 4]) -> [Field; NUM_FIELDS_PER_SHA256] {\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 //\n // Concatenate 4 u128 bit integers into a byte array.\n let mut hash_input_flattened = [0; 64];\n for offset in 0..4 {\n let input_as_bytes = input[offset].to_be_bytes();\n for byte_index in 0..16 {\n hash_input_flattened[offset * 16 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n let sha_digest = dep::std::hash::sha256(hash_input_flattened);\n\n U256::from_bytes32(sha_digest).to_u128_limbs()\n}\n\npub fn compute_logs_hash(\n previous_log_hash: [Field; 2],\n current_log_hash: [Field; 2]\n) -> [Field; NUM_FIELDS_PER_SHA256] {\n accumulate_sha256(\n [\n U128::from_integer(previous_log_hash[0]),\n U128::from_integer(previous_log_hash[1]),\n U128::from_integer(current_log_hash[0]),\n U128::from_integer(current_log_hash[1])\n ]\n )\n}\n\npub fn compute_commitment_nonce(first_nullifier: Field, commitment_index: Field) -> Field {\n pedersen_hash(\n [\n first_nullifier,\n commitment_index\n ],\n GENERATOR_INDEX__COMMITMENT_NONCE\n )\n}\n\npub fn compute_unique_siloed_commitment(nonce: Field, siloed_commitment: Field) -> Field {\n pedersen_hash(\n [\n nonce,\n siloed_commitment\n ],\n GENERATOR_INDEX__UNIQUE_COMMITMENT\n )\n}\n\npub fn compute_unique_siloed_commitments<N>(\n first_nullifier: Field,\n siloed_commitments: [SideEffect; N]\n) -> [SideEffect; N] {\n let mut unique_siloed_commitments = [SideEffect::empty(); N];\n for i in 0..N {\n let siloed_commitment = siloed_commitments[i];\n if siloed_commitment.value != 0 {\n let nonce = compute_commitment_nonce(first_nullifier, i);\n unique_siloed_commitments[i] = SideEffect {\n value: compute_unique_siloed_commitment(nonce, siloed_commitment.value),\n counter: siloed_commitment.counter\n };\n }\n }\n unique_siloed_commitments\n}\n\npub fn pedersen_hash<N>(inputs: [Field; N], hash_index: u32) -> Field {\n dep::std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n",
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
"
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
"
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
"
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
"
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
"
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
"
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
"
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
"
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
"
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
"
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
"
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
"
|
|
1069
|
-
|
|
1070
|
-
"path": "/usr/src/yarn-project/aztec-nr/authwit/src/entrypoint.nr"
|
|
1071
|
-
},
|
|
1072
|
-
"188": {
|
|
1073
|
-
"source": "use dep::aztec::context::{PrivateContext, PublicContext, Context};\nuse dep::aztec::state_vars::{map::Map, public_state::PublicState};\nuse dep::aztec::types::type_serialization::bool_serialization::{BoolSerializationMethods,BOOL_SERIALIZED_LEN};\n\nuse crate::entrypoint::EntrypointPayload;\nuse crate::auth::IS_VALID_SELECTOR;\n\nstruct AccountActions {\n context: Context,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool,\n approved_action: Map<Field, PublicState<bool, BOOL_SERIALIZED_LEN>>,\n}\n\nimpl AccountActions {\n pub fn init(context: Context, approved_action_storage_slot: Field, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions {\n context: context,\n is_valid_impl: is_valid_impl,\n approved_action: Map::new(\n context,\n approved_action_storage_slot,\n |context, slot| {\n PublicState::new(context, slot, BoolSerializationMethods)\n },\n ),\n }\n }\n\n pub fn private(context: &mut PrivateContext, approved_action_storage_slot: Field, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions::init(Context::private(context), approved_action_storage_slot, is_valid_impl)\n }\n\n pub fn public(context: &mut PublicContext, approved_action_storage_slot: Field, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions::init(Context::public(context), approved_action_storage_slot, is_valid_impl)\n }\n \n // docs:start:entrypoint\n pub fn entrypoint(self, payload: EntrypointPayload) {\n let message_hash = payload.hash();\n let valid_fn = self.is_valid_impl;\n let private_context = self.context.private.unwrap();\n assert(valid_fn(private_context, message_hash));\n payload.execute_calls(private_context);\n }\n // docs:end:entrypoint\n\n pub fn is_valid(self, message_hash: Field) -> Field {\n let valid_fn = self.is_valid_impl;\n if (valid_fn(self.context.private.unwrap(), message_hash)) {\n IS_VALID_SELECTOR\n } else {\n 0\n }\n }\n\n pub fn is_valid_public(self, message_hash: Field) -> Field {\n let value = self.approved_action.at(message_hash).read();\n if (value){\n IS_VALID_SELECTOR\n } else {\n 0\n }\n }\n\n pub fn internal_set_is_valid_storage(self, message_hash: Field, value: bool) {\n self.approved_action.at(message_hash).write(value);\n }\n}\n",
|
|
1074
|
-
"path": "/usr/src/yarn-project/aztec-nr/authwit/src/account.nr"
|
|
1075
|
-
},
|
|
1076
|
-
"191": {
|
|
1077
|
-
"source": "#[oracle(getAuthWitness)]\nfn get_auth_witness_oracle<N>(_message_hash: Field) -> [Field; N] {}\n\nunconstrained pub fn get_auth_witness<N>(message_hash: Field) -> [Field; N] {\n get_auth_witness_oracle(message_hash)\n}\n",
|
|
1078
|
-
"path": "/usr/src/yarn-project/aztec-nr/authwit/src/auth_witness.nr"
|
|
1079
|
-
},
|
|
1080
|
-
"209": {
|
|
1081
|
-
"source": "mod public_key_note;\n\n// Account contract that uses Schnorr signatures for authentication.\n// The signing key is stored in an immutable private note and should be different from the encryption/nullifying key.\ncontract SchnorrAccount {\n use dep::std;\n use dep::std::option::Option;\n\n use dep::aztec::protocol_types::address::AztecAddress;\n\n use dep::aztec::{\n context::{PrivateContext, Context},\n note::{ note_header::NoteHeader, utils as note_utils },\n oracle::get_public_key::get_public_key,\n state_vars::immutable_singleton::ImmutableSingleton,\n };\n use dep::authwit:: {\n entrypoint::{ EntrypointPayload, ENTRYPOINT_PAYLOAD_SIZE },\n account::AccountActions,\n auth_witness::get_auth_witness,\n };\n\n use crate::public_key_note::{PublicKeyNote, PublicKeyNoteMethods, PUBLIC_KEY_NOTE_LEN};\n\n struct Storage {\n // docs:start:storage\n signing_public_key: ImmutableSingleton<PublicKeyNote, PUBLIC_KEY_NOTE_LEN>,\n // docs:end:storage\n }\n\n impl Storage {\n fn init(context: Context) -> Self {\n Storage {\n // docs:start:storage_init\n signing_public_key: ImmutableSingleton::new(context, 1, PublicKeyNoteMethods),\n // docs:end:storage_init\n }\n }\n }\n\n global ACCOUNT_ACTIONS_STORAGE_SLOT = 2;\n\n // Constructs the contract\n #[aztec(private)]\n fn constructor(signing_pub_key_x: pub Field, signing_pub_key_y: pub Field) {\n let this = context.this_address();\n // docs:start:initialize\n let mut pub_key_note = PublicKeyNote::new(signing_pub_key_x, signing_pub_key_y, this);\n storage.signing_public_key.initialize(&mut pub_key_note, Option::none(), true);\n // docs:end:initialize\n }\n\n // Note: If you globally change the entrypoint signature don't forget to update default_entrypoint.ts file\n #[aztec(private)]\n fn entrypoint(payload: pub EntrypointPayload) {\n let actions = AccountActions::private(&mut context, ACCOUNT_ACTIONS_STORAGE_SLOT, is_valid_impl);\n actions.entrypoint(payload);\n }\n\n #[aztec(private)]\n fn is_valid(message_hash: Field) -> Field {\n let actions = AccountActions::private(&mut context, ACCOUNT_ACTIONS_STORAGE_SLOT, is_valid_impl);\n actions.is_valid(message_hash)\n }\n\n #[aztec(public)]\n fn is_valid_public(message_hash: Field) -> Field {\n let actions = AccountActions::public(&mut context, ACCOUNT_ACTIONS_STORAGE_SLOT, is_valid_impl);\n actions.is_valid_public(message_hash)\n }\n\n #[aztec(public)]\n internal fn set_is_valid_storage(message_hash: Field, value: bool) {\n let actions = AccountActions::public(&mut context, ACCOUNT_ACTIONS_STORAGE_SLOT, is_valid_impl);\n actions.internal_set_is_valid_storage(message_hash, value)\n }\n\n #[contract_library_method]\n fn is_valid_impl(context: &mut PrivateContext, message_hash: Field) -> pub bool {\n // docs:start:entrypoint\n // Load public key from storage\n let storage = Storage::init(Context::private(context));\n // docs:start:get_note\n let public_key = storage.signing_public_key.get_note();\n // docs:end:get_note\n // Load auth witness\n let witness: [Field; 64] = get_auth_witness(message_hash);\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n\n // Verify signature of the payload bytes\n let verification = std::schnorr::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n message_hash.to_be_bytes(32)\n );\n assert(verification == true);\n // docs:end:entrypoint\n true\n }\n\n // Computes notes hash and nullifier.\n // Note 1: Needs to be defined by every contract producing logs.\n // Note 2: Having it in all the contracts gives us the ability to compute the note hash and nullifier differently for different kind of notes.\n unconstrained fn compute_note_hash_and_nullifier(\n contract_address: AztecAddress,\n nonce: Field,\n storage_slot: Field,\n serialized_note: [Field; PUBLIC_KEY_NOTE_LEN]\n ) -> pub [Field; 4] {\n assert(storage_slot == 1);\n let note_header = NoteHeader::new(contract_address, nonce, storage_slot);\n note_utils::compute_note_hash_and_nullifier(PublicKeyNoteMethods, note_header, serialized_note)\n }\n}\n",
|
|
1082
|
-
"path": "/usr/src/yarn-project/noir-contracts/contracts/schnorr_account_contract/src/main.nr"
|
|
1083
|
-
},
|
|
1084
|
-
"210": {
|
|
1085
|
-
"source": "use dep::aztec::{\n note::{\n note_header::NoteHeader,\n note_interface::NoteInterface,\n utils::compute_unique_siloed_note_hash,\n },\n hash::pedersen_hash,\n oracle::{\n get_secret_key::get_secret_key,\n get_public_key::get_public_key,\n },\n log::emit_encrypted_log,\n context::PrivateContext,\n};\nuse dep::aztec::protocol_types::address::AztecAddress;\n\nglobal PUBLIC_KEY_NOTE_LEN: Field = 3;\n\n// Stores a public key composed of two fields\n// TODO: Do we need to include a nonce, in case we want to read/nullify/recreate with the same pubkey value?\nstruct PublicKeyNote {\n x: Field,\n y: Field,\n owner: AztecAddress, // We store the owner address only to get the secret key to compute the nullifier and to broadcast\n header: NoteHeader,\n}\n\nimpl PublicKeyNote {\n pub fn new(x: Field, y: Field, owner: AztecAddress) -> Self {\n PublicKeyNote {\n x,\n y,\n owner,\n header: NoteHeader::empty(),\n }\n }\n\n // serialize the note as 3 fields\n pub fn serialize(self) -> [Field; PUBLIC_KEY_NOTE_LEN] {\n [self.x, self.y, self.owner.to_field()]\n }\n\n pub fn compute_nullifier(self) -> Field {\n let unique_siloed_note_hash = compute_unique_siloed_note_hash(PublicKeyNoteMethods, self);\n let secret = get_secret_key(self.owner);\n // TODO(#1205) Should use a non-zero generator index.\n pedersen_hash([\n unique_siloed_note_hash,\n secret.low,\n secret.high,\n ],0)\n }\n\n pub fn set_header(&mut self, header: NoteHeader) {\n self.header = header;\n }\n\n // Broadcasts the note as an encrypted log on L1.\n pub fn broadcast(self, context: &mut PrivateContext, slot: Field) {\n let encryption_pub_key = get_public_key(self.owner);\n emit_encrypted_log(\n context,\n (*context).this_address(),\n slot,\n encryption_pub_key,\n self.serialize(),\n );\n }\n}\n\nfn deserialize(serialized_note: [Field; PUBLIC_KEY_NOTE_LEN]) -> PublicKeyNote {\n PublicKeyNote {\n x: serialized_note[0],\n y: serialized_note[1],\n owner: AztecAddress::from_field(serialized_note[2]),\n header: NoteHeader::empty()\n }\n}\n\nfn serialize(note: PublicKeyNote) -> [Field; PUBLIC_KEY_NOTE_LEN] {\n note.serialize()\n}\n\nfn compute_note_hash(note: PublicKeyNote) -> Field {\n // TODO(#1205) Should use a non-zero generator index.\n pedersen_hash(note.serialize(), 0)\n}\n\nfn compute_nullifier(note: PublicKeyNote) -> Field {\n note.compute_nullifier()\n}\n\nfn get_header(note: PublicKeyNote) -> NoteHeader {\n note.header\n}\n\nfn set_header(note: &mut PublicKeyNote, header: NoteHeader) {\n note.set_header(header);\n}\n\n// Broadcasts the note as an encrypted log on L1.\nfn broadcast(context: &mut PrivateContext, slot: Field, note: PublicKeyNote) {\n note.broadcast(context, slot);\n}\n\nglobal PublicKeyNoteMethods = NoteInterface {\n deserialize,\n serialize,\n compute_note_hash,\n compute_nullifier,\n get_header,\n set_header,\n broadcast,\n};\n",
|
|
1086
|
-
"path": "/usr/src/yarn-project/noir-contracts/contracts/schnorr_account_contract/src/public_key_note.nr"
|
|
1087
|
-
}
|
|
1575
|
+
"file_map": {
|
|
1576
|
+
"16": {
|
|
1577
|
+
"source": "mod bn254;\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n pub fn to_le_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_le_bits(bit_size)\n }\n \n pub fn to_be_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_be_bits(bit_size)\n }\n\n #[builtin(to_le_bits)]\n fn __to_le_bits(_self: Self, _bit_size: u32) -> [u1] {}\n \n #[builtin(to_be_bits)]\n fn __to_be_bits(_self: Self, _bit_size: u32) -> [u1] {}\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(_self: Self, _bit_size: u32) {}\n\n pub fn assert_max_bit_size(self: Self, bit_size: u32) {\n crate::assert_constant(bit_size);\n assert(bit_size < modulus_num_bits() as u32);\n self.__assert_max_bit_size(bit_size);\n }\n\n pub fn to_le_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_le_radix(256, byte_size)\n }\n\n pub fn to_be_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_be_radix(256, byte_size)\n }\n\n\n pub fn to_le_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_le_radix(radix, result_len)\n }\n\n pub fn to_be_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_be_radix(radix, result_len)\n }\n\n\n\n // decompose `_self` into a `_result_len` vector over the `_radix` basis\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix(_self: Self, _radix: u32, _result_len: u32) -> [u8] {}\n \n #[builtin(to_be_radix)]\n fn __to_be_radix(_self: Self, _radix: u32, _result_len: 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 = exponent.to_le_bits(32);\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 ∈ {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}\n\n#[builtin(modulus_num_bits)]\npub fn modulus_num_bits() -> Field {}\n\n#[builtin(modulus_be_bits)]\npub fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub fn modulus_le_bytes() -> [u8] {}\n// Convert a 32 byte array to a field element\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 let num_bytes = (modulus_num_bits() as u32 + 7) / 8;\n let x_bytes = x.to_le_bytes(num_bytes);\n let y_bytes = y.to_le_bytes(num_bytes);\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i] as u8;\n let y_byte = y_bytes[num_bytes - 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",
|
|
1578
|
+
"path": "std/field.nr"
|
|
1579
|
+
},
|
|
1580
|
+
"28": {
|
|
1581
|
+
"source": "struct Option<T> {\n _is_some: bool,\n _value: T,\n}\n\nimpl<T> Option<T> {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::unsafe::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some {\n self._value\n } else {\n default\n }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else<Env>(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> Option<U> {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or<U, Env>(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else<U, Env1, Env2>(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then<U, Env>(self, f: fn[Env](T) -> Option<U>) -> Option<U> {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some {\n self\n } else {\n other\n }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else<U, Env>(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some {\n self\n } else {\n default()\n }\n }\n\n // If only one of the two Options is Some, return that option.\n // Otherwise, if both options are Some or both are None, None is returned.\n pub fn xor(self, other: Self) -> Self {\n if self._is_some {\n if other._is_some {\n Option::none()\n } else {\n self\n }\n } else if other._is_some {\n other\n } else {\n Option::none()\n }\n }\n\n /// Returns `Some(x)` if self is `Some(x)` and `predicate(x)` is true.\n /// Otherwise, this returns `None`\n pub fn filter<Env>(self, predicate: fn[Env](T) -> bool) -> Self {\n if self._is_some {\n if predicate(self._value) {\n self\n } else {\n Option::none()\n }\n } else {\n Option::none()\n }\n }\n\n /// Flattens an Option<Option<T>> into a Option<T>.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option<Option<T>>) -> Option<T> {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n",
|
|
1582
|
+
"path": "std/option.nr"
|
|
1583
|
+
},
|
|
1584
|
+
"40": {
|
|
1585
|
+
"source": "use crate::context::{PrivateContext, PublicContext};\nuse crate::oracle;\nuse dep::protocol_types::{\n address::AztecAddress,\n grumpkin_point::GrumpkinPoint,\n};\n\npub fn emit_encrypted_log<N>(\n context: &mut PrivateContext,\n contract_address: AztecAddress,\n storage_slot: Field,\n encryption_pub_key: GrumpkinPoint,\n log: [Field; N]\n) {\n let _ = oracle::logs::emit_encrypted_log(contract_address, storage_slot, encryption_pub_key, log);\n context.accumulate_encrypted_logs(log);\n}\n\npub fn emit_unencrypted_log<T>(context: &mut PublicContext, log: T) {\n let contract_address = context.this_address();\n let event_selector = 5; // TODO: compute actual event selector.\n let _ = oracle::logs::emit_unencrypted_log(contract_address, event_selector, log);\n // context.accumulate_unencrypted_logs(log);\n}\n\n// TODO: We might want to remove this since emitting unencrypted logs from private functions is violating privacy.\n// --> might be a better approach to force devs to make a public function call that emits the log if needed then\n// it would be less easy to accidentally leak information.\n// If we decide to keep this function around would make sense to wait for traits and then merge it with emit_unencrypted_log.\npub fn emit_unencrypted_log_from_private<T>(context: &mut PrivateContext, log: T) {\n let contract_address = context.this_address();\n let event_selector = 5; // TODO: compute actual event selector.\n let _ = oracle::logs::emit_unencrypted_log(contract_address, event_selector, log);\n // context.accumulate_unencrypted_logs(log);\n}\n",
|
|
1586
|
+
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/log.nr"
|
|
1587
|
+
},
|
|
1588
|
+
"41": {
|
|
1589
|
+
"source": "use dep::protocol_types::{\n abis::{\n block_header::BlockHeader,\n call_context::CallContext,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_circuit_public_inputs::PublicCircuitPublicInputs,\n },\n contrakt::deployment_data::ContractDeploymentData,\n hash::hash_args,\n};\n\n// docs:start:private-global-variables\nstruct PrivateGlobalVariables {\n chain_id: Field,\n version: Field,\n}\n// docs:end:private-global-variables\n\nimpl PrivateGlobalVariables {\n fn serialize(self) -> [Field; 2] {\n [self.chain_id, self.version]\n }\n}\n\n// docs:start:public-global-variables\nstruct PublicGlobalVariables {\n chain_id: Field,\n version: Field,\n block_number: Field,\n timestamp: Field,\n}\n// docs:end:public-global-variables\n\nimpl PublicGlobalVariables {\n fn serialize(self) -> [Field; 4] {\n [self.chain_id, self.version, self.block_number, self.timestamp]\n }\n}\n\n// PrivateContextInputs are expected to be provided to each private function\n// docs:start:private-context-inputs\nstruct PrivateContextInputs {\n call_context : CallContext,\n block_header: BlockHeader,\n contract_deployment_data: ContractDeploymentData,\n private_global_variables: PrivateGlobalVariables,\n}\n// docs:end:private-context-inputs\n\n// PublicContextInputs are expected to be provided to each public function\n// docs:start:public-context-inputs\nstruct PublicContextInputs {\n call_context: CallContext,\n block_header: BlockHeader,\n\n public_global_variables: PublicGlobalVariables,\n}\n// docs:end:public-context-inputs\n\nstruct Hasher {\n fields: [Field],\n}\n\nimpl Hasher {\n pub fn new()-> Self {\n Self { fields: [] }\n }\n\n pub fn add(&mut self, field: Field) {\n self.fields = self.fields.push_back(field);\n }\n\n pub fn add_multiple<N>(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n\n pub fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n",
|
|
1590
|
+
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/abi.nr"
|
|
1591
|
+
},
|
|
1592
|
+
"42": {
|
|
1593
|
+
"source": "use dep::std::option::Option;\nuse dep::protocol_types::{\n address::AztecAddress,\n};\n\nuse crate::context::{PrivateContext, Context};\nuse crate::note::{\n lifecycle::create_note,\n note_getter::{get_note, view_notes},\n note_interface::NoteInterface,\n note_viewer_options::NoteViewerOptions,\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::singleton::compute_singleton_initialization_nullifier;\n\n// docs:start:struct\nstruct ImmutableSingleton<Note, N> {\n context: Option<&mut PrivateContext>,\n storage_slot: Field,\n note_interface: NoteInterface<Note, N>,\n compute_initialization_nullifier: fn (Field, Option<AztecAddress>, Option<&mut PrivateContext>) -> Field,\n}\n// docs:end:struct\n\nimpl<Note, N> ImmutableSingleton<Note, N> {\n // docs:start:new\n pub fn new(\n context: Context,\n storage_slot: Field,\n note_interface: NoteInterface<Note, N>,\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n ImmutableSingleton {\n context: context.private,\n storage_slot,\n note_interface,\n compute_initialization_nullifier: compute_singleton_initialization_nullifier,\n }\n }\n // docs:end:new\n\n // docs:start:is_initialized\n unconstrained pub fn is_initialized(self, owner: Option<AztecAddress>) -> bool {\n let compute_initialization_nullifier = self.compute_initialization_nullifier;\n let nullifier = compute_initialization_nullifier(self.storage_slot, owner, Option::none());\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n // docs:start:initialize\n pub fn initialize(\n self,\n note: &mut Note, \n owner: Option<AztecAddress>,\n broadcast: bool,\n ) {\n let context = self.context.unwrap();\n\n // Nullify the storage slot.\n let compute_initialization_nullifier = self.compute_initialization_nullifier;\n let nullifier = compute_initialization_nullifier(self.storage_slot, owner, self.context);\n context.push_new_nullifier(nullifier, 0);\n\n create_note(\n context,\n self.storage_slot,\n note,\n self.note_interface,\n broadcast,\n );\n }\n // docs:end:initialize\n\n // docs:start:get_note\n pub fn get_note(self) -> Note {\n let context = self.context.unwrap();\n let storage_slot = self.storage_slot;\n get_note(context, storage_slot, self.note_interface)\n }\n // docs:end:get_note\n\n // docs:start:view_note\n unconstrained pub fn view_note(self) -> Note {\n let options = NoteViewerOptions::new().set_limit(1);\n view_notes(self.storage_slot, self.note_interface, options)[0].unwrap()\n }\n // docs:end:view_note\n}\n",
|
|
1594
|
+
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/state_vars/immutable_singleton.nr"
|
|
1595
|
+
},
|
|
1596
|
+
"43": {
|
|
1597
|
+
"source": "use crate::context::{Context};\nuse crate::oracle::storage::storage_read;\nuse crate::oracle::storage::storage_write;\nuse crate::types::type_serialization::TypeSerializationInterface;\nuse dep::std::option::Option;\n\n// docs:start:public_state_struct\nstruct PublicState<T, T_SERIALIZED_LEN> {\n context: Context,\n storage_slot: Field,\n serialization_methods: TypeSerializationInterface<T, T_SERIALIZED_LEN>,\n}\n// docs:end:public_state_struct\n\nimpl<T, T_SERIALIZED_LEN> PublicState<T, T_SERIALIZED_LEN> {\n // docs:start:public_state_struct_new\n pub fn new(\n // Note: Passing the contexts to new(...) just to have an interface compatible with a Map.\n context: Context,\n storage_slot: Field,\n serialization_methods: TypeSerializationInterface<T, T_SERIALIZED_LEN>,\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n PublicState {\n context,\n storage_slot,\n serialization_methods,\n }\n }\n // docs:end:public_state_struct_new\n\n // docs:start:public_state_struct_read\n pub fn read(self) -> T {\n assert(self.context.private.is_none(), \"Public state reads only supported in public functions\");\n storage_read(self.storage_slot, self.serialization_methods.deserialize)\n }\n // docs:end:public_state_struct_read\n\n // docs:start:public_state_struct_write\n pub fn write(self, value: T) {\n assert(self.context.private.is_none(), \"Public state writes only supported in public functions\");\n let serialize = self.serialization_methods.serialize;\n let fields = serialize(value);\n storage_write(self.storage_slot, fields);\n }\n // docs:end:public_state_struct_write\n}\n",
|
|
1598
|
+
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/state_vars/public_state.nr"
|
|
1599
|
+
},
|
|
1600
|
+
"44": {
|
|
1601
|
+
"source": "use crate::context::{PrivateContext, PublicContext, Context};\nuse dep::std::option::Option;\nuse dep::protocol_types::{\n hash::pedersen_hash,\n traits::{ToField}\n};\n\n// docs:start:map\nstruct Map<K, V> {\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n}\n// docs:end:map\n\nimpl<K, V> Map<K, V> {\n // docs:start:new\n pub fn new(\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Map {\n context,\n storage_slot,\n state_var_constructor,\n }\n }\n // docs:end:new\n\n // docs:start:at\n pub fn at(self, key: K) -> V where K: ToField {\n // TODO(#1204): use a generator index for the storage slot\n let derived_storage_slot = pedersen_hash([self.storage_slot, key.to_field()],0);\n\n let state_var_constructor = self.state_var_constructor;\n state_var_constructor(self.context, derived_storage_slot)\n }\n // docs:end:at\n}\n",
|
|
1602
|
+
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/state_vars/map.nr"
|
|
1603
|
+
},
|
|
1604
|
+
"45": {
|
|
1605
|
+
"source": "use dep::std::option::Option;\n\nuse dep::protocol_types::{\n address::AztecAddress,\n constants::{\n GENERATOR_INDEX__INITIALIZATION_NULLIFIER,\n },\n hash::pedersen_hash,\n};\n\nuse crate::context::{PrivateContext, PublicContext, Context};\nuse crate::note::{\n lifecycle::{create_note, destroy_note},\n note_getter::{get_note, view_notes},\n note_interface::NoteInterface,\n note_viewer_options::NoteViewerOptions,\n};\nuse crate::oracle::{\n nullifier_key::get_nullifier_secret_key,\n notes::check_nullifier_exists,\n};\n\npub fn compute_singleton_initialization_nullifier(\n storage_slot: Field,\n owner: Option<AztecAddress>,\n context: Option<&mut PrivateContext>\n) -> Field {\n if owner.is_some() {\n let secret = if context.is_some() {\n context.unwrap_unchecked().request_nullifier_secret_key(owner.unwrap_unchecked())\n } else {\n get_nullifier_secret_key(owner.unwrap_unchecked())\n };\n pedersen_hash(\n [storage_slot, secret.low, secret.high],\n GENERATOR_INDEX__INITIALIZATION_NULLIFIER\n )\n } else {\n pedersen_hash([storage_slot], GENERATOR_INDEX__INITIALIZATION_NULLIFIER)\n }\n}\n\n// docs:start:struct\nstruct Singleton<Note, N> {\n context: Option<&mut PrivateContext>,\n storage_slot: Field,\n note_interface: NoteInterface<Note, N>,\n compute_initialization_nullifier: fn (Field, Option<AztecAddress>, Option<&mut PrivateContext>) -> Field,\n}\n// docs:end:struct\n\nimpl<Note, N> Singleton<Note, N> {\n // docs:start:new\n pub fn new(\n context: Context,\n storage_slot: Field,\n note_interface: NoteInterface<Note, N>,\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Singleton {\n context: context.private,\n storage_slot,\n note_interface,\n compute_initialization_nullifier: compute_singleton_initialization_nullifier,\n }\n }\n // docs:end:new\n\n // docs:start:is_initialized\n unconstrained pub fn is_initialized(self, owner: Option<AztecAddress>) -> bool {\n let compute_initialization_nullifier = self.compute_initialization_nullifier;\n let nullifier = compute_initialization_nullifier(self.storage_slot, owner, Option::none());\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n // docs:start:initialize\n pub fn initialize(\n self,\n note: &mut Note,\n owner: Option<AztecAddress>,\n broadcast: bool,\n ) {\n let context = self.context.unwrap();\n\n // Nullify the storage slot.\n let compute_initialization_nullifier = self.compute_initialization_nullifier;\n let nullifier = compute_initialization_nullifier(self.storage_slot, owner, self.context);\n context.push_new_nullifier(nullifier, 0);\n\n create_note(context, self.storage_slot, note, self.note_interface, broadcast);\n }\n // docs:end:initialize\n\n // docs:start:replace\n pub fn replace(\n self,\n new_note: &mut Note,\n broadcast: bool,\n ) {\n let context = self.context.unwrap();\n let prev_note = get_note(context, self.storage_slot, self.note_interface);\n\n // Nullify previous note.\n destroy_note(context, prev_note, self.note_interface);\n\n // Add replacement note.\n create_note(context, self.storage_slot, new_note, self.note_interface, broadcast);\n }\n // docs:end:replace\n\n // docs:start:get_note\n pub fn get_note(self, broadcast: bool) -> Note {\n let context = self.context.unwrap();\n let mut note = get_note(context, self.storage_slot, self.note_interface);\n\n // Nullify current note to make sure it's reading the latest note.\n destroy_note(context, note, self.note_interface);\n\n // Add the same note again.\n // Because a nonce is added to every note in the kernel, its nullifier will be different.\n create_note(context, self.storage_slot, &mut note, self.note_interface, broadcast);\n\n note\n }\n // docs:end:get_note\n\n // docs:start:view_note\n unconstrained pub fn view_note(self) -> Note {\n let options = NoteViewerOptions::new().set_limit(1);\n view_notes(self.storage_slot, self.note_interface, options)[0].unwrap()\n }\n // docs:end:view_note\n}\n",
|
|
1606
|
+
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/state_vars/singleton.nr"
|
|
1607
|
+
},
|
|
1608
|
+
"51": {
|
|
1609
|
+
"source": "use crate::types::type_serialization::TypeSerializationInterface;\n\nglobal BOOL_SERIALIZED_LEN: Field = 1;\n\nfn deserializeBool(fields: [Field; BOOL_SERIALIZED_LEN]) -> bool {\n fields[0] as bool\n}\n\nfn serializeBool(value: bool) -> [Field; BOOL_SERIALIZED_LEN] {\n [value as Field]\n}\n\nglobal BoolSerializationMethods = TypeSerializationInterface {\n deserialize: deserializeBool,\n serialize: serializeBool,\n};\n",
|
|
1610
|
+
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/types/type_serialization/bool_serialization.nr"
|
|
1611
|
+
},
|
|
1612
|
+
"53": {
|
|
1613
|
+
"source": "struct BoundedVec<T, MaxLen> {\n storage: [T; MaxLen],\n len: Field,\n}\n\nimpl<T, MaxLen> BoundedVec<T, MaxLen> {\n pub fn new(initial_value: T) -> Self {\n BoundedVec { storage: [initial_value; MaxLen], len: 0 }\n }\n\n pub fn get(mut self: Self, index: Field) -> T {\n assert(index as u64 < self.len as u64);\n self.storage[index]\n }\n\n pub fn get_unchecked(mut self: Self, index: Field) -> T {\n self.storage[index]\n }\n\n pub fn push(&mut self, elem: T) {\n assert(self.len as u64 < MaxLen as u64);\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n pub fn push_array<Len>(&mut self, array: [T; Len]) {\n let newLen = self.len + array.len();\n assert(newLen as u64 <= MaxLen as u64);\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = newLen;\n }\n\n pub fn pop(&mut self) -> T {\n assert(self.len as u64 > 0);\n\n let elem = self.storage[self.len - 1];\n self.len -= 1;\n elem\n }\n\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if (!exceeded_len) {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n}\n\n#[test]\nfn test_vec_push_pop() {\n let mut vec: BoundedVec<Field, 3> = BoundedVec::new(0);\n assert(vec.len == 0);\n vec.push(2);\n assert(vec.len == 1);\n vec.push(4);\n assert(vec.len == 2);\n vec.push(6);\n assert(vec.len == 3);\n let x = vec.pop();\n assert(x == 6);\n assert(vec.len == 2);\n assert(vec.get(0) == 2);\n assert(vec.get(1) == 4);\n}\n\n#[test]\nfn test_vec_push_array() {\n let mut vec: BoundedVec<Field, 3> = BoundedVec::new(0);\n vec.push_array([2, 4]);\n assert(vec.len == 2);\n assert(vec.get(0) == 2);\n assert(vec.get(1) == 4);\n}\n\n#[test(should_fail)]\nfn test_vec_get_out_of_bound() {\n let mut vec: BoundedVec<Field, 2> = BoundedVec::new(0);\n vec.push_array([2, 4]);\n let _x = vec.get(2);\n}\n\n#[test(should_fail)]\nfn test_vec_get_not_declared() {\n let mut vec: BoundedVec<Field, 2> = BoundedVec::new(0);\n vec.push_array([2]);\n let _x = vec.get(1);\n}\n\n#[test(should_fail)]\nfn test_vec_get_uninitialized() {\n let mut vec: BoundedVec<Field, 2> = BoundedVec::new(0);\n let _x = vec.get(0);\n}\n\n#[test(should_fail)]\nfn test_vec_push_overflow() {\n let mut vec: BoundedVec<Field, 1> = BoundedVec::new(0);\n vec.push(1);\n vec.push(2);\n}\n\n#[test]\nfn test_vec_any() {\n let mut vec: BoundedVec<Field, 3> = BoundedVec::new(0);\n vec.push_array([2, 4, 6]);\n assert(vec.any(|v| v == 2) == true);\n assert(vec.any(|v| v == 4) == true);\n assert(vec.any(|v| v == 6) == true);\n assert(vec.any(|v| v == 3) == false);\n}\n\n#[test]\nfn test_vec_any_not_default() {\n let default_value = 1;\n let mut vec: BoundedVec<Field, 3> = BoundedVec::new(default_value);\n vec.push_array([2, 4]);\n assert(vec.any(|v| v == default_value) == false);\n}\n",
|
|
1614
|
+
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/types/vec.nr"
|
|
1615
|
+
},
|
|
1616
|
+
"66": {
|
|
1617
|
+
"source": "pub fn arr_copy_slice<T, N, M>(src: [T; N], mut dst: [T; M], offset: Field) -> [T; M] {\n for i in 0..dst.len() {\n dst[i] = src[i + offset];\n }\n dst\n}\n\n// TODO(#3470): Copied over from https://github.com/AztecProtocol/aztec-packages/blob/a07c4bd47313be6aa604a63f37857eb0136b41ba/yarn-project/noir-protocol-circuits/src/crates/rollup-lib/src/base/base_rollup_inputs.nr#L599\n// move to a shared place?\n\n// TODO to radix returns u8, so we cannot use bigger radixes. It'd be ideal to use a radix of the maximum range-constrained integer noir supports\npub fn full_field_less_than(lhs: Field, rhs: Field) -> bool {\n lhs.lt(rhs)\n}\n\npub fn full_field_greater_than(lhs: Field, rhs: Field) -> bool {\n rhs.lt(lhs)\n}\n\nstruct Reader<N> {\n data: [Field; N],\n offset: Field,\n}\n\nimpl<N> 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_array<K>(&mut self, mut result: [Field; K]) -> [Field; 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, K>(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array([0; K]));\n result\n }\n\n pub fn read_struct_array<T, K, C>(&mut self, deserialise: fn([Field; K]) -> T, mut result: [T; C]) -> [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",
|
|
1618
|
+
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/utils.nr"
|
|
1619
|
+
},
|
|
1620
|
+
"68": {
|
|
1621
|
+
"source": "use crate::{\n abi::{\n PrivateContextInputs,\n PublicContextInputs,\n },\n key::nullifier_key::validate_nullifier_key_against_address,\n messaging::process_l1_to_l2_message,\n oracle::{\n arguments,\n call_private_function::call_private_function_internal,\n public_call::call_public_function_internal,\n enqueue_public_function_call::enqueue_public_function_call_internal,\n context::get_portal_address,\n get_block_header::get_block_header,\n nullifier_key::get_nullifier_key_pair,\n },\n types::vec::BoundedVec,\n utils::Reader,\n};\nuse dep::protocol_types::{\n abis::{\n block_header::BlockHeader,\n call_context::CallContext,\n function_data::FunctionData,\n function_selector::FunctionSelector,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_circuit_public_inputs::PublicCircuitPublicInputs,\n call_stack_item::PrivateCallStackItem,\n call_stack_item::PublicCallStackItem,\n side_effect::{SideEffect, SideEffectLinkedToNoteHash},\n },\n address::{\n AztecAddress,\n EthAddress,\n },\n constants::{\n MAX_NEW_COMMITMENTS_PER_CALL,\n MAX_NEW_L2_TO_L1_MSGS_PER_CALL,\n MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL,\n MAX_READ_REQUESTS_PER_CALL,\n NUM_FIELDS_PER_SHA256,\n RETURN_VALUES_LENGTH,\n },\n contrakt::{\n deployment_data::ContractDeploymentData,\n storage_read::StorageRead,\n storage_update_request::StorageUpdateRequest,\n },\n hash::hash_args,\n grumpkin_point::GrumpkinPoint,\n};\nuse dep::std::{\n grumpkin_scalar::GrumpkinScalar,\n option::Option,\n};\n\n// TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n// use dep::std::collections::vec::Vec;\n\n// When finished, one can call .finish() to convert back to the abi\nstruct PrivateContext {\n // docs:start:private-context\n inputs: PrivateContextInputs,\n side_effect_counter: u32,\n\n args_hash : Field,\n return_values : BoundedVec<Field, RETURN_VALUES_LENGTH>,\n\n read_requests: BoundedVec<SideEffect, MAX_READ_REQUESTS_PER_CALL>,\n\n new_commitments: BoundedVec<SideEffect, MAX_NEW_COMMITMENTS_PER_CALL>,\n new_nullifiers: BoundedVec<SideEffectLinkedToNoteHash, MAX_NEW_NULLIFIERS_PER_CALL>,\n\n private_call_stack_hashes : BoundedVec<Field, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>,\n public_call_stack_hashes : BoundedVec<Field, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n new_l2_to_l1_msgs : BoundedVec<Field, MAX_NEW_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n block_header: BlockHeader,\n\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n // encrypted_logs_preimages: Vec<Field>,\n // unencrypted_logs_preimages: Vec<Field>,\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs: inputs,\n side_effect_counter: inputs.call_context.start_side_effect_counter,\n\n args_hash: args_hash,\n return_values: BoundedVec::new(0),\n\n read_requests: BoundedVec::new(SideEffect::empty()),\n\n new_commitments: BoundedVec::new(SideEffect::empty()),\n new_nullifiers: BoundedVec::new(SideEffectLinkedToNoteHash::empty()),\n\n block_header: inputs.block_header,\n\n private_call_stack_hashes: BoundedVec::new(0),\n public_call_stack_hashes: BoundedVec::new(0),\n new_l2_to_l1_msgs: BoundedVec::new(0),\n\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n // encrypted_logs_preimages: Vec::new(),\n // unencrypted_logs_preimages: Vec::new(),\n }\n }\n\n pub fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n pub fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n pub fn this_portal_address(self) -> EthAddress {\n self.inputs.call_context.portal_contract_address\n }\n\n pub fn chain_id(self) -> Field {\n self.inputs.private_global_variables.chain_id\n }\n\n pub fn version(self) -> Field {\n self.inputs.private_global_variables.version\n }\n\n pub fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n pub fn get_block_header(self, block_number: u32) -> BlockHeader {\n get_block_header(block_number, self)\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n let encrypted_logs_hash = [0; NUM_FIELDS_PER_SHA256];\n let unencrypted_logs_hash = [0; NUM_FIELDS_PER_SHA256];\n let encrypted_log_preimages_length = 0;\n let unencrypted_log_preimages_length = 0;\n\n let priv_circuit_pub_inputs = PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n return_values: self.return_values.storage,\n read_requests: self.read_requests.storage,\n new_commitments: self.new_commitments.storage,\n new_nullifiers: self.new_nullifiers.storage,\n private_call_stack_hashes: self.private_call_stack_hashes.storage,\n public_call_stack_hashes: self.public_call_stack_hashes.storage,\n new_l2_to_l1_msgs: self.new_l2_to_l1_msgs.storage,\n end_side_effect_counter: self.side_effect_counter,\n encrypted_logs_hash: encrypted_logs_hash,\n unencrypted_logs_hash: unencrypted_logs_hash,\n encrypted_log_preimages_length: encrypted_log_preimages_length,\n unencrypted_log_preimages_length: unencrypted_log_preimages_length,\n block_header: self.block_header,\n contract_deployment_data: self.inputs.contract_deployment_data,\n chain_id: self.inputs.private_global_variables.chain_id,\n version: self.inputs.private_global_variables.version,\n };\n priv_circuit_pub_inputs\n }\n\n pub fn push_read_request(&mut self, read_request: Field) {\n let side_effect = SideEffect {\n value: read_request,\n counter: self.side_effect_counter,\n };\n self.read_requests.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn push_new_note_hash(&mut self, note_hash: Field) {\n let side_effect = SideEffect {\n value: note_hash,\n counter: self.side_effect_counter,\n };\n self.new_commitments.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn push_new_nullifier(&mut self, nullifier: Field, nullified_commitment: Field) {\n let side_effect = SideEffectLinkedToNoteHash {\n value: nullifier,\n note_hash: nullified_commitment,\n counter: self.side_effect_counter,\n };\n self.new_nullifiers.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn request_nullifier_secret_key(&mut self, account: AztecAddress) -> GrumpkinScalar {\n let key_pair = get_nullifier_key_pair(account);\n validate_nullifier_key_against_address(account, key_pair.public_key, key_pair.secret_key);\n // TODO: Add request to context.\n // self.context.push_nullifier_key_validation_request(public_key, secret_key);\n key_pair.secret_key\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, content: Field) \n // docs:end:context_message_portal\n {\n self.new_l2_to_l1_msgs.push(content);\n }\n\n // PrivateContextInputs must be temporarily passed in to prevent too many unknowns\n // Note this returns self to get around an issue where mutable structs do not maintain mutations unless reassigned\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(\n &mut self,\n msg_key: Field,\n content: Field,\n secret: Field\n ) \n // docs:end:context_consume_l1_to_l2_message\n {\n let nullifier = process_l1_to_l2_message(self.block_header.l1_to_l2_message_tree_root, self.this_address(), self.this_portal_address(), self.chain_id(), self.version(), msg_key, content, secret);\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_new_nullifier(nullifier, 0)\n }\n // docs:end:consume_l1_to_l2_message\n\n pub fn accumulate_encrypted_logs<N>(&mut self, log: [Field; N]) {\n let _void1 = self.inputs;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n pub fn accumulate_unencrypted_logs<T>(&mut self, log: T) {\n let _void1 = self.inputs;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n pub fn call_private_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector, \n args: [Field; ARGS_COUNT]\n ) -> [Field; RETURN_VALUES_LENGTH] {\n let args_hash = hash_args(args);\n assert(args_hash == arguments::pack_arguments(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash)\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector, \n ) -> [Field; RETURN_VALUES_LENGTH] {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0)\n }\n\n pub fn call_private_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field\n ) -> [Field; RETURN_VALUES_LENGTH] {\n let fields = call_private_function_internal(\n contract_address,\n function_selector, \n args_hash,\n self.side_effect_counter,\n );\n let mut reader = Reader::new(fields);\n\n let item = PrivateCallStackItem {\n contract_address: AztecAddress::from_field(reader.read()),\n function_data: FunctionData {\n selector: FunctionSelector::from_field(reader.read()),\n is_internal: reader.read() as bool,\n is_private: reader.read() as bool,\n is_constructor: reader.read() as bool,\n },\n public_inputs: PrivateCircuitPublicInputs {\n call_context: CallContext {\n msg_sender : AztecAddress::from_field(reader.read()),\n storage_contract_address : AztecAddress::from_field(reader.read()),\n portal_contract_address : EthAddress::from_field(reader.read()),\n function_selector: FunctionSelector::from_field(reader.read()), // practically same as fields[1]\n is_delegate_call : reader.read() as bool,\n is_static_call : reader.read() as bool,\n is_contract_deployment: reader.read() as bool,\n start_side_effect_counter: reader.read() as u32,\n },\n args_hash: reader.read(),\n return_values: reader.read_array([0; RETURN_VALUES_LENGTH]), // +1\n read_requests: reader.read_struct_array(SideEffect::deserialise, [SideEffect::empty(); MAX_READ_REQUESTS_PER_CALL]),\n new_commitments: reader.read_struct_array(SideEffect::deserialise, [SideEffect::empty(); MAX_NEW_COMMITMENTS_PER_CALL]),\n new_nullifiers: reader.read_struct_array(SideEffectLinkedToNoteHash::deserialise, [SideEffectLinkedToNoteHash::empty(); MAX_NEW_NULLIFIERS_PER_CALL]),\n private_call_stack_hashes: reader.read_array([0; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL]),\n public_call_stack_hashes: reader.read_array([0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL]),\n new_l2_to_l1_msgs: reader.read_array([0; MAX_NEW_L2_TO_L1_MSGS_PER_CALL]),\n end_side_effect_counter: reader.read() as u32,\n encrypted_logs_hash: reader.read_array([0; NUM_FIELDS_PER_SHA256]),\n unencrypted_logs_hash: reader.read_array([0; NUM_FIELDS_PER_SHA256]),\n encrypted_log_preimages_length: reader.read(),\n unencrypted_log_preimages_length: reader.read(),\n block_header: BlockHeader{\n // Must match order in `private_circuit_public_inputs.hpp`\n note_hash_tree_root : reader.read(),\n nullifier_tree_root : reader.read(),\n contract_tree_root : reader.read(),\n l1_to_l2_message_tree_root : reader.read(),\n archive_root : reader.read(),\n public_data_tree_root: reader.read(),\n global_variables_hash: reader.read(),\n },\n contract_deployment_data: ContractDeploymentData {\n deployer_public_key: GrumpkinPoint {\n x: reader.read(), \n y: reader.read()\n },\n constructor_vk_hash : reader.read(),\n function_tree_root : reader.read(),\n contract_address_salt : reader.read(),\n portal_contract_address : EthAddress::from_field(reader.read()),\n },\n chain_id: reader.read(),\n version: reader.read(),\n },\n is_execution_request: reader.read() as bool,\n };\n\n reader.finish();\n\n assert_eq(item.public_inputs.call_context.start_side_effect_counter, self.side_effect_counter);\n self.side_effect_counter = item.public_inputs.end_side_effect_counter + 1;\n \n assert(contract_address.eq(item.contract_address));\n assert(function_selector.eq(item.function_data.selector));\n\n assert(args_hash == item.public_inputs.args_hash);\n\n assert(item.is_execution_request == false);\n\n // Assert that the call context of the enqueued call generated by the oracle matches our request.\n // We are issuing a regular call which is not delegate, static, or deployment. We also constrain\n // the msg_sender in the nested call to be equal to our address, and the execution context address\n // for the nested call to be equal to the address we actually called.\n assert(item.public_inputs.call_context.is_delegate_call == false);\n assert(item.public_inputs.call_context.is_static_call == false);\n assert(item.public_inputs.call_context.is_contract_deployment == false);\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address));\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n\n self.private_call_stack_hashes.push(item.hash());\n\n item.public_inputs.return_values\n }\n\n pub fn call_public_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector, \n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args(args);\n assert(args_hash == arguments::pack_arguments(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash)\n }\n\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector,\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0)\n }\n\n pub fn call_public_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field\n ) {\n let fields = enqueue_public_function_call_internal(\n contract_address, \n function_selector, \n args_hash,\n self.side_effect_counter\n );\n\n let mut reader = Reader::new(fields);\n\n let item = PublicCallStackItem {\n contract_address: AztecAddress::from_field(reader.read()),\n function_data: FunctionData {\n selector: FunctionSelector::from_field(reader.read()),\n is_internal: reader.read() as bool,\n is_private: reader.read() as bool,\n is_constructor: reader.read() as bool,\n },\n public_inputs: PublicCircuitPublicInputs {\n call_context: CallContext {\n msg_sender : AztecAddress::from_field(reader.read()),\n storage_contract_address : AztecAddress::from_field(reader.read()),\n portal_contract_address : EthAddress::from_field(reader.read()),\n function_selector: FunctionSelector::from_field(reader.read()), // practically same as fields[1]\n is_delegate_call : reader.read() as bool,\n is_static_call : reader.read() as bool,\n is_contract_deployment: reader.read() as bool,\n start_side_effect_counter: reader.read() as u32,\n },\n args_hash: reader.read(),\n return_values: [0; RETURN_VALUES_LENGTH],\n contract_storage_update_requests: [StorageUpdateRequest::empty(); MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL],\n contract_storage_reads: [StorageRead::empty(); MAX_PUBLIC_DATA_READS_PER_CALL],\n public_call_stack_hashes: [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n new_commitments: [SideEffect::empty(); MAX_NEW_COMMITMENTS_PER_CALL],\n new_nullifiers: [SideEffectLinkedToNoteHash::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs:[0; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n unencrypted_logs_hash:[0; NUM_FIELDS_PER_SHA256],\n unencrypted_log_preimages_length: 0,\n block_header: BlockHeader::empty(),\n prover_address: AztecAddress::zero(),\n },\n is_execution_request: true,\n };\n reader.finish();\n\n assert(contract_address.eq(item.contract_address));\n assert(function_selector.eq(item.function_data.selector));\n\n assert_eq(item.public_inputs.call_context.start_side_effect_counter, self.side_effect_counter);\n // We increment the sideffect counter by one, to account for the call itself being a side effect.\n self.side_effect_counter = self.side_effect_counter + 1;\n \n assert(args_hash == item.public_inputs.args_hash);\n\n // Assert that the call context of the enqueued call generated by the oracle matches our request.\n // We are issuing a regular call which is not delegate, static, or deployment. We also constrain\n // the msg_sender in the nested call to be equal to our address, and the execution context address\n // for the nested call to be equal to the address we actually called.\n assert(item.public_inputs.call_context.is_delegate_call == false);\n assert(item.public_inputs.call_context.is_static_call == false);\n assert(item.public_inputs.call_context.is_contract_deployment == false);\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address));\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n\n self.public_call_stack_hashes.push(item.hash());\n }\n}\n\nstruct PublicContext {\n inputs: PublicContextInputs,\n side_effect_counter: u32,\n\n args_hash : Field,\n return_values : BoundedVec<Field, RETURN_VALUES_LENGTH>,\n\n contract_storage_update_requests: BoundedVec<StorageUpdateRequest, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL>,\n contract_storage_reads: BoundedVec<StorageRead, MAX_PUBLIC_DATA_READS_PER_CALL>,\n public_call_stack_hashes: BoundedVec<Field, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n\n new_commitments: BoundedVec<SideEffect, MAX_NEW_COMMITMENTS_PER_CALL>,\n new_nullifiers: BoundedVec<SideEffectLinkedToNoteHash, MAX_NEW_NULLIFIERS_PER_CALL>,\n\n new_l2_to_l1_msgs: BoundedVec<Field, MAX_NEW_L2_TO_L1_MSGS_PER_CALL>,\n\n unencrypted_logs_hash: BoundedVec<Field, NUM_FIELDS_PER_SHA256>,\n unencrypted_logs_preimages_length: Field,\n\n block_header: BlockHeader,\n prover_address: AztecAddress,\n}\n\nimpl PublicContext {\n pub fn new(inputs: PublicContextInputs, args_hash: Field) -> PublicContext {\n let empty_storage_read = StorageRead::empty();\n let empty_storage_update = StorageUpdateRequest::empty();\n PublicContext {\n inputs: inputs,\n side_effect_counter: inputs.call_context.start_side_effect_counter,\n\n args_hash: args_hash,\n return_values: BoundedVec::new(0),\n\n contract_storage_update_requests: BoundedVec::new(empty_storage_update),\n contract_storage_reads: BoundedVec::new(empty_storage_read),\n public_call_stack_hashes: BoundedVec::new(0),\n\n new_commitments: BoundedVec::new(SideEffect::empty()),\n new_nullifiers: BoundedVec::new(SideEffectLinkedToNoteHash::empty()),\n\n new_l2_to_l1_msgs: BoundedVec::new(0),\n\n \n unencrypted_logs_hash: BoundedVec::new(0),\n unencrypted_logs_preimages_length: 0,\n\n block_header: inputs.block_header,\n prover_address: AztecAddress::zero(),\n\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n // encrypted_logs_preimages: Vec::new(),\n // unencrypted_logs_preimages: Vec::new(),\n }\n }\n\n pub fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n pub fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n pub fn this_portal_address(self) -> EthAddress {\n self.inputs.call_context.portal_contract_address\n }\n\n pub fn chain_id(self) -> Field {\n self.inputs.public_global_variables.chain_id\n }\n\n pub fn version(self) -> Field {\n self.inputs.public_global_variables.version\n }\n\n pub fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n pub fn block_number(self) -> Field {\n self.inputs.public_global_variables.block_number\n }\n\n pub fn timestamp(self) -> Field {\n self.inputs.public_global_variables.timestamp\n }\n\n pub fn finish(self) -> PublicCircuitPublicInputs {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n let unencrypted_logs_hash = [0; NUM_FIELDS_PER_SHA256];\n let unencrypted_log_preimages_length = 0;\n\n\n // Compute the public call stack hashes\n let pub_circuit_pub_inputs = PublicCircuitPublicInputs {\n call_context: self.inputs.call_context, // Done\n args_hash: self.args_hash, // Done\n contract_storage_update_requests: self.contract_storage_update_requests.storage,\n contract_storage_reads: self.contract_storage_reads.storage,\n return_values: self.return_values.storage,\n new_commitments: self.new_commitments.storage,\n new_nullifiers: self.new_nullifiers.storage,\n public_call_stack_hashes: self.public_call_stack_hashes.storage,\n new_l2_to_l1_msgs: self.new_l2_to_l1_msgs.storage,\n unencrypted_logs_hash: unencrypted_logs_hash,\n unencrypted_log_preimages_length: unencrypted_log_preimages_length,\n block_header: self.inputs.block_header,\n prover_address: self.prover_address,\n };\n pub_circuit_pub_inputs\n }\n\n pub fn push_new_note_hash(&mut self, note_hash: Field) {\n let side_effect = SideEffect {\n value: note_hash,\n counter: self.side_effect_counter\n };\n self.new_commitments.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn push_new_nullifier(&mut self, nullifier: Field, _nullified_commitment: Field) {\n let side_effect = SideEffectLinkedToNoteHash {\n value: nullifier,\n note_hash: 0, // cannot nullify pending notes in public context\n counter: self.side_effect_counter\n };\n self.new_nullifiers.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn message_portal(&mut self, content: Field) {\n self.new_l2_to_l1_msgs.push(content);\n }\n\n // PrivateContextInputs must be temporarily passed in to prevent too many unknowns\n // Note this returns self to get around an issue where mutable structs do not maintain mutations unless reassigned\n pub fn consume_l1_to_l2_message(&mut self, msg_key: Field, content: Field, secret: Field) {\n let this = (*self).this_address();\n let nullifier = process_l1_to_l2_message(self.block_header.l1_to_l2_message_tree_root, this, self.this_portal_address(), self.chain_id(), self.version(), msg_key, content, secret);\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_new_nullifier(nullifier, 0)\n }\n\n pub fn accumulate_encrypted_logs<N>(&mut self, log: [Field; N]) {\n let _void1 = self;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n pub fn accumulate_unencrypted_logs<T>(&mut self, log: T) {\n let _void1 = self;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n pub fn call_public_function<ARGS_COUNT>(\n _self: Self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) -> [Field; RETURN_VALUES_LENGTH] {\n let args_hash = hash_args(args);\n assert(args_hash == arguments::pack_arguments(args));\n call_public_function_internal(\n contract_address, \n function_selector, \n args_hash,\n )\n }\n\n pub fn call_public_function_no_args(\n _self: Self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector,\n ) -> [Field; RETURN_VALUES_LENGTH] {\n call_public_function_internal(\n contract_address, \n function_selector, \n 0,\n )\n }\n\n}\n\nstruct Context {\n private: Option<&mut PrivateContext>,\n public: Option<&mut PublicContext>,\n}\n\nimpl Context {\n pub fn private(context: &mut PrivateContext) -> Context {\n Context {\n private: Option::some(context),\n public: Option::none()\n }\n }\n\n pub fn public(context: &mut PublicContext) -> Context {\n Context {\n public: Option::some(context),\n private: Option::none()\n }\n }\n\n pub fn none() -> Context {\n Context {\n public: Option::none(),\n private: Option::none()\n }\n }\n}\n",
|
|
1622
|
+
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/context.nr"
|
|
1623
|
+
},
|
|
1624
|
+
"73": {
|
|
1625
|
+
"source": "use crate::abi::PublicContextInputs;\nuse crate::context::{\n PrivateContext,\n PublicContext,\n};\nuse crate::note::{\n note_header::NoteHeader,\n note_interface::NoteInterface,\n utils::compute_inner_note_hash,\n};\nuse crate::oracle::notes::{notify_created_note, notify_nullified_note};\n\npub fn create_note<Note, N>(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: &mut Note,\n note_interface: NoteInterface<Note, N>,\n broadcast: bool\n) {\n let contract_address = (*context).this_address();\n\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, is_transient: true };\n let set_header = note_interface.set_header;\n set_header(note, header);\n let inner_note_hash = compute_inner_note_hash(note_interface, *note);\n\n let serialize = note_interface.serialize;\n let serialized_note = serialize(*note);\n assert(notify_created_note(storage_slot, serialized_note, inner_note_hash) == 0);\n\n context.push_new_note_hash(inner_note_hash);\n\n if broadcast {\n let broadcast = note_interface.broadcast;\n broadcast(context, storage_slot, *note);\n }\n}\n\npub fn create_note_hash_from_public<Note, N>(\n context: &mut PublicContext,\n storage_slot: Field,\n note: &mut Note,\n note_interface: NoteInterface<Note, N>\n) {\n let contract_address = (*context).this_address();\n\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, is_transient: true };\n let set_header = note_interface.set_header;\n set_header(note, header);\n let inner_note_hash = compute_inner_note_hash(note_interface, *note);\n\n context.push_new_note_hash(inner_note_hash);\n}\n\npub fn destroy_note<Note, N>(\n context: &mut PrivateContext,\n note: Note,\n note_interface: NoteInterface<Note, N>\n) {\n let mut nullifier = 0;\n let mut nullified_commitment: Field = 0;\n let compute_nullifier = note_interface.compute_nullifier;\n nullifier = compute_nullifier(note, context);\n\n // We also need the note commitment corresponding to the \"nullifier\"\n let get_header = note_interface.get_header;\n let header = get_header(note);\n // `nullified_commitment` is used to inform the kernel which pending commitment\n // the nullifier corresponds to so they can be matched and both squashed/deleted.\n // nonzero nonce implies \"persistable\" nullifier (nullifies a persistent/in-tree\n // commitment) in which case `nullified_commitment` is not used since the kernel\n // just siloes and forwards the nullifier to its output.\n if (header.is_transient) {\n // TODO(1718): Can we reuse the note commitment computed in `compute_nullifier`?\n nullified_commitment = compute_inner_note_hash(note_interface, note);\n }\n assert(notify_nullified_note(nullifier, nullified_commitment) == 0);\n\n context.push_new_nullifier(nullifier, nullified_commitment)\n}\n",
|
|
1626
|
+
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/note/lifecycle.nr"
|
|
1627
|
+
},
|
|
1628
|
+
"74": {
|
|
1629
|
+
"source": "use dep::protocol_types::{\n constants::GENERATOR_INDEX__OUTER_NULLIFIER,\n hash::pedersen_hash,\n};\nuse crate::{\n context::PrivateContext,\n note::{\n note_hash::{compute_inner_hash, compute_siloed_hash, compute_unique_hash},\n note_header::NoteHeader,\n note_interface::NoteInterface,\n },\n utils::arr_copy_slice,\n};\n\npub fn compute_inner_note_hash<Note, N>(note_interface: NoteInterface<Note, N>, note: Note) -> Field {\n let get_header = note_interface.get_header;\n let header = get_header(note);\n\n let compute_note_hash = note_interface.compute_note_hash;\n let note_hash = compute_note_hash(note);\n\n compute_inner_hash(header.storage_slot, note_hash)\n}\n\npub fn compute_siloed_note_hash<Note, N>(note_interface: NoteInterface<Note, N>, note_with_header: Note) -> Field {\n let get_header = note_interface.get_header;\n let header = get_header(note_with_header);\n\n let inner_note_hash = compute_inner_note_hash(note_interface, note_with_header);\n\n compute_siloed_hash(header.contract_address, inner_note_hash)\n}\n\npub fn compute_unique_siloed_note_hash<Note, N>(note_interface: NoteInterface<Note, N>, note_with_header: Note) -> Field {\n let get_header = note_interface.get_header;\n let header = get_header(note_with_header);\n\n let siloed_note_hash = compute_siloed_note_hash(note_interface, note_with_header);\n\n compute_unique_hash(header.nonce, siloed_note_hash)\n}\n\npub fn compute_siloed_nullifier<Note, N>(\n note_interface: NoteInterface<Note, N>,\n note_with_header: Note,\n context: &mut PrivateContext\n) -> Field {\n let get_header = note_interface.get_header;\n let header = get_header(note_with_header);\n\n let compute_nullifier = note_interface.compute_nullifier;\n let inner_nullifier = compute_nullifier(note_with_header, context);\n\n let input = [header.contract_address.to_field(), inner_nullifier];\n pedersen_hash(input, GENERATOR_INDEX__OUTER_NULLIFIER)\n}\n\npub fn compute_note_hash_for_read_or_nullify<Note, N>(note_interface: NoteInterface<Note, N>, note_with_header: Note) -> Field {\n let get_header = note_interface.get_header;\n let header = get_header(note_with_header);\n\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1386)\n if (header.is_transient) {\n // If a note is transient, we just read the inner_note_hash (kernel will silo by contract address).\n compute_inner_note_hash(note_interface, note_with_header)\n } else if (header.nonce == 0) {\n // If not transient and nonce is zero, that means we are reading a public note.\n compute_siloed_note_hash(note_interface, note_with_header)\n } else {\n // When nonce is nonzero, that means we are reading a settled note (from tree) created in a\n // previous TX. So we need the unique_siloed_note_hash which has already been hashed with\n // contract address and then nonce. This hash will match the existing leaf in the private\n // data tree, so the kernel can just perform a membership check directly on this hash/leaf.\n compute_unique_siloed_note_hash(note_interface, note_with_header)\n }\n}\n\npub fn compute_note_hash_and_nullifier<Note, N, S>(\n note_interface: NoteInterface<Note, N>,\n note_header: NoteHeader,\n serialized_note: [Field; S]\n) -> [Field; 4] {\n let deserialize = note_interface.deserialize;\n let set_header = note_interface.set_header;\n let mut note = deserialize(arr_copy_slice(serialized_note, [0; N], 0));\n set_header(&mut note, note_header);\n\n let compute_note_hash = note_interface.compute_note_hash;\n let note_hash = compute_note_hash(note);\n let inner_note_hash = compute_inner_hash(note_header.storage_slot, note_hash);\n\n let siloed_note_hash = compute_siloed_hash(note_header.contract_address, inner_note_hash);\n\n let unique_siloed_note_hash = compute_unique_hash(note_header.nonce, siloed_note_hash);\n\n let compute_nullifier_without_context = note_interface.compute_nullifier_without_context;\n let inner_nullifier = compute_nullifier_without_context(note);\n\n [inner_note_hash, siloed_note_hash, unique_siloed_note_hash, inner_nullifier]\n}\n",
|
|
1630
|
+
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/note/utils.nr"
|
|
1631
|
+
},
|
|
1632
|
+
"76": {
|
|
1633
|
+
"source": "use dep::protocol_types::{\n address::AztecAddress,\n constants::{\n GENERATOR_INDEX__UNIQUE_COMMITMENT,\n GENERATOR_INDEX__SILOED_COMMITMENT,\n },\n hash::pedersen_hash,\n};\n\npub fn compute_inner_hash(storage_slot: Field, note_hash: Field) -> Field {\n // TODO(#1205) Do we need a generator index here?\n pedersen_hash([storage_slot, note_hash], 0)\n}\n\npub fn compute_siloed_hash(contract_address: AztecAddress, inner_note_hash: Field) -> Field {\n let inputs = [contract_address.to_field(), inner_note_hash];\n pedersen_hash(inputs, GENERATOR_INDEX__SILOED_COMMITMENT)\n}\n\npub fn compute_unique_hash(nonce: Field, siloed_note_hash: Field) -> Field {\n let inputs = [nonce, siloed_note_hash];\n pedersen_hash(inputs, GENERATOR_INDEX__UNIQUE_COMMITMENT)\n}\n",
|
|
1634
|
+
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/note/note_hash.nr"
|
|
1635
|
+
},
|
|
1636
|
+
"79": {
|
|
1637
|
+
"source": "use dep::std::option::Option;\nuse dep::protocol_types::constants::{\n MAX_READ_REQUESTS_PER_CALL,\n GET_NOTE_ORACLE_RETURN_LENGTH,\n GET_NOTES_ORACLE_RETURN_LENGTH,\n MAX_NOTES_PER_PAGE,\n VIEW_NOTE_ORACLE_RETURN_LENGTH,\n};\nuse crate::context::PrivateContext;\nuse crate::note::{\n note_getter_options::{NoteGetterOptions, Select, Sort, SortOrder},\n note_interface::NoteInterface,\n note_viewer_options::NoteViewerOptions,\n utils::compute_note_hash_for_read_or_nullify,\n};\nuse crate::oracle;\nuse crate::types::vec::BoundedVec;\n\nfn check_note_header<Note, N>(\n context: PrivateContext,\n storage_slot: Field,\n note_interface: NoteInterface<Note, N>,\n note: Note\n) {\n let get_header = note_interface.get_header;\n let header = get_header(note);\n let contract_address = context.this_address();\n assert(header.contract_address.eq(contract_address));\n assert(header.storage_slot == storage_slot);\n}\n\nfn check_note_fields<N>(fields: [Field; N], selects: BoundedVec<Option<Select>, N>) {\n for i in 0..selects.len {\n let select = selects.get_unchecked(i).unwrap_unchecked();\n assert(fields[select.field_index] == select.value, \"Mismatch return note field.\");\n }\n}\n\nfn check_notes_order<N>(\n fields_0: [Field; N],\n fields_1: [Field; N],\n sorts: BoundedVec<Option<Sort>, N>\n) {\n for i in 0..sorts.len {\n let sort = sorts.get_unchecked(i).unwrap_unchecked();\n let eq = fields_0[sort.field_index] == fields_1[sort.field_index];\n let lt = fields_0[sort.field_index] as u120 < fields_1[sort.field_index] as u120;\n if sort.order == SortOrder.ASC {\n assert(eq | lt, \"Return notes not sorted in ascending order.\");\n } else if !eq {\n assert(!lt, \"Return notes not sorted in descending order.\");\n }\n }\n}\n\npub fn get_note<Note, N>(\n context: &mut PrivateContext,\n storage_slot: Field,\n note_interface: NoteInterface<Note, N>\n) -> Note {\n let note = get_note_internal(storage_slot, note_interface);\n\n check_note_header(*context, storage_slot, note_interface, note);\n\n let note_hash_for_read_request = compute_note_hash_for_read_or_nullify(note_interface, note);\n\n context.push_read_request(note_hash_for_read_request);\n note\n}\n\npub fn get_notes<Note, N, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n note_interface: NoteInterface<Note, N>,\n options: NoteGetterOptions<Note, N, FILTER_ARGS>\n) -> [Option<Note>; MAX_READ_REQUESTS_PER_CALL] {\n let opt_notes = get_notes_internal(storage_slot, note_interface, options);\n let mut num_notes = 0;\n let mut prev_fields = [0; N];\n for i in 0..opt_notes.len() {\n let opt_note = opt_notes[i];\n if opt_note.is_some() {\n let note = opt_note.unwrap_unchecked();\n let serialize = note_interface.serialize;\n let fields = serialize(note);\n check_note_header(*context, storage_slot, note_interface, note);\n check_note_fields(fields, options.selects);\n if i != 0 {\n check_notes_order(prev_fields, fields, options.sorts);\n }\n prev_fields = fields;\n\n let note_hash_for_read_request = compute_note_hash_for_read_or_nullify(note_interface, note);\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1410): test to ensure\n // failure if malicious oracle injects 0 nonce here for a \"pre-existing\" note.\n context.push_read_request(note_hash_for_read_request);\n\n num_notes += 1;\n };\n }\n if options.limit != 0 {\n assert(num_notes <= options.limit, \"Invalid number of return notes.\");\n }\n opt_notes\n}\n\nunconstrained fn get_note_internal<Note, N>(storage_slot: Field, note_interface: NoteInterface<Note, N>) -> Note {\n let placeholder_note = [Option::none()];\n let placeholder_fields = [0; GET_NOTE_ORACLE_RETURN_LENGTH];\n oracle::notes::get_notes(\n storage_slot,\n note_interface,\n 0,\n [],\n [],\n [],\n [],\n 1, // limit\n 0, // offset\n placeholder_note,\n placeholder_fields\n )[0].unwrap() // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal<Note, N, FILTER_ARGS>(\n storage_slot: Field,\n note_interface: NoteInterface<Note, N>,\n options: NoteGetterOptions<Note, N, FILTER_ARGS>\n) -> [Option<Note>; MAX_READ_REQUESTS_PER_CALL] {\n let (num_selects, select_by, select_values, sort_by, sort_order) = flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_READ_REQUESTS_PER_CALL];\n let placeholder_fields = [0; GET_NOTES_ORACLE_RETURN_LENGTH];\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n note_interface,\n num_selects,\n select_by,\n select_values,\n sort_by,\n sort_order,\n options.limit,\n options.offset,\n placeholder_opt_notes,\n placeholder_fields\n );\n\n let filter = options.filter;\n let filter_args = options.filter_args;\n filter(opt_notes, filter_args)\n}\n\nunconstrained pub fn view_notes<Note, N>(\n storage_slot: Field,\n note_interface: NoteInterface<Note, N>,\n options: NoteViewerOptions<Note, N>\n) -> [Option<Note>; MAX_NOTES_PER_PAGE] {\n let (num_selects, select_by, select_values, sort_by, sort_order) = flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTES_PER_PAGE];\n let placeholder_fields = [0; VIEW_NOTE_ORACLE_RETURN_LENGTH];\n oracle::notes::get_notes(\n storage_slot,\n note_interface,\n num_selects,\n select_by,\n select_values,\n sort_by,\n sort_order,\n options.limit,\n options.offset,\n placeholder_opt_notes,\n placeholder_fields\n )\n}\n\nunconstrained fn flatten_options<Note, N>(\n selects: BoundedVec<Option<Select>, N>,\n sorts: BoundedVec<Option<Sort>, N>\n) -> (u8, [u8; N], [Field; N], [u8; N], [u2; N]) {\n let mut num_selects = 0;\n let mut select_by = [0; N];\n let mut select_values = [0; N];\n for i in 0..selects.len {\n let select = selects.get(i);\n if select.is_some() {\n select_by[num_selects] = select.unwrap_unchecked().field_index;\n select_values[num_selects] = select.unwrap_unchecked().value;\n num_selects += 1;\n };\n }\n\n let mut sort_by = [0; N];\n let mut sort_order = [0; N];\n for i in 0..sorts.len {\n let sort = sorts.get(i);\n if sort.is_some() {\n sort_by[i] = sort.unwrap_unchecked().field_index;\n sort_order[i] = sort.unwrap_unchecked().order;\n };\n }\n\n (num_selects, select_by, select_values, sort_by, sort_order)\n}\n",
|
|
1638
|
+
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/note/note_getter.nr"
|
|
1639
|
+
},
|
|
1640
|
+
"82": {
|
|
1641
|
+
"source": "use dep::std::option::Option;\nuse crate::note::{\n note_header::NoteHeader,\n note_interface::NoteInterface,\n};\nuse crate::utils::arr_copy_slice;\n\nuse dep::protocol_types::address::AztecAddress;\n\n#[oracle(notifyCreatedNote)]\nfn notify_created_note_oracle<N>(_storage_slot: Field, _serialized_note: [Field; N], _inner_note_hash: Field) -> Field {}\n\nunconstrained pub fn notify_created_note<N>(storage_slot: Field, serialized_note: [Field; N], inner_note_hash: Field) -> Field {\n notify_created_note_oracle(storage_slot, serialized_note, inner_note_hash)\n}\n\n#[oracle(notifyNullifiedNote)]\nfn notify_nullified_note_oracle<N>(_nullifier: Field, _inner_note_hash: Field) -> Field {}\n\nunconstrained pub fn notify_nullified_note<N>(nullifier: Field, inner_note_hash: Field) -> Field {\n notify_nullified_note_oracle(nullifier, inner_note_hash)\n}\n\n#[oracle(getNotes)]\nfn get_notes_oracle<N, S>(\n _storage_slot: Field,\n _num_selects: u8,\n _select_by: [u8; N],\n _select_values: [Field; N],\n _sort_by: [u8; N],\n _sort_order: [u2; N],\n _limit: u32,\n _offset: u32,\n _return_size: u32,\n _placeholder_fields: [Field; S]\n) -> [Field; S] {}\n\nunconstrained fn get_notes_oracle_wrapper<N, S>(\n storage_slot: Field,\n num_selects: u8,\n select_by: [u8; N],\n select_values: [Field; N],\n sort_by: [u8; N],\n sort_order: [u2; N],\n limit: u32,\n offset: u32,\n mut placeholder_fields: [Field; S]\n) -> [Field; S] {\n let return_size = placeholder_fields.len() as u32;\n get_notes_oracle(\n storage_slot,\n num_selects,\n select_by,\n select_values,\n sort_by,\n sort_order,\n limit,\n offset,\n return_size,\n placeholder_fields\n )\n}\n\nunconstrained pub fn get_notes<Note, N, M, S, NS>(\n storage_slot: Field,\n note_interface: NoteInterface<Note, N>,\n num_selects: u8,\n select_by: [u8; M],\n select_values: [Field; M],\n sort_by: [u8; M],\n sort_order: [u2; M],\n limit: u32,\n offset: u32,\n mut placeholder_opt_notes: [Option<Note>; S], // TODO: Remove it and use `limit` to initialize the note array.\n placeholder_fields: [Field; NS] // TODO: Remove it and use `limit` to initialize the note array.\n) -> [Option<Note>; S] {\n let fields = get_notes_oracle_wrapper(\n storage_slot,\n num_selects,\n select_by,\n select_values,\n sort_by,\n sort_order,\n limit,\n offset,\n placeholder_fields\n );\n let num_notes = fields[0] as u32;\n let contract_address = AztecAddress::from_field(fields[1]);\n let deserialize = note_interface.deserialize;\n let set_header = note_interface.set_header;\n for i in 0..placeholder_opt_notes.len() {\n if i as u32 < num_notes {\n // lengths named as per typescript.\n let return_header_length: Field = 2; // num_notes & contract_address.\n let extra_preimage_length: Field = 2; // nonce & is_transient.\n let read_offset: Field = return_header_length + i * (N + extra_preimage_length);\n let nonce = fields[read_offset];\n let is_transient = fields[read_offset + 1] as bool;\n let header = NoteHeader { contract_address, nonce, storage_slot, is_transient };\n let serialized_note = arr_copy_slice(fields, [0; N], read_offset + 2);\n let mut note = deserialize(serialized_note);\n set_header(&mut note, header);\n placeholder_opt_notes[i] = Option::some(note);\n };\n }\n placeholder_opt_notes\n}\n\n#[oracle(checkNullifierExists)]\nfn check_nullifier_exists_oracle(_inner_nullifier: Field) -> Field {}\n\nunconstrained pub fn check_nullifier_exists(inner_nullifier: Field) -> bool {\n check_nullifier_exists_oracle(inner_nullifier) == 1\n}\n",
|
|
1642
|
+
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/oracle/notes.nr"
|
|
1643
|
+
},
|
|
1644
|
+
"83": {
|
|
1645
|
+
"source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector,\n address::AztecAddress,\n};\n\n// contract_address + \n// args_hash +\n// crate::abi::FUNCTION_DATA_SIZE +\n// crate::abi::CALL_CONTEXT_SIZE\n// = 2 + 4 + 8\nglobal ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_SIZE: Field = 14;\n\n#[oracle(enqueuePublicFunctionCall)]\nfn enqueue_public_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_SIZE] {}\n\nunconstrained pub fn enqueue_public_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_SIZE] {\n enqueue_public_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter\n )\n}\n",
|
|
1646
|
+
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr"
|
|
1647
|
+
},
|
|
1648
|
+
"87": {
|
|
1649
|
+
"source": "use dep::protocol_types::{\n address::AztecAddress,\n grumpkin_point::GrumpkinPoint,\n};\nuse dep::std::grumpkin_scalar::GrumpkinScalar;\n\nstruct KeyPair {\n public_key: GrumpkinPoint,\n secret_key: GrumpkinScalar,\n}\n\n#[oracle(getNullifierKeyPair)]\nfn get_nullifier_key_pair_oracle(_account: AztecAddress) -> [Field; 4] {}\n\nunconstrained fn get_nullifier_key_pair_internal(account: AztecAddress) -> KeyPair {\n let result = get_nullifier_key_pair_oracle(account);\n KeyPair {\n public_key: GrumpkinPoint { x: result[0], y: result[1] },\n secret_key: GrumpkinScalar { high: result[2], low: result[3] }\n }\n}\n\npub fn get_nullifier_key_pair(account: AztecAddress) -> KeyPair {\n get_nullifier_key_pair_internal(account)\n}\n\npub fn get_nullifier_secret_key(account: AztecAddress) -> GrumpkinScalar {\n get_nullifier_key_pair_internal(account).secret_key\n}\n",
|
|
1650
|
+
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/oracle/nullifier_key.nr"
|
|
1651
|
+
},
|
|
1652
|
+
"89": {
|
|
1653
|
+
"source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector,\n address::AztecAddress,\n constants::CALL_PRIVATE_FUNCTION_RETURN_SIZE,\n};\n\n#[oracle(callPrivateFunction)]\nfn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32\n) -> [Field; CALL_PRIVATE_FUNCTION_RETURN_SIZE] {}\n\nunconstrained pub fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32\n) -> [Field; CALL_PRIVATE_FUNCTION_RETURN_SIZE] {\n call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter\n )\n}\n",
|
|
1654
|
+
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/oracle/call_private_function.nr"
|
|
1655
|
+
},
|
|
1656
|
+
"96": {
|
|
1657
|
+
"source": "#[oracle(storageRead)]\nfn storage_read_oracle<N>(_storage_slot: Field, _number_of_elements: Field) -> [Field; N] {}\n\nunconstrained fn storage_read_oracle_wrapper<N>(_storage_slot: Field) -> [Field; N] {\n storage_read_oracle(_storage_slot, N)\n}\n\npub fn storage_read<T, N>(storage_slot: Field, deserialize: fn([Field; N]) -> T) -> T {\n let fields = storage_read_oracle_wrapper(storage_slot);\n deserialize(fields)\n}\n\n#[oracle(storageWrite)]\nfn storage_write_oracle<N>(_storage_slot: Field, _values: [Field; N]) -> [Field; N] {}\n\n// TODO: Remove return value.\nunconstrained pub fn storage_write<N>(storage_slot: Field, fields: [Field; N]) {\n let _hash = storage_write_oracle(storage_slot, fields);\n}\n",
|
|
1658
|
+
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/oracle/storage.nr"
|
|
1659
|
+
},
|
|
1660
|
+
"98": {
|
|
1661
|
+
"source": "use dep::protocol_types::{\n address::{\n AztecAddress,\n PartialAddress,\n },\n grumpkin_point::GrumpkinPoint,\n};\n\n#[oracle(getPublicKeyAndPartialAddress)]\nfn get_public_key_and_partial_address_oracle(_address: AztecAddress) -> [Field; 3] {}\n\nunconstrained fn get_public_key_and_partial_address_internal(address: AztecAddress) -> [Field; 3] {\n get_public_key_and_partial_address_oracle(address)\n}\n\npub fn get_public_key(address: AztecAddress) -> GrumpkinPoint {\n let result = get_public_key_and_partial_address_internal(address);\n let pub_key = GrumpkinPoint::new(result[0], result[1]);\n let partial_address = PartialAddress::from_field(result[2]);\n\n let calculated_address = AztecAddress::compute(pub_key, partial_address);\n assert(calculated_address.eq(address));\n\n pub_key\n}\n",
|
|
1662
|
+
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/oracle/get_public_key.nr"
|
|
1663
|
+
},
|
|
1664
|
+
"100": {
|
|
1665
|
+
"source": "use dep::protocol_types::{\n address::AztecAddress,\n constants::NUM_FIELDS_PER_SHA256,\n grumpkin_point::GrumpkinPoint,\n};\n\n// TODO: Should take encrypted data.\n#[oracle(emitEncryptedLog)]\nfn emit_encrypted_log_oracle<N>(\n _contract_address: AztecAddress,\n _storage_slot: Field,\n _encryption_pub_key: GrumpkinPoint,\n _preimage: [Field; N]\n) -> Field {}\n\nunconstrained pub fn emit_encrypted_log<N>(\n contract_address: AztecAddress,\n storage_slot: Field,\n encryption_pub_key: GrumpkinPoint,\n preimage: [Field; N]\n) -> [Field; NUM_FIELDS_PER_SHA256] {\n [emit_encrypted_log_oracle(contract_address, storage_slot, encryption_pub_key, preimage), 0]\n}\n\n#[oracle(emitUnencryptedLog)]\nfn emit_unencrypted_log_oracle<T>(_contract_address: AztecAddress, _event_selector: Field, _message: T) -> Field {}\n\nunconstrained pub fn emit_unencrypted_log<T>(\n contract_address: AztecAddress,\n event_selector: Field,\n message: T\n) -> [Field; NUM_FIELDS_PER_SHA256] {\n // https://github.com/AztecProtocol/aztec-packages/issues/885\n [emit_unencrypted_log_oracle(contract_address, event_selector, message), 0]\n}\n",
|
|
1666
|
+
"path": "/usr/src/yarn-project/aztec-nr/aztec/src/oracle/logs.nr"
|
|
1667
|
+
},
|
|
1668
|
+
"101": {
|
|
1669
|
+
"source": "global ARGS_LENGTH: Field = 16;\nglobal RETURN_VALUES_LENGTH: Field = 4;\n\n/**\n * Convention for constant array lengths are mainly divided in 2 classes:\n * - FUNCTION CALL\n * - TRANSACTION\n *\n * Agreed convention is to use MAX_XXX_PER_CALL resp. MAX_XXX_PER_TX, where XXX denotes a type of element such as\n * commitment, or nullifier, e.g.,:\n * - MAX_NEW_NULLIFIERS_PER_CALL\n * - MAX_NEW_COMMITMENTS_PER_TX\n *\n * In the kernel circuits, we accumulate elements such as commitments and the nullifiers from all functions calls in a\n * transaction. Therefore, we always must have:\n * MAX_XXX_PER_TX ≥ MAX_XXX_PER_CALL\n *\n * For instance:\n * MAX_NEW_COMMITMENTS_PER_TX ≥ MAX_NEW_COMMITMENTS_PER_CALL\n * MAX_NEW_NULLIFIERS_PER_TX ≥ MAX_NEW_NULLIFIERS_PER_CALL\n *\n */\n\n// docs:start:constants\n// \"PER CALL\" CONSTANTS\nglobal MAX_NEW_COMMITMENTS_PER_CALL: Field = 16;\nglobal MAX_NEW_NULLIFIERS_PER_CALL: Field = 16;\nglobal MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL: Field = 4;\nglobal MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL: Field = 4;\nglobal MAX_NEW_L2_TO_L1_MSGS_PER_CALL: Field = 2;\nglobal MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL: Field = 16;\nglobal MAX_PUBLIC_DATA_READS_PER_CALL: Field = 16;\nglobal MAX_READ_REQUESTS_PER_CALL: Field = 32;\n\n// \"PER TRANSACTION\" CONSTANTS\nglobal MAX_NEW_COMMITMENTS_PER_TX: Field = 64;\nglobal MAX_NEW_NULLIFIERS_PER_TX: Field = 64;\nglobal MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX: Field = 8;\nglobal MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX: Field = 8;\nglobal MAX_NEW_L2_TO_L1_MSGS_PER_TX: Field = 2;\nglobal MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX: Field = 16;\nglobal MAX_PUBLIC_DATA_READS_PER_TX: Field = 16;\nglobal MAX_NEW_CONTRACTS_PER_TX: Field = 1;\nglobal MAX_OPTIONALLY_REVEALED_DATA_LENGTH_PER_TX: Field = 4;\nglobal MAX_READ_REQUESTS_PER_TX: Field = 128;\nglobal NUM_ENCRYPTED_LOGS_HASHES_PER_TX: Field = 1;\nglobal NUM_UNENCRYPTED_LOGS_HASHES_PER_TX: Field = 1;\n// docs:end:constants\n\n// ROLLUP CONTRACT CONSTANTS - constants used only in l1-contracts\nglobal NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP: Field = 16;\n\n// TREES RELATED CONSTANTS\nglobal VK_TREE_HEIGHT: Field = 3;\nglobal FUNCTION_TREE_HEIGHT: Field = 5;\nglobal CONTRACT_TREE_HEIGHT: Field = 16;\nglobal NOTE_HASH_TREE_HEIGHT: Field = 32;\nglobal PUBLIC_DATA_TREE_HEIGHT: Field = 40;\nglobal NULLIFIER_TREE_HEIGHT: Field = 20;\nglobal L1_TO_L2_MSG_TREE_HEIGHT: Field = 16;\nglobal ROLLUP_VK_TREE_HEIGHT: Field = 8;\n\n// SUB-TREES RELATED CONSTANTS\nglobal CONTRACT_SUBTREE_HEIGHT: Field = 0;\nglobal CONTRACT_SUBTREE_SIBLING_PATH_LENGTH: Field = 16;\nglobal NOTE_HASH_SUBTREE_HEIGHT: Field = 6;\nglobal NOTE_HASH_SUBTREE_SIBLING_PATH_LENGTH: Field = 26;\nglobal NULLIFIER_SUBTREE_HEIGHT: Field = 6;\nglobal PUBLIC_DATA_SUBTREE_HEIGHT: Field = 4;\nglobal ARCHIVE_HEIGHT: Field = 16;\nglobal NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH: Field = 14;\nglobal PUBLIC_DATA_SUBTREE_SIBLING_PATH_LENGTH: Field = 36;\nglobal L1_TO_L2_MSG_SUBTREE_HEIGHT: Field = 4;\nglobal L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH: Field = 12;\n\n// MISC CONSTANTS\nglobal FUNCTION_SELECTOR_NUM_BYTES: Field = 4;\nglobal MAPPING_SLOT_PEDERSEN_SEPARATOR: Field = 4;\n// sha256 hash is stored in two fields to accommodate all 256-bits of the hash\nglobal NUM_FIELDS_PER_SHA256: Field = 2;\nglobal ARGS_HASH_CHUNK_LENGTH: u32 = 32;\nglobal ARGS_HASH_CHUNK_COUNT: u32 = 16;\n\n// NOIR CONSTANTS - constants used only in yarn-packages/noir-contracts\n// Some are defined here because Noir doesn't yet support globals referencing other globals yet.\n// Move these constants to a noir file once the issue bellow is resolved:\n// https://github.com/noir-lang/noir/issues/1734\nglobal L1_TO_L2_MESSAGE_LENGTH: Field = 8;\nglobal L1_TO_L2_MESSAGE_ORACLE_CALL_LENGTH: Field = 26;\nglobal MAX_NOTE_FIELDS_LENGTH: Field = 20;\n// GET_NOTE_ORACLE_RETURN_LENGT = MAX_NOTE_FIELDS_LENGTH + 1 + 2\n// The plus 1 is 1 extra field for nonce.\n// + 2 for EXTRA_DATA: [number_of_return_notes, contract_address]\nglobal GET_NOTE_ORACLE_RETURN_LENGTH: Field = 23;\nglobal MAX_NOTES_PER_PAGE: Field = 10;\n// VIEW_NOTE_ORACLE_RETURN_LENGTH = MAX_NOTES_PER_PAGE * (MAX_NOTE_FIELDS_LENGTH + 1) + 2;\nglobal VIEW_NOTE_ORACLE_RETURN_LENGTH: Field = 212;\nglobal CALL_CONTEXT_LENGTH: Field = 8;\nglobal BLOCK_HEADER_LENGTH: Field = 7;\nglobal FUNCTION_DATA_LENGTH: Field = 4;\nglobal CONTRACT_DEPLOYMENT_DATA_LENGTH: Field = 6;\n// Change this ONLY if you have changed the PrivateCircuitPublicInputs structure.\n// In other words, if the structure/size of the public inputs of a function call changes then we\n// should change this constant as well as the offsets in private_call_stack_item.nr\nglobal PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH: Field = 189;\nglobal CONTRACT_STORAGE_UPDATE_REQUEST_LENGTH: Field = 3;\nglobal CONTRACT_STORAGE_READ_LENGTH: Field = 2;\n// Change this ONLY if you have changed the PublicCircuitPublicInputs structure.\nglobal PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH: Field = 190;\nglobal GET_NOTES_ORACLE_RETURN_LENGTH: Field = 674;\nglobal CALL_PRIVATE_FUNCTION_RETURN_SIZE: Field = 195;\nglobal PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH: Field = 87;\nglobal PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH: Field = 177;\nglobal COMMITMENTS_NUM_BYTES_PER_BASE_ROLLUP: Field = 2048;\nglobal NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP: Field = 2048;\nglobal PUBLIC_DATA_WRITES_NUM_BYTES_PER_BASE_ROLLUP: Field = 1024;\nglobal CONTRACTS_NUM_BYTES_PER_BASE_ROLLUP: Field = 32;\nglobal CONTRACT_DATA_NUM_BYTES_PER_BASE_ROLLUP: Field = 64;\nglobal CONTRACT_DATA_NUM_BYTES_PER_BASE_ROLLUP_UNPADDED: Field = 52;\nglobal L2_TO_L1_MSGS_NUM_BYTES_PER_BASE_ROLLUP: Field = 64;\nglobal LOGS_HASHES_NUM_BYTES_PER_BASE_ROLLUP: Field = 64;\n\n/**\n * Enumerate the hash_indices which are used for pedersen hashing.\n * We start from 1 to avoid the default generators. The generator indices are listed\n * based on the number of elements each index hashes. The following conditions must be met:\n *\n * +-----------+-------------------------------+----------------------+\n * | Hash size | Number of elements hashed (n) | Condition to use |\n * |-----------+-------------------------------+----------------------|\n * | LOW | n ≤ 8 | 0 < hash_index ≤ 32 |\n * | MID | 8 < n ≤ 16 | 32 < hash_index ≤ 40 |\n * | HIGH | 16 < n ≤ 48 | 40 < hash_index ≤ 48 |\n * +-----------+-------------------------------+----------------------+\n *\n * Note: When modifying, modify `GeneratorIndexPacker` in packer.hpp accordingly.\n */\n// Indices with size ≤ 8\nglobal GENERATOR_INDEX__COMMITMENT = 1;\nglobal GENERATOR_INDEX__COMMITMENT_NONCE = 2;\nglobal GENERATOR_INDEX__UNIQUE_COMMITMENT = 3;\nglobal GENERATOR_INDEX__SILOED_COMMITMENT = 4;\nglobal GENERATOR_INDEX__NULLIFIER = 5;\nglobal GENERATOR_INDEX__INITIALIZATION_NULLIFIER = 6;\nglobal GENERATOR_INDEX__OUTER_NULLIFIER = 7;\nglobal GENERATOR_INDEX__PUBLIC_DATA_READ = 8;\nglobal GENERATOR_INDEX__PUBLIC_DATA_UPDATE_REQUEST = 9;\nglobal GENERATOR_INDEX__FUNCTION_DATA = 10;\nglobal GENERATOR_INDEX__FUNCTION_LEAF = 11;\nglobal GENERATOR_INDEX__CONTRACT_DEPLOYMENT_DATA = 12;\nglobal GENERATOR_INDEX__CONSTRUCTOR = 13;\nglobal GENERATOR_INDEX__CONSTRUCTOR_ARGS = 14;\nglobal GENERATOR_INDEX__CONTRACT_ADDRESS = 15;\nglobal GENERATOR_INDEX__CONTRACT_LEAF = 16;\nglobal GENERATOR_INDEX__CALL_CONTEXT = 17;\nglobal GENERATOR_INDEX__CALL_STACK_ITEM = 18;\nglobal GENERATOR_INDEX__CALL_STACK_ITEM_2 = 19;\nglobal GENERATOR_INDEX__L1_TO_L2_MESSAGE_SECRET = 20;\nglobal GENERATOR_INDEX__L2_TO_L1_MSG = 21;\nglobal GENERATOR_INDEX__TX_CONTEXT = 22;\nglobal GENERATOR_INDEX__PUBLIC_LEAF_INDEX = 23;\nglobal GENERATOR_INDEX__PUBLIC_DATA_LEAF = 24;\nglobal GENERATOR_INDEX__SIGNED_TX_REQUEST = 25;\nglobal GENERATOR_INDEX__GLOBAL_VARIABLES = 26;\nglobal GENERATOR_INDEX__PARTIAL_ADDRESS = 27;\nglobal GENERATOR_INDEX__BLOCK_HASH = 28;\nglobal GENERATOR_INDEX__SIDE_EFFECT = 29;\n// Indices with size ≤ 16\nglobal GENERATOR_INDEX__TX_REQUEST = 33;\nglobal GENERATOR_INDEX__SIGNATURE_PAYLOAD = 34;\n// Indices with size ≤ 44\nglobal GENERATOR_INDEX__VK = 41;\nglobal GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS = 42;\nglobal GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS = 43;\nglobal GENERATOR_INDEX__FUNCTION_ARGS = 44;\n",
|
|
1670
|
+
"path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr"
|
|
1671
|
+
},
|
|
1672
|
+
"107": {
|
|
1673
|
+
"source": "use crate::address::{AztecAddress, EthAddress};\nuse crate::mocked::VerificationKey;\nuse crate::abis::function_selector::FunctionSelector;\nuse crate::abis::function_leaf_preimage::FunctionLeafPreimage;\nuse crate::abis::new_contract_data::NewContractData as ContractLeafPreimage;\nuse crate::abis::function_data::FunctionData;\nuse crate::abis::side_effect::{SideEffect};\nuse crate::utils::uint256::U256;\nuse crate::utils::bounded_vec::BoundedVec;\nuse crate::constants::{\n ARGS_HASH_CHUNK_COUNT,\n ARGS_HASH_CHUNK_LENGTH,\n CONTRACT_TREE_HEIGHT, \n FUNCTION_TREE_HEIGHT, \n NOTE_HASH_TREE_HEIGHT,\n NUM_FIELDS_PER_SHA256,\n GENERATOR_INDEX__SILOED_COMMITMENT,\n GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK,\n GENERATOR_INDEX__CONSTRUCTOR,\n GENERATOR_INDEX__PARTIAL_ADDRESS,\n GENERATOR_INDEX__CONTRACT_ADDRESS,\n GENERATOR_INDEX__COMMITMENT_NONCE,\n GENERATOR_INDEX__UNIQUE_COMMITMENT,\n GENERATOR_INDEX__FUNCTION_ARGS,\n};\n\nuse dep::std::hash::{pedersen_hash_with_separator, sha256};\n\npub fn sha256_to_field<N>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256(bytes_to_hash);\n\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 + (sha256_hashed[15 - i] as Field) * v;\n low = low + (sha256_hashed[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n let hash_in_a_field = low + high * v;\n\n hash_in_a_field\n}\n\npub fn hash_args<N>(args: [Field; N]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n let mut chunks_hashes = [0; ARGS_HASH_CHUNK_COUNT];\n for i in 0..ARGS_HASH_CHUNK_COUNT {\n let mut chunk_hash = 0;\n let start_chunk_index = i * ARGS_HASH_CHUNK_LENGTH;\n if start_chunk_index < (args.len() as u32) {\n let mut chunk_args = [0; ARGS_HASH_CHUNK_LENGTH];\n for j in 0..ARGS_HASH_CHUNK_LENGTH {\n let item_index = i * ARGS_HASH_CHUNK_LENGTH + j;\n if item_index < (args.len() as u32) {\n chunk_args[j] = args[item_index];\n }\n }\n chunk_hash = pedersen_hash(chunk_args, GENERATOR_INDEX__FUNCTION_ARGS);\n }\n chunks_hashes[i] = chunk_hash;\n }\n pedersen_hash(chunks_hashes, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n// Checks that `value` is a member of a merkle tree with root `root` at position `index`\n// The witness being the `sibling_path`\npub fn assert_check_membership<N>(value: Field, index: Field, sibling_path: [Field; N], root: Field) {\n let calculated_root = root_from_sibling_path(value, index, sibling_path);\n assert(calculated_root == root, \"membership check failed\");\n}\n\n// Calculate the Merkle tree root from the sibling path and leaf.\n//\n// The leaf is hashed with its sibling, and then the result is hashed\n// with the next sibling etc in the path. The last hash is the root.\n//\n// TODO(David/Someone): The cpp code is using a uint256, whereas its\n// TODO a bit simpler in Noir to just have a bit array.\n// TODO: I'd generally like to avoid u256 for algorithms like \n// this because it means we never even need to consider cases where \n// the index is greater than p.\npub fn root_from_sibling_path<N>(leaf: Field, leaf_index: Field, sibling_path: [Field; N]) -> Field {\n let mut node = leaf;\n let indices = leaf_index.to_le_bits(N);\n\n for i in 0..N {\n let (hash_left, hash_right) = if indices[i] == 1 {\n (sibling_path[i], node)\n } else {\n (node, sibling_path[i])\n };\n node = merkle_hash(hash_left, hash_right);\n }\n node\n}\n\n// Calculate the function tree root from the sibling path and leaf preimage.\n//\n// TODO: The cpp code passes in components of the FunctionLeafPreimage and then \n// builds it up. We should build it up and then pass the leaf preimage as a parameter.\n// We can then choose to have a general method that takes in anything hashable\n// and deduplicate the logic in `contract_tree_root_from_siblings`\npub fn function_tree_root_from_siblings(\n selector: FunctionSelector,\n is_internal: bool,\n is_private: bool,\n vk_hash: Field,\n acir_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = FunctionLeafPreimage { selector, is_internal, is_private, vk_hash, acir_hash };\n\n let function_leaf = function_leaf_preimage.hash();\n\n let function_tree_root = root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path);\n\n function_tree_root\n}\n\n// Calculate the contract tree root from the sibling path and leaf preimage.\npub fn contract_tree_root_from_siblings(\n function_tree_root: Field,\n storage_contract_address: AztecAddress,\n portal_contract_address: EthAddress,\n contract_leaf_index: Field,\n contract_leaf_sibling_path: [Field; CONTRACT_TREE_HEIGHT]\n) -> Field {\n //TODO(Kev): if we use shorthand syntax here, we get an error as expected,\n // since variable name is `storage_contract_address` but the span is incorrect.\n let contract_leaf_preimage = ContractLeafPreimage { contract_address: storage_contract_address, portal_contract_address, function_tree_root };\n\n let contract_leaf = contract_leaf_preimage.hash();\n\n let computed_contract_tree_root = root_from_sibling_path(contract_leaf, contract_leaf_index, contract_leaf_sibling_path);\n\n computed_contract_tree_root\n}\n\npub fn read_request_root_from_siblings(\n read_request: Field,\n leaf_index: Field,\n sibling_path: [Field; NOTE_HASH_TREE_HEIGHT]\n) -> Field {\n root_from_sibling_path(read_request, leaf_index, sibling_path)\n}\n\npub fn silo_commitment(address: AztecAddress, inner_commitment: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n inner_commitment\n ],\n GENERATOR_INDEX__SILOED_COMMITMENT\n )\n}\n\npub fn silo_nullifier(address: AztecAddress, nullifier: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n nullifier\n ],\n GENERATOR_INDEX__OUTER_NULLIFIER\n )\n}\n\nfn merkle_hash(left: Field, right: Field) -> Field {\n pedersen_hash([left, right], 0)\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk(_vk: VerificationKey) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key<CT::bn254>::compress_native(private_call.vk, GeneratorIndex::VK);\n // The above cpp method is only ever called on verification key, so it has been special cased here\n let _hash_index = GENERATOR_INDEX__VK;\n 0\n}\n\n// TODO CPP uses blake2s for this\npub fn compute_new_contract_address_hash(new_contract_address: AztecAddress) -> Field {\n dep::std::hash::pedersen_hash([new_contract_address.to_field()])\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n rollup_version_id: Field,\n portal_contract_address: EthAddress,\n chain_id: Field,\n content: Field\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new(0);\n\n let inputs = [\n contract_address.to_field(), rollup_version_id, portal_contract_address.to_field(), chain_id, content\n ];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes = inputs[i].to_be_bytes(32);\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage)\n}\n\npub fn compute_constructor_hash(\n function_data: FunctionData,\n args_hash: Field,\n constructor_vk_hash: Field\n) -> Field {\n let function_data_hash = function_data.hash();\n\n pedersen_hash(\n [\n function_data_hash,\n args_hash,\n constructor_vk_hash\n ],\n GENERATOR_INDEX__CONSTRUCTOR\n )\n}\n\n// Computes sha256 hash of 2 input hashes stored in 4 fields.\n// \n// This method is bn254 specific. Two fields is needed in order to \n// encode the sha256 output. It can be abstracted away with any 4-2 hash function.\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//\n// Returning a Field would be desirable because then this can be replaced with \n// poseidon without changing the rest of the code\n//\npub fn accumulate_sha256(input: [U128; 4]) -> [Field; NUM_FIELDS_PER_SHA256] {\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 //\n // Concatenate 4 u128 bit integers into a byte array.\n let mut hash_input_flattened = [0; 64];\n for offset in 0..4 {\n let input_as_bytes = input[offset].to_be_bytes();\n for byte_index in 0..16 {\n hash_input_flattened[offset * 16 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n let sha_digest = dep::std::hash::sha256(hash_input_flattened);\n\n U256::from_bytes32(sha_digest).to_u128_limbs()\n}\n\npub fn compute_logs_hash(\n previous_log_hash: [Field; 2],\n current_log_hash: [Field; 2]\n) -> [Field; NUM_FIELDS_PER_SHA256] {\n accumulate_sha256(\n [\n U128::from_integer(previous_log_hash[0]),\n U128::from_integer(previous_log_hash[1]),\n U128::from_integer(current_log_hash[0]),\n U128::from_integer(current_log_hash[1])\n ]\n )\n}\n\npub fn compute_commitment_nonce(first_nullifier: Field, commitment_index: Field) -> Field {\n pedersen_hash(\n [\n first_nullifier,\n commitment_index\n ],\n GENERATOR_INDEX__COMMITMENT_NONCE\n )\n}\n\npub fn compute_unique_siloed_commitment(nonce: Field, siloed_commitment: Field) -> Field {\n pedersen_hash(\n [\n nonce,\n siloed_commitment\n ],\n GENERATOR_INDEX__UNIQUE_COMMITMENT\n )\n}\n\npub fn compute_unique_siloed_commitments<N>(\n first_nullifier: Field,\n siloed_commitments: [SideEffect; N]\n) -> [SideEffect; N] {\n let mut unique_siloed_commitments = [SideEffect::empty(); N];\n for i in 0..N {\n let siloed_commitment = siloed_commitments[i];\n if siloed_commitment.value != 0 {\n let nonce = compute_commitment_nonce(first_nullifier, i);\n unique_siloed_commitments[i] = SideEffect {\n value: compute_unique_siloed_commitment(nonce, siloed_commitment.value),\n counter: siloed_commitment.counter\n };\n }\n }\n unique_siloed_commitments\n}\n\npub fn pedersen_hash<N>(inputs: [Field; N], hash_index: u32) -> Field {\n dep::std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n",
|
|
1674
|
+
"path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/hash.nr"
|
|
1675
|
+
},
|
|
1676
|
+
"123": {
|
|
1677
|
+
"source": "use crate::{\n constants::{\n GENERATOR_INDEX__CONTRACT_ADDRESS,\n GENERATOR_INDEX__PARTIAL_ADDRESS,\n },\n hash::pedersen_hash,\n utils,\n grumpkin_point::GrumpkinPoint,\n};\nuse dep::std::cmp::Eq;\nuse crate::traits::{Empty, ToField};\n\n// Aztec address\nstruct AztecAddress {\n 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 {\n inner : 0\n }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self {\n inner: 0\n }\n }\n\n pub fn from_field(field : Field) -> Self {\n Self {\n inner : field\n }\n }\n\n pub fn compute(pub_key: GrumpkinPoint, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n pedersen_hash(\n [pub_key.x, pub_key.y, partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS\n )\n )\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 pub fn conditional_assign(predicate: bool, lhs : Self, rhs : Self) -> Self{\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self {\n inner : result\n }\n }\n\n pub fn serialize(self: Self) -> [Field; 1] {\n [self.inner]\n }\n\n pub fn deserialize(fields: [Field; 1]) -> Self {\n Self {\n inner: fields[0]\n }\n }\n}\n\nstruct EthAddress{\n inner : Field\n}\n\nimpl Eq for EthAddress {\n fn eq(self, other : Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for EthAddress {\n fn empty() -> Self {\n Self {\n inner : 0\n }\n }\n}\n\nimpl ToField for EthAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl EthAddress{\n pub fn zero() -> Self {\n Self {\n inner: 0\n }\n }\n\n pub fn from_field(field : Field) -> Self {\n Self {\n inner : field\n }\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 pub fn conditional_assign(predicate: bool, lhs : Self, rhs : Self) -> Self{\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self {\n inner : result\n }\n }\n\n pub fn serialize(self: Self) -> [Field; 1] {\n [self.inner]\n }\n\n pub fn deserialize(fields: [Field; 1]) -> Self {\n Self {\n inner: fields[0]\n }\n }\n}\n\n// Partial address\nstruct PartialAddress {\n inner : Field\n}\n\nimpl ToField for PartialAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl PartialAddress {\n pub fn from_field(field : Field) -> Self {\n Self {\n inner : field\n }\n }\n\n pub fn compute(contract_address_salt : Field, function_tree_root : Field, constructor_hash : Field) -> Self {\n PartialAddress::from_field(\n pedersen_hash([\n // TODO why the zeroes?\n 0,\n 0,\n contract_address_salt,\n function_tree_root,\n constructor_hash\n ], GENERATOR_INDEX__PARTIAL_ADDRESS)\n )\n }\n\n pub fn to_field(self) -> Field {\n self.inner\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n",
|
|
1678
|
+
"path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/address.nr"
|
|
1679
|
+
},
|
|
1680
|
+
"128": {
|
|
1681
|
+
"source": "use crate::address::EthAddress;\nuse crate::constants::{\n CONTRACT_DEPLOYMENT_DATA_LENGTH,\n GENERATOR_INDEX__CONTRACT_DEPLOYMENT_DATA,\n};\nuse crate::hash::pedersen_hash;\nuse crate::grumpkin_point::GrumpkinPoint;\nuse crate::traits::Hash;\n\n// docs:start:contract-deployment-data\nstruct ContractDeploymentData {\n deployer_public_key : GrumpkinPoint,\n constructor_vk_hash : Field,\n function_tree_root : Field,\n contract_address_salt : Field,\n portal_contract_address : EthAddress,\n}\n// docs:end:contract-deployment-data\n\nimpl Hash for ContractDeploymentData {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__CONTRACT_DEPLOYMENT_DATA)\n }\n}\n\nimpl ContractDeploymentData {\n fn serialize(self) -> [Field; CONTRACT_DEPLOYMENT_DATA_LENGTH] {\n [\n self.deployer_public_key.x,\n self.deployer_public_key.y,\n self.constructor_vk_hash,\n self.function_tree_root,\n self.contract_address_salt,\n self.portal_contract_address.to_field(),\n ]\n }\n\n fn assert_is_zero(self) {\n self.deployer_public_key.assert_is_zero();\n assert(self.constructor_vk_hash == 0);\n assert(self.function_tree_root == 0);\n assert(self.contract_address_salt == 0);\n self.portal_contract_address.assert_is_zero();\n }\n\n}\n",
|
|
1682
|
+
"path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/contrakt/deployment_data.nr"
|
|
1683
|
+
},
|
|
1684
|
+
"129": {
|
|
1685
|
+
"source": "use crate::{\n constants::{\n CONTRACT_STORAGE_UPDATE_REQUEST_LENGTH,\n GENERATOR_INDEX__PUBLIC_DATA_UPDATE_REQUEST,\n },\n hash::pedersen_hash,\n};\nuse dep::std::cmp::Eq;\nuse crate::traits::{Hash, Empty};\n\nstruct StorageUpdateRequest{\n storage_slot : Field,\n old_value : Field,\n new_value : Field,\n}\n\nimpl Eq for StorageUpdateRequest {\n fn eq(self, request: Self) -> bool {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3595)\n (request.storage_slot == self.storage_slot)\n & (request.old_value == self.old_value)\n & (request.new_value == self.new_value)\n }\n}\n\nimpl Empty for StorageUpdateRequest {\n fn empty() -> Self {\n StorageUpdateRequest {\n storage_slot: 0,\n old_value: 0,\n new_value: 0,\n }\n }\n}\n\nimpl Hash for StorageUpdateRequest {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__PUBLIC_DATA_UPDATE_REQUEST)\n }\n}\n\nimpl StorageUpdateRequest {\n pub fn serialize(self) -> [Field; CONTRACT_STORAGE_UPDATE_REQUEST_LENGTH] {\n [self.storage_slot, self.old_value, self.new_value]\n }\n\n pub fn is_empty(self) -> bool {\n self.storage_slot == 0\n }\n}\n",
|
|
1686
|
+
"path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/contrakt/storage_update_request.nr"
|
|
1687
|
+
},
|
|
1688
|
+
"130": {
|
|
1689
|
+
"source": "use crate::{\n constants::{\n CONTRACT_STORAGE_READ_LENGTH,\n GENERATOR_INDEX__PUBLIC_DATA_READ,\n },\n hash::pedersen_hash,\n};\nuse crate::traits::Empty;\n\nstruct StorageRead {\n storage_slot: Field,\n current_value: Field,\n}\n\nimpl Empty for StorageRead { \n fn empty() -> Self {\n Self {\n storage_slot: 0,\n current_value: 0,\n }\n }\n}\n\nimpl StorageRead {\n\n pub fn serialize(self) -> [Field; CONTRACT_STORAGE_READ_LENGTH] {\n [self.storage_slot, self.current_value]\n }\n\n pub fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__PUBLIC_DATA_READ)\n }\n\n pub fn is_empty(self) -> bool {\n self.storage_slot == 0\n }\n}\n",
|
|
1690
|
+
"path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/contrakt/storage_read.nr"
|
|
1691
|
+
},
|
|
1692
|
+
"138": {
|
|
1693
|
+
"source": "use crate::abis::{\n function_data::FunctionData,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_circuit_public_inputs::PublicCircuitPublicInputs,\n};\nuse crate::address::AztecAddress;\nuse crate::constants::{\n GENERATOR_INDEX__CALL_STACK_ITEM,\n};\nuse crate::traits::Hash;\n\nstruct PrivateCallStackItem {\n // This is the _actual_ contract address relating to where this function's code resides in the\n // contract tree. Regardless of whether this is a call or delegatecall, this\n // `contract_address` _does not change_. Amongst other things, it's used as a lookup for\n // getting the correct code from the tree. There is a separate `storage_contract_address`\n // within a CallStackItem which varies depending on whether this is a call or delegatecall.\n contract_address: AztecAddress,\n public_inputs: PrivateCircuitPublicInputs,\n function_data: FunctionData,\n // Not really needed for PrivateCallStackItem.\n is_execution_request: bool,\n}\n\nimpl Hash for PrivateCallStackItem {\n fn hash(self) -> Field {\n dep::std::hash::pedersen_hash_with_separator([\n self.contract_address.to_field(),\n self.function_data.hash(),\n self.public_inputs.hash(),\n ], GENERATOR_INDEX__CALL_STACK_ITEM)\n }\n}\n\nstruct PublicCallStackItem {\n contract_address: AztecAddress,\n public_inputs: PublicCircuitPublicInputs,\n function_data: FunctionData,\n // True if this call stack item represents a request to execute a function rather than a\n // fulfilled execution. Used when enqueuing calls from private to public functions.\n is_execution_request: bool,\n}\n\nimpl Hash for PublicCallStackItem {\n fn hash(self) -> Field {\n let item = if self.is_execution_request {\n self.as_execution_request()\n } else {\n self\n };\n\n dep::std::hash::pedersen_hash_with_separator([\n item.contract_address.to_field(),\n item.function_data.hash(),\n item.public_inputs.hash(),\n ], GENERATOR_INDEX__CALL_STACK_ITEM)\n }\n}\n\nimpl PublicCallStackItem {\n fn as_execution_request(self) -> Self {\n let public_inputs = self.public_inputs;\n let mut request_public_inputs: PublicCircuitPublicInputs = dep::std::unsafe::zeroed();\n request_public_inputs.call_context = public_inputs.call_context;\n request_public_inputs.args_hash = public_inputs.args_hash;\n\n let call_stack_item = PublicCallStackItem {\n contract_address: self.contract_address,\n function_data: self.function_data,\n is_execution_request: true,\n public_inputs: request_public_inputs,\n };\n call_stack_item\n }\n}\n",
|
|
1694
|
+
"path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/call_stack_item.nr"
|
|
1695
|
+
},
|
|
1696
|
+
"143": {
|
|
1697
|
+
"source": "use crate::constants::{GENERATOR_INDEX__SIDE_EFFECT};\nuse dep::std::cmp::Eq;\nuse crate::traits::{Empty, Hash};\n\ntrait Ordered {\n fn counter(self) -> u32;\n}\n\nstruct SideEffect{\n value: Field,\n counter: u32,\n}\n\nimpl Ordered for SideEffect {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for SideEffect {\n fn eq(self, side_effect: SideEffect) -> bool {\n (self.value == side_effect.value)\n & (self.counter == side_effect.counter)\n }\n}\n\nimpl Empty for SideEffect {\n fn empty() -> Self {\n SideEffect {\n value: 0,\n counter: 0,\n }\n }\n}\n\nimpl Hash for SideEffect {\n fn hash(self) -> Field {\n dep::std::hash::pedersen_hash_with_separator(\n self.serialize() , GENERATOR_INDEX__SIDE_EFFECT)\n }\n}\n\nimpl SideEffect {\n pub fn serialize(self) -> [Field; 2] {\n [self.value, self.counter as Field]\n }\n\n pub fn deserialise(values: [Field; 2]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n }\n }\n\n pub fn is_empty(self) -> bool {\n (self.value == 0)\n & (self.counter == 0)\n }\n}\n\nstruct SideEffectLinkedToNoteHash{\n value: Field,\n note_hash: Field,\n counter: u32,\n}\n\nimpl Ordered for SideEffectLinkedToNoteHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for SideEffectLinkedToNoteHash {\n fn eq(self, side_effect: SideEffectLinkedToNoteHash) -> bool {\n (self.value == side_effect.value)\n & (self.note_hash == side_effect.note_hash) \n & (self.counter == side_effect.counter)\n }\n}\n\nimpl Empty for SideEffectLinkedToNoteHash {\n fn empty() -> Self {\n SideEffectLinkedToNoteHash {\n value: 0,\n note_hash: 0,\n counter: 0,\n }\n }\n}\n\nimpl Hash for SideEffectLinkedToNoteHash {\n fn hash(self) -> Field {\n dep::std::hash::pedersen_hash_with_separator(\n self.serialize(),\n GENERATOR_INDEX__SIDE_EFFECT)\n }\n}\n\nimpl SideEffectLinkedToNoteHash{\n pub fn serialize(self) -> [Field; 3] {\n [self.value, self.note_hash, self.counter as Field]\n }\n\n pub fn deserialise(values: [Field; 3]) -> Self {\n Self {\n value: values[0],\n note_hash: values[1],\n counter: values[2] as u32,\n }\n }\n\n pub fn is_empty(self) -> bool {\n (self.value == 0)\n & (self.note_hash == 0)\n & (self.counter == 0)\n }\n}\n\n",
|
|
1698
|
+
"path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr"
|
|
1699
|
+
},
|
|
1700
|
+
"146": {
|
|
1701
|
+
"source": "use crate::constants::{\n MAX_NEW_L2_TO_L1_MSGS_PER_CALL,\n MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_NEW_COMMITMENTS_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL,\n NUM_FIELDS_PER_SHA256,\n RETURN_VALUES_LENGTH,\n GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS,\n PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH,\n PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH,\n};\nuse crate::{\n abis::{\n call_context::CallContext,\n side_effect::{SideEffect, SideEffectLinkedToNoteHash},\n block_header::BlockHeader,\n },\n address::AztecAddress,\n contrakt::{\n storage_read::StorageRead,\n storage_update_request::StorageUpdateRequest,\n },\n utils::bounded_vec::BoundedVec,\n};\n\nstruct PublicCircuitPublicInputs{\n call_context: CallContext,\n\n args_hash: Field,\n return_values: [Field; RETURN_VALUES_LENGTH],\n\n contract_storage_update_requests: [StorageUpdateRequest; MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL],\n contract_storage_reads: [StorageRead; MAX_PUBLIC_DATA_READS_PER_CALL],\n\n // todo: add sideeffect ranges for the input to these hashes\n public_call_stack_hashes: [Field; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n new_commitments: [SideEffect; MAX_NEW_COMMITMENTS_PER_CALL],\n new_nullifiers: [SideEffectLinkedToNoteHash; MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [Field; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n\n unencrypted_logs_hash: [Field; NUM_FIELDS_PER_SHA256],\n\n // Here so that the gas cost of this request can be measured by circuits, without actually needing to feed in the\n // variable-length data.\n unencrypted_log_preimages_length: Field,\n\n block_header: BlockHeader,\n\n prover_address: AztecAddress,\n}\n\nimpl PublicCircuitPublicInputs{\n fn hash(self) -> Field { \n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3595) have mercy por favor \n let mut inputs: BoundedVec<Field, PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH> = BoundedVec::new(0);\n inputs.push(self.call_context.hash());\n inputs.push(self.args_hash);\n inputs.push_array(self.return_values);\n for i in 0..MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL {\n inputs.push(self.contract_storage_update_requests[i].hash());\n }\n for i in 0..MAX_PUBLIC_DATA_READS_PER_CALL {\n inputs.push(self.contract_storage_reads[i].hash());\n }\n inputs.push_array(self.public_call_stack_hashes);\n\n for i in 0..MAX_NEW_COMMITMENTS_PER_CALL{\n inputs.push(self.new_commitments[i].hash());\n }\n for i in 0..MAX_NEW_NULLIFIERS_PER_CALL{\n inputs.push(self.new_nullifiers[i].hash());\n }\n inputs.push_array(self.new_l2_to_l1_msgs);\n inputs.push_array(self.unencrypted_logs_hash);\n inputs.push(self.unencrypted_log_preimages_length);\n inputs.push_array(self.block_header.serialize());\n inputs.push(self.prover_address.to_field());\n\n assert_eq(inputs.len(), PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH, \"Incorrect number of input fields when hashing PublicCircuitPublicInputs\");\n\n dep::std::hash::pedersen_hash_with_separator(inputs.storage, GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS)\n }\n\n pub fn serialize(self) -> [Field; PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH] {\n let mut fields: BoundedVec<Field, PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH> = BoundedVec::new(0); \n fields.push_array(self.call_context.serialize()); \n fields.push(self.args_hash);\n fields.push_array(self.return_values);\n for i in 0..MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL {\n fields.push_array(self.contract_storage_update_requests[i].serialize());\n }\n for i in 0..MAX_PUBLIC_DATA_READS_PER_CALL {\n fields.push_array(self.contract_storage_reads[i].serialize());\n }\n fields.push_array(self.public_call_stack_hashes);\n\n for i in 0..MAX_NEW_COMMITMENTS_PER_CALL{\n fields.push_array(self.new_commitments[i].serialize());\n }\n for i in 0..MAX_NEW_NULLIFIERS_PER_CALL{\n fields.push_array(self.new_nullifiers[i].serialize());\n }\n fields.push_array(self.new_l2_to_l1_msgs);\n fields.push_array(self.unencrypted_logs_hash);\n fields.push(self.unencrypted_log_preimages_length);\n fields.push_array(self.block_header.serialize());\n fields.push(self.prover_address.to_field());\n fields.storage\n }\n}\n",
|
|
1702
|
+
"path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_circuit_public_inputs.nr"
|
|
1703
|
+
},
|
|
1704
|
+
"148": {
|
|
1705
|
+
"source": "use crate::{\n abis::{\n call_context::CallContext,\n block_header::BlockHeader,\n side_effect::{SideEffect, SideEffectLinkedToNoteHash},\n },\n contrakt::deployment_data::ContractDeploymentData,\n hash::{\n pedersen_hash,\n },\n utils::bounded_vec::BoundedVec,\n};\nuse crate::constants::{\n MAX_READ_REQUESTS_PER_CALL,\n MAX_NEW_COMMITMENTS_PER_CALL,\n MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_NEW_L2_TO_L1_MSGS_PER_CALL,\n NUM_FIELDS_PER_SHA256,\n RETURN_VALUES_LENGTH,\n PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH,\n PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH,\n GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS,\n};\nuse crate::traits::Hash;\n\nstruct PrivateCircuitPublicInputs {\n call_context: CallContext,\n \n args_hash: Field,\n return_values: [Field; RETURN_VALUES_LENGTH],\n\n read_requests: [SideEffect; MAX_READ_REQUESTS_PER_CALL],\n\n new_commitments: [SideEffect; MAX_NEW_COMMITMENTS_PER_CALL],\n new_nullifiers: [SideEffectLinkedToNoteHash; MAX_NEW_NULLIFIERS_PER_CALL],\n private_call_stack_hashes: [Field; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL],\n public_call_stack_hashes: [Field; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n new_l2_to_l1_msgs: [Field; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n end_side_effect_counter : u32,\n\n encrypted_logs_hash: [Field; NUM_FIELDS_PER_SHA256],\n unencrypted_logs_hash: [Field; NUM_FIELDS_PER_SHA256],\n\n // Here so that the gas cost of this request can be measured by circuits, without actually needing to feed in the\n // variable-length data.\n encrypted_log_preimages_length: Field,\n unencrypted_log_preimages_length: Field,\n\n block_header: BlockHeader,\n\n contract_deployment_data: ContractDeploymentData,\n\n chain_id: Field,\n version: Field,\n}\n\nimpl Hash for PrivateCircuitPublicInputs {\n fn hash(self) -> Field {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3595)\n let mut fields: BoundedVec<Field, PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH> = BoundedVec::new(0); \n fields.push(self.call_context.hash());\n fields.push(self.args_hash);\n fields.push_array(self.return_values);\n\n for i in 0..MAX_READ_REQUESTS_PER_CALL{\n fields.push_array(self.read_requests[i].serialize());\n }\n for i in 0..MAX_NEW_COMMITMENTS_PER_CALL{\n fields.push_array(self.new_commitments[i].serialize());\n }\n for i in 0..MAX_NEW_NULLIFIERS_PER_CALL{\n fields.push_array(self.new_nullifiers[i].serialize());\n }\n fields.push_array(self.private_call_stack_hashes);\n fields.push_array(self.public_call_stack_hashes);\n fields.push_array(self.new_l2_to_l1_msgs);\n fields.push(self.end_side_effect_counter as Field);\n fields.push_array(self.encrypted_logs_hash);\n fields.push_array(self.unencrypted_logs_hash);\n fields.push(self.encrypted_log_preimages_length);\n fields.push(self.unencrypted_log_preimages_length);\n fields.push_array(self.block_header.serialize());\n fields.push(self.contract_deployment_data.hash());\n fields.push(self.chain_id);\n fields.push(self.version);\n\n assert_eq(fields.len(), PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH, \"Incorrect number of input fields when hashing PrivateCircuitPublicInputs\");\n\n pedersen_hash(fields.storage, GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS)\n }\n}\n\nimpl PrivateCircuitPublicInputs {\n fn serialize(self) -> [Field; PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH] {\n let mut fields: BoundedVec<Field, PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH> = BoundedVec::new(0); \n fields.push_array(self.call_context.serialize());\n fields.push(self.args_hash);\n fields.push_array(self.return_values);\n\n for i in 0..MAX_READ_REQUESTS_PER_CALL{\n fields.push_array(self.read_requests[i].serialize());\n }\n for i in 0..MAX_NEW_COMMITMENTS_PER_CALL{\n fields.push_array(self.new_commitments[i].serialize());\n }\n for i in 0..MAX_NEW_NULLIFIERS_PER_CALL{\n fields.push_array(self.new_nullifiers[i].serialize());\n }\n fields.push_array(self.private_call_stack_hashes);\n fields.push_array(self.public_call_stack_hashes);\n fields.push_array(self.new_l2_to_l1_msgs);\n fields.push(self.end_side_effect_counter as Field);\n fields.push_array(self.encrypted_logs_hash);\n fields.push_array(self.unencrypted_logs_hash);\n fields.push(self.encrypted_log_preimages_length);\n fields.push(self.unencrypted_log_preimages_length);\n fields.push_array(self.block_header.serialize());\n fields.push_array(self.contract_deployment_data.serialize());\n fields.push(self.chain_id);\n fields.push(self.version);\n\n assert_eq(fields.len(), PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH);\n\n fields.storage\n }\n}\n\n#[test]\nfn serialization_smoke() {\n let pcpi: PrivateCircuitPublicInputs = dep::std::unsafe::zeroed();\n let _serialized = pcpi.serialize();\n}\n\n#[test]\nfn hash_smoke() {\n let pcpi: PrivateCircuitPublicInputs = dep::std::unsafe::zeroed();\n let _hashed = pcpi.hash();\n}\n",
|
|
1706
|
+
"path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr"
|
|
1707
|
+
},
|
|
1708
|
+
"151": {
|
|
1709
|
+
"source": "use crate::abis::function_selector::FunctionSelector;\nuse crate::constants::GENERATOR_INDEX__FUNCTION_DATA;\n\nstruct FunctionData {\n // First four bytes of the abi encoding \n // of a function. \n selector : FunctionSelector,\n is_internal : bool,\n is_private : bool,\n is_constructor : bool,\n}\n\nimpl FunctionData {\n // A field is ~256 bits\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3057): Since, function data can fit into a Field,\n // This method will simply return a bit packed Field instead of hashing\n fn hash(self) -> Field {\n dep::std::hash::pedersen_hash_with_separator([\n self.selector.to_field(),\n self.is_internal as Field,\n self.is_private as Field,\n self.is_constructor as Field,\n ], GENERATOR_INDEX__FUNCTION_DATA)\n }\n}\n",
|
|
1710
|
+
"path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/function_data.nr"
|
|
1711
|
+
},
|
|
1712
|
+
"156": {
|
|
1713
|
+
"source": "use crate::{\n abis::function_selector::FunctionSelector,\n address::{EthAddress,AztecAddress},\n constants::{\n CALL_CONTEXT_LENGTH,\n GENERATOR_INDEX__CALL_CONTEXT,\n },\n hash::pedersen_hash,\n};\nuse dep::std::cmp::Eq;\nuse crate::traits::Hash;\n\n// docs:start:call-context\nstruct CallContext {\n msg_sender : AztecAddress,\n storage_contract_address : AztecAddress,\n portal_contract_address : EthAddress,\n\n function_selector : FunctionSelector,\n\n is_delegate_call : bool,\n is_static_call : bool,\n is_contract_deployment : bool,\n\n start_side_effect_counter : u32,\n}\n// docs:end:call-context\n\nimpl Eq for CallContext {\n fn eq(self, call_context: CallContext) -> bool {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3595)\n call_context.msg_sender.eq(self.msg_sender)\n & call_context.storage_contract_address.eq(self.storage_contract_address)\n & call_context.portal_contract_address.eq(self.portal_contract_address)\n & call_context.function_selector.eq(self.function_selector)\n & (call_context.is_delegate_call == self.is_delegate_call)\n & (call_context.is_static_call == self.is_static_call)\n & (call_context.is_contract_deployment == self.is_contract_deployment)\n & (call_context.start_side_effect_counter == self.start_side_effect_counter)\n }\n}\n\nimpl Hash for CallContext {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__CALL_CONTEXT)\n }\n}\n\nimpl CallContext {\n fn serialize(self) -> [Field; CALL_CONTEXT_LENGTH] {\n [\n self.msg_sender.to_field(),\n self.storage_contract_address.to_field(),\n self.portal_contract_address.to_field(),\n self.function_selector.to_field(),\n self.is_delegate_call as Field,\n self.is_static_call as Field,\n self.is_contract_deployment as Field,\n self.start_side_effect_counter as Field,\n ]\n }\n\n fn assert_is_zero(self) {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3595)\n assert(self.msg_sender.to_field() == 0);\n assert(self.storage_contract_address.to_field() == 0);\n assert(self.portal_contract_address.to_field() == 0);\n assert(self.function_selector.to_field() == 0);\n assert(self.is_delegate_call == false);\n assert(self.is_static_call == false);\n assert(self.is_contract_deployment == false);\n assert(self.start_side_effect_counter == 0);\n }\n}\n",
|
|
1714
|
+
"path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/call_context.nr"
|
|
1715
|
+
},
|
|
1716
|
+
"162": {
|
|
1717
|
+
"source": "use crate::utils::field::field_from_bytes;\nuse dep::std::cmp::Eq;\n\nglobal SELECTOR_SIZE = 4;\n\nstruct FunctionSelector {\n // 1st 4-bytes of abi-encoding of function.\n inner: u32,\n}\n\nimpl Eq for FunctionSelector {\n fn eq(self, function_selector: FunctionSelector) -> bool {\n function_selector.inner == self.inner\n }\n}\n\nimpl FunctionSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n\n pub fn from_u32(value: u32) -> Self {\n Self {\n inner : value,\n }\n }\n\n pub fn from_field(value : Field) -> Self {\n Self {\n inner : value as u32,\n }\n }\n\n pub fn from_signature<N>(signature: str<N>) -> Self {\n let bytes = signature.as_bytes();\n let hash = dep::std::hash::keccak256(bytes, bytes.len() as u32);\n\n let mut selector_be_bytes = [0; SELECTOR_SIZE];\n for i in 0..SELECTOR_SIZE {\n selector_be_bytes[i] = hash[i];\n }\n\n FunctionSelector::from_field(field_from_bytes(selector_be_bytes, true))\n }\n\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn serialize(self: Self) -> [Field; 1] {\n [self.inner as Field]\n }\n\n pub fn deserialize(fields: [Field; 1]) -> Self {\n Self {\n inner: fields[0] as u32\n }\n }\n}\n",
|
|
1718
|
+
"path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/function_selector.nr"
|
|
1719
|
+
},
|
|
1720
|
+
"186": {
|
|
1721
|
+
"source": "use dep::aztec::abi;\nuse dep::aztec::types::vec::BoundedVec;\nuse dep::aztec::context::PrivateContext;\nuse dep::aztec::protocol_types::{\n abis::{\n call_stack_item::{\n PrivateCallStackItem,\n PublicCallStackItem,\n },\n function_selector::FunctionSelector,\n },\n address::AztecAddress,\n constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD,\n hash::pedersen_hash,\n};\n\nglobal ACCOUNT_MAX_CALLS: Field = 4;\n// 1 (ARGS_HASH) + 1 (FUNCTION_SELECTOR) + 1 (TARGET_ADDRESS) + 1 (IS_PUBLIC)\nglobal FUNCTION_CALL_SIZE: Field = 4;\n// 3 * 32 + 1\nglobal FUNCTION_CALL_SIZE_IN_BYTES: Field = 97;\n\nstruct FunctionCall {\n args_hash: Field,\n function_selector: FunctionSelector,\n target_address: AztecAddress,\n is_public: bool,\n}\n\nimpl FunctionCall {\n fn serialize(self) -> [Field; FUNCTION_CALL_SIZE] {\n [self.args_hash, self.function_selector.to_field(), self.target_address.to_field(), self.is_public as Field]\n }\n\n fn to_be_bytes(self) -> [u8; FUNCTION_CALL_SIZE_IN_BYTES] {\n let mut bytes: [u8; FUNCTION_CALL_SIZE_IN_BYTES] = [0; FUNCTION_CALL_SIZE_IN_BYTES];\n let args_hash_bytes = self.args_hash.to_be_bytes(32);\n for i in 0..32 { bytes[i] = args_hash_bytes[i]; }\n let function_selector_bytes = self.function_selector.to_field().to_be_bytes(32);\n for i in 0..32 { bytes[i + 32] = function_selector_bytes[i]; }\n let target_address_bytes = self.target_address.to_field().to_be_bytes(32);\n for i in 0..32 { bytes[i + 64] = target_address_bytes[i]; }\n bytes[96] = self.is_public as u8;\n bytes\n }\n}\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal ENTRYPOINT_PAYLOAD_SIZE: Field = 17;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal ENTRYPOINT_PAYLOAD_SIZE_IN_BYTES: Field = 420;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:entrypoint-struct\nstruct EntrypointPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:entrypoint-struct\n\nimpl EntrypointPayload {\n fn hash(self) -> Field {\n pedersen_hash(\n self.serialize(), \n GENERATOR_INDEX__SIGNATURE_PAYLOAD\n )\n }\n\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; ENTRYPOINT_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, ENTRYPOINT_PAYLOAD_SIZE> = BoundedVec::new(0); \n for call in self.function_calls {\n fields.push_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage\n }\n\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; ENTRYPOINT_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: [u8; ENTRYPOINT_PAYLOAD_SIZE_IN_BYTES] = [0; ENTRYPOINT_PAYLOAD_SIZE_IN_BYTES];\n\n for i in 0..ACCOUNT_MAX_CALLS {\n let item_bytes = self.function_calls[i].to_be_bytes();\n for j in 0..FUNCTION_CALL_SIZE_IN_BYTES { \n bytes[i * FUNCTION_CALL_SIZE_IN_BYTES + j] = item_bytes[j];\n }\n }\n\n let nonce_bytes = self.nonce.to_be_bytes(32);\n let nonce_offset = FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS;\n for j in 0..32 {\n bytes[nonce_offset + j] = nonce_bytes[j];\n }\n \n bytes\n }\n\n // Executes all private and public calls \n // docs:start:entrypoint-execute-calls\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address, call.function_selector, call.args_hash\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address, call.function_selector, call.args_hash\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n",
|
|
1722
|
+
"path": "/usr/src/yarn-project/aztec-nr/authwit/src/entrypoint.nr"
|
|
1723
|
+
},
|
|
1724
|
+
"187": {
|
|
1725
|
+
"source": "use dep::aztec::context::{PrivateContext, PublicContext, Context};\nuse dep::aztec::state_vars::{map::Map, public_state::PublicState};\nuse dep::aztec::types::type_serialization::bool_serialization::{BoolSerializationMethods,BOOL_SERIALIZED_LEN};\n\nuse crate::entrypoint::EntrypointPayload;\nuse crate::auth::IS_VALID_SELECTOR;\n\nstruct AccountActions {\n context: Context,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool,\n approved_action: Map<Field, PublicState<bool, BOOL_SERIALIZED_LEN>>,\n}\n\nimpl AccountActions {\n pub fn init(context: Context, approved_action_storage_slot: Field, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions {\n context: context,\n is_valid_impl: is_valid_impl,\n approved_action: Map::new(\n context,\n approved_action_storage_slot,\n |context, slot| {\n PublicState::new(context, slot, BoolSerializationMethods)\n },\n ),\n }\n }\n\n pub fn private(context: &mut PrivateContext, approved_action_storage_slot: Field, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions::init(Context::private(context), approved_action_storage_slot, is_valid_impl)\n }\n\n pub fn public(context: &mut PublicContext, approved_action_storage_slot: Field, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions::init(Context::public(context), approved_action_storage_slot, is_valid_impl)\n }\n \n // docs:start:entrypoint\n pub fn entrypoint(self, payload: EntrypointPayload) {\n let message_hash = payload.hash();\n let valid_fn = self.is_valid_impl;\n let private_context = self.context.private.unwrap();\n assert(valid_fn(private_context, message_hash));\n payload.execute_calls(private_context);\n }\n // docs:end:entrypoint\n\n pub fn is_valid(self, message_hash: Field) -> Field {\n let valid_fn = self.is_valid_impl;\n if (valid_fn(self.context.private.unwrap(), message_hash)) {\n IS_VALID_SELECTOR\n } else {\n 0\n }\n }\n\n pub fn is_valid_public(self, message_hash: Field) -> Field {\n let value = self.approved_action.at(message_hash).read();\n if (value){\n IS_VALID_SELECTOR\n } else {\n 0\n }\n }\n\n pub fn internal_set_is_valid_storage(self, message_hash: Field, value: bool) {\n self.approved_action.at(message_hash).write(value);\n }\n}\n",
|
|
1726
|
+
"path": "/usr/src/yarn-project/aztec-nr/authwit/src/account.nr"
|
|
1727
|
+
},
|
|
1728
|
+
"190": {
|
|
1729
|
+
"source": "#[oracle(getAuthWitness)]\nfn get_auth_witness_oracle<N>(_message_hash: Field) -> [Field; N] {}\n\nunconstrained pub fn get_auth_witness<N>(message_hash: Field) -> [Field; N] {\n get_auth_witness_oracle(message_hash)\n}\n",
|
|
1730
|
+
"path": "/usr/src/yarn-project/aztec-nr/authwit/src/auth_witness.nr"
|
|
1731
|
+
},
|
|
1732
|
+
"208": {
|
|
1733
|
+
"source": "mod public_key_note;\n\n// Account contract that uses Schnorr signatures for authentication.\n// The signing key is stored in an immutable private note and should be different from the encryption/nullifying key.\ncontract SchnorrAccount {\n use dep::std;\n use dep::std::option::Option;\n\n use dep::aztec::protocol_types::address::AztecAddress;\n\n use dep::aztec::{\n context::{PrivateContext, Context},\n note::{ note_header::NoteHeader, utils as note_utils },\n oracle::get_public_key::get_public_key,\n state_vars::immutable_singleton::ImmutableSingleton,\n };\n use dep::authwit:: {\n entrypoint::{ EntrypointPayload, ENTRYPOINT_PAYLOAD_SIZE },\n account::AccountActions,\n auth_witness::get_auth_witness,\n };\n\n use crate::public_key_note::{PublicKeyNote, PublicKeyNoteMethods, PUBLIC_KEY_NOTE_LEN};\n\n struct Storage {\n // docs:start:storage\n signing_public_key: ImmutableSingleton<PublicKeyNote, PUBLIC_KEY_NOTE_LEN>,\n // docs:end:storage\n }\n\n impl Storage {\n fn init(context: Context) -> Self {\n Storage {\n // docs:start:storage_init\n signing_public_key: ImmutableSingleton::new(context, 1, PublicKeyNoteMethods),\n // docs:end:storage_init\n }\n }\n }\n\n global ACCOUNT_ACTIONS_STORAGE_SLOT = 2;\n\n // Constructs the contract\n #[aztec(private)]\n fn constructor(signing_pub_key_x: pub Field, signing_pub_key_y: pub Field) {\n let this = context.this_address();\n // docs:start:initialize\n let mut pub_key_note = PublicKeyNote::new(signing_pub_key_x, signing_pub_key_y, this);\n storage.signing_public_key.initialize(&mut pub_key_note, Option::none(), true);\n // docs:end:initialize\n }\n\n // Note: If you globally change the entrypoint signature don't forget to update default_entrypoint.ts file\n #[aztec(private)]\n fn entrypoint(payload: pub EntrypointPayload) {\n let actions = AccountActions::private(&mut context, ACCOUNT_ACTIONS_STORAGE_SLOT, is_valid_impl);\n actions.entrypoint(payload);\n }\n\n #[aztec(private)]\n fn is_valid(message_hash: Field) -> Field {\n let actions = AccountActions::private(&mut context, ACCOUNT_ACTIONS_STORAGE_SLOT, is_valid_impl);\n actions.is_valid(message_hash)\n }\n\n #[aztec(public)]\n fn is_valid_public(message_hash: Field) -> Field {\n let actions = AccountActions::public(&mut context, ACCOUNT_ACTIONS_STORAGE_SLOT, is_valid_impl);\n actions.is_valid_public(message_hash)\n }\n\n #[aztec(public)]\n internal fn set_is_valid_storage(message_hash: Field, value: bool) {\n let actions = AccountActions::public(&mut context, ACCOUNT_ACTIONS_STORAGE_SLOT, is_valid_impl);\n actions.internal_set_is_valid_storage(message_hash, value)\n }\n\n #[contract_library_method]\n fn is_valid_impl(context: &mut PrivateContext, message_hash: Field) -> pub bool {\n // docs:start:entrypoint\n // Load public key from storage\n let storage = Storage::init(Context::private(context));\n // docs:start:get_note\n let public_key = storage.signing_public_key.get_note();\n // docs:end:get_note\n // Load auth witness\n let witness: [Field; 64] = get_auth_witness(message_hash);\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n\n // Verify signature of the payload bytes\n let verification = std::schnorr::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n message_hash.to_be_bytes(32)\n );\n assert(verification == true);\n // docs:end:entrypoint\n true\n }\n\n // Computes notes hash and nullifier.\n // Note 1: Needs to be defined by every contract producing logs.\n // Note 2: Having it in all the contracts gives us the ability to compute the note hash and nullifier differently for different kind of notes.\n unconstrained fn compute_note_hash_and_nullifier(\n contract_address: AztecAddress,\n nonce: Field,\n storage_slot: Field,\n serialized_note: [Field; PUBLIC_KEY_NOTE_LEN]\n ) -> pub [Field; 4] {\n assert(storage_slot == 1);\n let note_header = NoteHeader::new(contract_address, nonce, storage_slot);\n note_utils::compute_note_hash_and_nullifier(PublicKeyNoteMethods, note_header, serialized_note)\n }\n}\n",
|
|
1734
|
+
"path": "/usr/src/yarn-project/noir-contracts/contracts/schnorr_account_contract/src/main.nr"
|
|
1735
|
+
},
|
|
1736
|
+
"209": {
|
|
1737
|
+
"source": "use dep::aztec::{\n note::{\n note_header::NoteHeader,\n note_interface::NoteInterface,\n utils::compute_unique_siloed_note_hash,\n },\n hash::pedersen_hash,\n oracle::{\n nullifier_key::get_nullifier_secret_key,\n get_public_key::get_public_key,\n },\n log::emit_encrypted_log,\n context::PrivateContext,\n};\nuse dep::aztec::protocol_types::address::AztecAddress;\n\nglobal PUBLIC_KEY_NOTE_LEN: Field = 3;\n\n// Stores a public key composed of two fields\n// TODO: Do we need to include a nonce, in case we want to read/nullify/recreate with the same pubkey value?\nstruct PublicKeyNote {\n x: Field,\n y: Field,\n owner: AztecAddress, // We store the owner address only to get the secret key to compute the nullifier and to broadcast\n header: NoteHeader,\n}\n\nimpl PublicKeyNote {\n pub fn new(x: Field, y: Field, owner: AztecAddress) -> Self {\n PublicKeyNote {\n x,\n y,\n owner,\n header: NoteHeader::empty(),\n }\n }\n\n // serialize the note as 3 fields\n pub fn serialize(self) -> [Field; PUBLIC_KEY_NOTE_LEN] {\n [self.x, self.y, self.owner.to_field()]\n }\n\n pub fn compute_nullifier(self, context: &mut PrivateContext) -> Field {\n let unique_siloed_note_hash = compute_unique_siloed_note_hash(PublicKeyNoteMethods, self);\n let secret = context.request_nullifier_secret_key(self.owner);\n // TODO(#1205) Should use a non-zero generator index.\n pedersen_hash([\n unique_siloed_note_hash,\n secret.low,\n secret.high,\n ],0)\n }\n\n pub fn compute_nullifier_without_context(self) -> Field {\n let unique_siloed_note_hash = compute_unique_siloed_note_hash(PublicKeyNoteMethods, self);\n let secret = get_nullifier_secret_key(self.owner);\n // TODO(#1205) Should use a non-zero generator index.\n pedersen_hash([\n unique_siloed_note_hash,\n secret.low,\n secret.high,\n ],0)\n }\n\n pub fn set_header(&mut self, header: NoteHeader) {\n self.header = header;\n }\n\n // Broadcasts the note as an encrypted log on L1.\n pub fn broadcast(self, context: &mut PrivateContext, slot: Field) {\n let encryption_pub_key = get_public_key(self.owner);\n emit_encrypted_log(\n context,\n (*context).this_address(),\n slot,\n encryption_pub_key,\n self.serialize(),\n );\n }\n}\n\nfn deserialize(serialized_note: [Field; PUBLIC_KEY_NOTE_LEN]) -> PublicKeyNote {\n PublicKeyNote {\n x: serialized_note[0],\n y: serialized_note[1],\n owner: AztecAddress::from_field(serialized_note[2]),\n header: NoteHeader::empty()\n }\n}\n\nfn serialize(note: PublicKeyNote) -> [Field; PUBLIC_KEY_NOTE_LEN] {\n note.serialize()\n}\n\nfn compute_note_hash(note: PublicKeyNote) -> Field {\n // TODO(#1205) Should use a non-zero generator index.\n pedersen_hash(note.serialize(), 0)\n}\n\nfn compute_nullifier(note: PublicKeyNote, context: &mut PrivateContext) -> Field {\n note.compute_nullifier(context)\n}\n\nfn compute_nullifier_without_context(note: PublicKeyNote) -> Field {\n note.compute_nullifier_without_context()\n}\n\nfn get_header(note: PublicKeyNote) -> NoteHeader {\n note.header\n}\n\nfn set_header(note: &mut PublicKeyNote, header: NoteHeader) {\n note.set_header(header);\n}\n\n// Broadcasts the note as an encrypted log on L1.\nfn broadcast(context: &mut PrivateContext, slot: Field, note: PublicKeyNote) {\n note.broadcast(context, slot);\n}\n\nglobal PublicKeyNoteMethods = NoteInterface {\n deserialize,\n serialize,\n compute_note_hash,\n compute_nullifier,\n compute_nullifier_without_context,\n get_header,\n set_header,\n broadcast,\n};\n",
|
|
1738
|
+
"path": "/usr/src/yarn-project/noir-contracts/contracts/schnorr_account_contract/src/public_key_note.nr"
|
|
1088
1739
|
}
|
|
1089
1740
|
}
|
|
1090
1741
|
}
|