@aztec/txe 0.0.1-commit.179ed20 → 0.0.1-commit.189eedb3

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.
Files changed (158) hide show
  1. package/dest/ContractClassRegistry-PII7Q556.js +3 -0
  2. package/dest/ContractClassRegistry-PII7Q556.js.map +7 -0
  3. package/dest/ContractInstanceRegistry-3MHLGFNZ.js +3 -0
  4. package/dest/ContractInstanceRegistry-3MHLGFNZ.js.map +7 -0
  5. package/dest/FeeJuice-TQV5AQK7.js +3 -0
  6. package/dest/FeeJuice-TQV5AQK7.js.map +7 -0
  7. package/dest/MultiCallEntrypoint-SBJUIJY7.js +3 -0
  8. package/dest/MultiCallEntrypoint-SBJUIJY7.js.map +7 -0
  9. package/dest/SchnorrAccount-MQXPIZ44.js +3 -0
  10. package/dest/SchnorrAccount-MQXPIZ44.js.map +7 -0
  11. package/dest/bin/check_txe_oracle_version.d.ts +2 -0
  12. package/dest/bin/check_txe_oracle_version.d.ts.map +1 -0
  13. package/dest/bin/check_txe_oracle_version.js +61 -0
  14. package/dest/bin/index.js +3 -30
  15. package/dest/bin/index.js.map +7 -0
  16. package/dest/bin/oracle_test_server.d.ts +3 -0
  17. package/dest/bin/oracle_test_server.d.ts.map +1 -0
  18. package/dest/bin/oracle_test_server.js +41 -0
  19. package/dest/chunk-6DNQGQKE.js +265 -0
  20. package/dest/chunk-6DNQGQKE.js.map +7 -0
  21. package/dest/chunk-BJVAAXNA.js +3 -0
  22. package/dest/chunk-BJVAAXNA.js.map +7 -0
  23. package/dest/chunk-IGFYWSUP.js +304 -0
  24. package/dest/chunk-IGFYWSUP.js.map +7 -0
  25. package/dest/constants.d.ts +5 -1
  26. package/dest/constants.d.ts.map +1 -1
  27. package/dest/constants.js +8 -0
  28. package/dest/dispatcher_pool.d.ts +67 -0
  29. package/dest/dispatcher_pool.d.ts.map +1 -0
  30. package/dest/dispatcher_pool.js +284 -0
  31. package/dest/index.d.ts +185 -7
  32. package/dest/index.d.ts.map +1 -1
  33. package/dest/index.js +71 -157
  34. package/dest/metafile.json +38642 -0
  35. package/dest/msgpackr_fr_extension.d.ts +2 -0
  36. package/dest/msgpackr_fr_extension.d.ts.map +1 -0
  37. package/dest/msgpackr_fr_extension.js +21 -0
  38. package/dest/oracle/interfaces.d.ts +56 -30
  39. package/dest/oracle/interfaces.d.ts.map +1 -1
  40. package/dest/oracle/test-resolver/fixtures.d.ts +43 -0
  41. package/dest/oracle/test-resolver/fixtures.d.ts.map +1 -0
  42. package/dest/oracle/test-resolver/fixtures.js +39 -0
  43. package/dest/oracle/test-resolver/index.d.ts +9 -0
  44. package/dest/oracle/test-resolver/index.d.ts.map +1 -0
  45. package/dest/oracle/test-resolver/index.js +33 -0
  46. package/dest/oracle/test-resolver/resolver.d.ts +34 -0
  47. package/dest/oracle/test-resolver/resolver.d.ts.map +1 -0
  48. package/dest/oracle/test-resolver/resolver.js +114 -0
  49. package/dest/oracle/txe_oracle_public_context.d.ts +38 -14
  50. package/dest/oracle/txe_oracle_public_context.d.ts.map +1 -1
  51. package/dest/oracle/txe_oracle_public_context.js +55 -13
  52. package/dest/oracle/txe_oracle_registry.d.ts +147 -0
  53. package/dest/oracle/txe_oracle_registry.d.ts.map +1 -0
  54. package/dest/oracle/txe_oracle_registry.js +562 -0
  55. package/dest/oracle/txe_oracle_top_level_context.d.ts +45 -26
  56. package/dest/oracle/txe_oracle_top_level_context.d.ts.map +1 -1
  57. package/dest/oracle/txe_oracle_top_level_context.js +243 -80
  58. package/dest/oracle/txe_oracle_version.d.ts +17 -0
  59. package/dest/oracle/txe_oracle_version.d.ts.map +1 -0
  60. package/dest/oracle/txe_oracle_version.js +14 -0
  61. package/dest/oracle/txe_private_execution_oracle.d.ts +17 -0
  62. package/dest/oracle/txe_private_execution_oracle.d.ts.map +1 -0
  63. package/dest/oracle/txe_private_execution_oracle.js +15 -0
  64. package/dest/rpc_server.d.ts +14 -0
  65. package/dest/rpc_server.d.ts.map +1 -0
  66. package/dest/rpc_server.js +78 -0
  67. package/dest/rpc_translator.d.ts +96 -228
  68. package/dest/rpc_translator.d.ts.map +1 -1
  69. package/dest/rpc_translator.js +815 -612
  70. package/dest/server.bundle.js +3 -0
  71. package/dest/server.bundle.js.map +7 -0
  72. package/dest/state_machine/archiver.d.ts +6 -5
  73. package/dest/state_machine/archiver.d.ts.map +1 -1
  74. package/dest/state_machine/archiver.js +32 -21
  75. package/dest/state_machine/dummy_p2p_client.d.ts +26 -16
  76. package/dest/state_machine/dummy_p2p_client.d.ts.map +1 -1
  77. package/dest/state_machine/dummy_p2p_client.js +44 -20
  78. package/dest/state_machine/global_variable_builder.d.ts +9 -4
  79. package/dest/state_machine/global_variable_builder.d.ts.map +1 -1
  80. package/dest/state_machine/global_variable_builder.js +9 -3
  81. package/dest/state_machine/index.d.ts +10 -6
  82. package/dest/state_machine/index.d.ts.map +1 -1
  83. package/dest/state_machine/index.js +35 -12
  84. package/dest/state_machine/mock_epoch_cache.d.ts +18 -3
  85. package/dest/state_machine/mock_epoch_cache.d.ts.map +1 -1
  86. package/dest/state_machine/mock_epoch_cache.js +33 -2
  87. package/dest/state_machine/synchronizer.d.ts +5 -5
  88. package/dest/state_machine/synchronizer.d.ts.map +1 -1
  89. package/dest/state_machine/synchronizer.js +4 -4
  90. package/dest/txe_session.d.ts +80 -15
  91. package/dest/txe_session.d.ts.map +1 -1
  92. package/dest/txe_session.js +240 -43
  93. package/dest/utils/block_creation.d.ts +1 -1
  94. package/dest/utils/block_creation.d.ts.map +1 -1
  95. package/dest/utils/block_creation.js +3 -1
  96. package/dest/utils/encoding.d.ts +191 -0
  97. package/dest/utils/encoding.d.ts.map +1 -0
  98. package/dest/{util → utils}/encoding.js +7 -2
  99. package/dest/{util → utils}/expected_failure_error.d.ts +1 -1
  100. package/dest/utils/expected_failure_error.d.ts.map +1 -0
  101. package/dest/{util → utils}/txe_account_store.d.ts +1 -1
  102. package/dest/utils/txe_account_store.d.ts.map +1 -0
  103. package/dest/utils/txe_artifact_resolver.d.ts +37 -0
  104. package/dest/utils/txe_artifact_resolver.d.ts.map +1 -0
  105. package/dest/utils/txe_artifact_resolver.js +161 -0
  106. package/dest/utils/txe_public_contract_data_source.d.ts +20 -0
  107. package/dest/utils/txe_public_contract_data_source.d.ts.map +1 -0
  108. package/dest/{util → utils}/txe_public_contract_data_source.js +6 -25
  109. package/dest/worker.bundle.js +3 -0
  110. package/dest/worker.bundle.js.map +7 -0
  111. package/dest/worker.d.ts +2 -0
  112. package/dest/worker.d.ts.map +1 -0
  113. package/dest/worker.js +92 -0
  114. package/package.json +38 -21
  115. package/src/bin/check_txe_oracle_version.ts +70 -0
  116. package/src/bin/index.ts +11 -2
  117. package/src/bin/oracle_test_server.ts +51 -0
  118. package/src/constants.ts +10 -0
  119. package/src/dispatcher_pool.ts +316 -0
  120. package/src/index.ts +97 -190
  121. package/src/msgpackr_fr_extension.ts +23 -0
  122. package/src/oracle/interfaces.ts +58 -35
  123. package/src/oracle/test-resolver/fixtures.ts +84 -0
  124. package/src/oracle/test-resolver/index.ts +45 -0
  125. package/src/oracle/test-resolver/resolver.ts +165 -0
  126. package/src/oracle/txe_oracle_public_context.ts +72 -12
  127. package/src/oracle/txe_oracle_registry.ts +401 -0
  128. package/src/oracle/txe_oracle_top_level_context.ts +293 -139
  129. package/src/oracle/txe_oracle_version.ts +17 -0
  130. package/src/oracle/txe_private_execution_oracle.ts +30 -0
  131. package/src/rpc_server.ts +87 -0
  132. package/src/rpc_translator.ts +1000 -995
  133. package/src/state_machine/archiver.ts +44 -20
  134. package/src/state_machine/dummy_p2p_client.ts +70 -32
  135. package/src/state_machine/global_variable_builder.ts +18 -3
  136. package/src/state_machine/index.ts +48 -13
  137. package/src/state_machine/mock_epoch_cache.ts +43 -3
  138. package/src/state_machine/synchronizer.ts +5 -5
  139. package/src/txe_session.ts +356 -96
  140. package/src/utils/block_creation.ts +3 -1
  141. package/src/{util → utils}/encoding.ts +8 -2
  142. package/src/utils/txe_artifact_resolver.ts +217 -0
  143. package/src/{util → utils}/txe_public_contract_data_source.ts +10 -38
  144. package/src/worker.ts +98 -0
  145. package/dest/util/encoding.d.ts +0 -720
  146. package/dest/util/encoding.d.ts.map +0 -1
  147. package/dest/util/expected_failure_error.d.ts.map +0 -1
  148. package/dest/util/txe_account_store.d.ts.map +0 -1
  149. package/dest/util/txe_contract_store.d.ts +0 -12
  150. package/dest/util/txe_contract_store.d.ts.map +0 -1
  151. package/dest/util/txe_contract_store.js +0 -22
  152. package/dest/util/txe_public_contract_data_source.d.ts +0 -21
  153. package/dest/util/txe_public_contract_data_source.d.ts.map +0 -1
  154. package/src/util/txe_contract_store.ts +0 -36
  155. /package/dest/{util → utils}/expected_failure_error.js +0 -0
  156. /package/dest/{util → utils}/txe_account_store.js +0 -0
  157. /package/src/{util → utils}/expected_failure_error.ts +0 -0
  158. /package/src/{util → utils}/txe_account_store.ts +0 -0
