@aztec/pxe 3.0.0-rc.5 → 4.0.0-nightly.20260107
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/block_synchronizer/block_synchronizer.d.ts +39 -0
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -0
- package/dest/{synchronizer/synchronizer.js → block_synchronizer/block_synchronizer.js} +22 -22
- package/dest/block_synchronizer/index.d.ts +2 -0
- package/dest/block_synchronizer/index.d.ts.map +1 -0
- package/dest/block_synchronizer/index.js +1 -0
- package/dest/config/index.d.ts +4 -4
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/package_info.js +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +40 -11
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +47 -17
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +1 -1
- package/dest/contract_function_simulator/execution_tagging_index_cache.js +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +4 -3
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +7 -6
- package/dest/contract_function_simulator/oracle/interfaces.d.ts +3 -4
- package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.d.ts +1 -1
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +3 -3
- package/dest/contract_function_simulator/oracle/private_execution.d.ts +7 -9
- package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution.js +11 -11
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +22 -8
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +24 -12
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +47 -8
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +143 -37
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +4 -4
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
- package/dest/contract_function_simulator/proxied_contract_data_source.js +23 -5
- package/dest/debug/pxe_debug_utils.d.ts +31 -0
- package/dest/debug/pxe_debug_utils.d.ts.map +1 -0
- package/dest/debug/pxe_debug_utils.js +37 -0
- package/dest/entrypoints/client/bundle/index.d.ts +1 -2
- package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/index.js +0 -1
- package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
- package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/utils.js +10 -1
- package/dest/entrypoints/client/lazy/index.d.ts +1 -2
- package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/index.js +0 -1
- package/dest/entrypoints/client/lazy/utils.d.ts +1 -1
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +10 -1
- package/dest/entrypoints/pxe_creation_options.d.ts +3 -2
- package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
- package/dest/entrypoints/server/index.d.ts +2 -2
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +1 -1
- package/dest/entrypoints/server/utils.d.ts +1 -1
- package/dest/entrypoints/server/utils.d.ts.map +1 -1
- package/dest/entrypoints/server/utils.js +11 -7
- package/dest/error_enriching.d.ts +4 -4
- package/dest/error_enriching.d.ts.map +1 -1
- package/dest/error_enriching.js +6 -6
- package/dest/events/event_service.d.ts +15 -0
- package/dest/events/event_service.d.ts.map +1 -0
- package/dest/events/event_service.js +47 -0
- 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 +4 -4
- package/dest/logs/log_service.d.ts +26 -0
- package/dest/logs/log_service.d.ts.map +1 -0
- package/dest/logs/log_service.js +120 -0
- package/dest/notes/index.d.ts +2 -0
- package/dest/notes/index.d.ts.map +1 -0
- package/dest/notes/index.js +1 -0
- package/dest/notes/note_service.d.ts +48 -0
- package/dest/notes/note_service.d.ts.map +1 -0
- package/dest/notes/note_service.js +152 -0
- package/dest/private_kernel/private_kernel_oracle_impl.d.ts +4 -4
- package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle_impl.js +7 -7
- package/dest/public_storage/public_storage_service.d.ts +24 -0
- package/dest/public_storage/public_storage_service.d.ts.map +1 -0
- package/dest/public_storage/public_storage_service.js +26 -0
- package/dest/pxe.d.ts +25 -33
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +125 -136
- package/dest/storage/address_store/address_store.d.ts +11 -0
- package/dest/storage/address_store/address_store.d.ts.map +1 -0
- package/dest/storage/{address_data_provider/address_data_provider.js → address_store/address_store.js} +1 -1
- package/dest/storage/address_store/index.d.ts +2 -0
- package/dest/storage/address_store/index.d.ts.map +1 -0
- package/dest/storage/address_store/index.js +1 -0
- package/dest/storage/{sync_data_provider/sync_data_provider.d.ts → anchor_block_store/anchor_block_store.d.ts} +2 -4
- package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -0
- package/dest/storage/{sync_data_provider/sync_data_provider.js → anchor_block_store/anchor_block_store.js} +2 -9
- package/dest/storage/{sync_data_provider → anchor_block_store}/index.d.ts +2 -2
- package/dest/storage/anchor_block_store/index.d.ts.map +1 -0
- package/dest/storage/anchor_block_store/index.js +1 -0
- package/dest/storage/capsule_store/capsule_store.d.ts +57 -0
- package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -0
- package/dest/storage/{capsule_data_provider/capsule_data_provider.js → capsule_store/capsule_store.js} +33 -5
- package/dest/storage/capsule_store/index.d.ts +2 -0
- package/dest/storage/capsule_store/index.d.ts.map +1 -0
- package/dest/storage/capsule_store/index.js +1 -0
- package/dest/storage/{contract_data_provider/contract_data_provider.d.ts → contract_store/contract_store.d.ts} +7 -4
- package/dest/storage/contract_store/contract_store.d.ts.map +1 -0
- package/dest/storage/{contract_data_provider/contract_data_provider.js → contract_store/contract_store.js} +46 -3
- package/dest/storage/contract_store/index.d.ts +2 -0
- package/dest/storage/contract_store/index.d.ts.map +1 -0
- package/dest/storage/contract_store/index.js +1 -0
- package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.d.ts +1 -1
- package/dest/storage/contract_store/private_functions_tree.d.ts.map +1 -0
- package/dest/storage/index.d.ts +8 -8
- package/dest/storage/index.d.ts.map +1 -1
- package/dest/storage/index.js +7 -7
- package/dest/storage/note_store/index.d.ts +3 -0
- package/dest/storage/note_store/index.d.ts.map +1 -0
- package/dest/storage/note_store/index.js +2 -0
- package/dest/storage/{note_data_provider/note_data_provider.d.ts → note_store/note_store.d.ts} +7 -7
- package/dest/storage/note_store/note_store.d.ts.map +1 -0
- package/dest/storage/{note_data_provider/note_data_provider.js → note_store/note_store.js} +6 -6
- package/dest/storage/{private_event_data_provider/private_event_data_provider.d.ts → private_event_store/private_event_store.d.ts} +9 -4
- package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -0
- package/dest/storage/{private_event_data_provider/private_event_data_provider.js → private_event_store/private_event_store.js} +57 -15
- package/dest/storage/tagging_store/index.d.ts +4 -0
- package/dest/storage/tagging_store/index.d.ts.map +1 -0
- package/dest/storage/tagging_store/index.js +3 -0
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts +21 -0
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -0
- package/dest/storage/tagging_store/recipient_tagging_store.js +42 -0
- package/dest/storage/tagging_store/sender_address_book_store.d.ts +14 -0
- package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -0
- package/dest/storage/tagging_store/sender_address_book_store.js +30 -0
- package/dest/storage/tagging_store/sender_tagging_store.d.ts +67 -0
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -0
- package/dest/storage/tagging_store/sender_tagging_store.js +196 -0
- package/dest/tagging/index.d.ts +15 -6
- package/dest/tagging/index.d.ts.map +1 -1
- package/dest/tagging/index.js +23 -5
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +14 -0
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -0
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +99 -0
- package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +12 -0
- package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -0
- package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +20 -0
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +14 -0
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -0
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +29 -0
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +20 -0
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -0
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +74 -0
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +11 -0
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -0
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +32 -0
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +18 -0
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -0
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +55 -0
- package/dest/tree_membership/tree_membership_service.d.ts +52 -0
- package/dest/tree_membership/tree_membership_service.d.ts.map +1 -0
- package/dest/tree_membership/tree_membership_service.js +84 -0
- package/package.json +16 -16
- package/src/{synchronizer/synchronizer.ts → block_synchronizer/block_synchronizer.ts} +21 -22
- package/src/block_synchronizer/index.ts +1 -0
- package/src/config/index.ts +3 -3
- package/src/config/package_info.ts +1 -1
- package/src/contract_function_simulator/contract_function_simulator.ts +84 -15
- package/src/contract_function_simulator/execution_tagging_index_cache.ts +1 -1
- package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +5 -4
- package/src/contract_function_simulator/oracle/interfaces.ts +2 -3
- package/src/contract_function_simulator/oracle/oracle.ts +3 -3
- package/src/contract_function_simulator/oracle/private_execution.ts +14 -13
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +89 -19
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +208 -45
- package/src/contract_function_simulator/proxied_contract_data_source.ts +24 -7
- package/src/debug/pxe_debug_utils.ts +48 -0
- package/src/entrypoints/client/bundle/index.ts +0 -1
- package/src/entrypoints/client/bundle/utils.ts +7 -1
- package/src/entrypoints/client/lazy/index.ts +0 -1
- package/src/entrypoints/client/lazy/utils.ts +7 -2
- package/src/entrypoints/pxe_creation_options.ts +2 -1
- package/src/entrypoints/server/index.ts +1 -1
- package/src/entrypoints/server/utils.ts +11 -15
- package/src/error_enriching.ts +7 -15
- package/src/events/event_service.ts +77 -0
- package/src/events/private_event_filter_validator.ts +5 -4
- package/src/logs/log_service.ts +202 -0
- package/src/notes/index.ts +1 -0
- package/src/notes/note_service.ts +200 -0
- package/src/private_kernel/private_kernel_oracle_impl.ts +6 -6
- package/src/public_storage/public_storage_service.ts +33 -0
- package/src/pxe.ts +153 -162
- package/src/storage/{address_data_provider/address_data_provider.ts → address_store/address_store.ts} +1 -1
- package/src/storage/address_store/index.ts +1 -0
- package/src/storage/{sync_data_provider/sync_data_provider.ts → anchor_block_store/anchor_block_store.ts} +2 -12
- package/src/storage/anchor_block_store/index.ts +1 -0
- package/src/storage/{capsule_data_provider/capsule_data_provider.ts → capsule_store/capsule_store.ts} +33 -1
- package/src/storage/capsule_store/index.ts +1 -0
- package/src/storage/{contract_data_provider/contract_data_provider.ts → contract_store/contract_store.ts} +64 -2
- package/src/storage/contract_store/index.ts +1 -0
- package/src/storage/index.ts +7 -7
- package/src/storage/note_store/index.ts +2 -0
- package/src/storage/{note_data_provider/note_data_provider.ts → note_store/note_store.ts} +7 -7
- package/src/storage/{private_event_data_provider/private_event_data_provider.ts → private_event_store/private_event_store.ts} +69 -18
- package/src/storage/tagging_store/index.ts +3 -0
- package/src/storage/tagging_store/recipient_tagging_store.ts +53 -0
- package/src/storage/tagging_store/sender_address_book_store.ts +42 -0
- package/src/storage/tagging_store/sender_tagging_store.ts +244 -0
- package/src/tagging/index.ts +27 -5
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +129 -0
- package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +34 -0
- package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +43 -0
- package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +96 -0
- package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +44 -0
- package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +72 -0
- package/src/tree_membership/tree_membership_service.ts +112 -0
- package/dest/contract_function_simulator/execution_data_provider.d.ts +0 -268
- package/dest/contract_function_simulator/execution_data_provider.d.ts.map +0 -1
- package/dest/contract_function_simulator/execution_data_provider.js +0 -14
- package/dest/contract_function_simulator/pxe_oracle_interface.d.ts +0 -124
- package/dest/contract_function_simulator/pxe_oracle_interface.d.ts.map +0 -1
- package/dest/contract_function_simulator/pxe_oracle_interface.js +0 -713
- package/dest/storage/address_data_provider/address_data_provider.d.ts +0 -11
- package/dest/storage/address_data_provider/address_data_provider.d.ts.map +0 -1
- package/dest/storage/address_data_provider/index.d.ts +0 -2
- package/dest/storage/address_data_provider/index.d.ts.map +0 -1
- package/dest/storage/address_data_provider/index.js +0 -1
- package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts +0 -25
- package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts.map +0 -1
- package/dest/storage/capsule_data_provider/index.d.ts +0 -2
- package/dest/storage/capsule_data_provider/index.d.ts.map +0 -1
- package/dest/storage/capsule_data_provider/index.js +0 -1
- package/dest/storage/contract_data_provider/contract_data_provider.d.ts.map +0 -1
- package/dest/storage/contract_data_provider/index.d.ts +0 -2
- package/dest/storage/contract_data_provider/index.d.ts.map +0 -1
- package/dest/storage/contract_data_provider/index.js +0 -1
- package/dest/storage/contract_data_provider/private_functions_tree.d.ts.map +0 -1
- package/dest/storage/note_data_provider/index.d.ts +0 -3
- package/dest/storage/note_data_provider/index.d.ts.map +0 -1
- package/dest/storage/note_data_provider/index.js +0 -2
- package/dest/storage/note_data_provider/note_data_provider.d.ts.map +0 -1
- package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts.map +0 -1
- package/dest/storage/sync_data_provider/index.d.ts.map +0 -1
- package/dest/storage/sync_data_provider/index.js +0 -1
- package/dest/storage/sync_data_provider/sync_data_provider.d.ts.map +0 -1
- package/dest/storage/tagging_data_provider/index.d.ts +0 -2
- package/dest/storage/tagging_data_provider/index.d.ts.map +0 -1
- package/dest/storage/tagging_data_provider/index.js +0 -1
- package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts +0 -40
- package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts.map +0 -1
- package/dest/storage/tagging_data_provider/tagging_data_provider.js +0 -89
- package/dest/synchronizer/index.d.ts +0 -2
- package/dest/synchronizer/index.d.ts.map +0 -1
- package/dest/synchronizer/index.js +0 -1
- package/dest/synchronizer/synchronizer.d.ts +0 -36
- package/dest/synchronizer/synchronizer.d.ts.map +0 -1
- package/dest/tagging/constants.d.ts +0 -2
- package/dest/tagging/constants.d.ts.map +0 -1
- package/dest/tagging/constants.js +0 -2
- package/dest/tagging/siloed_tag.d.ts +0 -14
- package/dest/tagging/siloed_tag.d.ts.map +0 -1
- package/dest/tagging/siloed_tag.js +0 -20
- package/dest/tagging/tag.d.ts +0 -12
- package/dest/tagging/tag.d.ts.map +0 -1
- package/dest/tagging/tag.js +0 -17
- package/dest/tagging/utils.d.ts +0 -18
- package/dest/tagging/utils.d.ts.map +0 -1
- package/dest/tagging/utils.js +0 -24
- package/src/contract_function_simulator/execution_data_provider.ts +0 -343
- package/src/contract_function_simulator/pxe_oracle_interface.ts +0 -1040
- package/src/storage/address_data_provider/index.ts +0 -1
- package/src/storage/capsule_data_provider/index.ts +0 -1
- package/src/storage/contract_data_provider/index.ts +0 -1
- package/src/storage/note_data_provider/index.ts +0 -2
- package/src/storage/sync_data_provider/index.ts +0 -1
- package/src/storage/tagging_data_provider/index.ts +0 -1
- package/src/storage/tagging_data_provider/tagging_data_provider.ts +0 -120
- package/src/synchronizer/index.ts +0 -1
- package/src/tagging/constants.ts +0 -2
- package/src/tagging/siloed_tag.ts +0 -22
- package/src/tagging/tag.ts +0 -16
- package/src/tagging/utils.ts +0 -31
- /package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.js +0 -0
- /package/src/storage/{contract_data_provider → contract_store}/private_functions_tree.ts +0 -0
package/dest/pxe.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pxe.d.ts","sourceRoot":"","sources":["../src/pxe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAIlE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAE,KAAK,yBAAyB,EAAyB,MAAM,2BAA2B,CAAC;AAClG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EACL,KAAK,gBAAgB,EACrB,aAAa,EACb,YAAY,
|
|
1
|
+
{"version":3,"file":"pxe.d.ts","sourceRoot":"","sources":["../src/pxe.ts"],"names":[],"mappings":"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"}
|
package/dest/pxe.js
CHANGED
|
@@ -5,66 +5,73 @@ import { Timer } from '@aztec/foundation/timer';
|
|
|
5
5
|
import { KeyStore } from '@aztec/key-store';
|
|
6
6
|
import { L2TipsKVStore } from '@aztec/kv-store/stores';
|
|
7
7
|
import { protocolContractNames } from '@aztec/protocol-contracts';
|
|
8
|
-
import {
|
|
8
|
+
import { FunctionType, decodeFunctionSignature } from '@aztec/stdlib/abi';
|
|
9
9
|
import { computeContractAddressFromInstance, getContractClassFromArtifact } from '@aztec/stdlib/contract';
|
|
10
10
|
import { SimulationError } from '@aztec/stdlib/errors';
|
|
11
11
|
import { computeProtocolNullifier, siloNullifier } from '@aztec/stdlib/hash';
|
|
12
12
|
import { PrivateSimulationResult, TxProfileResult, TxProvingResult, TxSimulationResult } from '@aztec/stdlib/tx';
|
|
13
13
|
import { inspect } from 'util';
|
|
14
|
+
import { BlockSynchronizer } from './block_synchronizer/index.js';
|
|
14
15
|
import { ContractFunctionSimulator, generateSimulatedProvingResult } from './contract_function_simulator/contract_function_simulator.js';
|
|
15
16
|
import { readCurrentClassId } from './contract_function_simulator/oracle/private_execution.js';
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import { PXEOracleInterface } from './contract_function_simulator/pxe_oracle_interface.js';
|
|
17
|
+
import { ProxiedContractStoreFactory } from './contract_function_simulator/proxied_contract_data_source.js';
|
|
18
|
+
import { PXEDebugUtils } from './debug/pxe_debug_utils.js';
|
|
19
19
|
import { enrichPublicSimulationError, enrichSimulationError } from './error_enriching.js';
|
|
20
20
|
import { PrivateEventFilterValidator } from './events/private_event_filter_validator.js';
|
|
21
21
|
import { PrivateKernelExecutionProver } from './private_kernel/private_kernel_execution_prover.js';
|
|
22
22
|
import { PrivateKernelOracleImpl } from './private_kernel/private_kernel_oracle_impl.js';
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
27
|
-
import {
|
|
28
|
-
import {
|
|
29
|
-
import {
|
|
30
|
-
import {
|
|
23
|
+
import { AddressStore } from './storage/address_store/address_store.js';
|
|
24
|
+
import { AnchorBlockStore } from './storage/anchor_block_store/anchor_block_store.js';
|
|
25
|
+
import { CapsuleStore } from './storage/capsule_store/capsule_store.js';
|
|
26
|
+
import { ContractStore } from './storage/contract_store/contract_store.js';
|
|
27
|
+
import { NoteStore } from './storage/note_store/note_store.js';
|
|
28
|
+
import { PrivateEventStore } from './storage/private_event_store/private_event_store.js';
|
|
29
|
+
import { RecipientTaggingStore } from './storage/tagging_store/recipient_tagging_store.js';
|
|
30
|
+
import { SenderAddressBookStore } from './storage/tagging_store/sender_address_book_store.js';
|
|
31
|
+
import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store.js';
|
|
31
32
|
/**
|
|
32
33
|
* Private eXecution Environment (PXE) is a library used by wallets to simulate private phase of transactions and to
|
|
33
34
|
* manage private state of users.
|
|
34
35
|
*/ export class PXE {
|
|
35
36
|
node;
|
|
36
|
-
|
|
37
|
+
blockStateSynchronizer;
|
|
37
38
|
keyStore;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
39
|
+
contractStore;
|
|
40
|
+
noteStore;
|
|
41
|
+
capsuleStore;
|
|
42
|
+
anchorBlockStore;
|
|
43
|
+
senderTaggingStore;
|
|
44
|
+
senderAddressBookStore;
|
|
45
|
+
recipientTaggingStore;
|
|
46
|
+
addressStore;
|
|
47
|
+
privateEventStore;
|
|
45
48
|
simulator;
|
|
46
49
|
proverEnabled;
|
|
47
50
|
proofCreator;
|
|
48
51
|
protocolContractsProvider;
|
|
49
52
|
log;
|
|
50
53
|
jobQueue;
|
|
51
|
-
|
|
54
|
+
debug;
|
|
55
|
+
constructor(node, blockStateSynchronizer, keyStore, contractStore, noteStore, capsuleStore, anchorBlockStore, senderTaggingStore, senderAddressBookStore, recipientTaggingStore, addressStore, privateEventStore, simulator, proverEnabled, proofCreator, protocolContractsProvider, log, jobQueue, debug){
|
|
52
56
|
this.node = node;
|
|
53
|
-
this.
|
|
57
|
+
this.blockStateSynchronizer = blockStateSynchronizer;
|
|
54
58
|
this.keyStore = keyStore;
|
|
55
|
-
this.
|
|
56
|
-
this.
|
|
57
|
-
this.
|
|
58
|
-
this.
|
|
59
|
-
this.
|
|
60
|
-
this.
|
|
61
|
-
this.
|
|
59
|
+
this.contractStore = contractStore;
|
|
60
|
+
this.noteStore = noteStore;
|
|
61
|
+
this.capsuleStore = capsuleStore;
|
|
62
|
+
this.anchorBlockStore = anchorBlockStore;
|
|
63
|
+
this.senderTaggingStore = senderTaggingStore;
|
|
64
|
+
this.senderAddressBookStore = senderAddressBookStore;
|
|
65
|
+
this.recipientTaggingStore = recipientTaggingStore;
|
|
66
|
+
this.addressStore = addressStore;
|
|
67
|
+
this.privateEventStore = privateEventStore;
|
|
62
68
|
this.simulator = simulator;
|
|
63
69
|
this.proverEnabled = proverEnabled;
|
|
64
70
|
this.proofCreator = proofCreator;
|
|
65
71
|
this.protocolContractsProvider = protocolContractsProvider;
|
|
66
72
|
this.log = log;
|
|
67
73
|
this.jobQueue = jobQueue;
|
|
74
|
+
this.debug = debug;
|
|
68
75
|
}
|
|
69
76
|
/**
|
|
70
77
|
* Creates an instance of a PXE by instantiating all the necessary data providers and services.
|
|
@@ -75,18 +82,22 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
75
82
|
*/ static async create(node, store, proofCreator, simulator, protocolContractsProvider, config, loggerOrSuffix) {
|
|
76
83
|
const log = !loggerOrSuffix || typeof loggerOrSuffix === 'string' ? createLogger(loggerOrSuffix ? `pxe:service:${loggerOrSuffix}` : `pxe:service`) : loggerOrSuffix;
|
|
77
84
|
const proverEnabled = !!config.proverEnabled;
|
|
78
|
-
const
|
|
79
|
-
const
|
|
80
|
-
const
|
|
81
|
-
const
|
|
82
|
-
const
|
|
83
|
-
const
|
|
84
|
-
const
|
|
85
|
+
const addressStore = new AddressStore(store);
|
|
86
|
+
const privateEventStore = new PrivateEventStore(store);
|
|
87
|
+
const contractStore = new ContractStore(store);
|
|
88
|
+
const noteStore = await NoteStore.create(store);
|
|
89
|
+
const anchorBlockStore = new AnchorBlockStore(store);
|
|
90
|
+
const senderTaggingStore = new SenderTaggingStore(store);
|
|
91
|
+
const senderAddressBookStore = new SenderAddressBookStore(store);
|
|
92
|
+
const recipientTaggingStore = new RecipientTaggingStore(store);
|
|
93
|
+
const capsuleStore = new CapsuleStore(store);
|
|
85
94
|
const keyStore = new KeyStore(store);
|
|
86
95
|
const tipsStore = new L2TipsKVStore(store, 'pxe');
|
|
87
|
-
const synchronizer = new
|
|
96
|
+
const synchronizer = new BlockSynchronizer(node, anchorBlockStore, noteStore, privateEventStore, tipsStore, config, loggerOrSuffix);
|
|
97
|
+
const debugUtils = new PXEDebugUtils(contractStore, noteStore);
|
|
88
98
|
const jobQueue = new SerialQueue();
|
|
89
|
-
const pxe = new PXE(node, synchronizer, keyStore,
|
|
99
|
+
const pxe = new PXE(node, synchronizer, keyStore, contractStore, noteStore, capsuleStore, anchorBlockStore, senderTaggingStore, senderAddressBookStore, recipientTaggingStore, addressStore, privateEventStore, simulator, proverEnabled, proofCreator, protocolContractsProvider, log, jobQueue, debugUtils);
|
|
100
|
+
debugUtils.setPXE(pxe);
|
|
90
101
|
pxe.jobQueue.start();
|
|
91
102
|
await pxe.#registerProtocolContracts();
|
|
92
103
|
const info = await node.getNodeInfo();
|
|
@@ -95,8 +106,8 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
95
106
|
}
|
|
96
107
|
// Internal methods
|
|
97
108
|
#getSimulatorForTx(overrides) {
|
|
98
|
-
const
|
|
99
|
-
return new ContractFunctionSimulator(
|
|
109
|
+
const proxyContractStore = ProxiedContractStoreFactory.create(this.contractStore, overrides?.contracts);
|
|
110
|
+
return new ContractFunctionSimulator(proxyContractStore, this.noteStore, this.keyStore, this.addressStore, this.node, this.anchorBlockStore, this.senderTaggingStore, this.recipientTaggingStore, this.senderAddressBookStore, this.capsuleStore, this.privateEventStore, this.simulator);
|
|
100
111
|
}
|
|
101
112
|
#contextualizeError(err, ...context) {
|
|
102
113
|
let contextStr = '';
|
|
@@ -127,8 +138,8 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
127
138
|
const registered = {};
|
|
128
139
|
for (const name of protocolContractNames){
|
|
129
140
|
const { address, contractClass, instance, artifact } = await this.protocolContractsProvider.getProtocolContractArtifact(name);
|
|
130
|
-
await this.
|
|
131
|
-
await this.
|
|
141
|
+
await this.contractStore.addContractArtifact(contractClass.id, artifact);
|
|
142
|
+
await this.contractStore.addContractInstance(instance);
|
|
132
143
|
registered[name] = address.toString();
|
|
133
144
|
}
|
|
134
145
|
this.log.verbose(`Registered protocol contracts in pxe`, registered);
|
|
@@ -143,39 +154,20 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
143
154
|
const initNullifier = await siloNullifier(address, address.toField());
|
|
144
155
|
return !!await this.node.getNullifierMembershipWitness('latest', initNullifier);
|
|
145
156
|
}
|
|
146
|
-
async #getFunctionCall(functionName, args, to) {
|
|
147
|
-
const contract = await this.contractDataProvider.getContract(to);
|
|
148
|
-
if (!contract) {
|
|
149
|
-
throw new Error(`Unknown contract ${to}: add it to PXE by calling server.addContracts(...).\nSee docs for context: https://docs.aztec.network/developers/resources/debugging/aztecnr-errors#unknown-contract-0x0-add-it-to-pxe-by-calling-serveraddcontracts`);
|
|
150
|
-
}
|
|
151
|
-
const functionDao = contract.functions.find((f)=>f.name === functionName);
|
|
152
|
-
if (!functionDao) {
|
|
153
|
-
throw new Error(`Unknown function ${functionName} in contract ${contract.name}.`);
|
|
154
|
-
}
|
|
155
|
-
return {
|
|
156
|
-
name: functionDao.name,
|
|
157
|
-
args: encodeArguments(functionDao, args),
|
|
158
|
-
selector: await FunctionSelector.fromNameAndParameters(functionDao.name, functionDao.parameters),
|
|
159
|
-
type: functionDao.functionType,
|
|
160
|
-
to,
|
|
161
|
-
hideMsgSender: false,
|
|
162
|
-
isStatic: functionDao.isStatic,
|
|
163
|
-
returnTypes: functionDao.returnTypes
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
157
|
// Executes the entrypoint private function, as well as all nested private
|
|
167
158
|
// functions that might arise.
|
|
168
159
|
async #executePrivate(contractFunctionSimulator, txRequest, scopes) {
|
|
169
160
|
const { origin: contractAddress, functionSelector } = txRequest;
|
|
170
161
|
try {
|
|
171
|
-
const
|
|
162
|
+
const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
|
|
163
|
+
const result = await contractFunctionSimulator.run(txRequest, contractAddress, functionSelector, undefined, anchorBlockHeader, // The sender for tags is set by contracts, typically by an account
|
|
172
164
|
// contract entrypoint
|
|
173
165
|
undefined, scopes);
|
|
174
166
|
this.log.debug(`Private simulation completed for ${contractAddress.toString()}:${functionSelector}`);
|
|
175
167
|
return result;
|
|
176
168
|
} catch (err) {
|
|
177
169
|
if (err instanceof SimulationError) {
|
|
178
|
-
await enrichSimulationError(err, this.
|
|
170
|
+
await enrichSimulationError(err, this.contractStore, this.log);
|
|
179
171
|
}
|
|
180
172
|
throw err;
|
|
181
173
|
}
|
|
@@ -190,10 +182,11 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
190
182
|
* @returns The simulation result containing the outputs of the utility function.
|
|
191
183
|
*/ async #simulateUtility(contractFunctionSimulator, call, authWitnesses, scopes) {
|
|
192
184
|
try {
|
|
193
|
-
|
|
185
|
+
const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
|
|
186
|
+
return contractFunctionSimulator.runUtility(call, authWitnesses ?? [], anchorBlockHeader, scopes);
|
|
194
187
|
} catch (err) {
|
|
195
188
|
if (err instanceof SimulationError) {
|
|
196
|
-
await enrichSimulationError(err, this.
|
|
189
|
+
await enrichSimulationError(err, this.contractStore, this.log);
|
|
197
190
|
}
|
|
198
191
|
throw err;
|
|
199
192
|
}
|
|
@@ -215,7 +208,7 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
215
208
|
} catch (err) {
|
|
216
209
|
if (err instanceof SimulationError) {
|
|
217
210
|
try {
|
|
218
|
-
await enrichPublicSimulationError(err, this.
|
|
211
|
+
await enrichPublicSimulationError(err, this.contractStore, this.log);
|
|
219
212
|
} catch (enrichErr) {
|
|
220
213
|
this.log.error(`Failed to enrich public simulation error: ${enrichErr}`);
|
|
221
214
|
}
|
|
@@ -235,14 +228,14 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
235
228
|
* @returns An object that contains the output of the kernel execution, including the ChonkProof if proving is enabled.
|
|
236
229
|
*/ async #prove(txExecutionRequest, proofCreator, privateExecutionResult, config) {
|
|
237
230
|
const simulationAnchorBlock = privateExecutionResult.getSimulationAnchorBlockNumber();
|
|
238
|
-
const kernelOracle = new PrivateKernelOracleImpl(this.
|
|
231
|
+
const kernelOracle = new PrivateKernelOracleImpl(this.contractStore, this.keyStore, this.node, simulationAnchorBlock);
|
|
239
232
|
const kernelTraceProver = new PrivateKernelExecutionProver(kernelOracle, proofCreator, !this.proverEnabled);
|
|
240
233
|
this.log.debug(`Executing kernel trace prover (${JSON.stringify(config)})...`);
|
|
241
234
|
return await kernelTraceProver.proveWithKernels(txExecutionRequest.toTxRequest(), privateExecutionResult, config);
|
|
242
235
|
}
|
|
243
236
|
// Public API
|
|
244
237
|
getContractInstance(address) {
|
|
245
|
-
return this.
|
|
238
|
+
return this.contractStore.getContractInstance(address);
|
|
246
239
|
}
|
|
247
240
|
/**
|
|
248
241
|
* Returns the contract class metadata given a contract class id.
|
|
@@ -258,7 +251,7 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
258
251
|
* during a public deployment. We probably want a nicer and more general API for this, but it'll have to
|
|
259
252
|
* do for the time being.
|
|
260
253
|
*/ async getContractClassMetadata(id, includeArtifact = false) {
|
|
261
|
-
const artifact = await this.
|
|
254
|
+
const artifact = await this.contractStore.getContractArtifact(id);
|
|
262
255
|
if (!artifact) {
|
|
263
256
|
this.log.warn(`No artifact found for contract class ${id.toString()} when looking for its metadata`);
|
|
264
257
|
}
|
|
@@ -281,7 +274,7 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
281
274
|
*/ async getContractMetadata(address) {
|
|
282
275
|
let instance;
|
|
283
276
|
try {
|
|
284
|
-
instance = await this.
|
|
277
|
+
instance = await this.contractStore.getContractInstance(address);
|
|
285
278
|
} catch {
|
|
286
279
|
this.log.warn(`No instance found for contract ${address.toString()} when looking for its metadata`);
|
|
287
280
|
}
|
|
@@ -310,46 +303,48 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
310
303
|
this.log.info(`Registered account ${accountCompleteAddress.address.toString()}`);
|
|
311
304
|
this.log.debug(`Registered account\n ${accountCompleteAddress.toReadableString()}`);
|
|
312
305
|
}
|
|
313
|
-
await this.
|
|
314
|
-
await this.
|
|
306
|
+
await this.addressStore.addCompleteAddress(accountCompleteAddress);
|
|
307
|
+
await this.noteStore.addScope(accountCompleteAddress.address);
|
|
315
308
|
return accountCompleteAddress;
|
|
316
309
|
}
|
|
317
310
|
/**
|
|
318
|
-
* Registers a
|
|
311
|
+
* Registers a sender in this PXE.
|
|
319
312
|
*
|
|
320
|
-
*
|
|
321
|
-
* Will do nothing if the
|
|
313
|
+
* After registering a new sender, the PXE will sync private logs that are tagged with this sender's address.
|
|
314
|
+
* Will do nothing if the address is already registered.
|
|
322
315
|
*
|
|
323
|
-
* @param
|
|
324
|
-
* @returns The address
|
|
325
|
-
|
|
316
|
+
* @param sender - Address of the sender to register.
|
|
317
|
+
* @returns The address of the sender.
|
|
318
|
+
* TODO: It's strange that we return the address here and I (benesjan) think we should drop the return value.
|
|
319
|
+
*/ async registerSender(sender) {
|
|
326
320
|
const accounts = await this.keyStore.getAccounts();
|
|
327
|
-
if (accounts.includes(
|
|
328
|
-
this.log.info(`Sender:\n "${
|
|
329
|
-
return
|
|
321
|
+
if (accounts.includes(sender)) {
|
|
322
|
+
this.log.info(`Sender:\n "${sender.toString()}"\n already registered.`);
|
|
323
|
+
return sender;
|
|
330
324
|
}
|
|
331
|
-
const wasAdded = await this.
|
|
325
|
+
const wasAdded = await this.senderAddressBookStore.addSender(sender);
|
|
332
326
|
if (wasAdded) {
|
|
333
|
-
this.log.info(`Added sender:\n ${
|
|
327
|
+
this.log.info(`Added sender:\n ${sender.toString()}`);
|
|
334
328
|
} else {
|
|
335
|
-
this.log.info(`Sender:\n "${
|
|
329
|
+
this.log.info(`Sender:\n "${sender.toString()}"\n already registered.`);
|
|
336
330
|
}
|
|
337
|
-
return
|
|
331
|
+
return sender;
|
|
338
332
|
}
|
|
339
333
|
/**
|
|
340
|
-
* Retrieves
|
|
341
|
-
* @returns
|
|
334
|
+
* Retrieves senders registered in this PXE.
|
|
335
|
+
* @returns Senders registered in this PXE.
|
|
342
336
|
*/ getSenders() {
|
|
343
|
-
return this.
|
|
337
|
+
return this.senderAddressBookStore.getSenders();
|
|
344
338
|
}
|
|
345
339
|
/**
|
|
346
|
-
* Removes a sender in
|
|
347
|
-
|
|
348
|
-
|
|
340
|
+
* Removes a sender registered in this PXE.
|
|
341
|
+
* @param sender - The address of the sender to remove.
|
|
342
|
+
*/ async removeSender(sender) {
|
|
343
|
+
const wasRemoved = await this.senderAddressBookStore.removeSender(sender);
|
|
349
344
|
if (wasRemoved) {
|
|
350
|
-
this.log.info(`Removed sender:\n ${
|
|
345
|
+
this.log.info(`Removed sender:\n ${sender.toString()}`);
|
|
351
346
|
} else {
|
|
352
|
-
this.log.info(`Sender:\n "${
|
|
347
|
+
this.log.info(`Sender:\n "${sender.toString()}"\n not registered in PXE.`);
|
|
353
348
|
}
|
|
354
349
|
}
|
|
355
350
|
/**
|
|
@@ -357,7 +352,7 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
357
352
|
* @returns An array of the accounts registered on this PXE.
|
|
358
353
|
*/ async getRegisteredAccounts() {
|
|
359
354
|
// Get complete addresses of both the recipients and the accounts
|
|
360
|
-
const completeAddresses = await this.
|
|
355
|
+
const completeAddresses = await this.addressStore.getCompleteAddresses();
|
|
361
356
|
// Filter out the addresses not corresponding to accounts
|
|
362
357
|
const accounts = await this.keyStore.getAccounts();
|
|
363
358
|
return completeAddresses.filter((completeAddress)=>accounts.find((address)=>address.equals(completeAddress.address)));
|
|
@@ -368,7 +363,7 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
368
363
|
* @param artifact - The build artifact for the contract class.
|
|
369
364
|
*/ async registerContractClass(artifact) {
|
|
370
365
|
const { id: contractClassId } = await getContractClassFromArtifact(artifact);
|
|
371
|
-
await this.
|
|
366
|
+
await this.contractStore.addContractArtifact(contractClassId, artifact);
|
|
372
367
|
this.log.info(`Added contract class ${artifact.name} with id ${contractClassId}`);
|
|
373
368
|
}
|
|
374
369
|
/**
|
|
@@ -392,17 +387,17 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
392
387
|
if (!computedAddress.equals(instance.address)) {
|
|
393
388
|
throw new Error('Added a contract in which the address does not match the contract instance.');
|
|
394
389
|
}
|
|
395
|
-
await this.
|
|
390
|
+
await this.contractStore.addContractArtifact(contractClass.id, artifact);
|
|
396
391
|
const publicFunctionSignatures = artifact.functions.filter((fn)=>fn.functionType === FunctionType.PUBLIC).map((fn)=>decodeFunctionSignature(fn.name, fn.parameters));
|
|
397
392
|
await this.node.registerContractFunctionSignatures(publicFunctionSignatures);
|
|
398
393
|
} else {
|
|
399
394
|
// Otherwise, make sure there is an artifact already registered for that class id
|
|
400
|
-
artifact = await this.
|
|
395
|
+
artifact = await this.contractStore.getContractArtifact(instance.currentContractClassId);
|
|
401
396
|
if (!artifact) {
|
|
402
397
|
throw new Error(`Artifact not found when registering an instance. Contract class: ${instance.currentContractClassId}.`);
|
|
403
398
|
}
|
|
404
399
|
}
|
|
405
|
-
await this.
|
|
400
|
+
await this.contractStore.addContractInstance(instance);
|
|
406
401
|
this.log.info(`Added contract ${artifact.name} at ${instance.address.toString()} with class ${instance.currentContractClassId}`);
|
|
407
402
|
}
|
|
408
403
|
/**
|
|
@@ -417,22 +412,22 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
417
412
|
// We disable concurrently updating contracts to avoid concurrently syncing with the node, or changing a contract's
|
|
418
413
|
// class while we're simulating it.
|
|
419
414
|
return this.#putInJobQueue(async ()=>{
|
|
420
|
-
const currentInstance = await this.
|
|
415
|
+
const currentInstance = await this.contractStore.getContractInstance(contractAddress);
|
|
421
416
|
if (!currentInstance) {
|
|
422
417
|
throw new Error(`Instance not found when updating a contract. Contract address: ${contractAddress}.`);
|
|
423
418
|
}
|
|
424
419
|
const contractClass = await getContractClassFromArtifact(artifact);
|
|
425
|
-
await this.
|
|
426
|
-
const header = await this.
|
|
420
|
+
await this.blockStateSynchronizer.sync();
|
|
421
|
+
const header = await this.anchorBlockStore.getBlockHeader();
|
|
427
422
|
const currentClassId = await readCurrentClassId(contractAddress, currentInstance, this.node, header.globalVariables.blockNumber, header.globalVariables.timestamp);
|
|
428
423
|
if (!contractClass.id.equals(currentClassId)) {
|
|
429
424
|
throw new Error('Could not update contract to a class different from the current one.');
|
|
430
425
|
}
|
|
431
|
-
await this.
|
|
426
|
+
await this.contractStore.addContractArtifact(contractClass.id, artifact);
|
|
432
427
|
const publicFunctionSignatures = artifact.functions.filter((fn)=>fn.functionType === FunctionType.PUBLIC).map((fn)=>decodeFunctionSignature(fn.name, fn.parameters));
|
|
433
428
|
await this.node.registerContractFunctionSignatures(publicFunctionSignatures);
|
|
434
429
|
currentInstance.currentContractClassId = contractClass.id;
|
|
435
|
-
await this.
|
|
430
|
+
await this.contractStore.addContractInstance(currentInstance);
|
|
436
431
|
this.log.info(`Updated contract ${artifact.name} at ${contractAddress.toString()} to class ${contractClass.id}`);
|
|
437
432
|
});
|
|
438
433
|
}
|
|
@@ -440,23 +435,7 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
440
435
|
* Retrieves the addresses of contracts added to this PXE.
|
|
441
436
|
* @returns An array of contracts addresses registered on this PXE.
|
|
442
437
|
*/ getContracts() {
|
|
443
|
-
return this.
|
|
444
|
-
}
|
|
445
|
-
/**
|
|
446
|
-
* A debugging utility to get notes based on the provided filter.
|
|
447
|
-
*
|
|
448
|
-
* Note that this should not be used in production code because the structure of notes is considered to be
|
|
449
|
-
* an implementation detail of contracts. This is only meant to be used for debugging purposes. If you need to obtain
|
|
450
|
-
* note-related information in production code, please implement a custom utility function on your contract and call
|
|
451
|
-
* that function instead (e.g. `get_balance(owner: AztecAddress) -> u128` utility function on a Token contract).
|
|
452
|
-
*
|
|
453
|
-
* @param filter - The filter to apply to the notes.
|
|
454
|
-
* @returns The requested notes.
|
|
455
|
-
*/ async getNotes(filter) {
|
|
456
|
-
// We need to manually trigger private state sync to have a guarantee that all the notes are available.
|
|
457
|
-
const call = await this.#getFunctionCall('sync_private_state', [], filter.contractAddress);
|
|
458
|
-
await this.simulateUtility(call);
|
|
459
|
-
return this.noteDataProvider.getNotes(filter);
|
|
438
|
+
return this.contractStore.getContractsAddresses();
|
|
460
439
|
}
|
|
461
440
|
/**
|
|
462
441
|
* Proves the private portion of a simulated transaction, ready to send to the network
|
|
@@ -474,7 +453,7 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
474
453
|
const totalTimer = new Timer();
|
|
475
454
|
try {
|
|
476
455
|
const syncTimer = new Timer();
|
|
477
|
-
await this.
|
|
456
|
+
await this.blockStateSynchronizer.sync();
|
|
478
457
|
const syncTime = syncTimer.ms();
|
|
479
458
|
const contractFunctionSimulator = this.#getSimulatorForTx();
|
|
480
459
|
privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest);
|
|
@@ -503,14 +482,21 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
503
482
|
timings,
|
|
504
483
|
nodeRPCCalls: contractFunctionSimulator?.getStats().nodeRPCCalls
|
|
505
484
|
});
|
|
485
|
+
// While not strictly necessary to store tagging cache contents in the DB since we sync tagging indexes from
|
|
486
|
+
// chain before sending new logs, the sync can only see logs already included in blocks. If we send another
|
|
487
|
+
// transaction before this one is included in a block from this PXE, and that transaction contains a log with
|
|
488
|
+
// a tag derived from the same secret, we would reuse the tag and the transactions would be linked. Hence
|
|
489
|
+
// storing the tags here prevents linkage of txs sent from the same PXE.
|
|
506
490
|
const preTagsUsedInTheTx = privateExecutionResult.entrypoint.preTags;
|
|
507
491
|
if (preTagsUsedInTheTx.length > 0) {
|
|
508
|
-
|
|
509
|
-
|
|
492
|
+
// TODO(benesjan): The following is an expensive operation. Figure out a way to avoid it.
|
|
493
|
+
const txHash = (await txProvingResult.toTx()).txHash;
|
|
494
|
+
await this.senderTaggingStore.storePendingIndexes(preTagsUsedInTheTx, txHash);
|
|
495
|
+
this.log.debug(`Stored used pre-tags as sender for the tx`, {
|
|
510
496
|
preTagsUsedInTheTx
|
|
511
497
|
});
|
|
512
498
|
} else {
|
|
513
|
-
this.log.debug(`No pre
|
|
499
|
+
this.log.debug(`No pre-tags used in the tx`);
|
|
514
500
|
}
|
|
515
501
|
return txProvingResult;
|
|
516
502
|
} catch (err) {
|
|
@@ -541,7 +527,7 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
541
527
|
};
|
|
542
528
|
this.log.info(`Profiling transaction execution request to ${txRequest.functionSelector} at ${txRequest.origin}`, txInfo);
|
|
543
529
|
const syncTimer = new Timer();
|
|
544
|
-
await this.
|
|
530
|
+
await this.blockStateSynchronizer.sync();
|
|
545
531
|
const syncTime = syncTimer.ms();
|
|
546
532
|
const contractFunctionSimulator = this.#getSimulatorForTx();
|
|
547
533
|
const privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest);
|
|
@@ -617,7 +603,7 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
617
603
|
};
|
|
618
604
|
this.log.info(`Simulating transaction execution request to ${txRequest.functionSelector} at ${txRequest.origin}`, txInfo);
|
|
619
605
|
const syncTimer = new Timer();
|
|
620
|
-
await this.
|
|
606
|
+
await this.blockStateSynchronizer.sync();
|
|
621
607
|
const syncTime = syncTimer.ms();
|
|
622
608
|
const contractFunctionSimulator = this.#getSimulatorForTx(overrides);
|
|
623
609
|
// Temporary: in case there are overrides, we have to skip the kernels or validations
|
|
@@ -632,7 +618,7 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
632
618
|
// According to the protocol rules, the nonce generator for the note hashes
|
|
633
619
|
// can either be the first nullifier in the tx or the protocol nullifier if there are none.
|
|
634
620
|
const nonceGenerator = privateExecutionResult.firstNullifier.equals(Fr.ZERO) ? await computeProtocolNullifier(await txRequest.toTxRequest().hash()) : privateExecutionResult.firstNullifier;
|
|
635
|
-
({ publicInputs, executionSteps } = await generateSimulatedProvingResult(privateExecutionResult, nonceGenerator, this.
|
|
621
|
+
({ publicInputs, executionSteps } = await generateSimulatedProvingResult(privateExecutionResult, nonceGenerator, this.contractStore));
|
|
636
622
|
} else {
|
|
637
623
|
// Kernel logic, plus proving of all private functions and kernels.
|
|
638
624
|
({ publicInputs, executionSteps } = await this.#prove(txRequest, this.proofCreator, privateExecutionResult, {
|
|
@@ -712,10 +698,11 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
712
698
|
try {
|
|
713
699
|
const totalTimer = new Timer();
|
|
714
700
|
const syncTimer = new Timer();
|
|
715
|
-
await this.
|
|
701
|
+
await this.blockStateSynchronizer.sync();
|
|
716
702
|
const syncTime = syncTimer.ms();
|
|
717
703
|
const functionTimer = new Timer();
|
|
718
704
|
const contractFunctionSimulator = this.#getSimulatorForTx();
|
|
705
|
+
await this.contractStore.syncPrivateState(call.to, call.selector, (privateSyncCall)=>this.#simulateUtility(contractFunctionSimulator, privateSyncCall));
|
|
719
706
|
const executionResult = await this.#simulateUtility(contractFunctionSimulator, call, authwits ?? [], scopes);
|
|
720
707
|
const functionTime = functionTimer.ms();
|
|
721
708
|
const totalTime = totalTimer.ms();
|
|
@@ -758,13 +745,15 @@ import { Synchronizer } from './synchronizer/index.js';
|
|
|
758
745
|
* toBlock - The block number to search up to (exclusive). Optional. If provided, it must be > 0.
|
|
759
746
|
* Defaults to the latest known block to PXE + 1.
|
|
760
747
|
* @returns - The packed events with block and tx metadata.
|
|
761
|
-
*/
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
748
|
+
*/ getPrivateEvents(eventSelector, filter) {
|
|
749
|
+
return this.#putInJobQueue(async ()=>{
|
|
750
|
+
await this.blockStateSynchronizer.sync();
|
|
751
|
+
const contractFunctionSimulator = this.#getSimulatorForTx();
|
|
752
|
+
await this.contractStore.syncPrivateState(filter.contractAddress, null, async (privateSyncCall)=>await this.#simulateUtility(contractFunctionSimulator, privateSyncCall));
|
|
753
|
+
const sanitizedFilter = await new PrivateEventFilterValidator(this.anchorBlockStore).validate(filter);
|
|
754
|
+
this.log.debug(`Getting private events for ${sanitizedFilter.contractAddress.toString()} from ${sanitizedFilter.fromBlock} to ${sanitizedFilter.toBlock}`);
|
|
755
|
+
return this.privateEventStore.getPrivateEvents(eventSelector, sanitizedFilter);
|
|
756
|
+
});
|
|
768
757
|
}
|
|
769
758
|
/**
|
|
770
759
|
* Stops the PXE's job queue.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
2
|
+
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
|
+
import { CompleteAddress } from '@aztec/stdlib/contract';
|
|
4
|
+
export declare class AddressStore {
|
|
5
|
+
#private;
|
|
6
|
+
constructor(store: AztecAsyncKVStore);
|
|
7
|
+
addCompleteAddress(completeAddress: CompleteAddress): Promise<boolean>;
|
|
8
|
+
getCompleteAddress(account: AztecAddress): Promise<CompleteAddress | undefined>;
|
|
9
|
+
getCompleteAddresses(): Promise<CompleteAddress[]>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzc19zdG9yZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0b3JhZ2UvYWRkcmVzc19zdG9yZS9hZGRyZXNzX3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFtQixpQkFBaUIsRUFBaUIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RixPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFekQscUJBQWEsWUFBWTs7SUFLdkIsWUFBWSxLQUFLLEVBQUUsaUJBQWlCLEVBS25DO0lBRUQsa0JBQWtCLENBQUMsZUFBZSxFQUFFLGVBQWUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBMEJyRTtJQVlELGtCQUFrQixDQUFDLE9BQU8sRUFBRSxZQUFZLEdBQUcsT0FBTyxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUMsQ0FFOUU7SUFFSyxvQkFBb0IsSUFBSSxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FJdkQ7Q0FDRiJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"address_store.d.ts","sourceRoot":"","sources":["../../../src/storage/address_store/address_store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAmB,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AACzF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,qBAAa,YAAY;;IAKvB,YAAY,KAAK,EAAE,iBAAiB,EAKnC;IAED,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CA0BrE;IAYD,kBAAkB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAE9E;IAEK,oBAAoB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAIvD;CACF"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { AddressStore } from './address_store.js';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdG9yYWdlL2FkZHJlc3Nfc3RvcmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/storage/address_store/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { AddressStore } from './address_store.js';
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import type { BlockNumber } from '@aztec/foundation/branded-types';
|
|
2
1
|
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
3
2
|
import { BlockHeader } from '@aztec/stdlib/tx';
|
|
4
|
-
export declare class
|
|
3
|
+
export declare class AnchorBlockStore {
|
|
5
4
|
#private;
|
|
6
5
|
constructor(store: AztecAsyncKVStore);
|
|
7
6
|
setHeader(header: BlockHeader): Promise<void>;
|
|
8
|
-
getBlockNumber(): Promise<BlockNumber>;
|
|
9
7
|
getBlockHeader(): Promise<BlockHeader>;
|
|
10
8
|
}
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5jaG9yX2Jsb2NrX3N0b3JlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RvcmFnZS9hbmNob3JfYmxvY2tfc3RvcmUvYW5jaG9yX2Jsb2NrX3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUF1QixNQUFNLGlCQUFpQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUvQyxxQkFBYSxnQkFBZ0I7O0lBSTNCLFlBQVksS0FBSyxFQUFFLGlCQUFpQixFQUduQztJQUVLLFNBQVMsQ0FBQyxNQUFNLEVBQUUsV0FBVyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FFbEQ7SUFFSyxjQUFjLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQU8zQztDQUNGIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anchor_block_store.d.ts","sourceRoot":"","sources":["../../../src/storage/anchor_block_store/anchor_block_store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAuB,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,qBAAa,gBAAgB;;IAI3B,YAAY,KAAK,EAAE,iBAAiB,EAGnC;IAEK,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAElD;IAEK,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CAO3C;CACF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BlockHeader } from '@aztec/stdlib/tx';
|
|
2
|
-
export class
|
|
2
|
+
export class AnchorBlockStore {
|
|
3
3
|
#store;
|
|
4
4
|
#synchronizedHeader;
|
|
5
5
|
constructor(store){
|
|
@@ -9,17 +9,10 @@ export class SyncDataProvider {
|
|
|
9
9
|
async setHeader(header) {
|
|
10
10
|
await this.#synchronizedHeader.set(header.toBuffer());
|
|
11
11
|
}
|
|
12
|
-
async getBlockNumber() {
|
|
13
|
-
const headerBuffer = await this.#synchronizedHeader.getAsync();
|
|
14
|
-
if (!headerBuffer) {
|
|
15
|
-
throw new Error(`Trying to get block number with a not-yet-synchronized PXE - this should never happen`);
|
|
16
|
-
}
|
|
17
|
-
return BlockHeader.fromBuffer(headerBuffer).globalVariables.blockNumber;
|
|
18
|
-
}
|
|
19
12
|
async getBlockHeader() {
|
|
20
13
|
const headerBuffer = await this.#synchronizedHeader.getAsync();
|
|
21
14
|
if (!headerBuffer) {
|
|
22
|
-
throw new Error(`
|
|
15
|
+
throw new Error(`Trying to get block header with a not-yet-synchronized PXE - this should never happen`);
|
|
23
16
|
}
|
|
24
17
|
return BlockHeader.fromBuffer(headerBuffer);
|
|
25
18
|
}
|