@aztec/end-to-end 0.0.1-commit.96bb3f7 → 0.0.1-commit.a072138
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/bench/client_flows/benchmark.d.ts +3 -2
- package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/benchmark.js +21 -1
- package/dest/bench/client_flows/client_flows_benchmark.d.ts +12 -13
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/client_flows_benchmark.js +117 -132
- package/dest/bench/utils.d.ts +6 -5
- package/dest/bench/utils.d.ts.map +1 -1
- package/dest/bench/utils.js +9 -7
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +6 -7
- 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 +96 -112
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +6 -7
- 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 +65 -62
- package/dest/e2e_deploy_contract/deploy_test.d.ts +4 -3
- package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
- package/dest/e2e_deploy_contract/deploy_test.js +18 -13
- package/dest/e2e_epochs/epochs_test.d.ts +7 -1
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +30 -8
- package/dest/e2e_fees/bridging_race.notest.js +3 -5
- package/dest/e2e_fees/fees_test.d.ts +13 -13
- package/dest/e2e_fees/fees_test.d.ts.map +1 -1
- package/dest/e2e_fees/fees_test.js +122 -140
- package/dest/e2e_l1_publisher/write_json.d.ts +4 -3
- package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -1
- package/dest/e2e_l1_publisher/write_json.js +14 -13
- package/dest/e2e_nested_contract/nested_contract_test.d.ts +6 -9
- package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
- package/dest/e2e_nested_contract/nested_contract_test.js +31 -39
- package/dest/e2e_p2p/inactivity_slash_test.d.ts +3 -3
- package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -1
- package/dest/e2e_p2p/inactivity_slash_test.js +3 -3
- package/dest/e2e_p2p/p2p_network.d.ts +7 -6
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +110 -103
- package/dest/e2e_p2p/reqresp/utils.d.ts +22 -0
- package/dest/e2e_p2p/reqresp/utils.d.ts.map +1 -0
- package/dest/e2e_p2p/reqresp/utils.js +153 -0
- package/dest/e2e_p2p/shared.d.ts +6 -6
- package/dest/e2e_p2p/shared.d.ts.map +1 -1
- package/dest/e2e_p2p/shared.js +9 -16
- package/dest/e2e_token_contract/token_contract_test.d.ts +16 -9
- package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
- package/dest/e2e_token_contract/token_contract_test.js +89 -91
- package/dest/fixtures/e2e_prover_test.d.ts +8 -14
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +85 -93
- package/dest/fixtures/setup.d.ts +218 -0
- package/dest/fixtures/setup.d.ts.map +1 -0
- package/dest/fixtures/setup.js +695 -0
- package/dest/fixtures/setup_p2p_test.d.ts +4 -5
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +24 -19
- package/dest/fixtures/token_utils.d.ts +1 -1
- package/dest/fixtures/token_utils.d.ts.map +1 -1
- package/dest/fixtures/token_utils.js +7 -4
- package/dest/fixtures/utils.d.ts +5 -191
- package/dest/fixtures/utils.d.ts.map +1 -1
- package/dest/fixtures/utils.js +4 -615
- package/dest/quality_of_service/prometheus_client.d.ts +38 -0
- package/dest/quality_of_service/prometheus_client.d.ts.map +1 -0
- package/dest/quality_of_service/prometheus_client.js +67 -0
- package/dest/shared/cross_chain_test_harness.d.ts +14 -4
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.js +11 -11
- package/dest/shared/gas_portal_test_harness.d.ts +11 -1
- package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
- package/dest/shared/gas_portal_test_harness.js +1 -1
- package/dest/shared/submit-transactions.d.ts +3 -3
- package/dest/shared/submit-transactions.d.ts.map +1 -1
- package/dest/shared/submit-transactions.js +9 -11
- package/dest/shared/uniswap_l1_l2.d.ts +1 -1
- package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
- package/dest/shared/uniswap_l1_l2.js +12 -12
- package/dest/simulators/lending_simulator.d.ts +5 -1
- package/dest/simulators/lending_simulator.d.ts.map +1 -1
- package/dest/simulators/lending_simulator.js +2 -2
- 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 +61 -34
- package/dest/spartan/tx_metrics.d.ts +51 -2
- package/dest/spartan/tx_metrics.d.ts.map +1 -1
- package/dest/spartan/tx_metrics.js +333 -6
- package/dest/spartan/utils/bot.d.ts +27 -0
- package/dest/spartan/utils/bot.d.ts.map +1 -0
- package/dest/spartan/utils/bot.js +141 -0
- package/dest/spartan/utils/chaos.d.ts +79 -0
- package/dest/spartan/utils/chaos.d.ts.map +1 -0
- package/dest/spartan/utils/chaos.js +142 -0
- package/dest/spartan/utils/clients.d.ts +39 -0
- package/dest/spartan/utils/clients.d.ts.map +1 -0
- package/dest/spartan/utils/clients.js +90 -0
- package/dest/spartan/utils/config.d.ts +36 -0
- package/dest/spartan/utils/config.d.ts.map +1 -0
- package/dest/spartan/utils/config.js +20 -0
- package/dest/spartan/utils/health.d.ts +63 -0
- package/dest/spartan/utils/health.d.ts.map +1 -0
- package/dest/spartan/utils/health.js +202 -0
- package/dest/spartan/utils/helm.d.ts +15 -0
- package/dest/spartan/utils/helm.d.ts.map +1 -0
- package/dest/spartan/utils/helm.js +47 -0
- package/dest/spartan/utils/index.d.ts +9 -0
- package/dest/spartan/utils/index.d.ts.map +1 -0
- package/dest/spartan/utils/index.js +18 -0
- package/dest/spartan/utils/k8s.d.ts +126 -0
- package/dest/spartan/utils/k8s.d.ts.map +1 -0
- package/dest/spartan/utils/k8s.js +375 -0
- package/dest/spartan/utils/nodes.d.ts +41 -0
- package/dest/spartan/utils/nodes.d.ts.map +1 -0
- package/dest/spartan/utils/nodes.js +461 -0
- package/dest/spartan/utils/scripts.d.ts +16 -0
- package/dest/spartan/utils/scripts.d.ts.map +1 -0
- package/dest/spartan/utils/scripts.js +66 -0
- package/dest/spartan/utils.d.ts +2 -253
- package/dest/spartan/utils.d.ts.map +1 -1
- package/dest/spartan/utils.js +1 -892
- package/package.json +40 -39
- package/src/bench/client_flows/benchmark.ts +24 -2
- package/src/bench/client_flows/client_flows_benchmark.ts +137 -203
- package/src/bench/utils.ts +9 -7
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +104 -142
- package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +99 -106
- package/src/e2e_deploy_contract/deploy_test.ts +21 -14
- package/src/e2e_epochs/epochs_test.ts +59 -33
- package/src/e2e_fees/bridging_race.notest.ts +3 -9
- package/src/e2e_fees/fees_test.ts +171 -217
- package/src/e2e_l1_publisher/write_json.ts +16 -13
- package/src/e2e_nested_contract/nested_contract_test.ts +33 -56
- package/src/e2e_p2p/inactivity_slash_test.ts +5 -5
- package/src/e2e_p2p/p2p_network.ts +171 -167
- package/src/e2e_p2p/reqresp/utils.ts +207 -0
- package/src/e2e_p2p/shared.ts +20 -22
- package/src/e2e_token_contract/token_contract_test.ts +103 -118
- package/src/fixtures/e2e_prover_test.ts +99 -133
- package/src/fixtures/setup.ts +1017 -0
- package/src/fixtures/setup_p2p_test.ts +15 -20
- package/src/fixtures/token_utils.ts +6 -5
- package/src/fixtures/utils.ts +27 -901
- package/src/quality_of_service/prometheus_client.ts +113 -0
- package/src/shared/cross_chain_test_harness.ts +13 -27
- package/src/shared/gas_portal_test_harness.ts +1 -1
- package/src/shared/submit-transactions.ts +9 -15
- package/src/shared/uniswap_l1_l2.ts +12 -19
- package/src/simulators/lending_simulator.ts +2 -2
- package/src/spartan/setup_test_wallets.ts +72 -24
- package/src/spartan/tx_metrics.ts +255 -9
- package/src/spartan/utils/bot.ts +185 -0
- package/src/spartan/utils/chaos.ts +253 -0
- package/src/spartan/utils/clients.ts +100 -0
- package/src/spartan/utils/config.ts +26 -0
- package/src/spartan/utils/health.ts +255 -0
- package/src/spartan/utils/helm.ts +84 -0
- package/src/spartan/utils/index.ts +64 -0
- package/src/spartan/utils/k8s.ts +527 -0
- package/src/spartan/utils/nodes.ts +538 -0
- package/src/spartan/utils/scripts.ts +63 -0
- package/src/spartan/utils.ts +1 -1158
- package/dest/fixtures/snapshot_manager.d.ts +0 -93
- package/dest/fixtures/snapshot_manager.d.ts.map +0 -1
- package/dest/fixtures/snapshot_manager.js +0 -488
- package/src/fixtures/snapshot_manager.ts +0 -646
|
@@ -8,7 +8,9 @@ import { ChainMonitor, type Delayer } from '@aztec/ethereum/test';
|
|
|
8
8
|
import type { ExtendedViemWalletClient } from '@aztec/ethereum/types';
|
|
9
9
|
import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
10
10
|
import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
|
|
11
|
+
import { TestContract } from '@aztec/noir-test-contracts.js/Test';
|
|
11
12
|
import { ProverNode, type ProverNodeConfig } from '@aztec/prover-node';
|
|
13
|
+
import type { PXEConfig } from '@aztec/pxe/config';
|
|
12
14
|
import { type SequencerClient, type SequencerEvents } from '@aztec/sequencer-client';
|
|
13
15
|
import { type BlockParameter, EthAddress } from '@aztec/stdlib/block';
|
|
14
16
|
import { type L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
|
|
@@ -19,6 +21,8 @@ export declare const ARCHIVER_POLL_INTERVAL = 50;
|
|
|
19
21
|
export declare const DEFAULT_L1_BLOCK_TIME: number;
|
|
20
22
|
export type EpochsTestOpts = Partial<SetupOptions> & {
|
|
21
23
|
numberOfAccounts?: number;
|
|
24
|
+
pxeOpts?: Partial<PXEConfig>;
|
|
25
|
+
aztecSlotDurationInL1Slots?: number;
|
|
22
26
|
};
|
|
23
27
|
export type TrackedSequencerEvent = {
|
|
24
28
|
[K in keyof SequencerEvents]: Parameters<SequencerEvents[K]>[0] & {
|
|
@@ -79,6 +83,8 @@ export declare class EpochsTestContext {
|
|
|
79
83
|
waitForNodeToSync(blockNumber: BlockNumber, type: 'proven' | 'finalized' | 'historic'): Promise<void>;
|
|
80
84
|
/** Registers the SpamContract on the given wallet. */
|
|
81
85
|
registerSpamContract(wallet: Wallet, salt?: Fr): Promise<SpamContract>;
|
|
86
|
+
/** Registers the TestContract on the given wallet. */
|
|
87
|
+
registerTestContract(wallet: Wallet, salt?: Fr): Promise<TestContract>;
|
|
82
88
|
/** Creates an L1 client using a fresh account with funds from anvil, with a tx delayer already set up. */
|
|
83
89
|
createL1Client(): Promise<{
|
|
84
90
|
client: ExtendedViemWalletClient;
|
|
@@ -91,4 +97,4 @@ export declare class EpochsTestContext {
|
|
|
91
97
|
stateChanges: TrackedSequencerEvent[];
|
|
92
98
|
};
|
|
93
99
|
}
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBvY2hzX3Rlc3QuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lMmVfZXBvY2hzL2Vwb2Noc190ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRzNFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHaEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQWtCLEtBQUssT0FBTyxFQUFxQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3JILE9BQU8sS0FBSyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBZSxNQUFNLGlDQUFpQyxDQUFDO0FBTTdGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLGdCQUFnQixFQUF1QixNQUFNLG9CQUFvQixDQUFDO0FBRTVGLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFDTCxLQUFLLGVBQWUsRUFDcEIsS0FBSyxlQUFlLEVBR3JCLE1BQU0seUJBQXlCLENBQUM7QUFFakMsT0FBTyxFQUFFLEtBQUssY0FBYyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RF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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"epochs_test.d.ts","sourceRoot":"","sources":["../../src/e2e_epochs/epochs_test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAG3E,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAkB,KAAK,OAAO,EAAqC,MAAM,sBAAsB,CAAC;AACrH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAe,MAAM,iCAAiC,CAAC;AAM7F,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAElE,OAAO,EAAE,UAAU,EAAE,KAAK,gBAAgB,EAAuB,MAAM,oBAAoB,CAAC;AAE5F,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,eAAe,EAGrB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,KAAK,cAAc,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,KAAK,iBAAiB,EAAuC,MAAM,6BAA6B,CAAC;AAO1G,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,YAAY,EAIlB,MAAM,sBAAsB,CAAC;AAE9B,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAC3C,eAAO,MAAM,gCAAgC,KAAK,CAAC;AACnD,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,qBAAqB,QAA0B,CAAC;AAE7D,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG;
|
|
1
|
+
{"version":3,"file":"epochs_test.d.ts","sourceRoot":"","sources":["../../src/e2e_epochs/epochs_test.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,10 +11,11 @@ import { ChainMonitor, DelayedTxUtils, waitUntilL1Timestamp, withDelayer } from
|
|
|
11
11
|
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
12
12
|
import { SecretValue } from '@aztec/foundation/config';
|
|
13
13
|
import { randomBytes } from '@aztec/foundation/crypto/random';
|
|
14
|
-
import {
|
|
14
|
+
import { withLoggerBindings } from '@aztec/foundation/log/server';
|
|
15
15
|
import { retryUntil } from '@aztec/foundation/retry';
|
|
16
16
|
import { sleep } from '@aztec/foundation/sleep';
|
|
17
17
|
import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
|
|
18
|
+
import { TestContract } from '@aztec/noir-test-contracts.js/Test';
|
|
18
19
|
import { getMockPubSubP2PServiceFactory } from '@aztec/p2p/test-helpers';
|
|
19
20
|
import { SequencerState } from '@aztec/sequencer-client';
|
|
20
21
|
import { EthAddress } from '@aztec/stdlib/block';
|
|
@@ -54,7 +55,7 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
54
55
|
static getSlotDurations(opts = {}) {
|
|
55
56
|
const envEthereumSlotDuration = process.env.L1_BLOCK_TIME ? parseInt(process.env.L1_BLOCK_TIME) : DEFAULT_L1_BLOCK_TIME;
|
|
56
57
|
const ethereumSlotDuration = opts.ethereumSlotDuration ?? envEthereumSlotDuration;
|
|
57
|
-
const aztecSlotDuration = opts.aztecSlotDuration ??
|
|
58
|
+
const aztecSlotDuration = opts.aztecSlotDuration ?? (opts.aztecSlotDurationInL1Slots ?? 2) * ethereumSlotDuration;
|
|
58
59
|
const aztecEpochDuration = opts.aztecEpochDuration ?? 6;
|
|
59
60
|
const aztecProofSubmissionEpochs = opts.aztecProofSubmissionEpochs ?? 1;
|
|
60
61
|
const l1PublishingTime = opts.l1PublishingTime ?? 1;
|
|
@@ -95,6 +96,11 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
95
96
|
slasherFlavor: 'none',
|
|
96
97
|
l1PublishingTime,
|
|
97
98
|
...opts
|
|
99
|
+
}, // Use checkpointed chain tip for PXE by default to avoid issues with blocks being dropped due to pruned anchor blocks.
|
|
100
|
+
// Can be overridden via opts.pxeOpts.
|
|
101
|
+
{
|
|
102
|
+
syncChainTip: 'checkpointed',
|
|
103
|
+
...opts.pxeOpts
|
|
98
104
|
});
|
|
99
105
|
this.context = context;
|
|
100
106
|
this.proverNodes = context.proverNode ? [
|
|
@@ -139,15 +145,17 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
139
145
|
async createProverNode(opts = {}) {
|
|
140
146
|
this.logger.warn('Creating and syncing a simulated prover node...');
|
|
141
147
|
const proverNodePrivateKey = this.getNextPrivateKey();
|
|
142
|
-
const
|
|
143
|
-
const proverNode = await
|
|
148
|
+
const proverIndex = this.proverNodes.length + 1;
|
|
149
|
+
const proverNode = await withLoggerBindings({
|
|
150
|
+
actor: `prover-${proverIndex}`
|
|
151
|
+
}, ()=>createAndSyncProverNode(proverNodePrivateKey, {
|
|
144
152
|
...this.context.config
|
|
145
153
|
}, {
|
|
146
154
|
dataDirectory: join(this.context.config.dataDirectory, randomBytes(8).toString('hex')),
|
|
147
|
-
proverId: EthAddress.fromNumber(
|
|
155
|
+
proverId: EthAddress.fromNumber(proverIndex),
|
|
148
156
|
dontStart: opts.dontStart,
|
|
149
157
|
...opts
|
|
150
|
-
}, this.context.aztecNode,
|
|
158
|
+
}, this.context.aztecNode, this.context.prefilledPublicData ?? [], {
|
|
151
159
|
dateProvider: this.context.dateProvider
|
|
152
160
|
}));
|
|
153
161
|
this.proverNodes.push(proverNode);
|
|
@@ -169,7 +177,8 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
169
177
|
});
|
|
170
178
|
}
|
|
171
179
|
async createNode(opts = {}) {
|
|
172
|
-
const
|
|
180
|
+
const nodeIndex = this.nodes.length + 1;
|
|
181
|
+
const actorPrefix = opts.disableValidator ? 'node' : 'validator';
|
|
173
182
|
const { mockGossipSubNetwork } = this.context;
|
|
174
183
|
const resolvedConfig = {
|
|
175
184
|
...this.context.config,
|
|
@@ -177,7 +186,9 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
177
186
|
};
|
|
178
187
|
const p2pEnabled = resolvedConfig.p2pEnabled || mockGossipSubNetwork !== undefined;
|
|
179
188
|
const p2pIp = resolvedConfig.p2pIp ?? (p2pEnabled ? '127.0.0.1' : undefined);
|
|
180
|
-
const node = await
|
|
189
|
+
const node = await withLoggerBindings({
|
|
190
|
+
actor: `${actorPrefix}-${nodeIndex}`
|
|
191
|
+
}, ()=>AztecNodeService.createAndSync({
|
|
181
192
|
...resolvedConfig,
|
|
182
193
|
dataDirectory: join(this.context.config.dataDirectory, randomBytes(8).toString('hex')),
|
|
183
194
|
validatorPrivateKeys: opts.validatorPrivateKeys ?? new SecretValue([]),
|
|
@@ -270,6 +281,17 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
270
281
|
await wallet.registerContract(instance, SpamContract.artifact);
|
|
271
282
|
return SpamContract.at(instance.address, wallet);
|
|
272
283
|
}
|
|
284
|
+
/** Registers the TestContract on the given wallet. */ async registerTestContract(wallet, salt = Fr.ZERO) {
|
|
285
|
+
const instance = await getContractInstanceFromInstantiationParams(TestContract.artifact, {
|
|
286
|
+
constructorArgs: [],
|
|
287
|
+
constructorArtifact: undefined,
|
|
288
|
+
salt,
|
|
289
|
+
publicKeys: undefined,
|
|
290
|
+
deployer: undefined
|
|
291
|
+
});
|
|
292
|
+
await wallet.registerContract(instance, TestContract.artifact);
|
|
293
|
+
return TestContract.at(instance.address, wallet);
|
|
294
|
+
}
|
|
273
295
|
/** Creates an L1 client using a fresh account with funds from anvil, with a tx delayer already set up. */ async createL1Client() {
|
|
274
296
|
const { client, delayer } = withDelayer(createExtendedL1Client([
|
|
275
297
|
...this.l1Client.chain.rpcUrls.default.http
|
|
@@ -16,10 +16,8 @@ describe('e2e_fees bridging_race', ()=>{
|
|
|
16
16
|
minTxsPerBlock: 0
|
|
17
17
|
});
|
|
18
18
|
beforeAll(async ()=>{
|
|
19
|
-
await t.
|
|
20
|
-
|
|
21
|
-
await t.applySetupFeeJuiceSnapshot();
|
|
22
|
-
({ wallet, logger } = await t.setup());
|
|
19
|
+
await t.setup();
|
|
20
|
+
({ wallet, logger } = t);
|
|
23
21
|
});
|
|
24
22
|
afterAll(async ()=>{
|
|
25
23
|
await t.teardown();
|
|
@@ -56,7 +54,7 @@ describe('e2e_fees bridging_race', ()=>{
|
|
|
56
54
|
const { claimSecret: secret, messageLeafIndex: index } = claim;
|
|
57
55
|
await t.feeJuiceContract.methods.claim(bobsAddress, claim.claimAmount, secret, index).send({
|
|
58
56
|
from: bobsAddress
|
|
59
|
-
})
|
|
57
|
+
});
|
|
60
58
|
const [balance] = await t.getGasBalanceFn(bobsAddress);
|
|
61
59
|
expect(balance).toEqual(claim.claimAmount);
|
|
62
60
|
});
|
|
@@ -16,11 +16,11 @@ import { CounterContract } from '@aztec/noir-test-contracts.js/Counter';
|
|
|
16
16
|
import { GasSettings } from '@aztec/stdlib/gas';
|
|
17
17
|
import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
|
|
18
18
|
import { TestWallet } from '@aztec/test-wallet/server';
|
|
19
|
-
import { type
|
|
20
|
-
import { type BalancesFn
|
|
19
|
+
import { type EndToEndContext, type SetupOptions } from '../fixtures/setup.js';
|
|
20
|
+
import { type BalancesFn } from '../fixtures/utils.js';
|
|
21
21
|
import { type GasBridgingTestHarness } from '../shared/gas_portal_test_harness.js';
|
|
22
22
|
/**
|
|
23
|
-
* Test fixture for testing fees. Provides the following
|
|
23
|
+
* Test fixture for testing fees. Provides the following setup steps:
|
|
24
24
|
* InitialAccounts: Initializes 3 Schnorr account contracts.
|
|
25
25
|
* PublicDeployAccounts: Deploys the accounts publicly.
|
|
26
26
|
* DeployFeeJuice: Deploys the Fee Juice contract.
|
|
@@ -31,8 +31,9 @@ import { type GasBridgingTestHarness } from '../shared/gas_portal_test_harness.j
|
|
|
31
31
|
*/
|
|
32
32
|
export declare class FeesTest {
|
|
33
33
|
private numberOfAccounts;
|
|
34
|
-
private
|
|
34
|
+
private setupOptions;
|
|
35
35
|
private accounts;
|
|
36
|
+
context: EndToEndContext;
|
|
36
37
|
logger: Logger;
|
|
37
38
|
aztecNode: AztecNode;
|
|
38
39
|
aztecNodeAdmin: AztecNodeAdmin;
|
|
@@ -52,7 +53,6 @@ export declare class FeesTest {
|
|
|
52
53
|
counterContract: CounterContract;
|
|
53
54
|
subscriptionContract: AppSubscriptionContract;
|
|
54
55
|
feeJuiceBridgeTestHarness: GasBridgingTestHarness;
|
|
55
|
-
context: SubsystemsContext;
|
|
56
56
|
chainMonitor: ChainMonitor;
|
|
57
57
|
getCoinbaseBalance: () => Promise<bigint>;
|
|
58
58
|
getCoinbaseSequencerRewards: () => Promise<bigint>;
|
|
@@ -75,14 +75,14 @@ export declare class FeesTest {
|
|
|
75
75
|
mintAndBridgeFeeJuice(minter: AztecAddress, recipient: AztecAddress): Promise<void>;
|
|
76
76
|
/** Alice mints bananaCoin tokens privately to the target address and redeems them. */
|
|
77
77
|
mintPrivateBananas(amount: bigint, address: AztecAddress): Promise<void>;
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
78
|
+
applyBaseSetup(): Promise<void>;
|
|
79
|
+
applyInitialAccounts(): Promise<void>;
|
|
80
|
+
applyPublicDeployAccounts(): Promise<void>;
|
|
81
|
+
applySetupFeeJuice(): Promise<void>;
|
|
82
|
+
applyDeployBananaToken(): Promise<void>;
|
|
83
|
+
applyFPCSetup(): Promise<void>;
|
|
84
|
+
applySponsoredFPCSetup(): Promise<void>;
|
|
85
85
|
applyFundAliceWithBananas(): Promise<void>;
|
|
86
86
|
applyFundAliceWithPrivateBananas(): Promise<void>;
|
|
87
87
|
}
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlc190ZXN0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZTJlX2ZlZXMvZmVlc190ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDNUYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHM0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDbkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxhQUFhLElBQUksVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBR3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fees_test.d.ts","sourceRoot":"","sources":["../../src/e2e_fees/fees_test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,aAAa,IAAI,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAGxE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAKvD,OAAO,
|
|
1
|
+
{"version":3,"file":"fees_test.d.ts","sourceRoot":"","sources":["../../src/e2e_fees/fees_test.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,13 +14,12 @@ import { getCanonicalFeeJuice } from '@aztec/protocol-contracts/fee-juice';
|
|
|
14
14
|
import { GasSettings } from '@aztec/stdlib/gas';
|
|
15
15
|
import { getContract } from 'viem';
|
|
16
16
|
import { MNEMONIC } from '../fixtures/fixtures.js';
|
|
17
|
-
import {
|
|
17
|
+
import { deployAccounts, publicDeployAccounts, setup, teardown } from '../fixtures/setup.js';
|
|
18
18
|
import { mintTokensToPrivate } from '../fixtures/token_utils.js';
|
|
19
|
-
import {
|
|
19
|
+
import { getBalancesFn, setupSponsoredFPC } from '../fixtures/utils.js';
|
|
20
20
|
import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_harness.js';
|
|
21
|
-
const { E2E_DATA_PATH: dataPath } = process.env;
|
|
22
21
|
/**
|
|
23
|
-
* Test fixture for testing fees. Provides the following
|
|
22
|
+
* Test fixture for testing fees. Provides the following setup steps:
|
|
24
23
|
* InitialAccounts: Initializes 3 Schnorr account contracts.
|
|
25
24
|
* PublicDeployAccounts: Deploys the accounts publicly.
|
|
26
25
|
* DeployFeeJuice: Deploys the Fee Juice contract.
|
|
@@ -30,8 +29,9 @@ const { E2E_DATA_PATH: dataPath } = process.env;
|
|
|
30
29
|
* SetupSubscription: Deploys a counter contract and a subscription contract, and mints Fee Juice to the subscription contract.
|
|
31
30
|
*/ export class FeesTest {
|
|
32
31
|
numberOfAccounts;
|
|
33
|
-
|
|
32
|
+
setupOptions;
|
|
34
33
|
accounts;
|
|
34
|
+
context;
|
|
35
35
|
logger;
|
|
36
36
|
aztecNode;
|
|
37
37
|
aztecNodeAdmin;
|
|
@@ -51,7 +51,6 @@ const { E2E_DATA_PATH: dataPath } = process.env;
|
|
|
51
51
|
counterContract;
|
|
52
52
|
subscriptionContract;
|
|
53
53
|
feeJuiceBridgeTestHarness;
|
|
54
|
-
context;
|
|
55
54
|
chainMonitor;
|
|
56
55
|
getCoinbaseBalance;
|
|
57
56
|
getCoinbaseSequencerRewards;
|
|
@@ -64,6 +63,7 @@ const { E2E_DATA_PATH: dataPath } = process.env;
|
|
|
64
63
|
APP_SPONSORED_TX_GAS_LIMIT;
|
|
65
64
|
constructor(testName, numberOfAccounts = 3, setupOptions = {}){
|
|
66
65
|
this.numberOfAccounts = numberOfAccounts;
|
|
66
|
+
this.setupOptions = setupOptions;
|
|
67
67
|
this.accounts = [];
|
|
68
68
|
this.ALICE_INITIAL_BANANAS = BigInt(1e22);
|
|
69
69
|
this.SUBSCRIPTION_AMOUNT = BigInt(1e19);
|
|
@@ -74,22 +74,26 @@ const { E2E_DATA_PATH: dataPath } = process.env;
|
|
|
74
74
|
setupOptions.coinbase ??= EthAddress.random();
|
|
75
75
|
this.coinbase = setupOptions.coinbase;
|
|
76
76
|
this.logger = createLogger(`e2e:e2e_fees:${testName}`);
|
|
77
|
-
this.snapshotManager = createSnapshotManager(`e2e_fees/${testName}-${numberOfAccounts}`, dataPath, {
|
|
78
|
-
startProverNode: true,
|
|
79
|
-
...setupOptions
|
|
80
|
-
}, {
|
|
81
|
-
...setupOptions
|
|
82
|
-
});
|
|
83
77
|
}
|
|
84
78
|
async setup() {
|
|
85
|
-
|
|
86
|
-
this.
|
|
87
|
-
|
|
79
|
+
this.logger.verbose('Setting up fresh context...');
|
|
80
|
+
this.context = await setup(0, {
|
|
81
|
+
startProverNode: true,
|
|
82
|
+
...this.setupOptions,
|
|
83
|
+
fundSponsoredFPC: true,
|
|
84
|
+
skipAccountDeployment: true,
|
|
85
|
+
l1ContractsArgs: {
|
|
86
|
+
...this.setupOptions
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
this.rollupContract = RollupContract.getFromConfig(this.context.config);
|
|
90
|
+
this.chainMonitor = new ChainMonitor(this.rollupContract, this.context.dateProvider, this.logger, 200).start();
|
|
91
|
+
await this.applyBaseSetup();
|
|
88
92
|
return this;
|
|
89
93
|
}
|
|
90
94
|
async teardown() {
|
|
91
95
|
await this.chainMonitor.stop();
|
|
92
|
-
await this.
|
|
96
|
+
await teardown(this.context);
|
|
93
97
|
}
|
|
94
98
|
setIsMarkingAsProven(b) {
|
|
95
99
|
this.context.watcher.setIsMarkingAsProven(b);
|
|
@@ -117,7 +121,7 @@ const { E2E_DATA_PATH: dataPath } = process.env;
|
|
|
117
121
|
const { claimSecret: secret, messageLeafIndex: index } = claim;
|
|
118
122
|
await this.feeJuiceContract.methods.claim(recipient, claim.claimAmount, secret, index).send({
|
|
119
123
|
from: minter
|
|
120
|
-
})
|
|
124
|
+
});
|
|
121
125
|
}
|
|
122
126
|
/** Alice mints bananaCoin tokens privately to the target address and redeems them. */ async mintPrivateBananas(amount, address) {
|
|
123
127
|
const balanceBefore = await this.bananaCoin.methods.balance_of_private(address).simulate({
|
|
@@ -129,138 +133,116 @@ const { E2E_DATA_PATH: dataPath } = process.env;
|
|
|
129
133
|
});
|
|
130
134
|
expect(balanceAfter).toEqual(balanceBefore + amount);
|
|
131
135
|
}
|
|
132
|
-
async
|
|
133
|
-
await this.
|
|
134
|
-
await this.
|
|
135
|
-
await this.
|
|
136
|
-
await this.
|
|
137
|
-
}
|
|
138
|
-
async
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
this.
|
|
142
|
-
this.
|
|
143
|
-
this.gasSettings = GasSettings.default({
|
|
144
|
-
maxFeesPerGas: (await this.aztecNode.getCurrentMinFees()).mul(2)
|
|
145
|
-
});
|
|
146
|
-
this.cheatCodes = cheatCodes;
|
|
147
|
-
this.accounts = deployedAccounts.map((a)=>a.address);
|
|
148
|
-
this.accounts.forEach((a, i)=>this.logger.verbose(`Account ${i} address: ${a}`));
|
|
149
|
-
[this.aliceAddress, this.bobAddress, this.sequencerAddress] = this.accounts.slice(0, 3);
|
|
150
|
-
// We set Alice as the FPC admin to avoid the need for deployment of another account.
|
|
151
|
-
this.fpcAdmin = this.aliceAddress;
|
|
152
|
-
const canonicalFeeJuice = await getCanonicalFeeJuice();
|
|
153
|
-
this.feeJuiceContract = FeeJuiceContract.at(canonicalFeeJuice.address, this.wallet);
|
|
136
|
+
async applyBaseSetup() {
|
|
137
|
+
await this.applyInitialAccounts();
|
|
138
|
+
await this.applyPublicDeployAccounts();
|
|
139
|
+
await this.applySetupFeeJuice();
|
|
140
|
+
await this.applyDeployBananaToken();
|
|
141
|
+
}
|
|
142
|
+
async applyInitialAccounts() {
|
|
143
|
+
this.logger.info('Applying initial accounts setup');
|
|
144
|
+
const { deployedAccounts } = await deployAccounts(this.numberOfAccounts, this.logger)({
|
|
145
|
+
wallet: this.context.wallet,
|
|
146
|
+
initialFundedAccounts: this.context.initialFundedAccounts
|
|
154
147
|
});
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
await this.snapshotManager.snapshot('setup_fee_juice', async ()=>{}, async (_data, context)=>{
|
|
161
|
-
this.context = context;
|
|
162
|
-
this.feeJuiceContract = FeeJuiceContract.at(ProtocolContractAddress.FeeJuice, this.wallet);
|
|
163
|
-
this.getGasBalanceFn = getBalancesFn('⛽', this.feeJuiceContract.methods.balance_of_public, this.aliceAddress, this.logger);
|
|
164
|
-
this.feeJuiceBridgeTestHarness = await FeeJuicePortalTestingHarnessFactory.create({
|
|
165
|
-
aztecNode: context.aztecNode,
|
|
166
|
-
aztecNodeAdmin: context.aztecNode,
|
|
167
|
-
l1Client: context.deployL1ContractsValues.l1Client,
|
|
168
|
-
wallet: this.wallet,
|
|
169
|
-
logger: this.logger
|
|
170
|
-
});
|
|
148
|
+
this.wallet = this.context.wallet;
|
|
149
|
+
this.aztecNode = this.context.aztecNodeService;
|
|
150
|
+
this.aztecNodeAdmin = this.context.aztecNodeService;
|
|
151
|
+
this.gasSettings = GasSettings.default({
|
|
152
|
+
maxFeesPerGas: (await this.aztecNode.getCurrentMinFees()).mul(2)
|
|
171
153
|
});
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
154
|
+
this.cheatCodes = this.context.cheatCodes;
|
|
155
|
+
this.accounts = deployedAccounts.map((a)=>a.address);
|
|
156
|
+
this.accounts.forEach((a, i)=>this.logger.verbose(`Account ${i} address: ${a}`));
|
|
157
|
+
[this.aliceAddress, this.bobAddress, this.sequencerAddress] = this.accounts.slice(0, 3);
|
|
158
|
+
// We set Alice as the FPC admin to avoid the need for deployment of another account.
|
|
159
|
+
this.fpcAdmin = this.aliceAddress;
|
|
160
|
+
const canonicalFeeJuice = await getCanonicalFeeJuice();
|
|
161
|
+
this.feeJuiceContract = FeeJuiceContract.at(canonicalFeeJuice.address, this.wallet);
|
|
162
|
+
}
|
|
163
|
+
async applyPublicDeployAccounts() {
|
|
164
|
+
this.logger.info('Applying public deploy accounts setup');
|
|
165
|
+
await publicDeployAccounts(this.wallet, this.accounts);
|
|
166
|
+
}
|
|
167
|
+
async applySetupFeeJuice() {
|
|
168
|
+
this.logger.info('Applying fee juice setup');
|
|
169
|
+
this.feeJuiceContract = FeeJuiceContract.at(ProtocolContractAddress.FeeJuice, this.wallet);
|
|
170
|
+
this.getGasBalanceFn = getBalancesFn('⛽', this.feeJuiceContract.methods.balance_of_public, this.aliceAddress, this.logger);
|
|
171
|
+
this.feeJuiceBridgeTestHarness = await FeeJuicePortalTestingHarnessFactory.create({
|
|
172
|
+
aztecNode: this.context.aztecNodeService,
|
|
173
|
+
aztecNodeAdmin: this.context.aztecNodeService,
|
|
174
|
+
l1Client: this.context.deployL1ContractsValues.l1Client,
|
|
175
|
+
wallet: this.wallet,
|
|
176
|
+
logger: this.logger
|
|
188
177
|
});
|
|
189
178
|
}
|
|
190
|
-
async
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
const bananaCoin = this.bananaCoin;
|
|
195
|
-
const bananaFPC = await FPCContract.deploy(this.wallet, bananaCoin.address, this.fpcAdmin).send({
|
|
196
|
-
from: this.aliceAddress
|
|
197
|
-
}).deployed();
|
|
198
|
-
this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
|
|
199
|
-
await this.feeJuiceBridgeTestHarness.bridgeFromL1ToL2(bananaFPC.address, this.aliceAddress);
|
|
200
|
-
return {
|
|
201
|
-
bananaFPCAddress: bananaFPC.address,
|
|
202
|
-
feeJuiceAddress: feeJuiceContract.address,
|
|
203
|
-
l1FeeJuiceAddress: this.feeJuiceBridgeTestHarness.l1FeeJuiceAddress,
|
|
204
|
-
rollupAddress: context.deployL1ContractsValues.l1ContractAddresses.rollupAddress
|
|
205
|
-
};
|
|
206
|
-
}, (data, context)=>{
|
|
207
|
-
const bananaFPC = FPCContract.at(data.bananaFPCAddress, this.wallet);
|
|
208
|
-
this.bananaFPC = bananaFPC;
|
|
209
|
-
this.getCoinbaseBalance = async ()=>{
|
|
210
|
-
const l1Client = createExtendedL1Client(context.aztecNodeConfig.l1RpcUrls, MNEMONIC);
|
|
211
|
-
const gasL1 = getContract({
|
|
212
|
-
address: data.l1FeeJuiceAddress.toString(),
|
|
213
|
-
abi: TestERC20Abi,
|
|
214
|
-
client: l1Client
|
|
215
|
-
});
|
|
216
|
-
return await gasL1.read.balanceOf([
|
|
217
|
-
this.coinbase.toString()
|
|
218
|
-
]);
|
|
219
|
-
};
|
|
220
|
-
this.getCoinbaseSequencerRewards = async ()=>{
|
|
221
|
-
return await this.rollupContract.getSequencerRewards(this.coinbase);
|
|
222
|
-
};
|
|
223
|
-
this.getProverFee = async (blockNumber)=>{
|
|
224
|
-
const block = await this.aztecNode.getBlock(blockNumber);
|
|
225
|
-
// @todo @lherskind As we deal with #13601
|
|
226
|
-
// Right now the value is from `FeeLib.sol`
|
|
227
|
-
const L1_GAS_PER_EPOCH_VERIFIED = 1000000n;
|
|
228
|
-
// We round up
|
|
229
|
-
const mulDiv = (a, b, c)=>a * b / c + (a * b % c > 0n ? 1n : 0n);
|
|
230
|
-
const { baseFee } = await this.rollupContract.getL1FeesAt(block.header.globalVariables.timestamp);
|
|
231
|
-
const proverCost = mulDiv(mulDiv(L1_GAS_PER_EPOCH_VERIFIED, baseFee, BigInt(await this.rollupContract.getEpochDuration())), 1n, await this.rollupContract.getManaTarget()) + await this.rollupContract.getProvingCostPerMana();
|
|
232
|
-
const price = await this.rollupContract.getFeeAssetPerEth();
|
|
233
|
-
const mana = block.header.totalManaUsed.toBigInt();
|
|
234
|
-
return mulDiv(mana * proverCost, price, 10n ** 9n);
|
|
235
|
-
};
|
|
236
|
-
return Promise.resolve();
|
|
179
|
+
async applyDeployBananaToken() {
|
|
180
|
+
this.logger.info('Applying deploy banana token setup');
|
|
181
|
+
const bananaCoin = await BananaCoin.deploy(this.wallet, this.aliceAddress, 'BC', 'BC', 18n).send({
|
|
182
|
+
from: this.aliceAddress
|
|
237
183
|
});
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
return Promise.resolve();
|
|
184
|
+
this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
|
|
185
|
+
this.bananaCoin = bananaCoin;
|
|
186
|
+
this.getBananaPublicBalanceFn = getBalancesFn('🍌.public', this.bananaCoin.methods.balance_of_public, this.aliceAddress, this.logger);
|
|
187
|
+
this.getBananaPrivateBalanceFn = getBalancesFn('🍌.private', this.bananaCoin.methods.balance_of_private, this.aliceAddress, this.logger);
|
|
188
|
+
}
|
|
189
|
+
async applyFPCSetup() {
|
|
190
|
+
this.logger.info('Applying FPC setup');
|
|
191
|
+
const feeJuiceContract = this.feeJuiceBridgeTestHarness.feeJuice;
|
|
192
|
+
expect((await this.wallet.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
|
|
193
|
+
const bananaCoin = this.bananaCoin;
|
|
194
|
+
const bananaFPC = await FPCContract.deploy(this.wallet, bananaCoin.address, this.fpcAdmin).send({
|
|
195
|
+
from: this.aliceAddress
|
|
251
196
|
});
|
|
197
|
+
this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
|
|
198
|
+
await this.feeJuiceBridgeTestHarness.bridgeFromL1ToL2(bananaFPC.address, this.aliceAddress);
|
|
199
|
+
this.bananaFPC = bananaFPC;
|
|
200
|
+
const l1FeeJuiceAddress = this.feeJuiceBridgeTestHarness.l1FeeJuiceAddress;
|
|
201
|
+
this.getCoinbaseBalance = async ()=>{
|
|
202
|
+
const l1Client = createExtendedL1Client(this.context.config.l1RpcUrls, MNEMONIC);
|
|
203
|
+
const gasL1 = getContract({
|
|
204
|
+
address: l1FeeJuiceAddress.toString(),
|
|
205
|
+
abi: TestERC20Abi,
|
|
206
|
+
client: l1Client
|
|
207
|
+
});
|
|
208
|
+
return await gasL1.read.balanceOf([
|
|
209
|
+
this.coinbase.toString()
|
|
210
|
+
]);
|
|
211
|
+
};
|
|
212
|
+
this.getCoinbaseSequencerRewards = async ()=>{
|
|
213
|
+
return await this.rollupContract.getSequencerRewards(this.coinbase);
|
|
214
|
+
};
|
|
215
|
+
this.getProverFee = async (blockNumber)=>{
|
|
216
|
+
const block = await this.aztecNode.getBlock(blockNumber);
|
|
217
|
+
// @todo @lherskind As we deal with #13601
|
|
218
|
+
// Right now the value is from `FeeLib.sol`
|
|
219
|
+
const L1_GAS_PER_EPOCH_VERIFIED = 1000000n;
|
|
220
|
+
// We round up
|
|
221
|
+
const mulDiv = (a, b, c)=>a * b / c + (a * b % c > 0n ? 1n : 0n);
|
|
222
|
+
const { baseFee } = await this.rollupContract.getL1FeesAt(block.header.globalVariables.timestamp);
|
|
223
|
+
const proverCost = mulDiv(mulDiv(L1_GAS_PER_EPOCH_VERIFIED, baseFee, BigInt(await this.rollupContract.getEpochDuration())), 1n, await this.rollupContract.getManaTarget()) + await this.rollupContract.getProvingCostPerMana();
|
|
224
|
+
const price = await this.rollupContract.getEthPerFeeAsset();
|
|
225
|
+
const mana = block.header.totalManaUsed.toBigInt();
|
|
226
|
+
return mulDiv(mana * proverCost, 10n ** 12n, price);
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
async applySponsoredFPCSetup() {
|
|
230
|
+
this.logger.info('Applying sponsored FPC setup');
|
|
231
|
+
const feeJuiceContract = this.feeJuiceBridgeTestHarness.feeJuice;
|
|
232
|
+
expect((await this.wallet.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
|
|
233
|
+
const sponsoredFPCInstance = await setupSponsoredFPC(this.wallet);
|
|
234
|
+
this.logger.info(`SponsoredFPC at ${sponsoredFPCInstance.address}`);
|
|
235
|
+
this.sponsoredFPC = SponsoredFPCContract.at(sponsoredFPCInstance.address, this.wallet);
|
|
252
236
|
}
|
|
253
237
|
async applyFundAliceWithBananas() {
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
}, ()=>Promise.resolve());
|
|
238
|
+
this.logger.info('Applying fund Alice with bananas setup');
|
|
239
|
+
await this.mintPrivateBananas(this.ALICE_INITIAL_BANANAS, this.aliceAddress);
|
|
240
|
+
await this.bananaCoin.methods.mint_to_public(this.aliceAddress, this.ALICE_INITIAL_BANANAS).send({
|
|
241
|
+
from: this.aliceAddress
|
|
242
|
+
});
|
|
260
243
|
}
|
|
261
244
|
async applyFundAliceWithPrivateBananas() {
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
}, ()=>Promise.resolve());
|
|
245
|
+
this.logger.info('Applying fund Alice with private bananas setup');
|
|
246
|
+
await this.mintPrivateBananas(this.ALICE_INITIAL_BANANAS, this.aliceAddress);
|
|
265
247
|
}
|
|
266
248
|
}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
2
|
-
import type { L2Block } from '@aztec/aztec.js/block';
|
|
3
2
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
4
3
|
import { BatchedBlob, Blob } from '@aztec/blob-lib';
|
|
4
|
+
import { L2Block } from '@aztec/stdlib/block';
|
|
5
|
+
import { CheckpointHeader } from '@aztec/stdlib/rollup';
|
|
5
6
|
/**
|
|
6
7
|
* Creates a json object that can be used to test the solidity contract.
|
|
7
8
|
* The json object must be put into
|
|
8
9
|
*/
|
|
9
|
-
export declare function writeJson(fileName: string, block: L2Block, l1ToL2Content: Fr[], blobs: Blob[], batchedBlob: BatchedBlob, recipientAddress: AztecAddress, deployerAddress: `0x${string}`): Promise<void>;
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
export declare function writeJson(fileName: string, checkpointHeader: CheckpointHeader, block: L2Block, l1ToL2Content: Fr[], blobs: Blob[], batchedBlob: BatchedBlob, recipientAddress: AztecAddress, deployerAddress: `0x${string}`): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGVfanNvbi5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2UyZV9sMV9wdWJsaXNoZXIvd3JpdGVfanNvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUE2RCxNQUFNLGlCQUFpQixDQUFDO0FBRS9HLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQU14RDs7O0dBR0c7QUFDSCx3QkFBc0IsU0FBUyxDQUM3QixRQUFRLEVBQUUsTUFBTSxFQUNoQixnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFDbEMsS0FBSyxFQUFFLE9BQU8sRUFDZCxhQUFhLEVBQUUsRUFBRSxFQUFFLEVBQ25CLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFDYixXQUFXLEVBQUUsV0FBVyxFQUN4QixnQkFBZ0IsRUFBRSxZQUFZLEVBQzlCLGVBQWUsRUFBRSxLQUFLLE1BQU0sRUFBRSxHQUM3QixPQUFPLENBQUMsSUFBSSxDQUFDLENBb0RmIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write_json.d.ts","sourceRoot":"","sources":["../../src/e2e_l1_publisher/write_json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,
|
|
1
|
+
{"version":3,"file":"write_json.d.ts","sourceRoot":"","sources":["../../src/e2e_l1_publisher/write_json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,IAAI,EAA6D,MAAM,iBAAiB,CAAC;AAE/G,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAMxD;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,gBAAgB,EAClC,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,EAAE,EAAE,EACnB,KAAK,EAAE,IAAI,EAAE,EACb,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,YAAY,EAC9B,eAAe,EAAE,KAAK,MAAM,EAAE,GAC7B,OAAO,CAAC,IAAI,CAAC,CAoDf"}
|