@aztec/wallets 4.1.0-rc.3 → 4.2.0-nightly.20260319
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.
|
@@ -34,7 +34,7 @@ export declare class EmbeddedWallet extends BaseWallet {
|
|
|
34
34
|
* This allows kernelless simulation with contract overrides, skipping expensive
|
|
35
35
|
* private kernel circuit execution.
|
|
36
36
|
*/
|
|
37
|
-
protected simulateViaEntrypoint(executionPayload: ExecutionPayload, from: AztecAddress, feeOptions: FeeOptions, scopes: AccessScopes,
|
|
37
|
+
protected simulateViaEntrypoint(executionPayload: ExecutionPayload, from: AztecAddress, feeOptions: FeeOptions, scopes: AccessScopes, skipTxValidation?: boolean, skipFeeEnforcement?: boolean): Promise<TxSimulationResult>;
|
|
38
38
|
private getFakeAccountDataFor;
|
|
39
39
|
protected createAccountInternal(type: AccountType, secret: Fr, salt: Fr, signingKey: Buffer): Promise<AccountManager>;
|
|
40
40
|
createAndStoreAccount(alias: string, type: AccountType, secret: Fr, salt: Fr, signingKey: Buffer): Promise<AccountManager>;
|
|
@@ -44,4 +44,4 @@ export declare class EmbeddedWallet extends BaseWallet {
|
|
|
44
44
|
setMinFeePadding(value?: number): void;
|
|
45
45
|
stop(): Promise<void>;
|
|
46
46
|
}
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1iZWRkZWRfd2FsbGV0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZW1iZWRkZWQvZW1iZWRkZWRfd2FsbGV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLE9BQU8sRUFBcUIsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRSxPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFeEQsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4RCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUYsT0FBTyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTNELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWpFLE9BQU8sRUFDTCxnQkFBZ0IsRUFFaEIsS0FBSyxrQkFBa0IsRUFFeEIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFNUUsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN0RixPQUFPLEVBQUUsS0FBSyxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUQsTUFBTSxNQUFNLHFCQUFxQixHQUFHO0lBQ2xDLHFGQUFxRjtJQUNyRixNQUFNLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDaEIsK0VBQStFO0lB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedded_wallet.d.ts","sourceRoot":"","sources":["../../src/embedded/embedded_wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAqB,MAAM,yBAAyB,CAAC;AAC1E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,
|
|
1
|
+
{"version":3,"file":"embedded_wallet.d.ts","sourceRoot":"","sources":["../../src/embedded/embedded_wallet.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,8 +45,23 @@ export class EmbeddedWallet extends BaseWallet {
|
|
|
45
45
|
* Simulates calls via a stub account entrypoint, bypassing real account authorization.
|
|
46
46
|
* This allows kernelless simulation with contract overrides, skipping expensive
|
|
47
47
|
* private kernel circuit execution.
|
|
48
|
-
*/ async simulateViaEntrypoint(executionPayload, from, feeOptions, scopes,
|
|
49
|
-
|
|
48
|
+
*/ async simulateViaEntrypoint(executionPayload, from, feeOptions, scopes, skipTxValidation, skipFeeEnforcement) {
|
|
49
|
+
let overrides;
|
|
50
|
+
let fromAccount;
|
|
51
|
+
if (!from.equals(AztecAddress.ZERO)) {
|
|
52
|
+
const { account, instance, artifact } = await this.getFakeAccountDataFor(from);
|
|
53
|
+
fromAccount = account;
|
|
54
|
+
overrides = {
|
|
55
|
+
contracts: {
|
|
56
|
+
[from.toString()]: {
|
|
57
|
+
instance,
|
|
58
|
+
artifact
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
} else {
|
|
63
|
+
fromAccount = await this.getAccountFromAddress(from);
|
|
64
|
+
}
|
|
50
65
|
const feeExecutionPayload = await feeOptions.walletFeePaymentMethod?.getExecutionPayload();
|
|
51
66
|
const executionOptions = {
|
|
52
67
|
txNonce: Fr.random(),
|
|
@@ -61,53 +76,32 @@ export class EmbeddedWallet extends BaseWallet {
|
|
|
61
76
|
const txRequest = await fromAccount.createTxExecutionRequest(finalExecutionPayload, feeOptions.gasSettings, chainInfo, executionOptions);
|
|
62
77
|
return this.pxe.simulateTx(txRequest, {
|
|
63
78
|
simulatePublic: true,
|
|
64
|
-
skipFeeEnforcement
|
|
65
|
-
skipTxValidation
|
|
66
|
-
overrides
|
|
67
|
-
contracts: {
|
|
68
|
-
[from.toString()]: {
|
|
69
|
-
instance,
|
|
70
|
-
artifact
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
},
|
|
79
|
+
skipFeeEnforcement,
|
|
80
|
+
skipTxValidation,
|
|
81
|
+
overrides,
|
|
74
82
|
scopes
|
|
75
83
|
});
|
|
76
84
|
}
|
|
77
85
|
async getFakeAccountDataFor(address) {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
}
|
|
87
|
-
const originalAddress = originalAccount.getCompleteAddress();
|
|
88
|
-
const contractInstance = await this.pxe.getContractInstance(originalAddress.address);
|
|
89
|
-
if (!contractInstance) {
|
|
90
|
-
throw new Error(`No contract instance found for address: ${originalAddress.address}`);
|
|
91
|
-
}
|
|
92
|
-
const stubAccount = await this.accountContracts.createStubAccount(originalAddress);
|
|
93
|
-
const stubArtifact = await this.accountContracts.getStubAccountContractArtifact();
|
|
94
|
-
const instance = await getContractInstanceFromInstantiationParams(stubArtifact, {
|
|
95
|
-
salt: Fr.random()
|
|
96
|
-
});
|
|
97
|
-
return {
|
|
98
|
-
account: stubAccount,
|
|
99
|
-
instance,
|
|
100
|
-
artifact: stubArtifact
|
|
101
|
-
};
|
|
102
|
-
} else {
|
|
103
|
-
const { instance, artifact } = await this.accountContracts.getMulticallContract();
|
|
104
|
-
const account = new SignerlessAccount();
|
|
105
|
-
return {
|
|
106
|
-
instance,
|
|
107
|
-
account,
|
|
108
|
-
artifact
|
|
109
|
-
};
|
|
86
|
+
const originalAccount = await this.getAccountFromAddress(address);
|
|
87
|
+
if (originalAccount instanceof SignerlessAccount) {
|
|
88
|
+
throw new Error(`Cannot create fake account data for SignerlessAccount at address: ${address}`);
|
|
89
|
+
}
|
|
90
|
+
const originalAddress = originalAccount.getCompleteAddress();
|
|
91
|
+
const contractInstance = await this.pxe.getContractInstance(originalAddress.address);
|
|
92
|
+
if (!contractInstance) {
|
|
93
|
+
throw new Error(`No contract instance found for address: ${originalAddress.address}`);
|
|
110
94
|
}
|
|
95
|
+
const stubAccount = await this.accountContracts.createStubAccount(originalAddress);
|
|
96
|
+
const stubArtifact = await this.accountContracts.getStubAccountContractArtifact();
|
|
97
|
+
const instance = await getContractInstanceFromInstantiationParams(stubArtifact, {
|
|
98
|
+
salt: Fr.random()
|
|
99
|
+
});
|
|
100
|
+
return {
|
|
101
|
+
account: stubAccount,
|
|
102
|
+
instance,
|
|
103
|
+
artifact: stubArtifact
|
|
104
|
+
};
|
|
111
105
|
}
|
|
112
106
|
async createAccountInternal(type, secret, salt, signingKey) {
|
|
113
107
|
let contract;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/wallets",
|
|
3
3
|
"homepage": "https://github.com/AztecProtocol/aztec-packages/tree/master/yarn-project/wallets",
|
|
4
|
-
"version": "4.
|
|
4
|
+
"version": "4.2.0-nightly.20260319",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
7
7
|
"./embedded": {
|
|
@@ -27,15 +27,15 @@
|
|
|
27
27
|
"../package.common.json"
|
|
28
28
|
],
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@aztec/accounts": "4.
|
|
31
|
-
"@aztec/aztec.js": "4.
|
|
32
|
-
"@aztec/entrypoints": "4.
|
|
33
|
-
"@aztec/foundation": "4.
|
|
34
|
-
"@aztec/kv-store": "4.
|
|
35
|
-
"@aztec/protocol-contracts": "4.
|
|
36
|
-
"@aztec/pxe": "4.
|
|
37
|
-
"@aztec/stdlib": "4.
|
|
38
|
-
"@aztec/wallet-sdk": "4.
|
|
30
|
+
"@aztec/accounts": "4.2.0-nightly.20260319",
|
|
31
|
+
"@aztec/aztec.js": "4.2.0-nightly.20260319",
|
|
32
|
+
"@aztec/entrypoints": "4.2.0-nightly.20260319",
|
|
33
|
+
"@aztec/foundation": "4.2.0-nightly.20260319",
|
|
34
|
+
"@aztec/kv-store": "4.2.0-nightly.20260319",
|
|
35
|
+
"@aztec/protocol-contracts": "4.2.0-nightly.20260319",
|
|
36
|
+
"@aztec/pxe": "4.2.0-nightly.20260319",
|
|
37
|
+
"@aztec/stdlib": "4.2.0-nightly.20260319",
|
|
38
|
+
"@aztec/wallet-sdk": "4.2.0-nightly.20260319"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@jest/globals": "^30.0.0",
|
|
@@ -10,7 +10,12 @@ import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
|
10
10
|
import { getContractInstanceFromInstantiationParams } from '@aztec/stdlib/contract';
|
|
11
11
|
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
12
12
|
import { deriveSigningKey } from '@aztec/stdlib/keys';
|
|
13
|
-
import {
|
|
13
|
+
import {
|
|
14
|
+
ExecutionPayload,
|
|
15
|
+
SimulationOverrides,
|
|
16
|
+
type TxSimulationResult,
|
|
17
|
+
mergeExecutionPayloads,
|
|
18
|
+
} from '@aztec/stdlib/tx';
|
|
14
19
|
import { BaseWallet, type FeeOptions } from '@aztec/wallet-sdk/base-wallet';
|
|
15
20
|
|
|
16
21
|
import type { AccountContractsProvider } from './account-contract-providers/types.js';
|
|
@@ -84,10 +89,20 @@ export class EmbeddedWallet extends BaseWallet {
|
|
|
84
89
|
from: AztecAddress,
|
|
85
90
|
feeOptions: FeeOptions,
|
|
86
91
|
scopes: AccessScopes,
|
|
87
|
-
|
|
88
|
-
|
|
92
|
+
skipTxValidation?: boolean,
|
|
93
|
+
skipFeeEnforcement?: boolean,
|
|
89
94
|
): Promise<TxSimulationResult> {
|
|
90
|
-
|
|
95
|
+
let overrides: SimulationOverrides | undefined;
|
|
96
|
+
let fromAccount: Account;
|
|
97
|
+
if (!from.equals(AztecAddress.ZERO)) {
|
|
98
|
+
const { account, instance, artifact } = await this.getFakeAccountDataFor(from);
|
|
99
|
+
fromAccount = account;
|
|
100
|
+
overrides = {
|
|
101
|
+
contracts: { [from.toString()]: { instance, artifact } },
|
|
102
|
+
};
|
|
103
|
+
} else {
|
|
104
|
+
fromAccount = await this.getAccountFromAddress(from);
|
|
105
|
+
}
|
|
91
106
|
|
|
92
107
|
const feeExecutionPayload = await feeOptions.walletFeePaymentMethod?.getExecutionPayload();
|
|
93
108
|
const executionOptions: DefaultAccountEntrypointOptions = {
|
|
@@ -107,49 +122,33 @@ export class EmbeddedWallet extends BaseWallet {
|
|
|
107
122
|
);
|
|
108
123
|
return this.pxe.simulateTx(txRequest, {
|
|
109
124
|
simulatePublic: true,
|
|
110
|
-
skipFeeEnforcement
|
|
111
|
-
skipTxValidation
|
|
112
|
-
overrides
|
|
113
|
-
contracts: { [from.toString()]: { instance, artifact } },
|
|
114
|
-
},
|
|
125
|
+
skipFeeEnforcement,
|
|
126
|
+
skipTxValidation,
|
|
127
|
+
overrides,
|
|
115
128
|
scopes,
|
|
116
129
|
});
|
|
117
130
|
}
|
|
118
131
|
|
|
119
132
|
private async getFakeAccountDataFor(address: AztecAddress) {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
// returning the actual multicall contract instead of trying to create a stub account for it.
|
|
124
|
-
if (!address.equals(AztecAddress.ZERO)) {
|
|
125
|
-
const originalAccount = await this.getAccountFromAddress(address);
|
|
126
|
-
if (originalAccount instanceof SignerlessAccount) {
|
|
127
|
-
throw new Error(`Cannot create fake account data for SignerlessAccount at address: ${address}`);
|
|
128
|
-
}
|
|
129
|
-
const originalAddress = (originalAccount as Account).getCompleteAddress();
|
|
130
|
-
const contractInstance = await this.pxe.getContractInstance(originalAddress.address);
|
|
131
|
-
if (!contractInstance) {
|
|
132
|
-
throw new Error(`No contract instance found for address: ${originalAddress.address}`);
|
|
133
|
-
}
|
|
134
|
-
const stubAccount = await this.accountContracts.createStubAccount(originalAddress);
|
|
135
|
-
const stubArtifact = await this.accountContracts.getStubAccountContractArtifact();
|
|
136
|
-
const instance = await getContractInstanceFromInstantiationParams(stubArtifact, {
|
|
137
|
-
salt: Fr.random(),
|
|
138
|
-
});
|
|
139
|
-
return {
|
|
140
|
-
account: stubAccount,
|
|
141
|
-
instance,
|
|
142
|
-
artifact: stubArtifact,
|
|
143
|
-
};
|
|
144
|
-
} else {
|
|
145
|
-
const { instance, artifact } = await this.accountContracts.getMulticallContract();
|
|
146
|
-
const account = new SignerlessAccount();
|
|
147
|
-
return {
|
|
148
|
-
instance,
|
|
149
|
-
account,
|
|
150
|
-
artifact,
|
|
151
|
-
};
|
|
133
|
+
const originalAccount = await this.getAccountFromAddress(address);
|
|
134
|
+
if (originalAccount instanceof SignerlessAccount) {
|
|
135
|
+
throw new Error(`Cannot create fake account data for SignerlessAccount at address: ${address}`);
|
|
152
136
|
}
|
|
137
|
+
const originalAddress = (originalAccount as Account).getCompleteAddress();
|
|
138
|
+
const contractInstance = await this.pxe.getContractInstance(originalAddress.address);
|
|
139
|
+
if (!contractInstance) {
|
|
140
|
+
throw new Error(`No contract instance found for address: ${originalAddress.address}`);
|
|
141
|
+
}
|
|
142
|
+
const stubAccount = await this.accountContracts.createStubAccount(originalAddress);
|
|
143
|
+
const stubArtifact = await this.accountContracts.getStubAccountContractArtifact();
|
|
144
|
+
const instance = await getContractInstanceFromInstantiationParams(stubArtifact, {
|
|
145
|
+
salt: Fr.random(),
|
|
146
|
+
});
|
|
147
|
+
return {
|
|
148
|
+
account: stubAccount,
|
|
149
|
+
instance,
|
|
150
|
+
artifact: stubArtifact,
|
|
151
|
+
};
|
|
153
152
|
}
|
|
154
153
|
|
|
155
154
|
protected async createAccountInternal(
|