@@ -0,0 +1,562 @@
1
+ /* eslint-disable camelcase */ import { GAS_SETTINGS_LENGTH, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_PRIVATE_LOGS_PER_TX, PRIVATE_LOG_SIZE_IN_FIELDS } from '@aztec/constants';
2
+ import { Fr } from '@aztec/foundation/curves/bn254';
3
+ import { withHexPrefix, withoutHexPrefix } from '@aztec/foundation/string';
4
+ import { ARRAY, AZTEC_ADDRESS, BIGINT, BLOCK_NUMBER, BOOL, FIELD, FUNCTION_SELECTOR, OPTION, ORACLE_REGISTRY, STR, U32, makeEntry } from '@aztec/pxe/simulator';
5
+ import { EventSelector } from '@aztec/stdlib/abi';
6
+ import { GasSettings } from '@aztec/stdlib/gas';
7
+ import { MAX_OFFCHAIN_EFFECTS_PER_TXE_QUERY, MAX_OFFCHAIN_EFFECT_LEN, MAX_PRIVATE_EVENTS_PER_TXE_QUERY, MAX_PRIVATE_EVENT_LEN } from '../constants.js';
8
+ const GAS_SETTINGS = {
9
+ serialization: {
10
+ fn: (v)=>v.toFields()
11
+ },
12
+ deserialization: {
13
+ fn: ([reader])=>GasSettings.fromFields(reader.readFieldArray(GAS_SETTINGS_LENGTH)),
14
+ slots: 1
15
+ }
16
+ };
17
+ const PRIVATE_CONTEXT_INPUTS = {
18
+ serialization: {
19
+ fn: (v)=>v.toFields()
20
+ }
21
+ };
22
+ const COMPLETE_ADDRESS = {
23
+ serialization: {
24
+ fn: (v)=>[
25
+ v.address.toField(),
26
+ ...v.publicKeys.toFields()
27
+ ]
28
+ }
29
+ };
30
+ const TXE_TX_EFFECTS = {
31
+ serialization: {
32
+ fn: ({ txHash, noteHashes, nullifiers, privateLogs })=>{
33
+ const emittedLogs = privateLogs.map((log)=>log.getEmittedFields());
34
+ const rawLogStorage = emittedLogs.map((fields)=>fields.concat(Array(PRIVATE_LOG_SIZE_IN_FIELDS - fields.length).fill(Fr.ZERO))).concat(Array(MAX_PRIVATE_LOGS_PER_TX - emittedLogs.length).fill(Array(PRIVATE_LOG_SIZE_IN_FIELDS).fill(Fr.ZERO))).flat();
35
+ const logLengths = emittedLogs.map((fields)=>new Fr(fields.length)).concat(Array(MAX_PRIVATE_LOGS_PER_TX - emittedLogs.length).fill(Fr.ZERO));
36
+ const paddedNoteHashes = noteHashes.concat(Array(MAX_NOTE_HASHES_PER_TX - noteHashes.length).fill(Fr.ZERO));
37
+ const paddedNullifiers = nullifiers.concat(Array(MAX_NULLIFIERS_PER_TX - nullifiers.length).fill(Fr.ZERO));
38
+ return [
39
+ txHash.hash,
40
+ paddedNoteHashes,
41
+ new Fr(noteHashes.length),
42
+ paddedNullifiers,
43
+ new Fr(nullifiers.length),
44
+ rawLogStorage,
45
+ logLengths,
46
+ new Fr(emittedLogs.length)
47
+ ];
48
+ }
49
+ }
50
+ };
51
+ const TXE_OFFCHAIN_EFFECTS = {
52
+ serialization: {
53
+ fn: ({ effects })=>{
54
+ const rawArrayStorage = effects.map((e)=>e.concat(Array(MAX_OFFCHAIN_EFFECT_LEN - e.length).fill(Fr.ZERO))).concat(Array(MAX_OFFCHAIN_EFFECTS_PER_TXE_QUERY - effects.length).fill(Array(MAX_OFFCHAIN_EFFECT_LEN).fill(Fr.ZERO))).flat();
55
+ const effectLengths = effects.map((e)=>new Fr(e.length)).concat(Array(MAX_OFFCHAIN_EFFECTS_PER_TXE_QUERY - effects.length).fill(Fr.ZERO));
56
+ return [
57
+ rawArrayStorage,
58
+ effectLengths,
59
+ new Fr(effects.length)
60
+ ];
61
+ }
62
+ }
63
+ };
64
+ const TXE_CALL_CONTEXT = {
65
+ serialization: {
66
+ fn: ({ txHash, anchorBlockTimestamp })=>{
67
+ const isSome = txHash.isZero() ? 0 : 1;
68
+ return [
69
+ new Fr(isSome),
70
+ txHash,
71
+ new Fr(anchorBlockTimestamp)
72
+ ];
73
+ }
74
+ }
75
+ };
76
+ const CONTRACT_INSTANCE_MEMBER = {
77
+ serialization: {
78
+ fn: ({ member, exists })=>[
79
+ member,
80
+ new Fr(exists)
81
+ ]
82
+ }
83
+ };
84
+ const EVENT_SELECTOR = {
85
+ serialization: {
86
+ fn: (v)=>[
87
+ v.toField()
88
+ ]
89
+ },
90
+ deserialization: {
91
+ fn: ([reader])=>EventSelector.fromField(reader.readField()),
92
+ slots: 1
93
+ }
94
+ };
95
+ const TXE_PRIVATE_EVENTS = {
96
+ serialization: {
97
+ fn: (events)=>{
98
+ const rawArrayStorage = events.map((e)=>e.concat(Array(MAX_PRIVATE_EVENT_LEN - e.length).fill(Fr.ZERO))).concat(Array(MAX_PRIVATE_EVENTS_PER_TXE_QUERY - events.length).fill(Array(MAX_PRIVATE_EVENT_LEN).fill(Fr.ZERO))).flat();
99
+ const eventLengths = events.map((e)=>new Fr(e.length)).concat(Array(MAX_PRIVATE_EVENTS_PER_TXE_QUERY - events.length).fill(Fr.ZERO));
100
+ return [
101
+ rawArrayStorage,
102
+ eventLengths,
103
+ new Fr(events.length)
104
+ ];
105
+ }
106
+ }
107
+ };
108
+ export const TXE_ORACLE_REGISTRY = {
109
+ ...ORACLE_REGISTRY,
110
+ aztec_txe_assertCompatibleOracleVersion: makeEntry({
111
+ params: [
112
+ {
113
+ name: 'major',
114
+ type: U32
115
+ },
116
+ {
117
+ name: 'minor',
118
+ type: U32
119
+ }
120
+ ]
121
+ }),
122
+ aztec_txe_setTopLevelTXEContext: makeEntry(),
123
+ aztec_txe_setPrivateTXEContext: makeEntry({
124
+ params: [
125
+ {
126
+ name: 'contractAddress',
127
+ type: OPTION(AZTEC_ADDRESS)
128
+ },
129
+ {
130
+ name: 'anchorBlockNumber',
131
+ type: OPTION(BLOCK_NUMBER)
132
+ },
133
+ {
134
+ name: 'gasSettings',
135
+ type: GAS_SETTINGS
136
+ }
137
+ ],
138
+ returnType: PRIVATE_CONTEXT_INPUTS
139
+ }),
140
+ aztec_txe_setPublicTXEContext: makeEntry({
141
+ params: [
142
+ {
143
+ name: 'contractAddress',
144
+ type: OPTION(AZTEC_ADDRESS)
145
+ }
146
+ ]
147
+ }),
148
+ aztec_txe_setUtilityTXEContext: makeEntry({
149
+ params: [
150
+ {
151
+ name: 'contractAddress',
152
+ type: OPTION(AZTEC_ADDRESS)
153
+ }
154
+ ]
155
+ }),
156
+ aztec_txe_getDefaultAddress: makeEntry({
157
+ returnType: AZTEC_ADDRESS
158
+ }),
159
+ aztec_txe_getNextBlockNumber: makeEntry({
160
+ returnType: BLOCK_NUMBER
161
+ }),
162
+ aztec_txe_getNextBlockTimestamp: makeEntry({
163
+ returnType: BIGINT
164
+ }),
165
+ aztec_txe_advanceBlocksBy: makeEntry({
166
+ params: [
167
+ {
168
+ name: 'blocks',
169
+ type: U32
170
+ }
171
+ ]
172
+ }),
173
+ aztec_txe_advanceTimestampBy: makeEntry({
174
+ params: [
175
+ {
176
+ name: 'duration',
177
+ type: BIGINT
178
+ }
179
+ ]
180
+ }),
181
+ aztec_txe_deploy: makeEntry({
182
+ params: [
183
+ {
184
+ name: 'contractPath',
185
+ type: STR
186
+ },
187
+ {
188
+ name: 'initializer',
189
+ type: STR
190
+ },
191
+ {
192
+ name: 'argsLength',
193
+ type: U32
194
+ },
195
+ {
196
+ name: 'args',
197
+ type: ARRAY(FIELD)
198
+ },
199
+ {
200
+ name: 'secret',
201
+ type: FIELD
202
+ },
203
+ {
204
+ name: 'salt',
205
+ type: FIELD
206
+ },
207
+ {
208
+ name: 'deployer',
209
+ type: AZTEC_ADDRESS
210
+ }
211
+ ],
212
+ returnType: ARRAY(FIELD)
213
+ }),
214
+ aztec_txe_createAccount: makeEntry({
215
+ params: [
216
+ {
217
+ name: 'secret',
218
+ type: FIELD
219
+ }
220
+ ],
221
+ returnType: COMPLETE_ADDRESS
222
+ }),
223
+ aztec_txe_addAccount: makeEntry({
224
+ params: [
225
+ {
226
+ name: 'secret',
227
+ type: FIELD
228
+ }
229
+ ],
230
+ returnType: COMPLETE_ADDRESS
231
+ }),
232
+ aztec_txe_addAuthWitness: makeEntry({
233
+ params: [
234
+ {
235
+ name: 'address',
236
+ type: AZTEC_ADDRESS
237
+ },
238
+ {
239
+ name: 'messageHash',
240
+ type: FIELD
241
+ }
242
+ ]
243
+ }),
244
+ aztec_txe_getLastBlockTimestamp: makeEntry({
245
+ returnType: BIGINT
246
+ }),
247
+ aztec_txe_getLastTxEffects: makeEntry({
248
+ returnType: TXE_TX_EFFECTS
249
+ }),
250
+ aztec_txe_getLastCallOffchainEffects: makeEntry({
251
+ returnType: TXE_OFFCHAIN_EFFECTS
252
+ }),
253
+ aztec_txe_getLastCallContext: makeEntry({
254
+ returnType: TXE_CALL_CONTEXT
255
+ }),
256
+ aztec_txe_getPrivateEvents: makeEntry({
257
+ params: [
258
+ {
259
+ name: 'selector',
260
+ type: EVENT_SELECTOR
261
+ },
262
+ {
263
+ name: 'contractAddress',
264
+ type: AZTEC_ADDRESS
265
+ },
266
+ {
267
+ name: 'scope',
268
+ type: AZTEC_ADDRESS
269
+ }
270
+ ],
271
+ returnType: TXE_PRIVATE_EVENTS
272
+ }),
273
+ aztec_txe_privateCallNewFlow: makeEntry({
274
+ params: [
275
+ {
276
+ name: 'from',
277
+ type: OPTION(AZTEC_ADDRESS)
278
+ },
279
+ {
280
+ name: 'targetContractAddress',
281
+ type: AZTEC_ADDRESS
282
+ },
283
+ {
284
+ name: 'functionSelector',
285
+ type: FUNCTION_SELECTOR
286
+ },
287
+ {
288
+ name: 'args',
289
+ type: ARRAY(FIELD)
290
+ },
291
+ {
292
+ name: 'argsHash',
293
+ type: FIELD
294
+ },
295
+ {
296
+ name: 'isStaticCall',
297
+ type: BOOL
298
+ },
299
+ {
300
+ name: 'additionalScopes',
301
+ type: ARRAY(AZTEC_ADDRESS)
302
+ },
303
+ {
304
+ name: 'authorizedUtilityCallTargets',
305
+ type: ARRAY(AZTEC_ADDRESS)
306
+ },
307
+ {
308
+ name: 'gasSettings',
309
+ type: GAS_SETTINGS
310
+ }
311
+ ],
312
+ returnType: ARRAY(FIELD)
313
+ }),
314
+ aztec_txe_executeUtilityFunction: makeEntry({
315
+ params: [
316
+ {
317
+ name: 'targetContractAddress',
318
+ type: AZTEC_ADDRESS
319
+ },
320
+ {
321
+ name: 'functionSelector',
322
+ type: FUNCTION_SELECTOR
323
+ },
324
+ {
325
+ name: 'args',
326
+ type: ARRAY(FIELD)
327
+ },
328
+ {
329
+ name: 'authorizedUtilityCallTargets',
330
+ type: ARRAY(AZTEC_ADDRESS)
331
+ }
332
+ ],
333
+ returnType: ARRAY(FIELD)
334
+ }),
335
+ aztec_txe_publicCallNewFlow: makeEntry({
336
+ params: [
337
+ {
338
+ name: 'from',
339
+ type: OPTION(AZTEC_ADDRESS)
340
+ },
341
+ {
342
+ name: 'address',
343
+ type: AZTEC_ADDRESS
344
+ },
345
+ {
346
+ name: 'calldata',
347
+ type: ARRAY(FIELD)
348
+ },
349
+ {
350
+ name: 'isStaticCall',
351
+ type: BOOL
352
+ },
353
+ {
354
+ name: 'gasSettings',
355
+ type: GAS_SETTINGS
356
+ }
357
+ ],
358
+ returnType: ARRAY(FIELD)
359
+ }),
360
+ aztec_avm_address: makeEntry({
361
+ returnType: AZTEC_ADDRESS
362
+ }),
363
+ aztec_avm_sender: makeEntry({
364
+ returnType: AZTEC_ADDRESS
365
+ }),
366
+ aztec_avm_blockNumber: makeEntry({
367
+ returnType: BLOCK_NUMBER
368
+ }),
369
+ aztec_avm_timestamp: makeEntry({
370
+ returnType: BIGINT
371
+ }),
372
+ aztec_avm_isStaticCall: makeEntry({
373
+ returnType: BOOL
374
+ }),
375
+ aztec_avm_chainId: makeEntry({
376
+ returnType: FIELD
377
+ }),
378
+ aztec_avm_version: makeEntry({
379
+ returnType: FIELD
380
+ }),
381
+ aztec_avm_emitNullifier: makeEntry({
382
+ params: [
383
+ {
384
+ name: 'nullifier',
385
+ type: FIELD
386
+ }
387
+ ]
388
+ }),
389
+ aztec_avm_emitNoteHash: makeEntry({
390
+ params: [
391
+ {
392
+ name: 'noteHash',
393
+ type: FIELD
394
+ }
395
+ ]
396
+ }),
397
+ aztec_avm_nullifierExists: makeEntry({
398
+ params: [
399
+ {
400
+ name: 'siloedNullifier',
401
+ type: FIELD
402
+ }
403
+ ],
404
+ returnType: BOOL
405
+ }),
406
+ aztec_avm_storageRead: makeEntry({
407
+ params: [
408
+ {
409
+ name: 'slot',
410
+ type: FIELD
411
+ },
412
+ {
413
+ name: 'contractAddress',
414
+ type: AZTEC_ADDRESS
415
+ }
416
+ ],
417
+ returnType: FIELD
418
+ }),
419
+ aztec_avm_storageWrite: makeEntry({
420
+ params: [
421
+ {
422
+ name: 'slot',
423
+ type: FIELD
424
+ },
425
+ {
426
+ name: 'value',
427
+ type: FIELD
428
+ }
429
+ ]
430
+ }),
431
+ aztec_avm_emitPublicLog: makeEntry({
432
+ params: [
433
+ {
434
+ name: 'message',
435
+ type: ARRAY(FIELD)
436
+ }
437
+ ]
438
+ }),
439
+ aztec_avm_returndataSize: makeEntry({
440
+ returnType: FIELD
441
+ }),
442
+ aztec_avm_returndataCopy: makeEntry({
443
+ params: [
444
+ {
445
+ name: 'rdOffset',
446
+ type: U32
447
+ },
448
+ {
449
+ name: 'copySize',
450
+ type: U32
451
+ }
452
+ ],
453
+ returnType: ARRAY(FIELD)
454
+ }),
455
+ aztec_avm_call: makeEntry({
456
+ params: [
457
+ {
458
+ name: 'l2Gas',
459
+ type: U32
460
+ },
461
+ {
462
+ name: 'daGas',
463
+ type: U32
464
+ },
465
+ {
466
+ name: 'address',
467
+ type: AZTEC_ADDRESS
468
+ },
469
+ {
470
+ name: 'argsLength',
471
+ type: U32
472
+ },
473
+ {
474
+ name: 'args',
475
+ type: ARRAY(FIELD)
476
+ }
477
+ ],
478
+ returnType: ARRAY(FIELD)
479
+ }),
480
+ aztec_avm_staticCall: makeEntry({
481
+ params: [
482
+ {
483
+ name: 'l2Gas',
484
+ type: U32
485
+ },
486
+ {
487
+ name: 'daGas',
488
+ type: U32
489
+ },
490
+ {
491
+ name: 'address',
492
+ type: AZTEC_ADDRESS
493
+ },
494
+ {
495
+ name: 'argsLength',
496
+ type: U32
497
+ },
498
+ {
499
+ name: 'args',
500
+ type: ARRAY(FIELD)
501
+ }
502
+ ],
503
+ returnType: ARRAY(FIELD)
504
+ }),
505
+ aztec_avm_successCopy: makeEntry({
506
+ returnType: FIELD
507
+ }),
508
+ aztec_avm_getContractInstanceDeployer: makeEntry({
509
+ params: [
510
+ {
511
+ name: 'address',
512
+ type: AZTEC_ADDRESS
513
+ }
514
+ ],
515
+ returnType: CONTRACT_INSTANCE_MEMBER
516
+ }),
517
+ aztec_avm_getContractInstanceClassId: makeEntry({
518
+ params: [
519
+ {
520
+ name: 'address',
521
+ type: AZTEC_ADDRESS
522
+ }
523
+ ],
524
+ returnType: CONTRACT_INSTANCE_MEMBER
525
+ }),
526
+ aztec_avm_getContractInstanceInitializationHash: makeEntry({
527
+ params: [
528
+ {
529
+ name: 'address',
530
+ type: AZTEC_ADDRESS
531
+ }
532
+ ],
533
+ returnType: CONTRACT_INSTANCE_MEMBER
534
+ }),
535
+ aztec_avm_getContractInstanceImmutablesHash: makeEntry({
536
+ params: [
537
+ {
538
+ name: 'address',
539
+ type: AZTEC_ADDRESS
540
+ }
541
+ ],
542
+ returnType: CONTRACT_INSTANCE_MEMBER
543
+ })
544
+ };
545
+ /**
546
+ * Deserializes oracle inputs, calls the handler with typed params, serializes the result, and wraps
547
+ * it in a `ForeignCallResult`. Normalizes `ForeignCallArgs` (which may contain bare strings) into
548
+ * `InputSlot[]` (always arrays) before deserialization.
549
+ */ export async function callTxeHandler({ oracle, inputs, handler }) {
550
+ const entry = TXE_ORACLE_REGISTRY[oracle];
551
+ // TXE foreign calls use bare hex strings, but Fr.fromString requires a 0x prefix to parse as hex.
552
+ const normalized = inputs.map((v)=>Array.isArray(v) ? v.map(withHexPrefix) : [
553
+ withHexPrefix(v)
554
+ ]);
555
+ const named = entry.deserializeParams(normalized);
556
+ const positional = named.map((p)=>p.value);
557
+ const result = await handler(positional);
558
+ const outputSlots = entry.serializeReturn(result);
559
+ return {
560
+ values: outputSlots.map((slot)=>Array.isArray(slot) ? slot.map(withoutHexPrefix) : withoutHexPrefix(slot))
561
+ };
562
+ }
@@ -1,17 +1,17 @@
1
1
  import { BlockNumber } from '@aztec/foundation/branded-types';
