@aztec/end-to-end 0.0.1-commit.29c6b1a3 → 0.0.1-commit.2c85e299c
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 +19 -11
- 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 +6 -3
- 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 +22 -12
- 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 +9 -7
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +68 -38
- 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 +18 -11
- 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 +1 -1
- package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
- package/dest/e2e_nested_contract/nested_contract_test.js +4 -6
- package/dest/e2e_p2p/p2p_network.d.ts +5 -4
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +24 -7
- 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 +16 -2
- package/dest/e2e_p2p/shared.d.ts.map +1 -1
- package/dest/e2e_p2p/shared.js +32 -5
- 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 +19 -9
- 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 +34 -41
- 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 +41 -25
- package/dest/fixtures/setup.d.ts.map +1 -1
- package/dest/fixtures/setup.js +81 -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 +5 -4
- package/dest/shared/cross_chain_test_harness.d.ts +1 -1
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.js +13 -13
- package/dest/shared/gas_portal_test_harness.js +2 -2
- 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 +13 -11
- package/dest/simulators/lending_simulator.d.ts +1 -1
- package/dest/simulators/lending_simulator.d.ts.map +1 -1
- 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 +3 -24
- 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 +35 -4
- package/dest/spartan/tx_metrics.js +1 -1
- 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 +7 -1
- package/dest/spartan/utils/config.d.ts.map +1 -1
- package/dest/spartan/utils/config.js +3 -1
- package/dest/spartan/utils/index.d.ts +5 -4
- package/dest/spartan/utils/index.d.ts.map +1 -1
- package/dest/spartan/utils/index.js +4 -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/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 +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 +46 -43
- package/src/bench/client_flows/client_flows_benchmark.ts +42 -38
- package/src/bench/client_flows/config.ts +9 -1
- package/src/bench/utils.ts +8 -3
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +28 -15
- 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 +79 -68
- package/src/e2e_fees/bridging_race.notest.ts +1 -1
- package/src/e2e_fees/fees_test.ts +20 -28
- package/src/e2e_l1_publisher/write_json.ts +1 -6
- package/src/e2e_nested_contract/nested_contract_test.ts +7 -5
- package/src/e2e_p2p/inactivity_slash_test.ts +4 -4
- package/src/e2e_p2p/p2p_network.ts +36 -10
- package/src/e2e_p2p/reqresp/utils.ts +235 -0
- package/src/e2e_p2p/shared.ts +58 -5
- 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 +26 -9
- 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 +40 -44
- 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 +106 -226
- package/src/fixtures/setup_p2p_test.ts +40 -44
- package/src/fixtures/token_utils.ts +6 -3
- package/src/guides/up_quick_start.sh +3 -3
- package/src/shared/cross_chain_test_harness.ts +13 -9
- package/src/shared/gas_portal_test_harness.ts +1 -1
- 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 +15 -15
- package/src/simulators/lending_simulator.ts +4 -2
- package/src/simulators/token_simulator.ts +6 -30
- package/src/spartan/setup_test_wallets.ts +59 -12
- package/src/spartan/tx_metrics.ts +1 -1
- package/src/spartan/utils/bot.ts +4 -1
- package/src/spartan/utils/config.ts +2 -0
- package/src/spartan/utils/index.ts +7 -1
- package/src/spartan/utils/k8s.ts +160 -0
- package/src/spartan/utils/nodes.ts +251 -31
- package/src/spartan/utils/scripts.ts +43 -7
- 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
|
@@ -7,11 +7,12 @@ import { EpochCache } from '@aztec/epoch-cache';
|
|
|
7
7
|
import { createExtendedL1Client } from '@aztec/ethereum/client';
|
|
8
8
|
import { DefaultL1ContractsConfig } from '@aztec/ethereum/config';
|
|
9
9
|
import { RollupContract } from '@aztec/ethereum/contracts';
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
10
|
+
import { createDelayer, waitUntilL1Timestamp, wrapClientWithDelayer } from '@aztec/ethereum/l1-tx-utils';
|
|
11
|
+
import { ChainMonitor } from '@aztec/ethereum/test';
|
|
12
|
+
import { CheckpointNumber, EpochNumber } from '@aztec/foundation/branded-types';
|
|
12
13
|
import { SecretValue } from '@aztec/foundation/config';
|
|
13
14
|
import { randomBytes } from '@aztec/foundation/crypto/random';
|
|
14
|
-
import {
|
|
15
|
+
import { withLoggerBindings } from '@aztec/foundation/log/server';
|
|
15
16
|
import { retryUntil } from '@aztec/foundation/retry';
|
|
16
17
|
import { sleep } from '@aztec/foundation/sleep';
|
|
17
18
|
import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
|
|
@@ -24,7 +25,7 @@ import { tryStop } from '@aztec/stdlib/interfaces/server';
|
|
|
24
25
|
import { join } from 'path';
|
|
25
26
|
import { privateKeyToAccount } from 'viem/accounts';
|
|
26
27
|
import { createAndSyncProverNode, getPrivateKeyFromIndex, setup } from '../fixtures/utils.js';
|
|
27
|
-
export const
|
|
28
|
+
export const WORLD_STATE_CHECKPOINT_HISTORY = 2;
|
|
28
29
|
export const WORLD_STATE_BLOCK_CHECK_INTERVAL = 50;
|
|
29
30
|
export const ARCHIVER_POLL_INTERVAL = 50;
|
|
30
31
|
export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
@@ -91,7 +92,7 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
91
92
|
// using the prover's eth address if the proverId is used for something in the rollup contract
|
|
92
93
|
// Use numeric EthAddress for deterministic prover id
|
|
93
94
|
proverId: EthAddress.fromNumber(1),
|
|
94
|
-
|
|
95
|
+
worldStateCheckpointHistory: WORLD_STATE_CHECKPOINT_HISTORY,
|
|
95
96
|
exitDelaySeconds: DefaultL1ContractsConfig.exitDelaySeconds,
|
|
96
97
|
slasherFlavor: 'none',
|
|
97
98
|
l1PublishingTime,
|
|
@@ -117,10 +118,8 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
117
118
|
});
|
|
118
119
|
// Loop that tracks L1 and L2 block numbers and logs whenever there's a new one.
|
|
119
120
|
this.monitor = new ChainMonitor(this.rollup, context.dateProvider, this.logger).start();
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
this.proverDelayer = context.proverNode ? context.proverNode.publisher.l1TxUtils.delayer : undefined;
|
|
123
|
-
this.sequencerDelayer = context.sequencer ? context.sequencer.sequencer.publisher.l1TxUtils.delayer : undefined;
|
|
121
|
+
this.proverDelayer = context.proverDelayer;
|
|
122
|
+
this.sequencerDelayer = context.sequencerDelayer;
|
|
124
123
|
if (context.proverNode && !this.proverDelayer || context.sequencer && !this.sequencerDelayer) {
|
|
125
124
|
throw new Error(`Could not find prover or sequencer delayer`);
|
|
126
125
|
}
|
|
@@ -132,7 +131,8 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
132
131
|
l1StartBlock: await this.rollup.getL1StartBlock(),
|
|
133
132
|
l1GenesisTime: await this.rollup.getL1GenesisTime(),
|
|
134
133
|
ethereumSlotDuration,
|
|
135
|
-
proofSubmissionEpochs: Number(await this.rollup.getProofSubmissionEpochs())
|
|
134
|
+
proofSubmissionEpochs: Number(await this.rollup.getProofSubmissionEpochs()),
|
|
135
|
+
targetCommitteeSize: await this.rollup.getTargetCommitteeSize()
|
|
136
136
|
};
|
|
137
137
|
this.logger.info(`L2 genesis at L1 block ${this.constants.l1StartBlock} (timestamp ${this.constants.l1GenesisTime})`);
|
|
138
138
|
}
|
|
@@ -145,16 +145,29 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
145
145
|
async createProverNode(opts = {}) {
|
|
146
146
|
this.logger.warn('Creating and syncing a simulated prover node...');
|
|
147
147
|
const proverNodePrivateKey = this.getNextPrivateKey();
|
|
148
|
-
const
|
|
149
|
-
const
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
148
|
+
const proverIndex = this.proverNodes.length + 1;
|
|
149
|
+
const { mockGossipSubNetwork } = this.context;
|
|
150
|
+
const { proverNode } = await withLoggerBindings({
|
|
151
|
+
actor: `prover-${proverIndex}`
|
|
152
|
+
}, ()=>createAndSyncProverNode(proverNodePrivateKey, {
|
|
153
|
+
...this.context.config,
|
|
154
|
+
p2pEnabled: this.context.config.p2pEnabled || mockGossipSubNetwork !== undefined,
|
|
155
|
+
proverId: EthAddress.fromNumber(proverIndex),
|
|
154
156
|
dontStart: opts.dontStart,
|
|
155
157
|
...opts
|
|
156
|
-
},
|
|
157
|
-
|
|
158
|
+
}, {
|
|
159
|
+
dataDirectory: join(this.context.config.dataDirectory, randomBytes(8).toString('hex'))
|
|
160
|
+
}, {
|
|
161
|
+
dateProvider: this.context.dateProvider,
|
|
162
|
+
p2pClientDeps: {
|
|
163
|
+
p2pServiceFactory: mockGossipSubNetwork ? getMockPubSubP2PServiceFactory(mockGossipSubNetwork) : undefined,
|
|
164
|
+
rpcTxProviders: [
|
|
165
|
+
this.context.aztecNode
|
|
166
|
+
]
|
|
167
|
+
}
|
|
168
|
+
}, {
|
|
169
|
+
prefilledPublicData: this.context.prefilledPublicData ?? [],
|
|
170
|
+
dontStart: opts.dontStart
|
|
158
171
|
}));
|
|
159
172
|
this.proverNodes.push(proverNode);
|
|
160
173
|
return proverNode;
|
|
@@ -175,7 +188,8 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
175
188
|
});
|
|
176
189
|
}
|
|
177
190
|
async createNode(opts = {}) {
|
|
178
|
-
const
|
|
191
|
+
const nodeIndex = this.nodes.length + 1;
|
|
192
|
+
const actorPrefix = opts.disableValidator ? 'node' : 'validator';
|
|
179
193
|
const { mockGossipSubNetwork } = this.context;
|
|
180
194
|
const resolvedConfig = {
|
|
181
195
|
...this.context.config,
|
|
@@ -183,7 +197,9 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
183
197
|
};
|
|
184
198
|
const p2pEnabled = resolvedConfig.p2pEnabled || mockGossipSubNetwork !== undefined;
|
|
185
199
|
const p2pIp = resolvedConfig.p2pIp ?? (p2pEnabled ? '127.0.0.1' : undefined);
|
|
186
|
-
const node = await
|
|
200
|
+
const node = await withLoggerBindings({
|
|
201
|
+
actor: `${actorPrefix}-${nodeIndex}`
|
|
202
|
+
}, ()=>AztecNodeService.createAndSync({
|
|
187
203
|
...resolvedConfig,
|
|
188
204
|
dataDirectory: join(this.context.config.dataDirectory, randomBytes(8).toString('hex')),
|
|
189
205
|
validatorPrivateKeys: opts.validatorPrivateKeys ?? new SecretValue([]),
|
|
@@ -198,20 +214,6 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
198
214
|
prefilledPublicData: this.context.prefilledPublicData,
|
|
199
215
|
...opts
|
|
200
216
|
}));
|
|
201
|
-
// REFACTOR: We're getting too much into the internals of the sequencer here.
|
|
202
|
-
// We should have a single method for constructing an aztec node that returns a TestAztecNodeService
|
|
203
|
-
// which directly exposes the delayer and sets any test config.
|
|
204
|
-
if (opts.txDelayerMaxInclusionTimeIntoSlot !== undefined) {
|
|
205
|
-
this.logger.info(`Setting tx delayer max inclusion time into slot to ${opts.txDelayerMaxInclusionTimeIntoSlot} seconds`);
|
|
206
|
-
// 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.
|
|
207
|
-
// The delayer needs a wallet (a client that can sign), so we have to create one here.
|
|
208
|
-
const l1Client = createExtendedL1Client(resolvedConfig.l1RpcUrls, resolvedConfig.publisherPrivateKeys[0].getValue());
|
|
209
|
-
const sequencer = node.getSequencer();
|
|
210
|
-
const publisher = sequencer.sequencer.publisher;
|
|
211
|
-
const delayed = DelayedTxUtils.fromL1TxUtils(publisher.l1TxUtils, this.L1_BLOCK_TIME_IN_S, l1Client);
|
|
212
|
-
delayed.delayer.setMaxInclusionTimeIntoSlot(opts.txDelayerMaxInclusionTimeIntoSlot);
|
|
213
|
-
publisher.l1TxUtils = delayed;
|
|
214
|
-
}
|
|
215
217
|
this.nodes.push(node);
|
|
216
218
|
return node;
|
|
217
219
|
}
|
|
@@ -239,7 +241,9 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
239
241
|
this.logger.info(`Waiting until last slot of submission window for epoch ${epochNumber} at ${date}`, {
|
|
240
242
|
oneSlotBefore
|
|
241
243
|
});
|
|
242
|
-
|
|
244
|
+
// Use a timeout that accounts for the full proof submission window
|
|
245
|
+
const proofSubmissionWindowDuration = this.constants.proofSubmissionEpochs * this.epochDuration * this.L2_SLOT_DURATION_IN_S;
|
|
246
|
+
await waitUntilL1Timestamp(this.l1Client, oneSlotBefore, undefined, proofSubmissionWindowDuration * 2);
|
|
243
247
|
}
|
|
244
248
|
/** Waits for the aztec node to sync to the target block number. */ async waitForNodeToSync(blockNumber, type) {
|
|
245
249
|
const waitTime = ARCHIVER_POLL_INTERVAL + WORLD_STATE_BLOCK_CHECK_INTERVAL;
|
|
@@ -288,11 +292,13 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
288
292
|
return TestContract.at(instance.address, wallet);
|
|
289
293
|
}
|
|
290
294
|
/** Creates an L1 client using a fresh account with funds from anvil, with a tx delayer already set up. */ async createL1Client() {
|
|
291
|
-
const
|
|
295
|
+
const rawClient = createExtendedL1Client([
|
|
292
296
|
...this.l1Client.chain.rpcUrls.default.http
|
|
293
|
-
], privateKeyToAccount(this.getNextPrivateKey()), this.l1Client.chain)
|
|
297
|
+
], privateKeyToAccount(this.getNextPrivateKey()), this.l1Client.chain);
|
|
298
|
+
const delayer = createDelayer(this.context.dateProvider, {
|
|
294
299
|
ethereumSlotDuration: this.L1_BLOCK_TIME_IN_S
|
|
295
|
-
});
|
|
300
|
+
}, {});
|
|
301
|
+
const client = wrapClientWithDelayer(rawClient, delayer);
|
|
296
302
|
expect(await client.getBalance({
|
|
297
303
|
address: client.account.address
|
|
298
304
|
})).toBeGreaterThan(0n);
|
|
@@ -310,6 +316,30 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
310
316
|
]).then((_)=>true).catch((_)=>false);
|
|
311
317
|
expect(result).toBe(expectedSuccess);
|
|
312
318
|
}
|
|
319
|
+
/** Verifies at least one checkpoint has the target number of blocks (for MBPS validation). */ async assertMultipleBlocksPerSlot(targetBlockCount) {
|
|
320
|
+
const archiver = this.context.aztecNode.getBlockSource();
|
|
321
|
+
const checkpoints = await archiver.getCheckpoints(CheckpointNumber(1), 50);
|
|
322
|
+
this.logger.warn(`Retrieved ${checkpoints.length} checkpoints from archiver`, {
|
|
323
|
+
checkpoints: checkpoints.map((pc)=>pc.checkpoint.getStats())
|
|
324
|
+
});
|
|
325
|
+
let expectedBlockNumber = checkpoints[0].checkpoint.blocks[0].number;
|
|
326
|
+
let targetFound = false;
|
|
327
|
+
for (const checkpoint of checkpoints){
|
|
328
|
+
const blockCount = checkpoint.checkpoint.blocks.length;
|
|
329
|
+
targetFound = targetFound || blockCount >= targetBlockCount;
|
|
330
|
+
this.logger.verbose(`Checkpoint ${checkpoint.checkpoint.number} has ${blockCount} blocks`, {
|
|
331
|
+
checkpoint: checkpoint.checkpoint.getStats()
|
|
332
|
+
});
|
|
333
|
+
for(let i = 0; i < blockCount; i++){
|
|
334
|
+
const block = checkpoint.checkpoint.blocks[i];
|
|
335
|
+
expect(block.indexWithinCheckpoint).toBe(i);
|
|
336
|
+
expect(block.checkpointNumber).toBe(checkpoint.checkpoint.number);
|
|
337
|
+
expect(block.number).toBe(expectedBlockNumber);
|
|
338
|
+
expectedBlockNumber++;
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
expect(targetFound).toBe(true);
|
|
342
|
+
}
|
|
313
343
|
watchSequencerEvents(sequencers, getMetadata = ()=>({})) {
|
|
314
344
|
const stateChanges = [];
|
|
315
345
|
const failEvents = [];
|
|
@@ -15,10 +15,10 @@ import { TokenContract as BananaCoin } from '@aztec/noir-contracts.js/Token';
|
|
|
15
15
|
import { CounterContract } from '@aztec/noir-test-contracts.js/Counter';
|
|
16
16
|
import { GasSettings } from '@aztec/stdlib/gas';
|
|
17
17
|
import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
|
|
18
|
-
import { TestWallet } from '@aztec/test-wallet/server';
|
|
19
18
|
import { type EndToEndContext, type SetupOptions } from '../fixtures/setup.js';
|
|
20
19
|
import { type BalancesFn } from '../fixtures/utils.js';
|
|
21
20
|
import { type GasBridgingTestHarness } from '../shared/gas_portal_test_harness.js';
|
|
21
|
+
import { TestWallet } from '../test-wallet/test_wallet.js';
|
|
22
22
|
/**
|
|
23
23
|
* Test fixture for testing fees. Provides the following setup steps:
|
|
24
24
|
* InitialAccounts: Initializes 3 Schnorr account contracts.
|
|
@@ -85,4 +85,4 @@ export declare class FeesTest {
|
|
|
85
85
|
applyFundAliceWithBananas(): Promise<void>;
|
|
86
86
|
applyFundAliceWithPrivateBananas(): Promise<void>;
|
|
87
87
|
}
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlc190ZXN0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZTJlX2ZlZXMvZmVlc190ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFpQyxNQUFNLHNCQUFzQixDQUFDO0FBRWpGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEtBQUssRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRzNELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsYUFBYSxJQUFJLFVBQVUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUd4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFL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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fees_test.d.ts","sourceRoot":"","sources":["../../src/e2e_fees/fees_test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"fees_test.d.ts","sourceRoot":"","sources":["../../src/e2e_fees/fees_test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAiC,MAAM,sBAAsB,CAAC;AAEjF,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,aAAa,IAAI,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAGxE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAKtE,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,YAAY,EAKlB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,KAAK,UAAU,EAAoC,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAAuC,KAAK,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AACxH,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D;;;;;;;;;GASG;AACH,qBAAa,QAAQ;IA4CjB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,YAAY;IA5CtB,OAAO,CAAC,QAAQ,CAAsB;IAC/B,OAAO,EAAG,eAAe,CAAC;IAE1B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAG,SAAS,CAAC;IACtB,cAAc,EAAG,cAAc,CAAC;IAChC,UAAU,EAAG,UAAU,CAAC;IAExB,MAAM,EAAG,UAAU,CAAC;IACpB,YAAY,EAAG,YAAY,CAAC;IAC5B,UAAU,EAAG,YAAY,CAAC;IAC1B,gBAAgB,EAAG,YAAY,CAAC;IAChC,QAAQ,EAAG,UAAU,CAAC;IAEtB,QAAQ,EAAG,YAAY,CAAC;IAExB,WAAW,EAAG,WAAW,CAAC;IAE1B,cAAc,EAAG,cAAc,CAAC;IAEhC,gBAAgB,EAAG,gBAAgB,CAAC;IACpC,UAAU,EAAG,UAAU,CAAC;IACxB,SAAS,EAAG,WAAW,CAAC;IACxB,YAAY,EAAG,oBAAoB,CAAC;IACpC,eAAe,EAAG,eAAe,CAAC;IAClC,oBAAoB,EAAG,uBAAuB,CAAC;IAC/C,yBAAyB,EAAG,sBAAsB,CAAC;IAEnD,YAAY,EAAG,YAAY,CAAC;IAE5B,kBAAkB,EAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,2BAA2B,EAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,eAAe,EAAG,UAAU,CAAC;IAC7B,wBAAwB,EAAG,UAAU,CAAC;IACtC,yBAAyB,EAAG,UAAU,CAAC;IACvC,YAAY,EAAG,CAAC,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAEpE,SAAgB,qBAAqB,SAAgB;IACrD,SAAgB,mBAAmB,SAAgB;IACnD,SAAgB,0BAA0B,SAAgB;IAE1D,YACE,QAAQ,EAAE,MAAM,EACR,gBAAgB,SAAI,EACpB,YAAY,GAAE,OAAO,CAAC,YAAY,GAAG,0BAA0B,CAAM,EAQ9E;IAEK,KAAK,kBAmBV;IAEK,QAAQ,kBAGb;IAED,oBAAoB,CAAC,CAAC,EAAE,OAAO,QAE9B;IAEK,kBAAkB,kBAKvB;IAEK,eAAe;;;OAWpB;IAEK,qBAAqB,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,iBAIxE;IAED,sFAAsF;IAChF,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,iBAW7D;IAEY,cAAc,kBAK1B;IAEK,oBAAoB,kBAyBzB;IAEK,yBAAyB,kBAG9B;IAEK,kBAAkB,kBAcvB;IAEK,sBAAsB,kBAe3B;IAEY,aAAa,kBAwDzB;IAEY,sBAAsB,kBAUlC;IAEY,yBAAyB,kBAOrC;IAEY,gCAAgC,kBAI5C;CACF"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createLogger } from '@aztec/aztec.js/log';
|
|
2
|
+
import { getTokenAllowedSetupFunctions } from '@aztec/aztec/testing';
|
|
2
3
|
import { createExtendedL1Client } from '@aztec/ethereum/client';
|
|
3
4
|
import { RollupContract } from '@aztec/ethereum/contracts';
|
|
4
5
|
import { ChainMonitor } from '@aztec/ethereum/test';
|
|
@@ -77,6 +78,8 @@ import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_h
|
|
|
77
78
|
}
|
|
78
79
|
async setup() {
|
|
79
80
|
this.logger.verbose('Setting up fresh context...');
|
|
81
|
+
// Token allowlist entries are test-only: FPC-based fee payment with custom tokens won't work on mainnet alpha.
|
|
82
|
+
const tokenAllowList = await getTokenAllowedSetupFunctions();
|
|
80
83
|
this.context = await setup(0, {
|
|
81
84
|
startProverNode: true,
|
|
82
85
|
...this.setupOptions,
|
|
@@ -84,7 +87,11 @@ import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_h
|
|
|
84
87
|
skipAccountDeployment: true,
|
|
85
88
|
l1ContractsArgs: {
|
|
86
89
|
...this.setupOptions
|
|
87
|
-
}
|
|
90
|
+
},
|
|
91
|
+
txPublicSetupAllowListExtend: [
|
|
92
|
+
...this.setupOptions.txPublicSetupAllowListExtend ?? [],
|
|
93
|
+
...tokenAllowList
|
|
94
|
+
]
|
|
88
95
|
});
|
|
89
96
|
this.rollupContract = RollupContract.getFromConfig(this.context.config);
|
|
90
97
|
this.chainMonitor = new ChainMonitor(this.rollupContract, this.context.dateProvider, this.logger, 200).start();
|
|
@@ -124,12 +131,12 @@ import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_h
|
|
|
124
131
|
});
|
|
125
132
|
}
|
|
126
133
|
/** Alice mints bananaCoin tokens privately to the target address and redeems them. */ async mintPrivateBananas(amount, address) {
|
|
127
|
-
const balanceBefore = await this.bananaCoin.methods.balance_of_private(address).simulate({
|
|
128
|
-
from:
|
|
134
|
+
const { result: balanceBefore } = await this.bananaCoin.methods.balance_of_private(address).simulate({
|
|
135
|
+
from: address
|
|
129
136
|
});
|
|
130
137
|
await mintTokensToPrivate(this.bananaCoin, this.aliceAddress, address, amount);
|
|
131
|
-
const balanceAfter = await this.bananaCoin.methods.balance_of_private(address).simulate({
|
|
132
|
-
from:
|
|
138
|
+
const { result: balanceAfter } = await this.bananaCoin.methods.balance_of_private(address).simulate({
|
|
139
|
+
from: address
|
|
133
140
|
});
|
|
134
141
|
expect(balanceAfter).toEqual(balanceBefore + amount);
|
|
135
142
|
}
|
|
@@ -167,7 +174,7 @@ import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_h
|
|
|
167
174
|
async applySetupFeeJuice() {
|
|
168
175
|
this.logger.info('Applying fee juice setup');
|
|
169
176
|
this.feeJuiceContract = FeeJuiceContract.at(ProtocolContractAddress.FeeJuice, this.wallet);
|
|
170
|
-
this.getGasBalanceFn = getBalancesFn('⛽', this.feeJuiceContract.methods.balance_of_public, this.
|
|
177
|
+
this.getGasBalanceFn = getBalancesFn('⛽', this.feeJuiceContract.methods.balance_of_public, this.logger);
|
|
171
178
|
this.feeJuiceBridgeTestHarness = await FeeJuicePortalTestingHarnessFactory.create({
|
|
172
179
|
aztecNode: this.context.aztecNodeService,
|
|
173
180
|
aztecNodeAdmin: this.context.aztecNodeService,
|
|
@@ -178,20 +185,20 @@ import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_h
|
|
|
178
185
|
}
|
|
179
186
|
async applyDeployBananaToken() {
|
|
180
187
|
this.logger.info('Applying deploy banana token setup');
|
|
181
|
-
const bananaCoin = await BananaCoin.deploy(this.wallet, this.aliceAddress, 'BC', 'BC', 18n).send({
|
|
188
|
+
const { contract: bananaCoin } = await BananaCoin.deploy(this.wallet, this.aliceAddress, 'BC', 'BC', 18n).send({
|
|
182
189
|
from: this.aliceAddress
|
|
183
190
|
});
|
|
184
191
|
this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
|
|
185
192
|
this.bananaCoin = bananaCoin;
|
|
186
|
-
this.getBananaPublicBalanceFn = getBalancesFn('🍌.public', this.bananaCoin.methods.balance_of_public, this.
|
|
187
|
-
this.getBananaPrivateBalanceFn = getBalancesFn('🍌.private', this.bananaCoin.methods.balance_of_private, this.
|
|
193
|
+
this.getBananaPublicBalanceFn = getBalancesFn('🍌.public', this.bananaCoin.methods.balance_of_public, this.logger);
|
|
194
|
+
this.getBananaPrivateBalanceFn = getBalancesFn('🍌.private', this.bananaCoin.methods.balance_of_private, this.logger);
|
|
188
195
|
}
|
|
189
196
|
async applyFPCSetup() {
|
|
190
197
|
this.logger.info('Applying FPC setup');
|
|
191
198
|
const feeJuiceContract = this.feeJuiceBridgeTestHarness.feeJuice;
|
|
192
199
|
expect((await this.wallet.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
|
|
193
200
|
const bananaCoin = this.bananaCoin;
|
|
194
|
-
const bananaFPC = await FPCContract.deploy(this.wallet, bananaCoin.address, this.fpcAdmin).send({
|
|
201
|
+
const { contract: bananaFPC } = await FPCContract.deploy(this.wallet, bananaCoin.address, this.fpcAdmin).send({
|
|
195
202
|
from: this.aliceAddress
|
|
196
203
|
});
|
|
197
204
|
this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
|
|
@@ -216,7 +223,7 @@ import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_h
|
|
|
216
223
|
const block = await this.aztecNode.getBlock(blockNumber);
|
|
217
224
|
// @todo @lherskind As we deal with #13601
|
|
218
225
|
// Right now the value is from `FeeLib.sol`
|
|
219
|
-
const L1_GAS_PER_EPOCH_VERIFIED =
|
|
226
|
+
const L1_GAS_PER_EPOCH_VERIFIED = 3600000n;
|
|
220
227
|
// We round up
|
|
221
228
|
const mulDiv = (a, b, c)=>a * b / c + (a * b % c > 0n ? 1n : 0n);
|
|
222
229
|
const { baseFee } = await this.rollupContract.getL1FeesAt(block.header.globalVariables.timestamp);
|
|
@@ -2,9 +2,10 @@ import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
|
2
2
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
3
3
|
import { BatchedBlob, Blob } from '@aztec/blob-lib';
|
|
4
4
|
import { L2Block } from '@aztec/stdlib/block';
|
|
5
|
+
import { CheckpointHeader } from '@aztec/stdlib/rollup';
|
|
5
6
|
/**
|
|
6
7
|
* Creates a json object that can be used to test the solidity contract.
|
|
7
8
|
* The json object must be put into
|
|
8
9
|
*/
|
|
9
|
-
export declare function writeJson(fileName: string, block: L2Block, l1ToL2Content: Fr[], blobs: Blob[], batchedBlob: BatchedBlob, recipientAddress: AztecAddress, deployerAddress: `0x${string}`): Promise<void>;
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
export declare function writeJson(fileName: string, checkpointHeader: CheckpointHeader, block: L2Block, l1ToL2Content: Fr[], blobs: Blob[], batchedBlob: BatchedBlob, recipientAddress: AztecAddress, deployerAddress: `0x${string}`): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGVfanNvbi5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2UyZV9sMV9wdWJsaXNoZXIvd3JpdGVfanNvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUE2RCxNQUFNLGlCQUFpQixDQUFDO0FBRS9HLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQU14RDs7O0dBR0c7QUFDSCx3QkFBc0IsU0FBUyxDQUM3QixRQUFRLEVBQUUsTUFBTSxFQUNoQixnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFDbEMsS0FBSyxFQUFFLE9BQU8sRUFDZCxhQUFhLEVBQUUsRUFBRSxFQUFFLEVBQ25CLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFDYixXQUFXLEVBQUUsV0FBVyxFQUN4QixnQkFBZ0IsRUFBRSxZQUFZLEVBQzlCLGVBQWUsRUFBRSxLQUFLLE1BQU0sRUFBRSxHQUM3QixPQUFPLENBQUMsSUFBSSxDQUFDLENBb0RmIn0=
|
|
@@ -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,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,IAAI,EAA6D,MAAM,iBAAiB,CAAC;AAE/G,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;
|
|
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,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,IAAI,EAA6D,MAAM,iBAAiB,CAAC;AAE/G,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAMxD;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,gBAAgB,EAClC,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,CAoDf"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { getEthBlobEvaluationInputs, getPrefixedEthBlobCommitments } from '@aztec/blob-lib';
|
|
2
|
-
import { CheckpointHeader } from '@aztec/stdlib/rollup';
|
|
3
2
|
import { writeFile } from 'fs/promises';
|
|
4
3
|
const AZTEC_GENERATE_TEST_DATA = !!process.env.AZTEC_GENERATE_TEST_DATA;
|
|
5
4
|
/**
|
|
6
5
|
* Creates a json object that can be used to test the solidity contract.
|
|
7
6
|
* The json object must be put into
|
|
8
|
-
*/ export async function writeJson(fileName, block, l1ToL2Content, blobs, batchedBlob, recipientAddress, deployerAddress) {
|
|
7
|
+
*/ export async function writeJson(fileName, checkpointHeader, block, l1ToL2Content, blobs, batchedBlob, recipientAddress, deployerAddress) {
|
|
9
8
|
if (!AZTEC_GENERATE_TEST_DATA) {
|
|
10
9
|
return;
|
|
11
10
|
}
|
|
@@ -15,11 +14,6 @@ const AZTEC_GENERATE_TEST_DATA = !!process.env.AZTEC_GENERATE_TEST_DATA;
|
|
|
15
14
|
const buffer = Buffer.isBuffer(value) ? value : value.toBuffer();
|
|
16
15
|
return `0x${buffer.toString('hex').padStart(size, '0')}`;
|
|
17
16
|
};
|
|
18
|
-
// Create a checkpoint header for this block
|
|
19
|
-
const checkpointHeader = CheckpointHeader.random({
|
|
20
|
-
slotNumber: block.slot,
|
|
21
|
-
timestamp: block.timestamp
|
|
22
|
-
});
|
|
23
17
|
const jsonObject = {
|
|
24
18
|
populate: {
|
|
25
19
|
l1ToL2Content: l1ToL2Content.map((value)=>asHex(value)),
|
|
@@ -23,4 +23,4 @@ export declare class NestedContractTest {
|
|
|
23
23
|
teardown(): Promise<void>;
|
|
24
24
|
applyManual(): Promise<void>;
|
|
25
25
|
}
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVzdGVkX2NvbnRyYWN0X3Rlc3QuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lMmVfbmVzdGVkX2NvbnRyYWN0L25lc3RlZF9jb250cmFjdF90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUV0RSxPQUFPLEVBQ0wsS0FBSyxlQUFlLEVBS3JCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIscUJBQWEsa0JBQWtCO0lBWTNCLE9BQU8sQ0FBQyxnQkFBZ0I7SUFYMUIsT0FBTyxFQUFHLGVBQWUsQ0FBQztJQUMxQixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2YsTUFBTSxFQUFHLE1BQU0sQ0FBQztJQUNoQixxQkFBcUIsRUFBRyxZQUFZLENBQUM7SUFDckMsU0FBUyxFQUFHLFNBQVMsQ0FBQztJQUV0QixjQUFjLEVBQUcsY0FBYyxDQUFDO0lBQ2hDLGFBQWEsRUFBRyxhQUFhLENBQUM7SUFFOUIsWUFDRSxRQUFRLEVBQUUsTUFBTSxFQUNSLGdCQUFnQixTQUFJLEVBRzdCO0lBRUQ7O09BRUc7SUFDRyxjQUFjLGtCQWVuQjtJQUVLLEtBQUssa0JBT1Y7SUFFSyxRQUFRLGtCQUViO0lBRUssV0FBVyxrQkFRaEI7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nested_contract_test.d.ts","sourceRoot":"","sources":["../../src/e2e_nested_contract/nested_contract_test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAEtE,OAAO,EACL,KAAK,eAAe,EAKrB,MAAM,sBAAsB,CAAC;AAE9B,qBAAa,kBAAkB;IAY3B,OAAO,CAAC,gBAAgB;IAX1B,OAAO,EAAG,eAAe,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAG,MAAM,CAAC;IAChB,qBAAqB,EAAG,YAAY,CAAC;IACrC,SAAS,EAAG,SAAS,CAAC;IAEtB,cAAc,EAAG,cAAc,CAAC;IAChC,aAAa,EAAG,aAAa,CAAC;IAE9B,YACE,QAAQ,EAAE,MAAM,EACR,gBAAgB,SAAI,EAG7B;IAED;;OAEG;IACG,cAAc,kBAenB;IAEK,KAAK,kBAOV;IAEK,QAAQ,kBAEb;IAEK,WAAW,
|
|
1
|
+
{"version":3,"file":"nested_contract_test.d.ts","sourceRoot":"","sources":["../../src/e2e_nested_contract/nested_contract_test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAEtE,OAAO,EACL,KAAK,eAAe,EAKrB,MAAM,sBAAsB,CAAC;AAE9B,qBAAa,kBAAkB;IAY3B,OAAO,CAAC,gBAAgB;IAX1B,OAAO,EAAG,eAAe,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAG,MAAM,CAAC;IAChB,qBAAqB,EAAG,YAAY,CAAC;IACrC,SAAS,EAAG,SAAS,CAAC;IAEtB,cAAc,EAAG,cAAc,CAAC;IAChC,aAAa,EAAG,aAAa,CAAC;IAE9B,YACE,QAAQ,EAAE,MAAM,EACR,gBAAgB,SAAI,EAG7B;IAED;;OAEG;IACG,cAAc,kBAenB;IAEK,KAAK,kBAOV;IAEK,QAAQ,kBAEb;IAEK,WAAW,kBAQhB;CACF"}
|
|
@@ -44,13 +44,11 @@ export class NestedContractTest {
|
|
|
44
44
|
}
|
|
45
45
|
async applyManual() {
|
|
46
46
|
this.logger.info('Deploying parent and child contracts');
|
|
47
|
-
|
|
47
|
+
({ contract: this.parentContract } = await ParentContract.deploy(this.wallet).send({
|
|
48
48
|
from: this.defaultAccountAddress
|
|
49
|
-
});
|
|
50
|
-
|
|
49
|
+
}));
|
|
50
|
+
({ contract: this.childContract } = await ChildContract.deploy(this.wallet).send({
|
|
51
51
|
from: this.defaultAccountAddress
|
|
52
|
-
});
|
|
53
|
-
this.parentContract = parentContract;
|
|
54
|
-
this.childContract = childContract;
|
|
52
|
+
}));
|
|
55
53
|
}
|
|
56
54
|
}
|
|
@@ -10,15 +10,16 @@ import { SlasherAbi } from '@aztec/l1-artifacts';
|
|
|
10
10
|
import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
|
|
11
11
|
import type { BootstrapNode } from '@aztec/p2p/bootstrap';
|
|
12
12
|
import { SlashFactoryContract } from '@aztec/stdlib/l1-contracts';
|
|
13
|
+
import { TopicType } from '@aztec/stdlib/p2p';
|
|
13
14
|
import type { PublicDataTreeLeaf } from '@aztec/stdlib/trees';
|
|
14
|
-
import type { TestWallet } from '@aztec/test-wallet/server';
|
|
15
15
|
import { type GetContractReturnType } from 'viem';
|
|
16
16
|
import { type EndToEndContext, type SetupOptions } from '../fixtures/setup.js';
|
|
17
|
+
import type { TestWallet } from '../test-wallet/test_wallet.js';
|
|
17
18
|
export declare const WAIT_FOR_TX_TIMEOUT: number;
|
|
18
19
|
export declare const SHORTENED_BLOCK_TIME_CONFIG_NO_PRUNES: {
|
|
19
20
|
aztecSlotDuration: number;
|
|
20
21
|
ethereumSlotDuration: number;
|
|
21
|
-
|
|
22
|
+
aztecProofSubmissionEpochs: number;
|
|
22
23
|
};
|
|
23
24
|
export declare class P2PNetworkTest {
|
|
24
25
|
readonly testName: string;
|
|
@@ -303,7 +304,7 @@ export declare class P2PNetworkTest {
|
|
|
303
304
|
* @param timeoutSeconds - Maximum time to wait for connections (default: 30 seconds)
|
|
304
305
|
* @param checkIntervalSeconds - How often to check connectivity (default: 0.1 seconds)
|
|
305
306
|
*/
|
|
306
|
-
waitForP2PMeshConnectivity(nodes: AztecNodeService[], expectedNodeCount?: number, timeoutSeconds?: number, checkIntervalSeconds?: number): Promise<void>;
|
|
307
|
+
waitForP2PMeshConnectivity(nodes: AztecNodeService[], expectedNodeCount?: number, timeoutSeconds?: number, checkIntervalSeconds?: number, topics?: TopicType[]): Promise<void>;
|
|
307
308
|
teardown(): Promise<void>;
|
|
308
309
|
getContracts(): Promise<{
|
|
309
310
|
rollup: RollupContract;
|
|
@@ -312,4 +313,4 @@ export declare class P2PNetworkTest {
|
|
|
312
313
|
slashFactory: SlashFactoryContract;
|
|
313
314
|
}>;
|
|
314
315
|
}
|
|
315
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
316
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicDJwX25ldHdvcmsuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lMmVfcDJwL3AycF9uZXR3b3JrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEUsT0FBTyxLQUFLLEVBQW1CLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDM0UsT0FBTyxFQUFFLFlBQVksRUFBYyxNQUFNLDJCQUEyQixDQUFDO0FBR3JFLE9BQU8sRUFDTCxLQUFLLDhCQUE4QixFQUVuQyxjQUFjLEVBQ2QsS0FBSyw2QkFBNkIsRUFDbkMsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUkxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQTRCLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR2xGLE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUVsRSxPQUFPLEVBQWEsVUFBVSxFQUFnQixNQUFNLHFCQUFxQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNsRSxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUcxRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUs5RCxPQUFPLEVBQUUsS0FBSyxxQkFBcUIsRUFBMkIsTUFBTSxNQUFNLENBQUM7QUFHM0UsT0FBTyxFQUNMLEtBQUssZUFBZSxFQUNwQixLQUFLLFlBQVks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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"p2p_network.d.ts","sourceRoot":"","sources":["../../src/e2e_p2p/p2p_network.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAmB,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAc,MAAM,2BAA2B,CAAC;AAGrE,OAAO,EACL,KAAK,8BAA8B,EAEnC,cAAc,EACd,KAAK,6BAA6B,EACnC,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2CAA2C,CAAC;AAI1E,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAA4B,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGlF,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAElE,OAAO,EAAa,UAAU,EAAgB,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,
|
|
1
|
+
{"version":3,"file":"p2p_network.d.ts","sourceRoot":"","sources":["../../src/e2e_p2p/p2p_network.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { getL1ContractsConfigEnvVars } from '@aztec/ethereum/config';
|
|
|
4
4
|
import { GSEContract, RollupContract } from '@aztec/ethereum/contracts';
|
|
5
5
|
import { deployL1Contract } from '@aztec/ethereum/deploy-l1-contract';
|
|
6
6
|
import { MultiAdderArtifact } from '@aztec/ethereum/l1-artifacts';
|
|
7
|
-
import {
|
|
7
|
+
import { createL1TxUtils } from '@aztec/ethereum/l1-tx-utils';
|
|
8
8
|
import { ChainMonitor } from '@aztec/ethereum/test';
|
|
9
9
|
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
10
10
|
import { SecretValue } from '@aztec/foundation/config';
|
|
@@ -15,6 +15,7 @@ import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
|
|
|
15
15
|
import { createBootstrapNodeFromPrivateKey, getBootstrapNodeEnr } from '@aztec/p2p/test-helpers';
|
|
16
16
|
import { tryStop } from '@aztec/stdlib/interfaces/server';
|
|
17
17
|
import { SlashFactoryContract } from '@aztec/stdlib/l1-contracts';
|
|
18
|
+
import { TopicType } from '@aztec/stdlib/p2p';
|
|
18
19
|
import { ZkPassportProofParams } from '@aztec/stdlib/zkpassport';
|
|
19
20
|
import { getGenesisValues } from '@aztec/world-state/testing';
|
|
20
21
|
import getPort from 'get-port';
|
|
@@ -30,7 +31,7 @@ export const WAIT_FOR_TX_TIMEOUT = l1ContractsConfig.aztecSlotDuration * 3;
|
|
|
30
31
|
export const SHORTENED_BLOCK_TIME_CONFIG_NO_PRUNES = {
|
|
31
32
|
aztecSlotDuration: 12,
|
|
32
33
|
ethereumSlotDuration: 4,
|
|
33
|
-
|
|
34
|
+
aztecProofSubmissionEpochs: 640
|
|
34
35
|
};
|
|
35
36
|
export class P2PNetworkTest {
|
|
36
37
|
testName;
|
|
@@ -219,10 +220,9 @@ export class P2PNetworkTest {
|
|
|
219
220
|
if (!this.wallet) {
|
|
220
221
|
throw new Error('Call setupAccount before deploying spam contract');
|
|
221
222
|
}
|
|
222
|
-
|
|
223
|
+
({ contract: this.spamContract } = await SpamContract.deploy(this.wallet).send({
|
|
223
224
|
from: this.defaultAccountAddress
|
|
224
|
-
});
|
|
225
|
-
this.spamContract = spamContract;
|
|
225
|
+
}));
|
|
226
226
|
}
|
|
227
227
|
async removeInitialNode() {
|
|
228
228
|
this.logger.info('Removing initial node');
|
|
@@ -238,7 +238,7 @@ export class P2PNetworkTest {
|
|
|
238
238
|
return await this._sendDummyTx(this.ctx.deployL1ContractsValues.l1Client);
|
|
239
239
|
}
|
|
240
240
|
async _sendDummyTx(l1Client) {
|
|
241
|
-
const l1TxUtils =
|
|
241
|
+
const l1TxUtils = createL1TxUtils(l1Client);
|
|
242
242
|
return await l1TxUtils.sendAndMonitorTransaction({
|
|
243
243
|
to: l1Client.account.address,
|
|
244
244
|
value: 1n
|
|
@@ -287,7 +287,9 @@ export class P2PNetworkTest {
|
|
|
287
287
|
* @param expectedNodeCount - Expected number of nodes in the network (defaults to nodes.length)
|
|
288
288
|
* @param timeoutSeconds - Maximum time to wait for connections (default: 30 seconds)
|
|
289
289
|
* @param checkIntervalSeconds - How often to check connectivity (default: 0.1 seconds)
|
|
290
|
-
*/ async waitForP2PMeshConnectivity(nodes, expectedNodeCount, timeoutSeconds = 30, checkIntervalSeconds = 0.1
|
|
290
|
+
*/ async waitForP2PMeshConnectivity(nodes, expectedNodeCount, timeoutSeconds = 30, checkIntervalSeconds = 0.1, topics = [
|
|
291
|
+
TopicType.tx
|
|
292
|
+
]) {
|
|
291
293
|
const nodeCount = expectedNodeCount ?? nodes.length;
|
|
292
294
|
const minPeerCount = nodeCount - 1;
|
|
293
295
|
this.logger.warn(`Waiting for all ${nodeCount} nodes to connect to P2P mesh (at least ${minPeerCount} peers each)...`);
|
|
@@ -300,6 +302,21 @@ export class P2PNetworkTest {
|
|
|
300
302
|
}, `Node ${index} to connect to at least ${minPeerCount} peers`, timeoutSeconds, checkIntervalSeconds);
|
|
301
303
|
}));
|
|
302
304
|
this.logger.warn('All nodes connected to P2P mesh');
|
|
305
|
+
// Wait for GossipSub mesh to form for all specified topics.
|
|
306
|
+
// We only require at least 1 mesh peer per node because GossipSub
|
|
307
|
+
// stops grafting once it reaches Dlo peers and won't fill the mesh to all available peers.
|
|
308
|
+
for (const topic of topics){
|
|
309
|
+
this.logger.warn(`Waiting for GossipSub mesh to form for ${topic} topic...`);
|
|
310
|
+
await Promise.all(nodes.map(async (node, index)=>{
|
|
311
|
+
const p2p = node.getP2P();
|
|
312
|
+
await retryUntil(async ()=>{
|
|
313
|
+
const meshPeers = await p2p.getGossipMeshPeerCount(topic);
|
|
314
|
+
this.logger.debug(`Node ${index} has ${meshPeers} gossip mesh peers for ${topic} topic`);
|
|
315
|
+
return meshPeers >= 1 ? true : undefined;
|
|
316
|
+
}, `Node ${index} to have gossip mesh peers for ${topic} topic`, timeoutSeconds, checkIntervalSeconds);
|
|
317
|
+
}));
|
|
318
|
+
this.logger.warn(`All nodes have gossip mesh peers for ${topic} topic`);
|
|
319
|
+
}
|
|
303
320
|
}
|
|
304
321
|
async teardown() {
|
|
305
322
|
await this.monitor.stop();
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { AztecNodeService } from '@aztec/aztec-node';
|
|
2
|
+
import { P2PNetworkTest } from '../p2p_network.js';
|
|
3
|
+
export declare const NUM_VALIDATORS = 6;
|
|
4
|
+
export declare const NUM_TXS_PER_NODE = 4;
|
|
5
|
+
export declare const BOOT_NODE_UDP_PORT: number;
|
|
6
|
+
export declare const createReqrespDataDir: () => string;
|
|
7
|
+
type ReqrespOptions = {
|
|
8
|
+
disableStatusHandshake?: boolean;
|
|
9
|
+
};
|
|
10
|
+
export declare function createReqrespTest(options?: ReqrespOptions): Promise<P2PNetworkTest>;
|
|
11
|
+
export declare function cleanupReqrespTest(params: {
|
|
12
|
+
t: P2PNetworkTest;
|
|
13
|
+
nodes?: AztecNodeService[];
|
|
14
|
+
dataDir: string;
|
|
15
|
+
}): Promise<void>;
|
|
16
|
+
export declare function runReqrespTxTest(params: {
|
|
17
|
+
t: P2PNetworkTest;
|
|
18
|
+
dataDir: string;
|
|
19
|
+
disableStatusHandshake?: boolean;
|
|
20
|
+
}): Promise<AztecNodeService[]>;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lMmVfcDJwL3JlcXJlc3AvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQWdCMUQsT0FBTyxFQUFFLGNBQWMsRUFBdUIsTUFBTSxtQkFBbUIsQ0FBQztBQUl4RSxlQUFPLE1BQU0sY0FBYyxJQUFJLENBQUM7QUFDaEMsZUFBTyxNQUFNLGdCQUFnQixJQUFJLENBQUM7QUFDbEMsZUFBTyxNQUFNLGtCQUFrQixRQUF1QixDQUFDO0FBRXZELGVBQU8sTUFBTSxvQkFBb0IsY0FBMkQsQ0FBQztBQUU3RixLQUFLLGNBQWMsR0FBRztJQUNwQixzQkFBc0IsQ0FBQyxFQUFFLE9BQU8sQ0FBQztDQUNsQyxDQUFDO0FBRUYsd0JBQXNCLGlCQUFpQixDQUFDLE9BQU8sR0FBRSxjQUFtQixHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0EwQjdGO0FBRUQsd0JBQXNCLGtCQUFrQixDQUFDLE1BQU0sRUFBRTtJQUFFLENBQUMsRUFBRSxjQUFjLENBQUM7SUFBQyxLQUFLLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO0lBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQTtDQUFFLGlCQVNsSDtBQUlELHdCQUFzQixnQkFBZ0IsQ0FBQyxNQUFNLEVBQUU7SUFDN0MsQ0FBQyxFQUFFLGNBQWMsQ0FBQztJQUNsQixPQUFPLEVBQUUsTUFBTSxDQUFDO0lBQ2hCLHNCQUFzQixDQUFDLEVBQUUsT0FBTyxDQUFDO0NBQ2xDLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0E4SDlCIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/e2e_p2p/reqresp/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAgB1D,OAAO,EAAE,cAAc,EAAuB,MAAM,mBAAmB,CAAC;AAIxE,eAAO,MAAM,cAAc,IAAI,CAAC;AAChC,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,kBAAkB,QAAuB,CAAC;AAEvD,eAAO,MAAM,oBAAoB,cAA2D,CAAC;AAE7F,KAAK,cAAc,GAAG;IACpB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC,CAAC;AAEF,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,cAAc,CAAC,CA0B7F;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE;IAAE,CAAC,EAAE,cAAc,CAAC;IAAC,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,iBASlH;AAID,wBAAsB,gBAAgB,CAAC,MAAM,EAAE;IAC7C,CAAC,EAAE,cAAc,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA8H9B"}
|