@aztec/aztec.js 0.80.0 → 0.82.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 (185) hide show
  1. package/dest/account/{contract.d.ts → account_contract.d.ts} +11 -5
  2. package/dest/account/account_contract.d.ts.map +1 -0
  3. package/dest/account/{contract.js → account_contract.js} +5 -1
  4. package/dest/account/index.d.ts +2 -3
  5. package/dest/account/index.d.ts.map +1 -1
  6. package/dest/account/index.js +1 -2
  7. package/dest/account/interface.d.ts +1 -13
  8. package/dest/account/interface.d.ts.map +1 -1
  9. package/dest/account/interface.js +1 -0
  10. package/dest/account_manager/account_manager.d.ts +105 -0
  11. package/dest/account_manager/account_manager.d.ts.map +1 -0
  12. package/dest/account_manager/account_manager.js +165 -0
  13. package/dest/account_manager/deploy_account_method.d.ts +4 -4
  14. package/dest/account_manager/deploy_account_method.d.ts.map +1 -1
  15. package/dest/account_manager/deploy_account_method.js +28 -13
  16. package/dest/account_manager/deploy_account_sent_tx.d.ts +3 -3
  17. package/dest/account_manager/deploy_account_sent_tx.d.ts.map +1 -1
  18. package/dest/account_manager/deploy_account_sent_tx.js +2 -2
  19. package/dest/account_manager/index.d.ts +1 -104
  20. package/dest/account_manager/index.d.ts.map +1 -1
  21. package/dest/account_manager/index.js +1 -157
  22. package/dest/api/account.d.ts +2 -1
  23. package/dest/api/account.d.ts.map +1 -1
  24. package/dest/api/contract.d.ts +4 -1
  25. package/dest/api/contract.d.ts.map +1 -1
  26. package/dest/api/contract.js +3 -0
  27. package/dest/api/fee.d.ts +1 -1
  28. package/dest/api/fee.d.ts.map +1 -1
  29. package/dest/api/utils.d.ts +2 -1
  30. package/dest/api/utils.d.ts.map +1 -1
  31. package/dest/api/utils.js +2 -1
  32. package/dest/api/wallet.d.ts +1 -1
  33. package/dest/api/wallet.d.ts.map +1 -1
  34. package/dest/contract/base_contract_interaction.d.ts +22 -57
  35. package/dest/contract/base_contract_interaction.d.ts.map +1 -1
  36. package/dest/contract/base_contract_interaction.js +12 -67
  37. package/dest/contract/batch_call.d.ts +6 -18
  38. package/dest/contract/batch_call.d.ts.map +1 -1
  39. package/dest/contract/batch_call.js +25 -54
  40. package/dest/contract/contract.d.ts +1 -1
  41. package/dest/contract/contract.d.ts.map +1 -1
  42. package/dest/contract/contract_base.d.ts +2 -2
  43. package/dest/contract/contract_base.d.ts.map +1 -1
  44. package/dest/contract/contract_function_interaction.d.ts +38 -18
  45. package/dest/contract/contract_function_interaction.d.ts.map +1 -1
  46. package/dest/contract/contract_function_interaction.js +34 -41
  47. package/dest/contract/deploy_method.d.ts +7 -8
  48. package/dest/contract/deploy_method.d.ts.map +1 -1
  49. package/dest/contract/deploy_method.js +27 -32
  50. package/dest/contract/deploy_proven_tx.d.ts +2 -3
  51. package/dest/contract/deploy_proven_tx.d.ts.map +1 -1
  52. package/dest/contract/deploy_sent_tx.d.ts +2 -3
  53. package/dest/contract/deploy_sent_tx.d.ts.map +1 -1
  54. package/dest/contract/deploy_sent_tx.js +4 -4
  55. package/dest/contract/protocol_contracts.d.ts +1 -1
  56. package/dest/contract/protocol_contracts.d.ts.map +1 -1
  57. package/dest/contract/proven_tx.d.ts +3 -4
  58. package/dest/contract/proven_tx.d.ts.map +1 -1
  59. package/dest/contract/sent_tx.d.ts +4 -16
  60. package/dest/contract/sent_tx.d.ts.map +1 -1
  61. package/dest/contract/sent_tx.js +6 -37
  62. package/dest/contract/unsafe_contract.d.ts +1 -1
  63. package/dest/contract/unsafe_contract.d.ts.map +1 -1
  64. package/dest/contract/wait_for_proven.d.ts +17 -0
  65. package/dest/contract/wait_for_proven.d.ts.map +1 -0
  66. package/dest/contract/wait_for_proven.js +17 -0
  67. package/dest/deployment/broadcast_function.js +12 -8
  68. package/dest/deployment/contract_deployer.d.ts +1 -1
  69. package/dest/deployment/contract_deployer.d.ts.map +1 -1
  70. package/dest/deployment/register_class.d.ts +1 -1
  71. package/dest/deployment/register_class.d.ts.map +1 -1
  72. package/dest/deployment/register_class.js +6 -11
  73. package/dest/entrypoint/default_multi_call_entrypoint.d.ts +3 -2
  74. package/dest/entrypoint/default_multi_call_entrypoint.d.ts.map +1 -1
  75. package/dest/entrypoint/default_multi_call_entrypoint.js +12 -8
  76. package/dest/ethereum/portal_manager.d.ts +20 -11
  77. package/dest/ethereum/portal_manager.d.ts.map +1 -1
  78. package/dest/ethereum/portal_manager.js +64 -30
  79. package/dest/fee/fee_juice_payment_method.d.ts +3 -3
  80. package/dest/fee/fee_juice_payment_method.d.ts.map +1 -1
  81. package/dest/fee/fee_juice_payment_method.js +3 -2
  82. package/dest/fee/fee_juice_payment_method_with_claim.d.ts +4 -4
  83. package/dest/fee/fee_juice_payment_method_with_claim.d.ts.map +1 -1
  84. package/dest/fee/fee_juice_payment_method_with_claim.js +6 -5
  85. package/dest/fee/private_fee_payment_method.d.ts +6 -6
  86. package/dest/fee/private_fee_payment_method.d.ts.map +1 -1
  87. package/dest/fee/private_fee_payment_method.js +13 -12
  88. package/dest/fee/public_fee_payment_method.d.ts +7 -7
  89. package/dest/fee/public_fee_payment_method.d.ts.map +1 -1
  90. package/dest/fee/public_fee_payment_method.js +10 -11
  91. package/dest/fee/utils.d.ts +13 -0
  92. package/dest/fee/utils.d.ts.map +1 -0
  93. package/dest/fee/utils.js +32 -0
  94. package/dest/index.d.ts +1 -1
  95. package/dest/index.d.ts.map +1 -1
  96. package/dest/index.js +1 -1
  97. package/dest/test/aztec_cheat_codes.d.ts +2 -2
  98. package/dest/test/aztec_cheat_codes.d.ts.map +1 -1
  99. package/dest/test/aztec_cheat_codes.js +3 -3
  100. package/dest/utils/authwit.d.ts +16 -9
  101. package/dest/utils/authwit.d.ts.map +1 -1
  102. package/dest/utils/authwit.js +26 -35
  103. package/dest/wallet/account_wallet.d.ts +6 -6
  104. package/dest/wallet/account_wallet.d.ts.map +1 -1
  105. package/dest/wallet/account_wallet.js +15 -17
  106. package/dest/wallet/base_wallet.d.ts +12 -35
  107. package/dest/wallet/base_wallet.d.ts.map +1 -1
  108. package/dest/wallet/base_wallet.js +11 -64
  109. package/dest/wallet/index.d.ts +2 -2
  110. package/dest/wallet/index.d.ts.map +1 -1
  111. package/dest/wallet/index.js +1 -1
  112. package/dest/wallet/signerless_wallet.d.ts +3 -3
  113. package/dest/wallet/signerless_wallet.d.ts.map +1 -1
  114. package/dest/wallet/signerless_wallet.js +3 -6
  115. package/dest/wallet/wallet.d.ts +11 -0
  116. package/dest/wallet/wallet.d.ts.map +1 -0
  117. package/package.json +8 -7
  118. package/src/account/{contract.ts → account_contract.ts} +17 -4
  119. package/src/account/index.ts +2 -3
  120. package/src/account/interface.ts +1 -12
  121. package/src/account_manager/account_manager.ts +235 -0
  122. package/src/account_manager/deploy_account_method.ts +35 -15
  123. package/src/account_manager/deploy_account_sent_tx.ts +4 -4
  124. package/src/account_manager/index.ts +1 -227
  125. package/src/api/account.ts +2 -8
  126. package/src/api/contract.ts +5 -5
  127. package/src/api/fee.ts +1 -1
  128. package/src/api/utils.ts +1 -1
  129. package/src/api/wallet.ts +7 -1
  130. package/src/contract/base_contract_interaction.ts +32 -88
  131. package/src/contract/batch_call.ts +40 -43
  132. package/src/contract/contract.ts +1 -1
  133. package/src/contract/contract_base.ts +1 -1
  134. package/src/contract/contract_function_interaction.ts +85 -56
  135. package/src/contract/deploy_method.ts +24 -26
  136. package/src/contract/deploy_proven_tx.ts +2 -3
  137. package/src/contract/deploy_sent_tx.ts +6 -6
  138. package/src/contract/protocol_contracts.ts +1 -1
  139. package/src/contract/proven_tx.ts +2 -3
  140. package/src/contract/sent_tx.ts +6 -47
  141. package/src/contract/unsafe_contract.ts +1 -1
  142. package/src/contract/wait_for_proven.ts +38 -0
  143. package/src/deployment/broadcast_function.ts +40 -40
  144. package/src/deployment/contract_deployer.ts +1 -1
  145. package/src/deployment/register_class.ts +9 -22
  146. package/src/entrypoint/default_multi_call_entrypoint.ts +14 -7
  147. package/src/ethereum/portal_manager.ts +73 -24
  148. package/src/fee/fee_juice_payment_method.ts +4 -5
  149. package/src/fee/fee_juice_payment_method_with_claim.ts +24 -20
  150. package/src/fee/private_fee_payment_method.ts +29 -28
  151. package/src/fee/public_fee_payment_method.ts +29 -29
  152. package/src/fee/utils.ts +39 -0
  153. package/src/index.ts +1 -1
  154. package/src/test/aztec_cheat_codes.ts +3 -3
  155. package/src/utils/authwit.ts +32 -35
  156. package/src/wallet/account_wallet.ts +18 -17
  157. package/src/wallet/base_wallet.ts +27 -88
  158. package/src/wallet/index.ts +2 -2
  159. package/src/wallet/signerless_wallet.ts +9 -8
  160. package/src/wallet/wallet.ts +34 -0
  161. package/dest/account/contract.d.ts.map +0 -1
  162. package/dest/account/wallet.d.ts +0 -11
  163. package/dest/account/wallet.d.ts.map +0 -1
  164. package/dest/api/entrypoint.d.ts +0 -2
  165. package/dest/api/entrypoint.d.ts.map +0 -1
  166. package/dest/api/entrypoint.js +0 -1
  167. package/dest/entrypoint/default_entrypoint.d.ts +0 -12
  168. package/dest/entrypoint/default_entrypoint.d.ts.map +0 -1
  169. package/dest/entrypoint/default_entrypoint.js +0 -28
  170. package/dest/entrypoint/entrypoint.d.ts +0 -39
  171. package/dest/entrypoint/entrypoint.d.ts.map +0 -1
  172. package/dest/entrypoint/entrypoint.js +0 -20
  173. package/dest/entrypoint/payload.d.ts +0 -128
  174. package/dest/entrypoint/payload.d.ts.map +0 -1
  175. package/dest/entrypoint/payload.js +0 -143
  176. package/dest/fee/fee_payment_method.d.ts +0 -22
  177. package/dest/fee/fee_payment_method.d.ts.map +0 -1
  178. package/dest/fee/fee_payment_method.js +0 -3
  179. package/src/account/wallet.ts +0 -13
  180. package/src/api/entrypoint.ts +0 -1
  181. package/src/entrypoint/default_entrypoint.ts +0 -39
  182. package/src/entrypoint/entrypoint.ts +0 -60
  183. package/src/entrypoint/payload.ts +0 -238
  184. package/src/fee/fee_payment_method.ts +0 -22
  185. /package/dest/{account → wallet}/wallet.js +0 -0
