@aztec/end-to-end 0.0.1-commit.9372f48 → 0.0.1-commit.949a33fd8
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/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 +24 -31
- package/dest/bench/client_flows/config.d.ts +2 -2
- package/dest/bench/client_flows/config.d.ts.map +1 -1
- package/dest/bench/client_flows/config.js +18 -0
- package/dest/bench/utils.d.ts +1 -1
- package/dest/bench/utils.d.ts.map +1 -1
- package/dest/bench/utils.js +6 -3
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +6 -3
- 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 +23 -13
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +2 -2
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +1 -1
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +4 -3
- package/dest/e2e_deploy_contract/deploy_test.d.ts +2 -2
- package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.d.ts +26 -7
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +117 -41
- package/dest/e2e_fees/fees_test.d.ts +2 -2
- package/dest/e2e_fees/fees_test.d.ts.map +1 -1
- package/dest/e2e_fees/fees_test.js +22 -15
- package/dest/e2e_nested_contract/nested_contract_test.d.ts +1 -1
- package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
- package/dest/e2e_nested_contract/nested_contract_test.js +4 -6
- package/dest/e2e_p2p/inactivity_slash_test.js +3 -3
- package/dest/e2e_p2p/p2p_network.d.ts +14 -12
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +70 -34
- package/dest/e2e_p2p/reqresp/utils.d.ts +3 -3
- package/dest/e2e_p2p/reqresp/utils.d.ts.map +1 -1
- package/dest/e2e_p2p/reqresp/utils.js +49 -9
- package/dest/e2e_p2p/shared.d.ts +26 -8
- package/dest/e2e_p2p/shared.d.ts.map +1 -1
- package/dest/e2e_p2p/shared.js +74 -50
- package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts +2 -0
- package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts.map +1 -0
- package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.js +184 -0
- package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts +18 -0
- package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts.map +1 -0
- package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.js +120 -0
- package/dest/e2e_token_contract/token_contract_test.d.ts +4 -2
- package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
- package/dest/e2e_token_contract/token_contract_test.js +19 -9
- package/dest/fixtures/authwit_proxy.d.ts +15 -0
- package/dest/fixtures/authwit_proxy.d.ts.map +1 -0
- package/dest/fixtures/authwit_proxy.js +34 -0
- package/dest/fixtures/e2e_prover_test.d.ts +7 -6
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +37 -49
- package/dest/fixtures/elu_monitor.d.ts +21 -0
- package/dest/fixtures/elu_monitor.d.ts.map +1 -0
- package/dest/fixtures/elu_monitor.js +102 -0
- package/dest/fixtures/fixtures.d.ts +16 -1
- package/dest/fixtures/fixtures.d.ts.map +1 -1
- package/dest/fixtures/fixtures.js +16 -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 +71 -0
- package/dest/fixtures/ha_setup.d.ts.map +1 -0
- package/dest/fixtures/ha_setup.js +116 -0
- package/dest/fixtures/index.d.ts +2 -1
- package/dest/fixtures/index.d.ts.map +1 -1
- package/dest/fixtures/index.js +1 -0
- package/dest/fixtures/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 +39 -0
- package/dest/fixtures/setup.d.ts +59 -31
- package/dest/fixtures/setup.d.ts.map +1 -1
- package/dest/fixtures/setup.js +97 -167
- package/dest/fixtures/setup_p2p_test.d.ts +18 -10
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +23 -17
- package/dest/fixtures/token_utils.d.ts +2 -2
- package/dest/fixtures/token_utils.d.ts.map +1 -1
- package/dest/fixtures/token_utils.js +5 -7
- 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/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 +1 -1
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.js +13 -13
- package/dest/shared/gas_portal_test_harness.js +3 -3
- package/dest/shared/index.d.ts +2 -1
- package/dest/shared/index.d.ts.map +1 -1
- package/dest/shared/index.js +1 -0
- package/dest/shared/jest_setup.js +41 -1
- package/dest/shared/mock_state_view.d.ts +86 -0
- package/dest/shared/mock_state_view.d.ts.map +1 -0
- package/dest/shared/mock_state_view.js +186 -0
- package/dest/shared/submit-transactions.d.ts +2 -2
- package/dest/shared/submit-transactions.d.ts.map +1 -1
- package/dest/shared/submit-transactions.js +1 -1
- package/dest/shared/uniswap_l1_l2.d.ts +1 -1
- package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
- package/dest/shared/uniswap_l1_l2.js +16 -21
- package/dest/simulators/lending_simulator.d.ts +1 -1
- package/dest/simulators/lending_simulator.d.ts.map +1 -1
- package/dest/simulators/lending_simulator.js +4 -4
- package/dest/simulators/token_simulator.d.ts +1 -1
- package/dest/simulators/token_simulator.d.ts.map +1 -1
- package/dest/simulators/token_simulator.js +3 -24
- package/dest/spartan/setup_test_wallets.d.ts +12 -3
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +100 -39
- package/dest/spartan/tx_metrics.d.ts +1 -1
- package/dest/spartan/tx_metrics.d.ts.map +1 -1
- package/dest/spartan/tx_metrics.js +19 -3
- package/dest/spartan/utils/bot.d.ts +3 -2
- package/dest/spartan/utils/bot.d.ts.map +1 -1
- package/dest/spartan/utils/bot.js +2 -1
- package/dest/spartan/utils/config.d.ts +10 -1
- package/dest/spartan/utils/config.d.ts.map +1 -1
- package/dest/spartan/utils/config.js +4 -1
- package/dest/spartan/utils/index.d.ts +5 -3
- package/dest/spartan/utils/index.d.ts.map +1 -1
- package/dest/spartan/utils/index.js +5 -1
- package/dest/spartan/utils/k8s.d.ts +3 -1
- package/dest/spartan/utils/k8s.d.ts.map +1 -1
- package/dest/spartan/utils/k8s.js +6 -0
- package/dest/spartan/utils/nodes.d.ts +4 -5
- package/dest/spartan/utils/nodes.d.ts.map +1 -1
- package/dest/spartan/utils/nodes.js +9 -9
- 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/spartan/utils/scripts.d.ts +18 -4
- package/dest/spartan/utils/scripts.d.ts.map +1 -1
- package/dest/spartan/utils/scripts.js +19 -4
- package/dest/test-wallet/test_wallet.d.ts +84 -0
- package/dest/test-wallet/test_wallet.d.ts.map +1 -0
- package/dest/test-wallet/test_wallet.js +255 -0
- package/dest/test-wallet/utils.d.ts +41 -0
- package/dest/test-wallet/utils.d.ts.map +1 -0
- package/dest/test-wallet/utils.js +71 -0
- package/dest/test-wallet/wallet_worker_script.d.ts +2 -0
- package/dest/test-wallet/wallet_worker_script.d.ts.map +1 -0
- package/dest/test-wallet/wallet_worker_script.js +48 -0
- package/dest/test-wallet/worker_wallet.d.ts +52 -0
- package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
- package/dest/test-wallet/worker_wallet.js +151 -0
- package/dest/test-wallet/worker_wallet_schema.d.ts +279 -0
- package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
- package/dest/test-wallet/worker_wallet_schema.js +10 -0
- package/package.json +46 -43
- package/src/bench/client_flows/client_flows_benchmark.ts +33 -20
- package/src/bench/client_flows/config.ts +9 -1
- package/src/bench/utils.ts +8 -3
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +31 -21
- package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +8 -9
- package/src/e2e_deploy_contract/deploy_test.ts +3 -3
- package/src/e2e_epochs/epochs_test.ts +138 -67
- package/src/e2e_fees/bridging_race.notest.ts +1 -1
- package/src/e2e_fees/fees_test.ts +25 -31
- package/src/e2e_nested_contract/nested_contract_test.ts +7 -5
- package/src/e2e_p2p/inactivity_slash_test.ts +7 -7
- package/src/e2e_p2p/p2p_network.ts +93 -49
- package/src/e2e_p2p/reqresp/utils.ts +63 -13
- package/src/e2e_p2p/shared.ts +91 -64
- package/src/e2e_storage_proof/fixtures/storage_proof.json +915 -0
- package/src/e2e_storage_proof/fixtures/storage_proof_fetcher.ts +190 -0
- package/src/e2e_storage_proof/fixtures/storage_proof_fixture.ts +173 -0
- package/src/e2e_token_contract/token_contract_test.ts +26 -9
- package/src/fixtures/authwit_proxy.ts +54 -0
- package/src/fixtures/dumps/epoch_proof_result.json +1 -1
- package/src/fixtures/e2e_prover_test.ts +46 -55
- package/src/fixtures/elu_monitor.ts +126 -0
- package/src/fixtures/fixtures.ts +32 -0
- package/src/fixtures/get_bb_config.ts +7 -6
- package/src/fixtures/ha_setup.ts +188 -0
- package/src/fixtures/index.ts +1 -0
- package/src/fixtures/schnorr_hardcoded_account_contract.ts +49 -0
- package/src/fixtures/setup.ts +147 -232
- package/src/fixtures/setup_p2p_test.ts +33 -32
- package/src/fixtures/token_utils.ts +3 -3
- 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 +3 -5
- package/src/legacy-jest-resolver.cjs +135 -0
- package/src/shared/cross_chain_test_harness.ts +13 -9
- package/src/shared/gas_portal_test_harness.ts +1 -2
- package/src/shared/index.ts +1 -0
- package/src/shared/jest_setup.ts +51 -1
- package/src/shared/mock_state_view.ts +188 -0
- package/src/shared/submit-transactions.ts +3 -2
- package/src/shared/uniswap_l1_l2.ts +38 -37
- package/src/simulators/lending_simulator.ts +8 -4
- package/src/simulators/token_simulator.ts +6 -30
- package/src/spartan/setup_test_wallets.ts +141 -32
- package/src/spartan/tx_metrics.ts +17 -5
- package/src/spartan/utils/bot.ts +4 -1
- package/src/spartan/utils/config.ts +3 -0
- package/src/spartan/utils/index.ts +8 -1
- package/src/spartan/utils/k8s.ts +8 -0
- package/src/spartan/utils/nodes.ts +15 -10
- package/src/spartan/utils/pod_logs.ts +99 -0
- package/src/spartan/utils/scripts.ts +43 -7
- package/src/test-wallet/test_wallet.ts +357 -0
- package/src/test-wallet/utils.ts +112 -0
- package/src/test-wallet/wallet_worker_script.ts +60 -0
- package/src/test-wallet/worker_wallet.ts +214 -0
- package/src/test-wallet/worker_wallet_schema.ts +13 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
2
2
|
import { type Logger, createLogger } from '@aztec/aztec.js/log';
|
|
3
3
|
import type { AztecNode } from '@aztec/aztec.js/node';
|
|
4
|
-
import { CheatCodes } from '@aztec/aztec/testing';
|
|
4
|
+
import { CheatCodes, getTokenAllowedSetupFunctions } from '@aztec/aztec/testing';
|
|
5
5
|
import { createExtendedL1Client } from '@aztec/ethereum/client';
|
|
6
6
|
import { RollupContract } from '@aztec/ethereum/contracts';
|
|
7
7
|
import type { DeployAztecL1ContractsArgs } from '@aztec/ethereum/deploy-aztec-l1-contracts';
|
|
@@ -20,11 +20,10 @@ import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
|
20
20
|
import { getCanonicalFeeJuice } from '@aztec/protocol-contracts/fee-juice';
|
|
21
21
|
import { GasSettings } from '@aztec/stdlib/gas';
|
|
22
22
|
import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
|
|
23
|
-
import { TestWallet } from '@aztec/test-wallet/server';
|
|
24
23
|
|
|
25
24
|
import { getContract } from 'viem';
|
|
26
25
|
|
|
27
|
-
import { MNEMONIC } from '../fixtures/fixtures.js';
|
|
26
|
+
import { MNEMONIC, getPaddedMaxFeesPerGas } from '../fixtures/fixtures.js';
|
|
28
27
|
import {
|
|
29
28
|
type EndToEndContext,
|
|
30
29
|
type SetupOptions,
|
|
@@ -36,6 +35,7 @@ import {
|
|
|
36
35
|
import { mintTokensToPrivate } from '../fixtures/token_utils.js';
|
|
37
36
|
import { type BalancesFn, getBalancesFn, setupSponsoredFPC } from '../fixtures/utils.js';
|
|
38
37
|
import { FeeJuicePortalTestingHarnessFactory, type GasBridgingTestHarness } from '../shared/gas_portal_test_harness.js';
|
|
38
|
+
import { TestWallet } from '../test-wallet/test_wallet.js';
|
|
39
39
|
|
|
40
40
|
/**
|
|
41
41
|
* Test fixture for testing fees. Provides the following setup steps:
|
|
@@ -104,16 +104,19 @@ export class FeesTest {
|
|
|
104
104
|
|
|
105
105
|
async setup() {
|
|
106
106
|
this.logger.verbose('Setting up fresh context...');
|
|
107
|
+
// Token allowlist entries are test-only: FPC-based fee payment with custom tokens won't work on mainnet alpha.
|
|
108
|
+
const tokenAllowList = await getTokenAllowedSetupFunctions();
|
|
107
109
|
this.context = await setup(0, {
|
|
108
110
|
startProverNode: true,
|
|
109
111
|
...this.setupOptions,
|
|
110
112
|
fundSponsoredFPC: true,
|
|
111
113
|
skipAccountDeployment: true,
|
|
112
114
|
l1ContractsArgs: { ...this.setupOptions },
|
|
115
|
+
txPublicSetupAllowListExtend: [...(this.setupOptions.txPublicSetupAllowListExtend ?? []), ...tokenAllowList],
|
|
113
116
|
});
|
|
114
117
|
|
|
115
118
|
this.rollupContract = RollupContract.getFromConfig(this.context.config);
|
|
116
|
-
this.chainMonitor = new ChainMonitor(this.rollupContract, this.context.dateProvider
|
|
119
|
+
this.chainMonitor = new ChainMonitor(this.rollupContract, this.context.dateProvider, this.logger, 200).start();
|
|
117
120
|
|
|
118
121
|
await this.applyBaseSetup();
|
|
119
122
|
|
|
@@ -126,12 +129,12 @@ export class FeesTest {
|
|
|
126
129
|
}
|
|
127
130
|
|
|
128
131
|
setIsMarkingAsProven(b: boolean) {
|
|
129
|
-
this.context.watcher
|
|
132
|
+
this.context.watcher.setIsMarkingAsProven(b);
|
|
130
133
|
}
|
|
131
134
|
|
|
132
135
|
async catchUpProvenChain() {
|
|
133
136
|
const bn = await this.aztecNode.getBlockNumber();
|
|
134
|
-
while ((await this.aztecNode.
|
|
137
|
+
while ((await this.aztecNode.getBlockNumber('proven')) < bn) {
|
|
135
138
|
await sleep(1000);
|
|
136
139
|
}
|
|
137
140
|
}
|
|
@@ -157,15 +160,15 @@ export class FeesTest {
|
|
|
157
160
|
|
|
158
161
|
/** Alice mints bananaCoin tokens privately to the target address and redeems them. */
|
|
159
162
|
async mintPrivateBananas(amount: bigint, address: AztecAddress) {
|
|
160
|
-
const balanceBefore = await this.bananaCoin.methods
|
|
163
|
+
const { result: balanceBefore } = await this.bananaCoin.methods
|
|
161
164
|
.balance_of_private(address)
|
|
162
|
-
.simulate({ from:
|
|
165
|
+
.simulate({ from: address });
|
|
163
166
|
|
|
164
167
|
await mintTokensToPrivate(this.bananaCoin, this.aliceAddress, address, amount);
|
|
165
168
|
|
|
166
|
-
const balanceAfter = await this.bananaCoin.methods
|
|
169
|
+
const { result: balanceAfter } = await this.bananaCoin.methods
|
|
167
170
|
.balance_of_private(address)
|
|
168
|
-
.simulate({ from:
|
|
171
|
+
.simulate({ from: address });
|
|
169
172
|
expect(balanceAfter).toEqual(balanceBefore + amount);
|
|
170
173
|
}
|
|
171
174
|
|
|
@@ -188,9 +191,11 @@ export class FeesTest {
|
|
|
188
191
|
});
|
|
189
192
|
|
|
190
193
|
this.wallet = this.context.wallet;
|
|
191
|
-
this.aztecNode = this.context.aztecNodeService
|
|
192
|
-
this.aztecNodeAdmin = this.context.aztecNodeService
|
|
193
|
-
this.gasSettings = GasSettings.
|
|
194
|
+
this.aztecNode = this.context.aztecNodeService;
|
|
195
|
+
this.aztecNodeAdmin = this.context.aztecNodeService;
|
|
196
|
+
this.gasSettings = GasSettings.fallback({
|
|
197
|
+
maxFeesPerGas: await getPaddedMaxFeesPerGas(this.aztecNode),
|
|
198
|
+
});
|
|
194
199
|
this.cheatCodes = this.context.cheatCodes;
|
|
195
200
|
this.accounts = deployedAccounts.map(a => a.address);
|
|
196
201
|
this.accounts.forEach((a, i) => this.logger.verbose(`Account ${i} address: ${a}`));
|
|
@@ -213,16 +218,11 @@ export class FeesTest {
|
|
|
213
218
|
|
|
214
219
|
this.feeJuiceContract = FeeJuiceContract.at(ProtocolContractAddress.FeeJuice, this.wallet);
|
|
215
220
|
|
|
216
|
-
this.getGasBalanceFn = getBalancesFn(
|
|
217
|
-
'⛽',
|
|
218
|
-
this.feeJuiceContract.methods.balance_of_public,
|
|
219
|
-
this.aliceAddress,
|
|
220
|
-
this.logger,
|
|
221
|
-
);
|
|
221
|
+
this.getGasBalanceFn = getBalancesFn('⛽', this.feeJuiceContract.methods.balance_of_public, this.logger);
|
|
222
222
|
|
|
223
223
|
this.feeJuiceBridgeTestHarness = await FeeJuicePortalTestingHarnessFactory.create({
|
|
224
|
-
aztecNode: this.context.aztecNodeService
|
|
225
|
-
aztecNodeAdmin: this.context.aztecNodeService
|
|
224
|
+
aztecNode: this.context.aztecNodeService,
|
|
225
|
+
aztecNodeAdmin: this.context.aztecNodeService,
|
|
226
226
|
l1Client: this.context.deployL1ContractsValues.l1Client,
|
|
227
227
|
wallet: this.wallet,
|
|
228
228
|
logger: this.logger,
|
|
@@ -232,22 +232,16 @@ export class FeesTest {
|
|
|
232
232
|
async applyDeployBananaToken() {
|
|
233
233
|
this.logger.info('Applying deploy banana token setup');
|
|
234
234
|
|
|
235
|
-
const bananaCoin = await BananaCoin.deploy(this.wallet, this.aliceAddress, 'BC', 'BC', 18n).send({
|
|
235
|
+
const { contract: bananaCoin } = await BananaCoin.deploy(this.wallet, this.aliceAddress, 'BC', 'BC', 18n).send({
|
|
236
236
|
from: this.aliceAddress,
|
|
237
237
|
});
|
|
238
238
|
this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
|
|
239
239
|
|
|
240
240
|
this.bananaCoin = bananaCoin;
|
|
241
|
-
this.getBananaPublicBalanceFn = getBalancesFn(
|
|
242
|
-
'🍌.public',
|
|
243
|
-
this.bananaCoin.methods.balance_of_public,
|
|
244
|
-
this.aliceAddress,
|
|
245
|
-
this.logger,
|
|
246
|
-
);
|
|
241
|
+
this.getBananaPublicBalanceFn = getBalancesFn('🍌.public', this.bananaCoin.methods.balance_of_public, this.logger);
|
|
247
242
|
this.getBananaPrivateBalanceFn = getBalancesFn(
|
|
248
243
|
'🍌.private',
|
|
249
244
|
this.bananaCoin.methods.balance_of_private,
|
|
250
|
-
this.aliceAddress,
|
|
251
245
|
this.logger,
|
|
252
246
|
);
|
|
253
247
|
}
|
|
@@ -259,7 +253,7 @@ export class FeesTest {
|
|
|
259
253
|
expect((await this.wallet.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
|
|
260
254
|
|
|
261
255
|
const bananaCoin = this.bananaCoin;
|
|
262
|
-
const bananaFPC = await FPCContract.deploy(this.wallet, bananaCoin.address, this.fpcAdmin).send({
|
|
256
|
+
const { contract: bananaFPC } = await FPCContract.deploy(this.wallet, bananaCoin.address, this.fpcAdmin).send({
|
|
263
257
|
from: this.aliceAddress,
|
|
264
258
|
});
|
|
265
259
|
|
|
@@ -290,7 +284,7 @@ export class FeesTest {
|
|
|
290
284
|
|
|
291
285
|
// @todo @lherskind As we deal with #13601
|
|
292
286
|
// Right now the value is from `FeeLib.sol`
|
|
293
|
-
const L1_GAS_PER_EPOCH_VERIFIED =
|
|
287
|
+
const L1_GAS_PER_EPOCH_VERIFIED = 3600000n;
|
|
294
288
|
|
|
295
289
|
// We round up
|
|
296
290
|
const mulDiv = (a: bigint, b: bigint, c: bigint) => (a * b) / c + ((a * b) % c > 0n ? 1n : 0n);
|
|
@@ -44,7 +44,7 @@ export class NestedContractTest {
|
|
|
44
44
|
});
|
|
45
45
|
this.wallet = this.context.wallet;
|
|
46
46
|
[{ address: this.defaultAccountAddress }] = deployedAccounts;
|
|
47
|
-
this.aztecNode = this.context.aztecNodeService
|
|
47
|
+
this.aztecNode = this.context.aztecNodeService;
|
|
48
48
|
|
|
49
49
|
this.logger.info('Public deploy accounts');
|
|
50
50
|
await publicDeployAccounts(this.wallet, [this.defaultAccountAddress]);
|
|
@@ -65,9 +65,11 @@ export class NestedContractTest {
|
|
|
65
65
|
|
|
66
66
|
async applyManual() {
|
|
67
67
|
this.logger.info('Deploying parent and child contracts');
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
this.childContract =
|
|
68
|
+
({ contract: this.parentContract } = await ParentContract.deploy(this.wallet).send({
|
|
69
|
+
from: this.defaultAccountAddress,
|
|
70
|
+
}));
|
|
71
|
+
({ contract: this.childContract } = await ChildContract.deploy(this.wallet).send({
|
|
72
|
+
from: this.defaultAccountAddress,
|
|
73
|
+
}));
|
|
72
74
|
}
|
|
73
75
|
}
|
|
@@ -58,6 +58,7 @@ export class P2PInactivityTest {
|
|
|
58
58
|
basePort: BOOT_NODE_UDP_PORT,
|
|
59
59
|
startProverNode: true,
|
|
60
60
|
initialConfig: {
|
|
61
|
+
anvilSlotsInAnEpoch: 4,
|
|
61
62
|
proverNodeConfig: { proverNodeEpochProvingDelayMs: AZTEC_SLOT_DURATION * 1000 },
|
|
62
63
|
aztecTargetCommitteeSize: COMMITTEE_SIZE,
|
|
63
64
|
aztecSlotDuration: AZTEC_SLOT_DURATION,
|
|
@@ -66,7 +67,6 @@ export class P2PInactivityTest {
|
|
|
66
67
|
listenAddress: '127.0.0.1',
|
|
67
68
|
minTxsPerBlock: 0,
|
|
68
69
|
aztecEpochDuration: EPOCH_DURATION,
|
|
69
|
-
validatorReexecute: false,
|
|
70
70
|
sentinelEnabled: true,
|
|
71
71
|
slashingQuorum: SLASHING_QUORUM,
|
|
72
72
|
slashingRoundSizeInEpochs: SLASHING_ROUND_SIZE_IN_EPOCHS,
|
|
@@ -98,17 +98,17 @@ export class P2PInactivityTest {
|
|
|
98
98
|
this.rollup = rollup;
|
|
99
99
|
|
|
100
100
|
if (!this.keepInitialNode) {
|
|
101
|
-
await this.test.ctx.aztecNodeService
|
|
101
|
+
await this.test.ctx.aztecNodeService.stop();
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
// Create all active nodes
|
|
105
105
|
this.activeNodes = await createNodes(
|
|
106
106
|
this.test.ctx.aztecNodeConfig,
|
|
107
|
-
this.test.ctx.dateProvider
|
|
107
|
+
this.test.ctx.dateProvider,
|
|
108
108
|
this.test.bootstrapNodeEnr,
|
|
109
109
|
NUM_NODES - this.inactiveNodeCount - Number(this.keepInitialNode),
|
|
110
110
|
BOOT_NODE_UDP_PORT,
|
|
111
|
-
this.test.
|
|
111
|
+
this.test.genesis,
|
|
112
112
|
this.dataDir,
|
|
113
113
|
undefined,
|
|
114
114
|
Number(this.keepInitialNode),
|
|
@@ -118,18 +118,18 @@ export class P2PInactivityTest {
|
|
|
118
118
|
const inactiveConfig = { ...this.test.ctx.aztecNodeConfig, dontStartSequencer: true };
|
|
119
119
|
this.inactiveNodes = await createNodes(
|
|
120
120
|
inactiveConfig,
|
|
121
|
-
this.test.ctx.dateProvider
|
|
121
|
+
this.test.ctx.dateProvider,
|
|
122
122
|
this.test.bootstrapNodeEnr,
|
|
123
123
|
this.inactiveNodeCount,
|
|
124
124
|
BOOT_NODE_UDP_PORT,
|
|
125
|
-
this.test.
|
|
125
|
+
this.test.genesis,
|
|
126
126
|
this.dataDir,
|
|
127
127
|
undefined,
|
|
128
128
|
NUM_NODES - this.inactiveNodeCount,
|
|
129
129
|
);
|
|
130
130
|
|
|
131
131
|
this.nodes = [
|
|
132
|
-
...(this.keepInitialNode ? [this.test.ctx.aztecNodeService
|
|
132
|
+
...(this.keepInitialNode ? [this.test.ctx.aztecNodeService] : []),
|
|
133
133
|
...this.activeNodes,
|
|
134
134
|
...this.inactiveNodes,
|
|
135
135
|
];
|
|
@@ -1,18 +1,14 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type InitialAccountData, generateSchnorrAccounts } from '@aztec/accounts/testing';
|
|
2
2
|
import type { AztecNodeConfig, AztecNodeService } from '@aztec/aztec-node';
|
|
3
|
+
import { getAccountContractAddress } from '@aztec/aztec.js/account';
|
|
3
4
|
import { AztecAddress, EthAddress } from '@aztec/aztec.js/addresses';
|
|
4
5
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
5
6
|
import { getL1ContractsConfigEnvVars } from '@aztec/ethereum/config';
|
|
6
|
-
import {
|
|
7
|
-
type EmpireSlashingProposerContract,
|
|
8
|
-
GSEContract,
|
|
9
|
-
RollupContract,
|
|
10
|
-
type TallySlashingProposerContract,
|
|
11
|
-
} from '@aztec/ethereum/contracts';
|
|
7
|
+
import { GSEContract, RollupContract, type SlashingProposerContract } from '@aztec/ethereum/contracts';
|
|
12
8
|
import type { Operator } from '@aztec/ethereum/deploy-aztec-l1-contracts';
|
|
13
9
|
import { deployL1Contract } from '@aztec/ethereum/deploy-l1-contract';
|
|
14
10
|
import { MultiAdderArtifact } from '@aztec/ethereum/l1-artifacts';
|
|
15
|
-
import {
|
|
11
|
+
import { createL1TxUtils } from '@aztec/ethereum/l1-tx-utils';
|
|
16
12
|
import { ChainMonitor } from '@aztec/ethereum/test';
|
|
17
13
|
import type { ExtendedViemWalletClient, ViemClient } from '@aztec/ethereum/types';
|
|
18
14
|
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
@@ -24,20 +20,22 @@ import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
|
|
|
24
20
|
import type { BootstrapNode } from '@aztec/p2p/bootstrap';
|
|
25
21
|
import { createBootstrapNodeFromPrivateKey, getBootstrapNodeEnr } from '@aztec/p2p/test-helpers';
|
|
26
22
|
import { tryStop } from '@aztec/stdlib/interfaces/server';
|
|
27
|
-
import {
|
|
28
|
-
import type {
|
|
23
|
+
import { TopicType } from '@aztec/stdlib/p2p';
|
|
24
|
+
import type { GenesisData } from '@aztec/stdlib/world-state';
|
|
29
25
|
import { ZkPassportProofParams } from '@aztec/stdlib/zkpassport';
|
|
30
|
-
import type { TestWallet } from '@aztec/test-wallet/server';
|
|
31
26
|
import { getGenesisValues } from '@aztec/world-state/testing';
|
|
32
27
|
|
|
33
28
|
import getPort from 'get-port';
|
|
34
29
|
import { type GetContractReturnType, getAddress, getContract } from 'viem';
|
|
35
30
|
import { privateKeyToAccount } from 'viem/accounts';
|
|
36
31
|
|
|
32
|
+
import {
|
|
33
|
+
SCHNORR_HARDCODED_PRIVATE_KEY,
|
|
34
|
+
SchnorrHardcodedKeyAccountContract,
|
|
35
|
+
} from '../fixtures/schnorr_hardcoded_account_contract.js';
|
|
37
36
|
import {
|
|
38
37
|
type EndToEndContext,
|
|
39
38
|
type SetupOptions,
|
|
40
|
-
deployAccounts,
|
|
41
39
|
getPrivateKeyFromIndex,
|
|
42
40
|
getSponsoredFPCAddress,
|
|
43
41
|
setup,
|
|
@@ -49,6 +47,7 @@ import {
|
|
|
49
47
|
generatePrivateKeys,
|
|
50
48
|
} from '../fixtures/setup_p2p_test.js';
|
|
51
49
|
import { getEndToEndTestTelemetryClient } from '../fixtures/with_telemetry_utils.js';
|
|
50
|
+
import type { TestWallet } from '../test-wallet/test_wallet.js';
|
|
52
51
|
|
|
53
52
|
// Use a fixed bootstrap node private key so that we can re-use the same snapshot and the nodes can find each other
|
|
54
53
|
const BOOTSTRAP_NODE_PRIVATE_KEY = '080212208f988fc0899e4a73a5aee4d271a5f20670603a756ad8d84f2c94263a6427c591';
|
|
@@ -58,7 +57,7 @@ export const WAIT_FOR_TX_TIMEOUT = l1ContractsConfig.aztecSlotDuration * 3;
|
|
|
58
57
|
export const SHORTENED_BLOCK_TIME_CONFIG_NO_PRUNES = {
|
|
59
58
|
aztecSlotDuration: 12,
|
|
60
59
|
ethereumSlotDuration: 4,
|
|
61
|
-
|
|
60
|
+
aztecProofSubmissionEpochs: 640,
|
|
62
61
|
};
|
|
63
62
|
|
|
64
63
|
export class P2PNetworkTest {
|
|
@@ -75,8 +74,8 @@ export class P2PNetworkTest {
|
|
|
75
74
|
public peerIdPrivateKeys: string[] = [];
|
|
76
75
|
public validators: Operator[] = [];
|
|
77
76
|
|
|
78
|
-
public
|
|
79
|
-
public
|
|
77
|
+
public hardcodedAccountData!: InitialAccountData;
|
|
78
|
+
public genesis: GenesisData | undefined;
|
|
80
79
|
|
|
81
80
|
// The re-execution test needs a wallet and a spam contract
|
|
82
81
|
public wallet?: TestWallet;
|
|
@@ -123,12 +122,11 @@ export class P2PNetworkTest {
|
|
|
123
122
|
initialValidatorConfig.aztecProofSubmissionEpochs ?? l1ContractsConfig.aztecProofSubmissionEpochs,
|
|
124
123
|
slashingRoundSizeInEpochs:
|
|
125
124
|
initialValidatorConfig.slashingRoundSizeInEpochs ?? l1ContractsConfig.slashingRoundSizeInEpochs,
|
|
126
|
-
|
|
125
|
+
slasherEnabled: initialValidatorConfig.slasherEnabled ?? true,
|
|
127
126
|
aztecTargetCommitteeSize: numberOfValidators,
|
|
128
127
|
metricsPort: metricsPort,
|
|
129
128
|
numberOfInitialFundedAccounts: 2,
|
|
130
129
|
startProverNode,
|
|
131
|
-
walletMinFeePadding: 2.0,
|
|
132
130
|
};
|
|
133
131
|
|
|
134
132
|
this.deployL1ContractsArgs = {
|
|
@@ -136,7 +134,7 @@ export class P2PNetworkTest {
|
|
|
136
134
|
aztecEpochDuration: initialValidatorConfig.aztecEpochDuration ?? l1ContractsConfig.aztecEpochDuration,
|
|
137
135
|
slashingRoundSizeInEpochs:
|
|
138
136
|
initialValidatorConfig.slashingRoundSizeInEpochs ?? l1ContractsConfig.slashingRoundSizeInEpochs,
|
|
139
|
-
|
|
137
|
+
slasherEnabled: initialValidatorConfig.slasherEnabled ?? true,
|
|
140
138
|
|
|
141
139
|
ethereumSlotDuration: initialValidatorConfig.ethereumSlotDuration ?? l1ContractsConfig.ethereumSlotDuration,
|
|
142
140
|
aztecSlotDuration: initialValidatorConfig.aztecSlotDuration ?? l1ContractsConfig.aztecSlotDuration,
|
|
@@ -191,10 +189,10 @@ export class P2PNetworkTest {
|
|
|
191
189
|
}
|
|
192
190
|
|
|
193
191
|
get fundedAccount() {
|
|
194
|
-
if (!this.
|
|
195
|
-
throw new Error('Call
|
|
192
|
+
if (!this.hardcodedAccountData) {
|
|
193
|
+
throw new Error('Call setup to initialize the hardcoded account.');
|
|
196
194
|
}
|
|
197
|
-
return this.
|
|
195
|
+
return this.hardcodedAccountData;
|
|
198
196
|
}
|
|
199
197
|
|
|
200
198
|
async addBootstrapNode() {
|
|
@@ -302,17 +300,22 @@ export class P2PNetworkTest {
|
|
|
302
300
|
await this._sendDummyTx(this.context.deployL1ContractsValues.l1Client);
|
|
303
301
|
}
|
|
304
302
|
|
|
303
|
+
/** Points the wallet to a P2P-enabled node so transactions can propagate through the network. */
|
|
304
|
+
setupWalletOnNode(node: AztecNodeService) {
|
|
305
|
+
this.logger.info('Pointing wallet to a P2P-enabled node');
|
|
306
|
+
this.context.wallet.updateNode(node);
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
/** Registers the hardcoded account in PXE without on-chain deployment. No sequencer needed. */
|
|
305
310
|
async setupAccount() {
|
|
306
|
-
this.logger.info('
|
|
307
|
-
const
|
|
308
|
-
|
|
309
|
-
this.
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
initialFundedAccounts: this.context.initialFundedAccounts,
|
|
311
|
+
this.logger.info('Registering hardcoded account (no deployment)');
|
|
312
|
+
const contract = new SchnorrHardcodedKeyAccountContract();
|
|
313
|
+
const accountManager = await (this.context.wallet as TestWallet).createAccount({
|
|
314
|
+
secret: this.hardcodedAccountData.secret,
|
|
315
|
+
salt: this.hardcodedAccountData.salt,
|
|
316
|
+
contract,
|
|
313
317
|
});
|
|
314
|
-
this.
|
|
315
|
-
[{ address: this.defaultAccountAddress }] = deployedAccounts;
|
|
318
|
+
this.defaultAccountAddress = accountManager.address;
|
|
316
319
|
this.wallet = this.context.wallet;
|
|
317
320
|
}
|
|
318
321
|
|
|
@@ -322,8 +325,9 @@ export class P2PNetworkTest {
|
|
|
322
325
|
throw new Error('Call setupAccount before deploying spam contract');
|
|
323
326
|
}
|
|
324
327
|
|
|
325
|
-
|
|
326
|
-
|
|
328
|
+
({ contract: this.spamContract } = await SpamContract.deploy(this.wallet).send({
|
|
329
|
+
from: this.defaultAccountAddress!,
|
|
330
|
+
}));
|
|
327
331
|
}
|
|
328
332
|
|
|
329
333
|
async removeInitialNode() {
|
|
@@ -333,9 +337,9 @@ export class P2PNetworkTest {
|
|
|
333
337
|
const block = await this.context.deployL1ContractsValues.l1Client.getBlock({
|
|
334
338
|
blockNumber: receipt.blockNumber,
|
|
335
339
|
});
|
|
336
|
-
this.context.dateProvider
|
|
340
|
+
this.context.dateProvider.setTime(Number(block.timestamp) * 1000);
|
|
337
341
|
|
|
338
|
-
await this.context.aztecNodeService
|
|
342
|
+
await this.context.aztecNodeService.stop();
|
|
339
343
|
}
|
|
340
344
|
|
|
341
345
|
async sendDummyTx() {
|
|
@@ -343,7 +347,7 @@ export class P2PNetworkTest {
|
|
|
343
347
|
}
|
|
344
348
|
|
|
345
349
|
private async _sendDummyTx(l1Client: ExtendedViemWalletClient) {
|
|
346
|
-
const l1TxUtils =
|
|
350
|
+
const l1TxUtils = createL1TxUtils(l1Client);
|
|
347
351
|
return await l1TxUtils.sendAndMonitorTransaction({
|
|
348
352
|
to: l1Client.account!.address,
|
|
349
353
|
value: 1n,
|
|
@@ -352,13 +356,30 @@ export class P2PNetworkTest {
|
|
|
352
356
|
|
|
353
357
|
async setup() {
|
|
354
358
|
this.logger.info('Setting up subsystems from fresh');
|
|
359
|
+
|
|
360
|
+
// Pre-compute hardcoded account data so it gets funded in genesis.
|
|
361
|
+
const contract = new SchnorrHardcodedKeyAccountContract();
|
|
362
|
+
const secret = Fr.random();
|
|
363
|
+
const salt = Fr.random();
|
|
364
|
+
this.hardcodedAccountData = {
|
|
365
|
+
secret,
|
|
366
|
+
salt,
|
|
367
|
+
signingKey: SCHNORR_HARDCODED_PRIVATE_KEY,
|
|
368
|
+
address: await getAccountContractAddress(contract, secret, salt),
|
|
369
|
+
};
|
|
370
|
+
|
|
371
|
+
// Generate regular Schnorr accounts for tests that need deployable accounts (e.g. add_rollup).
|
|
372
|
+
const regularAccounts = await generateSchnorrAccounts(this.setupOptions.numberOfInitialFundedAccounts ?? 2);
|
|
373
|
+
|
|
355
374
|
this.context = await setup(
|
|
356
375
|
0,
|
|
357
376
|
{
|
|
358
377
|
...this.setupOptions,
|
|
359
378
|
fundSponsoredFPC: true,
|
|
360
379
|
skipAccountDeployment: true,
|
|
361
|
-
|
|
380
|
+
skipInitialSequencer: true,
|
|
381
|
+
initialFundedAccounts: [...regularAccounts, this.hardcodedAccountData],
|
|
382
|
+
slasherEnabled: this.setupOptions.slasherEnabled ?? this.deployL1ContractsArgs.slasherEnabled ?? false,
|
|
362
383
|
aztecTargetCommitteeSize: 0,
|
|
363
384
|
l1ContractsArgs: this.deployL1ContractsArgs,
|
|
364
385
|
},
|
|
@@ -370,12 +391,17 @@ export class P2PNetworkTest {
|
|
|
370
391
|
const sponsoredFPCAddress = await getSponsoredFPCAddress();
|
|
371
392
|
const initialFundedAccounts = [...this.context.initialFundedAccounts.map(a => a.address), sponsoredFPCAddress];
|
|
372
393
|
|
|
373
|
-
const {
|
|
374
|
-
|
|
394
|
+
const { genesis } = await getGenesisValues(
|
|
395
|
+
initialFundedAccounts,
|
|
396
|
+
undefined,
|
|
397
|
+
undefined,
|
|
398
|
+
this.context.genesis!.genesisTimestamp,
|
|
399
|
+
);
|
|
400
|
+
this.genesis = genesis;
|
|
375
401
|
|
|
376
402
|
const rollupContract = RollupContract.getFromL1ContractsValues(this.context.deployL1ContractsValues);
|
|
377
|
-
this.monitor = new ChainMonitor(rollupContract, this.context.dateProvider
|
|
378
|
-
this.monitor.on('l1-block', ({ timestamp }) => this.context.dateProvider
|
|
403
|
+
this.monitor = new ChainMonitor(rollupContract, this.context.dateProvider).start();
|
|
404
|
+
this.monitor.on('l1-block', ({ timestamp }) => this.context.dateProvider.setTime(Number(timestamp) * 1000));
|
|
379
405
|
}
|
|
380
406
|
|
|
381
407
|
async stopNodes(nodes: AztecNodeService[]) {
|
|
@@ -406,6 +432,7 @@ export class P2PNetworkTest {
|
|
|
406
432
|
expectedNodeCount?: number,
|
|
407
433
|
timeoutSeconds = 30,
|
|
408
434
|
checkIntervalSeconds = 0.1,
|
|
435
|
+
topics: TopicType[] = [TopicType.tx],
|
|
409
436
|
) {
|
|
410
437
|
const nodeCount = expectedNodeCount ?? nodes.length;
|
|
411
438
|
const minPeerCount = nodeCount - 1;
|
|
@@ -431,6 +458,29 @@ export class P2PNetworkTest {
|
|
|
431
458
|
);
|
|
432
459
|
|
|
433
460
|
this.logger.warn('All nodes connected to P2P mesh');
|
|
461
|
+
|
|
462
|
+
// Wait for GossipSub mesh to form for all specified topics.
|
|
463
|
+
// We only require at least 1 mesh peer per node because GossipSub
|
|
464
|
+
// stops grafting once it reaches Dlo peers and won't fill the mesh to all available peers.
|
|
465
|
+
for (const topic of topics) {
|
|
466
|
+
this.logger.warn(`Waiting for GossipSub mesh to form for ${topic} topic...`);
|
|
467
|
+
await Promise.all(
|
|
468
|
+
nodes.map(async (node, index) => {
|
|
469
|
+
const p2p = node.getP2P();
|
|
470
|
+
await retryUntil(
|
|
471
|
+
async () => {
|
|
472
|
+
const meshPeers = await p2p.getGossipMeshPeerCount(topic);
|
|
473
|
+
this.logger.debug(`Node ${index} has ${meshPeers} gossip mesh peers for ${topic} topic`);
|
|
474
|
+
return meshPeers >= 1 ? true : undefined;
|
|
475
|
+
},
|
|
476
|
+
`Node ${index} to have gossip mesh peers for ${topic} topic`,
|
|
477
|
+
timeoutSeconds,
|
|
478
|
+
checkIntervalSeconds,
|
|
479
|
+
);
|
|
480
|
+
}),
|
|
481
|
+
);
|
|
482
|
+
this.logger.warn(`All nodes have gossip mesh peers for ${topic} topic`);
|
|
483
|
+
}
|
|
434
484
|
}
|
|
435
485
|
|
|
436
486
|
async teardown() {
|
|
@@ -442,8 +492,7 @@ export class P2PNetworkTest {
|
|
|
442
492
|
async getContracts(): Promise<{
|
|
443
493
|
rollup: RollupContract;
|
|
444
494
|
slasherContract: GetContractReturnType<typeof SlasherAbi, ViemClient>;
|
|
445
|
-
slashingProposer:
|
|
446
|
-
slashFactory: SlashFactoryContract;
|
|
495
|
+
slashingProposer: SlashingProposerContract | undefined;
|
|
447
496
|
}> {
|
|
448
497
|
if (!this.ctx.deployL1ContractsValues) {
|
|
449
498
|
throw new Error('DeployAztecL1ContractsValues not set');
|
|
@@ -460,14 +509,9 @@ export class P2PNetworkTest {
|
|
|
460
509
|
client: this.ctx.deployL1ContractsValues.l1Client,
|
|
461
510
|
});
|
|
462
511
|
|
|
463
|
-
// Get the actual slashing proposer from rollup
|
|
512
|
+
// Get the actual slashing proposer from rollup
|
|
464
513
|
const slashingProposer = await rollup.getSlashingProposer();
|
|
465
514
|
|
|
466
|
-
|
|
467
|
-
this.ctx.deployL1ContractsValues.l1Client,
|
|
468
|
-
getAddress(this.ctx.deployL1ContractsValues.l1ContractAddresses.slashFactoryAddress!.toString()),
|
|
469
|
-
);
|
|
470
|
-
|
|
471
|
-
return { rollup, slasherContract, slashingProposer, slashFactory };
|
|
515
|
+
return { rollup, slasherContract, slashingProposer };
|
|
472
516
|
}
|
|
473
517
|
}
|