2
2
  import { Fr } from '@aztec/foundation/curves/bn254';
3
3
  import type { KeyStore } from '@aztec/key-store';
4
- import { AddressStore, CapsuleStore, NoteStore, PrivateEventStore, RecipientTaggingStore, SenderAddressBookStore, SenderTaggingStore } from '@aztec/pxe/server';
4
+ import { AddressStore, CapsuleStore, type ContractStore, NoteStore, PrivateEventStore, RecipientTaggingStore, SenderAddressBookStore, SenderTaggingStore } from '@aztec/pxe/server';
5
5
  import { type IMiscOracle } from '@aztec/pxe/simulator';
6
- import { type ContractArtifact, EventSelector, FunctionSelector } from '@aztec/stdlib/abi';
6
+ import { EventSelector, FunctionSelector } from '@aztec/stdlib/abi';
7
7
  import { AuthWitness } from '@aztec/stdlib/auth-witness';
8
8
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
9
- import { type ContractInstanceWithAddress } from '@aztec/stdlib/contract';
9
+ import { GasSettings } from '@aztec/stdlib/gas';
10
10
  import { TxHash } from '@aztec/stdlib/tx';
11
11
  import type { UInt64 } from '@aztec/stdlib/types';
12
12
  import type { TXEStateMachine } from '../state_machine/index.js';
