@aztec/end-to-end 0.0.1-commit.3e3d0c9cd → 0.0.1-commit.3f296a7d2
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/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 +6 -6
- 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 -39
- 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/simulators/lending_simulator.ts +4 -2
- package/src/simulators/token_simulator.ts +1 -1
- package/src/spartan/setup_test_wallets.ts +6 -5
- package/src/test-wallet/test_wallet.ts +60 -65
|
@@ -1,7 +1,7 @@
|
|
|
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 { type Account, type AccountContract,
|
|
4
|
+
import { type Account, type AccountContract, NO_FROM } from '@aztec/aztec.js/account';
|
|
5
5
|
import {
|
|
6
6
|
type CallIntent,
|
|
7
7
|
type ContractFunctionInteractionCallIntent,
|
|
@@ -14,9 +14,10 @@ import {
|
|
|
14
14
|
import type { AztecNode } from '@aztec/aztec.js/node';
|
|
15
15
|
import { AccountManager, type SendOptions } from '@aztec/aztec.js/wallet';
|
|
16
16
|
import type { DefaultAccountEntrypointOptions } from '@aztec/entrypoints/account';
|
|
17
|
+
import { DefaultEntrypoint } from '@aztec/entrypoints/default';
|
|
17
18
|
import { Fq, Fr } from '@aztec/foundation/curves/bn254';
|
|
18
19
|
import { GrumpkinScalar } from '@aztec/foundation/curves/grumpkin';
|
|
19
|
-
import type {
|
|
20
|
+
import type { NotesFilter } from '@aztec/pxe/client/lazy';
|
|
20
21
|
import { type PXEConfig, getPXEConfig } from '@aztec/pxe/config';
|
|
21
22
|
import { PXE, type PXECreationOptions, createPXE } from '@aztec/pxe/server';
|
|
22
23
|
import { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
@@ -24,9 +25,16 @@ import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
|
24
25
|
import { getContractInstanceFromInstantiationParams } from '@aztec/stdlib/contract';
|
|
25
26
|
import { deriveSigningKey } from '@aztec/stdlib/keys';
|
|
26
27
|
import type { NoteDao } from '@aztec/stdlib/note';
|
|
27
|
-
import type {
|
|
28
|
+
import type {
|
|
29
|
+
BlockHeader,
|
|
30
|
+
SimulationOverrides,
|
|
31
|
+
TxExecutionRequest,
|
|
32
|
+
TxHash,
|
|
33
|
+
TxReceipt,
|
|
34
|
+
TxSimulationResult,
|
|
35
|
+
} from '@aztec/stdlib/tx';
|
|
28
36
|
import { ExecutionPayload, mergeExecutionPayloads } from '@aztec/stdlib/tx';
|
|
29
|
-
import { BaseWallet, type
|
|
37
|
+
import { BaseWallet, type SimulateViaEntrypointOptions } from '@aztec/wallet-sdk/base-wallet';
|
|
30
38
|
|
|
31
39
|
import { AztecNodeProxy, ProvenTx } from './utils.js';
|
|
32
40
|
|
|
@@ -104,10 +112,7 @@ export class TestWallet extends BaseWallet {
|
|
|
104
112
|
|
|
105
113
|
async getFakeAccountDataFor(address: AztecAddress) {
|
|
106
114
|
const originalAccount = await this.getAccountFromAddress(address);
|
|
107
|
-
|
|
108
|
-
throw new Error(`Cannot create fake account data for SignerlessAccount at address: ${address}`);
|
|
109
|
-
}
|
|
110
|
-
const originalAddress = (originalAccount as Account).getCompleteAddress();
|
|
115
|
+
const originalAddress = originalAccount.getCompleteAddress();
|
|
111
116
|
const contractInstance = await this.pxe.getContractInstance(originalAddress.address);
|
|
112
117
|
if (!contractInstance) {
|
|
113
118
|
throw new Error(`No contract instance found for address: ${originalAddress.address}`);
|
|
@@ -125,21 +130,15 @@ export class TestWallet extends BaseWallet {
|
|
|
125
130
|
protected accounts: Map<string, Account> = new Map();
|
|
126
131
|
|
|
127
132
|
/**
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
-
*
|
|
131
|
-
*
|
|
132
|
-
* generating kernel witnesses. When false, simulateViaEntrypoint defers to the standard
|
|
133
|
-
* simulation path via the real account entrypoint.
|
|
133
|
+
* Controls how the test wallet simulates transactions:
|
|
134
|
+
* - `kernelless`: Skips kernel circuits but uses the real account contract. Default.
|
|
135
|
+
* - `kernelless-override`: Skips kernels and replaces the account with a stub that doesn't do authwit validation.
|
|
136
|
+
* - `full`: Uses real kernel circuits and real account contracts. Slow!
|
|
134
137
|
*/
|
|
135
|
-
private
|
|
136
|
-
|
|
137
|
-
enableSimulatedSimulations() {
|
|
138
|
-
this.simulatedSimulations = true;
|
|
139
|
-
}
|
|
138
|
+
private simulationMode: 'kernelless' | 'kernelless-override' | 'full' = 'kernelless';
|
|
140
139
|
|
|
141
|
-
|
|
142
|
-
this.
|
|
140
|
+
setSimulationMode(mode: 'kernelless' | 'kernelless-override' | 'full') {
|
|
141
|
+
this.simulationMode = mode;
|
|
143
142
|
}
|
|
144
143
|
|
|
145
144
|
setMinFeePadding(value?: number) {
|
|
@@ -147,12 +146,7 @@ export class TestWallet extends BaseWallet {
|
|
|
147
146
|
}
|
|
148
147
|
|
|
149
148
|
protected getAccountFromAddress(address: AztecAddress): Promise<Account> {
|
|
150
|
-
|
|
151
|
-
if (address.equals(AztecAddress.ZERO)) {
|
|
152
|
-
account = new SignerlessAccount();
|
|
153
|
-
} else {
|
|
154
|
-
account = this.accounts.get(address?.toString() ?? '');
|
|
155
|
-
}
|
|
149
|
+
const account = this.accounts.get(address?.toString() ?? '');
|
|
156
150
|
|
|
157
151
|
if (!account) {
|
|
158
152
|
throw new Error(`Account not found in wallet for address: ${address}`);
|
|
@@ -220,54 +214,55 @@ export class TestWallet extends BaseWallet {
|
|
|
220
214
|
return account.createAuthWit(intentInnerHash, chainInfo);
|
|
221
215
|
}
|
|
222
216
|
|
|
223
|
-
/**
|
|
224
|
-
* Override simulateViaEntrypoint to use fake accounts for kernelless simulation
|
|
225
|
-
* when simulatedSimulations is enabled. Otherwise falls through to the real entrypoint path.
|
|
226
|
-
*/
|
|
227
217
|
protected override async simulateViaEntrypoint(
|
|
228
218
|
executionPayload: ExecutionPayload,
|
|
229
|
-
|
|
230
|
-
feeOptions: FeeOptions,
|
|
231
|
-
scopes: AccessScopes,
|
|
232
|
-
skipTxValidation?: boolean,
|
|
233
|
-
skipFeeEnforcement?: boolean,
|
|
219
|
+
opts: SimulateViaEntrypointOptions,
|
|
234
220
|
): Promise<TxSimulationResult> {
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
executionPayload,
|
|
238
|
-
from,
|
|
239
|
-
feeOptions,
|
|
240
|
-
scopes,
|
|
241
|
-
skipTxValidation,
|
|
242
|
-
skipFeeEnforcement,
|
|
243
|
-
);
|
|
244
|
-
}
|
|
245
|
-
|
|
221
|
+
const { from, feeOptions, scopes, skipTxValidation, skipFeeEnforcement } = opts;
|
|
222
|
+
const skipKernels = this.simulationMode !== 'full';
|
|
246
223
|
const feeExecutionPayload = await feeOptions.walletFeePaymentMethod?.getExecutionPayload();
|
|
247
|
-
const executionOptions: DefaultAccountEntrypointOptions = {
|
|
248
|
-
txNonce: Fr.random(),
|
|
249
|
-
cancellable: this.cancellableTransactions,
|
|
250
|
-
feePaymentMethodOptions: feeOptions.accountFeePaymentMethodOptions,
|
|
251
|
-
};
|
|
252
224
|
const finalExecutionPayload = feeExecutionPayload
|
|
253
225
|
? mergeExecutionPayloads([feeExecutionPayload, executionPayload])
|
|
254
226
|
: executionPayload;
|
|
255
|
-
const { account: fromAccount, instance, artifact } = await this.getFakeAccountDataFor(from);
|
|
256
227
|
const chainInfo = await this.getChainInfo();
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
228
|
+
|
|
229
|
+
let overrides: SimulationOverrides | undefined;
|
|
230
|
+
let txRequest: TxExecutionRequest;
|
|
231
|
+
if (from === NO_FROM) {
|
|
232
|
+
const entrypoint = new DefaultEntrypoint();
|
|
233
|
+
txRequest = await entrypoint.createTxExecutionRequest(finalExecutionPayload, feeOptions.gasSettings, chainInfo);
|
|
234
|
+
} else {
|
|
235
|
+
const useOverride = this.simulationMode === 'kernelless-override';
|
|
236
|
+
let fromAccount: Account;
|
|
237
|
+
if (useOverride) {
|
|
238
|
+
const { account, instance, artifact } = await this.getFakeAccountDataFor(from);
|
|
239
|
+
fromAccount = account;
|
|
240
|
+
overrides = {
|
|
241
|
+
contracts: { [from.toString()]: { instance, artifact } },
|
|
242
|
+
};
|
|
243
|
+
} else {
|
|
244
|
+
fromAccount = await this.getAccountFromAddress(from);
|
|
245
|
+
}
|
|
246
|
+
const executionOptions: DefaultAccountEntrypointOptions = {
|
|
247
|
+
txNonce: Fr.random(),
|
|
248
|
+
cancellable: this.cancellableTransactions,
|
|
249
|
+
// If from is an address, feeOptions include the way the account contract should handle the fee payment
|
|
250
|
+
feePaymentMethodOptions: feeOptions.accountFeePaymentMethodOptions!,
|
|
251
|
+
};
|
|
252
|
+
txRequest = await fromAccount.createTxExecutionRequest(
|
|
253
|
+
finalExecutionPayload,
|
|
254
|
+
feeOptions.gasSettings,
|
|
255
|
+
chainInfo,
|
|
256
|
+
executionOptions,
|
|
257
|
+
);
|
|
258
|
+
}
|
|
259
|
+
|
|
266
260
|
return this.pxe.simulateTx(txRequest, {
|
|
267
261
|
simulatePublic: true,
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
262
|
+
skipKernels,
|
|
263
|
+
skipFeeEnforcement,
|
|
264
|
+
skipTxValidation,
|
|
265
|
+
overrides,
|
|
271
266
|
scopes,
|
|
272
267
|
});
|
|
273
268
|
}
|