@aztec/end-to-end 3.0.0-nightly.20251001 → 3.0.0-nightly.20251002
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.d.ts +2 -3
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/client_flows_benchmark.js +17 -12
- package/dest/e2e_fees/bridging_race.notest.js +1 -1
- package/dest/e2e_fees/fees_test.d.ts.map +1 -1
- package/dest/e2e_fees/fees_test.js +0 -10
- package/dest/e2e_p2p/shared.js +2 -2
- package/dest/fixtures/snapshot_manager.d.ts +1 -1
- package/dest/fixtures/snapshot_manager.d.ts.map +1 -1
- package/dest/fixtures/snapshot_manager.js +4 -2
- package/dest/fixtures/token_utils.js +2 -2
- package/dest/fixtures/utils.js +3 -3
- package/dest/shared/submit-transactions.d.ts.map +1 -1
- package/dest/shared/submit-transactions.js +3 -2
- package/dest/simulators/token_simulator.js +1 -1
- package/dest/spartan/setup_test_wallets.d.ts +2 -2
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +22 -16
- package/package.json +38 -38
- package/src/bench/client_flows/client_flows_benchmark.ts +22 -14
- package/src/e2e_fees/bridging_race.notest.ts +1 -1
- package/src/e2e_fees/fees_test.ts +0 -12
- package/src/e2e_p2p/shared.ts +2 -2
- package/src/fixtures/snapshot_manager.ts +5 -3
- package/src/fixtures/token_utils.ts +2 -2
- package/src/fixtures/utils.ts +3 -3
- package/src/guides/up_quick_start.sh +2 -2
- package/src/shared/submit-transactions.ts +2 -1
- package/src/simulators/token_simulator.ts +1 -1
- package/src/spartan/setup_test_wallets.ts +24 -23
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AztecAddress, type AztecNode,
|
|
1
|
+
import { type AppConfigurableFeePaymentMethod, AztecAddress, type AztecNode, FeeJuicePaymentMethodWithClaim, type Logger, PrivateFeePaymentMethod, SponsoredFeePaymentMethod, type Wallet } from '@aztec/aztec.js';
|
|
2
2
|
import { CheatCodes } from '@aztec/aztec/testing';
|
|
3
3
|
import { type DeployL1ContractsArgs } from '@aztec/ethereum';
|
|
4
4
|
import { ChainMonitor } from '@aztec/ethereum/test';
|
|
@@ -15,7 +15,7 @@ import { CrossChainTestHarness } from '../../shared/cross_chain_test_harness.js'
|
|
|
15
15
|
import { type GasBridgingTestHarness } from '../../shared/gas_portal_test_harness.js';
|
|
16
16
|
import { type ClientFlowsConfig } from './config.js';
|
|
17
17
|
export type AccountType = 'ecdsar1' | 'schnorr';
|
|
18
|
-
export type FeePaymentMethodGetter = (wallet: Wallet, sender: AztecAddress) => Promise<
|
|
18
|
+
export type FeePaymentMethodGetter = (wallet: Wallet, sender: AztecAddress) => Promise<AppConfigurableFeePaymentMethod | undefined>;
|
|
19
19
|
export type BenchmarkingFeePaymentMethod = 'bridged_fee_juice' | 'private_fpc' | 'sponsored_fpc' | 'fee_juice';
|
|
20
20
|
export declare class ClientFlowsBenchmark {
|
|
21
21
|
private snapshotManager;
|
|
@@ -64,6 +64,5 @@ export declare class ClientFlowsBenchmark {
|
|
|
64
64
|
getBridgedFeeJuicePaymentMethodForWallet(_wallet: Wallet, sender: AztecAddress): Promise<FeeJuicePaymentMethodWithClaim>;
|
|
65
65
|
getPrivateFPCPaymentMethodForWallet(wallet: Wallet, sender: AztecAddress): Promise<PrivateFeePaymentMethod>;
|
|
66
66
|
getSponsoredFPCPaymentMethodForWallet(_wallet: Wallet, _sender: AztecAddress): Promise<SponsoredFeePaymentMethod>;
|
|
67
|
-
getFeeJuicePaymentMethodForWallet(_wallet: Wallet, sender: AztecAddress): Promise<FeeJuicePaymentMethod>;
|
|
68
67
|
}
|
|
69
68
|
//# sourceMappingURL=client_flows_benchmark.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client_flows_benchmark.d.ts","sourceRoot":"","sources":["../../../src/bench/client_flows/client_flows_benchmark.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,KAAK,SAAS,EACd,
|
|
1
|
+
{"version":3,"file":"client_flows_benchmark.d.ts","sourceRoot":"","sources":["../../../src/bench/client_flows/client_flows_benchmark.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AztecAddress, FeeJuicePaymentMethodWithClaim, PrivateFeePaymentMethod, SponsoredFeePaymentMethod, createLogger } from '@aztec/aztec.js';
|
|
2
2
|
import { RollupContract, createExtendedL1Client, deployL1Contract } from '@aztec/ethereum';
|
|
3
3
|
import { ChainMonitor } from '@aztec/ethereum/test';
|
|
4
4
|
import { randomBytes } from '@aztec/foundation/crypto';
|
|
@@ -14,6 +14,7 @@ import { TokenContract as BananaCoin, TokenContract } from '@aztec/noir-contract
|
|
|
14
14
|
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
15
15
|
import { getCanonicalFeeJuice } from '@aztec/protocol-contracts/fee-juice';
|
|
16
16
|
import { getPXEConfig } from '@aztec/pxe/server';
|
|
17
|
+
import { GasSettings } from '@aztec/stdlib/gas';
|
|
17
18
|
import { deriveSigningKey } from '@aztec/stdlib/keys';
|
|
18
19
|
import { TestWallet } from '@aztec/test-wallet/server';
|
|
19
20
|
import { MNEMONIC } from '../../fixtures/fixtures.js';
|
|
@@ -79,7 +80,7 @@ export class ClientFlowsBenchmark {
|
|
|
79
80
|
},
|
|
80
81
|
// eslint-disable-next-line camelcase
|
|
81
82
|
fee_juice: {
|
|
82
|
-
forWallet:
|
|
83
|
+
forWallet: ()=>Promise.resolve(undefined),
|
|
83
84
|
circuits: 0
|
|
84
85
|
}
|
|
85
86
|
};
|
|
@@ -250,12 +251,13 @@ export class ClientFlowsBenchmark {
|
|
|
250
251
|
async createAndFundBenchmarkingAccountOnUserWallet(accountType) {
|
|
251
252
|
const benchysAccountManager = await this.createBenchmarkingAccountManager(this.adminWallet, accountType);
|
|
252
253
|
const benchysAccount = await benchysAccountManager.getAccount();
|
|
253
|
-
const benchysAddress = benchysAccountManager.
|
|
254
|
+
const benchysAddress = benchysAccountManager.address;
|
|
254
255
|
const claim = await this.feeJuiceBridgeTestHarness.prepareTokensOnL1(benchysAddress);
|
|
255
|
-
const
|
|
256
|
-
await
|
|
256
|
+
const behchysDeployMethod = await benchysAccountManager.getDeployMethod();
|
|
257
|
+
await behchysDeployMethod.send({
|
|
258
|
+
from: AztecAddress.ZERO,
|
|
257
259
|
fee: {
|
|
258
|
-
paymentMethod
|
|
260
|
+
paymentMethod: new FeeJuicePaymentMethodWithClaim(benchysAddress, claim)
|
|
259
261
|
}
|
|
260
262
|
}).wait();
|
|
261
263
|
// Register benchy on the user's Wallet, where we're going to be interacting from
|
|
@@ -264,7 +266,7 @@ export class ClientFlowsBenchmark {
|
|
|
264
266
|
salt: new Fr(benchysAccount.salt),
|
|
265
267
|
contract: benchysAccountManager.getAccountContract()
|
|
266
268
|
});
|
|
267
|
-
return accountManager.
|
|
269
|
+
return accountManager.address;
|
|
268
270
|
}
|
|
269
271
|
async applyDeployAmmSnapshot() {
|
|
270
272
|
await this.snapshotManager.snapshot('deploy_amm', async ()=>{
|
|
@@ -291,13 +293,16 @@ export class ClientFlowsBenchmark {
|
|
|
291
293
|
const claim = await this.feeJuiceBridgeTestHarness.prepareTokensOnL1(sender);
|
|
292
294
|
return new FeeJuicePaymentMethodWithClaim(sender, claim);
|
|
293
295
|
}
|
|
294
|
-
getPrivateFPCPaymentMethodForWallet(wallet, sender) {
|
|
295
|
-
|
|
296
|
+
async getPrivateFPCPaymentMethodForWallet(wallet, sender) {
|
|
297
|
+
// The private fee paying method assembled on the app side requires knowledge of the maximum
|
|
298
|
+
// fee the user is willing to pay
|
|
299
|
+
const maxFeesPerGas = (await this.aztecNode.getCurrentBaseFees()).mul(1.5);
|
|
300
|
+
const gasSettings = GasSettings.default({
|
|
301
|
+
maxFeesPerGas
|
|
302
|
+
});
|
|
303
|
+
return new PrivateFeePaymentMethod(this.bananaFPC.address, sender, wallet, gasSettings);
|
|
296
304
|
}
|
|
297
305
|
getSponsoredFPCPaymentMethodForWallet(_wallet, _sender) {
|
|
298
306
|
return Promise.resolve(new SponsoredFeePaymentMethod(this.sponsoredFPC.address));
|
|
299
307
|
}
|
|
300
|
-
getFeeJuicePaymentMethodForWallet(_wallet, sender) {
|
|
301
|
-
return Promise.resolve(new FeeJuicePaymentMethod(sender));
|
|
302
|
-
}
|
|
303
308
|
}
|
|
@@ -35,7 +35,7 @@ describe('e2e_fees bridging_race', ()=>{
|
|
|
35
35
|
salt: bobsSalt,
|
|
36
36
|
contract: new SchnorrAccountContract(bobsPrivateSigningKey)
|
|
37
37
|
});
|
|
38
|
-
bobsAddress = bobsAccountManager.
|
|
38
|
+
bobsAddress = bobsAccountManager.address;
|
|
39
39
|
});
|
|
40
40
|
it('Alice bridges funds to Bob', async ()=>{
|
|
41
41
|
// Tweak the token manager so the bridging happens immediately before the end of the current L2 slot
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fees_test.d.ts","sourceRoot":"","sources":["../../src/e2e_fees/fees_test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fees_test.d.ts","sourceRoot":"","sources":["../../src/e2e_fees/fees_test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { SchnorrAccountContract } from '@aztec/accounts/schnorr';
|
|
2
1
|
import { createLogger, sleep } from '@aztec/aztec.js';
|
|
3
2
|
import { RollupContract, createExtendedL1Client } from '@aztec/ethereum';
|
|
4
3
|
import { ChainMonitor } from '@aztec/ethereum/test';
|
|
@@ -144,15 +143,6 @@ const { E2E_DATA_PATH: dataPath } = process.env;
|
|
|
144
143
|
this.accounts = deployedAccounts.map((a)=>a.address);
|
|
145
144
|
this.accounts.forEach((a, i)=>this.logger.verbose(`Account ${i} address: ${a}`));
|
|
146
145
|
[this.aliceAddress, this.bobAddress, this.sequencerAddress] = this.accounts.slice(0, 3);
|
|
147
|
-
await Promise.all(deployedAccounts.map(async (acc)=>{
|
|
148
|
-
const accountData = {
|
|
149
|
-
secret: acc.secret,
|
|
150
|
-
salt: acc.salt,
|
|
151
|
-
contract: new SchnorrAccountContract(acc.signingKey)
|
|
152
|
-
};
|
|
153
|
-
const accountManager = await this.wallet.createAccount(accountData);
|
|
154
|
-
return accountManager.register();
|
|
155
|
-
}));
|
|
156
146
|
// We set Alice as the FPC admin to avoid the need for deployment of another account.
|
|
157
147
|
this.fpcAdmin = this.aliceAddress;
|
|
158
148
|
const canonicalFeeJuice = await getCanonicalFeeJuice();
|
package/dest/e2e_p2p/shared.js
CHANGED
|
@@ -38,7 +38,7 @@ export const submitTransactions = async (logger, node, numTxs, fundedAccount)=>{
|
|
|
38
38
|
useLogSuffix: true
|
|
39
39
|
});
|
|
40
40
|
const fundedAccountManager = await wallet.createSchnorrAccount(fundedAccount.secret, fundedAccount.salt);
|
|
41
|
-
return submitTxsTo(wallet, fundedAccountManager.
|
|
41
|
+
return submitTxsTo(wallet, fundedAccountManager.address, numTxs, logger);
|
|
42
42
|
};
|
|
43
43
|
export async function prepareTransactions(logger, node, numTxs, fundedAccount) {
|
|
44
44
|
const rpcConfig = getRpcConfig();
|
|
@@ -57,7 +57,7 @@ export async function prepareTransactions(logger, node, numTxs, fundedAccount) {
|
|
|
57
57
|
const contract = await TestContract.at(testContractInstance.address, wallet);
|
|
58
58
|
return timesAsync(numTxs, async ()=>{
|
|
59
59
|
const tx = await contract.methods.emit_nullifier(Fr.random()).prove({
|
|
60
|
-
from: fundedAccountManager.
|
|
60
|
+
from: fundedAccountManager.address
|
|
61
61
|
});
|
|
62
62
|
const txHash = tx.getTxHash();
|
|
63
63
|
logger.info(`Tx prepared with hash ${txHash}`);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type InitialAccountData } from '@aztec/accounts/testing';
|
|
2
2
|
import { type AztecNodeConfig, AztecNodeService } from '@aztec/aztec-node';
|
|
3
|
-
import {
|
|
3
|
+
import { AztecAddress, type AztecNode, type Logger, type Wallet } from '@aztec/aztec.js';
|
|
4
4
|
import { AnvilTestWatcher, CheatCodes } from '@aztec/aztec/testing';
|
|
5
5
|
import { type BlobSinkServer } from '@aztec/blob-sink/server';
|
|
6
6
|
import { type DeployL1ContractsArgs, type DeployL1ContractsReturnType } from '@aztec/ethereum';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot_manager.d.ts","sourceRoot":"","sources":["../../src/fixtures/snapshot_manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,kBAAkB,EAA2B,MAAM,yBAAyB,CAAC;AAC3F,OAAO,EAAE,KAAK,eAAe,EAAE,gBAAgB,EAAoB,MAAM,mBAAmB,CAAC;AAC7F,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"snapshot_manager.d.ts","sourceRoot":"","sources":["../../src/fixtures/snapshot_manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { SchnorrAccountContractArtifact } from '@aztec/accounts/schnorr';
|
|
2
2
|
import { generateSchnorrAccounts } from '@aztec/accounts/testing';
|
|
3
3
|
import { AztecNodeService, getConfigEnvVars } from '@aztec/aztec-node';
|
|
4
|
-
import { BatchCall, EthAddress, getContractClassFromArtifact, waitForProven } from '@aztec/aztec.js';
|
|
4
|
+
import { AztecAddress, BatchCall, EthAddress, getContractClassFromArtifact, waitForProven } from '@aztec/aztec.js';
|
|
5
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';
|
|
@@ -463,7 +463,9 @@ export function createSnapshotManager(testName, dataPath, config = {}, deployL1C
|
|
|
463
463
|
// Serial due to https://github.com/AztecProtocol/aztec-packages/issues/12045
|
|
464
464
|
for(let i = 0; i < deployedAccounts.length; i++){
|
|
465
465
|
const accountManager = await wallet.createSchnorrAccount(deployedAccounts[i].secret, deployedAccounts[i].salt, deployedAccounts[i].signingKey);
|
|
466
|
-
await accountManager.
|
|
466
|
+
const deployMethod = await accountManager.getDeployMethod();
|
|
467
|
+
await deployMethod.send({
|
|
468
|
+
from: AztecAddress.ZERO,
|
|
467
469
|
skipClassPublication: i !== 0
|
|
468
470
|
}).wait();
|
|
469
471
|
}
|
|
@@ -26,9 +26,9 @@ export async function expectTokenBalance(wallet, token, owner, expectedBalance,
|
|
|
26
26
|
expect(balance).toBe(expectedBalance);
|
|
27
27
|
}
|
|
28
28
|
export async function mintNotes(wallet, minter, recipient, asset, noteAmounts) {
|
|
29
|
-
// We can only mint
|
|
29
|
+
// We can only mint 5 notes at a time, since that's the maximum number of calls our entrypoints allow
|
|
30
30
|
// TODO(#13024): mint as many notes as possible in a single tx
|
|
31
|
-
const notesPerIteration =
|
|
31
|
+
const notesPerIteration = 5;
|
|
32
32
|
for(let mintedNotes = 0; mintedNotes < noteAmounts.length; mintedNotes += notesPerIteration){
|
|
33
33
|
const toMint = noteAmounts.slice(mintedNotes, mintedNotes + notesPerIteration);
|
|
34
34
|
const actions = toMint.map((amt)=>asset.methods.mint_to_private(recipient, amt));
|
package/dest/fixtures/utils.js
CHANGED
|
@@ -145,7 +145,7 @@ export const setupL1Contracts = async (l1RpcUrls, account, logger, args = {}, ch
|
|
|
145
145
|
}
|
|
146
146
|
const testAccounts = await Promise.all(initialFundedAccounts.slice(0, numberOfAccounts).map(async (account)=>{
|
|
147
147
|
const accountManager = await wallet.createSchnorrAccount(account.secret, account.salt, account.signingKey);
|
|
148
|
-
return accountManager.
|
|
148
|
+
return accountManager.address;
|
|
149
149
|
}));
|
|
150
150
|
return {
|
|
151
151
|
aztecNode,
|
|
@@ -415,8 +415,8 @@ export const setupL1Contracts = async (l1RpcUrls, account, logger, args = {}, ch
|
|
|
415
415
|
} else {
|
|
416
416
|
logger.info(`${numberOfAccounts} accounts are being deployed. Reliably progressing past genesis by setting minTxsPerBlock to 1 and waiting for the accounts to be deployed`);
|
|
417
417
|
const accountsData = initialFundedAccounts.slice(0, numberOfAccounts);
|
|
418
|
-
const accountManagers = await deployFundedSchnorrAccounts(wallet, accountsData);
|
|
419
|
-
accounts = accountManagers.map((accountManager)=>accountManager.
|
|
418
|
+
const accountManagers = await deployFundedSchnorrAccounts(wallet, aztecNode, accountsData);
|
|
419
|
+
accounts = accountManagers.map((accountManager)=>accountManager.address);
|
|
420
420
|
}
|
|
421
421
|
// Now we restore the original minTxsPerBlock setting.
|
|
422
422
|
sequencerClient.getSequencer().updateConfig({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submit-transactions.d.ts","sourceRoot":"","sources":["../../src/shared/submit-transactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAsB,KAAK,MAAM,EAAE,KAAK,MAAM,EAAY,MAAM,iBAAiB,CAAC;AAEvG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAG5D,eAAO,MAAM,WAAW,GACtB,QAAQ,UAAU,EAClB,WAAW,YAAY,EACvB,QAAQ,MAAM,EACd,QAAQ,MAAM,KACb,OAAO,CAAC,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"submit-transactions.d.ts","sourceRoot":"","sources":["../../src/shared/submit-transactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAsB,KAAK,MAAM,EAAE,KAAK,MAAM,EAAY,MAAM,iBAAiB,CAAC;AAEvG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAG5D,eAAO,MAAM,WAAW,GACtB,QAAQ,UAAU,EAClB,WAAW,YAAY,EACvB,QAAQ,MAAM,EACd,QAAQ,MAAM,KACb,OAAO,CAAC,MAAM,EAAE,CAsBlB,CAAC"}
|
|
@@ -5,8 +5,9 @@ export const submitTxsTo = async (wallet, submitter, numTxs, logger)=>{
|
|
|
5
5
|
const txs = [];
|
|
6
6
|
await Promise.all(times(numTxs, async ()=>{
|
|
7
7
|
const accountManager = await wallet.createSchnorrAccount(Fr.random(), Fr.random(), GrumpkinScalar.random());
|
|
8
|
-
const
|
|
9
|
-
|
|
8
|
+
const deployMethod = await accountManager.getDeployMethod();
|
|
9
|
+
const tx = deployMethod.send({
|
|
10
|
+
from: submitter
|
|
10
11
|
});
|
|
11
12
|
const txHash = await tx.getTxHash();
|
|
12
13
|
logger.info(`Tx sent with hash ${txHash}`);
|
|
@@ -88,7 +88,7 @@ export class TokenSimulator {
|
|
|
88
88
|
this.token.methods.total_supply(),
|
|
89
89
|
...this.accounts.map((address)=>this.token.methods.balance_of_public(address))
|
|
90
90
|
];
|
|
91
|
-
const results = (await Promise.all(chunk(calls,
|
|
91
|
+
const results = (await Promise.all(chunk(calls, 5).map((batch)=>new BatchCall(this.defaultWallet, batch).simulate({
|
|
92
92
|
from: this.defaultAddress
|
|
93
93
|
})))).flat();
|
|
94
94
|
expect(results[0]).toEqual(this.totalSupply);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type AztecAddress, type AztecNode
|
|
1
|
+
import { type AppConfigurableFeePaymentMethod, AztecAddress, type AztecNode } from '@aztec/aztec.js';
|
|
2
2
|
import type { Logger } from '@aztec/foundation/log';
|
|
3
3
|
import { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
4
4
|
import { TestWallet } from '@aztec/test-wallet/server';
|
|
@@ -20,7 +20,7 @@ export declare function performTransfers({ testAccounts, rounds, transferAmount,
|
|
|
20
20
|
rounds: number;
|
|
21
21
|
transferAmount: bigint;
|
|
22
22
|
logger: Logger;
|
|
23
|
-
feePaymentMethod?:
|
|
23
|
+
feePaymentMethod?: AppConfigurableFeePaymentMethod;
|
|
24
24
|
}): Promise<void>;
|
|
25
25
|
export declare function createWalletAndAztecNodeClient(nodeUrl: string, proverEnabled: boolean, logger: Logger): Promise<{
|
|
26
26
|
wallet: TestWallet;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup_test_wallets.d.ts","sourceRoot":"","sources":["../../src/spartan/setup_test_wallets.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,YAAY,
|
|
1
|
+
{"version":3,"file":"setup_test_wallets.d.ts","sourceRoot":"","sources":["../../src/spartan/setup_test_wallets.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,+BAA+B,EACpC,YAAY,EACZ,KAAK,SAAS,EAQf,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAG/D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAMvD,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,aAAa,EAAE,aAAa,CAAC;IAC7B,iBAAiB,EAAE,YAAY,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,YAAY,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;CAC5B;AAMD,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,CAAC,CAyBvB;AAED,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,qBAAqB,SAAI,GACxB,OAAO,CAAC,YAAY,CAAC,CAuCvB;AAED,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EAAE,EACnB,oBAAoB,EAAE,MAAM,EAC5B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,qBAAqB,SAAI,GACxB,OAAO,CAAC,YAAY,CAAC,CA+CvB;AA6ED,wBAAsB,gBAAgB,CAAC,EACrC,YAAY,EACZ,MAAM,EACN,cAAc,EACd,MAAM,EACN,gBAAgB,GACjB,EAAE;IACD,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,+BAA+B,CAAC;CACpD,iBAiBA;AAED,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,OAAO,EACtB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CAqBrF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { generateSchnorrAccounts } from '@aztec/accounts/testing';
|
|
2
|
-
import { FeeJuicePaymentMethodWithClaim, Fr, L1FeeJuicePortalManager, SponsoredFeePaymentMethod, createAztecNodeClient, retryUntil } from '@aztec/aztec.js';
|
|
2
|
+
import { AztecAddress, FeeJuicePaymentMethodWithClaim, Fr, L1FeeJuicePortalManager, SponsoredFeePaymentMethod, createAztecNodeClient, retryUntil } from '@aztec/aztec.js';
|
|
3
3
|
import { createEthereumChain, createExtendedL1Client } from '@aztec/ethereum';
|
|
4
4
|
import { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
5
5
|
import { registerInitialSandboxAccountsInWallet } from '@aztec/test-wallet';
|
|
@@ -35,7 +35,9 @@ export async function deploySponsoredTestAccounts(wallet, aztecNode, mintAmount,
|
|
|
35
35
|
const fundedAccounts = await Promise.all(funded.map((a)=>wallet.createSchnorrAccount(a.secret, a.salt)));
|
|
36
36
|
await registerSponsoredFPC(wallet);
|
|
37
37
|
const paymentMethod = new SponsoredFeePaymentMethod(await getSponsoredFPCAddress());
|
|
38
|
-
await recipientAccount.
|
|
38
|
+
const recipientDeployMethod = await recipientAccount.getDeployMethod();
|
|
39
|
+
await recipientDeployMethod.send({
|
|
40
|
+
from: AztecAddress.ZERO,
|
|
39
41
|
fee: {
|
|
40
42
|
paymentMethod
|
|
41
43
|
}
|
|
@@ -43,27 +45,29 @@ export async function deploySponsoredTestAccounts(wallet, aztecNode, mintAmount,
|
|
|
43
45
|
timeout: 2400
|
|
44
46
|
});
|
|
45
47
|
await Promise.all(fundedAccounts.map(async (a)=>{
|
|
46
|
-
await a.
|
|
48
|
+
const deployMethod = await a.getDeployMethod();
|
|
49
|
+
await deployMethod.send({
|
|
50
|
+
from: AztecAddress.ZERO,
|
|
47
51
|
fee: {
|
|
48
52
|
paymentMethod
|
|
49
53
|
}
|
|
50
54
|
}).wait({
|
|
51
55
|
timeout: 2400
|
|
52
56
|
}); // increase timeout on purpose in order to account for two empty epochs
|
|
53
|
-
logger.info(`Account deployed at ${a.
|
|
57
|
+
logger.info(`Account deployed at ${a.address}`);
|
|
54
58
|
}));
|
|
55
59
|
const tokenAdmin = fundedAccounts[0];
|
|
56
|
-
const tokenAddress = await deployTokenAndMint(wallet, fundedAccounts.map((acc)=>acc.
|
|
60
|
+
const tokenAddress = await deployTokenAndMint(wallet, fundedAccounts.map((acc)=>acc.address), tokenAdmin.address, mintAmount, new SponsoredFeePaymentMethod(await getSponsoredFPCAddress()), logger);
|
|
57
61
|
const tokenContract = await TokenContract.at(tokenAddress, wallet);
|
|
58
62
|
return {
|
|
59
63
|
aztecNode,
|
|
60
64
|
wallet,
|
|
61
|
-
accounts: fundedAccounts.map((acc)=>acc.
|
|
62
|
-
tokenAdminAddress: tokenAdmin.
|
|
65
|
+
accounts: fundedAccounts.map((acc)=>acc.address),
|
|
66
|
+
tokenAdminAddress: tokenAdmin.address,
|
|
63
67
|
tokenName: TOKEN_NAME,
|
|
64
68
|
tokenAddress,
|
|
65
69
|
tokenContract,
|
|
66
|
-
recipientAddress: recipientAccount.
|
|
70
|
+
recipientAddress: recipientAccount.address
|
|
67
71
|
};
|
|
68
72
|
}
|
|
69
73
|
export async function deployTestAccountsWithTokens(nodeUrl, l1RpcUrls, mnemonicOrPrivateKey, mintAmount, logger, numberOfFundedWallets = 1) {
|
|
@@ -72,32 +76,34 @@ export async function deployTestAccountsWithTokens(nodeUrl, l1RpcUrls, mnemonicO
|
|
|
72
76
|
const [recipient, ...funded] = await generateSchnorrAccounts(numberOfFundedWallets + 1);
|
|
73
77
|
const recipientAccount = await wallet.createSchnorrAccount(recipient.secret, recipient.salt);
|
|
74
78
|
const fundedAccounts = await Promise.all(funded.map((a)=>wallet.createSchnorrAccount(a.secret, a.salt)));
|
|
75
|
-
const claims = await Promise.all(fundedAccounts.map((a)=>bridgeL1FeeJuice(l1RpcUrls, mnemonicOrPrivateKey, aztecNode, a.
|
|
79
|
+
const claims = await Promise.all(fundedAccounts.map((a)=>bridgeL1FeeJuice(l1RpcUrls, mnemonicOrPrivateKey, aztecNode, a.address, undefined, logger)));
|
|
76
80
|
// Progress by 3 L2 blocks so that the l1ToL2Message added above will be available to use on L2.
|
|
77
81
|
await advanceL2Block(aztecNode);
|
|
78
82
|
await advanceL2Block(aztecNode);
|
|
79
83
|
await advanceL2Block(aztecNode);
|
|
80
84
|
await Promise.all(fundedAccounts.map(async (a, i)=>{
|
|
81
|
-
const paymentMethod = new FeeJuicePaymentMethodWithClaim(a.
|
|
82
|
-
await a.
|
|
85
|
+
const paymentMethod = new FeeJuicePaymentMethodWithClaim(a.address, claims[i]);
|
|
86
|
+
const deployMethod = await a.getDeployMethod();
|
|
87
|
+
await deployMethod.send({
|
|
88
|
+
from: AztecAddress.ZERO,
|
|
83
89
|
fee: {
|
|
84
90
|
paymentMethod
|
|
85
91
|
}
|
|
86
92
|
}).wait();
|
|
87
|
-
logger.info(`Account deployed at ${a.
|
|
93
|
+
logger.info(`Account deployed at ${a.address}`);
|
|
88
94
|
}));
|
|
89
95
|
const tokenAdmin = fundedAccounts[0];
|
|
90
|
-
const tokenAddress = await deployTokenAndMint(wallet, fundedAccounts.map((acc)=>acc.
|
|
96
|
+
const tokenAddress = await deployTokenAndMint(wallet, fundedAccounts.map((acc)=>acc.address), tokenAdmin.address, mintAmount, undefined, logger);
|
|
91
97
|
const tokenContract = await TokenContract.at(tokenAddress, wallet);
|
|
92
98
|
return {
|
|
93
99
|
aztecNode,
|
|
94
100
|
wallet,
|
|
95
|
-
accounts: fundedAccounts.map((acc)=>acc.
|
|
96
|
-
tokenAdminAddress: tokenAdmin.
|
|
101
|
+
accounts: fundedAccounts.map((acc)=>acc.address),
|
|
102
|
+
tokenAdminAddress: tokenAdmin.address,
|
|
97
103
|
tokenName: TOKEN_NAME,
|
|
98
104
|
tokenAddress,
|
|
99
105
|
tokenContract,
|
|
100
|
-
recipientAddress: recipientAccount.
|
|
106
|
+
recipientAddress: recipientAccount.address
|
|
101
107
|
};
|
|
102
108
|
}
|
|
103
109
|
async function bridgeL1FeeJuice(l1RpcUrls, mnemonicOrPrivateKey, aztecNode, recipient, amount, log) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/end-to-end",
|
|
3
|
-
"version": "3.0.0-nightly.
|
|
3
|
+
"version": "3.0.0-nightly.20251002",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": "./dest/index.js",
|
|
6
6
|
"inherits": [
|
|
@@ -25,42 +25,42 @@
|
|
|
25
25
|
"formatting": "run -T prettier --check ./src && run -T eslint ./src"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@aztec/accounts": "3.0.0-nightly.
|
|
29
|
-
"@aztec/archiver": "3.0.0-nightly.
|
|
30
|
-
"@aztec/aztec": "3.0.0-nightly.
|
|
31
|
-
"@aztec/aztec-node": "3.0.0-nightly.
|
|
32
|
-
"@aztec/aztec.js": "3.0.0-nightly.
|
|
33
|
-
"@aztec/bb-prover": "3.0.0-nightly.
|
|
34
|
-
"@aztec/blob-lib": "3.0.0-nightly.
|
|
35
|
-
"@aztec/blob-sink": "3.0.0-nightly.
|
|
36
|
-
"@aztec/bot": "3.0.0-nightly.
|
|
37
|
-
"@aztec/cli": "3.0.0-nightly.
|
|
38
|
-
"@aztec/constants": "3.0.0-nightly.
|
|
39
|
-
"@aztec/entrypoints": "3.0.0-nightly.
|
|
40
|
-
"@aztec/epoch-cache": "3.0.0-nightly.
|
|
41
|
-
"@aztec/ethereum": "3.0.0-nightly.
|
|
42
|
-
"@aztec/foundation": "3.0.0-nightly.
|
|
43
|
-
"@aztec/kv-store": "3.0.0-nightly.
|
|
44
|
-
"@aztec/l1-artifacts": "3.0.0-nightly.
|
|
45
|
-
"@aztec/merkle-tree": "3.0.0-nightly.
|
|
46
|
-
"@aztec/node-keystore": "3.0.0-nightly.
|
|
47
|
-
"@aztec/noir-contracts.js": "3.0.0-nightly.
|
|
48
|
-
"@aztec/noir-noirc_abi": "3.0.0-nightly.
|
|
49
|
-
"@aztec/noir-protocol-circuits-types": "3.0.0-nightly.
|
|
50
|
-
"@aztec/noir-test-contracts.js": "3.0.0-nightly.
|
|
51
|
-
"@aztec/p2p": "3.0.0-nightly.
|
|
52
|
-
"@aztec/protocol-contracts": "3.0.0-nightly.
|
|
53
|
-
"@aztec/prover-client": "3.0.0-nightly.
|
|
54
|
-
"@aztec/prover-node": "3.0.0-nightly.
|
|
55
|
-
"@aztec/pxe": "3.0.0-nightly.
|
|
56
|
-
"@aztec/sequencer-client": "3.0.0-nightly.
|
|
57
|
-
"@aztec/simulator": "3.0.0-nightly.
|
|
58
|
-
"@aztec/slasher": "3.0.0-nightly.
|
|
59
|
-
"@aztec/stdlib": "3.0.0-nightly.
|
|
60
|
-
"@aztec/telemetry-client": "3.0.0-nightly.
|
|
61
|
-
"@aztec/test-wallet": "3.0.0-nightly.
|
|
62
|
-
"@aztec/validator-client": "3.0.0-nightly.
|
|
63
|
-
"@aztec/world-state": "3.0.0-nightly.
|
|
28
|
+
"@aztec/accounts": "3.0.0-nightly.20251002",
|
|
29
|
+
"@aztec/archiver": "3.0.0-nightly.20251002",
|
|
30
|
+
"@aztec/aztec": "3.0.0-nightly.20251002",
|
|
31
|
+
"@aztec/aztec-node": "3.0.0-nightly.20251002",
|
|
32
|
+
"@aztec/aztec.js": "3.0.0-nightly.20251002",
|
|
33
|
+
"@aztec/bb-prover": "3.0.0-nightly.20251002",
|
|
34
|
+
"@aztec/blob-lib": "3.0.0-nightly.20251002",
|
|
35
|
+
"@aztec/blob-sink": "3.0.0-nightly.20251002",
|
|
36
|
+
"@aztec/bot": "3.0.0-nightly.20251002",
|
|
37
|
+
"@aztec/cli": "3.0.0-nightly.20251002",
|
|
38
|
+
"@aztec/constants": "3.0.0-nightly.20251002",
|
|
39
|
+
"@aztec/entrypoints": "3.0.0-nightly.20251002",
|
|
40
|
+
"@aztec/epoch-cache": "3.0.0-nightly.20251002",
|
|
41
|
+
"@aztec/ethereum": "3.0.0-nightly.20251002",
|
|
42
|
+
"@aztec/foundation": "3.0.0-nightly.20251002",
|
|
43
|
+
"@aztec/kv-store": "3.0.0-nightly.20251002",
|
|
44
|
+
"@aztec/l1-artifacts": "3.0.0-nightly.20251002",
|
|
45
|
+
"@aztec/merkle-tree": "3.0.0-nightly.20251002",
|
|
46
|
+
"@aztec/node-keystore": "3.0.0-nightly.20251002",
|
|
47
|
+
"@aztec/noir-contracts.js": "3.0.0-nightly.20251002",
|
|
48
|
+
"@aztec/noir-noirc_abi": "3.0.0-nightly.20251002",
|
|
49
|
+
"@aztec/noir-protocol-circuits-types": "3.0.0-nightly.20251002",
|
|
50
|
+
"@aztec/noir-test-contracts.js": "3.0.0-nightly.20251002",
|
|
51
|
+
"@aztec/p2p": "3.0.0-nightly.20251002",
|
|
52
|
+
"@aztec/protocol-contracts": "3.0.0-nightly.20251002",
|
|
53
|
+
"@aztec/prover-client": "3.0.0-nightly.20251002",
|
|
54
|
+
"@aztec/prover-node": "3.0.0-nightly.20251002",
|
|
55
|
+
"@aztec/pxe": "3.0.0-nightly.20251002",
|
|
56
|
+
"@aztec/sequencer-client": "3.0.0-nightly.20251002",
|
|
57
|
+
"@aztec/simulator": "3.0.0-nightly.20251002",
|
|
58
|
+
"@aztec/slasher": "3.0.0-nightly.20251002",
|
|
59
|
+
"@aztec/stdlib": "3.0.0-nightly.20251002",
|
|
60
|
+
"@aztec/telemetry-client": "3.0.0-nightly.20251002",
|
|
61
|
+
"@aztec/test-wallet": "3.0.0-nightly.20251002",
|
|
62
|
+
"@aztec/validator-client": "3.0.0-nightly.20251002",
|
|
63
|
+
"@aztec/world-state": "3.0.0-nightly.20251002",
|
|
64
64
|
"@iarna/toml": "^2.2.5",
|
|
65
65
|
"@jest/globals": "^30.0.0",
|
|
66
66
|
"@noble/curves": "=1.0.0",
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
"snappy": "^7.2.2",
|
|
93
93
|
"stream-browserify": "^3.0.0",
|
|
94
94
|
"string-argv": "^0.3.2",
|
|
95
|
-
"ts-loader": "^9.
|
|
95
|
+
"ts-loader": "^9.5.4",
|
|
96
96
|
"ts-node": "^10.9.1",
|
|
97
97
|
"tslib": "^2.4.0",
|
|
98
98
|
"typescript": "^5.3.3",
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
|
+
type AppConfigurableFeePaymentMethod,
|
|
2
3
|
AztecAddress,
|
|
3
4
|
type AztecNode,
|
|
4
|
-
FeeJuicePaymentMethod,
|
|
5
5
|
FeeJuicePaymentMethodWithClaim,
|
|
6
|
-
type FeePaymentMethod,
|
|
7
6
|
type Logger,
|
|
8
7
|
PrivateFeePaymentMethod,
|
|
9
8
|
SponsoredFeePaymentMethod,
|
|
@@ -26,6 +25,7 @@ import { TokenContract as BananaCoin, TokenContract } from '@aztec/noir-contract
|
|
|
26
25
|
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
27
26
|
import { getCanonicalFeeJuice } from '@aztec/protocol-contracts/fee-juice';
|
|
28
27
|
import { type PXEConfig, getPXEConfig } from '@aztec/pxe/server';
|
|
28
|
+
import { GasSettings } from '@aztec/stdlib/gas';
|
|
29
29
|
import { deriveSigningKey } from '@aztec/stdlib/keys';
|
|
30
30
|
import { TestWallet } from '@aztec/test-wallet/server';
|
|
31
31
|
|
|
@@ -49,7 +49,10 @@ import { type ClientFlowsConfig, FULL_FLOWS_CONFIG, KEY_FLOWS_CONFIG } from './c
|
|
|
49
49
|
const { E2E_DATA_PATH: dataPath, BENCHMARK_CONFIG } = process.env;
|
|
50
50
|
|
|
51
51
|
export type AccountType = 'ecdsar1' | 'schnorr';
|
|
52
|
-
export type FeePaymentMethodGetter = (
|
|
52
|
+
export type FeePaymentMethodGetter = (
|
|
53
|
+
wallet: Wallet,
|
|
54
|
+
sender: AztecAddress,
|
|
55
|
+
) => Promise<AppConfigurableFeePaymentMethod | undefined>;
|
|
53
56
|
export type BenchmarkingFeePaymentMethod = 'bridged_fee_juice' | 'private_fpc' | 'sponsored_fpc' | 'fee_juice';
|
|
54
57
|
|
|
55
58
|
export class ClientFlowsBenchmark {
|
|
@@ -112,7 +115,7 @@ export class ClientFlowsBenchmark {
|
|
|
112
115
|
},
|
|
113
116
|
// eslint-disable-next-line camelcase
|
|
114
117
|
fee_juice: {
|
|
115
|
-
forWallet:
|
|
118
|
+
forWallet: () => Promise.resolve(undefined),
|
|
116
119
|
circuits: 0,
|
|
117
120
|
},
|
|
118
121
|
};
|
|
@@ -344,17 +347,22 @@ export class ClientFlowsBenchmark {
|
|
|
344
347
|
public async createAndFundBenchmarkingAccountOnUserWallet(accountType: AccountType) {
|
|
345
348
|
const benchysAccountManager = await this.createBenchmarkingAccountManager(this.adminWallet, accountType);
|
|
346
349
|
const benchysAccount = await benchysAccountManager.getAccount();
|
|
347
|
-
const benchysAddress = benchysAccountManager.
|
|
350
|
+
const benchysAddress = benchysAccountManager.address;
|
|
348
351
|
const claim = await this.feeJuiceBridgeTestHarness.prepareTokensOnL1(benchysAddress);
|
|
349
|
-
const
|
|
350
|
-
await
|
|
352
|
+
const behchysDeployMethod = await benchysAccountManager.getDeployMethod();
|
|
353
|
+
await behchysDeployMethod
|
|
354
|
+
.send({
|
|
355
|
+
from: AztecAddress.ZERO,
|
|
356
|
+
fee: { paymentMethod: new FeeJuicePaymentMethodWithClaim(benchysAddress, claim) },
|
|
357
|
+
})
|
|
358
|
+
.wait();
|
|
351
359
|
// Register benchy on the user's Wallet, where we're going to be interacting from
|
|
352
360
|
const accountManager = await this.userWallet.createAccount({
|
|
353
361
|
secret: benchysAccount.getSecretKey(),
|
|
354
362
|
salt: new Fr(benchysAccount.salt),
|
|
355
363
|
contract: benchysAccountManager.getAccountContract(),
|
|
356
364
|
});
|
|
357
|
-
return accountManager.
|
|
365
|
+
return accountManager.address;
|
|
358
366
|
}
|
|
359
367
|
|
|
360
368
|
public async applyDeployAmmSnapshot() {
|
|
@@ -388,15 +396,15 @@ export class ClientFlowsBenchmark {
|
|
|
388
396
|
return new FeeJuicePaymentMethodWithClaim(sender, claim);
|
|
389
397
|
}
|
|
390
398
|
|
|
391
|
-
public getPrivateFPCPaymentMethodForWallet(wallet: Wallet, sender: AztecAddress) {
|
|
392
|
-
|
|
399
|
+
public async getPrivateFPCPaymentMethodForWallet(wallet: Wallet, sender: AztecAddress) {
|
|
400
|
+
// The private fee paying method assembled on the app side requires knowledge of the maximum
|
|
401
|
+
// fee the user is willing to pay
|
|
402
|
+
const maxFeesPerGas = (await this.aztecNode.getCurrentBaseFees()).mul(1.5);
|
|
403
|
+
const gasSettings = GasSettings.default({ maxFeesPerGas });
|
|
404
|
+
return new PrivateFeePaymentMethod(this.bananaFPC.address, sender, wallet, gasSettings);
|
|
393
405
|
}
|
|
394
406
|
|
|
395
407
|
public getSponsoredFPCPaymentMethodForWallet(_wallet: Wallet, _sender: AztecAddress) {
|
|
396
408
|
return Promise.resolve(new SponsoredFeePaymentMethod(this.sponsoredFPC.address));
|
|
397
409
|
}
|
|
398
|
-
|
|
399
|
-
public getFeeJuicePaymentMethodForWallet(_wallet: Wallet, sender: AztecAddress) {
|
|
400
|
-
return Promise.resolve(new FeeJuicePaymentMethod(sender));
|
|
401
|
-
}
|
|
402
410
|
}
|
|
@@ -48,7 +48,7 @@ describe('e2e_fees bridging_race', () => {
|
|
|
48
48
|
salt: bobsSalt,
|
|
49
49
|
contract: new SchnorrAccountContract(bobsPrivateSigningKey),
|
|
50
50
|
});
|
|
51
|
-
bobsAddress = bobsAccountManager.
|
|
51
|
+
bobsAddress = bobsAccountManager.address;
|
|
52
52
|
});
|
|
53
53
|
|
|
54
54
|
it('Alice bridges funds to Bob', async () => {
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { SchnorrAccountContract } from '@aztec/accounts/schnorr';
|
|
2
1
|
import { type AztecAddress, type AztecNode, type Logger, createLogger, sleep } from '@aztec/aztec.js';
|
|
3
2
|
import { CheatCodes } from '@aztec/aztec/testing';
|
|
4
3
|
import { type DeployL1ContractsArgs, RollupContract, createExtendedL1Client } from '@aztec/ethereum';
|
|
@@ -190,17 +189,6 @@ export class FeesTest {
|
|
|
190
189
|
this.accounts = deployedAccounts.map(a => a.address);
|
|
191
190
|
this.accounts.forEach((a, i) => this.logger.verbose(`Account ${i} address: ${a}`));
|
|
192
191
|
[this.aliceAddress, this.bobAddress, this.sequencerAddress] = this.accounts.slice(0, 3);
|
|
193
|
-
await Promise.all(
|
|
194
|
-
deployedAccounts.map(async acc => {
|
|
195
|
-
const accountData = {
|
|
196
|
-
secret: acc.secret,
|
|
197
|
-
salt: acc.salt,
|
|
198
|
-
contract: new SchnorrAccountContract(acc.signingKey),
|
|
199
|
-
};
|
|
200
|
-
const accountManager = await this.wallet.createAccount(accountData);
|
|
201
|
-
return accountManager.register();
|
|
202
|
-
}),
|
|
203
|
-
);
|
|
204
192
|
|
|
205
193
|
// We set Alice as the FPC admin to avoid the need for deployment of another account.
|
|
206
194
|
this.fpcAdmin = this.aliceAddress;
|
package/src/e2e_p2p/shared.ts
CHANGED
|
@@ -65,7 +65,7 @@ export const submitTransactions = async (
|
|
|
65
65
|
rpcConfig.proverEnabled = false;
|
|
66
66
|
const wallet = await TestWallet.create(node, { ...getPXEConfig(), proverEnabled: false }, { useLogSuffix: true });
|
|
67
67
|
const fundedAccountManager = await wallet.createSchnorrAccount(fundedAccount.secret, fundedAccount.salt);
|
|
68
|
-
return submitTxsTo(wallet, fundedAccountManager.
|
|
68
|
+
return submitTxsTo(wallet, fundedAccountManager.address, numTxs, logger);
|
|
69
69
|
};
|
|
70
70
|
|
|
71
71
|
export async function prepareTransactions(
|
|
@@ -87,7 +87,7 @@ export async function prepareTransactions(
|
|
|
87
87
|
const contract = await TestContract.at(testContractInstance.address, wallet);
|
|
88
88
|
|
|
89
89
|
return timesAsync(numTxs, async () => {
|
|
90
|
-
const tx = await contract.methods.emit_nullifier(Fr.random()).prove({ from: fundedAccountManager.
|
|
90
|
+
const tx = await contract.methods.emit_nullifier(Fr.random()).prove({ from: fundedAccountManager.address });
|
|
91
91
|
const txHash = tx.getTxHash();
|
|
92
92
|
logger.info(`Tx prepared with hash ${txHash}`);
|
|
93
93
|
return tx;
|
|
@@ -2,7 +2,7 @@ import { SchnorrAccountContractArtifact } from '@aztec/accounts/schnorr';
|
|
|
2
2
|
import { type InitialAccountData, generateSchnorrAccounts } from '@aztec/accounts/testing';
|
|
3
3
|
import { type AztecNodeConfig, AztecNodeService, getConfigEnvVars } from '@aztec/aztec-node';
|
|
4
4
|
import {
|
|
5
|
-
|
|
5
|
+
AztecAddress,
|
|
6
6
|
type AztecNode,
|
|
7
7
|
BatchCall,
|
|
8
8
|
type ContractFunctionInteraction,
|
|
@@ -620,8 +620,10 @@ export const deployAccounts =
|
|
|
620
620
|
deployedAccounts[i].salt,
|
|
621
621
|
deployedAccounts[i].signingKey,
|
|
622
622
|
);
|
|
623
|
-
await accountManager
|
|
624
|
-
|
|
623
|
+
const deployMethod = await accountManager.getDeployMethod();
|
|
624
|
+
await deployMethod
|
|
625
|
+
.send({
|
|
626
|
+
from: AztecAddress.ZERO,
|
|
625
627
|
skipClassPublication: i !== 0, // Publish the contract class at most once.
|
|
626
628
|
})
|
|
627
629
|
.wait();
|
|
@@ -46,9 +46,9 @@ export async function mintNotes(
|
|
|
46
46
|
asset: TokenContract,
|
|
47
47
|
noteAmounts: bigint[],
|
|
48
48
|
): Promise<bigint> {
|
|
49
|
-
// We can only mint
|
|
49
|
+
// We can only mint 5 notes at a time, since that's the maximum number of calls our entrypoints allow
|
|
50
50
|
// TODO(#13024): mint as many notes as possible in a single tx
|
|
51
|
-
const notesPerIteration =
|
|
51
|
+
const notesPerIteration = 5;
|
|
52
52
|
for (let mintedNotes = 0; mintedNotes < noteAmounts.length; mintedNotes += notesPerIteration) {
|
|
53
53
|
const toMint = noteAmounts.slice(mintedNotes, mintedNotes + notesPerIteration);
|
|
54
54
|
const actions = toMint.map(amt => asset.methods.mint_to_private(recipient, amt));
|
package/src/fixtures/utils.ts
CHANGED
|
@@ -234,7 +234,7 @@ async function setupWithRemoteEnvironment(
|
|
|
234
234
|
const testAccounts = await Promise.all(
|
|
235
235
|
initialFundedAccounts.slice(0, numberOfAccounts).map(async account => {
|
|
236
236
|
const accountManager = await wallet.createSchnorrAccount(account.secret, account.salt, account.signingKey);
|
|
237
|
-
return accountManager.
|
|
237
|
+
return accountManager.address;
|
|
238
238
|
}),
|
|
239
239
|
);
|
|
240
240
|
|
|
@@ -659,8 +659,8 @@ export async function setup(
|
|
|
659
659
|
`${numberOfAccounts} accounts are being deployed. Reliably progressing past genesis by setting minTxsPerBlock to 1 and waiting for the accounts to be deployed`,
|
|
660
660
|
);
|
|
661
661
|
const accountsData = initialFundedAccounts.slice(0, numberOfAccounts);
|
|
662
|
-
const accountManagers = await deployFundedSchnorrAccounts(wallet, accountsData);
|
|
663
|
-
accounts = accountManagers.map(accountManager => accountManager.
|
|
662
|
+
const accountManagers = await deployFundedSchnorrAccounts(wallet, aztecNode, accountsData);
|
|
663
|
+
accounts = accountManagers.map(accountManager => accountManager.address);
|
|
664
664
|
}
|
|
665
665
|
|
|
666
666
|
// Now we restore the original minTxsPerBlock setting.
|
|
@@ -19,8 +19,8 @@ aztec-wallet() {
|
|
|
19
19
|
aztec-wallet import-test-accounts
|
|
20
20
|
|
|
21
21
|
# docs:start:declare-accounts
|
|
22
|
-
aztec-wallet create-account -a alice
|
|
23
|
-
aztec-wallet create-account -a bob
|
|
22
|
+
aztec-wallet create-account -a alice -f test0
|
|
23
|
+
aztec-wallet create-account -a bob -f test0
|
|
24
24
|
# docs:end:declare-accounts
|
|
25
25
|
|
|
26
26
|
DEPLOY_OUTPUT=$(aztec-wallet deploy ../noir-contracts.js/artifacts/token_contract-Token.json --args accounts:test0 Test TST 18 -f test0)
|
|
@@ -13,7 +13,8 @@ export const submitTxsTo = async (
|
|
|
13
13
|
await Promise.all(
|
|
14
14
|
times(numTxs, async () => {
|
|
15
15
|
const accountManager = await wallet.createSchnorrAccount(Fr.random(), Fr.random(), GrumpkinScalar.random());
|
|
16
|
-
const
|
|
16
|
+
const deployMethod = await accountManager.getDeployMethod();
|
|
17
|
+
const tx = deployMethod.send({ from: submitter });
|
|
17
18
|
const txHash = await tx.getTxHash();
|
|
18
19
|
|
|
19
20
|
logger.info(`Tx sent with hash ${txHash}`);
|
|
@@ -104,7 +104,7 @@ export class TokenSimulator {
|
|
|
104
104
|
|
|
105
105
|
const results = (
|
|
106
106
|
await Promise.all(
|
|
107
|
-
chunk(calls,
|
|
107
|
+
chunk(calls, 5).map(batch => new BatchCall(this.defaultWallet, batch).simulate({ from: this.defaultAddress })),
|
|
108
108
|
)
|
|
109
109
|
).flat();
|
|
110
110
|
expect(results[0]).toEqual(this.totalSupply);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { generateSchnorrAccounts } from '@aztec/accounts/testing';
|
|
2
2
|
import {
|
|
3
|
-
type
|
|
3
|
+
type AppConfigurableFeePaymentMethod,
|
|
4
|
+
AztecAddress,
|
|
4
5
|
type AztecNode,
|
|
5
6
|
FeeJuicePaymentMethodWithClaim,
|
|
6
|
-
type FeePaymentMethod,
|
|
7
7
|
Fr,
|
|
8
8
|
L1FeeJuicePortalManager,
|
|
9
9
|
SponsoredFeePaymentMethod,
|
|
@@ -82,19 +82,21 @@ export async function deploySponsoredTestAccounts(
|
|
|
82
82
|
await registerSponsoredFPC(wallet);
|
|
83
83
|
|
|
84
84
|
const paymentMethod = new SponsoredFeePaymentMethod(await getSponsoredFPCAddress());
|
|
85
|
-
|
|
85
|
+
const recipientDeployMethod = await recipientAccount.getDeployMethod();
|
|
86
|
+
await recipientDeployMethod.send({ from: AztecAddress.ZERO, fee: { paymentMethod } }).wait({ timeout: 2400 });
|
|
86
87
|
await Promise.all(
|
|
87
88
|
fundedAccounts.map(async a => {
|
|
88
|
-
|
|
89
|
-
|
|
89
|
+
const deployMethod = await a.getDeployMethod();
|
|
90
|
+
await deployMethod.send({ from: AztecAddress.ZERO, fee: { paymentMethod } }).wait({ timeout: 2400 }); // increase timeout on purpose in order to account for two empty epochs
|
|
91
|
+
logger.info(`Account deployed at ${a.address}`);
|
|
90
92
|
}),
|
|
91
93
|
);
|
|
92
94
|
|
|
93
95
|
const tokenAdmin = fundedAccounts[0];
|
|
94
96
|
const tokenAddress = await deployTokenAndMint(
|
|
95
97
|
wallet,
|
|
96
|
-
fundedAccounts.map(acc => acc.
|
|
97
|
-
tokenAdmin.
|
|
98
|
+
fundedAccounts.map(acc => acc.address),
|
|
99
|
+
tokenAdmin.address,
|
|
98
100
|
mintAmount,
|
|
99
101
|
new SponsoredFeePaymentMethod(await getSponsoredFPCAddress()),
|
|
100
102
|
logger,
|
|
@@ -104,12 +106,12 @@ export async function deploySponsoredTestAccounts(
|
|
|
104
106
|
return {
|
|
105
107
|
aztecNode,
|
|
106
108
|
wallet,
|
|
107
|
-
accounts: fundedAccounts.map(acc => acc.
|
|
108
|
-
tokenAdminAddress: tokenAdmin.
|
|
109
|
+
accounts: fundedAccounts.map(acc => acc.address),
|
|
110
|
+
tokenAdminAddress: tokenAdmin.address,
|
|
109
111
|
tokenName: TOKEN_NAME,
|
|
110
112
|
tokenAddress,
|
|
111
113
|
tokenContract,
|
|
112
|
-
recipientAddress: recipientAccount.
|
|
114
|
+
recipientAddress: recipientAccount.address,
|
|
113
115
|
};
|
|
114
116
|
}
|
|
115
117
|
|
|
@@ -129,9 +131,7 @@ export async function deployTestAccountsWithTokens(
|
|
|
129
131
|
const fundedAccounts = await Promise.all(funded.map(a => wallet.createSchnorrAccount(a.secret, a.salt)));
|
|
130
132
|
|
|
131
133
|
const claims = await Promise.all(
|
|
132
|
-
fundedAccounts.map(a =>
|
|
133
|
-
bridgeL1FeeJuice(l1RpcUrls, mnemonicOrPrivateKey, aztecNode, a.getAddress(), undefined, logger),
|
|
134
|
-
),
|
|
134
|
+
fundedAccounts.map(a => bridgeL1FeeJuice(l1RpcUrls, mnemonicOrPrivateKey, aztecNode, a.address, undefined, logger)),
|
|
135
135
|
);
|
|
136
136
|
|
|
137
137
|
// Progress by 3 L2 blocks so that the l1ToL2Message added above will be available to use on L2.
|
|
@@ -141,17 +141,18 @@ export async function deployTestAccountsWithTokens(
|
|
|
141
141
|
|
|
142
142
|
await Promise.all(
|
|
143
143
|
fundedAccounts.map(async (a, i) => {
|
|
144
|
-
const paymentMethod = new FeeJuicePaymentMethodWithClaim(a.
|
|
145
|
-
|
|
146
|
-
|
|
144
|
+
const paymentMethod = new FeeJuicePaymentMethodWithClaim(a.address, claims[i]);
|
|
145
|
+
const deployMethod = await a.getDeployMethod();
|
|
146
|
+
await deployMethod.send({ from: AztecAddress.ZERO, fee: { paymentMethod } }).wait();
|
|
147
|
+
logger.info(`Account deployed at ${a.address}`);
|
|
147
148
|
}),
|
|
148
149
|
);
|
|
149
150
|
|
|
150
151
|
const tokenAdmin = fundedAccounts[0];
|
|
151
152
|
const tokenAddress = await deployTokenAndMint(
|
|
152
153
|
wallet,
|
|
153
|
-
fundedAccounts.map(acc => acc.
|
|
154
|
-
tokenAdmin.
|
|
154
|
+
fundedAccounts.map(acc => acc.address),
|
|
155
|
+
tokenAdmin.address,
|
|
155
156
|
mintAmount,
|
|
156
157
|
undefined,
|
|
157
158
|
logger,
|
|
@@ -161,12 +162,12 @@ export async function deployTestAccountsWithTokens(
|
|
|
161
162
|
return {
|
|
162
163
|
aztecNode,
|
|
163
164
|
wallet,
|
|
164
|
-
accounts: fundedAccounts.map(acc => acc.
|
|
165
|
-
tokenAdminAddress: tokenAdmin.
|
|
165
|
+
accounts: fundedAccounts.map(acc => acc.address),
|
|
166
|
+
tokenAdminAddress: tokenAdmin.address,
|
|
166
167
|
tokenName: TOKEN_NAME,
|
|
167
168
|
tokenAddress,
|
|
168
169
|
tokenContract,
|
|
169
|
-
recipientAddress: recipientAccount.
|
|
170
|
+
recipientAddress: recipientAccount.address,
|
|
170
171
|
};
|
|
171
172
|
}
|
|
172
173
|
|
|
@@ -214,7 +215,7 @@ async function deployTokenAndMint(
|
|
|
214
215
|
accounts: AztecAddress[],
|
|
215
216
|
admin: AztecAddress,
|
|
216
217
|
mintAmount: bigint,
|
|
217
|
-
paymentMethod:
|
|
218
|
+
paymentMethod: AppConfigurableFeePaymentMethod | undefined,
|
|
218
219
|
logger: Logger,
|
|
219
220
|
) {
|
|
220
221
|
logger.verbose(`Deploying TokenContract...`);
|
|
@@ -256,7 +257,7 @@ export async function performTransfers({
|
|
|
256
257
|
rounds: number;
|
|
257
258
|
transferAmount: bigint;
|
|
258
259
|
logger: Logger;
|
|
259
|
-
feePaymentMethod?:
|
|
260
|
+
feePaymentMethod?: AppConfigurableFeePaymentMethod;
|
|
260
261
|
}) {
|
|
261
262
|
const recipient = testAccounts.recipientAddress;
|
|
262
263
|
// Default to sponsored fee payment if no fee method is provided
|