@aztec/end-to-end 0.0.1-commit.2ed92850 → 0.0.1-commit.2f68f620
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 +27 -0
- package/dest/bench/client_flows/benchmark.d.ts +15 -1
- package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/benchmark.js +17 -0
- package/dest/bench/client_flows/client_flows_benchmark.d.ts +3 -3
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/client_flows_benchmark.js +36 -39
- package/dest/bench/client_flows/config.d.ts +2 -2
- package/dest/bench/client_flows/config.d.ts.map +1 -1
- package/dest/bench/client_flows/config.js +18 -0
- package/dest/bench/utils.d.ts +1 -1
- package/dest/bench/utils.d.ts.map +1 -1
- package/dest/bench/utils.js +8 -3
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +8 -5
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +1 -1
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +36 -17
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +16 -5
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +1 -1
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +42 -9
- package/dest/e2e_deploy_contract/deploy_test.d.ts +4 -4
- package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
- package/dest/e2e_deploy_contract/deploy_test.js +2 -1
- package/dest/e2e_epochs/epochs_test.d.ts +39 -8
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +170 -52
- package/dest/e2e_fees/fees_test.d.ts +6 -3
- package/dest/e2e_fees/fees_test.d.ts.map +1 -1
- package/dest/e2e_fees/fees_test.js +50 -17
- package/dest/e2e_l1_publisher/write_json.d.ts +3 -2
- package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -1
- package/dest/e2e_l1_publisher/write_json.js +1 -7
- package/dest/e2e_nested_contract/nested_contract_test.d.ts +3 -3
- package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
- package/dest/e2e_nested_contract/nested_contract_test.js +6 -7
- package/dest/e2e_p2p/inactivity_slash_test.d.ts +1 -1
- package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -1
- package/dest/e2e_p2p/inactivity_slash_test.js +4 -3
- package/dest/e2e_p2p/p2p_network.d.ts +14 -12
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +70 -34
- package/dest/e2e_p2p/reqresp/utils.d.ts +22 -0
- package/dest/e2e_p2p/reqresp/utils.d.ts.map +1 -0
- package/dest/e2e_p2p/reqresp/utils.js +206 -0
- package/dest/e2e_p2p/shared.d.ts +37 -8
- package/dest/e2e_p2p/shared.d.ts.map +1 -1
- package/dest/e2e_p2p/shared.js +93 -53
- package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts +2 -0
- package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts.map +1 -0
- package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.js +184 -0
- package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts +18 -0
- package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts.map +1 -0
- package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.js +120 -0
- package/dest/e2e_token_contract/token_contract_test.d.ts +6 -4
- package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
- package/dest/e2e_token_contract/token_contract_test.js +23 -11
- package/dest/fixtures/authwit_proxy.d.ts +15 -0
- package/dest/fixtures/authwit_proxy.d.ts.map +1 -0
- package/dest/fixtures/authwit_proxy.js +34 -0
- package/dest/fixtures/e2e_prover_test.d.ts +9 -8
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +40 -51
- package/dest/fixtures/elu_monitor.d.ts +21 -0
- package/dest/fixtures/elu_monitor.d.ts.map +1 -0
- package/dest/fixtures/elu_monitor.js +102 -0
- package/dest/fixtures/fixtures.d.ts +74 -1
- package/dest/fixtures/fixtures.d.ts.map +1 -1
- package/dest/fixtures/fixtures.js +71 -0
- package/dest/fixtures/get_bb_config.d.ts +1 -1
- package/dest/fixtures/get_bb_config.d.ts.map +1 -1
- package/dest/fixtures/get_bb_config.js +5 -5
- package/dest/fixtures/ha_setup.d.ts +71 -0
- package/dest/fixtures/ha_setup.d.ts.map +1 -0
- package/dest/fixtures/ha_setup.js +116 -0
- package/dest/fixtures/index.d.ts +2 -1
- package/dest/fixtures/index.d.ts.map +1 -1
- package/dest/fixtures/index.js +1 -0
- package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts +25 -0
- package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts.map +1 -0
- package/dest/fixtures/schnorr_hardcoded_account_contract.js +37 -0
- package/dest/fixtures/setup.d.ts +88 -34
- package/dest/fixtures/setup.d.ts.map +1 -1
- package/dest/fixtures/setup.js +225 -180
- package/dest/fixtures/setup_p2p_test.d.ts +22 -11
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +43 -32
- package/dest/fixtures/token_utils.d.ts +2 -2
- package/dest/fixtures/token_utils.d.ts.map +1 -1
- package/dest/fixtures/token_utils.js +5 -7
- package/dest/fixtures/utils.d.ts +2 -2
- package/dest/fixtures/utils.d.ts.map +1 -1
- package/dest/fixtures/utils.js +1 -1
- package/dest/forward-compatibility/wallet_rpc_client.d.ts +7 -0
- package/dest/forward-compatibility/wallet_rpc_client.d.ts.map +1 -0
- package/dest/forward-compatibility/wallet_rpc_client.js +15 -0
- package/dest/forward-compatibility/wallet_service.d.ts +3 -0
- package/dest/forward-compatibility/wallet_service.d.ts.map +1 -0
- package/dest/forward-compatibility/wallet_service.js +109 -0
- package/dest/install_legacy_contracts.d.cts +10 -0
- package/dest/install_legacy_contracts.d.cts.map +1 -0
- package/dest/legacy-jest-resolver.d.cts +3 -0
- package/dest/legacy-jest-resolver.d.cts.map +1 -0
- package/dest/shared/cross_chain_test_harness.d.ts +4 -2
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.js +22 -18
- package/dest/shared/gas_portal_test_harness.d.ts +8 -5
- package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
- package/dest/shared/gas_portal_test_harness.js +19 -10
- package/dest/shared/index.d.ts +2 -1
- package/dest/shared/index.d.ts.map +1 -1
- package/dest/shared/index.js +1 -0
- package/dest/shared/jest_setup.js +41 -1
- package/dest/shared/mock_state_view.d.ts +86 -0
- package/dest/shared/mock_state_view.d.ts.map +1 -0
- package/dest/shared/mock_state_view.js +186 -0
- package/dest/shared/submit-transactions.d.ts +2 -2
- package/dest/shared/submit-transactions.d.ts.map +1 -1
- package/dest/shared/submit-transactions.js +1 -1
- package/dest/shared/uniswap_l1_l2.d.ts +1 -1
- package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
- package/dest/shared/uniswap_l1_l2.js +57 -40
- package/dest/shared/wait_for_l1_to_l2_message.d.ts +13 -0
- package/dest/shared/wait_for_l1_to_l2_message.d.ts.map +1 -0
- package/dest/shared/wait_for_l1_to_l2_message.js +10 -0
- package/dest/simulators/lending_simulator.d.ts +10 -3
- package/dest/simulators/lending_simulator.d.ts.map +1 -1
- package/dest/simulators/lending_simulator.js +26 -14
- package/dest/simulators/token_simulator.d.ts +1 -1
- package/dest/simulators/token_simulator.d.ts.map +1 -1
- package/dest/simulators/token_simulator.js +3 -24
- package/dest/spartan/setup_test_wallets.d.ts +12 -3
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +108 -41
- package/dest/spartan/tx_metrics.d.ts +52 -4
- package/dest/spartan/tx_metrics.d.ts.map +1 -1
- package/dest/spartan/tx_metrics.js +224 -21
- package/dest/spartan/utils/bot.d.ts +3 -2
- package/dest/spartan/utils/bot.d.ts.map +1 -1
- package/dest/spartan/utils/bot.js +2 -1
- package/dest/spartan/utils/config.d.ts +11 -28
- package/dest/spartan/utils/config.d.ts.map +1 -1
- package/dest/spartan/utils/config.js +4 -1
- package/dest/spartan/utils/index.d.ts +6 -4
- package/dest/spartan/utils/index.d.ts.map +1 -1
- package/dest/spartan/utils/index.js +6 -2
- package/dest/spartan/utils/k8s.d.ts +31 -1
- package/dest/spartan/utils/k8s.d.ts.map +1 -1
- package/dest/spartan/utils/k8s.js +124 -0
- package/dest/spartan/utils/nodes.d.ts +14 -5
- package/dest/spartan/utils/nodes.d.ts.map +1 -1
- package/dest/spartan/utils/nodes.js +204 -33
- package/dest/spartan/utils/pod_logs.d.ts +25 -0
- package/dest/spartan/utils/pod_logs.d.ts.map +1 -0
- package/dest/spartan/utils/pod_logs.js +74 -0
- package/dest/spartan/utils/scripts.d.ts +18 -4
- package/dest/spartan/utils/scripts.d.ts.map +1 -1
- package/dest/spartan/utils/scripts.js +19 -4
- package/dest/test-wallet/test_wallet.d.ts +85 -0
- package/dest/test-wallet/test_wallet.d.ts.map +1 -0
- package/dest/test-wallet/test_wallet.js +273 -0
- package/dest/test-wallet/utils.d.ts +41 -0
- package/dest/test-wallet/utils.d.ts.map +1 -0
- package/dest/test-wallet/utils.js +66 -0
- package/dest/test-wallet/wallet_worker_script.d.ts +2 -0
- package/dest/test-wallet/wallet_worker_script.d.ts.map +1 -0
- package/dest/test-wallet/wallet_worker_script.js +53 -0
- package/dest/test-wallet/worker_wallet.d.ts +53 -0
- package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
- package/dest/test-wallet/worker_wallet.js +155 -0
- package/dest/test-wallet/worker_wallet_schema.d.ts +160 -0
- package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
- package/dest/test-wallet/worker_wallet_schema.js +22 -0
- package/package.json +52 -45
- package/src/bench/client_flows/benchmark.ts +19 -0
- package/src/bench/client_flows/client_flows_benchmark.ts +64 -49
- package/src/bench/client_flows/config.ts +9 -1
- package/src/bench/utils.ts +10 -4
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +52 -25
- package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +56 -19
- package/src/e2e_deploy_contract/deploy_test.ts +6 -5
- package/src/e2e_epochs/epochs_test.ts +196 -77
- package/src/e2e_fees/bridging_race.notest.ts +1 -1
- package/src/e2e_fees/fees_test.ts +57 -32
- package/src/e2e_l1_publisher/write_json.ts +1 -6
- package/src/e2e_nested_contract/nested_contract_test.ts +10 -6
- package/src/e2e_p2p/inactivity_slash_test.ts +8 -7
- package/src/e2e_p2p/p2p_network.ts +93 -49
- package/src/e2e_p2p/reqresp/utils.ts +274 -0
- package/src/e2e_p2p/shared.ts +117 -65
- package/src/e2e_storage_proof/fixtures/storage_proof.json +915 -0
- package/src/e2e_storage_proof/fixtures/storage_proof_fetcher.ts +190 -0
- package/src/e2e_storage_proof/fixtures/storage_proof_fixture.ts +173 -0
- package/src/e2e_token_contract/token_contract_test.ts +38 -11
- package/src/fixtures/authwit_proxy.ts +54 -0
- package/src/fixtures/dumps/epoch_proof_result.json +1 -1
- package/src/fixtures/e2e_prover_test.ts +50 -57
- package/src/fixtures/elu_monitor.ts +126 -0
- package/src/fixtures/fixtures.ts +93 -0
- package/src/fixtures/get_bb_config.ts +7 -6
- package/src/fixtures/ha_setup.ts +188 -0
- package/src/fixtures/index.ts +1 -0
- package/src/fixtures/schnorr_hardcoded_account_contract.ts +49 -0
- package/src/fixtures/setup.ts +282 -243
- package/src/fixtures/setup_p2p_test.ts +52 -52
- package/src/fixtures/token_utils.ts +3 -3
- package/src/fixtures/utils.ts +2 -0
- package/src/forward-compatibility/wallet_rpc_client.ts +14 -0
- package/src/forward-compatibility/wallet_service.ts +104 -0
- package/src/guides/up_quick_start.sh +3 -5
- package/src/install_legacy_contracts.cjs +75 -0
- package/src/legacy-jest-resolver.cjs +112 -0
- package/src/shared/cross_chain_test_harness.ts +27 -13
- package/src/shared/gas_portal_test_harness.ts +21 -11
- package/src/shared/index.ts +1 -0
- package/src/shared/jest_setup.ts +51 -1
- package/src/shared/mock_state_view.ts +188 -0
- package/src/shared/submit-transactions.ts +3 -2
- package/src/shared/uniswap_l1_l2.ts +103 -54
- package/src/shared/wait_for_l1_to_l2_message.ts +23 -0
- package/src/simulators/lending_simulator.ts +32 -14
- package/src/simulators/token_simulator.ts +6 -30
- package/src/spartan/setup_test_wallets.ts +146 -35
- package/src/spartan/tx_metrics.ts +208 -24
- package/src/spartan/utils/bot.ts +4 -1
- package/src/spartan/utils/config.ts +3 -0
- package/src/spartan/utils/index.ts +10 -1
- package/src/spartan/utils/k8s.ts +160 -0
- package/src/spartan/utils/nodes.ts +251 -31
- package/src/spartan/utils/pod_logs.ts +99 -0
- package/src/spartan/utils/scripts.ts +43 -7
- package/src/test-wallet/test_wallet.ts +376 -0
- package/src/test-wallet/utils.ts +108 -0
- package/src/test-wallet/wallet_worker_script.ts +63 -0
- package/src/test-wallet/worker_wallet.ts +218 -0
- package/src/test-wallet/worker_wallet_schema.ts +13 -0
|
@@ -3,21 +3,32 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { type AztecNodeConfig, AztecNodeService } from '@aztec/aztec-node';
|
|
5
5
|
import type { DateProvider } from '@aztec/foundation/timer';
|
|
6
|
-
import type {
|
|
7
|
-
import type { PublicDataTreeLeaf } from '@aztec/stdlib/trees';
|
|
8
|
-
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
6
|
+
import type { GenesisData } from '@aztec/stdlib/world-state';
|
|
9
7
|
export declare const ATTESTER_PRIVATE_KEYS_START_INDEX = 3;
|
|
10
8
|
export declare function generatePrivateKeys(startIndex: number, numberOfKeys: number): `0x${string}`[];
|
|
11
9
|
export declare function createNodes(config: AztecNodeConfig & {
|
|
12
10
|
dontStartSequencer?: boolean;
|
|
13
|
-
}, dateProvider: DateProvider, bootstrapNodeEnr: string, numNodes: number, bootNodePort: number,
|
|
14
|
-
/**
|
|
15
|
-
export
|
|
11
|
+
}, dateProvider: DateProvider, bootstrapNodeEnr: string, numNodes: number, bootNodePort: number, genesis?: GenesisData, dataDirectory?: string, metricsPort?: number, indexOffset?: number, validatorsPerNode?: number): Promise<AztecNodeService[]>;
|
|
12
|
+
/** Extended config type for createNode with test-specific overrides. */
|
|
13
|
+
export type CreateNodeConfig = AztecNodeConfig & {
|
|
14
|
+
/** Whether to skip starting the sequencer. */
|
|
16
15
|
dontStartSequencer?: boolean;
|
|
17
|
-
|
|
16
|
+
/** Override the private key (instead of deriving from addressIndex). */
|
|
17
|
+
validatorPrivateKey?: `0x${string}`;
|
|
18
|
+
/** Corrupt only the block proposal at this indexWithinCheckpoint (testing only). */
|
|
19
|
+
invalidBlockProposalIndexWithinCheckpoint?: number;
|
|
20
|
+
/** Accept proposal gossip regardless of slot timing (testing only). */
|
|
21
|
+
skipProposalSlotValidation?: boolean;
|
|
22
|
+
};
|
|
23
|
+
/** Creates a P2P enabled instance of Aztec Node Service with a validator. */
|
|
24
|
+
export declare function createNode(config: CreateNodeConfig, dateProvider: DateProvider, tcpPort: number, bootstrapNode: string | undefined, addressIndex: number | number[], genesis?: GenesisData, dataDirectory?: string, metricsPort?: number): Promise<AztecNodeService>;
|
|
18
25
|
/** Creates a P2P enabled instance of Aztec Node Service without a validator */
|
|
19
|
-
export declare function createNonValidatorNode(baseConfig: AztecNodeConfig, dateProvider: DateProvider, tcpPort: number, bootstrapNode: string | undefined,
|
|
20
|
-
export declare function createProverNode(config: AztecNodeConfig, tcpPort: number, bootstrapNode: string | undefined, addressIndex: number,
|
|
26
|
+
export declare function createNonValidatorNode(baseConfig: AztecNodeConfig, dateProvider: DateProvider, tcpPort: number, bootstrapNode: string | undefined, genesis?: GenesisData, dataDirectory?: string, metricsPort?: number): Promise<AztecNodeService>;
|
|
27
|
+
export declare function createProverNode(config: AztecNodeConfig, tcpPort: number, bootstrapNode: string | undefined, addressIndex: number, deps: {
|
|
28
|
+
dateProvider: DateProvider;
|
|
29
|
+
}, genesis?: GenesisData, dataDirectory?: string, metricsPort?: number): Promise<{
|
|
30
|
+
proverNode: AztecNodeService;
|
|
31
|
+
}>;
|
|
21
32
|
export declare function createP2PConfig(config: AztecNodeConfig, bootstrapNodeEnr?: string, port?: number, dataDirectory?: string): Promise<AztecNodeConfig>;
|
|
22
|
-
export declare function createValidatorConfig(config:
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
export declare function createValidatorConfig(config: CreateNodeConfig, bootstrapNodeEnr?: string, port?: number, addressIndex?: number | number[], dataDirectory?: string): Promise<AztecNodeConfig>;
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXBfcDJwX3Rlc3QuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maXh0dXJlcy9zZXR1cF9wMnBfdGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBSzNFLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBVzdELGVBQU8sTUFBTSxpQ0FBaUMsSUFBSSxDQUFDO0FBT25ELHdCQUFnQixtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEdBQUcsS0FBSyxNQUFNLEVBQUUsRUFBRSxDQU83RjtBQUVELHdCQUFzQixXQUFXLENBQy9CLE1BQU0sRUFBRSxlQUFlLEdBQUc7SUFBRSxrQkFBa0IsQ0FBQyxFQUFFLE9BQU8sQ0FBQTtDQUFFLEVBQzFELFlBQVksRUFBRSxZQUFZLEVBQzFCLGdCQUFnQixFQUFFLE1BQU0sRUFDeEIsUUFBUSxFQUFFLE1BQU0sRUFDaEIsWUFBWSxFQUFFLE1BQU0sRUFDcEIsT0FBTyxDQUFDLEVBQUUsV0FBVyxFQUNyQixhQUFhLENBQUMsRUFBRSxNQUFNLEVBQ3RCLFdBQVcsQ0FBQyxFQUFFLE1BQU0sRUFDcEIsV0FBVyxTQUFJLEVBQ2YsaUJBQWlCLFNBQUksR0FDcEIsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FtQzdCO0FBRUQsd0VBQXdFO0FBQ3hFLE1BQU0sTUFBTSxnQkFBZ0IsR0FBRyxlQUFlLEdBQUc7SUFDL0MsOENBQThDO0lBQzlDLGtCQUFrQixDQUFDLEVBQUUsT0FBTyxDQUFDO0lBQzdCLHdFQUF3RTtJQUN4RSxtQkFBbUIsQ0FBQyxFQUFFLEtBQUssTUFBTSxFQUFFLENBQUM7SUFDcEMsb0ZBQW9GO0lBQ3BGLHlDQUF5QyxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ25ELHVFQUF1RTtJQUN2RSwwQkFBMEIsQ0FBQyxFQUFFLE9BQU8sQ0FBQztDQUN0QyxDQUFDO0FBRUYsNkVBQTZFO0FBQzdFLHdCQUFzQixVQUFVLENBQzlCLE1BQU0sRUFBRSxnQkFBZ0IsRUFDeEIsWUFBWSxFQUFFLFlBQVksRUFDMUIsT0FBTyxFQUFFLE1BQU0sRUFDZixhQUFhLEVBQUUsTUFBTSxHQUFHLFNBQVMsRUFDakMsWUFBWSxFQUFFLE1BQU0sR0FBRyxNQUFNLEVBQUUsRUFDL0IsT0FBTyxDQUFDLEVBQUUsV0FBVyxFQUNyQixhQUFhLENBQUMsRUFBRSxNQUFNLEVBQ3RCLFdBQVcsQ0FBQyxFQUFFLE1BQU0sNkJBWXJCO0FBRUQsK0VBQStFO0FBQy9FLHdCQUFzQixzQkFBc0IsQ0FDMUMsVUFBVSxFQUFFLGVBQWUsRUFDM0IsWUFBWSxFQUFFLFlBQVksRUFDMUIsT0FBTyxFQUFFLE1BQU0sRUFDZixhQUFhLEVBQUUsTUFBTSxHQUFHLFNBQVMsRUFDakMsT0FBTyxDQUFDLEVBQUUsV0FBVyxFQUNyQixhQUFhLENBQUMsRUFBRSxNQUFNLEVBQ3RCLFdBQVcsQ0FBQyxFQUFFLE1BQU0sNkJBY3JCO0FBRUQsd0JBQXNCLGdCQUFnQixDQUNwQyxNQUFNLEVBQUUsZUFBZSxFQUN2QixPQUFPLEVBQUUsTUFBTSxFQUNmLGFBQWEsRUFBRSxNQUFNLEdBQUcsU0FBUyxFQUNqQyxZQUFZLEVBQUUsTUFBTSxFQUNwQixJQUFJLEVBQUU7SUFBRSxZQUFZLEVBQUUsWUFBWSxDQUFBO0NBQUUsRUFDcEMsT0FBTyxDQUFDLEVBQUUsV0FBVyxFQUNyQixhQUFhLENBQUMsRUFBRSxNQUFNLEVBQ3RCLFdBQVcsQ0FBQyxFQUFFLE1BQU0sR0FDbkIsT0FBTyxDQUFDO0lBQUUsVUFBVSxFQUFFLGdCQUFnQixDQUFBO0NBQUUsQ0FBQyxDQWdCM0M7QUFFRCx3QkFBc0IsZUFBZSxDQUNuQyxNQUFNLEVBQUUsZUFBZSxFQUN2QixnQkFBZ0IsQ0FBQyxFQUFFLE1BQU0sRUFDekIsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUNiLGFBQWEsQ0FBQyxFQUFFLE1BQU0sNEJBZ0J2QjtBQUVELHdCQUFzQixxQkFBcUIsQ0FDekMsTUFBTSxFQUFFLGdCQUFnQixFQUN4QixnQkFBZ0IsQ0FBQyxFQUFFLE1BQU0sRUFDekIsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUNiLFlBQVksR0FBRSxNQUFNLEdBQUcsTUFBTSxFQUFNLEVBQ25DLGFBQWEsQ0FBQyxFQUFFLE1BQU0sNEJBb0J2QiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup_p2p_test.d.ts","sourceRoot":"","sources":["../../src/fixtures/setup_p2p_test.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,KAAK,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAK3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"setup_p2p_test.d.ts","sourceRoot":"","sources":["../../src/fixtures/setup_p2p_test.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,KAAK,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAK3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAW7D,eAAO,MAAM,iCAAiC,IAAI,CAAC;AAOnD,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,KAAK,MAAM,EAAE,EAAE,CAO7F;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,eAAe,GAAG;IAAE,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAAE,EAC1D,YAAY,EAAE,YAAY,EAC1B,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,WAAW,EACrB,aAAa,CAAC,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,MAAM,EACpB,WAAW,SAAI,EACf,iBAAiB,SAAI,GACpB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAmC7B;AAED,wEAAwE;AACxE,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG;IAC/C,8CAA8C;IAC9C,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,wEAAwE;IACxE,mBAAmB,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IACpC,oFAAoF;IACpF,yCAAyC,CAAC,EAAE,MAAM,CAAC;IACnD,uEAAuE;IACvE,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC,CAAC;AAEF,6EAA6E;AAC7E,wBAAsB,UAAU,CAC9B,MAAM,EAAE,gBAAgB,EACxB,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,EAC/B,OAAO,CAAC,EAAE,WAAW,EACrB,aAAa,CAAC,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,MAAM,6BAYrB;AAED,+EAA+E;AAC/E,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,eAAe,EAC3B,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,OAAO,CAAC,EAAE,WAAW,EACrB,aAAa,CAAC,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,MAAM,6BAcrB;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE;IAAE,YAAY,EAAE,YAAY,CAAA;CAAE,EACpC,OAAO,CAAC,EAAE,WAAW,EACrB,aAAa,CAAC,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,UAAU,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAgB3C;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,eAAe,EACvB,gBAAgB,CAAC,EAAE,MAAM,EACzB,IAAI,CAAC,EAAE,MAAM,EACb,aAAa,CAAC,EAAE,MAAM,4BAgBvB;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,gBAAgB,EACxB,gBAAgB,CAAC,EAAE,MAAM,EACzB,IAAI,CAAC,EAAE,MAAM,EACb,YAAY,GAAE,MAAM,GAAG,MAAM,EAAM,EACnC,aAAa,CAAC,EAAE,MAAM,4BAoBvB"}
|
|
@@ -3,10 +3,9 @@
|
|
|
3
3
|
*/ import { AztecNodeService } from '@aztec/aztec-node';
|
|
4
4
|
import { range } from '@aztec/foundation/array';
|
|
5
5
|
import { SecretValue } from '@aztec/foundation/config';
|
|
6
|
-
import {
|
|
6
|
+
import { withLoggerBindings } from '@aztec/foundation/log/server';
|
|
7
7
|
import { bufferToHex } from '@aztec/foundation/string';
|
|
8
8
|
import getPort from 'get-port';
|
|
9
|
-
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
10
9
|
import { TEST_PEER_CHECK_INTERVAL_MS } from './fixtures.js';
|
|
11
10
|
import { createAndSyncProverNode, getPrivateKeyFromIndex } from './utils.js';
|
|
12
11
|
import { getEndToEndTestTelemetryClient } from './with_telemetry_utils.js';
|
|
@@ -14,6 +13,10 @@ import { getEndToEndTestTelemetryClient } from './with_telemetry_utils.js';
|
|
|
14
13
|
// index 1, and prover node with index 2, so all of our loops here need to start from 3
|
|
15
14
|
// to avoid running validators with the same key
|
|
16
15
|
export const ATTESTER_PRIVATE_KEYS_START_INDEX = 3;
|
|
16
|
+
// Global counters for actor naming (start at 1)
|
|
17
|
+
let validatorCounter = 1;
|
|
18
|
+
let nodeCounter = 1;
|
|
19
|
+
let proverCounter = 1;
|
|
17
20
|
export function generatePrivateKeys(startIndex, numberOfKeys) {
|
|
18
21
|
const privateKeys = [];
|
|
19
22
|
// Do not start from 0 as it is used during setup
|
|
@@ -22,11 +25,8 @@ export function generatePrivateKeys(startIndex, numberOfKeys) {
|
|
|
22
25
|
}
|
|
23
26
|
return privateKeys;
|
|
24
27
|
}
|
|
25
|
-
export async function createNodes(config, dateProvider, bootstrapNodeEnr, numNodes, bootNodePort,
|
|
28
|
+
export async function createNodes(config, dateProvider, bootstrapNodeEnr, numNodes, bootNodePort, genesis, dataDirectory, metricsPort, indexOffset = 0, validatorsPerNode = 1) {
|
|
26
29
|
const nodePromises = [];
|
|
27
|
-
const loggerIdStorage = new AsyncLocalStorage();
|
|
28
|
-
const logNameHandler = (module)=>loggerIdStorage.getStore() ? `${module}:${loggerIdStorage.getStore()}` : module;
|
|
29
|
-
addLogNameHandler(logNameHandler);
|
|
30
30
|
for(let i = 0; i < numNodes; i++){
|
|
31
31
|
const index = indexOffset + i;
|
|
32
32
|
// We run on ports from the bootnode upwards
|
|
@@ -35,7 +35,7 @@ export async function createNodes(config, dateProvider, bootstrapNodeEnr, numNod
|
|
|
35
35
|
const validatorIndices = validatorsPerNode === 1 ? index : range(validatorsPerNode, validatorsPerNode * index);
|
|
36
36
|
// Assign data directory
|
|
37
37
|
const dataDir = dataDirectory ? `${dataDirectory}-${index}` : undefined;
|
|
38
|
-
const nodePromise = createNode(config, dateProvider, port, bootstrapNodeEnr, validatorIndices,
|
|
38
|
+
const nodePromise = createNode(config, dateProvider, port, bootstrapNodeEnr, validatorIndices, genesis, dataDir, metricsPort);
|
|
39
39
|
nodePromises.push(nodePromise);
|
|
40
40
|
}
|
|
41
41
|
const nodes = await Promise.all(nodePromises);
|
|
@@ -44,57 +44,65 @@ export async function createNodes(config, dateProvider, bootstrapNodeEnr, numNod
|
|
|
44
44
|
if (!seqClient && config.disableValidator === false) {
|
|
45
45
|
throw new Error('Sequencer not found');
|
|
46
46
|
}
|
|
47
|
-
removeLogNameHandler(logNameHandler);
|
|
48
47
|
return nodes;
|
|
49
48
|
}
|
|
50
|
-
/** Creates a P2P enabled instance of Aztec Node Service with a validator */ export async function createNode(config, dateProvider, tcpPort, bootstrapNode, addressIndex,
|
|
51
|
-
const
|
|
49
|
+
/** Creates a P2P enabled instance of Aztec Node Service with a validator. */ export async function createNode(config, dateProvider, tcpPort, bootstrapNode, addressIndex, genesis, dataDirectory, metricsPort) {
|
|
50
|
+
const actorIndex = validatorCounter++;
|
|
51
|
+
return await withLoggerBindings({
|
|
52
|
+
actor: `validator-${actorIndex}`
|
|
53
|
+
}, async ()=>{
|
|
52
54
|
const validatorConfig = await createValidatorConfig(config, bootstrapNode, tcpPort, addressIndex, dataDirectory);
|
|
53
55
|
const telemetry = await getEndToEndTestTelemetryClient(metricsPort);
|
|
54
56
|
return await AztecNodeService.createAndSync(validatorConfig, {
|
|
55
57
|
telemetry,
|
|
56
58
|
dateProvider
|
|
57
59
|
}, {
|
|
58
|
-
|
|
60
|
+
genesis,
|
|
59
61
|
dontStartSequencer: config.dontStartSequencer
|
|
60
62
|
});
|
|
61
|
-
};
|
|
62
|
-
return loggerIdStorage ? await loggerIdStorage.run(tcpPort.toString(), createNode) : createNode();
|
|
63
|
+
});
|
|
63
64
|
}
|
|
64
|
-
/** Creates a P2P enabled instance of Aztec Node Service without a validator */ export async function createNonValidatorNode(baseConfig, dateProvider, tcpPort, bootstrapNode,
|
|
65
|
-
const
|
|
65
|
+
/** Creates a P2P enabled instance of Aztec Node Service without a validator */ export async function createNonValidatorNode(baseConfig, dateProvider, tcpPort, bootstrapNode, genesis, dataDirectory, metricsPort) {
|
|
66
|
+
const actorIndex = nodeCounter++;
|
|
67
|
+
return await withLoggerBindings({
|
|
68
|
+
actor: `node-${actorIndex}`
|
|
69
|
+
}, async ()=>{
|
|
66
70
|
const p2pConfig = await createP2PConfig(baseConfig, bootstrapNode, tcpPort, dataDirectory);
|
|
67
71
|
const config = {
|
|
68
72
|
...p2pConfig,
|
|
69
73
|
disableValidator: true,
|
|
70
74
|
validatorPrivateKeys: undefined,
|
|
71
|
-
|
|
75
|
+
sequencerPublisherPrivateKeys: []
|
|
72
76
|
};
|
|
73
77
|
const telemetry = await getEndToEndTestTelemetryClient(metricsPort);
|
|
74
78
|
return await AztecNodeService.createAndSync(config, {
|
|
75
79
|
telemetry,
|
|
76
80
|
dateProvider
|
|
77
81
|
}, {
|
|
78
|
-
|
|
82
|
+
genesis
|
|
79
83
|
});
|
|
80
|
-
};
|
|
81
|
-
return loggerIdStorage ? await loggerIdStorage.run(tcpPort.toString(), createNode) : createNode();
|
|
84
|
+
});
|
|
82
85
|
}
|
|
83
|
-
export async function createProverNode(config, tcpPort, bootstrapNode, addressIndex,
|
|
84
|
-
const
|
|
86
|
+
export async function createProverNode(config, tcpPort, bootstrapNode, addressIndex, deps, genesis, dataDirectory, metricsPort) {
|
|
87
|
+
const actorIndex = proverCounter++;
|
|
88
|
+
return await withLoggerBindings({
|
|
89
|
+
actor: `prover-${actorIndex}`
|
|
90
|
+
}, async ()=>{
|
|
85
91
|
const proverNodePrivateKey = getPrivateKeyFromIndex(ATTESTER_PRIVATE_KEYS_START_INDEX + addressIndex);
|
|
86
92
|
const telemetry = await getEndToEndTestTelemetryClient(metricsPort);
|
|
87
|
-
const
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
...
|
|
93
|
+
const p2pConfig = await createP2PConfig(config, bootstrapNode, tcpPort, dataDirectory);
|
|
94
|
+
return await createAndSyncProverNode(bufferToHex(proverNodePrivateKey), {
|
|
95
|
+
...config,
|
|
96
|
+
...p2pConfig
|
|
97
|
+
}, {
|
|
91
98
|
dataDirectory
|
|
92
|
-
},
|
|
93
|
-
...
|
|
99
|
+
}, {
|
|
100
|
+
...deps,
|
|
94
101
|
telemetry
|
|
102
|
+
}, {
|
|
103
|
+
genesis
|
|
95
104
|
});
|
|
96
|
-
};
|
|
97
|
-
return loggerIdStorage ? await loggerIdStorage.run(tcpPort.toString(), createProverNode) : createProverNode();
|
|
105
|
+
});
|
|
98
106
|
}
|
|
99
107
|
export async function createP2PConfig(config, bootstrapNodeEnr, port, dataDirectory) {
|
|
100
108
|
port = port ?? await getPort();
|
|
@@ -116,16 +124,19 @@ export async function createValidatorConfig(config, bootstrapNodeEnr, port, addr
|
|
|
116
124
|
const addressIndices = Array.isArray(addressIndex) ? addressIndex : [
|
|
117
125
|
addressIndex
|
|
118
126
|
];
|
|
119
|
-
if (addressIndices.length === 0) {
|
|
127
|
+
if (addressIndices.length === 0 && !config.validatorPrivateKey) {
|
|
120
128
|
throw new Error('At least one address index must be provided to create a validator config');
|
|
121
129
|
}
|
|
122
|
-
|
|
130
|
+
// Use override private key if provided, otherwise derive from address indices
|
|
131
|
+
const attesterPrivateKeys = config.validatorPrivateKey ? [
|
|
132
|
+
config.validatorPrivateKey
|
|
133
|
+
] : addressIndices.map((index)=>bufferToHex(getPrivateKeyFromIndex(ATTESTER_PRIVATE_KEYS_START_INDEX + index)));
|
|
123
134
|
const p2pConfig = await createP2PConfig(config, bootstrapNodeEnr, port, dataDirectory);
|
|
124
135
|
const nodeConfig = {
|
|
125
136
|
...config,
|
|
126
137
|
...p2pConfig,
|
|
127
138
|
validatorPrivateKeys: new SecretValue(attesterPrivateKeys),
|
|
128
|
-
|
|
139
|
+
sequencerPublisherPrivateKeys: [
|
|
129
140
|
new SecretValue(attesterPrivateKeys[0])
|
|
130
141
|
]
|
|
131
142
|
};
|
|
@@ -6,7 +6,7 @@ export declare function deployToken(wallet: Wallet, admin: AztecAddress, initial
|
|
|
6
6
|
contract: TokenContract;
|
|
7
7
|
instance: import("@aztec/aztec.js/contracts").ContractInstanceWithAddress;
|
|
8
8
|
}>;
|
|
9
|
-
export declare function mintTokensToPrivate(token: TokenContract, minter: AztecAddress, recipient: AztecAddress, amount: bigint): Promise<void>;
|
|
9
|
+
export declare function mintTokensToPrivate(token: TokenContract, minter: AztecAddress, recipient: AztecAddress, amount: bigint, additionalScopes?: AztecAddress[]): Promise<void>;
|
|
10
10
|
export declare function expectTokenBalance(wallet: Wallet, token: TokenContract, owner: AztecAddress, expectedBalance: bigint, logger: Logger): Promise<void>;
|
|
11
11
|
export declare function mintNotes(wallet: Wallet, minter: AztecAddress, recipient: AztecAddress, asset: TokenContract, noteAmounts: bigint[]): Promise<bigint>;
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5fdXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maXh0dXJlcy90b2tlbl91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU5RCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFL0Qsd0JBQXNCLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNOzs7R0Fhakg7QUFFRCx3QkFBc0IsbUJBQW1CLENBQ3ZDLEtBQUssRUFBRSxhQUFhLEVBQ3BCLE1BQU0sRUFBRSxZQUFZLEVBQ3BCLFNBQVMsRUFBRSxZQUFZLEVBQ3ZCLE1BQU0sRUFBRSxNQUFNLEVBQ2QsZ0JBQWdCLENBQUMsRUFBRSxZQUFZLEVBQUUsaUJBR2xDO0FBRUQsd0JBQXNCLGtCQUFrQixDQUN0QyxNQUFNLEVBQUUsTUFBTSxFQUNkLEtBQUssRUFBRSxhQUFhLEVBQ3BCLEtBQUssRUFBRSxZQUFZLEVBQ25CLGVBQWUsRUFBRSxNQUFNLEVBQ3ZCLE1BQU0sRUFBRSxNQUFNLGlCQU9mO0FBRUQsd0JBQXNCLFNBQVMsQ0FDN0IsTUFBTSxFQUFFLE1BQU0sRUFDZCxNQUFNLEVBQUUsWUFBWSxFQUNwQixTQUFTLEVBQUUsWUFBWSxFQUN2QixLQUFLLEVBQUUsYUFBYSxFQUNwQixXQUFXLEVBQUUsTUFBTSxFQUFFLEdBQ3BCLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FXakIifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token_utils.d.ts","sourceRoot":"","sources":["../../src/fixtures/token_utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;
|
|
1
|
+
{"version":3,"file":"token_utils.d.ts","sourceRoot":"","sources":["../../src/fixtures/token_utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;GAajH;AAED,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,YAAY,EACvB,MAAM,EAAE,MAAM,EACd,gBAAgB,CAAC,EAAE,YAAY,EAAE,iBAGlC;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,YAAY,EACnB,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,iBAOf;AAED,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,YAAY,EACvB,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,MAAM,EAAE,GACpB,OAAO,CAAC,MAAM,CAAC,CAWjB"}
|
|
@@ -3,10 +3,7 @@ import { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
|
3
3
|
export async function deployToken(wallet, admin, initialAdminBalance, logger) {
|
|
4
4
|
logger.info(`Deploying Token contract...`);
|
|
5
5
|
const { contract, instance } = await TokenContract.deploy(wallet, admin, 'TokenName', 'TokenSymbol', 18).send({
|
|
6
|
-
from: admin
|
|
7
|
-
wait: {
|
|
8
|
-
returnReceipt: true
|
|
9
|
-
}
|
|
6
|
+
from: admin
|
|
10
7
|
});
|
|
11
8
|
if (initialAdminBalance > 0n) {
|
|
12
9
|
await mintTokensToPrivate(contract, admin, admin, initialAdminBalance);
|
|
@@ -17,15 +14,16 @@ export async function deployToken(wallet, admin, initialAdminBalance, logger) {
|
|
|
17
14
|
instance
|
|
18
15
|
};
|
|
19
16
|
}
|
|
20
|
-
export async function mintTokensToPrivate(token, minter, recipient, amount) {
|
|
17
|
+
export async function mintTokensToPrivate(token, minter, recipient, amount, additionalScopes) {
|
|
21
18
|
await token.methods.mint_to_private(recipient, amount).send({
|
|
22
|
-
from: minter
|
|
19
|
+
from: minter,
|
|
20
|
+
additionalScopes
|
|
23
21
|
});
|
|
24
22
|
}
|
|
25
23
|
export async function expectTokenBalance(wallet, token, owner, expectedBalance, logger) {
|
|
26
24
|
// Then check the balance
|
|
27
25
|
const contractWithWallet = TokenContract.at(token.address, wallet);
|
|
28
|
-
const balance = await contractWithWallet.methods.balance_of_private(owner).simulate({
|
|
26
|
+
const { result: balance } = await contractWithWallet.methods.balance_of_private(owner).simulate({
|
|
29
27
|
from: owner
|
|
30
28
|
});
|
|
31
29
|
logger.info(`Account ${owner} balance: ${balance}`);
|
package/dest/fixtures/utils.d.ts
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
* Re-exports from the unified setup module for backward compatibility.
|
|
3
3
|
* Tests that previously used utils.ts should continue to work.
|
|
4
4
|
*/
|
|
5
|
-
export { type BalancesFn, type EndToEndContext, type SetupOptions, createAndSyncProverNode, deployAccounts, ensureAccountContractsPublished, expectMapping, expectMappingDelta, getBalancesFn, getLogger, getPrivateKeyFromIndex, getSponsoredFPCAddress, getSponsoredFPCInstance, publicDeployAccounts, registerSponsoredFPC, setup, setupPXEAndGetWallet, setupSharedBlobStorage, setupSponsoredFPC, startAnvil, teardown, waitForProvenChain, } from './setup.js';
|
|
5
|
+
export { type BalancesFn, type EndToEndContext, type SetupOptions, createAndSyncProverNode, deployAccounts, ensureAccountContractsPublished, ensureAuthRegistryPublished, ensurePublicChecksPublished, expectMapping, expectMappingDelta, getBalancesFn, getLogger, getPrivateKeyFromIndex, getSponsoredFPCAddress, getSponsoredFPCInstance, publicDeployAccounts, registerSponsoredFPC, setup, setupPXEAndGetWallet, setupSharedBlobStorage, setupSponsoredFPC, startAnvil, teardown, waitForProvenChain, } from './setup.js';
|
|
6
6
|
export { deployAndInitializeTokenAndBridgeContracts } from '../shared/cross_chain_test_harness.js';
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maXh0dXJlcy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxPQUFPLEVBQ0wsS0FBSyxVQUFVLEVBQ2YsS0FBSyxlQUFlLEVBQ3BCLEtBQUssWUFBWSxFQUNqQix1QkFBdUIsRUFDdkIsY0FBYyxFQUNkLCtCQUErQixFQUMvQiwyQkFBMkIsRUFDM0IsMkJBQTJCLEVBQzNCLGFBQWEsRUFDYixrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLFNBQVMsRUFDVCxzQkFBc0IsRUFDdEIsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2QixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLEtBQUssRUFDTCxvQkFBb0IsRUFDcEIsc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQixVQUFVLEVBQ1YsUUFBUSxFQUNSLGtCQUFrQixHQUNuQixNQUFNLFlBQVksQ0FBQztBQUVwQixPQUFPLEVBQUUsMENBQTBDLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/fixtures/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,uBAAuB,EACvB,cAAc,EACd,+BAA+B,EAC/B,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,SAAS,EACT,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,KAAK,EACL,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,EACjB,UAAU,EACV,QAAQ,EACR,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,0CAA0C,EAAE,MAAM,uCAAuC,CAAC"}
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/fixtures/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,uBAAuB,EACvB,cAAc,EACd,+BAA+B,EAC/B,2BAA2B,EAC3B,2BAA2B,EAC3B,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,SAAS,EACT,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,KAAK,EACL,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,EACjB,UAAU,EACV,QAAQ,EACR,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,0CAA0C,EAAE,MAAM,uCAAuC,CAAC"}
|
package/dest/fixtures/utils.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Re-exports from the unified setup module for backward compatibility.
|
|
3
3
|
* Tests that previously used utils.ts should continue to work.
|
|
4
|
-
*/ export { createAndSyncProverNode, deployAccounts, ensureAccountContractsPublished, expectMapping, expectMappingDelta, getBalancesFn, getLogger, getPrivateKeyFromIndex, getSponsoredFPCAddress, getSponsoredFPCInstance, publicDeployAccounts, registerSponsoredFPC, setup, setupPXEAndGetWallet, setupSharedBlobStorage, setupSponsoredFPC, startAnvil, teardown, waitForProvenChain } from './setup.js';
|
|
4
|
+
*/ export { createAndSyncProverNode, deployAccounts, ensureAccountContractsPublished, ensureAuthRegistryPublished, ensurePublicChecksPublished, expectMapping, expectMappingDelta, getBalancesFn, getLogger, getPrivateKeyFromIndex, getSponsoredFPCAddress, getSponsoredFPCInstance, publicDeployAccounts, registerSponsoredFPC, setup, setupPXEAndGetWallet, setupSharedBlobStorage, setupSponsoredFPC, startAnvil, teardown, waitForProvenChain } from './setup.js';
|
|
5
5
|
export { deployAndInitializeTokenAndBridgeContracts } from '../shared/cross_chain_test_harness.js';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Wallet } from '@aztec/aztec.js/wallet';
|
|
2
|
+
/**
|
|
3
|
+
* Creates a JSON-RPC client that connects to a remote wallet service.
|
|
4
|
+
* The returned object implements the {@link Wallet} interface, proxying all calls over HTTP to the specified URL.
|
|
5
|
+
*/
|
|
6
|
+
export declare function createWalletClient(url: string): Wallet;
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0X3JwY19jbGllbnQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mb3J3YXJkLWNvbXBhdGliaWxpdHkvd2FsbGV0X3JwY19jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFJckQ7OztHQUdHO0FBQ0gsd0JBQWdCLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQUt0RCJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet_rpc_client.d.ts","sourceRoot":"","sources":["../../src/forward-compatibility/wallet_rpc_client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAIrD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKtD"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { WalletSchema } from '@aztec/aztec.js/wallet';
|
|
2
|
+
import { createSafeJsonRpcClient, makeFetch } from '@aztec/foundation/json-rpc/client';
|
|
3
|
+
/**
|
|
4
|
+
* Creates a JSON-RPC client that connects to a remote wallet service.
|
|
5
|
+
* The returned object implements the {@link Wallet} interface, proxying all calls over HTTP to the specified URL.
|
|
6
|
+
*/ export function createWalletClient(url) {
|
|
7
|
+
return createSafeJsonRpcClient(url, WalletSchema, {
|
|
8
|
+
namespaceMethods: 'wallet',
|
|
9
|
+
fetch: makeFetch([
|
|
10
|
+
1,
|
|
11
|
+
2,
|
|
12
|
+
3
|
|
13
|
+
], false)
|
|
14
|
+
});
|
|
15
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
#!/usr/bin/env -S node --no-warnings
|
|
2
|
+
export {};
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0X3NlcnZpY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mb3J3YXJkLWNvbXBhdGliaWxpdHkvd2FsbGV0X3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet_service.d.ts","sourceRoot":"","sources":["../../src/forward-compatibility/wallet_service.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
#!/usr/bin/env -S node --no-warnings
|
|
2
|
+
/**
|
|
3
|
+
* Standalone entrypoint that spins up a local Aztec network (L1 + node) and exposes a {@link NodeEmbeddedWallet} over
|
|
4
|
+
* JSON-RPC.
|
|
5
|
+
*
|
|
6
|
+
* Intended for forward-compatibility testing: an **old** release image runs this script so that **new** tests can send
|
|
7
|
+
* new artifacts to old runtime code (loadContractArtifact, ACIR simulator, class-ID computation, entrypoint encoding,
|
|
8
|
+
* etc.).
|
|
9
|
+
*/ import { getSchnorrAccountContractAddress } from '@aztec/accounts/schnorr';
|
|
10
|
+
import { getInitialTestAccountsData } from '@aztec/accounts/testing';
|
|
11
|
+
import { createLocalNetwork } from '@aztec/aztec';
|
|
12
|
+
import { Fr } from '@aztec/aztec.js/fields';
|
|
13
|
+
import { WalletSchema } from '@aztec/aztec.js/wallet';
|
|
14
|
+
import { GrumpkinScalar } from '@aztec/foundation/curves/grumpkin';
|
|
15
|
+
import { createNamespacedSafeJsonRpcServer, startHttpRpcServer } from '@aztec/foundation/json-rpc/server';
|
|
16
|
+
import { createLogger } from '@aztec/foundation/log';
|
|
17
|
+
import { AztecNodeApiSchema } from '@aztec/stdlib/interfaces/client';
|
|
18
|
+
import { EmbeddedWallet } from '@aztec/wallets/embedded';
|
|
19
|
+
const logger = createLogger('wallet-service');
|
|
20
|
+
const { ETHEREUM_HOSTS = 'http://localhost:8545', NODE_PORT = '8080', WALLET_PORT = '8081' } = process.env;
|
|
21
|
+
async function main() {
|
|
22
|
+
const l1RpcUrls = ETHEREUM_HOSTS.split(',').map((url)=>url.trim());
|
|
23
|
+
// Some tests (e.g. AMM) need 4 accounts but only 3 are funded via genesis. Generate deterministic keys for a 4th
|
|
24
|
+
// account so we can compute its address before network startup and include it in genesis funding. We cannot do this
|
|
25
|
+
// in the test because Wallet interface does not expose account creation functionality (only TestWallet exposes that
|
|
26
|
+
// but that's not used in forward compatibility testing).
|
|
27
|
+
const extraAccountSecret = Fr.fromHexString('0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef');
|
|
28
|
+
const extraAccountSalt = Fr.ZERO;
|
|
29
|
+
const extraAccountSigningKey = GrumpkinScalar.random();
|
|
30
|
+
const extraAccountAddress = await getSchnorrAccountContractAddress(extraAccountSecret, extraAccountSalt, extraAccountSigningKey);
|
|
31
|
+
logger.info('Starting wallet service...', {
|
|
32
|
+
l1RpcUrls
|
|
33
|
+
});
|
|
34
|
+
// createLocalNetwork deploys L1 contracts, starts the node, and optionally deploys funded test accounts (when
|
|
35
|
+
// TEST_ACCOUNTS=true via env). We are not proving anything just like is done when local network is started by
|
|
36
|
+
// the `aztecStart` function. The extra account address is passed via prefundAddresses so it gets fee juice at genesis.
|
|
37
|
+
const { node, stop: stopNetwork } = await createLocalNetwork({
|
|
38
|
+
l1RpcUrls,
|
|
39
|
+
realProofs: false,
|
|
40
|
+
prefundAddresses: [
|
|
41
|
+
extraAccountAddress.toString()
|
|
42
|
+
]
|
|
43
|
+
}, logger.info);
|
|
44
|
+
// Create an ephemeral embedded wallet backed by the local node.
|
|
45
|
+
const wallet = await EmbeddedWallet.create(node, {
|
|
46
|
+
ephemeral: true
|
|
47
|
+
});
|
|
48
|
+
// Re-register the initial test accounts so they are available via wallet.getAccounts(). createLocalNetwork deploys
|
|
49
|
+
// them onchain but uses a temporary wallet that is then stopped.
|
|
50
|
+
//
|
|
51
|
+
// We use the non-lazy import path (@aztec/accounts/testing, not /lazy) to avoid the dynamic JSON import that is
|
|
52
|
+
// incompatible with Node.js import attribute enforcement.
|
|
53
|
+
const testAccountsData = await getInitialTestAccountsData();
|
|
54
|
+
const accounts = await Promise.all(testAccountsData.map(({ secret, salt, signingKey })=>wallet.createSchnorrAccount(secret, salt, signingKey)));
|
|
55
|
+
// Register and deploy the 4th account.
|
|
56
|
+
const extraAccount = await wallet.createSchnorrAccount(extraAccountSecret, extraAccountSalt, extraAccountSigningKey);
|
|
57
|
+
const deployMethod = await extraAccount.getDeployMethod();
|
|
58
|
+
await deployMethod.send({
|
|
59
|
+
from: accounts[0].address
|
|
60
|
+
});
|
|
61
|
+
logger.info('Embedded wallet created', {
|
|
62
|
+
accounts: [
|
|
63
|
+
...accounts,
|
|
64
|
+
extraAccount
|
|
65
|
+
].map((a)=>a.address.toString())
|
|
66
|
+
});
|
|
67
|
+
// Contract artifacts are large, so allow generous body sizes for RPC requests.
|
|
68
|
+
const rpcOptions = {
|
|
69
|
+
maxBodySizeBytes: '50mb'
|
|
70
|
+
};
|
|
71
|
+
// Serve node RPC
|
|
72
|
+
const nodeRpcServer = createNamespacedSafeJsonRpcServer({
|
|
73
|
+
node: [
|
|
74
|
+
node,
|
|
75
|
+
AztecNodeApiSchema
|
|
76
|
+
]
|
|
77
|
+
}, rpcOptions);
|
|
78
|
+
const nodeHttpServer = await startHttpRpcServer(nodeRpcServer, {
|
|
79
|
+
port: NODE_PORT
|
|
80
|
+
});
|
|
81
|
+
logger.info(`Node JSON-RPC server listening on port ${nodeHttpServer.port}`);
|
|
82
|
+
// Serve wallet RPC
|
|
83
|
+
const walletRpcServer = createNamespacedSafeJsonRpcServer({
|
|
84
|
+
wallet: [
|
|
85
|
+
wallet,
|
|
86
|
+
WalletSchema
|
|
87
|
+
]
|
|
88
|
+
}, rpcOptions);
|
|
89
|
+
const walletHttpServer = await startHttpRpcServer(walletRpcServer, {
|
|
90
|
+
port: WALLET_PORT
|
|
91
|
+
});
|
|
92
|
+
logger.info(`Wallet JSON-RPC server listening on port ${walletHttpServer.port}`);
|
|
93
|
+
const shutdown = async ()=>{
|
|
94
|
+
logger.info('Shutting down...');
|
|
95
|
+
nodeHttpServer.close();
|
|
96
|
+
walletHttpServer.close();
|
|
97
|
+
await wallet.stop();
|
|
98
|
+
await stopNetwork();
|
|
99
|
+
process.exit(0);
|
|
100
|
+
};
|
|
101
|
+
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
102
|
+
process.once('SIGINT', shutdown);
|
|
103
|
+
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
104
|
+
process.once('SIGTERM', shutdown);
|
|
105
|
+
}
|
|
106
|
+
main().catch((err)=>{
|
|
107
|
+
logger.error('Wallet service failed to start', err);
|
|
108
|
+
process.exit(1);
|
|
109
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
declare function cacheRoot(version: any): string;
|
|
3
|
+
declare function installLegacyContracts(version: any): void;
|
|
4
|
+
declare const _default: {
|
|
5
|
+
installLegacyContracts: typeof installLegacyContracts;
|
|
6
|
+
REDIRECTED: string[];
|
|
7
|
+
cacheRoot: typeof cacheRoot;
|
|
8
|
+
};
|
|
9
|
+
export = _default;
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFsbF9sZWdhY3lfY29udHJhY3RzLmQuY3RzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2luc3RhbGxfbGVnYWN5X2NvbnRyYWN0cy5janMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQW9CQSxpQkFBUyxTQUFTLENBQUMsT0FBTyxLQUFBLFVBRXpCO0FBTUQsaUJBQVMsc0JBQXNCLENBQUMsT0FBTyxLQUFBLFFBd0N0Qzs7Ozs7O0FBRUQsa0JBQWtFIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install_legacy_contracts.d.cts","sourceRoot":"","sources":["../src/install_legacy_contracts.cjs"],"names":[],"mappings":";AAoBA,iBAAS,SAAS,CAAC,OAAO,KAAA,UAEzB;AAMD,iBAAS,sBAAsB,CAAC,OAAO,KAAA,QAwCtC;;;;;;AAED,kBAAkE"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
declare const _default: (request: any, options: any) => any;
|
|
2
|
+
export = _default;
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVnYWN5LWplc3QtcmVzb2x2ZXIuZC5jdHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbGVnYWN5LWplc3QtcmVzb2x2ZXIuY2pzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFrRkEsa0JBNkJDIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacy-jest-resolver.d.cts","sourceRoot":"","sources":["../src/legacy-jest-resolver.cjs"],"names":[],"mappings":";AAkFA,kBA6BC"}
|
|
@@ -8,6 +8,7 @@ import type { AztecNode } from '@aztec/aztec.js/node';
|
|
|
8
8
|
import type { SiblingPath } from '@aztec/aztec.js/trees';
|
|
9
9
|
import type { TxReceipt } from '@aztec/aztec.js/tx';
|
|
10
10
|
import type { Wallet } from '@aztec/aztec.js/wallet';
|
|
11
|
+
import { OutboxContract } from '@aztec/ethereum/contracts';
|
|
11
12
|
import type { L1ContractAddresses } from '@aztec/ethereum/l1-contract-addresses';
|
|
12
13
|
import type { ExtendedViemWalletClient } from '@aztec/ethereum/types';
|
|
13
14
|
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
@@ -86,6 +87,7 @@ export declare class CrossChainTestHarness {
|
|
|
86
87
|
static new(aztecNode: AztecNode, l1Client: ExtendedViemWalletClient, wallet: Wallet, ownerAddress: AztecAddress, logger: Logger, underlyingERC20Address: EthAddress): Promise<CrossChainTestHarness>;
|
|
87
88
|
private readonly l1TokenManager;
|
|
88
89
|
private readonly l1TokenPortalManager;
|
|
90
|
+
readonly outboxContract: OutboxContract;
|
|
89
91
|
constructor(
|
|
90
92
|
/** Aztec node instance. */
|
|
91
93
|
aztecNode: AztecNode,
|
|
@@ -125,7 +127,7 @@ export declare class CrossChainTestHarness {
|
|
|
125
127
|
getL2PublicBalanceOf(owner: AztecAddress): Promise<any>;
|
|
126
128
|
expectPublicBalanceOnL2(owner: AztecAddress, expectedBalance: bigint): Promise<void>;
|
|
127
129
|
getL2ToL1MessageLeaf(withdrawAmount: bigint, callerOnL1?: EthAddress): Promise<Fr>;
|
|
128
|
-
withdrawFundsFromBridgeOnL1(amount: bigint, epochNumber: EpochNumber, messageIndex: bigint, siblingPath: SiblingPath<number>): Promise<void>;
|
|
130
|
+
withdrawFundsFromBridgeOnL1(amount: bigint, epochNumber: EpochNumber, numCheckpointsInEpoch: number, messageIndex: bigint, siblingPath: SiblingPath<number>): Promise<void>;
|
|
129
131
|
transferToPrivateOnL2(shieldAmount: bigint): Promise<void>;
|
|
130
132
|
transferToPublicOnL2(amount: bigint, authwitNonce?: Fr): Promise<void>;
|
|
131
133
|
/**
|
|
@@ -138,4 +140,4 @@ export declare class CrossChainTestHarness {
|
|
|
138
140
|
makeMessageConsumable(msgHash: Fr | Hex): Promise<void>;
|
|
139
141
|
toCrossChainContext(): CrossChainContext;
|
|
140
142
|
}
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvc3NfY2hhaW5fdGVzdF9oYXJuZXNzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2hhcmVkL2Nyb3NzX2NoYWluX3Rlc3RfaGFybmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVELE9BQU8sRUFHTCxLQUFLLGFBQWEsRUFDbEIsS0FBSywwQkFBMEIsRUFDaEMsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUMsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTNELE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDakYsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFz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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cross_chain_test_harness.d.ts","sourceRoot":"","sources":["../../src/shared/cross_chain_test_harness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,0BAA0B,EAChC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"cross_chain_test_harness.d.ts","sourceRoot":"","sources":["../../src/shared/cross_chain_test_harness.ts"],"names":[],"mappings":"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"}
|