@aztec/end-to-end 0.0.1-commit.b33fc05d0 → 0.0.1-commit.b3d3157a
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 +27 -38
- package/dest/bench/utils.d.ts +1 -1
- package/dest/bench/utils.d.ts.map +1 -1
- package/dest/bench/utils.js +2 -0
- 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 +14 -5
- 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 +86 -13
- 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 +32 -6
- 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 +2 -1
- 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 +4 -3
- package/dest/e2e_p2p/p2p_network.d.ts +10 -9
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +46 -27
- 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 +29 -13
- package/dest/e2e_p2p/shared.d.ts +23 -14
- package/dest/e2e_p2p/shared.d.ts.map +1 -1
- package/dest/e2e_p2p/shared.js +62 -57
- 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 +4 -2
- package/dest/fixtures/authwit_proxy.d.ts +1 -1
- 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 +9 -13
- package/dest/fixtures/fixtures.d.ts +70 -1
- package/dest/fixtures/fixtures.d.ts.map +1 -1
- package/dest/fixtures/fixtures.js +65 -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 -11
- package/dest/fixtures/setup.d.ts.map +1 -1
- package/dest/fixtures/setup.js +157 -28
- 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 +9 -5
- 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 +17 -8
- 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 +50 -32
- 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 +24 -12
- package/dest/simulators/token_simulator.js +1 -1
- package/dest/spartan/setup_test_wallets.d.ts +1 -1
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +72 -48
- 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 +73 -20
- package/dest/spartan/utils/config.d.ts +9 -35
- package/dest/spartan/utils/config.d.ts.map +1 -1
- package/dest/spartan/utils/nodes.js +2 -2
- 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 +7 -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 +6 -2
- 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 +46 -42
- package/src/bench/client_flows/benchmark.ts +19 -0
- package/src/bench/client_flows/client_flows_benchmark.ts +64 -53
- package/src/bench/utils.ts +2 -1
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +24 -10
- 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 +98 -11
- package/src/e2e_fees/fees_test.ts +37 -4
- package/src/e2e_nested_contract/nested_contract_test.ts +3 -1
- package/src/e2e_p2p/inactivity_slash_test.ts +4 -3
- package/src/e2e_p2p/p2p_network.ts +57 -39
- package/src/e2e_p2p/reqresp/utils.ts +30 -12
- package/src/e2e_p2p/shared.ts +60 -71
- package/src/e2e_token_contract/token_contract_test.ts +12 -2
- package/src/fixtures/authwit_proxy.ts +4 -0
- package/src/fixtures/e2e_prover_test.ts +15 -18
- package/src/fixtures/fixtures.ts +83 -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 +186 -33
- package/src/fixtures/setup_p2p_test.ts +13 -9
- package/src/fixtures/token_utils.ts +1 -4
- 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 +14 -4
- package/src/shared/gas_portal_test_harness.ts +20 -10
- package/src/shared/uniswap_l1_l2.ts +84 -40
- package/src/shared/wait_for_l1_to_l2_message.ts +23 -0
- package/src/simulators/lending_simulator.ts +28 -12
- package/src/simulators/token_simulator.ts +1 -1
- package/src/spartan/setup_test_wallets.ts +69 -43
- package/src/spartan/tx_metrics.ts +81 -23
- package/src/spartan/utils/nodes.ts +2 -2
- 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 +5 -2
- package/src/test-wallet/worker_wallet.ts +10 -5
- package/src/test-wallet/worker_wallet_schema.ts +2 -2
|
@@ -1,21 +1,24 @@
|
|
|
1
1
|
import { EthAddress } from '@aztec/aztec.js/addresses';
|
|
2
2
|
import { waitForProven } from '@aztec/aztec.js/contracts';
|
|
3
3
|
import { createLogger } from '@aztec/aztec.js/log';
|
|
4
|
+
import { EpochTestSettler } from '@aztec/aztec/testing';
|
|
4
5
|
import { createExtendedL1Client } from '@aztec/ethereum/client';
|
|
5
6
|
import { InboxContract, OutboxContract, RollupContract } from '@aztec/ethereum/contracts';
|
|
6
7
|
import { deployL1Contract } from '@aztec/ethereum/deploy-l1-contract';
|
|
8
|
+
import { pickL1ContractAddresses } from '@aztec/ethereum/l1-contract-addresses';
|
|
7
9
|
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
8
10
|
import { sleep } from '@aztec/foundation/sleep';
|
|
9
11
|
import { TestERC20Abi, TestERC20Bytecode } from '@aztec/l1-artifacts';
|
|
10
12
|
import { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
11
13
|
import { TokenBridgeContract } from '@aztec/noir-contracts.js/TokenBridge';
|
|
12
14
|
import { MNEMONIC } from '../fixtures/fixtures.js';
|
|
13
|
-
import { deployAccounts, publicDeployAccounts, setup, teardown } from '../fixtures/setup.js';
|
|
15
|
+
import { deployAccounts, ensureAuthRegistryPublished, publicDeployAccounts, setup, teardown } from '../fixtures/setup.js';
|
|
14
16
|
import { CrossChainTestHarness } from '../shared/cross_chain_test_harness.js';
|
|
15
17
|
export class CrossChainMessagingTest {
|
|
16
18
|
requireEpochProven;
|
|
17
19
|
setupOptions;
|
|
18
20
|
deployL1ContractsArgs;
|
|
21
|
+
pxeOpts;
|
|
19
22
|
logger;
|
|
20
23
|
context;
|
|
21
24
|
aztecNode;
|
|
@@ -34,23 +37,41 @@ export class CrossChainMessagingTest {
|
|
|
34
37
|
inbox;
|
|
35
38
|
outbox;
|
|
36
39
|
cheatCodes;
|
|
40
|
+
/**
|
|
41
|
+
* Background loop that marks each completed epoch as proven on L1. Started in `applyBaseSetup`
|
|
42
|
+
* when the test runs without a real prover node, because the e2e fixture uses L1 interval mining
|
|
43
|
+
* and the AnvilTestWatcher's auto-prove loop only runs under L1 automine. Without this, L1's
|
|
44
|
+
* `aztecProofSubmissionEpochs` window expires mid-test and triggers a chain prune that drops
|
|
45
|
+
* in-flight wallet txs. Tests that intentionally pause proving (e.g. inbox drift tests) can
|
|
46
|
+
* stop it via `await t.epochTestSettler?.stop()`.
|
|
47
|
+
*/ epochTestSettler;
|
|
37
48
|
deployL1ContractsValues;
|
|
38
|
-
constructor(testName, opts = {}, deployL1ContractsArgs = {}){
|
|
49
|
+
constructor(testName, opts = {}, deployL1ContractsArgs = {}, pxeOpts = {}){
|
|
39
50
|
this.logger = createLogger(`e2e:e2e_cross_chain_messaging:${testName}`);
|
|
40
51
|
this.setupOptions = opts;
|
|
41
52
|
this.deployL1ContractsArgs = {
|
|
42
53
|
initialValidators: [],
|
|
43
54
|
...deployL1ContractsArgs
|
|
44
55
|
};
|
|
56
|
+
this.pxeOpts = pxeOpts;
|
|
45
57
|
this.requireEpochProven = opts.startProverNode ?? false;
|
|
46
58
|
}
|
|
47
|
-
async setup() {
|
|
59
|
+
async setup(opts = {}, pxeOpts = {}) {
|
|
48
60
|
this.logger.info('Setting up cross chain messaging test');
|
|
61
|
+
// Recompute requireEpochProven from the merged options so per-call startProverNode is honored.
|
|
62
|
+
this.requireEpochProven = opts.startProverNode ?? this.setupOptions.startProverNode ?? false;
|
|
49
63
|
this.context = await setup(0, {
|
|
50
64
|
...this.setupOptions,
|
|
65
|
+
...opts,
|
|
51
66
|
fundSponsoredFPC: true,
|
|
52
67
|
skipAccountDeployment: true,
|
|
53
|
-
l1ContractsArgs:
|
|
68
|
+
l1ContractsArgs: {
|
|
69
|
+
...this.deployL1ContractsArgs,
|
|
70
|
+
...opts.l1ContractsArgs
|
|
71
|
+
}
|
|
72
|
+
}, {
|
|
73
|
+
...this.pxeOpts,
|
|
74
|
+
...pxeOpts
|
|
54
75
|
});
|
|
55
76
|
await this.applyBaseSetup();
|
|
56
77
|
}
|
|
@@ -68,11 +89,12 @@ export class CrossChainMessagingTest {
|
|
|
68
89
|
}
|
|
69
90
|
async catchUpProvenChain() {
|
|
70
91
|
const bn = await this.aztecNode.getBlockNumber();
|
|
71
|
-
while(await this.aztecNode.
|
|
92
|
+
while(await this.aztecNode.getBlockNumber('proven') < bn){
|
|
72
93
|
await sleep(1000);
|
|
73
94
|
}
|
|
74
95
|
}
|
|
75
96
|
async teardown() {
|
|
97
|
+
await this.epochTestSettler?.stop();
|
|
76
98
|
await teardown(this.context);
|
|
77
99
|
}
|
|
78
100
|
async applyBaseSetup() {
|
|
@@ -86,6 +108,15 @@ export class CrossChainMessagingTest {
|
|
|
86
108
|
if (this.requireEpochProven) {
|
|
87
109
|
// Turn off the watcher to prevent it from keep marking blocks as proven.
|
|
88
110
|
this.context.watcher.setIsMarkingAsProven(false);
|
|
111
|
+
} else {
|
|
112
|
+
// When no real prover is running, the L1 proof window (aztecProofSubmissionEpochs) would
|
|
113
|
+
// otherwise expire mid-test and trigger a chain prune. The AnvilTestWatcher's auto-prove
|
|
114
|
+
// loop is dormant under L1 interval mining (it gates on `isAutoMining`), so start an
|
|
115
|
+
// EpochTestSettler to mark each completed epoch as proven on L1.
|
|
116
|
+
this.epochTestSettler = new EpochTestSettler(this.context.ethCheatCodes, this.context.deployL1ContractsValues.l1ContractAddresses.rollupAddress, this.context.aztecNodeService.getBlockSource(), this.logger.createChild('epoch-settler'), {
|
|
117
|
+
pollingIntervalMs: 500
|
|
118
|
+
});
|
|
119
|
+
await this.epochTestSettler.start();
|
|
89
120
|
}
|
|
90
121
|
// Deploy 3 accounts
|
|
91
122
|
this.logger.info('Applying 3_accounts setup');
|
|
@@ -96,6 +127,7 @@ export class CrossChainMessagingTest {
|
|
|
96
127
|
[this.ownerAddress, this.user1Address, this.user2Address] = deployedAccounts.map((a)=>a.address);
|
|
97
128
|
// Set up cross chain messaging
|
|
98
129
|
this.logger.info('Applying e2e_cross_chain_messaging setup');
|
|
130
|
+
await ensureAuthRegistryPublished(this.wallet, this.ownerAddress);
|
|
99
131
|
// Create the token contract state.
|
|
100
132
|
this.logger.verbose(`Public deploy accounts...`);
|
|
101
133
|
await publicDeployAccounts(this.wallet, [
|
|
@@ -120,10 +152,10 @@ export class CrossChainMessagingTest {
|
|
|
120
152
|
const tokenPortalAddress = EthAddress.fromString(crossChainContext.tokenPortal.toString());
|
|
121
153
|
const l1Client = createExtendedL1Client(this.aztecNodeConfig.l1RpcUrls, MNEMONIC);
|
|
122
154
|
this.l1Client = l1Client;
|
|
123
|
-
const l1Contracts = this.aztecNodeConfig
|
|
155
|
+
const l1Contracts = pickL1ContractAddresses(this.aztecNodeConfig);
|
|
124
156
|
this.rollup = new RollupContract(l1Client, l1Contracts.rollupAddress.toString());
|
|
125
157
|
this.inbox = new InboxContract(l1Client, l1Contracts.inboxAddress.toString());
|
|
126
158
|
this.outbox = new OutboxContract(l1Client, l1Contracts.outboxAddress.toString());
|
|
127
|
-
this.crossChainTestHarness = new CrossChainTestHarness(this.aztecNode, this.logger, this.l2Token, this.l2Bridge, this.ethAccount, tokenPortalAddress, crossChainContext.underlying, l1Client, this.aztecNodeConfig
|
|
159
|
+
this.crossChainTestHarness = new CrossChainTestHarness(this.aztecNode, this.logger, this.l2Token, this.l2Bridge, this.ethAccount, tokenPortalAddress, crossChainContext.underlying, l1Client, pickL1ContractAddresses(this.aztecNodeConfig), this.wallet, this.ownerAddress);
|
|
128
160
|
}
|
|
129
161
|
}
|
|
@@ -8,7 +8,7 @@ import type { AztecNode } from '@aztec/aztec.js/node';
|
|
|
8
8
|
import type { Wallet } from '@aztec/aztec.js/wallet';
|
|
9
9
|
import type { StatefulTestContract } from '@aztec/noir-test-contracts.js/StatefulTest';
|
|
10
10
|
import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
|
|
11
|
-
import { type EndToEndContext } from '../fixtures/setup.js';
|
|
11
|
+
import { type EndToEndContext, type SetupOptions } from '../fixtures/setup.js';
|
|
12
12
|
import type { TestWallet } from '../test-wallet/test_wallet.js';
|
|
13
13
|
export declare class DeployTest {
|
|
14
14
|
context: EndToEndContext;
|
|
@@ -18,7 +18,7 @@ export declare class DeployTest {
|
|
|
18
18
|
aztecNode: AztecNode;
|
|
19
19
|
aztecNodeAdmin: AztecNodeAdmin;
|
|
20
20
|
constructor(testName: string);
|
|
21
|
-
setup(): Promise<this>;
|
|
21
|
+
setup(opts?: Partial<SetupOptions>): Promise<this>;
|
|
22
22
|
teardown(): Promise<void>;
|
|
23
23
|
private applyInitialAccount;
|
|
24
24
|
registerContract<T extends ContractBase>(wallet: Wallet, contractArtifact: ContractArtifactClass<T>, opts?: {
|
|
@@ -34,4 +34,4 @@ export type ContractArtifactClass<T extends ContractBase> = {
|
|
|
34
34
|
at(address: AztecAddress, wallet: Wallet): T;
|
|
35
35
|
artifact: ContractArtifact;
|
|
36
36
|
};
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95X3Rlc3QuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lMmVfZGVwbG95X2NvbnRyYWN0L2RlcGxveV90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUQsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLEtBQUssWUFBWSxFQUE4QyxNQUFNLDJCQUEyQixDQUFDO0FBQzFHLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN2RixPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUV0RSxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQUUsS0FBSyxZQUFZLEVBQW1DLE1BQU0sc0JBQXNCLENBQUM7QUFDaEgsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFaEUscUJBQWEsVUFBVTtJQUNkLE9BQU8sRUFBRyxlQUFlLENBQUM7SUFDMUIsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUNmLE1BQU0sRUFBRyxVQUFVLENBQUM7SUFDcEIscUJBQXFCLEVBQUcsWUFBWSxDQUFDO0lBQ3JDLFNBQVMsRUFBRyxTQUFTLENBQUM7SUFDdEIsY0FBYyxFQUFHLGNBQWMsQ0FBQztJQUV2QyxZQUFZLFFBQVEsRUFBRSxNQUFNLEVBRTNCO0lBRUssS0FBSyxDQUFDLElBQUksR0FBRSxPQUFPLENBQUMsWUFBWSxDQUFNLGlCQVkzQztJQUVLLFFBQVEsa0JBRWI7WUFFYSxtQkFBbUI7SUFZM0IsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLFlBQVksRUFDM0MsTUFBTSxFQUFFLE1BQU0sRUFDZCxnQkFBZ0IsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsRUFDMUMsSUFBSSxHQUFFO1FBQ0osSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ1YsVUFBVSxDQUFDLEVBQUUsVUFBVSxDQUFDO1FBQ3hCLFFBQVEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGVBQWUsQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUN6QixRQUFRLENBQUMsRUFBRSxZQUFZLENBQUM7S0FDcEIsR0FDTCxPQUFPLENBQUMsQ0FBQyxDQUFDLENBV1o7Q0FDRjtBQUVELE1BQU0sTUFBTSx3QkFBd0IsR0FBRyxVQUFVLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztBQUVsRyxNQUFNLE1BQU0scUJBQXFCLENBQUMsQ0FBQyxTQUFTLFlBQVksSUFBSTtJQUMxRCxFQUFFLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUM3QyxRQUFRLEVBQUUsZ0JBQWdCLENBQUM7Q0FDNUIsQ0FBQyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy_test.d.ts","sourceRoot":"","sources":["../../src/e2e_deploy_contract/deploy_test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,KAAK,YAAY,EAA8C,MAAM,2BAA2B,CAAC;AAC1G,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,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,KAAK,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEtE,OAAO,EAAE,KAAK,eAAe,EAAmC,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"deploy_test.d.ts","sourceRoot":"","sources":["../../src/e2e_deploy_contract/deploy_test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,KAAK,YAAY,EAA8C,MAAM,2BAA2B,CAAC;AAC1G,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,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,KAAK,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEtE,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,YAAY,EAAmC,MAAM,sBAAsB,CAAC;AAChH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE,qBAAa,UAAU;IACd,OAAO,EAAG,eAAe,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAG,UAAU,CAAC;IACpB,qBAAqB,EAAG,YAAY,CAAC;IACrC,SAAS,EAAG,SAAS,CAAC;IACtB,cAAc,EAAG,cAAc,CAAC;IAEvC,YAAY,QAAQ,EAAE,MAAM,EAE3B;IAEK,KAAK,CAAC,IAAI,GAAE,OAAO,CAAC,YAAY,CAAM,iBAY3C;IAEK,QAAQ,kBAEb;YAEa,mBAAmB;IAY3B,gBAAgB,CAAC,CAAC,SAAS,YAAY,EAC3C,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAC1C,IAAI,GAAE;QACJ,IAAI,CAAC,EAAE,EAAE,CAAC;QACV,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;QACjB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,EAAE,YAAY,CAAC;KACpB,GACL,OAAO,CAAC,CAAC,CAAC,CAWZ;CACF;AAED,MAAM,MAAM,wBAAwB,GAAG,UAAU,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AAElG,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,YAAY,IAAI;IAC1D,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC;IAC7C,QAAQ,EAAE,gBAAgB,CAAC;CAC5B,CAAC"}
|
|
@@ -12,9 +12,10 @@ export class DeployTest {
|
|
|
12
12
|
constructor(testName){
|
|
13
13
|
this.logger = createLogger(`e2e:e2e_deploy_contract:${testName}`);
|
|
14
14
|
}
|
|
15
|
-
async setup() {
|
|
15
|
+
async setup(opts = {}) {
|
|
16
16
|
this.logger.info('Setting up test environment');
|
|
17
17
|
this.context = await setup(0, {
|
|
18
|
+
...opts,
|
|
18
19
|
fundSponsoredFPC: true,
|
|
19
20
|
skipAccountDeployment: true
|
|
20
21
|
});
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { InitialAccountData } from '@aztec/accounts/testing';
|
|
1
2
|
import { type AztecNodeConfig, AztecNodeService } from '@aztec/aztec-node';
|
|
2
3
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
3
4
|
import type { Logger } from '@aztec/aztec.js/log';
|
|
@@ -15,6 +16,7 @@ import type { PXEConfig } from '@aztec/pxe/config';
|
|
|
15
16
|
import { type SequencerClient, type SequencerEvents } from '@aztec/sequencer-client';
|
|
16
17
|
import { type BlockParameter, EthAddress } from '@aztec/stdlib/block';
|
|
17
18
|
import { type L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
|
|
19
|
+
import type { SlashingProtectionDatabase } from '@aztec/validator-ha-signer/types';
|
|
18
20
|
import { type EndToEndContext, type SetupOptions } from '../fixtures/utils.js';
|
|
19
21
|
export declare const WORLD_STATE_CHECKPOINT_HISTORY = 2;
|
|
20
22
|
export declare const WORLD_STATE_BLOCK_CHECK_INTERVAL = 50;
|
|
@@ -24,6 +26,13 @@ export type EpochsTestOpts = Partial<SetupOptions> & {
|
|
|
24
26
|
numberOfAccounts?: number;
|
|
25
27
|
pxeOpts?: Partial<PXEConfig>;
|
|
26
28
|
aztecSlotDurationInL1Slots?: number;
|
|
29
|
+
/** Skip creating/registering the hardcoded account during setup (for tests that handle accounts themselves). */
|
|
30
|
+
skipHardcodedAccount?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Force the hardcoded-account fast-path even when an initial sequencer is running. Useful for
|
|
33
|
+
* tests with tight per-block gas budgets that can't fit a full account-deploy tx.
|
|
34
|
+
*/
|
|
35
|
+
useHardcodedAccount?: boolean;
|
|
27
36
|
};
|
|
28
37
|
export type TrackedSequencerEvent = {
|
|
29
38
|
[K in keyof SequencerEvents]: Parameters<SequencerEvents[K]>[0] & {
|
|
@@ -62,12 +71,25 @@ export declare class EpochsTestContext {
|
|
|
62
71
|
};
|
|
63
72
|
setup(opts?: EpochsTestOpts): Promise<void>;
|
|
64
73
|
teardown(): Promise<void>;
|
|
74
|
+
/**
|
|
75
|
+
* Computes InitialAccountData for a SchnorrHardcodedKeyAccountContract.
|
|
76
|
+
* This contract has a hardcoded signing key and no initializer, so it can be used without
|
|
77
|
+
* on-chain deployment. Pass the returned data in `initialFundedAccounts` so the address
|
|
78
|
+
* gets funded with fee juice in genesis.
|
|
79
|
+
*/
|
|
80
|
+
static getHardcodedAccountData(secret: Fr, salt: Fr): Promise<InitialAccountData>;
|
|
81
|
+
/**
|
|
82
|
+
* Registers a SchnorrHardcodedKeyAccountContract in PXE. The account must have been funded
|
|
83
|
+
* at genesis (via getHardcodedAccountData). No on-chain deployment or block mining needed.
|
|
84
|
+
*/
|
|
85
|
+
registerHardcodedAccount(accountData: InitialAccountData): Promise<import("@aztec/stdlib/aztec-address").AztecAddress>;
|
|
65
86
|
createProverNode(opts?: {
|
|
66
87
|
dontStart?: boolean;
|
|
67
88
|
} & Partial<ProverNodeConfig>): Promise<AztecNodeService>;
|
|
68
89
|
createNonValidatorNode(opts?: Partial<AztecNodeConfig>): Promise<AztecNodeService>;
|
|
69
90
|
createValidatorNode(privateKeys: `0x${string}`[], opts?: Partial<AztecNodeConfig> & {
|
|
70
91
|
dontStartSequencer?: boolean;
|
|
92
|
+
slashingProtectionDb?: SlashingProtectionDatabase;
|
|
71
93
|
}): Promise<AztecNodeService>;
|
|
72
94
|
private createNode;
|
|
73
95
|
private getNextPrivateKey;
|
|
@@ -94,9 +116,10 @@ export declare class EpochsTestContext {
|
|
|
94
116
|
verifyHistoricBlock(blockNumber: BlockParameter, expectedSuccess: boolean): Promise<void>;
|
|
95
117
|
/** Verifies at least one checkpoint has the target number of blocks (for MBPS validation). */
|
|
96
118
|
assertMultipleBlocksPerSlot(targetBlockCount: number): Promise<void>;
|
|
97
|
-
watchSequencerEvents(sequencers: SequencerClient[], getMetadata?: (i: number) => Record<string, any
|
|
119
|
+
watchSequencerEvents(sequencers: SequencerClient[], getMetadata?: (i: number) => Record<string, any>, additionalFailEventKeys?: (keyof SequencerEvents)[]): {
|
|
98
120
|
failEvents: TrackedSequencerEvent[];
|
|
99
121
|
stateChanges: TrackedSequencerEvent[];
|
|
100
122
|
};
|
|
123
|
+
assertNoFailuresFromSequencers(failEvents: TrackedSequencerEvent[]): void;
|
|
101
124
|
}
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBvY2hzX3Rlc3QuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lMmVfZXBvY2hzL2Vwb2Noc190ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbEUsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFJM0UsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVDLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWxELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUdoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE9BQU8sRUFBOEQsTUFBTSw2QkFBNkIsQ0FBQztBQUNsSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFlLE1BQU0saUNBQWlDLENBQUM7QUFNN0YsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVsRSxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBRSxLQUFLLGVBQWUsRUFBa0IsTUFBTSx5QkFBeUIsQ0FB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"epochs_test.d.ts","sourceRoot":"","sources":["../../src/e2e_epochs/epochs_test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"epochs_test.d.ts","sourceRoot":"","sources":["../../src/e2e_epochs/epochs_test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { AztecNodeService } from '@aztec/aztec-node';
|
|
2
|
+
import { getAccountContractAddress } from '@aztec/aztec.js/account';
|
|
2
3
|
import { getTimestampRangeForEpoch } from '@aztec/aztec.js/block';
|
|
3
4
|
import { getContractInstanceFromInstantiationParams } from '@aztec/aztec.js/contracts';
|
|
4
5
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
@@ -24,6 +25,7 @@ import { getProofSubmissionDeadlineTimestamp } from '@aztec/stdlib/epoch-helpers
|
|
|
24
25
|
import { tryStop } from '@aztec/stdlib/interfaces/server';
|
|
25
26
|
import { join } from 'path';
|
|
26
27
|
import { privateKeyToAccount } from 'viem/accounts';
|
|
28
|
+
import { SCHNORR_HARDCODED_PRIVATE_KEY, SchnorrHardcodedKeyAccountContract } from '../fixtures/schnorr_hardcoded_account_contract.js';
|
|
27
29
|
import { createAndSyncProverNode, getPrivateKeyFromIndex, setup } from '../fixtures/utils.js';
|
|
28
30
|
export const WORLD_STATE_CHECKPOINT_HISTORY = 2;
|
|
29
31
|
export const WORLD_STATE_BLOCK_CHECK_INTERVAL = 50;
|
|
@@ -72,9 +74,18 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
72
74
|
const { ethereumSlotDuration, aztecSlotDuration, aztecEpochDuration, aztecProofSubmissionEpochs, l1PublishingTime } = EpochsTestContext.getSlotDurations(opts);
|
|
73
75
|
this.L1_BLOCK_TIME_IN_S = ethereumSlotDuration;
|
|
74
76
|
this.L2_SLOT_DURATION_IN_S = aztecSlotDuration;
|
|
77
|
+
// Auto-create a hardcoded account funded via genesis when:
|
|
78
|
+
// - skipInitialSequencer is set (no sequencer to deploy on-chain), or
|
|
79
|
+
// - useHardcodedAccount is explicitly requested (e.g. tight per-block gas budgets that
|
|
80
|
+
// can't fit a full account-deploy tx).
|
|
81
|
+
const useHardcodedAccount = (opts.skipInitialSequencer || opts.useHardcodedAccount) && !opts.skipHardcodedAccount;
|
|
82
|
+
let hardcodedAccountData;
|
|
83
|
+
if (useHardcodedAccount) {
|
|
84
|
+
hardcodedAccountData = await EpochsTestContext.getHardcodedAccountData(Fr.random(), Fr.random());
|
|
85
|
+
}
|
|
75
86
|
// Set up system without any account nor protocol contracts
|
|
76
87
|
// and with faster block times and shorter epochs.
|
|
77
|
-
const context = await setup(opts.numberOfAccounts ?? 0, {
|
|
88
|
+
const context = await setup(useHardcodedAccount ? 0 : opts.numberOfAccounts ?? 0, {
|
|
78
89
|
automineL1Setup: true,
|
|
79
90
|
checkIntervalMs: 50,
|
|
80
91
|
archiverPollingIntervalMS: ARCHIVER_POLL_INTERVAL,
|
|
@@ -88,15 +99,18 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
88
99
|
realProofs: false,
|
|
89
100
|
startProverNode: true,
|
|
90
101
|
proverTestDelayMs: opts.proverTestDelayMs ?? 0,
|
|
91
|
-
// We use numeric incremental prover ids for simplicity, but we can switch to
|
|
92
|
-
// using the prover's eth address if the proverId is used for something in the rollup contract
|
|
93
|
-
// Use numeric EthAddress for deterministic prover id
|
|
94
102
|
proverId: EthAddress.fromNumber(1),
|
|
95
103
|
worldStateCheckpointHistory: WORLD_STATE_CHECKPOINT_HISTORY,
|
|
96
104
|
exitDelaySeconds: DefaultL1ContractsConfig.exitDelaySeconds,
|
|
97
|
-
|
|
105
|
+
slasherEnabled: false,
|
|
98
106
|
l1PublishingTime,
|
|
99
|
-
...opts
|
|
107
|
+
...opts,
|
|
108
|
+
...hardcodedAccountData ? {
|
|
109
|
+
initialFundedAccounts: [
|
|
110
|
+
hardcodedAccountData
|
|
111
|
+
],
|
|
112
|
+
numberOfAccounts: 0
|
|
113
|
+
} : {}
|
|
100
114
|
}, // Use checkpointed chain tip for PXE by default to avoid issues with blocks being dropped due to pruned anchor blocks.
|
|
101
115
|
// Can be overridden via opts.pxeOpts.
|
|
102
116
|
{
|
|
@@ -104,6 +118,10 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
104
118
|
...opts.pxeOpts
|
|
105
119
|
});
|
|
106
120
|
this.context = context;
|
|
121
|
+
// Register the hardcoded account in PXE (local only, no on-chain deployment needed).
|
|
122
|
+
if (hardcodedAccountData) {
|
|
123
|
+
await this.registerHardcodedAccount(hardcodedAccountData);
|
|
124
|
+
}
|
|
107
125
|
this.proverNodes = context.proverNode ? [
|
|
108
126
|
context.proverNode
|
|
109
127
|
] : [];
|
|
@@ -143,6 +161,38 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
143
161
|
await Promise.all(this.nodes.map((node)=>tryStop(node, this.logger)));
|
|
144
162
|
await this.context.teardown();
|
|
145
163
|
}
|
|
164
|
+
/**
|
|
165
|
+
* Computes InitialAccountData for a SchnorrHardcodedKeyAccountContract.
|
|
166
|
+
* This contract has a hardcoded signing key and no initializer, so it can be used without
|
|
167
|
+
* on-chain deployment. Pass the returned data in `initialFundedAccounts` so the address
|
|
168
|
+
* gets funded with fee juice in genesis.
|
|
169
|
+
*/ static async getHardcodedAccountData(secret, salt) {
|
|
170
|
+
const contract = new SchnorrHardcodedKeyAccountContract();
|
|
171
|
+
const address = await getAccountContractAddress(contract, secret, salt);
|
|
172
|
+
const signingKey = SCHNORR_HARDCODED_PRIVATE_KEY;
|
|
173
|
+
return {
|
|
174
|
+
secret,
|
|
175
|
+
salt,
|
|
176
|
+
signingKey,
|
|
177
|
+
address
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Registers a SchnorrHardcodedKeyAccountContract in PXE. The account must have been funded
|
|
182
|
+
* at genesis (via getHardcodedAccountData). No on-chain deployment or block mining needed.
|
|
183
|
+
*/ async registerHardcodedAccount(accountData) {
|
|
184
|
+
const contract = new SchnorrHardcodedKeyAccountContract();
|
|
185
|
+
const wallet = this.context.wallet;
|
|
186
|
+
const accountManager = await wallet.createAccount({
|
|
187
|
+
secret: accountData.secret,
|
|
188
|
+
salt: accountData.salt,
|
|
189
|
+
contract
|
|
190
|
+
});
|
|
191
|
+
this.context.accounts = [
|
|
192
|
+
accountManager.address
|
|
193
|
+
];
|
|
194
|
+
return accountManager.address;
|
|
195
|
+
}
|
|
146
196
|
async createProverNode(opts = {}) {
|
|
147
197
|
this.logger.warn('Creating and syncing a simulated prover node...');
|
|
148
198
|
const proverNodePrivateKey = this.getNextPrivateKey();
|
|
@@ -167,7 +217,7 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
167
217
|
]
|
|
168
218
|
}
|
|
169
219
|
}, {
|
|
170
|
-
|
|
220
|
+
genesis: this.context.genesis,
|
|
171
221
|
dontStart: opts.dontStart
|
|
172
222
|
}));
|
|
173
223
|
this.proverNodes.push(proverNode);
|
|
@@ -204,15 +254,17 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
204
254
|
...resolvedConfig,
|
|
205
255
|
dataDirectory: join(this.context.config.dataDirectory, randomBytes(8).toString('hex')),
|
|
206
256
|
validatorPrivateKeys: opts.validatorPrivateKeys ?? new SecretValue([]),
|
|
257
|
+
nodeId: resolvedConfig.nodeId || `${actorPrefix}-${nodeIndex}`,
|
|
207
258
|
p2pEnabled,
|
|
208
259
|
p2pIp
|
|
209
260
|
}, {
|
|
210
261
|
dateProvider: this.context.dateProvider,
|
|
211
262
|
p2pClientDeps: {
|
|
212
263
|
p2pServiceFactory: mockGossipSubNetwork ? getMockPubSubP2PServiceFactory(mockGossipSubNetwork) : undefined
|
|
213
|
-
}
|
|
264
|
+
},
|
|
265
|
+
slashingProtectionDb: opts.slashingProtectionDb
|
|
214
266
|
}, {
|
|
215
|
-
|
|
267
|
+
genesis: this.context.genesis,
|
|
216
268
|
...opts
|
|
217
269
|
}));
|
|
218
270
|
this.nodes.push(node);
|
|
@@ -253,7 +305,7 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
253
305
|
await sleep(waitTime);
|
|
254
306
|
const [syncState, tips] = await Promise.all([
|
|
255
307
|
this.context.aztecNode.getWorldStateSyncStatus(),
|
|
256
|
-
await this.context.aztecNode.
|
|
308
|
+
await this.context.aztecNode.getChainTips()
|
|
257
309
|
]);
|
|
258
310
|
this.logger.info(`Wait for node synch ${blockNumber} ${type}`, {
|
|
259
311
|
blockNumber,
|
|
@@ -319,7 +371,10 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
319
371
|
}
|
|
320
372
|
/** Verifies at least one checkpoint has the target number of blocks (for MBPS validation). */ async assertMultipleBlocksPerSlot(targetBlockCount) {
|
|
321
373
|
const archiver = this.context.aztecNode.getBlockSource();
|
|
322
|
-
const checkpoints = await archiver.getCheckpoints(
|
|
374
|
+
const checkpoints = await archiver.getCheckpoints({
|
|
375
|
+
from: CheckpointNumber(1),
|
|
376
|
+
limit: 50
|
|
377
|
+
});
|
|
323
378
|
this.logger.warn(`Retrieved ${checkpoints.length} checkpoints from archiver`, {
|
|
324
379
|
checkpoints: checkpoints.map((pc)=>pc.checkpoint.getStats())
|
|
325
380
|
});
|
|
@@ -341,7 +396,7 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
341
396
|
}
|
|
342
397
|
expect(targetFound).toBe(true);
|
|
343
398
|
}
|
|
344
|
-
watchSequencerEvents(sequencers, getMetadata = ()=>({})) {
|
|
399
|
+
watchSequencerEvents(sequencers, getMetadata = ()=>({}), additionalFailEventKeys = []) {
|
|
345
400
|
const stateChanges = [];
|
|
346
401
|
const failEvents = [];
|
|
347
402
|
// Note we do not include the 'block-tx-count-check-failed' event here, since it is fine if we dont build
|
|
@@ -349,7 +404,12 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
349
404
|
const failEventsKeys = [
|
|
350
405
|
'block-build-failed',
|
|
351
406
|
'checkpoint-publish-failed',
|
|
352
|
-
'proposer-rollup-check-failed'
|
|
407
|
+
'proposer-rollup-check-failed',
|
|
408
|
+
'checkpoint-error',
|
|
409
|
+
'checkpoint-publish-failed',
|
|
410
|
+
'header-validation-failed',
|
|
411
|
+
'pipelined-checkpoint-discarded',
|
|
412
|
+
...additionalFailEventKeys
|
|
353
413
|
];
|
|
354
414
|
const makeEvent = (i, eventName, args)=>({
|
|
355
415
|
...args,
|
|
@@ -373,6 +433,13 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
373
433
|
});
|
|
374
434
|
failEventsKeys.forEach((eventName)=>{
|
|
375
435
|
sequencer.getSequencer().on(eventName, (args)=>{
|
|
436
|
+
// Skip benign block-build-failed events where the builder rejected the block because it
|
|
437
|
+
// could not collect enough valid txs. This is the same "not enough txs" case as
|
|
438
|
+
// block-tx-count-check-failed (which is already excluded above), just detected after we
|
|
439
|
+
// started processing txs rather than before.
|
|
440
|
+
if (eventName === 'block-build-failed' && args.reason === 'Insufficient valid txs') {
|
|
441
|
+
return;
|
|
442
|
+
}
|
|
376
443
|
const evt = makeEvent(i, eventName, args);
|
|
377
444
|
failEvents.push(evt);
|
|
378
445
|
this.logger.error(`Failed event ${eventName} from sequencer ${sequencerIndex}`, undefined, evt);
|
|
@@ -384,4 +451,10 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
384
451
|
stateChanges
|
|
385
452
|
};
|
|
386
453
|
}
|
|
454
|
+
assertNoFailuresFromSequencers(failEvents) {
|
|
455
|
+
if (failEvents.length > 0) {
|
|
456
|
+
this.logger.error(`Failed events from sequencers`, failEvents);
|
|
457
|
+
}
|
|
458
|
+
expect(failEvents).toEqual([]);
|
|
459
|
+
}
|
|
387
460
|
}
|
|
@@ -60,11 +60,13 @@ export declare class FeesTest {
|
|
|
60
60
|
getBananaPublicBalanceFn: BalancesFn;
|
|
61
61
|
getBananaPrivateBalanceFn: BalancesFn;
|
|
62
62
|
getProverFee: (blockNumber: BlockNumber) => Promise<bigint>;
|
|
63
|
+
getCommittedProverFee: (blockNumber: BlockNumber) => Promise<bigint>;
|
|
64
|
+
getCommittedBurn: (blockNumber: BlockNumber) => Promise<bigint>;
|
|
63
65
|
readonly ALICE_INITIAL_BANANAS: bigint;
|
|
64
66
|
readonly SUBSCRIPTION_AMOUNT: bigint;
|
|
65
67
|
readonly APP_SPONSORED_TX_GAS_LIMIT: bigint;
|
|
66
68
|
constructor(testName: string, numberOfAccounts?: number, setupOptions?: Partial<SetupOptions & DeployAztecL1ContractsArgs>);
|
|
67
|
-
setup(): Promise<this>;
|
|
69
|
+
setup(opts?: Partial<SetupOptions>): Promise<this>;
|
|
68
70
|
teardown(): Promise<void>;
|
|
69
71
|
setIsMarkingAsProven(b: boolean): void;
|
|
70
72
|
catchUpProvenChain(): Promise<void>;
|
|
@@ -76,6 +78,7 @@ export declare class FeesTest {
|
|
|
76
78
|
/** Alice mints bananaCoin tokens privately to the target address and redeems them. */
|
|
77
79
|
mintPrivateBananas(amount: bigint, address: AztecAddress): Promise<void>;
|
|
78
80
|
applyBaseSetup(): Promise<void>;
|
|
81
|
+
applyEnsureAuthRegistryPublished(): Promise<void>;
|
|
79
82
|
applyInitialAccounts(): Promise<void>;
|
|
80
83
|
applyPublicDeployAccounts(): Promise<void>;
|
|
81
84
|
applySetupFeeJuice(): Promise<void>;
|
|
@@ -85,4 +88,4 @@ export declare class FeesTest {
|
|
|
85
88
|
applyFundAliceWithBananas(): Promise<void>;
|
|
86
89
|
applyFundAliceWithPrivateBananas(): Promise<void>;
|
|
87
90
|
}
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlc190ZXN0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZTJlX2ZlZXMvZmVlc190ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFpQyxNQUFNLHNCQUFzQixDQUFDO0FBRWpGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEtBQUssRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRzNELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsYUFBYSxJQUFJLFVBQVUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUd4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFL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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fees_test.d.ts","sourceRoot":"","sources":["../../src/e2e_fees/fees_test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAiC,MAAM,sBAAsB,CAAC;AAEjF,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,aAAa,IAAI,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAGxE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAKtE,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,YAAY,
|
|
1
|
+
{"version":3,"file":"fees_test.d.ts","sourceRoot":"","sources":["../../src/e2e_fees/fees_test.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,8 +14,8 @@ import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
|
14
14
|
import { getCanonicalFeeJuice } from '@aztec/protocol-contracts/fee-juice';
|
|
15
15
|
import { GasSettings } from '@aztec/stdlib/gas';
|
|
16
16
|
import { getContract } from 'viem';
|
|
17
|
-
import { MNEMONIC } from '../fixtures/fixtures.js';
|
|
18
|
-
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';
|
|
19
19
|
import { mintTokensToPrivate } from '../fixtures/token_utils.js';
|
|
20
20
|
import { getBalancesFn, setupSponsoredFPC } from '../fixtures/utils.js';
|
|
21
21
|
import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_harness.js';
|
|
@@ -59,6 +59,8 @@ import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_h
|
|
|
59
59
|
getBananaPublicBalanceFn;
|
|
60
60
|
getBananaPrivateBalanceFn;
|
|
61
61
|
getProverFee;
|
|
62
|
+
getCommittedProverFee;
|
|
63
|
+
getCommittedBurn;
|
|
62
64
|
ALICE_INITIAL_BANANAS;
|
|
63
65
|
SUBSCRIPTION_AMOUNT;
|
|
64
66
|
APP_SPONSORED_TX_GAS_LIMIT;
|
|
@@ -76,13 +78,14 @@ import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_h
|
|
|
76
78
|
this.coinbase = setupOptions.coinbase;
|
|
77
79
|
this.logger = createLogger(`e2e:e2e_fees:${testName}`);
|
|
78
80
|
}
|
|
79
|
-
async setup() {
|
|
81
|
+
async setup(opts = {}) {
|
|
80
82
|
this.logger.verbose('Setting up fresh context...');
|
|
81
83
|
// Token allowlist entries are test-only: FPC-based fee payment with custom tokens won't work on mainnet alpha.
|
|
82
84
|
const tokenAllowList = await getTokenAllowedSetupFunctions();
|
|
83
85
|
this.context = await setup(0, {
|
|
84
86
|
startProverNode: true,
|
|
85
87
|
...this.setupOptions,
|
|
88
|
+
...opts,
|
|
86
89
|
fundSponsoredFPC: true,
|
|
87
90
|
skipAccountDeployment: true,
|
|
88
91
|
l1ContractsArgs: {
|
|
@@ -107,7 +110,7 @@ import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_h
|
|
|
107
110
|
}
|
|
108
111
|
async catchUpProvenChain() {
|
|
109
112
|
const bn = await this.aztecNode.getBlockNumber();
|
|
110
|
-
while(await this.aztecNode.
|
|
113
|
+
while(await this.aztecNode.getBlockNumber('proven') < bn){
|
|
111
114
|
await sleep(1000);
|
|
112
115
|
}
|
|
113
116
|
}
|
|
@@ -142,10 +145,15 @@ import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_h
|
|
|
142
145
|
}
|
|
143
146
|
async applyBaseSetup() {
|
|
144
147
|
await this.applyInitialAccounts();
|
|
148
|
+
await this.applyEnsureAuthRegistryPublished();
|
|
145
149
|
await this.applyPublicDeployAccounts();
|
|
146
150
|
await this.applySetupFeeJuice();
|
|
147
151
|
await this.applyDeployBananaToken();
|
|
148
152
|
}
|
|
153
|
+
async applyEnsureAuthRegistryPublished() {
|
|
154
|
+
this.logger.info('Ensuring AuthRegistry published');
|
|
155
|
+
await ensureAuthRegistryPublished(this.wallet, this.aliceAddress);
|
|
156
|
+
}
|
|
149
157
|
async applyInitialAccounts() {
|
|
150
158
|
this.logger.info('Applying initial accounts setup');
|
|
151
159
|
const { deployedAccounts } = await deployAccounts(this.numberOfAccounts, this.logger)({
|
|
@@ -155,8 +163,8 @@ import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_h
|
|
|
155
163
|
this.wallet = this.context.wallet;
|
|
156
164
|
this.aztecNode = this.context.aztecNodeService;
|
|
157
165
|
this.aztecNodeAdmin = this.context.aztecNodeService;
|
|
158
|
-
this.gasSettings = GasSettings.
|
|
159
|
-
maxFeesPerGas:
|
|
166
|
+
this.gasSettings = GasSettings.fallback({
|
|
167
|
+
maxFeesPerGas: await getPaddedMaxFeesPerGas(this.aztecNode)
|
|
160
168
|
});
|
|
161
169
|
this.cheatCodes = this.context.cheatCodes;
|
|
162
170
|
this.accounts = deployedAccounts.map((a)=>a.address);
|
|
@@ -232,6 +240,24 @@ import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_h
|
|
|
232
240
|
const mana = block.header.totalManaUsed.toBigInt();
|
|
233
241
|
return mulDiv(mana * proverCost, 10n ** 12n, price);
|
|
234
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
|
+
};
|
|
235
261
|
}
|
|
236
262
|
async applySponsoredFPCSetup() {
|
|
237
263
|
this.logger.info('Applying sponsored FPC setup');
|