13
- import type { TXEAccountStore } from '../util/txe_account_store.js';
14
- import type { TXEContractStore } from '../util/txe_contract_store.js';
13
+ import type { TXEAccountStore } from '../utils/txe_account_store.js';
14
+ import type { TXEArtifactResolver } from '../utils/txe_artifact_resolver.js';
15
15
  import type { ITxeExecutionOracle } from './interfaces.js';
16
16
  export declare class TXEOracleTopLevelContext implements IMiscOracle, ITxeExecutionOracle {
17
17
  private stateMachine;
@@ -25,42 +25,61 @@ export declare class TXEOracleTopLevelContext implements IMiscOracle, ITxeExecut
25
25
  private senderAddressBookStore;
26
26
  private capsuleStore;
27
27
  private privateEventStore;
28
- private jobId;
29
28
  private nextBlockTimestamp;
30
29
  private version;
31
30
  private chainId;
32
31
  private authwits;
32
+ private readonly artifactResolver;
33
+ private readonly rootPath;
34
+ private readonly packageName;
33
35
  isMisc: true;
34
36
  isTxe: true;
35
37
  private logger;
36
- constructor(stateMachine: TXEStateMachine, contractStore: TXEContractStore, noteStore: NoteStore, keyStore: KeyStore, addressStore: AddressStore, accountStore: TXEAccountStore, senderTaggingStore: SenderTaggingStore, recipientTaggingStore: RecipientTaggingStore, senderAddressBookStore: SenderAddressBookStore, capsuleStore: CapsuleStore, privateEventStore: PrivateEventStore, jobId: string, nextBlockTimestamp: bigint, version: Fr, chainId: Fr, authwits: Map<string, AuthWitness>);
37
- utilityAssertCompatibleOracleVersion(version: number): void;
38
- utilityGetRandomField(): Fr;
39
- utilityDebugLog(level: number, message: string, fields: Fr[]): void;
40
- txeGetDefaultAddress(): AztecAddress;
41
- txeGetNextBlockNumber(): Promise<BlockNumber>;
42
- txeGetNextBlockTimestamp(): Promise<bigint>;
43
- txeGetLastBlockTimestamp(): Promise<bigint>;
44
- txeGetLastTxEffects(): Promise<{
38
+ constructor(stateMachine: TXEStateMachine, contractStore: ContractStore, noteStore: NoteStore, keyStore: KeyStore, addressStore: AddressStore, accountStore: TXEAccountStore, senderTaggingStore: SenderTaggingStore, recipientTaggingStore: RecipientTaggingStore, senderAddressBookStore: SenderAddressBookStore, capsuleStore: CapsuleStore, privateEventStore: PrivateEventStore, nextBlockTimestamp: bigint, version: Fr, chainId: Fr, authwits: Map<string, AuthWitness>, artifactResolver: TXEArtifactResolver, rootPath: string, packageName: string);
39
+ private contractOracleVersion;
40
+ assertCompatibleOracleVersion(major: number, minor: number): void;
41
+ nonOracleFunctionGetContractOracleVersion(): {
42
+ major: number;
43
+ minor: number;
44
+ } | undefined;
45
+ getRandomField(): Fr;
46
+ log(level: number, message: string, _fieldsSize: number, fields: Fr[]): Promise<void>;
47
+ getDefaultAddress(): AztecAddress;
48
+ getNextBlockNumber(): Promise<BlockNumber>;
49
+ getNextBlockTimestamp(): Promise<bigint>;
50
+ getLastBlockTimestamp(): Promise<bigint>;
51
+ getLastTxEffects(): Promise<{
45
52
  txHash: TxHash;
46
53
  noteHashes: Fr[];
47
54
  nullifiers: Fr[];
55
+ privateLogs: import("@aztec/stdlib/logs").PrivateLog[];
48
56
  }>;
49
- txeGetPrivateEvents(selector: EventSelector, contractAddress: AztecAddress, scope: AztecAddress): Promise<Fr[][]>;
50
- txeAdvanceBlocksBy(blocks: number): Promise<void>;
51
- txeAdvanceTimestampBy(duration: UInt64): void;
52
- txeDeploy(artifact: ContractArtifact, instance: ContractInstanceWithAddress, secret: Fr): Promise<void>;
53
- txeAddAccount(artifact: ContractArtifact, instance: ContractInstanceWithAddress, secret: Fr): Promise<import("@aztec/stdlib/contract").CompleteAddress>;
54
- txeCreateAccount(secret: Fr): Promise<import("@aztec/stdlib/contract").CompleteAddress>;
55
- txeAddAuthWitness(address: AztecAddress, messageHash: Fr): Promise<void>;
57
+ syncContractNonOracleMethod(contractAddress: AztecAddress, scope: AztecAddress, jobId: string): Promise<void>;
58
+ getPrivateEvents(selector: EventSelector, contractAddress: AztecAddress, scope: AztecAddress): Promise<Fr[][]>;
59
+ advanceBlocksBy(blocks: number): Promise<void>;
60
+ advanceTimestampBy(duration: UInt64): void;
61
+ private deploymentNullifier;
62
+ deploy(contractPath: string, initializer: string, args: Fr[], secret: Fr, salt: Fr, deployer: AztecAddress): Promise<Fr[]>;
63
+ /**
64
+ * Mines a single block containing only the deployment nullifiers for the contracts at the given addresses.
65
+ */
66
+ mineDeploymentNullifiers(addresses: AztecAddress[]): Promise<void>;
67
+ addAccount(secret: Fr): Promise<import("@aztec/stdlib/contract").CompleteAddress>;
68
+ private registerContractAndAddAccount;
69
+ createAccount(secret: Fr): Promise<import("@aztec/stdlib/contract").CompleteAddress>;
70
+ addAuthWitness(address: AztecAddress, messageHash: Fr): Promise<void>;
56
71
  mineBlock(options?: {
57
72
  nullifiers?: Fr[];
58
73
  }): Promise<void>;
59
- txePrivateCallNewFlow(from: AztecAddress, targetContractAddress: AztecAddress | undefined, functionSelector: FunctionSelector | undefined, args: Fr[], argsHash?: Fr, isStaticCall?: boolean): Promise<Fr[]>;
60
- txePublicCallNewFlow(from: AztecAddress, targetContractAddress: AztecAddress, calldata: Fr[], isStaticCall: boolean): Promise<Fr[]>;
61
- txeSimulateUtilityFunction(targetContractAddress: AztecAddress, functionSelector: FunctionSelector, args: Fr[]): Promise<Fr[]>;
74
+ privateCallNewFlow(from: AztecAddress | undefined, targetContractAddress: AztecAddress | undefined, functionSelector: FunctionSelector | undefined, args: Fr[], argsHash: Fr | undefined, isStaticCall: boolean | undefined, additionalScopes: AztecAddress[] | undefined, jobId: string, authorizedUtilityCallTargets: AztecAddress[], gasSettings: GasSettings): Promise<{
75
+ returnValues: Fr[];
76
+ offchainEffects: Fr[][];
77
+ }>;
78
+ publicCallNewFlow(from: AztecAddress | undefined, targetContractAddress: AztecAddress, calldata: Fr[], isStaticCall: boolean, gasSettings: GasSettings): Promise<Fr[]>;
79
+ executeUtilityFunction(targetContractAddress: AztecAddress, functionSelector: FunctionSelector, args: Fr[], jobId: string, authorizedUtilityCallTargets: AztecAddress[]): Promise<Fr[]>;
62
80
  private executeUtilityCall;
63
81
  close(): [bigint, Map<string, AuthWitness>];
64
82
  private getLastBlockNumber;
83
+ private buildAuthorizeUtilityCallHook;
65
84
  }
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhlX29yYWNsZV90b3BfbGV2ZWxfY29udGV4dC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29yYWNsZS90eGVfb3JhY2xlX3RvcF9sZXZlbF9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU5RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHcEQsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUNMLFlBQVksRUFDWixZQUFZLEVBQ1osU0FBUyxFQUVULGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLGtCQUFrQixFQUduQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFJTCxLQUFLLFdBQVcsRUFNakIsTUFBTSxzQkFBc0IsQ0FBQztBQWdCOUIsT0FBTyxFQUFFLEtBQUssZ0JBQWdCLEVBQUUsYUFBYSxFQUFnQixnQkFBZ0IsRUFBZ0IsTUFBTSxtQkFBbUIsQ0FBQztBQUN2SCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxLQUFLLDJCQUEyQixFQUF5QixNQUFNLHdCQUF3QixDQUFDO0FBWWpHLE9BQU8sRUFTTCxNQUFNLEVBRVAsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUlsRCxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRSxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixD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
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhlX29yYWNsZV90b3BfbGV2ZWxfY29udGV4dC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29yYWNsZS90eGVfb3JhY2xlX3RvcF9sZXZlbF9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU5RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHcEQsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUNMLFlBQVksRUFFWixZQUFZLEVBQ1osS0FBSyxhQUFhLEVBRWxCLFNBQVMsRUFFVCxpQkFBaUIsRUFDakIscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QixrQkFBa0IsRUFHbkIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBSUwsS0FBSyxXQUFXLEVBTWpCLE1BQU0sc0JBQXNCLENBQUM7QUFnQjlCLE9BQU8sRUFBeUIsYUFBYSxFQUFnQixnQkFBZ0IsRUFBZ0IsTUFBTSxtQkFBbUIsQ0FBQztBQUN2SCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTNELE9BQU8sRUFBZ0IsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFZOUQsT0FBTyxFQVNMLE1BQU0sRUFFUCxNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSWxELE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRWpFLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3JFLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFF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