@aztec/end-to-end 0.0.1-commit.d431d1c → 0.0.1-commit.e2b2873ed
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 +7 -1
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +38 -10
- 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 +11 -11
- 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 +6 -2
- 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 +153 -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/e2e_prover_test.d.ts +2 -2
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +8 -5
- package/dest/fixtures/ha_setup.d.ts +71 -0
- package/dest/fixtures/ha_setup.d.ts.map +1 -0
- package/dest/fixtures/ha_setup.js +114 -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 +19 -17
- package/dest/fixtures/setup.d.ts.map +1 -1
- package/dest/fixtures/setup.js +42 -95
- package/dest/fixtures/setup_p2p_test.d.ts +12 -8
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +29 -21
- package/dest/fixtures/token_utils.d.ts +1 -1
- package/dest/fixtures/token_utils.d.ts.map +1 -1
- package/dest/fixtures/token_utils.js +7 -4
- 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/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 +2 -2
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +64 -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 +27 -0
- package/dest/spartan/utils/bot.d.ts.map +1 -0
- package/dest/spartan/utils/bot.js +141 -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 +39 -0
- package/dest/spartan/utils/config.d.ts.map +1 -0
- package/dest/spartan/utils/config.js +21 -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 +9 -0
- package/dest/spartan/utils/index.d.ts.map +1 -0
- package/dest/spartan/utils/index.js +18 -0
- package/dest/spartan/utils/k8s.d.ts +126 -0
- package/dest/spartan/utils/k8s.d.ts.map +1 -0
- package/dest/spartan/utils/k8s.js +375 -0
- package/dest/spartan/utils/nodes.d.ts +41 -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 +82 -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/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 +71 -35
- package/src/e2e_fees/bridging_race.notest.ts +2 -5
- package/src/e2e_fees/fees_test.ts +21 -40
- 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 +20 -14
- package/src/e2e_p2p/reqresp/utils.ts +207 -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/dumps/epoch_proof_result.json +1 -1
- package/src/fixtures/e2e_prover_test.ts +8 -13
- package/src/fixtures/ha_setup.ts +184 -0
- package/src/fixtures/index.ts +1 -0
- package/src/fixtures/setup.ts +50 -128
- package/src/fixtures/setup_p2p_test.ts +31 -27
- package/src/fixtures/token_utils.ts +6 -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/submit-transactions.ts +11 -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 +75 -25
- package/src/spartan/tx_metrics.ts +152 -7
- package/src/spartan/utils/bot.ts +185 -0
- package/src/spartan/utils/chaos.ts +253 -0
- package/src/spartan/utils/clients.ts +100 -0
- package/src/spartan/utils/config.ts +27 -0
- package/src/spartan/utils/health.ts +255 -0
- package/src/spartan/utils/helm.ts +84 -0
- package/src/spartan/utils/index.ts +64 -0
- package/src/spartan/utils/k8s.ts +527 -0
- package/src/spartan/utils/nodes.ts +538 -0
- package/src/spartan/utils/scripts.ts +99 -0
- package/src/spartan/utils.ts +1 -1246
- package/src/test-wallet/test_wallet.ts +305 -0
- package/src/test-wallet/utils.ts +112 -0
|
@@ -11,10 +11,11 @@ import { ChainMonitor, DelayedTxUtils, waitUntilL1Timestamp, withDelayer } from
|
|
|
11
11
|
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
12
12
|
import { SecretValue } from '@aztec/foundation/config';
|
|
13
13
|
import { randomBytes } from '@aztec/foundation/crypto/random';
|
|
14
|
-
import {
|
|
14
|
+
import { withLoggerBindings } from '@aztec/foundation/log/server';
|
|
15
15
|
import { retryUntil } from '@aztec/foundation/retry';
|
|
16
16
|
import { sleep } from '@aztec/foundation/sleep';
|
|
17
17
|
import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
|
|
18
|
+
import { TestContract } from '@aztec/noir-test-contracts.js/Test';
|
|
18
19
|
import { getMockPubSubP2PServiceFactory } from '@aztec/p2p/test-helpers';
|
|
19
20
|
import { SequencerState } from '@aztec/sequencer-client';
|
|
20
21
|
import { EthAddress } from '@aztec/stdlib/block';
|
|
@@ -54,7 +55,7 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
54
55
|
static getSlotDurations(opts = {}) {
|
|
55
56
|
const envEthereumSlotDuration = process.env.L1_BLOCK_TIME ? parseInt(process.env.L1_BLOCK_TIME) : DEFAULT_L1_BLOCK_TIME;
|
|
56
57
|
const ethereumSlotDuration = opts.ethereumSlotDuration ?? envEthereumSlotDuration;
|
|
57
|
-
const aztecSlotDuration = opts.aztecSlotDuration ??
|
|
58
|
+
const aztecSlotDuration = opts.aztecSlotDuration ?? (opts.aztecSlotDurationInL1Slots ?? 2) * ethereumSlotDuration;
|
|
58
59
|
const aztecEpochDuration = opts.aztecEpochDuration ?? 6;
|
|
59
60
|
const aztecProofSubmissionEpochs = opts.aztecProofSubmissionEpochs ?? 1;
|
|
60
61
|
const l1PublishingTime = opts.l1PublishingTime ?? 1;
|
|
@@ -95,6 +96,11 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
95
96
|
slasherFlavor: 'none',
|
|
96
97
|
l1PublishingTime,
|
|
97
98
|
...opts
|
|
99
|
+
}, // Use checkpointed chain tip for PXE by default to avoid issues with blocks being dropped due to pruned anchor blocks.
|
|
100
|
+
// Can be overridden via opts.pxeOpts.
|
|
101
|
+
{
|
|
102
|
+
syncChainTip: 'checkpointed',
|
|
103
|
+
...opts.pxeOpts
|
|
98
104
|
});
|
|
99
105
|
this.context = context;
|
|
100
106
|
this.proverNodes = context.proverNode ? [
|
|
@@ -126,7 +132,8 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
126
132
|
l1StartBlock: await this.rollup.getL1StartBlock(),
|
|
127
133
|
l1GenesisTime: await this.rollup.getL1GenesisTime(),
|
|
128
134
|
ethereumSlotDuration,
|
|
129
|
-
proofSubmissionEpochs: Number(await this.rollup.getProofSubmissionEpochs())
|
|
135
|
+
proofSubmissionEpochs: Number(await this.rollup.getProofSubmissionEpochs()),
|
|
136
|
+
targetCommitteeSize: await this.rollup.getTargetCommitteeSize()
|
|
130
137
|
};
|
|
131
138
|
this.logger.info(`L2 genesis at L1 block ${this.constants.l1StartBlock} (timestamp ${this.constants.l1GenesisTime})`);
|
|
132
139
|
}
|
|
@@ -139,16 +146,23 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
139
146
|
async createProverNode(opts = {}) {
|
|
140
147
|
this.logger.warn('Creating and syncing a simulated prover node...');
|
|
141
148
|
const proverNodePrivateKey = this.getNextPrivateKey();
|
|
142
|
-
const
|
|
143
|
-
const
|
|
144
|
-
|
|
149
|
+
const proverIndex = this.proverNodes.length + 1;
|
|
150
|
+
const { mockGossipSubNetwork } = this.context;
|
|
151
|
+
const proverNode = await withLoggerBindings({
|
|
152
|
+
actor: `prover-${proverIndex}`
|
|
153
|
+
}, ()=>createAndSyncProverNode(proverNodePrivateKey, {
|
|
154
|
+
...this.context.config,
|
|
155
|
+
p2pEnabled: this.context.config.p2pEnabled || mockGossipSubNetwork !== undefined
|
|
145
156
|
}, {
|
|
146
157
|
dataDirectory: join(this.context.config.dataDirectory, randomBytes(8).toString('hex')),
|
|
147
|
-
proverId: EthAddress.fromNumber(
|
|
158
|
+
proverId: EthAddress.fromNumber(proverIndex),
|
|
148
159
|
dontStart: opts.dontStart,
|
|
149
160
|
...opts
|
|
150
161
|
}, this.context.aztecNode, this.context.prefilledPublicData ?? [], {
|
|
151
|
-
dateProvider: this.context.dateProvider
|
|
162
|
+
dateProvider: this.context.dateProvider,
|
|
163
|
+
p2pClientDeps: mockGossipSubNetwork ? {
|
|
164
|
+
p2pServiceFactory: getMockPubSubP2PServiceFactory(mockGossipSubNetwork)
|
|
165
|
+
} : undefined
|
|
152
166
|
}));
|
|
153
167
|
this.proverNodes.push(proverNode);
|
|
154
168
|
return proverNode;
|
|
@@ -169,7 +183,8 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
169
183
|
});
|
|
170
184
|
}
|
|
171
185
|
async createNode(opts = {}) {
|
|
172
|
-
const
|
|
186
|
+
const nodeIndex = this.nodes.length + 1;
|
|
187
|
+
const actorPrefix = opts.disableValidator ? 'node' : 'validator';
|
|
173
188
|
const { mockGossipSubNetwork } = this.context;
|
|
174
189
|
const resolvedConfig = {
|
|
175
190
|
...this.context.config,
|
|
@@ -177,7 +192,9 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
177
192
|
};
|
|
178
193
|
const p2pEnabled = resolvedConfig.p2pEnabled || mockGossipSubNetwork !== undefined;
|
|
179
194
|
const p2pIp = resolvedConfig.p2pIp ?? (p2pEnabled ? '127.0.0.1' : undefined);
|
|
180
|
-
const node = await
|
|
195
|
+
const node = await withLoggerBindings({
|
|
196
|
+
actor: `${actorPrefix}-${nodeIndex}`
|
|
197
|
+
}, ()=>AztecNodeService.createAndSync({
|
|
181
198
|
...resolvedConfig,
|
|
182
199
|
dataDirectory: join(this.context.config.dataDirectory, randomBytes(8).toString('hex')),
|
|
183
200
|
validatorPrivateKeys: opts.validatorPrivateKeys ?? new SecretValue([]),
|
|
@@ -270,6 +287,17 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
270
287
|
await wallet.registerContract(instance, SpamContract.artifact);
|
|
271
288
|
return SpamContract.at(instance.address, wallet);
|
|
272
289
|
}
|
|
290
|
+
/** Registers the TestContract on the given wallet. */ async registerTestContract(wallet, salt = Fr.ZERO) {
|
|
291
|
+
const instance = await getContractInstanceFromInstantiationParams(TestContract.artifact, {
|
|
292
|
+
constructorArgs: [],
|
|
293
|
+
constructorArtifact: undefined,
|
|
294
|
+
salt,
|
|
295
|
+
publicKeys: undefined,
|
|
296
|
+
deployer: undefined
|
|
297
|
+
});
|
|
298
|
+
await wallet.registerContract(instance, TestContract.artifact);
|
|
299
|
+
return TestContract.at(instance.address, wallet);
|
|
300
|
+
}
|
|
273
301
|
/** Creates an L1 client using a fresh account with funds from anvil, with a tx delayer already set up. */ async createL1Client() {
|
|
274
302
|
const { client, delayer } = withDelayer(createExtendedL1Client([
|
|
275
303
|
...this.l1Client.chain.rpcUrls.default.http
|
|
@@ -54,7 +54,7 @@ describe('e2e_fees bridging_race', ()=>{
|
|
|
54
54
|
const { claimSecret: secret, messageLeafIndex: index } = claim;
|
|
55
55
|
await t.feeJuiceContract.methods.claim(bobsAddress, claim.claimAmount, secret, index).send({
|
|
56
56
|
from: bobsAddress
|
|
57
|
-
})
|
|
57
|
+
});
|
|
58
58
|
const [balance] = await t.getGasBalanceFn(bobsAddress);
|
|
59
59
|
expect(balance).toEqual(claim.claimAmount);
|
|
60
60
|
});
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlc190ZXN0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZTJlX2ZlZXMvZmVlc190ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDNUYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHM0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDbkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxhQUFhLElBQUksVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBR3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUt0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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,EAAE,MAAM,sBAAsB,CAAC;AAElD,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;
|
|
1
|
+
{"version":3,"file":"fees_test.d.ts","sourceRoot":"","sources":["../../src/e2e_fees/fees_test.ts"],"names":[],"mappings":"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"}
|
|
@@ -121,15 +121,15 @@ import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_h
|
|
|
121
121
|
const { claimSecret: secret, messageLeafIndex: index } = claim;
|
|
122
122
|
await this.feeJuiceContract.methods.claim(recipient, claim.claimAmount, secret, index).send({
|
|
123
123
|
from: minter
|
|
124
|
-
})
|
|
124
|
+
});
|
|
125
125
|
}
|
|
126
126
|
/** Alice mints bananaCoin tokens privately to the target address and redeems them. */ async mintPrivateBananas(amount, address) {
|
|
127
127
|
const balanceBefore = await this.bananaCoin.methods.balance_of_private(address).simulate({
|
|
128
|
-
from:
|
|
128
|
+
from: address
|
|
129
129
|
});
|
|
130
130
|
await mintTokensToPrivate(this.bananaCoin, this.aliceAddress, address, amount);
|
|
131
131
|
const balanceAfter = await this.bananaCoin.methods.balance_of_private(address).simulate({
|
|
132
|
-
from:
|
|
132
|
+
from: address
|
|
133
133
|
});
|
|
134
134
|
expect(balanceAfter).toEqual(balanceBefore + amount);
|
|
135
135
|
}
|
|
@@ -167,7 +167,7 @@ import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_h
|
|
|
167
167
|
async applySetupFeeJuice() {
|
|
168
168
|
this.logger.info('Applying fee juice setup');
|
|
169
169
|
this.feeJuiceContract = FeeJuiceContract.at(ProtocolContractAddress.FeeJuice, this.wallet);
|
|
170
|
-
this.getGasBalanceFn = getBalancesFn('⛽', this.feeJuiceContract.methods.balance_of_public, this.
|
|
170
|
+
this.getGasBalanceFn = getBalancesFn('⛽', this.feeJuiceContract.methods.balance_of_public, this.logger);
|
|
171
171
|
this.feeJuiceBridgeTestHarness = await FeeJuicePortalTestingHarnessFactory.create({
|
|
172
172
|
aztecNode: this.context.aztecNodeService,
|
|
173
173
|
aztecNodeAdmin: this.context.aztecNodeService,
|
|
@@ -180,11 +180,11 @@ import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_h
|
|
|
180
180
|
this.logger.info('Applying deploy banana token setup');
|
|
181
181
|
const bananaCoin = await BananaCoin.deploy(this.wallet, this.aliceAddress, 'BC', 'BC', 18n).send({
|
|
182
182
|
from: this.aliceAddress
|
|
183
|
-
})
|
|
183
|
+
});
|
|
184
184
|
this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
|
|
185
185
|
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.
|
|
186
|
+
this.getBananaPublicBalanceFn = getBalancesFn('🍌.public', this.bananaCoin.methods.balance_of_public, this.logger);
|
|
187
|
+
this.getBananaPrivateBalanceFn = getBalancesFn('🍌.private', this.bananaCoin.methods.balance_of_private, this.logger);
|
|
188
188
|
}
|
|
189
189
|
async applyFPCSetup() {
|
|
190
190
|
this.logger.info('Applying FPC setup');
|
|
@@ -193,7 +193,7 @@ import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_h
|
|
|
193
193
|
const bananaCoin = this.bananaCoin;
|
|
194
194
|
const bananaFPC = await FPCContract.deploy(this.wallet, bananaCoin.address, this.fpcAdmin).send({
|
|
195
195
|
from: this.aliceAddress
|
|
196
|
-
})
|
|
196
|
+
});
|
|
197
197
|
this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
|
|
198
198
|
await this.feeJuiceBridgeTestHarness.bridgeFromL1ToL2(bananaFPC.address, this.aliceAddress);
|
|
199
199
|
this.bananaFPC = bananaFPC;
|
|
@@ -221,9 +221,9 @@ import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_h
|
|
|
221
221
|
const mulDiv = (a, b, c)=>a * b / c + (a * b % c > 0n ? 1n : 0n);
|
|
222
222
|
const { baseFee } = await this.rollupContract.getL1FeesAt(block.header.globalVariables.timestamp);
|
|
223
223
|
const proverCost = mulDiv(mulDiv(L1_GAS_PER_EPOCH_VERIFIED, baseFee, BigInt(await this.rollupContract.getEpochDuration())), 1n, await this.rollupContract.getManaTarget()) + await this.rollupContract.getProvingCostPerMana();
|
|
224
|
-
const price = await this.rollupContract.
|
|
224
|
+
const price = await this.rollupContract.getEthPerFeeAsset();
|
|
225
225
|
const mana = block.header.totalManaUsed.toBigInt();
|
|
226
|
-
return mulDiv(mana * proverCost,
|
|
226
|
+
return mulDiv(mana * proverCost, 10n ** 12n, price);
|
|
227
227
|
};
|
|
228
228
|
}
|
|
229
229
|
async applySponsoredFPCSetup() {
|
|
@@ -239,7 +239,7 @@ import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_h
|
|
|
239
239
|
await this.mintPrivateBananas(this.ALICE_INITIAL_BANANAS, this.aliceAddress);
|
|
240
240
|
await this.bananaCoin.methods.mint_to_public(this.aliceAddress, this.ALICE_INITIAL_BANANAS).send({
|
|
241
241
|
from: this.aliceAddress
|
|
242
|
-
})
|
|
242
|
+
});
|
|
243
243
|
}
|
|
244
244
|
async applyFundAliceWithPrivateBananas() {
|
|
245
245
|
this.logger.info('Applying fund Alice with private bananas setup');
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
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
|
-
import {
|
|
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:
|
|
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,
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVzdGVkX2NvbnRyYWN0X3Rlc3QuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lMmVfbmVzdGVkX2NvbnRyYWN0L25lc3RlZF9jb250cmFjdF90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUV0RSxPQUFPLEVBQ0wsS0FBSyxlQUFlLEVBS3JCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIscUJBQWEsa0JBQWtCO0lBWTNCLE9BQU8sQ0FBQyxnQkFBZ0I7SUFYMUIsT0FBTyxFQUFHLGVBQWUsQ0FBQztJQUMxQixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2YsTUFBTSxFQUFHLE1BQU0sQ0FBQztJQUNoQixxQkFBcUIsRUFBRyxZQUFZLENBQUM7SUFDckMsU0FBUyxFQUFHLFNBQVMsQ0FBQztJQUV0QixjQUFjLEVBQUcsY0FBYyxDQUFDO0lBQ2hDLGFBQWEsRUFBRyxhQUFhLENBQUM7SUFFOUIsWUFDRSxRQUFRLEVBQUUsTUFBTSxFQUNSLGdCQUFnQixTQUFJLEVBRzdCO0lBRUQ7O09BRUc7SUFDRyxjQUFjLGtCQWVuQjtJQUVLLEtBQUssa0JBT1Y7SUFFSyxRQUFRLGtCQUViO0lBRUssV0FBVyxrQkFNaEI7Q0FDRiJ9
|
|
@@ -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,kBAMhB;CACF"}
|
|
@@ -46,10 +46,10 @@ export class NestedContractTest {
|
|
|
46
46
|
this.logger.info('Deploying parent and child contracts');
|
|
47
47
|
const parentContract = await ParentContract.deploy(this.wallet).send({
|
|
48
48
|
from: this.defaultAccountAddress
|
|
49
|
-
})
|
|
49
|
+
});
|
|
50
50
|
const childContract = await ChildContract.deploy(this.wallet).send({
|
|
51
51
|
from: this.defaultAccountAddress
|
|
52
|
-
})
|
|
52
|
+
});
|
|
53
53
|
this.parentContract = parentContract;
|
|
54
54
|
this.childContract = childContract;
|
|
55
55
|
}
|
|
@@ -11,9 +11,9 @@ 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
13
|
import type { PublicDataTreeLeaf } from '@aztec/stdlib/trees';
|
|
14
|
-
import type { TestWallet } from '@aztec/test-wallet/server';
|
|
15
14
|
import { type GetContractReturnType } from 'viem';
|
|
16
15
|
import { type EndToEndContext, type SetupOptions } from '../fixtures/setup.js';
|
|
16
|
+
import type { TestWallet } from '../test-wallet/test_wallet.js';
|
|
17
17
|
export declare const WAIT_FOR_TX_TIMEOUT: number;
|
|
18
18
|
export declare const SHORTENED_BLOCK_TIME_CONFIG_NO_PRUNES: {
|
|
19
19
|
aztecSlotDuration: number;
|
|
@@ -312,4 +312,4 @@ export declare class P2PNetworkTest {
|
|
|
312
312
|
slashFactory: SlashFactoryContract;
|
|
313
313
|
}>;
|
|
314
314
|
}
|
|
315
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
315
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicDJwX25ldHdvcmsuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lMmVfcDJwL3AycF9uZXR3b3JrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEUsT0FBTyxLQUFLLEVBQW1CLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDM0UsT0FBTyxFQUFFLFlBQVksRUFBYyxNQUFNLDJCQUEyQixDQUFDO0FBR3JFLE9BQU8sRUFDTCxLQUFLLDhCQUE4QixFQUVuQyxjQUFjLEVBQ2QsS0FBSyw2QkFBNkIsRUFDbkMsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUkxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQTRCLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR2xGLE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUVsRSxPQUFPLEVBQWEsVUFBVSxFQUFnQixNQUFNLHFCQUFxQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNsRSxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUcxRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSzlELE9BQU8sRUFBRSxLQUFLLHFCQUFxQixFQUEyQixNQUFNLE1BQU0sQ0FBQztBQUczRSxPQUFPLEVBQ0wsS0FBSyxlQUFlLEVBQ3BCLEtBQUssWUFBWSxFQU1sQixNQUFNLHNCQUFzQixDQUFDO0FBTzlCLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBS2hFLGVBQU8sTUFBTSxtQkFBbUIsUUFBMEMsQ0FBQztBQUUzRSxlQUFPLE1BQU0scUNBQXFDOzs7O0NBSWpELENBQUM7QUFFRixxQkFBYSxjQUFjO2FBNkJQLFFBQVEsRUFBRSxNQUFNO0lBQ3pCLGdCQUFnQixFQUFFLE1BQU07SUFDeEIsWUFBWSxFQUFFLE1BQU07SUFDcEIsa0JBQWtCLEVBQUUsTUFBTTtJQUUxQixhQUFhO0lBRXBCLE9BQU8sQ0FBQyxXQUFXLENBQUM7SUFuQ2YsT0FBTyxFQUFHLGVBQWUsQ0FBQztJQUMxQixxQkFBcUIsRUFBRSxLQUFLLE1BQU0sRUFBRSxDQUFDO0lBQ3JDLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQUFDO0lBRVosTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUNmLE9BQU8sRUFBRyxZQUFZLENBQUM7SUFFdkIsR0FBRyxFQUFHLGVBQWUsQ0FBQztJQUN0QixtQkFBbUIsRUFBRSxLQUFLLE1BQU0sRUFBRSxFQUFFLENBQU07SUFDMUMsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLENBQU07SUFDbEMsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLENBQU07SUFDakMsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFNO0lBRTVCLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLENBQU07SUFDNUMsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsQ0FBTTtJQUcvQyxNQUFNLENBQUMsRUFBRSxVQUFVLENBQUM7SUFDcEIscUJBQXFCLENBQUMsRUFBRSxZQUFZLENBQUM7SUFDckMsWUFBWSxDQUFDLEVBQUUsWUFBWSxDQUFDO0lBRTVCLGFBQWEsQ0FBQyxFQUFFLGFBQWEsQ0FBQztJQUdyQyxPQUFPLENBQUMsWUFBWSxDQUFlO0lBQ25DLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBTTtJQUVuQyxZQUNrQixRQUFRLEVBQUUsTUFBTSxFQUN6QixnQkFBZ0IsRUFBRSxNQUFNLEVBQ3hCLFlBQVksRUFBRSxNQUFNLEVBQ3BCLGtCQUFrQixFQUFFLE1BQU0sRUFDakMsc0JBQXNCLEVBQUUsWUFBWSxFQUM3QixhQUFhLFNBQUksRUFFaEIsV0FBVyxDQUFDLG9CQUFRLEVBQzVCLGVBQWUsQ0FBQyxFQUFFLE9BQU8sRUFtRDFCO0lBRUQsT0FBYSxNQUFNLENBQUMsRUFDbEIsUUFBUSxFQUNSLGFBQWEsRUFDYixrQkFBa0IsRUFDbEIsUUFBUSxFQUNSLFdBQVcsRUFDWCxhQUFhLEVBQ2IsZUFBZSxFQUNoQixFQUFFO1FBQ0QsUUFBUSxFQUFFLE1BQU0sQ0FBQztRQUNqQixhQUFhLEVBQUUsTUFBTSxDQUFDO1FBQ3RCLGtCQUFrQixFQUFFLE1BQU0sQ0FBQztRQUMzQixRQUFRLENBQUMsRUFBRSxNQUFNLENBQUM7UUFDbEIsV0FBVyxDQUFDLEVBQUUsTUFBTSxDQUFDO1FBQ3JCLGFBQWEsQ0FBQyxFQUFFLFlBQVksQ0FBQztRQUM3QixlQUFlLENBQUMsRUFBRSxPQUFPLENBQUM7S0FDM0IsMkJBcUJBO0lBRUQsSUFBSSxhQUFhLHVCQUtoQjtJQUVLLGdCQUFnQixrQkFXckI7SUFFRCxhQUFhOztNQWdCWjtJQUVLLGNBQWMsa0JBd0VuQjtJQUVLLFlBQVksa0JBWWpCO0lBRUssa0JBQWtCLGtCQVF2QjtJQUVLLGlCQUFpQixrQkFVdEI7SUFFSyxXQUFXOzs7T0FFaEI7WUFFYSxZQUFZO0lBUXBCLEtBQUssa0JBMEJWO0lBRUssU0FBUyxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxpQkFXeEM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDRywwQkFBMEIsQ0FDOUIsS0FBSyxFQUFFLGdCQUFnQixFQUFFLEVBQ3pCLGlCQUFpQixDQUFDLEVBQUUsTUFBTSxFQUMxQixjQUFjLFNBQUssRUFDbkIsb0JBQW9CLFNBQU0saUJBMEIzQjtJQUVLLFFBQVEsa0JBSWI7SUFFSyxZQUFZLElBQUksT0FBTyxDQUFDO1FBQzVCLE1BQU0sRUFBRSxjQUFjLENBQUM7UUFDdkIsZUFBZSxFQUFFLHFCQUFxQixDQUFDLE9BQU8sVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3RFLGdCQUFnQixFQUFFLDhCQUE4QixHQUFHLDZCQUE2QixHQUFHLFNBQVMsQ0FBQztRQUM3RixZQUFZLEVBQUUsb0JBQW9CLENBQUM7S0FDcEMsQ0FBQyxDQXlCRDtDQUNGIn0=
|
|
@@ -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,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"p2p_network.d.ts","sourceRoot":"","sources":["../../src/e2e_p2p/p2p_network.ts"],"names":[],"mappings":"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"}
|
|
@@ -92,7 +92,8 @@ export class P2PNetworkTest {
|
|
|
92
92
|
aztecTargetCommitteeSize: numberOfValidators,
|
|
93
93
|
metricsPort: metricsPort,
|
|
94
94
|
numberOfInitialFundedAccounts: 2,
|
|
95
|
-
startProverNode
|
|
95
|
+
startProverNode,
|
|
96
|
+
walletMinFeePadding: 2.0
|
|
96
97
|
};
|
|
97
98
|
this.deployL1ContractsArgs = {
|
|
98
99
|
...initialValidatorConfig,
|
|
@@ -220,7 +221,7 @@ export class P2PNetworkTest {
|
|
|
220
221
|
}
|
|
221
222
|
const spamContract = await SpamContract.deploy(this.wallet).send({
|
|
222
223
|
from: this.defaultAccountAddress
|
|
223
|
-
})
|
|
224
|
+
});
|
|
224
225
|
this.spamContract = spamContract;
|
|
225
226
|
}
|
|
226
227
|
async removeInitialNode() {
|
|
@@ -252,6 +253,9 @@ export class P2PNetworkTest {
|
|
|
252
253
|
slasherFlavor: this.setupOptions.slasherFlavor ?? this.deployL1ContractsArgs.slasherFlavor ?? 'none',
|
|
253
254
|
aztecTargetCommitteeSize: 0,
|
|
254
255
|
l1ContractsArgs: this.deployL1ContractsArgs
|
|
256
|
+
}, // Use checkpointed chain tip for PXE to avoid issues with blocks being dropped due to pruned anchor blocks.
|
|
257
|
+
{
|
|
258
|
+
syncChainTip: 'checkpointed'
|
|
255
259
|
});
|
|
256
260
|
this.ctx = this.context;
|
|
257
261
|
const sponsoredFPCAddress = await getSponsoredFPCAddress();
|
|
@@ -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 = 2;
|
|
5
|
+
export declare const BOOT_NODE_UDP_PORT = 4500;
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lMmVfcDJwL3JlcXJlc3AvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQWdCMUQsT0FBTyxFQUFFLGNBQWMsRUFBOEQsTUFBTSxtQkFBbUIsQ0FBQztBQUkvRyxlQUFPLE1BQU0sY0FBYyxJQUFJLENBQUM7QUFDaEMsZUFBTyxNQUFNLGdCQUFnQixJQUFJLENBQUM7QUFDbEMsZUFBTyxNQUFNLGtCQUFrQixPQUFPLENBQUM7QUFFdkMsZUFBTyxNQUFNLG9CQUFvQixjQUEyRCxDQUFDO0FBRTdGLEtBQUssY0FBYyxHQUFHO0lBQ3BCLHNCQUFzQixDQUFDLEVBQUUsT0FBTyxDQUFDO0NBQ2xDLENBQUM7QUFFRix3QkFBc0IsaUJBQWlCLENBQUMsT0FBTyxHQUFFLGNBQW1CLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQW9CN0Y7QUFFRCx3QkFBc0Isa0JBQWtCLENBQUMsTUFBTSxFQUFFO0lBQUUsQ0FBQyxFQUFFLGNBQWMsQ0FBQztJQUFDLEtBQUssQ0FBQyxFQUFFLGdCQUFnQixFQUFFLENBQUM7SUFBQyxPQUFPLEVBQUUsTUFBTSxDQUFBO0NBQUUsaUJBU2xIO0FBSUQsd0JBQXNCLGdCQUFnQixDQUFDLE1BQU0sRUFBRTtJQUM3QyxDQUFDLEVBQUUsY0FBYyxDQUFDO0lBQ2xCLE9BQU8sRUFBRSxNQUFNLENBQUM7SUFDaEIsc0JBQXNCLENBQUMsRUFBRSxPQUFPLENBQUM7Q0FDbEMsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQXdHOUIifQ==
|
|
@@ -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,EAA8D,MAAM,mBAAmB,CAAC;AAI/G,eAAO,MAAM,cAAc,IAAI,CAAC;AAChC,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,kBAAkB,OAAO,CAAC;AAEvC,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,CAoB7F;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,CAwG9B"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { createLogger } from '@aztec/aztec.js/log';
|
|
2
|
+
import { waitForTx } from '@aztec/aztec.js/node';
|
|
3
|
+
import { Tx } from '@aztec/aztec.js/tx';
|
|
4
|
+
import { RollupContract } from '@aztec/ethereum/contracts';
|
|
5
|
+
import { SlotNumber } from '@aztec/foundation/branded-types';
|
|
6
|
+
import { timesAsync } from '@aztec/foundation/collection';
|
|
7
|
+
import { retryUntil } from '@aztec/foundation/retry';
|
|
8
|
+
import { jest } from '@jest/globals';
|
|
9
|
+
import fs from 'fs';
|
|
10
|
+
import os from 'os';
|
|
11
|
+
import path from 'path';
|
|
12
|
+
import { shouldCollectMetrics } from '../../fixtures/fixtures.js';
|
|
13
|
+
import { createNodes } from '../../fixtures/setup_p2p_test.js';
|
|
14
|
+
import { P2PNetworkTest, SHORTENED_BLOCK_TIME_CONFIG_NO_PRUNES, WAIT_FOR_TX_TIMEOUT } from '../p2p_network.js';
|
|
15
|
+
import { prepareTransactions } from '../shared.js';
|
|
16
|
+
// Don't set this to a higher value than 9 because each node will use a different L1 publisher account and anvil seeds
|
|
17
|
+
export const NUM_VALIDATORS = 6;
|
|
18
|
+
export const NUM_TXS_PER_NODE = 2;
|
|
19
|
+
export const BOOT_NODE_UDP_PORT = 4500;
|
|
20
|
+
export const createReqrespDataDir = ()=>fs.mkdtempSync(path.join(os.tmpdir(), 'reqresp-'));
|
|
21
|
+
export async function createReqrespTest(options = {}) {
|
|
22
|
+
const { disableStatusHandshake = false } = options;
|
|
23
|
+
const t = await P2PNetworkTest.create({
|
|
24
|
+
testName: 'e2e_p2p_reqresp_tx',
|
|
25
|
+
numberOfNodes: 0,
|
|
26
|
+
numberOfValidators: NUM_VALIDATORS,
|
|
27
|
+
basePort: BOOT_NODE_UDP_PORT,
|
|
28
|
+
// To collect metrics - run in aztec-packages `docker compose --profile metrics up`
|
|
29
|
+
metricsPort: shouldCollectMetrics(),
|
|
30
|
+
initialConfig: {
|
|
31
|
+
...SHORTENED_BLOCK_TIME_CONFIG_NO_PRUNES,
|
|
32
|
+
aztecSlotDuration: 24,
|
|
33
|
+
...disableStatusHandshake ? {
|
|
34
|
+
p2pDisableStatusHandshake: true
|
|
35
|
+
} : {},
|
|
36
|
+
listenAddress: '127.0.0.1',
|
|
37
|
+
aztecEpochDuration: 64
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
await t.setup();
|
|
41
|
+
await t.applyBaseSetup();
|
|
42
|
+
return t;
|
|
43
|
+
}
|
|
44
|
+
export async function cleanupReqrespTest(params) {
|
|
45
|
+
const { t, nodes, dataDir } = params;
|
|
46
|
+
if (nodes) {
|
|
47
|
+
await t.stopNodes(nodes);
|
|
48
|
+
}
|
|
49
|
+
await t.teardown();
|
|
50
|
+
for(let i = 0; i < NUM_VALIDATORS; i++){
|
|
51
|
+
fs.rmSync(`${dataDir}-${i}`, {
|
|
52
|
+
recursive: true,
|
|
53
|
+
force: true,
|
|
54
|
+
maxRetries: 3
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const getNodePort = (nodeIndex)=>BOOT_NODE_UDP_PORT + 1 + nodeIndex;
|
|
59
|
+
export async function runReqrespTxTest(params) {
|
|
60
|
+
const { t, dataDir, disableStatusHandshake = false } = params;
|
|
61
|
+
if (!t.bootstrapNodeEnr) {
|
|
62
|
+
throw new Error('Bootstrap node ENR is not available');
|
|
63
|
+
}
|
|
64
|
+
t.logger.info('Creating nodes');
|
|
65
|
+
const aztecNodeConfig = disableStatusHandshake ? {
|
|
66
|
+
...t.ctx.aztecNodeConfig,
|
|
67
|
+
p2pDisableStatusHandshake: true
|
|
68
|
+
} : t.ctx.aztecNodeConfig;
|
|
69
|
+
const nodes = await createNodes(aztecNodeConfig, t.ctx.dateProvider, t.bootstrapNodeEnr, NUM_VALIDATORS, BOOT_NODE_UDP_PORT, t.prefilledPublicData, dataDir, shouldCollectMetrics());
|
|
70
|
+
t.logger.info('Waiting for nodes to connect');
|
|
71
|
+
await t.waitForP2PMeshConnectivity(nodes, NUM_VALIDATORS);
|
|
72
|
+
await t.setupAccount();
|
|
73
|
+
const targetBlockNumber = await t.ctx.aztecNodeService.getBlockNumber();
|
|
74
|
+
await retryUntil(async ()=>{
|
|
75
|
+
const blockNumbers = await Promise.all(nodes.map((node)=>node.getBlockNumber()));
|
|
76
|
+
return blockNumbers.every((blockNumber)=>blockNumber >= targetBlockNumber) ? true : undefined;
|
|
77
|
+
}, `validators to sync to L2 block ${targetBlockNumber}`, 60, 0.5);
|
|
78
|
+
t.logger.info('Preparing transactions to send');
|
|
79
|
+
const txBatches = await timesAsync(2, ()=>prepareTransactions(t.logger, t.ctx.aztecNodeService, NUM_TXS_PER_NODE, t.fundedAccount));
|
|
80
|
+
t.logger.info('Removing initial node');
|
|
81
|
+
await t.removeInitialNode();
|
|
82
|
+
t.logger.info('Starting fresh slot');
|
|
83
|
+
const [timestamp] = await t.ctx.cheatCodes.rollup.advanceToNextSlot();
|
|
84
|
+
t.ctx.dateProvider.setTime(Number(timestamp) * 1000);
|
|
85
|
+
const startSlotTimestamp = BigInt(timestamp);
|
|
86
|
+
const { proposerIndexes, nodesToTurnOffTxGossip } = await getProposerIndexes(t, startSlotTimestamp);
|
|
87
|
+
t.logger.info(`Turning off tx gossip for nodes: ${nodesToTurnOffTxGossip.map(getNodePort)}`);
|
|
88
|
+
t.logger.info(`Sending txs to proposer nodes: ${proposerIndexes.map(getNodePort)}`);
|
|
89
|
+
// Replace the p2p node implementation of some of the nodes with a spy such that it does not store transactions that are gossiped to it
|
|
90
|
+
// Original implementation of `handleGossipedTx` will store received transactions in the tx pool.
|
|
91
|
+
// We chose the first 2 nodes that will be the proposers for the next few slots
|
|
92
|
+
for (const nodeIndex of nodesToTurnOffTxGossip){
|
|
93
|
+
const logger = createLogger(`p2p:${getNodePort(nodeIndex)}`);
|
|
94
|
+
jest.spyOn(nodes[nodeIndex].p2pClient.p2pService, 'handleGossipedTx').mockImplementation((payloadData)=>{
|
|
95
|
+
const txHash = Tx.fromBuffer(payloadData).getTxHash();
|
|
96
|
+
logger.info(`Skipping storage of gossiped transaction ${txHash.toString()}`);
|
|
97
|
+
return Promise.resolve();
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
// We send the tx to the proposer nodes directly, ignoring the pxe and node in each context
|
|
101
|
+
// We cannot just call tx.send since they were created using a pxe wired to the first node which is now stopped
|
|
102
|
+
t.logger.info('Sending transactions through proposer nodes');
|
|
103
|
+
const submittedTxs = await Promise.all(txBatches.map(async (batch, batchIndex)=>{
|
|
104
|
+
const proposerNode = nodes[proposerIndexes[batchIndex]];
|
|
105
|
+
await Promise.all(batch.map(async (tx)=>{
|
|
106
|
+
try {
|
|
107
|
+
await proposerNode.sendTx(tx);
|
|
108
|
+
} catch (err) {
|
|
109
|
+
t.logger.error(`Error sending tx: ${err}`);
|
|
110
|
+
throw err;
|
|
111
|
+
}
|
|
112
|
+
}));
|
|
113
|
+
return batch.map((tx)=>({
|
|
114
|
+
node: proposerNode,
|
|
115
|
+
txHash: tx.getTxHash()
|
|
116
|
+
}));
|
|
117
|
+
}));
|
|
118
|
+
t.logger.info('Waiting for all transactions to be mined');
|
|
119
|
+
await Promise.all(submittedTxs.flatMap((batch, batchIndex)=>batch.map(async (submittedTx, txIndex)=>{
|
|
120
|
+
t.logger.info(`Waiting for tx ${batchIndex}-${txIndex} ${submittedTx.txHash.toString()} to be mined`);
|
|
121
|
+
await waitForTx(submittedTx.node, submittedTx.txHash, {
|
|
122
|
+
timeout: WAIT_FOR_TX_TIMEOUT * 1.5
|
|
123
|
+
});
|
|
124
|
+
t.logger.info(`Tx ${batchIndex}-${txIndex} ${submittedTx.txHash.toString()} has been mined`);
|
|
125
|
+
})));
|
|
126
|
+
t.logger.info('All transactions mined');
|
|
127
|
+
return nodes;
|
|
128
|
+
}
|
|
129
|
+
async function getProposerIndexes(t, startSlotTimestamp) {
|
|
130
|
+
// Get the nodes for the next set of slots
|
|
131
|
+
const rollupContract = new RollupContract(t.ctx.deployL1ContractsValues.l1Client, t.ctx.deployL1ContractsValues.l1ContractAddresses.rollupAddress);
|
|
132
|
+
const attesters = await rollupContract.getAttesters();
|
|
133
|
+
const startSlot = await rollupContract.getSlotAt(startSlotTimestamp);
|
|
134
|
+
const proposers = await Promise.all(Array.from({
|
|
135
|
+
length: 3
|
|
136
|
+
}, async (_, i)=>{
|
|
137
|
+
const slot = SlotNumber(startSlot + i);
|
|
138
|
+
const slotTimestamp = await rollupContract.getTimestampForSlot(slot);
|
|
139
|
+
return await rollupContract.getProposerAt(slotTimestamp);
|
|
140
|
+
}));
|
|
141
|
+
// Get the indexes of the nodes that are responsible for the next two slots
|
|
142
|
+
const proposerIndexes = proposers.map((proposer)=>attesters.findIndex((a)=>a.equals(proposer)));
|
|
143
|
+
if (proposerIndexes.some((i)=>i === -1)) {
|
|
144
|
+
throw new Error(`Proposer index not found for proposer ` + `(proposers=${proposers.map((p)=>p.toString()).join(',')}, indices=${proposerIndexes.join(',')})`);
|
|
145
|
+
}
|
|
146
|
+
const nodesToTurnOffTxGossip = Array.from({
|
|
147
|
+
length: NUM_VALIDATORS
|
|
148
|
+
}, (_, i)=>i).filter((i)=>!proposerIndexes.includes(i));
|
|
149
|
+
return {
|
|
150
|
+
proposerIndexes,
|
|
151
|
+
nodesToTurnOffTxGossip
|
|
152
|
+
};
|
|
153
|
+
}
|