@aztec/end-to-end 0.0.1-commit.343b43af6 → 0.0.1-commit.35158ae7e
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 +2 -2
- package/dest/e2e_epochs/epochs_test.d.ts +3 -1
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +3 -1
- package/dest/fixtures/e2e_prover_test.d.ts +4 -3
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +3 -5
- package/dest/fixtures/get_bb_config.d.ts +1 -1
- package/dest/fixtures/get_bb_config.d.ts.map +1 -1
- package/dest/fixtures/get_bb_config.js +5 -5
- package/dest/fixtures/setup.d.ts +1 -1
- package/dest/fixtures/setup.d.ts.map +1 -1
- package/dest/fixtures/setup.js +12 -9
- 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 +9 -12
- 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.js +1 -1
- 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 +58 -7
- package/dest/test-wallet/test_wallet.d.ts +10 -17
- package/dest/test-wallet/test_wallet.d.ts.map +1 -1
- package/dest/test-wallet/test_wallet.js +47 -48
- package/dest/test-wallet/worker_wallet_schema.d.ts +2 -2
- package/package.json +39 -40
- package/src/bench/client_flows/client_flows_benchmark.ts +2 -1
- package/src/e2e_epochs/epochs_test.ts +13 -2
- package/src/fixtures/e2e_prover_test.ts +5 -11
- package/src/fixtures/get_bb_config.ts +7 -6
- package/src/fixtures/setup.ts +11 -8
- package/src/shared/uniswap_l1_l2.ts +29 -24
- package/src/simulators/lending_simulator.ts +4 -2
- package/src/simulators/token_simulator.ts +1 -1
- package/src/spartan/setup_test_wallets.ts +53 -7
- package/src/test-wallet/test_wallet.ts +60 -65
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { generateSchnorrAccounts } from '@aztec/accounts/testing';
|
|
2
|
+
import { NO_FROM } from '@aztec/aztec.js/account';
|
|
2
3
|
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
3
4
|
import { NO_WAIT } from '@aztec/aztec.js/contracts';
|
|
4
5
|
import { L1FeeJuicePortalManager } from '@aztec/aztec.js/ethereum';
|
|
@@ -8,7 +9,7 @@ import { Fr } from '@aztec/aztec.js/fields';
|
|
|
8
9
|
import { createAztecNodeClient, waitForTx } from '@aztec/aztec.js/node';
|
|
9
10
|
import { createEthereumChain } from '@aztec/ethereum/chain';
|
|
10
11
|
import { createExtendedL1Client } from '@aztec/ethereum/client';
|
|
11
|
-
import { retryUntil } from '@aztec/foundation/retry';
|
|
12
|
+
import { makeBackoff, retry, retryUntil } from '@aztec/foundation/retry';
|
|
12
13
|
import { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
13
14
|
import { registerInitialLocalNetworkAccountsInWallet } from '@aztec/wallets/testing';
|
|
14
15
|
import { getACVMConfig } from '../fixtures/get_acvm_config.js';
|
|
@@ -47,7 +48,7 @@ export async function deploySponsoredTestAccountsWithTokens(wallet, aztecNode, m
|
|
|
47
48
|
const paymentMethod = new SponsoredFeePaymentMethod(await getSponsoredFPCAddress());
|
|
48
49
|
const recipientDeployMethod = await recipientAccount.getDeployMethod();
|
|
49
50
|
await recipientDeployMethod.send({
|
|
50
|
-
from:
|
|
51
|
+
from: NO_FROM,
|
|
51
52
|
fee: {
|
|
52
53
|
paymentMethod
|
|
53
54
|
},
|
|
@@ -58,7 +59,7 @@ export async function deploySponsoredTestAccountsWithTokens(wallet, aztecNode, m
|
|
|
58
59
|
await Promise.all(fundedAccounts.map(async (a)=>{
|
|
59
60
|
const deployMethod = await a.getDeployMethod();
|
|
60
61
|
await deployMethod.send({
|
|
61
|
-
from:
|
|
62
|
+
from: NO_FROM,
|
|
62
63
|
fee: {
|
|
63
64
|
paymentMethod
|
|
64
65
|
},
|
|
@@ -85,11 +86,11 @@ export async function deploySponsoredTestAccountsWithTokens(wallet, aztecNode, m
|
|
|
85
86
|
async function deployAccountWithDiagnostics(account, paymentMethod, aztecNode, logger, accountLabel, estimateGas) {
|
|
86
87
|
const deployMethod = await account.getDeployMethod();
|
|
87
88
|
let txHash;
|
|
89
|
+
let gasSettings;
|
|
88
90
|
try {
|
|
89
|
-
let gasSettings;
|
|
90
91
|
if (estimateGas) {
|
|
91
92
|
const sim = await deployMethod.simulate({
|
|
92
|
-
from:
|
|
93
|
+
from: NO_FROM,
|
|
93
94
|
fee: {
|
|
94
95
|
paymentMethod
|
|
95
96
|
}
|
|
@@ -98,7 +99,7 @@ async function deployAccountWithDiagnostics(account, paymentMethod, aztecNode, l
|
|
|
98
99
|
logger.info(`${accountLabel} estimated gas: DA=${gasSettings.gasLimits.daGas} L2=${gasSettings.gasLimits.l2Gas}`);
|
|
99
100
|
}
|
|
100
101
|
const deployResult = await deployMethod.send({
|
|
101
|
-
from:
|
|
102
|
+
from: NO_FROM,
|
|
102
103
|
fee: {
|
|
103
104
|
paymentMethod,
|
|
104
105
|
gasSettings
|
|
@@ -126,6 +127,56 @@ async function deployAccountWithDiagnostics(account, paymentMethod, aztecNode, l
|
|
|
126
127
|
});
|
|
127
128
|
throw error;
|
|
128
129
|
}
|
|
130
|
+
// Track the tx hash across retries so we don't re-send when the previous tx is still pending.
|
|
131
|
+
let sentTxHash;
|
|
132
|
+
await retry(async ()=>{
|
|
133
|
+
// Check if already deployed (handles case where previous attempt succeeded but waitForTx timed out)
|
|
134
|
+
const existing = await aztecNode.getContract(account.address);
|
|
135
|
+
if (existing) {
|
|
136
|
+
logger.info(`${accountLabel} already deployed at ${account.address}, skipping`);
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
// If we already sent a tx, check if it was dropped before deciding to re-send.
|
|
140
|
+
if (sentTxHash) {
|
|
141
|
+
const prevReceipt = await aztecNode.getTxReceipt(sentTxHash.txHash);
|
|
142
|
+
if (prevReceipt.isDropped()) {
|
|
143
|
+
logger.info(`${accountLabel} previous tx ${sentTxHash.txHash} was dropped, re-sending`);
|
|
144
|
+
sentTxHash = undefined;
|
|
145
|
+
} else {
|
|
146
|
+
logger.info(`${accountLabel} previous tx ${sentTxHash.txHash} still pending, waiting again...`);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
if (!sentTxHash) {
|
|
150
|
+
const deployResult = await deployMethod.send({
|
|
151
|
+
from: AztecAddress.ZERO,
|
|
152
|
+
fee: {
|
|
153
|
+
paymentMethod,
|
|
154
|
+
gasSettings
|
|
155
|
+
},
|
|
156
|
+
wait: NO_WAIT
|
|
157
|
+
});
|
|
158
|
+
sentTxHash = {
|
|
159
|
+
txHash: deployResult.txHash
|
|
160
|
+
};
|
|
161
|
+
logger.info(`${accountLabel} tx sent`, {
|
|
162
|
+
txHash: sentTxHash.txHash.toString()
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
const receipt = await waitForTx(aztecNode, sentTxHash.txHash, {
|
|
166
|
+
timeout: 600
|
|
167
|
+
});
|
|
168
|
+
if (receipt.isDropped()) {
|
|
169
|
+
sentTxHash = undefined;
|
|
170
|
+
throw new Error(`${accountLabel} tx was dropped, retrying...`);
|
|
171
|
+
}
|
|
172
|
+
logger.info(`${accountLabel} deployed at ${account.address}`);
|
|
173
|
+
}, `deploy ${accountLabel}`, makeBackoff([
|
|
174
|
+
1,
|
|
175
|
+
2,
|
|
176
|
+
4,
|
|
177
|
+
8,
|
|
178
|
+
16
|
|
179
|
+
]), logger);
|
|
129
180
|
}
|
|
130
181
|
async function deployAccountsInBatches(accounts, paymentMethod, aztecNode, logger, labelPrefix, batchSize = 2, estimateGas) {
|
|
131
182
|
for(let i = 0; i < accounts.length; i += batchSize){
|
|
@@ -163,7 +214,7 @@ export async function deployTestAccountsWithTokens(nodeUrl, l1RpcUrls, mnemonicO
|
|
|
163
214
|
const paymentMethod = new FeeJuicePaymentMethodWithClaim(a.address, claims[i]);
|
|
164
215
|
const deployMethod = await a.getDeployMethod();
|
|
165
216
|
await deployMethod.send({
|
|
166
|
-
from:
|
|
217
|
+
from: NO_FROM,
|
|
167
218
|
fee: {
|
|
168
219
|
paymentMethod
|
|
169
220
|
}
|
|
@@ -3,7 +3,7 @@ import { type CallIntent, type ContractFunctionInteractionCallIntent, type Inten
|
|
|
3
3
|
import type { AztecNode } from '@aztec/aztec.js/node';
|
|
4
4
|
import { AccountManager, type SendOptions } from '@aztec/aztec.js/wallet';
|
|
5
5
|
import { Fq, Fr } from '@aztec/foundation/curves/bn254';
|
|
6
|
-
import type {
|
|
6
|
+
import type { NotesFilter } from '@aztec/pxe/client/lazy';
|
|
7
7
|
import { type PXEConfig } from '@aztec/pxe/config';
|
|
8
8
|
import { PXE, type PXECreationOptions } from '@aztec/pxe/server';
|
|
9
9
|
import { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
@@ -11,7 +11,7 @@ import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
|
11
11
|
import type { NoteDao } from '@aztec/stdlib/note';
|
|
12
12
|
import type { BlockHeader, TxHash, TxReceipt, TxSimulationResult } from '@aztec/stdlib/tx';
|
|
13
13
|
import { ExecutionPayload } from '@aztec/stdlib/tx';
|
|
14
|
-
import { BaseWallet, type
|
|
14
|
+
import { BaseWallet, type SimulateViaEntrypointOptions } from '@aztec/wallet-sdk/base-wallet';
|
|
15
15
|
import { AztecNodeProxy, ProvenTx } from './utils.js';
|
|
16
16
|
/**
|
|
17
17
|
* Data for generating an account.
|
|
@@ -45,16 +45,13 @@ export declare class TestWallet extends BaseWallet {
|
|
|
45
45
|
}>;
|
|
46
46
|
protected accounts: Map<string, Account>;
|
|
47
47
|
/**
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
* generating kernel witnesses. When false, simulateViaEntrypoint defers to the standard
|
|
53
|
-
* simulation path via the real account entrypoint.
|
|
48
|
+
* Controls how the test wallet simulates transactions:
|
|
49
|
+
* - `kernelless`: Skips kernel circuits but uses the real account contract. Default.
|
|
50
|
+
* - `kernelless-override`: Skips kernels and replaces the account with a stub that doesn't do authwit validation.
|
|
51
|
+
* - `full`: Uses real kernel circuits and real account contracts. Slow!
|
|
54
52
|
*/
|
|
55
|
-
private
|
|
56
|
-
|
|
57
|
-
disableSimulatedSimulations(): void;
|
|
53
|
+
private simulationMode;
|
|
54
|
+
setSimulationMode(mode: 'kernelless' | 'kernelless-override' | 'full'): void;
|
|
58
55
|
setMinFeePadding(value?: number): void;
|
|
59
56
|
protected getAccountFromAddress(address: AztecAddress): Promise<Account>;
|
|
60
57
|
getAccounts(): Promise<{
|
|
@@ -68,11 +65,7 @@ export declare class TestWallet extends BaseWallet {
|
|
|
68
65
|
}>;
|
|
69
66
|
setPublicAuthWit(from: AztecAddress, messageHashOrIntent: Fr | IntentInnerHash | CallIntent | ContractFunctionInteractionCallIntent, authorized: boolean): Promise<SetPublicAuthwitContractInteraction>;
|
|
70
67
|
createAuthWit(from: AztecAddress, intent: IntentInnerHash | CallIntent | ContractFunctionInteractionCallIntent): Promise<AuthWitness>;
|
|
71
|
-
|
|
72
|
-
* Override simulateViaEntrypoint to use fake accounts for kernelless simulation
|
|
73
|
-
* when simulatedSimulations is enabled. Otherwise falls through to the real entrypoint path.
|
|
74
|
-
*/
|
|
75
|
-
protected simulateViaEntrypoint(executionPayload: ExecutionPayload, from: AztecAddress, feeOptions: FeeOptions, scopes: AccessScopes, skipTxValidation?: boolean, skipFeeEnforcement?: boolean): Promise<TxSimulationResult>;
|
|
68
|
+
protected simulateViaEntrypoint(executionPayload: ExecutionPayload, opts: SimulateViaEntrypointOptions): Promise<TxSimulationResult>;
|
|
76
69
|
proveTx(exec: ExecutionPayload, opts: Omit<SendOptions, 'wait'>): Promise<ProvenTx>;
|
|
77
70
|
getTxReceipt(txHash: TxHash): Promise<TxReceipt>;
|
|
78
71
|
getNotes(filter: NotesFilter): Promise<NoteDao[]>;
|
|
@@ -80,4 +73,4 @@ export declare class TestWallet extends BaseWallet {
|
|
|
80
73
|
sync(): Promise<void>;
|
|
81
74
|
stop(): Promise<void>;
|
|
82
75
|
}
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF93YWxsZXQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0LXdhbGxldC90ZXN0X3dhbGxldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsS0FBSyxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQVcsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RixPQUFPLEVBQ0wsS0FBSyxVQUFVLEVBQ2YsS0FBSyxxQ0FBcUMsRUFDMUMsS0FBSyxlQUFlLEVBQ3BCLG1DQUFtQyxFQUlwQyxNQUFNLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsS0FBSyxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUcxRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXhELE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxLQUFLLFNBQVMsRUFBZ0IsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssa0JBQWtCLEVBQWEsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRzNELE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sS0FBSyxFQUNWLFdBQVcsRUFHWCxNQUFNLEVBQ04sU0FBUyxFQUNULGtCQUFrQixFQUNuQixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBMEIsTUFBTSxrQkFBa0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssNEJBQTRCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUU5RixPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV0RDs7R0FFRztBQUNILE1BQU0sV0FBVyxXQUFXO0lBQzFCLE1BQU0sRUFBRSxFQUFFLENBQUM7SUFDWCxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ1QsUUFBUSxFQUFFLGVBQWUsQ0FBQztDQUMzQjtBQUVEOzs7O0dBSUc7QUFDSCxxQkFBYSxVQUFXLFNBQVEsVUFBVTtJQUd0QyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU87SUFGMUIsWUFDRSxHQUFHLEVBQUUsR0FBRyxFQUNTLE9BQU8sRUFBRSxjQUFjLEVBR3pDO0lBRUQsT0FBYSxNQUFNLENBQ2pCLElBQUksRUFBRSxTQUFTLEVBQ2YsaUJBQWlCLENBQUMsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQ3RDLE9BQU8sR0FBRSxrQkFBb0MsR0FDNUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQVFyQjtJQUVEOzs7T0FHRztJQUNILFVBQVUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxHQUFHLElBQUksQ0FFaEM7SUFFRCxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FRbkY7SUFFRCxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLENBT3JGO0lBRUQsbUJBQW1CLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQU9yRjtJQUVLLHFCQUFxQixDQUFDLE9BQU8sRUFBRSxZQUFZOzs7O09BZ0JoRDtJQUNELFNBQVMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBYTtJQUVyRDs7Ozs7T0FLRztJQUNILE9BQU8sQ0FBQyxjQUFjLENBQStEO0lBRXJGLGlCQUFpQixDQUFDLElBQUksRUFBRSxZQUFZLEdBQUcscUJBQXFCLEdBQUcsTUFBTSxRQUVwRTtJQUVELGdCQUFnQixDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sUUFFOUI7SUFFRCxTQUFTLENBQUMscUJBQXFCLENBQUMsT0FBTyxFQUFFLFlBQVksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBUXZFO0lBRUQsV0FBVzs7O1NBRVY7SUFFSyxhQUFhLENBQUMsV0FBVyxDQUFDLEVBQUUsV0FBVyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FldEU7SUFFRCxjQUFjLENBQ1osVUFBVSxFQUFFLFlBQVksRUFDeEIsTUFBTSxFQUFFLGVBQWUsR0FBRyxVQUFVLEdBQUcscUNBQXFDLEVBQzVFLE9BQU8sRUFBRSxXQUFXLEdBQ25CLE9BQU8sQ0FBQztRQUNULGdCQUFnQixFQUFFLE9BQU8sQ0FBQztRQUMxQixlQUFlLEVBQUUsT0FBTyxDQUFDO0tBQzFCLENBQUMsQ0FFRDtJQUVNLGdCQUFnQixDQUNyQixJQUFJLEVBQUUsWUFBWSxFQUNsQixtQkFBbUIsRUFBRSxFQUFFLEdBQUcsZUFBZSxHQUFHLFVBQVUsR0FBRyxxQ0FBcUMsRUFDOUYsVUFBVSxFQUFFLE9BQU8sR0FDbEIsT0FBTyxDQUFDLG1DQUFtQyxDQUFDLENBRTlDO0lBRXFCLGFBQWEsQ0FDakMsSUFBSSxFQUFFLFlBQVksRUFDbEIsTUFBTSxFQUFFLGVBQWUsR0FBRyxVQUFVLEdBQUcscUNBQXFDLEdBQzNFLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FjdEI7SUFFRCxVQUF5QixxQkFBcUIsQ0FDNUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQ2xDLElBQUksRUFBRSw0QkFBNEIsR0FDakMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBZ0Q3QjtJQUVLLE9BQU8sQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQVV4RjtJQUVELFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FFL0M7SUFFRCxRQUFRLENBQUMsTUFBTSxFQUFFLFdBQVcsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FFaEQ7SUFFRCxvQkFBb0IsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLENBRTNDO0lBRUQsSUFBSSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FFcEI7SUFFRCxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUVwQjtDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test_wallet.d.ts","sourceRoot":"","sources":["../../src/test-wallet/test_wallet.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,eAAe,
|
|
1
|
+
{"version":3,"file":"test_wallet.d.ts","sourceRoot":"","sources":["../../src/test-wallet/test_wallet.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { EcdsaKAccountContract, EcdsaRAccountContract } from '@aztec/accounts/ecdsa';
|
|
2
2
|
import { SchnorrAccountContract } from '@aztec/accounts/schnorr';
|
|
3
3
|
import { StubAccountContractArtifact, createStubAccount } from '@aztec/accounts/stub';
|
|
4
|
-
import {
|
|
4
|
+
import { NO_FROM } from '@aztec/aztec.js/account';
|
|
5
5
|
import { SetPublicAuthwitContractInteraction, computeInnerAuthWitHashFromAction, isContractFunctionInteractionCallIntent, lookupValidity } from '@aztec/aztec.js/authorization';
|
|
6
6
|
import { AccountManager } from '@aztec/aztec.js/wallet';
|
|
7
|
+
import { DefaultEntrypoint } from '@aztec/entrypoints/default';
|
|
7
8
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
8
9
|
import { GrumpkinScalar } from '@aztec/foundation/curves/grumpkin';
|
|
9
10
|
import { getPXEConfig } from '@aztec/pxe/config';
|
|
10
11
|
import { createPXE } from '@aztec/pxe/server';
|
|
11
|
-
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
12
12
|
import { getContractInstanceFromInstantiationParams } from '@aztec/stdlib/contract';
|
|
13
13
|
import { deriveSigningKey } from '@aztec/stdlib/keys';
|
|
14
14
|
import { mergeExecutionPayloads } from '@aztec/stdlib/tx';
|
|
@@ -21,7 +21,7 @@ import { AztecNodeProxy, ProvenTx } from './utils.js';
|
|
|
21
21
|
*/ export class TestWallet extends BaseWallet {
|
|
22
22
|
nodeRef;
|
|
23
23
|
constructor(pxe, nodeRef){
|
|
24
|
-
super(pxe, nodeRef), this.nodeRef = nodeRef, this.accounts = new Map(), this.
|
|
24
|
+
super(pxe, nodeRef), this.nodeRef = nodeRef, this.accounts = new Map(), this.simulationMode = 'kernelless';
|
|
25
25
|
}
|
|
26
26
|
static async create(node, overridePXEConfig, options = {
|
|
27
27
|
loggers: {}
|
|
@@ -67,9 +67,6 @@ import { AztecNodeProxy, ProvenTx } from './utils.js';
|
|
|
67
67
|
}
|
|
68
68
|
async getFakeAccountDataFor(address) {
|
|
69
69
|
const originalAccount = await this.getAccountFromAddress(address);
|
|
70
|
-
if (originalAccount instanceof SignerlessAccount) {
|
|
71
|
-
throw new Error(`Cannot create fake account data for SignerlessAccount at address: ${address}`);
|
|
72
|
-
}
|
|
73
70
|
const originalAddress = originalAccount.getCompleteAddress();
|
|
74
71
|
const contractInstance = await this.pxe.getContractInstance(originalAddress.address);
|
|
75
72
|
if (!contractInstance) {
|
|
@@ -87,29 +84,19 @@ import { AztecNodeProxy, ProvenTx } from './utils.js';
|
|
|
87
84
|
}
|
|
88
85
|
accounts;
|
|
89
86
|
/**
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
enableSimulatedSimulations() {
|
|
98
|
-
this.simulatedSimulations = true;
|
|
99
|
-
}
|
|
100
|
-
disableSimulatedSimulations() {
|
|
101
|
-
this.simulatedSimulations = false;
|
|
87
|
+
* Controls how the test wallet simulates transactions:
|
|
88
|
+
* - `kernelless`: Skips kernel circuits but uses the real account contract. Default.
|
|
89
|
+
* - `kernelless-override`: Skips kernels and replaces the account with a stub that doesn't do authwit validation.
|
|
90
|
+
* - `full`: Uses real kernel circuits and real account contracts. Slow!
|
|
91
|
+
*/ simulationMode;
|
|
92
|
+
setSimulationMode(mode) {
|
|
93
|
+
this.simulationMode = mode;
|
|
102
94
|
}
|
|
103
95
|
setMinFeePadding(value) {
|
|
104
96
|
this.minFeePadding = value ?? 0.5;
|
|
105
97
|
}
|
|
106
98
|
getAccountFromAddress(address) {
|
|
107
|
-
|
|
108
|
-
if (address.equals(AztecAddress.ZERO)) {
|
|
109
|
-
account = new SignerlessAccount();
|
|
110
|
-
} else {
|
|
111
|
-
account = this.accounts.get(address?.toString() ?? '');
|
|
112
|
-
}
|
|
99
|
+
const account = this.accounts.get(address?.toString() ?? '');
|
|
113
100
|
if (!account) {
|
|
114
101
|
throw new Error(`Account not found in wallet for address: ${address}`);
|
|
115
102
|
}
|
|
@@ -154,39 +141,51 @@ import { AztecNodeProxy, ProvenTx } from './utils.js';
|
|
|
154
141
|
}
|
|
155
142
|
return account.createAuthWit(intentInnerHash, chainInfo);
|
|
156
143
|
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
*/ async simulateViaEntrypoint(executionPayload, from, feeOptions, scopes, skipTxValidation, skipFeeEnforcement) {
|
|
161
|
-
if (!this.simulatedSimulations) {
|
|
162
|
-
return super.simulateViaEntrypoint(executionPayload, from, feeOptions, scopes, skipTxValidation, skipFeeEnforcement);
|
|
163
|
-
}
|
|
144
|
+
async simulateViaEntrypoint(executionPayload, opts) {
|
|
145
|
+
const { from, feeOptions, scopes, skipTxValidation, skipFeeEnforcement } = opts;
|
|
146
|
+
const skipKernels = this.simulationMode !== 'full';
|
|
164
147
|
const feeExecutionPayload = await feeOptions.walletFeePaymentMethod?.getExecutionPayload();
|
|
165
|
-
const executionOptions = {
|
|
166
|
-
txNonce: Fr.random(),
|
|
167
|
-
cancellable: this.cancellableTransactions,
|
|
168
|
-
feePaymentMethodOptions: feeOptions.accountFeePaymentMethodOptions
|
|
169
|
-
};
|
|
170
148
|
const finalExecutionPayload = feeExecutionPayload ? mergeExecutionPayloads([
|
|
171
149
|
feeExecutionPayload,
|
|
172
150
|
executionPayload
|
|
173
151
|
]) : executionPayload;
|
|
174
|
-
const { account: fromAccount, instance, artifact } = await this.getFakeAccountDataFor(from);
|
|
175
152
|
const chainInfo = await this.getChainInfo();
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
153
|
+
let overrides;
|
|
154
|
+
let txRequest;
|
|
155
|
+
if (from === NO_FROM) {
|
|
156
|
+
const entrypoint = new DefaultEntrypoint();
|
|
157
|
+
txRequest = await entrypoint.createTxExecutionRequest(finalExecutionPayload, feeOptions.gasSettings, chainInfo);
|
|
158
|
+
} else {
|
|
159
|
+
const useOverride = this.simulationMode === 'kernelless-override';
|
|
160
|
+
let fromAccount;
|
|
161
|
+
if (useOverride) {
|
|
162
|
+
const { account, instance, artifact } = await this.getFakeAccountDataFor(from);
|
|
163
|
+
fromAccount = account;
|
|
164
|
+
overrides = {
|
|
165
|
+
contracts: {
|
|
166
|
+
[from.toString()]: {
|
|
167
|
+
instance,
|
|
168
|
+
artifact
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
} else {
|
|
173
|
+
fromAccount = await this.getAccountFromAddress(from);
|
|
181
174
|
}
|
|
182
|
-
|
|
175
|
+
const executionOptions = {
|
|
176
|
+
txNonce: Fr.random(),
|
|
177
|
+
cancellable: this.cancellableTransactions,
|
|
178
|
+
// If from is an address, feeOptions include the way the account contract should handle the fee payment
|
|
179
|
+
feePaymentMethodOptions: feeOptions.accountFeePaymentMethodOptions
|
|
180
|
+
};
|
|
181
|
+
txRequest = await fromAccount.createTxExecutionRequest(finalExecutionPayload, feeOptions.gasSettings, chainInfo, executionOptions);
|
|
182
|
+
}
|
|
183
183
|
return this.pxe.simulateTx(txRequest, {
|
|
184
184
|
simulatePublic: true,
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
},
|
|
185
|
+
skipKernels,
|
|
186
|
+
skipFeeEnforcement,
|
|
187
|
+
skipTxValidation,
|
|
188
|
+
overrides,
|
|
190
189
|
scopes
|
|
191
190
|
});
|
|
192
191
|
}
|
|
@@ -82,7 +82,7 @@ export declare const WorkerWalletSchema: {
|
|
|
82
82
|
extraHashedArgs: any[];
|
|
83
83
|
feePayer?: any;
|
|
84
84
|
}>, z.ZodObject<{
|
|
85
|
-
from: import("@aztec/foundation/schemas").ZodFor<AztecAddress>;
|
|
85
|
+
from: z.ZodUnion<[import("@aztec/foundation/schemas").ZodFor<AztecAddress>, z.ZodLiteral<"NO_FROM">]>;
|
|
86
86
|
authWitnesses: import("@aztec/foundation/schemas").ZodNullableOptional<z.ZodArray<z.ZodType<import("@aztec/stdlib/auth-witness").AuthWitness, any, string>, "many">>;
|
|
87
87
|
capsules: import("@aztec/foundation/schemas").ZodNullableOptional<z.ZodArray<z.ZodType<import("@aztec/stdlib/tx").Capsule, any, string>, "many">>;
|
|
88
88
|
fee: import("@aztec/foundation/schemas").ZodNullableOptional<z.ZodObject<{
|
|
@@ -213,7 +213,7 @@ export declare const WorkerWalletSchema: {
|
|
|
213
213
|
}>]>>;
|
|
214
214
|
additionalScopes: import("@aztec/foundation/schemas").ZodNullableOptional<z.ZodArray<import("@aztec/foundation/schemas").ZodFor<AztecAddress>, "many">>;
|
|
215
215
|
}, "strip", z.ZodTypeAny, {
|
|
216
|
-
from: AztecAddress;
|
|
216
|
+
from: "NO_FROM" | AztecAddress;
|
|
217
217
|
authWitnesses?: import("@aztec/stdlib/auth-witness").AuthWitness[] | undefined;
|
|
218
218
|
capsules?: import("@aztec/stdlib/tx").Capsule[] | undefined;
|
|
219
219
|
fee?: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/end-to-end",
|
|
3
|
-
"version": "0.0.1-commit.
|
|
3
|
+
"version": "0.0.1-commit.35158ae7e",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": "./dest/index.js",
|
|
6
6
|
"inherits": [
|
|
@@ -26,45 +26,44 @@
|
|
|
26
26
|
"formatting": "run -T prettier --check ./src && run -T eslint ./src"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@aztec/accounts": "0.0.1-commit.
|
|
30
|
-
"@aztec/archiver": "0.0.1-commit.
|
|
31
|
-
"@aztec/aztec": "0.0.1-commit.
|
|
32
|
-
"@aztec/aztec-node": "0.0.1-commit.
|
|
33
|
-
"@aztec/aztec.js": "0.0.1-commit.
|
|
34
|
-
"@aztec/bb-prover": "0.0.1-commit.
|
|
35
|
-
"@aztec/bb.js": "0.0.1-commit.
|
|
36
|
-
"@aztec/blob-client": "0.0.1-commit.
|
|
37
|
-
"@aztec/blob-lib": "0.0.1-commit.
|
|
38
|
-
"@aztec/bot": "0.0.1-commit.
|
|
39
|
-
"@aztec/cli": "0.0.1-commit.
|
|
40
|
-
"@aztec/constants": "0.0.1-commit.
|
|
41
|
-
"@aztec/entrypoints": "0.0.1-commit.
|
|
42
|
-
"@aztec/epoch-cache": "0.0.1-commit.
|
|
43
|
-
"@aztec/ethereum": "0.0.1-commit.
|
|
44
|
-
"@aztec/foundation": "0.0.1-commit.
|
|
45
|
-
"@aztec/kv-store": "0.0.1-commit.
|
|
46
|
-
"@aztec/l1-artifacts": "0.0.1-commit.
|
|
47
|
-
"@aztec/
|
|
48
|
-
"@aztec/
|
|
49
|
-
"@aztec/noir-
|
|
50
|
-
"@aztec/noir-
|
|
51
|
-
"@aztec/noir-
|
|
52
|
-
"@aztec/
|
|
53
|
-
"@aztec/
|
|
54
|
-
"@aztec/
|
|
55
|
-
"@aztec/prover-
|
|
56
|
-
"@aztec/
|
|
57
|
-
"@aztec/
|
|
58
|
-
"@aztec/
|
|
59
|
-
"@aztec/
|
|
60
|
-
"@aztec/
|
|
61
|
-
"@aztec/
|
|
62
|
-
"@aztec/
|
|
63
|
-
"@aztec/validator-
|
|
64
|
-
"@aztec/
|
|
65
|
-
"@aztec/
|
|
66
|
-
"@aztec/
|
|
67
|
-
"@aztec/world-state": "0.0.1-commit.343b43af6",
|
|
29
|
+
"@aztec/accounts": "0.0.1-commit.35158ae7e",
|
|
30
|
+
"@aztec/archiver": "0.0.1-commit.35158ae7e",
|
|
31
|
+
"@aztec/aztec": "0.0.1-commit.35158ae7e",
|
|
32
|
+
"@aztec/aztec-node": "0.0.1-commit.35158ae7e",
|
|
33
|
+
"@aztec/aztec.js": "0.0.1-commit.35158ae7e",
|
|
34
|
+
"@aztec/bb-prover": "0.0.1-commit.35158ae7e",
|
|
35
|
+
"@aztec/bb.js": "0.0.1-commit.35158ae7e",
|
|
36
|
+
"@aztec/blob-client": "0.0.1-commit.35158ae7e",
|
|
37
|
+
"@aztec/blob-lib": "0.0.1-commit.35158ae7e",
|
|
38
|
+
"@aztec/bot": "0.0.1-commit.35158ae7e",
|
|
39
|
+
"@aztec/cli": "0.0.1-commit.35158ae7e",
|
|
40
|
+
"@aztec/constants": "0.0.1-commit.35158ae7e",
|
|
41
|
+
"@aztec/entrypoints": "0.0.1-commit.35158ae7e",
|
|
42
|
+
"@aztec/epoch-cache": "0.0.1-commit.35158ae7e",
|
|
43
|
+
"@aztec/ethereum": "0.0.1-commit.35158ae7e",
|
|
44
|
+
"@aztec/foundation": "0.0.1-commit.35158ae7e",
|
|
45
|
+
"@aztec/kv-store": "0.0.1-commit.35158ae7e",
|
|
46
|
+
"@aztec/l1-artifacts": "0.0.1-commit.35158ae7e",
|
|
47
|
+
"@aztec/node-keystore": "0.0.1-commit.35158ae7e",
|
|
48
|
+
"@aztec/noir-contracts.js": "0.0.1-commit.35158ae7e",
|
|
49
|
+
"@aztec/noir-noirc_abi": "0.0.1-commit.35158ae7e",
|
|
50
|
+
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.35158ae7e",
|
|
51
|
+
"@aztec/noir-test-contracts.js": "0.0.1-commit.35158ae7e",
|
|
52
|
+
"@aztec/p2p": "0.0.1-commit.35158ae7e",
|
|
53
|
+
"@aztec/protocol-contracts": "0.0.1-commit.35158ae7e",
|
|
54
|
+
"@aztec/prover-client": "0.0.1-commit.35158ae7e",
|
|
55
|
+
"@aztec/prover-node": "0.0.1-commit.35158ae7e",
|
|
56
|
+
"@aztec/pxe": "0.0.1-commit.35158ae7e",
|
|
57
|
+
"@aztec/sequencer-client": "0.0.1-commit.35158ae7e",
|
|
58
|
+
"@aztec/simulator": "0.0.1-commit.35158ae7e",
|
|
59
|
+
"@aztec/slasher": "0.0.1-commit.35158ae7e",
|
|
60
|
+
"@aztec/stdlib": "0.0.1-commit.35158ae7e",
|
|
61
|
+
"@aztec/telemetry-client": "0.0.1-commit.35158ae7e",
|
|
62
|
+
"@aztec/validator-client": "0.0.1-commit.35158ae7e",
|
|
63
|
+
"@aztec/validator-ha-signer": "0.0.1-commit.35158ae7e",
|
|
64
|
+
"@aztec/wallet-sdk": "0.0.1-commit.35158ae7e",
|
|
65
|
+
"@aztec/wallets": "0.0.1-commit.35158ae7e",
|
|
66
|
+
"@aztec/world-state": "0.0.1-commit.35158ae7e",
|
|
68
67
|
"@iarna/toml": "^2.2.5",
|
|
69
68
|
"@jest/globals": "^30.0.0",
|
|
70
69
|
"@noble/curves": "=1.0.0",
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { NO_FROM } from '@aztec/aztec.js/account';
|
|
1
2
|
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
2
3
|
import { FeeJuicePaymentMethodWithClaim } from '@aztec/aztec.js/fee';
|
|
3
4
|
import { type FeePaymentMethod, PrivateFeePaymentMethod, SponsoredFeePaymentMethod } from '@aztec/aztec.js/fee';
|
|
@@ -333,7 +334,7 @@ export class ClientFlowsBenchmark {
|
|
|
333
334
|
const claim = await this.feeJuiceBridgeTestHarness.prepareTokensOnL1(benchysAddress);
|
|
334
335
|
const behchysDeployMethod = await benchysAccountManager.getDeployMethod();
|
|
335
336
|
await behchysDeployMethod.send({
|
|
336
|
-
from:
|
|
337
|
+
from: NO_FROM,
|
|
337
338
|
fee: { paymentMethod: new FeeJuicePaymentMethodWithClaim(benchysAddress, claim) },
|
|
338
339
|
});
|
|
339
340
|
// Register benchy on the user's Wallet, where we're going to be interacting from
|
|
@@ -28,6 +28,7 @@ import { type SequencerClient, type SequencerEvents, SequencerState } from '@azt
|
|
|
28
28
|
import { type BlockParameter, EthAddress } from '@aztec/stdlib/block';
|
|
29
29
|
import { type L1RollupConstants, getProofSubmissionDeadlineTimestamp } from '@aztec/stdlib/epoch-helpers';
|
|
30
30
|
import { tryStop } from '@aztec/stdlib/interfaces/server';
|
|
31
|
+
import type { SlashingProtectionDatabase } from '@aztec/validator-ha-signer/types';
|
|
31
32
|
|
|
32
33
|
import { join } from 'path';
|
|
33
34
|
import type { Hex } from 'viem';
|
|
@@ -238,13 +239,21 @@ export class EpochsTestContext {
|
|
|
238
239
|
|
|
239
240
|
public createValidatorNode(
|
|
240
241
|
privateKeys: `0x${string}`[],
|
|
241
|
-
opts: Partial<AztecNodeConfig> & {
|
|
242
|
+
opts: Partial<AztecNodeConfig> & {
|
|
243
|
+
dontStartSequencer?: boolean;
|
|
244
|
+
slashingProtectionDb?: SlashingProtectionDatabase;
|
|
245
|
+
} = {},
|
|
242
246
|
) {
|
|
243
247
|
this.logger.warn('Creating and syncing a validator node...');
|
|
244
248
|
return this.createNode({ ...opts, disableValidator: false, validatorPrivateKeys: new SecretValue(privateKeys) });
|
|
245
249
|
}
|
|
246
250
|
|
|
247
|
-
private async createNode(
|
|
251
|
+
private async createNode(
|
|
252
|
+
opts: Partial<AztecNodeConfig> & {
|
|
253
|
+
dontStartSequencer?: boolean;
|
|
254
|
+
slashingProtectionDb?: SlashingProtectionDatabase;
|
|
255
|
+
} = {},
|
|
256
|
+
) {
|
|
248
257
|
const nodeIndex = this.nodes.length + 1;
|
|
249
258
|
const actorPrefix = opts.disableValidator ? 'node' : 'validator';
|
|
250
259
|
const { mockGossipSubNetwork } = this.context;
|
|
@@ -257,6 +266,7 @@ export class EpochsTestContext {
|
|
|
257
266
|
...resolvedConfig,
|
|
258
267
|
dataDirectory: join(this.context.config.dataDirectory!, randomBytes(8).toString('hex')),
|
|
259
268
|
validatorPrivateKeys: opts.validatorPrivateKeys ?? new SecretValue([]),
|
|
269
|
+
nodeId: resolvedConfig.nodeId || `${actorPrefix}-${nodeIndex}`,
|
|
260
270
|
p2pEnabled,
|
|
261
271
|
p2pIp,
|
|
262
272
|
},
|
|
@@ -265,6 +275,7 @@ export class EpochsTestContext {
|
|
|
265
275
|
p2pClientDeps: {
|
|
266
276
|
p2pServiceFactory: mockGossipSubNetwork ? getMockPubSubP2PServiceFactory(mockGossipSubNetwork) : undefined,
|
|
267
277
|
},
|
|
278
|
+
slashingProtectionDb: opts.slashingProtectionDb,
|
|
268
279
|
},
|
|
269
280
|
{
|
|
270
281
|
prefilledPublicData: this.context.prefilledPublicData,
|
|
@@ -4,12 +4,7 @@ import { AztecAddress, EthAddress } from '@aztec/aztec.js/addresses';
|
|
|
4
4
|
import { type Logger, createLogger } from '@aztec/aztec.js/log';
|
|
5
5
|
import type { AztecNode } from '@aztec/aztec.js/node';
|
|
6
6
|
import { CheatCodes } from '@aztec/aztec/testing';
|
|
7
|
-
import {
|
|
8
|
-
BBCircuitVerifier,
|
|
9
|
-
type ClientProtocolCircuitVerifier,
|
|
10
|
-
QueuedIVCVerifier,
|
|
11
|
-
TestCircuitVerifier,
|
|
12
|
-
} from '@aztec/bb-prover';
|
|
7
|
+
import type { ClientProtocolCircuitVerifier } from '@aztec/bb-prover';
|
|
13
8
|
import { BackendType, Barretenberg } from '@aztec/bb.js';
|
|
14
9
|
import type { DeployAztecL1ContractsReturnType } from '@aztec/ethereum/deploy-aztec-l1-contracts';
|
|
15
10
|
import { Buffer32 } from '@aztec/foundation/buffer';
|
|
@@ -68,7 +63,10 @@ export class FullProverTest {
|
|
|
68
63
|
private provenComponents: ProvenSetup[] = [];
|
|
69
64
|
private bbConfigCleanup?: () => Promise<void>;
|
|
70
65
|
private acvmConfigCleanup?: () => Promise<void>;
|
|
71
|
-
|
|
66
|
+
/** Returns the proof verifier from the prover node (for test assertions). */
|
|
67
|
+
get circuitProofVerifier(): ClientProtocolCircuitVerifier | undefined {
|
|
68
|
+
return this.proverAztecNode?.getProofVerifier();
|
|
69
|
+
}
|
|
72
70
|
provenAsset!: TokenContract;
|
|
73
71
|
context!: EndToEndContext;
|
|
74
72
|
private proverAztecNode!: AztecNodeService;
|
|
@@ -170,9 +168,6 @@ export class FullProverTest {
|
|
|
170
168
|
|
|
171
169
|
await Barretenberg.initSingleton({ backend: BackendType.NativeUnixSocket });
|
|
172
170
|
|
|
173
|
-
const verifier = await BBCircuitVerifier.new(bbConfig);
|
|
174
|
-
this.circuitProofVerifier = new QueuedIVCVerifier(bbConfig, verifier);
|
|
175
|
-
|
|
176
171
|
this.logger.debug(`Configuring the node for real proofs...`);
|
|
177
172
|
await this.aztecNodeAdmin.setConfig({
|
|
178
173
|
realProofs: true,
|
|
@@ -180,7 +175,6 @@ export class FullProverTest {
|
|
|
180
175
|
});
|
|
181
176
|
} else {
|
|
182
177
|
this.logger.debug(`Configuring the node min txs per block ${this.minNumberOfTxsPerBlock}...`);
|
|
183
|
-
this.circuitProofVerifier = new TestCircuitVerifier();
|
|
184
178
|
await this.aztecNodeAdmin.setConfig({
|
|
185
179
|
minTxsPerBlock: this.minNumberOfTxsPerBlock,
|
|
186
180
|
});
|
|
@@ -13,8 +13,10 @@ const {
|
|
|
13
13
|
BB_SKIP_CLEANUP = '',
|
|
14
14
|
TEMP_DIR = tmpdir(),
|
|
15
15
|
BB_WORKING_DIRECTORY = '',
|
|
16
|
-
BB_NUM_IVC_VERIFIERS = '
|
|
16
|
+
BB_NUM_IVC_VERIFIERS = '8',
|
|
17
17
|
BB_IVC_CONCURRENCY = '1',
|
|
18
|
+
BB_CHONK_VERIFY_MAX_BATCH = '16',
|
|
19
|
+
BB_CHONK_VERIFY_BATCH_CONCURRENCY = '6',
|
|
18
20
|
} = process.env;
|
|
19
21
|
|
|
20
22
|
export const getBBConfig = async (
|
|
@@ -41,16 +43,15 @@ export const getBBConfig = async (
|
|
|
41
43
|
const bbSkipCleanup = ['1', 'true'].includes(BB_SKIP_CLEANUP);
|
|
42
44
|
const cleanup = bbSkipCleanup ? () => Promise.resolve() : () => tryRmDir(directoryToCleanup);
|
|
43
45
|
|
|
44
|
-
const numIvcVerifiers = Number(BB_NUM_IVC_VERIFIERS);
|
|
45
|
-
const ivcConcurrency = Number(BB_IVC_CONCURRENCY);
|
|
46
|
-
|
|
47
46
|
return {
|
|
48
47
|
bbSkipCleanup,
|
|
49
48
|
bbBinaryPath,
|
|
50
49
|
bbWorkingDirectory,
|
|
51
50
|
cleanup,
|
|
52
|
-
numConcurrentIVCVerifiers:
|
|
53
|
-
bbIVCConcurrency:
|
|
51
|
+
numConcurrentIVCVerifiers: Number(BB_NUM_IVC_VERIFIERS),
|
|
52
|
+
bbIVCConcurrency: Number(BB_IVC_CONCURRENCY),
|
|
53
|
+
bbChonkVerifyMaxBatch: Number(BB_CHONK_VERIFY_MAX_BATCH),
|
|
54
|
+
bbChonkVerifyConcurrency: Number(BB_CHONK_VERIFY_BATCH_CONCURRENCY),
|
|
54
55
|
};
|
|
55
56
|
} catch (err) {
|
|
56
57
|
logger.error(`Native BB not available, error: ${err}`);
|