@aztec/aztec.js 0.7.3 → 0.7.4

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 (147) hide show
  1. package/.tsbuildinfo +1 -1
  2. package/dest/abis/ecdsa_account_contract.json +530 -11
  3. package/dest/abis/schnorr_account_contract.json +530 -11
  4. package/dest/abis/schnorr_single_key_account_contract.json +523 -24
  5. package/dest/account/contract/base_account_contract.d.ts +17 -0
  6. package/dest/account/contract/base_account_contract.d.ts.map +1 -0
  7. package/dest/account/contract/base_account_contract.js +17 -0
  8. package/dest/account/contract/ecdsa_account_contract.d.ts +6 -7
  9. package/dest/account/contract/ecdsa_account_contract.d.ts.map +1 -1
  10. package/dest/account/contract/ecdsa_account_contract.js +18 -9
  11. package/dest/account/contract/index.d.ts +11 -8
  12. package/dest/account/contract/index.d.ts.map +1 -1
  13. package/dest/account/contract/index.js +2 -2
  14. package/dest/account/contract/schnorr_account_contract.d.ts +7 -8
  15. package/dest/account/contract/schnorr_account_contract.d.ts.map +1 -1
  16. package/dest/account/contract/schnorr_account_contract.js +17 -9
  17. package/dest/account/contract/single_key_account_contract.d.ts +6 -8
  18. package/dest/account/contract/single_key_account_contract.d.ts.map +1 -1
  19. package/dest/account/contract/single_key_account_contract.js +26 -7
  20. package/dest/account/defaults/default_entrypoint.d.ts +17 -0
  21. package/dest/account/defaults/default_entrypoint.d.ts.map +1 -0
  22. package/dest/account/defaults/default_entrypoint.js +90 -0
  23. package/dest/account/defaults/default_interface.d.ts +17 -0
  24. package/dest/account/defaults/default_interface.d.ts.map +1 -0
  25. package/dest/account/defaults/default_interface.js +22 -0
  26. package/dest/account/defaults/entrypoint_payload.d.ts.map +1 -0
  27. package/dest/account/defaults/entrypoint_payload.js +48 -0
  28. package/dest/account/defaults/index.d.ts +4 -0
  29. package/dest/account/defaults/index.d.ts.map +1 -0
  30. package/dest/account/defaults/index.js +4 -0
  31. package/dest/account/index.d.ts +8 -8
  32. package/dest/account/index.d.ts.map +1 -1
  33. package/dest/account/index.js +11 -12
  34. package/dest/account/interface.d.ts +31 -0
  35. package/dest/account/interface.d.ts.map +1 -0
  36. package/dest/account/interface.js +3 -0
  37. package/dest/account/{deploy_account_sent_tx.d.ts → manager/deploy_account_sent_tx.d.ts} +1 -1
  38. package/dest/account/manager/deploy_account_sent_tx.d.ts.map +1 -0
  39. package/dest/account/{deploy_account_sent_tx.js → manager/deploy_account_sent_tx.js} +2 -2
  40. package/dest/account/{account.d.ts → manager/index.d.ts} +7 -6
  41. package/dest/account/manager/index.d.ts.map +1 -0
  42. package/dest/account/{account.js → manager/index.js} +7 -7
  43. package/dest/aztec_rpc_client.d.ts.map +1 -0
  44. package/dest/aztec_rpc_client.js +19 -0
  45. package/dest/contract/contract.d.ts +1 -1
  46. package/dest/contract/contract.d.ts.map +1 -1
  47. package/dest/contract/contract.js +1 -1
  48. package/dest/contract/contract.test.js +9 -3
  49. package/dest/contract/contract_base.d.ts +1 -1
  50. package/dest/contract/contract_base.d.ts.map +1 -1
  51. package/dest/contract/contract_function_interaction.d.ts +4 -4
  52. package/dest/contract/contract_function_interaction.d.ts.map +1 -1
  53. package/dest/contract/contract_function_interaction.js +1 -1
  54. package/dest/contract_deployer/deploy_method.d.ts.map +1 -1
  55. package/dest/contract_deployer/deploy_method.js +2 -1
  56. package/dest/index.d.ts +2 -1
  57. package/dest/index.d.ts.map +1 -1
  58. package/dest/index.js +3 -2
  59. package/dest/main.js +1 -1
  60. package/dest/sandbox/index.d.ts +70 -14
  61. package/dest/sandbox/index.d.ts.map +1 -1
  62. package/dest/utils/account.d.ts +1 -1
  63. package/dest/utils/account.d.ts.map +1 -1
  64. package/dest/utils/account.js +1 -1
  65. package/dest/wallet/account_wallet.d.ts +29 -0
  66. package/dest/wallet/account_wallet.d.ts.map +1 -0
  67. package/dest/wallet/account_wallet.js +61 -0
  68. package/dest/wallet/base_wallet.d.ts +38 -0
  69. package/dest/wallet/base_wallet.d.ts.map +1 -0
  70. package/dest/wallet/base_wallet.js +78 -0
  71. package/dest/wallet/index.d.ts +9 -0
  72. package/dest/wallet/index.d.ts.map +1 -0
  73. package/dest/wallet/index.js +4 -0
  74. package/dest/wallet/signerless_wallet.d.ts +13 -0
  75. package/dest/wallet/signerless_wallet.d.ts.map +1 -0
  76. package/dest/wallet/signerless_wallet.js +26 -0
  77. package/package.json +4 -4
  78. package/src/abis/ecdsa_account_contract.json +530 -11
  79. package/src/abis/schnorr_account_contract.json +530 -11
  80. package/src/abis/schnorr_single_key_account_contract.json +523 -24
  81. package/src/account/contract/base_account_contract.ts +25 -0
  82. package/src/account/contract/ecdsa_account_contract.ts +21 -12
  83. package/src/account/contract/index.ts +13 -8
  84. package/src/account/contract/schnorr_account_contract.ts +20 -12
  85. package/src/account/contract/single_key_account_contract.ts +28 -12
  86. package/src/account/defaults/default_entrypoint.ts +95 -0
  87. package/src/account/defaults/default_interface.ts +36 -0
  88. package/src/account/defaults/index.ts +3 -0
  89. package/src/account/index.ts +14 -14
  90. package/src/account/interface.ts +35 -0
  91. package/src/account/{deploy_account_sent_tx.ts → manager/deploy_account_sent_tx.ts} +1 -1
  92. package/src/account/{account.ts → manager/index.ts} +8 -7
  93. package/src/{aztec_rpc_client/aztec_rpc_client.ts → aztec_rpc_client.ts} +2 -0
  94. package/src/contract/contract.test.ts +9 -3
  95. package/src/contract/contract.ts +1 -1
  96. package/src/contract/contract_base.ts +1 -1
  97. package/src/contract/contract_function_interaction.ts +3 -3
  98. package/src/contract_deployer/deploy_method.ts +1 -0
  99. package/src/index.ts +2 -1
  100. package/src/utils/account.ts +1 -1
  101. package/src/wallet/account_wallet.ts +70 -0
  102. package/src/wallet/base_wallet.ts +103 -0
  103. package/src/wallet/index.ts +10 -0
  104. package/src/wallet/signerless_wallet.ts +39 -0
  105. package/dest/abis/schnorr_auth_witness_account_contract.json +0 -643
  106. package/dest/account/account.d.ts.map +0 -1
  107. package/dest/account/contract/auth_witness_account_contract.d.ts +0 -17
  108. package/dest/account/contract/auth_witness_account_contract.d.ts.map +0 -1
  109. package/dest/account/contract/auth_witness_account_contract.js +0 -23
  110. package/dest/account/deploy_account_sent_tx.d.ts.map +0 -1
  111. package/dest/account/entrypoint/auth_witness_account_entrypoint.d.ts +0 -74
  112. package/dest/account/entrypoint/auth_witness_account_entrypoint.d.ts.map +0 -1
  113. package/dest/account/entrypoint/auth_witness_account_entrypoint.js +0 -68
  114. package/dest/account/entrypoint/entrypoint_payload.d.ts.map +0 -1
  115. package/dest/account/entrypoint/entrypoint_payload.js +0 -48
  116. package/dest/account/entrypoint/entrypoint_utils.d.ts +0 -14
  117. package/dest/account/entrypoint/entrypoint_utils.d.ts.map +0 -1
  118. package/dest/account/entrypoint/entrypoint_utils.js +0 -24
  119. package/dest/account/entrypoint/index.d.ts +0 -20
  120. package/dest/account/entrypoint/index.d.ts.map +0 -1
  121. package/dest/account/entrypoint/index.js +0 -7
  122. package/dest/account/entrypoint/single_key_account_entrypoint.d.ts +0 -19
  123. package/dest/account/entrypoint/single_key_account_entrypoint.d.ts.map +0 -1
  124. package/dest/account/entrypoint/single_key_account_entrypoint.js +0 -50
  125. package/dest/account/entrypoint/stored_key_account_entrypoint.d.ts +0 -20
  126. package/dest/account/entrypoint/stored_key_account_entrypoint.d.ts.map +0 -1
  127. package/dest/account/entrypoint/stored_key_account_entrypoint.js +0 -47
  128. package/dest/aztec_rpc_client/aztec_rpc_client.d.ts.map +0 -1
  129. package/dest/aztec_rpc_client/aztec_rpc_client.js +0 -18
  130. package/dest/aztec_rpc_client/index.d.ts +0 -3
  131. package/dest/aztec_rpc_client/index.d.ts.map +0 -1
  132. package/dest/aztec_rpc_client/index.js +0 -3
  133. package/dest/aztec_rpc_client/wallet.d.ts +0 -109
  134. package/dest/aztec_rpc_client/wallet.d.ts.map +0 -1
  135. package/dest/aztec_rpc_client/wallet.js +0 -186
  136. package/src/abis/schnorr_auth_witness_account_contract.json +0 -643
  137. package/src/account/contract/auth_witness_account_contract.ts +0 -35
  138. package/src/account/entrypoint/auth_witness_account_entrypoint.ts +0 -125
  139. package/src/account/entrypoint/entrypoint_utils.ts +0 -31
  140. package/src/account/entrypoint/index.ts +0 -23
  141. package/src/account/entrypoint/single_key_account_entrypoint.ts +0 -55
  142. package/src/account/entrypoint/stored_key_account_entrypoint.ts +0 -56
  143. package/src/aztec_rpc_client/index.ts +0 -2
  144. package/src/aztec_rpc_client/wallet.ts +0 -219
  145. /package/dest/account/{entrypoint → defaults}/entrypoint_payload.d.ts +0 -0
  146. /package/dest/{aztec_rpc_client/aztec_rpc_client.d.ts → aztec_rpc_client.d.ts} +0 -0
  147. /package/src/account/{entrypoint → defaults}/entrypoint_payload.ts +0 -0
