@aztec/wallets 0.0.1-commit.0c875d939 → 0.0.1-commit.125b3452
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 +18 -5
- package/dest/embedded/embedded_wallet.d.ts.map +1 -1
- package/dest/embedded/embedded_wallet.js +84 -16
- 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 +19 -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 +111 -19
- 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"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { type Account } from '@aztec/aztec.js/account';
|
|
2
|
-
import type
|
|
2
|
+
import { type InteractionWaitOptions, type SendReturn } from '@aztec/aztec.js/contracts';
|
|
3
|
+
import type { Aliased, SendOptions } from '@aztec/aztec.js/wallet';
|
|
3
4
|
import { AccountManager } from '@aztec/aztec.js/wallet';
|
|
4
5
|
import { Fq, Fr } from '@aztec/foundation/curves/bn254';
|
|
5
6
|
import type { Logger } from '@aztec/foundation/log';
|
|
6
|
-
import type {
|
|
7
|
+
import type { 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 type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
10
11
|
import { ExecutionPayload, type TxSimulationResult } from '@aztec/stdlib/tx';
|
|
11
|
-
import { BaseWallet, type
|
|
12
|
+
import { BaseWallet, type SimulateViaEntrypointOptions } from '@aztec/wallet-sdk/base-wallet';
|
|
12
13
|
import type { AccountContractsProvider } from './account-contract-providers/types.js';
|
|
13
14
|
import { type AccountType, WalletDB } from './wallet_db.js';
|
|
14
15
|
export type EmbeddedWalletOptions = {
|
|
@@ -16,21 +17,32 @@ export type EmbeddedWalletOptions = {
|
|
|
16
17
|
logger?: Logger;
|
|
17
18
|
/** Use ephemeral (in-memory) stores. Data will not persist across sessions. */
|
|
18
19
|
ephemeral?: boolean;
|
|
20
|
+
/** Override PXE configuration. */
|
|
21
|
+
pxeConfig?: Partial<PXEConfig>;
|
|
22
|
+
/** Advanced PXE creation options (custom store, prover, simulator). */
|
|
23
|
+
pxeOptions?: PXECreationOptions;
|
|
19
24
|
};
|
|
20
25
|
export declare class EmbeddedWallet extends BaseWallet {
|
|
21
26
|
protected walletDB: WalletDB;
|
|
22
27
|
protected accountContracts: AccountContractsProvider;
|
|
28
|
+
protected estimatedGasPadding: number;
|
|
23
29
|
constructor(pxe: PXE, aztecNode: AztecNode, walletDB: WalletDB, accountContracts: AccountContractsProvider, log?: Logger);
|
|
24
30
|
protected getAccountFromAddress(address: AztecAddress): Promise<Account>;
|
|
25
31
|
getAccounts(): Promise<Aliased<AztecAddress>[]>;
|
|
26
32
|
registerSender(address: AztecAddress, alias: string): Promise<AztecAddress>;
|
|
27
33
|
getAddressBook(): Promise<Aliased<AztecAddress>[]>;
|
|
34
|
+
/**
|
|
35
|
+
* Overrides the base sendTx to add a pre-simulation step before the actual send. The simulation
|
|
36
|
+
* estimates actual gas usage and captures call authorization requests to generate
|
|
37
|
+
* the necessary authwitnesses.
|
|
38
|
+
*/
|
|
39
|
+
sendTx<W extends InteractionWaitOptions = undefined>(executionPayload: ExecutionPayload, opts: SendOptions<W>): Promise<SendReturn<W>>;
|
|
28
40
|
/**
|
|
29
41
|
* Simulates calls via a stub account entrypoint, bypassing real account authorization.
|
|
30
42
|
* This allows kernelless simulation with contract overrides, skipping expensive
|
|
31
43
|
* private kernel circuit execution.
|
|
32
44
|
*/
|
|
33
|
-
protected simulateViaEntrypoint(executionPayload: ExecutionPayload,
|
|
45
|
+
protected simulateViaEntrypoint(executionPayload: ExecutionPayload, opts: SimulateViaEntrypointOptions): Promise<TxSimulationResult>;
|
|
34
46
|
private getFakeAccountDataFor;
|
|
35
47
|
protected createAccountInternal(type: AccountType, secret: Fr, salt: Fr, signingKey: Buffer): Promise<AccountManager>;
|
|
36
48
|
createAndStoreAccount(alias: string, type: AccountType, secret: Fr, salt: Fr, signingKey: Buffer): Promise<AccountManager>;
|
|
@@ -38,6 +50,7 @@ export declare class EmbeddedWallet extends BaseWallet {
|
|
|
38
50
|
createECDSARAccount(secret: Fr, salt: Fr, signingKey: Buffer, alias?: string): Promise<AccountManager>;
|
|
39
51
|
createECDSAKAccount(secret: Fr, salt: Fr, signingKey: Buffer, alias?: string): Promise<AccountManager>;
|
|
40
52
|
setMinFeePadding(value?: number): void;
|
|
53
|
+
setEstimatedGasPadding(value?: number): void;
|
|
41
54
|
stop(): Promise<void>;
|
|
42
55
|
}
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1iZWRkZWRfd2FsbGV0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZW1iZWRkZWQvZW1iZWRkZWRfd2FsbGV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLE9BQU8sRUFBcUIsTUFBTSx5QkFBeUIsQ0FBQztBQUUxRSxPQUFPLEVBQUUsS0FBSyxzQkFBc0IsRUFBRSxLQUFLLFVBQVUsRUFBZ0IsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RyxPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXhELE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEQsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUUsT0FBTyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRzNELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWpFLE9BQU8sRUFDTCxnQkFBZ0IsRUFFaEIsS0FBSyxrQkFBa0IsRUFHeEIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssNEJBQTRCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUU5RixPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxLQUFLLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1RCxNQUFNLE1BQU0scUJB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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;
|
|
1
|
+
{"version":3,"file":"embedded_wallet.d.ts","sourceRoot":"","sources":["../../src/embedded/embedded_wallet.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,21 @@
|
|
|
1
1
|
import { SignerlessAccount } from '@aztec/aztec.js/account';
|
|
2
|
+
import { CallAuthorizationRequest } from '@aztec/aztec.js/authorization';
|
|
3
|
+
import { getGasLimits } from '@aztec/aztec.js/contracts';
|
|
2
4
|
import { AccountManager } from '@aztec/aztec.js/wallet';
|
|
3
5
|
import { Fq, Fr } from '@aztec/foundation/curves/bn254';
|
|
4
6
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
5
7
|
import { getContractInstanceFromInstantiationParams } from '@aztec/stdlib/contract';
|
|
8
|
+
import { GasSettings } from '@aztec/stdlib/gas';
|
|
6
9
|
import { deriveSigningKey } from '@aztec/stdlib/keys';
|
|
7
|
-
import { mergeExecutionPayloads } from '@aztec/stdlib/tx';
|
|
10
|
+
import { collectOffchainEffects, mergeExecutionPayloads } from '@aztec/stdlib/tx';
|
|
8
11
|
import { BaseWallet } from '@aztec/wallet-sdk/base-wallet';
|
|
12
|
+
const DEFAULT_ESTIMATED_GAS_PADDING = 0.1;
|
|
9
13
|
export class EmbeddedWallet extends BaseWallet {
|
|
10
14
|
walletDB;
|
|
11
15
|
accountContracts;
|
|
16
|
+
estimatedGasPadding;
|
|
12
17
|
constructor(pxe, aztecNode, walletDB, accountContracts, log){
|
|
13
|
-
super(pxe, aztecNode, log), this.walletDB = walletDB, this.accountContracts = accountContracts;
|
|
18
|
+
super(pxe, aztecNode, log), this.walletDB = walletDB, this.accountContracts = accountContracts, this.estimatedGasPadding = DEFAULT_ESTIMATED_GAS_PADDING;
|
|
14
19
|
}
|
|
15
20
|
async getAccountFromAddress(address) {
|
|
16
21
|
if (address.equals(AztecAddress.ZERO)) {
|
|
@@ -42,11 +47,75 @@ export class EmbeddedWallet extends BaseWallet {
|
|
|
42
47
|
return storedSenders;
|
|
43
48
|
}
|
|
44
49
|
/**
|
|
50
|
+
* Overrides the base sendTx to add a pre-simulation step before the actual send. The simulation
|
|
51
|
+
* estimates actual gas usage and captures call authorization requests to generate
|
|
52
|
+
* the necessary authwitnesses.
|
|
53
|
+
*/ async sendTx(executionPayload, opts) {
|
|
54
|
+
const feeOptions = await this.completeFeeOptionsForEstimation(opts.from, executionPayload.feePayer, opts.fee?.gasSettings);
|
|
55
|
+
// Simulate the transaction first to estimate gas and capture required
|
|
56
|
+
// private authwitnesses based on offchain effects.
|
|
57
|
+
const simulationResult = await this.simulateViaEntrypoint(executionPayload, {
|
|
58
|
+
from: opts.from,
|
|
59
|
+
feeOptions,
|
|
60
|
+
scopes: this.scopesFrom(opts.from, opts.additionalScopes),
|
|
61
|
+
skipTxValidation: true
|
|
62
|
+
});
|
|
63
|
+
const offchainEffects = collectOffchainEffects(simulationResult.privateExecutionResult);
|
|
64
|
+
const authWitnesses = await Promise.all(offchainEffects.map(async (effect)=>{
|
|
65
|
+
try {
|
|
66
|
+
const authRequest = await CallAuthorizationRequest.fromFields(effect.data);
|
|
67
|
+
return this.createAuthWit(opts.from, {
|
|
68
|
+
consumer: effect.contractAddress,
|
|
69
|
+
innerHash: authRequest.innerHash
|
|
70
|
+
});
|
|
71
|
+
} catch {
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
}));
|
|
75
|
+
for (const authwit of authWitnesses){
|
|
76
|
+
if (authwit) {
|
|
77
|
+
executionPayload.authWitnesses.push(authwit);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
const estimated = getGasLimits(simulationResult, this.estimatedGasPadding);
|
|
81
|
+
this.log.verbose(`Estimated gas limits for tx: DA=${estimated.gasLimits.daGas} L2=${estimated.gasLimits.l2Gas} teardownDA=${estimated.teardownGasLimits.daGas} teardownL2=${estimated.teardownGasLimits.l2Gas}`);
|
|
82
|
+
const gasSettings = GasSettings.from({
|
|
83
|
+
...opts.fee?.gasSettings,
|
|
84
|
+
maxFeesPerGas: feeOptions.gasSettings.maxFeesPerGas,
|
|
85
|
+
maxPriorityFeesPerGas: feeOptions.gasSettings.maxPriorityFeesPerGas,
|
|
86
|
+
gasLimits: opts.fee?.gasSettings?.gasLimits ?? estimated.gasLimits,
|
|
87
|
+
teardownGasLimits: opts.fee?.gasSettings?.teardownGasLimits ?? estimated.teardownGasLimits
|
|
88
|
+
});
|
|
89
|
+
return super.sendTx(executionPayload, {
|
|
90
|
+
...opts,
|
|
91
|
+
fee: {
|
|
92
|
+
...opts.fee,
|
|
93
|
+
gasSettings
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
45
98
|
* Simulates calls via a stub account entrypoint, bypassing real account authorization.
|
|
46
99
|
* This allows kernelless simulation with contract overrides, skipping expensive
|
|
47
100
|
* private kernel circuit execution.
|
|
48
|
-
*/ async simulateViaEntrypoint(executionPayload,
|
|
49
|
-
const {
|
|
101
|
+
*/ async simulateViaEntrypoint(executionPayload, opts) {
|
|
102
|
+
const { from, feeOptions, scopes, skipTxValidation, skipFeeEnforcement } = opts;
|
|
103
|
+
let overrides;
|
|
104
|
+
let fromAccount;
|
|
105
|
+
if (!from.equals(AztecAddress.ZERO)) {
|
|
106
|
+
const { account, instance, artifact } = await this.getFakeAccountDataFor(from);
|
|
107
|
+
fromAccount = account;
|
|
108
|
+
overrides = {
|
|
109
|
+
contracts: {
|
|
110
|
+
[from.toString()]: {
|
|
111
|
+
instance,
|
|
112
|
+
artifact
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
} else {
|
|
117
|
+
fromAccount = await this.getAccountFromAddress(from);
|
|
118
|
+
}
|
|
50
119
|
const feeExecutionPayload = await feeOptions.walletFeePaymentMethod?.getExecutionPayload();
|
|
51
120
|
const executionOptions = {
|
|
52
121
|
txNonce: Fr.random(),
|
|
@@ -61,16 +130,9 @@ export class EmbeddedWallet extends BaseWallet {
|
|
|
61
130
|
const txRequest = await fromAccount.createTxExecutionRequest(finalExecutionPayload, feeOptions.gasSettings, chainInfo, executionOptions);
|
|
62
131
|
return this.pxe.simulateTx(txRequest, {
|
|
63
132
|
simulatePublic: true,
|
|
64
|
-
skipFeeEnforcement
|
|
65
|
-
skipTxValidation
|
|
66
|
-
overrides
|
|
67
|
-
contracts: {
|
|
68
|
-
[from.toString()]: {
|
|
69
|
-
instance,
|
|
70
|
-
artifact
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
},
|
|
133
|
+
skipFeeEnforcement,
|
|
134
|
+
skipTxValidation,
|
|
135
|
+
overrides,
|
|
74
136
|
scopes
|
|
75
137
|
});
|
|
76
138
|
}
|
|
@@ -120,8 +182,11 @@ export class EmbeddedWallet extends BaseWallet {
|
|
|
120
182
|
}
|
|
121
183
|
const accountManager = await AccountManager.create(this, secret, contract, salt);
|
|
122
184
|
const instance = accountManager.getInstance();
|
|
123
|
-
const
|
|
124
|
-
|
|
185
|
+
const existingInstance = await this.pxe.getContractInstance(instance.address);
|
|
186
|
+
if (!existingInstance) {
|
|
187
|
+
const existingArtifact = await this.pxe.getContractArtifact(instance.currentContractClassId);
|
|
188
|
+
await this.registerContract(instance, !existingArtifact ? await accountManager.getAccountContract().getContractArtifact() : undefined, accountManager.getSecretKey());
|
|
189
|
+
}
|
|
125
190
|
return accountManager;
|
|
126
191
|
}
|
|
127
192
|
async createAndStoreAccount(alias, type, secret, salt, signingKey) {
|
|
@@ -148,6 +213,9 @@ export class EmbeddedWallet extends BaseWallet {
|
|
|
148
213
|
setMinFeePadding(value) {
|
|
149
214
|
this.minFeePadding = value ?? 0.5;
|
|
150
215
|
}
|
|
216
|
+
setEstimatedGasPadding(value) {
|
|
217
|
+
this.estimatedGasPadding = value ?? DEFAULT_ESTIMATED_GAS_PADDING;
|
|
218
|
+
}
|
|
151
219
|
stop() {
|
|
152
220
|
return this.pxe.stop();
|
|
153
221
|
}
|
|
@@ -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.125b3452",
|
|
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.125b3452",
|
|
31
|
+
"@aztec/aztec.js": "0.0.1-commit.125b3452",
|
|
32
|
+
"@aztec/entrypoints": "0.0.1-commit.125b3452",
|
|
33
|
+
"@aztec/foundation": "0.0.1-commit.125b3452",
|
|
34
|
+
"@aztec/kv-store": "0.0.1-commit.125b3452",
|
|
35
|
+
"@aztec/protocol-contracts": "0.0.1-commit.125b3452",
|
|
36
|
+
"@aztec/pxe": "0.0.1-commit.125b3452",
|
|
37
|
+
"@aztec/stdlib": "0.0.1-commit.125b3452",
|
|
38
|
+
"@aztec/wallet-sdk": "0.0.1-commit.125b3452"
|
|
38
39
|
},
|
|
39
40
|
"devDependencies": {
|
|
40
41
|
"@jest/globals": "^30.0.0",
|
|
@@ -43,6 +44,15 @@
|
|
|
43
44
|
"ts-node": "^10.9.1",
|
|
44
45
|
"typescript": "^5.3.3"
|
|
45
46
|
},
|
|
47
|
+
"typedocOptions": {
|
|
48
|
+
"entryPoints": [
|
|
49
|
+
"./src/embedded/entrypoints/browser.ts",
|
|
50
|
+
"./src/embedded/entrypoints/node.ts",
|
|
51
|
+
"./src/testing.ts"
|
|
52
|
+
],
|
|
53
|
+
"name": "Wallets",
|
|
54
|
+
"tsconfig": "./tsconfig.json"
|
|
55
|
+
},
|
|
46
56
|
"files": [
|
|
47
57
|
"dest",
|
|
48
58
|
"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
|
}
|
|
@@ -1,17 +1,26 @@
|
|
|
1
1
|
import { type Account, SignerlessAccount } from '@aztec/aztec.js/account';
|
|
2
|
-
import
|
|
2
|
+
import { CallAuthorizationRequest } from '@aztec/aztec.js/authorization';
|
|
3
|
+
import { type InteractionWaitOptions, type SendReturn, getGasLimits } from '@aztec/aztec.js/contracts';
|
|
4
|
+
import type { Aliased, SendOptions } from '@aztec/aztec.js/wallet';
|
|
3
5
|
import { AccountManager } from '@aztec/aztec.js/wallet';
|
|
4
6
|
import type { DefaultAccountEntrypointOptions } from '@aztec/entrypoints/account';
|
|
5
7
|
import { Fq, Fr } from '@aztec/foundation/curves/bn254';
|
|
6
8
|
import type { Logger } from '@aztec/foundation/log';
|
|
7
|
-
import type {
|
|
9
|
+
import type { PXEConfig, PXECreationOptions } from '@aztec/pxe/client/lazy';
|
|
8
10
|
import type { PXE } from '@aztec/pxe/server';
|
|
9
11
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
10
12
|
import { getContractInstanceFromInstantiationParams } from '@aztec/stdlib/contract';
|
|
13
|
+
import { GasSettings } from '@aztec/stdlib/gas';
|
|
11
14
|
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
12
15
|
import { deriveSigningKey } from '@aztec/stdlib/keys';
|
|
13
|
-
import {
|
|
14
|
-
|
|
16
|
+
import {
|
|
17
|
+
ExecutionPayload,
|
|
18
|
+
SimulationOverrides,
|
|
19
|
+
type TxSimulationResult,
|
|
20
|
+
collectOffchainEffects,
|
|
21
|
+
mergeExecutionPayloads,
|
|
22
|
+
} from '@aztec/stdlib/tx';
|
|
23
|
+
import { BaseWallet, type SimulateViaEntrypointOptions } from '@aztec/wallet-sdk/base-wallet';
|
|
15
24
|
|
|
16
25
|
import type { AccountContractsProvider } from './account-contract-providers/types.js';
|
|
17
26
|
import { type AccountType, WalletDB } from './wallet_db.js';
|
|
@@ -21,9 +30,17 @@ export type EmbeddedWalletOptions = {
|
|
|
21
30
|
logger?: Logger;
|
|
22
31
|
/** Use ephemeral (in-memory) stores. Data will not persist across sessions. */
|
|
23
32
|
ephemeral?: boolean;
|
|
33
|
+
/** Override PXE configuration. */
|
|
34
|
+
pxeConfig?: Partial<PXEConfig>;
|
|
35
|
+
/** Advanced PXE creation options (custom store, prover, simulator). */
|
|
36
|
+
pxeOptions?: PXECreationOptions;
|
|
24
37
|
};
|
|
25
38
|
|
|
39
|
+
const DEFAULT_ESTIMATED_GAS_PADDING = 0.1;
|
|
40
|
+
|
|
26
41
|
export class EmbeddedWallet extends BaseWallet {
|
|
42
|
+
protected estimatedGasPadding = DEFAULT_ESTIMATED_GAS_PADDING;
|
|
43
|
+
|
|
27
44
|
constructor(
|
|
28
45
|
pxe: PXE,
|
|
29
46
|
aztecNode: AztecNode,
|
|
@@ -70,6 +87,66 @@ export class EmbeddedWallet extends BaseWallet {
|
|
|
70
87
|
return storedSenders;
|
|
71
88
|
}
|
|
72
89
|
|
|
90
|
+
/**
|
|
91
|
+
* Overrides the base sendTx to add a pre-simulation step before the actual send. The simulation
|
|
92
|
+
* estimates actual gas usage and captures call authorization requests to generate
|
|
93
|
+
* the necessary authwitnesses.
|
|
94
|
+
*/
|
|
95
|
+
public override async sendTx<W extends InteractionWaitOptions = undefined>(
|
|
96
|
+
executionPayload: ExecutionPayload,
|
|
97
|
+
opts: SendOptions<W>,
|
|
98
|
+
): Promise<SendReturn<W>> {
|
|
99
|
+
const feeOptions = await this.completeFeeOptionsForEstimation(
|
|
100
|
+
opts.from,
|
|
101
|
+
executionPayload.feePayer,
|
|
102
|
+
opts.fee?.gasSettings,
|
|
103
|
+
);
|
|
104
|
+
|
|
105
|
+
// Simulate the transaction first to estimate gas and capture required
|
|
106
|
+
// private authwitnesses based on offchain effects.
|
|
107
|
+
const simulationResult = await this.simulateViaEntrypoint(executionPayload, {
|
|
108
|
+
from: opts.from,
|
|
109
|
+
feeOptions,
|
|
110
|
+
scopes: this.scopesFrom(opts.from, opts.additionalScopes),
|
|
111
|
+
skipTxValidation: true,
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
const offchainEffects = collectOffchainEffects(simulationResult.privateExecutionResult);
|
|
115
|
+
const authWitnesses = await Promise.all(
|
|
116
|
+
offchainEffects.map(async effect => {
|
|
117
|
+
try {
|
|
118
|
+
const authRequest = await CallAuthorizationRequest.fromFields(effect.data);
|
|
119
|
+
return this.createAuthWit(opts.from, {
|
|
120
|
+
consumer: effect.contractAddress,
|
|
121
|
+
innerHash: authRequest.innerHash,
|
|
122
|
+
});
|
|
123
|
+
} catch {
|
|
124
|
+
return undefined;
|
|
125
|
+
}
|
|
126
|
+
}),
|
|
127
|
+
);
|
|
128
|
+
for (const authwit of authWitnesses) {
|
|
129
|
+
if (authwit) {
|
|
130
|
+
executionPayload.authWitnesses.push(authwit);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
const estimated = getGasLimits(simulationResult, this.estimatedGasPadding);
|
|
134
|
+
this.log.verbose(
|
|
135
|
+
`Estimated gas limits for tx: DA=${estimated.gasLimits.daGas} L2=${estimated.gasLimits.l2Gas} teardownDA=${estimated.teardownGasLimits.daGas} teardownL2=${estimated.teardownGasLimits.l2Gas}`,
|
|
136
|
+
);
|
|
137
|
+
const gasSettings = GasSettings.from({
|
|
138
|
+
...opts.fee?.gasSettings,
|
|
139
|
+
maxFeesPerGas: feeOptions.gasSettings.maxFeesPerGas,
|
|
140
|
+
maxPriorityFeesPerGas: feeOptions.gasSettings.maxPriorityFeesPerGas,
|
|
141
|
+
gasLimits: opts.fee?.gasSettings?.gasLimits ?? estimated.gasLimits,
|
|
142
|
+
teardownGasLimits: opts.fee?.gasSettings?.teardownGasLimits ?? estimated.teardownGasLimits,
|
|
143
|
+
});
|
|
144
|
+
return super.sendTx(executionPayload, {
|
|
145
|
+
...opts,
|
|
146
|
+
fee: { ...opts.fee, gasSettings },
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
|
|
73
150
|
/**
|
|
74
151
|
* Simulates calls via a stub account entrypoint, bypassing real account authorization.
|
|
75
152
|
* This allows kernelless simulation with contract overrides, skipping expensive
|
|
@@ -77,13 +154,21 @@ export class EmbeddedWallet extends BaseWallet {
|
|
|
77
154
|
*/
|
|
78
155
|
protected override async simulateViaEntrypoint(
|
|
79
156
|
executionPayload: ExecutionPayload,
|
|
80
|
-
|
|
81
|
-
feeOptions: FeeOptions,
|
|
82
|
-
scopes: AccessScopes,
|
|
83
|
-
_skipTxValidation?: boolean,
|
|
84
|
-
_skipFeeEnforcement?: boolean,
|
|
157
|
+
opts: SimulateViaEntrypointOptions,
|
|
85
158
|
): Promise<TxSimulationResult> {
|
|
86
|
-
const {
|
|
159
|
+
const { from, feeOptions, scopes, skipTxValidation, skipFeeEnforcement } = opts;
|
|
160
|
+
|
|
161
|
+
let overrides: SimulationOverrides | undefined;
|
|
162
|
+
let fromAccount: Account;
|
|
163
|
+
if (!from.equals(AztecAddress.ZERO)) {
|
|
164
|
+
const { account, instance, artifact } = await this.getFakeAccountDataFor(from);
|
|
165
|
+
fromAccount = account;
|
|
166
|
+
overrides = {
|
|
167
|
+
contracts: { [from.toString()]: { instance, artifact } },
|
|
168
|
+
};
|
|
169
|
+
} else {
|
|
170
|
+
fromAccount = await this.getAccountFromAddress(from);
|
|
171
|
+
}
|
|
87
172
|
|
|
88
173
|
const feeExecutionPayload = await feeOptions.walletFeePaymentMethod?.getExecutionPayload();
|
|
89
174
|
const executionOptions: DefaultAccountEntrypointOptions = {
|
|
@@ -103,11 +188,9 @@ export class EmbeddedWallet extends BaseWallet {
|
|
|
103
188
|
);
|
|
104
189
|
return this.pxe.simulateTx(txRequest, {
|
|
105
190
|
simulatePublic: true,
|
|
106
|
-
skipFeeEnforcement
|
|
107
|
-
skipTxValidation
|
|
108
|
-
overrides
|
|
109
|
-
contracts: { [from.toString()]: { instance, artifact } },
|
|
110
|
-
},
|
|
191
|
+
skipFeeEnforcement,
|
|
192
|
+
skipTxValidation,
|
|
193
|
+
overrides,
|
|
111
194
|
scopes,
|
|
112
195
|
});
|
|
113
196
|
}
|
|
@@ -162,10 +245,15 @@ export class EmbeddedWallet extends BaseWallet {
|
|
|
162
245
|
const accountManager = await AccountManager.create(this, secret, contract, salt);
|
|
163
246
|
|
|
164
247
|
const instance = accountManager.getInstance();
|
|
165
|
-
const
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
248
|
+
const existingInstance = await this.pxe.getContractInstance(instance.address);
|
|
249
|
+
if (!existingInstance) {
|
|
250
|
+
const existingArtifact = await this.pxe.getContractArtifact(instance.currentContractClassId);
|
|
251
|
+
await this.registerContract(
|
|
252
|
+
instance,
|
|
253
|
+
!existingArtifact ? await accountManager.getAccountContract().getContractArtifact() : undefined,
|
|
254
|
+
accountManager.getSecretKey(),
|
|
255
|
+
);
|
|
256
|
+
}
|
|
169
257
|
return accountManager;
|
|
170
258
|
}
|
|
171
259
|
|
|
@@ -198,6 +286,10 @@ export class EmbeddedWallet extends BaseWallet {
|
|
|
198
286
|
this.minFeePadding = value ?? 0.5;
|
|
199
287
|
}
|
|
200
288
|
|
|
289
|
+
setEstimatedGasPadding(value?: number) {
|
|
290
|
+
this.estimatedGasPadding = value ?? DEFAULT_ESTIMATED_GAS_PADDING;
|
|
291
|
+
}
|
|
292
|
+
|
|
201
293
|
stop() {
|
|
202
294
|
return this.pxe.stop();
|
|
203
295
|
}
|
|
@@ -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
|
-
}
|