@aztec/end-to-end 1.0.0-nightly.20250708 → 1.0.0-nightly.20250710
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/bench/client_flows/client_flows_benchmark.js +1 -1
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +8 -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 +12 -9
- package/dest/e2e_deploy_contract/deploy_test.js +2 -2
- package/dest/e2e_epochs/epochs_test.js +2 -2
- package/dest/e2e_fees/fees_test.js +4 -4
- package/dest/e2e_p2p/shared.js +2 -2
- package/dest/fixtures/snapshot_manager.d.ts +2 -0
- package/dest/fixtures/snapshot_manager.d.ts.map +1 -1
- package/dest/fixtures/snapshot_manager.js +5 -3
- package/dest/fixtures/utils.d.ts +1 -1
- package/dest/fixtures/utils.d.ts.map +1 -1
- package/dest/fixtures/utils.js +13 -8
- package/dest/shared/uniswap_l1_l2.js +2 -2
- package/package.json +35 -35
- package/src/bench/client_flows/client_flows_benchmark.ts +1 -1
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +19 -9
- package/src/e2e_deploy_contract/deploy_test.ts +2 -2
- package/src/e2e_epochs/epochs_test.ts +2 -2
- package/src/e2e_fees/fees_test.ts +4 -4
- package/src/e2e_p2p/shared.ts +2 -2
- package/src/fixtures/snapshot_manager.ts +7 -3
- package/src/fixtures/utils.ts +13 -8
- package/src/shared/uniswap_l1_l2.ts +2 -2
|
@@ -212,7 +212,7 @@ export class ClientFlowsBenchmark {
|
|
|
212
212
|
async applyFPCSetupSnapshot() {
|
|
213
213
|
await this.snapshotManager.snapshot('fpc_setup', async (context)=>{
|
|
214
214
|
const feeJuiceContract = this.feeJuiceBridgeTestHarness.feeJuice;
|
|
215
|
-
expect((await context.pxe.getContractMetadata(feeJuiceContract.address)).
|
|
215
|
+
expect((await context.pxe.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
|
|
216
216
|
const bananaCoin = this.bananaCoin;
|
|
217
217
|
const bananaFPC = await FPCContract.deploy(this.adminWallet, bananaCoin.address, this.adminAddress).send().deployed();
|
|
218
218
|
this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import { type AccountWallet, AztecAddress, type CompleteAddress, Fr, type Logger, type PXE, type TxHash } from '@aztec/aztec.js';
|
|
1
|
+
import { type AccountWallet, AztecAddress, type AztecNode, type CompleteAddress, Fr, type Logger, type PXE, type TxHash } from '@aztec/aztec.js';
|
|
2
|
+
import type { CheatCodes } from '@aztec/aztec/testing';
|
|
2
3
|
import { TokenBlacklistContract } from '@aztec/noir-contracts.js/TokenBlacklist';
|
|
3
4
|
import { InvalidAccountContract } from '@aztec/noir-test-contracts.js/InvalidAccount';
|
|
5
|
+
import type { SequencerClient } from '@aztec/sequencer-client';
|
|
4
6
|
import { type SubsystemsContext } from '../fixtures/snapshot_manager.js';
|
|
5
7
|
import { TokenSimulator } from '../simulators/token_simulator.js';
|
|
6
8
|
export declare class Role {
|
|
@@ -17,7 +19,7 @@ export declare class Role {
|
|
|
17
19
|
};
|
|
18
20
|
}
|
|
19
21
|
export declare class BlacklistTokenContractTest {
|
|
20
|
-
static
|
|
22
|
+
static CHANGE_ROLES_DELAY: number;
|
|
21
23
|
private snapshotManager;
|
|
22
24
|
logger: Logger;
|
|
23
25
|
wallets: AccountWallet[];
|
|
@@ -26,11 +28,14 @@ export declare class BlacklistTokenContractTest {
|
|
|
26
28
|
asset: TokenBlacklistContract;
|
|
27
29
|
tokenSim: TokenSimulator;
|
|
28
30
|
badAccount: InvalidAccountContract;
|
|
31
|
+
cheatCodes: CheatCodes;
|
|
32
|
+
sequencer: SequencerClient;
|
|
33
|
+
aztecNode: AztecNode;
|
|
29
34
|
admin: AccountWallet;
|
|
30
35
|
other: AccountWallet;
|
|
31
36
|
blacklisted: AccountWallet;
|
|
32
37
|
constructor(testName: string);
|
|
33
|
-
|
|
38
|
+
crossTimestampOfChange(): Promise<void>;
|
|
34
39
|
/**
|
|
35
40
|
* Adds two state shifts to snapshot manager.
|
|
36
41
|
* 1. Add 3 accounts.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blacklist_token_contract_test.d.ts","sourceRoot":"","sources":["../../src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,aAAa,EAClB,YAAY,EACZ,KAAK,eAAe,EACpB,EAAE,EACF,KAAK,MAAM,EACX,KAAK,GAAG,EACR,KAAK,MAAM,EAGZ,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"blacklist_token_contract_test.d.ts","sourceRoot":"","sources":["../../src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,aAAa,EAClB,YAAY,EACZ,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,EAAE,EACF,KAAK,MAAM,EACX,KAAK,GAAG,EACR,KAAK,MAAM,EAGZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAI/D,OAAO,EAEL,KAAK,iBAAiB,EAIvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAIlE,qBAAa,IAAI;IACf,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAAS;IAE9B,SAAS;IAKT,UAAU;IAKV,eAAe;IAKf,YAAY;;;;;CAKb;AAED,qBAAa,0BAA0B;IAErC,MAAM,CAAC,kBAAkB,SAAS;IAElC,OAAO,CAAC,eAAe,CAAmB;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,aAAa,EAAE,CAAM;IAC9B,GAAG,EAAG,GAAG,CAAC;IACV,QAAQ,EAAE,eAAe,EAAE,CAAM;IACjC,KAAK,EAAG,sBAAsB,CAAC;IAC/B,QAAQ,EAAG,cAAc,CAAC;IAC1B,UAAU,EAAG,sBAAsB,CAAC;IACpC,UAAU,EAAG,UAAU,CAAC;IACxB,SAAS,EAAG,eAAe,CAAC;IAC5B,SAAS,EAAG,SAAS,CAAC;IAEtB,KAAK,EAAG,aAAa,CAAC;IACtB,KAAK,EAAG,aAAa,CAAC;IACtB,WAAW,EAAG,aAAa,CAAC;gBAEhB,QAAQ,EAAE,MAAM;IAKtB,sBAAsB;IAQ5B;;;;OAIG;IACG,kBAAkB;IA8DlB,KAAK;IAIX,QAAQ,GAAI,CAAC,EACX,MAAM,MAAM,EACZ,OAAO,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,CAAC,CAAC,EACjD,UAAS,CAAC,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAA2B,KAChG,OAAO,CAAC,IAAI,CAAC,CAAwD;IAElE,QAAQ;IAIR,yBAAyB,CAC7B,QAAQ,EAAE,sBAAsB,EAChC,SAAS,EAAE,YAAY,EACvB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,EAAE,EACd,MAAM,EAAE,MAAM;IAgBV,iBAAiB;CAmExB"}
|
|
@@ -33,9 +33,8 @@ export class Role {
|
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
export class BlacklistTokenContractTest {
|
|
36
|
-
// A low delay is really poor ux, but we need to keep it low for the tests to run "quickly".
|
|
37
36
|
// This value MUST match the same value that we have in the contract
|
|
38
|
-
static
|
|
37
|
+
static CHANGE_ROLES_DELAY = 86400;
|
|
39
38
|
snapshotManager;
|
|
40
39
|
logger;
|
|
41
40
|
wallets = [];
|
|
@@ -44,6 +43,9 @@ export class BlacklistTokenContractTest {
|
|
|
44
43
|
asset;
|
|
45
44
|
tokenSim;
|
|
46
45
|
badAccount;
|
|
46
|
+
cheatCodes;
|
|
47
|
+
sequencer;
|
|
48
|
+
aztecNode;
|
|
47
49
|
admin;
|
|
48
50
|
other;
|
|
49
51
|
blacklisted;
|
|
@@ -51,10 +53,8 @@ export class BlacklistTokenContractTest {
|
|
|
51
53
|
this.logger = createLogger(`e2e:e2e_blacklist_token_contract:${testName}`);
|
|
52
54
|
this.snapshotManager = createSnapshotManager(`e2e_blacklist_token_contract/${testName}`, dataPath);
|
|
53
55
|
}
|
|
54
|
-
async
|
|
55
|
-
|
|
56
|
-
await this.asset.methods.get_roles(this.admin.getAddress()).send().wait();
|
|
57
|
-
}
|
|
56
|
+
async crossTimestampOfChange() {
|
|
57
|
+
await this.cheatCodes.warpL2TimeAtLeastBy(this.sequencer, this.aztecNode, BlacklistTokenContractTest.CHANGE_ROLES_DELAY);
|
|
58
58
|
}
|
|
59
59
|
/**
|
|
60
60
|
* Adds two state shifts to snapshot manager.
|
|
@@ -63,8 +63,11 @@ export class BlacklistTokenContractTest {
|
|
|
63
63
|
*/ async applyBaseSnapshots() {
|
|
64
64
|
// Adding a timeout of 2 minutes in here such that it is propagated to the underlying tests
|
|
65
65
|
jest.setTimeout(120_000);
|
|
66
|
-
await this.snapshotManager.snapshot('3_accounts', deployAccounts(3, this.logger), async ({ deployedAccounts }, { pxe })=>{
|
|
66
|
+
await this.snapshotManager.snapshot('3_accounts', deployAccounts(3, this.logger), async ({ deployedAccounts }, { pxe, cheatCodes, aztecNode, sequencer })=>{
|
|
67
67
|
this.pxe = pxe;
|
|
68
|
+
this.cheatCodes = cheatCodes;
|
|
69
|
+
this.aztecNode = aztecNode;
|
|
70
|
+
this.sequencer = sequencer;
|
|
68
71
|
this.wallets = await Promise.all(deployedAccounts.map((a)=>getSchnorrWallet(pxe, a.address, a.signingKey)));
|
|
69
72
|
this.admin = this.wallets[0];
|
|
70
73
|
this.other = this.wallets[1];
|
|
@@ -82,7 +85,7 @@ export class BlacklistTokenContractTest {
|
|
|
82
85
|
this.logger.verbose(`Deploying bad account...`);
|
|
83
86
|
this.badAccount = await InvalidAccountContract.deploy(this.wallets[0]).send().deployed();
|
|
84
87
|
this.logger.verbose(`Deployed to ${this.badAccount.address}.`);
|
|
85
|
-
await this.
|
|
88
|
+
await this.crossTimestampOfChange();
|
|
86
89
|
return {
|
|
87
90
|
tokenContractAddress: this.asset.address,
|
|
88
91
|
badAccountAddress: this.badAccount.address
|
|
@@ -116,7 +119,7 @@ export class BlacklistTokenContractTest {
|
|
|
116
119
|
await this.asset.withWallet(this.admin).methods.update_roles(this.admin.getAddress(), adminMinterRole.toNoirStruct()).send().wait();
|
|
117
120
|
const blacklistRole = new Role().withBlacklisted();
|
|
118
121
|
await this.asset.withWallet(this.admin).methods.update_roles(this.blacklisted.getAddress(), blacklistRole.toNoirStruct()).send().wait();
|
|
119
|
-
await this.
|
|
122
|
+
await this.crossTimestampOfChange();
|
|
120
123
|
expect(await this.asset.methods.get_roles(this.admin.getAddress()).simulate()).toEqual(adminMinterRole.toNoirStruct());
|
|
121
124
|
this.logger.verbose(`Minting ${amount} publicly...`);
|
|
122
125
|
await asset.methods.mint_public(accounts[0].address, amount).send().wait();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getSchnorrWallet } from '@aztec/accounts/schnorr';
|
|
2
|
-
import { Fr, createLogger,
|
|
2
|
+
import { Fr, createLogger, getContractInstanceFromInstantiationParams } from '@aztec/aztec.js';
|
|
3
3
|
import { createSnapshotManager, deployAccounts } from '../fixtures/snapshot_manager.js';
|
|
4
4
|
const { E2E_DATA_PATH: dataPath } = process.env;
|
|
5
5
|
export class DeployTest {
|
|
@@ -33,7 +33,7 @@ export class DeployTest {
|
|
|
33
33
|
}
|
|
34
34
|
async registerContract(wallet, contractArtifact, opts = {}) {
|
|
35
35
|
const { salt, publicKeys, initArgs, constructorName, deployer } = opts;
|
|
36
|
-
const instance = await
|
|
36
|
+
const instance = await getContractInstanceFromInstantiationParams(contractArtifact.artifact, {
|
|
37
37
|
constructorArgs: initArgs ?? [],
|
|
38
38
|
constructorArtifact: constructorName,
|
|
39
39
|
salt,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AztecNodeService } from '@aztec/aztec-node';
|
|
2
|
-
import { Fr, MerkleTreeId,
|
|
2
|
+
import { Fr, MerkleTreeId, getContractInstanceFromInstantiationParams, getTimestampRangeForEpoch, retryUntil, sleep } from '@aztec/aztec.js';
|
|
3
3
|
import { createExtendedL1Client } from '@aztec/ethereum';
|
|
4
4
|
import { RollupContract } from '@aztec/ethereum/contracts';
|
|
5
5
|
import { ChainMonitor, DelayedTxUtils, waitUntilL1Timestamp, withDelayer } from '@aztec/ethereum/test';
|
|
@@ -239,7 +239,7 @@ export const ARCHIVER_POLL_INTERVAL = 50;
|
|
|
239
239
|
}
|
|
240
240
|
}
|
|
241
241
|
/** Registers the SpamContract on the given wallet. */ async registerSpamContract(wallet, salt = Fr.ZERO) {
|
|
242
|
-
const instance = await
|
|
242
|
+
const instance = await getContractInstanceFromInstantiationParams(SpamContract.artifact, {
|
|
243
243
|
constructorArgs: [],
|
|
244
244
|
constructorArtifact: undefined,
|
|
245
245
|
salt,
|
|
@@ -19,7 +19,7 @@ import { getContract } from 'viem';
|
|
|
19
19
|
import { MNEMONIC } from '../fixtures/fixtures.js';
|
|
20
20
|
import { createSnapshotManager, deployAccounts } from '../fixtures/snapshot_manager.js';
|
|
21
21
|
import { mintTokensToPrivate } from '../fixtures/token_utils.js';
|
|
22
|
-
import {
|
|
22
|
+
import { ensureAccountContractsPublished, getBalancesFn, setupSponsoredFPC } from '../fixtures/utils.js';
|
|
23
23
|
import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_harness.js';
|
|
24
24
|
const { E2E_DATA_PATH: dataPath } = process.env;
|
|
25
25
|
/**
|
|
@@ -158,7 +158,7 @@ const { E2E_DATA_PATH: dataPath } = process.env;
|
|
|
158
158
|
});
|
|
159
159
|
}
|
|
160
160
|
async applyPublicDeployAccountsSnapshot() {
|
|
161
|
-
await this.snapshotManager.snapshot('public_deploy_accounts', ()=>
|
|
161
|
+
await this.snapshotManager.snapshot('public_deploy_accounts', ()=>ensureAccountContractsPublished(this.aliceWallet, this.wallets));
|
|
162
162
|
}
|
|
163
163
|
async applySetupFeeJuiceSnapshot() {
|
|
164
164
|
await this.snapshotManager.snapshot('setup_fee_juice', async ()=>{}, async (_data, context)=>{
|
|
@@ -192,7 +192,7 @@ const { E2E_DATA_PATH: dataPath } = process.env;
|
|
|
192
192
|
async applyFPCSetupSnapshot() {
|
|
193
193
|
await this.snapshotManager.snapshot('fpc_setup', async (context)=>{
|
|
194
194
|
const feeJuiceContract = this.feeJuiceBridgeTestHarness.feeJuice;
|
|
195
|
-
expect((await context.pxe.getContractMetadata(feeJuiceContract.address)).
|
|
195
|
+
expect((await context.pxe.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
|
|
196
196
|
const bananaCoin = this.bananaCoin;
|
|
197
197
|
const bananaFPC = await FPCContract.deploy(this.aliceWallet, bananaCoin.address, this.fpcAdmin).send().deployed();
|
|
198
198
|
this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
|
|
@@ -245,7 +245,7 @@ const { E2E_DATA_PATH: dataPath } = process.env;
|
|
|
245
245
|
async applySponsoredFPCSetupSnapshot() {
|
|
246
246
|
await this.snapshotManager.snapshot('sponsored_fpc_setup', async (context)=>{
|
|
247
247
|
const feeJuiceContract = this.feeJuiceBridgeTestHarness.feeJuice;
|
|
248
|
-
expect((await context.pxe.getContractMetadata(feeJuiceContract.address)).
|
|
248
|
+
expect((await context.pxe.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
|
|
249
249
|
const sponsoredFPC = await setupSponsoredFPC(context.pxe);
|
|
250
250
|
this.logger.info(`SponsoredFPC at ${sponsoredFPC.address}`);
|
|
251
251
|
return {
|
package/dest/e2e_p2p/shared.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getSchnorrAccount } from '@aztec/accounts/schnorr';
|
|
2
|
-
import { Fr, TxStatus,
|
|
2
|
+
import { Fr, TxStatus, getContractInstanceFromInstantiationParams, retryUntil } from '@aztec/aztec.js';
|
|
3
3
|
import { timesAsync } from '@aztec/foundation/collection';
|
|
4
4
|
import { TestContract, TestContractArtifact } from '@aztec/noir-test-contracts.js/Test';
|
|
5
5
|
import { createPXEService, getPXEServiceConfig as getRpcConfig } from '@aztec/pxe/server';
|
|
@@ -50,7 +50,7 @@ export async function createPXEServiceAndPrepareTransactions(logger, node, numTx
|
|
|
50
50
|
const account = await getSchnorrAccount(pxe, fundedAccount.secret, fundedAccount.signingKey, fundedAccount.salt);
|
|
51
51
|
await account.register();
|
|
52
52
|
const wallet = await account.getWallet();
|
|
53
|
-
const testContractInstance = await
|
|
53
|
+
const testContractInstance = await getContractInstanceFromInstantiationParams(TestContractArtifact, {});
|
|
54
54
|
await wallet.registerContract({
|
|
55
55
|
instance: testContractInstance,
|
|
56
56
|
artifact: TestContractArtifact
|
|
@@ -7,6 +7,7 @@ import { type DeployL1ContractsArgs, type DeployL1ContractsReturnType } from '@a
|
|
|
7
7
|
import { TestDateProvider } from '@aztec/foundation/timer';
|
|
8
8
|
import type { ProverNode } from '@aztec/prover-node';
|
|
9
9
|
import { type PXEService } from '@aztec/pxe/server';
|
|
10
|
+
import type { SequencerClient } from '@aztec/sequencer-client';
|
|
10
11
|
import type { Anvil } from '@viem/anvil';
|
|
11
12
|
import { type SetupOptions } from './utils.js';
|
|
12
13
|
export type SubsystemsContext = {
|
|
@@ -20,6 +21,7 @@ export type SubsystemsContext = {
|
|
|
20
21
|
proverNode?: ProverNode;
|
|
21
22
|
watcher: AnvilTestWatcher;
|
|
22
23
|
cheatCodes: CheatCodes;
|
|
24
|
+
sequencer: SequencerClient;
|
|
23
25
|
dateProvider: TestDateProvider;
|
|
24
26
|
blobSink: BlobSinkServer;
|
|
25
27
|
initialFundedAccounts: InitialAccountData[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot_manager.d.ts","sourceRoot":"","sources":["../../src/fixtures/snapshot_manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,kBAAkB,EAAwD,MAAM,yBAAyB,CAAC;AACxH,OAAO,EAAE,KAAK,eAAe,EAAE,gBAAgB,EAAoB,MAAM,mBAAmB,CAAC;AAC7F,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,SAAS,EAEd,KAAK,eAAe,EAGpB,KAAK,MAAM,EACX,KAAK,GAAG,EACR,KAAK,MAAM,EAGZ,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,KAAK,cAAc,EAAwB,MAAM,yBAAyB,CAAC;AACpF,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,EAKjC,MAAM,iBAAiB,CAAC;AAQzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,KAAK,UAAU,EAAyC,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"snapshot_manager.d.ts","sourceRoot":"","sources":["../../src/fixtures/snapshot_manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { SchnorrAccountContractArtifact } from '@aztec/accounts/schnorr';
|
|
|
2
2
|
import { deployFundedSchnorrAccounts, generateSchnorrAccounts } from '@aztec/accounts/testing';
|
|
3
3
|
import { AztecNodeService, getConfigEnvVars } from '@aztec/aztec-node';
|
|
4
4
|
import { BatchCall, DefaultWaitForProvenOpts, getContractClassFromArtifact, waitForProven } from '@aztec/aztec.js';
|
|
5
|
-
import {
|
|
5
|
+
import { publishContractClass, publishInstance } from '@aztec/aztec.js/deployment';
|
|
6
6
|
import { AnvilTestWatcher, CheatCodes } from '@aztec/aztec/testing';
|
|
7
7
|
import { createBlobSinkServer } from '@aztec/blob-sink/server';
|
|
8
8
|
import { createExtendedL1Client, deployMulticall3, getL1ContractsConfigEnvVars, l1Artifacts } from '@aztec/ethereum';
|
|
@@ -356,6 +356,7 @@ export function createSnapshotManager(testName, dataPath, config = {}, deployL1C
|
|
|
356
356
|
anvil,
|
|
357
357
|
aztecNode,
|
|
358
358
|
pxe,
|
|
359
|
+
sequencer: aztecNode.getSequencer(),
|
|
359
360
|
acvmConfig,
|
|
360
361
|
bbConfig,
|
|
361
362
|
deployL1ContractsValues,
|
|
@@ -446,6 +447,7 @@ export function createSnapshotManager(testName, dataPath, config = {}, deployL1C
|
|
|
446
447
|
anvil,
|
|
447
448
|
aztecNode,
|
|
448
449
|
pxe,
|
|
450
|
+
sequencer: aztecNode.getSequencer(),
|
|
449
451
|
acvmConfig,
|
|
450
452
|
bbConfig,
|
|
451
453
|
proverNode,
|
|
@@ -490,9 +492,9 @@ export function createSnapshotManager(testName, dataPath, config = {}, deployL1C
|
|
|
490
492
|
const alreadyRegistered = (await sender.getContractClassMetadata(contractClass.id)).isContractClassPubliclyRegistered;
|
|
491
493
|
const calls = await Promise.all([
|
|
492
494
|
...!alreadyRegistered ? [
|
|
493
|
-
|
|
495
|
+
publishContractClass(sender, SchnorrAccountContractArtifact)
|
|
494
496
|
] : [],
|
|
495
|
-
...instances.map((instance)=>
|
|
497
|
+
...instances.map((instance)=>publishInstance(sender, instance))
|
|
496
498
|
]);
|
|
497
499
|
const batch = new BatchCall(sender, calls);
|
|
498
500
|
const txReceipt = await batch.send().wait();
|
package/dest/fixtures/utils.d.ts
CHANGED
|
@@ -142,7 +142,7 @@ export declare function setup(numberOfAccounts?: number, opts?: SetupOptions, px
|
|
|
142
142
|
* @param sender - Wallet to send the deployment tx.
|
|
143
143
|
* @param accountsToDeploy - Which accounts to publicly deploy.
|
|
144
144
|
*/
|
|
145
|
-
export declare function
|
|
145
|
+
export declare function ensureAccountContractsPublished(sender: Wallet, accountsToDeploy: Wallet[]): Promise<void>;
|
|
146
146
|
/**
|
|
147
147
|
* Sets the timestamp of the next block.
|
|
148
148
|
* @param rpcUrl - rpc url of the blockchain instance to connect to
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/fixtures/utils.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/fixtures/utils.ts"],"names":[],"mappings":"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"}
|
package/dest/fixtures/utils.js
CHANGED
|
@@ -3,7 +3,7 @@ import { deployFundedSchnorrAccounts, generateSchnorrAccounts, getDeployedTestAc
|
|
|
3
3
|
import { createArchiver } from '@aztec/archiver';
|
|
4
4
|
import { AztecNodeService, getConfigEnvVars } from '@aztec/aztec-node';
|
|
5
5
|
import { BatchCall, createAztecNodeClient, createLogger, createPXEClient, makeFetch, sleep, waitForPXE } from '@aztec/aztec.js';
|
|
6
|
-
import {
|
|
6
|
+
import { publishContractClass, publishInstance } from '@aztec/aztec.js/deployment';
|
|
7
7
|
import { AnvilTestWatcher, CheatCodes } from '@aztec/aztec/testing';
|
|
8
8
|
import { createBlobSinkClient } from '@aztec/blob-sink/client';
|
|
9
9
|
import { createBlobSinkServer } from '@aztec/blob-sink/server';
|
|
@@ -26,7 +26,7 @@ import { createProverNode } from '@aztec/prover-node';
|
|
|
26
26
|
import { createPXEServiceWithSimulator, getPXEServiceConfig } from '@aztec/pxe/server';
|
|
27
27
|
import { MemoryCircuitRecorder, SimulatorRecorderWrapper, WASMSimulator } from '@aztec/simulator/client';
|
|
28
28
|
import { FileCircuitRecorder } from '@aztec/simulator/testing';
|
|
29
|
-
import { getContractClassFromArtifact,
|
|
29
|
+
import { getContractClassFromArtifact, getContractInstanceFromInstantiationParams } from '@aztec/stdlib/contract';
|
|
30
30
|
import { tryStop } from '@aztec/stdlib/interfaces/server';
|
|
31
31
|
import { getConfigEnvVars as getTelemetryConfig, initTelemetryClient } from '@aztec/telemetry-client';
|
|
32
32
|
import { BenchmarkTelemetryClient } from '@aztec/telemetry-client/bench';
|
|
@@ -354,6 +354,11 @@ export const setupL1Contracts = async (l1RpcUrls, account, logger, args = {}, ch
|
|
|
354
354
|
// handled by the if-else branches on line 632.
|
|
355
355
|
// For more details on why the tx would be dropped see `validate_include_by_timestamp` function in
|
|
356
356
|
// `noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/components/validation_requests.nr`.
|
|
357
|
+
//
|
|
358
|
+
// Note: If the following seems too convoluted or if it starts making problems, we could drop the "progressing
|
|
359
|
+
// past genesis via an account contract deployment" optimization and just call flush() on the sequencer and wait
|
|
360
|
+
// for an empty block to be mined. This would simplify it all quite a bit but the setup would be slower for tests
|
|
361
|
+
// deploying accounts.
|
|
357
362
|
const originalMinTxsPerBlock = config.minTxsPerBlock;
|
|
358
363
|
if (originalMinTxsPerBlock === undefined) {
|
|
359
364
|
throw new Error('minTxsPerBlock is undefined in e2e test setup');
|
|
@@ -471,22 +476,22 @@ export const setupL1Contracts = async (l1RpcUrls, account, logger, args = {}, ch
|
|
|
471
476
|
* @param sender - Wallet to send the deployment tx.
|
|
472
477
|
* @param accountsToDeploy - Which accounts to publicly deploy.
|
|
473
478
|
*/ // docs:start:public_deploy_accounts
|
|
474
|
-
export async function
|
|
479
|
+
export async function ensureAccountContractsPublished(sender, accountsToDeploy) {
|
|
475
480
|
// We have to check whether the accounts are already deployed. This can happen if the test runs against
|
|
476
481
|
// the sandbox and the test accounts exist
|
|
477
482
|
const accountsAndAddresses = await Promise.all(accountsToDeploy.map(async (account)=>{
|
|
478
483
|
const address = account.getAddress();
|
|
479
484
|
return {
|
|
480
485
|
address,
|
|
481
|
-
deployed: (await sender.getContractMetadata(address)).
|
|
486
|
+
deployed: (await sender.getContractMetadata(address)).isContractPublished
|
|
482
487
|
};
|
|
483
488
|
}));
|
|
484
489
|
const instances = (await Promise.all(accountsAndAddresses.filter(({ deployed })=>!deployed).map(({ address })=>sender.getContractMetadata(address)))).map((contractMetadata)=>contractMetadata.contractInstance);
|
|
485
490
|
const contractClass = await getContractClassFromArtifact(SchnorrAccountContractArtifact);
|
|
486
491
|
if (!(await sender.getContractClassMetadata(contractClass.id, true)).isContractClassPubliclyRegistered) {
|
|
487
|
-
await (await
|
|
492
|
+
await (await publishContractClass(sender, SchnorrAccountContractArtifact)).send().wait();
|
|
488
493
|
}
|
|
489
|
-
const requests = await Promise.all(instances.map(async (instance)=>await
|
|
494
|
+
const requests = await Promise.all(instances.map(async (instance)=>await publishInstance(sender, instance)));
|
|
490
495
|
const batch = new BatchCall(sender, requests);
|
|
491
496
|
await batch.send().wait();
|
|
492
497
|
}
|
|
@@ -545,7 +550,7 @@ export async function expectMappingDelta(initialValues, fn, inputs, expectedDiff
|
|
|
545
550
|
* but by conventions its address is computed with a salt of 0.
|
|
546
551
|
* @returns The address of the sponsored FPC contract
|
|
547
552
|
*/ export function getSponsoredFPCInstance() {
|
|
548
|
-
return Promise.resolve(
|
|
553
|
+
return Promise.resolve(getContractInstanceFromInstantiationParams(SponsoredFPCContract.artifact, {
|
|
549
554
|
salt: new Fr(SPONSORED_FPC_SALT)
|
|
550
555
|
}));
|
|
551
556
|
}
|
|
@@ -560,7 +565,7 @@ export async function expectMappingDelta(initialValues, fn, inputs, expectedDiff
|
|
|
560
565
|
/**
|
|
561
566
|
* Deploy a sponsored FPC contract to a running instance.
|
|
562
567
|
*/ export async function setupSponsoredFPC(pxe) {
|
|
563
|
-
const instance = await
|
|
568
|
+
const instance = await getContractInstanceFromInstantiationParams(SponsoredFPCContract.artifact, {
|
|
564
569
|
salt: new Fr(SPONSORED_FPC_SALT)
|
|
565
570
|
});
|
|
566
571
|
await pxe.registerContract({
|
|
@@ -7,7 +7,7 @@ import { computeL2ToL1MessageHash } from '@aztec/stdlib/hash';
|
|
|
7
7
|
import { computeL2ToL1MembershipWitness } from '@aztec/stdlib/messaging';
|
|
8
8
|
import { jest } from '@jest/globals';
|
|
9
9
|
import { getContract, parseEther, toFunctionSelector } from 'viem';
|
|
10
|
-
import {
|
|
10
|
+
import { ensureAccountContractsPublished } from '../fixtures/utils.js';
|
|
11
11
|
import { CrossChainTestHarness } from './cross_chain_test_harness.js';
|
|
12
12
|
// PSA: This tests works on forked mainnet. There is a dump of the data in `dumpedState` such that we
|
|
13
13
|
// don't need to burn through RPC requests.
|
|
@@ -56,7 +56,7 @@ export const uniswapL1L2TestSuite = (setup, cleanup, expectedForkBlockNumber = 1
|
|
|
56
56
|
ownerAddress = ownerWallet.getAddress();
|
|
57
57
|
// sponsorAddress = sponsorWallet.getAddress();
|
|
58
58
|
ownerEthAddress = EthAddress.fromString((await l1Client.getAddresses())[0]);
|
|
59
|
-
await
|
|
59
|
+
await ensureAccountContractsPublished(ownerWallet, [
|
|
60
60
|
ownerWallet,
|
|
61
61
|
sponsorWallet
|
|
62
62
|
]);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/end-to-end",
|
|
3
|
-
"version": "1.0.0-nightly.
|
|
3
|
+
"version": "1.0.0-nightly.20250710",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": "./dest/index.js",
|
|
6
6
|
"inherits": [
|
|
@@ -25,40 +25,40 @@
|
|
|
25
25
|
"formatting": "run -T prettier --check ./src && run -T eslint ./src"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@aztec/accounts": "1.0.0-nightly.
|
|
29
|
-
"@aztec/archiver": "1.0.0-nightly.
|
|
30
|
-
"@aztec/aztec": "1.0.0-nightly.
|
|
31
|
-
"@aztec/aztec-node": "1.0.0-nightly.
|
|
32
|
-
"@aztec/aztec.js": "1.0.0-nightly.
|
|
33
|
-
"@aztec/bb-prover": "1.0.0-nightly.
|
|
34
|
-
"@aztec/blob-lib": "1.0.0-nightly.
|
|
35
|
-
"@aztec/blob-sink": "1.0.0-nightly.
|
|
36
|
-
"@aztec/bot": "1.0.0-nightly.
|
|
37
|
-
"@aztec/cli": "1.0.0-nightly.
|
|
38
|
-
"@aztec/constants": "1.0.0-nightly.
|
|
39
|
-
"@aztec/entrypoints": "1.0.0-nightly.
|
|
40
|
-
"@aztec/epoch-cache": "1.0.0-nightly.
|
|
41
|
-
"@aztec/ethereum": "1.0.0-nightly.
|
|
42
|
-
"@aztec/foundation": "1.0.0-nightly.
|
|
43
|
-
"@aztec/kv-store": "1.0.0-nightly.
|
|
44
|
-
"@aztec/l1-artifacts": "1.0.0-nightly.
|
|
45
|
-
"@aztec/merkle-tree": "1.0.0-nightly.
|
|
46
|
-
"@aztec/noir-contracts.js": "1.0.0-nightly.
|
|
47
|
-
"@aztec/noir-noirc_abi": "1.0.0-nightly.
|
|
48
|
-
"@aztec/noir-protocol-circuits-types": "1.0.0-nightly.
|
|
49
|
-
"@aztec/noir-test-contracts.js": "1.0.0-nightly.
|
|
50
|
-
"@aztec/p2p": "1.0.0-nightly.
|
|
51
|
-
"@aztec/protocol-contracts": "1.0.0-nightly.
|
|
52
|
-
"@aztec/prover-client": "1.0.0-nightly.
|
|
53
|
-
"@aztec/prover-node": "1.0.0-nightly.
|
|
54
|
-
"@aztec/pxe": "1.0.0-nightly.
|
|
55
|
-
"@aztec/sequencer-client": "1.0.0-nightly.
|
|
56
|
-
"@aztec/simulator": "1.0.0-nightly.
|
|
57
|
-
"@aztec/slasher": "1.0.0-nightly.
|
|
58
|
-
"@aztec/stdlib": "1.0.0-nightly.
|
|
59
|
-
"@aztec/telemetry-client": "1.0.0-nightly.
|
|
60
|
-
"@aztec/validator-client": "1.0.0-nightly.
|
|
61
|
-
"@aztec/world-state": "1.0.0-nightly.
|
|
28
|
+
"@aztec/accounts": "1.0.0-nightly.20250710",
|
|
29
|
+
"@aztec/archiver": "1.0.0-nightly.20250710",
|
|
30
|
+
"@aztec/aztec": "1.0.0-nightly.20250710",
|
|
31
|
+
"@aztec/aztec-node": "1.0.0-nightly.20250710",
|
|
32
|
+
"@aztec/aztec.js": "1.0.0-nightly.20250710",
|
|
33
|
+
"@aztec/bb-prover": "1.0.0-nightly.20250710",
|
|
34
|
+
"@aztec/blob-lib": "1.0.0-nightly.20250710",
|
|
35
|
+
"@aztec/blob-sink": "1.0.0-nightly.20250710",
|
|
36
|
+
"@aztec/bot": "1.0.0-nightly.20250710",
|
|
37
|
+
"@aztec/cli": "1.0.0-nightly.20250710",
|
|
38
|
+
"@aztec/constants": "1.0.0-nightly.20250710",
|
|
39
|
+
"@aztec/entrypoints": "1.0.0-nightly.20250710",
|
|
40
|
+
"@aztec/epoch-cache": "1.0.0-nightly.20250710",
|
|
41
|
+
"@aztec/ethereum": "1.0.0-nightly.20250710",
|
|
42
|
+
"@aztec/foundation": "1.0.0-nightly.20250710",
|
|
43
|
+
"@aztec/kv-store": "1.0.0-nightly.20250710",
|
|
44
|
+
"@aztec/l1-artifacts": "1.0.0-nightly.20250710",
|
|
45
|
+
"@aztec/merkle-tree": "1.0.0-nightly.20250710",
|
|
46
|
+
"@aztec/noir-contracts.js": "1.0.0-nightly.20250710",
|
|
47
|
+
"@aztec/noir-noirc_abi": "1.0.0-nightly.20250710",
|
|
48
|
+
"@aztec/noir-protocol-circuits-types": "1.0.0-nightly.20250710",
|
|
49
|
+
"@aztec/noir-test-contracts.js": "1.0.0-nightly.20250710",
|
|
50
|
+
"@aztec/p2p": "1.0.0-nightly.20250710",
|
|
51
|
+
"@aztec/protocol-contracts": "1.0.0-nightly.20250710",
|
|
52
|
+
"@aztec/prover-client": "1.0.0-nightly.20250710",
|
|
53
|
+
"@aztec/prover-node": "1.0.0-nightly.20250710",
|
|
54
|
+
"@aztec/pxe": "1.0.0-nightly.20250710",
|
|
55
|
+
"@aztec/sequencer-client": "1.0.0-nightly.20250710",
|
|
56
|
+
"@aztec/simulator": "1.0.0-nightly.20250710",
|
|
57
|
+
"@aztec/slasher": "1.0.0-nightly.20250710",
|
|
58
|
+
"@aztec/stdlib": "1.0.0-nightly.20250710",
|
|
59
|
+
"@aztec/telemetry-client": "1.0.0-nightly.20250710",
|
|
60
|
+
"@aztec/validator-client": "1.0.0-nightly.20250710",
|
|
61
|
+
"@aztec/world-state": "1.0.0-nightly.20250710",
|
|
62
62
|
"@iarna/toml": "^2.2.5",
|
|
63
63
|
"@jest/globals": "^30.0.0",
|
|
64
64
|
"@noble/curves": "^1.0.0",
|
|
@@ -291,7 +291,7 @@ export class ClientFlowsBenchmark {
|
|
|
291
291
|
'fpc_setup',
|
|
292
292
|
async context => {
|
|
293
293
|
const feeJuiceContract = this.feeJuiceBridgeTestHarness.feeJuice;
|
|
294
|
-
expect((await context.pxe.getContractMetadata(feeJuiceContract.address)).
|
|
294
|
+
expect((await context.pxe.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
|
|
295
295
|
|
|
296
296
|
const bananaCoin = this.bananaCoin;
|
|
297
297
|
const bananaFPC = await FPCContract.deploy(this.adminWallet, bananaCoin.address, this.adminAddress)
|
|
@@ -2,6 +2,7 @@ import { getSchnorrWallet } from '@aztec/accounts/schnorr';
|
|
|
2
2
|
import {
|
|
3
3
|
type AccountWallet,
|
|
4
4
|
AztecAddress,
|
|
5
|
+
type AztecNode,
|
|
5
6
|
type CompleteAddress,
|
|
6
7
|
Fr,
|
|
7
8
|
type Logger,
|
|
@@ -10,9 +11,11 @@ import {
|
|
|
10
11
|
computeSecretHash,
|
|
11
12
|
createLogger,
|
|
12
13
|
} from '@aztec/aztec.js';
|
|
14
|
+
import type { CheatCodes } from '@aztec/aztec/testing';
|
|
13
15
|
import type { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
14
16
|
import { TokenBlacklistContract } from '@aztec/noir-contracts.js/TokenBlacklist';
|
|
15
17
|
import { InvalidAccountContract } from '@aztec/noir-test-contracts.js/InvalidAccount';
|
|
18
|
+
import type { SequencerClient } from '@aztec/sequencer-client';
|
|
16
19
|
|
|
17
20
|
import { jest } from '@jest/globals';
|
|
18
21
|
|
|
@@ -55,9 +58,8 @@ export class Role {
|
|
|
55
58
|
}
|
|
56
59
|
|
|
57
60
|
export class BlacklistTokenContractTest {
|
|
58
|
-
// A low delay is really poor ux, but we need to keep it low for the tests to run "quickly".
|
|
59
61
|
// This value MUST match the same value that we have in the contract
|
|
60
|
-
static
|
|
62
|
+
static CHANGE_ROLES_DELAY = 86400;
|
|
61
63
|
|
|
62
64
|
private snapshotManager: ISnapshotManager;
|
|
63
65
|
logger: Logger;
|
|
@@ -67,6 +69,9 @@ export class BlacklistTokenContractTest {
|
|
|
67
69
|
asset!: TokenBlacklistContract;
|
|
68
70
|
tokenSim!: TokenSimulator;
|
|
69
71
|
badAccount!: InvalidAccountContract;
|
|
72
|
+
cheatCodes!: CheatCodes;
|
|
73
|
+
sequencer!: SequencerClient;
|
|
74
|
+
aztecNode!: AztecNode;
|
|
70
75
|
|
|
71
76
|
admin!: AccountWallet;
|
|
72
77
|
other!: AccountWallet;
|
|
@@ -77,10 +82,12 @@ export class BlacklistTokenContractTest {
|
|
|
77
82
|
this.snapshotManager = createSnapshotManager(`e2e_blacklist_token_contract/${testName}`, dataPath);
|
|
78
83
|
}
|
|
79
84
|
|
|
80
|
-
async
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
85
|
+
async crossTimestampOfChange() {
|
|
86
|
+
await this.cheatCodes.warpL2TimeAtLeastBy(
|
|
87
|
+
this.sequencer,
|
|
88
|
+
this.aztecNode,
|
|
89
|
+
BlacklistTokenContractTest.CHANGE_ROLES_DELAY,
|
|
90
|
+
);
|
|
84
91
|
}
|
|
85
92
|
|
|
86
93
|
/**
|
|
@@ -95,8 +102,11 @@ export class BlacklistTokenContractTest {
|
|
|
95
102
|
await this.snapshotManager.snapshot(
|
|
96
103
|
'3_accounts',
|
|
97
104
|
deployAccounts(3, this.logger),
|
|
98
|
-
async ({ deployedAccounts }, { pxe }) => {
|
|
105
|
+
async ({ deployedAccounts }, { pxe, cheatCodes, aztecNode, sequencer }) => {
|
|
99
106
|
this.pxe = pxe;
|
|
107
|
+
this.cheatCodes = cheatCodes;
|
|
108
|
+
this.aztecNode = aztecNode;
|
|
109
|
+
this.sequencer = sequencer;
|
|
100
110
|
this.wallets = await Promise.all(deployedAccounts.map(a => getSchnorrWallet(pxe, a.address, a.signingKey)));
|
|
101
111
|
this.admin = this.wallets[0];
|
|
102
112
|
this.other = this.wallets[1];
|
|
@@ -121,7 +131,7 @@ export class BlacklistTokenContractTest {
|
|
|
121
131
|
this.badAccount = await InvalidAccountContract.deploy(this.wallets[0]).send().deployed();
|
|
122
132
|
this.logger.verbose(`Deployed to ${this.badAccount.address}.`);
|
|
123
133
|
|
|
124
|
-
await this.
|
|
134
|
+
await this.crossTimestampOfChange();
|
|
125
135
|
|
|
126
136
|
return { tokenContractAddress: this.asset.address, badAccountAddress: this.badAccount.address };
|
|
127
137
|
},
|
|
@@ -203,7 +213,7 @@ export class BlacklistTokenContractTest {
|
|
|
203
213
|
.send()
|
|
204
214
|
.wait();
|
|
205
215
|
|
|
206
|
-
await this.
|
|
216
|
+
await this.crossTimestampOfChange();
|
|
207
217
|
|
|
208
218
|
expect(await this.asset.methods.get_roles(this.admin.getAddress()).simulate()).toEqual(
|
|
209
219
|
adminMinterRole.toNoirStruct(),
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
type PublicKeys,
|
|
12
12
|
type Wallet,
|
|
13
13
|
createLogger,
|
|
14
|
-
|
|
14
|
+
getContractInstanceFromInstantiationParams,
|
|
15
15
|
} from '@aztec/aztec.js';
|
|
16
16
|
import type { StatefulTestContract } from '@aztec/noir-test-contracts.js/StatefulTest';
|
|
17
17
|
import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
|
|
@@ -71,7 +71,7 @@ export class DeployTest {
|
|
|
71
71
|
} = {},
|
|
72
72
|
): Promise<T> {
|
|
73
73
|
const { salt, publicKeys, initArgs, constructorName, deployer } = opts;
|
|
74
|
-
const instance = await
|
|
74
|
+
const instance = await getContractInstanceFromInstantiationParams(contractArtifact.artifact, {
|
|
75
75
|
constructorArgs: initArgs ?? [],
|
|
76
76
|
constructorArtifact: constructorName,
|
|
77
77
|
salt,
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
type Logger,
|
|
5
5
|
MerkleTreeId,
|
|
6
6
|
type Wallet,
|
|
7
|
-
|
|
7
|
+
getContractInstanceFromInstantiationParams,
|
|
8
8
|
getTimestampRangeForEpoch,
|
|
9
9
|
retryUntil,
|
|
10
10
|
sleep,
|
|
@@ -324,7 +324,7 @@ export class EpochsTestContext {
|
|
|
324
324
|
|
|
325
325
|
/** Registers the SpamContract on the given wallet. */
|
|
326
326
|
public async registerSpamContract(wallet: Wallet, salt = Fr.ZERO) {
|
|
327
|
-
const instance = await
|
|
327
|
+
const instance = await getContractInstanceFromInstantiationParams(SpamContract.artifact, {
|
|
328
328
|
constructorArgs: [],
|
|
329
329
|
constructorArtifact: undefined,
|
|
330
330
|
salt,
|
|
@@ -43,7 +43,7 @@ import { mintTokensToPrivate } from '../fixtures/token_utils.js';
|
|
|
43
43
|
import {
|
|
44
44
|
type BalancesFn,
|
|
45
45
|
type SetupOptions,
|
|
46
|
-
|
|
46
|
+
ensureAccountContractsPublished,
|
|
47
47
|
getBalancesFn,
|
|
48
48
|
setupSponsoredFPC,
|
|
49
49
|
} from '../fixtures/utils.js';
|
|
@@ -216,7 +216,7 @@ export class FeesTest {
|
|
|
216
216
|
|
|
217
217
|
async applyPublicDeployAccountsSnapshot() {
|
|
218
218
|
await this.snapshotManager.snapshot('public_deploy_accounts', () =>
|
|
219
|
-
|
|
219
|
+
ensureAccountContractsPublished(this.aliceWallet, this.wallets),
|
|
220
220
|
);
|
|
221
221
|
}
|
|
222
222
|
|
|
@@ -271,7 +271,7 @@ export class FeesTest {
|
|
|
271
271
|
'fpc_setup',
|
|
272
272
|
async context => {
|
|
273
273
|
const feeJuiceContract = this.feeJuiceBridgeTestHarness.feeJuice;
|
|
274
|
-
expect((await context.pxe.getContractMetadata(feeJuiceContract.address)).
|
|
274
|
+
expect((await context.pxe.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
|
|
275
275
|
|
|
276
276
|
const bananaCoin = this.bananaCoin;
|
|
277
277
|
const bananaFPC = await FPCContract.deploy(this.aliceWallet, bananaCoin.address, this.fpcAdmin)
|
|
@@ -347,7 +347,7 @@ export class FeesTest {
|
|
|
347
347
|
'sponsored_fpc_setup',
|
|
348
348
|
async context => {
|
|
349
349
|
const feeJuiceContract = this.feeJuiceBridgeTestHarness.feeJuice;
|
|
350
|
-
expect((await context.pxe.getContractMetadata(feeJuiceContract.address)).
|
|
350
|
+
expect((await context.pxe.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
|
|
351
351
|
|
|
352
352
|
const sponsoredFPC = await setupSponsoredFPC(context.pxe);
|
|
353
353
|
this.logger.info(`SponsoredFPC at ${sponsoredFPC.address}`);
|
package/src/e2e_p2p/shared.ts
CHANGED
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
ProvenTx,
|
|
8
8
|
type SentTx,
|
|
9
9
|
TxStatus,
|
|
10
|
-
|
|
10
|
+
getContractInstanceFromInstantiationParams,
|
|
11
11
|
retryUntil,
|
|
12
12
|
} from '@aztec/aztec.js';
|
|
13
13
|
import type { RollupCheatCodes } from '@aztec/aztec/testing';
|
|
@@ -92,7 +92,7 @@ export async function createPXEServiceAndPrepareTransactions(
|
|
|
92
92
|
await account.register();
|
|
93
93
|
const wallet = await account.getWallet();
|
|
94
94
|
|
|
95
|
-
const testContractInstance = await
|
|
95
|
+
const testContractInstance = await getContractInstanceFromInstantiationParams(TestContractArtifact, {});
|
|
96
96
|
await wallet.registerContract({ instance: testContractInstance, artifact: TestContractArtifact });
|
|
97
97
|
const contract = await TestContract.at(testContractInstance.address, wallet);
|
|
98
98
|
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
getContractClassFromArtifact,
|
|
15
15
|
waitForProven,
|
|
16
16
|
} from '@aztec/aztec.js';
|
|
17
|
-
import {
|
|
17
|
+
import { publishContractClass, publishInstance } from '@aztec/aztec.js/deployment';
|
|
18
18
|
import { AnvilTestWatcher, CheatCodes } from '@aztec/aztec/testing';
|
|
19
19
|
import { type BlobSinkServer, createBlobSinkServer } from '@aztec/blob-sink/server';
|
|
20
20
|
import {
|
|
@@ -35,6 +35,7 @@ import { resolver, reviver } from '@aztec/foundation/serialize';
|
|
|
35
35
|
import { TestDateProvider } from '@aztec/foundation/timer';
|
|
36
36
|
import type { ProverNode } from '@aztec/prover-node';
|
|
37
37
|
import { type PXEService, createPXEService, getPXEServiceConfig } from '@aztec/pxe/server';
|
|
38
|
+
import type { SequencerClient } from '@aztec/sequencer-client';
|
|
38
39
|
import { tryStop } from '@aztec/stdlib/interfaces/server';
|
|
39
40
|
import { getConfigEnvVars as getTelemetryConfig, initTelemetryClient } from '@aztec/telemetry-client';
|
|
40
41
|
import { getGenesisValues } from '@aztec/world-state/testing';
|
|
@@ -74,6 +75,7 @@ export type SubsystemsContext = {
|
|
|
74
75
|
proverNode?: ProverNode;
|
|
75
76
|
watcher: AnvilTestWatcher;
|
|
76
77
|
cheatCodes: CheatCodes;
|
|
78
|
+
sequencer: SequencerClient;
|
|
77
79
|
dateProvider: TestDateProvider;
|
|
78
80
|
blobSink: BlobSinkServer;
|
|
79
81
|
initialFundedAccounts: InitialAccountData[];
|
|
@@ -472,6 +474,7 @@ async function setupFromFresh(
|
|
|
472
474
|
anvil,
|
|
473
475
|
aztecNode,
|
|
474
476
|
pxe,
|
|
477
|
+
sequencer: aztecNode.getSequencer()!,
|
|
475
478
|
acvmConfig,
|
|
476
479
|
bbConfig,
|
|
477
480
|
deployL1ContractsValues,
|
|
@@ -590,6 +593,7 @@ async function setupFromState(statePath: string, logger: Logger): Promise<Subsys
|
|
|
590
593
|
anvil,
|
|
591
594
|
aztecNode,
|
|
592
595
|
pxe,
|
|
596
|
+
sequencer: aztecNode.getSequencer()!,
|
|
593
597
|
acvmConfig,
|
|
594
598
|
bbConfig,
|
|
595
599
|
proverNode,
|
|
@@ -653,8 +657,8 @@ export async function publicDeployAccounts(
|
|
|
653
657
|
const alreadyRegistered = (await sender.getContractClassMetadata(contractClass.id)).isContractClassPubliclyRegistered;
|
|
654
658
|
|
|
655
659
|
const calls: ContractFunctionInteraction[] = await Promise.all([
|
|
656
|
-
...(!alreadyRegistered ? [
|
|
657
|
-
...instances.map(instance =>
|
|
660
|
+
...(!alreadyRegistered ? [publishContractClass(sender, SchnorrAccountContractArtifact)] : []),
|
|
661
|
+
...instances.map(instance => publishInstance(sender, instance!)),
|
|
658
662
|
]);
|
|
659
663
|
|
|
660
664
|
const batch = new BatchCall(sender, calls);
|
package/src/fixtures/utils.ts
CHANGED
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
sleep,
|
|
26
26
|
waitForPXE,
|
|
27
27
|
} from '@aztec/aztec.js';
|
|
28
|
-
import {
|
|
28
|
+
import { publishContractClass, publishInstance } from '@aztec/aztec.js/deployment';
|
|
29
29
|
import { AnvilTestWatcher, CheatCodes } from '@aztec/aztec/testing';
|
|
30
30
|
import { createBlobSinkClient } from '@aztec/blob-sink/client';
|
|
31
31
|
import { type BlobSinkServer, createBlobSinkServer } from '@aztec/blob-sink/server';
|
|
@@ -71,7 +71,7 @@ import { FileCircuitRecorder } from '@aztec/simulator/testing';
|
|
|
71
71
|
import {
|
|
72
72
|
type ContractInstanceWithAddress,
|
|
73
73
|
getContractClassFromArtifact,
|
|
74
|
-
|
|
74
|
+
getContractInstanceFromInstantiationParams,
|
|
75
75
|
} from '@aztec/stdlib/contract';
|
|
76
76
|
import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
|
|
77
77
|
import { tryStop } from '@aztec/stdlib/interfaces/server';
|
|
@@ -576,6 +576,11 @@ export async function setup(
|
|
|
576
576
|
// handled by the if-else branches on line 632.
|
|
577
577
|
// For more details on why the tx would be dropped see `validate_include_by_timestamp` function in
|
|
578
578
|
// `noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/components/validation_requests.nr`.
|
|
579
|
+
//
|
|
580
|
+
// Note: If the following seems too convoluted or if it starts making problems, we could drop the "progressing
|
|
581
|
+
// past genesis via an account contract deployment" optimization and just call flush() on the sequencer and wait
|
|
582
|
+
// for an empty block to be mined. This would simplify it all quite a bit but the setup would be slower for tests
|
|
583
|
+
// deploying accounts.
|
|
579
584
|
const originalMinTxsPerBlock = config.minTxsPerBlock;
|
|
580
585
|
if (originalMinTxsPerBlock === undefined) {
|
|
581
586
|
throw new Error('minTxsPerBlock is undefined in e2e test setup');
|
|
@@ -717,7 +722,7 @@ export async function setup(
|
|
|
717
722
|
*/
|
|
718
723
|
|
|
719
724
|
// docs:start:public_deploy_accounts
|
|
720
|
-
export async function
|
|
725
|
+
export async function ensureAccountContractsPublished(sender: Wallet, accountsToDeploy: Wallet[]) {
|
|
721
726
|
// We have to check whether the accounts are already deployed. This can happen if the test runs against
|
|
722
727
|
// the sandbox and the test accounts exist
|
|
723
728
|
const accountsAndAddresses = await Promise.all(
|
|
@@ -725,7 +730,7 @@ export async function ensureAccountsPubliclyDeployed(sender: Wallet, accountsToD
|
|
|
725
730
|
const address = account.getAddress();
|
|
726
731
|
return {
|
|
727
732
|
address,
|
|
728
|
-
deployed: (await sender.getContractMetadata(address)).
|
|
733
|
+
deployed: (await sender.getContractMetadata(address)).isContractPublished,
|
|
729
734
|
};
|
|
730
735
|
}),
|
|
731
736
|
);
|
|
@@ -738,9 +743,9 @@ export async function ensureAccountsPubliclyDeployed(sender: Wallet, accountsToD
|
|
|
738
743
|
).map(contractMetadata => contractMetadata.contractInstance);
|
|
739
744
|
const contractClass = await getContractClassFromArtifact(SchnorrAccountContractArtifact);
|
|
740
745
|
if (!(await sender.getContractClassMetadata(contractClass.id, true)).isContractClassPubliclyRegistered) {
|
|
741
|
-
await (await
|
|
746
|
+
await (await publishContractClass(sender, SchnorrAccountContractArtifact)).send().wait();
|
|
742
747
|
}
|
|
743
|
-
const requests = await Promise.all(instances.map(async instance => await
|
|
748
|
+
const requests = await Promise.all(instances.map(async instance => await publishInstance(sender, instance!)));
|
|
744
749
|
const batch = new BatchCall(sender, requests);
|
|
745
750
|
await batch.send().wait();
|
|
746
751
|
}
|
|
@@ -828,7 +833,7 @@ export async function expectMappingDelta<K, V extends number | bigint>(
|
|
|
828
833
|
*/
|
|
829
834
|
export function getSponsoredFPCInstance(): Promise<ContractInstanceWithAddress> {
|
|
830
835
|
return Promise.resolve(
|
|
831
|
-
|
|
836
|
+
getContractInstanceFromInstantiationParams(SponsoredFPCContract.artifact, {
|
|
832
837
|
salt: new Fr(SPONSORED_FPC_SALT),
|
|
833
838
|
}),
|
|
834
839
|
);
|
|
@@ -848,7 +853,7 @@ export async function getSponsoredFPCAddress() {
|
|
|
848
853
|
* Deploy a sponsored FPC contract to a running instance.
|
|
849
854
|
*/
|
|
850
855
|
export async function setupSponsoredFPC(pxe: PXE) {
|
|
851
|
-
const instance = await
|
|
856
|
+
const instance = await getContractInstanceFromInstantiationParams(SponsoredFPCContract.artifact, {
|
|
852
857
|
salt: new Fr(SPONSORED_FPC_SALT),
|
|
853
858
|
});
|
|
854
859
|
|
|
@@ -26,7 +26,7 @@ import { computeL2ToL1MembershipWitness } from '@aztec/stdlib/messaging';
|
|
|
26
26
|
import { jest } from '@jest/globals';
|
|
27
27
|
import { type GetContractReturnType, getContract, parseEther, toFunctionSelector } from 'viem';
|
|
28
28
|
|
|
29
|
-
import {
|
|
29
|
+
import { ensureAccountContractsPublished } from '../fixtures/utils.js';
|
|
30
30
|
import { CrossChainTestHarness } from './cross_chain_test_harness.js';
|
|
31
31
|
|
|
32
32
|
// PSA: This tests works on forked mainnet. There is a dump of the data in `dumpedState` such that we
|
|
@@ -117,7 +117,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
117
117
|
// sponsorAddress = sponsorWallet.getAddress();
|
|
118
118
|
ownerEthAddress = EthAddress.fromString((await l1Client.getAddresses())[0]);
|
|
119
119
|
|
|
120
|
-
await
|
|
120
|
+
await ensureAccountContractsPublished(ownerWallet, [ownerWallet, sponsorWallet]);
|
|
121
121
|
|
|
122
122
|
logger.info('Deploying DAI Portal, initializing and deploying l2 contract...');
|
|
123
123
|
daiCrossChainHarness = await CrossChainTestHarness.new(
|