@aztec/end-to-end 0.0.1-commit.85d7d01 → 0.0.1-commit.8655d4a
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -0
- package/dest/bench/client_flows/benchmark.d.ts +15 -1
- package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/benchmark.js +17 -0
- package/dest/bench/client_flows/client_flows_benchmark.d.ts +2 -2
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/client_flows_benchmark.js +33 -36
- package/dest/bench/utils.d.ts +1 -1
- package/dest/bench/utils.d.ts.map +1 -1
- package/dest/bench/utils.js +8 -3
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +5 -4
- 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 +28 -19
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +15 -4
- 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 +39 -7
- package/dest/e2e_deploy_contract/deploy_test.d.ts +3 -3
- package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
- package/dest/e2e_deploy_contract/deploy_test.js +2 -1
- package/dest/e2e_epochs/epochs_test.d.ts +25 -2
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +88 -14
- package/dest/e2e_fees/fees_test.d.ts +5 -2
- package/dest/e2e_fees/fees_test.d.ts.map +1 -1
- package/dest/e2e_fees/fees_test.js +44 -11
- package/dest/e2e_nested_contract/nested_contract_test.d.ts +3 -3
- package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
- package/dest/e2e_nested_contract/nested_contract_test.js +6 -7
- package/dest/e2e_p2p/inactivity_slash_test.d.ts +1 -1
- package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -1
- package/dest/e2e_p2p/inactivity_slash_test.js +5 -3
- package/dest/e2e_p2p/p2p_network.d.ts +13 -11
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +65 -43
- package/dest/e2e_p2p/reqresp/utils.d.ts +1 -1
- package/dest/e2e_p2p/reqresp/utils.d.ts.map +1 -1
- package/dest/e2e_p2p/reqresp/utils.js +42 -13
- package/dest/e2e_p2p/shared.d.ts +25 -7
- package/dest/e2e_p2p/shared.d.ts.map +1 -1
- package/dest/e2e_p2p/shared.js +73 -50
- package/dest/e2e_token_contract/token_contract_test.d.ts +3 -3
- package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
- package/dest/e2e_token_contract/token_contract_test.js +15 -13
- package/dest/fixtures/authwit_proxy.d.ts +3 -3
- package/dest/fixtures/authwit_proxy.d.ts.map +1 -1
- package/dest/fixtures/authwit_proxy.js +4 -0
- package/dest/fixtures/e2e_prover_test.d.ts +6 -5
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +13 -17
- package/dest/fixtures/fixtures.d.ts +73 -1
- package/dest/fixtures/fixtures.d.ts.map +1 -1
- package/dest/fixtures/fixtures.js +68 -0
- package/dest/fixtures/get_bb_config.d.ts +1 -1
- package/dest/fixtures/get_bb_config.d.ts.map +1 -1
- package/dest/fixtures/get_bb_config.js +5 -5
- package/dest/fixtures/ha_setup.d.ts +2 -2
- package/dest/fixtures/ha_setup.d.ts.map +1 -1
- package/dest/fixtures/ha_setup.js +1 -1
- package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts +25 -0
- package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts.map +1 -0
- package/dest/fixtures/schnorr_hardcoded_account_contract.js +37 -0
- package/dest/fixtures/setup.d.ts +44 -12
- package/dest/fixtures/setup.d.ts.map +1 -1
- package/dest/fixtures/setup.js +138 -29
- package/dest/fixtures/setup_p2p_test.d.ts +10 -6
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +8 -8
- 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 +2 -5
- package/dest/fixtures/utils.d.ts +2 -2
- package/dest/fixtures/utils.d.ts.map +1 -1
- package/dest/fixtures/utils.js +1 -1
- package/dest/forward-compatibility/wallet_rpc_client.d.ts +7 -0
- package/dest/forward-compatibility/wallet_rpc_client.d.ts.map +1 -0
- package/dest/forward-compatibility/wallet_rpc_client.js +15 -0
- package/dest/forward-compatibility/wallet_service.d.ts +3 -0
- package/dest/forward-compatibility/wallet_service.d.ts.map +1 -0
- package/dest/forward-compatibility/wallet_service.js +109 -0
- package/dest/install_legacy_contracts.d.cts +10 -0
- package/dest/install_legacy_contracts.d.cts.map +1 -0
- package/dest/legacy-jest-resolver.d.cts +3 -0
- package/dest/legacy-jest-resolver.d.cts.map +1 -0
- package/dest/shared/cross_chain_test_harness.d.ts +4 -2
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.js +22 -18
- package/dest/shared/gas_portal_test_harness.d.ts +8 -5
- package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
- package/dest/shared/gas_portal_test_harness.js +19 -10
- package/dest/shared/jest_setup.js +32 -1
- package/dest/shared/submit-transactions.d.ts +1 -1
- 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 +60 -39
- package/dest/shared/wait_for_l1_to_l2_message.d.ts +13 -0
- package/dest/shared/wait_for_l1_to_l2_message.d.ts.map +1 -0
- package/dest/shared/wait_for_l1_to_l2_message.js +10 -0
- package/dest/simulators/lending_simulator.d.ts +10 -3
- package/dest/simulators/lending_simulator.d.ts.map +1 -1
- package/dest/simulators/lending_simulator.js +26 -14
- package/dest/simulators/token_simulator.d.ts +1 -1
- package/dest/simulators/token_simulator.d.ts.map +1 -1
- package/dest/simulators/token_simulator.js +2 -2
- package/dest/spartan/setup_test_wallets.d.ts +4 -2
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +72 -39
- package/dest/spartan/tx_metrics.d.ts +18 -4
- package/dest/spartan/tx_metrics.d.ts.map +1 -1
- package/dest/spartan/tx_metrics.js +74 -21
- package/dest/spartan/utils/config.d.ts +9 -32
- package/dest/spartan/utils/config.d.ts.map +1 -1
- package/dest/spartan/utils/config.js +1 -0
- package/dest/spartan/utils/index.d.ts +2 -1
- package/dest/spartan/utils/index.d.ts.map +1 -1
- package/dest/spartan/utils/index.js +2 -0
- package/dest/spartan/utils/nodes.js +2 -2
- package/dest/spartan/utils/pod_logs.d.ts +25 -0
- package/dest/spartan/utils/pod_logs.d.ts.map +1 -0
- package/dest/spartan/utils/pod_logs.js +74 -0
- package/dest/test-wallet/test_wallet.d.ts +25 -23
- package/dest/test-wallet/test_wallet.d.ts.map +1 -1
- package/dest/test-wallet/test_wallet.js +146 -87
- package/dest/test-wallet/utils.d.ts +3 -3
- package/dest/test-wallet/utils.d.ts.map +1 -1
- package/dest/test-wallet/utils.js +2 -7
- package/dest/test-wallet/wallet_worker_script.js +2 -2
- package/dest/test-wallet/worker_wallet.d.ts +5 -4
- package/dest/test-wallet/worker_wallet.d.ts.map +1 -1
- package/dest/test-wallet/worker_wallet.js +5 -1
- package/dest/test-wallet/worker_wallet_schema.d.ts +110 -224
- package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -1
- package/dest/test-wallet/worker_wallet_schema.js +14 -2
- package/package.json +49 -46
- package/src/bench/client_flows/benchmark.ts +19 -0
- package/src/bench/client_flows/client_flows_benchmark.ts +60 -41
- package/src/bench/utils.ts +9 -3
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +42 -24
- package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +49 -11
- package/src/e2e_deploy_contract/deploy_test.ts +3 -2
- package/src/e2e_epochs/epochs_test.ts +99 -11
- package/src/e2e_fees/fees_test.ts +49 -9
- package/src/e2e_nested_contract/nested_contract_test.ts +9 -5
- package/src/e2e_p2p/inactivity_slash_test.ts +5 -3
- package/src/e2e_p2p/p2p_network.ts +82 -60
- package/src/e2e_p2p/reqresp/utils.ts +51 -12
- package/src/e2e_p2p/shared.ts +92 -64
- package/src/e2e_token_contract/token_contract_test.ts +28 -10
- package/src/fixtures/authwit_proxy.ts +4 -0
- package/src/fixtures/e2e_prover_test.ts +22 -19
- package/src/fixtures/fixtures.ts +86 -0
- package/src/fixtures/get_bb_config.ts +7 -6
- package/src/fixtures/ha_setup.ts +4 -2
- package/src/fixtures/schnorr_hardcoded_account_contract.ts +49 -0
- package/src/fixtures/setup.ts +176 -34
- package/src/fixtures/setup_p2p_test.ts +13 -9
- package/src/fixtures/token_utils.ts +1 -2
- package/src/fixtures/utils.ts +2 -0
- package/src/forward-compatibility/wallet_rpc_client.ts +14 -0
- package/src/forward-compatibility/wallet_service.ts +104 -0
- package/src/guides/up_quick_start.sh +0 -2
- package/src/install_legacy_contracts.cjs +75 -0
- package/src/legacy-jest-resolver.cjs +112 -0
- package/src/shared/cross_chain_test_harness.ts +27 -13
- package/src/shared/gas_portal_test_harness.ts +21 -11
- package/src/shared/jest_setup.ts +36 -1
- package/src/shared/submit-transactions.ts +1 -4
- package/src/shared/uniswap_l1_l2.ts +77 -50
- package/src/shared/wait_for_l1_to_l2_message.ts +23 -0
- package/src/simulators/lending_simulator.ts +32 -14
- package/src/simulators/token_simulator.ts +6 -2
- package/src/spartan/setup_test_wallets.ts +91 -37
- package/src/spartan/tx_metrics.ts +82 -24
- package/src/spartan/utils/config.ts +1 -0
- package/src/spartan/utils/index.ts +3 -0
- package/src/spartan/utils/nodes.ts +2 -2
- package/src/spartan/utils/pod_logs.ts +99 -0
- package/src/test-wallet/test_wallet.ts +174 -104
- package/src/test-wallet/utils.ts +3 -7
- package/src/test-wallet/wallet_worker_script.ts +2 -2
- package/src/test-wallet/worker_wallet.ts +9 -4
- package/src/test-wallet/worker_wallet_schema.ts +2 -2
|
@@ -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';
|
|
@@ -13,8 +14,8 @@ import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
|
13
14
|
import { getCanonicalFeeJuice } from '@aztec/protocol-contracts/fee-juice';
|
|
14
15
|
import { GasSettings } from '@aztec/stdlib/gas';
|
|
15
16
|
import { getContract } from 'viem';
|
|
16
|
-
import { MNEMONIC } from '../fixtures/fixtures.js';
|
|
17
|
-
import { deployAccounts, publicDeployAccounts, setup, teardown } from '../fixtures/setup.js';
|
|
17
|
+
import { MNEMONIC, getPaddedMaxFeesPerGas } from '../fixtures/fixtures.js';
|
|
18
|
+
import { deployAccounts, ensureAuthRegistryPublished, publicDeployAccounts, setup, teardown } from '../fixtures/setup.js';
|
|
18
19
|
import { mintTokensToPrivate } from '../fixtures/token_utils.js';
|
|
19
20
|
import { getBalancesFn, setupSponsoredFPC } from '../fixtures/utils.js';
|
|
20
21
|
import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_harness.js';
|
|
@@ -58,6 +59,8 @@ import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_h
|
|
|
58
59
|
getBananaPublicBalanceFn;
|
|
59
60
|
getBananaPrivateBalanceFn;
|
|
60
61
|
getProverFee;
|
|
62
|
+
getCommittedProverFee;
|
|
63
|
+
getCommittedBurn;
|
|
61
64
|
ALICE_INITIAL_BANANAS;
|
|
62
65
|
SUBSCRIPTION_AMOUNT;
|
|
63
66
|
APP_SPONSORED_TX_GAS_LIMIT;
|
|
@@ -75,16 +78,23 @@ import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_h
|
|
|
75
78
|
this.coinbase = setupOptions.coinbase;
|
|
76
79
|
this.logger = createLogger(`e2e:e2e_fees:${testName}`);
|
|
77
80
|
}
|
|
78
|
-
async setup() {
|
|
81
|
+
async setup(opts = {}) {
|
|
79
82
|
this.logger.verbose('Setting up fresh context...');
|
|
83
|
+
// Token allowlist entries are test-only: FPC-based fee payment with custom tokens won't work on mainnet alpha.
|
|
84
|
+
const tokenAllowList = await getTokenAllowedSetupFunctions();
|
|
80
85
|
this.context = await setup(0, {
|
|
81
86
|
startProverNode: true,
|
|
82
87
|
...this.setupOptions,
|
|
88
|
+
...opts,
|
|
83
89
|
fundSponsoredFPC: true,
|
|
84
90
|
skipAccountDeployment: true,
|
|
85
91
|
l1ContractsArgs: {
|
|
86
92
|
...this.setupOptions
|
|
87
|
-
}
|
|
93
|
+
},
|
|
94
|
+
txPublicSetupAllowListExtend: [
|
|
95
|
+
...this.setupOptions.txPublicSetupAllowListExtend ?? [],
|
|
96
|
+
...tokenAllowList
|
|
97
|
+
]
|
|
88
98
|
});
|
|
89
99
|
this.rollupContract = RollupContract.getFromConfig(this.context.config);
|
|
90
100
|
this.chainMonitor = new ChainMonitor(this.rollupContract, this.context.dateProvider, this.logger, 200).start();
|
|
@@ -100,7 +110,7 @@ import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_h
|
|
|
100
110
|
}
|
|
101
111
|
async catchUpProvenChain() {
|
|
102
112
|
const bn = await this.aztecNode.getBlockNumber();
|
|
103
|
-
while(await this.aztecNode.
|
|
113
|
+
while(await this.aztecNode.getBlockNumber('proven') < bn){
|
|
104
114
|
await sleep(1000);
|
|
105
115
|
}
|
|
106
116
|
}
|
|
@@ -124,21 +134,26 @@ import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_h
|
|
|
124
134
|
});
|
|
125
135
|
}
|
|
126
136
|
/** 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({
|
|
137
|
+
const { result: balanceBefore } = await this.bananaCoin.methods.balance_of_private(address).simulate({
|
|
128
138
|
from: address
|
|
129
139
|
});
|
|
130
140
|
await mintTokensToPrivate(this.bananaCoin, this.aliceAddress, address, amount);
|
|
131
|
-
const balanceAfter = await this.bananaCoin.methods.balance_of_private(address).simulate({
|
|
141
|
+
const { result: balanceAfter } = await this.bananaCoin.methods.balance_of_private(address).simulate({
|
|
132
142
|
from: address
|
|
133
143
|
});
|
|
134
144
|
expect(balanceAfter).toEqual(balanceBefore + amount);
|
|
135
145
|
}
|
|
136
146
|
async applyBaseSetup() {
|
|
137
147
|
await this.applyInitialAccounts();
|
|
148
|
+
await this.applyEnsureAuthRegistryPublished();
|
|
138
149
|
await this.applyPublicDeployAccounts();
|
|
139
150
|
await this.applySetupFeeJuice();
|
|
140
151
|
await this.applyDeployBananaToken();
|
|
141
152
|
}
|
|
153
|
+
async applyEnsureAuthRegistryPublished() {
|
|
154
|
+
this.logger.info('Ensuring AuthRegistry published');
|
|
155
|
+
await ensureAuthRegistryPublished(this.wallet, this.aliceAddress);
|
|
156
|
+
}
|
|
142
157
|
async applyInitialAccounts() {
|
|
143
158
|
this.logger.info('Applying initial accounts setup');
|
|
144
159
|
const { deployedAccounts } = await deployAccounts(this.numberOfAccounts, this.logger)({
|
|
@@ -148,8 +163,8 @@ import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_h
|
|
|
148
163
|
this.wallet = this.context.wallet;
|
|
149
164
|
this.aztecNode = this.context.aztecNodeService;
|
|
150
165
|
this.aztecNodeAdmin = this.context.aztecNodeService;
|
|
151
|
-
this.gasSettings = GasSettings.
|
|
152
|
-
maxFeesPerGas:
|
|
166
|
+
this.gasSettings = GasSettings.fallback({
|
|
167
|
+
maxFeesPerGas: await getPaddedMaxFeesPerGas(this.aztecNode)
|
|
153
168
|
});
|
|
154
169
|
this.cheatCodes = this.context.cheatCodes;
|
|
155
170
|
this.accounts = deployedAccounts.map((a)=>a.address);
|
|
@@ -178,7 +193,7 @@ import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_h
|
|
|
178
193
|
}
|
|
179
194
|
async applyDeployBananaToken() {
|
|
180
195
|
this.logger.info('Applying deploy banana token setup');
|
|
181
|
-
const bananaCoin = await BananaCoin.deploy(this.wallet, this.aliceAddress, 'BC', 'BC', 18n).send({
|
|
196
|
+
const { contract: bananaCoin } = await BananaCoin.deploy(this.wallet, this.aliceAddress, 'BC', 'BC', 18n).send({
|
|
182
197
|
from: this.aliceAddress
|
|
183
198
|
});
|
|
184
199
|
this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
|
|
@@ -191,7 +206,7 @@ import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_h
|
|
|
191
206
|
const feeJuiceContract = this.feeJuiceBridgeTestHarness.feeJuice;
|
|
192
207
|
expect((await this.wallet.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
|
|
193
208
|
const bananaCoin = this.bananaCoin;
|
|
194
|
-
const bananaFPC = await FPCContract.deploy(this.wallet, bananaCoin.address, this.fpcAdmin).send({
|
|
209
|
+
const { contract: bananaFPC } = await FPCContract.deploy(this.wallet, bananaCoin.address, this.fpcAdmin).send({
|
|
195
210
|
from: this.aliceAddress
|
|
196
211
|
});
|
|
197
212
|
this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
|
|
@@ -225,6 +240,24 @@ import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_h
|
|
|
225
240
|
const mana = block.header.totalManaUsed.toBigInt();
|
|
226
241
|
return mulDiv(mana * proverCost, 10n ** 12n, price);
|
|
227
242
|
};
|
|
243
|
+
/**
|
|
244
|
+
* Reads the prover fee that the rollup actually committed for the block's checkpoint, which is what
|
|
245
|
+
* RewardLib uses to pay prover rewards. Unlike `getProverFee`, this does not re-derive the value
|
|
246
|
+
* from current L1 fees or current eth-per-fee-asset price, so it is robust to pipelined fee-asset-price
|
|
247
|
+
* drift between propose-time and reward-payout-time.
|
|
248
|
+
*/ this.getCommittedProverFee = async (blockNumber)=>{
|
|
249
|
+
const block = await this.aztecNode.getBlock(blockNumber);
|
|
250
|
+
const feeHeader = await this.rollupContract.getFeeHeader(BigInt(block.checkpointNumber));
|
|
251
|
+
return feeHeader.manaUsed * feeHeader.proverCost;
|
|
252
|
+
};
|
|
253
|
+
// RewardLib computes sequencerFee = checkpointFee - burn - proverFee where burn = manaUsed * congestionCost.
|
|
254
|
+
// The fixture's typical case keeps congestionCost at zero, but reading it explicitly avoids latent bugs
|
|
255
|
+
// when test load changes excess mana.
|
|
256
|
+
this.getCommittedBurn = async (blockNumber)=>{
|
|
257
|
+
const block = await this.aztecNode.getBlock(blockNumber);
|
|
258
|
+
const feeHeader = await this.rollupContract.getFeeHeader(BigInt(block.checkpointNumber));
|
|
259
|
+
return feeHeader.manaUsed * feeHeader.congestionCost;
|
|
260
|
+
};
|
|
228
261
|
}
|
|
229
262
|
async applySponsoredFPCSetup() {
|
|
230
263
|
this.logger.info('Applying sponsored FPC setup');
|
|
@@ -4,7 +4,7 @@ import type { AztecNode } from '@aztec/aztec.js/node';
|
|
|
4
4
|
import type { Wallet } from '@aztec/aztec.js/wallet';
|
|
5
5
|
import { ChildContract } from '@aztec/noir-test-contracts.js/Child';
|
|
6
6
|
import { ParentContract } from '@aztec/noir-test-contracts.js/Parent';
|
|
7
|
-
import { type EndToEndContext } from '../fixtures/setup.js';
|
|
7
|
+
import { type EndToEndContext, type SetupOptions } from '../fixtures/setup.js';
|
|
8
8
|
export declare class NestedContractTest {
|
|
9
9
|
private numberOfAccounts;
|
|
10
10
|
context: EndToEndContext;
|
|
@@ -19,8 +19,8 @@ export declare class NestedContractTest {
|
|
|
19
19
|
* Applies base setup by deploying accounts and publicly deploying them.
|
|
20
20
|
*/
|
|
21
21
|
applyBaseSetup(): Promise<void>;
|
|
22
|
-
setup(): Promise<void>;
|
|
22
|
+
setup(opts?: Partial<SetupOptions>): Promise<void>;
|
|
23
23
|
teardown(): Promise<void>;
|
|
24
24
|
applyManual(): Promise<void>;
|
|
25
25
|
}
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVzdGVkX2NvbnRyYWN0X3Rlc3QuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lMmVfbmVzdGVkX2NvbnRyYWN0L25lc3RlZF9jb250cmFjdF90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUV0RSxPQUFPLEVBQ0wsS0FBSyxlQUFlLEVBQ3BCLEtBQUssWUFBWSxFQUtsQixNQUFNLHNCQUFzQixDQUFDO0FBRTlCLHFCQUFhLGtCQUFrQjtJQVkzQixPQUFPLENBQUMsZ0JBQWdCO0lBWDFCLE9BQU8sRUFBRyxlQUFlLENBQUM7SUFDMUIsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUNmLE1BQU0sRUFBRyxNQUFNLENBQUM7SUFDaEIscUJBQXFCLEVBQUcsWUFBWSxDQUFDO0lBQ3JDLFNBQVMsRUFBRyxTQUFTLENBQUM7SUFFdEIsY0FBYyxFQUFHLGNBQWMsQ0FBQztJQUNoQyxhQUFhLEVBQUcsYUFBYSxDQUFDO0lBRTlCLFlBQ0UsUUFBUSxFQUFFLE1BQU0sRUFDUixnQkFBZ0IsU0FBSSxFQUc3QjtJQUVEOztPQUVHO0lBQ0csY0FBYyxrQkFlbkI7SUFFSyxLQUFLLENBQUMsSUFBSSxHQUFFLE9BQU8sQ0FBQyxZQUFZLENBQU0saUJBUTNDO0lBRUssUUFBUSxrQkFFYjtJQUVLLFdBQVcsa0JBUWhCO0NBQ0YifQ==
|
|
@@ -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,
|
|
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,EACpB,KAAK,YAAY,EAKlB,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,CAAC,IAAI,GAAE,OAAO,CAAC,YAAY,CAAM,iBAQ3C;IAEK,QAAQ,kBAEb;IAEK,WAAW,kBAQhB;CACF"}
|
|
@@ -31,9 +31,10 @@ export class NestedContractTest {
|
|
|
31
31
|
this.defaultAccountAddress
|
|
32
32
|
]);
|
|
33
33
|
}
|
|
34
|
-
async setup() {
|
|
34
|
+
async setup(opts = {}) {
|
|
35
35
|
this.logger.info('Setting up fresh subsystems');
|
|
36
36
|
this.context = await setup(0, {
|
|
37
|
+
...opts,
|
|
37
38
|
fundSponsoredFPC: true,
|
|
38
39
|
skipAccountDeployment: true
|
|
39
40
|
});
|
|
@@ -44,13 +45,11 @@ export class NestedContractTest {
|
|
|
44
45
|
}
|
|
45
46
|
async applyManual() {
|
|
46
47
|
this.logger.info('Deploying parent and child contracts');
|
|
47
|
-
|
|
48
|
+
({ contract: this.parentContract } = await ParentContract.deploy(this.wallet).send({
|
|
48
49
|
from: this.defaultAccountAddress
|
|
49
|
-
});
|
|
50
|
-
|
|
50
|
+
}));
|
|
51
|
+
({ contract: this.childContract } = await ChildContract.deploy(this.wallet).send({
|
|
51
52
|
from: this.defaultAccountAddress
|
|
52
|
-
});
|
|
53
|
-
this.parentContract = parentContract;
|
|
54
|
-
this.childContract = childContract;
|
|
53
|
+
}));
|
|
55
54
|
}
|
|
56
55
|
}
|
|
@@ -28,4 +28,4 @@ export declare class P2PInactivityTest {
|
|
|
28
28
|
get logger(): import("@aztec/foundation/log").Logger;
|
|
29
29
|
get slashingAmount(): bigint;
|
|
30
30
|
}
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5hY3Rpdml0eV9zbGFzaF90ZXN0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZTJlX3AycC9pbmFjdGl2aXR5X3NsYXNoX3Rlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSTNELE9BQU8sZUFBZSxDQUFDO0FBS3ZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQWlCbEQscUJBQWEsaUJBQWlCO2FBYVYsSUFBSSxFQUFFLGNBQWM7SUFaL0IsS0FBSyxFQUFHLGdCQUFnQixFQUFFLENBQUM7SUFDM0IsV0FBVyxFQUFHLGdCQUFnQixFQUFFLENBQUM7SUFDakMsYUFBYSxFQUFHLGdCQUFnQixFQUFFLENBQUM7SUFFbkMsTUFBTSxFQUFHLGNBQWMsQ0FBQztJQUN4QixpQkFBaUIsRUFBRyxVQUFVLEVBQUUsQ0FBQztJQUV4QyxPQUFPLENBQUMsT0FBTyxDQUFTO0lBQ3hCLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBUztJQUNsQyxPQUFPLENBQUMsZUFBZSxDQUFVO0lBRWpDLFlBQ2tCLElBQUksRUFBRSxjQUFjLEVBQ3BDLElBQUksRUFBRTtRQUFFLGlCQUFpQixFQUFFLE1BQU0sQ0FBQztRQUFDLGVBQWUsQ0FBQyxFQUFFLE9BQU8sQ0FBQTtLQUFFLEVBSy9EO0lBRUQsT0FBYSxNQUFNLENBQ2pCLFFBQVEsRUFBRSxNQUFNLEVBQ2hCLElBQUksRUFBRTtRQUFFLHdDQUF3QyxFQUFFLE1BQU0sQ0FBQztRQUFDLGlCQUFpQixFQUFFLE1BQU0sQ0FBQztRQUFDLGVBQWUsQ0FBQyxFQUFFLE9BQU8sQ0FBQTtLQUFFLDhCQWdDakg7SUFFWSxLQUFLLGtCQTBFakI7SUFFWSxRQUFRLGtCQU1wQjtJQUVELElBQVcsR0FBRyxtREFFYjtJQUVELElBQVcsTUFBTSwyQ0FFaEI7SUFFRCxJQUFXLGNBQWMsV0FFeEI7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inactivity_slash_test.d.ts","sourceRoot":"","sources":["../../src/e2e_p2p/inactivity_slash_test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAI3D,OAAO,eAAe,CAAC;AAKvB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAiBlD,qBAAa,iBAAiB;aAaV,IAAI,EAAE,cAAc;IAZ/B,KAAK,EAAG,gBAAgB,EAAE,CAAC;IAC3B,WAAW,EAAG,gBAAgB,EAAE,CAAC;IACjC,aAAa,EAAG,gBAAgB,EAAE,CAAC;IAEnC,MAAM,EAAG,cAAc,CAAC;IACxB,iBAAiB,EAAG,UAAU,EAAE,CAAC;IAExC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,eAAe,CAAU;IAEjC,YACkB,IAAI,EAAE,cAAc,EACpC,IAAI,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,EAK/D;IAED,OAAa,MAAM,CACjB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE;QAAE,wCAAwC,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,
|
|
1
|
+
{"version":3,"file":"inactivity_slash_test.d.ts","sourceRoot":"","sources":["../../src/e2e_p2p/inactivity_slash_test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAI3D,OAAO,eAAe,CAAC;AAKvB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAiBlD,qBAAa,iBAAiB;aAaV,IAAI,EAAE,cAAc;IAZ/B,KAAK,EAAG,gBAAgB,EAAE,CAAC;IAC3B,WAAW,EAAG,gBAAgB,EAAE,CAAC;IACjC,aAAa,EAAG,gBAAgB,EAAE,CAAC;IAEnC,MAAM,EAAG,cAAc,CAAC;IACxB,iBAAiB,EAAG,UAAU,EAAE,CAAC;IAExC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,eAAe,CAAU;IAEjC,YACkB,IAAI,EAAE,cAAc,EACpC,IAAI,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,EAK/D;IAED,OAAa,MAAM,CACjB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE;QAAE,wCAAwC,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,8BAgCjH;IAEY,KAAK,kBA0EjB;IAEY,QAAQ,kBAMpB;IAED,IAAW,GAAG,mDAEb;IAED,IAAW,MAAM,2CAEhB;IAED,IAAW,cAAc,WAExB;CACF"}
|
|
@@ -42,6 +42,9 @@ export class P2PInactivityTest {
|
|
|
42
42
|
basePort: BOOT_NODE_UDP_PORT,
|
|
43
43
|
startProverNode: true,
|
|
44
44
|
initialConfig: {
|
|
45
|
+
enableProposerPipelining: true,
|
|
46
|
+
inboxLag: 2,
|
|
47
|
+
anvilSlotsInAnEpoch: 4,
|
|
45
48
|
proverNodeConfig: {
|
|
46
49
|
proverNodeEpochProvingDelayMs: AZTEC_SLOT_DURATION * 1000
|
|
47
50
|
},
|
|
@@ -52,7 +55,6 @@ export class P2PInactivityTest {
|
|
|
52
55
|
listenAddress: '127.0.0.1',
|
|
53
56
|
minTxsPerBlock: 0,
|
|
54
57
|
aztecEpochDuration: EPOCH_DURATION,
|
|
55
|
-
validatorReexecute: false,
|
|
56
58
|
sentinelEnabled: true,
|
|
57
59
|
slashingQuorum: SLASHING_QUORUM,
|
|
58
60
|
slashingRoundSizeInEpochs: SLASHING_ROUND_SIZE_IN_EPOCHS,
|
|
@@ -84,13 +86,13 @@ export class P2PInactivityTest {
|
|
|
84
86
|
await this.test.ctx.aztecNodeService.stop();
|
|
85
87
|
}
|
|
86
88
|
// Create all active nodes
|
|
87
|
-
this.activeNodes = await createNodes(this.test.ctx.aztecNodeConfig, this.test.ctx.dateProvider, this.test.bootstrapNodeEnr, NUM_NODES - this.inactiveNodeCount - Number(this.keepInitialNode), BOOT_NODE_UDP_PORT, this.test.
|
|
89
|
+
this.activeNodes = await createNodes(this.test.ctx.aztecNodeConfig, this.test.ctx.dateProvider, this.test.bootstrapNodeEnr, NUM_NODES - this.inactiveNodeCount - Number(this.keepInitialNode), BOOT_NODE_UDP_PORT, this.test.genesis, this.dataDir, undefined, Number(this.keepInitialNode));
|
|
88
90
|
// And the ones with an initially disabled sequencer
|
|
89
91
|
const inactiveConfig = {
|
|
90
92
|
...this.test.ctx.aztecNodeConfig,
|
|
91
93
|
dontStartSequencer: true
|
|
92
94
|
};
|
|
93
|
-
this.inactiveNodes = await createNodes(inactiveConfig, this.test.ctx.dateProvider, this.test.bootstrapNodeEnr, this.inactiveNodeCount, BOOT_NODE_UDP_PORT, this.test.
|
|
95
|
+
this.inactiveNodes = await createNodes(inactiveConfig, this.test.ctx.dateProvider, this.test.bootstrapNodeEnr, this.inactiveNodeCount, BOOT_NODE_UDP_PORT, this.test.genesis, this.dataDir, undefined, NUM_NODES - this.inactiveNodeCount);
|
|
94
96
|
this.nodes = [
|
|
95
97
|
...this.keepInitialNode ? [
|
|
96
98
|
this.test.ctx.aztecNodeService
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type InitialAccountData } from '@aztec/accounts/testing';
|
|
2
2
|
import type { AztecNodeService } from '@aztec/aztec-node';
|
|
3
3
|
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
4
|
-
import {
|
|
4
|
+
import { RollupContract, type SlashingProposerContract } from '@aztec/ethereum/contracts';
|
|
5
5
|
import type { Operator } from '@aztec/ethereum/deploy-aztec-l1-contracts';
|
|
6
6
|
import { ChainMonitor } from '@aztec/ethereum/test';
|
|
7
7
|
import type { ViemClient } from '@aztec/ethereum/types';
|
|
@@ -9,8 +9,8 @@ import { type Logger } from '@aztec/foundation/log';
|
|
|
9
9
|
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
|
-
import {
|
|
13
|
-
import type {
|
|
12
|
+
import { TopicType } from '@aztec/stdlib/p2p';
|
|
13
|
+
import type { GenesisData } from '@aztec/stdlib/world-state';
|
|
14
14
|
import { type GetContractReturnType } from 'viem';
|
|
15
15
|
import { type EndToEndContext, type SetupOptions } from '../fixtures/setup.js';
|
|
16
16
|
import type { TestWallet } from '../test-wallet/test_wallet.js';
|
|
@@ -18,7 +18,7 @@ export declare const WAIT_FOR_TX_TIMEOUT: number;
|
|
|
18
18
|
export declare const SHORTENED_BLOCK_TIME_CONFIG_NO_PRUNES: {
|
|
19
19
|
aztecSlotDuration: number;
|
|
20
20
|
ethereumSlotDuration: number;
|
|
21
|
-
|
|
21
|
+
aztecProofSubmissionEpochs: number;
|
|
22
22
|
};
|
|
23
23
|
export declare class P2PNetworkTest {
|
|
24
24
|
readonly testName: string;
|
|
@@ -259,8 +259,8 @@ export declare class P2PNetworkTest {
|
|
|
259
259
|
attesterPublicKeys: string[];
|
|
260
260
|
peerIdPrivateKeys: string[];
|
|
261
261
|
validators: Operator[];
|
|
262
|
-
|
|
263
|
-
|
|
262
|
+
hardcodedAccountData: InitialAccountData;
|
|
263
|
+
genesis: GenesisData | undefined;
|
|
264
264
|
wallet?: TestWallet;
|
|
265
265
|
defaultAccountAddress?: AztecAddress;
|
|
266
266
|
spamContract?: SpamContract;
|
|
@@ -283,6 +283,9 @@ export declare class P2PNetworkTest {
|
|
|
283
283
|
validators: Operator[];
|
|
284
284
|
};
|
|
285
285
|
applyBaseSetup(): Promise<void>;
|
|
286
|
+
/** Points the wallet to a P2P-enabled node so transactions can propagate through the network. */
|
|
287
|
+
setupWalletOnNode(node: AztecNodeService): void;
|
|
288
|
+
/** Registers the hardcoded account in PXE without on-chain deployment. No sequencer needed. */
|
|
286
289
|
setupAccount(): Promise<void>;
|
|
287
290
|
deploySpamContract(): Promise<void>;
|
|
288
291
|
removeInitialNode(): Promise<void>;
|
|
@@ -303,13 +306,12 @@ export declare class P2PNetworkTest {
|
|
|
303
306
|
* @param timeoutSeconds - Maximum time to wait for connections (default: 30 seconds)
|
|
304
307
|
* @param checkIntervalSeconds - How often to check connectivity (default: 0.1 seconds)
|
|
305
308
|
*/
|
|
306
|
-
waitForP2PMeshConnectivity(nodes: AztecNodeService[], expectedNodeCount?: number, timeoutSeconds?: number, checkIntervalSeconds?: number): Promise<void>;
|
|
309
|
+
waitForP2PMeshConnectivity(nodes: AztecNodeService[], expectedNodeCount?: number, timeoutSeconds?: number, checkIntervalSeconds?: number, topics?: TopicType[]): Promise<void>;
|
|
307
310
|
teardown(): Promise<void>;
|
|
308
311
|
getContracts(): Promise<{
|
|
309
312
|
rollup: RollupContract;
|
|
310
313
|
slasherContract: GetContractReturnType<typeof SlasherAbi, ViemClient>;
|
|
311
|
-
slashingProposer:
|
|
312
|
-
slashFactory: SlashFactoryContract;
|
|
314
|
+
slashingProposer: SlashingProposerContract | undefined;
|
|
313
315
|
}>;
|
|
314
316
|
}
|
|
315
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
317
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicDJwX25ldHdvcmsuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lMmVfcDJwL3AycF9uZXR3b3JrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLGtCQUFrQixFQUEyQixNQUFNLHlCQUF5QixDQUFDO0FBQzNGLE9BQU8sS0FBSyxFQUFtQixnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTNFLE9BQU8sRUFBRSxZQUFZLEVBQWMsTUFBTSwyQkFBMkIsQ0FBQztBQUdyRSxPQUFPLEVBQWUsY0FBYyxFQUFFLEtBQUssd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RyxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUkxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQTRCLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR2xGLE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUVsRSxPQUFPLEVBQWEsVUFBVSxFQUFnQixNQUFNLHFCQUFxQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNsRSxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUcxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFLN0QsT0FBTyxFQUFFLEtBQUsscUJBQXFCLEVBQTJCLE1BQU0sTUFBTSxDQUFDO0FBTzNFLE9BQU8sRUFDTCxLQUFLLGVBQWUsRUFDcEIsS0FBSyxZQUFZLEVBS2xCLE1BQU0sc0JBQXNCLENBQUM7QUFPOUIsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStC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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,
|
|
1
|
+
{"version":3,"file":"p2p_network.d.ts","sourceRoot":"","sources":["../../src/e2e_p2p/p2p_network.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { generateSchnorrAccounts } from '@aztec/accounts/testing';
|
|
2
|
+
import { getAccountContractAddress } from '@aztec/aztec.js/account';
|
|
1
3
|
import { EthAddress } from '@aztec/aztec.js/addresses';
|
|
2
4
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
3
5
|
import { getL1ContractsConfigEnvVars } from '@aztec/ethereum/config';
|
|
@@ -14,14 +16,14 @@ import { RollupAbi, SlasherAbi, TestERC20Abi } from '@aztec/l1-artifacts';
|
|
|
14
16
|
import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
|
|
15
17
|
import { createBootstrapNodeFromPrivateKey, getBootstrapNodeEnr } from '@aztec/p2p/test-helpers';
|
|
16
18
|
import { tryStop } from '@aztec/stdlib/interfaces/server';
|
|
17
|
-
import { SlashFactoryContract } from '@aztec/stdlib/l1-contracts';
|
|
18
19
|
import { TopicType } from '@aztec/stdlib/p2p';
|
|
19
20
|
import { ZkPassportProofParams } from '@aztec/stdlib/zkpassport';
|
|
20
21
|
import { getGenesisValues } from '@aztec/world-state/testing';
|
|
21
22
|
import getPort from 'get-port';
|
|
22
23
|
import { getAddress, getContract } from 'viem';
|
|
23
24
|
import { privateKeyToAccount } from 'viem/accounts';
|
|
24
|
-
import {
|
|
25
|
+
import { SCHNORR_HARDCODED_PRIVATE_KEY, SchnorrHardcodedKeyAccountContract } from '../fixtures/schnorr_hardcoded_account_contract.js';
|
|
26
|
+
import { getPrivateKeyFromIndex, getSponsoredFPCAddress, setup, teardown } from '../fixtures/setup.js';
|
|
25
27
|
import { ATTESTER_PRIVATE_KEYS_START_INDEX, createValidatorConfig, generatePrivateKeys } from '../fixtures/setup_p2p_test.js';
|
|
26
28
|
import { getEndToEndTestTelemetryClient } from '../fixtures/with_telemetry_utils.js';
|
|
27
29
|
// Use a fixed bootstrap node private key so that we can re-use the same snapshot and the nodes can find each other
|
|
@@ -31,7 +33,7 @@ export const WAIT_FOR_TX_TIMEOUT = l1ContractsConfig.aztecSlotDuration * 3;
|
|
|
31
33
|
export const SHORTENED_BLOCK_TIME_CONFIG_NO_PRUNES = {
|
|
32
34
|
aztecSlotDuration: 12,
|
|
33
35
|
ethereumSlotDuration: 4,
|
|
34
|
-
|
|
36
|
+
aztecProofSubmissionEpochs: 640
|
|
35
37
|
};
|
|
36
38
|
export class P2PNetworkTest {
|
|
37
39
|
testName;
|
|
@@ -50,8 +52,8 @@ export class P2PNetworkTest {
|
|
|
50
52
|
attesterPublicKeys;
|
|
51
53
|
peerIdPrivateKeys;
|
|
52
54
|
validators;
|
|
53
|
-
|
|
54
|
-
|
|
55
|
+
hardcodedAccountData;
|
|
56
|
+
genesis;
|
|
55
57
|
// The re-execution test needs a wallet and a spam contract
|
|
56
58
|
wallet;
|
|
57
59
|
defaultAccountAddress;
|
|
@@ -72,8 +74,6 @@ export class P2PNetworkTest {
|
|
|
72
74
|
this.attesterPublicKeys = [];
|
|
73
75
|
this.peerIdPrivateKeys = [];
|
|
74
76
|
this.validators = [];
|
|
75
|
-
this.deployedAccounts = [];
|
|
76
|
-
this.prefilledPublicData = [];
|
|
77
77
|
this.logger = createLogger(`e2e:e2e_p2p:${testName}`);
|
|
78
78
|
// Set up the base account and node private keys for the initial network deployment
|
|
79
79
|
this.baseAccountPrivateKey = `0x${getPrivateKeyFromIndex(1).toString('hex')}`;
|
|
@@ -89,18 +89,17 @@ export class P2PNetworkTest {
|
|
|
89
89
|
aztecSlotDuration: initialValidatorConfig.aztecSlotDuration ?? l1ContractsConfig.aztecSlotDuration,
|
|
90
90
|
aztecProofSubmissionEpochs: initialValidatorConfig.aztecProofSubmissionEpochs ?? l1ContractsConfig.aztecProofSubmissionEpochs,
|
|
91
91
|
slashingRoundSizeInEpochs: initialValidatorConfig.slashingRoundSizeInEpochs ?? l1ContractsConfig.slashingRoundSizeInEpochs,
|
|
92
|
-
|
|
92
|
+
slasherEnabled: initialValidatorConfig.slasherEnabled ?? true,
|
|
93
93
|
aztecTargetCommitteeSize: numberOfValidators,
|
|
94
94
|
metricsPort: metricsPort,
|
|
95
95
|
numberOfInitialFundedAccounts: 2,
|
|
96
|
-
startProverNode
|
|
97
|
-
walletMinFeePadding: 2.0
|
|
96
|
+
startProverNode
|
|
98
97
|
};
|
|
99
98
|
this.deployL1ContractsArgs = {
|
|
100
99
|
...initialValidatorConfig,
|
|
101
100
|
aztecEpochDuration: initialValidatorConfig.aztecEpochDuration ?? l1ContractsConfig.aztecEpochDuration,
|
|
102
101
|
slashingRoundSizeInEpochs: initialValidatorConfig.slashingRoundSizeInEpochs ?? l1ContractsConfig.slashingRoundSizeInEpochs,
|
|
103
|
-
|
|
102
|
+
slasherEnabled: initialValidatorConfig.slasherEnabled ?? true,
|
|
104
103
|
ethereumSlotDuration: initialValidatorConfig.ethereumSlotDuration ?? l1ContractsConfig.ethereumSlotDuration,
|
|
105
104
|
aztecSlotDuration: initialValidatorConfig.aztecSlotDuration ?? l1ContractsConfig.aztecSlotDuration,
|
|
106
105
|
aztecProofSubmissionEpochs: initialValidatorConfig.aztecProofSubmissionEpochs ?? l1ContractsConfig.aztecProofSubmissionEpochs,
|
|
@@ -120,10 +119,10 @@ export class P2PNetworkTest {
|
|
|
120
119
|
return new P2PNetworkTest(testName, bootstrapNodeEnr, port, numberOfValidators, initialValidatorConfig, numberOfNodes, metricsPort, startProverNode);
|
|
121
120
|
}
|
|
122
121
|
get fundedAccount() {
|
|
123
|
-
if (!this.
|
|
124
|
-
throw new Error('Call
|
|
122
|
+
if (!this.hardcodedAccountData) {
|
|
123
|
+
throw new Error('Call setup to initialize the hardcoded account.');
|
|
125
124
|
}
|
|
126
|
-
return this.
|
|
125
|
+
return this.hardcodedAccountData;
|
|
127
126
|
}
|
|
128
127
|
async addBootstrapNode() {
|
|
129
128
|
this.logger.info('Adding bootstrap node');
|
|
@@ -205,14 +204,19 @@ export class P2PNetworkTest {
|
|
|
205
204
|
// Send and await a tx to make sure we mine a block for the warp to correctly progress.
|
|
206
205
|
await this._sendDummyTx(this.context.deployL1ContractsValues.l1Client);
|
|
207
206
|
}
|
|
208
|
-
|
|
209
|
-
this.logger.info('
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
207
|
+
/** Points the wallet to a P2P-enabled node so transactions can propagate through the network. */ setupWalletOnNode(node) {
|
|
208
|
+
this.logger.info('Pointing wallet to a P2P-enabled node');
|
|
209
|
+
this.context.wallet.updateNode(node);
|
|
210
|
+
}
|
|
211
|
+
/** Registers the hardcoded account in PXE without on-chain deployment. No sequencer needed. */ async setupAccount() {
|
|
212
|
+
this.logger.info('Registering hardcoded account (no deployment)');
|
|
213
|
+
const contract = new SchnorrHardcodedKeyAccountContract();
|
|
214
|
+
const accountManager = await this.context.wallet.createAccount({
|
|
215
|
+
secret: this.hardcodedAccountData.secret,
|
|
216
|
+
salt: this.hardcodedAccountData.salt,
|
|
217
|
+
contract
|
|
213
218
|
});
|
|
214
|
-
this.
|
|
215
|
-
[{ address: this.defaultAccountAddress }] = deployedAccounts;
|
|
219
|
+
this.defaultAccountAddress = accountManager.address;
|
|
216
220
|
this.wallet = this.context.wallet;
|
|
217
221
|
}
|
|
218
222
|
async deploySpamContract() {
|
|
@@ -220,10 +224,9 @@ export class P2PNetworkTest {
|
|
|
220
224
|
if (!this.wallet) {
|
|
221
225
|
throw new Error('Call setupAccount before deploying spam contract');
|
|
222
226
|
}
|
|
223
|
-
|
|
227
|
+
({ contract: this.spamContract } = await SpamContract.deploy(this.wallet).send({
|
|
224
228
|
from: this.defaultAccountAddress
|
|
225
|
-
});
|
|
226
|
-
this.spamContract = spamContract;
|
|
229
|
+
}));
|
|
227
230
|
}
|
|
228
231
|
async removeInitialNode() {
|
|
229
232
|
this.logger.info('Removing initial node');
|
|
@@ -247,11 +250,28 @@ export class P2PNetworkTest {
|
|
|
247
250
|
}
|
|
248
251
|
async setup() {
|
|
249
252
|
this.logger.info('Setting up subsystems from fresh');
|
|
253
|
+
// Pre-compute hardcoded account data so it gets funded in genesis.
|
|
254
|
+
const contract = new SchnorrHardcodedKeyAccountContract();
|
|
255
|
+
const secret = Fr.random();
|
|
256
|
+
const salt = Fr.random();
|
|
257
|
+
this.hardcodedAccountData = {
|
|
258
|
+
secret,
|
|
259
|
+
salt,
|
|
260
|
+
signingKey: SCHNORR_HARDCODED_PRIVATE_KEY,
|
|
261
|
+
address: await getAccountContractAddress(contract, secret, salt)
|
|
262
|
+
};
|
|
263
|
+
// Generate regular Schnorr accounts for tests that need deployable accounts (e.g. add_rollup).
|
|
264
|
+
const regularAccounts = await generateSchnorrAccounts(this.setupOptions.numberOfInitialFundedAccounts ?? 2);
|
|
250
265
|
this.context = await setup(0, {
|
|
251
266
|
...this.setupOptions,
|
|
252
267
|
fundSponsoredFPC: true,
|
|
253
268
|
skipAccountDeployment: true,
|
|
254
|
-
|
|
269
|
+
skipInitialSequencer: true,
|
|
270
|
+
initialFundedAccounts: [
|
|
271
|
+
...regularAccounts,
|
|
272
|
+
this.hardcodedAccountData
|
|
273
|
+
],
|
|
274
|
+
slasherEnabled: this.setupOptions.slasherEnabled ?? this.deployL1ContractsArgs.slasherEnabled ?? false,
|
|
255
275
|
aztecTargetCommitteeSize: 0,
|
|
256
276
|
l1ContractsArgs: this.deployL1ContractsArgs
|
|
257
277
|
}, // Use checkpointed chain tip for PXE to avoid issues with blocks being dropped due to pruned anchor blocks.
|
|
@@ -264,8 +284,8 @@ export class P2PNetworkTest {
|
|
|
264
284
|
...this.context.initialFundedAccounts.map((a)=>a.address),
|
|
265
285
|
sponsoredFPCAddress
|
|
266
286
|
];
|
|
267
|
-
const {
|
|
268
|
-
this.
|
|
287
|
+
const { genesis } = await getGenesisValues(initialFundedAccounts, undefined, undefined, this.context.genesis.genesisTimestamp);
|
|
288
|
+
this.genesis = genesis;
|
|
269
289
|
const rollupContract = RollupContract.getFromL1ContractsValues(this.context.deployL1ContractsValues);
|
|
270
290
|
this.monitor = new ChainMonitor(rollupContract, this.context.dateProvider).start();
|
|
271
291
|
this.monitor.on('l1-block', ({ timestamp })=>this.context.dateProvider.setTime(Number(timestamp) * 1000));
|
|
@@ -288,7 +308,9 @@ export class P2PNetworkTest {
|
|
|
288
308
|
* @param expectedNodeCount - Expected number of nodes in the network (defaults to nodes.length)
|
|
289
309
|
* @param timeoutSeconds - Maximum time to wait for connections (default: 30 seconds)
|
|
290
310
|
* @param checkIntervalSeconds - How often to check connectivity (default: 0.1 seconds)
|
|
291
|
-
*/ async waitForP2PMeshConnectivity(nodes, expectedNodeCount, timeoutSeconds = 30, checkIntervalSeconds = 0.1
|
|
311
|
+
*/ async waitForP2PMeshConnectivity(nodes, expectedNodeCount, timeoutSeconds = 30, checkIntervalSeconds = 0.1, topics = [
|
|
312
|
+
TopicType.tx
|
|
313
|
+
]) {
|
|
292
314
|
const nodeCount = expectedNodeCount ?? nodes.length;
|
|
293
315
|
const minPeerCount = nodeCount - 1;
|
|
294
316
|
this.logger.warn(`Waiting for all ${nodeCount} nodes to connect to P2P mesh (at least ${minPeerCount} peers each)...`);
|
|
@@ -301,19 +323,21 @@ export class P2PNetworkTest {
|
|
|
301
323
|
}, `Node ${index} to connect to at least ${minPeerCount} peers`, timeoutSeconds, checkIntervalSeconds);
|
|
302
324
|
}));
|
|
303
325
|
this.logger.warn('All nodes connected to P2P mesh');
|
|
304
|
-
// Wait for GossipSub mesh to form for
|
|
326
|
+
// Wait for GossipSub mesh to form for all specified topics.
|
|
305
327
|
// We only require at least 1 mesh peer per node because GossipSub
|
|
306
328
|
// stops grafting once it reaches Dlo peers and won't fill the mesh to all available peers.
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
329
|
+
for (const topic of topics){
|
|
330
|
+
this.logger.warn(`Waiting for GossipSub mesh to form for ${topic} topic...`);
|
|
331
|
+
await Promise.all(nodes.map(async (node, index)=>{
|
|
332
|
+
const p2p = node.getP2P();
|
|
333
|
+
await retryUntil(async ()=>{
|
|
334
|
+
const meshPeers = await p2p.getGossipMeshPeerCount(topic);
|
|
335
|
+
this.logger.debug(`Node ${index} has ${meshPeers} gossip mesh peers for ${topic} topic`);
|
|
336
|
+
return meshPeers >= 1 ? true : undefined;
|
|
337
|
+
}, `Node ${index} to have gossip mesh peers for ${topic} topic`, timeoutSeconds, checkIntervalSeconds);
|
|
338
|
+
}));
|
|
339
|
+
this.logger.warn(`All nodes have gossip mesh peers for ${topic} topic`);
|
|
340
|
+
}
|
|
317
341
|
}
|
|
318
342
|
async teardown() {
|
|
319
343
|
await this.monitor.stop();
|
|
@@ -330,14 +354,12 @@ export class P2PNetworkTest {
|
|
|
330
354
|
abi: SlasherAbi,
|
|
331
355
|
client: this.ctx.deployL1ContractsValues.l1Client
|
|
332
356
|
});
|
|
333
|
-
// Get the actual slashing proposer from rollup
|
|
357
|
+
// Get the actual slashing proposer from rollup
|
|
334
358
|
const slashingProposer = await rollup.getSlashingProposer();
|
|
335
|
-
const slashFactory = new SlashFactoryContract(this.ctx.deployL1ContractsValues.l1Client, getAddress(this.ctx.deployL1ContractsValues.l1ContractAddresses.slashFactoryAddress.toString()));
|
|
336
359
|
return {
|
|
337
360
|
rollup,
|
|
338
361
|
slasherContract,
|
|
339
|
-
slashingProposer
|
|
340
|
-
slashFactory
|
|
362
|
+
slashingProposer
|
|
341
363
|
};
|
|
342
364
|
}
|
|
343
365
|
}
|
|
@@ -19,4 +19,4 @@ export declare function runReqrespTxTest(params: {
|
|
|
19
19
|
disableStatusHandshake?: boolean;
|
|
20
20
|
}): Promise<AztecNodeService[]>;
|
|
21
21
|
export {};
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lMmVfcDJwL3JlcXJlc3AvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQWdCMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBSW5ELGVBQU8sTUFBTSxjQUFjLElBQUksQ0FBQztBQUNoQyxlQUFPLE1BQU0sZ0JBQWdCLElBQUksQ0FBQztBQUNsQyxlQUFPLE1BQU0sa0JBQWtCLFFBQXVCLENBQUM7QUFFdkQsZUFBTyxNQUFNLG9CQUFvQixjQUEyRCxDQUFDO0FBRTdGLEtBQUssY0FBYyxHQUFHO0lBQ3BCLHNCQUFzQixDQUFDLEVBQUUsT0FBTyxDQUFDO0NBQ2xDLENBQUM7QUFFRix3QkFBc0IsaUJBQWlCLENBQUMsT0FBTyxHQUFFLGNBQW1CLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQThCN0Y7QUFFRCx3QkFBc0Isa0JBQWtCLENBQUMsTUFBTSxFQUFFO0lBQUUsQ0FBQyxFQUFFLGNBQWMsQ0FBQztJQUFDLEtBQUssQ0FBQyxFQUFFLGdCQUFnQixFQUFFLENBQUM7SUFBQyxPQUFPLEVBQUUsTUFBTSxDQUFBO0NBQUUsaUJBU2xIO0FBSUQsd0JBQXNCLGdCQUFnQixDQUFDLE1BQU0sRUFBRTtJQUM3QyxDQUFDLEVBQUUsY0FBYyxDQUFDO0lBQ2xCLE9BQU8sRUFBRSxNQUFNLENBQUM7SUFDaEIsc0JBQXNCLENBQUMsRUFBRSxPQUFPLENBQUM7Q0FDbEMsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQWlLOUIifQ==
|
|
@@ -1 +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,
|
|
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,EAAE,MAAM,mBAAmB,CAAC;AAInD,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,CA8B7F;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,CAiK9B"}
|