@aztec/end-to-end 0.0.1-commit.db765a8 → 0.0.1-commit.df81a97b5
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 +10 -3
- 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 +5 -2
- 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 +8 -1
- package/dest/e2e_p2p/p2p_network.d.ts +1 -1
- package/dest/e2e_p2p/p2p_network.js +1 -1
- package/dest/e2e_p2p/reqresp/utils.d.ts +1 -1
- package/dest/e2e_p2p/reqresp/utils.d.ts.map +1 -1
- package/dest/e2e_p2p/reqresp/utils.js +15 -2
- package/dest/e2e_p2p/shared.d.ts +12 -6
- package/dest/e2e_p2p/shared.d.ts.map +1 -1
- package/dest/e2e_p2p/shared.js +17 -9
- 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 +6 -1
- package/dest/fixtures/setup.d.ts.map +1 -1
- package/dest/fixtures/setup.js +13 -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 +4 -2
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +25 -13
- package/dest/spartan/utils/config.d.ts +4 -1
- package/dest/spartan/utils/config.d.ts.map +1 -1
- package/dest/spartan/utils/config.js +1 -0
- package/dest/spartan/utils/index.d.ts +2 -1
- package/dest/spartan/utils/index.d.ts.map +1 -1
- package/dest/spartan/utils/index.js +2 -0
- package/dest/spartan/utils/pod_logs.d.ts +25 -0
- package/dest/spartan/utils/pod_logs.d.ts.map +1 -0
- package/dest/spartan/utils/pod_logs.js +74 -0
- 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 +6 -2
- package/src/e2e_epochs/epochs_test.ts +14 -2
- package/src/e2e_fees/fees_test.ts +4 -1
- package/src/e2e_p2p/p2p_network.ts +1 -1
- package/src/e2e_p2p/reqresp/utils.ts +23 -2
- package/src/e2e_p2p/shared.ts +20 -10
- package/src/fixtures/e2e_prover_test.ts +5 -11
- package/src/fixtures/get_bb_config.ts +7 -6
- package/src/fixtures/setup.ts +17 -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 +49 -10
- package/src/spartan/utils/config.ts +1 -0
- package/src/spartan/utils/index.ts +3 -0
- package/src/spartan/utils/pod_logs.ts +99 -0
- package/src/test-wallet/test_wallet.ts +60 -65
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF93YWxsZXQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0LXdhbGxldC90ZXN0X3dhbGxldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsS0FBSyxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQVcsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RixPQUFPLEVBQ0wsS0FBSyxVQUFVLEVBQ2YsS0FBSyxxQ0FBcUMsRUFDMUMsS0FBSyxlQUFlLEVBQ3BCLG1DQUFtQyxFQUlwQyxNQUFNLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsS0FBSyxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUcxRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXhELE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxLQUFLLFNBQVMsRUFBZ0IsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssa0JBQWtCLEVBQWEsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRzNELE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sS0FBSyxFQUNWLFdBQVcsRUFHWCxNQUFNLEVBQ04sU0FBUyxFQUNULGtCQUFrQixFQUNuQixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBMEIsTUFBTSxrQkFBa0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssNEJBQTRC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
|
|
@@ -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.df81a97b5",
|
|
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.db765a8",
|
|
29
|
+
"@aztec/accounts": "0.0.1-commit.df81a97b5",
|
|
30
|
+
"@aztec/archiver": "0.0.1-commit.df81a97b5",
|
|
31
|
+
"@aztec/aztec": "0.0.1-commit.df81a97b5",
|
|
32
|
+
"@aztec/aztec-node": "0.0.1-commit.df81a97b5",
|
|
33
|
+
"@aztec/aztec.js": "0.0.1-commit.df81a97b5",
|
|
34
|
+
"@aztec/bb-prover": "0.0.1-commit.df81a97b5",
|
|
35
|
+
"@aztec/bb.js": "0.0.1-commit.df81a97b5",
|
|
36
|
+
"@aztec/blob-client": "0.0.1-commit.df81a97b5",
|
|
37
|
+
"@aztec/blob-lib": "0.0.1-commit.df81a97b5",
|
|
38
|
+
"@aztec/bot": "0.0.1-commit.df81a97b5",
|
|
39
|
+
"@aztec/cli": "0.0.1-commit.df81a97b5",
|
|
40
|
+
"@aztec/constants": "0.0.1-commit.df81a97b5",
|
|
41
|
+
"@aztec/entrypoints": "0.0.1-commit.df81a97b5",
|
|
42
|
+
"@aztec/epoch-cache": "0.0.1-commit.df81a97b5",
|
|
43
|
+
"@aztec/ethereum": "0.0.1-commit.df81a97b5",
|
|
44
|
+
"@aztec/foundation": "0.0.1-commit.df81a97b5",
|
|
45
|
+
"@aztec/kv-store": "0.0.1-commit.df81a97b5",
|
|
46
|
+
"@aztec/l1-artifacts": "0.0.1-commit.df81a97b5",
|
|
47
|
+
"@aztec/node-keystore": "0.0.1-commit.df81a97b5",
|
|
48
|
+
"@aztec/noir-contracts.js": "0.0.1-commit.df81a97b5",
|
|
49
|
+
"@aztec/noir-noirc_abi": "0.0.1-commit.df81a97b5",
|
|
50
|
+
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.df81a97b5",
|
|
51
|
+
"@aztec/noir-test-contracts.js": "0.0.1-commit.df81a97b5",
|
|
52
|
+
"@aztec/p2p": "0.0.1-commit.df81a97b5",
|
|
53
|
+
"@aztec/protocol-contracts": "0.0.1-commit.df81a97b5",
|
|
54
|
+
"@aztec/prover-client": "0.0.1-commit.df81a97b5",
|
|
55
|
+
"@aztec/prover-node": "0.0.1-commit.df81a97b5",
|
|
56
|
+
"@aztec/pxe": "0.0.1-commit.df81a97b5",
|
|
57
|
+
"@aztec/sequencer-client": "0.0.1-commit.df81a97b5",
|
|
58
|
+
"@aztec/simulator": "0.0.1-commit.df81a97b5",
|
|
59
|
+
"@aztec/slasher": "0.0.1-commit.df81a97b5",
|
|
60
|
+
"@aztec/stdlib": "0.0.1-commit.df81a97b5",
|
|
61
|
+
"@aztec/telemetry-client": "0.0.1-commit.df81a97b5",
|
|
62
|
+
"@aztec/validator-client": "0.0.1-commit.df81a97b5",
|
|
63
|
+
"@aztec/validator-ha-signer": "0.0.1-commit.df81a97b5",
|
|
64
|
+
"@aztec/wallet-sdk": "0.0.1-commit.df81a97b5",
|
|
65
|
+
"@aztec/wallets": "0.0.1-commit.df81a97b5",
|
|
66
|
+
"@aztec/world-state": "0.0.1-commit.df81a97b5",
|
|
68
67
|
"@iarna/toml": "^2.2.5",
|
|
69
68
|
"@jest/globals": "^30.0.0",
|
|
70
69
|
"@noble/curves": "=1.0.0",
|
|
@@ -1,10 +1,11 @@
|
|
|
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';
|
|
4
5
|
import { type Logger, createLogger } from '@aztec/aztec.js/log';
|
|
5
6
|
import type { AztecNode } from '@aztec/aztec.js/node';
|
|
6
7
|
import type { Wallet } from '@aztec/aztec.js/wallet';
|
|
7
|
-
import { CheatCodes } from '@aztec/aztec/testing';
|
|
8
|
+
import { CheatCodes, getTokenAllowedSetupFunctions } from '@aztec/aztec/testing';
|
|
8
9
|
import { createExtendedL1Client } from '@aztec/ethereum/client';
|
|
9
10
|
import { RollupContract } from '@aztec/ethereum/contracts';
|
|
10
11
|
import type { DeployAztecL1ContractsArgs } from '@aztec/ethereum/deploy-aztec-l1-contracts';
|
|
@@ -130,11 +131,14 @@ export class ClientFlowsBenchmark {
|
|
|
130
131
|
|
|
131
132
|
async setup() {
|
|
132
133
|
this.logger.info('Setting up subsystems from fresh');
|
|
134
|
+
// Token allowlist entries are test-only: FPC-based fee payment with custom tokens won't work on mainnet alpha.
|
|
135
|
+
const tokenAllowList = await getTokenAllowedSetupFunctions();
|
|
133
136
|
this.context = await setup(0, {
|
|
134
137
|
...this.setupOptions,
|
|
135
138
|
fundSponsoredFPC: true,
|
|
136
139
|
skipAccountDeployment: true,
|
|
137
140
|
l1ContractsArgs: this.setupOptions,
|
|
141
|
+
txPublicSetupAllowListExtend: [...(this.setupOptions.txPublicSetupAllowListExtend ?? []), ...tokenAllowList],
|
|
138
142
|
});
|
|
139
143
|
await this.applyBaseSetup();
|
|
140
144
|
|
|
@@ -330,7 +334,7 @@ export class ClientFlowsBenchmark {
|
|
|
330
334
|
const claim = await this.feeJuiceBridgeTestHarness.prepareTokensOnL1(benchysAddress);
|
|
331
335
|
const behchysDeployMethod = await benchysAccountManager.getDeployMethod();
|
|
332
336
|
await behchysDeployMethod.send({
|
|
333
|
-
from:
|
|
337
|
+
from: NO_FROM,
|
|
334
338
|
fee: { paymentMethod: new FeeJuicePaymentMethodWithClaim(benchysAddress, claim) },
|
|
335
339
|
});
|
|
336
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';
|
|
@@ -181,6 +182,7 @@ export class EpochsTestContext {
|
|
|
181
182
|
ethereumSlotDuration,
|
|
182
183
|
proofSubmissionEpochs: Number(await this.rollup.getProofSubmissionEpochs()),
|
|
183
184
|
targetCommitteeSize: await this.rollup.getTargetCommitteeSize(),
|
|
185
|
+
rollupManaLimit: Number(await this.rollup.getManaLimit()),
|
|
184
186
|
};
|
|
185
187
|
|
|
186
188
|
this.logger.info(
|
|
@@ -237,13 +239,21 @@ export class EpochsTestContext {
|
|
|
237
239
|
|
|
238
240
|
public createValidatorNode(
|
|
239
241
|
privateKeys: `0x${string}`[],
|
|
240
|
-
opts: Partial<AztecNodeConfig> & {
|
|
242
|
+
opts: Partial<AztecNodeConfig> & {
|
|
243
|
+
dontStartSequencer?: boolean;
|
|
244
|
+
slashingProtectionDb?: SlashingProtectionDatabase;
|
|
245
|
+
} = {},
|
|
241
246
|
) {
|
|
242
247
|
this.logger.warn('Creating and syncing a validator node...');
|
|
243
248
|
return this.createNode({ ...opts, disableValidator: false, validatorPrivateKeys: new SecretValue(privateKeys) });
|
|
244
249
|
}
|
|
245
250
|
|
|
246
|
-
private async createNode(
|
|
251
|
+
private async createNode(
|
|
252
|
+
opts: Partial<AztecNodeConfig> & {
|
|
253
|
+
dontStartSequencer?: boolean;
|
|
254
|
+
slashingProtectionDb?: SlashingProtectionDatabase;
|
|
255
|
+
} = {},
|
|
256
|
+
) {
|
|
247
257
|
const nodeIndex = this.nodes.length + 1;
|
|
248
258
|
const actorPrefix = opts.disableValidator ? 'node' : 'validator';
|
|
249
259
|
const { mockGossipSubNetwork } = this.context;
|
|
@@ -256,6 +266,7 @@ export class EpochsTestContext {
|
|
|
256
266
|
...resolvedConfig,
|
|
257
267
|
dataDirectory: join(this.context.config.dataDirectory!, randomBytes(8).toString('hex')),
|
|
258
268
|
validatorPrivateKeys: opts.validatorPrivateKeys ?? new SecretValue([]),
|
|
269
|
+
nodeId: resolvedConfig.nodeId || `${actorPrefix}-${nodeIndex}`,
|
|
259
270
|
p2pEnabled,
|
|
260
271
|
p2pIp,
|
|
261
272
|
},
|
|
@@ -264,6 +275,7 @@ export class EpochsTestContext {
|
|
|
264
275
|
p2pClientDeps: {
|
|
265
276
|
p2pServiceFactory: mockGossipSubNetwork ? getMockPubSubP2PServiceFactory(mockGossipSubNetwork) : undefined,
|
|
266
277
|
},
|
|
278
|
+
slashingProtectionDb: opts.slashingProtectionDb,
|
|
267
279
|
},
|
|
268
280
|
{
|
|
269
281
|
prefilledPublicData: this.context.prefilledPublicData,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
2
2
|
import { type Logger, createLogger } from '@aztec/aztec.js/log';
|
|
3
3
|
import type { AztecNode } from '@aztec/aztec.js/node';
|
|
4
|
-
import { CheatCodes } from '@aztec/aztec/testing';
|
|
4
|
+
import { CheatCodes, getTokenAllowedSetupFunctions } from '@aztec/aztec/testing';
|
|
5
5
|
import { createExtendedL1Client } from '@aztec/ethereum/client';
|
|
6
6
|
import { RollupContract } from '@aztec/ethereum/contracts';
|
|
7
7
|
import type { DeployAztecL1ContractsArgs } from '@aztec/ethereum/deploy-aztec-l1-contracts';
|
|
@@ -104,12 +104,15 @@ export class FeesTest {
|
|
|
104
104
|
|
|
105
105
|
async setup() {
|
|
106
106
|
this.logger.verbose('Setting up fresh context...');
|
|
107
|
+
// Token allowlist entries are test-only: FPC-based fee payment with custom tokens won't work on mainnet alpha.
|
|
108
|
+
const tokenAllowList = await getTokenAllowedSetupFunctions();
|
|
107
109
|
this.context = await setup(0, {
|
|
108
110
|
startProverNode: true,
|
|
109
111
|
...this.setupOptions,
|
|
110
112
|
fundSponsoredFPC: true,
|
|
111
113
|
skipAccountDeployment: true,
|
|
112
114
|
l1ContractsArgs: { ...this.setupOptions },
|
|
115
|
+
txPublicSetupAllowListExtend: [...(this.setupOptions.txPublicSetupAllowListExtend ?? []), ...tokenAllowList],
|
|
113
116
|
});
|
|
114
117
|
|
|
115
118
|
this.rollupContract = RollupContract.getFromConfig(this.context.config);
|
|
@@ -59,7 +59,7 @@ export const WAIT_FOR_TX_TIMEOUT = l1ContractsConfig.aztecSlotDuration * 3;
|
|
|
59
59
|
export const SHORTENED_BLOCK_TIME_CONFIG_NO_PRUNES = {
|
|
60
60
|
aztecSlotDuration: 12,
|
|
61
61
|
ethereumSlotDuration: 4,
|
|
62
|
-
|
|
62
|
+
aztecProofSubmissionEpochs: 640,
|
|
63
63
|
};
|
|
64
64
|
|
|
65
65
|
export class P2PNetworkTest {
|
|
@@ -149,6 +149,13 @@ export async function runReqrespTxTest(params: {
|
|
|
149
149
|
const submittedTxs = await Promise.all(
|
|
150
150
|
txBatches.map(async (batch, batchIndex) => {
|
|
151
151
|
const proposerNode = nodes[proposerIndexes[batchIndex]];
|
|
152
|
+
for (const tx of batch) {
|
|
153
|
+
t.logger.info(`Tx ${tx.getTxHash().toString()} base64: ${tx.toBuffer().toString('base64')}`);
|
|
154
|
+
}
|
|
155
|
+
const txHashes = batch.map(tx => tx.getTxHash().toString());
|
|
156
|
+
t.logger.info(
|
|
157
|
+
`Sending batch ${batchIndex} to proposer ${getNodePort(proposerIndexes[batchIndex])}: ${txHashes.join(', ')}`,
|
|
158
|
+
);
|
|
152
159
|
await Promise.all(
|
|
153
160
|
batch.map(async tx => {
|
|
154
161
|
try {
|
|
@@ -163,6 +170,12 @@ export async function runReqrespTxTest(params: {
|
|
|
163
170
|
}),
|
|
164
171
|
);
|
|
165
172
|
|
|
173
|
+
// Log pool state per node after sending
|
|
174
|
+
for (let i = 0; i < NUM_VALIDATORS; i++) {
|
|
175
|
+
const count = await nodes[i].getPendingTxCount();
|
|
176
|
+
t.logger.info(`Node ${getNodePort(i)} pool has ${count} pending txs`);
|
|
177
|
+
}
|
|
178
|
+
|
|
166
179
|
t.logger.info('Waiting for all transactions to be mined');
|
|
167
180
|
await Promise.all(
|
|
168
181
|
submittedTxs.flatMap((batch, batchIndex) =>
|
|
@@ -178,8 +191,16 @@ export async function runReqrespTxTest(params: {
|
|
|
178
191
|
|
|
179
192
|
// Assert that multiple blocks were built for at least one slot
|
|
180
193
|
t.logger.info('Verifying multiple blocks for at least one checkpoint');
|
|
181
|
-
|
|
182
|
-
|
|
194
|
+
// Wait for L1 checkpoint sync, which may lag behind P2P block propagation.
|
|
195
|
+
const checkpoints = await retryUntil(
|
|
196
|
+
async () => {
|
|
197
|
+
const cps = await nodes[0].getCheckpoints(CheckpointNumber(1), 50);
|
|
198
|
+
return cps.length > 0 && cps.some(cp => cp.checkpoint.blocks.length >= 2) ? cps : undefined;
|
|
199
|
+
},
|
|
200
|
+
'waiting for multi-block checkpoint to sync from L1',
|
|
201
|
+
30,
|
|
202
|
+
1,
|
|
203
|
+
);
|
|
183
204
|
|
|
184
205
|
let mbpsFound = false;
|
|
185
206
|
let expectedBlockNumber = checkpoints[0].checkpoint.blocks[0].number;
|
package/src/e2e_p2p/shared.ts
CHANGED
|
@@ -152,11 +152,14 @@ export async function awaitCommitteeExists({
|
|
|
152
152
|
}
|
|
153
153
|
|
|
154
154
|
/**
|
|
155
|
-
* Advance epochs until we find one where the target proposer is selected for at least one slot
|
|
156
|
-
*
|
|
157
|
-
*
|
|
155
|
+
* Advance epochs until we find one where the target proposer is selected for at least one slot,
|
|
156
|
+
* then stop one epoch before it. This leaves time for the caller to start sequencers before
|
|
157
|
+
* warping to the target epoch, avoiding the race where the target epoch passes before sequencers
|
|
158
|
+
* are ready.
|
|
159
|
+
*
|
|
160
|
+
* Returns the target epoch number so the caller can warp to it after starting sequencers.
|
|
158
161
|
*/
|
|
159
|
-
export async function
|
|
162
|
+
export async function advanceToEpochBeforeProposer({
|
|
160
163
|
epochCache,
|
|
161
164
|
cheatCodes,
|
|
162
165
|
targetProposer,
|
|
@@ -168,25 +171,32 @@ export async function awaitEpochWithProposer({
|
|
|
168
171
|
targetProposer: EthAddress;
|
|
169
172
|
logger: Logger;
|
|
170
173
|
maxAttempts?: number;
|
|
171
|
-
}): Promise<
|
|
174
|
+
}): Promise<{ targetEpoch: EpochNumber }> {
|
|
172
175
|
const { epochDuration } = await cheatCodes.getConfig();
|
|
173
176
|
|
|
174
177
|
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
175
178
|
const currentEpoch = await cheatCodes.getEpoch();
|
|
176
|
-
|
|
179
|
+
// Check the NEXT epoch's slots so we stay one epoch before the target,
|
|
180
|
+
// giving the caller time to start sequencers before the target epoch arrives.
|
|
181
|
+
const nextEpoch = Number(currentEpoch) + 1;
|
|
182
|
+
const startSlot = nextEpoch * Number(epochDuration);
|
|
177
183
|
const endSlot = startSlot + Number(epochDuration);
|
|
178
184
|
|
|
179
|
-
logger.info(
|
|
185
|
+
logger.info(
|
|
186
|
+
`Checking next epoch ${nextEpoch} (slots ${startSlot}-${endSlot - 1}) for proposer ${targetProposer} (current epoch: ${currentEpoch})`,
|
|
187
|
+
);
|
|
180
188
|
|
|
181
189
|
for (let s = startSlot; s < endSlot; s++) {
|
|
182
190
|
const proposer = await epochCache.getProposerAttesterAddressInSlot(SlotNumber(s));
|
|
183
191
|
if (proposer && proposer.equals(targetProposer)) {
|
|
184
|
-
logger.warn(
|
|
185
|
-
|
|
192
|
+
logger.warn(
|
|
193
|
+
`Found target proposer ${targetProposer} in slot ${s} of epoch ${nextEpoch}. Staying at epoch ${currentEpoch} to allow sequencer startup.`,
|
|
194
|
+
);
|
|
195
|
+
return { targetEpoch: EpochNumber(nextEpoch) };
|
|
186
196
|
}
|
|
187
197
|
}
|
|
188
198
|
|
|
189
|
-
logger.info(`Target proposer not found in epoch ${
|
|
199
|
+
logger.info(`Target proposer not found in epoch ${nextEpoch}, advancing to next epoch`);
|
|
190
200
|
await cheatCodes.advanceToNextEpoch();
|
|
191
201
|
}
|
|
192
202
|
|
|
@@ -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
|
});
|