@aztec/pxe 0.0.1-commit.cd76b27 → 0.0.1-commit.ce4f8c4f2

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 (139) hide show
  1. package/dest/config/index.d.ts +2 -2
  2. package/dest/config/index.d.ts.map +1 -1
  3. package/dest/config/index.js +1 -1
  4. package/dest/contract_function_simulator/contract_function_simulator.d.ts +9 -3
  5. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  6. package/dest/contract_function_simulator/contract_function_simulator.js +33 -11
  7. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +7 -7
  8. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  9. package/dest/contract_function_simulator/execution_tagging_index_cache.js +19 -11
  10. package/dest/contract_function_simulator/index.d.ts +2 -1
  11. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  12. package/dest/contract_function_simulator/index.js +1 -0
  13. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +2 -3
  14. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  15. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +5 -4
  16. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +1 -1
  17. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  18. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +1 -3
  19. package/dest/contract_function_simulator/noir-structs/message_tx_context.d.ts +16 -0
  20. package/dest/contract_function_simulator/noir-structs/message_tx_context.d.ts.map +1 -0
  21. package/dest/contract_function_simulator/noir-structs/message_tx_context.js +57 -0
  22. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +2 -4
  23. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  24. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +3 -5
  25. package/dest/contract_function_simulator/oracle/interfaces.d.ts +50 -45
  26. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  27. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts +9 -0
  28. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts.map +1 -0
  29. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.js +42 -0
  30. package/dest/contract_function_simulator/oracle/oracle.d.ts +45 -44
  31. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  32. package/dest/contract_function_simulator/oracle/oracle.js +163 -94
  33. package/dest/contract_function_simulator/oracle/private_execution.js +5 -3
  34. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +22 -47
  35. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  36. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +40 -80
  37. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +57 -39
  38. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  39. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +138 -63
  40. package/dest/contract_logging.d.ts +22 -0
  41. package/dest/contract_logging.d.ts.map +1 -0
  42. package/dest/contract_logging.js +23 -0
  43. package/dest/contract_sync/contract_sync_service.d.ts +5 -3
  44. package/dest/contract_sync/contract_sync_service.d.ts.map +1 -1
  45. package/dest/contract_sync/contract_sync_service.js +47 -30
  46. package/dest/entrypoints/client/bundle/index.d.ts +2 -1
  47. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  48. package/dest/entrypoints/client/bundle/index.js +1 -0
  49. package/dest/entrypoints/client/lazy/index.d.ts +2 -1
  50. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  51. package/dest/entrypoints/client/lazy/index.js +1 -0
  52. package/dest/logs/log_service.d.ts +1 -1
  53. package/dest/logs/log_service.d.ts.map +1 -1
  54. package/dest/logs/log_service.js +4 -4
  55. package/dest/messages/message_context_service.d.ts +17 -0
  56. package/dest/messages/message_context_service.d.ts.map +1 -0
  57. package/dest/messages/message_context_service.js +36 -0
  58. package/dest/oracle_version.d.ts +2 -2
  59. package/dest/oracle_version.js +3 -3
  60. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +4 -3
  61. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -1
  62. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +125 -64
  63. package/dest/private_kernel/hints/test_utils.d.ts +122 -0
  64. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
  65. package/dest/private_kernel/hints/test_utils.js +203 -0
  66. package/dest/private_kernel/private_kernel_execution_prover.d.ts +1 -1
  67. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  68. package/dest/private_kernel/private_kernel_execution_prover.js +13 -5
  69. package/dest/private_kernel/private_kernel_oracle.d.ts +6 -2
  70. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  71. package/dest/private_kernel/private_kernel_oracle.js +7 -3
  72. package/dest/pxe.d.ts +8 -4
  73. package/dest/pxe.d.ts.map +1 -1
  74. package/dest/pxe.js +55 -33
  75. package/dest/storage/contract_store/contract_store.d.ts +42 -15
  76. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  77. package/dest/storage/contract_store/contract_store.js +140 -64
  78. package/dest/storage/metadata.d.ts +1 -1
  79. package/dest/storage/metadata.js +1 -1
  80. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +6 -6
  81. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
  82. package/dest/storage/tagging_store/sender_tagging_store.d.ts +29 -28
  83. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  84. package/dest/storage/tagging_store/sender_tagging_store.js +141 -115
  85. package/dest/tagging/index.d.ts +3 -3
  86. package/dest/tagging/index.d.ts.map +1 -1
  87. package/dest/tagging/index.js +1 -1
  88. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +4 -5
  89. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -1
  90. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +3 -3
  91. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +6 -7
  92. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -1
  93. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +12 -11
  94. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +4 -8
  95. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  96. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +13 -7
  97. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +4 -3
  98. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
  99. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +20 -10
  100. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +5 -7
  101. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  102. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +36 -24
  103. package/package.json +16 -16
  104. package/src/config/index.ts +1 -1
  105. package/src/contract_function_simulator/contract_function_simulator.ts +51 -20
  106. package/src/contract_function_simulator/execution_tagging_index_cache.ts +19 -14
  107. package/src/contract_function_simulator/index.ts +1 -0
  108. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +8 -5
  109. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +1 -4
  110. package/src/contract_function_simulator/noir-structs/message_tx_context.ts +55 -0
  111. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +3 -6
  112. package/src/contract_function_simulator/oracle/interfaces.ts +54 -54
  113. package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +135 -0
  114. package/src/contract_function_simulator/oracle/oracle.ts +176 -138
  115. package/src/contract_function_simulator/oracle/private_execution.ts +4 -4
  116. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +45 -99
  117. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +200 -80
  118. package/src/contract_logging.ts +39 -0
  119. package/src/contract_sync/contract_sync_service.ts +67 -38
  120. package/src/entrypoints/client/bundle/index.ts +1 -0
  121. package/src/entrypoints/client/lazy/index.ts +1 -0
  122. package/src/logs/log_service.ts +10 -5
  123. package/src/messages/message_context_service.ts +45 -0
  124. package/src/oracle_version.ts +3 -3
  125. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +157 -110
  126. package/src/private_kernel/hints/test_utils.ts +325 -0
  127. package/src/private_kernel/private_kernel_execution_prover.ts +13 -6
  128. package/src/private_kernel/private_kernel_oracle.ts +7 -7
  129. package/src/pxe.ts +74 -34
  130. package/src/storage/contract_store/contract_store.ts +170 -71
  131. package/src/storage/metadata.ts +1 -1
  132. package/src/storage/tagging_store/recipient_tagging_store.ts +9 -5
  133. package/src/storage/tagging_store/sender_tagging_store.ts +185 -138
  134. package/src/tagging/index.ts +2 -2
  135. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +3 -6
  136. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +10 -15
  137. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +23 -10
  138. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +26 -11
  139. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +27 -26
