@aztec/accounts 0.17.0

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.
Files changed (59) hide show
  1. package/README.md +38 -0
  2. package/dest/artifacts/EcdsaAccount.json +1090 -0
  3. package/dest/artifacts/SchnorrAccount.json +1078 -0
  4. package/dest/artifacts/SchnorrSingleKeyAccount.json +951 -0
  5. package/dest/defaults/account_contract.d.ts +16 -0
  6. package/dest/defaults/account_contract.d.ts.map +1 -0
  7. package/dest/defaults/account_contract.js +17 -0
  8. package/dest/defaults/account_entrypoint.d.ts +17 -0
  9. package/dest/defaults/account_entrypoint.d.ts.map +1 -0
  10. package/dest/defaults/account_entrypoint.js +117 -0
  11. package/dest/defaults/account_interface.d.ts +17 -0
  12. package/dest/defaults/account_interface.d.ts.map +1 -0
  13. package/dest/defaults/account_interface.js +22 -0
  14. package/dest/defaults/constants.d.ts +5 -0
  15. package/dest/defaults/constants.d.ts.map +1 -0
  16. package/dest/defaults/constants.js +5 -0
  17. package/dest/defaults/entrypoint_payload.d.ts +32 -0
  18. package/dest/defaults/entrypoint_payload.d.ts.map +1 -0
  19. package/dest/defaults/entrypoint_payload.js +50 -0
  20. package/dest/defaults/index.d.ts +13 -0
  21. package/dest/defaults/index.d.ts.map +1 -0
  22. package/dest/defaults/index.js +13 -0
  23. package/dest/ecdsa/account_contract.d.ts +15 -0
  24. package/dest/ecdsa/account_contract.d.ts.map +1 -0
  25. package/dest/ecdsa/account_contract.js +33 -0
  26. package/dest/ecdsa/artifact.d.ts +3 -0
  27. package/dest/ecdsa/artifact.d.ts.map +1 -0
  28. package/dest/ecdsa/artifact.js +3 -0
  29. package/dest/ecdsa/index.d.ts +31 -0
  30. package/dest/ecdsa/index.d.ts.map +1 -0
  31. package/dest/ecdsa/index.js +32 -0
  32. package/dest/schnorr/account_contract.d.ts +15 -0
  33. package/dest/schnorr/account_contract.d.ts.map +1 -0
  34. package/dest/schnorr/account_contract.js +33 -0
  35. package/dest/schnorr/artifact.d.ts +3 -0
  36. package/dest/schnorr/artifact.d.ts.map +1 -0
  37. package/dest/schnorr/artifact.js +3 -0
  38. package/dest/schnorr/index.d.ts +30 -0
  39. package/dest/schnorr/index.d.ts.map +1 -0
  40. package/dest/schnorr/index.js +32 -0
  41. package/dest/single_key/account_contract.d.ts +14 -0
  42. package/dest/single_key/account_contract.d.ts.map +1 -0
  43. package/dest/single_key/account_contract.js +40 -0
  44. package/dest/single_key/artifact.d.ts +3 -0
  45. package/dest/single_key/artifact.d.ts.map +1 -0
  46. package/dest/single_key/artifact.js +3 -0
  47. package/dest/single_key/index.d.ts +31 -0
  48. package/dest/single_key/index.d.ts.map +1 -0
  49. package/dest/single_key/index.js +33 -0
  50. package/dest/testing/create_account.d.ts +16 -0
  51. package/dest/testing/create_account.d.ts.map +1 -0
  52. package/dest/testing/create_account.js +30 -0
  53. package/dest/testing/index.d.ts +11 -0
  54. package/dest/testing/index.d.ts.map +1 -0
  55. package/dest/testing/index.js +11 -0
  56. package/dest/testing/sandbox.d.ts +22 -0
  57. package/dest/testing/sandbox.d.ts.map +1 -0
  58. package/dest/testing/sandbox.js +48 -0
  59. package/package.json +74 -0
