@aztec/pxe 0.0.1-commit.7d4e6cd → 0.0.1-commit.87a0206
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 +1 -1
- package/dest/block_synchronizer/block_synchronizer.d.ts +11 -5
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +72 -21
- package/dest/config/index.d.ts +3 -1
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +17 -0
- 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 +8 -10
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +36 -26
- 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/index.d.ts +2 -2
- package/dest/contract_function_simulator/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.js +1 -1
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +1 -1
- package/dest/contract_function_simulator/noir-structs/event_validation_request.js +1 -1
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +1 -1
- package/dest/contract_function_simulator/noir-structs/note_validation_request.js +1 -1
- 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 +16 -12
- package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
- 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 +11 -9
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +64 -41
- 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 +0 -35
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +13 -3
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +23 -11
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +37 -24
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +88 -84
- package/dest/contract_sync/contract_sync_service.d.ts +41 -0
- package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
- package/dest/contract_sync/contract_sync_service.js +82 -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 +55 -0
- package/dest/debug/pxe_debug_utils.d.ts +22 -9
- 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/utils.d.ts +1 -1
- package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/utils.js +12 -6
- package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +13 -7
- 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 +3 -1
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +2 -0
- package/dest/entrypoints/server/utils.d.ts +1 -1
- package/dest/entrypoints/server/utils.d.ts.map +1 -1
- package/dest/entrypoints/server/utils.js +19 -8
- package/dest/events/event_service.d.ts +6 -6
- package/dest/events/event_service.d.ts.map +1 -1
- package/dest/events/event_service.js +19 -22
- package/dest/events/private_event_filter_validator.d.ts +5 -5
- package/dest/events/private_event_filter_validator.d.ts.map +1 -1
- package/dest/events/private_event_filter_validator.js +5 -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 +7 -5
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +23 -20
- package/dest/notes/note_service.d.ts +7 -7
- package/dest/notes/note_service.d.ts.map +1 -1
- package/dest/notes/note_service.js +31 -36
- package/dest/oracle_version.d.ts +3 -3
- package/dest/oracle_version.d.ts.map +1 -1
- package/dest/oracle_version.js +4 -3
- package/dest/private_kernel/hints/index.d.ts +2 -2
- package/dest/private_kernel/hints/index.d.ts.map +1 -1
- package/dest/private_kernel/hints/index.js +1 -1
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +28 -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} +12 -6
- 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 +3 -3
- package/dest/private_kernel/private_kernel_oracle.d.ts +23 -28
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle.js +90 -2
- package/dest/pxe.d.ts +19 -37
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +67 -86
- package/dest/storage/address_store/address_store.d.ts +1 -1
- package/dest/storage/address_store/address_store.d.ts.map +1 -1
- package/dest/storage/address_store/address_store.js +12 -11
- package/dest/storage/anchor_block_store/anchor_block_store.d.ts +9 -1
- package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -1
- package/dest/storage/anchor_block_store/anchor_block_store.js +8 -1
- package/dest/storage/capsule_store/capsule_store.d.ts +24 -9
- package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
- package/dest/storage/capsule_store/capsule_store.js +130 -23
- package/dest/storage/contract_store/contract_store.d.ts +1 -2
- package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
- package/dest/storage/contract_store/contract_store.js +27 -30
- package/dest/storage/metadata.d.ts +1 -1
- package/dest/storage/metadata.js +1 -1
- package/dest/storage/note_store/note_store.d.ts +51 -52
- package/dest/storage/note_store/note_store.d.ts.map +1 -1
- package/dest/storage/note_store/note_store.js +285 -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 +226 -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 +15 -8
- 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 +19 -9
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/sender_tagging_store.js +252 -100
- 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 +46 -0
- package/dest/tagging/index.d.ts +2 -1
- package/dest/tagging/index.d.ts.map +1 -1
- package/dest/tagging/index.js +1 -0
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +3 -2
- 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 +6 -6
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +3 -2
- 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 +5 -2
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +3 -2
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +7 -7
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +1 -1
- 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 +5 -8
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +5 -2
- 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 +10 -5
- package/package.json +27 -18
- package/src/bin/check_oracle_version.ts +1 -0
- package/src/block_synchronizer/block_synchronizer.ts +91 -33
- package/src/config/index.ts +14 -0
- package/src/contract_function_simulator/benchmarked_node.ts +103 -0
- package/src/contract_function_simulator/contract_function_simulator.ts +39 -30
- package/src/contract_function_simulator/execution_note_cache.ts +44 -25
- package/src/contract_function_simulator/index.ts +1 -1
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +1 -1
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +1 -1
- package/src/contract_function_simulator/noir-structs/utility_context.ts +6 -25
- package/src/contract_function_simulator/oracle/interfaces.ts +21 -11
- package/src/contract_function_simulator/oracle/note_packing_utils.ts +10 -10
- package/src/contract_function_simulator/oracle/oracle.ts +76 -44
- package/src/contract_function_simulator/oracle/private_execution.ts +1 -67
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +37 -13
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +112 -91
- package/src/contract_sync/contract_sync_service.ts +129 -0
- package/src/contract_sync/helpers.ts +93 -0
- package/src/debug/pxe_debug_utils.ts +60 -17
- package/src/entrypoints/client/bundle/utils.ts +7 -14
- package/src/entrypoints/client/lazy/utils.ts +8 -14
- package/src/entrypoints/pxe_creation_options.ts +2 -1
- package/src/entrypoints/server/index.ts +2 -0
- package/src/entrypoints/server/utils.ts +15 -19
- package/src/events/event_service.ts +17 -25
- package/src/events/private_event_filter_validator.ts +3 -5
- package/src/job_coordinator/job_coordinator.ts +4 -3
- package/src/logs/log_service.ts +34 -16
- package/src/notes/note_service.ts +38 -43
- package/src/oracle_version.ts +4 -3
- package/src/private_kernel/hints/index.ts +1 -1
- package/src/private_kernel/hints/{build_private_kernel_reset_private_inputs.ts → private_kernel_reset_private_inputs_builder.ts} +32 -20
- package/src/private_kernel/private_kernel_execution_prover.ts +7 -4
- package/src/private_kernel/private_kernel_oracle.ts +116 -37
- package/src/pxe.ts +111 -118
- package/src/storage/address_store/address_store.ts +15 -15
- package/src/storage/anchor_block_store/anchor_block_store.ts +8 -0
- package/src/storage/capsule_store/capsule_store.ts +159 -23
- package/src/storage/contract_store/contract_store.ts +26 -35
- package/src/storage/metadata.ts +1 -1
- package/src/storage/note_store/note_store.ts +321 -318
- package/src/storage/note_store/stored_note.ts +48 -0
- package/src/storage/private_event_store/private_event_store.ts +292 -124
- package/src/storage/private_event_store/stored_private_event.ts +73 -0
- package/src/storage/tagging_store/recipient_tagging_store.ts +106 -20
- package/src/storage/tagging_store/sender_address_book_store.ts +20 -14
- package/src/storage/tagging_store/sender_tagging_store.ts +293 -108
- package/src/tagging/get_all_logs_by_tags.ts +68 -0
- package/src/tagging/index.ts +1 -0
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +16 -5
- package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +7 -1
- package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +9 -6
- package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +5 -17
- package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +16 -4
- 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/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
|
@@ -1,4 +1,92 @@
|
|
|
1
|
+
import { PUBLIC_DATA_TREE_HEIGHT, VK_TREE_HEIGHT } from '@aztec/constants';
|
|
2
|
+
import { MembershipWitness } from '@aztec/foundation/trees';
|
|
3
|
+
import { getVKIndex, getVKSiblingPath } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
4
|
+
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
5
|
+
import { computeContractClassIdPreimage, computeSaltedInitializationHash } from '@aztec/stdlib/contract';
|
|
6
|
+
import { DelayedPublicMutableValues, DelayedPublicMutableValuesWithHash } from '@aztec/stdlib/delayed-public-mutable';
|
|
7
|
+
import { computePublicDataTreeLeafSlot } from '@aztec/stdlib/hash';
|
|
8
|
+
import { UpdatedClassIdHints } from '@aztec/stdlib/kernel';
|
|
1
9
|
/**
|
|
2
10
|
* Provides functionality needed by the private kernel for interacting with our state trees.
|
|
3
|
-
|
|
4
|
-
|
|
11
|
+
*/ export class PrivateKernelOracle {
|
|
12
|
+
contractStore;
|
|
13
|
+
keyStore;
|
|
14
|
+
node;
|
|
15
|
+
blockHash;
|
|
16
|
+
constructor(contractStore, keyStore, node, blockHash){
|
|
17
|
+
this.contractStore = contractStore;
|
|
18
|
+
this.keyStore = keyStore;
|
|
19
|
+
this.node = node;
|
|
20
|
+
this.blockHash = blockHash;
|
|
21
|
+
}
|
|
22
|
+
/** Retrieves the preimage of a contract address from the registered contract instances db. */ async getContractAddressPreimage(address) {
|
|
23
|
+
const instance = await this.contractStore.getContractInstance(address);
|
|
24
|
+
if (!instance) {
|
|
25
|
+
throw new Error(`Contract instance not found when getting address preimage. Contract address: ${address}.`);
|
|
26
|
+
}
|
|
27
|
+
return {
|
|
28
|
+
saltedInitializationHash: await computeSaltedInitializationHash(instance),
|
|
29
|
+
...instance
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/** Retrieves the preimage of a contract class id from the contract classes db. */ async getContractClassIdPreimage(contractClassId) {
|
|
33
|
+
const contractClass = await this.contractStore.getContractClass(contractClassId);
|
|
34
|
+
if (!contractClass) {
|
|
35
|
+
throw new Error(`Contract class not found when getting class id preimage. Class id: ${contractClassId}.`);
|
|
36
|
+
}
|
|
37
|
+
return computeContractClassIdPreimage(contractClass);
|
|
38
|
+
}
|
|
39
|
+
/** Returns a membership witness with the sibling path and leaf index in our private functions tree. */ async getFunctionMembershipWitness(contractClassId, selector) {
|
|
40
|
+
const membershipWitness = await this.contractStore.getFunctionMembershipWitness(contractClassId, selector);
|
|
41
|
+
if (!membershipWitness) {
|
|
42
|
+
throw new Error(`Membership witness not found for contract class id ${contractClassId} and selector ${selector}.`);
|
|
43
|
+
}
|
|
44
|
+
return membershipWitness;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Returns a membership witness with the sibling path and leaf index in our protocol VK indexed merkle tree.
|
|
48
|
+
* Used to validate the previous kernel's verification key.
|
|
49
|
+
*/ getVkMembershipWitness(vk) {
|
|
50
|
+
const leafIndex = getVKIndex(vk);
|
|
51
|
+
return Promise.resolve(new MembershipWitness(VK_TREE_HEIGHT, BigInt(leafIndex), getVKSiblingPath(leafIndex)));
|
|
52
|
+
}
|
|
53
|
+
/** Returns a membership witness with the sibling path and leaf index in our note hash tree. */ getNoteHashMembershipWitness(noteHash) {
|
|
54
|
+
return this.node.getNoteHashMembershipWitness(this.blockHash, noteHash);
|
|
55
|
+
}
|
|
56
|
+
/** Returns a membership witness with the sibling path and leaf index in our nullifier indexed merkle tree. */ getNullifierMembershipWitness(nullifier) {
|
|
57
|
+
return this.node.getNullifierMembershipWitness(this.blockHash, nullifier);
|
|
58
|
+
}
|
|
59
|
+
/** Returns the root of our note hash merkle tree. */ async getNoteHashTreeRoot() {
|
|
60
|
+
const header = await this.node.getBlockHeader(this.blockHash);
|
|
61
|
+
if (!header) {
|
|
62
|
+
throw new Error(`No block header found for block hash ${this.blockHash}`);
|
|
63
|
+
}
|
|
64
|
+
return header.state.partial.noteHashTree.root;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Retrieves the sk_m corresponding to the pk_m.
|
|
68
|
+
* @throws If the provided public key is not associated with any of the registered accounts.
|
|
69
|
+
* @param masterPublicKey - The master public key to get secret key for.
|
|
70
|
+
* @returns A Promise that resolves to sk_m.
|
|
71
|
+
* @dev Used when feeding the sk_m to the kernel circuit for keys verification.
|
|
72
|
+
*/ getMasterSecretKey(masterPublicKey) {
|
|
73
|
+
return this.keyStore.getMasterSecretKey(masterPublicKey);
|
|
74
|
+
}
|
|
75
|
+
/** Use debug data to get the function name corresponding to a selector. */ getDebugFunctionName(contractAddress, selector) {
|
|
76
|
+
return this.contractStore.getDebugFunctionName(contractAddress, selector);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Returns a membership witness and leaf index to our public data indexed merkle tree,
|
|
80
|
+
* along with an associated DelayedPublicMutable containing the class ID to update.
|
|
81
|
+
*/ async getUpdatedClassIdHints(contractAddress) {
|
|
82
|
+
const { delayedPublicMutableSlot, delayedPublicMutableHashSlot } = await DelayedPublicMutableValuesWithHash.getContractUpdateSlots(contractAddress);
|
|
83
|
+
const hashLeafSlot = await computePublicDataTreeLeafSlot(ProtocolContractAddress.ContractInstanceRegistry, delayedPublicMutableHashSlot);
|
|
84
|
+
const updatedClassIdWitness = await this.node.getPublicDataWitness(this.blockHash, hashLeafSlot);
|
|
85
|
+
if (!updatedClassIdWitness) {
|
|
86
|
+
throw new Error(`No public data tree witness found for ${hashLeafSlot}`);
|
|
87
|
+
}
|
|
88
|
+
const readStorage = (storageSlot)=>this.node.getPublicStorageAt(this.blockHash, ProtocolContractAddress.ContractInstanceRegistry, storageSlot);
|
|
89
|
+
const delayedPublicMutableValues = await DelayedPublicMutableValues.readFromTree(delayedPublicMutableSlot, readStorage);
|
|
90
|
+
return new UpdatedClassIdHints(new MembershipWitness(PUBLIC_DATA_TREE_HEIGHT, updatedClassIdWitness.index, updatedClassIdWitness.siblingPath.toTuple()), updatedClassIdWitness.leafPreimage, delayedPublicMutableValues);
|
|
91
|
+
}
|
|
92
|
+
}
|
package/dest/pxe.d.ts
CHANGED
|
@@ -7,9 +7,9 @@ import type { CircuitSimulator } from '@aztec/simulator/client';
|
|
|
7
7
|
import { type ContractArtifact, EventSelector, FunctionCall } from '@aztec/stdlib/abi';
|
|
8
8
|
import type { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
9
9
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
10
|
-
import { CompleteAddress, type
|
|
10
|
+
import { CompleteAddress, type ContractInstanceWithAddress, type PartialAddress } from '@aztec/stdlib/contract';
|
|
11
11
|
import type { AztecNode, PrivateKernelProver } from '@aztec/stdlib/interfaces/client';
|
|
12
|
-
import { type InTx, SimulationOverrides, TxExecutionRequest, TxProfileResult, TxProvingResult, TxSimulationResult, UtilitySimulationResult } from '@aztec/stdlib/tx';
|
|
12
|
+
import { BlockHeader, type InTx, SimulationOverrides, TxExecutionRequest, TxProfileResult, TxProvingResult, TxSimulationResult, UtilitySimulationResult } from '@aztec/stdlib/tx';
|
|
13
13
|
import type { PXEConfig } from './config/index.js';
|
|
14
14
|
import { PXEDebugUtils } from './debug/pxe_debug_utils.js';
|
|
15
15
|
export type PackedPrivateEvent = InTx & {
|
|
@@ -34,6 +34,7 @@ export declare class PXE {
|
|
|
34
34
|
private recipientTaggingStore;
|
|
35
35
|
private addressStore;
|
|
36
36
|
private privateEventStore;
|
|
37
|
+
private contractSyncService;
|
|
37
38
|
private simulator;
|
|
38
39
|
private proverEnabled;
|
|
39
40
|
private proofCreator;
|
|
@@ -51,42 +52,23 @@ export declare class PXE {
|
|
|
51
52
|
* @returns A promise that resolves PXE is ready to be used.
|
|
52
53
|
*/
|
|
53
54
|
static create(node: AztecNode, store: AztecAsyncKVStore, proofCreator: PrivateKernelProver, simulator: CircuitSimulator, protocolContractsProvider: ProtocolContractsProvider, config: PXEConfig, loggerOrSuffix?: string | Logger): Promise<PXE>;
|
|
55
|
+
/**
|
|
56
|
+
* Returns the block header up to which the PXE has synced.
|
|
57
|
+
* @returns The synced block header
|
|
58
|
+
*/
|
|
59
|
+
getSyncedBlockHeader(): Promise<BlockHeader>;
|
|
60
|
+
/**
|
|
61
|
+
* Returns the contract instance for a given address, if it's registered in the PXE.
|
|
62
|
+
* @param address - The contract address.
|
|
63
|
+
* @returns The contract instance if found, undefined otherwise.
|
|
64
|
+
*/
|
|
54
65
|
getContractInstance(address: AztecAddress): Promise<ContractInstanceWithAddress | undefined>;
|
|
55
66
|
/**
|
|
56
|
-
* Returns the contract
|
|
57
|
-
*
|
|
58
|
-
* @
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
* @returns - It returns the contract class metadata, with the artifact field being optional, and will only be returned if true is passed in
|
|
62
|
-
* for `includeArtifact`
|
|
63
|
-
* TODO(@spalladino): The PXE actually holds artifacts and not classes, what should we return? Also,
|
|
64
|
-
* should the pxe query the node for contract public info, and merge it with its own definitions?
|
|
65
|
-
* TODO(@spalladino): This method is strictly needed to decide whether to publicly register a class or not
|
|
66
|
-
* during a public deployment. We probably want a nicer and more general API for this, but it'll have to
|
|
67
|
-
* do for the time being.
|
|
68
|
-
*/
|
|
69
|
-
getContractClassMetadata(id: Fr, includeArtifact?: boolean): Promise<{
|
|
70
|
-
contractClass: ContractClassWithId | undefined;
|
|
71
|
-
isContractClassPubliclyRegistered: boolean;
|
|
72
|
-
artifact: ContractArtifact | undefined;
|
|
73
|
-
}>;
|
|
74
|
-
/**
|
|
75
|
-
* Returns the contract metadata given an address.
|
|
76
|
-
* The metadata consists of its contract instance, which includes the contract class identifier,
|
|
77
|
-
* initialization hash, deployment salt, and public keys hash; whether the contract instance has been initialized;
|
|
78
|
-
* and whether the contract instance with the given address has been publicly deployed.
|
|
79
|
-
* @remark - it queries the node to check whether the contract instance has been initialized / publicly deployed through a node.
|
|
80
|
-
* This query is not dependent on the PXE.
|
|
81
|
-
* @param address - The address that the contract instance resides at.
|
|
82
|
-
* @returns - It returns the contract metadata
|
|
83
|
-
* TODO(@spalladino): Should we return the public keys in plain as well here?
|
|
84
|
-
*/
|
|
85
|
-
getContractMetadata(address: AztecAddress): Promise<{
|
|
86
|
-
contractInstance: ContractInstanceWithAddress | undefined;
|
|
87
|
-
isContractInitialized: boolean;
|
|
88
|
-
isContractPublished: boolean;
|
|
89
|
-
}>;
|
|
67
|
+
* Returns the contract artifact for a given contract class id, if it's registered in the PXE.
|
|
68
|
+
* @param id - Identifier of the contract class.
|
|
69
|
+
* @returns The contract artifact if found, undefined otherwise.
|
|
70
|
+
*/
|
|
71
|
+
getContractArtifact(id: Fr): Promise<ContractArtifact | undefined>;
|
|
90
72
|
/**
|
|
91
73
|
* Registers a user account in PXE given its master encryption private key.
|
|
92
74
|
* Once a new account is registered, the PXE will trial-decrypt all published notes on
|
|
@@ -230,4 +212,4 @@ export declare class PXE {
|
|
|
230
212
|
*/
|
|
231
213
|
stop(): Promise<void>;
|
|
232
214
|
}
|
|
233
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
215
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHhlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcHhlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFakUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBcUMsTUFBTSx1QkFBdUIsQ0FBQztBQUl2RixPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sRUFBRSxLQUFLLHlCQUF5QixFQUF5QixNQUFNLDJCQUEyQixDQUFDO0FBQ2xHLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxFQUNMLEtBQUssZ0JBQWdCLEVBQ3JCLGFBQWEsRUFDYixZQUFZLEVBR2IsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsZUFBZSxFQUNmLEtBQUssMkJBQTJCLEVBQ2hDLEtBQUssY0FBYyxFQUdwQixNQUFNLHdCQUF3QixDQUFDO0FBRWhDLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBTXRGLE9BQU8sRUFDTCxXQUFXLEVBRVgsS0FBSyxJQUFJLEVBS1QsbUJBQW1CLEVBR25CLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YsZUFBZSxFQUNmLGtCQUFrQixFQUNsQix1QkFBdUIsRUFDeEIsTUFBTSxrQkFBa0IsQ0FBQztBQUsxQixPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQVNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1B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
|
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;
|
|
1
|
+
{"version":3,"file":"pxe.d.ts","sourceRoot":"","sources":["../src/pxe.ts"],"names":[],"mappings":"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"}
|
package/dest/pxe.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
1
|
import { createLogger } from '@aztec/foundation/log';
|
|
3
2
|
import { SerialQueue } from '@aztec/foundation/queue';
|
|
4
3
|
import { Timer } from '@aztec/foundation/timer';
|
|
@@ -8,20 +7,20 @@ import { protocolContractNames } from '@aztec/protocol-contracts';
|
|
|
8
7
|
import { FunctionType, decodeFunctionSignature } from '@aztec/stdlib/abi';
|
|
9
8
|
import { computeContractAddressFromInstance, getContractClassFromArtifact } from '@aztec/stdlib/contract';
|
|
10
9
|
import { SimulationError } from '@aztec/stdlib/errors';
|
|
11
|
-
import { computeProtocolNullifier, siloNullifier } from '@aztec/stdlib/hash';
|
|
12
10
|
import { PrivateSimulationResult, TxProfileResult, TxProvingResult, TxSimulationResult } from '@aztec/stdlib/tx';
|
|
13
11
|
import { inspect } from 'util';
|
|
14
12
|
import { BlockSynchronizer } from './block_synchronizer/index.js';
|
|
13
|
+
import { BenchmarkedNodeFactory } from './contract_function_simulator/benchmarked_node.js';
|
|
15
14
|
import { ContractFunctionSimulator, generateSimulatedProvingResult } from './contract_function_simulator/contract_function_simulator.js';
|
|
16
|
-
import { readCurrentClassId } from './contract_function_simulator/oracle/private_execution.js';
|
|
17
15
|
import { ProxiedContractStoreFactory } from './contract_function_simulator/proxied_contract_data_source.js';
|
|
18
|
-
import {
|
|
16
|
+
import { ContractSyncService } from './contract_sync/contract_sync_service.js';
|
|
17
|
+
import { readCurrentClassId } from './contract_sync/helpers.js';
|
|
19
18
|
import { PXEDebugUtils } from './debug/pxe_debug_utils.js';
|
|
20
19
|
import { enrichPublicSimulationError, enrichSimulationError } from './error_enriching.js';
|
|
21
20
|
import { PrivateEventFilterValidator } from './events/private_event_filter_validator.js';
|
|
22
21
|
import { JobCoordinator } from './job_coordinator/job_coordinator.js';
|
|
23
22
|
import { PrivateKernelExecutionProver } from './private_kernel/private_kernel_execution_prover.js';
|
|
24
|
-
import {
|
|
23
|
+
import { PrivateKernelOracle } from './private_kernel/private_kernel_oracle.js';
|
|
25
24
|
import { AddressStore } from './storage/address_store/address_store.js';
|
|
26
25
|
import { AnchorBlockStore } from './storage/anchor_block_store/anchor_block_store.js';
|
|
27
26
|
import { CapsuleStore } from './storage/capsule_store/capsule_store.js';
|
|
@@ -47,6 +46,7 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
47
46
|
recipientTaggingStore;
|
|
48
47
|
addressStore;
|
|
49
48
|
privateEventStore;
|
|
49
|
+
contractSyncService;
|
|
50
50
|
simulator;
|
|
51
51
|
proverEnabled;
|
|
52
52
|
proofCreator;
|
|
@@ -55,7 +55,7 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
55
55
|
jobQueue;
|
|
56
56
|
jobCoordinator;
|
|
57
57
|
debug;
|
|
58
|
-
constructor(node, blockStateSynchronizer, keyStore, contractStore, noteStore, capsuleStore, anchorBlockStore, senderTaggingStore, senderAddressBookStore, recipientTaggingStore, addressStore, privateEventStore, simulator, proverEnabled, proofCreator, protocolContractsProvider, log, jobQueue, jobCoordinator, debug){
|
|
58
|
+
constructor(node, blockStateSynchronizer, keyStore, contractStore, noteStore, capsuleStore, anchorBlockStore, senderTaggingStore, senderAddressBookStore, recipientTaggingStore, addressStore, privateEventStore, contractSyncService, simulator, proverEnabled, proofCreator, protocolContractsProvider, log, jobQueue, jobCoordinator, debug){
|
|
59
59
|
this.node = node;
|
|
60
60
|
this.blockStateSynchronizer = blockStateSynchronizer;
|
|
61
61
|
this.keyStore = keyStore;
|
|
@@ -68,6 +68,7 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
68
68
|
this.recipientTaggingStore = recipientTaggingStore;
|
|
69
69
|
this.addressStore = addressStore;
|
|
70
70
|
this.privateEventStore = privateEventStore;
|
|
71
|
+
this.contractSyncService = contractSyncService;
|
|
71
72
|
this.simulator = simulator;
|
|
72
73
|
this.proverEnabled = proverEnabled;
|
|
73
74
|
this.proofCreator = proofCreator;
|
|
@@ -84,12 +85,14 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
84
85
|
*
|
|
85
86
|
* @returns A promise that resolves PXE is ready to be used.
|
|
86
87
|
*/ static async create(node, store, proofCreator, simulator, protocolContractsProvider, config, loggerOrSuffix) {
|
|
88
|
+
// Extract bindings from the logger, or use empty bindings if a string suffix is provided.
|
|
89
|
+
const bindings = loggerOrSuffix && typeof loggerOrSuffix !== 'string' ? loggerOrSuffix.getBindings() : undefined;
|
|
87
90
|
const log = !loggerOrSuffix || typeof loggerOrSuffix === 'string' ? createLogger(loggerOrSuffix ? `pxe:service:${loggerOrSuffix}` : `pxe:service`) : loggerOrSuffix;
|
|
88
91
|
const proverEnabled = !!config.proverEnabled;
|
|
89
92
|
const addressStore = new AddressStore(store);
|
|
90
93
|
const privateEventStore = new PrivateEventStore(store);
|
|
91
94
|
const contractStore = new ContractStore(store);
|
|
92
|
-
const noteStore =
|
|
95
|
+
const noteStore = new NoteStore(store);
|
|
93
96
|
const anchorBlockStore = new AnchorBlockStore(store);
|
|
94
97
|
const senderTaggingStore = new SenderTaggingStore(store);
|
|
95
98
|
const senderAddressBookStore = new SenderAddressBookStore(store);
|
|
@@ -97,12 +100,21 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
97
100
|
const capsuleStore = new CapsuleStore(store);
|
|
98
101
|
const keyStore = new KeyStore(store);
|
|
99
102
|
const tipsStore = new L2TipsKVStore(store, 'pxe');
|
|
100
|
-
const
|
|
101
|
-
const
|
|
102
|
-
const
|
|
103
|
+
const contractSyncService = new ContractSyncService(node, contractStore, noteStore, createLogger('pxe:contract_sync', bindings));
|
|
104
|
+
const synchronizer = new BlockSynchronizer(node, store, anchorBlockStore, noteStore, privateEventStore, tipsStore, contractSyncService, config, bindings);
|
|
105
|
+
const jobCoordinator = new JobCoordinator(store, bindings);
|
|
106
|
+
jobCoordinator.registerStores([
|
|
107
|
+
capsuleStore,
|
|
108
|
+
senderTaggingStore,
|
|
109
|
+
recipientTaggingStore,
|
|
110
|
+
privateEventStore,
|
|
111
|
+
noteStore,
|
|
112
|
+
contractSyncService
|
|
113
|
+
]);
|
|
114
|
+
const debugUtils = new PXEDebugUtils(contractSyncService, noteStore, synchronizer, anchorBlockStore);
|
|
103
115
|
const jobQueue = new SerialQueue();
|
|
104
|
-
const pxe = new PXE(node, synchronizer, keyStore, contractStore, noteStore, capsuleStore, anchorBlockStore, senderTaggingStore, senderAddressBookStore, recipientTaggingStore, addressStore, privateEventStore, simulator, proverEnabled, proofCreator, protocolContractsProvider, log, jobQueue, jobCoordinator, debugUtils);
|
|
105
|
-
debugUtils.
|
|
116
|
+
const pxe = new PXE(node, synchronizer, keyStore, contractStore, noteStore, capsuleStore, anchorBlockStore, senderTaggingStore, senderAddressBookStore, recipientTaggingStore, addressStore, privateEventStore, contractSyncService, simulator, proverEnabled, proofCreator, protocolContractsProvider, log, jobQueue, jobCoordinator, debugUtils);
|
|
117
|
+
debugUtils.setPXEHelpers(pxe.#putInJobQueue.bind(pxe), pxe.#getSimulatorForTx.bind(pxe), pxe.#simulateUtility.bind(pxe));
|
|
106
118
|
pxe.jobQueue.start();
|
|
107
119
|
await pxe.#registerProtocolContracts();
|
|
108
120
|
const info = await node.getNodeInfo();
|
|
@@ -112,7 +124,7 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
112
124
|
// Internal methods
|
|
113
125
|
#getSimulatorForTx(overrides) {
|
|
114
126
|
const proxyContractStore = ProxiedContractStoreFactory.create(this.contractStore, overrides?.contracts);
|
|
115
|
-
return new ContractFunctionSimulator(proxyContractStore, this.noteStore, this.keyStore, this.addressStore,
|
|
127
|
+
return new ContractFunctionSimulator(proxyContractStore, this.noteStore, this.keyStore, this.addressStore, BenchmarkedNodeFactory.create(this.node), this.senderTaggingStore, this.recipientTaggingStore, this.senderAddressBookStore, this.capsuleStore, this.privateEventStore, this.simulator, this.contractSyncService);
|
|
116
128
|
}
|
|
117
129
|
#contextualizeError(err, ...context) {
|
|
118
130
|
let contextStr = '';
|
|
@@ -162,22 +174,13 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
162
174
|
}
|
|
163
175
|
this.log.verbose(`Registered protocol contracts in pxe`, registered);
|
|
164
176
|
}
|
|
165
|
-
async #isContractClassPubliclyRegistered(id) {
|
|
166
|
-
return !!await this.node.getContractClass(id);
|
|
167
|
-
}
|
|
168
|
-
async #isContractPublished(address) {
|
|
169
|
-
return !!await this.node.getContract(address);
|
|
170
|
-
}
|
|
171
|
-
async #isContractInitialized(address) {
|
|
172
|
-
const initNullifier = await siloNullifier(address, address.toField());
|
|
173
|
-
return !!await this.node.getNullifierMembershipWitness('latest', initNullifier);
|
|
174
|
-
}
|
|
175
177
|
// Executes the entrypoint private function, as well as all nested private
|
|
176
178
|
// functions that might arise.
|
|
177
179
|
async #executePrivate(contractFunctionSimulator, txRequest, scopes, jobId) {
|
|
178
180
|
const { origin: contractAddress, functionSelector } = txRequest;
|
|
179
181
|
try {
|
|
180
182
|
const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
|
|
183
|
+
await this.contractSyncService.ensureContractSynced(contractAddress, functionSelector, (privateSyncCall)=>this.#simulateUtility(contractFunctionSimulator, privateSyncCall, [], undefined, jobId), anchorBlockHeader, jobId);
|
|
181
184
|
const result = await contractFunctionSimulator.run(txRequest, contractAddress, functionSelector, undefined, anchorBlockHeader, // The sender for tags is set by contracts, typically by an account
|
|
182
185
|
// contract entrypoint
|
|
183
186
|
undefined, scopes, jobId);
|
|
@@ -246,62 +249,33 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
246
249
|
* @param config - The configuration for the kernel execution prover.
|
|
247
250
|
* @returns An object that contains the output of the kernel execution, including the ChonkProof if proving is enabled.
|
|
248
251
|
*/ async #prove(txExecutionRequest, proofCreator, privateExecutionResult, config) {
|
|
249
|
-
const
|
|
250
|
-
const
|
|
251
|
-
const
|
|
252
|
+
const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
|
|
253
|
+
const anchorBlockHash = await anchorBlockHeader.hash();
|
|
254
|
+
const kernelOracle = new PrivateKernelOracle(this.contractStore, this.keyStore, this.node, anchorBlockHash);
|
|
255
|
+
const kernelTraceProver = new PrivateKernelExecutionProver(kernelOracle, proofCreator, !this.proverEnabled, this.log.getBindings());
|
|
252
256
|
this.log.debug(`Executing kernel trace prover (${JSON.stringify(config)})...`);
|
|
253
257
|
return await kernelTraceProver.proveWithKernels(txExecutionRequest.toTxRequest(), privateExecutionResult, config);
|
|
254
258
|
}
|
|
255
259
|
// Public API
|
|
256
|
-
|
|
257
|
-
|
|
260
|
+
/**
|
|
261
|
+
* Returns the block header up to which the PXE has synced.
|
|
262
|
+
* @returns The synced block header
|
|
263
|
+
*/ getSyncedBlockHeader() {
|
|
264
|
+
return this.anchorBlockStore.getBlockHeader();
|
|
258
265
|
}
|
|
259
266
|
/**
|
|
260
|
-
* Returns the contract
|
|
261
|
-
*
|
|
262
|
-
* @
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
* @returns - It returns the contract class metadata, with the artifact field being optional, and will only be returned if true is passed in
|
|
266
|
-
* for `includeArtifact`
|
|
267
|
-
* TODO(@spalladino): The PXE actually holds artifacts and not classes, what should we return? Also,
|
|
268
|
-
* should the pxe query the node for contract public info, and merge it with its own definitions?
|
|
269
|
-
* TODO(@spalladino): This method is strictly needed to decide whether to publicly register a class or not
|
|
270
|
-
* during a public deployment. We probably want a nicer and more general API for this, but it'll have to
|
|
271
|
-
* do for the time being.
|
|
272
|
-
*/ async getContractClassMetadata(id, includeArtifact = false) {
|
|
273
|
-
const artifact = await this.contractStore.getContractArtifact(id);
|
|
274
|
-
if (!artifact) {
|
|
275
|
-
this.log.warn(`No artifact found for contract class ${id.toString()} when looking for its metadata`);
|
|
276
|
-
}
|
|
277
|
-
return {
|
|
278
|
-
contractClass: artifact && await getContractClassFromArtifact(artifact),
|
|
279
|
-
isContractClassPubliclyRegistered: await this.#isContractClassPubliclyRegistered(id),
|
|
280
|
-
artifact: includeArtifact ? artifact : undefined
|
|
281
|
-
};
|
|
267
|
+
* Returns the contract instance for a given address, if it's registered in the PXE.
|
|
268
|
+
* @param address - The contract address.
|
|
269
|
+
* @returns The contract instance if found, undefined otherwise.
|
|
270
|
+
*/ getContractInstance(address) {
|
|
271
|
+
return this.contractStore.getContractInstance(address);
|
|
282
272
|
}
|
|
283
273
|
/**
|
|
284
|
-
* Returns the contract
|
|
285
|
-
*
|
|
286
|
-
*
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
* This query is not dependent on the PXE.
|
|
290
|
-
* @param address - The address that the contract instance resides at.
|
|
291
|
-
* @returns - It returns the contract metadata
|
|
292
|
-
* TODO(@spalladino): Should we return the public keys in plain as well here?
|
|
293
|
-
*/ async getContractMetadata(address) {
|
|
294
|
-
let instance;
|
|
295
|
-
try {
|
|
296
|
-
instance = await this.contractStore.getContractInstance(address);
|
|
297
|
-
} catch {
|
|
298
|
-
this.log.warn(`No instance found for contract ${address.toString()} when looking for its metadata`);
|
|
299
|
-
}
|
|
300
|
-
return {
|
|
301
|
-
contractInstance: instance,
|
|
302
|
-
isContractInitialized: await this.#isContractInitialized(address),
|
|
303
|
-
isContractPublished: await this.#isContractPublished(address)
|
|
304
|
-
};
|
|
274
|
+
* Returns the contract artifact for a given contract class id, if it's registered in the PXE.
|
|
275
|
+
* @param id - Identifier of the contract class.
|
|
276
|
+
* @returns The contract artifact if found, undefined otherwise.
|
|
277
|
+
*/ async getContractArtifact(id) {
|
|
278
|
+
return await this.contractStore.getContractArtifact(id);
|
|
305
279
|
}
|
|
306
280
|
/**
|
|
307
281
|
* Registers a user account in PXE given its master encryption private key.
|
|
@@ -323,7 +297,6 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
323
297
|
this.log.debug(`Registered account\n ${accountCompleteAddress.toReadableString()}`);
|
|
324
298
|
}
|
|
325
299
|
await this.addressStore.addCompleteAddress(accountCompleteAddress);
|
|
326
|
-
await this.noteStore.addScope(accountCompleteAddress.address);
|
|
327
300
|
return accountCompleteAddress;
|
|
328
301
|
}
|
|
329
302
|
/**
|
|
@@ -438,7 +411,7 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
438
411
|
const contractClass = await getContractClassFromArtifact(artifact);
|
|
439
412
|
await this.blockStateSynchronizer.sync();
|
|
440
413
|
const header = await this.anchorBlockStore.getBlockHeader();
|
|
441
|
-
const currentClassId = await readCurrentClassId(contractAddress, currentInstance, this.node, header
|
|
414
|
+
const currentClassId = await readCurrentClassId(contractAddress, currentInstance, this.node, header);
|
|
442
415
|
if (!contractClass.id.equals(currentClassId)) {
|
|
443
416
|
throw new Error('Could not update contract to a class different from the current one.');
|
|
444
417
|
}
|
|
@@ -510,7 +483,7 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
510
483
|
if (preTagsUsedInTheTx.length > 0) {
|
|
511
484
|
// TODO(benesjan): The following is an expensive operation. Figure out a way to avoid it.
|
|
512
485
|
const txHash = (await txProvingResult.toTx()).txHash;
|
|
513
|
-
await this.senderTaggingStore.storePendingIndexes(preTagsUsedInTheTx, txHash);
|
|
486
|
+
await this.senderTaggingStore.storePendingIndexes(preTagsUsedInTheTx, txHash, jobId);
|
|
514
487
|
this.log.debug(`Stored used pre-tags as sender for the tx`, {
|
|
515
488
|
preTagsUsedInTheTx
|
|
516
489
|
});
|
|
@@ -628,16 +601,19 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
628
601
|
// Temporary: in case there are overrides, we have to skip the kernels or validations
|
|
629
602
|
// will fail. Consider handing control to the user/wallet on whether they want to run them
|
|
630
603
|
// or not.
|
|
631
|
-
const
|
|
604
|
+
const overriddenContracts = overrides?.contracts ? new Set(Object.keys(overrides.contracts)) : undefined;
|
|
605
|
+
const hasOverriddenContracts = overriddenContracts !== undefined && overriddenContracts.size > 0;
|
|
606
|
+
const skipKernels = hasOverriddenContracts;
|
|
607
|
+
// Set overridden contracts on the sync service so it knows to skip syncing them
|
|
608
|
+
if (hasOverriddenContracts) {
|
|
609
|
+
this.contractSyncService.setOverriddenContracts(jobId, overriddenContracts);
|
|
610
|
+
}
|
|
632
611
|
// Execution of private functions only; no proving, and no kernel logic.
|
|
633
612
|
const privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest, scopes, jobId);
|
|
634
613
|
let publicInputs;
|
|
635
614
|
let executionSteps = [];
|
|
636
615
|
if (skipKernels) {
|
|
637
|
-
|
|
638
|
-
// can either be the first nullifier in the tx or the protocol nullifier if there are none.
|
|
639
|
-
const nonceGenerator = privateExecutionResult.firstNullifier.equals(Fr.ZERO) ? await computeProtocolNullifier(await txRequest.toTxRequest().hash()) : privateExecutionResult.firstNullifier;
|
|
640
|
-
({ publicInputs, executionSteps } = await generateSimulatedProvingResult(privateExecutionResult, nonceGenerator, this.contractStore));
|
|
616
|
+
({ publicInputs, executionSteps } = await generateSimulatedProvingResult(privateExecutionResult, (addr, sel)=>this.contractStore.getDebugFunctionName(addr, sel)));
|
|
641
617
|
} else {
|
|
642
618
|
// Kernel logic, plus proving of all private functions and kernels.
|
|
643
619
|
({ publicInputs, executionSteps } = await this.#prove(txRequest, this.proofCreator, privateExecutionResult, {
|
|
@@ -721,7 +697,8 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
721
697
|
const syncTime = syncTimer.ms();
|
|
722
698
|
const functionTimer = new Timer();
|
|
723
699
|
const contractFunctionSimulator = this.#getSimulatorForTx();
|
|
724
|
-
await this.
|
|
700
|
+
const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
|
|
701
|
+
await this.contractSyncService.ensureContractSynced(call.to, call.selector, (privateSyncCall)=>this.#simulateUtility(contractFunctionSimulator, privateSyncCall, [], undefined, jobId), anchorBlockHeader, jobId);
|
|
725
702
|
const executionResult = await this.#simulateUtility(contractFunctionSimulator, call, authwits ?? [], scopes, jobId);
|
|
726
703
|
const functionTime = functionTimer.ms();
|
|
727
704
|
const totalTime = totalTimer.ms();
|
|
@@ -764,15 +741,19 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
764
741
|
* toBlock - The block number to search up to (exclusive). Optional. If provided, it must be > 0.
|
|
765
742
|
* Defaults to the latest known block to PXE + 1.
|
|
766
743
|
* @returns - The packed events with block and tx metadata.
|
|
767
|
-
*/ getPrivateEvents(eventSelector, filter) {
|
|
768
|
-
|
|
744
|
+
*/ async getPrivateEvents(eventSelector, filter) {
|
|
745
|
+
let anchorBlockNumber;
|
|
746
|
+
await this.#putInJobQueue(async (jobId)=>{
|
|
769
747
|
await this.blockStateSynchronizer.sync();
|
|
748
|
+
const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
|
|
749
|
+
anchorBlockNumber = anchorBlockHeader.getBlockNumber();
|
|
770
750
|
const contractFunctionSimulator = this.#getSimulatorForTx();
|
|
771
|
-
await this.
|
|
772
|
-
const sanitizedFilter = await new PrivateEventFilterValidator(this.anchorBlockStore).validate(filter);
|
|
773
|
-
this.log.debug(`Getting private events for ${sanitizedFilter.contractAddress.toString()} from ${sanitizedFilter.fromBlock} to ${sanitizedFilter.toBlock}`);
|
|
774
|
-
return this.privateEventStore.getPrivateEvents(eventSelector, sanitizedFilter);
|
|
751
|
+
await this.contractSyncService.ensureContractSynced(filter.contractAddress, null, async (privateSyncCall)=>await this.#simulateUtility(contractFunctionSimulator, privateSyncCall, [], undefined, jobId), anchorBlockHeader, jobId);
|
|
775
752
|
});
|
|
753
|
+
// anchorBlockNumber is set during the job and fixed to whatever it is after a block sync
|
|
754
|
+
const sanitizedFilter = new PrivateEventFilterValidator(anchorBlockNumber).validate(filter);
|
|
755
|
+
this.log.debug(`Getting private events for ${sanitizedFilter.contractAddress.toString()} from ${sanitizedFilter.fromBlock} to ${sanitizedFilter.toBlock}`);
|
|
756
|
+
return this.privateEventStore.getPrivateEvents(eventSelector, sanitizedFilter);
|
|
776
757
|
}
|
|
777
758
|
/**
|
|
778
759
|
* Stops the PXE's job queue.
|
|
@@ -8,4 +8,4 @@ export declare class AddressStore {
|
|
|
8
8
|
getCompleteAddress(account: AztecAddress): Promise<CompleteAddress | undefined>;
|
|
9
9
|
getCompleteAddresses(): Promise<CompleteAddress[]>;
|
|
10
10
|
}
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzc19zdG9yZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0b3JhZ2UvYWRkcmVzc19zdG9yZS9hZGRyZXNzX3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFtQixpQkFBaUIsRUFBaUIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RixPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFekQscUJBQWEsWUFBWTs7SUFLdkIsWUFBWSxLQUFLLEVBQUUsaUJBQWlCLEVBS25DO0lBRUQsa0JBQWtCLENBQUMsZUFBZSxFQUFFLGVBQWUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBMEJyRTtJQUVELGtCQUFrQixDQUFDLE9BQU8sRUFBRSxZQUFZLEdBQUcsT0FBTyxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUMsQ0FVOUU7SUFFRCxvQkFBb0IsSUFBSSxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FNakQ7Q0FDRiJ9
|
|
@@ -1 +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;
|
|
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;IAED,kBAAkB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAU9E;IAED,oBAAoB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAMjD;CACF"}
|
|
@@ -30,18 +30,19 @@ export class AddressStore {
|
|
|
30
30
|
}
|
|
31
31
|
});
|
|
32
32
|
}
|
|
33
|
-
async #getCompleteAddress(address) {
|
|
34
|
-
const index = await this.#completeAddressIndex.getAsync(address.toString());
|
|
35
|
-
if (index === undefined) {
|
|
36
|
-
return undefined;
|
|
37
|
-
}
|
|
38
|
-
const value = await this.#completeAddresses.atAsync(index);
|
|
39
|
-
return value ? await CompleteAddress.fromBuffer(value) : undefined;
|
|
40
|
-
}
|
|
41
33
|
getCompleteAddress(account) {
|
|
42
|
-
return this.#
|
|
34
|
+
return this.#store.transactionAsync(async ()=>{
|
|
35
|
+
const index = await this.#completeAddressIndex.getAsync(account.toString());
|
|
36
|
+
if (index === undefined) {
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
const value = await this.#completeAddresses.atAsync(index);
|
|
40
|
+
return value ? await CompleteAddress.fromBuffer(value) : undefined;
|
|
41
|
+
});
|
|
43
42
|
}
|
|
44
|
-
|
|
45
|
-
return
|
|
43
|
+
getCompleteAddresses() {
|
|
44
|
+
return this.#store.transactionAsync(async ()=>{
|
|
45
|
+
return await Promise.all((await toArray(this.#completeAddresses.valuesAsync())).map((v)=>CompleteAddress.fromBuffer(v)));
|
|
46
|
+
});
|
|
46
47
|
}
|
|
47
48
|
}
|
|
@@ -3,7 +3,15 @@ import { BlockHeader } from '@aztec/stdlib/tx';
|
|
|
3
3
|
export declare class AnchorBlockStore {
|
|
4
4
|
#private;
|
|
5
5
|
constructor(store: AztecAsyncKVStore);
|
|
6
|
+
/**
|
|
7
|
+
* Sets the currently synchronized block
|
|
8
|
+
*
|
|
9
|
+
* Important: this method is only called from BlockSynchronizer, and since we need it to run atomically with other
|
|
10
|
+
* stores in the case of a reorg, it MUST NOT be wrapped in a `transactionAsync` call. Doing so would result in a
|
|
11
|
+
* deadlock when the backend is IndexedDB, because `transactionAsync` is not designed to support reentrancy.
|
|
12
|
+
*
|
|
13
|
+
*/
|
|
6
14
|
setHeader(header: BlockHeader): Promise<void>;
|
|
7
15
|
getBlockHeader(): Promise<BlockHeader>;
|
|
8
16
|
}
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5jaG9yX2Jsb2NrX3N0b3JlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RvcmFnZS9hbmNob3JfYmxvY2tfc3RvcmUvYW5jaG9yX2Jsb2NrX3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUF1QixNQUFNLGlCQUFpQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUvQyxxQkFBYSxnQkFBZ0I7O0lBSTNCLFlBQVksS0FBSyxFQUFFLGlCQUFpQixFQUduQztJQUVEOzs7Ozs7O09BT0c7SUFDRyxTQUFTLENBQUMsTUFBTSxFQUFFLFdBQVcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBRWxEO0lBRUssY0FBYyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FPM0M7Q0FDRiJ9
|
|
@@ -1 +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;
|
|
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;IAED;;;;;;;OAOG;IACG,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAElD;IAEK,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CAO3C;CACF"}
|
|
@@ -6,7 +6,14 @@ export class AnchorBlockStore {
|
|
|
6
6
|
this.#store = store;
|
|
7
7
|
this.#synchronizedHeader = this.#store.openSingleton('header');
|
|
8
8
|
}
|
|
9
|
-
|
|
9
|
+
/**
|
|
10
|
+
* Sets the currently synchronized block
|
|
11
|
+
*
|
|
12
|
+
* Important: this method is only called from BlockSynchronizer, and since we need it to run atomically with other
|
|
13
|
+
* stores in the case of a reorg, it MUST NOT be wrapped in a `transactionAsync` call. Doing so would result in a
|
|
14
|
+
* deadlock when the backend is IndexedDB, because `transactionAsync` is not designed to support reentrancy.
|
|
15
|
+
*
|
|
16
|
+
*/ async setHeader(header) {
|
|
10
17
|
await this.#synchronizedHeader.set(header.toBuffer());
|
|
11
18
|
}
|
|
12
19
|
async getBlockHeader() {
|