@@ -1,128 +0,0 @@
1
- import { Fr } from '@aztec/foundation/fields';
2
- import type { Tuple } from '@aztec/foundation/serialize';
3
- import type { FieldsOf } from '@aztec/foundation/types';
4
- import { FunctionCall } from '@aztec/stdlib/abi';
5
- import type { AztecAddress } from '@aztec/stdlib/aztec-address';
6
- import type { GasSettings } from '@aztec/stdlib/gas';
7
- import { HashedValues } from '@aztec/stdlib/tx';
8
- import type { FeePaymentMethod } from '../fee/fee_payment_method.js';
9
- /**
10
- * Fee payment options for a transaction.
11
- */
12
- export type FeeOptions = {
13
- /** The fee payment method to use */
14
- paymentMethod: FeePaymentMethod;
15
- /** The gas settings */
16
- gasSettings: GasSettings;
17
- };
18
- /** Fee options as set by a user. */
19
- export type UserFeeOptions = {
20
- /** The fee payment method to use */
21
- paymentMethod?: FeePaymentMethod;
22
- /** The gas settings */
23
- gasSettings?: Partial<FieldsOf<GasSettings>>;
24
- /** Percentage to pad the base fee by, if empty, defaults to 0.5 */
25
- baseFeePadding?: number;
26
- /** Whether to run an initial simulation of the tx with high gas limit to figure out actual gas settings. */
27
- estimateGas?: boolean;
28
- /** Percentage to pad the estimated gas limits by, if empty, defaults to 0.1. Only relevant if estimateGas is set. */
29
- estimatedGasPadding?: number;
30
- };
31
- /** Encoded function call for account contract entrypoint */
32
- type EncodedFunctionCall = {
33
- /** Arguments hash for the call */
34
- args_hash: Fr;
35
- /** Selector of the function to call */
36
- function_selector: Fr;
37
- /** Address of the contract to call */
38
- target_address: Fr;
39
- /** Whether the function is public or private */
40
- is_public: boolean;
41
- /** Whether the function can alter state */
42
- is_static: boolean;
43
- };
44
- /** Assembles an entrypoint payload */
45
- export declare abstract class EntrypointPayload {
46
- private functionCalls;
47
- private _hashedArguments;
48
- private generatorIndex;
49
- private _nonce;
50
- protected constructor(functionCalls: EncodedFunctionCall[], _hashedArguments: HashedValues[], generatorIndex: number, _nonce: Fr);
51
- protected static create(functionCalls: FunctionCall[]): Promise<{
52
- encodedFunctionCalls: {
53
- args_hash: Fr;
54
- function_selector: Fr;
55
- target_address: Fr;
56
- is_public: boolean;
57
- is_static: boolean;
58
- }[];
59
- hashedArguments: HashedValues[];
60
- }>;
61
- /**
62
- * The function calls to execute. This uses snake_case naming so that it is compatible with Noir encoding
63
- * @internal
64
- */
65
- get function_calls(): EncodedFunctionCall[];
66
- /**
67
- * The nonce
68
- * @internal
69
- */
70
- get nonce(): Fr;
71
- /**
72
- * The hashed arguments for the function calls
73
- */
74
- get hashedArguments(): HashedValues[];
75
- /**
76
- * Serializes the payload to an array of fields
77
- * @returns The fields of the payload
78
- */
79
- abstract toFields(): Fr[];
80
- /**
81
- * Hashes the payload
82
- * @returns The hash of the payload
83
- */
84
- hash(): Promise<Fr>;
85
- /** Serializes the function calls to an array of fields. */
86
- protected functionCallsToFields(): Fr[];
87
- /**
88
- * Creates an execution payload for a dapp from a set of function calls
89
- * @param functionCalls - The function calls to execute
90
- * @returns The execution payload
91
- */
92
- static fromFunctionCalls(functionCalls: FunctionCall[]): Promise<AppEntrypointPayload>;
93
- /**
94
- * Creates an execution payload for the app-portion of a transaction from a set of function calls
95
- * @param functionCalls - The function calls to execute
96
- * @param nonce - The nonce for the payload, used to emit a nullifier identifying the call
97
- * @returns The execution payload
98
- */
99
- static fromAppExecution(functionCalls: FunctionCall[] | Tuple<FunctionCall, 4>, nonce?: Fr): Promise<AppEntrypointPayload>;
100
- /**
101
- * Creates an execution payload to pay the fee for a transaction
102
- * @param sender - The address sending this payload
103
- * @param feeOpts - The fee payment options
104
- * @returns The execution payload
105
- */
106
- static fromFeeOptions(sender: AztecAddress, feeOpts?: FeeOptions): Promise<FeeEntrypointPayload>;
107
- }
108
- /** Entrypoint payload for app phase execution. */
109
- declare class AppEntrypointPayload extends EntrypointPayload {
110
- toFields(): Fr[];
111
- }
112
- /** Entrypoint payload for fee payment to be run during setup phase. */
113
- declare class FeeEntrypointPayload extends EntrypointPayload {
114
- #private;
115
- constructor(functionCalls: EncodedFunctionCall[], hashedArguments: HashedValues[], generatorIndex: number, nonce: Fr, isFeePayer: boolean);
116
- toFields(): Fr[];
117
- /** Whether the sender should be appointed as fee payer. */
118
- get is_fee_payer(): boolean;
119
- }
120
- /**
121
- * Computes a hash of a combined payload.
122
- * @param appPayload - An app payload.
123
- * @param feePayload - A fee payload.
124
- * @returns A hash of a combined payload.
125
- */
126
- export declare function computeCombinedPayloadHash(appPayload: AppEntrypointPayload, feePayload: FeeEntrypointPayload): Promise<Fr>;
127
- export {};
128
- //# sourceMappingURL=payload.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../src/entrypoint/payload.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAgB,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAErE;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,oCAAoC;IACpC,aAAa,EAAE,gBAAgB,CAAC;IAChC,uBAAuB;IACvB,WAAW,EAAE,WAAW,CAAC;CAC1B,CAAC;AAGF,oCAAoC;AACpC,MAAM,MAAM,cAAc,GAAG;IAC3B,oCAAoC;IACpC,aAAa,CAAC,EAAE,gBAAgB,CAAC;IACjC,uBAAuB;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;IAC7C,mEAAmE;IACnE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4GAA4G;IAC5G,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,qHAAqH;IACrH,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAUF,4DAA4D;AAC5D,KAAK,mBAAmB,GAAG;IACzB,kCAAkC;IAClC,SAAS,EAAE,EAAE,CAAC;IACd,uCAAuC;IACvC,iBAAiB,EAAE,EAAE,CAAC;IACtB,sCAAsC;IACtC,cAAc,EAAE,EAAE,CAAC;IACnB,gDAAgD;IAChD,SAAS,EAAE,OAAO,CAAC;IACnB,2CAA2C;IAC3C,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAGF,sCAAsC;AACtC,8BAAsB,iBAAiB;IAEnC,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,MAAM;IAJhB,SAAS,aACC,aAAa,EAAE,mBAAmB,EAAE,EACpC,gBAAgB,EAAE,YAAY,EAAE,EAChC,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,EAAE;qBAGG,MAAM,CAAC,aAAa,EAAE,YAAY,EAAE;;;;;;;;;;IAuB3D;;;OAGG;IACH,IAAI,cAAc,0BAEjB;IAGD;;;OAGG;IACH,IAAI,KAAK,OAER;IAED;;OAEG;IACH,IAAI,eAAe,mBAElB;IAED;;;OAGG;IACH,QAAQ,CAAC,QAAQ,IAAI,EAAE,EAAE;IAEzB;;;OAGG;IACH,IAAI;IAIJ,2DAA2D;IAC3D,SAAS,CAAC,qBAAqB;IAU/B;;;;OAIG;WACU,iBAAiB,CAAC,aAAa,EAAE,YAAY,EAAE;IAK5D;;;;;OAKG;WACU,gBAAgB,CAAC,aAAa,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,KAAK,KAAc;IASzG;;;;;OAKG;WACU,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,UAAU;CAcvE;AAED,kDAAkD;AAClD,cAAM,oBAAqB,SAAQ,iBAAiB;IACzC,QAAQ,IAAI,EAAE,EAAE;CAG1B;AAED,uEAAuE;AACvE,cAAM,oBAAqB,SAAQ,iBAAiB;;gBAIhD,aAAa,EAAE,mBAAmB,EAAE,EACpC,eAAe,EAAE,YAAY,EAAE,EAC/B,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,EAAE,EACT,UAAU,EAAE,OAAO;IAMZ,QAAQ,IAAI,EAAE,EAAE;IAKzB,2DAA2D;IAC3D,IAAI,YAAY,YAEf;CAEF;AAED;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,oBAAoB,EAChC,UAAU,EAAE,oBAAoB,GAC/B,OAAO,CAAC,EAAE,CAAC,CAKb"}
@@ -1,143 +0,0 @@
1
- import { GeneratorIndex } from '@aztec/constants';
2
- import { padArrayEnd } from '@aztec/foundation/collection';
3
- import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto';
4
- import { Fr } from '@aztec/foundation/fields';
5
- import { FunctionCall, FunctionType } from '@aztec/stdlib/abi';
6
- import { HashedValues } from '@aztec/stdlib/tx';
7
- // docs:end:user_fee_options
8
- // These must match the values defined in:
9
- // - noir-projects/aztec-nr/aztec/src/entrypoint/app.nr
10
- const APP_MAX_CALLS = 4;
11
- // - and noir-projects/aztec-nr/aztec/src/entrypoint/fee.nr
12
- const FEE_MAX_CALLS = 2;
13
- /* eslint-enable camelcase */ /** Assembles an entrypoint payload */ export class EntrypointPayload {
14
- functionCalls;
15
- _hashedArguments;
16
- generatorIndex;
17
- _nonce;
18
- constructor(functionCalls, _hashedArguments, generatorIndex, _nonce){
19
- this.functionCalls = functionCalls;
20
- this._hashedArguments = _hashedArguments;
21
- this.generatorIndex = generatorIndex;
22
- this._nonce = _nonce;
23
- }
24
- static async create(functionCalls) {
25
- const hashedArguments = [];
26
- for (const call of functionCalls){
27
- hashedArguments.push(await HashedValues.fromValues(call.args));
28
- }
29
- /* eslint-disable camelcase */ const encodedFunctionCalls = functionCalls.map((call, index)=>({
30
- args_hash: hashedArguments[index].hash,
31
- function_selector: call.selector.toField(),
32
- target_address: call.to.toField(),
33
- is_public: call.type == FunctionType.PUBLIC,
34
- is_static: call.isStatic
35
- }));
36
- /* eslint-enable camelcase */ return {
37
- encodedFunctionCalls,
38
- hashedArguments
39
- };
40
- }
41
- /* eslint-disable camelcase */ /**
42
- * The function calls to execute. This uses snake_case naming so that it is compatible with Noir encoding
43
- * @internal
44
- */ get function_calls() {
45
- return this.functionCalls;
46
- }
47
- /* eslint-enable camelcase */ /**
48
- * The nonce
49
- * @internal
50
- */ get nonce() {
51
- return this._nonce;
52
- }
53
- /**
54
- * The hashed arguments for the function calls
55
- */ get hashedArguments() {
56
- return this._hashedArguments;
57
- }
58
- /**
59
- * Hashes the payload
60
- * @returns The hash of the payload
61
- */ hash() {
62
- return poseidon2HashWithSeparator(this.toFields(), this.generatorIndex);
63
- }
64
- /** Serializes the function calls to an array of fields. */ functionCallsToFields() {
65
- return this.functionCalls.flatMap((call)=>[
66
- call.args_hash,
67
- call.function_selector,
68
- call.target_address,
69
- new Fr(call.is_public),
70
- new Fr(call.is_static)
71
- ]);
72
- }
73
- /**
74
- * Creates an execution payload for a dapp from a set of function calls
75
- * @param functionCalls - The function calls to execute
76
- * @returns The execution payload
77
- */ static async fromFunctionCalls(functionCalls) {
78
- const { encodedFunctionCalls, hashedArguments } = await this.create(functionCalls);
79
- return new AppEntrypointPayload(encodedFunctionCalls, hashedArguments, 0, Fr.random());
80
- }
81
- /**
82
- * Creates an execution payload for the app-portion of a transaction from a set of function calls
83
- * @param functionCalls - The function calls to execute
84
- * @param nonce - The nonce for the payload, used to emit a nullifier identifying the call
85
- * @returns The execution payload
86
- */ static async fromAppExecution(functionCalls, nonce = Fr.random()) {
87
- if (functionCalls.length > APP_MAX_CALLS) {
88
- throw new Error(`Expected at most ${APP_MAX_CALLS} function calls, got ${functionCalls.length}`);
89
- }
90
- const paddedCalls = padArrayEnd(functionCalls, FunctionCall.empty(), APP_MAX_CALLS);
91
- const { encodedFunctionCalls, hashedArguments } = await this.create(paddedCalls);
92
- return new AppEntrypointPayload(encodedFunctionCalls, hashedArguments, GeneratorIndex.SIGNATURE_PAYLOAD, nonce);
93
- }
94
- /**
95
- * Creates an execution payload to pay the fee for a transaction
96
- * @param sender - The address sending this payload
97
- * @param feeOpts - The fee payment options
98
- * @returns The execution payload
99
- */ static async fromFeeOptions(sender, feeOpts) {
100
- const calls = await feeOpts?.paymentMethod.getFunctionCalls(feeOpts?.gasSettings) ?? [];
101
- const feePayer = await feeOpts?.paymentMethod.getFeePayer(feeOpts?.gasSettings);
102
- const isFeePayer = !!feePayer && feePayer.equals(sender);
103
- const paddedCalls = padArrayEnd(calls, FunctionCall.empty(), FEE_MAX_CALLS);
104
- const { encodedFunctionCalls, hashedArguments } = await this.create(paddedCalls);
105
- return new FeeEntrypointPayload(encodedFunctionCalls, hashedArguments, GeneratorIndex.FEE_PAYLOAD, Fr.random(), isFeePayer);
106
- }
107
- }
108
- /** Entrypoint payload for app phase execution. */ class AppEntrypointPayload extends EntrypointPayload {
109
- toFields() {
110
- return [
111
- ...this.functionCallsToFields(),
112
- this.nonce
113
- ];
114
- }
115
- }
116
- /** Entrypoint payload for fee payment to be run during setup phase. */ class FeeEntrypointPayload extends EntrypointPayload {
117
- #isFeePayer;
118
- constructor(functionCalls, hashedArguments, generatorIndex, nonce, isFeePayer){
119
- super(functionCalls, hashedArguments, generatorIndex, nonce);
120
- this.#isFeePayer = isFeePayer;
121
- }
122
- toFields() {
123
- return [
124
- ...this.functionCallsToFields(),
125
- this.nonce,
126
- new Fr(this.#isFeePayer)
127
- ];
128
- }
129
- /* eslint-disable camelcase */ /** Whether the sender should be appointed as fee payer. */ get is_fee_payer() {
130
- return this.#isFeePayer;
131
- }
132
- }
133
- /**
134
- * Computes a hash of a combined payload.
135
- * @param appPayload - An app payload.
136
- * @param feePayload - A fee payload.
137
- * @returns A hash of a combined payload.
138
- */ export async function computeCombinedPayloadHash(appPayload, feePayload) {
139
- return poseidon2HashWithSeparator([
140
- await appPayload.hash(),
141
- await feePayload.hash()
142
- ], GeneratorIndex.COMBINED_PAYLOAD);
143
- }
@@ -1,22 +0,0 @@
1
- import type { FunctionCall } from '@aztec/stdlib/abi';
2
- import type { AztecAddress } from '@aztec/stdlib/aztec-address';
3
- import type { GasSettings } from '@aztec/stdlib/gas';
4
- /**
5
- * Holds information about how the fee for a transaction is to be paid.
6
- */
7
- export interface FeePaymentMethod {
8
- /** The asset used to pay the fee. */
9
- getAsset(): Promise<AztecAddress>;
10
- /**
11
- * Creates a function call to pay the fee in the given asset.
12
- * @param gasSettings - The gas limits and max fees.
13
- * @returns The function call to pay the fee.
14
- */
15
- getFunctionCalls(gasSettings: GasSettings): Promise<FunctionCall[]>;
16
- /**
17
- * The expected fee payer for this tx.
18
- * @param gasSettings - The gas limits and max fees.
19
- */
20
- getFeePayer(gasSettings: GasSettings): Promise<AztecAddress>;
21
- }
22
- //# sourceMappingURL=fee_payment_method.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fee_payment_method.d.ts","sourceRoot":"","sources":["../../src/fee/fee_payment_method.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qCAAqC;IACrC,QAAQ,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;IAClC;;;;OAIG;IACH,gBAAgB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACpE;;;OAGG;IACH,WAAW,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAC9D"}
@@ -1,3 +0,0 @@
1
- /**
2
- * Holds information about how the fee for a transaction is to be paid.
3
- */ export { };
@@ -1,13 +0,0 @@
1
- import type { AuthWitness } from '@aztec/stdlib/auth-witness';
2
- import type { PXE } from '@aztec/stdlib/interfaces/client';
3
-
4
- import type { IntentAction, IntentInnerHash } from '../utils/authwit.js';
5
- import type { AccountInterface } from './interface.js';
6
-
7
- /**
8
- * The wallet interface.
9
- */
10
- export type Wallet = AccountInterface &
11
- PXE & {
12
- createAuthWit(intent: IntentInnerHash | IntentAction): Promise<AuthWitness>;
13
- };
@@ -1 +0,0 @@
1
- export * from '../entrypoint/entrypoint.js';
@@ -1,39 +0,0 @@
1
- import { FunctionType } from '@aztec/stdlib/abi';
2
- import { HashedValues, TxContext, TxExecutionRequest } from '@aztec/stdlib/tx';
3
-
4
- import type { EntrypointInterface, ExecutionRequestInit } from './entrypoint.js';
5
-
6
- /**
7
- * Default implementation of the entrypoint interface. It calls a function on a contract directly
8
- */
9
- export class DefaultEntrypoint implements EntrypointInterface {
10
- constructor(private chainId: number, private protocolVersion: number) {}
11
-
12
- async createTxExecutionRequest(exec: ExecutionRequestInit): Promise<TxExecutionRequest> {
13
- const { fee, calls, authWitnesses = [], hashedArguments = [], capsules = [] } = exec;
14
-
15
- if (calls.length > 1) {
16
- throw new Error(`Expected a single call, got ${calls.length}`);
17
- }
18
-
19
- const call = calls[0];
20
-
21
- if (call.type !== FunctionType.PRIVATE) {
22
- throw new Error('Public entrypoints are not allowed');
23
- }
24
-
25
- const entrypointHashedValues = await HashedValues.fromValues(call.args);
26
- const txContext = new TxContext(this.chainId, this.protocolVersion, fee.gasSettings);
27
- return Promise.resolve(
28
- new TxExecutionRequest(
29
- call.to,
30
- call.selector,
31
- entrypointHashedValues.hash,
32
- txContext,
33
- [...hashedArguments, entrypointHashedValues],
34
- authWitnesses,
35
- capsules,
36
- ),
37
- );
38
- }
39
- }
@@ -1,60 +0,0 @@
1
- import type { Fr } from '@aztec/foundation/fields';
2
- import type { FunctionCall } from '@aztec/stdlib/abi';
3
- import type { AuthWitness } from '@aztec/stdlib/auth-witness';
4
- import type { Capsule, HashedValues, TxExecutionRequest } from '@aztec/stdlib/tx';
5
-
6
- import { EntrypointPayload, type FeeOptions, computeCombinedPayloadHash } from './payload.js';
7
-
8
- export { EntrypointPayload, type FeeOptions, computeCombinedPayloadHash };
9
-
10
- export { DefaultEntrypoint } from './default_entrypoint.js';
11
- export { DefaultMultiCallEntrypoint } from './default_multi_call_entrypoint.js';
12
-
13
- /** Encodes the calls to be done in a transaction. */
14
- export type ExecutionRequestInit = {
15
- /** The function calls to be executed. */
16
- calls: FunctionCall[];
17
- /** Any transient auth witnesses needed for this execution */
18
- authWitnesses?: AuthWitness[];
19
- /** Any transient hashed arguments for this execution */
20
- hashedArguments?: HashedValues[];
21
- /** Data passed through an oracle for this execution. */
22
- capsules?: Capsule[];
23
- /** How the fee is going to be payed */
24
- fee: FeeOptions;
25
- /** An optional nonce. Used to repeat a previous tx with a higher fee so that the first one is cancelled */
26
- nonce?: Fr;
27
- /** Whether the transaction can be cancelled. If true, an extra nullifier will be emitted: H(nonce, GENERATOR_INDEX__TX_NULLIFIER) */
28
- cancellable?: boolean;
29
- };
30
-
31
- /**
32
- * Merges an array of ExecutionRequestInits.
33
- */
34
- export function mergeExecutionRequestInits(
35
- requests: Pick<ExecutionRequestInit, 'calls' | 'authWitnesses' | 'hashedArguments' | 'capsules'>[],
36
- { nonce, cancellable }: Pick<ExecutionRequestInit, 'nonce' | 'cancellable'> = {},
37
- ): Omit<ExecutionRequestInit, 'fee'> {
38
- const calls = requests.map(r => r.calls).flat();
39
- const authWitnesses = requests.map(r => r.authWitnesses ?? []).flat();
40
- const hashedArguments = requests.map(r => r.hashedArguments ?? []).flat();
41
- const capsules = requests.map(r => r.capsules ?? []).flat();
42
- return {
43
- calls,
44
- authWitnesses,
45
- hashedArguments,
46
- capsules,
47
- nonce,
48
- cancellable,
49
- };
50
- }
51
-
52
- /** Creates transaction execution requests out of a set of function calls. */
53
- export interface EntrypointInterface {
54
- /**
55
- * Generates an execution request out of set of function calls.
56
- * @param execution - The execution intents to be run.
57
- * @returns The authenticated transaction execution request.
58
- */
59
- createTxExecutionRequest(execution: ExecutionRequestInit): Promise<TxExecutionRequest>;
60
- }
@@ -1,238 +0,0 @@
1
- import { GeneratorIndex } from '@aztec/constants';
2
- import { padArrayEnd } from '@aztec/foundation/collection';
3
- import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto';
4
- import { Fr } from '@aztec/foundation/fields';
5
- import type { Tuple } from '@aztec/foundation/serialize';
6
- import type { FieldsOf } from '@aztec/foundation/types';
7
- import { FunctionCall, FunctionType } from '@aztec/stdlib/abi';
8
- import type { AztecAddress } from '@aztec/stdlib/aztec-address';
9
- import type { GasSettings } from '@aztec/stdlib/gas';
10
- import { HashedValues } from '@aztec/stdlib/tx';
11
-
12
- import type { FeePaymentMethod } from '../fee/fee_payment_method.js';
13
-
14
- /**
15
- * Fee payment options for a transaction.
16
- */
17
- export type FeeOptions = {
18
- /** The fee payment method to use */
19
- paymentMethod: FeePaymentMethod;
20
- /** The gas settings */
21
- gasSettings: GasSettings;
22
- };
23
-
24
- // docs:start:user_fee_options
25
- /** Fee options as set by a user. */
26
- export type UserFeeOptions = {
27
- /** The fee payment method to use */
28
- paymentMethod?: FeePaymentMethod;
29
- /** The gas settings */
30
- gasSettings?: Partial<FieldsOf<GasSettings>>;
31
- /** Percentage to pad the base fee by, if empty, defaults to 0.5 */
32
- baseFeePadding?: number;
33
- /** Whether to run an initial simulation of the tx with high gas limit to figure out actual gas settings. */
34
- estimateGas?: boolean;
35
- /** Percentage to pad the estimated gas limits by, if empty, defaults to 0.1. Only relevant if estimateGas is set. */
36
- estimatedGasPadding?: number;
37
- };
38
- // docs:end:user_fee_options
39
-
40
- // These must match the values defined in:
41
- // - noir-projects/aztec-nr/aztec/src/entrypoint/app.nr
42
- const APP_MAX_CALLS = 4;
43
- // - and noir-projects/aztec-nr/aztec/src/entrypoint/fee.nr
44
- const FEE_MAX_CALLS = 2;
45
-
46
- /* eslint-disable camelcase */
47
- /** Encoded function call for account contract entrypoint */
48
- type EncodedFunctionCall = {
49
- /** Arguments hash for the call */
50
- args_hash: Fr;
51
- /** Selector of the function to call */
52
- function_selector: Fr;
53
- /** Address of the contract to call */
54
- target_address: Fr;
55
- /** Whether the function is public or private */
56
- is_public: boolean;
57
- /** Whether the function can alter state */
58
- is_static: boolean;
59
- };
60
- /* eslint-enable camelcase */
61
-
62
- /** Assembles an entrypoint payload */
63
- export abstract class EntrypointPayload {
64
- protected constructor(
65
- private functionCalls: EncodedFunctionCall[],
66
- private _hashedArguments: HashedValues[],
67
- private generatorIndex: number,
68
- private _nonce: Fr,
69
- ) {}
70
-
71
- protected static async create(functionCalls: FunctionCall[]) {
72
- const hashedArguments: HashedValues[] = [];
73
- for (const call of functionCalls) {
74
- hashedArguments.push(await HashedValues.fromValues(call.args));
75
- }
76
-
77
- /* eslint-disable camelcase */
78
- const encodedFunctionCalls = functionCalls.map((call, index) => ({
79
- args_hash: hashedArguments[index].hash,
80
- function_selector: call.selector.toField(),
81
- target_address: call.to.toField(),
82
- is_public: call.type == FunctionType.PUBLIC,
83
- is_static: call.isStatic,
84
- }));
85
- /* eslint-enable camelcase */
86
-
87
- return {
88
- encodedFunctionCalls,
89
- hashedArguments,
90
- };
91
- }
92
-
93
- /* eslint-disable camelcase */
94
- /**
95
- * The function calls to execute. This uses snake_case naming so that it is compatible with Noir encoding
96
- * @internal
97
- */
98
- get function_calls() {
99
- return this.functionCalls;
100
- }
101
- /* eslint-enable camelcase */
102
-
103
- /**
104
- * The nonce
105
- * @internal
106
- */
107
- get nonce() {
108
- return this._nonce;
109
- }
110
-
111
- /**
112
- * The hashed arguments for the function calls
113
- */
114
- get hashedArguments() {
115
- return this._hashedArguments;
116
- }
117
-
118
- /**
119
- * Serializes the payload to an array of fields
120
- * @returns The fields of the payload
121
- */
122
- abstract toFields(): Fr[];
123
-
124
- /**
125
- * Hashes the payload
126
- * @returns The hash of the payload
127
- */
128
- hash() {
129
- return poseidon2HashWithSeparator(this.toFields(), this.generatorIndex);
130
- }
131
-
132
- /** Serializes the function calls to an array of fields. */
133
- protected functionCallsToFields() {
134
- return this.functionCalls.flatMap(call => [
135
- call.args_hash,
136
- call.function_selector,
137
- call.target_address,
138
- new Fr(call.is_public),
139
- new Fr(call.is_static),
140
- ]);
141
- }
142
-
143
- /**
144
- * Creates an execution payload for a dapp from a set of function calls
145
- * @param functionCalls - The function calls to execute
146
- * @returns The execution payload
147
- */
148
- static async fromFunctionCalls(functionCalls: FunctionCall[]) {
149
- const { encodedFunctionCalls, hashedArguments } = await this.create(functionCalls);
150
- return new AppEntrypointPayload(encodedFunctionCalls, hashedArguments, 0, Fr.random());
151
- }
152
-
153
- /**
154
- * Creates an execution payload for the app-portion of a transaction from a set of function calls
155
- * @param functionCalls - The function calls to execute
156
- * @param nonce - The nonce for the payload, used to emit a nullifier identifying the call
157
- * @returns The execution payload
158
- */
159
- static async fromAppExecution(functionCalls: FunctionCall[] | Tuple<FunctionCall, 4>, nonce = Fr.random()) {
160
- if (functionCalls.length > APP_MAX_CALLS) {
161
- throw new Error(`Expected at most ${APP_MAX_CALLS} function calls, got ${functionCalls.length}`);
162
- }
163
- const paddedCalls = padArrayEnd(functionCalls, FunctionCall.empty(), APP_MAX_CALLS);
164
- const { encodedFunctionCalls, hashedArguments } = await this.create(paddedCalls);
165
- return new AppEntrypointPayload(encodedFunctionCalls, hashedArguments, GeneratorIndex.SIGNATURE_PAYLOAD, nonce);
166
- }
167
-
168
- /**
169
- * Creates an execution payload to pay the fee for a transaction
170
- * @param sender - The address sending this payload
171
- * @param feeOpts - The fee payment options
172
- * @returns The execution payload
173
- */
174
- static async fromFeeOptions(sender: AztecAddress, feeOpts?: FeeOptions) {
175
- const calls = (await feeOpts?.paymentMethod.getFunctionCalls(feeOpts?.gasSettings)) ?? [];
176
- const feePayer = await feeOpts?.paymentMethod.getFeePayer(feeOpts?.gasSettings);
177
- const isFeePayer = !!feePayer && feePayer.equals(sender);
178
- const paddedCalls = padArrayEnd(calls, FunctionCall.empty(), FEE_MAX_CALLS);
179
- const { encodedFunctionCalls, hashedArguments } = await this.create(paddedCalls);
180
- return new FeeEntrypointPayload(
181
- encodedFunctionCalls,
182
- hashedArguments,
183
- GeneratorIndex.FEE_PAYLOAD,
184
- Fr.random(),
185
- isFeePayer,
186
- );
187
- }
188
- }
189
-
190
- /** Entrypoint payload for app phase execution. */
191
- class AppEntrypointPayload extends EntrypointPayload {
192
- override toFields(): Fr[] {
193
- return [...this.functionCallsToFields(), this.nonce];
194
- }
195
- }
196
-
197
- /** Entrypoint payload for fee payment to be run during setup phase. */
198
- class FeeEntrypointPayload extends EntrypointPayload {
199
- #isFeePayer: boolean;
200
-
201
- constructor(
202
- functionCalls: EncodedFunctionCall[],
203
- hashedArguments: HashedValues[],
204
- generatorIndex: number,
205
- nonce: Fr,
206
- isFeePayer: boolean,
207
- ) {
208
- super(functionCalls, hashedArguments, generatorIndex, nonce);
209
- this.#isFeePayer = isFeePayer;
210
- }
211
-
212
- override toFields(): Fr[] {
213
- return [...this.functionCallsToFields(), this.nonce, new Fr(this.#isFeePayer)];
214
- }
215
-
216
- /* eslint-disable camelcase */
217
- /** Whether the sender should be appointed as fee payer. */
218
- get is_fee_payer() {
219
- return this.#isFeePayer;
220
- }
221
- /* eslint-enable camelcase */
222
- }
223
-
224
- /**
225
- * Computes a hash of a combined payload.
226
- * @param appPayload - An app payload.
227
- * @param feePayload - A fee payload.
228
- * @returns A hash of a combined payload.
229
- */
230
- export async function computeCombinedPayloadHash(
231
- appPayload: AppEntrypointPayload,
232
- feePayload: FeeEntrypointPayload,
233
- ): Promise<Fr> {
234
- return poseidon2HashWithSeparator(
235
- [await appPayload.hash(), await feePayload.hash()],
236
- GeneratorIndex.COMBINED_PAYLOAD,
237
- );
238
- }