@aztec/end-to-end 4.0.4 → 4.1.0-rc.2
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 +1 -1
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/client_flows_benchmark.js +40 -9
- package/dest/bench/utils.d.ts +1 -1
- package/dest/bench/utils.d.ts.map +1 -1
- package/dest/bench/utils.js +6 -3
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +1 -1
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +1 -1
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +14 -14
- package/dest/e2e_fees/fees_test.d.ts +1 -1
- package/dest/e2e_fees/fees_test.d.ts.map +1 -1
- package/dest/e2e_fees/fees_test.js +45 -6
- package/dest/e2e_nested_contract/nested_contract_test.d.ts +1 -1
- package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
- package/dest/e2e_nested_contract/nested_contract_test.js +4 -6
- package/dest/e2e_p2p/p2p_network.d.ts +1 -1
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +2 -3
- package/dest/e2e_p2p/shared.js +1 -1
- package/dest/e2e_token_contract/token_contract_test.d.ts +1 -1
- package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
- package/dest/e2e_token_contract/token_contract_test.js +11 -11
- package/dest/fixtures/authwit_proxy.d.ts +3 -3
- package/dest/fixtures/authwit_proxy.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.d.ts +1 -1
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +6 -6
- package/dest/fixtures/setup.d.ts +1 -1
- package/dest/fixtures/setup.d.ts.map +1 -1
- package/dest/fixtures/setup.js +3 -3
- package/dest/fixtures/token_utils.d.ts +1 -1
- package/dest/fixtures/token_utils.d.ts.map +1 -1
- package/dest/fixtures/token_utils.js +2 -2
- package/dest/shared/cross_chain_test_harness.d.ts +1 -1
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.js +13 -13
- package/dest/shared/gas_portal_test_harness.js +2 -2
- package/dest/shared/submit-transactions.js +1 -1
- package/dest/shared/uniswap_l1_l2.d.ts +1 -1
- package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
- package/dest/shared/uniswap_l1_l2.js +5 -5
- package/dest/simulators/lending_simulator.d.ts +1 -1
- package/dest/simulators/lending_simulator.d.ts.map +1 -1
- package/dest/simulators/lending_simulator.js +2 -2
- package/dest/simulators/token_simulator.d.ts +1 -1
- package/dest/simulators/token_simulator.d.ts.map +1 -1
- package/dest/simulators/token_simulator.js +2 -2
- package/dest/spartan/setup_test_wallets.d.ts +1 -1
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +4 -3
- package/dest/test-wallet/worker_wallet_schema.d.ts +5 -2
- package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -1
- package/package.json +40 -40
- package/src/bench/client_flows/client_flows_benchmark.ts +70 -30
- package/src/bench/utils.ts +7 -2
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +18 -14
- package/src/e2e_fees/fees_test.ts +56 -5
- package/src/e2e_nested_contract/nested_contract_test.ts +6 -4
- package/src/e2e_p2p/p2p_network.ts +3 -2
- package/src/e2e_p2p/shared.ts +1 -1
- package/src/e2e_token_contract/token_contract_test.ts +16 -8
- package/src/fixtures/e2e_prover_test.ts +11 -5
- package/src/fixtures/setup.ts +4 -2
- package/src/fixtures/token_utils.ts +4 -2
- package/src/shared/cross_chain_test_harness.ts +13 -9
- package/src/shared/gas_portal_test_harness.ts +1 -1
- package/src/shared/submit-transactions.ts +1 -1
- package/src/shared/uniswap_l1_l2.ts +6 -4
- package/src/simulators/lending_simulator.ts +4 -2
- package/src/simulators/token_simulator.ts +6 -2
- package/src/spartan/setup_test_wallets.ts +6 -9
|
@@ -90,7 +90,7 @@ export class TokenSimulator {
|
|
|
90
90
|
];
|
|
91
91
|
const results = (await Promise.all(chunk(calls, 5).map((batch)=>new BatchCall(this.defaultWallet, batch).simulate({
|
|
92
92
|
from: this.defaultAddress
|
|
93
|
-
})))).flat();
|
|
93
|
+
})))).flat().map((r)=>r.result);
|
|
94
94
|
expect(results[0]).toEqual(this.totalSupply);
|
|
95
95
|
// Check that all our balances match
|
|
96
96
|
for(let i = 0; i < this.accounts.length; i++){
|
|
@@ -101,7 +101,7 @@ export class TokenSimulator {
|
|
|
101
101
|
for (const address of this.accounts){
|
|
102
102
|
const wallet = this.lookupProvider.get(address.toString());
|
|
103
103
|
const asset = wallet ? this.token.withWallet(wallet) : this.token;
|
|
104
|
-
const actualPrivateBalance = await asset.methods.balance_of_private(address).simulate({
|
|
104
|
+
const { result: actualPrivateBalance } = await asset.methods.balance_of_private(address).simulate({
|
|
105
105
|
from: address
|
|
106
106
|
});
|
|
107
107
|
expect(actualPrivateBalance).toEqual(this.balanceOfPrivate(address));
|
|
@@ -40,4 +40,4 @@ export type WorkerWalletWrapper = {
|
|
|
40
40
|
cleanup: () => Promise<void>;
|
|
41
41
|
};
|
|
42
42
|
export declare function createWorkerWalletClient(nodeUrl: string, proverEnabled: boolean, logger: Logger): Promise<WorkerWalletWrapper>;
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXBfdGVzdF93YWxsZXRzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3BhcnRhbi9zZXR1cF90ZXN0X3dhbGxldHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSXpELE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUE2QixNQUFNLHFCQUFxQixDQUFDO0FBRXZGLE9BQU8sRUFBRSxLQUFLLFNBQVMsRUFBb0MsTUFBTSxzQkFBc0IsQ0FBQztBQUl4RixPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFPL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUUvRCxNQUFNLFdBQVcsWUFBWTtJQUMzQixTQUFTLEVBQUUsU0FBUyxDQUFDO0lBQ3JCLE1BQU0sRUFBRSxVQUFVLENBQUM7SUFDbkIsUUFBUSxFQUFFLFlBQVksRUFBRSxDQUFDO0lBQ3pCLGFBQWEsRUFBRSxhQUFhLENBQUM7SUFDN0IsaUJBQWlCLEVBQUUsWUFBWSxDQUFDO0lBQ2hDLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDO0lBQy9CLFlBQVksRUFBRSxZQUFZLENBQUM7Q0FDNUI7QUFFRCxNQUFNLE1BQU0seUJBQXlCLEdBQUcsSUFBSSxDQUMxQyxZQUFZLEVBQ1osY0FBYyxHQUFHLGVBQWUsR0FBRyxXQUFXLEdBQUcsbUJBQW1CLENBQ3JFLENBQUM7QUFNRix3QkFBc0IsMkJBQTJCLENBQy9DLE9BQU8sRUFBRSxNQUFNLEVBQ2YsVUFBVSxFQUFFLE1BQU0sRUFDbEIsTUFBTSxFQUFFLE1BQU0sR0FDYixPQUFPLENBQUMsWUFBWSxDQUFDLENBeUJ2QjtBQUVELHdCQUFzQixxQ0FBcUMsQ0FDekQsTUFBTSxFQUFFLFVBQVUsRUFDbEIsU0FBUyxFQUFFLFNBQVMsRUFDcEIsVUFBVSxFQUFFLE1BQU0sRUFDbEIsTUFBTSxFQUFFLE1BQU0sRUFDZCxxQkFBcUIsU0FBSSxHQUN4QixPQUFPLENBQUMsWUFBWSxDQUFDLENBdUN2QjtBQW9ERCx3QkFBc0IsMkJBQTJCLENBQy9DLE1BQU0sRUFBRSxVQUFVLEVBQ2xCLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLE1BQU0sRUFBRSxNQUFNLEVBQ2QscUJBQXFCLFNBQUksR0FDeEIsT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBa0JwQztBQUVELHdCQUFzQiw0QkFBNEIsQ0FDaEQsT0FBTyxFQUFFLE1BQU0sRUFDZixTQUFTLEVBQUUsTUFBTSxFQUFFLEVBQ25CLG9CQUFvQixFQUFFLE1BQU0sRUFDNUIsVUFBVSxFQUFFLE1BQU0sRUFDbEIsTUFBTSxFQUFFLE1BQU0sRUFDZCxxQkFBcUIsU0FBSSxHQUN4QixPQUFPLENBQUMsWUFBWSxDQUFDLENBK0N2QjtBQTZFRCx3QkFBc0IsZ0JBQWdCLENBQUMsRUFDckMsTUFBTSxFQUNOLFlBQVksRUFDWixNQUFNLEVBQ04sY0FBYyxFQUNkLE1BQU0sRUFDTixnQkFBZ0IsRUFDakIsRUFBRTtJQUNELE1BQU0sRUFBRSxVQUFVLENBQUM7SUFDbkIsWUFBWSxFQUFFLFlBQVksQ0FBQztJQUMzQixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2YsY0FBYyxFQUFFLE1BQU0sQ0FBQztJQUN2QixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2YsZ0JBQWdCLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQztDQUNyQyxpQkFxQkE7QUFFRCxNQUFNLE1BQU0sYUFBYSxHQUFHO0lBQzFCLE1BQU0sRUFBRSxVQUFVLENBQUM7SUFDbkIsU0FBUyxFQUFFLFNBQVMsQ0FBQztJQUNyQixPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7Q0FDOUIsQ0FBQztBQUVGLHdCQUFzQiw4QkFBOEIsQ0FDbEQsT0FBTyxFQUFFLE1BQU0sRUFDZixhQUFhLEVBQUUsT0FBTyxFQUN0QixNQUFNLEVBQUUsTUFBTSxHQUNiLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FxQnhCO0FBRUQsTUFBTSxNQUFNLG1CQUFtQixHQUFHO0lBQ2hDLE1BQU0sRUFBRSxZQUFZLENBQUM7SUFDckIsU0FBUyxFQUFFLFNBQVMsQ0FBQztJQUNyQixPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7Q0FDOUIsQ0FBQztBQUVGLHdCQUFzQix3QkFBd0IsQ0FDNUMsT0FBTyxFQUFFLE1BQU0sRUFDZixhQUFhLEVBQUUsT0FBTyxFQUN0QixNQUFNLEVBQUUsTUFBTSxHQUNiLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQTJCOUIifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup_test_wallets.d.ts","sourceRoot":"","sources":["../../src/spartan/setup_test_wallets.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAIzD,OAAO,EAAE,KAAK,gBAAgB,EAA6B,MAAM,qBAAqB,CAAC;AAEvF,OAAO,EAAE,KAAK,SAAS,EAAoC,MAAM,sBAAsB,CAAC;AAIxF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAO/D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAE/D,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;AAED,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAC1C,YAAY,EACZ,cAAc,GAAG,eAAe,GAAG,WAAW,GAAG,mBAAmB,CACrE,CAAC;AAMF,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,CAAC,CAyBvB;AAED,wBAAsB,qCAAqC,CACzD,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,qBAAqB,SAAI,GACxB,OAAO,CAAC,YAAY,CAAC,CAuCvB;
|
|
1
|
+
{"version":3,"file":"setup_test_wallets.d.ts","sourceRoot":"","sources":["../../src/spartan/setup_test_wallets.ts"],"names":[],"mappings":"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"}
|
|
@@ -86,13 +86,14 @@ async function deployAccountWithDiagnostics(account, paymentMethod, aztecNode, l
|
|
|
86
86
|
const deployMethod = await account.getDeployMethod();
|
|
87
87
|
let txHash;
|
|
88
88
|
try {
|
|
89
|
-
|
|
89
|
+
const deployResult = await deployMethod.send({
|
|
90
90
|
from: AztecAddress.ZERO,
|
|
91
91
|
fee: {
|
|
92
92
|
paymentMethod
|
|
93
93
|
},
|
|
94
94
|
wait: NO_WAIT
|
|
95
95
|
});
|
|
96
|
+
txHash = deployResult.txHash;
|
|
96
97
|
await waitForTx(aztecNode, txHash, {
|
|
97
98
|
timeout: 2400
|
|
98
99
|
});
|
|
@@ -177,7 +178,7 @@ async function bridgeL1FeeJuice(l1RpcUrls, mnemonicOrPrivateKey, aztecNode, reci
|
|
|
177
178
|
const l1Client = createExtendedL1Client(chain.rpcUrls, mnemonicOrPrivateKey, chain.chainInfo);
|
|
178
179
|
const portal = await L1FeeJuicePortalManager.new(aztecNode, l1Client, log);
|
|
179
180
|
const claim = await portal.bridgeTokensPublic(recipient, amount, true);
|
|
180
|
-
const isSynced = async ()=>await aztecNode.
|
|
181
|
+
const isSynced = async ()=>await aztecNode.getL1ToL2MessageCheckpoint(Fr.fromHexString(claim.messageHash)) !== undefined;
|
|
181
182
|
await retryUntil(isSynced, `message ${claim.messageHash} sync`, 24, 0.5);
|
|
182
183
|
log.info(`Created a claim for ${amount} L1 fee juice to ${recipient}.`, claim);
|
|
183
184
|
return claim;
|
|
@@ -200,7 +201,7 @@ async function advanceL2Block(aztecNode, nodeAdmin) {
|
|
|
200
201
|
}
|
|
201
202
|
async function deployTokenAndMint(wallet, accounts, admin, mintAmount, paymentMethod, logger) {
|
|
202
203
|
logger.verbose(`Deploying TokenContract...`);
|
|
203
|
-
const { contract: tokenContract } = await TokenContract.deploy(wallet, admin, TOKEN_NAME, TOKEN_SYMBOL, TOKEN_DECIMALS).send({
|
|
204
|
+
const { receipt: { contract: tokenContract } } = await TokenContract.deploy(wallet, admin, TOKEN_NAME, TOKEN_SYMBOL, TOKEN_DECIMALS).send({
|
|
204
205
|
from: admin,
|
|
205
206
|
fee: {
|
|
206
207
|
paymentMethod
|
|
@@ -14,7 +14,7 @@ export declare const WorkerWalletSchema: {
|
|
|
14
14
|
simulateTx: z.ZodFunction<z.ZodTuple<[z.ZodType<import("@aztec/stdlib/tx").ExecutionPayload, z.ZodTypeDef, any>, opts: z.ZodType<import("@aztec/aztec.js/wallet").SimulateOptions, z.ZodTypeDef, any>], z.ZodUnknown>, z.ZodType<import("@aztec/stdlib/tx").TxSimulationResult, z.ZodTypeDef, any>>;
|
|
15
15
|
executeUtility: z.ZodFunction<z.ZodTuple<[z.ZodType<import("@aztec/stdlib/abi").FunctionCall, z.ZodTypeDef, any>, opts: z.ZodType<import("@aztec/aztec.js/wallet").ExecuteUtilityOptions, z.ZodTypeDef, any>], z.ZodUnknown>, z.ZodType<import("@aztec/stdlib/tx").UtilityExecutionResult, z.ZodTypeDef, any>>;
|
|
16
16
|
profileTx: z.ZodFunction<z.ZodTuple<[z.ZodType<import("@aztec/stdlib/tx").ExecutionPayload, z.ZodTypeDef, any>, opts: z.ZodType<import("@aztec/aztec.js/wallet").ProfileOptions, z.ZodTypeDef, any>], z.ZodUnknown>, z.ZodType<import("@aztec/stdlib/tx").TxProfileResult, z.ZodTypeDef, any>>;
|
|
17
|
-
sendTx: z.ZodFunction<z.ZodTuple<[z.ZodType<import("@aztec/stdlib/tx").ExecutionPayload, z.ZodTypeDef, any>, opts: z.ZodType<import("@aztec/aztec.js/wallet").SendOptions<import("@aztec/aztec.js/contracts").InteractionWaitOptions>, z.ZodTypeDef, any>], z.ZodUnknown>, z.ZodType<import("@aztec/
|
|
17
|
+
sendTx: z.ZodFunction<z.ZodTuple<[z.ZodType<import("@aztec/stdlib/tx").ExecutionPayload, z.ZodTypeDef, any>, opts: z.ZodType<import("@aztec/aztec.js/wallet").SendOptions<import("@aztec/aztec.js/contracts").InteractionWaitOptions>, z.ZodTypeDef, any>], z.ZodUnknown>, z.ZodType<import("@aztec/aztec.js/contracts").TxSendResultImmediate | import("@aztec/aztec.js/contracts").TxSendResultMined<import("@aztec/stdlib/tx").TxReceipt>, z.ZodTypeDef, any>>;
|
|
18
18
|
createAuthWit: z.ZodFunction<z.ZodTuple<[z.ZodType<AztecAddress, z.ZodTypeDef, any>, messageHashOrIntent: z.ZodType<import("@aztec/aztec.js/authorization").CallIntent | import("@aztec/aztec.js/authorization").IntentInnerHash, z.ZodTypeDef, any>], z.ZodUnknown>, z.ZodType<import("@aztec/stdlib/auth-witness").AuthWitness, z.ZodTypeDef, any>>;
|
|
19
19
|
requestCapabilities: z.ZodFunction<z.ZodTuple<[z.ZodType<import("@aztec/aztec.js/wallet").AppCapabilities, z.ZodTypeDef, any>], z.ZodUnknown>, z.ZodType<import("@aztec/aztec.js/wallet").WalletCapabilities, z.ZodTypeDef, any>>;
|
|
20
20
|
batch: z.ZodFunction<z.ZodTuple<[z.ZodType<readonly import("@aztec/aztec.js/wallet").BatchedMethod[], z.ZodTypeDef, any>], z.ZodUnknown>, z.ZodType<readonly import("@aztec/aztec.js/wallet").BatchedMethodResultWrapper<import("@aztec/aztec.js/wallet").BatchedMethod>[], z.ZodTypeDef, any>>;
|
|
@@ -211,6 +211,7 @@ export declare const WorkerWalletSchema: {
|
|
|
211
211
|
interval?: number | undefined;
|
|
212
212
|
dontThrowOnRevert?: boolean | undefined;
|
|
213
213
|
}>]>>;
|
|
214
|
+
additionalScopes: import("@aztec/foundation/schemas").ZodNullableOptional<z.ZodArray<import("@aztec/foundation/schemas").ZodFor<AztecAddress>, "many">>;
|
|
214
215
|
}, "strip", z.ZodTypeAny, {
|
|
215
216
|
from: AztecAddress;
|
|
216
217
|
authWitnesses?: import("@aztec/stdlib/auth-witness").AuthWitness[] | undefined;
|
|
@@ -235,6 +236,7 @@ export declare const WorkerWalletSchema: {
|
|
|
235
236
|
interval?: number | undefined;
|
|
236
237
|
dontThrowOnRevert?: boolean | undefined;
|
|
237
238
|
} | undefined;
|
|
239
|
+
additionalScopes?: AztecAddress[] | undefined;
|
|
238
240
|
}, {
|
|
239
241
|
from?: any;
|
|
240
242
|
authWitnesses?: string[] | undefined;
|
|
@@ -265,7 +267,8 @@ export declare const WorkerWalletSchema: {
|
|
|
265
267
|
interval?: number | undefined;
|
|
266
268
|
dontThrowOnRevert?: boolean | undefined;
|
|
267
269
|
} | undefined;
|
|
270
|
+
additionalScopes?: any[] | undefined;
|
|
268
271
|
}>], z.ZodUnknown>, import("@aztec/foundation/schemas").ZodFor<Tx>>;
|
|
269
272
|
registerAccount: z.ZodFunction<z.ZodTuple<[z.ZodType<import("@aztec/foundation/schemas").Fr, any, string>, z.ZodType<import("@aztec/foundation/schemas").Fr, any, string>], z.ZodUnknown>, import("@aztec/foundation/schemas").ZodFor<AztecAddress>>;
|
|
270
273
|
};
|
|
271
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
274
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyX3dhbGxldF9zY2hlbWEuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0LXdhbGxldC93b3JrZXJfd2FsbGV0X3NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXRDLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIsaUdBQStGO0FBQy9GLGVBQU8sTUFBTSxrQkFBa0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FJOUIsQ0FBQyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker_wallet_schema.d.ts","sourceRoot":"","sources":["../../src/test-wallet/worker_wallet_schema.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAEtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,iGAA+F;AAC/F,eAAO,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"worker_wallet_schema.d.ts","sourceRoot":"","sources":["../../src/test-wallet/worker_wallet_schema.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAEtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,iGAA+F;AAC/F,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAI9B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/end-to-end",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.1.0-rc.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": "./dest/index.js",
|
|
6
6
|
"inherits": [
|
|
@@ -26,45 +26,45 @@
|
|
|
26
26
|
"formatting": "run -T prettier --check ./src && run -T eslint ./src"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@aztec/accounts": "4.0.
|
|
30
|
-
"@aztec/archiver": "4.0.
|
|
31
|
-
"@aztec/aztec": "4.0.
|
|
32
|
-
"@aztec/aztec-node": "4.0.
|
|
33
|
-
"@aztec/aztec.js": "4.0.
|
|
34
|
-
"@aztec/bb-prover": "4.0.
|
|
35
|
-
"@aztec/bb.js": "4.0.
|
|
36
|
-
"@aztec/blob-client": "4.0.
|
|
37
|
-
"@aztec/blob-lib": "4.0.
|
|
38
|
-
"@aztec/bot": "4.0.
|
|
39
|
-
"@aztec/cli": "4.0.
|
|
40
|
-
"@aztec/constants": "4.0.
|
|
41
|
-
"@aztec/entrypoints": "4.0.
|
|
42
|
-
"@aztec/epoch-cache": "4.0.
|
|
43
|
-
"@aztec/ethereum": "4.0.
|
|
44
|
-
"@aztec/foundation": "4.0.
|
|
45
|
-
"@aztec/kv-store": "4.0.
|
|
46
|
-
"@aztec/l1-artifacts": "4.0.
|
|
47
|
-
"@aztec/merkle-tree": "4.0.
|
|
48
|
-
"@aztec/node-keystore": "4.0.
|
|
49
|
-
"@aztec/noir-contracts.js": "4.0.
|
|
50
|
-
"@aztec/noir-noirc_abi": "4.0.
|
|
51
|
-
"@aztec/noir-protocol-circuits-types": "4.0.
|
|
52
|
-
"@aztec/noir-test-contracts.js": "4.0.
|
|
53
|
-
"@aztec/p2p": "4.0.
|
|
54
|
-
"@aztec/protocol-contracts": "4.0.
|
|
55
|
-
"@aztec/prover-client": "4.0.
|
|
56
|
-
"@aztec/prover-node": "4.0.
|
|
57
|
-
"@aztec/pxe": "4.0.
|
|
58
|
-
"@aztec/sequencer-client": "4.0.
|
|
59
|
-
"@aztec/simulator": "4.0.
|
|
60
|
-
"@aztec/slasher": "4.0.
|
|
61
|
-
"@aztec/stdlib": "4.0.
|
|
62
|
-
"@aztec/telemetry-client": "4.0.
|
|
63
|
-
"@aztec/validator-client": "4.0.
|
|
64
|
-
"@aztec/validator-ha-signer": "4.0.
|
|
65
|
-
"@aztec/wallet-sdk": "4.0.
|
|
66
|
-
"@aztec/wallets": "4.0.
|
|
67
|
-
"@aztec/world-state": "4.0.
|
|
29
|
+
"@aztec/accounts": "4.1.0-rc.2",
|
|
30
|
+
"@aztec/archiver": "4.1.0-rc.2",
|
|
31
|
+
"@aztec/aztec": "4.1.0-rc.2",
|
|
32
|
+
"@aztec/aztec-node": "4.1.0-rc.2",
|
|
33
|
+
"@aztec/aztec.js": "4.1.0-rc.2",
|
|
34
|
+
"@aztec/bb-prover": "4.1.0-rc.2",
|
|
35
|
+
"@aztec/bb.js": "4.1.0-rc.2",
|
|
36
|
+
"@aztec/blob-client": "4.1.0-rc.2",
|
|
37
|
+
"@aztec/blob-lib": "4.1.0-rc.2",
|
|
38
|
+
"@aztec/bot": "4.1.0-rc.2",
|
|
39
|
+
"@aztec/cli": "4.1.0-rc.2",
|
|
40
|
+
"@aztec/constants": "4.1.0-rc.2",
|
|
41
|
+
"@aztec/entrypoints": "4.1.0-rc.2",
|
|
42
|
+
"@aztec/epoch-cache": "4.1.0-rc.2",
|
|
43
|
+
"@aztec/ethereum": "4.1.0-rc.2",
|
|
44
|
+
"@aztec/foundation": "4.1.0-rc.2",
|
|
45
|
+
"@aztec/kv-store": "4.1.0-rc.2",
|
|
46
|
+
"@aztec/l1-artifacts": "4.1.0-rc.2",
|
|
47
|
+
"@aztec/merkle-tree": "4.1.0-rc.2",
|
|
48
|
+
"@aztec/node-keystore": "4.1.0-rc.2",
|
|
49
|
+
"@aztec/noir-contracts.js": "4.1.0-rc.2",
|
|
50
|
+
"@aztec/noir-noirc_abi": "4.1.0-rc.2",
|
|
51
|
+
"@aztec/noir-protocol-circuits-types": "4.1.0-rc.2",
|
|
52
|
+
"@aztec/noir-test-contracts.js": "4.1.0-rc.2",
|
|
53
|
+
"@aztec/p2p": "4.1.0-rc.2",
|
|
54
|
+
"@aztec/protocol-contracts": "4.1.0-rc.2",
|
|
55
|
+
"@aztec/prover-client": "4.1.0-rc.2",
|
|
56
|
+
"@aztec/prover-node": "4.1.0-rc.2",
|
|
57
|
+
"@aztec/pxe": "4.1.0-rc.2",
|
|
58
|
+
"@aztec/sequencer-client": "4.1.0-rc.2",
|
|
59
|
+
"@aztec/simulator": "4.1.0-rc.2",
|
|
60
|
+
"@aztec/slasher": "4.1.0-rc.2",
|
|
61
|
+
"@aztec/stdlib": "4.1.0-rc.2",
|
|
62
|
+
"@aztec/telemetry-client": "4.1.0-rc.2",
|
|
63
|
+
"@aztec/validator-client": "4.1.0-rc.2",
|
|
64
|
+
"@aztec/validator-ha-signer": "4.1.0-rc.2",
|
|
65
|
+
"@aztec/wallet-sdk": "4.1.0-rc.2",
|
|
66
|
+
"@aztec/wallets": "4.1.0-rc.2",
|
|
67
|
+
"@aztec/world-state": "4.1.0-rc.2",
|
|
68
68
|
"@iarna/toml": "^2.2.5",
|
|
69
69
|
"@jest/globals": "^30.0.0",
|
|
70
70
|
"@noble/curves": "=1.0.0",
|
|
@@ -19,12 +19,16 @@ import { AMMContract } from '@aztec/noir-contracts.js/AMM';
|
|
|
19
19
|
import { FPCContract } from '@aztec/noir-contracts.js/FPC';
|
|
20
20
|
import { FeeJuiceContract } from '@aztec/noir-contracts.js/FeeJuice';
|
|
21
21
|
import { SponsoredFPCContract } from '@aztec/noir-contracts.js/SponsoredFPC';
|
|
22
|
-
import { TokenContract as BananaCoin, TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
22
|
+
import { TokenContract as BananaCoin, TokenContract, TokenContractArtifact } from '@aztec/noir-contracts.js/Token';
|
|
23
23
|
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
24
24
|
import { getCanonicalFeeJuice } from '@aztec/protocol-contracts/fee-juice';
|
|
25
25
|
import { type PXEConfig, getPXEConfig } from '@aztec/pxe/server';
|
|
26
|
+
import { FunctionSelector, countArgumentsSize } from '@aztec/stdlib/abi';
|
|
27
|
+
import type { FunctionAbi } from '@aztec/stdlib/abi';
|
|
28
|
+
import { getContractClassFromArtifact } from '@aztec/stdlib/contract';
|
|
26
29
|
import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
27
30
|
import { GasSettings } from '@aztec/stdlib/gas';
|
|
31
|
+
import type { AllowedElement } from '@aztec/stdlib/interfaces/server';
|
|
28
32
|
import { deriveSigningKey } from '@aztec/stdlib/keys';
|
|
29
33
|
|
|
30
34
|
import { MNEMONIC } from '../../fixtures/fixtures.js';
|
|
@@ -42,6 +46,35 @@ import { type ClientFlowsConfig, FULL_FLOWS_CONFIG, KEY_FLOWS_CONFIG } from './c
|
|
|
42
46
|
|
|
43
47
|
const { BENCHMARK_CONFIG } = process.env;
|
|
44
48
|
|
|
49
|
+
/** Returns Token-specific allowlist entries for FPC-based fee payments (test-only). */
|
|
50
|
+
async function getTokenAllowedSetupFunctions(): Promise<AllowedElement[]> {
|
|
51
|
+
const tokenClassId = (await getContractClassFromArtifact(TokenContractArtifact)).id;
|
|
52
|
+
const allFunctions: FunctionAbi[] = (TokenContractArtifact.functions as FunctionAbi[]).concat(
|
|
53
|
+
TokenContractArtifact.nonDispatchPublicFunctions || [],
|
|
54
|
+
);
|
|
55
|
+
const getCalldataLength = (name: string) => {
|
|
56
|
+
const fn = allFunctions.find(f => f.name === name)!;
|
|
57
|
+
return 1 + countArgumentsSize(fn);
|
|
58
|
+
};
|
|
59
|
+
const increaseBalanceSelector = await FunctionSelector.fromSignature('_increase_public_balance((Field),u128)');
|
|
60
|
+
const transferInPublicSelector = await FunctionSelector.fromSignature(
|
|
61
|
+
'transfer_in_public((Field),(Field),u128,Field)',
|
|
62
|
+
);
|
|
63
|
+
return [
|
|
64
|
+
{
|
|
65
|
+
classId: tokenClassId,
|
|
66
|
+
selector: increaseBalanceSelector,
|
|
67
|
+
calldataLength: getCalldataLength('_increase_public_balance'),
|
|
68
|
+
onlySelf: true,
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
classId: tokenClassId,
|
|
72
|
+
selector: transferInPublicSelector,
|
|
73
|
+
calldataLength: getCalldataLength('transfer_in_public'),
|
|
74
|
+
},
|
|
75
|
+
];
|
|
76
|
+
}
|
|
77
|
+
|
|
45
78
|
export type AccountType = 'ecdsar1' | 'schnorr';
|
|
46
79
|
export type FeePaymentMethodGetter = (wallet: Wallet, sender: AztecAddress) => Promise<FeePaymentMethod | undefined>;
|
|
47
80
|
export type BenchmarkingFeePaymentMethod = 'bridged_fee_juice' | 'private_fpc' | 'sponsored_fpc' | 'fee_juice';
|
|
@@ -130,11 +163,14 @@ export class ClientFlowsBenchmark {
|
|
|
130
163
|
|
|
131
164
|
async setup() {
|
|
132
165
|
this.logger.info('Setting up subsystems from fresh');
|
|
166
|
+
// Token allowlist entries are test-only: FPC-based fee payment with custom tokens won't work on mainnet alpha.
|
|
167
|
+
const tokenAllowList = await getTokenAllowedSetupFunctions();
|
|
133
168
|
this.context = await setup(0, {
|
|
134
169
|
...this.setupOptions,
|
|
135
170
|
fundSponsoredFPC: true,
|
|
136
171
|
skipAccountDeployment: true,
|
|
137
172
|
l1ContractsArgs: this.setupOptions,
|
|
173
|
+
txPublicSetupAllowListExtend: [...(this.setupOptions.txPublicSetupAllowListExtend ?? []), ...tokenAllowList],
|
|
138
174
|
});
|
|
139
175
|
await this.applyBaseSetup();
|
|
140
176
|
|
|
@@ -161,11 +197,15 @@ export class ClientFlowsBenchmark {
|
|
|
161
197
|
|
|
162
198
|
/** Admin mints bananaCoin tokens privately to the target address and redeems them. */
|
|
163
199
|
async mintPrivateBananas(amount: bigint, address: AztecAddress) {
|
|
164
|
-
const balanceBefore = await this.bananaCoin.methods
|
|
200
|
+
const { result: balanceBefore } = await this.bananaCoin.methods
|
|
201
|
+
.balance_of_private(address)
|
|
202
|
+
.simulate({ from: address });
|
|
165
203
|
|
|
166
204
|
await mintTokensToPrivate(this.bananaCoin, this.adminAddress, address, amount);
|
|
167
205
|
|
|
168
|
-
const balanceAfter = await this.bananaCoin.methods
|
|
206
|
+
const { result: balanceAfter } = await this.bananaCoin.methods
|
|
207
|
+
.balance_of_private(address)
|
|
208
|
+
.simulate({ from: address });
|
|
169
209
|
expect(balanceAfter).toEqual(balanceBefore + amount);
|
|
170
210
|
}
|
|
171
211
|
|
|
@@ -241,13 +281,12 @@ export class ClientFlowsBenchmark {
|
|
|
241
281
|
|
|
242
282
|
async applyDeployBananaToken() {
|
|
243
283
|
this.logger.info('Applying banana token deployment');
|
|
244
|
-
const {
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
).send({ from: this.adminAddress, wait: { returnReceipt: true } });
|
|
284
|
+
const {
|
|
285
|
+
receipt: { contract: bananaCoin, instance: bananaCoinInstance },
|
|
286
|
+
} = await BananaCoin.deploy(this.adminWallet, this.adminAddress, 'BC', 'BC', 18n).send({
|
|
287
|
+
from: this.adminAddress,
|
|
288
|
+
wait: { returnReceipt: true },
|
|
289
|
+
});
|
|
251
290
|
this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
|
|
252
291
|
this.bananaCoin = bananaCoin;
|
|
253
292
|
this.bananaCoinInstance = bananaCoinInstance;
|
|
@@ -255,13 +294,12 @@ export class ClientFlowsBenchmark {
|
|
|
255
294
|
|
|
256
295
|
async applyDeployCandyBarToken() {
|
|
257
296
|
this.logger.info('Applying candy bar token deployment');
|
|
258
|
-
const {
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
).send({ from: this.adminAddress, wait: { returnReceipt: true } });
|
|
297
|
+
const {
|
|
298
|
+
receipt: { contract: candyBarCoin, instance: candyBarCoinInstance },
|
|
299
|
+
} = await TokenContract.deploy(this.adminWallet, this.adminAddress, 'CBC', 'CBC', 18n).send({
|
|
300
|
+
from: this.adminAddress,
|
|
301
|
+
wait: { returnReceipt: true },
|
|
302
|
+
});
|
|
265
303
|
this.logger.info(`CandyBarCoin deployed at ${candyBarCoin.address}`);
|
|
266
304
|
this.candyBarCoin = candyBarCoin;
|
|
267
305
|
this.candyBarCoinInstance = candyBarCoinInstance;
|
|
@@ -273,11 +311,12 @@ export class ClientFlowsBenchmark {
|
|
|
273
311
|
expect((await this.context.wallet.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
|
|
274
312
|
|
|
275
313
|
const bananaCoin = this.bananaCoin;
|
|
276
|
-
const {
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
this.adminAddress,
|
|
280
|
-
|
|
314
|
+
const {
|
|
315
|
+
receipt: { contract: bananaFPC, instance: bananaFPCInstance },
|
|
316
|
+
} = await FPCContract.deploy(this.adminWallet, bananaCoin.address, this.adminAddress).send({
|
|
317
|
+
from: this.adminAddress,
|
|
318
|
+
wait: { returnReceipt: true },
|
|
319
|
+
});
|
|
281
320
|
|
|
282
321
|
this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
|
|
283
322
|
|
|
@@ -340,14 +379,15 @@ export class ClientFlowsBenchmark {
|
|
|
340
379
|
|
|
341
380
|
public async applyDeployAmm() {
|
|
342
381
|
this.logger.info('Applying AMM deployment');
|
|
343
|
-
const {
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
382
|
+
const {
|
|
383
|
+
receipt: { contract: liquidityToken, instance: liquidityTokenInstance },
|
|
384
|
+
} = await TokenContract.deploy(this.adminWallet, this.adminAddress, 'LPT', 'LPT', 18n).send({
|
|
385
|
+
from: this.adminAddress,
|
|
386
|
+
wait: { returnReceipt: true },
|
|
387
|
+
});
|
|
388
|
+
const {
|
|
389
|
+
receipt: { contract: amm, instance: ammInstance },
|
|
390
|
+
} = await AMMContract.deploy(
|
|
351
391
|
this.adminWallet,
|
|
352
392
|
this.bananaCoin.address,
|
|
353
393
|
this.candyBarCoin.address,
|
package/src/bench/utils.ts
CHANGED
|
@@ -25,7 +25,7 @@ export async function benchmarkSetup(
|
|
|
25
25
|
) {
|
|
26
26
|
const context = await setup(1, { ...opts, telemetryConfig: { benchmark: true } });
|
|
27
27
|
const defaultAccountAddress = context.accounts[0];
|
|
28
|
-
const contract = await BenchmarkingContract.deploy(context.wallet).send({ from: defaultAccountAddress });
|
|
28
|
+
const { contract } = await BenchmarkingContract.deploy(context.wallet).send({ from: defaultAccountAddress });
|
|
29
29
|
context.logger.info(`Deployed benchmarking contract at ${contract.address}`);
|
|
30
30
|
const sequencer = (context.aztecNode as AztecNodeService).getSequencer()!;
|
|
31
31
|
const telemetry = context.telemetryClient as BenchmarkTelemetryClient;
|
|
@@ -149,7 +149,12 @@ export async function sendTxs(
|
|
|
149
149
|
context.logger.info(`Creating ${txCount} txs`);
|
|
150
150
|
const [from] = context.accounts;
|
|
151
151
|
context.logger.info(`Sending ${txCount} txs`);
|
|
152
|
-
return Promise.all(
|
|
152
|
+
return Promise.all(
|
|
153
|
+
calls.map(async call => {
|
|
154
|
+
const { txHash } = await call.send({ from, wait: NO_WAIT });
|
|
155
|
+
return txHash;
|
|
156
|
+
}),
|
|
157
|
+
);
|
|
153
158
|
}
|
|
154
159
|
|
|
155
160
|
export async function waitTxs(txs: TxHash[], context: EndToEndContext, txWaitOpts?: WaitOpts) {
|
|
@@ -107,20 +107,24 @@ export class BlacklistTokenContractTest {
|
|
|
107
107
|
await publicDeployAccounts(this.wallet, [this.adminAddress, this.otherAddress, this.blacklistedAddress]);
|
|
108
108
|
|
|
109
109
|
this.logger.verbose(`Deploying TokenContract...`);
|
|
110
|
-
this.asset = await TokenBlacklistContract.deploy(this.wallet, this.adminAddress).send({
|
|
110
|
+
({ contract: this.asset } = await TokenBlacklistContract.deploy(this.wallet, this.adminAddress).send({
|
|
111
111
|
from: this.adminAddress,
|
|
112
|
-
});
|
|
112
|
+
}));
|
|
113
113
|
this.logger.verbose(`Token deployed to ${this.asset.address}`);
|
|
114
114
|
|
|
115
115
|
this.logger.verbose(`Deploying bad account...`);
|
|
116
|
-
this.badAccount = await InvalidAccountContract.deploy(this.wallet).send({
|
|
116
|
+
({ contract: this.badAccount } = await InvalidAccountContract.deploy(this.wallet).send({
|
|
117
|
+
from: this.adminAddress,
|
|
118
|
+
}));
|
|
117
119
|
this.logger.verbose(`Deployed to ${this.badAccount.address}.`);
|
|
118
120
|
|
|
119
121
|
// Deploy a proxy contract for "on behalf of other" tests. The note owner must be the tx sender
|
|
120
122
|
// (so their notes are in scope), but msg_sender in the target must differ from the note owner
|
|
121
123
|
// to trigger authwit validation. The proxy forwards calls so that msg_sender != tx sender.
|
|
122
124
|
this.logger.verbose(`Deploying generic proxy...`);
|
|
123
|
-
this.authwitProxy = await GenericProxyContract.deploy(this.wallet).send({
|
|
125
|
+
({ contract: this.authwitProxy } = await GenericProxyContract.deploy(this.wallet).send({
|
|
126
|
+
from: this.adminAddress,
|
|
127
|
+
}));
|
|
124
128
|
this.logger.verbose(`Deployed to ${this.authwitProxy.address}.`);
|
|
125
129
|
|
|
126
130
|
await this.crossTimestampOfChange();
|
|
@@ -133,9 +137,9 @@ export class BlacklistTokenContractTest {
|
|
|
133
137
|
[this.adminAddress, this.otherAddress, this.blacklistedAddress],
|
|
134
138
|
);
|
|
135
139
|
|
|
136
|
-
expect(
|
|
137
|
-
|
|
138
|
-
);
|
|
140
|
+
expect(
|
|
141
|
+
(await this.asset.methods.get_roles(this.adminAddress).simulate({ from: this.adminAddress })).result,
|
|
142
|
+
).toEqual(new Role().withAdmin().toNoirStruct());
|
|
139
143
|
}
|
|
140
144
|
|
|
141
145
|
async setup() {
|
|
@@ -189,9 +193,9 @@ export class BlacklistTokenContractTest {
|
|
|
189
193
|
|
|
190
194
|
await this.crossTimestampOfChange();
|
|
191
195
|
|
|
192
|
-
expect(
|
|
193
|
-
|
|
194
|
-
);
|
|
196
|
+
expect(
|
|
197
|
+
(await this.asset.methods.get_roles(this.adminAddress).simulate({ from: this.adminAddress })).result,
|
|
198
|
+
).toEqual(adminMinterRole.toNoirStruct());
|
|
195
199
|
|
|
196
200
|
this.logger.verbose(`Minting ${amount} publicly...`);
|
|
197
201
|
await asset.methods.mint_public(this.adminAddress, amount).send({ from: this.adminAddress });
|
|
@@ -199,7 +203,7 @@ export class BlacklistTokenContractTest {
|
|
|
199
203
|
this.logger.verbose(`Minting ${amount} privately...`);
|
|
200
204
|
const secret = Fr.random();
|
|
201
205
|
const secretHash = await computeSecretHash(secret);
|
|
202
|
-
const receipt = await asset.methods.mint_private(amount, secretHash).send({ from: this.adminAddress });
|
|
206
|
+
const { receipt } = await asset.methods.mint_private(amount, secretHash).send({ from: this.adminAddress });
|
|
203
207
|
|
|
204
208
|
await this.addPendingShieldNoteToPXE(asset, this.adminAddress, amount, secretHash, receipt.txHash);
|
|
205
209
|
await asset.methods.redeem_shield(this.adminAddress, amount, secret).send({ from: this.adminAddress });
|
|
@@ -207,20 +211,20 @@ export class BlacklistTokenContractTest {
|
|
|
207
211
|
|
|
208
212
|
tokenSim.mintPublic(this.adminAddress, amount);
|
|
209
213
|
|
|
210
|
-
const publicBalance = await asset.methods
|
|
214
|
+
const { result: publicBalance } = await asset.methods
|
|
211
215
|
.balance_of_public(this.adminAddress)
|
|
212
216
|
.simulate({ from: this.adminAddress });
|
|
213
217
|
this.logger.verbose(`Public balance of wallet 0: ${publicBalance}`);
|
|
214
218
|
expect(publicBalance).toEqual(this.tokenSim.balanceOfPublic(this.adminAddress));
|
|
215
219
|
|
|
216
220
|
tokenSim.mintPrivate(this.adminAddress, amount);
|
|
217
|
-
const privateBalance = await asset.methods
|
|
221
|
+
const { result: privateBalance } = await asset.methods
|
|
218
222
|
.balance_of_private(this.adminAddress)
|
|
219
223
|
.simulate({ from: this.adminAddress });
|
|
220
224
|
this.logger.verbose(`Private balance of wallet 0: ${privateBalance}`);
|
|
221
225
|
expect(privateBalance).toEqual(tokenSim.balanceOfPrivate(this.adminAddress));
|
|
222
226
|
|
|
223
|
-
const totalSupply = await asset.methods.total_supply().simulate({ from: this.adminAddress });
|
|
227
|
+
const { result: totalSupply } = await asset.methods.total_supply().simulate({ from: this.adminAddress });
|
|
224
228
|
this.logger.verbose(`Total supply: ${totalSupply}`);
|
|
225
229
|
expect(totalSupply).toEqual(tokenSim.totalSupply);
|
|
226
230
|
}
|
|
@@ -14,12 +14,16 @@ import { AppSubscriptionContract } from '@aztec/noir-contracts.js/AppSubscriptio
|
|
|
14
14
|
import { FPCContract } from '@aztec/noir-contracts.js/FPC';
|
|
15
15
|
import { FeeJuiceContract } from '@aztec/noir-contracts.js/FeeJuice';
|
|
16
16
|
import { SponsoredFPCContract } from '@aztec/noir-contracts.js/SponsoredFPC';
|
|
17
|
-
import { TokenContract as BananaCoin } from '@aztec/noir-contracts.js/Token';
|
|
17
|
+
import { TokenContract as BananaCoin, TokenContractArtifact } from '@aztec/noir-contracts.js/Token';
|
|
18
18
|
import { CounterContract } from '@aztec/noir-test-contracts.js/Counter';
|
|
19
19
|
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
20
20
|
import { getCanonicalFeeJuice } from '@aztec/protocol-contracts/fee-juice';
|
|
21
|
+
import { FunctionSelector, countArgumentsSize } from '@aztec/stdlib/abi';
|
|
22
|
+
import type { FunctionAbi } from '@aztec/stdlib/abi';
|
|
23
|
+
import { getContractClassFromArtifact } from '@aztec/stdlib/contract';
|
|
21
24
|
import { GasSettings } from '@aztec/stdlib/gas';
|
|
22
25
|
import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
|
|
26
|
+
import type { AllowedElement } from '@aztec/stdlib/interfaces/server';
|
|
23
27
|
|
|
24
28
|
import { getContract } from 'viem';
|
|
25
29
|
|
|
@@ -37,6 +41,46 @@ import { type BalancesFn, getBalancesFn, setupSponsoredFPC } from '../fixtures/u
|
|
|
37
41
|
import { FeeJuicePortalTestingHarnessFactory, type GasBridgingTestHarness } from '../shared/gas_portal_test_harness.js';
|
|
38
42
|
import { TestWallet } from '../test-wallet/test_wallet.js';
|
|
39
43
|
|
|
44
|
+
/** Returns the calldata length for a function: 1 (selector) + arguments size. */
|
|
45
|
+
function getCalldataLength(functionName: string): number {
|
|
46
|
+
const allFunctions: FunctionAbi[] = (TokenContractArtifact.functions as FunctionAbi[]).concat(
|
|
47
|
+
TokenContractArtifact.nonDispatchPublicFunctions || [],
|
|
48
|
+
);
|
|
49
|
+
const fn = allFunctions.find(f => f.name === functionName);
|
|
50
|
+
if (!fn) {
|
|
51
|
+
throw new Error(`Unknown function ${functionName} in Token artifact`);
|
|
52
|
+
}
|
|
53
|
+
return 1 + countArgumentsSize(fn);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Returns Token-specific allowlist entries needed for FPC-based fee payments.
|
|
58
|
+
* These are test-only — FPC-based fee payment with custom tokens won't work on mainnet alpha.
|
|
59
|
+
*/
|
|
60
|
+
async function getTokenAllowedSetupFunctions(): Promise<AllowedElement[]> {
|
|
61
|
+
const tokenClassId = (await getContractClassFromArtifact(TokenContractArtifact)).id;
|
|
62
|
+
const increaseBalanceSelector = await FunctionSelector.fromSignature('_increase_public_balance((Field),u128)');
|
|
63
|
+
const transferInPublicSelector = await FunctionSelector.fromSignature(
|
|
64
|
+
'transfer_in_public((Field),(Field),u128,Field)',
|
|
65
|
+
);
|
|
66
|
+
|
|
67
|
+
return [
|
|
68
|
+
// Token: needed for private transfers via FPC (transfer_to_public enqueues this)
|
|
69
|
+
{
|
|
70
|
+
classId: tokenClassId,
|
|
71
|
+
selector: increaseBalanceSelector,
|
|
72
|
+
calldataLength: getCalldataLength('_increase_public_balance'),
|
|
73
|
+
onlySelf: true,
|
|
74
|
+
},
|
|
75
|
+
// Token: needed for public transfers via FPC (fee_entrypoint_public enqueues this)
|
|
76
|
+
{
|
|
77
|
+
classId: tokenClassId,
|
|
78
|
+
selector: transferInPublicSelector,
|
|
79
|
+
calldataLength: getCalldataLength('transfer_in_public'),
|
|
80
|
+
},
|
|
81
|
+
];
|
|
82
|
+
}
|
|
83
|
+
|
|
40
84
|
/**
|
|
41
85
|
* Test fixture for testing fees. Provides the following setup steps:
|
|
42
86
|
* InitialAccounts: Initializes 3 Schnorr account contracts.
|
|
@@ -104,12 +148,15 @@ export class FeesTest {
|
|
|
104
148
|
|
|
105
149
|
async setup() {
|
|
106
150
|
this.logger.verbose('Setting up fresh context...');
|
|
151
|
+
// Token allowlist entries are test-only: FPC-based fee payment with custom tokens won't work on mainnet alpha.
|
|
152
|
+
const tokenAllowList = await getTokenAllowedSetupFunctions();
|
|
107
153
|
this.context = await setup(0, {
|
|
108
154
|
startProverNode: true,
|
|
109
155
|
...this.setupOptions,
|
|
110
156
|
fundSponsoredFPC: true,
|
|
111
157
|
skipAccountDeployment: true,
|
|
112
158
|
l1ContractsArgs: { ...this.setupOptions },
|
|
159
|
+
txPublicSetupAllowListExtend: [...(this.setupOptions.txPublicSetupAllowListExtend ?? []), ...tokenAllowList],
|
|
113
160
|
});
|
|
114
161
|
|
|
115
162
|
this.rollupContract = RollupContract.getFromConfig(this.context.config);
|
|
@@ -157,11 +204,15 @@ export class FeesTest {
|
|
|
157
204
|
|
|
158
205
|
/** Alice mints bananaCoin tokens privately to the target address and redeems them. */
|
|
159
206
|
async mintPrivateBananas(amount: bigint, address: AztecAddress) {
|
|
160
|
-
const balanceBefore = await this.bananaCoin.methods
|
|
207
|
+
const { result: balanceBefore } = await this.bananaCoin.methods
|
|
208
|
+
.balance_of_private(address)
|
|
209
|
+
.simulate({ from: address });
|
|
161
210
|
|
|
162
211
|
await mintTokensToPrivate(this.bananaCoin, this.aliceAddress, address, amount);
|
|
163
212
|
|
|
164
|
-
const balanceAfter = await this.bananaCoin.methods
|
|
213
|
+
const { result: balanceAfter } = await this.bananaCoin.methods
|
|
214
|
+
.balance_of_private(address)
|
|
215
|
+
.simulate({ from: address });
|
|
165
216
|
expect(balanceAfter).toEqual(balanceBefore + amount);
|
|
166
217
|
}
|
|
167
218
|
|
|
@@ -223,7 +274,7 @@ export class FeesTest {
|
|
|
223
274
|
async applyDeployBananaToken() {
|
|
224
275
|
this.logger.info('Applying deploy banana token setup');
|
|
225
276
|
|
|
226
|
-
const bananaCoin = await BananaCoin.deploy(this.wallet, this.aliceAddress, 'BC', 'BC', 18n).send({
|
|
277
|
+
const { contract: bananaCoin } = await BananaCoin.deploy(this.wallet, this.aliceAddress, 'BC', 'BC', 18n).send({
|
|
227
278
|
from: this.aliceAddress,
|
|
228
279
|
});
|
|
229
280
|
this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
|
|
@@ -244,7 +295,7 @@ export class FeesTest {
|
|
|
244
295
|
expect((await this.wallet.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
|
|
245
296
|
|
|
246
297
|
const bananaCoin = this.bananaCoin;
|
|
247
|
-
const bananaFPC = await FPCContract.deploy(this.wallet, bananaCoin.address, this.fpcAdmin).send({
|
|
298
|
+
const { contract: bananaFPC } = await FPCContract.deploy(this.wallet, bananaCoin.address, this.fpcAdmin).send({
|
|
248
299
|
from: this.aliceAddress,
|
|
249
300
|
});
|
|
250
301
|
|
|
@@ -65,9 +65,11 @@ export class NestedContractTest {
|
|
|
65
65
|
|
|
66
66
|
async applyManual() {
|
|
67
67
|
this.logger.info('Deploying parent and child contracts');
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
this.childContract =
|
|
68
|
+
({ contract: this.parentContract } = await ParentContract.deploy(this.wallet).send({
|
|
69
|
+
from: this.defaultAccountAddress,
|
|
70
|
+
}));
|
|
71
|
+
({ contract: this.childContract } = await ChildContract.deploy(this.wallet).send({
|
|
72
|
+
from: this.defaultAccountAddress,
|
|
73
|
+
}));
|
|
72
74
|
}
|
|
73
75
|
}
|