@@ -6,6 +6,7 @@ import { FunctionSelector, NoteSelector } from '@aztec/stdlib/abi';
6
6
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
7
7
  import { BlockHash } from '@aztec/stdlib/block';
8
8
  import { ContractClassLog, ContractClassLogFields } from '@aztec/stdlib/logs';
9
+ import { buildLegacyOracleCallbacks } from './legacy_oracle_mappings.js';
9
10
  import { packAsHintedNote } from './note_packing_utils.js';
10
11
  export class UnavailableOracleError extends Error {
11
12
  constructor(oracleName){
@@ -48,11 +49,11 @@ export class UnavailableOracleError extends Error {
48
49
  ];
49
50
  // Get all the oracle function names
50
51
  const oracleNames = Object.getOwnPropertyNames(Oracle.prototype).filter((name)=>!excludedProps.includes(name));
51
- // Validate oracle names - these must be prefixed with either "private" or "utility" to indicate their scope
52
+ // Validate oracle names - these must be prefixed with either "aztec_prv_" or "aztec_utl_" to indicate their scope
52
53
  // and must correspond to a function on the Oracle class.
53
54
  oracleNames.forEach((name)=>{
54
- if (!name.startsWith('private') && !name.startsWith('utility')) {
55
- throw new Error(`Oracle function "${name}" must be prefixed with either "private" or "utility" to indicate its scope`);
55
+ if (!name.startsWith('aztec_prv_') && !name.startsWith('aztec_utl_')) {
56
+ throw new Error(`Oracle function "${name}" must be prefixed with either "aztec_prv_" or "aztec_utl_" to indicate its scope`);
56
57
  }
57
58
  const method = this[name];
58
59
  if (typeof method !== 'function') {
@@ -60,42 +61,53 @@ export class UnavailableOracleError extends Error {
60
61
  }
61
62
  });
62
63
  // Build callback object and return it
63
- return oracleNames.reduce((acc, name)=>{
64
+ const callback = oracleNames.reduce((acc, name)=>{
64
65
  const method = this[name];
65
66
  acc[name] = method.bind(this);
66
67
  return acc;
67
68
  }, {});
68
- }
69
- utilityAssertCompatibleOracleVersion([version]) {
70
- this.handlerAsMisc().utilityAssertCompatibleOracleVersion(Fr.fromString(version).toNumber());
69
+ return {
70
+ ...callback,
71
+ ...buildLegacyOracleCallbacks(this)
72
+ };
73
+ }
74
+ // eslint-disable-next-line camelcase
75
+ aztec_utl_assertCompatibleOracleVersion([version]) {
76
+ this.handlerAsMisc().assertCompatibleOracleVersion(Fr.fromString(version).toNumber());
71
77
  return Promise.resolve([]);
72
78
  }
73
- utilityGetRandomField() {
74
- const val = this.handlerAsMisc().utilityGetRandomField();
79
+ // eslint-disable-next-line camelcase
80
+ aztec_utl_getRandomField() {
81
+ const val = this.handlerAsMisc().getRandomField();
75
82
  return Promise.resolve([
76
83
  toACVMField(val)
77
84
  ]);
78
85
  }
79
- privateStoreInExecutionCache(values, [hash]) {
80
- this.handlerAsPrivate().privateStoreInExecutionCache(values.map(Fr.fromString), Fr.fromString(hash));
86
+ // eslint-disable-next-line camelcase
87
+ aztec_prv_storeInExecutionCache(values, [hash]) {
88
+ this.handlerAsPrivate().storeInExecutionCache(values.map(Fr.fromString), Fr.fromString(hash));
81
89
  return Promise.resolve([]);
82
90
  }
83
- async privateLoadFromExecutionCache([returnsHash]) {
84
- const values = await this.handlerAsPrivate().privateLoadFromExecutionCache(Fr.fromString(returnsHash));
91
+ // eslint-disable-next-line camelcase
92
+ async aztec_prv_loadFromExecutionCache([returnsHash]) {
93
+ const values = await this.handlerAsPrivate().loadFromExecutionCache(Fr.fromString(returnsHash));
85
94
  return [
86
95
  values.map(toACVMField)
87
96
  ];
88
97
  }
89
- utilityGetUtilityContext() {
90
- const context = this.handlerAsUtility().utilityGetUtilityContext();
98
+ // eslint-disable-next-line camelcase
99
+ aztec_utl_getUtilityContext() {
100
+ const context = this.handlerAsUtility().getUtilityContext();
91
101
  return Promise.resolve(context.toNoirRepresentation());
92
102
  }
93
- async utilityGetKeyValidationRequest([pkMHash]) {
94
- const keyValidationRequest = await this.handlerAsUtility().utilityGetKeyValidationRequest(Fr.fromString(pkMHash));
103
+ // eslint-disable-next-line camelcase
104
+ async aztec_utl_getKeyValidationRequest([pkMHash]) {
105
+ const keyValidationRequest = await this.handlerAsUtility().getKeyValidationRequest(Fr.fromString(pkMHash));
95
106
  return keyValidationRequest.toFields().map(toACVMField);
96
107
  }
97
- async utilityGetContractInstance([address]) {
98
- const instance = await this.handlerAsUtility().utilityGetContractInstance(AztecAddress.fromField(Fr.fromString(address)));
108
+ // eslint-disable-next-line camelcase
109
+ async aztec_utl_getContractInstance([address]) {
110
+ const instance = await this.handlerAsUtility().getContractInstance(AztecAddress.fromField(Fr.fromString(address)));
99
111
  return [
100
112
  instance.salt,
101
113
  instance.deployer,
@@ -104,62 +116,69 @@ export class UnavailableOracleError extends Error {
104
116
  ...instance.publicKeys.toFields()
105
117
  ].map(toACVMField);
106
118
  }
107
- async utilityGetNoteHashMembershipWitness([anchorBlockHash], [noteHash]) {
119
+ // eslint-disable-next-line camelcase
120
+ async aztec_utl_getNoteHashMembershipWitness([anchorBlockHash], [noteHash]) {
108
121
  const parsedAnchorBlockHash = BlockHash.fromString(anchorBlockHash);
109
122
  const parsedNoteHash = Fr.fromString(noteHash);
110
- const witness = await this.handlerAsUtility().utilityGetNoteHashMembershipWitness(parsedAnchorBlockHash, parsedNoteHash);
123
+ const witness = await this.handlerAsUtility().getNoteHashMembershipWitness(parsedAnchorBlockHash, parsedNoteHash);
111
124
  if (!witness) {
112
125
  throw new Error(`Note hash ${noteHash} not found in the note hash tree at anchor block hash ${parsedAnchorBlockHash.toString()}.`);
113
126
  }
114
127
  return witness.toNoirRepresentation();
115
128
  }
116
- async utilityGetBlockHashMembershipWitness([anchorBlockHash], [blockHash]) {
129
+ // eslint-disable-next-line camelcase
130
+ async aztec_utl_getBlockHashMembershipWitness([anchorBlockHash], [blockHash]) {
117
131
  const parsedAnchorBlockHash = BlockHash.fromString(anchorBlockHash);
118
132
  const parsedBlockHash = BlockHash.fromString(blockHash);
119
- const witness = await this.handlerAsUtility().utilityGetBlockHashMembershipWitness(parsedAnchorBlockHash, parsedBlockHash);
133
+ const witness = await this.handlerAsUtility().getBlockHashMembershipWitness(parsedAnchorBlockHash, parsedBlockHash);
120
134
  if (!witness) {
121
135
  throw new Error(`Block hash ${parsedBlockHash.toString()} not found in the archive tree at anchor block ${parsedAnchorBlockHash.toString()}.`);
122
136
  }
123
137
  return witness.toNoirRepresentation();
124
138
  }
125
- async utilityGetNullifierMembershipWitness([blockHash], [nullifier]) {
139
+ // eslint-disable-next-line camelcase
140
+ async aztec_utl_getNullifierMembershipWitness([blockHash], [nullifier]) {
126
141
  const parsedBlockHash = BlockHash.fromString(blockHash);
127
142
  const parsedNullifier = Fr.fromString(nullifier);
128
- const witness = await this.handlerAsUtility().utilityGetNullifierMembershipWitness(parsedBlockHash, parsedNullifier);
143
+ const witness = await this.handlerAsUtility().getNullifierMembershipWitness(parsedBlockHash, parsedNullifier);
129
144
  if (!witness) {
130
145
  throw new Error(`Nullifier witness not found for nullifier ${parsedNullifier} at block hash ${parsedBlockHash.toString()}.`);
131
146
  }
132
147
  return witness.toNoirRepresentation();
133
148
  }
134
- async utilityGetLowNullifierMembershipWitness([blockHash], [nullifier]) {
149
+ // eslint-disable-next-line camelcase
150
+ async aztec_utl_getLowNullifierMembershipWitness([blockHash], [nullifier]) {
135
151
  const parsedBlockHash = BlockHash.fromString(blockHash);
136
152
  const parsedNullifier = Fr.fromString(nullifier);
137
- const witness = await this.handlerAsUtility().utilityGetLowNullifierMembershipWitness(parsedBlockHash, parsedNullifier);
153
+ const witness = await this.handlerAsUtility().getLowNullifierMembershipWitness(parsedBlockHash, parsedNullifier);
138
154
  if (!witness) {
139
155
  throw new Error(`Low nullifier witness not found for nullifier ${parsedNullifier} at block hash ${parsedBlockHash.toString()}.`);
140
156
  }
141
157
  return witness.toNoirRepresentation();
142
158
  }
143
- async utilityGetPublicDataWitness([blockHash], [leafSlot]) {
159
+ // eslint-disable-next-line camelcase
160
+ async aztec_utl_getPublicDataWitness([blockHash], [leafSlot]) {
144
161
  const parsedBlockHash = BlockHash.fromString(blockHash);
145
162
  const parsedLeafSlot = Fr.fromString(leafSlot);
146
- const witness = await this.handlerAsUtility().utilityGetPublicDataWitness(parsedBlockHash, parsedLeafSlot);
163
+ const witness = await this.handlerAsUtility().getPublicDataWitness(parsedBlockHash, parsedLeafSlot);
147
164
  if (!witness) {
148
165
  throw new Error(`Public data witness not found for slot ${parsedLeafSlot} at block hash ${parsedBlockHash.toString()}.`);
149
166
  }
150
167
  return witness.toNoirRepresentation();
151
168
  }
152
- async utilityGetBlockHeader([blockNumber]) {
169
+ // eslint-disable-next-line camelcase
170
+ async aztec_utl_getBlockHeader([blockNumber]) {
153
171
  const parsedBlockNumber = Fr.fromString(blockNumber).toNumber();
154
- const header = await this.handlerAsUtility().utilityGetBlockHeader(BlockNumber(parsedBlockNumber));
172
+ const header = await this.handlerAsUtility().getBlockHeader(BlockNumber(parsedBlockNumber));
155
173
  if (!header) {
156
174
  throw new Error(`Block header not found for block ${parsedBlockNumber}.`);
157
175
  }
158
176
  return header.toFields().map(toACVMField);
159
177
  }
160
- async utilityGetAuthWitness([messageHash]) {
178
+ // eslint-disable-next-line camelcase
179
+ async aztec_utl_getAuthWitness([messageHash]) {
161
180
  const messageHashField = Fr.fromString(messageHash);
162
- const witness = await this.handlerAsUtility().utilityGetAuthWitness(messageHashField);
181
+ const witness = await this.handlerAsUtility().getAuthWitness(messageHashField);
163
182
  if (!witness) {
164
183
  throw new Error(`Unknown auth witness for message hash ${messageHashField}`);
165
184
  }
@@ -167,9 +186,10 @@ export class UnavailableOracleError extends Error {
167
186
  witness.map(toACVMField)
168
187
  ];
169
188
  }
170
- async utilityTryGetPublicKeysAndPartialAddress([address]) {
189
+ // eslint-disable-next-line camelcase
190
+ async aztec_utl_tryGetPublicKeysAndPartialAddress([address]) {
171
191
  const parsedAddress = AztecAddress.fromField(Fr.fromString(address));
172
- const result = await this.handlerAsUtility().utilityTryGetPublicKeysAndPartialAddress(parsedAddress);
192
+ const result = await this.handlerAsUtility().tryGetPublicKeysAndPartialAddress(parsedAddress);
173
193
  // We are going to return a Noir Option struct to represent the possibility of null values. Options are a struct
174
194
  // with two fields: `some` (a boolean) and `value` (a field array in this case).
175
195
  if (result === undefined) {
@@ -189,10 +209,11 @@ export class UnavailableOracleError extends Error {
189
209
  ];
190
210
  }
191
211
  }
192
- async utilityGetNotes([ownerSome], [ownerValue], [storageSlot], [numSelects], selectByIndexes, selectByOffsets, selectByLengths, selectValues, selectComparators, sortByIndexes, sortByOffsets, sortByLengths, sortOrder, [limit], [offset], [status], [maxNotes], [packedHintedNoteLength]) {
212
+ // eslint-disable-next-line camelcase
213
+ async aztec_utl_getNotes([ownerSome], [ownerValue], [storageSlot], [numSelects], selectByIndexes, selectByOffsets, selectByLengths, selectValues, selectComparators, sortByIndexes, sortByOffsets, sortByLengths, sortOrder, [limit], [offset], [status], [maxNotes], [packedHintedNoteLength]) {
193
214
  // Parse Option<AztecAddress>: ownerSome is 0 for None, 1 for Some
194
215
  const owner = Fr.fromString(ownerSome).toNumber() === 1 ? AztecAddress.fromString(ownerValue) : undefined;
195
- const noteDatas = await this.handlerAsUtility().utilityGetNotes(owner, Fr.fromString(storageSlot), +numSelects, selectByIndexes.map((s)=>+s), selectByOffsets.map((s)=>+s), selectByLengths.map((s)=>+s), selectValues.map(Fr.fromString), selectComparators.map((s)=>+s), sortByIndexes.map((s)=>+s), sortByOffsets.map((s)=>+s), sortByLengths.map((s)=>+s), sortOrder.map((s)=>+s), +limit, +offset, +status);
216
+ const noteDatas = await this.handlerAsUtility().getNotes(owner, Fr.fromString(storageSlot), +numSelects, selectByIndexes.map((s)=>+s), selectByOffsets.map((s)=>+s), selectByLengths.map((s)=>+s), selectValues.map(Fr.fromString), selectComparators.map((s)=>+s), sortByIndexes.map((s)=>+s), sortByOffsets.map((s)=>+s), sortByLengths.map((s)=>+s), sortOrder.map((s)=>+s), +limit, +offset, +status);
196
217
  const returnDataAsArrayOfPackedHintedNotes = noteDatas.map((noteData)=>packAsHintedNote({
197
218
  contractAddress: noteData.contractAddress,
198
219
  owner: noteData.owner,
@@ -207,57 +228,67 @@ export class UnavailableOracleError extends Error {
207
228
  // At last we convert the array of arrays to a bounded vec of arrays
208
229
  return arrayOfArraysToBoundedVecOfArrays(returnDataAsArrayOfACVMFieldArrays, +maxNotes, +packedHintedNoteLength);
209
230
  }
210
- privateNotifyCreatedNote([owner], [storageSlot], [randomness], [noteTypeId], note, [noteHash], [counter]) {
211
- this.handlerAsPrivate().privateNotifyCreatedNote(AztecAddress.fromString(owner), Fr.fromString(storageSlot), Fr.fromString(randomness), NoteSelector.fromField(Fr.fromString(noteTypeId)), note.map(Fr.fromString), Fr.fromString(noteHash), +counter);
231
+ // eslint-disable-next-line camelcase
232
+ aztec_prv_notifyCreatedNote([owner], [storageSlot], [randomness], [noteTypeId], note, [noteHash], [counter]) {
233
+ this.handlerAsPrivate().notifyCreatedNote(AztecAddress.fromString(owner), Fr.fromString(storageSlot), Fr.fromString(randomness), NoteSelector.fromField(Fr.fromString(noteTypeId)), note.map(Fr.fromString), Fr.fromString(noteHash), +counter);
212
234
  return Promise.resolve([]);
213
235
  }
214
- async privateNotifyNullifiedNote([innerNullifier], [noteHash], [counter]) {
215
- await this.handlerAsPrivate().privateNotifyNullifiedNote(Fr.fromString(innerNullifier), Fr.fromString(noteHash), +counter);
236
+ // eslint-disable-next-line camelcase
237
+ async aztec_prv_notifyNullifiedNote([innerNullifier], [noteHash], [counter]) {
238
+ await this.handlerAsPrivate().notifyNullifiedNote(Fr.fromString(innerNullifier), Fr.fromString(noteHash), +counter);
216
239
  return [];
217
240
  }
218
- async privateNotifyCreatedNullifier([innerNullifier]) {
219
- await this.handlerAsPrivate().privateNotifyCreatedNullifier(Fr.fromString(innerNullifier));
241
+ // eslint-disable-next-line camelcase
242
+ async aztec_prv_notifyCreatedNullifier([innerNullifier]) {
243
+ await this.handlerAsPrivate().notifyCreatedNullifier(Fr.fromString(innerNullifier));
220
244
  return [];
221
245
  }
222
- async privateIsNullifierPending([innerNullifier], [contractAddress]) {
223
- const isPending = await this.handlerAsPrivate().privateIsNullifierPending(Fr.fromString(innerNullifier), AztecAddress.fromString(contractAddress));
246
+ // eslint-disable-next-line camelcase
247
+ async aztec_prv_isNullifierPending([innerNullifier], [contractAddress]) {
248
+ const isPending = await this.handlerAsPrivate().isNullifierPending(Fr.fromString(innerNullifier), AztecAddress.fromString(contractAddress));
224
249
  return [
225
250
  toACVMField(isPending)
226
251
  ];
227
252
  }
228
- async utilityCheckNullifierExists([innerNullifier]) {
229
- const exists = await this.handlerAsUtility().utilityCheckNullifierExists(Fr.fromString(innerNullifier));
253
+ // eslint-disable-next-line camelcase
254
+ async aztec_utl_checkNullifierExists([innerNullifier]) {
255
+ const exists = await this.handlerAsUtility().checkNullifierExists(Fr.fromString(innerNullifier));
230
256
  return [
231
257
  toACVMField(exists)
232
258
  ];
233
259
  }
234
- async utilityGetL1ToL2MembershipWitness([contractAddress], [messageHash], [secret]) {
235
- const message = await this.handlerAsUtility().utilityGetL1ToL2MembershipWitness(AztecAddress.fromString(contractAddress), Fr.fromString(messageHash), Fr.fromString(secret));
260
+ // eslint-disable-next-line camelcase
261
+ async aztec_utl_getL1ToL2MembershipWitness([contractAddress], [messageHash], [secret]) {
262
+ const message = await this.handlerAsUtility().getL1ToL2MembershipWitness(AztecAddress.fromString(contractAddress), Fr.fromString(messageHash), Fr.fromString(secret));
236
263
  return message.toNoirRepresentation();
237
264
  }
238
- async utilityStorageRead([blockHash], [contractAddress], [startStorageSlot], [numberOfElements]) {
239
- const values = await this.handlerAsUtility().utilityStorageRead(BlockHash.fromString(blockHash), new AztecAddress(Fr.fromString(contractAddress)), Fr.fromString(startStorageSlot), +numberOfElements);
265
+ // eslint-disable-next-line camelcase
266
+ async aztec_utl_storageRead([blockHash], [contractAddress], [startStorageSlot], [numberOfElements]) {
267
+ const values = await this.handlerAsUtility().storageRead(BlockHash.fromString(blockHash), new AztecAddress(Fr.fromString(contractAddress)), Fr.fromString(startStorageSlot), +numberOfElements);
240
268
  return [
241
269
  values.map(toACVMField)
242
270
  ];
243
271
  }
244
- privateNotifyCreatedContractClassLog([contractAddress], message, [length], [counter]) {
272
+ // eslint-disable-next-line camelcase
273
+ aztec_prv_notifyCreatedContractClassLog([contractAddress], message, [length], [counter]) {
245
274
  const logFields = new ContractClassLogFields(message.map(Fr.fromString));
246
275
  const log = new ContractClassLog(new AztecAddress(Fr.fromString(contractAddress)), logFields, +length);
247
- this.handlerAsPrivate().privateNotifyCreatedContractClassLog(log, +counter);
276
+ this.handlerAsPrivate().notifyCreatedContractClassLog(log, +counter);
248
277
  return Promise.resolve([]);
249
278
  }
250
- async utilityLog(level, message, _ignoredFieldsSize, fields) {
279
+ // eslint-disable-next-line camelcase
280
+ async aztec_utl_log(level, message, _ignoredFieldsSize, fields) {
251
281
  const levelFr = Fr.fromString(level[0]);
252
282
  const messageStr = message.map((acvmField)=>String.fromCharCode(Fr.fromString(acvmField).toNumber())).join('');
253
283
  const fieldsFr = fields.map(Fr.fromString);
254
- await this.handlerAsMisc().utilityLog(levelFr.toNumber(), messageStr, fieldsFr);
284
+ await this.handlerAsMisc().log(levelFr.toNumber(), messageStr, fieldsFr);
255
285
  return [];
256
286
  }
257
287
  // This function's name is directly hardcoded in `circuit_recorder.ts`. Don't forget to update it there if you
258
288
  // change the name here.
259
- async privateCallPrivateFunction([contractAddress], [functionSelector], [argsHash], [sideEffectCounter], [isStaticCall]) {
260
- const { endSideEffectCounter, returnsHash } = await this.handlerAsPrivate().privateCallPrivateFunction(AztecAddress.fromField(Fr.fromString(contractAddress)), FunctionSelector.fromField(Fr.fromString(functionSelector)), Fr.fromString(argsHash), Fr.fromString(sideEffectCounter).toNumber(), Fr.fromString(isStaticCall).toBool());
289
+ // eslint-disable-next-line camelcase
290
+ async aztec_prv_callPrivateFunction([contractAddress], [functionSelector], [argsHash], [sideEffectCounter], [isStaticCall]) {
291
+ const { endSideEffectCounter, returnsHash } = await this.handlerAsPrivate().callPrivateFunction(AztecAddress.fromField(Fr.fromString(contractAddress)), FunctionSelector.fromField(Fr.fromString(functionSelector)), Fr.fromString(argsHash), Fr.fromString(sideEffectCounter).toNumber(), Fr.fromString(isStaticCall).toBool());
261
292
  return [
262
293
  [
263
294
  endSideEffectCounter,
@@ -265,48 +296,58 @@ export class UnavailableOracleError extends Error {
265
296
  ].map(toACVMField)
266
297
  ];
267
298
  }
268
- async privateNotifyEnqueuedPublicFunctionCall([contractAddress], [calldataHash], [sideEffectCounter], [isStaticCall]) {
269
- await this.handlerAsPrivate().privateNotifyEnqueuedPublicFunctionCall(AztecAddress.fromString(contractAddress), Fr.fromString(calldataHash), Fr.fromString(sideEffectCounter).toNumber(), Fr.fromString(isStaticCall).toBool());
270
- return [];
271
- }
272
- async privateNotifySetPublicTeardownFunctionCall([contractAddress], [calldataHash], [sideEffectCounter], [isStaticCall]) {
273
- await this.handlerAsPrivate().privateNotifySetPublicTeardownFunctionCall(AztecAddress.fromString(contractAddress), Fr.fromString(calldataHash), Fr.fromString(sideEffectCounter).toNumber(), Fr.fromString(isStaticCall).toBool());
299
+ // eslint-disable-next-line camelcase
300
+ async aztec_prv_validatePublicCalldata([calldataHash]) {
301
+ await this.handlerAsPrivate().validatePublicCalldata(Fr.fromString(calldataHash));
274
302
  return [];
275
303
  }
276
- async privateNotifySetMinRevertibleSideEffectCounter([minRevertibleSideEffectCounter]) {
277
- await this.handlerAsPrivate().privateNotifySetMinRevertibleSideEffectCounter(Fr.fromString(minRevertibleSideEffectCounter).toNumber());
304
+ // eslint-disable-next-line camelcase
305
+ async aztec_prv_notifyRevertiblePhaseStart([minRevertibleSideEffectCounter]) {
306
+ await this.handlerAsPrivate().notifyRevertiblePhaseStart(Fr.fromString(minRevertibleSideEffectCounter).toNumber());
278
307
  return Promise.resolve([]);
279
308
  }
280
- async privateIsSideEffectCounterRevertible([sideEffectCounter]) {
281
- const isRevertible = await this.handlerAsPrivate().privateIsSideEffectCounterRevertible(Fr.fromString(sideEffectCounter).toNumber());
309
+ // eslint-disable-next-line camelcase
310
+ async aztec_prv_inRevertiblePhase([sideEffectCounter]) {
311
+ const isRevertible = await this.handlerAsPrivate().inRevertiblePhase(Fr.fromString(sideEffectCounter).toNumber());
282
312
  return Promise.resolve([
283
313
  toACVMField(isRevertible)
284
314
  ]);
285
315
  }
286
- async privateGetNextAppTagAsSender([sender], [recipient]) {
287
- const tag = await this.handlerAsPrivate().privateGetNextAppTagAsSender(AztecAddress.fromString(sender), AztecAddress.fromString(recipient));
316
+ // eslint-disable-next-line camelcase
317
+ async aztec_prv_getNextAppTagAsSender([sender], [recipient]) {
318
+ const tag = await this.handlerAsPrivate().getNextAppTagAsSender(AztecAddress.fromString(sender), AztecAddress.fromString(recipient));
288
319
  return [
289
320
  toACVMField(tag.value)
290
321
  ];
291
322
  }
292
- async utilityFetchTaggedLogs([pendingTaggedLogArrayBaseSlot]) {
293
- await this.handlerAsUtility().utilityFetchTaggedLogs(Fr.fromString(pendingTaggedLogArrayBaseSlot));
323
+ // eslint-disable-next-line camelcase
324
+ async aztec_utl_fetchTaggedLogs([pendingTaggedLogArrayBaseSlot]) {
325
+ await this.handlerAsUtility().fetchTaggedLogs(Fr.fromString(pendingTaggedLogArrayBaseSlot));
294
326
  return [];
295
327
  }
296
- async utilityValidateAndStoreEnqueuedNotesAndEvents([contractAddress], [noteValidationRequestsArrayBaseSlot], [eventValidationRequestsArrayBaseSlot]) {
297
- await this.handlerAsUtility().utilityValidateAndStoreEnqueuedNotesAndEvents(AztecAddress.fromString(contractAddress), Fr.fromString(noteValidationRequestsArrayBaseSlot), Fr.fromString(eventValidationRequestsArrayBaseSlot));
328
+ // eslint-disable-next-line camelcase
329
+ async aztec_utl_validateAndStoreEnqueuedNotesAndEvents([contractAddress], [noteValidationRequestsArrayBaseSlot], [eventValidationRequestsArrayBaseSlot], [maxNotePackedLen], [maxEventSerializedLen]) {
330
+ await this.handlerAsUtility().validateAndStoreEnqueuedNotesAndEvents(AztecAddress.fromString(contractAddress), Fr.fromString(noteValidationRequestsArrayBaseSlot), Fr.fromString(eventValidationRequestsArrayBaseSlot), Fr.fromString(maxNotePackedLen).toNumber(), Fr.fromString(maxEventSerializedLen).toNumber());
298
331
  return [];
299
332
  }
300
- async utilityBulkRetrieveLogs([contractAddress], [logRetrievalRequestsArrayBaseSlot], [logRetrievalResponsesArrayBaseSlot]) {
301
- await this.handlerAsUtility().utilityBulkRetrieveLogs(AztecAddress.fromString(contractAddress), Fr.fromString(logRetrievalRequestsArrayBaseSlot), Fr.fromString(logRetrievalResponsesArrayBaseSlot));
333
+ // eslint-disable-next-line camelcase
334
+ async aztec_utl_bulkRetrieveLogs([contractAddress], [logRetrievalRequestsArrayBaseSlot], [logRetrievalResponsesArrayBaseSlot]) {
335
+ await this.handlerAsUtility().bulkRetrieveLogs(AztecAddress.fromString(contractAddress), Fr.fromString(logRetrievalRequestsArrayBaseSlot), Fr.fromString(logRetrievalResponsesArrayBaseSlot));
302
336
  return [];
303
337
  }
304
- async utilityStoreCapsule([contractAddress], [slot], capsule) {
305
- await this.handlerAsUtility().utilityStoreCapsule(AztecAddress.fromField(Fr.fromString(contractAddress)), Fr.fromString(slot), capsule.map(Fr.fromString));
338
+ // eslint-disable-next-line camelcase
339
+ async aztec_utl_utilityResolveMessageContexts([contractAddress], [messageContextRequestsArrayBaseSlot], [messageContextResponsesArrayBaseSlot]) {
340
+ await this.handlerAsUtility().utilityResolveMessageContexts(AztecAddress.fromString(contractAddress), Fr.fromString(messageContextRequestsArrayBaseSlot), Fr.fromString(messageContextResponsesArrayBaseSlot));
306
341
  return [];
307
342
  }
308
- async utilityLoadCapsule([contractAddress], [slot], [tSize]) {
309
- const values = await this.handlerAsUtility().utilityLoadCapsule(AztecAddress.fromField(Fr.fromString(contractAddress)), Fr.fromString(slot));
343
+ // eslint-disable-next-line camelcase
344
+ async aztec_utl_storeCapsule([contractAddress], [slot], capsule) {
345
+ await this.handlerAsUtility().storeCapsule(AztecAddress.fromField(Fr.fromString(contractAddress)), Fr.fromString(slot), capsule.map(Fr.fromString));
346
+ return [];
347
+ }
348
+ // eslint-disable-next-line camelcase
349
+ async aztec_utl_loadCapsule([contractAddress], [slot], [tSize]) {
350
+ const values = await this.handlerAsUtility().loadCapsule(AztecAddress.fromField(Fr.fromString(contractAddress)), Fr.fromString(slot));
310
351
  // We are going to return a Noir Option struct to represent the possibility of null values. Options are a struct
311
352
  // with two fields: `some` (a boolean) and `value` (a field array in this case).
312
353
  if (values === null) {
@@ -323,35 +364,62 @@ export class UnavailableOracleError extends Error {
323
364
  ];
324
365
  }
325
366
  }
326
- async utilityDeleteCapsule([contractAddress], [slot]) {
327
- await this.handlerAsUtility().utilityDeleteCapsule(AztecAddress.fromField(Fr.fromString(contractAddress)), Fr.fromString(slot));
367
+ // eslint-disable-next-line camelcase
368
+ async aztec_utl_deleteCapsule([contractAddress], [slot]) {
369
+ await this.handlerAsUtility().deleteCapsule(AztecAddress.fromField(Fr.fromString(contractAddress)), Fr.fromString(slot));
328
370
  return [];
329
371
  }
330
- async utilityCopyCapsule([contractAddress], [srcSlot], [dstSlot], [numEntries]) {
331
- await this.handlerAsUtility().utilityCopyCapsule(AztecAddress.fromField(Fr.fromString(contractAddress)), Fr.fromString(srcSlot), Fr.fromString(dstSlot), Fr.fromString(numEntries).toNumber());
372
+ // eslint-disable-next-line camelcase
373
+ async aztec_utl_copyCapsule([contractAddress], [srcSlot], [dstSlot], [numEntries]) {
374
+ await this.handlerAsUtility().copyCapsule(AztecAddress.fromField(Fr.fromString(contractAddress)), Fr.fromString(srcSlot), Fr.fromString(dstSlot), Fr.fromString(numEntries).toNumber());
332
375
  return [];
333
376
  }
334
- async utilityAes128Decrypt(ciphertextBVecStorage, [ciphertextLength], iv, symKey) {
377
+ // eslint-disable-next-line camelcase
378
+ async aztec_utl_tryAes128Decrypt(ciphertextBVecStorage, [ciphertextLength], iv, symKey) {
335
379
  const ciphertext = fromUintBoundedVec(ciphertextBVecStorage, ciphertextLength, 8);
336
380
  const ivBuffer = fromUintArray(iv, 8);
337
381
  const symKeyBuffer = fromUintArray(symKey, 8);
338
- const plaintext = await this.handlerAsUtility().utilityAes128Decrypt(ciphertext, ivBuffer, symKeyBuffer);
339
- return bufferToBoundedVec(plaintext, ciphertextBVecStorage.length);
382
+ // Noir Option<BoundedVec> is encoded as [is_some: Field, storage: Field[], length: Field].
383
+ try {
384
+ const plaintext = await this.handlerAsUtility().aes128Decrypt(ciphertext, ivBuffer, symKeyBuffer);
385
+ const [storage, length] = bufferToBoundedVec(plaintext, ciphertextBVecStorage.length);
386
+ return [
387
+ toACVMField(1),
388
+ storage,
389
+ length
390
+ ];
391
+ } catch {
392
+ const zeroStorage = Array(ciphertextBVecStorage.length).fill(toACVMField(0));
393
+ return [
394
+ toACVMField(0),
395
+ zeroStorage,
396
+ toACVMField(0)
397
+ ];
398
+ }
340
399
  }
341
- async utilityGetSharedSecret([address], [ephPKField0], [ephPKField1], [ephPKField2]) {
342
- const secret = await this.handlerAsUtility().utilityGetSharedSecret(AztecAddress.fromField(Fr.fromString(address)), Point.fromFields([
400
+ // eslint-disable-next-line camelcase
401
+ async aztec_utl_getSharedSecret([address], [ephPKField0], [ephPKField1], [ephPKField2]) {
402
+ const secret = await this.handlerAsUtility().getSharedSecret(AztecAddress.fromField(Fr.fromString(address)), Point.fromFields([
343
403
  ephPKField0,
344
404
  ephPKField1,
345
405
  ephPKField2
346
406
  ].map(Fr.fromString)));
347
407
  return secret.toFields().map(toACVMField);
348
408
  }
349
- async utilityEmitOffchainEffect(data) {
350
- await this.handlerAsPrivate().utilityEmitOffchainEffect(data.map(Fr.fromString));
409
+ // eslint-disable-next-line camelcase
410
+ aztec_utl_invalidateContractSyncCache([contractAddress], scopes, [scopeCount]) {
411
+ const scopeAddresses = scopes.slice(0, +scopeCount).map((s)=>AztecAddress.fromField(Fr.fromString(s)));
412
+ this.handlerAsUtility().invalidateContractSyncCache(AztecAddress.fromField(Fr.fromString(contractAddress)), scopeAddresses);
413
+ return Promise.resolve([]);
414
+ }
415
+ // eslint-disable-next-line camelcase
416
+ async aztec_utl_emitOffchainEffect(data) {
417
+ await this.handlerAsUtility().emitOffchainEffect(data.map(Fr.fromString));
351
418
  return [];
352
419
  }
353
- async privateGetSenderForTags() {
354
- const sender = await this.handlerAsPrivate().privateGetSenderForTags();
420
+ // eslint-disable-next-line camelcase
421
+ async aztec_prv_getSenderForTags() {
422
+ const sender = await this.handlerAsPrivate().getSenderForTags();
355
423
  // Return [1, address] for Some(address), [0, 0] for None
356
424
  return sender ? [
357
425
  toACVMField(1n),
@@ -361,8 +429,9 @@ export class UnavailableOracleError extends Error {
361
429
  toACVMField(0n)
362
430
  ];
363
431
  }
364
- async privateSetSenderForTags([senderForTags]) {
365
- await this.handlerAsPrivate().privateSetSenderForTags(AztecAddress.fromField(Fr.fromString(senderForTags)));
432
+ // eslint-disable-next-line camelcase
433
+ async aztec_prv_setSenderForTags([senderForTags]) {
434
+ await this.handlerAsPrivate().setSenderForTags(AztecAddress.fromField(Fr.fromString(senderForTags)));
366
435
  return [];
367
436
  }
368
437
  }
@@ -45,11 +45,11 @@ import { Oracle } from './oracle.js';
45
45
  appCircuitName: functionName
46
46
  });
47
47
  const contractClassLogs = privateExecutionOracle.getContractClassLogs();
48
- const rawReturnValues = await privateExecutionOracle.privateLoadFromExecutionCache(publicInputs.returnsHash);
48
+ const rawReturnValues = await privateExecutionOracle.loadFromExecutionCache(publicInputs.returnsHash);
49
49
  const newNotes = privateExecutionOracle.getNewNotes();
50
50
  const noteHashNullifierCounterMap = privateExecutionOracle.getNoteHashNullifierCounterMap();
51
51
  const offchainEffects = privateExecutionOracle.getOffchainEffects();
52
- const preTags = privateExecutionOracle.getUsedPreTags();
52
+ const taggingIndexRanges = privateExecutionOracle.getUsedTaggingIndexRanges();
53
53
  const nestedExecutionResults = privateExecutionOracle.getNestedExecutionResults();
54
54
  let timerSubtractionList = nestedExecutionResults;
55
55
  let witgenTime = duration;
@@ -59,7 +59,9 @@ import { Oracle } from './oracle.js';
59
59
  timerSubtractionList = timerSubtractionList.flatMap((nested)=>nested.nestedExecutionResults ?? []);
60
60
  }
61
61
  log.debug(`Returning from call to ${contractAddress.toString()}:${functionSelector}`);
62
- return new PrivateCallExecutionResult(artifact.bytecode, Buffer.from(artifact.verificationKey, 'base64'), partialWitness, publicInputs, newNotes, noteHashNullifierCounterMap, rawReturnValues, offchainEffects, preTags, nestedExecutionResults, contractClassLogs, {
62
+ return new PrivateCallExecutionResult(artifact.bytecode, Buffer.from(artifact.verificationKey, 'base64'), partialWitness, publicInputs, newNotes, noteHashNullifierCounterMap, rawReturnValues, offchainEffects.map((e)=>({
63
+ data: e.data
64
+ })), taggingIndexRanges, nestedExecutionResults, contractClassLogs, {
63
65
  timings: {
64
66
  witgen: witgenTime,
65
67
  oracles: acirExecutionResult.oracles