@aztec/pxe 0.0.1-commit.18ccd8f0 → 0.0.1-commit.1a421b1a1
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/access_scopes.d.ts +9 -0
- package/dest/access_scopes.d.ts.map +1 -0
- package/dest/access_scopes.js +6 -0
- package/dest/block_synchronizer/block_synchronizer.d.ts +4 -2
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +7 -1
- package/dest/config/index.d.ts +2 -2
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +1 -1
- package/dest/config/package_info.js +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +54 -30
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +177 -73
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +5 -5
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_tagging_index_cache.js +3 -3
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +2 -3
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/event_validation_request.js +5 -4
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +1 -3
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +2 -4
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/note_validation_request.js +3 -5
- package/dest/contract_function_simulator/oracle/interfaces.d.ts +48 -45
- package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.d.ts +43 -44
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +153 -103
- package/dest/contract_function_simulator/oracle/private_execution.js +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +55 -69
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +100 -74
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +77 -51
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +118 -96
- package/dest/contract_logging.d.ts +22 -0
- package/dest/contract_logging.d.ts.map +1 -0
- package/dest/contract_logging.js +23 -0
- package/dest/contract_sync/contract_sync_service.d.ts +43 -0
- package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
- package/dest/contract_sync/contract_sync_service.js +97 -0
- package/dest/contract_sync/helpers.d.ts +29 -0
- package/dest/contract_sync/helpers.d.ts.map +1 -0
- package/dest/contract_sync/{index.js → helpers.js} +13 -12
- package/dest/debug/pxe_debug_utils.d.ts +14 -10
- package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
- package/dest/debug/pxe_debug_utils.js +16 -15
- package/dest/entrypoints/client/bundle/index.d.ts +4 -1
- package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/index.js +3 -0
- package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
- package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/utils.js +11 -2
- package/dest/entrypoints/client/lazy/index.d.ts +4 -1
- package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/index.js +3 -0
- package/dest/entrypoints/client/lazy/utils.d.ts +1 -1
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +11 -2
- package/dest/entrypoints/server/index.d.ts +4 -2
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +3 -1
- package/dest/entrypoints/server/utils.js +9 -1
- package/dest/events/event_service.d.ts +4 -5
- package/dest/events/event_service.d.ts.map +1 -1
- package/dest/events/event_service.js +5 -6
- package/dest/logs/log_service.d.ts +6 -5
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +18 -28
- package/dest/notes/note_service.d.ts +7 -7
- package/dest/notes/note_service.d.ts.map +1 -1
- package/dest/notes/note_service.js +9 -9
- package/dest/notes_filter.d.ts +25 -0
- package/dest/notes_filter.d.ts.map +1 -0
- package/dest/notes_filter.js +4 -0
- package/dest/oracle_version.d.ts +3 -3
- package/dest/oracle_version.d.ts.map +1 -1
- package/dest/oracle_version.js +3 -3
- package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
- package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
- package/dest/private_kernel/hints/{compute_tx_include_by_timestamp.js → compute_tx_expiration_timestamp.js} +12 -12
- package/dest/private_kernel/hints/index.d.ts +1 -1
- package/dest/private_kernel/hints/index.js +1 -1
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +4 -3
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -1
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +129 -68
- package/dest/private_kernel/hints/test_utils.d.ts +122 -0
- package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
- package/dest/private_kernel/hints/test_utils.js +203 -0
- package/dest/private_kernel/private_kernel_execution_prover.d.ts +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.js +19 -11
- package/dest/private_kernel/private_kernel_oracle.d.ts +6 -2
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle.js +7 -3
- package/dest/pxe.d.ts +71 -24
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +100 -64
- package/dest/storage/address_store/address_store.d.ts +1 -1
- package/dest/storage/address_store/address_store.d.ts.map +1 -1
- package/dest/storage/address_store/address_store.js +12 -11
- package/dest/storage/anchor_block_store/anchor_block_store.d.ts +9 -1
- package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -1
- package/dest/storage/anchor_block_store/anchor_block_store.js +8 -1
- package/dest/storage/capsule_store/capsule_store.js +6 -8
- package/dest/storage/contract_store/contract_store.d.ts +42 -15
- package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
- package/dest/storage/contract_store/contract_store.js +157 -72
- package/dest/storage/metadata.d.ts +1 -1
- package/dest/storage/metadata.js +1 -1
- package/dest/storage/note_store/note_store.d.ts +13 -3
- package/dest/storage/note_store/note_store.d.ts.map +1 -1
- package/dest/storage/note_store/note_store.js +173 -131
- package/dest/storage/private_event_store/private_event_store.d.ts +1 -1
- package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
- package/dest/storage/private_event_store/private_event_store.js +126 -101
- package/dest/storage/private_event_store/stored_private_event.js +1 -1
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts +6 -6
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/recipient_tagging_store.js +31 -19
- package/dest/storage/tagging_store/sender_address_book_store.d.ts +1 -1
- package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/sender_address_book_store.js +20 -14
- package/dest/storage/tagging_store/sender_tagging_store.d.ts +5 -5
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/sender_tagging_store.js +184 -114
- package/dest/tagging/get_all_logs_by_tags.d.ts +1 -1
- package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -1
- package/dest/tagging/get_all_logs_by_tags.js +17 -3
- package/dest/tagging/index.d.ts +2 -2
- package/dest/tagging/index.d.ts.map +1 -1
- package/dest/tagging/index.js +1 -1
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +4 -5
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -1
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +7 -7
- package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +2 -2
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +6 -7
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -1
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +12 -11
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +4 -8
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +3 -6
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +4 -7
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +14 -15
- package/package.json +25 -16
- package/src/access_scopes.ts +9 -0
- package/src/block_synchronizer/block_synchronizer.ts +6 -0
- package/src/config/index.ts +1 -1
- package/src/config/package_info.ts +1 -1
- package/src/contract_function_simulator/contract_function_simulator.ts +326 -135
- package/src/contract_function_simulator/execution_tagging_index_cache.ts +5 -5
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +8 -5
- package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +1 -4
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +3 -6
- package/src/contract_function_simulator/oracle/interfaces.ts +54 -60
- package/src/contract_function_simulator/oracle/oracle.ts +158 -141
- package/src/contract_function_simulator/oracle/private_execution.ts +1 -1
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +127 -169
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +171 -109
- package/src/contract_logging.ts +39 -0
- package/src/contract_sync/contract_sync_service.ts +152 -0
- package/src/contract_sync/{index.ts → helpers.ts} +21 -21
- package/src/debug/pxe_debug_utils.ts +48 -18
- package/src/entrypoints/client/bundle/index.ts +3 -0
- package/src/entrypoints/client/bundle/utils.ts +12 -2
- package/src/entrypoints/client/lazy/index.ts +3 -0
- package/src/entrypoints/client/lazy/utils.ts +12 -2
- package/src/entrypoints/server/index.ts +3 -1
- package/src/entrypoints/server/utils.ts +7 -7
- package/src/events/event_service.ts +4 -6
- package/src/logs/log_service.ts +25 -35
- package/src/notes/note_service.ts +9 -10
- package/src/notes_filter.ts +26 -0
- package/src/oracle_version.ts +3 -3
- package/src/private_kernel/hints/{compute_tx_include_by_timestamp.ts → compute_tx_expiration_timestamp.ts} +13 -13
- package/src/private_kernel/hints/index.ts +1 -1
- package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +164 -117
- package/src/private_kernel/hints/test_utils.ts +325 -0
- package/src/private_kernel/private_kernel_execution_prover.ts +19 -12
- package/src/private_kernel/private_kernel_oracle.ts +7 -7
- package/src/pxe.ts +184 -114
- package/src/storage/address_store/address_store.ts +15 -15
- package/src/storage/anchor_block_store/anchor_block_store.ts +8 -0
- package/src/storage/capsule_store/capsule_store.ts +8 -8
- package/src/storage/contract_store/contract_store.ts +186 -76
- package/src/storage/metadata.ts +1 -1
- package/src/storage/note_store/note_store.ts +195 -153
- package/src/storage/private_event_store/private_event_store.ts +151 -128
- package/src/storage/private_event_store/stored_private_event.ts +1 -1
- package/src/storage/tagging_store/recipient_tagging_store.ts +38 -24
- package/src/storage/tagging_store/sender_address_book_store.ts +20 -14
- package/src/storage/tagging_store/sender_tagging_store.ts +214 -130
- package/src/tagging/get_all_logs_by_tags.ts +28 -4
- package/src/tagging/index.ts +1 -1
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +7 -10
- package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
- package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +10 -15
- package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +4 -9
- package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +11 -20
- package/dest/contract_sync/index.d.ts +0 -23
- package/dest/contract_sync/index.d.ts.map +0 -1
- package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +0 -4
- package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts.map +0 -1
|
@@ -69,12 +69,12 @@ export class Oracle {
|
|
|
69
69
|
name => !excludedProps.includes(name as (typeof excludedProps)[number]),
|
|
70
70
|
);
|
|
71
71
|
|
|
72
|
-
// Validate oracle names - these must be prefixed with either "
|
|
72
|
+
// Validate oracle names - these must be prefixed with either "aztec_prv_" or "aztec_utl_" to indicate their scope
|
|
73
73
|
// and must correspond to a function on the Oracle class.
|
|
74
74
|
oracleNames.forEach(name => {
|
|
75
|
-
if (!name.startsWith('
|
|
75
|
+
if (!name.startsWith('aztec_prv_') && !name.startsWith('aztec_utl_')) {
|
|
76
76
|
throw new Error(
|
|
77
|
-
`Oracle function "${name}" must be prefixed with either "
|
|
77
|
+
`Oracle function "${name}" must be prefixed with either "aztec_prv_" or "aztec_utl_" to indicate its scope`,
|
|
78
78
|
);
|
|
79
79
|
}
|
|
80
80
|
|
|
@@ -92,41 +92,46 @@ export class Oracle {
|
|
|
92
92
|
}, {} as ACIRCallback);
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
-
|
|
96
|
-
|
|
95
|
+
// eslint-disable-next-line camelcase
|
|
96
|
+
aztec_utl_assertCompatibleOracleVersion([version]: ACVMField[]) {
|
|
97
|
+
this.handlerAsMisc().assertCompatibleOracleVersion(Fr.fromString(version).toNumber());
|
|
97
98
|
return Promise.resolve([]);
|
|
98
99
|
}
|
|
99
100
|
|
|
100
|
-
|
|
101
|
-
|
|
101
|
+
// eslint-disable-next-line camelcase
|
|
102
|
+
aztec_utl_getRandomField(): Promise<ACVMField[]> {
|
|
103
|
+
const val = this.handlerAsMisc().getRandomField();
|
|
102
104
|
return Promise.resolve([toACVMField(val)]);
|
|
103
105
|
}
|
|
104
106
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
+
// eslint-disable-next-line camelcase
|
|
108
|
+
aztec_prv_storeInExecutionCache(values: ACVMField[], [hash]: ACVMField[]): Promise<ACVMField[]> {
|
|
109
|
+
this.handlerAsPrivate().storeInExecutionCache(values.map(Fr.fromString), Fr.fromString(hash));
|
|
107
110
|
return Promise.resolve([]);
|
|
108
111
|
}
|
|
109
112
|
|
|
110
|
-
|
|
111
|
-
|
|
113
|
+
// eslint-disable-next-line camelcase
|
|
114
|
+
async aztec_prv_loadFromExecutionCache([returnsHash]: ACVMField[]): Promise<ACVMField[][]> {
|
|
115
|
+
const values = await this.handlerAsPrivate().loadFromExecutionCache(Fr.fromString(returnsHash));
|
|
112
116
|
return [values.map(toACVMField)];
|
|
113
117
|
}
|
|
114
118
|
|
|
115
|
-
|
|
116
|
-
|
|
119
|
+
// eslint-disable-next-line camelcase
|
|
120
|
+
aztec_utl_getUtilityContext(): Promise<(ACVMField | ACVMField[])[]> {
|
|
121
|
+
const context = this.handlerAsUtility().getUtilityContext();
|
|
117
122
|
return Promise.resolve(context.toNoirRepresentation());
|
|
118
123
|
}
|
|
119
124
|
|
|
120
|
-
|
|
121
|
-
|
|
125
|
+
// eslint-disable-next-line camelcase
|
|
126
|
+
async aztec_utl_getKeyValidationRequest([pkMHash]: ACVMField[]): Promise<ACVMField[]> {
|
|
127
|
+
const keyValidationRequest = await this.handlerAsUtility().getKeyValidationRequest(Fr.fromString(pkMHash));
|
|
122
128
|
|
|
123
129
|
return keyValidationRequest.toFields().map(toACVMField);
|
|
124
130
|
}
|
|
125
131
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
);
|
|
132
|
+
// eslint-disable-next-line camelcase
|
|
133
|
+
async aztec_utl_getContractInstance([address]: ACVMField[]): Promise<ACVMField[]> {
|
|
134
|
+
const instance = await this.handlerAsUtility().getContractInstance(AztecAddress.fromField(Fr.fromString(address)));
|
|
130
135
|
|
|
131
136
|
return [
|
|
132
137
|
instance.salt,
|
|
@@ -137,45 +142,49 @@ export class Oracle {
|
|
|
137
142
|
].map(toACVMField);
|
|
138
143
|
}
|
|
139
144
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
[
|
|
145
|
+
// eslint-disable-next-line camelcase
|
|
146
|
+
async aztec_utl_getNoteHashMembershipWitness(
|
|
147
|
+
[anchorBlockHash]: ACVMField[],
|
|
148
|
+
[noteHash]: ACVMField[],
|
|
143
149
|
): Promise<(ACVMField | ACVMField[])[]> {
|
|
144
|
-
const
|
|
145
|
-
const
|
|
150
|
+
const parsedAnchorBlockHash = BlockHash.fromString(anchorBlockHash);
|
|
151
|
+
const parsedNoteHash = Fr.fromString(noteHash);
|
|
146
152
|
|
|
147
|
-
const witness = await this.handlerAsUtility().
|
|
153
|
+
const witness = await this.handlerAsUtility().getNoteHashMembershipWitness(parsedAnchorBlockHash, parsedNoteHash);
|
|
148
154
|
if (!witness) {
|
|
149
|
-
throw new Error(
|
|
155
|
+
throw new Error(
|
|
156
|
+
`Note hash ${noteHash} not found in the note hash tree at anchor block hash ${parsedAnchorBlockHash.toString()}.`,
|
|
157
|
+
);
|
|
150
158
|
}
|
|
151
159
|
return witness.toNoirRepresentation();
|
|
152
160
|
}
|
|
153
161
|
|
|
154
|
-
|
|
162
|
+
// eslint-disable-next-line camelcase
|
|
163
|
+
async aztec_utl_getBlockHashMembershipWitness(
|
|
164
|
+
[anchorBlockHash]: ACVMField[],
|
|
155
165
|
[blockHash]: ACVMField[],
|
|
156
|
-
[leafValue]: ACVMField[],
|
|
157
166
|
): Promise<(ACVMField | ACVMField[])[]> {
|
|
167
|
+
const parsedAnchorBlockHash = BlockHash.fromString(anchorBlockHash);
|
|
158
168
|
const parsedBlockHash = BlockHash.fromString(blockHash);
|
|
159
|
-
const parsedLeafValue = Fr.fromString(leafValue);
|
|
160
169
|
|
|
161
|
-
const witness = await this.handlerAsUtility().
|
|
170
|
+
const witness = await this.handlerAsUtility().getBlockHashMembershipWitness(parsedAnchorBlockHash, parsedBlockHash);
|
|
162
171
|
if (!witness) {
|
|
163
|
-
throw new Error(
|
|
172
|
+
throw new Error(
|
|
173
|
+
`Block hash ${parsedBlockHash.toString()} not found in the archive tree at anchor block ${parsedAnchorBlockHash.toString()}.`,
|
|
174
|
+
);
|
|
164
175
|
}
|
|
165
176
|
return witness.toNoirRepresentation();
|
|
166
177
|
}
|
|
167
178
|
|
|
168
|
-
|
|
179
|
+
// eslint-disable-next-line camelcase
|
|
180
|
+
async aztec_utl_getNullifierMembershipWitness(
|
|
169
181
|
[blockHash]: ACVMField[],
|
|
170
182
|
[nullifier]: ACVMField[], // nullifier, we try to find the witness for (to prove inclusion)
|
|
171
183
|
): Promise<(ACVMField | ACVMField[])[]> {
|
|
172
184
|
const parsedBlockHash = BlockHash.fromString(blockHash);
|
|
173
185
|
const parsedNullifier = Fr.fromString(nullifier);
|
|
174
186
|
|
|
175
|
-
const witness = await this.handlerAsUtility().
|
|
176
|
-
parsedBlockHash,
|
|
177
|
-
parsedNullifier,
|
|
178
|
-
);
|
|
187
|
+
const witness = await this.handlerAsUtility().getNullifierMembershipWitness(parsedBlockHash, parsedNullifier);
|
|
179
188
|
if (!witness) {
|
|
180
189
|
throw new Error(
|
|
181
190
|
`Nullifier witness not found for nullifier ${parsedNullifier} at block hash ${parsedBlockHash.toString()}.`,
|
|
@@ -184,17 +193,15 @@ export class Oracle {
|
|
|
184
193
|
return witness.toNoirRepresentation();
|
|
185
194
|
}
|
|
186
195
|
|
|
187
|
-
|
|
196
|
+
// eslint-disable-next-line camelcase
|
|
197
|
+
async aztec_utl_getLowNullifierMembershipWitness(
|
|
188
198
|
[blockHash]: ACVMField[],
|
|
189
199
|
[nullifier]: ACVMField[], // nullifier, we try to find the low nullifier witness for (to prove non-inclusion)
|
|
190
200
|
): Promise<(ACVMField | ACVMField[])[]> {
|
|
191
201
|
const parsedBlockHash = BlockHash.fromString(blockHash);
|
|
192
202
|
const parsedNullifier = Fr.fromString(nullifier);
|
|
193
203
|
|
|
194
|
-
const witness = await this.handlerAsUtility().
|
|
195
|
-
parsedBlockHash,
|
|
196
|
-
parsedNullifier,
|
|
197
|
-
);
|
|
204
|
+
const witness = await this.handlerAsUtility().getLowNullifierMembershipWitness(parsedBlockHash, parsedNullifier);
|
|
198
205
|
if (!witness) {
|
|
199
206
|
throw new Error(
|
|
200
207
|
`Low nullifier witness not found for nullifier ${parsedNullifier} at block hash ${parsedBlockHash.toString()}.`,
|
|
@@ -203,14 +210,15 @@ export class Oracle {
|
|
|
203
210
|
return witness.toNoirRepresentation();
|
|
204
211
|
}
|
|
205
212
|
|
|
206
|
-
|
|
213
|
+
// eslint-disable-next-line camelcase
|
|
214
|
+
async aztec_utl_getPublicDataWitness(
|
|
207
215
|
[blockHash]: ACVMField[],
|
|
208
216
|
[leafSlot]: ACVMField[],
|
|
209
217
|
): Promise<(ACVMField | ACVMField[])[]> {
|
|
210
218
|
const parsedBlockHash = BlockHash.fromString(blockHash);
|
|
211
219
|
const parsedLeafSlot = Fr.fromString(leafSlot);
|
|
212
220
|
|
|
213
|
-
const witness = await this.handlerAsUtility().
|
|
221
|
+
const witness = await this.handlerAsUtility().getPublicDataWitness(parsedBlockHash, parsedLeafSlot);
|
|
214
222
|
if (!witness) {
|
|
215
223
|
throw new Error(
|
|
216
224
|
`Public data witness not found for slot ${parsedLeafSlot} at block hash ${parsedBlockHash.toString()}.`,
|
|
@@ -219,34 +227,45 @@ export class Oracle {
|
|
|
219
227
|
return witness.toNoirRepresentation();
|
|
220
228
|
}
|
|
221
229
|
|
|
222
|
-
|
|
230
|
+
// eslint-disable-next-line camelcase
|
|
231
|
+
async aztec_utl_getBlockHeader([blockNumber]: ACVMField[]): Promise<ACVMField[]> {
|
|
223
232
|
const parsedBlockNumber = Fr.fromString(blockNumber).toNumber();
|
|
224
233
|
|
|
225
|
-
const header = await this.handlerAsUtility().
|
|
234
|
+
const header = await this.handlerAsUtility().getBlockHeader(BlockNumber(parsedBlockNumber));
|
|
226
235
|
if (!header) {
|
|
227
236
|
throw new Error(`Block header not found for block ${parsedBlockNumber}.`);
|
|
228
237
|
}
|
|
229
238
|
return header.toFields().map(toACVMField);
|
|
230
239
|
}
|
|
231
240
|
|
|
232
|
-
|
|
241
|
+
// eslint-disable-next-line camelcase
|
|
242
|
+
async aztec_utl_getAuthWitness([messageHash]: ACVMField[]): Promise<ACVMField[][]> {
|
|
233
243
|
const messageHashField = Fr.fromString(messageHash);
|
|
234
|
-
const witness = await this.handlerAsUtility().
|
|
244
|
+
const witness = await this.handlerAsUtility().getAuthWitness(messageHashField);
|
|
235
245
|
if (!witness) {
|
|
236
246
|
throw new Error(`Unknown auth witness for message hash ${messageHashField}`);
|
|
237
247
|
}
|
|
238
248
|
return [witness.map(toACVMField)];
|
|
239
249
|
}
|
|
240
250
|
|
|
241
|
-
|
|
251
|
+
// eslint-disable-next-line camelcase
|
|
252
|
+
async aztec_utl_tryGetPublicKeysAndPartialAddress([address]: ACVMField[]): Promise<(ACVMField | ACVMField[])[]> {
|
|
242
253
|
const parsedAddress = AztecAddress.fromField(Fr.fromString(address));
|
|
243
|
-
const
|
|
244
|
-
await this.handlerAsUtility().utilityGetPublicKeysAndPartialAddress(parsedAddress);
|
|
254
|
+
const result = await this.handlerAsUtility().tryGetPublicKeysAndPartialAddress(parsedAddress);
|
|
245
255
|
|
|
246
|
-
return
|
|
256
|
+
// We are going to return a Noir Option struct to represent the possibility of null values. Options are a struct
|
|
257
|
+
// with two fields: `some` (a boolean) and `value` (a field array in this case).
|
|
258
|
+
if (result === undefined) {
|
|
259
|
+
// No data was found so we set `some` to 0 and pad `value` with zeros get the correct return size.
|
|
260
|
+
return [toACVMField(0), Array(13).fill(toACVMField(0))];
|
|
261
|
+
} else {
|
|
262
|
+
// Data was found so we set `some` to 1 and return it along with `value`.
|
|
263
|
+
return [toACVMField(1), [...result.publicKeys.toFields(), result.partialAddress].map(toACVMField)];
|
|
264
|
+
}
|
|
247
265
|
}
|
|
248
266
|
|
|
249
|
-
|
|
267
|
+
// eslint-disable-next-line camelcase
|
|
268
|
+
async aztec_utl_getNotes(
|
|
250
269
|
[ownerSome]: ACVMField[],
|
|
251
270
|
[ownerValue]: ACVMField[],
|
|
252
271
|
[storageSlot]: ACVMField[],
|
|
@@ -268,7 +287,7 @@ export class Oracle {
|
|
|
268
287
|
): Promise<(ACVMField | ACVMField[])[]> {
|
|
269
288
|
// Parse Option<AztecAddress>: ownerSome is 0 for None, 1 for Some
|
|
270
289
|
const owner = Fr.fromString(ownerSome).toNumber() === 1 ? AztecAddress.fromString(ownerValue) : undefined;
|
|
271
|
-
const noteDatas = await this.handlerAsUtility().
|
|
290
|
+
const noteDatas = await this.handlerAsUtility().getNotes(
|
|
272
291
|
owner,
|
|
273
292
|
Fr.fromString(storageSlot),
|
|
274
293
|
+numSelects,
|
|
@@ -307,7 +326,8 @@ export class Oracle {
|
|
|
307
326
|
return arrayOfArraysToBoundedVecOfArrays(returnDataAsArrayOfACVMFieldArrays, +maxNotes, +packedHintedNoteLength);
|
|
308
327
|
}
|
|
309
328
|
|
|
310
|
-
|
|
329
|
+
// eslint-disable-next-line camelcase
|
|
330
|
+
aztec_prv_notifyCreatedNote(
|
|
311
331
|
[owner]: ACVMField[],
|
|
312
332
|
[storageSlot]: ACVMField[],
|
|
313
333
|
[randomness]: ACVMField[],
|
|
@@ -316,7 +336,7 @@ export class Oracle {
|
|
|
316
336
|
[noteHash]: ACVMField[],
|
|
317
337
|
[counter]: ACVMField[],
|
|
318
338
|
): Promise<ACVMField[]> {
|
|
319
|
-
this.handlerAsPrivate().
|
|
339
|
+
this.handlerAsPrivate().notifyCreatedNote(
|
|
320
340
|
AztecAddress.fromString(owner),
|
|
321
341
|
Fr.fromString(storageSlot),
|
|
322
342
|
Fr.fromString(randomness),
|
|
@@ -328,43 +348,47 @@ export class Oracle {
|
|
|
328
348
|
return Promise.resolve([]);
|
|
329
349
|
}
|
|
330
350
|
|
|
331
|
-
|
|
351
|
+
// eslint-disable-next-line camelcase
|
|
352
|
+
async aztec_prv_notifyNullifiedNote(
|
|
332
353
|
[innerNullifier]: ACVMField[],
|
|
333
354
|
[noteHash]: ACVMField[],
|
|
334
355
|
[counter]: ACVMField[],
|
|
335
356
|
): Promise<ACVMField[]> {
|
|
336
|
-
await this.handlerAsPrivate().
|
|
337
|
-
Fr.fromString(innerNullifier),
|
|
338
|
-
Fr.fromString(noteHash),
|
|
339
|
-
+counter,
|
|
340
|
-
);
|
|
357
|
+
await this.handlerAsPrivate().notifyNullifiedNote(Fr.fromString(innerNullifier), Fr.fromString(noteHash), +counter);
|
|
341
358
|
return [];
|
|
342
359
|
}
|
|
343
360
|
|
|
344
|
-
|
|
345
|
-
|
|
361
|
+
// eslint-disable-next-line camelcase
|
|
362
|
+
async aztec_prv_notifyCreatedNullifier([innerNullifier]: ACVMField[]): Promise<ACVMField[]> {
|
|
363
|
+
await this.handlerAsPrivate().notifyCreatedNullifier(Fr.fromString(innerNullifier));
|
|
346
364
|
return [];
|
|
347
365
|
}
|
|
348
366
|
|
|
349
|
-
|
|
350
|
-
|
|
367
|
+
// eslint-disable-next-line camelcase
|
|
368
|
+
async aztec_prv_isNullifierPending(
|
|
369
|
+
[innerNullifier]: ACVMField[],
|
|
370
|
+
[contractAddress]: ACVMField[],
|
|
371
|
+
): Promise<ACVMField[]> {
|
|
372
|
+
const isPending = await this.handlerAsPrivate().isNullifierPending(
|
|
351
373
|
Fr.fromString(innerNullifier),
|
|
352
374
|
AztecAddress.fromString(contractAddress),
|
|
353
375
|
);
|
|
354
376
|
return [toACVMField(isPending)];
|
|
355
377
|
}
|
|
356
378
|
|
|
357
|
-
|
|
358
|
-
|
|
379
|
+
// eslint-disable-next-line camelcase
|
|
380
|
+
async aztec_utl_checkNullifierExists([innerNullifier]: ACVMField[]): Promise<ACVMField[]> {
|
|
381
|
+
const exists = await this.handlerAsUtility().checkNullifierExists(Fr.fromString(innerNullifier));
|
|
359
382
|
return [toACVMField(exists)];
|
|
360
383
|
}
|
|
361
384
|
|
|
362
|
-
|
|
385
|
+
// eslint-disable-next-line camelcase
|
|
386
|
+
async aztec_utl_getL1ToL2MembershipWitness(
|
|
363
387
|
[contractAddress]: ACVMField[],
|
|
364
388
|
[messageHash]: ACVMField[],
|
|
365
389
|
[secret]: ACVMField[],
|
|
366
390
|
): Promise<(ACVMField | ACVMField[])[]> {
|
|
367
|
-
const message = await this.handlerAsUtility().
|
|
391
|
+
const message = await this.handlerAsUtility().getL1ToL2MembershipWitness(
|
|
368
392
|
AztecAddress.fromString(contractAddress),
|
|
369
393
|
Fr.fromString(messageHash),
|
|
370
394
|
Fr.fromString(secret),
|
|
@@ -372,13 +396,14 @@ export class Oracle {
|
|
|
372
396
|
return message.toNoirRepresentation();
|
|
373
397
|
}
|
|
374
398
|
|
|
375
|
-
|
|
399
|
+
// eslint-disable-next-line camelcase
|
|
400
|
+
async aztec_utl_storageRead(
|
|
376
401
|
[blockHash]: ACVMField[],
|
|
377
402
|
[contractAddress]: ACVMField[],
|
|
378
403
|
[startStorageSlot]: ACVMField[],
|
|
379
404
|
[numberOfElements]: ACVMField[],
|
|
380
405
|
): Promise<ACVMField[][]> {
|
|
381
|
-
const values = await this.handlerAsUtility().
|
|
406
|
+
const values = await this.handlerAsUtility().storageRead(
|
|
382
407
|
BlockHash.fromString(blockHash),
|
|
383
408
|
new AztecAddress(Fr.fromString(contractAddress)),
|
|
384
409
|
Fr.fromString(startStorageSlot),
|
|
@@ -387,7 +412,8 @@ export class Oracle {
|
|
|
387
412
|
return [values.map(toACVMField)];
|
|
388
413
|
}
|
|
389
414
|
|
|
390
|
-
|
|
415
|
+
// eslint-disable-next-line camelcase
|
|
416
|
+
aztec_prv_notifyCreatedContractClassLog(
|
|
391
417
|
[contractAddress]: ACVMField[],
|
|
392
418
|
message: ACVMField[],
|
|
393
419
|
[length]: ACVMField[],
|
|
@@ -396,11 +422,12 @@ export class Oracle {
|
|
|
396
422
|
const logFields = new ContractClassLogFields(message.map(Fr.fromString));
|
|
397
423
|
const log = new ContractClassLog(new AztecAddress(Fr.fromString(contractAddress)), logFields, +length);
|
|
398
424
|
|
|
399
|
-
this.handlerAsPrivate().
|
|
425
|
+
this.handlerAsPrivate().notifyCreatedContractClassLog(log, +counter);
|
|
400
426
|
return Promise.resolve([]);
|
|
401
427
|
}
|
|
402
428
|
|
|
403
|
-
|
|
429
|
+
// eslint-disable-next-line camelcase
|
|
430
|
+
async aztec_utl_log(
|
|
404
431
|
level: ACVMField[],
|
|
405
432
|
message: ACVMField[],
|
|
406
433
|
_ignoredFieldsSize: ACVMField[],
|
|
@@ -409,20 +436,21 @@ export class Oracle {
|
|
|
409
436
|
const levelFr = Fr.fromString(level[0]);
|
|
410
437
|
const messageStr = message.map(acvmField => String.fromCharCode(Fr.fromString(acvmField).toNumber())).join('');
|
|
411
438
|
const fieldsFr = fields.map(Fr.fromString);
|
|
412
|
-
this.handlerAsMisc().
|
|
413
|
-
return
|
|
439
|
+
await this.handlerAsMisc().log(levelFr.toNumber(), messageStr, fieldsFr);
|
|
440
|
+
return [];
|
|
414
441
|
}
|
|
415
442
|
|
|
416
443
|
// This function's name is directly hardcoded in `circuit_recorder.ts`. Don't forget to update it there if you
|
|
417
444
|
// change the name here.
|
|
418
|
-
|
|
445
|
+
// eslint-disable-next-line camelcase
|
|
446
|
+
async aztec_prv_callPrivateFunction(
|
|
419
447
|
[contractAddress]: ACVMField[],
|
|
420
448
|
[functionSelector]: ACVMField[],
|
|
421
449
|
[argsHash]: ACVMField[],
|
|
422
450
|
[sideEffectCounter]: ACVMField[],
|
|
423
451
|
[isStaticCall]: ACVMField[],
|
|
424
452
|
): Promise<ACVMField[][]> {
|
|
425
|
-
const { endSideEffectCounter, returnsHash } = await this.handlerAsPrivate().
|
|
453
|
+
const { endSideEffectCounter, returnsHash } = await this.handlerAsPrivate().callPrivateFunction(
|
|
426
454
|
AztecAddress.fromField(Fr.fromString(contractAddress)),
|
|
427
455
|
FunctionSelector.fromField(Fr.fromString(functionSelector)),
|
|
428
456
|
Fr.fromString(argsHash),
|
|
@@ -432,85 +460,65 @@ export class Oracle {
|
|
|
432
460
|
return [[endSideEffectCounter, returnsHash].map(toACVMField)];
|
|
433
461
|
}
|
|
434
462
|
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
[sideEffectCounter]: ACVMField[],
|
|
439
|
-
[isStaticCall]: ACVMField[],
|
|
440
|
-
): Promise<ACVMField[]> {
|
|
441
|
-
await this.handlerAsPrivate().privateNotifyEnqueuedPublicFunctionCall(
|
|
442
|
-
AztecAddress.fromString(contractAddress),
|
|
443
|
-
Fr.fromString(calldataHash),
|
|
444
|
-
Fr.fromString(sideEffectCounter).toNumber(),
|
|
445
|
-
Fr.fromString(isStaticCall).toBool(),
|
|
446
|
-
);
|
|
447
|
-
return [];
|
|
448
|
-
}
|
|
449
|
-
|
|
450
|
-
async privateNotifySetPublicTeardownFunctionCall(
|
|
451
|
-
[contractAddress]: ACVMField[],
|
|
452
|
-
[calldataHash]: ACVMField[],
|
|
453
|
-
[sideEffectCounter]: ACVMField[],
|
|
454
|
-
[isStaticCall]: ACVMField[],
|
|
455
|
-
): Promise<ACVMField[]> {
|
|
456
|
-
await this.handlerAsPrivate().privateNotifySetPublicTeardownFunctionCall(
|
|
457
|
-
AztecAddress.fromString(contractAddress),
|
|
458
|
-
Fr.fromString(calldataHash),
|
|
459
|
-
Fr.fromString(sideEffectCounter).toNumber(),
|
|
460
|
-
Fr.fromString(isStaticCall).toBool(),
|
|
461
|
-
);
|
|
463
|
+
// eslint-disable-next-line camelcase
|
|
464
|
+
async aztec_prv_validatePublicCalldata([calldataHash]: ACVMField[]): Promise<ACVMField[]> {
|
|
465
|
+
await this.handlerAsPrivate().validatePublicCalldata(Fr.fromString(calldataHash));
|
|
462
466
|
return [];
|
|
463
467
|
}
|
|
464
468
|
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
await this.handlerAsPrivate().privateNotifySetMinRevertibleSideEffectCounter(
|
|
469
|
-
Fr.fromString(minRevertibleSideEffectCounter).toNumber(),
|
|
470
|
-
);
|
|
469
|
+
// eslint-disable-next-line camelcase
|
|
470
|
+
async aztec_prv_notifyRevertiblePhaseStart([minRevertibleSideEffectCounter]: ACVMField[]): Promise<ACVMField[]> {
|
|
471
|
+
await this.handlerAsPrivate().notifyRevertiblePhaseStart(Fr.fromString(minRevertibleSideEffectCounter).toNumber());
|
|
471
472
|
return Promise.resolve([]);
|
|
472
473
|
}
|
|
473
474
|
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
);
|
|
475
|
+
// eslint-disable-next-line camelcase
|
|
476
|
+
async aztec_prv_inRevertiblePhase([sideEffectCounter]: ACVMField[]): Promise<ACVMField[]> {
|
|
477
|
+
const isRevertible = await this.handlerAsPrivate().inRevertiblePhase(Fr.fromString(sideEffectCounter).toNumber());
|
|
478
478
|
return Promise.resolve([toACVMField(isRevertible)]);
|
|
479
479
|
}
|
|
480
480
|
|
|
481
|
-
|
|
482
|
-
|
|
481
|
+
// eslint-disable-next-line camelcase
|
|
482
|
+
async aztec_prv_getNextAppTagAsSender([sender]: ACVMField[], [recipient]: ACVMField[]): Promise<ACVMField[]> {
|
|
483
|
+
const tag = await this.handlerAsPrivate().getNextAppTagAsSender(
|
|
483
484
|
AztecAddress.fromString(sender),
|
|
484
485
|
AztecAddress.fromString(recipient),
|
|
485
486
|
);
|
|
486
487
|
return [toACVMField(tag.value)];
|
|
487
488
|
}
|
|
488
489
|
|
|
489
|
-
|
|
490
|
-
|
|
490
|
+
// eslint-disable-next-line camelcase
|
|
491
|
+
async aztec_utl_fetchTaggedLogs([pendingTaggedLogArrayBaseSlot]: ACVMField[]): Promise<ACVMField[]> {
|
|
492
|
+
await this.handlerAsUtility().fetchTaggedLogs(Fr.fromString(pendingTaggedLogArrayBaseSlot));
|
|
491
493
|
return [];
|
|
492
494
|
}
|
|
493
495
|
|
|
494
|
-
|
|
496
|
+
// eslint-disable-next-line camelcase
|
|
497
|
+
async aztec_utl_validateAndStoreEnqueuedNotesAndEvents(
|
|
495
498
|
[contractAddress]: ACVMField[],
|
|
496
499
|
[noteValidationRequestsArrayBaseSlot]: ACVMField[],
|
|
497
500
|
[eventValidationRequestsArrayBaseSlot]: ACVMField[],
|
|
501
|
+
[maxNotePackedLen]: ACVMField[],
|
|
502
|
+
[maxEventSerializedLen]: ACVMField[],
|
|
498
503
|
): Promise<ACVMField[]> {
|
|
499
|
-
await this.handlerAsUtility().
|
|
504
|
+
await this.handlerAsUtility().validateAndStoreEnqueuedNotesAndEvents(
|
|
500
505
|
AztecAddress.fromString(contractAddress),
|
|
501
506
|
Fr.fromString(noteValidationRequestsArrayBaseSlot),
|
|
502
507
|
Fr.fromString(eventValidationRequestsArrayBaseSlot),
|
|
508
|
+
Fr.fromString(maxNotePackedLen).toNumber(),
|
|
509
|
+
Fr.fromString(maxEventSerializedLen).toNumber(),
|
|
503
510
|
);
|
|
504
511
|
|
|
505
512
|
return [];
|
|
506
513
|
}
|
|
507
514
|
|
|
508
|
-
|
|
515
|
+
// eslint-disable-next-line camelcase
|
|
516
|
+
async aztec_utl_bulkRetrieveLogs(
|
|
509
517
|
[contractAddress]: ACVMField[],
|
|
510
518
|
[logRetrievalRequestsArrayBaseSlot]: ACVMField[],
|
|
511
519
|
[logRetrievalResponsesArrayBaseSlot]: ACVMField[],
|
|
512
520
|
): Promise<ACVMField[]> {
|
|
513
|
-
await this.handlerAsUtility().
|
|
521
|
+
await this.handlerAsUtility().bulkRetrieveLogs(
|
|
514
522
|
AztecAddress.fromString(contractAddress),
|
|
515
523
|
Fr.fromString(logRetrievalRequestsArrayBaseSlot),
|
|
516
524
|
Fr.fromString(logRetrievalResponsesArrayBaseSlot),
|
|
@@ -518,12 +526,13 @@ export class Oracle {
|
|
|
518
526
|
return [];
|
|
519
527
|
}
|
|
520
528
|
|
|
521
|
-
|
|
529
|
+
// eslint-disable-next-line camelcase
|
|
530
|
+
async aztec_utl_storeCapsule(
|
|
522
531
|
[contractAddress]: ACVMField[],
|
|
523
532
|
[slot]: ACVMField[],
|
|
524
533
|
capsule: ACVMField[],
|
|
525
534
|
): Promise<ACVMField[]> {
|
|
526
|
-
await this.handlerAsUtility().
|
|
535
|
+
await this.handlerAsUtility().storeCapsule(
|
|
527
536
|
AztecAddress.fromField(Fr.fromString(contractAddress)),
|
|
528
537
|
Fr.fromString(slot),
|
|
529
538
|
capsule.map(Fr.fromString),
|
|
@@ -531,12 +540,13 @@ export class Oracle {
|
|
|
531
540
|
return [];
|
|
532
541
|
}
|
|
533
542
|
|
|
534
|
-
|
|
543
|
+
// eslint-disable-next-line camelcase
|
|
544
|
+
async aztec_utl_loadCapsule(
|
|
535
545
|
[contractAddress]: ACVMField[],
|
|
536
546
|
[slot]: ACVMField[],
|
|
537
547
|
[tSize]: ACVMField[],
|
|
538
548
|
): Promise<(ACVMField | ACVMField[])[]> {
|
|
539
|
-
const values = await this.handlerAsUtility().
|
|
549
|
+
const values = await this.handlerAsUtility().loadCapsule(
|
|
540
550
|
AztecAddress.fromField(Fr.fromString(contractAddress)),
|
|
541
551
|
Fr.fromString(slot),
|
|
542
552
|
);
|
|
@@ -552,21 +562,23 @@ export class Oracle {
|
|
|
552
562
|
}
|
|
553
563
|
}
|
|
554
564
|
|
|
555
|
-
|
|
556
|
-
|
|
565
|
+
// eslint-disable-next-line camelcase
|
|
566
|
+
async aztec_utl_deleteCapsule([contractAddress]: ACVMField[], [slot]: ACVMField[]): Promise<ACVMField[]> {
|
|
567
|
+
await this.handlerAsUtility().deleteCapsule(
|
|
557
568
|
AztecAddress.fromField(Fr.fromString(contractAddress)),
|
|
558
569
|
Fr.fromString(slot),
|
|
559
570
|
);
|
|
560
571
|
return [];
|
|
561
572
|
}
|
|
562
573
|
|
|
563
|
-
|
|
574
|
+
// eslint-disable-next-line camelcase
|
|
575
|
+
async aztec_utl_copyCapsule(
|
|
564
576
|
[contractAddress]: ACVMField[],
|
|
565
577
|
[srcSlot]: ACVMField[],
|
|
566
578
|
[dstSlot]: ACVMField[],
|
|
567
579
|
[numEntries]: ACVMField[],
|
|
568
580
|
): Promise<ACVMField[]> {
|
|
569
|
-
await this.handlerAsUtility().
|
|
581
|
+
await this.handlerAsUtility().copyCapsule(
|
|
570
582
|
AztecAddress.fromField(Fr.fromString(contractAddress)),
|
|
571
583
|
Fr.fromString(srcSlot),
|
|
572
584
|
Fr.fromString(dstSlot),
|
|
@@ -575,7 +587,8 @@ export class Oracle {
|
|
|
575
587
|
return [];
|
|
576
588
|
}
|
|
577
589
|
|
|
578
|
-
|
|
590
|
+
// eslint-disable-next-line camelcase
|
|
591
|
+
async aztec_utl_aes128Decrypt(
|
|
579
592
|
ciphertextBVecStorage: ACVMField[],
|
|
580
593
|
[ciphertextLength]: ACVMField[],
|
|
581
594
|
iv: ACVMField[],
|
|
@@ -585,36 +598,40 @@ export class Oracle {
|
|
|
585
598
|
const ivBuffer = fromUintArray(iv, 8);
|
|
586
599
|
const symKeyBuffer = fromUintArray(symKey, 8);
|
|
587
600
|
|
|
588
|
-
const plaintext = await this.handlerAsUtility().
|
|
601
|
+
const plaintext = await this.handlerAsUtility().aes128Decrypt(ciphertext, ivBuffer, symKeyBuffer);
|
|
589
602
|
return bufferToBoundedVec(plaintext, ciphertextBVecStorage.length);
|
|
590
603
|
}
|
|
591
604
|
|
|
592
|
-
|
|
605
|
+
// eslint-disable-next-line camelcase
|
|
606
|
+
async aztec_utl_getSharedSecret(
|
|
593
607
|
[address]: ACVMField[],
|
|
594
608
|
[ephPKField0]: ACVMField[],
|
|
595
609
|
[ephPKField1]: ACVMField[],
|
|
596
610
|
[ephPKField2]: ACVMField[],
|
|
597
611
|
): Promise<ACVMField[]> {
|
|
598
|
-
const secret = await this.handlerAsUtility().
|
|
612
|
+
const secret = await this.handlerAsUtility().getSharedSecret(
|
|
599
613
|
AztecAddress.fromField(Fr.fromString(address)),
|
|
600
614
|
Point.fromFields([ephPKField0, ephPKField1, ephPKField2].map(Fr.fromString)),
|
|
601
615
|
);
|
|
602
616
|
return secret.toFields().map(toACVMField);
|
|
603
617
|
}
|
|
604
618
|
|
|
605
|
-
|
|
606
|
-
|
|
619
|
+
// eslint-disable-next-line camelcase
|
|
620
|
+
async aztec_utl_emitOffchainEffect(data: ACVMField[]) {
|
|
621
|
+
await this.handlerAsPrivate().emitOffchainEffect(data.map(Fr.fromString));
|
|
607
622
|
return [];
|
|
608
623
|
}
|
|
609
624
|
|
|
610
|
-
|
|
611
|
-
|
|
625
|
+
// eslint-disable-next-line camelcase
|
|
626
|
+
async aztec_prv_getSenderForTags(): Promise<ACVMField[]> {
|
|
627
|
+
const sender = await this.handlerAsPrivate().getSenderForTags();
|
|
612
628
|
// Return [1, address] for Some(address), [0, 0] for None
|
|
613
629
|
return sender ? [toACVMField(1n), toACVMField(sender)] : [toACVMField(0n), toACVMField(0n)];
|
|
614
630
|
}
|
|
615
631
|
|
|
616
|
-
|
|
617
|
-
|
|
632
|
+
// eslint-disable-next-line camelcase
|
|
633
|
+
async aztec_prv_setSenderForTags([senderForTags]: ACVMField[]): Promise<ACVMField[]> {
|
|
634
|
+
await this.handlerAsPrivate().setSenderForTags(AztecAddress.fromField(Fr.fromString(senderForTags)));
|
|
618
635
|
return [];
|
|
619
636
|
}
|
|
620
637
|
}
|
|
@@ -76,7 +76,7 @@ export async function executePrivateFunction(
|
|
|
76
76
|
|
|
77
77
|
const contractClassLogs = privateExecutionOracle.getContractClassLogs();
|
|
78
78
|
|
|
79
|
-
const rawReturnValues = await privateExecutionOracle.
|
|
79
|
+
const rawReturnValues = await privateExecutionOracle.loadFromExecutionCache(publicInputs.returnsHash);
|
|
80
80
|
|
|
81
81
|
const newNotes = privateExecutionOracle.getNewNotes();
|
|
82
82
|
const noteHashNullifierCounterMap = privateExecutionOracle.getNoteHashNullifierCounterMap();
|