@aztec/end-to-end 0.0.1-commit.d117d021b → 0.0.1-commit.d1da697d6
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/README.md +27 -0
- 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 +13 -28
- 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.js +1 -1
- package/dest/e2e_p2p/inactivity_slash_test.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/authwit_proxy.d.ts +1 -1
- package/dest/fixtures/authwit_proxy.d.ts.map +1 -1
- package/dest/fixtures/authwit_proxy.js +4 -0
- 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 +5 -10
- 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/fixtures/token_utils.d.ts +1 -1
- package/dest/fixtures/token_utils.d.ts.map +1 -1
- package/dest/fixtures/token_utils.js +2 -5
- package/dest/legacy-jest-resolver.d.cts +3 -0
- package/dest/legacy-jest-resolver.d.cts.map +1 -0
- 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 +77 -16
- 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 +15 -23
- package/dest/test-wallet/test_wallet.d.ts.map +1 -1
- package/dest/test-wallet/test_wallet.js +72 -64
- package/dest/test-wallet/worker_wallet_schema.d.ts +2 -2
- package/package.json +40 -40
- package/src/bench/client_flows/client_flows_benchmark.ts +31 -22
- package/src/e2e_epochs/epochs_test.ts +14 -2
- package/src/e2e_fees/fees_test.ts +1 -1
- package/src/e2e_p2p/inactivity_slash_test.ts +1 -1
- package/src/e2e_p2p/reqresp/utils.ts +23 -2
- package/src/e2e_p2p/shared.ts +20 -10
- package/src/fixtures/authwit_proxy.ts +4 -0
- package/src/fixtures/e2e_prover_test.ts +7 -15
- package/src/fixtures/get_bb_config.ts +7 -6
- package/src/fixtures/setup.ts +17 -8
- package/src/fixtures/token_utils.ts +1 -4
- package/src/legacy-jest-resolver.cjs +135 -0
- 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 +102 -14
- 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 +99 -79
|
@@ -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,17 @@ 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
|
|
28
|
+
import {
|
|
29
|
+
type BlockHeader,
|
|
30
|
+
type ContractOverrides,
|
|
31
|
+
SimulationOverrides,
|
|
32
|
+
type TxExecutionRequest,
|
|
33
|
+
type TxHash,
|
|
34
|
+
type TxReceipt,
|
|
35
|
+
type TxSimulationResult,
|
|
36
|
+
} from '@aztec/stdlib/tx';
|
|
28
37
|
import { ExecutionPayload, mergeExecutionPayloads } from '@aztec/stdlib/tx';
|
|
29
|
-
import { BaseWallet, type
|
|
38
|
+
import { BaseWallet, type SimulateViaEntrypointOptions } from '@aztec/wallet-sdk/base-wallet';
|
|
30
39
|
|
|
31
40
|
import { AztecNodeProxy, ProvenTx } from './utils.js';
|
|
32
41
|
|
|
@@ -102,44 +111,51 @@ export class TestWallet extends BaseWallet {
|
|
|
102
111
|
return this.createAccount(accountData);
|
|
103
112
|
}
|
|
104
113
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
const
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
+
/**
|
|
115
|
+
* Builds contract overrides for all provided addresses by replacing their account contracts with stub implementations.
|
|
116
|
+
*/
|
|
117
|
+
protected async buildAccountOverrides(addresses: AztecAddress[]): Promise<ContractOverrides> {
|
|
118
|
+
const accounts = await this.getAccounts();
|
|
119
|
+
const contracts: ContractOverrides = {};
|
|
120
|
+
|
|
121
|
+
const filtered = accounts.filter(acc => addresses.some(addr => addr.equals(acc.item)));
|
|
122
|
+
|
|
123
|
+
for (const account of filtered) {
|
|
124
|
+
const address = account.item;
|
|
125
|
+
const originalAccount = await this.getAccountFromAddress(address);
|
|
126
|
+
const completeAddress = originalAccount.getCompleteAddress();
|
|
127
|
+
const contractInstance = await this.pxe.getContractInstance(completeAddress.address);
|
|
128
|
+
if (!contractInstance) {
|
|
129
|
+
throw new Error(
|
|
130
|
+
`No contract instance found for address: ${completeAddress.address} during account override building. This is a bug!`,
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
const stubInstance = await getContractInstanceFromInstantiationParams(StubAccountContractArtifact, {
|
|
135
|
+
salt: Fr.random(),
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
contracts[address.toString()] = {
|
|
139
|
+
instance: stubInstance,
|
|
140
|
+
artifact: StubAccountContractArtifact,
|
|
141
|
+
};
|
|
114
142
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
salt: Fr.random(),
|
|
118
|
-
});
|
|
119
|
-
return {
|
|
120
|
-
account: stubAccount,
|
|
121
|
-
instance,
|
|
122
|
-
artifact: StubAccountContractArtifact,
|
|
123
|
-
};
|
|
143
|
+
|
|
144
|
+
return contracts;
|
|
124
145
|
}
|
|
146
|
+
|
|
125
147
|
protected accounts: Map<string, Account> = new Map();
|
|
126
148
|
|
|
127
149
|
/**
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
-
*
|
|
131
|
-
*
|
|
132
|
-
* generating kernel witnesses. When false, simulateViaEntrypoint defers to the standard
|
|
133
|
-
* simulation path via the real account entrypoint.
|
|
150
|
+
* Controls how the test wallet simulates transactions:
|
|
151
|
+
* - `kernelless`: Skips kernel circuits but uses the real account contract. Default.
|
|
152
|
+
* - `kernelless-override`: Skips kernels and replaces the account with a stub that doesn't do authwit validation.
|
|
153
|
+
* - `full`: Uses real kernel circuits and real account contracts. Slow!
|
|
134
154
|
*/
|
|
135
|
-
private
|
|
136
|
-
|
|
137
|
-
enableSimulatedSimulations() {
|
|
138
|
-
this.simulatedSimulations = true;
|
|
139
|
-
}
|
|
155
|
+
private simulationMode: 'kernelless' | 'kernelless-override' | 'full' = 'kernelless';
|
|
140
156
|
|
|
141
|
-
|
|
142
|
-
this.
|
|
157
|
+
setSimulationMode(mode: 'kernelless' | 'kernelless-override' | 'full') {
|
|
158
|
+
this.simulationMode = mode;
|
|
143
159
|
}
|
|
144
160
|
|
|
145
161
|
setMinFeePadding(value?: number) {
|
|
@@ -147,12 +163,7 @@ export class TestWallet extends BaseWallet {
|
|
|
147
163
|
}
|
|
148
164
|
|
|
149
165
|
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
|
-
}
|
|
166
|
+
const account = this.accounts.get(address?.toString() ?? '');
|
|
156
167
|
|
|
157
168
|
if (!account) {
|
|
158
169
|
throw new Error(`Account not found in wallet for address: ${address}`);
|
|
@@ -220,60 +231,69 @@ export class TestWallet extends BaseWallet {
|
|
|
220
231
|
return account.createAuthWit(intentInnerHash, chainInfo);
|
|
221
232
|
}
|
|
222
233
|
|
|
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
234
|
protected override async simulateViaEntrypoint(
|
|
228
235
|
executionPayload: ExecutionPayload,
|
|
229
|
-
|
|
230
|
-
feeOptions: FeeOptions,
|
|
231
|
-
scopes: AccessScopes,
|
|
232
|
-
skipTxValidation?: boolean,
|
|
233
|
-
skipFeeEnforcement?: boolean,
|
|
236
|
+
opts: SimulateViaEntrypointOptions,
|
|
234
237
|
): Promise<TxSimulationResult> {
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
from,
|
|
239
|
-
feeOptions,
|
|
240
|
-
scopes,
|
|
241
|
-
skipTxValidation,
|
|
242
|
-
skipFeeEnforcement,
|
|
243
|
-
);
|
|
244
|
-
}
|
|
238
|
+
const { from, feeOptions, scopes, skipTxValidation, skipFeeEnforcement } = opts;
|
|
239
|
+
const skipKernels = this.simulationMode !== 'full';
|
|
240
|
+
const useOverride = this.simulationMode === 'kernelless-override';
|
|
245
241
|
|
|
246
242
|
const feeExecutionPayload = await feeOptions.walletFeePaymentMethod?.getExecutionPayload();
|
|
247
|
-
const executionOptions: DefaultAccountEntrypointOptions = {
|
|
248
|
-
txNonce: Fr.random(),
|
|
249
|
-
cancellable: this.cancellableTransactions,
|
|
250
|
-
feePaymentMethodOptions: feeOptions.accountFeePaymentMethodOptions,
|
|
251
|
-
};
|
|
252
243
|
const finalExecutionPayload = feeExecutionPayload
|
|
253
244
|
? mergeExecutionPayloads([feeExecutionPayload, executionPayload])
|
|
254
245
|
: executionPayload;
|
|
255
|
-
const { account: fromAccount, instance, artifact } = await this.getFakeAccountDataFor(from);
|
|
256
246
|
const chainInfo = await this.getChainInfo();
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
247
|
+
|
|
248
|
+
let overrides: SimulationOverrides | undefined;
|
|
249
|
+
let txRequest: TxExecutionRequest;
|
|
250
|
+
if (useOverride) {
|
|
251
|
+
const accountOverrides = await this.buildAccountOverrides(this.scopesFrom(from, opts.additionalScopes));
|
|
252
|
+
overrides = new SimulationOverrides(accountOverrides);
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
if (from === NO_FROM) {
|
|
256
|
+
const entrypoint = new DefaultEntrypoint();
|
|
257
|
+
txRequest = await entrypoint.createTxExecutionRequest(finalExecutionPayload, feeOptions.gasSettings, chainInfo);
|
|
258
|
+
} else {
|
|
259
|
+
let fromAccount: Account;
|
|
260
|
+
if (useOverride) {
|
|
261
|
+
const originalAccount = await this.getAccountFromAddress(from);
|
|
262
|
+
const completeAddress = originalAccount.getCompleteAddress();
|
|
263
|
+
fromAccount = createStubAccount(completeAddress);
|
|
264
|
+
} else {
|
|
265
|
+
fromAccount = await this.getAccountFromAddress(from);
|
|
266
|
+
}
|
|
267
|
+
const executionOptions: DefaultAccountEntrypointOptions = {
|
|
268
|
+
txNonce: Fr.random(),
|
|
269
|
+
cancellable: this.cancellableTransactions,
|
|
270
|
+
// If from is an address, feeOptions include the way the account contract should handle the fee payment
|
|
271
|
+
feePaymentMethodOptions: feeOptions.accountFeePaymentMethodOptions!,
|
|
272
|
+
};
|
|
273
|
+
txRequest = await fromAccount.createTxExecutionRequest(
|
|
274
|
+
finalExecutionPayload,
|
|
275
|
+
feeOptions.gasSettings,
|
|
276
|
+
chainInfo,
|
|
277
|
+
executionOptions,
|
|
278
|
+
);
|
|
279
|
+
}
|
|
280
|
+
|
|
266
281
|
return this.pxe.simulateTx(txRequest, {
|
|
267
282
|
simulatePublic: true,
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
283
|
+
skipKernels,
|
|
284
|
+
skipFeeEnforcement,
|
|
285
|
+
skipTxValidation,
|
|
286
|
+
overrides,
|
|
271
287
|
scopes,
|
|
272
288
|
});
|
|
273
289
|
}
|
|
274
290
|
|
|
275
291
|
async proveTx(exec: ExecutionPayload, opts: Omit<SendOptions, 'wait'>): Promise<ProvenTx> {
|
|
276
|
-
const fee = await this.completeFeeOptions(
|
|
292
|
+
const fee = await this.completeFeeOptions({
|
|
293
|
+
from: opts.from,
|
|
294
|
+
feePayer: exec.feePayer,
|
|
295
|
+
gasSettings: opts.fee?.gasSettings,
|
|
296
|
+
});
|
|
277
297
|
const txRequest = await this.createTxExecutionRequestFromPayloadAndFee(exec, opts.from, fee);
|
|
278
298
|
const txProvingResult = await this.pxe.proveTx(txRequest, this.scopesFrom(opts.from, opts.additionalScopes));
|
|
279
299
|
return new ProvenTx(
|