@@ -0,0 +1,17 @@
1
+ import { ContractAbi } from '@aztec/foundation/abi';
2
+ import { CompleteAddress, NodeInfo } from '@aztec/types';
3
+ import { AccountInterface, AuthWitnessProvider } from '../interface.js';
4
+ import { AccountContract } from './index.js';
5
+ /**
6
+ * Base class for implementing an account contract. Requires that the account uses the
7
+ * default entrypoint method signature.
8
+ */
9
+ export declare abstract class BaseAccountContract implements AccountContract {
10
+ private abi;
11
+ abstract getAuthWitnessProvider(address: CompleteAddress): AuthWitnessProvider;
12
+ abstract getDeploymentArgs(): Promise<any[]>;
13
+ constructor(abi: ContractAbi);
14
+ getContractAbi(): ContractAbi;
15
+ getInterface(address: CompleteAddress, nodeInfo: NodeInfo): Promise<AccountInterface>;
16
+ }
17
+ //# sourceMappingURL=base_account_contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base_account_contract.d.ts","sourceRoot":"","sources":["../../../src/account/contract/base_account_contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAGzD,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C;;;GAGG;AACH,8BAAsB,mBAAoB,YAAW,eAAe;IAItD,OAAO,CAAC,GAAG;IAHvB,QAAQ,CAAC,sBAAsB,CAAC,OAAO,EAAE,eAAe,GAAG,mBAAmB;IAC9E,QAAQ,CAAC,iBAAiB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;gBAExB,GAAG,EAAE,WAAW;IAEpC,cAAc,IAAI,WAAW;IAI7B,YAAY,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAGtF"}
@@ -0,0 +1,17 @@
1
+ import { DefaultAccountInterface } from '../defaults/default_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 BaseAccountContract {
7
+ constructor(abi) {
8
+ this.abi = abi;
9
+ }
10
+ getContractAbi() {
11
+ return this.abi;
12
+ }
13
+ getInterface(address, nodeInfo) {
14
+ return Promise.resolve(new DefaultAccountInterface(this.getAuthWitnessProvider(address), address, nodeInfo));
15
+ }
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZV9hY2NvdW50X2NvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FjY291bnQvY29udHJhY3QvYmFzZV9hY2NvdW50X2NvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBSTNFOzs7R0FHRztBQUNILE1BQU0sT0FBZ0IsbUJBQW1CO0lBSXZDLFlBQW9CLEdBQWdCO1FBQWhCLFFBQUcsR0FBSCxHQUFHLENBQWE7SUFBRyxDQUFDO0lBRXhDLGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDbEIsQ0FBQztJQUVELFlBQVksQ0FBQyxPQUF3QixFQUFFLFFBQWtCO1FBQ3ZELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLHVCQUF1QixDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUMvRyxDQUFDO0NBQ0YifQ==
@@ -1,16 +1,15 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
- import { ContractAbi } from '@aztec/foundation/abi';
3
- import { CompleteAddress, NodeInfo } from '@aztec/types';
4
- import { StoredKeyAccountEntrypoint } from '../entrypoint/stored_key_account_entrypoint.js';
5
- import { AccountContract } from './index.js';
2
+ import { CompleteAddress } from '@aztec/types';
3
+ import { AuthWitnessProvider } from '../interface.js';
4
+ import { BaseAccountContract } from './base_account_contract.js';
6
5
  /**
7
6
  * Account contract that authenticates transactions using ECDSA signatures
8
7
  * verified against a secp256k1 public key stored in an immutable encrypted note.
9
- */ export declare class EcdsaAccountContract implements AccountContract {
8
+ */
9
+ export declare class EcdsaAccountContract extends BaseAccountContract {
10
10
  private signingPrivateKey;
11
11
  constructor(signingPrivateKey: Buffer);
12
12
  getDeploymentArgs(): Promise<Buffer[]>;
13
- getEntrypoint({ address }: CompleteAddress, { chainId, version }: NodeInfo): Promise<StoredKeyAccountEntrypoint>;
14
- getContractAbi(): ContractAbi;
13
+ getAuthWitnessProvider(_address: CompleteAddress): AuthWitnessProvider;
15
14
  }
16
15
  //# sourceMappingURL=ecdsa_account_contract.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ecdsa_account_contract.d.ts","sourceRoot":"","sources":["../../../src/account/contract/ecdsa_account_contract.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAGzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,gDAAgD,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C;;;GAGG,CAAC,qBAAa,oBAAqB,YAAW,eAAe;IAClD,OAAO,CAAC,iBAAiB;gBAAjB,iBAAiB,EAAE,MAAM;IAEhC,iBAAiB;IAKjB,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,QAAQ;IAMhF,cAAc,IAAI,WAAW;CAGrC"}
1
+ {"version":3,"file":"ecdsa_account_contract.d.ts","sourceRoot":"","sources":["../../../src/account/contract/ecdsa_account_contract.ts"],"names":[],"mappings":";AAGA,OAAO,EAAe,eAAe,EAAE,MAAM,cAAc,CAAC;AAG5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,mBAAmB;IAC/C,OAAO,CAAC,iBAAiB;gBAAjB,iBAAiB,EAAE,MAAM;IAIvC,iBAAiB;IAKvB,sBAAsB,CAAC,QAAQ,EAAE,eAAe,GAAG,mBAAmB;CAGvE"}
@@ -1,24 +1,33 @@
1
1
  import { Ecdsa } from '@aztec/circuits.js/barretenberg';
2
+ import { AuthWitness } from '@aztec/types';
2
3
  import EcdsaAccountContractAbi from '../../abis/ecdsa_account_contract.json' assert { type: 'json' };
3
- import { StoredKeyAccountEntrypoint } from '../entrypoint/stored_key_account_entrypoint.js';
4
+ import { BaseAccountContract } from './base_account_contract.js';
4
5
  /**
5
6
  * Account contract that authenticates transactions using ECDSA signatures
6
7
  * verified against a secp256k1 public key stored in an immutable encrypted note.
7
- */ export class EcdsaAccountContract {
8
+ */
9
+ export class EcdsaAccountContract extends BaseAccountContract {
8
10
  constructor(signingPrivateKey) {
11
+ super(EcdsaAccountContractAbi);
9
12
  this.signingPrivateKey = signingPrivateKey;
10
13
  }
11
14
  async getDeploymentArgs() {
12
15
  const signingPublicKey = await Ecdsa.new().then(e => e.computePublicKey(this.signingPrivateKey));
13
16
  return [signingPublicKey.subarray(0, 32), signingPublicKey.subarray(32, 64)];
14
17
  }
15
- async getEntrypoint({ address }, { chainId, version }) {
16
- const ecdsa = await Ecdsa.new();
17
- const signClosure = (msg) => ecdsa.constructSignature(msg, this.signingPrivateKey);
18
- return new StoredKeyAccountEntrypoint(address, signClosure, chainId, version);
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;
19
26
  }
20
- getContractAbi() {
21
- return EcdsaAccountContractAbi;
27
+ async createAuthWitness(message) {
28
+ const ecdsa = await Ecdsa.new();
29
+ const signature = ecdsa.constructSignature(message.toBuffer(), this.signingPrivateKey);
30
+ return new AuthWitness(message, [...signature.r, ...signature.s]);
22
31
  }
23
32
  }
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNkc2FfYWNjb3VudF9jb250cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hY2NvdW50L2NvbnRyYWN0L2VjZHNhX2FjY291bnRfY29udHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBSXhELE9BQU8sdUJBQXVCLE1BQU0sd0NBQXdDLENBQUMsU0FBUyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7QUFDckcsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFHNUY7OztHQUdHLENBQUMsTUFBTSxPQUFPLG9CQUFvQjtJQUNuQyxZQUFvQixpQkFBeUI7UUFBekIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFRO0lBQUcsQ0FBQztJQUUxQyxLQUFLLENBQUMsaUJBQWlCO1FBQzVCLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7UUFDakcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFTSxLQUFLLENBQUMsYUFBYSxDQUFDLEVBQUUsT0FBTyxFQUFtQixFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBWTtRQUNyRixNQUFNLEtBQUssR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNoQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMzRixPQUFPLElBQUksMEJBQTBCLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVNLGNBQWM7UUFDbkIsT0FBTyx1QkFBaUQsQ0FBQztJQUMzRCxDQUFDO0NBQ0YifQ==
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNkc2FfYWNjb3VudF9jb250cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hY2NvdW50L2NvbnRyYWN0L2VjZHNhX2FjY291bnRfY29udHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXhELE9BQU8sRUFBRSxXQUFXLEVBQW1CLE1BQU0sY0FBYyxDQUFDO0FBRTVELE9BQU8sdUJBQXVCLE1BQU0sd0NBQXdDLENBQUMsU0FBUyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7QUFFckcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFakU7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLG9CQUFxQixTQUFRLG1CQUFtQjtJQUMzRCxZQUFvQixpQkFBeUI7UUFDM0MsS0FBSyxDQUFDLHVCQUFpRCxDQUFDLENBQUM7UUFEdkMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFRO0lBRTdDLENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCO1FBQ3JCLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7UUFDakcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxRQUF5QjtRQUM5QyxPQUFPLElBQUksd0JBQXdCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDOUQsQ0FBQztDQUNGO0FBRUQscURBQXFEO0FBQ3JELE1BQU0sd0JBQXdCO0lBQzVCLFlBQW9CLGlCQUF5QjtRQUF6QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQVE7SUFBRyxDQUFDO0lBRWpELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxPQUFXO1FBQ2pDLE1BQU0sS0FBSyxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdkYsT0FBTyxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0NBQ0YifQ==
@@ -1,13 +1,13 @@
1
1
  import { ContractAbi } from '@aztec/foundation/abi';
2
2
  import { CompleteAddress, NodeInfo } from '@aztec/types';
3
- import { Entrypoint } from '../index.js';
3
+ import { AccountInterface } from '../interface.js';
4
4
  export * from './ecdsa_account_contract.js';
5
5
  export * from './schnorr_account_contract.js';
6
6
  export * from './single_key_account_contract.js';
7
- export * from './auth_witness_account_contract.js';
7
+ export * from './base_account_contract.js';
8
8
  /**
9
- * An account contract instance. Knows its ABI, deployment arguments, and to create
10
- * transaction execution requests out of function calls through an entrypoint.
9
+ * An account contract instance. Knows its ABI, deployment arguments, how to create
10
+ * transaction execution requests out of function calls, and how to authorize actions.
11
11
  */
12
12
  export interface AccountContract {
13
13
  /**
@@ -19,10 +19,13 @@ export interface AccountContract {
19
19
  */
20
20
  getDeploymentArgs(): Promise<any[]>;
21
21
  /**
22
- * Creates an entrypoint for creating transaction execution requests for this account contract.
23
- * @param address - Complete address of the deployed account contract.
24
- * @param nodeInfo - Chain id and protocol version where the account contract is deployed.
22
+ * Returns the account interface for this account contract given a deployment at the provided address.
23
+ * The account interface is responsible for assembling tx requests given requested function calls, and
24
+ * for creating signed auth witnesses given action identifiers (message hashes).
25
+ * @param address - Address where this account contract is deployed.
26
+ * @param nodeInfo - Info on the chain where it is deployed.
27
+ * @returns An account interface instance for creating tx requests and authorizing actions.
25
28
  */
26
- getEntrypoint(address: CompleteAddress, nodeInfo: NodeInfo): Promise<Entrypoint>;
29
+ getInterface(address: CompleteAddress, nodeInfo: NodeInfo): Promise<AccountInterface>;
27
30
  }
28
31
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/account/contract/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,oCAAoC,CAAC;AAGnD;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,cAAc,IAAI,WAAW,CAAC;IAC9B;;OAEG;IACH,iBAAiB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACpC;;;;OAIG;IACH,aAAa,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAClF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/account/contract/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAG3C;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,cAAc,IAAI,WAAW,CAAC;IAE9B;;OAEG;IACH,iBAAiB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAEpC;;;;;;;OAOG;IACH,YAAY,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACvF"}
@@ -1,6 +1,6 @@
1
1
  export * from './ecdsa_account_contract.js';
2
2
  export * from './schnorr_account_contract.js';
3
3
  export * from './single_key_account_contract.js';
4
- export * from './auth_witness_account_contract.js';
4
+ export * from './base_account_contract.js';
5
5
  // docs:end:account-contract-interface
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWNjb3VudC9jb250cmFjdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLG9DQUFvQyxDQUFDO0FBdUJuRCxzQ0FBc0MifQ==
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWNjb3VudC9jb250cmFjdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLDRCQUE0QixDQUFDO0FBNEIzQyxzQ0FBc0MifQ==
@@ -1,16 +1,15 @@
1
- import { ContractAbi } from '@aztec/foundation/abi';
2
- import { CompleteAddress, GrumpkinPrivateKey, NodeInfo } from '@aztec/types';
3
- import { StoredKeyAccountEntrypoint } from '../entrypoint/stored_key_account_entrypoint.js';
4
- import { AccountContract } from './index.js';
1
+ import { Fr } from '@aztec/circuits.js';
2
+ import { CompleteAddress, GrumpkinPrivateKey } from '@aztec/types';
3
+ import { AuthWitnessProvider } from '../interface.js';
4
+ import { BaseAccountContract } from './base_account_contract.js';
5
5
  /**
6
6
  * Account contract that authenticates transactions using Schnorr signatures
7
7
  * verified against a Grumpkin public key stored in an immutable encrypted note.
8
8
  */
9
- export declare class SchnorrAccountContract implements AccountContract {
9
+ export declare class SchnorrAccountContract extends BaseAccountContract {
10
10
  private signingPrivateKey;
11
11
  constructor(signingPrivateKey: GrumpkinPrivateKey);
12
- getDeploymentArgs(): Promise<import("@aztec/circuits.js").Fr[]>;
13
- getEntrypoint({ address }: CompleteAddress, { chainId, version }: NodeInfo): Promise<StoredKeyAccountEntrypoint>;
14
- getContractAbi(): ContractAbi;
12
+ getDeploymentArgs(): Promise<Fr[]>;
13
+ getAuthWitnessProvider(_address: CompleteAddress): AuthWitnessProvider;
15
14
  }
16
15
  //# sourceMappingURL=schnorr_account_contract.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schnorr_account_contract.d.ts","sourceRoot":"","sources":["../../../src/account/contract/schnorr_account_contract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAG7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,gDAAgD,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C;;;GAGG;AACH,qBAAa,sBAAuB,YAAW,eAAe;IAChD,OAAO,CAAC,iBAAiB;gBAAjB,iBAAiB,EAAE,kBAAkB;IAE5C,iBAAiB;IAKjB,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,QAAQ;IAMhF,cAAc,IAAI,WAAW;CAGrC"}
1
+ {"version":3,"file":"schnorr_account_contract.d.ts","sourceRoot":"","sources":["../../../src/account/contract/schnorr_account_contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAGxC,OAAO,EAAe,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGhF,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,mBAAmB;IACjD,OAAO,CAAC,iBAAiB;gBAAjB,iBAAiB,EAAE,kBAAkB;IAInD,iBAAiB;IAKvB,sBAAsB,CAAC,QAAQ,EAAE,eAAe,GAAG,mBAAmB;CAGvE"}
@@ -1,25 +1,33 @@
1
1
  import { Schnorr } from '@aztec/circuits.js/barretenberg';
2
+ import { AuthWitness } from '@aztec/types';
2
3
  import SchnorrAccountContractAbi from '../../abis/schnorr_account_contract.json' assert { type: 'json' };
3
- import { StoredKeyAccountEntrypoint } from '../entrypoint/stored_key_account_entrypoint.js';
4
+ import { BaseAccountContract } from './base_account_contract.js';
4
5
  /**
5
6
  * Account contract that authenticates transactions using Schnorr signatures
6
7
  * verified against a Grumpkin public key stored in an immutable encrypted note.
7
8
  */
8
- export class SchnorrAccountContract {
9
+ export class SchnorrAccountContract extends BaseAccountContract {
9
10
  constructor(signingPrivateKey) {
11
+ super(SchnorrAccountContractAbi);
10
12
  this.signingPrivateKey = signingPrivateKey;
11
13
  }
12
14
  async getDeploymentArgs() {
13
15
  const signingPublicKey = await Schnorr.new().then(e => e.computePublicKey(this.signingPrivateKey));
14
16
  return [signingPublicKey.x, signingPublicKey.y];
15
17
  }
16
- async getEntrypoint({ address }, { chainId, version }) {
17
- const schnorr = await Schnorr.new();
18
- const signClosure = (msg) => schnorr.constructSignature(msg, this.signingPrivateKey);
19
- return new StoredKeyAccountEntrypoint(address, signClosure, chainId, version);
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;
20
26
  }
21
- getContractAbi() {
22
- return SchnorrAccountContractAbi;
27
+ async createAuthWitness(message) {
28
+ const schnorr = await Schnorr.new();
29
+ const signature = schnorr.constructSignature(message.toBuffer(), this.signingPrivateKey).toBuffer();
30
+ return new AuthWitness(message, [...signature]);
23
31
  }
24
32
  }
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nobm9ycl9hY2NvdW50X2NvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FjY291bnQvY29udHJhY3Qvc2Nobm9ycl9hY2NvdW50X2NvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUkxRCxPQUFPLHlCQUF5QixNQUFNLDBDQUEwQyxDQUFDLFNBQVMsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBRzVGOzs7R0FHRztBQUNILE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsWUFBb0IsaUJBQXFDO1FBQXJDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBb0I7SUFBRyxDQUFDO0lBRXRELEtBQUssQ0FBQyxpQkFBaUI7UUFDNUIsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztRQUNuRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTSxLQUFLLENBQUMsYUFBYSxDQUFDLEVBQUUsT0FBTyxFQUFtQixFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBWTtRQUNyRixNQUFNLE9BQU8sR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNwQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM3RixPQUFPLElBQUksMEJBQTBCLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVNLGNBQWM7UUFDbkIsT0FBTyx5QkFBbUQsQ0FBQztJQUM3RCxDQUFDO0NBQ0YifQ==
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nobm9ycl9hY2NvdW50X2NvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FjY291bnQvY29udHJhY3Qvc2Nobm9ycl9hY2NvdW50X2NvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUUxRCxPQUFPLEVBQUUsV0FBVyxFQUF1QyxNQUFNLGNBQWMsQ0FBQztBQUVoRixPQUFPLHlCQUF5QixNQUFNLDBDQUEwQyxDQUFDLFNBQVMsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBRXpHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWpFOzs7R0FHRztBQUNILE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxtQkFBbUI7SUFDN0QsWUFBb0IsaUJBQXFDO1FBQ3ZELEtBQUssQ0FBQyx5QkFBbUQsQ0FBQyxDQUFDO1FBRHpDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBb0I7SUFFekQsQ0FBQztJQUVELEtBQUssQ0FBQyxpQkFBaUI7UUFDckIsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztRQUNuRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxRQUF5QjtRQUM5QyxPQUFPLElBQUksMEJBQTBCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDaEUsQ0FBQztDQUNGO0FBRUQsdURBQXVEO0FBQ3ZELE1BQU0sMEJBQTBCO0lBQzlCLFlBQW9CLGlCQUFxQztRQUFyQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW9CO0lBQUcsQ0FBQztJQUU3RCxLQUFLLENBQUMsaUJBQWlCLENBQUMsT0FBVztRQUNqQyxNQUFNLE9BQU8sR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNwQyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3BHLE9BQU8sSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7Q0FDRiJ9
@@ -1,16 +1,14 @@
1
- import { ContractAbi } from '@aztec/foundation/abi';
2
- import { CompleteAddress, GrumpkinPrivateKey, NodeInfo } from '@aztec/types';
3
- import { SingleKeyAccountEntrypoint } from '../entrypoint/single_key_account_entrypoint.js';
4
- import { AccountContract } from './index.js';
1
+ import { CompleteAddress, GrumpkinPrivateKey } from '@aztec/types';
2
+ import { AuthWitnessProvider } from '../interface.js';
3
+ import { BaseAccountContract } from './base_account_contract.js';
5
4
  /**
6
5
  * Account contract that authenticates transactions using Schnorr signatures verified against
7
6
  * the note encryption key, relying on a single private key for both encryption and authentication.
8
7
  */
9
- export declare class SingleKeyAccountContract implements AccountContract {
8
+ export declare class SingleKeyAccountContract extends BaseAccountContract {
10
9
  private encryptionPrivateKey;
11
10
  constructor(encryptionPrivateKey: GrumpkinPrivateKey);
12
- getDeploymentArgs(): Promise<never[]>;
13
- getEntrypoint({ address, partialAddress }: CompleteAddress, { chainId, version }: NodeInfo): Promise<SingleKeyAccountEntrypoint>;
14
- getContractAbi(): ContractAbi;
11
+ getDeploymentArgs(): Promise<any[]>;
12
+ getAuthWitnessProvider({ partialAddress }: CompleteAddress): AuthWitnessProvider;
15
13
  }
16
14
  //# sourceMappingURL=single_key_account_contract.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"single_key_account_contract.d.ts","sourceRoot":"","sources":["../../../src/account/contract/single_key_account_contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAG7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,gDAAgD,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C;;;GAGG;AACH,qBAAa,wBAAyB,YAAW,eAAe;IAClD,OAAO,CAAC,oBAAoB;gBAApB,oBAAoB,EAAE,kBAAkB;IAErD,iBAAiB;IAIjB,aAAa,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,QAAQ;IAM1F,cAAc,IAAI,WAAW;CAGrC"}
1
+ {"version":3,"file":"single_key_account_contract.d.ts","sourceRoot":"","sources":["../../../src/account/contract/single_key_account_contract.ts"],"names":[],"mappings":"AAGA,OAAO,EAAe,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAIhF,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE;;;GAGG;AACH,qBAAa,wBAAyB,SAAQ,mBAAmB;IACnD,OAAO,CAAC,oBAAoB;gBAApB,oBAAoB,EAAE,kBAAkB;IAI5D,iBAAiB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAInC,sBAAsB,CAAC,EAAE,cAAc,EAAE,EAAE,eAAe,GAAG,mBAAmB;CAGjF"}
@@ -1,21 +1,40 @@
1
+ import { Schnorr } from '@aztec/circuits.js/barretenberg';
2
+ import { AuthWitness } from '@aztec/types';
1
3
  import SchnorrSingleKeyAccountContractAbi from '../../abis/schnorr_single_key_account_contract.json' assert { type: 'json' };
2
- import { SingleKeyAccountEntrypoint } from '../entrypoint/single_key_account_entrypoint.js';
4
+ import { generatePublicKey } from '../../index.js';
5
+ import { BaseAccountContract } from './base_account_contract.js';
3
6
  /**
4
7
  * Account contract that authenticates transactions using Schnorr signatures verified against
5
8
  * the note encryption key, relying on a single private key for both encryption and authentication.
6
9
  */
7
- export class SingleKeyAccountContract {
10
+ export class SingleKeyAccountContract extends BaseAccountContract {
8
11
  constructor(encryptionPrivateKey) {
12
+ super(SchnorrSingleKeyAccountContractAbi);
9
13
  this.encryptionPrivateKey = encryptionPrivateKey;
10
14
  }
11
15
  getDeploymentArgs() {
12
16
  return Promise.resolve([]);
13
17
  }
14
- getEntrypoint({ address, partialAddress }, { chainId, version }) {
15
- return Promise.resolve(new SingleKeyAccountEntrypoint(address, partialAddress, this.encryptionPrivateKey, chainId, version));
18
+ getAuthWitnessProvider({ partialAddress }) {
19
+ return new SingleKeyAuthWitnessProvider(this.encryptionPrivateKey, partialAddress);
16
20
  }
17
- getContractAbi() {
18
- return SchnorrSingleKeyAccountContractAbi;
21
+ }
22
+ /**
23
+ * Creates auth witnesses using Schnorr signatures and including the partial address and public key
24
+ * in the witness, so verifiers do not need to store the public key and can instead validate it
25
+ * by reconstructing the current address.
26
+ */
27
+ class SingleKeyAuthWitnessProvider {
28
+ constructor(privateKey, partialAddress) {
29
+ this.privateKey = privateKey;
30
+ this.partialAddress = partialAddress;
31
+ }
32
+ async createAuthWitness(message) {
33
+ const schnorr = await Schnorr.new();
34
+ const signature = schnorr.constructSignature(message.toBuffer(), this.privateKey);
35
+ const publicKey = await generatePublicKey(this.privateKey);
36
+ const witness = [...publicKey.toFields(), ...signature.toBuffer(), this.partialAddress];
37
+ return new AuthWitness(message, witness);
19
38
  }
20
39
  }
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlX2tleV9hY2NvdW50X2NvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FjY291bnQvY29udHJhY3Qvc2luZ2xlX2tleV9hY2NvdW50X2NvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sa0NBQWtDLE1BQU0scURBQXFELENBQUMsU0FBUyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7QUFDN0gsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFHNUY7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxZQUFvQixvQkFBd0M7UUFBeEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFvQjtJQUFHLENBQUM7SUFFekQsaUJBQWlCO1FBQ3RCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRU0sYUFBYSxDQUFDLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBbUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQVk7UUFDL0YsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUNwQixJQUFJLDBCQUEwQixDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FDckcsQ0FBQztJQUNKLENBQUM7SUFFTSxjQUFjO1FBQ25CLE9BQU8sa0NBQTRELENBQUM7SUFDdEUsQ0FBQztDQUNGIn0=
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlX2tleV9hY2NvdW50X2NvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FjY291bnQvY29udHJhY3Qvc2luZ2xlX2tleV9hY2NvdW50X2NvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUUxRCxPQUFPLEVBQUUsV0FBVyxFQUF1QyxNQUFNLGNBQWMsQ0FBQztBQUVoRixPQUFPLGtDQUFrQyxNQUFNLHFEQUFxRCxDQUFDLFNBQVMsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBQzdILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWpFOzs7R0FHRztBQUNILE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxtQkFBbUI7SUFDL0QsWUFBb0Isb0JBQXdDO1FBQzFELEtBQUssQ0FBQyxrQ0FBNEQsQ0FBQyxDQUFDO1FBRGxELHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBb0I7SUFFNUQsQ0FBQztJQUVELGlCQUFpQjtRQUNmLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsc0JBQXNCLENBQUMsRUFBRSxjQUFjLEVBQW1CO1FBQ3hELE9BQU8sSUFBSSw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDckYsQ0FBQztDQUNGO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sNEJBQTRCO0lBQ2hDLFlBQW9CLFVBQThCLEVBQVUsY0FBOEI7UUFBdEUsZUFBVSxHQUFWLFVBQVUsQ0FBb0I7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7SUFBRyxDQUFDO0lBRTlGLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxPQUFXO1FBQ2pDLE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xGLE1BQU0sU0FBUyxHQUFHLE1BQU0saUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNELE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUMsUUFBUSxFQUFFLEVBQUUsR0FBRyxTQUFTLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3hGLE9BQU8sSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzNDLENBQUM7Q0FDRiJ9
@@ -0,0 +1,17 @@
1
+ import { AztecAddress } from '@aztec/circuits.js';
2
+ import { FunctionCall, TxExecutionRequest } from '@aztec/types';
3
+ import { AuthWitnessProvider, EntrypointInterface } from '../interface.js';
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=default_entrypoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default_entrypoint.d.ts","sourceRoot":"","sources":["../../../src/account/defaults/default_entrypoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA+B,MAAM,oBAAoB,CAAC;AAE/E,OAAO,EAAE,YAAY,EAAmB,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGjF,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAG3E;;;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;CAwDzB"}
@@ -0,0 +1,90 @@
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 '../../utils/defaults.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 } = await buildPayload(executions);
19
+ const abi = this.getEntrypointAbi();
20
+ const packedArgs = await PackedArguments.fromArgs(encodeArguments(abi, [payload]));
21
+ const message = Fr.fromBuffer(await 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: 'aztec::entrypoint::EntrypointPayload',
44
+ fields: [
45
+ {
46
+ name: 'flattened_args_hashes',
47
+ type: {
48
+ kind: 'array',
49
+ length: 4,
50
+ type: {
51
+ kind: 'field',
52
+ },
53
+ },
54
+ },
55
+ {
56
+ name: 'flattened_selectors',
57
+ type: {
58
+ kind: 'array',
59
+ length: 4,
60
+ type: {
61
+ kind: 'field',
62
+ },
63
+ },
64
+ },
65
+ {
66
+ name: 'flattened_targets',
67
+ type: {
68
+ kind: 'array',
69
+ length: 4,
70
+ type: {
71
+ kind: 'field',
72
+ },
73
+ },
74
+ },
75
+ {
76
+ name: 'nonce',
77
+ type: {
78
+ kind: 'field',
79
+ },
80
+ },
81
+ ],
82
+ },
83
+ visibility: 'public',
84
+ },
85
+ ],
86
+ returnTypes: [],
87
+ };
88
+ }
89
+ }
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdF9lbnRyeXBvaW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FjY291bnQvZGVmYXVsdHMvZGVmYXVsdF9lbnRyeXBvaW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsRUFBRSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvRSxPQUFPLEVBQXFCLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNFLE9BQU8sRUFBZ0IsZUFBZSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRWpGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXBFOzs7R0FHRztBQUNILE1BQU0sT0FBTyx3QkFBd0I7SUFDbkMsWUFDVSxPQUFxQixFQUNyQixJQUF5QixFQUN6QixVQUFrQixnQkFBZ0IsRUFDbEMsVUFBa0IsZUFBZTtRQUhqQyxZQUFPLEdBQVAsT0FBTyxDQUFjO1FBQ3JCLFNBQUksR0FBSixJQUFJLENBQXFCO1FBQ3pCLFlBQU8sR0FBUCxPQUFPLENBQTJCO1FBQ2xDLFlBQU8sR0FBUCxPQUFPLENBQTBCO0lBQ3hDLENBQUM7SUFFSixLQUFLLENBQUMsd0JBQXdCLENBQUMsVUFBMEI7UUFDdkQsTUFBTSxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxNQUFNLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMxRixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNwQyxNQUFNLFVBQVUsR0FBRyxNQUFNLGVBQWUsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDMUQsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9ELE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQztZQUN4QyxRQUFRLEVBQUUsVUFBVSxDQUFDLElBQUk7WUFDekIsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3BCLFlBQVksRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUN2QyxTQUFTLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDdEQsZUFBZSxFQUFFLENBQUMsR0FBRyxvQkFBb0IsRUFBRSxVQUFVLENBQUM7WUFDdEQsYUFBYSxFQUFFLENBQUMsV0FBVyxDQUFDO1NBQzdCLENBQUMsQ0FBQztRQUVILE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsT0FBTztZQUNMLElBQUksRUFBRSxZQUFZO1lBQ2xCLFlBQVksRUFBRSxRQUFRO1lBQ3RCLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFVBQVUsRUFBRTtnQkFDVjtvQkFDRSxJQUFJLEVBQUUsU0FBUztvQkFDZixJQUFJLEVBQUU7d0JBQ0osSUFBSSxFQUFFLFFBQVE7d0JBQ2QsSUFBSSxFQUFFLHNDQUFzQzt3QkFDNUMsTUFBTSxFQUFFOzRCQUNOO2dDQUNFLElBQUksRUFBRSx1QkFBdUI7Z0NBQzdCLElBQUksRUFBRTtvQ0FDSixJQUFJLEVBQUUsT0FBTztvQ0FDYixNQUFNLEVBQUUsQ0FBQztvQ0FDVCxJQUFJLEVBQUU7d0NBQ0osSUFBSSxFQUFFLE9BQU87cUNBQ2Q7aUNBQ0Y7NkJBQ0Y7NEJBQ0Q7Z0NBQ0UsSUFBSSxFQUFFLHFCQUFxQjtnQ0FDM0IsSUFBSSxFQUFFO29DQUNKLElBQUksRUFBRSxPQUFPO29DQUNiLE1BQU0sRUFBRSxDQUFDO29DQUNULElBQUksRUFBRTt3Q0FDSixJQUFJLEVBQUUsT0FBTztxQ0FDZDtpQ0FDRjs2QkFDRjs0QkFDRDtnQ0FDRSxJQUFJLEVBQUUsbUJBQW1CO2dDQUN6QixJQUFJLEVBQUU7b0NBQ0osSUFBSSxFQUFFLE9BQU87b0NBQ2IsTUFBTSxFQUFFLENBQUM7b0NBQ1QsSUFBSSxFQUFFO3dDQUNKLElBQUksRUFBRSxPQUFPO3FDQUNkO2lDQUNGOzZCQUNGOzRCQUNEO2dDQUNFLElBQUksRUFBRSxPQUFPO2dDQUNiLElBQUksRUFBRTtvQ0FDSixJQUFJLEVBQUUsT0FBTztpQ0FDZDs2QkFDRjt5QkFDRjtxQkFDRjtvQkFDRCxVQUFVLEVBQUUsUUFBUTtpQkFDckI7YUFDRjtZQUNELFdBQVcsRUFBRSxFQUFFO1NBQ2dCLENBQUM7SUFDcEMsQ0FBQztDQUNGIn0=
@@ -0,0 +1,17 @@
1
+ import { CompleteAddress, Fr } from '@aztec/circuits.js';
2
+ import { AuthWitness, FunctionCall, NodeInfo, TxExecutionRequest } from '@aztec/types';
3
+ import { AccountInterface, AuthWitnessProvider } from '../interface.js';
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' | 'version'>);
13
+ createTxExecutionRequest(executions: FunctionCall[]): Promise<TxExecutionRequest>;
14
+ createAuthWitness(message: Fr): Promise<AuthWitness>;
15
+ getCompleteAddress(): CompleteAddress;
16
+ }
17
+ //# sourceMappingURL=default_interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default_interface.d.ts","sourceRoot":"","sources":["../../../src/account/defaults/default_interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEvF,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAuB,MAAM,iBAAiB,CAAC;AAG7F;;;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,SAAS,CAAC;IAUjD,wBAAwB,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAGjF,iBAAiB,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAGpD,kBAAkB,IAAI,eAAe;CAGtC"}
@@ -0,0 +1,22 @@
1
+ import { DefaultAccountEntrypoint } from './default_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.version);
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdF9pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWNjb3VudC9kZWZhdWx0cy9kZWZhdWx0X2ludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRTs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sdUJBQXVCO0lBR2xDLFlBQ1UsbUJBQXdDLEVBQ3hDLE9BQXdCLEVBQ2hDLFFBQStDO1FBRnZDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsWUFBTyxHQUFQLE9BQU8sQ0FBaUI7UUFHaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLHdCQUF3QixDQUM1QyxPQUFPLENBQUMsT0FBTyxFQUNmLG1CQUFtQixFQUNuQixRQUFRLENBQUMsT0FBTyxFQUNoQixRQUFRLENBQUMsT0FBTyxDQUNqQixDQUFDO0lBQ0osQ0FBQztJQUVELHdCQUF3QixDQUFDLFVBQTBCO1FBQ2pELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBQ0QsaUJBQWlCLENBQUMsT0FBVztRQUMzQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBQ0Qsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0NBQ0YifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entrypoint_payload.d.ts","sourceRoot":"","sources":["../../../src/account/defaults/entrypoint_payload.ts"],"names":[],"mappings":";AAAA,OAAO,EAAgB,EAAE,EAAkB,MAAM,oBAAoB,CAAC;AAGtE,OAAO,EAAE,YAAY,EAAE,eAAe,EAAqB,MAAM,cAAc,CAAC;AAKhF,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAC3C,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C,0DAA0D;AAC1D,MAAM,MAAM,iBAAiB,GAAG;IAE9B,4CAA4C;IAC5C,qBAAqB,EAAE,EAAE,EAAE,CAAC;IAE5B,4CAA4C;IAC5C,mBAAmB,EAAE,EAAE,EAAE,CAAC;IAE1B,mDAAmD;IACnD,iBAAiB,EAAE,EAAE,EAAE,CAAC;IACxB,oCAAoC;IACpC,KAAK,EAAE,EAAE,CAAC;CACX,CAAC;AAEF,sFAAsF;AACtF,wBAAsB,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;IACjE,8CAA8C;IAC9C,OAAO,EAAE,iBAAiB,CAAC;IAC3B,+CAA+C;IAC/C,eAAe,EAAE,eAAe,EAAE,CAAC;CACpC,CAAC,CA6BD;AAED,gFAAgF;AAChF,wBAAsB,WAAW,CAAC,OAAO,EAAE,iBAAiB,mBAM3D;AAED,qCAAqC;AACrC,wBAAgB,cAAc,CAAC,OAAO,EAAE,iBAAiB,QAOxD"}
@@ -0,0 +1,48 @@
1
+ import { CircuitsWasm, Fr, GeneratorIndex } from '@aztec/circuits.js';
2
+ import { pedersenPlookupCompressWithHashIndex } from '@aztec/circuits.js/barretenberg';
3
+ import { padArrayEnd } from '@aztec/foundation/collection';
4
+ import { PackedArguments, emptyFunctionCall } from '@aztec/types';
5
+ import partition from 'lodash.partition';
6
+ // These must match the values defined in yarn-project/aztec-nr/aztec/src/entrypoint.nr
7
+ export const ACCOUNT_MAX_PRIVATE_CALLS = 2;
8
+ export const ACCOUNT_MAX_PUBLIC_CALLS = 2;
9
+ /** Assembles an entrypoint payload from a set of private and public function calls */
10
+ export async function buildPayload(calls) {
11
+ const nonce = Fr.random();
12
+ const [privateCalls, publicCalls] = partition(calls, call => call.functionData.isPrivate);
13
+ const paddedCalls = [
14
+ ...padArrayEnd(privateCalls, emptyFunctionCall(), ACCOUNT_MAX_PRIVATE_CALLS),
15
+ ...padArrayEnd(publicCalls, emptyFunctionCall(), ACCOUNT_MAX_PUBLIC_CALLS),
16
+ ];
17
+ const packedArguments = [];
18
+ const wasm = await CircuitsWasm.get();
19
+ for (const call of paddedCalls) {
20
+ packedArguments.push(await PackedArguments.fromArgs(call.args, wasm));
21
+ }
22
+ return {
23
+ payload: {
24
+ // eslint-disable-next-line camelcase
25
+ flattened_args_hashes: packedArguments.map(args => args.hash),
26
+ // eslint-disable-next-line camelcase
27
+ flattened_selectors: paddedCalls.map(call => call.functionData.selector.toField()),
28
+ // eslint-disable-next-line camelcase
29
+ flattened_targets: paddedCalls.map(call => call.to.toField()),
30
+ nonce,
31
+ },
32
+ packedArguments,
33
+ };
34
+ }
35
+ /** Compresses an entrypoint payload to a 32-byte buffer (useful for signing) */
36
+ export async function hashPayload(payload) {
37
+ return pedersenPlookupCompressWithHashIndex(await CircuitsWasm.get(), flattenPayload(payload).map(fr => fr.toBuffer()), GeneratorIndex.SIGNATURE_PAYLOAD);
38
+ }
39
+ /** Flattens an entrypoint payload */
40
+ export function flattenPayload(payload) {
41
+ return [
42
+ ...payload.flattened_args_hashes,
43
+ ...payload.flattened_selectors,
44
+ ...payload.flattened_targets,
45
+ payload.nonce,
46
+ ];
47
+ }
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnlwb2ludF9wYXlsb2FkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FjY291bnQvZGVmYXVsdHMvZW50cnlwb2ludF9wYXlsb2FkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQWdCLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVoRixPQUFPLFNBQVMsTUFBTSxrQkFBa0IsQ0FBQztBQUV6Qyx1RkFBdUY7QUFDdkYsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsQ0FBQyxDQUFDO0FBQzNDLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsQ0FBQztBQWlCMUMsc0ZBQXNGO0FBQ3RGLE1BQU0sQ0FBQyxLQUFLLFVBQVUsWUFBWSxDQUFDLEtBQXFCO0lBTXRELE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUUxQixNQUFNLENBQUMsWUFBWSxFQUFFLFdBQVcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTFGLE1BQU0sV0FBVyxHQUFHO1FBQ2xCLEdBQUcsV0FBVyxDQUFDLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxFQUFFLHlCQUF5QixDQUFDO1FBQzVFLEdBQUcsV0FBVyxDQUFDLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxFQUFFLHdCQUF3QixDQUFDO0tBQzNFLENBQUM7SUFFRixNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUM7SUFDM0IsTUFBTSxJQUFJLEdBQUcsTUFBTSxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7SUFFdEMsS0FBSyxNQUFNLElBQUksSUFBSSxXQUFXLEVBQUU7UUFDOUIsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0tBQ3ZFO0lBRUQsT0FBTztRQUNMLE9BQU8sRUFBRTtZQUNQLHFDQUFxQztZQUNyQyxxQkFBcUIsRUFBRSxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUM3RCxxQ0FBcUM7WUFDckMsbUJBQW1CLEVBQUUsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xGLHFDQUFxQztZQUNyQyxpQkFBaUIsRUFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM3RCxLQUFLO1NBQ047UUFDRCxlQUFlO0tBQ2hCLENBQUM7QUFDSixDQUFDO0FBRUQsZ0ZBQWdGO0FBQ2hGLE1BQU0sQ0FBQyxLQUFLLFVBQVUsV0FBVyxDQUFDLE9BQTBCO0lBQzFELE9BQU8sb0NBQW9DLENBQ3pDLE1BQU0sWUFBWSxDQUFDLEdBQUcsRUFBRSxFQUN4QixjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQ2hELGNBQWMsQ0FBQyxpQkFBaUIsQ0FDakMsQ0FBQztBQUNKLENBQUM7QUFFRCxxQ0FBcUM7QUFDckMsTUFBTSxVQUFVLGNBQWMsQ0FBQyxPQUEwQjtJQUN2RCxPQUFPO1FBQ0wsR0FBRyxPQUFPLENBQUMscUJBQXFCO1FBQ2hDLEdBQUcsT0FBTyxDQUFDLG1CQUFtQjtRQUM5QixHQUFHLE9BQU8sQ0FBQyxpQkFBaUI7UUFDNUIsT0FBTyxDQUFDLEtBQUs7S0FDZCxDQUFDO0FBQ0osQ0FBQyJ9
@@ -0,0 +1,4 @@
1
+ export * from './entrypoint_payload.js';
2
+ export * from './default_entrypoint.js';
3
+ export * from './default_interface.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/account/defaults/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './entrypoint_payload.js';
2
+ export * from './default_entrypoint.js';
3
+ export * from './default_interface.js';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWNjb3VudC9kZWZhdWx0cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx3QkFBd0IsQ0FBQyJ9