@aztec/wallets 0.0.1-commit.e2b2873ed → 0.0.1-commit.ec5f612
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/embedded/account-contract-providers/bundle.d.ts +6 -2
- package/dest/embedded/account-contract-providers/bundle.d.ts.map +1 -1
- package/dest/embedded/account-contract-providers/bundle.js +4 -0
- package/dest/embedded/account-contract-providers/lazy.d.ts +6 -2
- package/dest/embedded/account-contract-providers/lazy.d.ts.map +1 -1
- package/dest/embedded/account-contract-providers/lazy.js +4 -0
- package/dest/embedded/account-contract-providers/types.d.ts +6 -2
- package/dest/embedded/account-contract-providers/types.d.ts.map +1 -1
- package/dest/embedded/embedded_wallet.d.ts +7 -2
- package/dest/embedded/embedded_wallet.d.ts.map +1 -1
- package/dest/embedded/embedded_wallet.js +38 -21
- package/dest/embedded/entrypoints/browser.d.ts +7 -2
- package/dest/embedded/entrypoints/browser.d.ts.map +1 -1
- package/dest/embedded/entrypoints/browser.js +21 -14
- package/dest/embedded/entrypoints/node.d.ts +6 -10
- package/dest/embedded/entrypoints/node.d.ts.map +1 -1
- package/dest/embedded/entrypoints/node.js +7 -9
- package/package.json +18 -9
- package/src/embedded/account-contract-providers/bundle.ts +6 -1
- package/src/embedded/account-contract-providers/lazy.ts +6 -1
- package/src/embedded/account-contract-providers/types.ts +2 -1
- package/src/embedded/embedded_wallet.ts +47 -23
- package/src/embedded/entrypoints/browser.ts +39 -17
- package/src/embedded/entrypoints/node.ts +23 -24
- package/dest/embedded/embedded_wallet_browser.d.ts +0 -5
- package/dest/embedded/embedded_wallet_browser.d.ts.map +0 -1
- package/dest/embedded/embedded_wallet_browser.js +0 -31
- package/src/embedded/embedded_wallet_browser.ts +0 -40
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Account, AccountContract } from '@aztec/aztec.js/account';
|
|
2
2
|
import type { Fq } from '@aztec/foundation/curves/bn254';
|
|
3
3
|
import type { ContractArtifact } from '@aztec/stdlib/abi';
|
|
4
|
-
import type { CompleteAddress } from '@aztec/stdlib/contract';
|
|
4
|
+
import type { CompleteAddress, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
5
5
|
import type { AccountContractsProvider } from './types.js';
|
|
6
6
|
/**
|
|
7
7
|
* Loads account contract artifacts eagerly via static imports.
|
|
@@ -13,5 +13,9 @@ export declare class BundleAccountContractsProvider implements AccountContractsP
|
|
|
13
13
|
getEcdsaKAccountContract(signingKey: Buffer): Promise<AccountContract>;
|
|
14
14
|
getStubAccountContractArtifact(): Promise<ContractArtifact>;
|
|
15
15
|
createStubAccount(address: CompleteAddress): Promise<Account>;
|
|
16
|
+
getMulticallContract(): Promise<{
|
|
17
|
+
instance: ContractInstanceWithAddress;
|
|
18
|
+
artifact: ContractArtifact;
|
|
19
|
+
}>;
|
|
16
20
|
}
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuZGxlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZW1iZWRkZWQvYWNjb3VudC1jb250cmFjdC1wcm92aWRlcnMvYnVuZGxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RSxPQUFPLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV6RCxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTNGLE9BQU8sS0FBSyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTNEOzs7R0FHRztBQUNILHFCQUFhLDhCQUErQixZQUFXLHdCQUF3QjtJQUM3RSx5QkFBeUIsQ0FBQyxVQUFVLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FFbEU7SUFFRCx3QkFBd0IsQ0FBQyxVQUFVLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FFckU7SUFFRCx3QkFBd0IsQ0FBQyxVQUFVLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FFckU7SUFFRCw4QkFBOEIsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FFMUQ7SUFFRCxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsZUFBZSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FFNUQ7SUFFRCxvQkFBb0IsSUFBSSxPQUFPLENBQUM7UUFBRSxRQUFRLEVBQUUsMkJBQTJCLENBQUM7UUFBQyxRQUFRLEVBQUUsZ0JBQWdCLENBQUE7S0FBRSxDQUFDLENBRXJHO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../../../src/embedded/account-contract-providers/bundle.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../../../src/embedded/account-contract-providers/bundle.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAE3F,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE3D;;;GAGG;AACH,qBAAa,8BAA+B,YAAW,wBAAwB;IAC7E,yBAAyB,CAAC,UAAU,EAAE,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAElE;IAED,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAErE;IAED,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAErE;IAED,8BAA8B,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAE1D;IAED,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAE5D;IAED,oBAAoB,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE,2BAA2B,CAAC;QAAC,QAAQ,EAAE,gBAAgB,CAAA;KAAE,CAAC,CAErG;CACF"}
|
|
@@ -1,6 +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 { getCanonicalMultiCallEntrypoint } from '@aztec/protocol-contracts/multi-call-entrypoint';
|
|
4
5
|
/**
|
|
5
6
|
* Loads account contract artifacts eagerly via static imports.
|
|
6
7
|
* Designed for Node.js environments where all artifacts are available at startup.
|
|
@@ -20,4 +21,7 @@ import { StubAccountContractArtifact, createStubAccount } from '@aztec/accounts/
|
|
|
20
21
|
createStubAccount(address) {
|
|
21
22
|
return Promise.resolve(createStubAccount(address));
|
|
22
23
|
}
|
|
24
|
+
getMulticallContract() {
|
|
25
|
+
return getCanonicalMultiCallEntrypoint();
|
|
26
|
+
}
|
|
23
27
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Account, AccountContract } from '@aztec/aztec.js/account';
|
|
2
2
|
import type { Fq } from '@aztec/foundation/curves/bn254';
|
|
3
3
|
import type { ContractArtifact } from '@aztec/stdlib/abi';
|
|
4
|
-
import type { CompleteAddress } from '@aztec/stdlib/contract';
|
|
4
|
+
import type { CompleteAddress, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
5
5
|
import type { AccountContractsProvider } from './types.js';
|
|
6
6
|
/**
|
|
7
7
|
* Loads account contract artifacts lazily via dynamic imports.
|
|
@@ -13,5 +13,9 @@ export declare class LazyAccountContractsProvider implements AccountContractsPro
|
|
|
13
13
|
getEcdsaKAccountContract(signingKey: Buffer): Promise<AccountContract>;
|
|
14
14
|
getStubAccountContractArtifact(): Promise<ContractArtifact>;
|
|
15
15
|
createStubAccount(address: CompleteAddress): Promise<Account>;
|
|
16
|
+
getMulticallContract(): Promise<{
|
|
17
|
+
instance: ContractInstanceWithAddress;
|
|
18
|
+
artifact: ContractArtifact;
|
|
19
|
+
}>;
|
|
16
20
|
}
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VtYmVkZGVkL2FjY291bnQtY29udHJhY3QtcHJvdmlkZXJzL2xhenkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hFLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXpELE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUQsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLDJCQUEyQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFM0YsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFM0Q7OztHQUdHO0FBQ0gscUJBQWEsNEJBQTZCLFlBQVcsd0JBQXdCO0lBQ3JFLHlCQUF5QixDQUFDLFVBQVUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUd4RTtJQUVLLHdCQUF3QixDQUFDLFVBQVUsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUczRTtJQUVLLHdCQUF3QixDQUFDLFVBQVUsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUczRTtJQUVLLDhCQUE4QixJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUdoRTtJQUVLLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxlQUFlLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUdsRTtJQUVELG9CQUFvQixJQUFJLE9BQU8sQ0FBQztRQUFFLFFBQVEsRUFBRSwyQkFBMkIsQ0FBQztRQUFDLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQTtLQUFFLENBQUMsQ0FFckc7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../../../src/embedded/account-contract-providers/lazy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../../../src/embedded/account-contract-providers/lazy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAE3F,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE3D;;;GAGG;AACH,qBAAa,4BAA6B,YAAW,wBAAwB;IACrE,yBAAyB,CAAC,UAAU,EAAE,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAGxE;IAEK,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAG3E;IAEK,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAG3E;IAEK,8BAA8B,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAGhE;IAEK,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAGlE;IAED,oBAAoB,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE,2BAA2B,CAAC;QAAC,QAAQ,EAAE,gBAAgB,CAAA;KAAE,CAAC,CAErG;CACF"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getCanonicalMultiCallEntrypoint } from '@aztec/protocol-contracts/multi-call-entrypoint/lazy';
|
|
1
2
|
/**
|
|
2
3
|
* Loads account contract artifacts lazily via dynamic imports.
|
|
3
4
|
* Designed for browser environments where code splitting reduces initial bundle size.
|
|
@@ -22,4 +23,7 @@
|
|
|
22
23
|
const { createStubAccount } = await import('@aztec/accounts/stub/lazy');
|
|
23
24
|
return createStubAccount(address);
|
|
24
25
|
}
|
|
26
|
+
getMulticallContract() {
|
|
27
|
+
return getCanonicalMultiCallEntrypoint();
|
|
28
|
+
}
|
|
25
29
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Account, AccountContract } from '@aztec/aztec.js/account';
|
|
2
2
|
import type { Fq } from '@aztec/foundation/curves/bn254';
|
|
3
3
|
import type { ContractArtifact } from '@aztec/stdlib/abi';
|
|
4
|
-
import type { CompleteAddress } from '@aztec/stdlib/contract';
|
|
4
|
+
import type { CompleteAddress, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
5
5
|
/**
|
|
6
6
|
* Provides account contract implementations and stub accounts for the EmbeddedWallet.
|
|
7
7
|
* Two implementations exist:
|
|
@@ -13,6 +13,10 @@ export interface AccountContractsProvider {
|
|
|
13
13
|
getEcdsaRAccountContract(signingKey: Buffer): Promise<AccountContract>;
|
|
14
14
|
getEcdsaKAccountContract(signingKey: Buffer): Promise<AccountContract>;
|
|
15
15
|
getStubAccountContractArtifact(): Promise<ContractArtifact>;
|
|
16
|
+
getMulticallContract(): Promise<{
|
|
17
|
+
instance: ContractInstanceWithAddress;
|
|
18
|
+
artifact: ContractArtifact;
|
|
19
|
+
}>;
|
|
16
20
|
createStubAccount(address: CompleteAddress): Promise<Account>;
|
|
17
21
|
}
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbWJlZGRlZC9hY2NvdW50LWNvbnRyYWN0LXByb3ZpZGVycy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEUsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUzRjs7Ozs7R0FLRztBQUNILE1BQU0sV0FBVyx3QkFBd0I7SUFDdkMseUJBQXlCLENBQUMsVUFBVSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDcEUsd0JBQXdCLENBQUMsVUFBVSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDdkUsd0JBQXdCLENBQUMsVUFBVSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDdkUsOEJBQThCLElBQUksT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDNUQsb0JBQW9CLElBQUksT0FBTyxDQUFDO1FBQUUsUUFBUSxFQUFFLDJCQUEyQixDQUFDO1FBQUMsUUFBUSxFQUFFLGdCQUFnQixDQUFBO0tBQUUsQ0FBQyxDQUFDO0lBQ3ZHLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxlQUFlLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0NBQy9EIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/embedded/account-contract-providers/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/embedded/account-contract-providers/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAE3F;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACvC,yBAAyB,CAAC,UAAU,EAAE,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACpE,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACvE,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACvE,8BAA8B,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC5D,oBAAoB,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE,2BAA2B,CAAC;QAAC,QAAQ,EAAE,gBAAgB,CAAA;KAAE,CAAC,CAAC;IACvG,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/D"}
|
|
@@ -3,6 +3,7 @@ import type { Aliased } from '@aztec/aztec.js/wallet';
|
|
|
3
3
|
import { AccountManager } from '@aztec/aztec.js/wallet';
|
|
4
4
|
import { Fq, Fr } from '@aztec/foundation/curves/bn254';
|
|
5
5
|
import type { Logger } from '@aztec/foundation/log';
|
|
6
|
+
import type { AccessScopes, PXEConfig, PXECreationOptions } from '@aztec/pxe/client/lazy';
|
|
6
7
|
import type { PXE } from '@aztec/pxe/server';
|
|
7
8
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
8
9
|
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
@@ -15,6 +16,10 @@ export type EmbeddedWalletOptions = {
|
|
|
15
16
|
logger?: Logger;
|
|
16
17
|
/** Use ephemeral (in-memory) stores. Data will not persist across sessions. */
|
|
17
18
|
ephemeral?: boolean;
|
|
19
|
+
/** Override PXE configuration. */
|
|
20
|
+
pxeConfig?: Partial<PXEConfig>;
|
|
21
|
+
/** Advanced PXE creation options (custom store, prover, simulator). */
|
|
22
|
+
pxeOptions?: PXECreationOptions;
|
|
18
23
|
};
|
|
19
24
|
export declare class EmbeddedWallet extends BaseWallet {
|
|
20
25
|
protected walletDB: WalletDB;
|
|
@@ -29,7 +34,7 @@ export declare class EmbeddedWallet extends BaseWallet {
|
|
|
29
34
|
* This allows kernelless simulation with contract overrides, skipping expensive
|
|
30
35
|
* private kernel circuit execution.
|
|
31
36
|
*/
|
|
32
|
-
protected simulateViaEntrypoint(executionPayload: ExecutionPayload, from: AztecAddress, feeOptions: FeeOptions, _skipTxValidation?: boolean, _skipFeeEnforcement?: boolean
|
|
37
|
+
protected simulateViaEntrypoint(executionPayload: ExecutionPayload, from: AztecAddress, feeOptions: FeeOptions, scopes: AccessScopes, _skipTxValidation?: boolean, _skipFeeEnforcement?: boolean): Promise<TxSimulationResult>;
|
|
33
38
|
private getFakeAccountDataFor;
|
|
34
39
|
protected createAccountInternal(type: AccountType, secret: Fr, salt: Fr, signingKey: Buffer): Promise<AccountManager>;
|
|
35
40
|
createAndStoreAccount(alias: string, type: AccountType, secret: Fr, salt: Fr, signingKey: Buffer): Promise<AccountManager>;
|
|
@@ -39,4 +44,4 @@ export declare class EmbeddedWallet extends BaseWallet {
|
|
|
39
44
|
setMinFeePadding(value?: number): void;
|
|
40
45
|
stop(): Promise<void>;
|
|
41
46
|
}
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1iZWRkZWRfd2FsbGV0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZW1iZWRkZWQvZW1iZWRkZWRfd2FsbGV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLE9BQU8sRUFBcUIsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRSxPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFeEQsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4RCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUYsT0FBTyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTNELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWpFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLGtCQUFrQixFQUEwQixNQUFNLGtCQUFrQixDQUFDO0FBQ3JHLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUU1RSxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxLQUFLLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1RCxNQUFNLE1BQU0scUJBQXFCLEdBQUc7SUFDbEMscUZBQXFGO0lBQ3JGLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNoQiwrRUFBK0U7SUFD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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,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,EAAE,gBAAgB,EAAE,KAAK,kBAAkB,EAA0B,MAAM,kBAAkB,CAAC;AACrG,OAAO,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE5E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,EAAE,KAAK,WAAW,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE5D,MAAM,MAAM,qBAAqB,GAAG;IAClC,qFAAqF;IACrF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,OAAO,CAAC;
|
|
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,EAAE,gBAAgB,EAAE,KAAK,kBAAkB,EAA0B,MAAM,kBAAkB,CAAC;AACrG,OAAO,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE5E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,EAAE,KAAK,WAAW,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE5D,MAAM,MAAM,qBAAqB,GAAG;IAClC,qFAAqF;IACrF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kCAAkC;IAClC,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC/B,uEAAuE;IACvE,UAAU,CAAC,EAAE,kBAAkB,CAAC;CACjC,CAAC;AAEF,qBAAa,cAAe,SAAQ,UAAU;IAI1C,SAAS,CAAC,QAAQ,EAAE,QAAQ;IAC5B,SAAS,CAAC,gBAAgB,EAAE,wBAAwB;IAJtD,YACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACV,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,wBAAwB,EACpD,GAAG,CAAC,EAAE,MAAM,EAGb;IAED,UAAgB,qBAAqB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAc7E;IAED,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAE9C;IAEc,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,yBAGjE;IAEc,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAShE;IAED;;;;OAIG;IACH,UAAyB,qBAAqB,CAC5C,gBAAgB,EAAE,gBAAgB,EAClC,IAAI,EAAE,YAAY,EAClB,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,YAAY,EACpB,iBAAiB,CAAC,EAAE,OAAO,EAC3B,mBAAmB,CAAC,EAAE,OAAO,GAC5B,OAAO,CAAC,kBAAkB,CAAC,CA4B7B;YAEa,qBAAqB;IAoCnC,UAAgB,qBAAqB,CACnC,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,EAAE,EACV,IAAI,EAAE,EAAE,EACR,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,cAAc,CAAC,CAiCzB;IAEK,qBAAqB,CACzB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,EAAE,EACV,IAAI,EAAE,EAAE,EACR,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,cAAc,CAAC,CAIzB;IAED,oBAAoB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAGnG;IAED,mBAAmB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAErG;IAED,mBAAmB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAErG;IAED,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,QAE9B;IAED,IAAI,kBAEH;CACF"}
|
|
@@ -45,7 +45,7 @@ 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, _skipTxValidation, _skipFeeEnforcement
|
|
48
|
+
*/ async simulateViaEntrypoint(executionPayload, from, feeOptions, scopes, _skipTxValidation, _skipFeeEnforcement) {
|
|
49
49
|
const { account: fromAccount, instance, artifact } = await this.getFakeAccountDataFor(from);
|
|
50
50
|
const feeExecutionPayload = await feeOptions.walletFeePaymentMethod?.getExecutionPayload();
|
|
51
51
|
const executionOptions = {
|
|
@@ -75,25 +75,39 @@ export class EmbeddedWallet extends BaseWallet {
|
|
|
75
75
|
});
|
|
76
76
|
}
|
|
77
77
|
async getFakeAccountDataFor(address) {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
78
|
+
// While we have the convention of "Zero address means no auth", and also
|
|
79
|
+
// we don't have a way to trigger kernelless simulations without overrides,
|
|
80
|
+
// we need to explicitly handle the zero address case here by
|
|
81
|
+
// returning the actual multicall contract instead of trying to create a stub account for it.
|
|
82
|
+
if (!address.equals(AztecAddress.ZERO)) {
|
|
83
|
+
const originalAccount = await this.getAccountFromAddress(address);
|
|
84
|
+
if (originalAccount instanceof SignerlessAccount) {
|
|
85
|
+
throw new Error(`Cannot create fake account data for SignerlessAccount at address: ${address}`);
|
|
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
110
|
}
|
|
87
|
-
const stubAccount = await this.accountContracts.createStubAccount(originalAddress);
|
|
88
|
-
const stubArtifact = await this.accountContracts.getStubAccountContractArtifact();
|
|
89
|
-
const instance = await getContractInstanceFromInstantiationParams(stubArtifact, {
|
|
90
|
-
salt: Fr.random()
|
|
91
|
-
});
|
|
92
|
-
return {
|
|
93
|
-
account: stubAccount,
|
|
94
|
-
instance,
|
|
95
|
-
artifact: stubArtifact
|
|
96
|
-
};
|
|
97
111
|
}
|
|
98
112
|
async createAccountInternal(type, secret, salt, signingKey) {
|
|
99
113
|
let contract;
|
|
@@ -120,8 +134,11 @@ export class EmbeddedWallet extends BaseWallet {
|
|
|
120
134
|
}
|
|
121
135
|
const accountManager = await AccountManager.create(this, secret, contract, salt);
|
|
122
136
|
const instance = accountManager.getInstance();
|
|
123
|
-
const
|
|
124
|
-
|
|
137
|
+
const existingInstance = await this.pxe.getContractInstance(instance.address);
|
|
138
|
+
if (!existingInstance) {
|
|
139
|
+
const existingArtifact = await this.pxe.getContractArtifact(instance.currentContractClassId);
|
|
140
|
+
await this.registerContract(instance, !existingArtifact ? await accountManager.getAccountContract().getContractArtifact() : undefined, accountManager.getSecretKey());
|
|
141
|
+
}
|
|
125
142
|
return accountManager;
|
|
126
143
|
}
|
|
127
144
|
async createAndStoreAccount(alias, type, secret, salt, signingKey) {
|
|
@@ -1,9 +1,14 @@
|
|
|
1
|
+
import { type AztecNode } from '@aztec/aztec.js/node';
|
|
2
|
+
import { type Logger } from '@aztec/foundation/log';
|
|
3
|
+
import { type PXE } from '@aztec/pxe/client/lazy';
|
|
4
|
+
import type { AccountContractsProvider } from '../account-contract-providers/types.js';
|
|
1
5
|
import { EmbeddedWallet, type EmbeddedWalletOptions } from '../embedded_wallet.js';
|
|
6
|
+
import { WalletDB } from '../wallet_db.js';
|
|
2
7
|
export declare class BrowserEmbeddedWallet extends EmbeddedWallet {
|
|
3
|
-
static create(
|
|
8
|
+
static create<T extends BrowserEmbeddedWallet = BrowserEmbeddedWallet>(this: new (pxe: PXE, aztecNode: AztecNode, walletDB: WalletDB, accountContracts: AccountContractsProvider, log?: Logger) => T, nodeOrUrl: string | AztecNode, options?: EmbeddedWalletOptions): Promise<T>;
|
|
4
9
|
}
|
|
5
10
|
export { BrowserEmbeddedWallet as EmbeddedWallet };
|
|
6
11
|
export type { EmbeddedWalletOptions } from '../embedded_wallet.js';
|
|
7
12
|
export { WalletDB } from '../wallet_db.js';
|
|
8
13
|
export type { AccountType } from '../wallet_db.js';
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VtYmVkZGVkL2VudHJ5cG9pbnRzL2Jyb3dzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssU0FBUyxFQUF5QixNQUFNLHNCQUFzQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUVsRSxPQUFPLEVBQUUsS0FBSyxHQUFHLEVBQXNDLE1BQU0sd0JBQXdCLENBQUM7QUFJdEYsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN2RixPQUFPLEVBQUUsY0FBYyxFQUFFLEtBQUsscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFM0MscUJBQWEscUJBQXNCLFNBQVEsY0FBYztJQUN2RCxPQUFhLE1BQU0sQ0FBQyxDQUFDLFNBQVMscUJBQXFCLEdBQUcscUJBQXFCLEVBQ3pFLElBQUksRUFBRSxLQUNKLEdBQUcsRUFBRSxHQUFHLEVBQ1IsU0FBUyxFQUFFLFNBQVMsRUFDcEIsUUFBUSxFQUFFLFFBQVEsRUFDbEIsZ0JBQWdCLEVBQUUsd0JBQXdCLEVBQzFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sS0FDVCxDQUFDLEVBQ04sU0FBUyxFQUFFLE1BQU0sR0FBRyxTQUFTLEVBQzdCLE9BQU8sR0FBRSxxQkFBMEIsR0FDbEMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQTJDWjtDQUNGO0FBRUQsT0FBTyxFQUFFLHFCQUFxQixJQUFJLGNBQWMsRUFBRSxDQUFDO0FBQ25ELFlBQVksRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../src/embedded/entrypoints/browser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../src/embedded/entrypoints/browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAyB,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAElE,OAAO,EAAE,KAAK,GAAG,EAAsC,MAAM,wBAAwB,CAAC;AAItF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,qBAAa,qBAAsB,SAAQ,cAAc;IACvD,OAAa,MAAM,CAAC,CAAC,SAAS,qBAAqB,GAAG,qBAAqB,EACzE,IAAI,EAAE,KACJ,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,wBAAwB,EAC1C,GAAG,CAAC,EAAE,MAAM,KACT,CAAC,EACN,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,CAAC,CAAC,CA2CZ;CACF;AAED,OAAO,EAAE,qBAAqB,IAAI,cAAc,EAAE,CAAC;AACnD,YAAY,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -7,28 +7,35 @@ import { LazyAccountContractsProvider } from '../account-contract-providers/lazy
|
|
|
7
7
|
import { EmbeddedWallet } from '../embedded_wallet.js';
|
|
8
8
|
import { WalletDB } from '../wallet_db.js';
|
|
9
9
|
export class BrowserEmbeddedWallet extends EmbeddedWallet {
|
|
10
|
-
static async create(
|
|
10
|
+
static async create(nodeOrUrl, options = {}) {
|
|
11
11
|
const rootLogger = options.logger ?? createLogger('embedded-wallet');
|
|
12
|
-
const aztecNode = createAztecNodeClient(
|
|
12
|
+
const aztecNode = typeof nodeOrUrl === 'string' ? createAztecNodeClient(nodeOrUrl) : nodeOrUrl;
|
|
13
13
|
const l1Contracts = await aztecNode.getL1ContractAddresses();
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
const pxeConfig = Object.assign(getPXEConfig(), {
|
|
15
|
+
proverEnabled: options.pxeConfig?.proverEnabled ?? false,
|
|
16
|
+
dataDirectory: `pxe_data_${l1Contracts.rollupAddress}`,
|
|
17
|
+
...options.pxeConfig
|
|
18
|
+
});
|
|
19
|
+
if (options.ephemeral) {
|
|
20
|
+
delete pxeConfig.dataDirectory;
|
|
18
21
|
}
|
|
19
|
-
const
|
|
22
|
+
const pxeOptions = {
|
|
23
|
+
...options.pxeOptions,
|
|
20
24
|
loggers: {
|
|
21
25
|
store: rootLogger.createChild('pxe:data'),
|
|
22
26
|
pxe: rootLogger.createChild('pxe:service'),
|
|
23
|
-
prover: rootLogger.createChild('pxe:prover')
|
|
27
|
+
prover: rootLogger.createChild('pxe:prover'),
|
|
28
|
+
...options.pxeOptions?.loggers
|
|
24
29
|
}
|
|
25
|
-
}
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
+
};
|
|
31
|
+
const pxe = await createPXE(aztecNode, pxeConfig, pxeOptions);
|
|
32
|
+
const walletDBStore = options.ephemeral ? await openTmpStore(true) : await createStore('wallet_data', {
|
|
33
|
+
dataDirectory: `wallet_data_${l1Contracts.rollupAddress}`,
|
|
34
|
+
dataStoreMapSizeKb: pxeConfig.dataStoreMapSizeKb,
|
|
35
|
+
l1Contracts
|
|
36
|
+
}, 1, rootLogger.createChild('wallet:data'));
|
|
30
37
|
const walletDB = WalletDB.init(walletDBStore, rootLogger.createChild('wallet:db').info);
|
|
31
|
-
return new
|
|
38
|
+
return new this(pxe, aztecNode, walletDB, new LazyAccountContractsProvider(), rootLogger);
|
|
32
39
|
}
|
|
33
40
|
}
|
|
34
41
|
export { BrowserEmbeddedWallet as EmbeddedWallet };
|
|
@@ -1,18 +1,14 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import { type
|
|
1
|
+
import { type Logger } from '@aztec/foundation/log';
|
|
2
|
+
import { type PXE } from '@aztec/pxe/server';
|
|
3
3
|
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
4
|
+
import type { AccountContractsProvider } from '../account-contract-providers/types.js';
|
|
4
5
|
import { EmbeddedWallet, type EmbeddedWalletOptions } from '../embedded_wallet.js';
|
|
5
|
-
|
|
6
|
-
/** Override PXE configuration. */
|
|
7
|
-
pxeConfig?: Partial<PXEConfig>;
|
|
8
|
-
/** Advanced PXE creation options (custom store, prover, simulator). */
|
|
9
|
-
pxeOptions?: PXECreationOptions;
|
|
10
|
-
};
|
|
6
|
+
import { WalletDB } from '../wallet_db.js';
|
|
11
7
|
export declare class NodeEmbeddedWallet extends EmbeddedWallet {
|
|
12
|
-
static create(nodeOrUrl: string | AztecNode, options?:
|
|
8
|
+
static create<T extends NodeEmbeddedWallet = NodeEmbeddedWallet>(this: new (pxe: PXE, aztecNode: AztecNode, walletDB: WalletDB, accountContracts: AccountContractsProvider, log?: Logger) => T, nodeOrUrl: string | AztecNode, options?: EmbeddedWalletOptions): Promise<T>;
|
|
13
9
|
}
|
|
14
10
|
export { NodeEmbeddedWallet as EmbeddedWallet };
|
|
15
11
|
export type { EmbeddedWalletOptions } from '../embedded_wallet.js';
|
|
16
12
|
export { WalletDB } from '../wallet_db.js';
|
|
17
13
|
export type { AccountType } from '../wallet_db.js';
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VtYmVkZGVkL2VudHJ5cG9pbnRzL25vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBR2xFLE9BQU8sRUFBRSxLQUFLLEdBQUcsRUFBc0MsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRixPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUdqRSxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxjQUFjLEVBQUUsS0FBSyxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25GLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUzQyxxQkFBYSxrQkFBbUIsU0FBUSxjQUFjO0lBQ3BELE9BQWEsTUFBTSxDQUFDLENBQUMsU0FBUyxrQkFBa0IsR0FBRyxrQkFBa0IsRUFDbkUsSUFBSSxFQUFFLEtBQ0osR0FBRyxFQUFFLEdBQUcsRUFDUixTQUFTLEVBQUUsU0FBUyxFQUNwQixRQUFRLEVBQUUsUUFBUSxFQUNsQixnQkFBZ0IsRUFBRSx3QkFBd0IsRUFDMUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxLQUNULENBQUMsRUFDTixTQUFTLEVBQUUsTUFBTSxHQUFHLFNBQVMsRUFDN0IsT0FBTyxHQUFFLHFCQUEwQixHQUNsQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBaURaO0NBQ0Y7QUFFRCxPQUFPLEVBQUUsa0JBQWtCLElBQUksY0FBYyxFQUFFLENBQUM7QUFDaEQsWUFBWSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/embedded/entrypoints/node.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/embedded/entrypoints/node.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAGlE,OAAO,EAAE,KAAK,GAAG,EAAsC,MAAM,mBAAmB,CAAC;AACjF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAGjE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,qBAAa,kBAAmB,SAAQ,cAAc;IACpD,OAAa,MAAM,CAAC,CAAC,SAAS,kBAAkB,GAAG,kBAAkB,EACnE,IAAI,EAAE,KACJ,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,wBAAwB,EAC1C,GAAG,CAAC,EAAE,MAAM,KACT,CAAC,EACN,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,CAAC,CAAC,CAiDZ;CACF;AAED,OAAO,EAAE,kBAAkB,IAAI,cAAc,EAAE,CAAC;AAChD,YAAY,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createAztecNodeClient } from '@aztec/aztec.js/node';
|
|
2
2
|
import { createLogger } from '@aztec/foundation/log';
|
|
3
|
-
import { createStore
|
|
3
|
+
import { createStore, openTmpStore } from '@aztec/kv-store/lmdb-v2';
|
|
4
4
|
import { getPXEConfig } from '@aztec/pxe/config';
|
|
5
5
|
import { createPXE } from '@aztec/pxe/server';
|
|
6
6
|
import { BundleAccountContractsProvider } from '../account-contract-providers/bundle.js';
|
|
@@ -10,8 +10,10 @@ export class NodeEmbeddedWallet extends EmbeddedWallet {
|
|
|
10
10
|
static async create(nodeOrUrl, options = {}) {
|
|
11
11
|
const rootLogger = options.logger ?? createLogger('embedded-wallet');
|
|
12
12
|
const aztecNode = typeof nodeOrUrl === 'string' ? createAztecNodeClient(nodeOrUrl) : nodeOrUrl;
|
|
13
|
+
const l1Contracts = await aztecNode.getL1ContractAddresses();
|
|
13
14
|
const pxeConfig = Object.assign(getPXEConfig(), {
|
|
14
15
|
proverEnabled: options.pxeConfig?.proverEnabled ?? false,
|
|
16
|
+
dataDirectory: `pxe_data_${l1Contracts.rollupAddress}`,
|
|
15
17
|
...options.pxeConfig
|
|
16
18
|
});
|
|
17
19
|
if (options.ephemeral) {
|
|
@@ -27,17 +29,13 @@ export class NodeEmbeddedWallet extends EmbeddedWallet {
|
|
|
27
29
|
}
|
|
28
30
|
};
|
|
29
31
|
const pxe = await createPXE(aztecNode, pxeConfig, pxeOptions);
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
const walletDBStore = options.ephemeral ? await openTmpStore('wallet_data', true, undefined, undefined, rootLogger.createChild('wallet:data').getBindings()) : await createWalletStore('wallet_data', 1, {
|
|
33
|
-
dataDirectory: pxeConfig.dataDirectory,
|
|
32
|
+
const walletDBStore = options.ephemeral ? await openTmpStore(`wallet_data_${l1Contracts.rollupAddress}`, true, undefined, undefined, rootLogger.createChild('wallet:data').getBindings()) : await createStore('wallet_data', 1, {
|
|
33
|
+
dataDirectory: `wallet_data_${l1Contracts.rollupAddress}`,
|
|
34
34
|
dataStoreMapSizeKb: pxeConfig.dataStoreMapSizeKb,
|
|
35
|
-
l1Contracts
|
|
36
|
-
rollupAddress
|
|
37
|
-
}
|
|
35
|
+
l1Contracts
|
|
38
36
|
}, rootLogger.createChild('wallet:data').getBindings());
|
|
39
37
|
const walletDB = WalletDB.init(walletDBStore, rootLogger.createChild('wallet:db').info);
|
|
40
|
-
return new
|
|
38
|
+
return new this(pxe, aztecNode, walletDB, new BundleAccountContractsProvider(), rootLogger);
|
|
41
39
|
}
|
|
42
40
|
}
|
|
43
41
|
export { NodeEmbeddedWallet as EmbeddedWallet };
|
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": "0.0.1-commit.
|
|
4
|
+
"version": "0.0.1-commit.ec5f612",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
7
7
|
"./embedded": {
|
|
@@ -27,14 +27,15 @@
|
|
|
27
27
|
"../package.common.json"
|
|
28
28
|
],
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@aztec/accounts": "0.0.1-commit.
|
|
31
|
-
"@aztec/aztec.js": "0.0.1-commit.
|
|
32
|
-
"@aztec/entrypoints": "0.0.1-commit.
|
|
33
|
-
"@aztec/foundation": "0.0.1-commit.
|
|
34
|
-
"@aztec/kv-store": "0.0.1-commit.
|
|
35
|
-
"@aztec/
|
|
36
|
-
"@aztec/
|
|
37
|
-
"@aztec/
|
|
30
|
+
"@aztec/accounts": "0.0.1-commit.ec5f612",
|
|
31
|
+
"@aztec/aztec.js": "0.0.1-commit.ec5f612",
|
|
32
|
+
"@aztec/entrypoints": "0.0.1-commit.ec5f612",
|
|
33
|
+
"@aztec/foundation": "0.0.1-commit.ec5f612",
|
|
34
|
+
"@aztec/kv-store": "0.0.1-commit.ec5f612",
|
|
35
|
+
"@aztec/protocol-contracts": "0.0.1-commit.ec5f612",
|
|
36
|
+
"@aztec/pxe": "0.0.1-commit.ec5f612",
|
|
37
|
+
"@aztec/stdlib": "0.0.1-commit.ec5f612",
|
|
38
|
+
"@aztec/wallet-sdk": "0.0.1-commit.ec5f612"
|
|
38
39
|
},
|
|
39
40
|
"devDependencies": {
|
|
40
41
|
"@jest/globals": "^30.0.0",
|
|
@@ -43,6 +44,14 @@
|
|
|
43
44
|
"ts-node": "^10.9.1",
|
|
44
45
|
"typescript": "^5.3.3"
|
|
45
46
|
},
|
|
47
|
+
"typedocOptions": {
|
|
48
|
+
"entryPoints": [
|
|
49
|
+
"./src/embedded/entrypoints/node.ts",
|
|
50
|
+
"./src/testing.ts"
|
|
51
|
+
],
|
|
52
|
+
"name": "Wallets",
|
|
53
|
+
"tsconfig": "./tsconfig.json"
|
|
54
|
+
},
|
|
46
55
|
"files": [
|
|
47
56
|
"dest",
|
|
48
57
|
"src",
|
|
@@ -3,8 +3,9 @@ import { SchnorrAccountContract } from '@aztec/accounts/schnorr';
|
|
|
3
3
|
import { StubAccountContractArtifact, createStubAccount } from '@aztec/accounts/stub';
|
|
4
4
|
import type { Account, AccountContract } from '@aztec/aztec.js/account';
|
|
5
5
|
import type { Fq } from '@aztec/foundation/curves/bn254';
|
|
6
|
+
import { getCanonicalMultiCallEntrypoint } from '@aztec/protocol-contracts/multi-call-entrypoint';
|
|
6
7
|
import type { ContractArtifact } from '@aztec/stdlib/abi';
|
|
7
|
-
import type { CompleteAddress } from '@aztec/stdlib/contract';
|
|
8
|
+
import type { CompleteAddress, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
8
9
|
|
|
9
10
|
import type { AccountContractsProvider } from './types.js';
|
|
10
11
|
|
|
@@ -32,4 +33,8 @@ export class BundleAccountContractsProvider implements AccountContractsProvider
|
|
|
32
33
|
createStubAccount(address: CompleteAddress): Promise<Account> {
|
|
33
34
|
return Promise.resolve(createStubAccount(address));
|
|
34
35
|
}
|
|
36
|
+
|
|
37
|
+
getMulticallContract(): Promise<{ instance: ContractInstanceWithAddress; artifact: ContractArtifact }> {
|
|
38
|
+
return getCanonicalMultiCallEntrypoint();
|
|
39
|
+
}
|
|
35
40
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { Account, AccountContract } from '@aztec/aztec.js/account';
|
|
2
2
|
import type { Fq } from '@aztec/foundation/curves/bn254';
|
|
3
|
+
import { getCanonicalMultiCallEntrypoint } from '@aztec/protocol-contracts/multi-call-entrypoint/lazy';
|
|
3
4
|
import type { ContractArtifact } from '@aztec/stdlib/abi';
|
|
4
|
-
import type { CompleteAddress } from '@aztec/stdlib/contract';
|
|
5
|
+
import type { CompleteAddress, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
5
6
|
|
|
6
7
|
import type { AccountContractsProvider } from './types.js';
|
|
7
8
|
|
|
@@ -34,4 +35,8 @@ export class LazyAccountContractsProvider implements AccountContractsProvider {
|
|
|
34
35
|
const { createStubAccount } = await import('@aztec/accounts/stub/lazy');
|
|
35
36
|
return createStubAccount(address);
|
|
36
37
|
}
|
|
38
|
+
|
|
39
|
+
getMulticallContract(): Promise<{ instance: ContractInstanceWithAddress; artifact: ContractArtifact }> {
|
|
40
|
+
return getCanonicalMultiCallEntrypoint();
|
|
41
|
+
}
|
|
37
42
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Account, AccountContract } from '@aztec/aztec.js/account';
|
|
2
2
|
import type { Fq } from '@aztec/foundation/curves/bn254';
|
|
3
3
|
import type { ContractArtifact } from '@aztec/stdlib/abi';
|
|
4
|
-
import type { CompleteAddress } from '@aztec/stdlib/contract';
|
|
4
|
+
import type { CompleteAddress, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Provides account contract implementations and stub accounts for the EmbeddedWallet.
|
|
@@ -14,5 +14,6 @@ export interface AccountContractsProvider {
|
|
|
14
14
|
getEcdsaRAccountContract(signingKey: Buffer): Promise<AccountContract>;
|
|
15
15
|
getEcdsaKAccountContract(signingKey: Buffer): Promise<AccountContract>;
|
|
16
16
|
getStubAccountContractArtifact(): Promise<ContractArtifact>;
|
|
17
|
+
getMulticallContract(): Promise<{ instance: ContractInstanceWithAddress; artifact: ContractArtifact }>;
|
|
17
18
|
createStubAccount(address: CompleteAddress): Promise<Account>;
|
|
18
19
|
}
|
|
@@ -4,6 +4,7 @@ import { AccountManager } from '@aztec/aztec.js/wallet';
|
|
|
4
4
|
import type { DefaultAccountEntrypointOptions } from '@aztec/entrypoints/account';
|
|
5
5
|
import { Fq, Fr } from '@aztec/foundation/curves/bn254';
|
|
6
6
|
import type { Logger } from '@aztec/foundation/log';
|
|
7
|
+
import type { AccessScopes, PXEConfig, PXECreationOptions } from '@aztec/pxe/client/lazy';
|
|
7
8
|
import type { PXE } from '@aztec/pxe/server';
|
|
8
9
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
9
10
|
import { getContractInstanceFromInstantiationParams } from '@aztec/stdlib/contract';
|
|
@@ -20,6 +21,10 @@ export type EmbeddedWalletOptions = {
|
|
|
20
21
|
logger?: Logger;
|
|
21
22
|
/** Use ephemeral (in-memory) stores. Data will not persist across sessions. */
|
|
22
23
|
ephemeral?: boolean;
|
|
24
|
+
/** Override PXE configuration. */
|
|
25
|
+
pxeConfig?: Partial<PXEConfig>;
|
|
26
|
+
/** Advanced PXE creation options (custom store, prover, simulator). */
|
|
27
|
+
pxeOptions?: PXECreationOptions;
|
|
23
28
|
};
|
|
24
29
|
|
|
25
30
|
export class EmbeddedWallet extends BaseWallet {
|
|
@@ -78,9 +83,9 @@ export class EmbeddedWallet extends BaseWallet {
|
|
|
78
83
|
executionPayload: ExecutionPayload,
|
|
79
84
|
from: AztecAddress,
|
|
80
85
|
feeOptions: FeeOptions,
|
|
86
|
+
scopes: AccessScopes,
|
|
81
87
|
_skipTxValidation?: boolean,
|
|
82
88
|
_skipFeeEnforcement?: boolean,
|
|
83
|
-
scopes?: AztecAddress[],
|
|
84
89
|
): Promise<TxSimulationResult> {
|
|
85
90
|
const { account: fromAccount, instance, artifact } = await this.getFakeAccountDataFor(from);
|
|
86
91
|
|
|
@@ -112,25 +117,39 @@ export class EmbeddedWallet extends BaseWallet {
|
|
|
112
117
|
}
|
|
113
118
|
|
|
114
119
|
private async getFakeAccountDataFor(address: AztecAddress) {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
120
|
+
// While we have the convention of "Zero address means no auth", and also
|
|
121
|
+
// we don't have a way to trigger kernelless simulations without overrides,
|
|
122
|
+
// we need to explicitly handle the zero address case here by
|
|
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
|
+
};
|
|
123
152
|
}
|
|
124
|
-
const stubAccount = await this.accountContracts.createStubAccount(originalAddress);
|
|
125
|
-
const stubArtifact = await this.accountContracts.getStubAccountContractArtifact();
|
|
126
|
-
const instance = await getContractInstanceFromInstantiationParams(stubArtifact, {
|
|
127
|
-
salt: Fr.random(),
|
|
128
|
-
});
|
|
129
|
-
return {
|
|
130
|
-
account: stubAccount,
|
|
131
|
-
instance,
|
|
132
|
-
artifact: stubArtifact,
|
|
133
|
-
};
|
|
134
153
|
}
|
|
135
154
|
|
|
136
155
|
protected async createAccountInternal(
|
|
@@ -161,10 +180,15 @@ export class EmbeddedWallet extends BaseWallet {
|
|
|
161
180
|
const accountManager = await AccountManager.create(this, secret, contract, salt);
|
|
162
181
|
|
|
163
182
|
const instance = accountManager.getInstance();
|
|
164
|
-
const
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
183
|
+
const existingInstance = await this.pxe.getContractInstance(instance.address);
|
|
184
|
+
if (!existingInstance) {
|
|
185
|
+
const existingArtifact = await this.pxe.getContractArtifact(instance.currentContractClassId);
|
|
186
|
+
await this.registerContract(
|
|
187
|
+
instance,
|
|
188
|
+
!existingArtifact ? await accountManager.getAccountContract().getContractArtifact() : undefined,
|
|
189
|
+
accountManager.getSecretKey(),
|
|
190
|
+
);
|
|
191
|
+
}
|
|
168
192
|
return accountManager;
|
|
169
193
|
}
|
|
170
194
|
|
|
@@ -1,46 +1,68 @@
|
|
|
1
|
-
import { createAztecNodeClient } from '@aztec/aztec.js/node';
|
|
2
|
-
import { createLogger } from '@aztec/foundation/log';
|
|
1
|
+
import { type AztecNode, createAztecNodeClient } from '@aztec/aztec.js/node';
|
|
2
|
+
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
3
3
|
import { createStore, openTmpStore } from '@aztec/kv-store/indexeddb';
|
|
4
|
-
import { createPXE } from '@aztec/pxe/client/lazy';
|
|
5
|
-
import { getPXEConfig } from '@aztec/pxe/config';
|
|
4
|
+
import { type PXE, type PXECreationOptions, createPXE } from '@aztec/pxe/client/lazy';
|
|
5
|
+
import { type PXEConfig, getPXEConfig } from '@aztec/pxe/config';
|
|
6
6
|
|
|
7
7
|
import { LazyAccountContractsProvider } from '../account-contract-providers/lazy.js';
|
|
8
|
+
import type { AccountContractsProvider } from '../account-contract-providers/types.js';
|
|
8
9
|
import { EmbeddedWallet, type EmbeddedWalletOptions } from '../embedded_wallet.js';
|
|
9
10
|
import { WalletDB } from '../wallet_db.js';
|
|
10
11
|
|
|
11
12
|
export class BrowserEmbeddedWallet extends EmbeddedWallet {
|
|
12
|
-
static async create
|
|
13
|
+
static async create<T extends BrowserEmbeddedWallet = BrowserEmbeddedWallet>(
|
|
14
|
+
this: new (
|
|
15
|
+
pxe: PXE,
|
|
16
|
+
aztecNode: AztecNode,
|
|
17
|
+
walletDB: WalletDB,
|
|
18
|
+
accountContracts: AccountContractsProvider,
|
|
19
|
+
log?: Logger,
|
|
20
|
+
) => T,
|
|
21
|
+
nodeOrUrl: string | AztecNode,
|
|
22
|
+
options: EmbeddedWalletOptions = {},
|
|
23
|
+
): Promise<T> {
|
|
13
24
|
const rootLogger = options.logger ?? createLogger('embedded-wallet');
|
|
14
25
|
|
|
15
|
-
const aztecNode = createAztecNodeClient(
|
|
16
|
-
|
|
26
|
+
const aztecNode = typeof nodeOrUrl === 'string' ? createAztecNodeClient(nodeOrUrl) : nodeOrUrl;
|
|
17
27
|
const l1Contracts = await aztecNode.getL1ContractAddresses();
|
|
18
|
-
const rollupAddress = l1Contracts.rollupAddress;
|
|
19
28
|
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
29
|
+
const pxeConfig: PXEConfig = Object.assign(getPXEConfig(), {
|
|
30
|
+
proverEnabled: options.pxeConfig?.proverEnabled ?? false,
|
|
31
|
+
dataDirectory: `pxe_data_${l1Contracts.rollupAddress}`,
|
|
32
|
+
...options.pxeConfig,
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
if (options.ephemeral) {
|
|
36
|
+
delete pxeConfig.dataDirectory;
|
|
23
37
|
}
|
|
24
38
|
|
|
25
|
-
const
|
|
39
|
+
const pxeOptions: PXECreationOptions = {
|
|
40
|
+
...options.pxeOptions,
|
|
26
41
|
loggers: {
|
|
27
42
|
store: rootLogger.createChild('pxe:data'),
|
|
28
43
|
pxe: rootLogger.createChild('pxe:service'),
|
|
29
44
|
prover: rootLogger.createChild('pxe:prover'),
|
|
45
|
+
...options.pxeOptions?.loggers,
|
|
30
46
|
},
|
|
31
|
-
}
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const pxe = await createPXE(aztecNode, pxeConfig, pxeOptions);
|
|
32
50
|
|
|
33
51
|
const walletDBStore = options.ephemeral
|
|
34
52
|
? await openTmpStore(true)
|
|
35
53
|
: await createStore(
|
|
36
|
-
|
|
37
|
-
{
|
|
38
|
-
|
|
54
|
+
'wallet_data',
|
|
55
|
+
{
|
|
56
|
+
dataDirectory: `wallet_data_${l1Contracts.rollupAddress}`,
|
|
57
|
+
dataStoreMapSizeKb: pxeConfig.dataStoreMapSizeKb,
|
|
58
|
+
l1Contracts,
|
|
59
|
+
},
|
|
60
|
+
1,
|
|
39
61
|
rootLogger.createChild('wallet:data'),
|
|
40
62
|
);
|
|
41
63
|
const walletDB = WalletDB.init(walletDBStore, rootLogger.createChild('wallet:db').info);
|
|
42
64
|
|
|
43
|
-
return new
|
|
65
|
+
return new this(pxe, aztecNode, walletDB, new LazyAccountContractsProvider(), rootLogger) as T;
|
|
44
66
|
}
|
|
45
67
|
}
|
|
46
68
|
|
|
@@ -1,33 +1,35 @@
|
|
|
1
1
|
import { createAztecNodeClient } from '@aztec/aztec.js/node';
|
|
2
|
-
import { createLogger } from '@aztec/foundation/log';
|
|
3
|
-
import { createStore
|
|
4
|
-
import type
|
|
5
|
-
import {
|
|
6
|
-
import { type PXECreationOptions, createPXE } from '@aztec/pxe/server';
|
|
2
|
+
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
3
|
+
import { createStore, openTmpStore } from '@aztec/kv-store/lmdb-v2';
|
|
4
|
+
import { type PXEConfig, getPXEConfig } from '@aztec/pxe/config';
|
|
5
|
+
import { type PXE, type PXECreationOptions, createPXE } from '@aztec/pxe/server';
|
|
7
6
|
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
8
7
|
|
|
9
8
|
import { BundleAccountContractsProvider } from '../account-contract-providers/bundle.js';
|
|
9
|
+
import type { AccountContractsProvider } from '../account-contract-providers/types.js';
|
|
10
10
|
import { EmbeddedWallet, type EmbeddedWalletOptions } from '../embedded_wallet.js';
|
|
11
11
|
import { WalletDB } from '../wallet_db.js';
|
|
12
12
|
|
|
13
|
-
export type NodeEmbeddedWalletOptions = EmbeddedWalletOptions & {
|
|
14
|
-
/** Override PXE configuration. */
|
|
15
|
-
pxeConfig?: Partial<PXEConfig>;
|
|
16
|
-
/** Advanced PXE creation options (custom store, prover, simulator). */
|
|
17
|
-
pxeOptions?: PXECreationOptions;
|
|
18
|
-
};
|
|
19
|
-
|
|
20
13
|
export class NodeEmbeddedWallet extends EmbeddedWallet {
|
|
21
|
-
static async create(
|
|
14
|
+
static async create<T extends NodeEmbeddedWallet = NodeEmbeddedWallet>(
|
|
15
|
+
this: new (
|
|
16
|
+
pxe: PXE,
|
|
17
|
+
aztecNode: AztecNode,
|
|
18
|
+
walletDB: WalletDB,
|
|
19
|
+
accountContracts: AccountContractsProvider,
|
|
20
|
+
log?: Logger,
|
|
21
|
+
) => T,
|
|
22
22
|
nodeOrUrl: string | AztecNode,
|
|
23
|
-
options:
|
|
24
|
-
): Promise<
|
|
23
|
+
options: EmbeddedWalletOptions = {},
|
|
24
|
+
): Promise<T> {
|
|
25
25
|
const rootLogger = options.logger ?? createLogger('embedded-wallet');
|
|
26
26
|
|
|
27
27
|
const aztecNode = typeof nodeOrUrl === 'string' ? createAztecNodeClient(nodeOrUrl) : nodeOrUrl;
|
|
28
|
+
const l1Contracts = await aztecNode.getL1ContractAddresses();
|
|
28
29
|
|
|
29
|
-
const pxeConfig = Object.assign(getPXEConfig(), {
|
|
30
|
+
const pxeConfig: PXEConfig = Object.assign(getPXEConfig(), {
|
|
30
31
|
proverEnabled: options.pxeConfig?.proverEnabled ?? false,
|
|
32
|
+
dataDirectory: `pxe_data_${l1Contracts.rollupAddress}`,
|
|
31
33
|
...options.pxeConfig,
|
|
32
34
|
});
|
|
33
35
|
|
|
@@ -47,30 +49,27 @@ export class NodeEmbeddedWallet extends EmbeddedWallet {
|
|
|
47
49
|
|
|
48
50
|
const pxe = await createPXE(aztecNode, pxeConfig, pxeOptions);
|
|
49
51
|
|
|
50
|
-
const l1Contracts = await aztecNode.getL1ContractAddresses();
|
|
51
|
-
const rollupAddress = l1Contracts.rollupAddress;
|
|
52
|
-
|
|
53
52
|
const walletDBStore = options.ephemeral
|
|
54
53
|
? await openTmpStore(
|
|
55
|
-
|
|
54
|
+
`wallet_data_${l1Contracts.rollupAddress}`,
|
|
56
55
|
true,
|
|
57
56
|
undefined,
|
|
58
57
|
undefined,
|
|
59
58
|
rootLogger.createChild('wallet:data').getBindings(),
|
|
60
59
|
)
|
|
61
|
-
: await
|
|
60
|
+
: await createStore(
|
|
62
61
|
'wallet_data',
|
|
63
62
|
1,
|
|
64
63
|
{
|
|
65
|
-
dataDirectory:
|
|
64
|
+
dataDirectory: `wallet_data_${l1Contracts.rollupAddress}`,
|
|
66
65
|
dataStoreMapSizeKb: pxeConfig.dataStoreMapSizeKb,
|
|
67
|
-
l1Contracts
|
|
66
|
+
l1Contracts,
|
|
68
67
|
},
|
|
69
68
|
rootLogger.createChild('wallet:data').getBindings(),
|
|
70
69
|
);
|
|
71
70
|
const walletDB = WalletDB.init(walletDBStore, rootLogger.createChild('wallet:db').info);
|
|
72
71
|
|
|
73
|
-
return new
|
|
72
|
+
return new this(pxe, aztecNode, walletDB, new BundleAccountContractsProvider(), rootLogger) as T;
|
|
74
73
|
}
|
|
75
74
|
}
|
|
76
75
|
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { EmbeddedWallet } from './embedded_wallet.js';
|
|
2
|
-
export declare class BrowserEmbeddedWallet extends EmbeddedWallet {
|
|
3
|
-
static create(nodeUrl: string): Promise<BrowserEmbeddedWallet>;
|
|
4
|
-
}
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1iZWRkZWRfd2FsbGV0X2Jyb3dzZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbWJlZGRlZC9lbWJlZGRlZF93YWxsZXRfYnJvd3Nlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHdEQscUJBQWEscUJBQXNCLFNBQVEsY0FBYztJQUN2RCxPQUFhLE1BQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQTJCbkU7Q0FDRiJ9
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"embedded_wallet_browser.d.ts","sourceRoot":"","sources":["../../src/embedded/embedded_wallet_browser.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,qBAAa,qBAAsB,SAAQ,cAAc;IACvD,OAAa,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA2BnE;CACF"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { createAztecNodeClient } from '@aztec/aztec.js/node';
|
|
2
|
-
import { createLogger } from '@aztec/foundation/log';
|
|
3
|
-
import { createStore } from '@aztec/kv-store/indexeddb';
|
|
4
|
-
import { createPXE } from '@aztec/pxe/client/lazy';
|
|
5
|
-
import { getPXEConfig } from '@aztec/pxe/config';
|
|
6
|
-
import { LazyAccountContractsProvider } from './account-contract-providers/lazy.js';
|
|
7
|
-
import { EmbeddedWallet } from './embedded_wallet.js';
|
|
8
|
-
import { WalletDB } from './wallet_db.js';
|
|
9
|
-
export class BrowserEmbeddedWallet extends EmbeddedWallet {
|
|
10
|
-
static async create(nodeUrl) {
|
|
11
|
-
const aztecNode = createAztecNodeClient(nodeUrl);
|
|
12
|
-
const l1Contracts = await aztecNode.getL1ContractAddresses();
|
|
13
|
-
const rollupAddress = l1Contracts.rollupAddress;
|
|
14
|
-
const config = getPXEConfig();
|
|
15
|
-
config.dataDirectory = `pxe-${rollupAddress}`;
|
|
16
|
-
const pxe = await createPXE(aztecNode, config, {
|
|
17
|
-
loggers: {
|
|
18
|
-
store: createLogger('pxe:data:idb'),
|
|
19
|
-
pxe: createLogger('pxe:service'),
|
|
20
|
-
prover: createLogger('bb:wasm:lazy')
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
const logger = createLogger('embedded-wallet:browser');
|
|
24
|
-
const walletDBStore = await createStore(`wallet-${rollupAddress}`, {
|
|
25
|
-
dataDirectory: 'wallet',
|
|
26
|
-
dataStoreMapSizeKb: 2e10
|
|
27
|
-
}, undefined, createLogger('wallet:data:idb'));
|
|
28
|
-
const walletDB = WalletDB.init(walletDBStore, logger.info);
|
|
29
|
-
return new BrowserEmbeddedWallet(pxe, aztecNode, walletDB, new LazyAccountContractsProvider());
|
|
30
|
-
}
|
|
31
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { createAztecNodeClient } from '@aztec/aztec.js/node';
|
|
2
|
-
import { createLogger } from '@aztec/foundation/log';
|
|
3
|
-
import { createStore } from '@aztec/kv-store/indexeddb';
|
|
4
|
-
import { createPXE } from '@aztec/pxe/client/lazy';
|
|
5
|
-
import { getPXEConfig } from '@aztec/pxe/config';
|
|
6
|
-
|
|
7
|
-
import { LazyAccountContractsProvider } from './account-contract-providers/lazy.js';
|
|
8
|
-
import { EmbeddedWallet } from './embedded_wallet.js';
|
|
9
|
-
import { WalletDB } from './wallet_db.js';
|
|
10
|
-
|
|
11
|
-
export class BrowserEmbeddedWallet extends EmbeddedWallet {
|
|
12
|
-
static async create(nodeUrl: string): Promise<BrowserEmbeddedWallet> {
|
|
13
|
-
const aztecNode = createAztecNodeClient(nodeUrl);
|
|
14
|
-
|
|
15
|
-
const l1Contracts = await aztecNode.getL1ContractAddresses();
|
|
16
|
-
const rollupAddress = l1Contracts.rollupAddress;
|
|
17
|
-
|
|
18
|
-
const config = getPXEConfig();
|
|
19
|
-
config.dataDirectory = `pxe-${rollupAddress}`;
|
|
20
|
-
|
|
21
|
-
const pxe = await createPXE(aztecNode, config, {
|
|
22
|
-
loggers: {
|
|
23
|
-
store: createLogger('pxe:data:idb'),
|
|
24
|
-
pxe: createLogger('pxe:service'),
|
|
25
|
-
prover: createLogger('bb:wasm:lazy'),
|
|
26
|
-
},
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
const logger = createLogger('embedded-wallet:browser');
|
|
30
|
-
const walletDBStore = await createStore(
|
|
31
|
-
`wallet-${rollupAddress}`,
|
|
32
|
-
{ dataDirectory: 'wallet', dataStoreMapSizeKb: 2e10 },
|
|
33
|
-
undefined,
|
|
34
|
-
createLogger('wallet:data:idb'),
|
|
35
|
-
);
|
|
36
|
-
const walletDB = WalletDB.init(walletDBStore, logger.info);
|
|
37
|
-
|
|
38
|
-
return new BrowserEmbeddedWallet(pxe, aztecNode, walletDB, new LazyAccountContractsProvider());
|
|
39
|
-
}
|
|
40
|
-
}
|