@aztec/pxe 0.0.1-commit.e6bd8901 → 0.0.1-commit.ec7ac5448
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/bin/check_oracle_version.js +4 -4
- package/dest/block_synchronizer/block_synchronizer.d.ts +5 -3
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +17 -5
- 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 +60 -31
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +201 -74
- package/dest/contract_function_simulator/ephemeral_array_service.d.ts +28 -0
- package/dest/contract_function_simulator/ephemeral_array_service.d.ts.map +1 -0
- package/dest/contract_function_simulator/ephemeral_array_service.js +78 -0
- 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 +4 -6
- 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 +8 -10
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +2 -2
- 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 +2 -4
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +4 -7
- 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 +6 -11
- package/dest/contract_function_simulator/oracle/interfaces.d.ts +62 -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 +47 -0
- package/dest/contract_function_simulator/oracle/oracle.d.ts +75 -44
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +310 -113
- package/dest/contract_function_simulator/oracle/private_execution.js +5 -3
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +53 -79
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +109 -89
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +124 -67
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +326 -140
- package/dest/contract_function_simulator/pick_notes.d.ts +1 -1
- package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
- package/dest/contract_function_simulator/pick_notes.js +9 -2
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +1 -1
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
- package/dest/contract_function_simulator/proxied_contract_data_source.js +3 -0
- package/dest/contract_logging.d.ts +27 -0
- package/dest/contract_logging.d.ts.map +1 -0
- package/dest/contract_logging.js +38 -0
- package/dest/contract_sync/contract_sync_service.d.ts +44 -0
- package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
- package/dest/contract_sync/contract_sync_service.js +104 -0
- package/dest/contract_sync/helpers.d.ts +28 -0
- package/dest/contract_sync/helpers.d.ts.map +1 -0
- package/dest/contract_sync/{index.js → helpers.js} +20 -16
- 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 -18
- package/dest/entrypoints/client/bundle/index.d.ts +3 -1
- package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/index.js +2 -0
- package/dest/entrypoints/client/bundle/utils.d.ts +2 -2
- package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/utils.js +23 -9
- package/dest/entrypoints/client/lazy/index.d.ts +3 -1
- package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/index.js +2 -0
- package/dest/entrypoints/client/lazy/utils.d.ts +3 -3
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +24 -10
- package/dest/entrypoints/pxe_creation_options.d.ts +5 -2
- package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
- package/dest/entrypoints/pxe_creation_options.js +3 -1
- package/dest/entrypoints/server/index.d.ts +4 -3
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +3 -2
- package/dest/entrypoints/server/utils.d.ts +2 -2
- package/dest/entrypoints/server/utils.d.ts.map +1 -1
- package/dest/entrypoints/server/utils.js +30 -11
- package/dest/events/event_service.d.ts +5 -5
- package/dest/events/event_service.d.ts.map +1 -1
- package/dest/events/event_service.js +20 -9
- 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 +8 -9
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +38 -62
- 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 +7 -8
- package/dest/notes/note_service.d.ts.map +1 -1
- package/dest/notes/note_service.js +23 -15
- package/dest/notes_filter.d.ts +24 -0
- package/dest/notes_filter.d.ts.map +1 -0
- package/dest/notes_filter.js +4 -0
- package/dest/oracle_version.d.ts +4 -3
- package/dest/oracle_version.d.ts.map +1 -1
- package/dest/oracle_version.js +20 -10
- 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 +73 -24
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +131 -78
- 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_service.d.ts +21 -0
- package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
- package/dest/storage/capsule_store/capsule_service.js +50 -0
- package/dest/storage/capsule_store/capsule_store.d.ts +9 -9
- package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
- package/dest/storage/capsule_store/capsule_store.js +39 -36
- package/dest/storage/capsule_store/index.d.ts +2 -1
- package/dest/storage/capsule_store/index.d.ts.map +1 -1
- package/dest/storage/capsule_store/index.js +1 -0
- 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 +147 -107
- 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 +84 -61
- package/dest/storage/private_event_store/stored_private_event.d.ts +4 -4
- package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -1
- package/dest/storage/private_event_store/stored_private_event.js +2 -2
- 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 +4 -4
- 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 +3 -3
- 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 +5 -6
- 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 -8
- 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 +5 -9
- 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 +20 -10
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +6 -8
- 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 +36 -24
- package/package.json +25 -16
- package/src/bin/check_oracle_version.ts +4 -4
- package/src/block_synchronizer/block_synchronizer.ts +29 -19
- package/src/config/index.ts +1 -1
- package/src/config/package_info.ts +1 -1
- package/src/contract_function_simulator/contract_function_simulator.ts +360 -133
- package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
- 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 -9
- package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +1 -1
- package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +2 -5
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +4 -10
- package/src/contract_function_simulator/oracle/interfaces.ts +90 -62
- package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +104 -0
- package/src/contract_function_simulator/oracle/oracle.ts +391 -150
- package/src/contract_function_simulator/oracle/private_execution.ts +4 -4
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +136 -187
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +544 -174
- package/src/contract_function_simulator/pick_notes.ts +9 -2
- package/src/contract_function_simulator/proxied_contract_data_source.ts +8 -1
- package/src/contract_logging.ts +52 -0
- package/src/contract_sync/contract_sync_service.ts +170 -0
- package/src/contract_sync/{index.ts → helpers.ts} +23 -25
- package/src/debug/pxe_debug_utils.ts +63 -19
- package/src/entrypoints/client/bundle/index.ts +2 -0
- package/src/entrypoints/client/bundle/utils.ts +18 -18
- package/src/entrypoints/client/lazy/index.ts +2 -0
- package/src/entrypoints/client/lazy/utils.ts +19 -18
- package/src/entrypoints/pxe_creation_options.ts +9 -1
- package/src/entrypoints/server/index.ts +3 -2
- package/src/entrypoints/server/utils.ts +24 -29
- package/src/events/event_service.ts +21 -10
- package/src/job_coordinator/job_coordinator.ts +4 -3
- package/src/logs/log_service.ts +72 -106
- package/src/messages/message_context_service.ts +44 -0
- package/src/notes/note_service.ts +24 -16
- package/src/notes_filter.ts +24 -0
- package/src/oracle_version.ts +20 -10
- 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 +243 -131
- 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_service.ts +90 -0
- package/src/storage/capsule_store/capsule_store.ts +42 -34
- package/src/storage/capsule_store/index.ts +1 -0
- 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 +166 -132
- package/src/storage/private_event_store/private_event_store.ts +102 -81
- package/src/storage/private_event_store/stored_private_event.ts +3 -3
- 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 +31 -7
- package/src/tagging/index.ts +2 -2
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +9 -12
- package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
- package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +12 -17
- package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +25 -12
- package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +26 -11
- package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +30 -29
- 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
|
@@ -12,10 +12,12 @@ import {
|
|
|
12
12
|
} from '@aztec/simulator/client';
|
|
13
13
|
import { FunctionSelector, NoteSelector } from '@aztec/stdlib/abi';
|
|
14
14
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
15
|
-
import {
|
|
15
|
+
import { BlockHash } from '@aztec/stdlib/block';
|
|
16
16
|
import { ContractClassLog, ContractClassLogFields } from '@aztec/stdlib/logs';
|
|
17
17
|
|
|
18
|
+
import { ORACLE_VERSION_MAJOR, ORACLE_VERSION_MINOR } from '../../oracle_version.js';
|
|
18
19
|
import type { IMiscOracle, IPrivateExecutionOracle, IUtilityExecutionOracle } from './interfaces.js';
|
|
20
|
+
import { buildLegacyOracleCallbacks } from './legacy_oracle_mappings.js';
|
|
19
21
|
import { packAsHintedNote } from './note_packing_utils.js';
|
|
20
22
|
|
|
21
23
|
export class UnavailableOracleError extends Error {
|
|
@@ -26,6 +28,25 @@ export class UnavailableOracleError extends Error {
|
|
|
26
28
|
|
|
27
29
|
/**
|
|
28
30
|
* A data source that has all the apis required by Aztec.nr.
|
|
31
|
+
*
|
|
32
|
+
* ## Oracle naming conventions
|
|
33
|
+
*
|
|
34
|
+
* We try to keep oracle naming consistent, please see below the conventions we adhere to.
|
|
35
|
+
*
|
|
36
|
+
* Each oracle method name has the form `aztec_{scope}_{verb}{Object}`, where:
|
|
37
|
+
*
|
|
38
|
+
* - **Scope prefix** indicates the execution context required:
|
|
39
|
+
* - `aztec_prv_` — available only during private function execution.
|
|
40
|
+
* - `aztec_utl_` — available during both utility and private execution.
|
|
41
|
+
*
|
|
42
|
+
* - **Verb** signals the operation's semantics (verb-first, then object):
|
|
43
|
+
* - `get` — read / lookup / get data from oracle into contract.
|
|
44
|
+
* - `does`/`is`/`has` — predicate (returns boolean).
|
|
45
|
+
* - `emit`/`notify` — propagate data from contract to oracle.
|
|
46
|
+
* - `set` — contract driven oracle state mutation (capsules, execution cache, tagging, etc).
|
|
47
|
+
* - `call` — trigger nested execution (control flow).
|
|
48
|
+
* - `assert` — validate a condition, throw on failure.
|
|
49
|
+
* - Standalone verbs (`delete`, `copy`, `decrypt`, `log`, etc) are used when no generic verb fits.
|
|
29
50
|
*/
|
|
30
51
|
export class Oracle {
|
|
31
52
|
constructor(private handler: IMiscOracle | IUtilityExecutionOracle | IPrivateExecutionOracle) {}
|
|
@@ -69,12 +90,12 @@ export class Oracle {
|
|
|
69
90
|
name => !excludedProps.includes(name as (typeof excludedProps)[number]),
|
|
70
91
|
);
|
|
71
92
|
|
|
72
|
-
// Validate oracle names - these must be prefixed with either "
|
|
93
|
+
// Validate oracle names - these must be prefixed with either "aztec_prv_" or "aztec_utl_" to indicate their scope
|
|
73
94
|
// and must correspond to a function on the Oracle class.
|
|
74
95
|
oracleNames.forEach(name => {
|
|
75
|
-
if (!name.startsWith('
|
|
96
|
+
if (!name.startsWith('aztec_prv_') && !name.startsWith('aztec_utl_')) {
|
|
76
97
|
throw new Error(
|
|
77
|
-
`Oracle function "${name}" must be prefixed with either "
|
|
98
|
+
`Oracle function "${name}" must be prefixed with either "aztec_prv_" or "aztec_utl_" to indicate its scope`,
|
|
78
99
|
);
|
|
79
100
|
}
|
|
80
101
|
|
|
@@ -85,48 +106,110 @@ export class Oracle {
|
|
|
85
106
|
});
|
|
86
107
|
|
|
87
108
|
// Build callback object and return it
|
|
88
|
-
|
|
109
|
+
const callback = oracleNames.reduce((acc, name) => {
|
|
89
110
|
const method = this[name as keyof Omit<Oracle, (typeof excludedProps)[number]>];
|
|
90
111
|
acc[name] = method.bind(this);
|
|
91
112
|
return acc;
|
|
92
113
|
}, {} as ACIRCallback);
|
|
114
|
+
|
|
115
|
+
const allCallbacks = { ...callback, ...buildLegacyOracleCallbacks(this) };
|
|
116
|
+
|
|
117
|
+
// Wrap in a Proxy to intercept access to missing oracle names and provide enhanced error messages when the
|
|
118
|
+
// contract's minor version is higher than the PXE's (i.e. the contract expects oracles that were added in a newer
|
|
119
|
+
// minor version).
|
|
120
|
+
const handler = this.handler;
|
|
121
|
+
return new Proxy(allCallbacks, {
|
|
122
|
+
get(target, prop: string) {
|
|
123
|
+
if (prop in target) {
|
|
124
|
+
return target[prop];
|
|
125
|
+
}
|
|
126
|
+
// Return a function that throws with an enhanced error message if applicable
|
|
127
|
+
return () => {
|
|
128
|
+
type NonOracleFunctionGetContractOracleVersion = {
|
|
129
|
+
nonOracleFunctionGetContractOracleVersion(): { major: number; minor: number } | undefined;
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
let contractVersion = undefined;
|
|
133
|
+
if ('nonOracleFunctionGetContractOracleVersion' in handler) {
|
|
134
|
+
contractVersion = (
|
|
135
|
+
handler as unknown as NonOracleFunctionGetContractOracleVersion
|
|
136
|
+
).nonOracleFunctionGetContractOracleVersion();
|
|
137
|
+
}
|
|
138
|
+
if (!contractVersion) {
|
|
139
|
+
throw new Error(
|
|
140
|
+
`Oracle '${prop}' not found and the contract's oracle version is unknown (the version check oracle ` +
|
|
141
|
+
`was not called before '${prop}'). This usually means the contract was not compiled with the ` +
|
|
142
|
+
`#[aztec] macro, which injects the version check as the first oracle call in every private/utility ` +
|
|
143
|
+
`external function. If you're using a custom entry point, ensure assert_compatible_oracle_version() ` +
|
|
144
|
+
`is called before any other oracle calls. See https://docs.aztec.network/errors/8`,
|
|
145
|
+
);
|
|
146
|
+
} else if (contractVersion.minor > ORACLE_VERSION_MINOR) {
|
|
147
|
+
throw new Error(
|
|
148
|
+
`Oracle '${prop}' not found.` +
|
|
149
|
+
` This usually means the contract requires a newer private execution environment than you have.` +
|
|
150
|
+
` Upgrade your private execution environment to a compatible version. The contract was compiled with` +
|
|
151
|
+
` Aztec.nr oracle version ${contractVersion.major}.${contractVersion.minor}, but this private` +
|
|
152
|
+
` execution environment only supports up to ${ORACLE_VERSION_MAJOR}.${ORACLE_VERSION_MINOR}.` +
|
|
153
|
+
` See https://docs.aztec.network/errors/8`,
|
|
154
|
+
);
|
|
155
|
+
} else {
|
|
156
|
+
throw new Error(
|
|
157
|
+
`Oracle '${prop}' not found.` +
|
|
158
|
+
` The contract's oracle version (${contractVersion.major}.${contractVersion.minor}) is compatible` +
|
|
159
|
+
` with this private execution environment (${ORACLE_VERSION_MAJOR}.${ORACLE_VERSION_MINOR}), so all` +
|
|
160
|
+
` standard oracles should be available. This could mean the contract was compiled against a modified` +
|
|
161
|
+
` version of Aztec.nr, or that it references an oracle that does not exist.` +
|
|
162
|
+
` See https://docs.aztec.network/errors/8`,
|
|
163
|
+
);
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
},
|
|
167
|
+
});
|
|
93
168
|
}
|
|
94
169
|
|
|
95
|
-
|
|
96
|
-
|
|
170
|
+
// eslint-disable-next-line camelcase
|
|
171
|
+
aztec_utl_assertCompatibleOracleVersionV2([major]: ACVMField[], [minor]: ACVMField[]) {
|
|
172
|
+
this.handlerAsMisc().assertCompatibleOracleVersion(
|
|
173
|
+
Fr.fromString(major).toNumber(),
|
|
174
|
+
Fr.fromString(minor).toNumber(),
|
|
175
|
+
);
|
|
97
176
|
return Promise.resolve([]);
|
|
98
177
|
}
|
|
99
178
|
|
|
100
|
-
|
|
101
|
-
|
|
179
|
+
// eslint-disable-next-line camelcase
|
|
180
|
+
aztec_utl_getRandomField(): Promise<ACVMField[]> {
|
|
181
|
+
const val = this.handlerAsMisc().getRandomField();
|
|
102
182
|
return Promise.resolve([toACVMField(val)]);
|
|
103
183
|
}
|
|
104
184
|
|
|
105
|
-
|
|
106
|
-
|
|
185
|
+
// eslint-disable-next-line camelcase
|
|
186
|
+
aztec_prv_setHashPreimage(values: ACVMField[], [hash]: ACVMField[]): Promise<ACVMField[]> {
|
|
187
|
+
this.handlerAsPrivate().setHashPreimage(values.map(Fr.fromString), Fr.fromString(hash));
|
|
107
188
|
return Promise.resolve([]);
|
|
108
189
|
}
|
|
109
190
|
|
|
110
|
-
|
|
111
|
-
|
|
191
|
+
// eslint-disable-next-line camelcase
|
|
192
|
+
async aztec_prv_getHashPreimage([returnsHash]: ACVMField[]): Promise<ACVMField[][]> {
|
|
193
|
+
const values = await this.handlerAsPrivate().getHashPreimage(Fr.fromString(returnsHash));
|
|
112
194
|
return [values.map(toACVMField)];
|
|
113
195
|
}
|
|
114
196
|
|
|
115
|
-
|
|
116
|
-
|
|
197
|
+
// eslint-disable-next-line camelcase
|
|
198
|
+
aztec_utl_getUtilityContext(): Promise<(ACVMField | ACVMField[])[]> {
|
|
199
|
+
const context = this.handlerAsUtility().getUtilityContext();
|
|
117
200
|
return Promise.resolve(context.toNoirRepresentation());
|
|
118
201
|
}
|
|
119
202
|
|
|
120
|
-
|
|
121
|
-
|
|
203
|
+
// eslint-disable-next-line camelcase
|
|
204
|
+
async aztec_utl_getKeyValidationRequest([pkMHash]: ACVMField[]): Promise<ACVMField[]> {
|
|
205
|
+
const keyValidationRequest = await this.handlerAsUtility().getKeyValidationRequest(Fr.fromString(pkMHash));
|
|
122
206
|
|
|
123
207
|
return keyValidationRequest.toFields().map(toACVMField);
|
|
124
208
|
}
|
|
125
209
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
);
|
|
210
|
+
// eslint-disable-next-line camelcase
|
|
211
|
+
async aztec_utl_getContractInstance([address]: ACVMField[]): Promise<ACVMField[]> {
|
|
212
|
+
const instance = await this.handlerAsUtility().getContractInstance(AztecAddress.fromField(Fr.fromString(address)));
|
|
130
213
|
|
|
131
214
|
return [
|
|
132
215
|
instance.salt,
|
|
@@ -137,45 +220,49 @@ export class Oracle {
|
|
|
137
220
|
].map(toACVMField);
|
|
138
221
|
}
|
|
139
222
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
[
|
|
223
|
+
// eslint-disable-next-line camelcase
|
|
224
|
+
async aztec_utl_getNoteHashMembershipWitness(
|
|
225
|
+
[anchorBlockHash]: ACVMField[],
|
|
226
|
+
[noteHash]: ACVMField[],
|
|
143
227
|
): Promise<(ACVMField | ACVMField[])[]> {
|
|
144
|
-
const
|
|
145
|
-
const
|
|
228
|
+
const parsedAnchorBlockHash = BlockHash.fromString(anchorBlockHash);
|
|
229
|
+
const parsedNoteHash = Fr.fromString(noteHash);
|
|
146
230
|
|
|
147
|
-
const witness = await this.handlerAsUtility().
|
|
231
|
+
const witness = await this.handlerAsUtility().getNoteHashMembershipWitness(parsedAnchorBlockHash, parsedNoteHash);
|
|
148
232
|
if (!witness) {
|
|
149
|
-
throw new Error(
|
|
233
|
+
throw new Error(
|
|
234
|
+
`Note hash ${noteHash} not found in the note hash tree at anchor block hash ${parsedAnchorBlockHash.toString()}.`,
|
|
235
|
+
);
|
|
150
236
|
}
|
|
151
237
|
return witness.toNoirRepresentation();
|
|
152
238
|
}
|
|
153
239
|
|
|
154
|
-
|
|
240
|
+
// eslint-disable-next-line camelcase
|
|
241
|
+
async aztec_utl_getBlockHashMembershipWitness(
|
|
242
|
+
[anchorBlockHash]: ACVMField[],
|
|
155
243
|
[blockHash]: ACVMField[],
|
|
156
|
-
[leafValue]: ACVMField[],
|
|
157
244
|
): Promise<(ACVMField | ACVMField[])[]> {
|
|
158
|
-
const
|
|
159
|
-
const
|
|
245
|
+
const parsedAnchorBlockHash = BlockHash.fromString(anchorBlockHash);
|
|
246
|
+
const parsedBlockHash = BlockHash.fromString(blockHash);
|
|
160
247
|
|
|
161
|
-
const witness = await this.handlerAsUtility().
|
|
248
|
+
const witness = await this.handlerAsUtility().getBlockHashMembershipWitness(parsedAnchorBlockHash, parsedBlockHash);
|
|
162
249
|
if (!witness) {
|
|
163
|
-
throw new Error(
|
|
250
|
+
throw new Error(
|
|
251
|
+
`Block hash ${parsedBlockHash.toString()} not found in the archive tree at anchor block ${parsedAnchorBlockHash.toString()}.`,
|
|
252
|
+
);
|
|
164
253
|
}
|
|
165
254
|
return witness.toNoirRepresentation();
|
|
166
255
|
}
|
|
167
256
|
|
|
168
|
-
|
|
257
|
+
// eslint-disable-next-line camelcase
|
|
258
|
+
async aztec_utl_getNullifierMembershipWitness(
|
|
169
259
|
[blockHash]: ACVMField[],
|
|
170
260
|
[nullifier]: ACVMField[], // nullifier, we try to find the witness for (to prove inclusion)
|
|
171
261
|
): Promise<(ACVMField | ACVMField[])[]> {
|
|
172
|
-
const parsedBlockHash =
|
|
262
|
+
const parsedBlockHash = BlockHash.fromString(blockHash);
|
|
173
263
|
const parsedNullifier = Fr.fromString(nullifier);
|
|
174
264
|
|
|
175
|
-
const witness = await this.handlerAsUtility().
|
|
176
|
-
parsedBlockHash,
|
|
177
|
-
parsedNullifier,
|
|
178
|
-
);
|
|
265
|
+
const witness = await this.handlerAsUtility().getNullifierMembershipWitness(parsedBlockHash, parsedNullifier);
|
|
179
266
|
if (!witness) {
|
|
180
267
|
throw new Error(
|
|
181
268
|
`Nullifier witness not found for nullifier ${parsedNullifier} at block hash ${parsedBlockHash.toString()}.`,
|
|
@@ -184,17 +271,15 @@ export class Oracle {
|
|
|
184
271
|
return witness.toNoirRepresentation();
|
|
185
272
|
}
|
|
186
273
|
|
|
187
|
-
|
|
274
|
+
// eslint-disable-next-line camelcase
|
|
275
|
+
async aztec_utl_getLowNullifierMembershipWitness(
|
|
188
276
|
[blockHash]: ACVMField[],
|
|
189
277
|
[nullifier]: ACVMField[], // nullifier, we try to find the low nullifier witness for (to prove non-inclusion)
|
|
190
278
|
): Promise<(ACVMField | ACVMField[])[]> {
|
|
191
|
-
const parsedBlockHash =
|
|
279
|
+
const parsedBlockHash = BlockHash.fromString(blockHash);
|
|
192
280
|
const parsedNullifier = Fr.fromString(nullifier);
|
|
193
281
|
|
|
194
|
-
const witness = await this.handlerAsUtility().
|
|
195
|
-
parsedBlockHash,
|
|
196
|
-
parsedNullifier,
|
|
197
|
-
);
|
|
282
|
+
const witness = await this.handlerAsUtility().getLowNullifierMembershipWitness(parsedBlockHash, parsedNullifier);
|
|
198
283
|
if (!witness) {
|
|
199
284
|
throw new Error(
|
|
200
285
|
`Low nullifier witness not found for nullifier ${parsedNullifier} at block hash ${parsedBlockHash.toString()}.`,
|
|
@@ -203,14 +288,15 @@ export class Oracle {
|
|
|
203
288
|
return witness.toNoirRepresentation();
|
|
204
289
|
}
|
|
205
290
|
|
|
206
|
-
|
|
291
|
+
// eslint-disable-next-line camelcase
|
|
292
|
+
async aztec_utl_getPublicDataWitness(
|
|
207
293
|
[blockHash]: ACVMField[],
|
|
208
294
|
[leafSlot]: ACVMField[],
|
|
209
295
|
): Promise<(ACVMField | ACVMField[])[]> {
|
|
210
|
-
const parsedBlockHash =
|
|
296
|
+
const parsedBlockHash = BlockHash.fromString(blockHash);
|
|
211
297
|
const parsedLeafSlot = Fr.fromString(leafSlot);
|
|
212
298
|
|
|
213
|
-
const witness = await this.handlerAsUtility().
|
|
299
|
+
const witness = await this.handlerAsUtility().getPublicDataWitness(parsedBlockHash, parsedLeafSlot);
|
|
214
300
|
if (!witness) {
|
|
215
301
|
throw new Error(
|
|
216
302
|
`Public data witness not found for slot ${parsedLeafSlot} at block hash ${parsedBlockHash.toString()}.`,
|
|
@@ -219,34 +305,45 @@ export class Oracle {
|
|
|
219
305
|
return witness.toNoirRepresentation();
|
|
220
306
|
}
|
|
221
307
|
|
|
222
|
-
|
|
308
|
+
// eslint-disable-next-line camelcase
|
|
309
|
+
async aztec_utl_getBlockHeader([blockNumber]: ACVMField[]): Promise<ACVMField[]> {
|
|
223
310
|
const parsedBlockNumber = Fr.fromString(blockNumber).toNumber();
|
|
224
311
|
|
|
225
|
-
const header = await this.handlerAsUtility().
|
|
312
|
+
const header = await this.handlerAsUtility().getBlockHeader(BlockNumber(parsedBlockNumber));
|
|
226
313
|
if (!header) {
|
|
227
314
|
throw new Error(`Block header not found for block ${parsedBlockNumber}.`);
|
|
228
315
|
}
|
|
229
316
|
return header.toFields().map(toACVMField);
|
|
230
317
|
}
|
|
231
318
|
|
|
232
|
-
|
|
319
|
+
// eslint-disable-next-line camelcase
|
|
320
|
+
async aztec_utl_getAuthWitness([messageHash]: ACVMField[]): Promise<ACVMField[][]> {
|
|
233
321
|
const messageHashField = Fr.fromString(messageHash);
|
|
234
|
-
const witness = await this.handlerAsUtility().
|
|
322
|
+
const witness = await this.handlerAsUtility().getAuthWitness(messageHashField);
|
|
235
323
|
if (!witness) {
|
|
236
324
|
throw new Error(`Unknown auth witness for message hash ${messageHashField}`);
|
|
237
325
|
}
|
|
238
326
|
return [witness.map(toACVMField)];
|
|
239
327
|
}
|
|
240
328
|
|
|
241
|
-
|
|
329
|
+
// eslint-disable-next-line camelcase
|
|
330
|
+
async aztec_utl_getPublicKeysAndPartialAddress([address]: ACVMField[]): Promise<(ACVMField | ACVMField[])[]> {
|
|
242
331
|
const parsedAddress = AztecAddress.fromField(Fr.fromString(address));
|
|
243
|
-
const
|
|
244
|
-
await this.handlerAsUtility().utilityGetPublicKeysAndPartialAddress(parsedAddress);
|
|
332
|
+
const result = await this.handlerAsUtility().getPublicKeysAndPartialAddress(parsedAddress);
|
|
245
333
|
|
|
246
|
-
return
|
|
334
|
+
// We are going to return a Noir Option struct to represent the possibility of null values. Options are a struct
|
|
335
|
+
// with two fields: `some` (a boolean) and `value` (a field array in this case).
|
|
336
|
+
if (result === undefined) {
|
|
337
|
+
// No data was found so we set `some` to 0 and pad `value` with zeros get the correct return size.
|
|
338
|
+
return [toACVMField(0), Array(13).fill(toACVMField(0))];
|
|
339
|
+
} else {
|
|
340
|
+
// Data was found so we set `some` to 1 and return it along with `value`.
|
|
341
|
+
return [toACVMField(1), [...result.publicKeys.toFields(), result.partialAddress].map(toACVMField)];
|
|
342
|
+
}
|
|
247
343
|
}
|
|
248
344
|
|
|
249
|
-
|
|
345
|
+
// eslint-disable-next-line camelcase
|
|
346
|
+
async aztec_utl_getNotes(
|
|
250
347
|
[ownerSome]: ACVMField[],
|
|
251
348
|
[ownerValue]: ACVMField[],
|
|
252
349
|
[storageSlot]: ACVMField[],
|
|
@@ -268,7 +365,7 @@ export class Oracle {
|
|
|
268
365
|
): Promise<(ACVMField | ACVMField[])[]> {
|
|
269
366
|
// Parse Option<AztecAddress>: ownerSome is 0 for None, 1 for Some
|
|
270
367
|
const owner = Fr.fromString(ownerSome).toNumber() === 1 ? AztecAddress.fromString(ownerValue) : undefined;
|
|
271
|
-
const noteDatas = await this.handlerAsUtility().
|
|
368
|
+
const noteDatas = await this.handlerAsUtility().getNotes(
|
|
272
369
|
owner,
|
|
273
370
|
Fr.fromString(storageSlot),
|
|
274
371
|
+numSelects,
|
|
@@ -307,7 +404,8 @@ export class Oracle {
|
|
|
307
404
|
return arrayOfArraysToBoundedVecOfArrays(returnDataAsArrayOfACVMFieldArrays, +maxNotes, +packedHintedNoteLength);
|
|
308
405
|
}
|
|
309
406
|
|
|
310
|
-
|
|
407
|
+
// eslint-disable-next-line camelcase
|
|
408
|
+
aztec_prv_notifyCreatedNote(
|
|
311
409
|
[owner]: ACVMField[],
|
|
312
410
|
[storageSlot]: ACVMField[],
|
|
313
411
|
[randomness]: ACVMField[],
|
|
@@ -316,7 +414,7 @@ export class Oracle {
|
|
|
316
414
|
[noteHash]: ACVMField[],
|
|
317
415
|
[counter]: ACVMField[],
|
|
318
416
|
): Promise<ACVMField[]> {
|
|
319
|
-
this.handlerAsPrivate().
|
|
417
|
+
this.handlerAsPrivate().notifyCreatedNote(
|
|
320
418
|
AztecAddress.fromString(owner),
|
|
321
419
|
Fr.fromString(storageSlot),
|
|
322
420
|
Fr.fromString(randomness),
|
|
@@ -328,43 +426,47 @@ export class Oracle {
|
|
|
328
426
|
return Promise.resolve([]);
|
|
329
427
|
}
|
|
330
428
|
|
|
331
|
-
|
|
429
|
+
// eslint-disable-next-line camelcase
|
|
430
|
+
async aztec_prv_notifyNullifiedNote(
|
|
332
431
|
[innerNullifier]: ACVMField[],
|
|
333
432
|
[noteHash]: ACVMField[],
|
|
334
433
|
[counter]: ACVMField[],
|
|
335
434
|
): Promise<ACVMField[]> {
|
|
336
|
-
await this.handlerAsPrivate().
|
|
337
|
-
Fr.fromString(innerNullifier),
|
|
338
|
-
Fr.fromString(noteHash),
|
|
339
|
-
+counter,
|
|
340
|
-
);
|
|
435
|
+
await this.handlerAsPrivate().notifyNullifiedNote(Fr.fromString(innerNullifier), Fr.fromString(noteHash), +counter);
|
|
341
436
|
return [];
|
|
342
437
|
}
|
|
343
438
|
|
|
344
|
-
|
|
345
|
-
|
|
439
|
+
// eslint-disable-next-line camelcase
|
|
440
|
+
async aztec_prv_notifyCreatedNullifier([innerNullifier]: ACVMField[]): Promise<ACVMField[]> {
|
|
441
|
+
await this.handlerAsPrivate().notifyCreatedNullifier(Fr.fromString(innerNullifier));
|
|
346
442
|
return [];
|
|
347
443
|
}
|
|
348
444
|
|
|
349
|
-
|
|
350
|
-
|
|
445
|
+
// eslint-disable-next-line camelcase
|
|
446
|
+
async aztec_prv_isNullifierPending(
|
|
447
|
+
[innerNullifier]: ACVMField[],
|
|
448
|
+
[contractAddress]: ACVMField[],
|
|
449
|
+
): Promise<ACVMField[]> {
|
|
450
|
+
const isPending = await this.handlerAsPrivate().isNullifierPending(
|
|
351
451
|
Fr.fromString(innerNullifier),
|
|
352
452
|
AztecAddress.fromString(contractAddress),
|
|
353
453
|
);
|
|
354
454
|
return [toACVMField(isPending)];
|
|
355
455
|
}
|
|
356
456
|
|
|
357
|
-
|
|
358
|
-
|
|
457
|
+
// eslint-disable-next-line camelcase
|
|
458
|
+
async aztec_utl_doesNullifierExist([innerNullifier]: ACVMField[]): Promise<ACVMField[]> {
|
|
459
|
+
const exists = await this.handlerAsUtility().doesNullifierExist(Fr.fromString(innerNullifier));
|
|
359
460
|
return [toACVMField(exists)];
|
|
360
461
|
}
|
|
361
462
|
|
|
362
|
-
|
|
463
|
+
// eslint-disable-next-line camelcase
|
|
464
|
+
async aztec_utl_getL1ToL2MembershipWitness(
|
|
363
465
|
[contractAddress]: ACVMField[],
|
|
364
466
|
[messageHash]: ACVMField[],
|
|
365
467
|
[secret]: ACVMField[],
|
|
366
468
|
): Promise<(ACVMField | ACVMField[])[]> {
|
|
367
|
-
const message = await this.handlerAsUtility().
|
|
469
|
+
const message = await this.handlerAsUtility().getL1ToL2MembershipWitness(
|
|
368
470
|
AztecAddress.fromString(contractAddress),
|
|
369
471
|
Fr.fromString(messageHash),
|
|
370
472
|
Fr.fromString(secret),
|
|
@@ -372,14 +474,15 @@ export class Oracle {
|
|
|
372
474
|
return message.toNoirRepresentation();
|
|
373
475
|
}
|
|
374
476
|
|
|
375
|
-
|
|
477
|
+
// eslint-disable-next-line camelcase
|
|
478
|
+
async aztec_utl_getFromPublicStorage(
|
|
376
479
|
[blockHash]: ACVMField[],
|
|
377
480
|
[contractAddress]: ACVMField[],
|
|
378
481
|
[startStorageSlot]: ACVMField[],
|
|
379
482
|
[numberOfElements]: ACVMField[],
|
|
380
483
|
): Promise<ACVMField[][]> {
|
|
381
|
-
const values = await this.handlerAsUtility().
|
|
382
|
-
|
|
484
|
+
const values = await this.handlerAsUtility().getFromPublicStorage(
|
|
485
|
+
BlockHash.fromString(blockHash),
|
|
383
486
|
new AztecAddress(Fr.fromString(contractAddress)),
|
|
384
487
|
Fr.fromString(startStorageSlot),
|
|
385
488
|
+numberOfElements,
|
|
@@ -387,7 +490,8 @@ export class Oracle {
|
|
|
387
490
|
return [values.map(toACVMField)];
|
|
388
491
|
}
|
|
389
492
|
|
|
390
|
-
|
|
493
|
+
// eslint-disable-next-line camelcase
|
|
494
|
+
aztec_prv_notifyCreatedContractClassLog(
|
|
391
495
|
[contractAddress]: ACVMField[],
|
|
392
496
|
message: ACVMField[],
|
|
393
497
|
[length]: ACVMField[],
|
|
@@ -396,11 +500,12 @@ export class Oracle {
|
|
|
396
500
|
const logFields = new ContractClassLogFields(message.map(Fr.fromString));
|
|
397
501
|
const log = new ContractClassLog(new AztecAddress(Fr.fromString(contractAddress)), logFields, +length);
|
|
398
502
|
|
|
399
|
-
this.handlerAsPrivate().
|
|
503
|
+
this.handlerAsPrivate().notifyCreatedContractClassLog(log, +counter);
|
|
400
504
|
return Promise.resolve([]);
|
|
401
505
|
}
|
|
402
506
|
|
|
403
|
-
|
|
507
|
+
// eslint-disable-next-line camelcase
|
|
508
|
+
async aztec_utl_log(
|
|
404
509
|
level: ACVMField[],
|
|
405
510
|
message: ACVMField[],
|
|
406
511
|
_ignoredFieldsSize: ACVMField[],
|
|
@@ -409,20 +514,21 @@ export class Oracle {
|
|
|
409
514
|
const levelFr = Fr.fromString(level[0]);
|
|
410
515
|
const messageStr = message.map(acvmField => String.fromCharCode(Fr.fromString(acvmField).toNumber())).join('');
|
|
411
516
|
const fieldsFr = fields.map(Fr.fromString);
|
|
412
|
-
this.handlerAsMisc().
|
|
413
|
-
return
|
|
517
|
+
await this.handlerAsMisc().log(levelFr.toNumber(), messageStr, fieldsFr);
|
|
518
|
+
return [];
|
|
414
519
|
}
|
|
415
520
|
|
|
416
521
|
// This function's name is directly hardcoded in `circuit_recorder.ts`. Don't forget to update it there if you
|
|
417
522
|
// change the name here.
|
|
418
|
-
|
|
523
|
+
// eslint-disable-next-line camelcase
|
|
524
|
+
async aztec_prv_callPrivateFunction(
|
|
419
525
|
[contractAddress]: ACVMField[],
|
|
420
526
|
[functionSelector]: ACVMField[],
|
|
421
527
|
[argsHash]: ACVMField[],
|
|
422
528
|
[sideEffectCounter]: ACVMField[],
|
|
423
529
|
[isStaticCall]: ACVMField[],
|
|
424
530
|
): Promise<ACVMField[][]> {
|
|
425
|
-
const { endSideEffectCounter, returnsHash } = await this.handlerAsPrivate().
|
|
531
|
+
const { endSideEffectCounter, returnsHash } = await this.handlerAsPrivate().callPrivateFunction(
|
|
426
532
|
AztecAddress.fromField(Fr.fromString(contractAddress)),
|
|
427
533
|
FunctionSelector.fromField(Fr.fromString(functionSelector)),
|
|
428
534
|
Fr.fromString(argsHash),
|
|
@@ -432,113 +538,165 @@ export class Oracle {
|
|
|
432
538
|
return [[endSideEffectCounter, returnsHash].map(toACVMField)];
|
|
433
539
|
}
|
|
434
540
|
|
|
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
|
-
);
|
|
541
|
+
// eslint-disable-next-line camelcase
|
|
542
|
+
async aztec_prv_assertValidPublicCalldata([calldataHash]: ACVMField[]): Promise<ACVMField[]> {
|
|
543
|
+
await this.handlerAsPrivate().assertValidPublicCalldata(Fr.fromString(calldataHash));
|
|
447
544
|
return [];
|
|
448
545
|
}
|
|
449
546
|
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
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
|
-
);
|
|
462
|
-
return [];
|
|
463
|
-
}
|
|
464
|
-
|
|
465
|
-
async privateNotifySetMinRevertibleSideEffectCounter([minRevertibleSideEffectCounter]: ACVMField[]): Promise<
|
|
466
|
-
ACVMField[]
|
|
467
|
-
> {
|
|
468
|
-
await this.handlerAsPrivate().privateNotifySetMinRevertibleSideEffectCounter(
|
|
469
|
-
Fr.fromString(minRevertibleSideEffectCounter).toNumber(),
|
|
470
|
-
);
|
|
547
|
+
// eslint-disable-next-line camelcase
|
|
548
|
+
async aztec_prv_notifyRevertiblePhaseStart([minRevertibleSideEffectCounter]: ACVMField[]): Promise<ACVMField[]> {
|
|
549
|
+
await this.handlerAsPrivate().notifyRevertiblePhaseStart(Fr.fromString(minRevertibleSideEffectCounter).toNumber());
|
|
471
550
|
return Promise.resolve([]);
|
|
472
551
|
}
|
|
473
552
|
|
|
474
|
-
|
|
475
|
-
|
|
553
|
+
// eslint-disable-next-line camelcase
|
|
554
|
+
async aztec_prv_isExecutionInRevertiblePhase([sideEffectCounter]: ACVMField[]): Promise<ACVMField[]> {
|
|
555
|
+
const isRevertible = await this.handlerAsPrivate().isExecutionInRevertiblePhase(
|
|
476
556
|
Fr.fromString(sideEffectCounter).toNumber(),
|
|
477
557
|
);
|
|
478
558
|
return Promise.resolve([toACVMField(isRevertible)]);
|
|
479
559
|
}
|
|
480
560
|
|
|
481
|
-
|
|
482
|
-
|
|
561
|
+
// eslint-disable-next-line camelcase
|
|
562
|
+
async aztec_prv_getNextAppTagAsSender([sender]: ACVMField[], [recipient]: ACVMField[]): Promise<ACVMField[]> {
|
|
563
|
+
const tag = await this.handlerAsPrivate().getNextAppTagAsSender(
|
|
483
564
|
AztecAddress.fromString(sender),
|
|
484
565
|
AztecAddress.fromString(recipient),
|
|
485
566
|
);
|
|
486
567
|
return [toACVMField(tag.value)];
|
|
487
568
|
}
|
|
488
569
|
|
|
489
|
-
|
|
490
|
-
|
|
570
|
+
// eslint-disable-next-line camelcase
|
|
571
|
+
async aztec_utl_getPendingTaggedLogs(
|
|
572
|
+
[pendingTaggedLogArrayBaseSlot]: ACVMField[],
|
|
573
|
+
[scope]: ACVMField[],
|
|
574
|
+
): Promise<ACVMField[]> {
|
|
575
|
+
await this.handlerAsUtility().getPendingTaggedLogs(
|
|
576
|
+
Fr.fromString(pendingTaggedLogArrayBaseSlot),
|
|
577
|
+
AztecAddress.fromString(scope),
|
|
578
|
+
);
|
|
491
579
|
return [];
|
|
492
580
|
}
|
|
493
581
|
|
|
494
|
-
|
|
582
|
+
// eslint-disable-next-line camelcase
|
|
583
|
+
async aztec_utl_getPendingTaggedLogs_v2([scope]: ACVMField[]): Promise<ACVMField[]> {
|
|
584
|
+
const slot = await this.handlerAsUtility().getPendingTaggedLogsV2(AztecAddress.fromString(scope));
|
|
585
|
+
return [toACVMField(slot)];
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
// eslint-disable-next-line camelcase
|
|
589
|
+
async aztec_utl_validateAndStoreEnqueuedNotesAndEvents(
|
|
495
590
|
[contractAddress]: ACVMField[],
|
|
496
591
|
[noteValidationRequestsArrayBaseSlot]: ACVMField[],
|
|
497
592
|
[eventValidationRequestsArrayBaseSlot]: ACVMField[],
|
|
593
|
+
[maxNotePackedLen]: ACVMField[],
|
|
594
|
+
[maxEventSerializedLen]: ACVMField[],
|
|
595
|
+
[scope]: ACVMField[],
|
|
498
596
|
): Promise<ACVMField[]> {
|
|
499
|
-
await this.handlerAsUtility().
|
|
597
|
+
await this.handlerAsUtility().validateAndStoreEnqueuedNotesAndEvents(
|
|
500
598
|
AztecAddress.fromString(contractAddress),
|
|
501
599
|
Fr.fromString(noteValidationRequestsArrayBaseSlot),
|
|
502
600
|
Fr.fromString(eventValidationRequestsArrayBaseSlot),
|
|
601
|
+
Fr.fromString(maxNotePackedLen).toNumber(),
|
|
602
|
+
Fr.fromString(maxEventSerializedLen).toNumber(),
|
|
603
|
+
AztecAddress.fromString(scope),
|
|
503
604
|
);
|
|
504
605
|
|
|
505
606
|
return [];
|
|
506
607
|
}
|
|
507
608
|
|
|
508
|
-
|
|
609
|
+
// eslint-disable-next-line camelcase
|
|
610
|
+
async aztec_utl_validateAndStoreEnqueuedNotesAndEvents_v2(
|
|
611
|
+
[noteValidationRequestsArrayBaseSlot]: ACVMField[],
|
|
612
|
+
[eventValidationRequestsArrayBaseSlot]: ACVMField[],
|
|
613
|
+
[maxNotePackedLen]: ACVMField[],
|
|
614
|
+
[maxEventSerializedLen]: ACVMField[],
|
|
615
|
+
[scope]: ACVMField[],
|
|
616
|
+
): Promise<ACVMField[]> {
|
|
617
|
+
await this.handlerAsUtility().validateAndStoreEnqueuedNotesAndEventsV2(
|
|
618
|
+
Fr.fromString(noteValidationRequestsArrayBaseSlot),
|
|
619
|
+
Fr.fromString(eventValidationRequestsArrayBaseSlot),
|
|
620
|
+
Fr.fromString(maxNotePackedLen).toNumber(),
|
|
621
|
+
Fr.fromString(maxEventSerializedLen).toNumber(),
|
|
622
|
+
AztecAddress.fromString(scope),
|
|
623
|
+
);
|
|
624
|
+
return [];
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
// eslint-disable-next-line camelcase
|
|
628
|
+
async aztec_utl_getLogsByTag(
|
|
509
629
|
[contractAddress]: ACVMField[],
|
|
510
630
|
[logRetrievalRequestsArrayBaseSlot]: ACVMField[],
|
|
511
631
|
[logRetrievalResponsesArrayBaseSlot]: ACVMField[],
|
|
632
|
+
[scope]: ACVMField[],
|
|
512
633
|
): Promise<ACVMField[]> {
|
|
513
|
-
await this.handlerAsUtility().
|
|
634
|
+
await this.handlerAsUtility().getLogsByTag(
|
|
514
635
|
AztecAddress.fromString(contractAddress),
|
|
515
636
|
Fr.fromString(logRetrievalRequestsArrayBaseSlot),
|
|
516
637
|
Fr.fromString(logRetrievalResponsesArrayBaseSlot),
|
|
638
|
+
AztecAddress.fromString(scope),
|
|
517
639
|
);
|
|
518
640
|
return [];
|
|
519
641
|
}
|
|
520
642
|
|
|
521
|
-
|
|
643
|
+
// eslint-disable-next-line camelcase
|
|
644
|
+
async aztec_utl_getMessageContextsByTxHash(
|
|
645
|
+
[contractAddress]: ACVMField[],
|
|
646
|
+
[messageContextRequestsArrayBaseSlot]: ACVMField[],
|
|
647
|
+
[messageContextResponsesArrayBaseSlot]: ACVMField[],
|
|
648
|
+
[scope]: ACVMField[],
|
|
649
|
+
): Promise<ACVMField[]> {
|
|
650
|
+
await this.handlerAsUtility().getMessageContextsByTxHash(
|
|
651
|
+
AztecAddress.fromString(contractAddress),
|
|
652
|
+
Fr.fromString(messageContextRequestsArrayBaseSlot),
|
|
653
|
+
Fr.fromString(messageContextResponsesArrayBaseSlot),
|
|
654
|
+
AztecAddress.fromString(scope),
|
|
655
|
+
);
|
|
656
|
+
return [];
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
// eslint-disable-next-line camelcase
|
|
660
|
+
async aztec_utl_getLogsByTag_v2([requestArrayBaseSlot]: ACVMField[]): Promise<ACVMField[]> {
|
|
661
|
+
const responseSlot = await this.handlerAsUtility().getLogsByTagV2(Fr.fromString(requestArrayBaseSlot));
|
|
662
|
+
return [toACVMField(responseSlot)];
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
// eslint-disable-next-line camelcase
|
|
666
|
+
async aztec_utl_getMessageContextsByTxHash_v2([requestArrayBaseSlot]: ACVMField[]): Promise<ACVMField[]> {
|
|
667
|
+
const responseSlot = await this.handlerAsUtility().getMessageContextsByTxHashV2(
|
|
668
|
+
Fr.fromString(requestArrayBaseSlot),
|
|
669
|
+
);
|
|
670
|
+
return [toACVMField(responseSlot)];
|
|
671
|
+
}
|
|
672
|
+
|
|
673
|
+
// eslint-disable-next-line camelcase
|
|
674
|
+
aztec_utl_setCapsule(
|
|
522
675
|
[contractAddress]: ACVMField[],
|
|
523
676
|
[slot]: ACVMField[],
|
|
524
677
|
capsule: ACVMField[],
|
|
678
|
+
[scope]: ACVMField[],
|
|
525
679
|
): Promise<ACVMField[]> {
|
|
526
|
-
|
|
680
|
+
this.handlerAsUtility().setCapsule(
|
|
527
681
|
AztecAddress.fromField(Fr.fromString(contractAddress)),
|
|
528
682
|
Fr.fromString(slot),
|
|
529
683
|
capsule.map(Fr.fromString),
|
|
684
|
+
AztecAddress.fromField(Fr.fromString(scope)),
|
|
530
685
|
);
|
|
531
|
-
return [];
|
|
686
|
+
return Promise.resolve([]);
|
|
532
687
|
}
|
|
533
688
|
|
|
534
|
-
|
|
689
|
+
// eslint-disable-next-line camelcase
|
|
690
|
+
async aztec_utl_getCapsule(
|
|
535
691
|
[contractAddress]: ACVMField[],
|
|
536
692
|
[slot]: ACVMField[],
|
|
537
693
|
[tSize]: ACVMField[],
|
|
694
|
+
[scope]: ACVMField[],
|
|
538
695
|
): Promise<(ACVMField | ACVMField[])[]> {
|
|
539
|
-
const values = await this.handlerAsUtility().
|
|
696
|
+
const values = await this.handlerAsUtility().getCapsule(
|
|
540
697
|
AztecAddress.fromField(Fr.fromString(contractAddress)),
|
|
541
698
|
Fr.fromString(slot),
|
|
699
|
+
AztecAddress.fromField(Fr.fromString(scope)),
|
|
542
700
|
);
|
|
543
701
|
|
|
544
702
|
// We are going to return a Noir Option struct to represent the possibility of null values. Options are a struct
|
|
@@ -552,30 +710,86 @@ export class Oracle {
|
|
|
552
710
|
}
|
|
553
711
|
}
|
|
554
712
|
|
|
555
|
-
|
|
556
|
-
|
|
713
|
+
// eslint-disable-next-line camelcase
|
|
714
|
+
aztec_utl_deleteCapsule(
|
|
715
|
+
[contractAddress]: ACVMField[],
|
|
716
|
+
[slot]: ACVMField[],
|
|
717
|
+
[scope]: ACVMField[],
|
|
718
|
+
): Promise<ACVMField[]> {
|
|
719
|
+
this.handlerAsUtility().deleteCapsule(
|
|
557
720
|
AztecAddress.fromField(Fr.fromString(contractAddress)),
|
|
558
721
|
Fr.fromString(slot),
|
|
722
|
+
AztecAddress.fromField(Fr.fromString(scope)),
|
|
559
723
|
);
|
|
560
|
-
return [];
|
|
724
|
+
return Promise.resolve([]);
|
|
561
725
|
}
|
|
562
726
|
|
|
563
|
-
|
|
727
|
+
// eslint-disable-next-line camelcase
|
|
728
|
+
async aztec_utl_copyCapsule(
|
|
564
729
|
[contractAddress]: ACVMField[],
|
|
565
730
|
[srcSlot]: ACVMField[],
|
|
566
731
|
[dstSlot]: ACVMField[],
|
|
567
732
|
[numEntries]: ACVMField[],
|
|
733
|
+
[scope]: ACVMField[],
|
|
568
734
|
): Promise<ACVMField[]> {
|
|
569
|
-
await this.handlerAsUtility().
|
|
735
|
+
await this.handlerAsUtility().copyCapsule(
|
|
570
736
|
AztecAddress.fromField(Fr.fromString(contractAddress)),
|
|
571
737
|
Fr.fromString(srcSlot),
|
|
572
738
|
Fr.fromString(dstSlot),
|
|
573
739
|
Fr.fromString(numEntries).toNumber(),
|
|
740
|
+
AztecAddress.fromField(Fr.fromString(scope)),
|
|
574
741
|
);
|
|
575
742
|
return [];
|
|
576
743
|
}
|
|
577
744
|
|
|
578
|
-
|
|
745
|
+
// eslint-disable-next-line camelcase
|
|
746
|
+
aztec_utl_pushEphemeral([slot]: ACVMField[], elements: ACVMField[]): Promise<ACVMField[]> {
|
|
747
|
+
const newLen = this.handlerAsUtility().pushEphemeral(Fr.fromString(slot), elements.map(Fr.fromString));
|
|
748
|
+
return Promise.resolve([toACVMField(newLen)]);
|
|
749
|
+
}
|
|
750
|
+
|
|
751
|
+
// eslint-disable-next-line camelcase
|
|
752
|
+
aztec_utl_popEphemeral([slot]: ACVMField[]): Promise<ACVMField[][]> {
|
|
753
|
+
const element = this.handlerAsUtility().popEphemeral(Fr.fromString(slot));
|
|
754
|
+
return Promise.resolve([element.map(toACVMField)]);
|
|
755
|
+
}
|
|
756
|
+
|
|
757
|
+
// eslint-disable-next-line camelcase
|
|
758
|
+
aztec_utl_getEphemeral([slot]: ACVMField[], [index]: ACVMField[]): Promise<ACVMField[][]> {
|
|
759
|
+
const element = this.handlerAsUtility().getEphemeral(Fr.fromString(slot), Fr.fromString(index).toNumber());
|
|
760
|
+
return Promise.resolve([element.map(toACVMField)]);
|
|
761
|
+
}
|
|
762
|
+
|
|
763
|
+
// eslint-disable-next-line camelcase
|
|
764
|
+
aztec_utl_setEphemeral([slot]: ACVMField[], [index]: ACVMField[], elements: ACVMField[]): Promise<ACVMField[]> {
|
|
765
|
+
this.handlerAsUtility().setEphemeral(
|
|
766
|
+
Fr.fromString(slot),
|
|
767
|
+
Fr.fromString(index).toNumber(),
|
|
768
|
+
elements.map(Fr.fromString),
|
|
769
|
+
);
|
|
770
|
+
return Promise.resolve([]);
|
|
771
|
+
}
|
|
772
|
+
|
|
773
|
+
// eslint-disable-next-line camelcase
|
|
774
|
+
aztec_utl_getEphemeralLen([slot]: ACVMField[]): Promise<ACVMField[]> {
|
|
775
|
+
const len = this.handlerAsUtility().getEphemeralLen(Fr.fromString(slot));
|
|
776
|
+
return Promise.resolve([toACVMField(len)]);
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
// eslint-disable-next-line camelcase
|
|
780
|
+
aztec_utl_removeEphemeral([slot]: ACVMField[], [index]: ACVMField[]): Promise<ACVMField[]> {
|
|
781
|
+
this.handlerAsUtility().removeEphemeral(Fr.fromString(slot), Fr.fromString(index).toNumber());
|
|
782
|
+
return Promise.resolve([]);
|
|
783
|
+
}
|
|
784
|
+
|
|
785
|
+
// eslint-disable-next-line camelcase
|
|
786
|
+
aztec_utl_clearEphemeral([slot]: ACVMField[]): Promise<ACVMField[]> {
|
|
787
|
+
this.handlerAsUtility().clearEphemeral(Fr.fromString(slot));
|
|
788
|
+
return Promise.resolve([]);
|
|
789
|
+
}
|
|
790
|
+
|
|
791
|
+
// eslint-disable-next-line camelcase
|
|
792
|
+
async aztec_utl_decryptAes128(
|
|
579
793
|
ciphertextBVecStorage: ACVMField[],
|
|
580
794
|
[ciphertextLength]: ACVMField[],
|
|
581
795
|
iv: ACVMField[],
|
|
@@ -585,36 +799,63 @@ export class Oracle {
|
|
|
585
799
|
const ivBuffer = fromUintArray(iv, 8);
|
|
586
800
|
const symKeyBuffer = fromUintArray(symKey, 8);
|
|
587
801
|
|
|
588
|
-
|
|
589
|
-
|
|
802
|
+
// Noir Option<BoundedVec> is encoded as [is_some: Field, storage: Field[], length: Field].
|
|
803
|
+
try {
|
|
804
|
+
const plaintext = await this.handlerAsUtility().decryptAes128(ciphertext, ivBuffer, symKeyBuffer);
|
|
805
|
+
const [storage, length] = bufferToBoundedVec(plaintext, ciphertextBVecStorage.length);
|
|
806
|
+
return [toACVMField(1), storage, length];
|
|
807
|
+
} catch {
|
|
808
|
+
const zeroStorage = Array(ciphertextBVecStorage.length).fill(toACVMField(0));
|
|
809
|
+
return [toACVMField(0), zeroStorage, toACVMField(0)];
|
|
810
|
+
}
|
|
590
811
|
}
|
|
591
812
|
|
|
592
|
-
|
|
813
|
+
// eslint-disable-next-line camelcase
|
|
814
|
+
async aztec_utl_getSharedSecret(
|
|
593
815
|
[address]: ACVMField[],
|
|
594
816
|
[ephPKField0]: ACVMField[],
|
|
595
817
|
[ephPKField1]: ACVMField[],
|
|
596
818
|
[ephPKField2]: ACVMField[],
|
|
819
|
+
[contractAddress]: ACVMField[],
|
|
597
820
|
): Promise<ACVMField[]> {
|
|
598
|
-
const secret = await this.handlerAsUtility().
|
|
821
|
+
const secret = await this.handlerAsUtility().getSharedSecret(
|
|
599
822
|
AztecAddress.fromField(Fr.fromString(address)),
|
|
600
823
|
Point.fromFields([ephPKField0, ephPKField1, ephPKField2].map(Fr.fromString)),
|
|
824
|
+
AztecAddress.fromField(Fr.fromString(contractAddress)),
|
|
601
825
|
);
|
|
602
|
-
return secret
|
|
826
|
+
return [toACVMField(secret)];
|
|
827
|
+
}
|
|
828
|
+
|
|
829
|
+
// eslint-disable-next-line camelcase
|
|
830
|
+
aztec_utl_setContractSyncCacheInvalid(
|
|
831
|
+
[contractAddress]: ACVMField[],
|
|
832
|
+
scopes: ACVMField[],
|
|
833
|
+
[scopeCount]: ACVMField[],
|
|
834
|
+
): Promise<ACVMField[]> {
|
|
835
|
+
const scopeAddresses = scopes.slice(0, +scopeCount).map(s => AztecAddress.fromField(Fr.fromString(s)));
|
|
836
|
+
this.handlerAsUtility().setContractSyncCacheInvalid(
|
|
837
|
+
AztecAddress.fromField(Fr.fromString(contractAddress)),
|
|
838
|
+
scopeAddresses,
|
|
839
|
+
);
|
|
840
|
+
return Promise.resolve([]);
|
|
603
841
|
}
|
|
604
842
|
|
|
605
|
-
|
|
606
|
-
|
|
843
|
+
// eslint-disable-next-line camelcase
|
|
844
|
+
async aztec_utl_emitOffchainEffect(data: ACVMField[]) {
|
|
845
|
+
await this.handlerAsUtility().emitOffchainEffect(data.map(Fr.fromString));
|
|
607
846
|
return [];
|
|
608
847
|
}
|
|
609
848
|
|
|
610
|
-
|
|
611
|
-
|
|
849
|
+
// eslint-disable-next-line camelcase
|
|
850
|
+
async aztec_prv_getSenderForTags(): Promise<ACVMField[]> {
|
|
851
|
+
const sender = await this.handlerAsPrivate().getSenderForTags();
|
|
612
852
|
// Return [1, address] for Some(address), [0, 0] for None
|
|
613
853
|
return sender ? [toACVMField(1n), toACVMField(sender)] : [toACVMField(0n), toACVMField(0n)];
|
|
614
854
|
}
|
|
615
855
|
|
|
616
|
-
|
|
617
|
-
|
|
856
|
+
// eslint-disable-next-line camelcase
|
|
857
|
+
async aztec_prv_setSenderForTags([senderForTags]: ACVMField[]): Promise<ACVMField[]> {
|
|
858
|
+
await this.handlerAsPrivate().setSenderForTags(AztecAddress.fromField(Fr.fromString(senderForTags)));
|
|
618
859
|
return [];
|
|
619
860
|
}
|
|
620
861
|
}
|