@@ -0,0 +1,16 @@
1
+ import { AccountContract, AccountInterface, AuthWitnessProvider } from '@aztec/aztec.js/account';
2
+ import { ContractArtifact } from '@aztec/foundation/abi';
3
+ import { CompleteAddress, NodeInfo } from '@aztec/types';
4
+ /**
5
+ * Base class for implementing an account contract. Requires that the account uses the
6
+ * default entrypoint method signature.
7
+ */
8
+ export declare abstract class DefaultAccountContract implements AccountContract {
9
+ private artifact;
10
+ abstract getAuthWitnessProvider(address: CompleteAddress): AuthWitnessProvider;
11
+ abstract getDeploymentArgs(): any[];
12
+ constructor(artifact: ContractArtifact);
13
+ getContractArtifact(): ContractArtifact;
14
+ getInterface(address: CompleteAddress, nodeInfo: NodeInfo): AccountInterface;
15
+ }
16
+ //# sourceMappingURL=account_contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account_contract.d.ts","sourceRoot":"","sources":["../../src/defaults/account_contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACjG,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAIzD;;;GAGG;AACH,8BAAsB,sBAAuB,YAAW,eAAe;IAIzD,OAAO,CAAC,QAAQ;IAH5B,QAAQ,CAAC,sBAAsB,CAAC,OAAO,EAAE,eAAe,GAAG,mBAAmB;IAC9E,QAAQ,CAAC,iBAAiB,IAAI,GAAG,EAAE;gBAEf,QAAQ,EAAE,gBAAgB;IAE9C,mBAAmB,IAAI,gBAAgB;IAIvC,YAAY,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,GAAG,gBAAgB;CAG7E"}
@@ -0,0 +1,17 @@
1
+ import { DefaultAccountInterface } from '../defaults/account_interface.js';
2
+ /**
3
+ * Base class for implementing an account contract. Requires that the account uses the
4
+ * default entrypoint method signature.
5
+ */
6
+ export class DefaultAccountContract {
7
+ constructor(artifact) {
8
+ this.artifact = artifact;
9
+ }
10
+ getContractArtifact() {
11
+ return this.artifact;
12
+ }
13
+ getInterface(address, nodeInfo) {
14
+ return new DefaultAccountInterface(this.getAuthWitnessProvider(address), address, nodeInfo);
15
+ }
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudF9jb250cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZWZhdWx0cy9hY2NvdW50X2NvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRTNFOzs7R0FHRztBQUNILE1BQU0sT0FBZ0Isc0JBQXNCO0lBSTFDLFlBQW9CLFFBQTBCO1FBQTFCLGFBQVEsR0FBUixRQUFRLENBQWtCO0lBQUcsQ0FBQztJQUVsRCxtQkFBbUI7UUFDakIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxZQUFZLENBQUMsT0FBd0IsRUFBRSxRQUFrQjtRQUN2RCxPQUFPLElBQUksdUJBQXVCLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM5RixDQUFDO0NBQ0YifQ==
@@ -0,0 +1,17 @@
1
+ import { AuthWitnessProvider, EntrypointInterface } from '@aztec/aztec.js/account';
2
+ import { AztecAddress } from '@aztec/circuits.js';
3
+ import { FunctionCall, TxExecutionRequest } from '@aztec/types';
4
+ /**
5
+ * Implementation for an entrypoint interface that follows the default entrypoint signature
6
+ * for an account, which accepts an EntrypointPayload as defined in noir-libs/aztec-noir/src/entrypoint.nr.
7
+ */
8
+ export declare class DefaultAccountEntrypoint implements EntrypointInterface {
9
+ private address;
10
+ private auth;
11
+ private chainId;
12
+ private version;
13
+ constructor(address: AztecAddress, auth: AuthWitnessProvider, chainId?: number, version?: number);
14
+ createTxExecutionRequest(executions: FunctionCall[]): Promise<TxExecutionRequest>;
15
+ private getEntrypointAbi;
16
+ }
17
+ //# sourceMappingURL=account_entrypoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account_entrypoint.d.ts","sourceRoot":"","sources":["../../src/defaults/account_entrypoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnF,OAAO,EAAE,YAAY,EAA+B,MAAM,oBAAoB,CAAC;AAE/E,OAAO,EAAE,YAAY,EAAmB,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAKjF;;;GAGG;AACH,qBAAa,wBAAyB,YAAW,mBAAmB;IAEhE,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,OAAO;gBAHP,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,mBAAmB,EACzB,OAAO,GAAE,MAAyB,EAClC,OAAO,GAAE,MAAwB;IAGrC,wBAAwB,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAkBvF,OAAO,CAAC,gBAAgB;CAmFzB"}
@@ -0,0 +1,117 @@
1
+ import { Fr, FunctionData, TxContext } from '@aztec/circuits.js';
2
+ import { encodeArguments } from '@aztec/foundation/abi';
3
+ import { PackedArguments, TxExecutionRequest } from '@aztec/types';
4
+ import { DEFAULT_CHAIN_ID, DEFAULT_VERSION } from './constants.js';
5
+ import { buildPayload, hashPayload } from './entrypoint_payload.js';
6
+ /**
7
+ * Implementation for an entrypoint interface that follows the default entrypoint signature
8
+ * for an account, which accepts an EntrypointPayload as defined in noir-libs/aztec-noir/src/entrypoint.nr.
9
+ */
10
+ export class DefaultAccountEntrypoint {
11
+ constructor(address, auth, chainId = DEFAULT_CHAIN_ID, version = DEFAULT_VERSION) {
12
+ this.address = address;
13
+ this.auth = auth;
14
+ this.chainId = chainId;
15
+ this.version = version;
16
+ }
17
+ async createTxExecutionRequest(executions) {
18
+ const { payload, packedArguments: callsPackedArguments } = buildPayload(executions);
19
+ const abi = this.getEntrypointAbi();
20
+ const packedArgs = PackedArguments.fromArgs(encodeArguments(abi, [payload]));
21
+ const message = Fr.fromBuffer(hashPayload(payload));
22
+ const authWitness = await this.auth.createAuthWitness(message);
23
+ const txRequest = TxExecutionRequest.from({
24
+ argsHash: packedArgs.hash,
25
+ origin: this.address,
26
+ functionData: FunctionData.fromAbi(abi),
27
+ txContext: TxContext.empty(this.chainId, this.version),
28
+ packedArguments: [...callsPackedArguments, packedArgs],
29
+ authWitnesses: [authWitness],
30
+ });
31
+ return txRequest;
32
+ }
33
+ getEntrypointAbi() {
34
+ return {
35
+ name: 'entrypoint',
36
+ functionType: 'secret',
37
+ isInternal: false,
38
+ parameters: [
39
+ {
40
+ name: 'payload',
41
+ type: {
42
+ kind: 'struct',
43
+ path: 'authwit::entrypoint::EntrypointPayload',
44
+ fields: [
45
+ {
46
+ name: 'function_calls',
47
+ type: {
48
+ kind: 'array',
49
+ length: 4,
50
+ type: {
51
+ kind: 'struct',
52
+ path: 'authwit::entrypoint::FunctionCall',
53
+ fields: [
54
+ {
55
+ name: 'args_hash',
56
+ type: {
57
+ kind: 'field',
58
+ },
59
+ },
60
+ {
61
+ name: 'function_selector',
62
+ type: {
63
+ kind: 'struct',
64
+ path: 'aztec::protocol_types::abis::function_selector::FunctionSelector',
65
+ fields: [
66
+ {
67
+ name: 'inner',
68
+ type: {
69
+ kind: 'integer',
70
+ sign: 'unsigned',
71
+ width: 32,
72
+ },
73
+ },
74
+ ],
75
+ },
76
+ },
77
+ {
78
+ name: 'target_address',
79
+ type: {
80
+ kind: 'struct',
81
+ path: 'aztec::protocol_types::address::AztecAddress',
82
+ fields: [
83
+ {
84
+ name: 'inner',
85
+ type: {
86
+ kind: 'field',
87
+ },
88
+ },
89
+ ],
90
+ },
91
+ },
92
+ {
93
+ name: 'is_public',
94
+ type: {
95
+ kind: 'boolean',
96
+ },
97
+ },
98
+ ],
99
+ },
100
+ },
101
+ },
102
+ {
103
+ name: 'nonce',
104
+ type: {
105
+ kind: 'field',
106
+ },
107
+ },
108
+ ],
109
+ },
110
+ visibility: 'public',
111
+ },
112
+ ],
113
+ returnTypes: [],
114
+ };
115
+ }
116
+ }
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudF9lbnRyeXBvaW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RlZmF1bHRzL2FjY291bnRfZW50cnlwb2ludC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWdCLEVBQUUsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0UsT0FBTyxFQUFlLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JFLE9BQU8sRUFBZ0IsZUFBZSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRWpGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXBFOzs7R0FHRztBQUNILE1BQU0sT0FBTyx3QkFBd0I7SUFDbkMsWUFDVSxPQUFxQixFQUNyQixJQUF5QixFQUN6QixVQUFrQixnQkFBZ0IsRUFDbEMsVUFBa0IsZUFBZTtRQUhqQyxZQUFPLEdBQVAsT0FBTyxDQUFjO1FBQ3JCLFNBQUksR0FBSixJQUFJLENBQXFCO1FBQ3pCLFlBQU8sR0FBUCxPQUFPLENBQTJCO1FBQ2xDLFlBQU8sR0FBUCxPQUFPLENBQTBCO0lBQ3hDLENBQUM7SUFFSixLQUFLLENBQUMsd0JBQXdCLENBQUMsVUFBMEI7UUFDdkQsTUFBTSxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEYsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDcEMsTUFBTSxVQUFVLEdBQUcsZUFBZSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdFLE1BQU0sT0FBTyxHQUFHLEVBQUUs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
@@ -0,0 +1,17 @@
1
+ import { AccountInterface, AuthWitnessProvider } from '@aztec/aztec.js/account';
2
+ import { CompleteAddress, Fr } from '@aztec/circuits.js';
3
+ import { AuthWitness, FunctionCall, NodeInfo, TxExecutionRequest } from '@aztec/types';
4
+ /**
5
+ * Default implementation for an account interface. Requires that the account uses the default
6
+ * entrypoint signature, which accepts an EntrypointPayload as defined in noir-libs/aztec-noir/src/entrypoint.nr.
7
+ */
8
+ export declare class DefaultAccountInterface implements AccountInterface {
9
+ private authWitnessProvider;
10
+ private address;
11
+ private entrypoint;
12
+ constructor(authWitnessProvider: AuthWitnessProvider, address: CompleteAddress, nodeInfo: Pick<NodeInfo, 'chainId' | 'protocolVersion'>);
13
+ createTxExecutionRequest(executions: FunctionCall[]): Promise<TxExecutionRequest>;
14
+ createAuthWitness(message: Fr): Promise<AuthWitness>;
15
+ getCompleteAddress(): CompleteAddress;
16
+ }
17
+ //# sourceMappingURL=account_interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account_interface.d.ts","sourceRoot":"","sources":["../../src/defaults/account_interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAuB,MAAM,yBAAyB,CAAC;AACrG,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAIvF;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,gBAAgB;IAI5D,OAAO,CAAC,mBAAmB;IAC3B,OAAO,CAAC,OAAO;IAJjB,OAAO,CAAC,UAAU,CAAsB;gBAG9B,mBAAmB,EAAE,mBAAmB,EACxC,OAAO,EAAE,eAAe,EAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,GAAG,iBAAiB,CAAC;IAUzD,wBAAwB,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAIjF,iBAAiB,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAIpD,kBAAkB,IAAI,eAAe;CAGtC"}
@@ -0,0 +1,22 @@
1
+ import { DefaultAccountEntrypoint } from './account_entrypoint.js';
2
+ /**
3
+ * Default implementation for an account interface. Requires that the account uses the default
4
+ * entrypoint signature, which accepts an EntrypointPayload as defined in noir-libs/aztec-noir/src/entrypoint.nr.
5
+ */
6
+ export class DefaultAccountInterface {
7
+ constructor(authWitnessProvider, address, nodeInfo) {
8
+ this.authWitnessProvider = authWitnessProvider;
9
+ this.address = address;
10
+ this.entrypoint = new DefaultAccountEntrypoint(address.address, authWitnessProvider, nodeInfo.chainId, nodeInfo.protocolVersion);
11
+ }
12
+ createTxExecutionRequest(executions) {
13
+ return this.entrypoint.createTxExecutionRequest(executions);
14
+ }
15
+ createAuthWitness(message) {
16
+ return this.authWitnessProvider.createAuthWitness(message);
17
+ }
18
+ getCompleteAddress() {
19
+ return this.address;
20
+ }
21
+ }
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudF9pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGVmYXVsdHMvYWNjb3VudF9pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbkU7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLHVCQUF1QjtJQUdsQyxZQUNVLG1CQUF3QyxFQUN4QyxPQUF3QixFQUNoQyxRQUF1RDtRQUYvQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBR2hDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSx3QkFBd0IsQ0FDNUMsT0FBTyxDQUFDLE9BQU8sRUFDZixtQkFBbUIsRUFDbkIsUUFBUSxDQUFDLE9BQU8sRUFDaEIsUUFBUSxDQUFDLGVBQWUsQ0FDekIsQ0FBQztJQUNKLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxVQUEwQjtRQUNqRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsd0JBQXdCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELGlCQUFpQixDQUFDLE9BQVc7UUFDM0IsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztDQUNGIn0=
@@ -0,0 +1,5 @@
1
+ /** Default L1 chain ID to use when constructing txs (matches hardhat and anvil's default). */
2
+ export declare const DEFAULT_CHAIN_ID = 31337;
3
+ /** Default protocol version to use. */
4
+ export declare const DEFAULT_VERSION = 1;
5
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/defaults/constants.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,eAAO,MAAM,gBAAgB,QAAQ,CAAC;AACtC,uCAAuC;AACvC,eAAO,MAAM,eAAe,IAAI,CAAC"}
@@ -0,0 +1,5 @@
1
+ /** Default L1 chain ID to use when constructing txs (matches hardhat and anvil's default). */
2
+ export const DEFAULT_CHAIN_ID = 31337;
3
+ /** Default protocol version to use. */
4
+ export const DEFAULT_VERSION = 1;
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RlZmF1bHRzL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw4RkFBOEY7QUFDOUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0FBQ3RDLHVDQUF1QztBQUN2QyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxDQUFDIn0=
@@ -0,0 +1,32 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import { Fr } from '@aztec/circuits.js';
3
+ import { FunctionCall, PackedArguments } from '@aztec/types';
4
+ /** Encoded function call for account contract entrypoint */
5
+ type EntrypointFunctionCall = {
6
+ /** Arguments hash for the call */
7
+ args_hash: Fr;
8
+ /** Selector of the function to call */
9
+ function_selector: Fr;
10
+ /** Address of the contract to call */
11
+ target_address: Fr;
12
+ /** Whether the function is public or private */
13
+ is_public: boolean;
14
+ };
15
+ /** Encoded payload for the account contract entrypoint */
16
+ export type EntrypointPayload = {
17
+ /** Encoded function calls to execute */
18
+ function_calls: EntrypointFunctionCall[];
19
+ /** A nonce for replay protection */
20
+ nonce: Fr;
21
+ };
22
+ /** Assembles an entrypoint payload from a set of private and public function calls */
23
+ export declare function buildPayload(calls: FunctionCall[]): {
24
+ /** The payload for the entrypoint function */
25
+ payload: EntrypointPayload;
26
+ /** The packed arguments of functions called */
27
+ packedArguments: PackedArguments[];
28
+ };
29
+ /** Hashes an entrypoint payload to a 32-byte buffer (useful for signing) */
30
+ export declare function hashPayload(payload: EntrypointPayload): Buffer;
31
+ export {};
32
+ //# sourceMappingURL=entrypoint_payload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entrypoint_payload.d.ts","sourceRoot":"","sources":["../../src/defaults/entrypoint_payload.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAkB,MAAM,oBAAoB,CAAC;AAGxD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAqB,MAAM,cAAc,CAAC;AAKhF,4DAA4D;AAC5D,KAAK,sBAAsB,GAAG;IAE5B,kCAAkC;IAClC,SAAS,EAAE,EAAE,CAAC;IAEd,uCAAuC;IACvC,iBAAiB,EAAE,EAAE,CAAC;IAEtB,sCAAsC;IACtC,cAAc,EAAE,EAAE,CAAC;IAEnB,gDAAgD;IAChD,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,0DAA0D;AAC1D,MAAM,MAAM,iBAAiB,GAAG;IAE9B,wCAAwC;IACxC,cAAc,EAAE,sBAAsB,EAAE,CAAC;IACzC,oCAAoC;IACpC,KAAK,EAAE,EAAE,CAAC;CACX,CAAC;AAEF,sFAAsF;AACtF,wBAAgB,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG;IACnD,8CAA8C;IAC9C,OAAO,EAAE,iBAAiB,CAAC;IAC3B,+CAA+C;IAC/C,eAAe,EAAE,eAAe,EAAE,CAAC;CACpC,CA4BA;AAED,4EAA4E;AAC5E,wBAAgB,WAAW,CAAC,OAAO,EAAE,iBAAiB,UAKrD"}
@@ -0,0 +1,50 @@
1
+ import { Fr, GeneratorIndex } from '@aztec/circuits.js';
2
+ import { padArrayEnd } from '@aztec/foundation/collection';
3
+ import { pedersenHash } from '@aztec/foundation/crypto';
4
+ import { PackedArguments, emptyFunctionCall } from '@aztec/types';
5
+ // These must match the values defined in yarn-project/aztec-nr/aztec/src/entrypoint.nr
6
+ const ACCOUNT_MAX_CALLS = 4;
7
+ /** Assembles an entrypoint payload from a set of private and public function calls */
8
+ export function buildPayload(calls) {
9
+ const nonce = Fr.random();
10
+ const paddedCalls = padArrayEnd(calls, emptyFunctionCall(), ACCOUNT_MAX_CALLS);
11
+ const packedArguments = [];
12
+ for (const call of paddedCalls) {
13
+ packedArguments.push(PackedArguments.fromArgs(call.args));
14
+ }
15
+ const formattedCalls = paddedCalls.map((call, index) => ({
16
+ // eslint-disable-next-line camelcase
17
+ args_hash: packedArguments[index].hash,
18
+ // eslint-disable-next-line camelcase
19
+ function_selector: call.functionData.selector.toField(),
20
+ // eslint-disable-next-line camelcase
21
+ target_address: call.to.toField(),
22
+ // eslint-disable-next-line camelcase
23
+ is_public: !call.functionData.isPrivate,
24
+ }));
25
+ return {
26
+ payload: {
27
+ // eslint-disable-next-line camelcase
28
+ function_calls: formattedCalls,
29
+ nonce,
30
+ },
31
+ packedArguments,
32
+ };
33
+ }
34
+ /** Hashes an entrypoint payload to a 32-byte buffer (useful for signing) */
35
+ export function hashPayload(payload) {
36
+ return pedersenHash(flattenPayload(payload).map(fr => fr.toBuffer()), GeneratorIndex.SIGNATURE_PAYLOAD);
37
+ }
38
+ /** Flattens an entrypoint payload */
39
+ function flattenPayload(payload) {
40
+ return [
41
+ ...payload.function_calls.flatMap(call => [
42
+ call.args_hash,
43
+ call.function_selector,
44
+ call.target_address,
45
+ new Fr(call.is_public),
46
+ ]),
47
+ payload.nonce,
48
+ ];
49
+ }
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnlwb2ludF9wYXlsb2FkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RlZmF1bHRzL2VudHJ5cG9pbnRfcGF5bG9hZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFnQixlQUFlLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFaEYsdUZBQXVGO0FBQ3ZGLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxDQUFDO0FBMkI1QixzRkFBc0Y7QUFDdEYsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUFxQjtJQU1oRCxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7SUFFMUIsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDL0UsTUFBTSxlQUFlLEdBQXNCLEVBQUUsQ0FBQztJQUM5QyxLQUFLLE1BQU0sSUFBSSxJQUFJLFdBQVcsRUFBRTtRQUM5QixlQUFlLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7S0FDM0Q7SUFFRCxNQUFNLGNBQWMsR0FBNkIsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakYscUNBQXFDO1FBQ3JDLFNBQVMsRUFBRSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSTtRQUN0QyxxQ0FBcUM7UUFDckMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFO1FBQ3ZELHFDQUFxQztRQUNyQyxjQUFjLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUU7UUFDakMscUNBQXFDO1FBQ3JDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUztLQUN4QyxDQUFDLENBQUMsQ0FBQztJQUVKLE9BQU87UUFDTCxPQUFPLEVBQUU7WUFDUCxxQ0FBcUM7WUFDckMsY0FBYyxFQUFFLGNBQWM7WUFDOUIsS0FBSztTQUNOO1FBQ0QsZUFBZTtLQUNoQixDQUFDO0FBQ0osQ0FBQztBQUVELDRFQUE0RTtBQUM1RSxNQUFNLFVBQVUsV0FBVyxDQUFDLE9BQTBCO0lBQ3BELE9BQU8sWUFBWSxDQUNqQixjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQ2hELGNBQWMsQ0FBQyxpQkFBaUIsQ0FDakMsQ0FBQztBQUNKLENBQUM7QUFFRCxxQ0FBcUM7QUFDckMsU0FBUyxjQUFjLENBQUMsT0FBMEI7SUFDaEQsT0FBTztRQUNMLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsU0FBUztZQUNkLElBQUksQ0FBQyxpQkFBaUI7WUFDdEIsSUFBSSxDQUFDLGNBQWM7WUFDbkIsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztTQUN2QixDQUFDO1FBQ0YsT0FBTyxDQUFDLEtBQUs7S0FDZCxDQUFDO0FBQ0osQ0FBQyJ9
@@ -0,0 +1,13 @@
1
+ /**
2
+ * The `@aztec/accounts/defaults` export provides the base class {@link DefaultAccountContract} for implementing account contracts that use the default entrypoint payload module.
3
+ *
4
+ * Read more in {@link https://docs.aztec.network/dev_docs/wallets/writing_an_account_contract | Writing an account contract}.
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ export * from './entrypoint_payload.js';
9
+ export * from './account_entrypoint.js';
10
+ export * from './account_interface.js';
11
+ export * from './account_contract.js';
12
+ export * from './constants.js';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/defaults/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * The `@aztec/accounts/defaults` export provides the base class {@link DefaultAccountContract} for implementing account contracts that use the default entrypoint payload module.
3
+ *
4
+ * Read more in {@link https://docs.aztec.network/dev_docs/wallets/writing_an_account_contract | Writing an account contract}.
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ export * from './entrypoint_payload.js';
9
+ export * from './account_entrypoint.js';
10
+ export * from './account_interface.js';
11
+ export * from './account_contract.js';
12
+ export * from './constants.js';
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGVmYXVsdHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGdCQUFnQixDQUFDIn0=
@@ -0,0 +1,15 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import { AuthWitnessProvider } from '@aztec/aztec.js/account';
3
+ import { CompleteAddress } from '@aztec/types';
4
+ import { DefaultAccountContract } from '../defaults/account_contract.js';
5
+ /**
6
+ * Account contract that authenticates transactions using ECDSA signatures
7
+ * verified against a secp256k1 public key stored in an immutable encrypted note.
8
+ */
9
+ export declare class EcdsaAccountContract extends DefaultAccountContract {
10
+ private signingPrivateKey;
11
+ constructor(signingPrivateKey: Buffer);
12
+ getDeploymentArgs(): Buffer[];
13
+ getAuthWitnessProvider(_address: CompleteAddress): AuthWitnessProvider;
14
+ }
15
+ //# sourceMappingURL=account_contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account_contract.d.ts","sourceRoot":"","sources":["../../src/ecdsa/account_contract.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAI9D,OAAO,EAAe,eAAe,EAAE,MAAM,cAAc,CAAC;AAE5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAGzE;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,sBAAsB;IAClD,OAAO,CAAC,iBAAiB;gBAAjB,iBAAiB,EAAE,MAAM;IAI7C,iBAAiB;IAKjB,sBAAsB,CAAC,QAAQ,EAAE,eAAe,GAAG,mBAAmB;CAGvE"}
@@ -0,0 +1,33 @@
1
+ import { Ecdsa } from '@aztec/circuits.js/barretenberg';
2
+ import { AuthWitness } from '@aztec/types';
3
+ import { DefaultAccountContract } from '../defaults/account_contract.js';
4
+ import { EcdsaAccountContractArtifact } from './artifact.js';
5
+ /**
6
+ * Account contract that authenticates transactions using ECDSA signatures
7
+ * verified against a secp256k1 public key stored in an immutable encrypted note.
8
+ */
9
+ export class EcdsaAccountContract extends DefaultAccountContract {
10
+ constructor(signingPrivateKey) {
11
+ super(EcdsaAccountContractArtifact);
12
+ this.signingPrivateKey = signingPrivateKey;
13
+ }
14
+ getDeploymentArgs() {
15
+ const signingPublicKey = new Ecdsa().computePublicKey(this.signingPrivateKey);
16
+ return [signingPublicKey.subarray(0, 32), signingPublicKey.subarray(32, 64)];
17
+ }
18
+ getAuthWitnessProvider(_address) {
19
+ return new EcdsaAuthWitnessProvider(this.signingPrivateKey);
20
+ }
21
+ }
22
+ /** Creates auth witnesses using ECDSA signatures. */
23
+ class EcdsaAuthWitnessProvider {
24
+ constructor(signingPrivateKey) {
25
+ this.signingPrivateKey = signingPrivateKey;
26
+ }
27
+ createAuthWitness(message) {
28
+ const ecdsa = new Ecdsa();
29
+ const signature = ecdsa.constructSignature(message.toBuffer(), this.signingPrivateKey);
30
+ return Promise.resolve(new AuthWitness(message, [...signature.r, ...signature.s]));
31
+ }
32
+ }
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudF9jb250cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lY2RzYS9hY2NvdW50X2NvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUd4RCxPQUFPLEVBQUUsV0FBVyxFQUFtQixNQUFNLGNBQWMsQ0FBQztBQUU1RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0Q7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLG9CQUFxQixTQUFRLHNCQUFzQjtJQUM5RCxZQUFvQixpQkFBeUI7UUFDM0MsS0FBSyxDQUFDLDRCQUFnRCxDQUFDLENBQUM7UUFEdEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFRO0lBRTdDLENBQUM7SUFFRCxpQkFBaUI7UUFDZixNQUFNLGdCQUFnQixHQUFHLElBQUksS0FBSyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDOUUsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxRQUF5QjtRQUM5QyxPQUFPLElBQUksd0JBQXdCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDOUQsQ0FBQztDQUNGO0FBRUQscURBQXFEO0FBQ3JELE1BQU0sd0JBQXdCO0lBQzVCLFlBQW9CLGlCQUF5QjtRQUF6QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQVE7SUFBRyxDQUFDO0lBRWpELGlCQUFpQixDQUFDLE9BQVc7UUFDM0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUMxQixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3ZGLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7Q0FDRiJ9
@@ -0,0 +1,3 @@
1
+ import { ContractArtifact } from '@aztec/aztec.js';
2
+ export declare const EcdsaAccountContractArtifact: ContractArtifact;
3
+ //# sourceMappingURL=artifact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact.d.ts","sourceRoot":"","sources":["../../src/ecdsa/artifact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAInD,eAAO,MAAM,4BAA4B,kBAA+C,CAAC"}
@@ -0,0 +1,3 @@
1
+ import EcdsaAccountContractJson from '../artifacts/EcdsaAccount.json' assert { type: 'json' };
2
+ export const EcdsaAccountContractArtifact = EcdsaAccountContractJson;
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJ0aWZhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZWNkc2EvYXJ0aWZhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyx3QkFBd0IsTUFBTSxnQ0FBZ0MsQ0FBQyxTQUFTLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUU5RixNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyx3QkFBNEMsQ0FBQyJ9
@@ -0,0 +1,31 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ /**
3
+ * The `@aztec/accounts/ecdsa` export provides an ECDSA account contract implementation, that uses an ECDSA private key for authentication, and a Grumpkin key for encryption.
4
+ * Consider using this account type when working with integrations with Ethereum wallets.
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ import { AccountManager, Salt } from '@aztec/aztec.js/account';
9
+ import { AccountWallet } from '@aztec/aztec.js/wallet';
10
+ import { AztecAddress } from '@aztec/circuits.js';
11
+ import { CompleteAddress, GrumpkinPrivateKey, PXE } from '@aztec/types';
12
+ import { EcdsaAccountContract } from './account_contract.js';
13
+ export { EcdsaAccountContract };
14
+ export { EcdsaAccountContractArtifact } from './artifact.js';
15
+ /**
16
+ * Creates an Account that relies on an ECDSA signing key for authentication.
17
+ * @param pxe - An PXE server instance.
18
+ * @param encryptionPrivateKey - Grumpkin key used for note encryption.
19
+ * @param signingPrivateKey - Secp256k1 key used for signing transactions.
20
+ * @param saltOrAddress - Deployment salt or complete address if account contract is already deployed.
21
+ */
22
+ export declare function getEcdsaAccount(pxe: PXE, encryptionPrivateKey: GrumpkinPrivateKey, signingPrivateKey: Buffer, saltOrAddress?: Salt | CompleteAddress): AccountManager;
23
+ /**
24
+ * Gets a wallet for an already registered account using ECDSA signatures.
25
+ * @param pxe - An PXE server instance.
26
+ * @param address - Address for the account.
27
+ * @param signingPrivateKey - ECDSA key used for signing transactions.
28
+ * @returns A wallet for this account that can be used to interact with a contract instance.
29
+ */
30
+ export declare function getEcdsaWallet(pxe: PXE, address: AztecAddress, signingPrivateKey: Buffer): Promise<AccountWallet>;
31
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ecdsa/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;AACH,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAa,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAExE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAChC,OAAO,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAE7D;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,GAAG,EACR,oBAAoB,EAAE,kBAAkB,EACxC,iBAAiB,EAAE,MAAM,EACzB,aAAa,CAAC,EAAE,IAAI,GAAG,eAAe,GACrC,cAAc,CAEhB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAEjH"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * The `@aztec/accounts/ecdsa` export provides an ECDSA account contract implementation, that uses an ECDSA private key for authentication, and a Grumpkin key for encryption.
3
+ * Consider using this account type when working with integrations with Ethereum wallets.
4
+ *
5
+ * @packageDocumentation
6
+ */
7
+ import { AccountManager } from '@aztec/aztec.js/account';
8
+ import { getWallet } from '@aztec/aztec.js/wallet';
9
+ import { EcdsaAccountContract } from './account_contract.js';
10
+ export { EcdsaAccountContract };
11
+ export { EcdsaAccountContractArtifact } from './artifact.js';
12
+ /**
13
+ * Creates an Account that relies on an ECDSA signing key for authentication.
14
+ * @param pxe - An PXE server instance.
15
+ * @param encryptionPrivateKey - Grumpkin key used for note encryption.
16
+ * @param signingPrivateKey - Secp256k1 key used for signing transactions.
17
+ * @param saltOrAddress - Deployment salt or complete address if account contract is already deployed.
18
+ */
19
+ export function getEcdsaAccount(pxe, encryptionPrivateKey, signingPrivateKey, saltOrAddress) {
20
+ return new AccountManager(pxe, encryptionPrivateKey, new EcdsaAccountContract(signingPrivateKey), saltOrAddress);
21
+ }
22
+ /**
23
+ * Gets a wallet for an already registered account using ECDSA signatures.
24
+ * @param pxe - An PXE server instance.
25
+ * @param address - Address for the account.
26
+ * @param signingPrivateKey - ECDSA key used for signing transactions.
27
+ * @returns A wallet for this account that can be used to interact with a contract instance.
28
+ */
29
+ export function getEcdsaWallet(pxe, address, signingPrivateKey) {
30
+ return getWallet(pxe, address, new EcdsaAccountContract(signingPrivateKey));
31
+ }
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZWNkc2EvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFDSCxPQUFPLEVBQUUsY0FBYyxFQUFRLE1BQU0seUJBQXlCLENBQUM7QUFDL0QsT0FBTyxFQUFpQixTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUlsRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQztBQUNoQyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0Q7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FDN0IsR0FBUSxFQUNSLG9CQUF3QyxFQUN4QyxpQkFBeUIsRUFDekIsYUFBc0M7SUFFdEMsT0FBTyxJQUFJLGNBQWMsQ0FBQyxHQUFHLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQ25ILENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLEdBQVEsRUFBRSxPQUFxQixFQUFFLGlCQUF5QjtJQUN2RixPQUFPLFNBQVMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksb0JBQW9CLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0FBQzlFLENBQUMifQ==
@@ -0,0 +1,15 @@
1
+ import { AuthWitnessProvider } from '@aztec/aztec.js/account';
2
+ import { Fr } from '@aztec/foundation/fields';
3
+ import { CompleteAddress, GrumpkinPrivateKey } from '@aztec/types';
4
+ import { DefaultAccountContract } from '../defaults/account_contract.js';
5
+ /**
6
+ * Account contract that authenticates transactions using Schnorr signatures
7
+ * verified against a Grumpkin public key stored in an immutable encrypted note.
8
+ */
9
+ export declare class SchnorrAccountContract extends DefaultAccountContract {
10
+ private signingPrivateKey;
11
+ constructor(signingPrivateKey: GrumpkinPrivateKey);
12
+ getDeploymentArgs(): Fr[];
13
+ getAuthWitnessProvider(_address: CompleteAddress): AuthWitnessProvider;
14
+ }
15
+ //# sourceMappingURL=account_contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account_contract.d.ts","sourceRoot":"","sources":["../../src/schnorr/account_contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAG9D,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAe,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEhF,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAGzE;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,sBAAsB;IACpD,OAAO,CAAC,iBAAiB;gBAAjB,iBAAiB,EAAE,kBAAkB;IAIzD,iBAAiB;IAKjB,sBAAsB,CAAC,QAAQ,EAAE,eAAe,GAAG,mBAAmB;CAGvE"}
@@ -0,0 +1,33 @@
1
+ import { Schnorr } from '@aztec/circuits.js/barretenberg';
2
+ import { AuthWitness } from '@aztec/types';
3
+ import { DefaultAccountContract } from '../defaults/account_contract.js';
4
+ import { SchnorrAccountContractArtifact } from './artifact.js';
5
+ /**
6
+ * Account contract that authenticates transactions using Schnorr signatures
7
+ * verified against a Grumpkin public key stored in an immutable encrypted note.
8
+ */
9
+ export class SchnorrAccountContract extends DefaultAccountContract {
10
+ constructor(signingPrivateKey) {
11
+ super(SchnorrAccountContractArtifact);
12
+ this.signingPrivateKey = signingPrivateKey;
13
+ }
14
+ getDeploymentArgs() {
15
+ const signingPublicKey = new Schnorr().computePublicKey(this.signingPrivateKey);
16
+ return [signingPublicKey.x, signingPublicKey.y];
17
+ }
18
+ getAuthWitnessProvider(_address) {
19
+ return new SchnorrAuthWitnessProvider(this.signingPrivateKey);
20
+ }
21
+ }
22
+ /** Creates auth witnesses using Schnorr signatures. */
23
+ class SchnorrAuthWitnessProvider {
24
+ constructor(signingPrivateKey) {
25
+ this.signingPrivateKey = signingPrivateKey;
26
+ }
27
+ createAuthWitness(message) {
28
+ const schnorr = new Schnorr();
29
+ const signature = schnorr.constructSignature(message.toBuffer(), this.signingPrivateKey).toBuffer();
30
+ return Promise.resolve(new AuthWitness(message, [...signature]));
31
+ }
32
+ }
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudF9jb250cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hub3JyL2FjY291bnRfY29udHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRzFELE9BQU8sRUFBRSxXQUFXLEVBQXVDLE1BQU0sY0FBYyxDQUFDO0FBRWhGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsc0JBQXNCO0lBQ2hFLFlBQW9CLGlCQUFxQztRQUN2RCxLQUFLLENBQUMsOEJBQWtELENBQUMsQ0FBQztRQUR4QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW9CO0lBRXpELENBQUM7SUFFRCxpQkFBaUI7UUFDZixNQUFNLGdCQUFnQixHQUFHLElBQUksT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDaEYsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsc0JBQXNCLENBQUMsUUFBeUI7UUFDOUMsT0FBTyxJQUFJLDBCQUEwQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7Q0FDRjtBQUVELHVEQUF1RDtBQUN2RCxNQUFNLDBCQUEwQjtJQUM5QixZQUFvQixpQkFBcUM7UUFBckMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFvQjtJQUFHLENBQUM7SUFFN0QsaUJBQWlCLENBQUMsT0FBVztRQUMzQixNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzlCLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDcEcsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7Q0FDRiJ9
@@ -0,0 +1,3 @@
1
+ import { ContractArtifact } from '@aztec/aztec.js';
2
+ export declare const SchnorrAccountContractArtifact: ContractArtifact;
3
+ //# sourceMappingURL=artifact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact.d.ts","sourceRoot":"","sources":["../../src/schnorr/artifact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAInD,eAAO,MAAM,8BAA8B,kBAAiD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import SchnorrAccountContractJson from '../artifacts/SchnorrAccount.json' assert { type: 'json' };
2
+ export const SchnorrAccountContractArtifact = SchnorrAccountContractJson;
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJ0aWZhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2Nobm9yci9hcnRpZmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLDBCQUEwQixNQUFNLGtDQUFrQyxDQUFDLFNBQVMsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBRWxHLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLDBCQUE4QyxDQUFDIn0=
@@ -0,0 +1,30 @@
1
+ /**
2
+ * The `@aztec/accounts/schnorr` export provides an account contract implementation that uses Schnorr signatures with a Grumpkin key for authentication, and a separate Grumpkin key for encryption.
3
+ * This is the suggested account contract type for most use cases within Aztec.
4
+ *
5
+ * @packageDocumentation
6
+ */
7
+ import { AccountManager, Salt } from '@aztec/aztec.js/account';
8
+ import { AccountWallet } from '@aztec/aztec.js/wallet';
9
+ import { AztecAddress } from '@aztec/circuits.js';
10
+ import { CompleteAddress, GrumpkinPrivateKey, PXE } from '@aztec/types';
11
+ import { SchnorrAccountContract } from './account_contract.js';
12
+ export { SchnorrAccountContract };
13
+ export { SchnorrAccountContractArtifact } from './artifact.js';
14
+ /**
15
+ * Creates an Account Manager that relies on a Grumpkin signing key for authentication.
16
+ * @param pxe - An PXE server instance.
17
+ * @param encryptionPrivateKey - Grumpkin key used for note encryption.
18
+ * @param signingPrivateKey - Grumpkin key used for signing transactions.
19
+ * @param saltOrAddress - Deployment salt or complete address if account contract is already deployed.
20
+ */
21
+ export declare function getSchnorrAccount(pxe: PXE, encryptionPrivateKey: GrumpkinPrivateKey, signingPrivateKey: GrumpkinPrivateKey, saltOrAddress?: Salt | CompleteAddress): AccountManager;
22
+ /**
23
+ * Gets a wallet for an already registered account using Schnorr signatures.
24
+ * @param pxe - An PXE server instance.
25
+ * @param address - Address for the account.
26
+ * @param signingPrivateKey - Grumpkin key used for signing transactions.
27
+ * @returns A wallet for this account that can be used to interact with a contract instance.
28
+ */
29
+ export declare function getSchnorrWallet(pxe: PXE, address: AztecAddress, signingPrivateKey: GrumpkinPrivateKey): Promise<AccountWallet>;
30
+ //# sourceMappingURL=index.d.ts.map