@aztec/pxe 3.0.0-canary.a9708bd → 3.0.0-devnet.2-patch.1
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/README.md +5 -5
- package/dest/bin/check_oracle_version.d.ts +1 -1
- package/dest/bin/check_oracle_version.js +110 -10
- package/dest/config/index.d.ts +9 -17
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +10 -16
- package/dest/config/package_info.d.ts +1 -1
- package/dest/config/package_info.js +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +6 -6
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +97 -42
- package/dest/contract_function_simulator/execution_data_provider.d.ts +40 -57
- package/dest/contract_function_simulator/execution_data_provider.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_note_cache.d.ts +11 -9
- package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_note_cache.js +28 -17
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +16 -0
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -0
- package/dest/contract_function_simulator/execution_tagging_index_cache.js +26 -0
- package/dest/contract_function_simulator/hashed_values_cache.d.ts +2 -2
- package/dest/contract_function_simulator/hashed_values_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.d.ts +4 -2
- package/dest/contract_function_simulator/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.js +2 -1
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +2 -2
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +2 -2
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +3 -3
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +8 -4
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +6 -3
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/note_validation_request.js +12 -3
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +22 -0
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/utility_context.js +33 -0
- package/dest/contract_function_simulator/oracle/index.d.ts +2 -2
- package/dest/contract_function_simulator/oracle/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/index.js +1 -1
- package/dest/contract_function_simulator/oracle/interfaces.d.ts +104 -0
- package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/interfaces.js +4 -0
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +2 -4
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -1
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +10 -4
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/note_packing_utils.js +10 -5
- package/dest/contract_function_simulator/oracle/oracle.d.ts +17 -15
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +101 -81
- package/dest/contract_function_simulator/oracle/private_execution.d.ts +6 -5
- package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution.js +7 -16
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +34 -22
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +89 -25
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +23 -33
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +38 -42
- package/dest/contract_function_simulator/pick_notes.d.ts +2 -2
- package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
- package/dest/contract_function_simulator/pick_notes.js +1 -1
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +1 -1
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
- package/dest/contract_function_simulator/proxied_node.d.ts +1 -1
- package/dest/contract_function_simulator/proxied_node.d.ts.map +1 -1
- package/dest/contract_function_simulator/pxe_oracle_interface.d.ts +34 -68
- package/dest/contract_function_simulator/pxe_oracle_interface.d.ts.map +1 -1
- package/dest/contract_function_simulator/pxe_oracle_interface.js +220 -208
- package/dest/entrypoints/client/bundle/index.d.ts +4 -2
- package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/index.js +2 -1
- package/dest/entrypoints/client/bundle/utils.d.ts +9 -9
- package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/utils.js +21 -12
- package/dest/entrypoints/client/lazy/index.d.ts +4 -2
- package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/index.js +2 -1
- package/dest/entrypoints/client/lazy/utils.d.ts +8 -8
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +20 -11
- package/dest/entrypoints/pxe_creation_options.d.ts +5 -2
- package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
- package/dest/entrypoints/server/index.d.ts +4 -2
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +2 -1
- package/dest/entrypoints/server/utils.d.ts +5 -24
- package/dest/entrypoints/server/utils.d.ts.map +1 -1
- package/dest/entrypoints/server/utils.js +17 -45
- package/dest/error_enriching.d.ts +11 -0
- package/dest/error_enriching.d.ts.map +1 -0
- package/dest/{pxe_service/error_enriching.js → error_enriching.js} +3 -0
- package/dest/events/index.d.ts +2 -0
- package/dest/events/index.d.ts.map +1 -0
- package/dest/events/index.js +1 -0
- package/dest/events/private_event_filter_validator.d.ts +8 -0
- package/dest/events/private_event_filter_validator.d.ts.map +1 -0
- package/dest/events/private_event_filter_validator.js +39 -0
- package/dest/oracle_version.d.ts +3 -3
- package/dest/oracle_version.js +2 -2
- package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts +3 -3
- package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts.map +1 -1
- package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.js +7 -7
- package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +1 -1
- package/dest/private_kernel/hints/compute_tx_include_by_timestamp.js +6 -6
- package/dest/private_kernel/hints/index.d.ts +1 -1
- package/dest/private_kernel/index.d.ts +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.d.ts +9 -2
- package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.js +38 -32
- package/dest/private_kernel/private_kernel_oracle.d.ts +3 -2
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle_impl.d.ts +8 -7
- package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +1 -1
- package/dest/pxe.d.ts +240 -0
- package/dest/pxe.d.ts.map +1 -0
- package/dest/{pxe_service/pxe_service.js → pxe.js} +227 -241
- package/dest/storage/address_data_provider/address_data_provider.d.ts +2 -4
- package/dest/storage/address_data_provider/address_data_provider.d.ts.map +1 -1
- package/dest/storage/address_data_provider/address_data_provider.js +0 -3
- package/dest/storage/address_data_provider/index.d.ts +1 -1
- package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts +3 -5
- package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts.map +1 -1
- package/dest/storage/capsule_data_provider/capsule_data_provider.js +1 -5
- package/dest/storage/capsule_data_provider/index.d.ts +1 -1
- package/dest/storage/contract_data_provider/contract_data_provider.d.ts +6 -17
- package/dest/storage/contract_data_provider/contract_data_provider.d.ts.map +1 -1
- package/dest/storage/contract_data_provider/contract_data_provider.js +0 -15
- package/dest/storage/contract_data_provider/index.d.ts +1 -1
- package/dest/storage/contract_data_provider/private_functions_tree.d.ts +1 -1
- package/dest/storage/contract_data_provider/private_functions_tree.d.ts.map +1 -1
- package/dest/storage/contract_data_provider/private_functions_tree.js +1 -1
- package/dest/storage/index.d.ts +1 -2
- package/dest/storage/index.d.ts.map +1 -1
- package/dest/storage/index.js +0 -1
- package/dest/storage/metadata.d.ts +1 -1
- package/dest/storage/note_data_provider/index.d.ts +2 -2
- package/dest/storage/note_data_provider/index.d.ts.map +1 -1
- package/dest/storage/note_data_provider/index.js +1 -1
- package/dest/storage/note_data_provider/note_data_provider.d.ts +75 -11
- package/dest/storage/note_data_provider/note_data_provider.d.ts.map +1 -1
- package/dest/storage/note_data_provider/note_data_provider.js +143 -81
- package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts +31 -17
- package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts.map +1 -1
- package/dest/storage/private_event_data_provider/private_event_data_provider.js +47 -28
- package/dest/storage/sync_data_provider/index.d.ts +1 -1
- package/dest/storage/sync_data_provider/sync_data_provider.d.ts +4 -5
- package/dest/storage/sync_data_provider/sync_data_provider.d.ts.map +1 -1
- package/dest/storage/sync_data_provider/sync_data_provider.js +0 -3
- package/dest/storage/tagging_data_provider/index.d.ts +1 -1
- package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts +29 -7
- package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts.map +1 -1
- package/dest/storage/tagging_data_provider/tagging_data_provider.js +46 -39
- package/dest/synchronizer/index.d.ts +1 -1
- package/dest/synchronizer/synchronizer.d.ts +3 -2
- package/dest/synchronizer/synchronizer.d.ts.map +1 -1
- package/dest/synchronizer/synchronizer.js +4 -4
- package/dest/tagging/constants.d.ts +2 -0
- package/dest/tagging/constants.d.ts.map +1 -0
- package/dest/tagging/constants.js +2 -0
- package/dest/tagging/index.d.ts +7 -0
- package/dest/tagging/index.d.ts.map +1 -0
- package/dest/tagging/index.js +5 -0
- package/dest/tagging/siloed_tag.d.ts +14 -0
- package/dest/tagging/siloed_tag.d.ts.map +1 -0
- package/dest/tagging/siloed_tag.js +20 -0
- package/dest/tagging/tag.d.ts +12 -0
- package/dest/tagging/tag.d.ts.map +1 -0
- package/dest/tagging/tag.js +17 -0
- package/dest/tagging/utils.d.ts +18 -0
- package/dest/tagging/utils.d.ts.map +1 -0
- package/dest/tagging/utils.js +24 -0
- package/package.json +22 -24
- package/src/bin/check_oracle_version.ts +134 -10
- package/src/config/index.ts +18 -32
- package/src/config/package_info.ts +1 -1
- package/src/contract_function_simulator/contract_function_simulator.ts +151 -62
- package/src/contract_function_simulator/execution_data_provider.ts +47 -65
- package/src/contract_function_simulator/execution_note_cache.ts +33 -17
- package/src/contract_function_simulator/execution_tagging_index_cache.ts +32 -0
- package/src/contract_function_simulator/hashed_values_cache.ts +1 -1
- package/src/contract_function_simulator/index.ts +3 -1
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +1 -1
- package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +1 -1
- package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +10 -5
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +14 -2
- package/src/contract_function_simulator/noir-structs/utility_context.ts +42 -0
- package/src/contract_function_simulator/oracle/index.ts +1 -1
- package/src/contract_function_simulator/oracle/interfaces.ts +176 -0
- package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +1 -1
- package/src/contract_function_simulator/oracle/note_packing_utils.ts +21 -5
- package/src/contract_function_simulator/oracle/oracle.ts +135 -80
- package/src/contract_function_simulator/oracle/private_execution.ts +10 -17
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +123 -49
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +68 -80
- package/src/contract_function_simulator/pick_notes.ts +1 -1
- package/src/contract_function_simulator/pxe_oracle_interface.ts +291 -271
- package/src/entrypoints/client/bundle/index.ts +3 -1
- package/src/entrypoints/client/bundle/utils.ts +21 -23
- package/src/entrypoints/client/lazy/index.ts +3 -1
- package/src/entrypoints/client/lazy/utils.ts +20 -23
- package/src/entrypoints/pxe_creation_options.ts +4 -1
- package/src/entrypoints/server/index.ts +3 -1
- package/src/entrypoints/server/utils.ts +20 -68
- package/src/{pxe_service/error_enriching.ts → error_enriching.ts} +5 -1
- package/src/events/index.ts +1 -0
- package/src/events/private_event_filter_validator.ts +47 -0
- package/src/oracle_version.ts +2 -2
- package/src/private_kernel/hints/build_private_kernel_reset_private_inputs.ts +5 -9
- package/src/private_kernel/hints/compute_tx_include_by_timestamp.ts +6 -6
- package/src/private_kernel/private_kernel_execution_prover.ts +51 -43
- package/src/private_kernel/private_kernel_oracle.ts +2 -1
- package/src/private_kernel/private_kernel_oracle_impl.ts +4 -3
- package/src/{pxe_service/pxe_service.ts → pxe.ts} +256 -308
- package/src/storage/address_data_provider/address_data_provider.ts +1 -7
- package/src/storage/capsule_data_provider/capsule_data_provider.ts +2 -12
- package/src/storage/contract_data_provider/contract_data_provider.ts +4 -27
- package/src/storage/contract_data_provider/private_functions_tree.ts +1 -1
- package/src/storage/index.ts +0 -1
- package/src/storage/note_data_provider/index.ts +1 -1
- package/src/storage/note_data_provider/note_data_provider.ts +171 -109
- package/src/storage/private_event_data_provider/private_event_data_provider.ts +69 -41
- package/src/storage/sync_data_provider/sync_data_provider.ts +3 -8
- package/src/storage/tagging_data_provider/tagging_data_provider.ts +52 -55
- package/src/synchronizer/synchronizer.ts +4 -4
- package/src/tagging/constants.ts +2 -0
- package/src/tagging/index.ts +6 -0
- package/src/tagging/siloed_tag.ts +22 -0
- package/src/tagging/tag.ts +16 -0
- package/src/tagging/utils.ts +31 -0
- package/dest/bin/index.d.ts +0 -3
- package/dest/bin/index.d.ts.map +0 -1
- package/dest/bin/index.js +0 -48
- package/dest/contract_function_simulator/oracle/typed_oracle.d.ts +0 -87
- package/dest/contract_function_simulator/oracle/typed_oracle.d.ts.map +0 -1
- package/dest/contract_function_simulator/oracle/typed_oracle.js +0 -146
- package/dest/contract_function_simulator/tagging_utils.d.ts +0 -17
- package/dest/contract_function_simulator/tagging_utils.d.ts.map +0 -1
- package/dest/contract_function_simulator/tagging_utils.js +0 -23
- package/dest/pxe_service/error_enriching.d.ts +0 -11
- package/dest/pxe_service/error_enriching.d.ts.map +0 -1
- package/dest/pxe_service/index.d.ts +0 -3
- package/dest/pxe_service/index.d.ts.map +0 -1
- package/dest/pxe_service/index.js +0 -2
- package/dest/pxe_service/pxe_service.d.ts +0 -100
- package/dest/pxe_service/pxe_service.d.ts.map +0 -1
- package/dest/storage/data_provider.d.ts +0 -4
- package/dest/storage/data_provider.d.ts.map +0 -1
- package/dest/storage/data_provider.js +0 -1
- package/dest/storage/note_data_provider/note_dao.d.ts +0 -100
- package/dest/storage/note_data_provider/note_dao.d.ts.map +0 -1
- package/dest/storage/note_data_provider/note_dao.js +0 -102
- package/dest/test/pxe_test_suite.d.ts +0 -3
- package/dest/test/pxe_test_suite.d.ts.map +0 -1
- package/dest/test/pxe_test_suite.js +0 -97
- package/src/bin/index.ts +0 -62
- package/src/contract_function_simulator/oracle/typed_oracle.ts +0 -289
- package/src/contract_function_simulator/tagging_utils.ts +0 -32
- package/src/pxe_service/index.ts +0 -2
- package/src/storage/data_provider.ts +0 -3
- package/src/storage/note_data_provider/note_dao.ts +0 -154
- package/src/test/pxe_test_suite.ts +0 -113
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
export * from '../../../
|
|
1
|
+
export * from '../../../pxe.js';
|
|
2
2
|
export * from '../../../config/index.js';
|
|
3
|
+
export * from '../../../error_enriching.js';
|
|
3
4
|
export * from '../../../storage/index.js';
|
|
4
5
|
export * from './utils.js';
|
|
5
6
|
export { PXEOracleInterface } from '../../../contract_function_simulator/pxe_oracle_interface.js';
|
|
7
|
+
export type { PXECreationOptions } from '../../pxe_creation_options.js';
|
|
@@ -1,28 +1,29 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { BBPrivateKernelProver } from '@aztec/bb-prover/client';
|
|
2
|
+
import { BBBundlePrivateKernelProver } from '@aztec/bb-prover/client/bundle';
|
|
3
|
+
import { randomBytes } from '@aztec/foundation/crypto/random';
|
|
3
4
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
5
|
import { createStore } from '@aztec/kv-store/indexeddb';
|
|
5
6
|
import { BundledProtocolContractsProvider } from '@aztec/protocol-contracts/providers/bundle';
|
|
6
7
|
import { WASMSimulator } from '@aztec/simulator/client';
|
|
7
8
|
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
8
9
|
|
|
9
|
-
import type {
|
|
10
|
-
import {
|
|
10
|
+
import type { PXEConfig } from '../../../config/index.js';
|
|
11
|
+
import { PXE } from '../../../pxe.js';
|
|
11
12
|
import type { PXECreationOptions } from '../../pxe_creation_options.js';
|
|
12
13
|
|
|
13
14
|
/**
|
|
14
|
-
* Create and start an
|
|
15
|
+
* Create and start an PXE instance with the given AztecNode.
|
|
15
16
|
* If no keyStore or database is provided, it will use KeyStore and MemoryDB as default values.
|
|
16
|
-
* Returns a Promise that resolves to the started
|
|
17
|
+
* Returns a Promise that resolves to the started PXE instance.
|
|
17
18
|
*
|
|
18
19
|
* @param aztecNode - The AztecNode instance to be used by the server.
|
|
19
|
-
* @param config - The PXE
|
|
20
|
-
* @param options - (Optional) Optional information for creating an
|
|
21
|
-
* @returns A Promise that resolves to the started
|
|
20
|
+
* @param config - The PXE Config to use
|
|
21
|
+
* @param options - (Optional) Optional information for creating an PXE.
|
|
22
|
+
* @returns A Promise that resolves to the started PXE instance.
|
|
22
23
|
*/
|
|
23
|
-
export async function
|
|
24
|
+
export async function createPXE(
|
|
24
25
|
aztecNode: AztecNode,
|
|
25
|
-
config:
|
|
26
|
+
config: PXEConfig,
|
|
26
27
|
options: PXECreationOptions = { loggers: {} },
|
|
27
28
|
) {
|
|
28
29
|
const logSuffix =
|
|
@@ -38,29 +39,26 @@ export async function createPXEService(
|
|
|
38
39
|
const configWithContracts = {
|
|
39
40
|
...config,
|
|
40
41
|
l1Contracts,
|
|
41
|
-
} as
|
|
42
|
+
} as PXEConfig;
|
|
42
43
|
|
|
43
44
|
const storeLogger = loggers.store ? loggers.store : createLogger('pxe:data:idb' + (logSuffix ? `:${logSuffix}` : ''));
|
|
44
45
|
|
|
45
46
|
const store = options.store ?? (await createStore('pxe_data', configWithContracts, storeLogger));
|
|
46
47
|
|
|
47
|
-
const simulator = new WASMSimulator();
|
|
48
|
+
const simulator = options.simulator ?? new WASMSimulator();
|
|
48
49
|
const proverLogger = loggers.prover
|
|
49
50
|
? loggers.prover
|
|
50
51
|
: createLogger('pxe:bb:wasm:bundle' + (logSuffix ? `:${logSuffix}` : ''));
|
|
51
52
|
|
|
52
|
-
|
|
53
|
+
let prover;
|
|
54
|
+
if (options.proverOrOptions instanceof BBPrivateKernelProver) {
|
|
55
|
+
prover = options.proverOrOptions;
|
|
56
|
+
} else {
|
|
57
|
+
prover = new BBBundlePrivateKernelProver(simulator, { ...options.proverOrOptions, logger: proverLogger });
|
|
58
|
+
}
|
|
53
59
|
const protocolContractsProvider = new BundledProtocolContractsProvider();
|
|
54
60
|
|
|
55
61
|
const pxeLogger = loggers.pxe ? loggers.pxe : createLogger('pxe:service' + (logSuffix ? `:${logSuffix}` : ''));
|
|
56
|
-
const pxe = await
|
|
57
|
-
aztecNode,
|
|
58
|
-
store,
|
|
59
|
-
prover,
|
|
60
|
-
simulator,
|
|
61
|
-
protocolContractsProvider,
|
|
62
|
-
config,
|
|
63
|
-
pxeLogger,
|
|
64
|
-
);
|
|
62
|
+
const pxe = await PXE.create(aztecNode, store, prover, simulator, protocolContractsProvider, config, pxeLogger);
|
|
65
63
|
return pxe;
|
|
66
64
|
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
export * from '../../../
|
|
1
|
+
export * from '../../../pxe.js';
|
|
2
2
|
export * from '../../../config/index.js';
|
|
3
3
|
export * from '../../../storage/index.js';
|
|
4
|
+
export * from '../../../error_enriching.js';
|
|
4
5
|
export * from './utils.js';
|
|
5
6
|
export { PXEOracleInterface } from '../../../contract_function_simulator/pxe_oracle_interface.js';
|
|
7
|
+
export { type PXECreationOptions } from '../../pxe_creation_options.js';
|
|
@@ -1,27 +1,28 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { BBPrivateKernelProver } from '@aztec/bb-prover/client';
|
|
2
|
+
import { BBLazyPrivateKernelProver } from '@aztec/bb-prover/client/lazy';
|
|
3
|
+
import { randomBytes } from '@aztec/foundation/crypto/random';
|
|
3
4
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
5
|
import { createStore } from '@aztec/kv-store/indexeddb';
|
|
5
6
|
import { LazyProtocolContractsProvider } from '@aztec/protocol-contracts/providers/lazy';
|
|
6
7
|
import { WASMSimulator } from '@aztec/simulator/client';
|
|
7
8
|
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
8
9
|
|
|
9
|
-
import type {
|
|
10
|
-
import {
|
|
10
|
+
import type { PXEConfig } from '../../../config/index.js';
|
|
11
|
+
import { PXE } from '../../../pxe.js';
|
|
11
12
|
import type { PXECreationOptions } from '../../pxe_creation_options.js';
|
|
12
13
|
|
|
13
14
|
/**
|
|
14
|
-
* Create and start an
|
|
15
|
-
* Returns a Promise that resolves to the started
|
|
15
|
+
* Create and start an PXE instance with the given AztecNode.
|
|
16
|
+
* Returns a Promise that resolves to the started PXE instance.
|
|
16
17
|
*
|
|
17
18
|
* @param aztecNode - The AztecNode instance to be used by the server.
|
|
18
|
-
* @param config - The PXE
|
|
19
|
+
* @param config - The PXE Config to use
|
|
19
20
|
* @param
|
|
20
|
-
* @returns A Promise that resolves to the started
|
|
21
|
+
* @returns A Promise that resolves to the started PXE instance.
|
|
21
22
|
*/
|
|
22
|
-
export async function
|
|
23
|
+
export async function createPXE(
|
|
23
24
|
aztecNode: AztecNode,
|
|
24
|
-
config:
|
|
25
|
+
config: PXEConfig,
|
|
25
26
|
options: PXECreationOptions = { loggers: {} },
|
|
26
27
|
) {
|
|
27
28
|
const logSuffix =
|
|
@@ -35,7 +36,7 @@ export async function createPXEService(
|
|
|
35
36
|
const configWithContracts = {
|
|
36
37
|
...config,
|
|
37
38
|
l1Contracts,
|
|
38
|
-
} as
|
|
39
|
+
} as PXEConfig;
|
|
39
40
|
|
|
40
41
|
const loggers = options.loggers ?? {};
|
|
41
42
|
|
|
@@ -43,24 +44,20 @@ export async function createPXEService(
|
|
|
43
44
|
|
|
44
45
|
const store = options.store ?? (await createStore('pxe_data', configWithContracts, storeLogger));
|
|
45
46
|
|
|
46
|
-
const simulator = new WASMSimulator();
|
|
47
|
+
const simulator = options.simulator ?? new WASMSimulator();
|
|
47
48
|
const proverLogger = loggers.prover
|
|
48
49
|
? loggers.prover
|
|
49
50
|
: createLogger('pxe:bb:wasm:bundle' + (logSuffix ? `:${logSuffix}` : ''));
|
|
50
51
|
|
|
51
|
-
|
|
52
|
-
|
|
52
|
+
let prover;
|
|
53
|
+
if (options.proverOrOptions instanceof BBPrivateKernelProver) {
|
|
54
|
+
prover = options.proverOrOptions;
|
|
55
|
+
} else {
|
|
56
|
+
prover = new BBLazyPrivateKernelProver(simulator, { ...options.proverOrOptions, logger: proverLogger });
|
|
57
|
+
}
|
|
53
58
|
const protocolContractsProvider = new LazyProtocolContractsProvider();
|
|
54
59
|
|
|
55
60
|
const pxeLogger = loggers.pxe ? loggers.pxe : createLogger('pxe:service' + (logSuffix ? `:${logSuffix}` : ''));
|
|
56
|
-
const pxe = await
|
|
57
|
-
aztecNode,
|
|
58
|
-
store,
|
|
59
|
-
prover,
|
|
60
|
-
simulator,
|
|
61
|
-
protocolContractsProvider,
|
|
62
|
-
config,
|
|
63
|
-
pxeLogger,
|
|
64
|
-
);
|
|
61
|
+
const pxe = await PXE.create(aztecNode, store, prover, simulator, protocolContractsProvider, config, pxeLogger);
|
|
65
62
|
return pxe;
|
|
66
63
|
}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
+
import type { BBPrivateKernelProverOptions } from '@aztec/bb-prover/client';
|
|
1
2
|
import type { Logger } from '@aztec/foundation/log';
|
|
2
3
|
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
4
|
+
import type { CircuitSimulator } from '@aztec/simulator/client';
|
|
3
5
|
import type { PrivateKernelProver } from '@aztec/stdlib/interfaces/client';
|
|
4
6
|
|
|
5
7
|
export type PXECreationOptions = {
|
|
6
8
|
loggers?: { store?: Logger; pxe?: Logger; prover?: Logger };
|
|
7
9
|
useLogSuffix?: boolean | string;
|
|
8
|
-
|
|
10
|
+
proverOrOptions?: PrivateKernelProver | BBPrivateKernelProverOptions;
|
|
9
11
|
store?: AztecAsyncKVStore;
|
|
12
|
+
simulator?: CircuitSimulator;
|
|
10
13
|
};
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
export * from '../../
|
|
1
|
+
export * from '../../pxe.js';
|
|
2
2
|
export * from '../../config/index.js';
|
|
3
|
+
export * from '../../error_enriching.js';
|
|
3
4
|
export * from '../../storage/index.js';
|
|
4
5
|
export * from './utils.js';
|
|
5
6
|
export { PXEOracleInterface } from '../../contract_function_simulator/pxe_oracle_interface.js';
|
|
6
7
|
export { ORACLE_VERSION } from '../../oracle_version.js';
|
|
8
|
+
export { type PXECreationOptions } from '../pxe_creation_options.js';
|
|
@@ -1,63 +1,30 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { randomBytes } from '@aztec/foundation/crypto';
|
|
4
|
-
import {
|
|
1
|
+
import { BBPrivateKernelProver } from '@aztec/bb-prover/client';
|
|
2
|
+
import { BBBundlePrivateKernelProver } from '@aztec/bb-prover/client/bundle';
|
|
3
|
+
import { randomBytes } from '@aztec/foundation/crypto/random';
|
|
4
|
+
import { createLogger } from '@aztec/foundation/log';
|
|
5
|
+
import { createStore } from '@aztec/kv-store/lmdb-v2';
|
|
5
6
|
import { BundledProtocolContractsProvider } from '@aztec/protocol-contracts/providers/bundle';
|
|
6
|
-
import {
|
|
7
|
-
type CircuitSimulator,
|
|
8
|
-
MemoryCircuitRecorder,
|
|
9
|
-
SimulatorRecorderWrapper,
|
|
10
|
-
WASMSimulator,
|
|
11
|
-
} from '@aztec/simulator/client';
|
|
7
|
+
import { MemoryCircuitRecorder, SimulatorRecorderWrapper, WASMSimulator } from '@aztec/simulator/client';
|
|
12
8
|
import { FileCircuitRecorder } from '@aztec/simulator/testing';
|
|
13
9
|
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
14
10
|
|
|
15
|
-
import type {
|
|
16
|
-
import {
|
|
11
|
+
import type { PXEConfig } from '../../config/index.js';
|
|
12
|
+
import { PXE } from '../../pxe.js';
|
|
17
13
|
import { PXE_DATA_SCHEMA_VERSION } from '../../storage/index.js';
|
|
18
14
|
import type { PXECreationOptions } from '../pxe_creation_options.js';
|
|
19
15
|
|
|
20
|
-
type PXEConfigWithoutDefaults = Omit<
|
|
21
|
-
PXEServiceConfig,
|
|
22
|
-
'l1Contracts' | 'l1ChainId' | 'l2BlockBatchSize' | 'rollupVersion'
|
|
23
|
-
>;
|
|
16
|
+
type PXEConfigWithoutDefaults = Omit<PXEConfig, 'l1Contracts' | 'l1ChainId' | 'l2BlockBatchSize' | 'rollupVersion'>;
|
|
24
17
|
|
|
25
|
-
|
|
26
|
-
* Create and start an PXEService instance with the given AztecNode and config.
|
|
27
|
-
*
|
|
28
|
-
* @param aztecNode - The AztecNode instance to be used by the server.
|
|
29
|
-
* @param config - The PXE Service Config to use
|
|
30
|
-
* @param useLogSuffix - Whether to add a randomly generated suffix to the PXE debug logs.
|
|
31
|
-
* @returns A Promise that resolves to the started PXEService instance.
|
|
32
|
-
*/
|
|
33
|
-
export function createPXEService(
|
|
18
|
+
export async function createPXE(
|
|
34
19
|
aztecNode: AztecNode,
|
|
35
20
|
config: PXEConfigWithoutDefaults,
|
|
36
21
|
options: PXECreationOptions = { loggers: {} },
|
|
37
22
|
) {
|
|
38
|
-
const simulator = new WASMSimulator();
|
|
39
23
|
const recorder = process.env.CIRCUIT_RECORD_DIR
|
|
40
24
|
? new FileCircuitRecorder(process.env.CIRCUIT_RECORD_DIR)
|
|
41
25
|
: new MemoryCircuitRecorder();
|
|
42
|
-
const
|
|
43
|
-
return createPXEServiceWithSimulator(aztecNode, simulatorWithRecorder, config, options);
|
|
44
|
-
}
|
|
26
|
+
const simulator = new SimulatorRecorderWrapper(new WASMSimulator(), recorder);
|
|
45
27
|
|
|
46
|
-
/**
|
|
47
|
-
* Create and start an PXEService instance with the given AztecNode, Simulator and config.
|
|
48
|
-
*
|
|
49
|
-
* @param aztecNode - The AztecNode instance to be used by the server.
|
|
50
|
-
* @param simulator - The Simulator to use
|
|
51
|
-
* @param config - The PXE Service Config to use
|
|
52
|
-
* @param useLogSuffix - Whether to add a randomly generated suffix to the PXE debug logs.
|
|
53
|
-
* @returns A Promise that resolves to the started PXEService instance.
|
|
54
|
-
*/
|
|
55
|
-
export async function createPXEServiceWithSimulator(
|
|
56
|
-
aztecNode: AztecNode,
|
|
57
|
-
simulator: CircuitSimulator,
|
|
58
|
-
config: PXEConfigWithoutDefaults,
|
|
59
|
-
options: PXECreationOptions = { loggers: {} },
|
|
60
|
-
) {
|
|
61
28
|
const logSuffix =
|
|
62
29
|
typeof options.useLogSuffix === 'boolean'
|
|
63
30
|
? options.useLogSuffix
|
|
@@ -67,7 +34,7 @@ export async function createPXEServiceWithSimulator(
|
|
|
67
34
|
const loggers = options.loggers ?? {};
|
|
68
35
|
|
|
69
36
|
const { l1ChainId, l1ContractAddresses: l1Contracts, rollupVersion } = await aztecNode.getNodeInfo();
|
|
70
|
-
const configWithContracts:
|
|
37
|
+
const configWithContracts: PXEConfig = {
|
|
71
38
|
...config,
|
|
72
39
|
l1Contracts,
|
|
73
40
|
l1ChainId,
|
|
@@ -76,9 +43,6 @@ export async function createPXEServiceWithSimulator(
|
|
|
76
43
|
};
|
|
77
44
|
|
|
78
45
|
if (!options.store) {
|
|
79
|
-
// TODO once https://github.com/AztecProtocol/aztec-packages/issues/13656 is fixed, we can remove this and always
|
|
80
|
-
// import the lmdb-v2 version
|
|
81
|
-
const { createStore } = await import('@aztec/kv-store/lmdb-v2');
|
|
82
46
|
const storeLogger = loggers.store
|
|
83
47
|
? loggers.store
|
|
84
48
|
: createLogger('pxe:data:lmdb' + (logSuffix ? `:${logSuffix}` : ''));
|
|
@@ -88,11 +52,17 @@ export async function createPXEServiceWithSimulator(
|
|
|
88
52
|
? loggers.prover
|
|
89
53
|
: createLogger('pxe:bb:native' + (logSuffix ? `:${logSuffix}` : ''));
|
|
90
54
|
|
|
91
|
-
|
|
55
|
+
let prover;
|
|
56
|
+
if (options.proverOrOptions instanceof BBPrivateKernelProver) {
|
|
57
|
+
prover = options.proverOrOptions;
|
|
58
|
+
} else {
|
|
59
|
+
prover = new BBBundlePrivateKernelProver(simulator, { ...options.proverOrOptions, logger: proverLogger });
|
|
60
|
+
}
|
|
61
|
+
|
|
92
62
|
const protocolContractsProvider = new BundledProtocolContractsProvider();
|
|
93
63
|
|
|
94
64
|
const pxeLogger = loggers.pxe ? loggers.pxe : createLogger('pxe:service' + (logSuffix ? `:${logSuffix}` : ''));
|
|
95
|
-
const pxe = await
|
|
65
|
+
const pxe = await PXE.create(
|
|
96
66
|
aztecNode,
|
|
97
67
|
options.store,
|
|
98
68
|
prover,
|
|
@@ -103,21 +73,3 @@ export async function createPXEServiceWithSimulator(
|
|
|
103
73
|
);
|
|
104
74
|
return pxe;
|
|
105
75
|
}
|
|
106
|
-
|
|
107
|
-
function createProver(
|
|
108
|
-
config: Pick<PXEServiceConfig, 'bbBinaryPath' | 'bbWorkingDirectory'>,
|
|
109
|
-
simulator: CircuitSimulator,
|
|
110
|
-
logger?: Logger,
|
|
111
|
-
) {
|
|
112
|
-
if (!config.bbBinaryPath || !config.bbWorkingDirectory) {
|
|
113
|
-
return new BBWASMBundlePrivateKernelProver(simulator, 16, logger);
|
|
114
|
-
} else {
|
|
115
|
-
const bbConfig = config as Required<Pick<PXEServiceConfig, 'bbBinaryPath' | 'bbWorkingDirectory'>> &
|
|
116
|
-
PXEServiceConfig;
|
|
117
|
-
return BBNativePrivateKernelProver.new(
|
|
118
|
-
{ bbSkipCleanup: false, numConcurrentIVCVerifiers: 1, bbIVCConcurrency: 1, ...bbConfig },
|
|
119
|
-
simulator,
|
|
120
|
-
logger,
|
|
121
|
-
);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
@@ -4,7 +4,7 @@ import { FunctionSelector } from '@aztec/stdlib/abi';
|
|
|
4
4
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
5
5
|
import { type SimulationError, isNoirCallStackUnresolved } from '@aztec/stdlib/errors';
|
|
6
6
|
|
|
7
|
-
import type { ContractDataProvider } from '
|
|
7
|
+
import type { ContractDataProvider } from './storage/contract_data_provider/contract_data_provider.js';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Adds contract and function names to a simulation error, if they
|
|
@@ -76,6 +76,10 @@ export async function enrichPublicSimulationError(
|
|
|
76
76
|
const callStack = err.getCallStack();
|
|
77
77
|
const originalFailingFunction = callStack[callStack.length - 1];
|
|
78
78
|
|
|
79
|
+
if (!originalFailingFunction) {
|
|
80
|
+
throw new Error(`Original failing function not found when enriching public simulation, missing callstack`);
|
|
81
|
+
}
|
|
82
|
+
|
|
79
83
|
const artifact = await contractDataProvider.getPublicFunctionArtifact(originalFailingFunction.contractAddress);
|
|
80
84
|
if (!artifact) {
|
|
81
85
|
throw new Error(
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './private_event_filter_validator.js';
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { PrivateEventFilter } from '@aztec/aztec.js/wallet';
|
|
2
|
+
import { INITIAL_L2_BLOCK_NUM } from '@aztec/constants';
|
|
3
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
4
|
+
|
|
5
|
+
import type { PrivateEventDataProviderFilter, SyncDataProvider } from '../storage/index.js';
|
|
6
|
+
|
|
7
|
+
export class PrivateEventFilterValidator {
|
|
8
|
+
constructor(private syncDataProvider: SyncDataProvider) {}
|
|
9
|
+
|
|
10
|
+
async validate(filter: PrivateEventFilter): Promise<PrivateEventDataProviderFilter> {
|
|
11
|
+
let { fromBlock, toBlock } = filter;
|
|
12
|
+
|
|
13
|
+
// Block range filters in Aztec Node are defined as closed-open intervals [fromBlock, toBlock), so
|
|
14
|
+
// we respect that convention here for consistency.
|
|
15
|
+
// We then default to [INITIAL_L2_BLOCK_NUM, latestKnownBlock + 1), ie: by default return events from
|
|
16
|
+
// the first block to the latest known block.
|
|
17
|
+
if (!fromBlock || !toBlock) {
|
|
18
|
+
const lastKnownBlock = await this.syncDataProvider.getBlockNumber();
|
|
19
|
+
fromBlock = fromBlock ?? BlockNumber(INITIAL_L2_BLOCK_NUM);
|
|
20
|
+
toBlock = toBlock ?? BlockNumber(lastKnownBlock + 1);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
if (filter.scopes.length === 0) {
|
|
24
|
+
throw new Error('At least one scope is required to get private events');
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
if (fromBlock < 1) {
|
|
28
|
+
throw new Error('fromBlock must be greater than or equal to 1');
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
if (toBlock < 1) {
|
|
32
|
+
throw new Error('toBlock must be greater than or equal to 1');
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (fromBlock >= toBlock) {
|
|
36
|
+
throw new Error('toBlock must be strictly greater than fromBlock');
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
return {
|
|
40
|
+
contractAddress: filter.contractAddress,
|
|
41
|
+
scopes: filter.scopes,
|
|
42
|
+
txHash: filter.txHash,
|
|
43
|
+
toBlock,
|
|
44
|
+
fromBlock,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
}
|
package/src/oracle_version.ts
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
///
|
|
5
5
|
/// @dev Whenever a contract function or Noir test is run, the `utilityAssertCompatibleOracleVersion` oracle is called
|
|
6
6
|
/// and if the oracle version is incompatible an error is thrown.
|
|
7
|
-
export const ORACLE_VERSION =
|
|
7
|
+
export const ORACLE_VERSION = 5;
|
|
8
8
|
|
|
9
9
|
/// This hash is computed as by hashing the Oracle interface and it is used to detect when the Oracle interface changes,
|
|
10
10
|
/// which in turn implies that you need to update the ORACLE_VERSION constant.
|
|
11
|
-
export const ORACLE_INTERFACE_HASH = '
|
|
11
|
+
export const ORACLE_INTERFACE_HASH = 'd603c17a97034d978ca453d2bce3aacae139539dee28bbc46e8f8c7177a348ec';
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
} from '@aztec/constants';
|
|
10
10
|
import { makeTuple } from '@aztec/foundation/array';
|
|
11
11
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
12
|
-
import type { Fr } from '@aztec/foundation/
|
|
12
|
+
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
13
13
|
import { type Tuple, assertLength } from '@aztec/foundation/serialize';
|
|
14
14
|
import { MembershipWitness } from '@aztec/foundation/trees';
|
|
15
15
|
import { privateKernelResetDimensionsConfig } from '@aztec/noir-protocol-circuits-types/client';
|
|
@@ -24,7 +24,6 @@ import {
|
|
|
24
24
|
PrivateKernelResetDimensions,
|
|
25
25
|
PrivateKernelResetHints,
|
|
26
26
|
type PrivateKernelSimulateOutput,
|
|
27
|
-
type ReadRequest,
|
|
28
27
|
ReadRequestActionEnum,
|
|
29
28
|
ReadRequestResetActions,
|
|
30
29
|
type ScopedKeyValidationRequestAndGenerator,
|
|
@@ -47,12 +46,10 @@ import type { PrivateKernelOracle } from '../private_kernel_oracle.js';
|
|
|
47
46
|
|
|
48
47
|
function collectNestedReadRequests<N extends number>(
|
|
49
48
|
executionStack: PrivateCallExecutionResult[],
|
|
50
|
-
extractReadRequests: (execution: PrivateCallExecutionResult) => ClaimedLengthArray<
|
|
49
|
+
extractReadRequests: (execution: PrivateCallExecutionResult) => ClaimedLengthArray<ScopedReadRequest, N>,
|
|
51
50
|
): ScopedReadRequest[] {
|
|
52
51
|
return collectNested(executionStack, executionResult => {
|
|
53
|
-
return extractReadRequests(executionResult)
|
|
54
|
-
.getActiveItems()
|
|
55
|
-
.map(readRequest => new ScopedReadRequest(readRequest, executionResult.publicInputs.callContext.contractAddress));
|
|
52
|
+
return extractReadRequests(executionResult).getActiveItems();
|
|
56
53
|
});
|
|
57
54
|
}
|
|
58
55
|
|
|
@@ -104,7 +101,7 @@ export class PrivateKernelResetPrivateInputsBuilder {
|
|
|
104
101
|
private previousKernelOutput: PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>,
|
|
105
102
|
private executionStack: PrivateCallExecutionResult[],
|
|
106
103
|
private noteHashNullifierCounterMap: Map<number, number>,
|
|
107
|
-
private
|
|
104
|
+
private splitCounter: number,
|
|
108
105
|
) {
|
|
109
106
|
this.previousKernel = previousKernelOutput.publicInputs;
|
|
110
107
|
this.requestedDimensions = PrivateKernelResetDimensions.empty();
|
|
@@ -206,7 +203,6 @@ export class PrivateKernelResetPrivateInputsBuilder {
|
|
|
206
203
|
oracle,
|
|
207
204
|
),
|
|
208
205
|
this.transientDataSquashingHints,
|
|
209
|
-
this.validationRequestsSplitCounter,
|
|
210
206
|
),
|
|
211
207
|
dimensions,
|
|
212
208
|
);
|
|
@@ -403,7 +399,7 @@ export class PrivateKernelResetPrivateInputsBuilder {
|
|
|
403
399
|
futureNoteHashReads,
|
|
404
400
|
futureNullifierReads,
|
|
405
401
|
this.noteHashNullifierCounterMap,
|
|
406
|
-
this.
|
|
402
|
+
this.splitCounter,
|
|
407
403
|
);
|
|
408
404
|
|
|
409
405
|
if (this.nextIteration && !numTransientData) {
|
|
@@ -31,8 +31,8 @@ export function computeTxIncludeByTimestamp(
|
|
|
31
31
|
);
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
const
|
|
35
|
-
const maxTimestamp =
|
|
34
|
+
const anchorBlockTimestamp = previousKernel.constants.anchorBlockHeader.globalVariables.timestamp;
|
|
35
|
+
const maxTimestamp = anchorBlockTimestamp + BigInt(maxDuration);
|
|
36
36
|
const includeByTimestamp = previousKernel.includeByTimestamp;
|
|
37
37
|
|
|
38
38
|
// If the includeByTimestamp set during the tx execution is greater than or equal to the max allowed duration,
|
|
@@ -44,13 +44,13 @@ export function computeTxIncludeByTimestamp(
|
|
|
44
44
|
|
|
45
45
|
// Round it down to the nearest hour/min/second to reduce precision and avoid revealing the exact value.
|
|
46
46
|
// This makes it harder for others to infer what function calls may have been used to produce a specific timestamp.
|
|
47
|
-
const roundedTimestamp = roundTimestamp(
|
|
47
|
+
const roundedTimestamp = roundTimestamp(anchorBlockTimestamp, includeByTimestamp);
|
|
48
48
|
|
|
49
|
-
// The tx can't be published if the timestamp is the same or less than the
|
|
49
|
+
// The tx can't be published if the timestamp is the same or less than the anchor block's timestamp.
|
|
50
50
|
// Future blocks will have a greater timestamp, so the tx would never be included.
|
|
51
|
-
if (roundedTimestamp <=
|
|
51
|
+
if (roundedTimestamp <= anchorBlockTimestamp) {
|
|
52
52
|
throw new Error(
|
|
53
|
-
`Include-by timestamp must be greater than the
|
|
53
|
+
`Include-by timestamp must be greater than the anchor block timestamp. Anchor block timestamp: ${anchorBlockTimestamp}. Include-by timestamp: ${includeByTimestamp}.`,
|
|
54
54
|
);
|
|
55
55
|
}
|
|
56
56
|
|