@aztec/txe 0.0.1-commit.d3ec352c → 0.0.1-commit.d58ff9d0
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/AuthRegistry-QVGDDH5X.js +3 -0
- package/dest/AuthRegistry-QVGDDH5X.js.map +7 -0
- package/dest/ContractClassRegistry-VWR3F42P.js +3 -0
- package/dest/ContractClassRegistry-VWR3F42P.js.map +7 -0
- package/dest/ContractInstanceRegistry-FHIWE33X.js +3 -0
- package/dest/ContractInstanceRegistry-FHIWE33X.js.map +7 -0
- package/dest/FeeJuice-SAOWVGG7.js +3 -0
- package/dest/FeeJuice-SAOWVGG7.js.map +7 -0
- package/dest/HandshakeRegistry-GY5CPEPS.js +3 -0
- package/dest/HandshakeRegistry-GY5CPEPS.js.map +7 -0
- package/dest/MultiCallEntrypoint-QG5H33ZZ.js +3 -0
- package/dest/MultiCallEntrypoint-QG5H33ZZ.js.map +7 -0
- package/dest/SchnorrAccount-NME3E45O.js +3 -0
- package/dest/SchnorrAccount-NME3E45O.js.map +7 -0
- package/dest/SchnorrInitializerlessAccount-WTGXU6SW.js +3 -0
- package/dest/SchnorrInitializerlessAccount-WTGXU6SW.js.map +7 -0
- package/dest/bin/check_txe_oracle_version.d.ts +2 -0
- package/dest/bin/check_txe_oracle_version.d.ts.map +1 -0
- package/dest/bin/check_txe_oracle_version.js +53 -0
- package/dest/bin/index.js +3 -30
- package/dest/bin/index.js.map +7 -0
- package/dest/bin/oracle_test_server.d.ts +3 -0
- package/dest/bin/oracle_test_server.d.ts.map +1 -0
- package/dest/bin/oracle_test_server.js +41 -0
- package/dest/chunk-32UHX7YY.js +3 -0
- package/dest/chunk-32UHX7YY.js.map +7 -0
- package/dest/chunk-GSUKUCKV.js +260 -0
- package/dest/chunk-GSUKUCKV.js.map +7 -0
- package/dest/chunk-UP4KKUVA.js +304 -0
- package/dest/chunk-UP4KKUVA.js.map +7 -0
- package/dest/constants.d.ts +7 -0
- package/dest/constants.d.ts.map +1 -0
- package/dest/constants.js +10 -0
- package/dest/dispatcher_pool.d.ts +67 -0
- package/dest/dispatcher_pool.d.ts.map +1 -0
- package/dest/dispatcher_pool.js +286 -0
- package/dest/index.d.ts +51 -7
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +75 -158
- package/dest/metafile.json +38759 -0
- package/dest/msgpackr_fr_extension.d.ts +2 -0
- package/dest/msgpackr_fr_extension.d.ts.map +1 -0
- package/dest/msgpackr_fr_extension.js +21 -0
- package/dest/oracle/interfaces.d.ts +71 -30
- package/dest/oracle/interfaces.d.ts.map +1 -1
- package/dest/oracle/tagging_secret_strategy.d.ts +12 -0
- package/dest/oracle/tagging_secret_strategy.d.ts.map +1 -0
- package/dest/oracle/tagging_secret_strategy.js +12 -0
- package/dest/oracle/test-resolver/default_fixtures.d.ts +16 -0
- package/dest/oracle/test-resolver/default_fixtures.d.ts.map +1 -0
- package/dest/oracle/test-resolver/default_fixtures.js +200 -0
- package/dest/oracle/test-resolver/index.d.ts +9 -0
- package/dest/oracle/test-resolver/index.d.ts.map +1 -0
- package/dest/oracle/test-resolver/index.js +32 -0
- package/dest/oracle/test-resolver/resolver.d.ts +48 -0
- package/dest/oracle/test-resolver/resolver.d.ts.map +1 -0
- package/dest/oracle/test-resolver/resolver.js +181 -0
- package/dest/oracle/txe_oracle_public_context.d.ts +40 -16
- package/dest/oracle/txe_oracle_public_context.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_public_context.js +69 -23
- package/dest/oracle/txe_oracle_registry.d.ts +172 -0
- package/dest/oracle/txe_oracle_registry.d.ts.map +1 -0
- package/dest/oracle/txe_oracle_registry.js +767 -0
- package/dest/oracle/txe_oracle_top_level_context.d.ts +79 -30
- package/dest/oracle/txe_oracle_top_level_context.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_top_level_context.js +653 -285
- package/dest/oracle/txe_oracle_version.d.ts +17 -0
- package/dest/oracle/txe_oracle_version.d.ts.map +1 -0
- package/dest/oracle/txe_oracle_version.js +14 -0
- package/dest/oracle/txe_private_execution_oracle.d.ts +17 -0
- package/dest/oracle/txe_private_execution_oracle.d.ts.map +1 -0
- package/dest/oracle/txe_private_execution_oracle.js +15 -0
- package/dest/rpc_server.d.ts +14 -0
- package/dest/rpc_server.d.ts.map +1 -0
- package/dest/rpc_server.js +78 -0
- package/dest/rpc_translator.d.ts +115 -216
- package/dest/rpc_translator.d.ts.map +1 -1
- package/dest/rpc_translator.js +901 -560
- package/dest/server.bundle.js +3 -0
- package/dest/server.bundle.js.map +7 -0
- package/dest/state_machine/archiver.d.ts +23 -58
- package/dest/state_machine/archiver.d.ts.map +1 -1
- package/dest/state_machine/archiver.js +76 -112
- package/dest/state_machine/dummy_p2p_client.d.ts +31 -17
- package/dest/state_machine/dummy_p2p_client.d.ts.map +1 -1
- package/dest/state_machine/dummy_p2p_client.js +63 -25
- package/dest/state_machine/global_variable_builder.d.ts +10 -5
- package/dest/state_machine/global_variable_builder.d.ts.map +1 -1
- package/dest/state_machine/global_variable_builder.js +20 -5
- package/dest/state_machine/index.d.ts +14 -8
- package/dest/state_machine/index.d.ts.map +1 -1
- package/dest/state_machine/index.js +84 -27
- package/dest/state_machine/mock_epoch_cache.d.ts +24 -8
- package/dest/state_machine/mock_epoch_cache.d.ts.map +1 -1
- package/dest/state_machine/mock_epoch_cache.js +43 -9
- package/dest/state_machine/synchronizer.d.ts +14 -6
- package/dest/state_machine/synchronizer.d.ts.map +1 -1
- package/dest/state_machine/synchronizer.js +23 -10
- package/dest/txe_session.d.ts +102 -20
- package/dest/txe_session.d.ts.map +1 -1
- package/dest/txe_session.js +442 -75
- package/dest/utils/block_creation.d.ts +20 -6
- package/dest/utils/block_creation.d.ts.map +1 -1
- package/dest/utils/block_creation.js +40 -6
- package/dest/utils/encoding.d.ts +192 -0
- package/dest/utils/encoding.d.ts.map +1 -0
- package/dest/{util → utils}/encoding.js +8 -3
- package/dest/{util → utils}/expected_failure_error.d.ts +1 -1
- package/dest/utils/expected_failure_error.d.ts.map +1 -0
- package/dest/utils/tx_effect_creation.d.ts +2 -3
- package/dest/utils/tx_effect_creation.d.ts.map +1 -1
- package/dest/utils/tx_effect_creation.js +3 -7
- package/dest/utils/txe_account_store.d.ts +10 -0
- package/dest/utils/txe_account_store.d.ts.map +1 -0
- package/dest/{util/txe_account_data_provider.js → utils/txe_account_store.js} +1 -1
- package/dest/utils/txe_artifact_resolver.d.ts +37 -0
- package/dest/utils/txe_artifact_resolver.d.ts.map +1 -0
- package/dest/utils/txe_artifact_resolver.js +161 -0
- package/dest/utils/txe_public_contract_data_source.d.ts +20 -0
- package/dest/utils/txe_public_contract_data_source.d.ts.map +1 -0
- package/dest/utils/txe_public_contract_data_source.js +51 -0
- package/dest/worker.bundle.js +3 -0
- package/dest/worker.bundle.js.map +7 -0
- package/dest/worker.d.ts +2 -0
- package/dest/worker.d.ts.map +1 -0
- package/dest/worker.js +92 -0
- package/package.json +39 -22
- package/src/bin/check_txe_oracle_version.ts +67 -0
- package/src/bin/index.ts +11 -2
- package/src/bin/oracle_test_server.ts +51 -0
- package/src/constants.ts +13 -0
- package/src/dispatcher_pool.ts +317 -0
- package/src/index.ts +113 -201
- package/src/msgpackr_fr_extension.ts +23 -0
- package/src/oracle/interfaces.ts +77 -35
- package/src/oracle/tagging_secret_strategy.ts +25 -0
- package/src/oracle/test-resolver/default_fixtures.ts +271 -0
- package/src/oracle/test-resolver/index.ts +44 -0
- package/src/oracle/test-resolver/resolver.ts +245 -0
- package/src/oracle/txe_oracle_public_context.ts +82 -27
- package/src/oracle/txe_oracle_registry.ts +556 -0
- package/src/oracle/txe_oracle_top_level_context.ts +555 -189
- package/src/oracle/txe_oracle_version.ts +17 -0
- package/src/oracle/txe_private_execution_oracle.ts +30 -0
- package/src/rpc_server.ts +87 -0
- package/src/rpc_translator.ts +1115 -923
- package/src/state_machine/archiver.ts +81 -132
- package/src/state_machine/dummy_p2p_client.ts +96 -38
- package/src/state_machine/global_variable_builder.ts +28 -10
- package/src/state_machine/index.ts +118 -44
- package/src/state_machine/mock_epoch_cache.ts +53 -14
- package/src/state_machine/synchronizer.ts +32 -12
- package/src/txe_session.ts +727 -123
- package/src/utils/block_creation.ts +50 -16
- package/src/{util → utils}/encoding.ts +9 -3
- package/src/utils/tx_effect_creation.ts +3 -13
- package/src/{util/txe_account_data_provider.ts → utils/txe_account_store.ts} +1 -1
- package/src/utils/txe_artifact_resolver.ts +217 -0
- package/src/utils/txe_public_contract_data_source.ts +60 -0
- package/src/worker.ts +98 -0
- package/dest/util/encoding.d.ts +0 -121
- package/dest/util/encoding.d.ts.map +0 -1
- package/dest/util/expected_failure_error.d.ts.map +0 -1
- package/dest/util/txe_account_data_provider.d.ts +0 -10
- package/dest/util/txe_account_data_provider.d.ts.map +0 -1
- package/dest/util/txe_contract_data_provider.d.ts +0 -12
- package/dest/util/txe_contract_data_provider.d.ts.map +0 -1
- package/dest/util/txe_contract_data_provider.js +0 -22
- package/dest/util/txe_public_contract_data_source.d.ts +0 -21
- package/dest/util/txe_public_contract_data_source.d.ts.map +0 -1
- package/dest/util/txe_public_contract_data_source.js +0 -67
- package/src/util/txe_contract_data_provider.ts +0 -36
- package/src/util/txe_public_contract_data_source.ts +0 -86
- /package/dest/{util → utils}/expected_failure_error.js +0 -0
- /package/src/{util → utils}/expected_failure_error.ts +0 -0
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { SimulationOverridesPlan } from '@aztec/ethereum/contracts';
|
|
2
|
+
import type { SlotNumber } from '@aztec/foundation/branded-types';
|
|
2
3
|
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
4
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
5
|
import { GasFees } from '@aztec/stdlib/gas';
|
|
5
|
-
import {
|
|
6
|
+
import type { CheckpointGlobalVariables, FeeProvider, GlobalVariableBuilder } from '@aztec/stdlib/tx';
|
|
7
|
+
/** Simple FeeProvider for TXE that returns zero fees. */
|
|
8
|
+
export declare class TXEFeeProvider implements FeeProvider {
|
|
9
|
+
getCurrentMinFees(): Promise<GasFees>;
|
|
10
|
+
getPredictedMinFees(): Promise<GasFees[]>;
|
|
11
|
+
}
|
|
6
12
|
export declare class TXEGlobalVariablesBuilder implements GlobalVariableBuilder {
|
|
7
|
-
|
|
8
|
-
buildGlobalVariables(_blockNumber: BlockNumber, _coinbase: EthAddress, _feeRecipient: AztecAddress, _slotNumber?: SlotNumber): Promise<GlobalVariables>;
|
|
13
|
+
buildCheckpointGlobalVariables(_coinbase: EthAddress, _feeRecipient: AztecAddress, _slotNumber: SlotNumber, _simulationOverridesPlan?: SimulationOverridesPlan): Promise<CheckpointGlobalVariables>;
|
|
9
14
|
}
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsX3ZhcmlhYmxlX2J1aWxkZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGF0ZV9tYWNoaW5lL2dsb2JhbF92YXJpYWJsZV9idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekUsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFbEUsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFrQixPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU1RCxPQUFPLEtBQUssRUFBRSx5QkFBeUIsRUFBRSxXQUFXLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV0Ryx5REFBeUQ7QUFDekQscUJBQWEsY0FBZSxZQUFXLFdBQVc7SUFDekMsaUJBQWlCLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUUzQztJQUVNLG1CQUFtQixJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUUvQztDQUNGO0FBRUQscUJBQWEseUJBQTBCLFlBQVcscUJBQXFCO0lBQzlELDhCQUE4QixDQUNuQyxTQUFTLEVBQUUsVUFBVSxFQUNyQixhQUFhLEVBQUUsWUFBWSxFQUMzQixXQUFXLEVBQUUsVUFBVSxFQUN2Qix3QkFBd0IsQ0FBQyxFQUFFLHVCQUF1QixHQUNqRCxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FXcEM7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global_variable_builder.d.ts","sourceRoot":"","sources":["../../src/state_machine/global_variable_builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"global_variable_builder.d.ts","sourceRoot":"","sources":["../../src/state_machine/global_variable_builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAElE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAkB,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,KAAK,EAAE,yBAAyB,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEtG,yDAAyD;AACzD,qBAAa,cAAe,YAAW,WAAW;IACzC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAE3C;IAEM,mBAAmB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAE/C;CACF;AAED,qBAAa,yBAA0B,YAAW,qBAAqB;IAC9D,8BAA8B,CACnC,SAAS,EAAE,UAAU,EACrB,aAAa,EAAE,YAAY,EAC3B,WAAW,EAAE,UAAU,EACvB,wBAAwB,CAAC,EAAE,uBAAuB,GACjD,OAAO,CAAC,yBAAyB,CAAC,CAWpC;CACF"}
|
|
@@ -1,10 +1,25 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { times } from '@aztec/foundation/collection';
|
|
2
|
+
import { FEE_ORACLE_LAG, GasFees } from '@aztec/stdlib/gas';
|
|
2
3
|
import { makeGlobalVariables } from '@aztec/stdlib/testing';
|
|
3
|
-
export class
|
|
4
|
-
|
|
4
|
+
/** Simple FeeProvider for TXE that returns zero fees. */ export class TXEFeeProvider {
|
|
5
|
+
getCurrentMinFees() {
|
|
5
6
|
return Promise.resolve(new GasFees(0, 0));
|
|
6
7
|
}
|
|
7
|
-
|
|
8
|
-
return Promise.resolve(
|
|
8
|
+
getPredictedMinFees() {
|
|
9
|
+
return Promise.resolve(times(FEE_ORACLE_LAG, ()=>new GasFees(0, 0)));
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export class TXEGlobalVariablesBuilder {
|
|
13
|
+
buildCheckpointGlobalVariables(_coinbase, _feeRecipient, _slotNumber, _simulationOverridesPlan) {
|
|
14
|
+
const vars = makeGlobalVariables();
|
|
15
|
+
return Promise.resolve({
|
|
16
|
+
chainId: vars.chainId,
|
|
17
|
+
version: vars.version,
|
|
18
|
+
slotNumber: vars.slotNumber,
|
|
19
|
+
timestamp: vars.timestamp,
|
|
20
|
+
coinbase: vars.coinbase,
|
|
21
|
+
feeRecipient: vars.feeRecipient,
|
|
22
|
+
gasFees: vars.gasFees
|
|
23
|
+
});
|
|
9
24
|
}
|
|
10
25
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
import { type AnchorBlockStore, ContractClassService, type ContractStore, ContractSyncService, type NoteStore } from '@aztec/pxe/server';
|
|
3
|
+
import { TxResolverService } from '@aztec/pxe/simulator';
|
|
4
|
+
import { L2Block, type L2TipsProvider } from '@aztec/stdlib/block';
|
|
4
5
|
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
5
6
|
import { TXEArchiver } from './archiver.js';
|
|
6
7
|
import { TXESynchronizer } from './synchronizer.js';
|
|
@@ -8,9 +9,14 @@ export declare class TXEStateMachine {
|
|
|
8
9
|
node: AztecNode;
|
|
9
10
|
synchronizer: TXESynchronizer;
|
|
10
11
|
archiver: TXEArchiver;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
anchorBlockStore: AnchorBlockStore;
|
|
13
|
+
contractSyncService: ContractSyncService;
|
|
14
|
+
contractClassService: ContractClassService;
|
|
15
|
+
txResolver: TxResolverService;
|
|
16
|
+
constructor(node: AztecNode, synchronizer: TXESynchronizer, archiver: TXEArchiver, anchorBlockStore: AnchorBlockStore, contractSyncService: ContractSyncService, contractClassService: ContractClassService, txResolver: TxResolverService);
|
|
17
|
+
static create(archiver: TXEArchiver, anchorBlockStore: AnchorBlockStore, contractStore: ContractStore, noteStore: NoteStore): Promise<TXEStateMachine>;
|
|
18
|
+
/** Returns an {@link L2TipsProvider} backed by this node's chain tips. */
|
|
19
|
+
get l2TipsProvider(): L2TipsProvider;
|
|
20
|
+
handleL2Block(block: L2Block, l1ToL2Messages?: Fr[]): Promise<void>;
|
|
15
21
|
}
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGF0ZV9tYWNoaW5lL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVwRCxPQUFPLEVBQ0wsS0FBSyxnQkFBZ0IsRUFDckIsb0JBQW9CLEVBQ3BCLEtBQUssYUFBYSxFQUNsQixtQkFBbUIsRUFDbkIsS0FBSyxTQUFTLEVBQ2YsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbkUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUk1QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFRcEQscUJBQWEsZUFBZTtJQUVqQixJQUFJLEVBQUUsU0FBUztJQUNmLFlBQVksRUFBRSxlQUFlO0lBQzdCLFFBQVEsRUFBRSxXQUFXO0lBQ3JCLGdCQUFnQixFQUFFLGdCQUFnQjtJQUNsQyxtQkFBbUIsRUFBRSxtQkFBbUI7SUFDeEMsb0JBQW9CLEVBQUUsb0JBQW9CO0lBQzFDLFVBQVUsRUFBRSxpQkFBaUI7SUFQdEMsWUFDUyxJQUFJLEVBQUUsU0FBUyxFQUNmLFlBQVksRUFBRSxlQUFlLEVBQzdCLFFBQVEsRUFBRSxXQUFXLEVBQ3JCLGdCQUFnQixFQUFFLGdCQUFnQixFQUNsQyxtQkFBbUIsRUFBRSxtQkFBbUIsRUFDeEMsb0JBQW9CLEVBQUUsb0JBQW9CLEVBQzFDLFVBQVUsRUFBRSxpQkFBaUIsRUFDbEM7SUFFSixPQUFvQixNQUFNLENBQ3hCLFFBQVEsRUFBRSxXQUFXLEVBQ3JCLGdCQUFnQixFQUFFLGdCQUFnQixFQUNsQyxhQUFhLEVBQUUsYUFBYSxFQUM1QixTQUFTLEVBQUUsU0FBUyw0QkFvRHJCO0lBRUQsMEVBQTBFO0lBQzFFLElBQVcsY0FBYyxJQUFJLGNBQWMsQ0FLMUM7SUFFWSxhQUFhLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxjQUFjLEdBQUUsRUFBRSxFQUFPLGlCQTBDbkU7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/state_machine/index.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/state_machine/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,EACL,KAAK,gBAAgB,EACrB,oBAAoB,EACpB,KAAK,aAAa,EAClB,mBAAmB,EACnB,KAAK,SAAS,EACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAGjE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAQpD,qBAAa,eAAe;IAEjB,IAAI,EAAE,SAAS;IACf,YAAY,EAAE,eAAe;IAC7B,QAAQ,EAAE,WAAW;IACrB,gBAAgB,EAAE,gBAAgB;IAClC,mBAAmB,EAAE,mBAAmB;IACxC,oBAAoB,EAAE,oBAAoB;IAC1C,UAAU,EAAE,iBAAiB;IAPtC,YACS,IAAI,EAAE,SAAS,EACf,YAAY,EAAE,eAAe,EAC7B,QAAQ,EAAE,WAAW,EACrB,gBAAgB,EAAE,gBAAgB,EAClC,mBAAmB,EAAE,mBAAmB,EACxC,oBAAoB,EAAE,oBAAoB,EAC1C,UAAU,EAAE,iBAAiB,EAClC;IAEJ,OAAoB,MAAM,CACxB,QAAQ,EAAE,WAAW,EACrB,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,SAAS,4BAoDrB;IAED,0EAA0E;IAC1E,IAAW,cAAc,IAAI,cAAc,CAK1C;IAEY,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,GAAE,EAAE,EAAO,iBA0CnE;CACF"}
|
|
@@ -1,51 +1,108 @@
|
|
|
1
1
|
import { AztecNodeService } from '@aztec/aztec-node';
|
|
2
2
|
import { TestCircuitVerifier } from '@aztec/bb-prover/test';
|
|
3
|
+
import { CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
4
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
5
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import { ContractClassService, ContractSyncService } from '@aztec/pxe/server';
|
|
7
|
+
import { TxResolverService } from '@aztec/pxe/simulator';
|
|
8
|
+
import { Checkpoint, L1PublishedData, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
|
|
9
|
+
import { CheckpointHeader } from '@aztec/stdlib/rollup';
|
|
8
10
|
import { DummyP2P } from './dummy_p2p_client.js';
|
|
9
|
-
import { TXEGlobalVariablesBuilder } from './global_variable_builder.js';
|
|
11
|
+
import { TXEFeeProvider, TXEGlobalVariablesBuilder } from './global_variable_builder.js';
|
|
10
12
|
import { MockEpochCache } from './mock_epoch_cache.js';
|
|
11
13
|
import { TXESynchronizer } from './synchronizer.js';
|
|
12
14
|
const VERSION = 1;
|
|
13
15
|
const CHAIN_ID = 1;
|
|
16
|
+
// Hardcoded so the bundled TXE doesn't try to read stdlib's package.json at a relative path
|
|
17
|
+
// that becomes invalid once bundled
|
|
18
|
+
const PACKAGE_VERSION = 'txe';
|
|
14
19
|
export class TXEStateMachine {
|
|
15
20
|
node;
|
|
16
21
|
synchronizer;
|
|
17
22
|
archiver;
|
|
18
|
-
|
|
19
|
-
|
|
23
|
+
anchorBlockStore;
|
|
24
|
+
contractSyncService;
|
|
25
|
+
contractClassService;
|
|
26
|
+
txResolver;
|
|
27
|
+
constructor(node, synchronizer, archiver, anchorBlockStore, contractSyncService, contractClassService, txResolver){
|
|
20
28
|
this.node = node;
|
|
21
29
|
this.synchronizer = synchronizer;
|
|
22
30
|
this.archiver = archiver;
|
|
23
|
-
this.
|
|
31
|
+
this.anchorBlockStore = anchorBlockStore;
|
|
32
|
+
this.contractSyncService = contractSyncService;
|
|
33
|
+
this.contractClassService = contractClassService;
|
|
34
|
+
this.txResolver = txResolver;
|
|
24
35
|
}
|
|
25
|
-
static async create(
|
|
26
|
-
const archiver = new TXEArchiver(db);
|
|
36
|
+
static async create(archiver, anchorBlockStore, contractStore, noteStore) {
|
|
27
37
|
const synchronizer = await TXESynchronizer.create();
|
|
28
|
-
const syncDataProvider = new SyncDataProvider(db);
|
|
29
38
|
const aztecNodeConfig = {};
|
|
30
39
|
const log = createLogger('txe_node');
|
|
31
|
-
const node = new AztecNodeService(
|
|
32
|
-
|
|
40
|
+
const node = new AztecNodeService({
|
|
41
|
+
config: aztecNodeConfig,
|
|
42
|
+
p2pClient: new DummyP2P(),
|
|
43
|
+
blockSource: archiver,
|
|
44
|
+
logsSource: archiver,
|
|
45
|
+
contractDataSource: archiver,
|
|
46
|
+
l1ToL2MessageSource: archiver,
|
|
47
|
+
worldStateSynchronizer: synchronizer,
|
|
48
|
+
sequencer: undefined,
|
|
49
|
+
proverNode: undefined,
|
|
50
|
+
slasherClient: undefined,
|
|
51
|
+
validatorsSentinel: undefined,
|
|
52
|
+
stopStartedWatchers: async ()=>{},
|
|
53
|
+
l1ChainId: CHAIN_ID,
|
|
54
|
+
version: VERSION,
|
|
55
|
+
globalVariableBuilder: new TXEGlobalVariablesBuilder(),
|
|
56
|
+
rollupContract: undefined,
|
|
57
|
+
feeProvider: new TXEFeeProvider(),
|
|
58
|
+
epochCache: new MockEpochCache(),
|
|
59
|
+
packageVersion: PACKAGE_VERSION,
|
|
60
|
+
peerProofVerifier: new TestCircuitVerifier(),
|
|
61
|
+
rpcProofVerifier: new TestCircuitVerifier(),
|
|
62
|
+
telemetry: undefined,
|
|
63
|
+
log
|
|
64
|
+
});
|
|
65
|
+
const contractClassService = new ContractClassService(node, contractStore);
|
|
66
|
+
const contractSyncService = new ContractSyncService(node, contractStore, contractClassService, noteStore, createLogger('txe:contract_sync'));
|
|
67
|
+
const txResolver = new TxResolverService(node);
|
|
68
|
+
return new this(node, synchronizer, archiver, anchorBlockStore, contractSyncService, contractClassService, txResolver);
|
|
33
69
|
}
|
|
34
|
-
|
|
70
|
+
/** Returns an {@link L2TipsProvider} backed by this node's chain tips. */ get l2TipsProvider() {
|
|
71
|
+
const node = this.node;
|
|
72
|
+
return {
|
|
73
|
+
getL2Tips: ()=>node.getChainTips()
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
async handleL2Block(block, l1ToL2Messages = []) {
|
|
77
|
+
// Create a checkpoint from the block manually.
|
|
78
|
+
// TXE uses 1-block-per-checkpoint for testing simplicity, so we can use block number as checkpoint number.
|
|
79
|
+
// This uses the deprecated fromBlockNumber method intentionally for the TXE testing environment.
|
|
80
|
+
const checkpointNumber = CheckpointNumber.fromBlockNumber(block.number);
|
|
81
|
+
const checkpoint = new Checkpoint(block.archive, CheckpointHeader.from({
|
|
82
|
+
lastArchiveRoot: block.header.lastArchive.root,
|
|
83
|
+
inHash: Fr.ZERO,
|
|
84
|
+
blobsHash: Fr.ZERO,
|
|
85
|
+
blockHeadersHash: Fr.ZERO,
|
|
86
|
+
epochOutHash: Fr.ZERO,
|
|
87
|
+
slotNumber: block.header.globalVariables.slotNumber,
|
|
88
|
+
timestamp: block.header.globalVariables.timestamp,
|
|
89
|
+
coinbase: block.header.globalVariables.coinbase,
|
|
90
|
+
feeRecipient: block.header.globalVariables.feeRecipient,
|
|
91
|
+
gasFees: block.header.globalVariables.gasFees,
|
|
92
|
+
totalManaUsed: block.header.totalManaUsed,
|
|
93
|
+
accumulatedFees: block.header.totalFees
|
|
94
|
+
}), [
|
|
95
|
+
block
|
|
96
|
+
], checkpointNumber);
|
|
97
|
+
const publishedCheckpoint = new PublishedCheckpoint(checkpoint, new L1PublishedData(BigInt(block.header.globalVariables.blockNumber), block.header.globalVariables.timestamp, block.header.globalVariables.blockNumber.toString()), []);
|
|
98
|
+
// Wipe contract sync cache when anchor block changes (mirrors BlockSynchronizer behavior)
|
|
99
|
+
this.contractSyncService.wipe();
|
|
35
100
|
await Promise.all([
|
|
36
|
-
this.synchronizer.handleL2Block(block
|
|
37
|
-
this.archiver.
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
blockHash: block.header.globalVariables.blockNumber.toString(),
|
|
42
|
-
blockNumber: BigInt(block.header.globalVariables.blockNumber),
|
|
43
|
-
timestamp: block.header.globalVariables.timestamp
|
|
44
|
-
},
|
|
45
|
-
attestations: []
|
|
46
|
-
})
|
|
47
|
-
]),
|
|
48
|
-
this.syncDataProvider.setHeader(block.getBlockHeader())
|
|
101
|
+
this.synchronizer.handleL2Block(block, l1ToL2Messages),
|
|
102
|
+
this.archiver.addCheckpoints([
|
|
103
|
+
publishedCheckpoint
|
|
104
|
+
], undefined),
|
|
105
|
+
this.anchorBlockStore.setHeader(block.header)
|
|
49
106
|
]);
|
|
50
107
|
}
|
|
51
108
|
}
|
|
@@ -1,26 +1,42 @@
|
|
|
1
1
|
import type { EpochAndSlot, EpochCacheInterface, EpochCommitteeInfo, SlotTag } from '@aztec/epoch-cache';
|
|
2
2
|
import { EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
3
3
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
4
|
+
import { type L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
|
|
4
5
|
/**
|
|
5
6
|
* Mock implementation of the EpochCacheInterface used to satisfy dependencies of AztecNodeService.
|
|
6
7
|
* Since in TXE we don't validate transactions, mock suffices here.
|
|
7
8
|
*/
|
|
8
9
|
export declare class MockEpochCache implements EpochCacheInterface {
|
|
9
|
-
getCommittee(): Promise<EpochCommitteeInfo>;
|
|
10
|
-
|
|
10
|
+
getCommittee(_slot?: SlotTag): Promise<EpochCommitteeInfo>;
|
|
11
|
+
getSlotNow(): SlotNumber;
|
|
12
|
+
getTargetSlot(): SlotNumber;
|
|
13
|
+
getEpochNow(): EpochNumber;
|
|
14
|
+
getTargetEpoch(): EpochNumber;
|
|
15
|
+
getEpochAndSlotNow(): EpochAndSlot & {
|
|
16
|
+
nowMs: bigint;
|
|
17
|
+
};
|
|
11
18
|
getEpochAndSlotInNextL1Slot(): EpochAndSlot & {
|
|
12
|
-
|
|
19
|
+
nowSeconds: bigint;
|
|
20
|
+
};
|
|
21
|
+
getTargetEpochAndSlotInNextL1Slot(): EpochAndSlot & {
|
|
22
|
+
nowSeconds: bigint;
|
|
13
23
|
};
|
|
14
24
|
getProposerIndexEncoding(_epoch: EpochNumber, _slot: SlotNumber, _seed: bigint): `0x${string}`;
|
|
15
25
|
computeProposerIndex(_slot: SlotNumber, _epoch: EpochNumber, _seed: bigint, _size: bigint): bigint;
|
|
16
|
-
|
|
17
|
-
currentProposer: EthAddress | undefined;
|
|
18
|
-
nextProposer: EthAddress | undefined;
|
|
26
|
+
getCurrentAndNextSlot(): {
|
|
19
27
|
currentSlot: SlotNumber;
|
|
20
28
|
nextSlot: SlotNumber;
|
|
21
|
-
}
|
|
29
|
+
};
|
|
30
|
+
getTargetAndNextSlot(): {
|
|
31
|
+
targetSlot: SlotNumber;
|
|
32
|
+
nextSlot: SlotNumber;
|
|
33
|
+
};
|
|
34
|
+
getProposerAttesterAddressInSlot(_slot: SlotNumber): Promise<EthAddress | undefined>;
|
|
22
35
|
isInCommittee(_slot: SlotTag, _validator: EthAddress): Promise<boolean>;
|
|
23
36
|
getRegisteredValidators(): Promise<EthAddress[]>;
|
|
24
37
|
filterInCommittee(_slot: SlotTag, _validators: EthAddress[]): Promise<EthAddress[]>;
|
|
38
|
+
isEscapeHatchOpen(_epoch: EpochNumber): Promise<boolean>;
|
|
39
|
+
isEscapeHatchOpenAtSlot(_slot: SlotTag): Promise<boolean>;
|
|
40
|
+
getL1Constants(): L1RollupConstants;
|
|
25
41
|
}
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19lcG9jaF9jYWNoZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0YXRlX21hY2hpbmUvbW9ja19lcG9jaF9jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekcsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUEwQixLQUFLLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFN0Y7OztHQUdHO0FBQ0gscUJBQWEsY0FBZSxZQUFXLG1CQUFtQjtJQUN4RCxZQUFZLENBQUMsS0FBSyxHQUFFLE9BQWUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FPaEU7SUFFRCxVQUFVLElBQUksVUFBVSxDQUV2QjtJQUVELGFBQWEsSUFBSSxVQUFVLENBRTFCO0lBRUQsV0FBVyxJQUFJLFdBQVcsQ0FFekI7SUFFRCxjQUFjLElBQUksV0FBVyxDQUU1QjtJQUVELGtCQUFrQixJQUFJLFlBQVksR0FBRztRQUFFLEtBQUssRUFBRSxNQUFNLENBQUE7S0FBRSxDQU9yRDtJQUVELDJCQUEyQixJQUFJLFlBQVksR0FBRztRQUFFLFVBQVUsRUFBRSxNQUFNLENBQUE7S0FBRSxDQU9uRTtJQUVELGlDQUFpQyxJQUFJLFlBQVksR0FBRztRQUFFLFVBQVUsRUFBRSxNQUFNLENBQUE7S0FBRSxDQUV6RTtJQUVELHdCQUF3QixDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLEtBQUssTUFBTSxFQUFFLENBRTdGO0lBRUQsb0JBQW9CLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sR0FBRyxNQUFNLENBRWpHO0lBRUQscUJBQXFCLElBQUk7UUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDO1FBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQTtLQUFFLENBS3pFO0lBRUQsb0JBQW9CLElBQUk7UUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDO1FBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQTtLQUFFLENBS3ZFO0lBRUQsZ0NBQWdDLENBQUMsS0FBSyxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQyxDQUVuRjtJQUVELGFBQWEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUV0RTtJQUVELHVCQUF1QixJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUUvQztJQUVELGlCQUFpQixDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUVsRjtJQUVELGlCQUFpQixDQUFDLE1BQU0sRUFBRSxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUV2RDtJQUVELHVCQUF1QixDQUFDLEtBQUssRUFBRSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUV4RDtJQUVELGNBQWMsSUFBSSxpQkFBaUIsQ0FFbEM7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock_epoch_cache.d.ts","sourceRoot":"","sources":["../../src/state_machine/mock_epoch_cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACzG,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"mock_epoch_cache.d.ts","sourceRoot":"","sources":["../../src/state_machine/mock_epoch_cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACzG,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAA0B,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAE7F;;;GAGG;AACH,qBAAa,cAAe,YAAW,mBAAmB;IACxD,YAAY,CAAC,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAOhE;IAED,UAAU,IAAI,UAAU,CAEvB;IAED,aAAa,IAAI,UAAU,CAE1B;IAED,WAAW,IAAI,WAAW,CAEzB;IAED,cAAc,IAAI,WAAW,CAE5B;IAED,kBAAkB,IAAI,YAAY,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAOrD;IAED,2BAA2B,IAAI,YAAY,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAOnE;IAED,iCAAiC,IAAI,YAAY,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAEzE;IAED,wBAAwB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,MAAM,EAAE,CAE7F;IAED,oBAAoB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjG;IAED,qBAAqB,IAAI;QAAE,WAAW,EAAE,UAAU,CAAC;QAAC,QAAQ,EAAE,UAAU,CAAA;KAAE,CAKzE;IAED,oBAAoB,IAAI;QAAE,UAAU,EAAE,UAAU,CAAC;QAAC,QAAQ,EAAE,UAAU,CAAA;KAAE,CAKvE;IAED,gCAAgC,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAEnF;IAED,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAEtE;IAED,uBAAuB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAE/C;IAED,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAElF;IAED,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAEvD;IAED,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAExD;IAED,cAAc,IAAI,iBAAiB,CAElC;CACF"}
|
|
@@ -1,20 +1,35 @@
|
|
|
1
1
|
import { EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
import { EmptyL1RollupConstants } from '@aztec/stdlib/epoch-helpers';
|
|
2
3
|
/**
|
|
3
4
|
* Mock implementation of the EpochCacheInterface used to satisfy dependencies of AztecNodeService.
|
|
4
5
|
* Since in TXE we don't validate transactions, mock suffices here.
|
|
5
6
|
*/ export class MockEpochCache {
|
|
6
|
-
getCommittee() {
|
|
7
|
+
getCommittee(_slot = 'now') {
|
|
7
8
|
return Promise.resolve({
|
|
8
9
|
committee: undefined,
|
|
9
10
|
seed: 0n,
|
|
10
|
-
epoch: EpochNumber.ZERO
|
|
11
|
+
epoch: EpochNumber.ZERO,
|
|
12
|
+
isEscapeHatchOpen: false
|
|
11
13
|
});
|
|
12
14
|
}
|
|
15
|
+
getSlotNow() {
|
|
16
|
+
return SlotNumber(0);
|
|
17
|
+
}
|
|
18
|
+
getTargetSlot() {
|
|
19
|
+
return SlotNumber(0);
|
|
20
|
+
}
|
|
21
|
+
getEpochNow() {
|
|
22
|
+
return EpochNumber.ZERO;
|
|
23
|
+
}
|
|
24
|
+
getTargetEpoch() {
|
|
25
|
+
return EpochNumber.ZERO;
|
|
26
|
+
}
|
|
13
27
|
getEpochAndSlotNow() {
|
|
14
28
|
return {
|
|
15
29
|
epoch: EpochNumber.ZERO,
|
|
16
30
|
slot: SlotNumber(0),
|
|
17
|
-
ts: 0n
|
|
31
|
+
ts: 0n,
|
|
32
|
+
nowMs: 0n
|
|
18
33
|
};
|
|
19
34
|
}
|
|
20
35
|
getEpochAndSlotInNextL1Slot() {
|
|
@@ -22,22 +37,32 @@ import { EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
|
22
37
|
epoch: EpochNumber.ZERO,
|
|
23
38
|
slot: SlotNumber(0),
|
|
24
39
|
ts: 0n,
|
|
25
|
-
|
|
40
|
+
nowSeconds: 0n
|
|
26
41
|
};
|
|
27
42
|
}
|
|
43
|
+
getTargetEpochAndSlotInNextL1Slot() {
|
|
44
|
+
return this.getEpochAndSlotInNextL1Slot();
|
|
45
|
+
}
|
|
28
46
|
getProposerIndexEncoding(_epoch, _slot, _seed) {
|
|
29
47
|
return '0x00';
|
|
30
48
|
}
|
|
31
49
|
computeProposerIndex(_slot, _epoch, _seed, _size) {
|
|
32
50
|
return 0n;
|
|
33
51
|
}
|
|
34
|
-
|
|
35
|
-
return
|
|
36
|
-
currentProposer: undefined,
|
|
37
|
-
nextProposer: undefined,
|
|
52
|
+
getCurrentAndNextSlot() {
|
|
53
|
+
return {
|
|
38
54
|
currentSlot: SlotNumber(0),
|
|
39
55
|
nextSlot: SlotNumber(0)
|
|
40
|
-
}
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
getTargetAndNextSlot() {
|
|
59
|
+
return {
|
|
60
|
+
targetSlot: SlotNumber(0),
|
|
61
|
+
nextSlot: SlotNumber(0)
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
getProposerAttesterAddressInSlot(_slot) {
|
|
65
|
+
return Promise.resolve(undefined);
|
|
41
66
|
}
|
|
42
67
|
isInCommittee(_slot, _validator) {
|
|
43
68
|
return Promise.resolve(false);
|
|
@@ -48,4 +73,13 @@ import { EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
|
48
73
|
filterInCommittee(_slot, _validators) {
|
|
49
74
|
return Promise.resolve([]);
|
|
50
75
|
}
|
|
76
|
+
isEscapeHatchOpen(_epoch) {
|
|
77
|
+
return Promise.resolve(false);
|
|
78
|
+
}
|
|
79
|
+
isEscapeHatchOpenAtSlot(_slot) {
|
|
80
|
+
return Promise.resolve(false);
|
|
81
|
+
}
|
|
82
|
+
getL1Constants() {
|
|
83
|
+
return EmptyL1RollupConstants;
|
|
84
|
+
}
|
|
51
85
|
}
|
|
@@ -1,26 +1,32 @@
|
|
|
1
1
|
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
2
|
-
import
|
|
2
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
|
+
import { AvmSimulatorPool } from '@aztec/simulator/server';
|
|
4
|
+
import type { BlockHash, L2Block } from '@aztec/stdlib/block';
|
|
3
5
|
import type { MerkleTreeReadOperations, MerkleTreeWriteOperations, SnapshotDataKeys, WorldStateSynchronizer, WorldStateSynchronizerStatus } from '@aztec/stdlib/interfaces/server';
|
|
4
6
|
import { NativeWorldStateService } from '@aztec/world-state/native';
|
|
5
7
|
export declare class TXESynchronizer implements WorldStateSynchronizer {
|
|
6
8
|
nativeWorldStateService: NativeWorldStateService;
|
|
7
9
|
private blockNumber;
|
|
10
|
+
/** AVM execution backend (simulator pool + CDB server) shared across all public simulations. */
|
|
11
|
+
avmSimulator: AvmSimulatorPool;
|
|
8
12
|
constructor(nativeWorldStateService: NativeWorldStateService);
|
|
9
13
|
static create(): Promise<TXESynchronizer>;
|
|
10
|
-
handleL2Block(block:
|
|
14
|
+
handleL2Block(block: L2Block, l1ToL2Messages?: Fr[]): Promise<void>;
|
|
11
15
|
/**
|
|
12
|
-
* Forces an immediate sync to an optionally provided minimum block number
|
|
16
|
+
* Forces an immediate sync to an optionally provided minimum block number.
|
|
13
17
|
* @param targetBlockNumber - The target block number that we must sync to. Will download unproven blocks if needed to reach it.
|
|
14
|
-
* @param
|
|
18
|
+
* @param blockHash - If provided, verifies the block at targetBlockNumber matches this hash.
|
|
15
19
|
* @returns A promise that resolves with the block number the world state was synced to
|
|
16
20
|
*/
|
|
17
|
-
syncImmediate(_minBlockNumber?: BlockNumber,
|
|
21
|
+
syncImmediate(_minBlockNumber?: BlockNumber, _blockHash?: BlockHash): Promise<BlockNumber>;
|
|
18
22
|
/** Returns an instance of MerkleTreeAdminOperations that will not include uncommitted data. */
|
|
19
23
|
getCommitted(): MerkleTreeReadOperations;
|
|
20
24
|
/** Forks the world state at the given block number, defaulting to the latest one. */
|
|
21
25
|
fork(block?: number): Promise<MerkleTreeWriteOperations>;
|
|
22
26
|
/** Gets a handle that allows reading the state as it was at the given block number. */
|
|
23
27
|
getSnapshot(blockNumber: number): MerkleTreeReadOperations;
|
|
28
|
+
/** Gets a snapshot at the given block number. The TXE has no reorgs, so the fork hash is not verified. */
|
|
29
|
+
getVerifiedSnapshot(blockNumber: number, _blockHash: BlockHash): Promise<MerkleTreeReadOperations>;
|
|
24
30
|
/** Backups the db to the target path. */
|
|
25
31
|
backupTo(dstPath: string, compact?: boolean): Promise<Record<Exclude<SnapshotDataKeys, 'archiver'>, string>>;
|
|
26
32
|
start(): Promise<void>;
|
|
@@ -29,5 +35,7 @@ export declare class TXESynchronizer implements WorldStateSynchronizer {
|
|
|
29
35
|
stopSync(): Promise<void>;
|
|
30
36
|
resumeSync(): void;
|
|
31
37
|
clear(): Promise<void>;
|
|
38
|
+
/** Clean up IPC resources. */
|
|
39
|
+
closeIpc(): Promise<void>;
|
|
32
40
|
}
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luY2hyb25pemVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RhdGVfbWFjaGluZS9zeW5jaHJvbml6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTlELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUQsT0FBTyxLQUFLLEVBQ1Ysd0JBQXdCLEVBQ3hCLHlCQUF5QixFQUN6QixnQkFBZ0IsRUFDaEIsc0JBQXNCLEVBQ3RCLDRCQUE0QixFQUM3QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXBFLHFCQUFhLGVBQWdCLFlBQVcsc0JBQXNCO0lBT3pDLHVCQUF1QixFQUFFLHVCQUF1QjtJQUxuRSxPQUFPLENBQUMsV0FBVyxDQUFvQjtJQUV2QyxnR0FBZ0c7SUFDekYsWUFBWSxFQUFHLGdCQUFnQixDQUFDO0lBRXZDLFlBQW1CLHVCQUF1QixFQUFFLHVCQUF1QixFQUFJO0lBRXZFLE9BQWEsTUFBTSw2QkFVbEI7SUFFWSxhQUFhLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxjQUFjLEdBQUUsRUFBRSxFQUFPLGlCQU9uRTtJQUVEOzs7OztPQUtHO0lBQ0ksYUFBYSxDQUFDLGVBQWUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsRUFBRSxTQUFTLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUVoRztJQUVELCtGQUErRjtJQUN4RixZQUFZLElBQUksd0JBQXdCLENBRTlDO0lBRUQscUZBQXFGO0lBQzlFLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBRTlEO0lBRUQsdUZBQXVGO0lBQ2hGLFdBQVcsQ0FBQyxXQUFXLEVBQUUsTUFBTSxHQUFHLHdCQUF3QixDQUVoRTtJQUVELDBHQUEwRztJQUNuRyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLEdBQUcsT0FBTyxDQUFDLHdCQUF3QixDQUFDLENBRXhHO0lBRUQseUNBQXlDO0lBQ2xDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxFQUFFLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxVQUFVLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUVsSDtJQUVNLEtBQUssSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBRTVCO0lBRU0sTUFBTSxJQUFJLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxDQUVyRDtJQUVZLElBQUksSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBRWpDO0lBRU0sUUFBUSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FFL0I7SUFFTSxVQUFVLElBQUksSUFBSSxDQUV4QjtJQUVNLEtBQUssSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBRTVCO0lBRUQsOEJBQThCO0lBQ2pCLFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBRXJDO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"synchronizer.d.ts","sourceRoot":"","sources":["../../src/state_machine/synchronizer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"synchronizer.d.ts","sourceRoot":"","sources":["../../src/state_machine/synchronizer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EACzB,gBAAgB,EAChB,sBAAsB,EACtB,4BAA4B,EAC7B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,qBAAa,eAAgB,YAAW,sBAAsB;IAOzC,uBAAuB,EAAE,uBAAuB;IALnE,OAAO,CAAC,WAAW,CAAoB;IAEvC,gGAAgG;IACzF,YAAY,EAAG,gBAAgB,CAAC;IAEvC,YAAmB,uBAAuB,EAAE,uBAAuB,EAAI;IAEvE,OAAa,MAAM,6BAUlB;IAEY,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,GAAE,EAAE,EAAO,iBAOnE;IAED;;;;;OAKG;IACI,aAAa,CAAC,eAAe,CAAC,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAEhG;IAED,+FAA+F;IACxF,YAAY,IAAI,wBAAwB,CAE9C;IAED,qFAAqF;IAC9E,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAE9D;IAED,uFAAuF;IAChF,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,wBAAwB,CAEhE;IAED,0GAA0G;IACnG,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAExG;IAED,yCAAyC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC,CAElH;IAEM,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAE5B;IAEM,MAAM,IAAI,OAAO,CAAC,4BAA4B,CAAC,CAErD;IAEY,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAEjC;IAEM,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAE/B;IAEM,UAAU,IAAI,IAAI,CAExB;IAEM,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAE5B;IAED,8BAA8B;IACjB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAErC;CACF"}
|
|
@@ -1,29 +1,36 @@
|
|
|
1
1
|
import { NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/constants';
|
|
2
2
|
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
3
|
-
import {
|
|
3
|
+
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
4
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
5
|
+
import { AvmSimulatorPool } from '@aztec/simulator/server';
|
|
4
6
|
import { NativeWorldStateService } from '@aztec/world-state/native';
|
|
5
7
|
export class TXESynchronizer {
|
|
6
8
|
nativeWorldStateService;
|
|
7
9
|
// This works when set to 1 as well.
|
|
8
10
|
blockNumber;
|
|
11
|
+
/** AVM execution backend (simulator pool + CDB server) shared across all public simulations. */ avmSimulator;
|
|
9
12
|
constructor(nativeWorldStateService){
|
|
10
13
|
this.nativeWorldStateService = nativeWorldStateService;
|
|
11
14
|
this.blockNumber = BlockNumber.ZERO;
|
|
12
15
|
}
|
|
13
16
|
static async create() {
|
|
14
|
-
const nativeWorldStateService = await NativeWorldStateService.
|
|
15
|
-
|
|
17
|
+
const nativeWorldStateService = await NativeWorldStateService.ephemeral();
|
|
18
|
+
const synchronizer = new this(nativeWorldStateService);
|
|
19
|
+
synchronizer.avmSimulator = await AvmSimulatorPool.spawn({
|
|
20
|
+
wsdbIpcPath: nativeWorldStateService.getIpcPath()
|
|
21
|
+
});
|
|
22
|
+
return synchronizer;
|
|
16
23
|
}
|
|
17
|
-
async handleL2Block(block) {
|
|
18
|
-
await this.nativeWorldStateService.handleL2BlockAndMessages(block,
|
|
24
|
+
async handleL2Block(block, l1ToL2Messages = []) {
|
|
25
|
+
await this.nativeWorldStateService.handleL2BlockAndMessages(block, padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP));
|
|
19
26
|
this.blockNumber = block.header.globalVariables.blockNumber;
|
|
20
27
|
}
|
|
21
28
|
/**
|
|
22
|
-
* Forces an immediate sync to an optionally provided minimum block number
|
|
29
|
+
* Forces an immediate sync to an optionally provided minimum block number.
|
|
23
30
|
* @param targetBlockNumber - The target block number that we must sync to. Will download unproven blocks if needed to reach it.
|
|
24
|
-
* @param
|
|
31
|
+
* @param blockHash - If provided, verifies the block at targetBlockNumber matches this hash.
|
|
25
32
|
* @returns A promise that resolves with the block number the world state was synced to
|
|
26
|
-
*/ syncImmediate(_minBlockNumber,
|
|
33
|
+
*/ syncImmediate(_minBlockNumber, _blockHash) {
|
|
27
34
|
return Promise.resolve(this.blockNumber);
|
|
28
35
|
}
|
|
29
36
|
/** Returns an instance of MerkleTreeAdminOperations that will not include uncommitted data. */ getCommitted() {
|
|
@@ -35,6 +42,9 @@ export class TXESynchronizer {
|
|
|
35
42
|
/** Gets a handle that allows reading the state as it was at the given block number. */ getSnapshot(blockNumber) {
|
|
36
43
|
return this.nativeWorldStateService.getSnapshot(BlockNumber(blockNumber));
|
|
37
44
|
}
|
|
45
|
+
/** Gets a snapshot at the given block number. The TXE has no reorgs, so the fork hash is not verified. */ getVerifiedSnapshot(blockNumber, _blockHash) {
|
|
46
|
+
return Promise.resolve(this.getSnapshot(blockNumber));
|
|
47
|
+
}
|
|
38
48
|
/** Backups the db to the target path. */ backupTo(dstPath, compact) {
|
|
39
49
|
return this.nativeWorldStateService.backupTo(dstPath, compact);
|
|
40
50
|
}
|
|
@@ -44,8 +54,8 @@ export class TXESynchronizer {
|
|
|
44
54
|
status() {
|
|
45
55
|
throw new Error('TXE Synchronizer does not implement "status"');
|
|
46
56
|
}
|
|
47
|
-
stop() {
|
|
48
|
-
|
|
57
|
+
async stop() {
|
|
58
|
+
await this.closeIpc();
|
|
49
59
|
}
|
|
50
60
|
stopSync() {
|
|
51
61
|
throw new Error('TXE Synchronizer does not implement "stopSync"');
|
|
@@ -56,4 +66,7 @@ export class TXESynchronizer {
|
|
|
56
66
|
clear() {
|
|
57
67
|
throw new Error('TXE Synchronizer does not implement "clear"');
|
|
58
68
|
}
|
|
69
|
+
/** Clean up IPC resources. */ async closeIpc() {
|
|
70
|
+
await this.avmSimulator?.[Symbol.asyncDispose]();
|
|
71
|
+
}
|
|
59
72
|
}
|