@aztec/end-to-end 0.0.1-commit.d431d1c → 0.0.1-commit.dbf9cec
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/client_flows_benchmark.d.ts +2 -2
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/client_flows_benchmark.js +31 -16
- 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 +5 -4
- package/dest/bench/utils.d.ts.map +1 -1
- package/dest/bench/utils.js +9 -7
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +4 -2
- 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 +17 -8
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +2 -2
- 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 +3 -2
- package/dest/e2e_deploy_contract/deploy_test.d.ts +2 -2
- package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.d.ts +15 -7
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +86 -39
- package/dest/e2e_fees/bridging_race.notest.js +1 -1
- package/dest/e2e_fees/fees_test.d.ts +2 -2
- package/dest/e2e_fees/fees_test.d.ts.map +1 -1
- package/dest/e2e_fees/fees_test.js +12 -12
- package/dest/e2e_l1_publisher/write_json.d.ts +4 -3
- 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 +1 -1
- package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
- package/dest/e2e_nested_contract/nested_contract_test.js +2 -2
- package/dest/e2e_p2p/p2p_network.d.ts +2 -2
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +22 -4
- 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 +177 -0
- package/dest/e2e_p2p/shared.d.ts +6 -6
- package/dest/e2e_p2p/shared.d.ts.map +1 -1
- package/dest/e2e_p2p/shared.js +14 -17
- 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 +4 -2
- package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
- package/dest/e2e_token_contract/token_contract_test.js +13 -3
- 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 +30 -0
- package/dest/fixtures/e2e_prover_test.d.ts +4 -4
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +35 -39
- 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 +5 -1
- package/dest/fixtures/fixtures.d.ts.map +1 -1
- package/dest/fixtures/fixtures.js +6 -0
- 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/setup.d.ts +42 -24
- package/dest/fixtures/setup.d.ts.map +1 -1
- package/dest/fixtures/setup.js +87 -166
- package/dest/fixtures/setup_p2p_test.d.ts +16 -9
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +40 -29
- 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 +10 -6
- package/dest/shared/cross_chain_test_harness.d.ts +3 -4
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.js +11 -11
- package/dest/shared/gas_portal_test_harness.js +1 -1
- 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 +10 -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 +4 -4
- package/dest/shared/submit-transactions.d.ts.map +1 -1
- package/dest/shared/submit-transactions.js +9 -11
- 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 +20 -18
- package/dest/simulators/lending_simulator.js +2 -2
- 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 +2 -23
- package/dest/spartan/setup_test_wallets.d.ts +9 -2
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +92 -35
- package/dest/spartan/tx_metrics.d.ts +38 -2
- package/dest/spartan/tx_metrics.d.ts.map +1 -1
- package/dest/spartan/tx_metrics.js +178 -4
- package/dest/spartan/utils/bot.d.ts +28 -0
- package/dest/spartan/utils/bot.d.ts.map +1 -0
- package/dest/spartan/utils/bot.js +142 -0
- package/dest/spartan/utils/chaos.d.ts +79 -0
- package/dest/spartan/utils/chaos.d.ts.map +1 -0
- package/dest/spartan/utils/chaos.js +142 -0
- package/dest/spartan/utils/clients.d.ts +39 -0
- package/dest/spartan/utils/clients.d.ts.map +1 -0
- package/dest/spartan/utils/clients.js +90 -0
- package/dest/spartan/utils/config.d.ts +42 -0
- package/dest/spartan/utils/config.d.ts.map +1 -0
- package/dest/spartan/utils/config.js +22 -0
- package/dest/spartan/utils/health.d.ts +63 -0
- package/dest/spartan/utils/health.d.ts.map +1 -0
- package/dest/spartan/utils/health.js +202 -0
- package/dest/spartan/utils/helm.d.ts +15 -0
- package/dest/spartan/utils/helm.d.ts.map +1 -0
- package/dest/spartan/utils/helm.js +47 -0
- package/dest/spartan/utils/index.d.ts +10 -0
- package/dest/spartan/utils/index.d.ts.map +1 -0
- package/dest/spartan/utils/index.js +20 -0
- package/dest/spartan/utils/k8s.d.ts +128 -0
- package/dest/spartan/utils/k8s.d.ts.map +1 -0
- package/dest/spartan/utils/k8s.js +381 -0
- package/dest/spartan/utils/nodes.d.ts +40 -0
- package/dest/spartan/utils/nodes.d.ts.map +1 -0
- package/dest/spartan/utils/nodes.js +461 -0
- package/dest/spartan/utils/scripts.d.ts +30 -0
- package/dest/spartan/utils/scripts.d.ts.map +1 -0
- package/dest/spartan/utils/scripts.js +81 -0
- package/dest/spartan/utils.d.ts +2 -260
- package/dest/spartan/utils.d.ts.map +1 -1
- package/dest/spartan/utils.js +1 -942
- package/dest/test-wallet/test_wallet.d.ts +83 -0
- package/dest/test-wallet/test_wallet.d.ts.map +1 -0
- package/dest/test-wallet/test_wallet.js +214 -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 +71 -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 +48 -0
- package/dest/test-wallet/worker_wallet.d.ts +52 -0
- package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
- package/dest/test-wallet/worker_wallet.js +151 -0
- package/dest/test-wallet/worker_wallet_schema.d.ts +274 -0
- package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
- package/dest/test-wallet/worker_wallet_schema.js +10 -0
- package/package.json +43 -39
- package/src/bench/client_flows/client_flows_benchmark.ts +19 -36
- package/src/bench/client_flows/config.ts +9 -1
- package/src/bench/utils.ts +10 -8
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +20 -14
- package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +7 -8
- package/src/e2e_deploy_contract/deploy_test.ts +3 -3
- package/src/e2e_epochs/epochs_test.ts +129 -93
- package/src/e2e_fees/bridging_race.notest.ts +2 -5
- package/src/e2e_fees/fees_test.ts +22 -41
- package/src/e2e_l1_publisher/write_json.ts +3 -8
- package/src/e2e_nested_contract/nested_contract_test.ts +3 -5
- package/src/e2e_p2p/inactivity_slash_test.ts +4 -4
- package/src/e2e_p2p/p2p_network.ts +44 -16
- package/src/e2e_p2p/reqresp/utils.ts +235 -0
- package/src/e2e_p2p/shared.ts +22 -22
- 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 +14 -7
- package/src/fixtures/authwit_proxy.ts +50 -0
- package/src/fixtures/dumps/epoch_proof_result.json +1 -1
- package/src/fixtures/e2e_prover_test.ts +32 -47
- package/src/fixtures/elu_monitor.ts +126 -0
- package/src/fixtures/fixtures.ts +10 -0
- package/src/fixtures/ha_setup.ts +186 -0
- package/src/fixtures/index.ts +1 -0
- package/src/fixtures/setup.ts +117 -232
- package/src/fixtures/setup_p2p_test.ts +40 -44
- package/src/fixtures/token_utils.ts +7 -5
- package/src/guides/up_quick_start.sh +3 -3
- package/src/shared/cross_chain_test_harness.ts +13 -27
- package/src/shared/gas_portal_test_harness.ts +1 -1
- package/src/shared/index.ts +1 -0
- package/src/shared/jest_setup.ts +16 -1
- package/src/shared/mock_state_view.ts +188 -0
- package/src/shared/submit-transactions.ts +14 -16
- package/src/shared/uniswap_l1_l2.ts +21 -30
- package/src/simulators/lending_simulator.ts +2 -2
- package/src/simulators/token_simulator.ts +1 -29
- package/src/spartan/setup_test_wallets.ts +127 -25
- package/src/spartan/tx_metrics.ts +152 -7
- package/src/spartan/utils/bot.ts +188 -0
- package/src/spartan/utils/chaos.ts +253 -0
- package/src/spartan/utils/clients.ts +100 -0
- package/src/spartan/utils/config.ts +28 -0
- package/src/spartan/utils/health.ts +255 -0
- package/src/spartan/utils/helm.ts +84 -0
- package/src/spartan/utils/index.ts +68 -0
- package/src/spartan/utils/k8s.ts +535 -0
- package/src/spartan/utils/nodes.ts +543 -0
- package/src/spartan/utils/scripts.ts +99 -0
- package/src/spartan/utils.ts +1 -1246
- package/src/test-wallet/test_wallet.ts +306 -0
- package/src/test-wallet/utils.ts +112 -0
- package/src/test-wallet/wallet_worker_script.ts +60 -0
- package/src/test-wallet/worker_wallet.ts +213 -0
- package/src/test-wallet/worker_wallet_schema.ts +13 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Archiver } from '@aztec/archiver';
|
|
1
2
|
import { type AztecNodeConfig, AztecNodeService } from '@aztec/aztec-node';
|
|
2
3
|
import { getTimestampRangeForEpoch } from '@aztec/aztec.js/block';
|
|
3
4
|
import { getContractInstanceFromInstantiationParams } from '@aztec/aztec.js/contracts';
|
|
@@ -9,25 +10,21 @@ import { EpochCache } from '@aztec/epoch-cache';
|
|
|
9
10
|
import { createExtendedL1Client } from '@aztec/ethereum/client';
|
|
10
11
|
import { DefaultL1ContractsConfig } from '@aztec/ethereum/config';
|
|
11
12
|
import { RollupContract } from '@aztec/ethereum/contracts';
|
|
12
|
-
import {
|
|
13
|
+
import { Delayer, createDelayer, waitUntilL1Timestamp, wrapClientWithDelayer } from '@aztec/ethereum/l1-tx-utils';
|
|
14
|
+
import { ChainMonitor } from '@aztec/ethereum/test';
|
|
13
15
|
import type { ExtendedViemWalletClient } from '@aztec/ethereum/types';
|
|
14
16
|
import { BlockNumber, CheckpointNumber, EpochNumber } from '@aztec/foundation/branded-types';
|
|
15
17
|
import { SecretValue } from '@aztec/foundation/config';
|
|
16
18
|
import { randomBytes } from '@aztec/foundation/crypto/random';
|
|
17
|
-
import {
|
|
19
|
+
import { withLoggerBindings } from '@aztec/foundation/log/server';
|
|
18
20
|
import { retryUntil } from '@aztec/foundation/retry';
|
|
19
21
|
import { sleep } from '@aztec/foundation/sleep';
|
|
20
22
|
import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
|
|
23
|
+
import { TestContract } from '@aztec/noir-test-contracts.js/Test';
|
|
21
24
|
import { getMockPubSubP2PServiceFactory } from '@aztec/p2p/test-helpers';
|
|
22
|
-
import {
|
|
23
|
-
import type {
|
|
24
|
-
import {
|
|
25
|
-
type SequencerClient,
|
|
26
|
-
type SequencerEvents,
|
|
27
|
-
type SequencerPublisher,
|
|
28
|
-
SequencerState,
|
|
29
|
-
} from '@aztec/sequencer-client';
|
|
30
|
-
import type { TestSequencerClient } from '@aztec/sequencer-client/test';
|
|
25
|
+
import type { ProverNodeConfig } from '@aztec/prover-node';
|
|
26
|
+
import type { PXEConfig } from '@aztec/pxe/config';
|
|
27
|
+
import { type SequencerClient, type SequencerEvents, SequencerState } from '@aztec/sequencer-client';
|
|
31
28
|
import { type BlockParameter, EthAddress } from '@aztec/stdlib/block';
|
|
32
29
|
import { type L1RollupConstants, getProofSubmissionDeadlineTimestamp } from '@aztec/stdlib/epoch-helpers';
|
|
33
30
|
import { tryStop } from '@aztec/stdlib/interfaces/server';
|
|
@@ -44,12 +41,16 @@ import {
|
|
|
44
41
|
setup,
|
|
45
42
|
} from '../fixtures/utils.js';
|
|
46
43
|
|
|
47
|
-
export const
|
|
44
|
+
export const WORLD_STATE_CHECKPOINT_HISTORY = 2;
|
|
48
45
|
export const WORLD_STATE_BLOCK_CHECK_INTERVAL = 50;
|
|
49
46
|
export const ARCHIVER_POLL_INTERVAL = 50;
|
|
50
47
|
export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
51
48
|
|
|
52
|
-
export type EpochsTestOpts = Partial<SetupOptions> & {
|
|
49
|
+
export type EpochsTestOpts = Partial<SetupOptions> & {
|
|
50
|
+
numberOfAccounts?: number;
|
|
51
|
+
pxeOpts?: Partial<PXEConfig>;
|
|
52
|
+
aztecSlotDurationInL1Slots?: number;
|
|
53
|
+
};
|
|
53
54
|
|
|
54
55
|
export type TrackedSequencerEvent = {
|
|
55
56
|
[K in keyof SequencerEvents]: Parameters<SequencerEvents[K]>[0] & {
|
|
@@ -75,7 +76,7 @@ export class EpochsTestContext {
|
|
|
75
76
|
public proverDelayer!: Delayer;
|
|
76
77
|
public sequencerDelayer!: Delayer;
|
|
77
78
|
|
|
78
|
-
public proverNodes:
|
|
79
|
+
public proverNodes: AztecNodeService[] = [];
|
|
79
80
|
public nodes: AztecNodeService[] = [];
|
|
80
81
|
|
|
81
82
|
public epochDuration!: number;
|
|
@@ -94,7 +95,7 @@ export class EpochsTestContext {
|
|
|
94
95
|
? parseInt(process.env.L1_BLOCK_TIME)
|
|
95
96
|
: DEFAULT_L1_BLOCK_TIME;
|
|
96
97
|
const ethereumSlotDuration = opts.ethereumSlotDuration ?? envEthereumSlotDuration;
|
|
97
|
-
const aztecSlotDuration = opts.aztecSlotDuration ??
|
|
98
|
+
const aztecSlotDuration = opts.aztecSlotDuration ?? (opts.aztecSlotDurationInL1Slots ?? 2) * ethereumSlotDuration;
|
|
98
99
|
const aztecEpochDuration = opts.aztecEpochDuration ?? 6;
|
|
99
100
|
const aztecProofSubmissionEpochs = opts.aztecProofSubmissionEpochs ?? 1;
|
|
100
101
|
const l1PublishingTime = opts.l1PublishingTime ?? 1;
|
|
@@ -121,30 +122,36 @@ export class EpochsTestContext {
|
|
|
121
122
|
|
|
122
123
|
// Set up system without any account nor protocol contracts
|
|
123
124
|
// and with faster block times and shorter epochs.
|
|
124
|
-
const context = await setup(
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
125
|
+
const context = await setup(
|
|
126
|
+
opts.numberOfAccounts ?? 0,
|
|
127
|
+
{
|
|
128
|
+
automineL1Setup: true,
|
|
129
|
+
checkIntervalMs: 50,
|
|
130
|
+
archiverPollingIntervalMS: ARCHIVER_POLL_INTERVAL,
|
|
131
|
+
worldStateBlockCheckIntervalMS: WORLD_STATE_BLOCK_CHECK_INTERVAL,
|
|
132
|
+
aztecEpochDuration,
|
|
133
|
+
aztecSlotDuration,
|
|
134
|
+
ethereumSlotDuration,
|
|
135
|
+
aztecProofSubmissionEpochs,
|
|
136
|
+
aztecTargetCommitteeSize: opts.initialValidators?.length ?? 0,
|
|
137
|
+
minTxsPerBlock: 0,
|
|
138
|
+
realProofs: false,
|
|
139
|
+
startProverNode: true,
|
|
140
|
+
proverTestDelayMs: opts.proverTestDelayMs ?? 0,
|
|
141
|
+
// We use numeric incremental prover ids for simplicity, but we can switch to
|
|
142
|
+
// using the prover's eth address if the proverId is used for something in the rollup contract
|
|
143
|
+
// Use numeric EthAddress for deterministic prover id
|
|
144
|
+
proverId: EthAddress.fromNumber(1),
|
|
145
|
+
worldStateCheckpointHistory: WORLD_STATE_CHECKPOINT_HISTORY,
|
|
146
|
+
exitDelaySeconds: DefaultL1ContractsConfig.exitDelaySeconds,
|
|
147
|
+
slasherFlavor: 'none',
|
|
148
|
+
l1PublishingTime,
|
|
149
|
+
...opts,
|
|
150
|
+
},
|
|
151
|
+
// Use checkpointed chain tip for PXE by default to avoid issues with blocks being dropped due to pruned anchor blocks.
|
|
152
|
+
// Can be overridden via opts.pxeOpts.
|
|
153
|
+
{ syncChainTip: 'checkpointed', ...opts.pxeOpts },
|
|
154
|
+
);
|
|
148
155
|
|
|
149
156
|
this.context = context;
|
|
150
157
|
this.proverNodes = context.proverNode ? [context.proverNode] : [];
|
|
@@ -157,17 +164,8 @@ export class EpochsTestContext {
|
|
|
157
164
|
// Loop that tracks L1 and L2 block numbers and logs whenever there's a new one.
|
|
158
165
|
this.monitor = new ChainMonitor(this.rollup, context.dateProvider, this.logger).start();
|
|
159
166
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
this.proverDelayer = context.proverNode
|
|
163
|
-
? (((context.proverNode as TestProverNode).publisher as ProverNodePublisher).l1TxUtils as DelayedTxUtils).delayer!
|
|
164
|
-
: undefined!;
|
|
165
|
-
this.sequencerDelayer = context.sequencer
|
|
166
|
-
? (
|
|
167
|
-
((context.sequencer as TestSequencerClient).sequencer.publisher as SequencerPublisher)
|
|
168
|
-
.l1TxUtils as DelayedTxUtils
|
|
169
|
-
).delayer!
|
|
170
|
-
: undefined!;
|
|
167
|
+
this.proverDelayer = context.proverDelayer!;
|
|
168
|
+
this.sequencerDelayer = context.sequencerDelayer!;
|
|
171
169
|
|
|
172
170
|
if ((context.proverNode && !this.proverDelayer) || (context.sequencer && !this.sequencerDelayer)) {
|
|
173
171
|
throw new Error(`Could not find prover or sequencer delayer`);
|
|
@@ -182,6 +180,7 @@ export class EpochsTestContext {
|
|
|
182
180
|
l1GenesisTime: await this.rollup.getL1GenesisTime(),
|
|
183
181
|
ethereumSlotDuration,
|
|
184
182
|
proofSubmissionEpochs: Number(await this.rollup.getProofSubmissionEpochs()),
|
|
183
|
+
targetCommitteeSize: await this.rollup.getTargetCommitteeSize(),
|
|
185
184
|
};
|
|
186
185
|
|
|
187
186
|
this.logger.info(
|
|
@@ -199,20 +198,32 @@ export class EpochsTestContext {
|
|
|
199
198
|
public async createProverNode(opts: { dontStart?: boolean } & Partial<ProverNodeConfig> = {}) {
|
|
200
199
|
this.logger.warn('Creating and syncing a simulated prover node...');
|
|
201
200
|
const proverNodePrivateKey = this.getNextPrivateKey();
|
|
202
|
-
const
|
|
203
|
-
const
|
|
201
|
+
const proverIndex = this.proverNodes.length + 1;
|
|
202
|
+
const { mockGossipSubNetwork } = this.context;
|
|
203
|
+
const { proverNode } = await withLoggerBindings({ actor: `prover-${proverIndex}` }, () =>
|
|
204
204
|
createAndSyncProverNode(
|
|
205
205
|
proverNodePrivateKey,
|
|
206
|
-
{ ...this.context.config },
|
|
207
206
|
{
|
|
208
|
-
|
|
209
|
-
|
|
207
|
+
...this.context.config,
|
|
208
|
+
p2pEnabled: this.context.config.p2pEnabled || mockGossipSubNetwork !== undefined,
|
|
209
|
+
proverId: EthAddress.fromNumber(proverIndex),
|
|
210
210
|
dontStart: opts.dontStart,
|
|
211
211
|
...opts,
|
|
212
212
|
},
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
213
|
+
{
|
|
214
|
+
dataDirectory: join(this.context.config.dataDirectory!, randomBytes(8).toString('hex')),
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
dateProvider: this.context.dateProvider,
|
|
218
|
+
p2pClientDeps: {
|
|
219
|
+
p2pServiceFactory: mockGossipSubNetwork ? getMockPubSubP2PServiceFactory(mockGossipSubNetwork) : undefined,
|
|
220
|
+
rpcTxProviders: [this.context.aztecNode],
|
|
221
|
+
},
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
prefilledPublicData: this.context.prefilledPublicData ?? [],
|
|
225
|
+
dontStart: opts.dontStart,
|
|
226
|
+
},
|
|
216
227
|
),
|
|
217
228
|
);
|
|
218
229
|
this.proverNodes.push(proverNode);
|
|
@@ -226,21 +237,20 @@ export class EpochsTestContext {
|
|
|
226
237
|
|
|
227
238
|
public createValidatorNode(
|
|
228
239
|
privateKeys: `0x${string}`[],
|
|
229
|
-
opts: Partial<AztecNodeConfig> & {
|
|
240
|
+
opts: Partial<AztecNodeConfig> & { dontStartSequencer?: boolean } = {},
|
|
230
241
|
) {
|
|
231
242
|
this.logger.warn('Creating and syncing a validator node...');
|
|
232
243
|
return this.createNode({ ...opts, disableValidator: false, validatorPrivateKeys: new SecretValue(privateKeys) });
|
|
233
244
|
}
|
|
234
245
|
|
|
235
|
-
private async createNode(
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
const suffix = (this.nodes.length + 1).toString();
|
|
246
|
+
private async createNode(opts: Partial<AztecNodeConfig> & { dontStartSequencer?: boolean } = {}) {
|
|
247
|
+
const nodeIndex = this.nodes.length + 1;
|
|
248
|
+
const actorPrefix = opts.disableValidator ? 'node' : 'validator';
|
|
239
249
|
const { mockGossipSubNetwork } = this.context;
|
|
240
250
|
const resolvedConfig = { ...this.context.config, ...opts };
|
|
241
251
|
const p2pEnabled = resolvedConfig.p2pEnabled || mockGossipSubNetwork !== undefined;
|
|
242
252
|
const p2pIp = resolvedConfig.p2pIp ?? (p2pEnabled ? '127.0.0.1' : undefined);
|
|
243
|
-
const node = await
|
|
253
|
+
const node = await withLoggerBindings({ actor: `${actorPrefix}-${nodeIndex}` }, () =>
|
|
244
254
|
AztecNodeService.createAndSync(
|
|
245
255
|
{
|
|
246
256
|
...resolvedConfig,
|
|
@@ -262,26 +272,6 @@ export class EpochsTestContext {
|
|
|
262
272
|
),
|
|
263
273
|
);
|
|
264
274
|
|
|
265
|
-
// REFACTOR: We're getting too much into the internals of the sequencer here.
|
|
266
|
-
// We should have a single method for constructing an aztec node that returns a TestAztecNodeService
|
|
267
|
-
// which directly exposes the delayer and sets any test config.
|
|
268
|
-
if (opts.txDelayerMaxInclusionTimeIntoSlot !== undefined) {
|
|
269
|
-
this.logger.info(
|
|
270
|
-
`Setting tx delayer max inclusion time into slot to ${opts.txDelayerMaxInclusionTimeIntoSlot} seconds`,
|
|
271
|
-
);
|
|
272
|
-
// Here we reach into the sequencer and hook in a tx delayer. The problem is that the sequencer's l1 utils only uses a public client, not a wallet.
|
|
273
|
-
// The delayer needs a wallet (a client that can sign), so we have to create one here.
|
|
274
|
-
const l1Client = createExtendedL1Client(
|
|
275
|
-
resolvedConfig.l1RpcUrls!,
|
|
276
|
-
resolvedConfig.publisherPrivateKeys![0]!.getValue(),
|
|
277
|
-
);
|
|
278
|
-
const sequencer = node.getSequencer() as TestSequencerClient;
|
|
279
|
-
const publisher = sequencer.sequencer.publisher;
|
|
280
|
-
const delayed = DelayedTxUtils.fromL1TxUtils(publisher.l1TxUtils, this.L1_BLOCK_TIME_IN_S, l1Client);
|
|
281
|
-
delayed.delayer!.setMaxInclusionTimeIntoSlot(opts.txDelayerMaxInclusionTimeIntoSlot);
|
|
282
|
-
publisher.l1TxUtils = delayed;
|
|
283
|
-
}
|
|
284
|
-
|
|
285
275
|
this.nodes.push(node);
|
|
286
276
|
return node;
|
|
287
277
|
}
|
|
@@ -333,7 +323,10 @@ export class EpochsTestContext {
|
|
|
333
323
|
this.logger.info(`Waiting until last slot of submission window for epoch ${epochNumber} at ${date}`, {
|
|
334
324
|
oneSlotBefore,
|
|
335
325
|
});
|
|
336
|
-
|
|
326
|
+
// Use a timeout that accounts for the full proof submission window
|
|
327
|
+
const proofSubmissionWindowDuration =
|
|
328
|
+
this.constants.proofSubmissionEpochs * this.epochDuration * this.L2_SLOT_DURATION_IN_S;
|
|
329
|
+
await waitUntilL1Timestamp(this.l1Client, oneSlotBefore, undefined, proofSubmissionWindowDuration * 2);
|
|
337
330
|
}
|
|
338
331
|
|
|
339
332
|
/** Waits for the aztec node to sync to the target block number. */
|
|
@@ -370,17 +363,28 @@ export class EpochsTestContext {
|
|
|
370
363
|
return SpamContract.at(instance.address, wallet);
|
|
371
364
|
}
|
|
372
365
|
|
|
366
|
+
/** Registers the TestContract on the given wallet. */
|
|
367
|
+
public async registerTestContract(wallet: Wallet, salt = Fr.ZERO) {
|
|
368
|
+
const instance = await getContractInstanceFromInstantiationParams(TestContract.artifact, {
|
|
369
|
+
constructorArgs: [],
|
|
370
|
+
constructorArtifact: undefined,
|
|
371
|
+
salt,
|
|
372
|
+
publicKeys: undefined,
|
|
373
|
+
deployer: undefined,
|
|
374
|
+
});
|
|
375
|
+
await wallet.registerContract(instance, TestContract.artifact);
|
|
376
|
+
return TestContract.at(instance.address, wallet);
|
|
377
|
+
}
|
|
378
|
+
|
|
373
379
|
/** Creates an L1 client using a fresh account with funds from anvil, with a tx delayer already set up. */
|
|
374
380
|
public async createL1Client() {
|
|
375
|
-
const
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
this.l1Client.chain,
|
|
380
|
-
),
|
|
381
|
-
this.context.dateProvider!,
|
|
382
|
-
{ ethereumSlotDuration: this.L1_BLOCK_TIME_IN_S },
|
|
381
|
+
const rawClient = createExtendedL1Client(
|
|
382
|
+
[...this.l1Client.chain.rpcUrls.default.http],
|
|
383
|
+
privateKeyToAccount(this.getNextPrivateKey()),
|
|
384
|
+
this.l1Client.chain,
|
|
383
385
|
);
|
|
386
|
+
const delayer = createDelayer(this.context.dateProvider, { ethereumSlotDuration: this.L1_BLOCK_TIME_IN_S }, {});
|
|
387
|
+
const client = wrapClientWithDelayer(rawClient, delayer);
|
|
384
388
|
expect(await client.getBalance({ address: client.account.address })).toBeGreaterThan(0n);
|
|
385
389
|
return { client, delayer };
|
|
386
390
|
}
|
|
@@ -397,6 +401,38 @@ export class EpochsTestContext {
|
|
|
397
401
|
expect(result).toBe(expectedSuccess);
|
|
398
402
|
}
|
|
399
403
|
|
|
404
|
+
/** Verifies at least one checkpoint has the target number of blocks (for MBPS validation). */
|
|
405
|
+
public async assertMultipleBlocksPerSlot(targetBlockCount: number) {
|
|
406
|
+
const archiver = (this.context.aztecNode as AztecNodeService).getBlockSource() as Archiver;
|
|
407
|
+
const checkpoints = await archiver.getCheckpoints(CheckpointNumber(1), 50);
|
|
408
|
+
|
|
409
|
+
this.logger.warn(`Retrieved ${checkpoints.length} checkpoints from archiver`, {
|
|
410
|
+
checkpoints: checkpoints.map(pc => pc.checkpoint.getStats()),
|
|
411
|
+
});
|
|
412
|
+
|
|
413
|
+
let expectedBlockNumber = checkpoints[0].checkpoint.blocks[0].number;
|
|
414
|
+
let targetFound = false;
|
|
415
|
+
|
|
416
|
+
for (const checkpoint of checkpoints) {
|
|
417
|
+
const blockCount = checkpoint.checkpoint.blocks.length;
|
|
418
|
+
targetFound = targetFound || blockCount >= targetBlockCount;
|
|
419
|
+
|
|
420
|
+
this.logger.verbose(`Checkpoint ${checkpoint.checkpoint.number} has ${blockCount} blocks`, {
|
|
421
|
+
checkpoint: checkpoint.checkpoint.getStats(),
|
|
422
|
+
});
|
|
423
|
+
|
|
424
|
+
for (let i = 0; i < blockCount; i++) {
|
|
425
|
+
const block = checkpoint.checkpoint.blocks[i];
|
|
426
|
+
expect(block.indexWithinCheckpoint).toBe(i);
|
|
427
|
+
expect(block.checkpointNumber).toBe(checkpoint.checkpoint.number);
|
|
428
|
+
expect(block.number).toBe(expectedBlockNumber);
|
|
429
|
+
expectedBlockNumber++;
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
expect(targetFound).toBe(true);
|
|
434
|
+
}
|
|
435
|
+
|
|
400
436
|
public watchSequencerEvents(
|
|
401
437
|
sequencers: SequencerClient[],
|
|
402
438
|
getMetadata: (i: number) => Record<string, any> = () => ({}),
|
|
@@ -4,11 +4,11 @@ import type { Logger } from '@aztec/aztec.js/log';
|
|
|
4
4
|
import { Fq } from '@aztec/foundation/curves/bn254';
|
|
5
5
|
import { sleep } from '@aztec/foundation/sleep';
|
|
6
6
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
7
|
-
import type { TestWallet } from '@aztec/test-wallet/server';
|
|
8
7
|
|
|
9
8
|
import { jest } from '@jest/globals';
|
|
10
9
|
import type { Hex } from 'viem';
|
|
11
10
|
|
|
11
|
+
import type { TestWallet } from '../test-wallet/test_wallet.js';
|
|
12
12
|
import { FeesTest } from './fees_test.js';
|
|
13
13
|
|
|
14
14
|
jest.setTimeout(300_000);
|
|
@@ -67,10 +67,7 @@ describe('e2e_fees bridging_race', () => {
|
|
|
67
67
|
// Yes, we need to REFACTOR it at some point
|
|
68
68
|
const claim = await t.feeJuiceBridgeTestHarness.prepareTokensOnL1(bobsAddress);
|
|
69
69
|
const { claimSecret: secret, messageLeafIndex: index } = claim;
|
|
70
|
-
await t.feeJuiceContract.methods
|
|
71
|
-
.claim(bobsAddress, claim.claimAmount, secret, index)
|
|
72
|
-
.send({ from: bobsAddress })
|
|
73
|
-
.wait();
|
|
70
|
+
await t.feeJuiceContract.methods.claim(bobsAddress, claim.claimAmount, secret, index).send({ from: bobsAddress });
|
|
74
71
|
const [balance] = await t.getGasBalanceFn(bobsAddress);
|
|
75
72
|
expect(balance).toEqual(claim.claimAmount);
|
|
76
73
|
});
|
|
@@ -20,7 +20,6 @@ import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
|
20
20
|
import { getCanonicalFeeJuice } from '@aztec/protocol-contracts/fee-juice';
|
|
21
21
|
import { GasSettings } from '@aztec/stdlib/gas';
|
|
22
22
|
import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
|
|
23
|
-
import { TestWallet } from '@aztec/test-wallet/server';
|
|
24
23
|
|
|
25
24
|
import { getContract } from 'viem';
|
|
26
25
|
|
|
@@ -36,6 +35,7 @@ import {
|
|
|
36
35
|
import { mintTokensToPrivate } from '../fixtures/token_utils.js';
|
|
37
36
|
import { type BalancesFn, getBalancesFn, setupSponsoredFPC } from '../fixtures/utils.js';
|
|
38
37
|
import { FeeJuicePortalTestingHarnessFactory, type GasBridgingTestHarness } from '../shared/gas_portal_test_harness.js';
|
|
38
|
+
import { TestWallet } from '../test-wallet/test_wallet.js';
|
|
39
39
|
|
|
40
40
|
/**
|
|
41
41
|
* Test fixture for testing fees. Provides the following setup steps:
|
|
@@ -113,7 +113,7 @@ export class FeesTest {
|
|
|
113
113
|
});
|
|
114
114
|
|
|
115
115
|
this.rollupContract = RollupContract.getFromConfig(this.context.config);
|
|
116
|
-
this.chainMonitor = new ChainMonitor(this.rollupContract, this.context.dateProvider
|
|
116
|
+
this.chainMonitor = new ChainMonitor(this.rollupContract, this.context.dateProvider, this.logger, 200).start();
|
|
117
117
|
|
|
118
118
|
await this.applyBaseSetup();
|
|
119
119
|
|
|
@@ -126,7 +126,7 @@ export class FeesTest {
|
|
|
126
126
|
}
|
|
127
127
|
|
|
128
128
|
setIsMarkingAsProven(b: boolean) {
|
|
129
|
-
this.context.watcher
|
|
129
|
+
this.context.watcher.setIsMarkingAsProven(b);
|
|
130
130
|
}
|
|
131
131
|
|
|
132
132
|
async catchUpProvenChain() {
|
|
@@ -152,23 +152,16 @@ export class FeesTest {
|
|
|
152
152
|
async mintAndBridgeFeeJuice(minter: AztecAddress, recipient: AztecAddress) {
|
|
153
153
|
const claim = await this.feeJuiceBridgeTestHarness.prepareTokensOnL1(recipient);
|
|
154
154
|
const { claimSecret: secret, messageLeafIndex: index } = claim;
|
|
155
|
-
await this.feeJuiceContract.methods
|
|
156
|
-
.claim(recipient, claim.claimAmount, secret, index)
|
|
157
|
-
.send({ from: minter })
|
|
158
|
-
.wait();
|
|
155
|
+
await this.feeJuiceContract.methods.claim(recipient, claim.claimAmount, secret, index).send({ from: minter });
|
|
159
156
|
}
|
|
160
157
|
|
|
161
158
|
/** Alice mints bananaCoin tokens privately to the target address and redeems them. */
|
|
162
159
|
async mintPrivateBananas(amount: bigint, address: AztecAddress) {
|
|
163
|
-
const balanceBefore = await this.bananaCoin.methods
|
|
164
|
-
.balance_of_private(address)
|
|
165
|
-
.simulate({ from: this.aliceAddress });
|
|
160
|
+
const balanceBefore = await this.bananaCoin.methods.balance_of_private(address).simulate({ from: address });
|
|
166
161
|
|
|
167
162
|
await mintTokensToPrivate(this.bananaCoin, this.aliceAddress, address, amount);
|
|
168
163
|
|
|
169
|
-
const balanceAfter = await this.bananaCoin.methods
|
|
170
|
-
.balance_of_private(address)
|
|
171
|
-
.simulate({ from: this.aliceAddress });
|
|
164
|
+
const balanceAfter = await this.bananaCoin.methods.balance_of_private(address).simulate({ from: address });
|
|
172
165
|
expect(balanceAfter).toEqual(balanceBefore + amount);
|
|
173
166
|
}
|
|
174
167
|
|
|
@@ -191,8 +184,8 @@ export class FeesTest {
|
|
|
191
184
|
});
|
|
192
185
|
|
|
193
186
|
this.wallet = this.context.wallet;
|
|
194
|
-
this.aztecNode = this.context.aztecNodeService
|
|
195
|
-
this.aztecNodeAdmin = this.context.aztecNodeService
|
|
187
|
+
this.aztecNode = this.context.aztecNodeService;
|
|
188
|
+
this.aztecNodeAdmin = this.context.aztecNodeService;
|
|
196
189
|
this.gasSettings = GasSettings.default({ maxFeesPerGas: (await this.aztecNode.getCurrentMinFees()).mul(2) });
|
|
197
190
|
this.cheatCodes = this.context.cheatCodes;
|
|
198
191
|
this.accounts = deployedAccounts.map(a => a.address);
|
|
@@ -216,16 +209,11 @@ export class FeesTest {
|
|
|
216
209
|
|
|
217
210
|
this.feeJuiceContract = FeeJuiceContract.at(ProtocolContractAddress.FeeJuice, this.wallet);
|
|
218
211
|
|
|
219
|
-
this.getGasBalanceFn = getBalancesFn(
|
|
220
|
-
'⛽',
|
|
221
|
-
this.feeJuiceContract.methods.balance_of_public,
|
|
222
|
-
this.aliceAddress,
|
|
223
|
-
this.logger,
|
|
224
|
-
);
|
|
212
|
+
this.getGasBalanceFn = getBalancesFn('⛽', this.feeJuiceContract.methods.balance_of_public, this.logger);
|
|
225
213
|
|
|
226
214
|
this.feeJuiceBridgeTestHarness = await FeeJuicePortalTestingHarnessFactory.create({
|
|
227
|
-
aztecNode: this.context.aztecNodeService
|
|
228
|
-
aztecNodeAdmin: this.context.aztecNodeService
|
|
215
|
+
aztecNode: this.context.aztecNodeService,
|
|
216
|
+
aztecNodeAdmin: this.context.aztecNodeService,
|
|
229
217
|
l1Client: this.context.deployL1ContractsValues.l1Client,
|
|
230
218
|
wallet: this.wallet,
|
|
231
219
|
logger: this.logger,
|
|
@@ -235,22 +223,16 @@ export class FeesTest {
|
|
|
235
223
|
async applyDeployBananaToken() {
|
|
236
224
|
this.logger.info('Applying deploy banana token setup');
|
|
237
225
|
|
|
238
|
-
const bananaCoin = await BananaCoin.deploy(this.wallet, this.aliceAddress, 'BC', 'BC', 18n)
|
|
239
|
-
|
|
240
|
-
|
|
226
|
+
const bananaCoin = await BananaCoin.deploy(this.wallet, this.aliceAddress, 'BC', 'BC', 18n).send({
|
|
227
|
+
from: this.aliceAddress,
|
|
228
|
+
});
|
|
241
229
|
this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
|
|
242
230
|
|
|
243
231
|
this.bananaCoin = bananaCoin;
|
|
244
|
-
this.getBananaPublicBalanceFn = getBalancesFn(
|
|
245
|
-
'🍌.public',
|
|
246
|
-
this.bananaCoin.methods.balance_of_public,
|
|
247
|
-
this.aliceAddress,
|
|
248
|
-
this.logger,
|
|
249
|
-
);
|
|
232
|
+
this.getBananaPublicBalanceFn = getBalancesFn('🍌.public', this.bananaCoin.methods.balance_of_public, this.logger);
|
|
250
233
|
this.getBananaPrivateBalanceFn = getBalancesFn(
|
|
251
234
|
'🍌.private',
|
|
252
235
|
this.bananaCoin.methods.balance_of_private,
|
|
253
|
-
this.aliceAddress,
|
|
254
236
|
this.logger,
|
|
255
237
|
);
|
|
256
238
|
}
|
|
@@ -262,9 +244,9 @@ export class FeesTest {
|
|
|
262
244
|
expect((await this.wallet.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
|
|
263
245
|
|
|
264
246
|
const bananaCoin = this.bananaCoin;
|
|
265
|
-
const bananaFPC = await FPCContract.deploy(this.wallet, bananaCoin.address, this.fpcAdmin)
|
|
266
|
-
|
|
267
|
-
|
|
247
|
+
const bananaFPC = await FPCContract.deploy(this.wallet, bananaCoin.address, this.fpcAdmin).send({
|
|
248
|
+
from: this.aliceAddress,
|
|
249
|
+
});
|
|
268
250
|
|
|
269
251
|
this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
|
|
270
252
|
|
|
@@ -293,7 +275,7 @@ export class FeesTest {
|
|
|
293
275
|
|
|
294
276
|
// @todo @lherskind As we deal with #13601
|
|
295
277
|
// Right now the value is from `FeeLib.sol`
|
|
296
|
-
const L1_GAS_PER_EPOCH_VERIFIED =
|
|
278
|
+
const L1_GAS_PER_EPOCH_VERIFIED = 3600000n;
|
|
297
279
|
|
|
298
280
|
// We round up
|
|
299
281
|
const mulDiv = (a: bigint, b: bigint, c: bigint) => (a * b) / c + ((a * b) % c > 0n ? 1n : 0n);
|
|
@@ -306,10 +288,10 @@ export class FeesTest {
|
|
|
306
288
|
await this.rollupContract.getManaTarget(),
|
|
307
289
|
) + (await this.rollupContract.getProvingCostPerMana());
|
|
308
290
|
|
|
309
|
-
const price = await this.rollupContract.
|
|
291
|
+
const price = await this.rollupContract.getEthPerFeeAsset();
|
|
310
292
|
|
|
311
293
|
const mana = block!.header.totalManaUsed.toBigInt();
|
|
312
|
-
return mulDiv(mana * proverCost,
|
|
294
|
+
return mulDiv(mana * proverCost, 10n ** 12n, price);
|
|
313
295
|
};
|
|
314
296
|
}
|
|
315
297
|
|
|
@@ -331,8 +313,7 @@ export class FeesTest {
|
|
|
331
313
|
await this.mintPrivateBananas(this.ALICE_INITIAL_BANANAS, this.aliceAddress);
|
|
332
314
|
await this.bananaCoin.methods
|
|
333
315
|
.mint_to_public(this.aliceAddress, this.ALICE_INITIAL_BANANAS)
|
|
334
|
-
.send({ from: this.aliceAddress })
|
|
335
|
-
.wait();
|
|
316
|
+
.send({ from: this.aliceAddress });
|
|
336
317
|
}
|
|
337
318
|
|
|
338
319
|
public async applyFundAliceWithPrivateBananas() {
|
|
@@ -2,7 +2,7 @@ import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
|
2
2
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
3
3
|
import { BatchedBlob, Blob, getEthBlobEvaluationInputs, getPrefixedEthBlobCommitments } from '@aztec/blob-lib';
|
|
4
4
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
5
|
-
import {
|
|
5
|
+
import { L2Block } from '@aztec/stdlib/block';
|
|
6
6
|
import { CheckpointHeader } from '@aztec/stdlib/rollup';
|
|
7
7
|
|
|
8
8
|
import { writeFile } from 'fs/promises';
|
|
@@ -15,7 +15,8 @@ const AZTEC_GENERATE_TEST_DATA = !!process.env.AZTEC_GENERATE_TEST_DATA;
|
|
|
15
15
|
*/
|
|
16
16
|
export async function writeJson(
|
|
17
17
|
fileName: string,
|
|
18
|
-
|
|
18
|
+
checkpointHeader: CheckpointHeader,
|
|
19
|
+
block: L2Block,
|
|
19
20
|
l1ToL2Content: Fr[],
|
|
20
21
|
blobs: Blob[],
|
|
21
22
|
batchedBlob: BatchedBlob,
|
|
@@ -33,12 +34,6 @@ export async function writeJson(
|
|
|
33
34
|
return `0x${buffer.toString('hex').padStart(size, '0')}`;
|
|
34
35
|
};
|
|
35
36
|
|
|
36
|
-
// Create a checkpoint header for this block
|
|
37
|
-
const checkpointHeader = CheckpointHeader.random({
|
|
38
|
-
slotNumber: block.slot,
|
|
39
|
-
timestamp: block.timestamp,
|
|
40
|
-
});
|
|
41
|
-
|
|
42
37
|
const jsonObject = {
|
|
43
38
|
populate: {
|
|
44
39
|
l1ToL2Content: l1ToL2Content.map(value => asHex(value)),
|
|
@@ -44,7 +44,7 @@ export class NestedContractTest {
|
|
|
44
44
|
});
|
|
45
45
|
this.wallet = this.context.wallet;
|
|
46
46
|
[{ address: this.defaultAccountAddress }] = deployedAccounts;
|
|
47
|
-
this.aztecNode = this.context.aztecNodeService
|
|
47
|
+
this.aztecNode = this.context.aztecNodeService;
|
|
48
48
|
|
|
49
49
|
this.logger.info('Public deploy accounts');
|
|
50
50
|
await publicDeployAccounts(this.wallet, [this.defaultAccountAddress]);
|
|
@@ -65,10 +65,8 @@ export class NestedContractTest {
|
|
|
65
65
|
|
|
66
66
|
async applyManual() {
|
|
67
67
|
this.logger.info('Deploying parent and child contracts');
|
|
68
|
-
const parentContract = await ParentContract.deploy(this.wallet)
|
|
69
|
-
|
|
70
|
-
.deployed();
|
|
71
|
-
const childContract = await ChildContract.deploy(this.wallet).send({ from: this.defaultAccountAddress }).deployed();
|
|
68
|
+
const parentContract = await ParentContract.deploy(this.wallet).send({ from: this.defaultAccountAddress });
|
|
69
|
+
const childContract = await ChildContract.deploy(this.wallet).send({ from: this.defaultAccountAddress });
|
|
72
70
|
this.parentContract = parentContract;
|
|
73
71
|
this.childContract = childContract;
|
|
74
72
|
}
|
|
@@ -98,13 +98,13 @@ export class P2PInactivityTest {
|
|
|
98
98
|
this.rollup = rollup;
|
|
99
99
|
|
|
100
100
|
if (!this.keepInitialNode) {
|
|
101
|
-
await this.test.ctx.aztecNodeService
|
|
101
|
+
await this.test.ctx.aztecNodeService.stop();
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
// Create all active nodes
|
|
105
105
|
this.activeNodes = await createNodes(
|
|
106
106
|
this.test.ctx.aztecNodeConfig,
|
|
107
|
-
this.test.ctx.dateProvider
|
|
107
|
+
this.test.ctx.dateProvider,
|
|
108
108
|
this.test.bootstrapNodeEnr,
|
|
109
109
|
NUM_NODES - this.inactiveNodeCount - Number(this.keepInitialNode),
|
|
110
110
|
BOOT_NODE_UDP_PORT,
|
|
@@ -118,7 +118,7 @@ export class P2PInactivityTest {
|
|
|
118
118
|
const inactiveConfig = { ...this.test.ctx.aztecNodeConfig, dontStartSequencer: true };
|
|
119
119
|
this.inactiveNodes = await createNodes(
|
|
120
120
|
inactiveConfig,
|
|
121
|
-
this.test.ctx.dateProvider
|
|
121
|
+
this.test.ctx.dateProvider,
|
|
122
122
|
this.test.bootstrapNodeEnr,
|
|
123
123
|
this.inactiveNodeCount,
|
|
124
124
|
BOOT_NODE_UDP_PORT,
|
|
@@ -129,7 +129,7 @@ export class P2PInactivityTest {
|
|
|
129
129
|
);
|
|
130
130
|
|
|
131
131
|
this.nodes = [
|
|
132
|
-
...(this.keepInitialNode ? [this.test.ctx.aztecNodeService
|
|
132
|
+
...(this.keepInitialNode ? [this.test.ctx.aztecNodeService] : []),
|
|
133
133
|
...this.activeNodes,
|
|
134
134
|
...this.inactiveNodes,
|
|
135
135
|
];
|