@aztec/pxe 0.0.1-commit.3469e52 → 0.0.1-commit.35158ae7e
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/bin/check_oracle_version.js +1 -1
- package/dest/block_synchronizer/block_synchronizer.d.ts +9 -5
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +62 -16
- package/dest/config/index.d.ts +4 -2
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +18 -1
- package/dest/config/package_info.js +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +61 -31
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +201 -78
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +7 -7
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_tagging_index_cache.js +19 -11
- package/dest/contract_function_simulator/index.d.ts +2 -1
- package/dest/contract_function_simulator/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.js +1 -0
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +3 -4
- 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 +6 -5
- 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/message_tx_context.d.ts +16 -0
- package/dest/contract_function_simulator/noir-structs/message_tx_context.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/message_tx_context.js +57 -0
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +3 -5
- 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 +4 -6
- package/dest/contract_function_simulator/oracle/interfaces.d.ts +54 -46
- package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts +9 -0
- package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.js +42 -0
- package/dest/contract_function_simulator/oracle/oracle.d.ts +45 -42
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +201 -110
- package/dest/contract_function_simulator/oracle/private_execution.d.ts +2 -22
- package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution.js +5 -40
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +60 -77
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +110 -86
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +104 -54
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +216 -119
- 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 +45 -0
- package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
- package/dest/contract_sync/contract_sync_service.js +114 -0
- package/dest/contract_sync/helpers.d.ts +29 -0
- package/dest/contract_sync/helpers.d.ts.map +1 -0
- package/dest/contract_sync/helpers.js +55 -0
- package/dest/debug/pxe_debug_utils.d.ts +24 -10
- package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
- package/dest/debug/pxe_debug_utils.js +28 -17
- 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 +21 -7
- 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 +2 -2
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +22 -8
- package/dest/entrypoints/pxe_creation_options.d.ts +3 -2
- package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
- package/dest/entrypoints/server/index.d.ts +4 -1
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +3 -0
- package/dest/entrypoints/server/utils.d.ts +1 -1
- package/dest/entrypoints/server/utils.d.ts.map +1 -1
- package/dest/entrypoints/server/utils.js +28 -9
- package/dest/events/event_service.d.ts +5 -6
- package/dest/events/event_service.d.ts.map +1 -1
- package/dest/events/event_service.js +6 -7
- package/dest/job_coordinator/job_coordinator.d.ts +3 -2
- package/dest/job_coordinator/job_coordinator.d.ts.map +1 -1
- package/dest/job_coordinator/job_coordinator.js +3 -2
- package/dest/logs/log_service.d.ts +7 -5
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +28 -32
- package/dest/messages/message_context_service.d.ts +17 -0
- package/dest/messages/message_context_service.d.ts.map +1 -0
- package/dest/messages/message_context_service.js +36 -0
- package/dest/notes/note_service.d.ts +9 -8
- package/dest/notes/note_service.d.ts.map +1 -1
- package/dest/notes/note_service.js +17 -16
- 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 +5 -4
- 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 +3 -2
- package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.js +21 -13
- package/dest/private_kernel/private_kernel_oracle.d.ts +8 -4
- 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 +74 -24
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +134 -80
- 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 -16
- package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
- package/dest/storage/contract_store/contract_store.js +157 -84
- package/dest/storage/metadata.d.ts +1 -1
- package/dest/storage/metadata.js +1 -1
- package/dest/storage/note_store/note_store.d.ts +47 -49
- package/dest/storage/note_store/note_store.d.ts.map +1 -1
- package/dest/storage/note_store/note_store.js +278 -252
- package/dest/storage/note_store/stored_note.d.ts +16 -0
- package/dest/storage/note_store/stored_note.d.ts.map +1 -0
- package/dest/storage/note_store/stored_note.js +43 -0
- package/dest/storage/private_event_store/private_event_store.d.ts +17 -4
- package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
- package/dest/storage/private_event_store/private_event_store.js +198 -147
- package/dest/storage/private_event_store/stored_private_event.d.ts +23 -0
- package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -0
- package/dest/storage/private_event_store/stored_private_event.js +56 -0
- 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 +29 -28
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/sender_tagging_store.js +233 -137
- package/dest/tagging/get_all_logs_by_tags.d.ts +24 -0
- package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -0
- package/dest/tagging/get_all_logs_by_tags.js +60 -0
- package/dest/tagging/index.d.ts +4 -3
- package/dest/tagging/index.d.ts.map +1 -1
- package/dest/tagging/index.js +2 -1
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +5 -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 +7 -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 +16 -12
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +5 -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 +13 -7
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +4 -3
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +23 -16
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +6 -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 +42 -27
- package/package.json +25 -16
- package/src/access_scopes.ts +9 -0
- package/src/bin/check_oracle_version.ts +1 -0
- package/src/block_synchronizer/block_synchronizer.ts +76 -33
- package/src/config/index.ts +15 -1
- package/src/config/package_info.ts +1 -1
- package/src/contract_function_simulator/contract_function_simulator.ts +361 -142
- package/src/contract_function_simulator/execution_tagging_index_cache.ts +19 -14
- package/src/contract_function_simulator/index.ts +1 -0
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +9 -6
- package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +1 -4
- package/src/contract_function_simulator/noir-structs/message_tx_context.ts +55 -0
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +4 -7
- package/src/contract_function_simulator/oracle/interfaces.ts +67 -58
- package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +135 -0
- package/src/contract_function_simulator/oracle/oracle.ts +217 -149
- package/src/contract_function_simulator/oracle/private_execution.ts +5 -64
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +150 -182
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +330 -134
- package/src/contract_logging.ts +39 -0
- package/src/contract_sync/contract_sync_service.ts +181 -0
- package/src/contract_sync/helpers.ts +98 -0
- package/src/debug/pxe_debug_utils.ts +63 -18
- package/src/entrypoints/client/bundle/index.ts +3 -0
- package/src/entrypoints/client/bundle/utils.ts +16 -15
- package/src/entrypoints/client/lazy/index.ts +3 -0
- package/src/entrypoints/client/lazy/utils.ts +17 -15
- package/src/entrypoints/pxe_creation_options.ts +2 -1
- package/src/entrypoints/server/index.ts +3 -0
- package/src/entrypoints/server/utils.ts +22 -26
- package/src/events/event_service.ts +5 -7
- package/src/job_coordinator/job_coordinator.ts +4 -3
- package/src/logs/log_service.ts +48 -39
- package/src/messages/message_context_service.ts +45 -0
- package/src/notes/note_service.ts +24 -22
- package/src/notes_filter.ts +26 -0
- package/src/oracle_version.ts +5 -4
- 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 +25 -15
- package/src/private_kernel/private_kernel_oracle.ts +9 -9
- package/src/pxe.ts +261 -126
- 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 -96
- package/src/storage/metadata.ts +1 -1
- package/src/storage/note_store/note_store.ts +321 -318
- package/src/storage/note_store/stored_note.ts +48 -0
- package/src/storage/private_event_store/private_event_store.ts +250 -190
- package/src/storage/private_event_store/stored_private_event.ts +73 -0
- 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 +287 -156
- package/src/tagging/get_all_logs_by_tags.ts +92 -0
- package/src/tagging/index.ts +3 -2
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +17 -10
- package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
- package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +17 -16
- package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +25 -10
- package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +29 -26
- package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +39 -29
- 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
- package/dest/tree_membership/tree_membership_service.d.ts +0 -50
- package/dest/tree_membership/tree_membership_service.d.ts.map +0 -1
- package/dest/tree_membership/tree_membership_service.js +0 -75
- package/src/tree_membership/tree_membership_service.ts +0 -97
|
@@ -4,9 +4,9 @@ import { Point } from '@aztec/foundation/curves/grumpkin';
|
|
|
4
4
|
import { arrayOfArraysToBoundedVecOfArrays, bufferToBoundedVec, fromUintArray, fromUintBoundedVec, toACVMField } from '@aztec/simulator/client';
|
|
5
5
|
import { FunctionSelector, NoteSelector } from '@aztec/stdlib/abi';
|
|
6
6
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
7
|
-
import {
|
|
7
|
+
import { BlockHash } from '@aztec/stdlib/block';
|
|
8
8
|
import { ContractClassLog, ContractClassLogFields } from '@aztec/stdlib/logs';
|
|
9
|
-
import {
|
|
9
|
+
import { buildLegacyOracleCallbacks } from './legacy_oracle_mappings.js';
|
|
10
10
|
import { packAsHintedNote } from './note_packing_utils.js';
|
|
11
11
|
export class UnavailableOracleError extends Error {
|
|
12
12
|
constructor(oracleName){
|
|
@@ -49,11 +49,11 @@ export class UnavailableOracleError extends Error {
|
|
|
49
49
|
];
|
|
50
50
|
// Get all the oracle function names
|
|
51
51
|
const oracleNames = Object.getOwnPropertyNames(Oracle.prototype).filter((name)=>!excludedProps.includes(name));
|
|
52
|
-
// Validate oracle names - these must be prefixed with either "
|
|
52
|
+
// Validate oracle names - these must be prefixed with either "aztec_prv_" or "aztec_utl_" to indicate their scope
|
|
53
53
|
// and must correspond to a function on the Oracle class.
|
|
54
54
|
oracleNames.forEach((name)=>{
|
|
55
|
-
if (!name.startsWith('
|
|
56
|
-
throw new Error(`Oracle function "${name}" must be prefixed with either "
|
|
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`);
|
|
57
57
|
}
|
|
58
58
|
const method = this[name];
|
|
59
59
|
if (typeof method !== 'function') {
|
|
@@ -61,42 +61,53 @@ export class UnavailableOracleError extends Error {
|
|
|
61
61
|
}
|
|
62
62
|
});
|
|
63
63
|
// Build callback object and return it
|
|
64
|
-
|
|
64
|
+
const callback = oracleNames.reduce((acc, name)=>{
|
|
65
65
|
const method = this[name];
|
|
66
66
|
acc[name] = method.bind(this);
|
|
67
67
|
return acc;
|
|
68
68
|
}, {});
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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());
|
|
72
77
|
return Promise.resolve([]);
|
|
73
78
|
}
|
|
74
|
-
|
|
75
|
-
|
|
79
|
+
// eslint-disable-next-line camelcase
|
|
80
|
+
aztec_utl_getRandomField() {
|
|
81
|
+
const val = this.handlerAsMisc().getRandomField();
|
|
76
82
|
return Promise.resolve([
|
|
77
83
|
toACVMField(val)
|
|
78
84
|
]);
|
|
79
85
|
}
|
|
80
|
-
|
|
81
|
-
|
|
86
|
+
// eslint-disable-next-line camelcase
|
|
87
|
+
aztec_prv_storeInExecutionCache(values, [hash]) {
|
|
88
|
+
this.handlerAsPrivate().storeInExecutionCache(values.map(Fr.fromString), Fr.fromString(hash));
|
|
82
89
|
return Promise.resolve([]);
|
|
83
90
|
}
|
|
84
|
-
|
|
85
|
-
|
|
91
|
+
// eslint-disable-next-line camelcase
|
|
92
|
+
async aztec_prv_loadFromExecutionCache([returnsHash]) {
|
|
93
|
+
const values = await this.handlerAsPrivate().loadFromExecutionCache(Fr.fromString(returnsHash));
|
|
86
94
|
return [
|
|
87
95
|
values.map(toACVMField)
|
|
88
96
|
];
|
|
89
97
|
}
|
|
90
|
-
|
|
91
|
-
|
|
98
|
+
// eslint-disable-next-line camelcase
|
|
99
|
+
aztec_utl_getUtilityContext() {
|
|
100
|
+
const context = this.handlerAsUtility().getUtilityContext();
|
|
92
101
|
return Promise.resolve(context.toNoirRepresentation());
|
|
93
102
|
}
|
|
94
|
-
|
|
95
|
-
|
|
103
|
+
// eslint-disable-next-line camelcase
|
|
104
|
+
async aztec_utl_getKeyValidationRequest([pkMHash]) {
|
|
105
|
+
const keyValidationRequest = await this.handlerAsUtility().getKeyValidationRequest(Fr.fromString(pkMHash));
|
|
96
106
|
return keyValidationRequest.toFields().map(toACVMField);
|
|
97
107
|
}
|
|
98
|
-
|
|
99
|
-
|
|
108
|
+
// eslint-disable-next-line camelcase
|
|
109
|
+
async aztec_utl_getContractInstance([address]) {
|
|
110
|
+
const instance = await this.handlerAsUtility().getContractInstance(AztecAddress.fromField(Fr.fromString(address)));
|
|
100
111
|
return [
|
|
101
112
|
instance.salt,
|
|
102
113
|
instance.deployer,
|
|
@@ -105,57 +116,69 @@ export class UnavailableOracleError extends Error {
|
|
|
105
116
|
...instance.publicKeys.toFields()
|
|
106
117
|
].map(toACVMField);
|
|
107
118
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
const
|
|
111
|
-
const
|
|
112
|
-
const witness = await this.handlerAsUtility().
|
|
119
|
+
// eslint-disable-next-line camelcase
|
|
120
|
+
async aztec_utl_getNoteHashMembershipWitness([anchorBlockHash], [noteHash]) {
|
|
121
|
+
const parsedAnchorBlockHash = BlockHash.fromString(anchorBlockHash);
|
|
122
|
+
const parsedNoteHash = Fr.fromString(noteHash);
|
|
123
|
+
const witness = await this.handlerAsUtility().getNoteHashMembershipWitness(parsedAnchorBlockHash, parsedNoteHash);
|
|
113
124
|
if (!witness) {
|
|
114
|
-
throw new Error(`
|
|
125
|
+
throw new Error(`Note hash ${noteHash} not found in the note hash tree at anchor block hash ${parsedAnchorBlockHash.toString()}.`);
|
|
115
126
|
}
|
|
116
|
-
return
|
|
117
|
-
toACVMField(witness[0]),
|
|
118
|
-
witness.slice(1).map(toACVMField)
|
|
119
|
-
];
|
|
127
|
+
return witness.toNoirRepresentation();
|
|
120
128
|
}
|
|
121
|
-
|
|
122
|
-
|
|
129
|
+
// eslint-disable-next-line camelcase
|
|
130
|
+
async aztec_utl_getBlockHashMembershipWitness([anchorBlockHash], [blockHash]) {
|
|
131
|
+
const parsedAnchorBlockHash = BlockHash.fromString(anchorBlockHash);
|
|
132
|
+
const parsedBlockHash = BlockHash.fromString(blockHash);
|
|
133
|
+
const witness = await this.handlerAsUtility().getBlockHashMembershipWitness(parsedAnchorBlockHash, parsedBlockHash);
|
|
134
|
+
if (!witness) {
|
|
135
|
+
throw new Error(`Block hash ${parsedBlockHash.toString()} not found in the archive tree at anchor block ${parsedAnchorBlockHash.toString()}.`);
|
|
136
|
+
}
|
|
137
|
+
return witness.toNoirRepresentation();
|
|
138
|
+
}
|
|
139
|
+
// eslint-disable-next-line camelcase
|
|
140
|
+
async aztec_utl_getNullifierMembershipWitness([blockHash], [nullifier]) {
|
|
141
|
+
const parsedBlockHash = BlockHash.fromString(blockHash);
|
|
123
142
|
const parsedNullifier = Fr.fromString(nullifier);
|
|
124
|
-
const witness = await this.handlerAsUtility().
|
|
143
|
+
const witness = await this.handlerAsUtility().getNullifierMembershipWitness(parsedBlockHash, parsedNullifier);
|
|
125
144
|
if (!witness) {
|
|
126
145
|
throw new Error(`Nullifier witness not found for nullifier ${parsedNullifier} at block hash ${parsedBlockHash.toString()}.`);
|
|
127
146
|
}
|
|
128
147
|
return witness.toNoirRepresentation();
|
|
129
148
|
}
|
|
130
|
-
|
|
131
|
-
|
|
149
|
+
// eslint-disable-next-line camelcase
|
|
150
|
+
async aztec_utl_getLowNullifierMembershipWitness([blockHash], [nullifier]) {
|
|
151
|
+
const parsedBlockHash = BlockHash.fromString(blockHash);
|
|
132
152
|
const parsedNullifier = Fr.fromString(nullifier);
|
|
133
|
-
const witness = await this.handlerAsUtility().
|
|
153
|
+
const witness = await this.handlerAsUtility().getLowNullifierMembershipWitness(parsedBlockHash, parsedNullifier);
|
|
134
154
|
if (!witness) {
|
|
135
155
|
throw new Error(`Low nullifier witness not found for nullifier ${parsedNullifier} at block hash ${parsedBlockHash.toString()}.`);
|
|
136
156
|
}
|
|
137
157
|
return witness.toNoirRepresentation();
|
|
138
158
|
}
|
|
139
|
-
|
|
140
|
-
|
|
159
|
+
// eslint-disable-next-line camelcase
|
|
160
|
+
async aztec_utl_getPublicDataWitness([blockHash], [leafSlot]) {
|
|
161
|
+
const parsedBlockHash = BlockHash.fromString(blockHash);
|
|
141
162
|
const parsedLeafSlot = Fr.fromString(leafSlot);
|
|
142
|
-
const witness = await this.handlerAsUtility().
|
|
163
|
+
const witness = await this.handlerAsUtility().getPublicDataWitness(parsedBlockHash, parsedLeafSlot);
|
|
143
164
|
if (!witness) {
|
|
144
165
|
throw new Error(`Public data witness not found for slot ${parsedLeafSlot} at block hash ${parsedBlockHash.toString()}.`);
|
|
145
166
|
}
|
|
146
167
|
return witness.toNoirRepresentation();
|
|
147
168
|
}
|
|
148
|
-
|
|
169
|
+
// eslint-disable-next-line camelcase
|
|
170
|
+
async aztec_utl_getBlockHeader([blockNumber]) {
|
|
149
171
|
const parsedBlockNumber = Fr.fromString(blockNumber).toNumber();
|
|
150
|
-
const header = await this.handlerAsUtility().
|
|
172
|
+
const header = await this.handlerAsUtility().getBlockHeader(BlockNumber(parsedBlockNumber));
|
|
151
173
|
if (!header) {
|
|
152
174
|
throw new Error(`Block header not found for block ${parsedBlockNumber}.`);
|
|
153
175
|
}
|
|
154
176
|
return header.toFields().map(toACVMField);
|
|
155
177
|
}
|
|
156
|
-
|
|
178
|
+
// eslint-disable-next-line camelcase
|
|
179
|
+
async aztec_utl_getAuthWitness([messageHash]) {
|
|
157
180
|
const messageHashField = Fr.fromString(messageHash);
|
|
158
|
-
const witness = await this.handlerAsUtility().
|
|
181
|
+
const witness = await this.handlerAsUtility().getAuthWitness(messageHashField);
|
|
159
182
|
if (!witness) {
|
|
160
183
|
throw new Error(`Unknown auth witness for message hash ${messageHashField}`);
|
|
161
184
|
}
|
|
@@ -163,20 +186,34 @@ export class UnavailableOracleError extends Error {
|
|
|
163
186
|
witness.map(toACVMField)
|
|
164
187
|
];
|
|
165
188
|
}
|
|
166
|
-
|
|
189
|
+
// eslint-disable-next-line camelcase
|
|
190
|
+
async aztec_utl_tryGetPublicKeysAndPartialAddress([address]) {
|
|
167
191
|
const parsedAddress = AztecAddress.fromField(Fr.fromString(address));
|
|
168
|
-
const
|
|
169
|
-
return
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
192
|
+
const result = await this.handlerAsUtility().tryGetPublicKeysAndPartialAddress(parsedAddress);
|
|
193
|
+
// We are going to return a Noir Option struct to represent the possibility of null values. Options are a struct
|
|
194
|
+
// with two fields: `some` (a boolean) and `value` (a field array in this case).
|
|
195
|
+
if (result === undefined) {
|
|
196
|
+
// No data was found so we set `some` to 0 and pad `value` with zeros get the correct return size.
|
|
197
|
+
return [
|
|
198
|
+
toACVMField(0),
|
|
199
|
+
Array(13).fill(toACVMField(0))
|
|
200
|
+
];
|
|
201
|
+
} else {
|
|
202
|
+
// Data was found so we set `some` to 1 and return it along with `value`.
|
|
203
|
+
return [
|
|
204
|
+
toACVMField(1),
|
|
205
|
+
[
|
|
206
|
+
...result.publicKeys.toFields(),
|
|
207
|
+
result.partialAddress
|
|
208
|
+
].map(toACVMField)
|
|
209
|
+
];
|
|
210
|
+
}
|
|
175
211
|
}
|
|
176
|
-
|
|
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]) {
|
|
177
214
|
// Parse Option<AztecAddress>: ownerSome is 0 for None, 1 for Some
|
|
178
215
|
const owner = Fr.fromString(ownerSome).toNumber() === 1 ? AztecAddress.fromString(ownerValue) : undefined;
|
|
179
|
-
const noteDatas = await this.handlerAsUtility().
|
|
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);
|
|
180
217
|
const returnDataAsArrayOfPackedHintedNotes = noteDatas.map((noteData)=>packAsHintedNote({
|
|
181
218
|
contractAddress: noteData.contractAddress,
|
|
182
219
|
owner: noteData.owner,
|
|
@@ -191,51 +228,67 @@ export class UnavailableOracleError extends Error {
|
|
|
191
228
|
// At last we convert the array of arrays to a bounded vec of arrays
|
|
192
229
|
return arrayOfArraysToBoundedVecOfArrays(returnDataAsArrayOfACVMFieldArrays, +maxNotes, +packedHintedNoteLength);
|
|
193
230
|
}
|
|
194
|
-
|
|
195
|
-
|
|
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);
|
|
196
234
|
return Promise.resolve([]);
|
|
197
235
|
}
|
|
198
|
-
|
|
199
|
-
|
|
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);
|
|
200
239
|
return [];
|
|
201
240
|
}
|
|
202
|
-
|
|
203
|
-
|
|
241
|
+
// eslint-disable-next-line camelcase
|
|
242
|
+
async aztec_prv_notifyCreatedNullifier([innerNullifier]) {
|
|
243
|
+
await this.handlerAsPrivate().notifyCreatedNullifier(Fr.fromString(innerNullifier));
|
|
204
244
|
return [];
|
|
205
245
|
}
|
|
206
|
-
|
|
207
|
-
|
|
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));
|
|
249
|
+
return [
|
|
250
|
+
toACVMField(isPending)
|
|
251
|
+
];
|
|
252
|
+
}
|
|
253
|
+
// eslint-disable-next-line camelcase
|
|
254
|
+
async aztec_utl_checkNullifierExists([innerNullifier]) {
|
|
255
|
+
const exists = await this.handlerAsUtility().checkNullifierExists(Fr.fromString(innerNullifier));
|
|
208
256
|
return [
|
|
209
257
|
toACVMField(exists)
|
|
210
258
|
];
|
|
211
259
|
}
|
|
212
|
-
|
|
213
|
-
|
|
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));
|
|
214
263
|
return message.toNoirRepresentation();
|
|
215
264
|
}
|
|
216
|
-
|
|
217
|
-
|
|
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);
|
|
218
268
|
return [
|
|
219
269
|
values.map(toACVMField)
|
|
220
270
|
];
|
|
221
271
|
}
|
|
222
|
-
|
|
272
|
+
// eslint-disable-next-line camelcase
|
|
273
|
+
aztec_prv_notifyCreatedContractClassLog([contractAddress], message, [length], [counter]) {
|
|
223
274
|
const logFields = new ContractClassLogFields(message.map(Fr.fromString));
|
|
224
275
|
const log = new ContractClassLog(new AztecAddress(Fr.fromString(contractAddress)), logFields, +length);
|
|
225
|
-
this.handlerAsPrivate().
|
|
276
|
+
this.handlerAsPrivate().notifyCreatedContractClassLog(log, +counter);
|
|
226
277
|
return Promise.resolve([]);
|
|
227
278
|
}
|
|
228
|
-
|
|
279
|
+
// eslint-disable-next-line camelcase
|
|
280
|
+
async aztec_utl_log(level, message, _ignoredFieldsSize, fields) {
|
|
229
281
|
const levelFr = Fr.fromString(level[0]);
|
|
230
282
|
const messageStr = message.map((acvmField)=>String.fromCharCode(Fr.fromString(acvmField).toNumber())).join('');
|
|
231
283
|
const fieldsFr = fields.map(Fr.fromString);
|
|
232
|
-
this.handlerAsMisc().
|
|
233
|
-
return
|
|
284
|
+
await this.handlerAsMisc().log(levelFr.toNumber(), messageStr, fieldsFr);
|
|
285
|
+
return [];
|
|
234
286
|
}
|
|
235
287
|
// This function's name is directly hardcoded in `circuit_recorder.ts`. Don't forget to update it there if you
|
|
236
288
|
// change the name here.
|
|
237
|
-
|
|
238
|
-
|
|
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());
|
|
239
292
|
return [
|
|
240
293
|
[
|
|
241
294
|
endSideEffectCounter,
|
|
@@ -243,48 +296,58 @@ export class UnavailableOracleError extends Error {
|
|
|
243
296
|
].map(toACVMField)
|
|
244
297
|
];
|
|
245
298
|
}
|
|
246
|
-
|
|
247
|
-
|
|
299
|
+
// eslint-disable-next-line camelcase
|
|
300
|
+
async aztec_prv_validatePublicCalldata([calldataHash]) {
|
|
301
|
+
await this.handlerAsPrivate().validatePublicCalldata(Fr.fromString(calldataHash));
|
|
248
302
|
return [];
|
|
249
303
|
}
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
}
|
|
254
|
-
async privateNotifySetMinRevertibleSideEffectCounter([minRevertibleSideEffectCounter]) {
|
|
255
|
-
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());
|
|
256
307
|
return Promise.resolve([]);
|
|
257
308
|
}
|
|
258
|
-
|
|
259
|
-
|
|
309
|
+
// eslint-disable-next-line camelcase
|
|
310
|
+
async aztec_prv_inRevertiblePhase([sideEffectCounter]) {
|
|
311
|
+
const isRevertible = await this.handlerAsPrivate().inRevertiblePhase(Fr.fromString(sideEffectCounter).toNumber());
|
|
260
312
|
return Promise.resolve([
|
|
261
313
|
toACVMField(isRevertible)
|
|
262
314
|
]);
|
|
263
315
|
}
|
|
264
|
-
|
|
265
|
-
|
|
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));
|
|
266
319
|
return [
|
|
267
320
|
toACVMField(tag.value)
|
|
268
321
|
];
|
|
269
322
|
}
|
|
270
|
-
|
|
271
|
-
|
|
323
|
+
// eslint-disable-next-line camelcase
|
|
324
|
+
async aztec_utl_fetchTaggedLogs([pendingTaggedLogArrayBaseSlot]) {
|
|
325
|
+
await this.handlerAsUtility().fetchTaggedLogs(Fr.fromString(pendingTaggedLogArrayBaseSlot));
|
|
272
326
|
return [];
|
|
273
327
|
}
|
|
274
|
-
|
|
275
|
-
|
|
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());
|
|
276
331
|
return [];
|
|
277
332
|
}
|
|
278
|
-
|
|
279
|
-
|
|
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));
|
|
280
336
|
return [];
|
|
281
337
|
}
|
|
282
|
-
|
|
283
|
-
|
|
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));
|
|
284
341
|
return [];
|
|
285
342
|
}
|
|
286
|
-
|
|
287
|
-
|
|
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));
|
|
288
351
|
// We are going to return a Noir Option struct to represent the possibility of null values. Options are a struct
|
|
289
352
|
// with two fields: `some` (a boolean) and `value` (a field array in this case).
|
|
290
353
|
if (values === null) {
|
|
@@ -301,35 +364,62 @@ export class UnavailableOracleError extends Error {
|
|
|
301
364
|
];
|
|
302
365
|
}
|
|
303
366
|
}
|
|
304
|
-
|
|
305
|
-
|
|
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));
|
|
306
370
|
return [];
|
|
307
371
|
}
|
|
308
|
-
|
|
309
|
-
|
|
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());
|
|
310
375
|
return [];
|
|
311
376
|
}
|
|
312
|
-
|
|
377
|
+
// eslint-disable-next-line camelcase
|
|
378
|
+
async aztec_utl_tryAes128Decrypt(ciphertextBVecStorage, [ciphertextLength], iv, symKey) {
|
|
313
379
|
const ciphertext = fromUintBoundedVec(ciphertextBVecStorage, ciphertextLength, 8);
|
|
314
380
|
const ivBuffer = fromUintArray(iv, 8);
|
|
315
381
|
const symKeyBuffer = fromUintArray(symKey, 8);
|
|
316
|
-
|
|
317
|
-
|
|
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
|
+
}
|
|
318
399
|
}
|
|
319
|
-
|
|
320
|
-
|
|
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([
|
|
321
403
|
ephPKField0,
|
|
322
404
|
ephPKField1,
|
|
323
405
|
ephPKField2
|
|
324
406
|
].map(Fr.fromString)));
|
|
325
407
|
return secret.toFields().map(toACVMField);
|
|
326
408
|
}
|
|
327
|
-
|
|
328
|
-
|
|
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));
|
|
329
418
|
return [];
|
|
330
419
|
}
|
|
331
|
-
|
|
332
|
-
|
|
420
|
+
// eslint-disable-next-line camelcase
|
|
421
|
+
async aztec_prv_getSenderForTags() {
|
|
422
|
+
const sender = await this.handlerAsPrivate().getSenderForTags();
|
|
333
423
|
// Return [1, address] for Some(address), [0, 0] for None
|
|
334
424
|
return sender ? [
|
|
335
425
|
toACVMField(1n),
|
|
@@ -339,8 +429,9 @@ export class UnavailableOracleError extends Error {
|
|
|
339
429
|
toACVMField(0n)
|
|
340
430
|
];
|
|
341
431
|
}
|
|
342
|
-
|
|
343
|
-
|
|
432
|
+
// eslint-disable-next-line camelcase
|
|
433
|
+
async aztec_prv_setSenderForTags([senderForTags]) {
|
|
434
|
+
await this.handlerAsPrivate().setSenderForTags(AztecAddress.fromField(Fr.fromString(senderForTags)));
|
|
344
435
|
return [];
|
|
345
436
|
}
|
|
346
437
|
}
|
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
1
|
import { type ACVMWitness, type CircuitSimulator } from '@aztec/simulator/client';
|
|
3
2
|
import { type FunctionArtifact, type FunctionArtifactWithContractName, type FunctionSelector } from '@aztec/stdlib/abi';
|
|
4
3
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
5
|
-
import type { ContractInstance } from '@aztec/stdlib/contract';
|
|
6
|
-
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
7
4
|
import { PrivateCircuitPublicInputs } from '@aztec/stdlib/kernel';
|
|
8
|
-
import {
|
|
9
|
-
import { ContractStore } from '../../storage/contract_store/index.js';
|
|
5
|
+
import { PrivateCallExecutionResult } from '@aztec/stdlib/tx';
|
|
10
6
|
import type { PrivateExecutionOracle } from './private_execution_oracle.js';
|
|
11
7
|
/**
|
|
12
8
|
* Execute a private function and return the execution result.
|
|
@@ -24,20 +20,4 @@ export declare function executePrivateFunction(simulator: CircuitSimulator, priv
|
|
|
24
20
|
* @returns - The public inputs.
|
|
25
21
|
*/
|
|
26
22
|
export declare function extractPrivateCircuitPublicInputs(artifact: FunctionArtifact, partialWitness: ACVMWitness): PrivateCircuitPublicInputs;
|
|
27
|
-
|
|
28
|
-
* Read the current class id of a contract from the execution data provider or AztecNode. If not found, class id
|
|
29
|
-
* from the instance is used.
|
|
30
|
-
* @param contractAddress - The address of the contract to read the class id for.
|
|
31
|
-
* @param instance - The instance of the contract.
|
|
32
|
-
* @param aztecNode - The Aztec node to query for storage.
|
|
33
|
-
* @param header - The header of the block at which to load the DelayedPublicMutable storing the class id.
|
|
34
|
-
* @returns The current class id.
|
|
35
|
-
*/
|
|
36
|
-
export declare function readCurrentClassId(contractAddress: AztecAddress, instance: ContractInstance, aztecNode: AztecNode, header: BlockHeader): Promise<Fr>;
|
|
37
|
-
/**
|
|
38
|
-
* Verify that the current class id of a contract obtained from AztecNode is the same as the one in contract data
|
|
39
|
-
* provider (i.e. PXE's own storage).
|
|
40
|
-
* @param header - The header of the block at which to verify the current class id.
|
|
41
|
-
*/
|
|
42
|
-
export declare function verifyCurrentClassId(contractAddress: AztecAddress, aztecNode: AztecNode, contractStore: ContractStore, header: BlockHeader): Promise<void>;
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZV9leGVjdXRpb24uZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250cmFjdF9mdW5jdGlvbl9zaW11bGF0b3Ivb3JhY2xlL3ByaXZhdGVfZXhlY3V0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUlwRCxPQUFPLEVBQ0wsS0FBSyxXQUFXLEVBQ2hCLEtBQUssZ0JBQWdCLEVBS3RCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUNMLEtBQUssZ0JBQWdCLEVBQ3JCLEtBQUssZ0NBQWdDLEVBQ3JDLEtBQUssZ0JBQWdCLEVBRXRCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFaEUsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUvRCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFM0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRXRFLE9BQU8sS0FBSyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFNUU7Ozs7Ozs7R0FPRztBQUNILHdCQUFzQixzQkFBc0IsQ0FDMUMsU0FBUyxFQUFFLGdCQUFnQixFQUMzQixzQkFBc0IsRUFBRSxzQkFBc0IsRUFDOUMsUUFBUSxFQUFFLGdDQUFnQyxFQUMxQyxlQUFlLEVBQUUsWUFBWSxFQUM3QixnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFDbEMsR0FBRyx5Q0FBOEMsR0FDaEQsT0FBTyxDQUFDLDBCQUEwQixDQUFDLENBMkVyQztBQUVEOzs7OztHQUtHO0FBQ0gsd0JBQWdCLGlDQUFpQyxDQUMvQyxRQUFRLEVBQUUsZ0JBQWdCLEVBQzFCLGNBQWMsRUFBRSxXQUFXLEdBQzFCLDBCQUEwQixDQWE1QjtBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsd0JBQXNCLGtCQUFrQixDQUN0QyxlQUFlLEVBQUUsWUFBWSxFQUM3QixRQUFRLEVBQUUsZ0JBQWdCLEVBQzFCLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLE1BQU0sRUFBRSxXQUFXLGVBY3BCO0FBRUQ7Ozs7R0FJRztBQUNILHdCQUFzQixvQkFBb0IsQ0FDeEMsZUFBZSxFQUFFLFlBQVksRUFDN0IsU0FBUyxFQUFFLFNBQVMsRUFDcEIsYUFBYSxFQUFFLGFBQWEsRUFDNUIsTUFBTSxFQUFFLFdBQVcsaUJBYXBCIn0=
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZV9leGVjdXRpb24uZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250cmFjdF9mdW5jdGlvbl9zaW11bGF0b3Ivb3JhY2xlL3ByaXZhdGVfZXhlY3V0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFDTCxLQUFLLFdBQVcsRUFDaEIsS0FBSyxnQkFBZ0IsRUFLdEIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQ0wsS0FBSyxnQkFBZ0IsRUFDckIsS0FBSyxnQ0FBZ0MsRUFDckMsS0FBSyxnQkFBZ0IsRUFFdEIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUc5RCxPQUFPLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTVFOzs7Ozs7O0dBT0c7QUFDSCx3QkFBc0Isc0JBQXNCLENBQzFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFDM0Isc0JBQXNCLEVBQUUsc0JBQXNCLEVBQzlDLFFBQVEsRUFBRSxnQ0FBZ0MsRUFDMUMsZUFBZSxFQUFFLFlBQVksRUFDN0IsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQ2xDLEdBQUcseUNBQThDLEdBQ2hELE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxDQTJFckM7QUFFRDs7Ozs7R0FLRztBQUNILHdCQUFnQixpQ0FBaUMsQ0FDL0MsUUFBUSxFQUFFLGdCQUFnQixFQUMxQixjQUFjLEVBQUUsV0FBVyxHQUMxQiwwQkFBMEIsQ0FhNUIifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"private_execution.d.ts","sourceRoot":"","sources":["../../../src/contract_function_simulator/oracle/private_execution.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"private_execution.d.ts","sourceRoot":"","sources":["../../../src/contract_function_simulator/oracle/private_execution.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,gBAAgB,EAKtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,gCAAgC,EACrC,KAAK,gBAAgB,EAEtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAElE,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAG9D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAE5E;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,gBAAgB,EAC3B,sBAAsB,EAAE,sBAAsB,EAC9C,QAAQ,EAAE,gCAAgC,EAC1C,eAAe,EAAE,YAAY,EAC7B,gBAAgB,EAAE,gBAAgB,EAClC,GAAG,yCAA8C,GAChD,OAAO,CAAC,0BAA0B,CAAC,CA2ErC;AAED;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,gBAAgB,EAC1B,cAAc,EAAE,WAAW,GAC1B,0BAA0B,CAa5B"}
|
|
@@ -2,11 +2,8 @@ import { PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH, PRIVATE_CONTEXT_INPUTS_LENGTH } f
|
|
|
2
2
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
3
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
4
|
import { Timer } from '@aztec/foundation/timer';
|
|
5
|
-
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
6
5
|
import { ExecutionError, extractCallStack, resolveAssertionMessageFromError, witnessMapToFields } from '@aztec/simulator/client';
|
|
7
6
|
import { countArgumentsSize } from '@aztec/stdlib/abi';
|
|
8
|
-
import { L2BlockHash } from '@aztec/stdlib/block';
|
|
9
|
-
import { DelayedPublicMutableValues, DelayedPublicMutableValuesWithHash } from '@aztec/stdlib/delayed-public-mutable';
|
|
10
7
|
import { PrivateCircuitPublicInputs } from '@aztec/stdlib/kernel';
|
|
11
8
|
import { PrivateCallExecutionResult } from '@aztec/stdlib/tx';
|
|
12
9
|
import { Oracle } from './oracle.js';
|
|
@@ -48,11 +45,11 @@ import { Oracle } from './oracle.js';
|
|
|
48
45
|
appCircuitName: functionName
|
|
49
46
|
});
|
|
50
47
|
const contractClassLogs = privateExecutionOracle.getContractClassLogs();
|
|
51
|
-
const rawReturnValues = await privateExecutionOracle.
|
|
48
|
+
const rawReturnValues = await privateExecutionOracle.loadFromExecutionCache(publicInputs.returnsHash);
|
|
52
49
|
const newNotes = privateExecutionOracle.getNewNotes();
|
|
53
50
|
const noteHashNullifierCounterMap = privateExecutionOracle.getNoteHashNullifierCounterMap();
|
|
54
51
|
const offchainEffects = privateExecutionOracle.getOffchainEffects();
|
|
55
|
-
const
|
|
52
|
+
const taggingIndexRanges = privateExecutionOracle.getUsedTaggingIndexRanges();
|
|
56
53
|
const nestedExecutionResults = privateExecutionOracle.getNestedExecutionResults();
|
|
57
54
|
let timerSubtractionList = nestedExecutionResults;
|
|
58
55
|
let witgenTime = duration;
|
|
@@ -62,7 +59,9 @@ import { Oracle } from './oracle.js';
|
|
|
62
59
|
timerSubtractionList = timerSubtractionList.flatMap((nested)=>nested.nestedExecutionResults ?? []);
|
|
63
60
|
}
|
|
64
61
|
log.debug(`Returning from call to ${contractAddress.toString()}:${functionSelector}`);
|
|
65
|
-
return new PrivateCallExecutionResult(artifact.bytecode, Buffer.from(artifact.verificationKey, 'base64'), partialWitness, publicInputs, newNotes, noteHashNullifierCounterMap, rawReturnValues, offchainEffects
|
|
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, {
|
|
66
65
|
timings: {
|
|
67
66
|
witgen: witgenTime,
|
|
68
67
|
oracles: acirExecutionResult.oracles
|
|
@@ -88,37 +87,3 @@ import { Oracle } from './oracle.js';
|
|
|
88
87
|
}
|
|
89
88
|
return PrivateCircuitPublicInputs.fromFields(returnData);
|
|
90
89
|
}
|
|
91
|
-
/**
|
|
92
|
-
* Read the current class id of a contract from the execution data provider or AztecNode. If not found, class id
|
|
93
|
-
* from the instance is used.
|
|
94
|
-
* @param contractAddress - The address of the contract to read the class id for.
|
|
95
|
-
* @param instance - The instance of the contract.
|
|
96
|
-
* @param aztecNode - The Aztec node to query for storage.
|
|
97
|
-
* @param header - The header of the block at which to load the DelayedPublicMutable storing the class id.
|
|
98
|
-
* @returns The current class id.
|
|
99
|
-
*/ export async function readCurrentClassId(contractAddress, instance, aztecNode, header) {
|
|
100
|
-
const blockHashFr = await header.hash();
|
|
101
|
-
const blockHash = L2BlockHash.fromField(blockHashFr);
|
|
102
|
-
const timestamp = header.globalVariables.timestamp;
|
|
103
|
-
const { delayedPublicMutableSlot } = await DelayedPublicMutableValuesWithHash.getContractUpdateSlots(contractAddress);
|
|
104
|
-
const delayedPublicMutableValues = await DelayedPublicMutableValues.readFromTree(delayedPublicMutableSlot, (slot)=>aztecNode.getPublicStorageAt(blockHash, ProtocolContractAddress.ContractInstanceRegistry, slot));
|
|
105
|
-
let currentClassId = delayedPublicMutableValues.svc.getCurrentAt(timestamp)[0];
|
|
106
|
-
if (currentClassId.isZero()) {
|
|
107
|
-
currentClassId = instance.originalContractClassId;
|
|
108
|
-
}
|
|
109
|
-
return currentClassId;
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Verify that the current class id of a contract obtained from AztecNode is the same as the one in contract data
|
|
113
|
-
* provider (i.e. PXE's own storage).
|
|
114
|
-
* @param header - The header of the block at which to verify the current class id.
|
|
115
|
-
*/ export async function verifyCurrentClassId(contractAddress, aztecNode, contractStore, header) {
|
|
116
|
-
const instance = await contractStore.getContractInstance(contractAddress);
|
|
117
|
-
if (!instance) {
|
|
118
|
-
throw new Error(`No contract instance found for address ${contractAddress.toString()}`);
|
|
119
|
-
}
|
|
120
|
-
const currentClassId = await readCurrentClassId(contractAddress, instance, aztecNode, header);
|
|
121
|
-
if (!instance.currentContractClassId.equals(currentClassId)) {
|
|
122
|
-
throw new Error(`Contract ${contractAddress} is outdated, current class id is ${currentClassId}, local class id is ${instance.currentContractClassId}`);
|
|
123
|
-
}
|
|
124
|
-
}
|