@aztec/wallet-sdk 5.0.0-rc.2 → 5.0.1
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
CHANGED
|
@@ -324,7 +324,7 @@ function useWalletDiscovery(chainInfo: ChainInfo, appId: string) {
|
|
|
324
324
|
|
|
325
325
|
Your wallet and the PXE it embeds persist state through a pluggable key-value store (`@aztec/kv-store`). In the browser there are two backends:
|
|
326
326
|
|
|
327
|
-
- **IndexedDB** (`@aztec/kv-store/indexeddb`): the default in browser environments up to Aztec Alpha v4
|
|
327
|
+
- **IndexedDB** (`@aztec/kv-store/deprecated/indexeddb`): the default in browser environments up to Aztec Alpha v4, now moved to a deprecated subpath. We plan to remove this backend, so new browser code should use the SQLite backend below.
|
|
328
328
|
- **SQLite-OPFS** (`@aztec/kv-store/sqlite-opfs`): the default KV store backend from Aztec Alpha v5 on. It's backed by the durable Origin Private File System web standard, and it offers a number of advantages over IndexedDB: a sane transaction model (IDB transactions auto-close the moment the event loop yields, which constrains the store layer), support for encryption at rest, and better performance in the access patterns we exercise the most from both wallet and PXE.
|
|
329
329
|
|
|
330
330
|
The backend is chosen by *which store you construct and hand to the wallet* there is no runtime flag or environment variable.
|
|
@@ -11,9 +11,10 @@ import type { PXE } from '@aztec/pxe/server';
|
|
|
11
11
|
import { type ContractArtifact, type EventMetadataDefinition, type FunctionCall } from '@aztec/stdlib/abi';
|
|
12
12
|
import type { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
13
13
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
14
|
-
import { type
|
|
14
|
+
import { type ContractInstancePreimage } from '@aztec/stdlib/contract';
|
|
15
15
|
import { Gas, GasFees, GasSettings, ManaUsageEstimate } from '@aztec/stdlib/gas';
|
|
16
16
|
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
17
|
+
import { type MasterSecretKeys } from '@aztec/stdlib/keys';
|
|
17
18
|
import { ExecutionPayload, type TxExecutionRequest, type TxProfileResult, type UtilityExecutionResult } from '@aztec/stdlib/tx';
|
|
18
19
|
/**
|
|
19
20
|
* Options to configure fee payment for a transaction
|
|
@@ -59,6 +60,7 @@ export declare abstract class BaseWallet implements Wallet {
|
|
|
59
60
|
protected log: import("@aztec/foundation/log").Logger;
|
|
60
61
|
protected minFeePadding: number;
|
|
61
62
|
protected cancellableTransactions: boolean;
|
|
63
|
+
protected defaultWaitInterval?: number;
|
|
62
64
|
private nodeInfoPromise;
|
|
63
65
|
protected constructor(pxe: PXE, aztecNode: AztecNode, log?: import("@aztec/foundation/log").Logger);
|
|
64
66
|
protected scopesFrom(from: AztecAddress | NoFrom, additionalScopes?: AztecAddress[]): AztecAddress[];
|
|
@@ -124,7 +126,7 @@ export declare abstract class BaseWallet implements Wallet {
|
|
|
124
126
|
*/
|
|
125
127
|
protected getMinFees(estimate?: ManaUsageEstimate): Promise<GasFees>;
|
|
126
128
|
registerSender(address: AztecAddress, _alias?: string): Promise<AztecAddress>;
|
|
127
|
-
registerContract(instance:
|
|
129
|
+
registerContract(instance: ContractInstancePreimage, artifact?: ContractArtifact, secretKeyOrKeys?: Fr | MasterSecretKeys): Promise<void>;
|
|
128
130
|
registerContractClass(artifact: ContractArtifact): Promise<void>;
|
|
129
131
|
/**
|
|
130
132
|
* Simulates calls through the standard PXE path (account entrypoint).
|
|
@@ -163,7 +165,7 @@ export declare abstract class BaseWallet implements Wallet {
|
|
|
163
165
|
* @param address - The contract address to query.
|
|
164
166
|
*/
|
|
165
167
|
getContractMetadata(address: AztecAddress): Promise<{
|
|
166
|
-
instance:
|
|
168
|
+
instance: import("@aztec/stdlib/contract").ContractInstancePreimageWithAddress | undefined;
|
|
167
169
|
initializationStatus: ContractInitializationStatus;
|
|
168
170
|
isContractPublished: boolean;
|
|
169
171
|
isContractUpdated: boolean;
|
|
@@ -174,4 +176,4 @@ export declare abstract class BaseWallet implements Wallet {
|
|
|
174
176
|
isContractClassPubliclyRegistered: boolean;
|
|
175
177
|
}>;
|
|
176
178
|
}
|
|
177
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZV93YWxsZXQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iYXNlLXdhbGxldC9iYXNlX3dhbGxldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFL0QsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pGLE9BQU8sRUFDTCxLQUFLLHNCQUFzQixFQUUzQixLQUFLLFVBQVUsRUFFaEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTVELE9BQU8sRUFDTCxLQUFLLE9BQU8sRUFDWixLQUFLLGVBQWUsRUFDcEIsS0FBSyxZQUFZLEVBQ2pCLEtBQUssYUFBYSxFQUNsQiw0QkFBNEIsRUFDNUIsS0FBSyxxQkFBcUIsRUFDMUIsS0FBSyxZQUFZLEVBQ2pCLEtBQUssa0JBQWtCLEVBQ3ZCLEtBQUssY0FBYyxFQUNuQixLQUFLLFdBQVcsRUFDaEIsS0FBSyxlQUFlLEVBQ3BCLCtCQUErQixFQUMvQixLQUFLLE1BQU0sRUFDWCxLQUFLLGtCQUFrQixFQUN4QixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSw4QkFBOEIsRUFBd0MsTUFBTSw0QkFBNEIsQ0FBQztBQUVsSCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFcEQsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFeEQsT0FBTyxLQUFLLEVBQUUsR0FBRyxFQUFzQixNQUFNLG1CQUFtQixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxLQUFLLGdCQUFnQixFQUNyQixLQUFLLHVCQUF1QixFQUM1QixLQUFLLFlBQVksRUFFbEIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEtBQUssd0JBQXdCLEVBQXdDLE1BQU0sd0JBQXdCLENBQUM7QUFFN0csT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFLakYsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLEtBQUssZ0JBQWdCLEVBQThDLE1BQU0sb0JBQW9CLENBQUM7QUFDdkcsT0FBTyxFQUVMLGdCQUFnQixFQUNoQixLQUFLLGtCQUFrQixFQUN2QixLQUFLLGVBQWUsRUFDcEIsS0FBSyxzQkFBc0IsRUFFNUIsTUFBTSxrQkFBa0IsQ0FBQztBQU8xQjs7R0FFRztBQUNILE1BQU0sTUFBTSxVQUFVLEdBQUc7SUFDdkI7OztPQUdHO0lBQ0gsc0JBQXNCLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQztJQUMxQywrRkFBK0Y7SUFDL0YsOEJBQThCLENBQUMsRUFBRSw4QkFBOEIsQ0FBQztJQUNoRSxrREFBa0Q7SUFDbEQsV0FBVyxFQUFFLFdBQVcsQ0FBQztDQUMxQixDQUFDO0FBRUYsMkNBQTJDO0FBQzNDLE1BQU0sTUFBTSw0QkFBNEIsR0FBRyxJQUFJLENBQzdDLGVBQWUsRUFDZixNQUFNLEdBQUcsa0JBQWtCLEdBQUcsa0JBQWtCLEdBQUcsb0JBQW9CLEdBQUcsZ0JBQWdCLEdBQUcsV0FBVyxDQUN6RyxHQUFHO0lBQ0YscUNBQXFDO0lBQ3JDLFVBQVUsRUFBRSxVQUFVLENBQUM7Q0FDeEIsQ0FBQztBQUVGLHdDQUF3QztBQUN4QyxNQUFNLE1BQU0sd0JBQXdCLEdBQUc7SUFDckMsNERBQTREO0lBQzVELElBQUksRUFBRSxZQUFZLEdBQUcsTUFBTSxDQUFDO0lBQzVCLG9HQUFvRztJQUNwRyxRQUFRLENBQUMsRUFBRSxZQUFZLENBQUM7SUFDeEIsMENBQTBDO0lBQzFDLFdBQVcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUM3Qyx5R0FBeUc7SUFDekcsYUFBYSxDQUFDLEVBQUUsT0FBTyxDQUFDO0lBQ3hCOzs7T0FHRztJQUNILGtCQUFrQixDQUFDLEVBQUUsaUJBQWlCLENBQUM7Q0FDeEMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsOEJBQXNCLFVBQVcsWUFBVyxNQUFNO0lBWTlDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUc7SUFDM0IsU0FBUyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsU0FBUztJQUN2QyxTQUFTLENBQUMsR0FBRztJQWJmLFNBQVMsQ0FBQyxhQUFhLFNBQU87SUFDOUIsU0FBUyxDQUFDLHVCQUF1QixVQUFTO0lBRzFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUd2QyxPQUFPLENBQUMsZUFBZSxDQUFnQztJQUd2RCxTQUFTLGFBQ1ksR0FBRyxFQUFFLEdBQUcsRUFDUixTQUFTLEVBQUUsU0FBUyxFQUM3QixHQUFHLHlDQUF5QyxFQUNwRDtJQUVKLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFlBQVksR0FBRyxNQUFNLEVBQUUsZ0JBQWdCLEdBQUUsWUFBWSxFQUFPLEdBQUcsWUFBWSxFQUFFLENBSXZHO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsU0FBUyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxZQUFZLEdBQUcsTUFBTSxFQUFFLGNBQWMsQ0FBQyxFQUFFLFlBQVksR0FBRyxZQUFZLEdBQUcsU0FBUyxDQUVoSDtJQUVELFNBQVMsQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsT0FBTyxFQUFFLFlBQVksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFbEYsUUFBUSxDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUV6RDs7Ozs7O09BTUc7SUFDRyxjQUFjLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBR3ZEO0lBRUQ7Ozs7O09BS0c7SUFDSCxPQUFPLENBQUMsV0FBVztJQVViLFlBQVksSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLENBR3ZDO0lBRUQ7Ozs7O09BS0c7SUFDSCxVQUFnQixpQkFBaUIsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLENBR2hEO0lBRUQsVUFBZ0IseUNBQXlDLENBQ3ZELGdCQUFnQixFQUFFLGdCQUFnQixFQUNsQyxJQUFJLEVBQUUsWUFBWSxHQUFHLE1BQU0sRUFDM0IsVUFBVSxFQUFFLFVBQVUsR0FDckIsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBeUI3QjtJQUVZLGFBQWEsQ0FDeEIsSUFBSSxFQUFFLFlBQVksRUFDbEIsbUJBQW1CLEVBQUUsZUFBZSxHQUFHLFVBQVUsR0FDaEQsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUl0QjtJQUVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNJLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxlQUFlLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBRWxGO0lBRVksS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsU0FBUyxhQUFhLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FnQmpHO0lBRUQ7OztPQUdHO0lBQ0gsVUFBZ0Isa0JBQWtCLENBQUMsTUFBTSxFQUFFLHdCQUF3QixHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FvRHhGO0lBRUQ7Ozs7T0FJRztJQUNILFVBQWdCLFVBQVUsQ0FBQyxRQUFRLEdBQUUsaUJBQTJDLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQWVsRztJQUVLLGNBQWMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sR0FBRSxNQUFXLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUd0RjtJQUVLLGdCQUFnQixDQUNwQixRQUFRLEVBQUUsd0JBQXdCLEVBQ2xDLFFBQVEsQ0FBQyxFQUFFLGdCQUFnQixFQUMzQixlQUFlLENBQUMsRUFBRSxFQUFFLEdBQUcsZ0JBQWdCLEdBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0EyQmY7SUFFRCxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUUvRDtJQUVEOzs7O09BSUc7SUFDSCxVQUFnQixxQkFBcUIsQ0FBQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsNEJBQTRCLDRDQWdCM0c7SUFFRDs7Ozs7T0FLRztJQUNILFVBQWdCLG9CQUFvQixDQUFDLElBQUksRUFBRSxZQUFZLEdBQUcsTUFBTSxFQUFFLFVBQVUsRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQU16RztJQUVEOzs7Ozs7O09BT0c7SUFDRyxVQUFVLENBQ2QsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQ2xDLElBQUksRUFBRSxlQUFlLEdBQ3BCLE9BQU8sQ0FBQywrQkFBK0IsQ0FBQyxDQWtEMUM7SUFFSyxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLGNBQWMsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLENBY2xHO0lBRVksTUFBTSxDQUFDLENBQUMsU0FBUyxzQkFBc0IsR0FBRyxTQUFTLEVBQzlELGdCQUFnQixFQUFFLGdCQUFnQixFQUNsQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUNuQixPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBOEN4QjtJQUVEOzs7T0FHRztJQUNILFVBQWdCLGVBQWUsQ0FBQyxPQUFPLEVBQUUsWUFBWSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBV2xGO0lBRUQsU0FBUyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQVlwRTtJQUVELGNBQWMsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxxQkFBcUIsR0FBRyxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FFL0Y7SUFFSyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQ3RCLFFBQVEsRUFBRSx1QkFBdUIsRUFDakMsV0FBVyxFQUFFLGtCQUFrQixHQUM5QixPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FlNUI7SUFFRDs7O09BR0c7SUFDRyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsWUFBWTs7Ozs7O09BaUM5QztJQUVLLHdCQUF3QixDQUFDLEVBQUUsRUFBRSxFQUFFOzs7T0FNcEM7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base_wallet.d.ts","sourceRoot":"","sources":["../../src/base-wallet/base_wallet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,EACL,KAAK,sBAAsB,EAE3B,KAAK,UAAU,EAEhB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,4BAA4B,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,+BAA+B,EAC/B,KAAK,MAAM,EACX,KAAK,kBAAkB,EACxB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,8BAA8B,EAAwC,MAAM,4BAA4B,CAAC;AAElH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,KAAK,EAAE,GAAG,EAAsB,MAAM,mBAAmB,CAAC;AACjE,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAC5B,KAAK,YAAY,EAElB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,
|
|
1
|
+
{"version":3,"file":"base_wallet.d.ts","sourceRoot":"","sources":["../../src/base-wallet/base_wallet.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,10 +9,11 @@ import { createLogger } from '@aztec/foundation/log';
|
|
|
9
9
|
import { displayDebugLogs } from '@aztec/pxe/client/lazy';
|
|
10
10
|
import { decodeFromAbi } from '@aztec/stdlib/abi';
|
|
11
11
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
12
|
-
import { computePartialAddress
|
|
12
|
+
import { computePartialAddress } from '@aztec/stdlib/contract';
|
|
13
13
|
import { SimulationError } from '@aztec/stdlib/errors';
|
|
14
14
|
import { Gas, GasFees, GasSettings, ManaUsageEstimate } from '@aztec/stdlib/gas';
|
|
15
15
|
import { computeSiloedPrivateInitializationNullifier, computeSiloedPublicInitializationNullifier } from '@aztec/stdlib/hash';
|
|
16
|
+
import { deriveKeys, deriveKeysFromMasterSecretKeys } from '@aztec/stdlib/keys';
|
|
16
17
|
import { mergeExecutionPayloads } from '@aztec/stdlib/tx';
|
|
17
18
|
import { inspect } from 'util';
|
|
18
19
|
import { assertGasLimitsWithinNetworkLimits } from './get_gas_limits.js';
|
|
@@ -25,6 +26,9 @@ import { buildMergedSimulationResult, extractOptimizablePublicStaticCalls, simul
|
|
|
25
26
|
log;
|
|
26
27
|
minFeePadding;
|
|
27
28
|
cancellableTransactions;
|
|
29
|
+
// Poll interval (in seconds) injected into sendTx waits when the caller does not specify one. Left undefined on
|
|
30
|
+
// production wallets so the DefaultWaitOpts 1s cadence stands; test wallets talking to in-process nodes lower it.
|
|
31
|
+
defaultWaitInterval;
|
|
28
32
|
// A wallet is instantiated for a particular chain, so chain info never changes during its lifetime.
|
|
29
33
|
// We cache it here because getChainInfo is called frequently (every tx simulation, send, auth wit, etc.).
|
|
30
34
|
nodeInfoPromise;
|
|
@@ -240,37 +244,27 @@ import { buildMergedSimulationResult, extractOptimizablePublicStaticCalls, simul
|
|
|
240
244
|
});
|
|
241
245
|
return address;
|
|
242
246
|
}
|
|
243
|
-
async registerContract(instance, artifact,
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
if (!thisContractClass.id.equals(existingInstance.currentContractClassId)) {
|
|
250
|
-
// wallet holds an outdated version of this contract
|
|
251
|
-
await this.pxe.updateContract(instance.address, artifact);
|
|
252
|
-
instance.currentContractClassId = thisContractClass.id;
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
// If no artifact provided, we just use the existing registration
|
|
256
|
-
} else {
|
|
257
|
-
// Instance not registered yet
|
|
258
|
-
if (!artifact) {
|
|
259
|
-
// Try to get the artifact from the wallet's contract class storage
|
|
260
|
-
artifact = await this.pxe.getContractArtifact(instance.currentContractClassId);
|
|
261
|
-
if (!artifact) {
|
|
262
|
-
throw new Error(`Cannot register contract at ${instance.address.toString()}: artifact is required but not provided, and wallet does not have the artifact for contract class ${instance.currentContractClassId.toString()}`);
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
await this.pxe.registerContract({
|
|
266
|
-
artifact,
|
|
267
|
-
instance
|
|
268
|
-
});
|
|
247
|
+
async registerContract(instance, artifact, secretKeyOrKeys) {
|
|
248
|
+
// Classes and instances are registered independently: register the artifact (if provided) then the instance.
|
|
249
|
+
// Neither call validates that the artifact matches the class the instance runs, a missing artifact only surfaces
|
|
250
|
+
// when the contract is later simulated.
|
|
251
|
+
if (artifact) {
|
|
252
|
+
await this.pxe.registerContractClass(artifact);
|
|
269
253
|
}
|
|
270
|
-
|
|
271
|
-
|
|
254
|
+
const contractAddress = await this.pxe.registerContract(instance);
|
|
255
|
+
if (secretKeyOrKeys) {
|
|
256
|
+
// PXE never receives the account seed (from which the message-signing/fallback secret keys could be re-derived):
|
|
257
|
+
// the wallet derives the keys here. Of these, PXE only reads and stores the four privacy secret keys and the
|
|
258
|
+
// message-signing and fallback *public* keys — it never touches the message-signing or fallback secret keys.
|
|
259
|
+
//
|
|
260
|
+
// Since PXE recomputes the address from those keys, we assert it matches the instance's address: a mismatch means
|
|
261
|
+
// the provided keys don't correspond to this account.
|
|
262
|
+
const derivedKeys = secretKeyOrKeys instanceof Fr ? await deriveKeys(secretKeyOrKeys) : await deriveKeysFromMasterSecretKeys(secretKeyOrKeys);
|
|
263
|
+
const { address } = await this.pxe.registerAccount(derivedKeys, await computePartialAddress(instance));
|
|
264
|
+
if (!address.equals(contractAddress)) {
|
|
265
|
+
throw new Error(`Registered account address ${address.toString()} does not match contract instance address ${contractAddress.toString()}: the provided keys do not correspond to this account.`);
|
|
266
|
+
}
|
|
272
267
|
}
|
|
273
|
-
return instance;
|
|
274
268
|
}
|
|
275
269
|
registerContractClass(artifact) {
|
|
276
270
|
return this.pxe.registerContractClass(artifact);
|
|
@@ -394,7 +388,11 @@ import { buildMergedSimulationResult, extractOptimizablePublicStaticCalls, simul
|
|
|
394
388
|
};
|
|
395
389
|
}
|
|
396
390
|
// Otherwise, wait for the full receipt (default behavior on wait: undefined)
|
|
397
|
-
const
|
|
391
|
+
const callerWaitOpts = typeof opts.wait === 'object' ? opts.wait : undefined;
|
|
392
|
+
const waitOpts = this.defaultWaitInterval !== undefined && callerWaitOpts?.interval === undefined ? {
|
|
393
|
+
...callerWaitOpts,
|
|
394
|
+
interval: this.defaultWaitInterval
|
|
395
|
+
} : callerWaitOpts;
|
|
398
396
|
const receipt = await waitForTx(this.aztecNode, txHash, waitOpts);
|
|
399
397
|
// Display debug logs from public execution if present (served in test mode only)
|
|
400
398
|
if (receipt.isMined() && receipt.debugLogs?.length) {
|
|
@@ -413,7 +411,11 @@ import { buildMergedSimulationResult, extractOptimizablePublicStaticCalls, simul
|
|
|
413
411
|
if (!instance) {
|
|
414
412
|
return undefined;
|
|
415
413
|
}
|
|
416
|
-
|
|
414
|
+
// Contract names are class-stable (an upgrade preserves the contract name), so the original class artifact is a
|
|
415
|
+
// sufficient source for the display name without resolving the current class against the node.
|
|
416
|
+
// TODO: if a contract were to be upgraded and its original artifact never registered, then this would fail and we'd
|
|
417
|
+
// want to fallback to the current class.
|
|
418
|
+
const artifact = await this.pxe.getContractArtifact(instance.originalContractClassId);
|
|
417
419
|
return artifact?.name;
|
|
418
420
|
}
|
|
419
421
|
contextualizeError(err, ...context) {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/wallet-sdk",
|
|
3
3
|
"homepage": "https://github.com/AztecProtocol/aztec-packages/tree/master/yarn-project/wallet-sdk",
|
|
4
|
-
"version": "5.0.
|
|
4
|
+
"version": "5.0.1",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
7
7
|
"./base-wallet": "./dest/base-wallet/index.js",
|
|
@@ -75,15 +75,15 @@
|
|
|
75
75
|
]
|
|
76
76
|
},
|
|
77
77
|
"dependencies": {
|
|
78
|
-
"@aztec/aztec.js": "5.0.
|
|
79
|
-
"@aztec/constants": "5.0.
|
|
80
|
-
"@aztec/entrypoints": "5.0.
|
|
81
|
-
"@aztec/foundation": "5.0.
|
|
82
|
-
"@aztec/pxe": "5.0.
|
|
83
|
-
"@aztec/stdlib": "5.0.
|
|
78
|
+
"@aztec/aztec.js": "5.0.1",
|
|
79
|
+
"@aztec/constants": "5.0.1",
|
|
80
|
+
"@aztec/entrypoints": "5.0.1",
|
|
81
|
+
"@aztec/foundation": "5.0.1",
|
|
82
|
+
"@aztec/pxe": "5.0.1",
|
|
83
|
+
"@aztec/stdlib": "5.0.1"
|
|
84
84
|
},
|
|
85
85
|
"devDependencies": {
|
|
86
|
-
"@aztec/noir-contracts.js": "5.0.
|
|
86
|
+
"@aztec/noir-contracts.js": "5.0.1",
|
|
87
87
|
"@jest/globals": "^30.0.0",
|
|
88
88
|
"@types/jest": "^30.0.0",
|
|
89
89
|
"@types/node": "^22.15.17",
|
|
@@ -41,12 +41,7 @@ import {
|
|
|
41
41
|
} from '@aztec/stdlib/abi';
|
|
42
42
|
import type { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
43
43
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
44
|
-
import {
|
|
45
|
-
type ContractInstanceWithAddress,
|
|
46
|
-
type NodeInfo,
|
|
47
|
-
computePartialAddress,
|
|
48
|
-
getContractClassFromArtifact,
|
|
49
|
-
} from '@aztec/stdlib/contract';
|
|
44
|
+
import { type ContractInstancePreimage, type NodeInfo, computePartialAddress } from '@aztec/stdlib/contract';
|
|
50
45
|
import { SimulationError } from '@aztec/stdlib/errors';
|
|
51
46
|
import { Gas, GasFees, GasSettings, ManaUsageEstimate } from '@aztec/stdlib/gas';
|
|
52
47
|
import {
|
|
@@ -54,6 +49,7 @@ import {
|
|
|
54
49
|
computeSiloedPublicInitializationNullifier,
|
|
55
50
|
} from '@aztec/stdlib/hash';
|
|
56
51
|
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
52
|
+
import { type MasterSecretKeys, deriveKeys, deriveKeysFromMasterSecretKeys } from '@aztec/stdlib/keys';
|
|
57
53
|
import {
|
|
58
54
|
BlockHeader,
|
|
59
55
|
ExecutionPayload,
|
|
@@ -115,6 +111,9 @@ export type CompleteFeeOptionsConfig = {
|
|
|
115
111
|
export abstract class BaseWallet implements Wallet {
|
|
116
112
|
protected minFeePadding = 0.5;
|
|
117
113
|
protected cancellableTransactions = false;
|
|
114
|
+
// Poll interval (in seconds) injected into sendTx waits when the caller does not specify one. Left undefined on
|
|
115
|
+
// production wallets so the DefaultWaitOpts 1s cadence stands; test wallets talking to in-process nodes lower it.
|
|
116
|
+
protected defaultWaitInterval?: number;
|
|
118
117
|
// A wallet is instantiated for a particular chain, so chain info never changes during its lifetime.
|
|
119
118
|
// We cache it here because getChainInfo is called frequently (every tx simulation, send, auth wit, etc.).
|
|
120
119
|
private nodeInfoPromise: Promise<NodeInfo> | undefined;
|
|
@@ -352,41 +351,36 @@ export abstract class BaseWallet implements Wallet {
|
|
|
352
351
|
}
|
|
353
352
|
|
|
354
353
|
async registerContract(
|
|
355
|
-
instance:
|
|
354
|
+
instance: ContractInstancePreimage,
|
|
356
355
|
artifact?: ContractArtifact,
|
|
357
|
-
|
|
358
|
-
): Promise<
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
const thisContractClass = await getContractClassFromArtifact(artifact);
|
|
365
|
-
if (!thisContractClass.id.equals(existingInstance.currentContractClassId)) {
|
|
366
|
-
// wallet holds an outdated version of this contract
|
|
367
|
-
await this.pxe.updateContract(instance.address, artifact);
|
|
368
|
-
instance.currentContractClassId = thisContractClass.id;
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
|
-
// If no artifact provided, we just use the existing registration
|
|
372
|
-
} else {
|
|
373
|
-
// Instance not registered yet
|
|
374
|
-
if (!artifact) {
|
|
375
|
-
// Try to get the artifact from the wallet's contract class storage
|
|
376
|
-
artifact = await this.pxe.getContractArtifact(instance.currentContractClassId);
|
|
377
|
-
if (!artifact) {
|
|
378
|
-
throw new Error(
|
|
379
|
-
`Cannot register contract at ${instance.address.toString()}: artifact is required but not provided, and wallet does not have the artifact for contract class ${instance.currentContractClassId.toString()}`,
|
|
380
|
-
);
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
await this.pxe.registerContract({ artifact, instance });
|
|
356
|
+
secretKeyOrKeys?: Fr | MasterSecretKeys,
|
|
357
|
+
): Promise<void> {
|
|
358
|
+
// Classes and instances are registered independently: register the artifact (if provided) then the instance.
|
|
359
|
+
// Neither call validates that the artifact matches the class the instance runs, a missing artifact only surfaces
|
|
360
|
+
// when the contract is later simulated.
|
|
361
|
+
if (artifact) {
|
|
362
|
+
await this.pxe.registerContractClass(artifact);
|
|
384
363
|
}
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
364
|
+
const contractAddress = await this.pxe.registerContract(instance);
|
|
365
|
+
|
|
366
|
+
if (secretKeyOrKeys) {
|
|
367
|
+
// PXE never receives the account seed (from which the message-signing/fallback secret keys could be re-derived):
|
|
368
|
+
// the wallet derives the keys here. Of these, PXE only reads and stores the four privacy secret keys and the
|
|
369
|
+
// message-signing and fallback *public* keys — it never touches the message-signing or fallback secret keys.
|
|
370
|
+
//
|
|
371
|
+
// Since PXE recomputes the address from those keys, we assert it matches the instance's address: a mismatch means
|
|
372
|
+
// the provided keys don't correspond to this account.
|
|
373
|
+
const derivedKeys =
|
|
374
|
+
secretKeyOrKeys instanceof Fr
|
|
375
|
+
? await deriveKeys(secretKeyOrKeys)
|
|
376
|
+
: await deriveKeysFromMasterSecretKeys(secretKeyOrKeys);
|
|
377
|
+
const { address } = await this.pxe.registerAccount(derivedKeys, await computePartialAddress(instance));
|
|
378
|
+
if (!address.equals(contractAddress)) {
|
|
379
|
+
throw new Error(
|
|
380
|
+
`Registered account address ${address.toString()} does not match contract instance address ${contractAddress.toString()}: the provided keys do not correspond to this account.`,
|
|
381
|
+
);
|
|
382
|
+
}
|
|
388
383
|
}
|
|
389
|
-
return instance;
|
|
390
384
|
}
|
|
391
385
|
|
|
392
386
|
registerContractClass(artifact: ContractArtifact): Promise<void> {
|
|
@@ -545,7 +539,11 @@ export abstract class BaseWallet implements Wallet {
|
|
|
545
539
|
}
|
|
546
540
|
|
|
547
541
|
// Otherwise, wait for the full receipt (default behavior on wait: undefined)
|
|
548
|
-
const
|
|
542
|
+
const callerWaitOpts = typeof opts.wait === 'object' ? opts.wait : undefined;
|
|
543
|
+
const waitOpts =
|
|
544
|
+
this.defaultWaitInterval !== undefined && callerWaitOpts?.interval === undefined
|
|
545
|
+
? { ...callerWaitOpts, interval: this.defaultWaitInterval }
|
|
546
|
+
: callerWaitOpts;
|
|
549
547
|
const receipt = await waitForTx(this.aztecNode, txHash, waitOpts);
|
|
550
548
|
|
|
551
549
|
// Display debug logs from public execution if present (served in test mode only)
|
|
@@ -565,7 +563,11 @@ export abstract class BaseWallet implements Wallet {
|
|
|
565
563
|
if (!instance) {
|
|
566
564
|
return undefined;
|
|
567
565
|
}
|
|
568
|
-
|
|
566
|
+
// Contract names are class-stable (an upgrade preserves the contract name), so the original class artifact is a
|
|
567
|
+
// sufficient source for the display name without resolving the current class against the node.
|
|
568
|
+
// TODO: if a contract were to be upgraded and its original artifact never registered, then this would fail and we'd
|
|
569
|
+
// want to fallback to the current class.
|
|
570
|
+
const artifact = await this.pxe.getContractArtifact(instance.originalContractClassId);
|
|
569
571
|
return artifact?.name;
|
|
570
572
|
}
|
|
571
573
|
|