@aztec/end-to-end 3.0.0-canary.a9708bd → 3.0.0-devnet.20251212
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/bench/client_flows/benchmark.d.ts +4 -3
- package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/benchmark.js +2 -2
- package/dest/bench/client_flows/client_flows_benchmark.d.ts +25 -14
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/client_flows_benchmark.js +111 -90
- package/dest/bench/client_flows/config.d.ts +1 -1
- package/dest/bench/client_flows/data_extractor.d.ts +1 -1
- package/dest/bench/client_flows/data_extractor.js +8 -30
- package/dest/bench/utils.d.ts +4 -13
- package/dest/bench/utils.d.ts.map +1 -1
- package/dest/bench/utils.js +10 -34
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +8 -8
- 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 +42 -42
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +12 -9
- 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 +35 -35
- package/dest/e2e_deploy_contract/deploy_test.d.ts +12 -6
- package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
- package/dest/e2e_deploy_contract/deploy_test.js +9 -18
- package/dest/e2e_epochs/epochs_test.d.ts +19 -12
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +30 -22
- package/dest/e2e_fees/bridging_race.notest.d.ts +1 -1
- package/dest/e2e_fees/bridging_race.notest.js +14 -11
- package/dest/e2e_fees/fees_test.d.ts +10 -8
- package/dest/e2e_fees/fees_test.d.ts.map +1 -1
- package/dest/e2e_fees/fees_test.js +35 -38
- package/dest/e2e_l1_publisher/write_json.d.ts +4 -2
- package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -1
- package/dest/e2e_l1_publisher/write_json.js +9 -8
- package/dest/e2e_multi_validator/utils.d.ts +2 -2
- package/dest/e2e_multi_validator/utils.d.ts.map +1 -1
- package/dest/e2e_multi_validator/utils.js +4 -10
- package/dest/e2e_nested_contract/nested_contract_test.d.ts +7 -4
- package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
- package/dest/e2e_nested_contract/nested_contract_test.js +11 -12
- package/dest/e2e_p2p/inactivity_slash_test.d.ts +31 -0
- package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -0
- package/dest/e2e_p2p/inactivity_slash_test.js +139 -0
- package/dest/e2e_p2p/p2p_network.d.ts +238 -17
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +46 -19
- package/dest/e2e_p2p/shared.d.ts +16 -17
- package/dest/e2e_p2p/shared.d.ts.map +1 -1
- package/dest/e2e_p2p/shared.js +56 -55
- package/dest/e2e_token_contract/token_contract_test.d.ts +6 -5
- package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
- package/dest/e2e_token_contract/token_contract_test.js +14 -17
- package/dest/fixtures/e2e_prover_test.d.ts +12 -8
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +53 -58
- package/dest/fixtures/fixtures.d.ts +1 -1
- package/dest/fixtures/fixtures.d.ts.map +1 -1
- package/dest/fixtures/fixtures.js +1 -1
- package/dest/fixtures/get_acvm_config.d.ts +2 -2
- package/dest/fixtures/get_acvm_config.d.ts.map +1 -1
- package/dest/fixtures/get_acvm_config.js +1 -1
- package/dest/fixtures/get_bb_config.d.ts +2 -2
- package/dest/fixtures/get_bb_config.d.ts.map +1 -1
- package/dest/fixtures/get_bb_config.js +2 -2
- package/dest/fixtures/index.d.ts +1 -1
- package/dest/fixtures/l1_to_l2_messaging.d.ts +4 -3
- package/dest/fixtures/l1_to_l2_messaging.d.ts.map +1 -1
- package/dest/fixtures/l1_to_l2_messaging.js +2 -2
- package/dest/fixtures/logging.d.ts +1 -1
- package/dest/fixtures/setup_l1_contracts.d.ts +476 -5
- package/dest/fixtures/setup_l1_contracts.d.ts.map +1 -1
- package/dest/fixtures/setup_l1_contracts.js +3 -3
- package/dest/fixtures/setup_p2p_test.d.ts +12 -11
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +50 -24
- package/dest/fixtures/snapshot_manager.d.ts +13 -10
- package/dest/fixtures/snapshot_manager.d.ts.map +1 -1
- package/dest/fixtures/snapshot_manager.js +66 -51
- package/dest/fixtures/token_utils.d.ts +10 -5
- package/dest/fixtures/token_utils.d.ts.map +1 -1
- package/dest/fixtures/token_utils.js +17 -18
- package/dest/fixtures/utils.d.ts +479 -35
- package/dest/fixtures/utils.d.ts.map +1 -1
- package/dest/fixtures/utils.js +106 -125
- package/dest/fixtures/web3signer.d.ts +5 -0
- package/dest/fixtures/web3signer.d.ts.map +1 -0
- package/dest/fixtures/web3signer.js +53 -0
- package/dest/fixtures/with_telemetry_utils.d.ts +2 -2
- package/dest/fixtures/with_telemetry_utils.d.ts.map +1 -1
- package/dest/fixtures/with_telemetry_utils.js +2 -2
- package/dest/index.d.ts +1 -1
- package/dest/quality_of_service/alert_checker.d.ts +2 -2
- package/dest/quality_of_service/alert_checker.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.d.ts +20 -23
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.js +14 -16
- package/dest/shared/gas_portal_test_harness.d.ts +10 -17
- package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
- package/dest/shared/gas_portal_test_harness.js +11 -8
- package/dest/shared/index.d.ts +1 -1
- package/dest/shared/jest_setup.d.ts +1 -1
- package/dest/shared/jest_setup.js +1 -1
- package/dest/shared/submit-transactions.d.ts +6 -4
- package/dest/shared/submit-transactions.d.ts.map +1 -1
- package/dest/shared/submit-transactions.js +8 -7
- package/dest/shared/uniswap_l1_l2.d.ts +12 -8
- package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
- package/dest/shared/uniswap_l1_l2.js +44 -58
- package/dest/simulators/index.d.ts +1 -1
- package/dest/simulators/lending_simulator.d.ts +4 -7
- package/dest/simulators/lending_simulator.d.ts.map +1 -1
- package/dest/simulators/lending_simulator.js +8 -5
- package/dest/simulators/token_simulator.d.ts +4 -2
- package/dest/simulators/token_simulator.d.ts.map +1 -1
- package/dest/simulators/token_simulator.js +2 -2
- package/dest/spartan/setup_test_wallets.d.ts +22 -14
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +144 -86
- package/dest/spartan/tx_metrics.d.ts +39 -0
- package/dest/spartan/tx_metrics.d.ts.map +1 -0
- package/dest/spartan/tx_metrics.js +95 -0
- package/dest/spartan/utils.d.ts +92 -17
- package/dest/spartan/utils.d.ts.map +1 -1
- package/dest/spartan/utils.js +386 -63
- package/package.json +43 -40
- package/src/bench/client_flows/benchmark.ts +8 -8
- package/src/bench/client_flows/client_flows_benchmark.ts +141 -114
- package/src/bench/client_flows/data_extractor.ts +9 -31
- package/src/bench/utils.ts +9 -37
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +46 -63
- package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +38 -51
- package/src/e2e_deploy_contract/deploy_test.ts +18 -36
- package/src/e2e_epochs/epochs_test.ts +41 -35
- package/src/e2e_fees/bridging_race.notest.ts +16 -11
- package/src/e2e_fees/fees_test.ts +42 -47
- package/src/e2e_l1_publisher/write_json.ts +12 -9
- package/src/e2e_multi_validator/utils.ts +5 -11
- package/src/e2e_nested_contract/nested_contract_test.ts +15 -13
- package/src/e2e_p2p/inactivity_slash_test.ts +184 -0
- package/src/e2e_p2p/p2p_network.ts +124 -82
- package/src/e2e_p2p/shared.ts +66 -58
- package/src/e2e_token_contract/token_contract_test.ts +17 -17
- package/src/fixtures/e2e_prover_test.ts +60 -97
- package/src/fixtures/fixtures.ts +1 -2
- package/src/fixtures/get_acvm_config.ts +2 -2
- package/src/fixtures/get_bb_config.ts +3 -2
- package/src/fixtures/l1_to_l2_messaging.ts +4 -2
- package/src/fixtures/setup_l1_contracts.ts +5 -4
- package/src/fixtures/setup_p2p_test.ts +79 -32
- package/src/fixtures/snapshot_manager.ts +87 -82
- package/src/fixtures/token_utils.ts +16 -24
- package/src/fixtures/utils.ts +142 -172
- package/src/fixtures/web3signer.ts +63 -0
- package/src/fixtures/with_telemetry_utils.ts +2 -2
- package/src/guides/up_quick_start.sh +3 -11
- package/src/quality_of_service/alert_checker.ts +1 -1
- package/src/shared/cross_chain_test_harness.ts +23 -31
- package/src/shared/gas_portal_test_harness.ts +14 -21
- package/src/shared/jest_setup.ts +1 -1
- package/src/shared/submit-transactions.ts +12 -8
- package/src/shared/uniswap_l1_l2.ts +77 -86
- package/src/simulators/lending_simulator.ts +9 -6
- package/src/simulators/token_simulator.ts +5 -2
- package/src/spartan/DEVELOP.md +15 -3
- package/src/spartan/setup_test_wallets.ts +171 -127
- package/src/spartan/tx_metrics.ts +130 -0
- package/src/spartan/utils.ts +463 -64
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Fr
|
|
1
|
+
import { getContractInstanceFromInstantiationParams } from '@aztec/aztec.js/contracts';
|
|
2
|
+
import { Fr } from '@aztec/aztec.js/fields';
|
|
3
|
+
import { createLogger } from '@aztec/aztec.js/log';
|
|
3
4
|
import { createSnapshotManager, deployAccounts } from '../fixtures/snapshot_manager.js';
|
|
4
5
|
const { E2E_DATA_PATH: dataPath } = process.env;
|
|
5
6
|
export class DeployTest {
|
|
6
7
|
snapshotManager;
|
|
7
8
|
logger;
|
|
8
|
-
pxe;
|
|
9
9
|
wallet;
|
|
10
10
|
defaultAccountAddress;
|
|
11
11
|
aztecNode;
|
|
@@ -17,7 +17,7 @@ export class DeployTest {
|
|
|
17
17
|
async setup() {
|
|
18
18
|
await this.applyInitialAccountSnapshot();
|
|
19
19
|
const context = await this.snapshotManager.setup();
|
|
20
|
-
({
|
|
20
|
+
({ aztecNode: this.aztecNode, wallet: this.wallet } = context);
|
|
21
21
|
this.aztecNodeAdmin = context.aztecNode;
|
|
22
22
|
return this;
|
|
23
23
|
}
|
|
@@ -25,11 +25,9 @@ export class DeployTest {
|
|
|
25
25
|
await this.snapshotManager.teardown();
|
|
26
26
|
}
|
|
27
27
|
async applyInitialAccountSnapshot() {
|
|
28
|
-
await this.snapshotManager.snapshot('initial_account', deployAccounts(1, this.logger),
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
this.wallet = wallets[0];
|
|
32
|
-
this.defaultAccountAddress = this.wallet.getAddress();
|
|
28
|
+
await this.snapshotManager.snapshot('initial_account', deployAccounts(1, this.logger), ({ deployedAccounts })=>{
|
|
29
|
+
this.defaultAccountAddress = deployedAccounts[0].address;
|
|
30
|
+
return Promise.resolve();
|
|
33
31
|
});
|
|
34
32
|
}
|
|
35
33
|
async registerContract(wallet, contractArtifact, opts = {}) {
|
|
@@ -37,18 +35,11 @@ export class DeployTest {
|
|
|
37
35
|
const instance = await getContractInstanceFromInstantiationParams(contractArtifact.artifact, {
|
|
38
36
|
constructorArgs: initArgs ?? [],
|
|
39
37
|
constructorArtifact: constructorName,
|
|
40
|
-
salt,
|
|
38
|
+
salt: salt ?? Fr.random(),
|
|
41
39
|
publicKeys,
|
|
42
40
|
deployer
|
|
43
41
|
});
|
|
44
|
-
await wallet.registerContract(
|
|
45
|
-
artifact: contractArtifact.artifact,
|
|
46
|
-
instance
|
|
47
|
-
});
|
|
42
|
+
await wallet.registerContract(instance, contractArtifact.artifact);
|
|
48
43
|
return contractArtifact.at(instance.address, wallet);
|
|
49
44
|
}
|
|
50
|
-
async registerRandomAccount() {
|
|
51
|
-
const completeAddress = await this.pxe.registerAccount(Fr.random(), Fr.random());
|
|
52
|
-
return completeAddress.address;
|
|
53
|
-
}
|
|
54
45
|
}
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import { type AztecNodeConfig, AztecNodeService } from '@aztec/aztec-node';
|
|
2
|
-
import { Fr
|
|
3
|
-
import {
|
|
2
|
+
import { Fr } from '@aztec/aztec.js/fields';
|
|
3
|
+
import type { Logger } from '@aztec/aztec.js/log';
|
|
4
|
+
import type { Wallet } from '@aztec/aztec.js/wallet';
|
|
5
|
+
import { EpochCache } from '@aztec/epoch-cache';
|
|
4
6
|
import { RollupContract } from '@aztec/ethereum/contracts';
|
|
5
7
|
import { ChainMonitor, type Delayer } from '@aztec/ethereum/test';
|
|
8
|
+
import type { ExtendedViemWalletClient } from '@aztec/ethereum/types';
|
|
9
|
+
import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
6
10
|
import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
|
|
7
|
-
import { ProverNode } from '@aztec/prover-node';
|
|
11
|
+
import { ProverNode, type ProverNodeConfig } from '@aztec/prover-node';
|
|
8
12
|
import { type SequencerClient, type SequencerEvents } from '@aztec/sequencer-client';
|
|
9
|
-
import {
|
|
13
|
+
import { type BlockParameter, EthAddress } from '@aztec/stdlib/block';
|
|
10
14
|
import { type L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
|
|
11
15
|
import { type EndToEndContext, type SetupOptions } from '../fixtures/utils.js';
|
|
12
16
|
export declare const WORLD_STATE_BLOCK_HISTORY = 2;
|
|
@@ -35,6 +39,7 @@ export declare class EpochsTestContext {
|
|
|
35
39
|
constants: L1RollupConstants;
|
|
36
40
|
logger: Logger;
|
|
37
41
|
monitor: ChainMonitor;
|
|
42
|
+
epochCache: EpochCache;
|
|
38
43
|
proverDelayer: Delayer;
|
|
39
44
|
sequencerDelayer: Delayer;
|
|
40
45
|
proverNodes: ProverNode[];
|
|
@@ -51,7 +56,9 @@ export declare class EpochsTestContext {
|
|
|
51
56
|
};
|
|
52
57
|
setup(opts?: EpochsTestOpts): Promise<void>;
|
|
53
58
|
teardown(): Promise<void>;
|
|
54
|
-
createProverNode(
|
|
59
|
+
createProverNode(opts?: {
|
|
60
|
+
dontStart?: boolean;
|
|
61
|
+
} & Partial<ProverNodeConfig>): Promise<ProverNode>;
|
|
55
62
|
createNonValidatorNode(opts?: Partial<AztecNodeConfig>): Promise<AztecNodeService>;
|
|
56
63
|
createValidatorNode(privateKeys: `0x${string}`[], opts?: Partial<AztecNodeConfig> & {
|
|
57
64
|
txDelayerMaxInclusionTimeIntoSlot?: number;
|
|
@@ -61,14 +68,14 @@ export declare class EpochsTestContext {
|
|
|
61
68
|
private getNextPrivateKey;
|
|
62
69
|
/** Waits until the epoch begins (ie until the immediately previous L1 block is mined). */
|
|
63
70
|
waitUntilEpochStarts(epoch: number): Promise<bigint>;
|
|
64
|
-
/** Waits until the given
|
|
65
|
-
|
|
66
|
-
/** Waits until the given
|
|
67
|
-
|
|
71
|
+
/** Waits until the given checkpoint number is mined. */
|
|
72
|
+
waitUntilCheckpointNumber(target: CheckpointNumber, timeout?: number): Promise<void>;
|
|
73
|
+
/** Waits until the given checkpoint number is marked as proven. */
|
|
74
|
+
waitUntilProvenCheckpointNumber(target: CheckpointNumber, timeout?: number): Promise<CheckpointNumber>;
|
|
68
75
|
/** Waits until the last slot of the proof submission window for a given epoch. */
|
|
69
76
|
waitUntilLastSlotOfProofSubmissionWindow(epochNumber: number | bigint): Promise<void>;
|
|
70
77
|
/** Waits for the aztec node to sync to the target block number. */
|
|
71
|
-
waitForNodeToSync(blockNumber:
|
|
78
|
+
waitForNodeToSync(blockNumber: BlockNumber, type: 'proven' | 'finalized' | 'historic'): Promise<void>;
|
|
72
79
|
/** Registers the SpamContract on the given wallet. */
|
|
73
80
|
registerSpamContract(wallet: Wallet, salt?: Fr): Promise<SpamContract>;
|
|
74
81
|
/** Creates an L1 client using a fresh account with funds from anvil, with a tx delayer already set up. */
|
|
@@ -77,10 +84,10 @@ export declare class EpochsTestContext {
|
|
|
77
84
|
delayer: Delayer;
|
|
78
85
|
}>;
|
|
79
86
|
/** Verifies whether the given block number is found on the aztec node. */
|
|
80
|
-
verifyHistoricBlock(blockNumber:
|
|
87
|
+
verifyHistoricBlock(blockNumber: BlockParameter, expectedSuccess: boolean): Promise<void>;
|
|
81
88
|
watchSequencerEvents(sequencers: SequencerClient[], getMetadata?: (i: number) => Record<string, any>): {
|
|
82
89
|
failEvents: TrackedSequencerEvent[];
|
|
83
90
|
stateChanges: TrackedSequencerEvent[];
|
|
84
91
|
};
|
|
85
92
|
}
|
|
86
|
-
//# sourceMappingURL=
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBvY2hzX3Rlc3QuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lMmVfZXBvY2hzL2Vwb2Noc190ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRzNFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHaEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQWtCLEtBQUssT0FBTyxFQUFxQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3JILE9BQU8sS0FBSyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBZSxNQUFNLGlDQUFpQyxDQUFDO0FBTTdGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVsRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssZ0JBQWdCLEVBQXVCLE1BQU0sb0JBQW9CLENBQUM7QUFFNUYsT0FBTyxFQUNMLEtBQUssZUFBZSxFQUNwQixLQUFLLGVBQWUsRUFHckIsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEVBQUUsS0FBSyxjQUFjLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUFFLEtBQUssaUJBQWlCLEVBQXVDLE1BQU0sNkJBQTZCLENBQUM7QUFPMUcsT0FBTyxFQUNMLEtBQUssZUFBZSxFQUNwQixLQUFLLFlBQVksRUFJ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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"epochs_test.d.ts","sourceRoot":"","sources":["../../src/e2e_epochs/epochs_test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"epochs_test.d.ts","sourceRoot":"","sources":["../../src/e2e_epochs/epochs_test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
import { AztecNodeService } from '@aztec/aztec-node';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { getTimestampRangeForEpoch } from '@aztec/aztec.js/block';
|
|
3
|
+
import { getContractInstanceFromInstantiationParams } from '@aztec/aztec.js/contracts';
|
|
4
|
+
import { Fr } from '@aztec/aztec.js/fields';
|
|
5
|
+
import { MerkleTreeId } from '@aztec/aztec.js/trees';
|
|
6
|
+
import { EpochCache } from '@aztec/epoch-cache';
|
|
7
|
+
import { createExtendedL1Client } from '@aztec/ethereum/client';
|
|
8
|
+
import { DefaultL1ContractsConfig } from '@aztec/ethereum/config';
|
|
4
9
|
import { RollupContract } from '@aztec/ethereum/contracts';
|
|
5
10
|
import { ChainMonitor, DelayedTxUtils, waitUntilL1Timestamp, withDelayer } from '@aztec/ethereum/test';
|
|
11
|
+
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
6
12
|
import { SecretValue } from '@aztec/foundation/config';
|
|
7
|
-
import { randomBytes } from '@aztec/foundation/crypto';
|
|
13
|
+
import { randomBytes } from '@aztec/foundation/crypto/random';
|
|
8
14
|
import { withLogNameSuffix } from '@aztec/foundation/log';
|
|
15
|
+
import { retryUntil } from '@aztec/foundation/retry';
|
|
16
|
+
import { sleep } from '@aztec/foundation/sleep';
|
|
9
17
|
import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
|
|
10
18
|
import { getMockPubSubP2PServiceFactory } from '@aztec/p2p/test-helpers';
|
|
11
19
|
import { SequencerState } from '@aztec/sequencer-client';
|
|
@@ -30,6 +38,7 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
30
38
|
constants;
|
|
31
39
|
logger;
|
|
32
40
|
monitor;
|
|
41
|
+
epochCache;
|
|
33
42
|
proverDelayer;
|
|
34
43
|
sequencerDelayer;
|
|
35
44
|
proverNodes = [];
|
|
@@ -81,9 +90,6 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
81
90
|
// using the prover's eth address if the proverId is used for something in the rollup contract
|
|
82
91
|
// Use numeric EthAddress for deterministic prover id
|
|
83
92
|
proverId: EthAddress.fromNumber(1),
|
|
84
|
-
// This must be enough so that the tx from the prover is delayed properly,
|
|
85
|
-
// but not so much to hang the sequencer and timeout the teardown
|
|
86
|
-
txPropagationMaxQueryAttempts: opts.txPropagationMaxQueryAttempts ?? 12,
|
|
87
93
|
worldStateBlockHistory: WORLD_STATE_BLOCK_HISTORY,
|
|
88
94
|
exitDelaySeconds: DefaultL1ContractsConfig.exitDelaySeconds,
|
|
89
95
|
slasherFlavor: 'none',
|
|
@@ -99,6 +105,9 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
99
105
|
this.logger = context.logger;
|
|
100
106
|
this.l1Client = context.deployL1ContractsValues.l1Client;
|
|
101
107
|
this.rollup = RollupContract.getFromConfig(context.config);
|
|
108
|
+
this.epochCache = await EpochCache.create(this.rollup, context.config, {
|
|
109
|
+
dateProvider: context.dateProvider
|
|
110
|
+
});
|
|
102
111
|
// Loop that tracks L1 and L2 block numbers and logs whenever there's a new one.
|
|
103
112
|
this.monitor = new ChainMonitor(this.rollup, context.dateProvider, this.logger).start();
|
|
104
113
|
// This is hideous.
|
|
@@ -126,15 +135,17 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
126
135
|
await Promise.all(this.nodes.map((node)=>tryStop(node, this.logger)));
|
|
127
136
|
await this.context.teardown();
|
|
128
137
|
}
|
|
129
|
-
async createProverNode() {
|
|
138
|
+
async createProverNode(opts = {}) {
|
|
130
139
|
this.logger.warn('Creating and syncing a simulated prover node...');
|
|
131
140
|
const proverNodePrivateKey = this.getNextPrivateKey();
|
|
132
141
|
const suffix = (this.proverNodes.length + 1).toString();
|
|
133
142
|
const proverNode = await withLogNameSuffix(suffix, ()=>createAndSyncProverNode(proverNodePrivateKey, {
|
|
134
|
-
...this.context.config
|
|
135
|
-
proverId: EthAddress.fromNumber(parseInt(suffix, 10))
|
|
143
|
+
...this.context.config
|
|
136
144
|
}, {
|
|
137
|
-
dataDirectory: join(this.context.config.dataDirectory, randomBytes(8).toString('hex'))
|
|
145
|
+
dataDirectory: join(this.context.config.dataDirectory, randomBytes(8).toString('hex')),
|
|
146
|
+
proverId: EthAddress.fromNumber(parseInt(suffix, 10)),
|
|
147
|
+
dontStart: opts.dontStart,
|
|
148
|
+
...opts
|
|
138
149
|
}, this.context.aztecNode, undefined, {
|
|
139
150
|
dateProvider: this.context.dateProvider
|
|
140
151
|
}));
|
|
@@ -202,20 +213,20 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
202
213
|
return `0x${key.toString('hex')}`;
|
|
203
214
|
}
|
|
204
215
|
/** Waits until the epoch begins (ie until the immediately previous L1 block is mined). */ async waitUntilEpochStarts(epoch) {
|
|
205
|
-
const [start] = getTimestampRangeForEpoch(
|
|
216
|
+
const [start] = getTimestampRangeForEpoch(EpochNumber(epoch), this.constants);
|
|
206
217
|
this.logger.info(`Waiting until L1 timestamp ${start} is reached as the start of epoch ${epoch}`);
|
|
207
218
|
await waitUntilL1Timestamp(this.l1Client, start - BigInt(this.L1_BLOCK_TIME_IN_S), undefined, 30 * this.epochDuration);
|
|
208
219
|
return start;
|
|
209
220
|
}
|
|
210
|
-
/** Waits until the given
|
|
211
|
-
await retryUntil(()=>Promise.resolve(target <= this.monitor.
|
|
221
|
+
/** Waits until the given checkpoint number is mined. */ async waitUntilCheckpointNumber(target, timeout = 60) {
|
|
222
|
+
await retryUntil(()=>Promise.resolve(target <= this.monitor.checkpointNumber), `Wait until checkpoint ${target}`, timeout, 0.1);
|
|
212
223
|
}
|
|
213
|
-
/** Waits until the given
|
|
214
|
-
await retryUntil(()=>Promise.resolve(
|
|
215
|
-
return this.monitor.
|
|
224
|
+
/** Waits until the given checkpoint number is marked as proven. */ async waitUntilProvenCheckpointNumber(target, timeout = 60) {
|
|
225
|
+
await retryUntil(()=>Promise.resolve(target <= this.monitor.provenCheckpointNumber), `Wait proven checkpoint ${target}`, timeout, 0.1);
|
|
226
|
+
return this.monitor.provenCheckpointNumber;
|
|
216
227
|
}
|
|
217
228
|
/** Waits until the last slot of the proof submission window for a given epoch. */ async waitUntilLastSlotOfProofSubmissionWindow(epochNumber) {
|
|
218
|
-
const deadline = getProofSubmissionDeadlineTimestamp(BigInt(epochNumber), this.constants);
|
|
229
|
+
const deadline = getProofSubmissionDeadlineTimestamp(EpochNumber.fromBigInt(BigInt(epochNumber)), this.constants);
|
|
219
230
|
const oneSlotBefore = deadline - BigInt(this.constants.slotDuration);
|
|
220
231
|
const date = new Date(Number(oneSlotBefore) * 1000);
|
|
221
232
|
this.logger.info(`Waiting until last slot of submission window for epoch ${epochNumber} at ${date}`, {
|
|
@@ -255,10 +266,7 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
255
266
|
publicKeys: undefined,
|
|
256
267
|
deployer: undefined
|
|
257
268
|
});
|
|
258
|
-
await wallet.registerContract(
|
|
259
|
-
artifact: SpamContract.artifact,
|
|
260
|
-
instance
|
|
261
|
-
});
|
|
269
|
+
await wallet.registerContract(instance, SpamContract.artifact);
|
|
262
270
|
return SpamContract.at(instance.address, wallet);
|
|
263
271
|
}
|
|
264
272
|
/** Creates an L1 client using a fresh account with funds from anvil, with a tx delayer already set up. */ async createL1Client() {
|
|
@@ -318,7 +326,7 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
318
326
|
sequencer.getSequencer().on(eventName, (args)=>{
|
|
319
327
|
const evt = makeEvent(i, eventName, args);
|
|
320
328
|
failEvents.push(evt);
|
|
321
|
-
this.logger.error(`Failed event ${eventName} from sequencer ${sequencerIndex}`, evt);
|
|
329
|
+
this.logger.error(`Failed event ${eventName} from sequencer ${sequencerIndex}`, undefined, evt);
|
|
322
330
|
});
|
|
323
331
|
});
|
|
324
332
|
});
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJpZGdpbmdfcmFjZS5ub3Rlc3QuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lMmVfZmVlcy9icmlkZ2luZ19yYWNlLm5vdGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Fr
|
|
3
|
-
import { Fq } from '@aztec/foundation/
|
|
1
|
+
import { SchnorrAccountContract } from '@aztec/accounts/schnorr';
|
|
2
|
+
import { Fr } from '@aztec/aztec.js/fields';
|
|
3
|
+
import { Fq } from '@aztec/foundation/curves/bn254';
|
|
4
|
+
import { sleep } from '@aztec/foundation/sleep';
|
|
4
5
|
import { jest } from '@jest/globals';
|
|
5
6
|
import { FeesTest } from './fees_test.js';
|
|
6
7
|
jest.setTimeout(300_000);
|
|
@@ -18,22 +19,24 @@ describe('e2e_fees bridging_race', ()=>{
|
|
|
18
19
|
await t.applyInitialAccountsSnapshot();
|
|
19
20
|
await t.applyPublicDeployAccountsSnapshot();
|
|
20
21
|
await t.applySetupFeeJuiceSnapshot();
|
|
21
|
-
({
|
|
22
|
+
({ wallet, logger } = await t.setup());
|
|
22
23
|
});
|
|
23
24
|
afterAll(async ()=>{
|
|
24
25
|
await t.teardown();
|
|
25
26
|
});
|
|
26
27
|
let logger;
|
|
27
|
-
let pxe;
|
|
28
28
|
let bobsAddress;
|
|
29
|
+
let wallet;
|
|
29
30
|
beforeEach(async ()=>{
|
|
30
31
|
const bobsSecretKey = Fr.random();
|
|
31
32
|
const bobsPrivateSigningKey = Fq.random();
|
|
32
|
-
const
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
const bobsSalt = Fr.random();
|
|
34
|
+
const bobsAccountManager = await wallet.createAccount({
|
|
35
|
+
secret: bobsSecretKey,
|
|
36
|
+
salt: bobsSalt,
|
|
37
|
+
contract: new SchnorrAccountContract(bobsPrivateSigningKey)
|
|
38
|
+
});
|
|
39
|
+
bobsAddress = bobsAccountManager.address;
|
|
37
40
|
});
|
|
38
41
|
it('Alice bridges funds to Bob', async ()=>{
|
|
39
42
|
// Tweak the token manager so the bridging happens immediately before the end of the current L2 slot
|
|
@@ -42,7 +45,7 @@ describe('e2e_fees bridging_race', ()=>{
|
|
|
42
45
|
const origApprove = l1TokenManager.approve.bind(l1TokenManager);
|
|
43
46
|
l1TokenManager.approve = async (amount, address, addressName = '')=>{
|
|
44
47
|
await origApprove(amount, address, addressName);
|
|
45
|
-
const sleepTime = (Number(t.chainMonitor.
|
|
48
|
+
const sleepTime = (Number(t.chainMonitor.checkpointTimestamp) + AZTEC_SLOT_DURATION) * 1000 - Date.now() - 500;
|
|
46
49
|
logger.info(`Sleeping for ${sleepTime}ms until near end of L2 slot before sending L1 fee juice to L2 inbox`);
|
|
47
50
|
await sleep(sleepTime);
|
|
48
51
|
};
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
2
|
+
import { type Logger } from '@aztec/aztec.js/log';
|
|
3
|
+
import type { AztecNode } from '@aztec/aztec.js/node';
|
|
2
4
|
import { CheatCodes } from '@aztec/aztec/testing';
|
|
3
|
-
import {
|
|
5
|
+
import { RollupContract } from '@aztec/ethereum/contracts';
|
|
6
|
+
import type { DeployL1ContractsArgs } from '@aztec/ethereum/deploy-l1-contracts';
|
|
4
7
|
import { ChainMonitor } from '@aztec/ethereum/test';
|
|
8
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
5
9
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
6
10
|
import { AppSubscriptionContract } from '@aztec/noir-contracts.js/AppSubscription';
|
|
7
11
|
import { FPCContract } from '@aztec/noir-contracts.js/FPC';
|
|
@@ -10,6 +14,7 @@ import { SponsoredFPCContract } from '@aztec/noir-contracts.js/SponsoredFPC';
|
|
|
10
14
|
import { TokenContract as BananaCoin } from '@aztec/noir-contracts.js/Token';
|
|
11
15
|
import { CounterContract } from '@aztec/noir-test-contracts.js/Counter';
|
|
12
16
|
import { GasSettings } from '@aztec/stdlib/gas';
|
|
17
|
+
import { TestWallet } from '@aztec/test-wallet/server';
|
|
13
18
|
import { type SubsystemsContext } from '../fixtures/snapshot_manager.js';
|
|
14
19
|
import { type BalancesFn, type SetupOptions } from '../fixtures/utils.js';
|
|
15
20
|
import { type GasBridgingTestHarness } from '../shared/gas_portal_test_harness.js';
|
|
@@ -26,15 +31,12 @@ import { type GasBridgingTestHarness } from '../shared/gas_portal_test_harness.j
|
|
|
26
31
|
export declare class FeesTest {
|
|
27
32
|
private numberOfAccounts;
|
|
28
33
|
private snapshotManager;
|
|
29
|
-
private wallets;
|
|
30
34
|
private accounts;
|
|
31
35
|
logger: Logger;
|
|
32
|
-
pxe: PXE;
|
|
33
36
|
aztecNode: AztecNode;
|
|
34
37
|
cheatCodes: CheatCodes;
|
|
35
|
-
|
|
38
|
+
wallet: TestWallet;
|
|
36
39
|
aliceAddress: AztecAddress;
|
|
37
|
-
bobWallet: AccountWallet;
|
|
38
40
|
bobAddress: AztecAddress;
|
|
39
41
|
sequencerAddress: AztecAddress;
|
|
40
42
|
coinbase: EthAddress;
|
|
@@ -55,7 +57,7 @@ export declare class FeesTest {
|
|
|
55
57
|
getGasBalanceFn: BalancesFn;
|
|
56
58
|
getBananaPublicBalanceFn: BalancesFn;
|
|
57
59
|
getBananaPrivateBalanceFn: BalancesFn;
|
|
58
|
-
getProverFee: (blockNumber:
|
|
60
|
+
getProverFee: (blockNumber: BlockNumber) => Promise<bigint>;
|
|
59
61
|
readonly ALICE_INITIAL_BANANAS: bigint;
|
|
60
62
|
readonly SUBSCRIPTION_AMOUNT: bigint;
|
|
61
63
|
readonly APP_SPONSORED_TX_GAS_LIMIT: bigint;
|
|
@@ -81,4 +83,4 @@ export declare class FeesTest {
|
|
|
81
83
|
applyFundAliceWithBananas(): Promise<void>;
|
|
82
84
|
applyFundAliceWithPrivateBananas(): Promise<void>;
|
|
83
85
|
}
|
|
84
|
-
//# sourceMappingURL=
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlc190ZXN0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZTJlX2ZlZXMvZmVlc190ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDakYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHM0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDbkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxhQUFhLElBQUksVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBR3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFLdkQsT0FB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fees_test.d.ts","sourceRoot":"","sources":["../../src/e2e_fees/fees_test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fees_test.d.ts","sourceRoot":"","sources":["../../src/e2e_fees/fees_test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { RollupContract, createExtendedL1Client } from '@aztec/ethereum';
|
|
1
|
+
import { createLogger } from '@aztec/aztec.js/log';
|
|
2
|
+
import { createExtendedL1Client } from '@aztec/ethereum/client';
|
|
3
|
+
import { RollupContract } from '@aztec/ethereum/contracts';
|
|
5
4
|
import { ChainMonitor } from '@aztec/ethereum/test';
|
|
6
5
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
6
|
+
import { sleep } from '@aztec/foundation/sleep';
|
|
7
7
|
import { TestERC20Abi } from '@aztec/l1-artifacts';
|
|
8
8
|
import { FPCContract } from '@aztec/noir-contracts.js/FPC';
|
|
9
9
|
import { FeeJuiceContract } from '@aztec/noir-contracts.js/FeeJuice';
|
|
@@ -31,15 +31,12 @@ const { E2E_DATA_PATH: dataPath } = process.env;
|
|
|
31
31
|
*/ export class FeesTest {
|
|
32
32
|
numberOfAccounts;
|
|
33
33
|
snapshotManager;
|
|
34
|
-
wallets;
|
|
35
34
|
accounts;
|
|
36
35
|
logger;
|
|
37
|
-
pxe;
|
|
38
36
|
aztecNode;
|
|
39
37
|
cheatCodes;
|
|
40
|
-
|
|
38
|
+
wallet;
|
|
41
39
|
aliceAddress;
|
|
42
|
-
bobWallet;
|
|
43
40
|
bobAddress;
|
|
44
41
|
sequencerAddress;
|
|
45
42
|
coinbase;
|
|
@@ -66,7 +63,6 @@ const { E2E_DATA_PATH: dataPath } = process.env;
|
|
|
66
63
|
APP_SPONSORED_TX_GAS_LIMIT;
|
|
67
64
|
constructor(testName, numberOfAccounts = 3, setupOptions = {}){
|
|
68
65
|
this.numberOfAccounts = numberOfAccounts;
|
|
69
|
-
this.wallets = [];
|
|
70
66
|
this.accounts = [];
|
|
71
67
|
this.ALICE_INITIAL_BANANAS = BigInt(1e22);
|
|
72
68
|
this.SUBSCRIPTION_AMOUNT = BigInt(1e19);
|
|
@@ -104,10 +100,11 @@ const { E2E_DATA_PATH: dataPath } = process.env;
|
|
|
104
100
|
}
|
|
105
101
|
}
|
|
106
102
|
async getBlockRewards() {
|
|
107
|
-
const blockReward = await this.rollupContract.
|
|
108
|
-
const
|
|
103
|
+
const blockReward = await this.rollupContract.getCheckpointReward();
|
|
104
|
+
const rewardConfig = await this.rollupContract.getRewardConfig();
|
|
105
|
+
const balance = await this.feeJuiceBridgeTestHarness.getL1FeeJuiceBalance(EthAddress.fromString(rewardConfig.rewardDistributor));
|
|
109
106
|
const toDistribute = balance > blockReward ? blockReward : balance;
|
|
110
|
-
const sequencerBlockRewards = toDistribute /
|
|
107
|
+
const sequencerBlockRewards = toDistribute * BigInt(rewardConfig.sequencerBps) / 10000n;
|
|
111
108
|
const proverBlockRewards = toDistribute - sequencerBlockRewards;
|
|
112
109
|
return {
|
|
113
110
|
sequencerBlockRewards,
|
|
@@ -125,7 +122,7 @@ const { E2E_DATA_PATH: dataPath } = process.env;
|
|
|
125
122
|
const balanceBefore = await this.bananaCoin.methods.balance_of_private(address).simulate({
|
|
126
123
|
from: this.aliceAddress
|
|
127
124
|
});
|
|
128
|
-
await mintTokensToPrivate(this.bananaCoin, this.aliceAddress,
|
|
125
|
+
await mintTokensToPrivate(this.bananaCoin, this.aliceAddress, address, amount);
|
|
129
126
|
const balanceAfter = await this.bananaCoin.methods.balance_of_private(address).simulate({
|
|
130
127
|
from: this.aliceAddress
|
|
131
128
|
});
|
|
@@ -138,64 +135,62 @@ const { E2E_DATA_PATH: dataPath } = process.env;
|
|
|
138
135
|
await this.applyDeployBananaTokenSnapshot();
|
|
139
136
|
}
|
|
140
137
|
async applyInitialAccountsSnapshot() {
|
|
141
|
-
await this.snapshotManager.snapshot('initial_accounts', deployAccounts(this.numberOfAccounts, this.logger), async ({ deployedAccounts }, {
|
|
142
|
-
this.
|
|
138
|
+
await this.snapshotManager.snapshot('initial_accounts', deployAccounts(this.numberOfAccounts, this.logger), async ({ deployedAccounts }, { wallet, aztecNode, cheatCodes })=>{
|
|
139
|
+
this.wallet = wallet;
|
|
143
140
|
this.aztecNode = aztecNode;
|
|
144
141
|
this.gasSettings = GasSettings.default({
|
|
145
142
|
maxFeesPerGas: (await this.aztecNode.getCurrentBaseFees()).mul(2)
|
|
146
143
|
});
|
|
147
|
-
this.cheatCodes =
|
|
148
|
-
this.
|
|
149
|
-
this.
|
|
150
|
-
this.
|
|
151
|
-
[this.aliceWallet, this.bobWallet] = this.wallets.slice(0, 2);
|
|
152
|
-
[this.aliceAddress, this.bobAddress, this.sequencerAddress] = this.accounts;
|
|
144
|
+
this.cheatCodes = cheatCodes;
|
|
145
|
+
this.accounts = deployedAccounts.map((a)=>a.address);
|
|
146
|
+
this.accounts.forEach((a, i)=>this.logger.verbose(`Account ${i} address: ${a}`));
|
|
147
|
+
[this.aliceAddress, this.bobAddress, this.sequencerAddress] = this.accounts.slice(0, 3);
|
|
153
148
|
// We set Alice as the FPC admin to avoid the need for deployment of another account.
|
|
154
149
|
this.fpcAdmin = this.aliceAddress;
|
|
155
150
|
const canonicalFeeJuice = await getCanonicalFeeJuice();
|
|
156
|
-
this.feeJuiceContract =
|
|
151
|
+
this.feeJuiceContract = FeeJuiceContract.at(canonicalFeeJuice.address, this.wallet);
|
|
157
152
|
});
|
|
158
153
|
}
|
|
159
154
|
async applyPublicDeployAccountsSnapshot() {
|
|
160
|
-
await this.snapshotManager.snapshot('public_deploy_accounts', ()=>ensureAccountContractsPublished(this.
|
|
155
|
+
await this.snapshotManager.snapshot('public_deploy_accounts', ()=>ensureAccountContractsPublished(this.wallet, this.accounts));
|
|
161
156
|
}
|
|
162
157
|
async applySetupFeeJuiceSnapshot() {
|
|
163
158
|
await this.snapshotManager.snapshot('setup_fee_juice', async ()=>{}, async (_data, context)=>{
|
|
164
159
|
this.context = context;
|
|
165
|
-
this.feeJuiceContract =
|
|
160
|
+
this.feeJuiceContract = FeeJuiceContract.at(ProtocolContractAddress.FeeJuice, this.wallet);
|
|
166
161
|
this.getGasBalanceFn = getBalancesFn('⛽', this.feeJuiceContract.methods.balance_of_public, this.aliceAddress, this.logger);
|
|
167
162
|
this.feeJuiceBridgeTestHarness = await FeeJuicePortalTestingHarnessFactory.create({
|
|
168
163
|
aztecNode: context.aztecNode,
|
|
169
164
|
aztecNodeAdmin: context.aztecNode,
|
|
170
|
-
pxeService: context.pxe,
|
|
171
165
|
l1Client: context.deployL1ContractsValues.l1Client,
|
|
172
|
-
wallet: this.
|
|
166
|
+
wallet: this.wallet,
|
|
173
167
|
logger: this.logger
|
|
174
168
|
});
|
|
175
169
|
});
|
|
176
170
|
}
|
|
177
171
|
async applyDeployBananaTokenSnapshot() {
|
|
178
172
|
await this.snapshotManager.snapshot('deploy_banana_token', async ()=>{
|
|
179
|
-
const bananaCoin = await BananaCoin.deploy(this.
|
|
173
|
+
const bananaCoin = await BananaCoin.deploy(this.wallet, this.aliceAddress, 'BC', 'BC', 18n).send({
|
|
180
174
|
from: this.aliceAddress
|
|
181
175
|
}).deployed();
|
|
182
176
|
this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
|
|
183
177
|
return {
|
|
184
178
|
bananaCoinAddress: bananaCoin.address
|
|
185
179
|
};
|
|
186
|
-
},
|
|
187
|
-
this.bananaCoin =
|
|
180
|
+
}, ({ bananaCoinAddress })=>{
|
|
181
|
+
this.bananaCoin = BananaCoin.at(bananaCoinAddress, this.wallet);
|
|
188
182
|
const logger = this.logger;
|
|
189
183
|
this.getBananaPublicBalanceFn = getBalancesFn('🍌.public', this.bananaCoin.methods.balance_of_public, this.aliceAddress, logger);
|
|
190
184
|
this.getBananaPrivateBalanceFn = getBalancesFn('🍌.private', this.bananaCoin.methods.balance_of_private, this.aliceAddress, logger);
|
|
185
|
+
return Promise.resolve();
|
|
191
186
|
});
|
|
192
187
|
}
|
|
193
188
|
async applyFPCSetupSnapshot() {
|
|
194
189
|
await this.snapshotManager.snapshot('fpc_setup', async (context)=>{
|
|
195
190
|
const feeJuiceContract = this.feeJuiceBridgeTestHarness.feeJuice;
|
|
196
|
-
expect((await context.
|
|
191
|
+
expect((await context.wallet.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
|
|
197
192
|
const bananaCoin = this.bananaCoin;
|
|
198
|
-
const bananaFPC = await FPCContract.deploy(this.
|
|
193
|
+
const bananaFPC = await FPCContract.deploy(this.wallet, bananaCoin.address, this.fpcAdmin).send({
|
|
199
194
|
from: this.aliceAddress
|
|
200
195
|
}).deployed();
|
|
201
196
|
this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
|
|
@@ -206,8 +201,8 @@ const { E2E_DATA_PATH: dataPath } = process.env;
|
|
|
206
201
|
l1FeeJuiceAddress: this.feeJuiceBridgeTestHarness.l1FeeJuiceAddress,
|
|
207
202
|
rollupAddress: context.deployL1ContractsValues.l1ContractAddresses.rollupAddress
|
|
208
203
|
};
|
|
209
|
-
},
|
|
210
|
-
const bananaFPC =
|
|
204
|
+
}, (data, context)=>{
|
|
205
|
+
const bananaFPC = FPCContract.at(data.bananaFPCAddress, this.wallet);
|
|
211
206
|
this.bananaFPC = bananaFPC;
|
|
212
207
|
this.getCoinbaseBalance = async ()=>{
|
|
213
208
|
const l1Client = createExtendedL1Client(context.aztecNodeConfig.l1RpcUrls, MNEMONIC);
|
|
@@ -224,7 +219,7 @@ const { E2E_DATA_PATH: dataPath } = process.env;
|
|
|
224
219
|
return await this.rollupContract.getSequencerRewards(this.coinbase);
|
|
225
220
|
};
|
|
226
221
|
this.getProverFee = async (blockNumber)=>{
|
|
227
|
-
const block = await this.
|
|
222
|
+
const block = await this.aztecNode.getBlock(blockNumber);
|
|
228
223
|
// @todo @lherskind As we deal with #13601
|
|
229
224
|
// Right now the value is from `FeeLib.sol`
|
|
230
225
|
const L1_GAS_PER_EPOCH_VERIFIED = 1000000n;
|
|
@@ -236,19 +231,21 @@ const { E2E_DATA_PATH: dataPath } = process.env;
|
|
|
236
231
|
const mana = block.header.totalManaUsed.toBigInt();
|
|
237
232
|
return mulDiv(mana * proverCost, price, 10n ** 9n);
|
|
238
233
|
};
|
|
234
|
+
return Promise.resolve();
|
|
239
235
|
});
|
|
240
236
|
}
|
|
241
237
|
async applySponsoredFPCSetupSnapshot() {
|
|
242
238
|
await this.snapshotManager.snapshot('sponsored_fpc_setup', async (context)=>{
|
|
243
239
|
const feeJuiceContract = this.feeJuiceBridgeTestHarness.feeJuice;
|
|
244
|
-
expect((await context.
|
|
245
|
-
const sponsoredFPC = await setupSponsoredFPC(
|
|
240
|
+
expect((await context.wallet.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
|
|
241
|
+
const sponsoredFPC = await setupSponsoredFPC(this.wallet);
|
|
246
242
|
this.logger.info(`SponsoredFPC at ${sponsoredFPC.address}`);
|
|
247
243
|
return {
|
|
248
244
|
sponsoredFPCAddress: sponsoredFPC.address
|
|
249
245
|
};
|
|
250
|
-
},
|
|
251
|
-
this.sponsoredFPC =
|
|
246
|
+
}, (data)=>{
|
|
247
|
+
this.sponsoredFPC = SponsoredFPCContract.at(data.sponsoredFPCAddress, this.wallet);
|
|
248
|
+
return Promise.resolve();
|
|
252
249
|
});
|
|
253
250
|
}
|
|
254
251
|
async applyFundAliceWithBananas() {
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { AztecAddress
|
|
1
|
+
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
2
|
+
import type { L2Block } from '@aztec/aztec.js/block';
|
|
3
|
+
import { Fr } from '@aztec/aztec.js/fields';
|
|
2
4
|
import { BatchedBlob, Blob } from '@aztec/blob-lib';
|
|
3
5
|
/**
|
|
4
6
|
* Creates a json object that can be used to test the solidity contract.
|
|
5
7
|
* The json object must be put into
|
|
6
8
|
*/
|
|
7
9
|
export declare function writeJson(fileName: string, block: L2Block, l1ToL2Content: Fr[], blobs: Blob[], batchedBlob: BatchedBlob, recipientAddress: AztecAddress, deployerAddress: `0x${string}`): Promise<void>;
|
|
8
|
-
//# sourceMappingURL=
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGVfanNvbi5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2UyZV9sMV9wdWJsaXNoZXIvd3JpdGVfanNvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUE2RCxNQUFNLGlCQUFpQixDQUFDO0FBTy9HOzs7R0FHRztBQUNILHdCQUFzQixTQUFTLENBQzdCLFFBQVEsRUFBRSxNQUFNLEVBQ2hCLEtBQUssRUFBRSxPQUFPLEVBQ2QsYUFBYSxFQUFFLEVBQUUsRUFBRSxFQUNuQixLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQ2IsV0FBVyxFQUFFLFdBQVcsRUFDeEIsZ0JBQWdCLEVBQUUsWUFBWSxFQUM5QixlQUFlLEVBQUUsS0FBSyxNQUFNLEVBQUUsR0FDN0IsT0FBTyxDQUFDLElBQUksQ0FBQyxDQXNEZiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write_json.d.ts","sourceRoot":"","sources":["../../src/e2e_l1_publisher/write_json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"write_json.d.ts","sourceRoot":"","sources":["../../src/e2e_l1_publisher/write_json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,IAAI,EAA6D,MAAM,iBAAiB,CAAC;AAO/G;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,EAAE,EAAE,EACnB,KAAK,EAAE,IAAI,EAAE,EACb,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,YAAY,EAC9B,eAAe,EAAE,KAAK,MAAM,EAAE,GAC7B,OAAO,CAAC,IAAI,CAAC,CAsDf"}
|