@aztec/pxe 0.0.1-commit.1142ef1 → 0.0.1-commit.11bf3dd6e
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 +5 -5
- package/dest/block_synchronizer/block_synchronizer.d.ts +16 -6
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +91 -22
- package/dest/config/index.d.ts +4 -2
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +12 -2
- package/dest/config/package_info.js +1 -1
- package/dest/contract_function_simulator/benchmarked_node.d.ts +9 -0
- package/dest/contract_function_simulator/benchmarked_node.d.ts.map +1 -0
- package/dest/contract_function_simulator/benchmarked_node.js +77 -0
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +66 -36
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +230 -89
- 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_note_cache.d.ts +18 -9
- package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_note_cache.js +45 -28
- 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 +3 -2
- package/dest/contract_function_simulator/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.js +2 -1
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +5 -7
- 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 +9 -11
- 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 +5 -8
- 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 +7 -12
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +4 -10
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/utility_context.js +7 -18
- package/dest/contract_function_simulator/oracle/interfaces.d.ts +67 -47
- 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/message_load_oracle_inputs.d.ts +3 -1
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +6 -6
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/note_packing_utils.js +8 -8
- package/dest/contract_function_simulator/oracle/oracle.d.ts +75 -42
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +327 -119
- package/dest/contract_function_simulator/oracle/private_execution.d.ts +2 -26
- package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution.js +5 -38
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +59 -76
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +125 -90
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +140 -73
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +347 -162
- 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 +20 -3
- 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 +116 -0
- package/dest/contract_sync/helpers.d.ts +28 -0
- package/dest/contract_sync/helpers.d.ts.map +1 -0
- package/dest/contract_sync/helpers.js +60 -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 +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 +5 -2
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +4 -1
- 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 +7 -6
- package/dest/events/event_service.d.ts.map +1 -1
- package/dest/events/event_service.js +33 -24
- package/dest/events/private_event_filter_validator.d.ts +6 -5
- package/dest/events/private_event_filter_validator.d.ts.map +1 -1
- package/dest/events/private_event_filter_validator.js +20 -6
- 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 +11 -9
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +52 -64
- 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 -9
- package/dest/notes/note_service.d.ts.map +1 -1
- package/dest/notes/note_service.js +45 -40
- 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 -9
- 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 +3 -3
- package/dest/private_kernel/hints/index.d.ts.map +1 -1
- package/dest/private_kernel/hints/index.js +2 -2
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +29 -0
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -0
- package/dest/private_kernel/hints/{build_private_kernel_reset_private_inputs.js → private_kernel_reset_private_inputs_builder.js} +140 -73
- 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 -16
- package/dest/private_kernel/private_kernel_oracle.d.ts +24 -25
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle.js +91 -2
- package/dest/pxe.d.ts +80 -59
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +163 -145
- 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 +9 -2
- 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 +25 -10
- package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
- package/dest/storage/capsule_store/capsule_store.js +143 -28
- 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 -16
- package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
- package/dest/storage/contract_store/contract_store.js +160 -85
- package/dest/storage/metadata.d.ts +1 -1
- package/dest/storage/metadata.js +1 -1
- package/dest/storage/note_store/note_store.d.ts +50 -51
- package/dest/storage/note_store/note_store.d.ts.map +1 -1
- package/dest/storage/note_store/note_store.js +284 -263
- 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 +43 -8
- package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
- package/dest/storage/private_event_store/private_event_store.js +229 -111
- 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 +16 -9
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/recipient_tagging_store.js +88 -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 +43 -32
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/sender_tagging_store.js +300 -122
- 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 +12 -26
- 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 +18 -12
- 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 +8 -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 +44 -27
- package/package.json +27 -18
- package/src/bin/check_oracle_version.ts +5 -4
- package/src/block_synchronizer/block_synchronizer.ts +113 -35
- package/src/config/index.ts +9 -1
- package/src/config/package_info.ts +1 -1
- package/src/contract_function_simulator/benchmarked_node.ts +103 -0
- package/src/contract_function_simulator/contract_function_simulator.ts +392 -154
- package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
- package/src/contract_function_simulator/execution_note_cache.ts +44 -25
- package/src/contract_function_simulator/execution_tagging_index_cache.ts +19 -14
- package/src/contract_function_simulator/index.ts +2 -1
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +10 -10
- 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 +5 -11
- package/src/contract_function_simulator/noir-structs/utility_context.ts +6 -25
- package/src/contract_function_simulator/oracle/interfaces.ts +97 -59
- package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +104 -0
- package/src/contract_function_simulator/oracle/note_packing_utils.ts +10 -10
- package/src/contract_function_simulator/oracle/oracle.ts +422 -166
- package/src/contract_function_simulator/oracle/private_execution.ts +5 -71
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +169 -185
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +578 -193
- package/src/contract_function_simulator/pick_notes.ts +22 -3
- 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 +176 -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 +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 +4 -1
- package/src/entrypoints/server/utils.ts +24 -29
- package/src/events/event_service.ts +31 -26
- package/src/events/private_event_filter_validator.ts +23 -5
- package/src/job_coordinator/job_coordinator.ts +4 -3
- package/src/logs/log_service.ts +94 -104
- package/src/messages/message_context_service.ts +44 -0
- package/src/notes/note_service.ts +54 -48
- package/src/notes_filter.ts +24 -0
- package/src/oracle_version.ts +20 -9
- 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 +2 -2
- package/src/private_kernel/hints/{build_private_kernel_reset_private_inputs.ts → private_kernel_reset_private_inputs_builder.ts} +195 -136
- package/src/private_kernel/hints/test_utils.ts +325 -0
- package/src/private_kernel/private_kernel_execution_prover.ts +25 -20
- package/src/private_kernel/private_kernel_oracle.ts +116 -37
- package/src/pxe.ts +297 -223
- package/src/storage/address_store/address_store.ts +15 -15
- package/src/storage/anchor_block_store/anchor_block_store.ts +9 -1
- package/src/storage/capsule_store/capsule_service.ts +90 -0
- package/src/storage/capsule_store/capsule_store.ts +183 -29
- package/src/storage/capsule_store/index.ts +1 -0
- package/src/storage/contract_store/contract_store.ts +193 -101
- package/src/storage/metadata.ts +1 -1
- package/src/storage/note_store/note_store.ts +323 -320
- package/src/storage/note_store/stored_note.ts +48 -0
- package/src/storage/private_event_store/private_event_store.ts +296 -124
- package/src/storage/private_event_store/stored_private_event.ts +73 -0
- package/src/storage/tagging_store/recipient_tagging_store.ts +111 -21
- package/src/storage/tagging_store/sender_address_book_store.ts +20 -14
- package/src/storage/tagging_store/sender_tagging_store.ts +366 -134
- 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 +27 -29
- 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 +31 -15
- 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 +42 -29
- package/dest/contract_function_simulator/proxied_node.d.ts +0 -9
- package/dest/contract_function_simulator/proxied_node.d.ts.map +0 -1
- package/dest/contract_function_simulator/proxied_node.js +0 -27
- package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts +0 -28
- package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.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
- package/dest/private_kernel/private_kernel_oracle_impl.d.ts +0 -46
- package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +0 -1
- package/dest/private_kernel/private_kernel_oracle_impl.js +0 -85
- package/dest/public_storage/public_storage_service.d.ts +0 -24
- package/dest/public_storage/public_storage_service.d.ts.map +0 -1
- package/dest/public_storage/public_storage_service.js +0 -26
- package/dest/tree_membership/tree_membership_service.d.ts +0 -52
- package/dest/tree_membership/tree_membership_service.d.ts.map +0 -1
- package/dest/tree_membership/tree_membership_service.js +0 -84
- package/src/contract_function_simulator/proxied_node.ts +0 -33
- package/src/private_kernel/private_kernel_oracle_impl.ts +0 -127
- package/src/public_storage/public_storage_service.ts +0 -33
- package/src/tree_membership/tree_membership_service.ts +0 -112
|
@@ -12,11 +12,13 @@ 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 { BlockHash } from '@aztec/stdlib/block';
|
|
15
16
|
import { ContractClassLog, ContractClassLogFields } from '@aztec/stdlib/logs';
|
|
16
|
-
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
17
17
|
|
|
18
|
+
import { ORACLE_VERSION_MAJOR, ORACLE_VERSION_MINOR } from '../../oracle_version.js';
|
|
18
19
|
import type { IMiscOracle, IPrivateExecutionOracle, IUtilityExecutionOracle } from './interfaces.js';
|
|
19
|
-
import {
|
|
20
|
+
import { buildLegacyOracleCallbacks } from './legacy_oracle_mappings.js';
|
|
21
|
+
import { packAsHintedNote } from './note_packing_utils.js';
|
|
20
22
|
|
|
21
23
|
export class UnavailableOracleError extends Error {
|
|
22
24
|
constructor(oracleName: string) {
|
|
@@ -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,109 +220,130 @@ export class Oracle {
|
|
|
137
220
|
].map(toACVMField);
|
|
138
221
|
}
|
|
139
222
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
[
|
|
143
|
-
[
|
|
223
|
+
// eslint-disable-next-line camelcase
|
|
224
|
+
async aztec_utl_getNoteHashMembershipWitness(
|
|
225
|
+
[anchorBlockHash]: ACVMField[],
|
|
226
|
+
[noteHash]: ACVMField[],
|
|
144
227
|
): Promise<(ACVMField | ACVMField[])[]> {
|
|
145
|
-
const
|
|
146
|
-
const
|
|
147
|
-
const parsedLeafValue = Fr.fromString(leafValue);
|
|
228
|
+
const parsedAnchorBlockHash = BlockHash.fromString(anchorBlockHash);
|
|
229
|
+
const parsedNoteHash = Fr.fromString(noteHash);
|
|
148
230
|
|
|
149
|
-
const witness = await this.handlerAsUtility().
|
|
150
|
-
BlockNumber(parsedBlockNumber),
|
|
151
|
-
parsedTreeId,
|
|
152
|
-
parsedLeafValue,
|
|
153
|
-
);
|
|
231
|
+
const witness = await this.handlerAsUtility().getNoteHashMembershipWitness(parsedAnchorBlockHash, parsedNoteHash);
|
|
154
232
|
if (!witness) {
|
|
155
233
|
throw new Error(
|
|
156
|
-
`
|
|
234
|
+
`Note hash ${noteHash} not found in the note hash tree at anchor block hash ${parsedAnchorBlockHash.toString()}.`,
|
|
157
235
|
);
|
|
158
236
|
}
|
|
159
|
-
return
|
|
237
|
+
return witness.toNoirRepresentation();
|
|
160
238
|
}
|
|
161
239
|
|
|
162
|
-
|
|
163
|
-
|
|
240
|
+
// eslint-disable-next-line camelcase
|
|
241
|
+
async aztec_utl_getBlockHashMembershipWitness(
|
|
242
|
+
[anchorBlockHash]: ACVMField[],
|
|
243
|
+
[blockHash]: ACVMField[],
|
|
244
|
+
): Promise<(ACVMField | ACVMField[])[]> {
|
|
245
|
+
const parsedAnchorBlockHash = BlockHash.fromString(anchorBlockHash);
|
|
246
|
+
const parsedBlockHash = BlockHash.fromString(blockHash);
|
|
247
|
+
|
|
248
|
+
const witness = await this.handlerAsUtility().getBlockHashMembershipWitness(parsedAnchorBlockHash, parsedBlockHash);
|
|
249
|
+
if (!witness) {
|
|
250
|
+
throw new Error(
|
|
251
|
+
`Block hash ${parsedBlockHash.toString()} not found in the archive tree at anchor block ${parsedAnchorBlockHash.toString()}.`,
|
|
252
|
+
);
|
|
253
|
+
}
|
|
254
|
+
return witness.toNoirRepresentation();
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
// eslint-disable-next-line camelcase
|
|
258
|
+
async aztec_utl_getNullifierMembershipWitness(
|
|
259
|
+
[blockHash]: ACVMField[],
|
|
164
260
|
[nullifier]: ACVMField[], // nullifier, we try to find the witness for (to prove inclusion)
|
|
165
261
|
): Promise<(ACVMField | ACVMField[])[]> {
|
|
166
|
-
const
|
|
262
|
+
const parsedBlockHash = BlockHash.fromString(blockHash);
|
|
167
263
|
const parsedNullifier = Fr.fromString(nullifier);
|
|
168
264
|
|
|
169
|
-
const witness = await this.handlerAsUtility().
|
|
170
|
-
BlockNumber(parsedBlockNumber),
|
|
171
|
-
parsedNullifier,
|
|
172
|
-
);
|
|
265
|
+
const witness = await this.handlerAsUtility().getNullifierMembershipWitness(parsedBlockHash, parsedNullifier);
|
|
173
266
|
if (!witness) {
|
|
174
|
-
throw new Error(
|
|
267
|
+
throw new Error(
|
|
268
|
+
`Nullifier witness not found for nullifier ${parsedNullifier} at block hash ${parsedBlockHash.toString()}.`,
|
|
269
|
+
);
|
|
175
270
|
}
|
|
176
271
|
return witness.toNoirRepresentation();
|
|
177
272
|
}
|
|
178
273
|
|
|
179
|
-
|
|
180
|
-
|
|
274
|
+
// eslint-disable-next-line camelcase
|
|
275
|
+
async aztec_utl_getLowNullifierMembershipWitness(
|
|
276
|
+
[blockHash]: ACVMField[],
|
|
181
277
|
[nullifier]: ACVMField[], // nullifier, we try to find the low nullifier witness for (to prove non-inclusion)
|
|
182
278
|
): Promise<(ACVMField | ACVMField[])[]> {
|
|
183
|
-
const
|
|
279
|
+
const parsedBlockHash = BlockHash.fromString(blockHash);
|
|
184
280
|
const parsedNullifier = Fr.fromString(nullifier);
|
|
185
281
|
|
|
186
|
-
const witness = await this.handlerAsUtility().
|
|
187
|
-
BlockNumber(parsedBlockNumber),
|
|
188
|
-
parsedNullifier,
|
|
189
|
-
);
|
|
282
|
+
const witness = await this.handlerAsUtility().getLowNullifierMembershipWitness(parsedBlockHash, parsedNullifier);
|
|
190
283
|
if (!witness) {
|
|
191
284
|
throw new Error(
|
|
192
|
-
`Low nullifier witness not found for nullifier ${parsedNullifier} at block ${
|
|
285
|
+
`Low nullifier witness not found for nullifier ${parsedNullifier} at block hash ${parsedBlockHash.toString()}.`,
|
|
193
286
|
);
|
|
194
287
|
}
|
|
195
288
|
return witness.toNoirRepresentation();
|
|
196
289
|
}
|
|
197
290
|
|
|
198
|
-
|
|
199
|
-
|
|
291
|
+
// eslint-disable-next-line camelcase
|
|
292
|
+
async aztec_utl_getPublicDataWitness(
|
|
293
|
+
[blockHash]: ACVMField[],
|
|
200
294
|
[leafSlot]: ACVMField[],
|
|
201
295
|
): Promise<(ACVMField | ACVMField[])[]> {
|
|
202
|
-
const
|
|
296
|
+
const parsedBlockHash = BlockHash.fromString(blockHash);
|
|
203
297
|
const parsedLeafSlot = Fr.fromString(leafSlot);
|
|
204
298
|
|
|
205
|
-
const witness = await this.handlerAsUtility().
|
|
206
|
-
BlockNumber(parsedBlockNumber),
|
|
207
|
-
parsedLeafSlot,
|
|
208
|
-
);
|
|
299
|
+
const witness = await this.handlerAsUtility().getPublicDataWitness(parsedBlockHash, parsedLeafSlot);
|
|
209
300
|
if (!witness) {
|
|
210
|
-
throw new Error(
|
|
301
|
+
throw new Error(
|
|
302
|
+
`Public data witness not found for slot ${parsedLeafSlot} at block hash ${parsedBlockHash.toString()}.`,
|
|
303
|
+
);
|
|
211
304
|
}
|
|
212
305
|
return witness.toNoirRepresentation();
|
|
213
306
|
}
|
|
214
307
|
|
|
215
|
-
|
|
308
|
+
// eslint-disable-next-line camelcase
|
|
309
|
+
async aztec_utl_getBlockHeader([blockNumber]: ACVMField[]): Promise<ACVMField[]> {
|
|
216
310
|
const parsedBlockNumber = Fr.fromString(blockNumber).toNumber();
|
|
217
311
|
|
|
218
|
-
const header = await this.handlerAsUtility().
|
|
312
|
+
const header = await this.handlerAsUtility().getBlockHeader(BlockNumber(parsedBlockNumber));
|
|
219
313
|
if (!header) {
|
|
220
314
|
throw new Error(`Block header not found for block ${parsedBlockNumber}.`);
|
|
221
315
|
}
|
|
222
316
|
return header.toFields().map(toACVMField);
|
|
223
317
|
}
|
|
224
318
|
|
|
225
|
-
|
|
319
|
+
// eslint-disable-next-line camelcase
|
|
320
|
+
async aztec_utl_getAuthWitness([messageHash]: ACVMField[]): Promise<ACVMField[][]> {
|
|
226
321
|
const messageHashField = Fr.fromString(messageHash);
|
|
227
|
-
const witness = await this.handlerAsUtility().
|
|
322
|
+
const witness = await this.handlerAsUtility().getAuthWitness(messageHashField);
|
|
228
323
|
if (!witness) {
|
|
229
324
|
throw new Error(`Unknown auth witness for message hash ${messageHashField}`);
|
|
230
325
|
}
|
|
231
326
|
return [witness.map(toACVMField)];
|
|
232
327
|
}
|
|
233
328
|
|
|
234
|
-
|
|
329
|
+
// eslint-disable-next-line camelcase
|
|
330
|
+
async aztec_utl_getPublicKeysAndPartialAddress([address]: ACVMField[]): Promise<(ACVMField | ACVMField[])[]> {
|
|
235
331
|
const parsedAddress = AztecAddress.fromField(Fr.fromString(address));
|
|
236
|
-
const
|
|
237
|
-
await this.handlerAsUtility().utilityGetPublicKeysAndPartialAddress(parsedAddress);
|
|
332
|
+
const result = await this.handlerAsUtility().getPublicKeysAndPartialAddress(parsedAddress);
|
|
238
333
|
|
|
239
|
-
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
|
+
}
|
|
240
343
|
}
|
|
241
344
|
|
|
242
|
-
|
|
345
|
+
// eslint-disable-next-line camelcase
|
|
346
|
+
async aztec_utl_getNotes(
|
|
243
347
|
[ownerSome]: ACVMField[],
|
|
244
348
|
[ownerValue]: ACVMField[],
|
|
245
349
|
[storageSlot]: ACVMField[],
|
|
@@ -257,11 +361,11 @@ export class Oracle {
|
|
|
257
361
|
[offset]: ACVMField[],
|
|
258
362
|
[status]: ACVMField[],
|
|
259
363
|
[maxNotes]: ACVMField[],
|
|
260
|
-
[
|
|
364
|
+
[packedHintedNoteLength]: ACVMField[],
|
|
261
365
|
): Promise<(ACVMField | ACVMField[])[]> {
|
|
262
366
|
// Parse Option<AztecAddress>: ownerSome is 0 for None, 1 for Some
|
|
263
367
|
const owner = Fr.fromString(ownerSome).toNumber() === 1 ? AztecAddress.fromString(ownerValue) : undefined;
|
|
264
|
-
const noteDatas = await this.handlerAsUtility().
|
|
368
|
+
const noteDatas = await this.handlerAsUtility().getNotes(
|
|
265
369
|
owner,
|
|
266
370
|
Fr.fromString(storageSlot),
|
|
267
371
|
+numSelects,
|
|
@@ -279,28 +383,29 @@ export class Oracle {
|
|
|
279
383
|
+status,
|
|
280
384
|
);
|
|
281
385
|
|
|
282
|
-
const
|
|
283
|
-
|
|
386
|
+
const returnDataAsArrayOfPackedHintedNotes = noteDatas.map(noteData =>
|
|
387
|
+
packAsHintedNote({
|
|
284
388
|
contractAddress: noteData.contractAddress,
|
|
285
389
|
owner: noteData.owner,
|
|
286
390
|
randomness: noteData.randomness,
|
|
287
391
|
storageSlot: noteData.storageSlot,
|
|
288
392
|
noteNonce: noteData.noteNonce,
|
|
289
|
-
|
|
393
|
+
isPending: noteData.isPending,
|
|
290
394
|
note: noteData.note,
|
|
291
395
|
}),
|
|
292
396
|
);
|
|
293
397
|
|
|
294
398
|
// Now we convert each sub-array to an array of ACVMField
|
|
295
|
-
const returnDataAsArrayOfACVMFieldArrays =
|
|
399
|
+
const returnDataAsArrayOfACVMFieldArrays = returnDataAsArrayOfPackedHintedNotes.map(subArray =>
|
|
296
400
|
subArray.map(toACVMField),
|
|
297
401
|
);
|
|
298
402
|
|
|
299
403
|
// At last we convert the array of arrays to a bounded vec of arrays
|
|
300
|
-
return arrayOfArraysToBoundedVecOfArrays(returnDataAsArrayOfACVMFieldArrays, +maxNotes, +
|
|
404
|
+
return arrayOfArraysToBoundedVecOfArrays(returnDataAsArrayOfACVMFieldArrays, +maxNotes, +packedHintedNoteLength);
|
|
301
405
|
}
|
|
302
406
|
|
|
303
|
-
|
|
407
|
+
// eslint-disable-next-line camelcase
|
|
408
|
+
aztec_prv_notifyCreatedNote(
|
|
304
409
|
[owner]: ACVMField[],
|
|
305
410
|
[storageSlot]: ACVMField[],
|
|
306
411
|
[randomness]: ACVMField[],
|
|
@@ -309,7 +414,7 @@ export class Oracle {
|
|
|
309
414
|
[noteHash]: ACVMField[],
|
|
310
415
|
[counter]: ACVMField[],
|
|
311
416
|
): Promise<ACVMField[]> {
|
|
312
|
-
this.handlerAsPrivate().
|
|
417
|
+
this.handlerAsPrivate().notifyCreatedNote(
|
|
313
418
|
AztecAddress.fromString(owner),
|
|
314
419
|
Fr.fromString(storageSlot),
|
|
315
420
|
Fr.fromString(randomness),
|
|
@@ -321,35 +426,47 @@ export class Oracle {
|
|
|
321
426
|
return Promise.resolve([]);
|
|
322
427
|
}
|
|
323
428
|
|
|
324
|
-
|
|
429
|
+
// eslint-disable-next-line camelcase
|
|
430
|
+
async aztec_prv_notifyNullifiedNote(
|
|
325
431
|
[innerNullifier]: ACVMField[],
|
|
326
432
|
[noteHash]: ACVMField[],
|
|
327
433
|
[counter]: ACVMField[],
|
|
328
434
|
): Promise<ACVMField[]> {
|
|
329
|
-
await this.handlerAsPrivate().
|
|
330
|
-
Fr.fromString(innerNullifier),
|
|
331
|
-
Fr.fromString(noteHash),
|
|
332
|
-
+counter,
|
|
333
|
-
);
|
|
435
|
+
await this.handlerAsPrivate().notifyNullifiedNote(Fr.fromString(innerNullifier), Fr.fromString(noteHash), +counter);
|
|
334
436
|
return [];
|
|
335
437
|
}
|
|
336
438
|
|
|
337
|
-
|
|
338
|
-
|
|
439
|
+
// eslint-disable-next-line camelcase
|
|
440
|
+
async aztec_prv_notifyCreatedNullifier([innerNullifier]: ACVMField[]): Promise<ACVMField[]> {
|
|
441
|
+
await this.handlerAsPrivate().notifyCreatedNullifier(Fr.fromString(innerNullifier));
|
|
339
442
|
return [];
|
|
340
443
|
}
|
|
341
444
|
|
|
342
|
-
|
|
343
|
-
|
|
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(
|
|
451
|
+
Fr.fromString(innerNullifier),
|
|
452
|
+
AztecAddress.fromString(contractAddress),
|
|
453
|
+
);
|
|
454
|
+
return [toACVMField(isPending)];
|
|
455
|
+
}
|
|
456
|
+
|
|
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));
|
|
344
460
|
return [toACVMField(exists)];
|
|
345
461
|
}
|
|
346
462
|
|
|
347
|
-
|
|
463
|
+
// eslint-disable-next-line camelcase
|
|
464
|
+
async aztec_utl_getL1ToL2MembershipWitness(
|
|
348
465
|
[contractAddress]: ACVMField[],
|
|
349
466
|
[messageHash]: ACVMField[],
|
|
350
467
|
[secret]: ACVMField[],
|
|
351
468
|
): Promise<(ACVMField | ACVMField[])[]> {
|
|
352
|
-
const message = await this.handlerAsUtility().
|
|
469
|
+
const message = await this.handlerAsUtility().getL1ToL2MembershipWitness(
|
|
353
470
|
AztecAddress.fromString(contractAddress),
|
|
354
471
|
Fr.fromString(messageHash),
|
|
355
472
|
Fr.fromString(secret),
|
|
@@ -357,22 +474,24 @@ export class Oracle {
|
|
|
357
474
|
return message.toNoirRepresentation();
|
|
358
475
|
}
|
|
359
476
|
|
|
360
|
-
|
|
477
|
+
// eslint-disable-next-line camelcase
|
|
478
|
+
async aztec_utl_getFromPublicStorage(
|
|
479
|
+
[blockHash]: ACVMField[],
|
|
361
480
|
[contractAddress]: ACVMField[],
|
|
362
481
|
[startStorageSlot]: ACVMField[],
|
|
363
|
-
[blockNumber]: ACVMField[],
|
|
364
482
|
[numberOfElements]: ACVMField[],
|
|
365
483
|
): Promise<ACVMField[][]> {
|
|
366
|
-
const values = await this.handlerAsUtility().
|
|
484
|
+
const values = await this.handlerAsUtility().getFromPublicStorage(
|
|
485
|
+
BlockHash.fromString(blockHash),
|
|
367
486
|
new AztecAddress(Fr.fromString(contractAddress)),
|
|
368
487
|
Fr.fromString(startStorageSlot),
|
|
369
|
-
BlockNumber(+blockNumber),
|
|
370
488
|
+numberOfElements,
|
|
371
489
|
);
|
|
372
490
|
return [values.map(toACVMField)];
|
|
373
491
|
}
|
|
374
492
|
|
|
375
|
-
|
|
493
|
+
// eslint-disable-next-line camelcase
|
|
494
|
+
aztec_prv_notifyCreatedContractClassLog(
|
|
376
495
|
[contractAddress]: ACVMField[],
|
|
377
496
|
message: ACVMField[],
|
|
378
497
|
[length]: ACVMField[],
|
|
@@ -381,11 +500,12 @@ export class Oracle {
|
|
|
381
500
|
const logFields = new ContractClassLogFields(message.map(Fr.fromString));
|
|
382
501
|
const log = new ContractClassLog(new AztecAddress(Fr.fromString(contractAddress)), logFields, +length);
|
|
383
502
|
|
|
384
|
-
this.handlerAsPrivate().
|
|
503
|
+
this.handlerAsPrivate().notifyCreatedContractClassLog(log, +counter);
|
|
385
504
|
return Promise.resolve([]);
|
|
386
505
|
}
|
|
387
506
|
|
|
388
|
-
|
|
507
|
+
// eslint-disable-next-line camelcase
|
|
508
|
+
async aztec_utl_log(
|
|
389
509
|
level: ACVMField[],
|
|
390
510
|
message: ACVMField[],
|
|
391
511
|
_ignoredFieldsSize: ACVMField[],
|
|
@@ -394,20 +514,21 @@ export class Oracle {
|
|
|
394
514
|
const levelFr = Fr.fromString(level[0]);
|
|
395
515
|
const messageStr = message.map(acvmField => String.fromCharCode(Fr.fromString(acvmField).toNumber())).join('');
|
|
396
516
|
const fieldsFr = fields.map(Fr.fromString);
|
|
397
|
-
this.handlerAsMisc().
|
|
398
|
-
return
|
|
517
|
+
await this.handlerAsMisc().log(levelFr.toNumber(), messageStr, fieldsFr);
|
|
518
|
+
return [];
|
|
399
519
|
}
|
|
400
520
|
|
|
401
521
|
// This function's name is directly hardcoded in `circuit_recorder.ts`. Don't forget to update it there if you
|
|
402
522
|
// change the name here.
|
|
403
|
-
|
|
523
|
+
// eslint-disable-next-line camelcase
|
|
524
|
+
async aztec_prv_callPrivateFunction(
|
|
404
525
|
[contractAddress]: ACVMField[],
|
|
405
526
|
[functionSelector]: ACVMField[],
|
|
406
527
|
[argsHash]: ACVMField[],
|
|
407
528
|
[sideEffectCounter]: ACVMField[],
|
|
408
529
|
[isStaticCall]: ACVMField[],
|
|
409
530
|
): Promise<ACVMField[][]> {
|
|
410
|
-
const { endSideEffectCounter, returnsHash } = await this.handlerAsPrivate().
|
|
531
|
+
const { endSideEffectCounter, returnsHash } = await this.handlerAsPrivate().callPrivateFunction(
|
|
411
532
|
AztecAddress.fromField(Fr.fromString(contractAddress)),
|
|
412
533
|
FunctionSelector.fromField(Fr.fromString(functionSelector)),
|
|
413
534
|
Fr.fromString(argsHash),
|
|
@@ -417,113 +538,165 @@ export class Oracle {
|
|
|
417
538
|
return [[endSideEffectCounter, returnsHash].map(toACVMField)];
|
|
418
539
|
}
|
|
419
540
|
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
[sideEffectCounter]: ACVMField[],
|
|
424
|
-
[isStaticCall]: ACVMField[],
|
|
425
|
-
): Promise<ACVMField[]> {
|
|
426
|
-
await this.handlerAsPrivate().privateNotifyEnqueuedPublicFunctionCall(
|
|
427
|
-
AztecAddress.fromString(contractAddress),
|
|
428
|
-
Fr.fromString(calldataHash),
|
|
429
|
-
Fr.fromString(sideEffectCounter).toNumber(),
|
|
430
|
-
Fr.fromString(isStaticCall).toBool(),
|
|
431
|
-
);
|
|
541
|
+
// eslint-disable-next-line camelcase
|
|
542
|
+
async aztec_prv_assertValidPublicCalldata([calldataHash]: ACVMField[]): Promise<ACVMField[]> {
|
|
543
|
+
await this.handlerAsPrivate().assertValidPublicCalldata(Fr.fromString(calldataHash));
|
|
432
544
|
return [];
|
|
433
545
|
}
|
|
434
546
|
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
[sideEffectCounter]: ACVMField[],
|
|
439
|
-
[isStaticCall]: ACVMField[],
|
|
440
|
-
): Promise<ACVMField[]> {
|
|
441
|
-
await this.handlerAsPrivate().privateNotifySetPublicTeardownFunctionCall(
|
|
442
|
-
AztecAddress.fromString(contractAddress),
|
|
443
|
-
Fr.fromString(calldataHash),
|
|
444
|
-
Fr.fromString(sideEffectCounter).toNumber(),
|
|
445
|
-
Fr.fromString(isStaticCall).toBool(),
|
|
446
|
-
);
|
|
447
|
-
return [];
|
|
448
|
-
}
|
|
449
|
-
|
|
450
|
-
async privateNotifySetMinRevertibleSideEffectCounter([minRevertibleSideEffectCounter]: ACVMField[]): Promise<
|
|
451
|
-
ACVMField[]
|
|
452
|
-
> {
|
|
453
|
-
await this.handlerAsPrivate().privateNotifySetMinRevertibleSideEffectCounter(
|
|
454
|
-
Fr.fromString(minRevertibleSideEffectCounter).toNumber(),
|
|
455
|
-
);
|
|
547
|
+
// eslint-disable-next-line camelcase
|
|
548
|
+
async aztec_prv_notifyRevertiblePhaseStart([minRevertibleSideEffectCounter]: ACVMField[]): Promise<ACVMField[]> {
|
|
549
|
+
await this.handlerAsPrivate().notifyRevertiblePhaseStart(Fr.fromString(minRevertibleSideEffectCounter).toNumber());
|
|
456
550
|
return Promise.resolve([]);
|
|
457
551
|
}
|
|
458
552
|
|
|
459
|
-
|
|
460
|
-
|
|
553
|
+
// eslint-disable-next-line camelcase
|
|
554
|
+
async aztec_prv_isExecutionInRevertiblePhase([sideEffectCounter]: ACVMField[]): Promise<ACVMField[]> {
|
|
555
|
+
const isRevertible = await this.handlerAsPrivate().isExecutionInRevertiblePhase(
|
|
461
556
|
Fr.fromString(sideEffectCounter).toNumber(),
|
|
462
557
|
);
|
|
463
558
|
return Promise.resolve([toACVMField(isRevertible)]);
|
|
464
559
|
}
|
|
465
560
|
|
|
466
|
-
|
|
467
|
-
|
|
561
|
+
// eslint-disable-next-line camelcase
|
|
562
|
+
async aztec_prv_getNextAppTagAsSender([sender]: ACVMField[], [recipient]: ACVMField[]): Promise<ACVMField[]> {
|
|
563
|
+
const tag = await this.handlerAsPrivate().getNextAppTagAsSender(
|
|
468
564
|
AztecAddress.fromString(sender),
|
|
469
565
|
AztecAddress.fromString(recipient),
|
|
470
566
|
);
|
|
471
567
|
return [toACVMField(tag.value)];
|
|
472
568
|
}
|
|
473
569
|
|
|
474
|
-
|
|
475
|
-
|
|
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
|
+
);
|
|
476
579
|
return [];
|
|
477
580
|
}
|
|
478
581
|
|
|
479
|
-
|
|
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(
|
|
480
590
|
[contractAddress]: ACVMField[],
|
|
481
591
|
[noteValidationRequestsArrayBaseSlot]: ACVMField[],
|
|
482
592
|
[eventValidationRequestsArrayBaseSlot]: ACVMField[],
|
|
593
|
+
[maxNotePackedLen]: ACVMField[],
|
|
594
|
+
[maxEventSerializedLen]: ACVMField[],
|
|
595
|
+
[scope]: ACVMField[],
|
|
483
596
|
): Promise<ACVMField[]> {
|
|
484
|
-
await this.handlerAsUtility().
|
|
597
|
+
await this.handlerAsUtility().validateAndStoreEnqueuedNotesAndEvents(
|
|
485
598
|
AztecAddress.fromString(contractAddress),
|
|
486
599
|
Fr.fromString(noteValidationRequestsArrayBaseSlot),
|
|
487
600
|
Fr.fromString(eventValidationRequestsArrayBaseSlot),
|
|
601
|
+
Fr.fromString(maxNotePackedLen).toNumber(),
|
|
602
|
+
Fr.fromString(maxEventSerializedLen).toNumber(),
|
|
603
|
+
AztecAddress.fromString(scope),
|
|
488
604
|
);
|
|
489
605
|
|
|
490
606
|
return [];
|
|
491
607
|
}
|
|
492
608
|
|
|
493
|
-
|
|
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(
|
|
494
629
|
[contractAddress]: ACVMField[],
|
|
495
630
|
[logRetrievalRequestsArrayBaseSlot]: ACVMField[],
|
|
496
631
|
[logRetrievalResponsesArrayBaseSlot]: ACVMField[],
|
|
632
|
+
[scope]: ACVMField[],
|
|
497
633
|
): Promise<ACVMField[]> {
|
|
498
|
-
await this.handlerAsUtility().
|
|
634
|
+
await this.handlerAsUtility().getLogsByTag(
|
|
499
635
|
AztecAddress.fromString(contractAddress),
|
|
500
636
|
Fr.fromString(logRetrievalRequestsArrayBaseSlot),
|
|
501
637
|
Fr.fromString(logRetrievalResponsesArrayBaseSlot),
|
|
638
|
+
AztecAddress.fromString(scope),
|
|
502
639
|
);
|
|
503
640
|
return [];
|
|
504
641
|
}
|
|
505
642
|
|
|
506
|
-
|
|
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(
|
|
507
675
|
[contractAddress]: ACVMField[],
|
|
508
676
|
[slot]: ACVMField[],
|
|
509
677
|
capsule: ACVMField[],
|
|
678
|
+
[scope]: ACVMField[],
|
|
510
679
|
): Promise<ACVMField[]> {
|
|
511
|
-
|
|
680
|
+
this.handlerAsUtility().setCapsule(
|
|
512
681
|
AztecAddress.fromField(Fr.fromString(contractAddress)),
|
|
513
682
|
Fr.fromString(slot),
|
|
514
683
|
capsule.map(Fr.fromString),
|
|
684
|
+
AztecAddress.fromField(Fr.fromString(scope)),
|
|
515
685
|
);
|
|
516
|
-
return [];
|
|
686
|
+
return Promise.resolve([]);
|
|
517
687
|
}
|
|
518
688
|
|
|
519
|
-
|
|
689
|
+
// eslint-disable-next-line camelcase
|
|
690
|
+
async aztec_utl_getCapsule(
|
|
520
691
|
[contractAddress]: ACVMField[],
|
|
521
692
|
[slot]: ACVMField[],
|
|
522
693
|
[tSize]: ACVMField[],
|
|
694
|
+
[scope]: ACVMField[],
|
|
523
695
|
): Promise<(ACVMField | ACVMField[])[]> {
|
|
524
|
-
const values = await this.handlerAsUtility().
|
|
696
|
+
const values = await this.handlerAsUtility().getCapsule(
|
|
525
697
|
AztecAddress.fromField(Fr.fromString(contractAddress)),
|
|
526
698
|
Fr.fromString(slot),
|
|
699
|
+
AztecAddress.fromField(Fr.fromString(scope)),
|
|
527
700
|
);
|
|
528
701
|
|
|
529
702
|
// We are going to return a Noir Option struct to represent the possibility of null values. Options are a struct
|
|
@@ -537,30 +710,86 @@ export class Oracle {
|
|
|
537
710
|
}
|
|
538
711
|
}
|
|
539
712
|
|
|
540
|
-
|
|
541
|
-
|
|
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(
|
|
542
720
|
AztecAddress.fromField(Fr.fromString(contractAddress)),
|
|
543
721
|
Fr.fromString(slot),
|
|
722
|
+
AztecAddress.fromField(Fr.fromString(scope)),
|
|
544
723
|
);
|
|
545
|
-
return [];
|
|
724
|
+
return Promise.resolve([]);
|
|
546
725
|
}
|
|
547
726
|
|
|
548
|
-
|
|
727
|
+
// eslint-disable-next-line camelcase
|
|
728
|
+
async aztec_utl_copyCapsule(
|
|
549
729
|
[contractAddress]: ACVMField[],
|
|
550
730
|
[srcSlot]: ACVMField[],
|
|
551
731
|
[dstSlot]: ACVMField[],
|
|
552
732
|
[numEntries]: ACVMField[],
|
|
733
|
+
[scope]: ACVMField[],
|
|
553
734
|
): Promise<ACVMField[]> {
|
|
554
|
-
await this.handlerAsUtility().
|
|
735
|
+
await this.handlerAsUtility().copyCapsule(
|
|
555
736
|
AztecAddress.fromField(Fr.fromString(contractAddress)),
|
|
556
737
|
Fr.fromString(srcSlot),
|
|
557
738
|
Fr.fromString(dstSlot),
|
|
558
739
|
Fr.fromString(numEntries).toNumber(),
|
|
740
|
+
AztecAddress.fromField(Fr.fromString(scope)),
|
|
559
741
|
);
|
|
560
742
|
return [];
|
|
561
743
|
}
|
|
562
744
|
|
|
563
|
-
|
|
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(
|
|
564
793
|
ciphertextBVecStorage: ACVMField[],
|
|
565
794
|
[ciphertextLength]: ACVMField[],
|
|
566
795
|
iv: ACVMField[],
|
|
@@ -570,36 +799,63 @@ export class Oracle {
|
|
|
570
799
|
const ivBuffer = fromUintArray(iv, 8);
|
|
571
800
|
const symKeyBuffer = fromUintArray(symKey, 8);
|
|
572
801
|
|
|
573
|
-
|
|
574
|
-
|
|
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
|
+
}
|
|
575
811
|
}
|
|
576
812
|
|
|
577
|
-
|
|
813
|
+
// eslint-disable-next-line camelcase
|
|
814
|
+
async aztec_utl_getSharedSecret(
|
|
578
815
|
[address]: ACVMField[],
|
|
579
816
|
[ephPKField0]: ACVMField[],
|
|
580
817
|
[ephPKField1]: ACVMField[],
|
|
581
818
|
[ephPKField2]: ACVMField[],
|
|
819
|
+
[contractAddress]: ACVMField[],
|
|
582
820
|
): Promise<ACVMField[]> {
|
|
583
|
-
const secret = await this.handlerAsUtility().
|
|
821
|
+
const secret = await this.handlerAsUtility().getSharedSecret(
|
|
584
822
|
AztecAddress.fromField(Fr.fromString(address)),
|
|
585
823
|
Point.fromFields([ephPKField0, ephPKField1, ephPKField2].map(Fr.fromString)),
|
|
824
|
+
AztecAddress.fromField(Fr.fromString(contractAddress)),
|
|
825
|
+
);
|
|
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,
|
|
586
839
|
);
|
|
587
|
-
return
|
|
840
|
+
return Promise.resolve([]);
|
|
588
841
|
}
|
|
589
842
|
|
|
590
|
-
|
|
591
|
-
|
|
843
|
+
// eslint-disable-next-line camelcase
|
|
844
|
+
async aztec_utl_emitOffchainEffect(data: ACVMField[]) {
|
|
845
|
+
await this.handlerAsUtility().emitOffchainEffect(data.map(Fr.fromString));
|
|
592
846
|
return [];
|
|
593
847
|
}
|
|
594
848
|
|
|
595
|
-
|
|
596
|
-
|
|
849
|
+
// eslint-disable-next-line camelcase
|
|
850
|
+
async aztec_prv_getSenderForTags(): Promise<ACVMField[]> {
|
|
851
|
+
const sender = await this.handlerAsPrivate().getSenderForTags();
|
|
597
852
|
// Return [1, address] for Some(address), [0, 0] for None
|
|
598
853
|
return sender ? [toACVMField(1n), toACVMField(sender)] : [toACVMField(0n), toACVMField(0n)];
|
|
599
854
|
}
|
|
600
855
|
|
|
601
|
-
|
|
602
|
-
|
|
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)));
|
|
603
859
|
return [];
|
|
604
860
|
}
|
|
605
861
|
}
|