@aztec/stdlib 5.0.0-rc.2 → 5.0.1

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 (197) hide show
  1. package/dest/block/attestation_info.d.ts +1 -1
  2. package/dest/block/attestation_info.d.ts.map +1 -1
  3. package/dest/block/attestation_info.js +7 -4
  4. package/dest/block/l2_block_source.d.ts +34 -3
  5. package/dest/block/l2_block_source.d.ts.map +1 -1
  6. package/dest/block/l2_block_source.js +15 -0
  7. package/dest/block/l2_block_stream/event_driven_l2_block_stream.d.ts +39 -0
  8. package/dest/block/l2_block_stream/event_driven_l2_block_stream.d.ts.map +1 -0
  9. package/dest/block/l2_block_stream/event_driven_l2_block_stream.js +165 -0
  10. package/dest/block/l2_block_stream/index.d.ts +2 -1
  11. package/dest/block/l2_block_stream/index.d.ts.map +1 -1
  12. package/dest/block/l2_block_stream/index.js +1 -0
  13. package/dest/block/l2_block_stream/interfaces.d.ts +16 -2
  14. package/dest/block/l2_block_stream/interfaces.d.ts.map +1 -1
  15. package/dest/block/l2_block_stream/interfaces.js +25 -1
  16. package/dest/block/l2_block_stream/l2_block_stream.d.ts +21 -35
  17. package/dest/block/l2_block_stream/l2_block_stream.d.ts.map +1 -1
  18. package/dest/block/l2_block_stream/l2_block_stream.js +5 -30
  19. package/dest/block/proposal/attestations_and_signers.d.ts +19 -1
  20. package/dest/block/proposal/attestations_and_signers.d.ts.map +1 -1
  21. package/dest/block/proposal/attestations_and_signers.js +47 -7
  22. package/dest/block/validate_block_result.d.ts +16 -1
  23. package/dest/block/validate_block_result.d.ts.map +1 -1
  24. package/dest/block/validate_block_result.js +18 -3
  25. package/dest/config/network-consensus-config.d.ts +1 -1
  26. package/dest/config/network-consensus-config.d.ts.map +1 -1
  27. package/dest/config/network-consensus-config.js +2 -10
  28. package/dest/contract/contract_address.d.ts +5 -4
  29. package/dest/contract/contract_address.d.ts.map +1 -1
  30. package/dest/contract/contract_instance.d.ts +16 -2
  31. package/dest/contract/contract_instance.d.ts.map +1 -1
  32. package/dest/contract/contract_instance.js +45 -0
  33. package/dest/contract/interfaces/contract_instance.d.ts +71 -10
  34. package/dest/contract/interfaces/contract_instance.d.ts.map +1 -1
  35. package/dest/contract/interfaces/contract_instance.js +7 -2
  36. package/dest/contract/partial_address.d.ts +9 -3
  37. package/dest/contract/partial_address.d.ts.map +1 -1
  38. package/dest/contract/partial_address.js +8 -2
  39. package/dest/database-version/version_manager.d.ts +18 -4
  40. package/dest/database-version/version_manager.d.ts.map +1 -1
  41. package/dest/database-version/version_manager.js +76 -6
  42. package/dest/ha-signing/config.d.ts +19 -5
  43. package/dest/ha-signing/config.d.ts.map +1 -1
  44. package/dest/ha-signing/config.js +9 -3
  45. package/dest/ha-signing/local_config.d.ts +10 -2
  46. package/dest/ha-signing/local_config.d.ts.map +1 -1
  47. package/dest/ha-signing/local_config.js +8 -2
  48. package/dest/hash/hash.d.ts +1 -2
  49. package/dest/hash/hash.d.ts.map +1 -1
  50. package/dest/hash/hash.js +0 -7
  51. package/dest/interfaces/archiver.d.ts +8 -1
  52. package/dest/interfaces/archiver.d.ts.map +1 -1
  53. package/dest/interfaces/archiver.js +2 -1
  54. package/dest/interfaces/aztec-node-admin.d.ts +5 -2
  55. package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
  56. package/dest/interfaces/configs.d.ts +4 -1
  57. package/dest/interfaces/configs.d.ts.map +1 -1
  58. package/dest/interfaces/configs.js +1 -0
  59. package/dest/interfaces/private_kernel_prover.d.ts +9 -11
  60. package/dest/interfaces/private_kernel_prover.d.ts.map +1 -1
  61. package/dest/interfaces/proving-job.d.ts +87 -74
  62. package/dest/interfaces/proving-job.d.ts.map +1 -1
  63. package/dest/interfaces/proving-job.js +13 -4
  64. package/dest/interfaces/server_circuit_prover.d.ts +3 -3
  65. package/dest/interfaces/server_circuit_prover.d.ts.map +1 -1
  66. package/dest/interfaces/validator.d.ts +7 -3
  67. package/dest/interfaces/validator.d.ts.map +1 -1
  68. package/dest/interfaces/world_state.d.ts +14 -1
  69. package/dest/interfaces/world_state.d.ts.map +1 -1
  70. package/dest/kernel/hints/find_private_kernel_reset_dimensions.d.ts +8 -2
  71. package/dest/kernel/hints/find_private_kernel_reset_dimensions.d.ts.map +1 -1
  72. package/dest/kernel/hints/find_private_kernel_reset_dimensions.js +12 -74
  73. package/dest/kernel/index.d.ts +2 -2
  74. package/dest/kernel/index.d.ts.map +1 -1
  75. package/dest/kernel/index.js +1 -1
  76. package/dest/kernel/private_circuit_public_inputs.d.ts +13 -3
  77. package/dest/kernel/private_circuit_public_inputs.d.ts.map +1 -1
  78. package/dest/kernel/private_circuit_public_inputs.js +14 -7
  79. package/dest/kernel/private_context_inputs.d.ts +4 -3
  80. package/dest/kernel/private_context_inputs.d.ts.map +1 -1
  81. package/dest/kernel/private_context_inputs.js +7 -3
  82. package/dest/kernel/private_kernel_circuit_public_inputs.d.ts +7 -1
  83. package/dest/kernel/private_kernel_circuit_public_inputs.d.ts.map +1 -1
  84. package/dest/kernel/private_kernel_circuit_public_inputs.js +7 -0
  85. package/dest/kernel/private_kernel_init_2_circuit_private_inputs.d.ts +2 -3
  86. package/dest/kernel/private_kernel_init_2_circuit_private_inputs.d.ts.map +1 -1
  87. package/dest/kernel/private_kernel_init_2_circuit_private_inputs.js +3 -5
  88. package/dest/kernel/private_kernel_init_3_circuit_private_inputs.d.ts +2 -3
  89. package/dest/kernel/private_kernel_init_3_circuit_private_inputs.d.ts.map +1 -1
  90. package/dest/kernel/private_kernel_init_3_circuit_private_inputs.js +3 -5
  91. package/dest/kernel/private_kernel_init_circuit_private_inputs.d.ts +1 -9
  92. package/dest/kernel/private_kernel_init_circuit_private_inputs.d.ts.map +1 -1
  93. package/dest/kernel/private_kernel_init_circuit_private_inputs.js +2 -6
  94. package/dest/kernel/private_kernel_reset_dimensions.d.ts +7 -8
  95. package/dest/kernel/private_kernel_reset_dimensions.d.ts.map +1 -1
  96. package/dest/kernel/private_kernel_reset_tail_circuit_private_inputs.d.ts +29 -0
  97. package/dest/kernel/private_kernel_reset_tail_circuit_private_inputs.d.ts.map +1 -0
  98. package/dest/kernel/private_kernel_reset_tail_circuit_private_inputs.js +36 -0
  99. package/dest/keys/derivation.d.ts +41 -6
  100. package/dest/keys/derivation.d.ts.map +1 -1
  101. package/dest/keys/derivation.js +49 -26
  102. package/dest/logs/app_tagging_secret.d.ts +16 -8
  103. package/dest/logs/app_tagging_secret.d.ts.map +1 -1
  104. package/dest/logs/app_tagging_secret.js +24 -27
  105. package/dest/logs/index.d.ts +1 -3
  106. package/dest/logs/index.d.ts.map +1 -1
  107. package/dest/logs/index.js +0 -2
  108. package/dest/logs/shared_secret_derivation.d.ts +29 -6
  109. package/dest/logs/shared_secret_derivation.d.ts.map +1 -1
  110. package/dest/logs/shared_secret_derivation.js +44 -11
  111. package/dest/messaging/l1_to_l2_message.d.ts +23 -2
  112. package/dest/messaging/l1_to_l2_message.d.ts.map +1 -1
  113. package/dest/messaging/l1_to_l2_message.js +36 -11
  114. package/dest/p2p/attestation_utils.d.ts +1 -1
  115. package/dest/p2p/attestation_utils.d.ts.map +1 -1
  116. package/dest/p2p/attestation_utils.js +8 -1
  117. package/dest/p2p/checkpoint_attestation.d.ts +9 -1
  118. package/dest/p2p/checkpoint_attestation.d.ts.map +1 -1
  119. package/dest/p2p/checkpoint_attestation.js +10 -0
  120. package/dest/p2p/signature_utils.d.ts +10 -1
  121. package/dest/p2p/signature_utils.d.ts.map +1 -1
  122. package/dest/p2p/signature_utils.js +9 -1
  123. package/dest/rollup/avm_proof_data.d.ts +3 -3
  124. package/dest/rollup/avm_proof_data.d.ts.map +1 -1
  125. package/dest/stats/stats.d.ts +2 -2
  126. package/dest/stats/stats.d.ts.map +1 -1
  127. package/dest/tests/factories.d.ts +1 -1
  128. package/dest/tests/factories.d.ts.map +1 -1
  129. package/dest/tests/factories.js +4 -3
  130. package/dest/tx/private_tx_constant_data.d.ts +18 -2
  131. package/dest/tx/private_tx_constant_data.d.ts.map +1 -1
  132. package/dest/tx/private_tx_constant_data.js +13 -4
  133. package/dest/tx/simulated_tx.d.ts +10 -6
  134. package/dest/tx/simulated_tx.d.ts.map +1 -1
  135. package/dest/world-state/genesis_data.d.ts +9 -1
  136. package/dest/world-state/genesis_data.d.ts.map +1 -1
  137. package/dest/world-state/genesis_data.js +1 -0
  138. package/package.json +8 -8
  139. package/src/block/attestation_info.ts +7 -2
  140. package/src/block/l2_block_source.ts +54 -2
  141. package/src/block/l2_block_stream/event_driven_l2_block_stream.ts +207 -0
  142. package/src/block/l2_block_stream/index.ts +1 -0
  143. package/src/block/l2_block_stream/interfaces.ts +35 -1
  144. package/src/block/l2_block_stream/l2_block_stream.ts +35 -62
  145. package/src/block/proposal/attestations_and_signers.ts +53 -7
  146. package/src/block/validate_block_result.ts +48 -2
  147. package/src/config/network-consensus-config.ts +2 -13
  148. package/src/contract/contract_address.ts +4 -3
  149. package/src/contract/contract_instance.ts +62 -1
  150. package/src/contract/interfaces/contract_instance.ts +26 -8
  151. package/src/contract/partial_address.ts +8 -2
  152. package/src/database-version/version_manager.ts +96 -6
  153. package/src/gas/README.md +108 -36
  154. package/src/ha-signing/config.ts +23 -5
  155. package/src/ha-signing/local_config.ts +20 -1
  156. package/src/hash/hash.ts +0 -8
  157. package/src/interfaces/archiver.ts +8 -0
  158. package/src/interfaces/configs.ts +3 -0
  159. package/src/interfaces/private_kernel_prover.ts +10 -12
  160. package/src/interfaces/proving-job.ts +15 -3
  161. package/src/interfaces/server_circuit_prover.ts +2 -2
  162. package/src/interfaces/world_state.ts +14 -0
  163. package/src/kernel/hints/find_private_kernel_reset_dimensions.ts +22 -112
  164. package/src/kernel/index.ts +1 -1
  165. package/src/kernel/private_circuit_public_inputs.ts +12 -1
  166. package/src/kernel/private_context_inputs.ts +10 -3
  167. package/src/kernel/private_kernel_circuit_public_inputs.ts +9 -0
  168. package/src/kernel/private_kernel_init_2_circuit_private_inputs.ts +0 -3
  169. package/src/kernel/private_kernel_init_3_circuit_private_inputs.ts +0 -3
  170. package/src/kernel/private_kernel_init_circuit_private_inputs.ts +0 -6
  171. package/src/kernel/private_kernel_reset_dimensions.ts +15 -5
  172. package/src/kernel/private_kernel_reset_tail_circuit_private_inputs.ts +69 -0
  173. package/src/keys/derivation.ts +69 -24
  174. package/src/logs/app_tagging_secret.ts +34 -27
  175. package/src/logs/index.ts +0 -2
  176. package/src/logs/shared_secret_derivation.ts +47 -14
  177. package/src/messaging/l1_to_l2_message.ts +51 -13
  178. package/src/p2p/attestation_utils.ts +8 -1
  179. package/src/p2p/checkpoint_attestation.ts +12 -0
  180. package/src/p2p/signature_utils.ts +9 -0
  181. package/src/rollup/avm_proof_data.ts +2 -2
  182. package/src/stats/stats.ts +2 -2
  183. package/src/tests/factories.ts +3 -6
  184. package/src/tx/private_tx_constant_data.ts +25 -2
  185. package/src/world-state/genesis_data.ts +10 -0
  186. package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts +0 -47
  187. package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts.map +0 -1
  188. package/dest/kernel/private_kernel_tail_circuit_private_inputs.js +0 -38
  189. package/dest/logs/message_context.d.ts +0 -17
  190. package/dest/logs/message_context.d.ts.map +0 -1
  191. package/dest/logs/message_context.js +0 -9
  192. package/dest/logs/pending_tagged_log.d.ts +0 -11
  193. package/dest/logs/pending_tagged_log.d.ts.map +0 -1
  194. package/dest/logs/pending_tagged_log.js +0 -4
  195. package/src/kernel/private_kernel_tail_circuit_private_inputs.ts +0 -58
  196. package/src/logs/message_context.ts +0 -18
  197. package/src/logs/pending_tagged_log.ts +0 -12
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/logs/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/logs/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC"}
@@ -5,13 +5,11 @@ export * from './tagging_index_range.js';
5
5
  export * from './contract_class_log.js';
6
6
  export * from './public_log.js';
7
7
  export * from './private_log.js';
8
- export * from './pending_tagged_log.js';
9
8
  export * from './log_result.js';
10
9
  export * from './log_cursor.js';
11
10
  export * from './logs_query.js';
12
11
  export * from './query_all_logs_by_tags.js';
13
12
  export * from './shared_secret_derivation.js';
14
- export * from './message_context.js';
15
13
  export * from './debug_log.js';
16
14
  export * from './debug_log_store.js';
17
15
  export * from './tag.js';
@@ -1,12 +1,16 @@
1
1
  import type { Fr } from '@aztec/foundation/curves/bn254';
2
- import type { GrumpkinScalar } from '@aztec/foundation/curves/grumpkin';
2
+ import { GrumpkinScalar, type Point } from '@aztec/foundation/curves/grumpkin';
3
3
  import type { AztecAddress } from '../aztec-address/index.js';
4
4
  import type { PublicKey } from '../keys/public_key.js';
5
5
  /**
6
- * Derives an app-siloed ECDH shared secret.
6
+ * Derives the raw ECDH shared secret point `S = secretKey * publicKey`.
7
7
  *
8
- * Computes the raw ECDH shared secret `S = secretKey * publicKey`, then app-silos it:
9
- * `s_app = h(DOM_SEP__APP_SILOED_ECDH_SHARED_SECRET, S.x, S.y, contractAddress)`
8
+ * @throws If the publicKey is zero.
9
+ */
10
+ export declare function deriveEcdhSharedSecretPoint(secretKey: GrumpkinScalar, publicKey: PublicKey): Promise<Point>;
11
+ /**
12
+ * Derives an app-siloed ECDH shared secret from keys: ECDHs `S = secretKey * publicKey` via
13
+ * {@link deriveEcdhSharedSecretPoint}, then app-silos it via {@link appSiloEcdhSharedSecretPoint}.
10
14
  *
11
15
  * @param secretKey - The secret key used to derive shared secret.
12
16
  * @param publicKey - The public key used to derive shared secret.
@@ -14,5 +18,24 @@ import type { PublicKey } from '../keys/public_key.js';
14
18
  * @returns The app-siloed shared secret as a Field.
15
19
  * @throws If the publicKey is zero.
16
20
  */
17
- export declare function deriveAppSiloedSharedSecret(secretKey: GrumpkinScalar, publicKey: PublicKey, contractAddress: AztecAddress): Promise<Fr>;
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkX3NlY3JldF9kZXJpdmF0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG9ncy9zaGFyZWRfc2VjcmV0X2Rlcml2YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFeEUsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdkQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCx3QkFBc0IsMkJBQTJCLENBQy9DLFNBQVMsRUFBRSxjQUFjLEVBQ3pCLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLGVBQWUsRUFBRSxZQUFZLEdBQzVCLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FXYiJ9
21
+ export declare function appSiloEcdhSharedSecret(secretKey: GrumpkinScalar, publicKey: PublicKey, contractAddress: AztecAddress): Promise<Fr>;
22
+ /**
23
+ * App-silos a shared secret point: `s_app = h(DOM_SEP__APP_SILOED_ECDH_SHARED_SECRET, S.x, S.y, app)`.
24
+ *
25
+ * Mirrors `compute_app_siloed_shared_secret` in aztec-nr.
26
+ *
27
+ * @param point - The raw shared secret point `S`.
28
+ * @param app - The contract address to silo to.
29
+ */
30
+ export declare function appSiloEcdhSharedSecretPoint(point: Point, app: AztecAddress): Promise<Fr>;
31
+ /**
32
+ * Protects a handshake's shared secret from being forged by the recipient: `S' = hash(ephPk, recipientPoint) * S`.
33
+ *
34
+ * Mirrors aztec-nr's `protect_from_forgery` and must stay byte-compatible with it.
35
+ *
36
+ * @param secret - The raw shared secret `S` to protect.
37
+ * @param ephPk - The handshake's ephemeral public key.
38
+ * @param recipientPoint - The recipient's address point.
39
+ */
40
+ export declare function protectFromForgery(secret: Point, ephPk: Point, recipientPoint: Point): Promise<Point>;
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkX3NlY3JldF9kZXJpdmF0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG9ncy9zaGFyZWRfc2VjcmV0X2Rlcml2YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxLQUFLLEtBQUssRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRS9FLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXZEOzs7O0dBSUc7QUFDSCx3QkFBZ0IsMkJBQTJCLENBQUMsU0FBUyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsU0FBUyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FPM0c7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCx3QkFBc0IsdUJBQXVCLENBQzNDLFNBQVMsRUFBRSxjQUFjLEVBQ3pCLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLGVBQWUsRUFBRSxZQUFZLEdBQzVCLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FHYjtBQUVEOzs7Ozs7O0dBT0c7QUFDSCx3QkFBZ0IsNEJBQTRCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsWUFBWSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FFekY7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILHdCQUFzQixrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBTTNHIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"shared_secret_derivation.d.ts","sourceRoot":"","sources":["../../src/logs/shared_secret_derivation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAExE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;;;;;;;;;;GAWG;AACH,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,cAAc,EACzB,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,YAAY,GAC5B,OAAO,CAAC,EAAE,CAAC,CAWb"}
1
+ {"version":3,"file":"shared_secret_derivation.d.ts","sourceRoot":"","sources":["../../src/logs/shared_secret_derivation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,KAAK,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAE/E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,CAO3G;AAED;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,cAAc,EACzB,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,YAAY,GAC5B,OAAO,CAAC,EAAE,CAAC,CAGb;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,EAAE,CAAC,CAEzF;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAM3G"}
@@ -1,25 +1,58 @@
1
1
  import { DomainSeparator } from '@aztec/constants';
2
2
  import { Grumpkin } from '@aztec/foundation/crypto/grumpkin';
3
3
  import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
4
+ import { GrumpkinScalar } from '@aztec/foundation/curves/grumpkin';
4
5
  /**
5
- * Derives an app-siloed ECDH shared secret.
6
+ * Derives the raw ECDH shared secret point `S = secretKey * publicKey`.
6
7
  *
7
- * Computes the raw ECDH shared secret `S = secretKey * publicKey`, then app-silos it:
8
- * `s_app = h(DOM_SEP__APP_SILOED_ECDH_SHARED_SECRET, S.x, S.y, contractAddress)`
8
+ * @throws If the publicKey is zero.
9
+ */ export function deriveEcdhSharedSecretPoint(secretKey, publicKey) {
10
+ if (publicKey.isZero()) {
11
+ throw new Error(`Attempting to derive a shared secret with a zero public key. You have probably passed a zero public key in your Noir code somewhere thinking that the note won't be broadcast... but it was.`);
12
+ }
13
+ return Grumpkin.mul(publicKey, secretKey);
14
+ }
15
+ /**
16
+ * Derives an app-siloed ECDH shared secret from keys: ECDHs `S = secretKey * publicKey` via
17
+ * {@link deriveEcdhSharedSecretPoint}, then app-silos it via {@link appSiloEcdhSharedSecretPoint}.
9
18
  *
10
19
  * @param secretKey - The secret key used to derive shared secret.
11
20
  * @param publicKey - The public key used to derive shared secret.
12
21
  * @param contractAddress - The address of the calling contract, used for app-siloing.
13
22
  * @returns The app-siloed shared secret as a Field.
14
23
  * @throws If the publicKey is zero.
15
- */ export async function deriveAppSiloedSharedSecret(secretKey, publicKey, contractAddress) {
16
- if (publicKey.isZero()) {
17
- throw new Error(`Attempting to derive a shared secret with a zero public key. You have probably passed a zero public key in your Noir code somewhere thinking that the note won't be broadcast... but it was.`);
18
- }
19
- const rawSharedSecret = await Grumpkin.mul(publicKey, secretKey);
24
+ */ export async function appSiloEcdhSharedSecret(secretKey, publicKey, contractAddress) {
25
+ const rawSharedSecret = await deriveEcdhSharedSecretPoint(secretKey, publicKey);
26
+ return appSiloEcdhSharedSecretPoint(rawSharedSecret, contractAddress);
27
+ }
28
+ /**
29
+ * App-silos a shared secret point: `s_app = h(DOM_SEP__APP_SILOED_ECDH_SHARED_SECRET, S.x, S.y, app)`.
30
+ *
31
+ * Mirrors `compute_app_siloed_shared_secret` in aztec-nr.
32
+ *
33
+ * @param point - The raw shared secret point `S`.
34
+ * @param app - The contract address to silo to.
35
+ */ export function appSiloEcdhSharedSecretPoint(point, app) {
20
36
  return poseidon2HashWithSeparator([
21
- rawSharedSecret.x,
22
- rawSharedSecret.y,
23
- contractAddress
37
+ point.x,
38
+ point.y,
39
+ app
24
40
  ], DomainSeparator.APP_SILOED_ECDH_SHARED_SECRET);
25
41
  }
42
+ /**
43
+ * Protects a handshake's shared secret from being forged by the recipient: `S' = hash(ephPk, recipientPoint) * S`.
44
+ *
45
+ * Mirrors aztec-nr's `protect_from_forgery` and must stay byte-compatible with it.
46
+ *
47
+ * @param secret - The raw shared secret `S` to protect.
48
+ * @param ephPk - The handshake's ephemeral public key.
49
+ * @param recipientPoint - The recipient's address point.
50
+ */ export async function protectFromForgery(secret, ephPk, recipientPoint) {
51
+ const scalar = await poseidon2HashWithSeparator([
52
+ ephPk.x,
53
+ ephPk.y,
54
+ recipientPoint.x,
55
+ recipientPoint.y
56
+ ], DomainSeparator.HANDSHAKE_FORGERY_PROTECTION);
57
+ return Grumpkin.mul(secret, new GrumpkinScalar(scalar.toBigInt()));
58
+ }
@@ -1,4 +1,4 @@
1
- import type { L1_TO_L2_MSG_TREE_HEIGHT } from '@aztec/constants';
1
+ import { type L1_TO_L2_MSG_TREE_HEIGHT } from '@aztec/constants';
2
2
  import { Fr } from '@aztec/foundation/curves/bn254';
3
3
  import { BufferReader } from '@aztec/foundation/serialize';
4
4
  import { SiblingPath } from '@aztec/foundation/trees';
@@ -45,5 +45,26 @@ export declare class L1ToL2Message {
45
45
  static empty(): L1ToL2Message;
46
46
  static random(): Promise<L1ToL2Message>;
47
47
  }
48
+ /**
49
+ * The unsiloed nullifier a message consumer derives, together with the contract address needed to silo it.
50
+ */
51
+ export interface UnsiloedMessageNullifier {
52
+ contractAddress: AztecAddress;
53
+ nullifier: Fr;
54
+ }
55
+ /**
56
+ * Computes the unsiloed nullifier that the fee juice contract (and any consumer following the same scheme) derives when
57
+ * consuming an L1 to L2 message.
58
+ *
59
+ * This is not a general-purpose utility: other contracts may derive the secret hash and hence the nullifier
60
+ * differently. The result is unsiloed — callers silo it (with the consuming contract's address) before looking it up
61
+ * in the nullifier tree.
62
+ */
63
+ export declare function computeFeeJuiceMessageNullifier(messageHash: Fr, secret: Fr): Promise<Fr>;
64
+ /**
65
+ * Fetches the membership witness of an L1 to L2 message. When `unsiloedNullifier` is provided, the message is
66
+ * additionally required to be un-nullified.
67
+ */
68
+ export declare function getL1ToL2MessageWitness(node: AztecNode, messageHash: Fr, unsiloedNullifier?: UnsiloedMessageNullifier, referenceBlock?: BlockParameter): Promise<[bigint, SiblingPath<typeof L1_TO_L2_MSG_TREE_HEIGHT>]>;
48
69
  export declare function getNonNullifiedL1ToL2MessageWitness(node: AztecNode, contractAddress: AztecAddress, messageHash: Fr, secret: Fr, referenceBlock?: BlockParameter): Promise<[bigint, SiblingPath<typeof L1_TO_L2_MSG_TREE_HEIGHT>]>;
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibDFfdG9fbDJfbWVzc2FnZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21lc3NhZ2luZy9sMV90b19sMl9tZXNzYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQXFCLE1BQU0sNkJBQTZCLENBQUM7QUFFOUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXRELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRWxFLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTdELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4Qzs7R0FFRztBQUNILHFCQUFhLGFBQWE7SUFFdEIsdUNBQXVDO2FBQ3ZCLE1BQU0sRUFBRSxPQUFPO0lBQy9CLDBDQUEwQzthQUMxQixTQUFTLEVBQUUsT0FBTztJQUNsQywyQkFBMkI7YUFDWCxPQUFPLEVBQUUsRUFBRTtJQUMzQix1Q0FBdUM7YUFDdkIsVUFBVSxFQUFFLEVBQUU7SUFDOUIsZ0RBQWdEO2FBQ2hDLEtBQUssRUFBRSxFQUFFO0lBVjNCO0lBQ0UsdUNBQXVDO0lBQ3ZCLE1BQU0sRUFBRSxPQUFPO0lBQy9CLDBDQUEwQztJQUMxQixTQUFTLEVBQUUsT0FBTztJQUNsQywyQkFBMkI7SUFDWCxPQUFPLEVBQUUsRUFBRTtJQUMzQix1Q0FBdUM7SUFDdkIsVUFBVSxFQUFFLEVBQUU7SUFDOUIsZ0RBQWdEO0lBQ2hDLEtBQUssRUFBRSxFQUFFLEVBQ3ZCO0lBRUo7OztPQUdHO0lBQ0gsUUFBUSxJQUFJLEVBQUUsRUFBRSxDQUVmO0lBRUQsUUFBUSxJQUFJLE1BQU0sQ0FFakI7SUFFRCxJQUFJLElBQUksRUFBRSxDQUVUO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLFlBQVksR0FBRyxhQUFhLENBUTlEO0lBRUQsUUFBUSxJQUFJLE1BQU0sQ0FFakI7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxNQUFNLEdBQUcsYUFBYSxDQUc3QztJQUVELE1BQU0sQ0FBQyxLQUFLLElBQUksYUFBYSxDQUU1QjtJQUVELE9BQWEsTUFBTSxJQUFJLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FFNUM7Q0FDRjtBQUdELHdCQUFzQixtQ0FBbUMsQ0FDdkQsSUFBSSxFQUFFLFNBQVMsRUFDZixlQUFlLEVBQUUsWUFBWSxFQUM3QixXQUFXLEVBQUUsRUFBRSxFQUNmLE1BQU0sRUFBRSxFQUFFLEVBQ1YsY0FBYyxHQUFFLGNBQXlCLEdBQ3hDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsT0FBTyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FpQmpFIn0=
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibDFfdG9fbDJfbWVzc2FnZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21lc3NhZ2luZy9sMV90b19sMl9tZXNzYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUIsS0FBSyx3QkFBd0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR2xGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFxQixNQUFNLDZCQUE2QixDQUFDO0FBRTlFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV0RCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVsRSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEM7O0dBRUc7QUFDSCxxQkFBYSxhQUFhO0lBRXRCLHVDQUF1QzthQUN2QixNQUFNLEVBQUUsT0FBTztJQUMvQiwwQ0FBMEM7YUFDMUIsU0FBUyxFQUFFLE9BQU87SUFDbEMsMkJBQTJCO2FBQ1gsT0FBTyxFQUFFLEVBQUU7SUFDM0IsdUNBQXVDO2FBQ3ZCLFVBQVUsRUFBRSxFQUFFO0lBQzlCLGdEQUFnRDthQUNoQyxLQUFLLEVBQUUsRUFBRTtJQVYzQjtJQUNFLHVDQUF1QztJQUN2QixNQUFNLEVBQUUsT0FBTztJQUMvQiwwQ0FBMEM7SUFDMUIsU0FBUyxFQUFFLE9BQU87SUFDbEMsMkJBQTJCO0lBQ1gsT0FBTyxFQUFFLEVBQUU7SUFDM0IsdUNBQXVDO0lBQ3ZCLFVBQVUsRUFBRSxFQUFFO0lBQzlCLGdEQUFnRDtJQUNoQyxLQUFLLEVBQUUsRUFBRSxFQUN2QjtJQUVKOzs7T0FHRztJQUNILFFBQVEsSUFBSSxFQUFFLEVBQUUsQ0FFZjtJQUVELFFBQVEsSUFBSSxNQUFNLENBRWpCO0lBRUQsSUFBSSxJQUFJLEVBQUUsQ0FFVDtJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxZQUFZLEdBQUcsYUFBYSxDQVE5RDtJQUVELFFBQVEsSUFBSSxNQUFNLENBRWpCO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxHQUFHLGFBQWEsQ0FHN0M7SUFFRCxNQUFNLENBQUMsS0FBSyxJQUFJLGFBQWEsQ0FFNUI7SUFFRCxPQUFhLE1BQU0sSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLENBRTVDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQU0sV0FBVyx3QkFBd0I7SUFDdkMsZUFBZSxFQUFFLFlBQVksQ0FBQztJQUM5QixTQUFTLEVBQUUsRUFBRSxDQUFDO0NBQ2Y7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsd0JBQWdCLCtCQUErQixDQUFDLFdBQVcsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLENBRXhGO0FBRUQ7OztHQUdHO0FBQ0gsd0JBQXNCLHVCQUF1QixDQUMzQyxJQUFJLEVBQUUsU0FBUyxFQUNmLFdBQVcsRUFBRSxFQUFFLEVBQ2YsaUJBQWlCLENBQUMsRUFBRSx3QkFBd0IsRUFDNUMsY0FBYyxHQUFFLGNBQXlCLEdBQ3hDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsT0FBTyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FvQmpFO0FBR0Qsd0JBQXNCLG1DQUFtQyxDQUN2RCxJQUFJLEVBQUUsU0FBUyxFQUNmLGVBQWUsRUFBRSxZQUFZLEVBQzdCLFdBQVcsRUFBRSxFQUFFLEVBQ2YsTUFBTSxFQUFFLEVBQUUsRUFDVixjQUFjLEdBQUUsY0FBeUIsR0FDeEMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxPQUFPLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUdqRSJ9
@@ -1 +1 @@
1
- {"version":3,"file":"l1_to_l2_message.d.ts","sourceRoot":"","sources":["../../src/messaging/l1_to_l2_message.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAEjE,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAE9E,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC;;GAEG;AACH,qBAAa,aAAa;IAEtB,uCAAuC;aACvB,MAAM,EAAE,OAAO;IAC/B,0CAA0C;aAC1B,SAAS,EAAE,OAAO;IAClC,2BAA2B;aACX,OAAO,EAAE,EAAE;IAC3B,uCAAuC;aACvB,UAAU,EAAE,EAAE;IAC9B,gDAAgD;aAChC,KAAK,EAAE,EAAE;IAV3B;IACE,uCAAuC;IACvB,MAAM,EAAE,OAAO;IAC/B,0CAA0C;IAC1B,SAAS,EAAE,OAAO;IAClC,2BAA2B;IACX,OAAO,EAAE,EAAE;IAC3B,uCAAuC;IACvB,UAAU,EAAE,EAAE;IAC9B,gDAAgD;IAChC,KAAK,EAAE,EAAE,EACvB;IAEJ;;;OAGG;IACH,QAAQ,IAAI,EAAE,EAAE,CAEf;IAED,QAAQ,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,EAAE,CAET;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,aAAa,CAQ9D;IAED,QAAQ,IAAI,MAAM,CAEjB;IAED,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAG7C;IAED,MAAM,CAAC,KAAK,IAAI,aAAa,CAE5B;IAED,OAAa,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC,CAE5C;CACF;AAGD,wBAAsB,mCAAmC,CACvD,IAAI,EAAE,SAAS,EACf,eAAe,EAAE,YAAY,EAC7B,WAAW,EAAE,EAAE,EACf,MAAM,EAAE,EAAE,EACV,cAAc,GAAE,cAAyB,GACxC,OAAO,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC,CAiBjE"}
1
+ {"version":3,"file":"l1_to_l2_message.d.ts","sourceRoot":"","sources":["../../src/messaging/l1_to_l2_message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAGlF,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAE9E,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC;;GAEG;AACH,qBAAa,aAAa;IAEtB,uCAAuC;aACvB,MAAM,EAAE,OAAO;IAC/B,0CAA0C;aAC1B,SAAS,EAAE,OAAO;IAClC,2BAA2B;aACX,OAAO,EAAE,EAAE;IAC3B,uCAAuC;aACvB,UAAU,EAAE,EAAE;IAC9B,gDAAgD;aAChC,KAAK,EAAE,EAAE;IAV3B;IACE,uCAAuC;IACvB,MAAM,EAAE,OAAO;IAC/B,0CAA0C;IAC1B,SAAS,EAAE,OAAO;IAClC,2BAA2B;IACX,OAAO,EAAE,EAAE;IAC3B,uCAAuC;IACvB,UAAU,EAAE,EAAE;IAC9B,gDAAgD;IAChC,KAAK,EAAE,EAAE,EACvB;IAEJ;;;OAGG;IACH,QAAQ,IAAI,EAAE,EAAE,CAEf;IAED,QAAQ,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,EAAE,CAET;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,aAAa,CAQ9D;IAED,QAAQ,IAAI,MAAM,CAEjB;IAED,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAG7C;IAED,MAAM,CAAC,KAAK,IAAI,aAAa,CAE5B;IAED,OAAa,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC,CAE5C;CACF;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,eAAe,EAAE,YAAY,CAAC;IAC9B,SAAS,EAAE,EAAE,CAAC;CACf;AAED;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAAC,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAExF;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,SAAS,EACf,WAAW,EAAE,EAAE,EACf,iBAAiB,CAAC,EAAE,wBAAwB,EAC5C,cAAc,GAAE,cAAyB,GACxC,OAAO,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC,CAoBjE;AAGD,wBAAsB,mCAAmC,CACvD,IAAI,EAAE,SAAS,EACf,eAAe,EAAE,YAAY,EAC7B,WAAW,EAAE,EAAE,EACf,MAAM,EAAE,EAAE,EACV,cAAc,GAAE,cAAyB,GACxC,OAAO,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC,CAGjE"}
@@ -1,8 +1,10 @@
1
+ import { DomainSeparator } from '@aztec/constants';
2
+ import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
1
3
  import { sha256ToField } from '@aztec/foundation/crypto/sha256';
2
4
  import { Fr } from '@aztec/foundation/curves/bn254';
3
5
  import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
4
6
  import { bufferToHex } from '@aztec/foundation/string';
5
- import { computeL1ToL2MessageNullifier } from '../hash/hash.js';
7
+ import { siloNullifier } from '../hash/hash.js';
6
8
  import { MerkleTreeId } from '../trees/merkle_tree_id.js';
7
9
  import { L1Actor } from './l1_actor.js';
8
10
  import { L2Actor } from './l2_actor.js';
@@ -62,20 +64,43 @@ import { L2Actor } from './l2_actor.js';
62
64
  return new L1ToL2Message(L1Actor.random(), await L2Actor.random(), Fr.random(), Fr.random(), Fr.random());
63
65
  }
64
66
  }
65
- // This functionality is not on the node because we do not want to pass the node the secret, and give the node the ability to derive a valid nullifer for an L1 to L2 message.
66
- export async function getNonNullifiedL1ToL2MessageWitness(node, contractAddress, messageHash, secret, referenceBlock = 'latest') {
67
- const messageNullifier = await computeL1ToL2MessageNullifier(contractAddress, messageHash, secret);
68
- const [l1ToL2Response, nullifierResponse] = await Promise.all([
69
- node.getL1ToL2MessageMembershipWitness(referenceBlock, messageHash),
70
- node.findLeavesIndexes(referenceBlock, MerkleTreeId.NULLIFIER_TREE, [
71
- messageNullifier
72
- ])
73
- ]);
67
+ /**
68
+ * Computes the unsiloed nullifier that the fee juice contract (and any consumer following the same scheme) derives when
69
+ * consuming an L1 to L2 message.
70
+ *
71
+ * This is not a general-purpose utility: other contracts may derive the secret hash and hence the nullifier
72
+ * differently. The result is unsiloed — callers silo it (with the consuming contract's address) before looking it up
73
+ * in the nullifier tree.
74
+ */ export function computeFeeJuiceMessageNullifier(messageHash, secret) {
75
+ return poseidon2HashWithSeparator([
76
+ messageHash,
77
+ secret
78
+ ], DomainSeparator.MESSAGE_NULLIFIER);
79
+ }
80
+ /**
81
+ * Fetches the membership witness of an L1 to L2 message. When `unsiloedNullifier` is provided, the message is
82
+ * additionally required to be un-nullified.
83
+ */ export async function getL1ToL2MessageWitness(node, messageHash, unsiloedNullifier, referenceBlock = 'latest') {
84
+ // Both requests are dispatched before awaiting so they run concurrently.
85
+ const l1ToL2ResponsePromise = node.getL1ToL2MessageMembershipWitness(referenceBlock, messageHash);
86
+ const nullifierResponsePromise = unsiloedNullifier ? siloNullifier(unsiloedNullifier.contractAddress, unsiloedNullifier.nullifier).then((siloed)=>node.findLeavesIndexes(referenceBlock, MerkleTreeId.NULLIFIER_TREE, [
87
+ siloed
88
+ ])) : undefined;
89
+ const l1ToL2Response = await l1ToL2ResponsePromise;
74
90
  if (!l1ToL2Response) {
75
91
  throw new Error(`No L1 to L2 message found for message hash ${messageHash.toString()}`);
76
92
  }
77
- if (nullifierResponse[0] !== undefined) {
93
+ const nullifierResponse = await nullifierResponsePromise;
94
+ if (nullifierResponse?.[0] !== undefined) {
78
95
  throw new Error(`No non-nullified L1 to L2 message found for message hash ${messageHash.toString()}`);
79
96
  }
80
97
  return l1ToL2Response;
81
98
  }
99
+ // This functionality is not on the node because we do not want to pass the node the secret, and give the node the ability to derive a valid nullifer for an L1 to L2 message.
100
+ export async function getNonNullifiedL1ToL2MessageWitness(node, contractAddress, messageHash, secret, referenceBlock = 'latest') {
101
+ const nullifier = await computeFeeJuiceMessageNullifier(messageHash, secret);
102
+ return getL1ToL2MessageWitness(node, messageHash, {
103
+ contractAddress,
104
+ nullifier
105
+ }, referenceBlock);
106
+ }
@@ -17,4 +17,4 @@ export declare function orderAttestations(attestations: CheckpointAttestation[],
17
17
  * 3. Remaining attestations filled to reach the required count
18
18
  */
19
19
  export declare function trimAttestations(attestations: CheckpointAttestation[], required: number, proposerAddress: EthAddress, localAddresses: EthAddress[]): CheckpointAttestation[];
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0YXRpb25fdXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wMnAvYXR0ZXN0YXRpb25fdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFaEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUV6RTs7OztHQUlHO0FBQ0gsd0JBQWdCLGlCQUFpQixDQUMvQixZQUFZLEVBQUUscUJBQXFCLEVBQUUsRUFDckMsY0FBYyxFQUFFLFVBQVUsRUFBRSxHQUMzQixvQkFBb0IsRUFBRSxDQXFCeEI7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILHdCQUFnQixnQkFBZ0IsQ0FDOUIsWUFBWSxFQUFFLHFCQUFxQixFQUFFLEVBQ3JDLFFBQVEsRUFBRSxNQUFNLEVBQ2hCLGVBQWUsRUFBRSxVQUFVLEVBQzNCLGNBQWMsRUFBRSxVQUFVLEVBQUUsR0FDM0IscUJBQXFCLEVBQUUsQ0F3Q3pCIn0=
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0YXRpb25fdXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wMnAvYXR0ZXN0YXRpb25fdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFaEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUV6RTs7OztHQUlHO0FBQ0gsd0JBQWdCLGlCQUFpQixDQUMvQixZQUFZLEVBQUUscUJBQXFCLEVBQUUsRUFDckMsY0FBYyxFQUFFLFVBQVUsRUFBRSxHQUMzQixvQkFBb0IsRUFBRSxDQTJCeEI7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILHdCQUFnQixnQkFBZ0IsQ0FDOUIsWUFBWSxFQUFFLHFCQUFxQixFQUFFLEVBQ3JDLFFBQVEsRUFBRSxNQUFNLEVBQ2hCLGVBQWUsRUFBRSxVQUFVLEVBQzNCLGNBQWMsRUFBRSxVQUFVLEVBQUUsR0FDM0IscUJBQXFCLEVBQUUsQ0F3Q3pCIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"attestation_utils.d.ts","sourceRoot":"","sources":["../../src/p2p/attestation_utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEzE;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,qBAAqB,EAAE,EACrC,cAAc,EAAE,UAAU,EAAE,GAC3B,oBAAoB,EAAE,CAqBxB;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,qBAAqB,EAAE,EACrC,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,UAAU,EAC3B,cAAc,EAAE,UAAU,EAAE,GAC3B,qBAAqB,EAAE,CAwCzB"}
1
+ {"version":3,"file":"attestation_utils.d.ts","sourceRoot":"","sources":["../../src/p2p/attestation_utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEzE;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,qBAAqB,EAAE,EACrC,cAAc,EAAE,UAAU,EAAE,GAC3B,oBAAoB,EAAE,CA2BxB;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,qBAAqB,EAAE,EACrC,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,UAAU,EAC3B,cAAc,EAAE,UAAU,EAAE,GAC3B,qBAAqB,EAAE,CAwCzB"}
@@ -1,3 +1,4 @@
1
+ import { normalizeSignature } from '@aztec/foundation/crypto/secp256k1-signer';
1
2
  import { CommitteeAttestation } from '../block/index.js';
2
3
  /**
3
4
  * Returns attestation signatures in the order of a series of provided ethereum addresses
@@ -9,7 +10,13 @@ import { CommitteeAttestation } from '../block/index.js';
9
10
  for (const attestation of attestations){
10
11
  const sender = attestation.getSender();
11
12
  if (sender) {
12
- attestationMap.set(sender.toString(), CommitteeAttestation.fromAddressAndSignature(sender, attestation.signature));
13
+ // Canonicalize the recovery byte to v ∈ {27, 28} before it reaches the L1 bundle. A committee
14
+ // member (or a peer mutating the byte in flight) can emit an equivalent signature in yParity form
15
+ // (v = 0/1); left as-is it makes `packAttestations` (empty iff v === 0) and `getSigners` (empty iff
16
+ // r,s,v all zero) disagree, reverting `propose()` with SignersSizeMismatch, and a v = 1 byte would
17
+ // later revert epoch proving in ECDSA.recover. `sender` recovered, so the signature is non-empty
18
+ // and low-s, and normalizeSignature preserves the recovered address.
19
+ attestationMap.set(sender.toString(), CommitteeAttestation.fromAddressAndSignature(sender, normalizeSignature(attestation.signature)));
13
20
  }
14
21
  }
15
22
  // Create the ordered array based on the orderAddresses, else return an empty attestation
@@ -47,6 +47,14 @@ export declare class CheckpointAttestation extends Gossipable {
47
47
  * @returns The proposer of the checkpoint
48
48
  */
49
49
  getProposer(): EthAddress | undefined;
50
+ /**
51
+ * Returns a copy with the attester signature canonicalized to v ∈ {27, 28}. Callers store attestations
52
+ * received from gossip verbatim; normalizing on ingress keeps a signature emitted in yParity form
53
+ * (v = 0/1) — whether by a malicious committee member or a peer mutating the byte in flight — from
54
+ * reaching the L1 bundle in a non-canonical form. Must only be called once the signature has recovered
55
+ * a sender (so it is non-empty and low-s); `normalizeSignature` throws on an all-zero signature.
56
+ */
57
+ withNormalizedSignature(): CheckpointAttestation;
50
58
  getPayload(): Buffer;
51
59
  /**
52
60
  * Returns a keccak256 hash of the signed consensus payload.
@@ -86,4 +94,4 @@ export declare class CheckpointAttestation extends Gossipable {
86
94
  proposerSignature: `0x${string}`;
87
95
  };
88
96
  }
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludF9hdHRlc3RhdGlvbi5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3AycC9jaGVja3BvaW50X2F0dGVzdGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxLQUFLLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxLQUFLLFlBQVksRUFBWSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZFLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFxQixNQUFNLDZCQUE2QixDQUFDO0FBSTlFLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWxELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsS0FBSyw0QkFBNEIsRUFBNkIsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFNUM7Ozs7O0dBS0c7QUFDSCxxQkFBYSxxQkFBc0IsU0FBUSxVQUFVO0lBT2pELGlFQUFpRTthQUNqRCxPQUFPLEVBQUUsZ0JBQWdCO0lBRXpDLCtDQUErQzthQUMvQixTQUFTLEVBQUUsU0FBUztJQUVwQyxpREFBaUQ7YUFDakMsaUJBQWlCLEVBQUUsU0FBUztJQWI5QyxPQUFnQixRQUFRLFlBQW9DO0lBRTVELE9BQU8sQ0FBQyxZQUFZLENBQTRDO0lBQ2hFLE9BQU8sQ0FBQyxjQUFjLENBQTRDO0lBRWxFO0lBQ0UsaUVBQWlFO0lBQ2pELE9BQU8sRUFBRSxnQkFBZ0I7SUFFekMsK0NBQStDO0lBQy9CLFNBQVMsRUFBRSxTQUFTO0lBRXBDLGlEQUFpRDtJQUNqQyxpQkFBaUIsRUFBRSxTQUFTLEVBRzdDO0lBRUQsTUFBTSxLQUFLLE1BQU0sSUFBSSxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FRakQ7SUFFUSw0QkFBNEIsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLENBRTdEO0lBRUQsSUFBSSxPQUFPLElBQUksRUFBRSxDQUVoQjtJQUVELElBQUksVUFBVSxJQUFJLFVBQVUsQ0FFM0I7SUFFRCxJQUFJLGdCQUFnQixJQUFJLDRCQUE0QixDQUVuRDtJQUVEOzs7T0FHRztJQUNILFNBQVMsSUFBSSxVQUFVLEdBQUcsU0FBUyxDQUtsQztJQUVEOzs7T0FHRztJQUNILFdBQVcsSUFBSSxVQUFVLEdBQUcsU0FBUyxDQWVwQztJQUVELFVBQVUsSUFBSSxNQUFNLENBRW5CO0lBRUQ7OztPQUdHO0lBQ0gsY0FBYyxJQUFJLHNCQUFzQixDQUV2QztJQUVELFFBQVEsSUFBSSxNQUFNLENBRWpCO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxHQUFHLFlBQVksR0FBRyxxQkFBcUIsQ0FPbkU7SUFFRCxNQUFNLENBQUMsS0FBSyxJQUFJLHFCQUFxQixDQUVwQztJQUVELE1BQU0sQ0FBQyxNQUFNLElBQUkscUJBQXFCLENBRXJDO0lBRUQsT0FBTyxJQUFJLE1BQU0sQ0FFaEI7SUFFRCxTQUFTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQU1SO0NBQ0YifQ==
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludF9hdHRlc3RhdGlvbi5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3AycC9jaGVja3BvaW50X2F0dGVzdGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxLQUFLLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxLQUFLLFlBQVksRUFBWSxNQUFNLDBCQUEwQixDQUFDO0FBRXZFLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFxQixNQUFNLDZCQUE2QixDQUFDO0FBSTlFLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWxELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsS0FBSyw0QkFBNEIsRUFBNkIsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFNUM7Ozs7O0dBS0c7QUFDSCxxQkFBYSxxQkFBc0IsU0FBUSxVQUFVO0lBT2pELGlFQUFpRTthQUNqRCxPQUFPLEVBQUUsZ0JBQWdCO0lBRXpDLCtDQUErQzthQUMvQixTQUFTLEVBQUUsU0FBUztJQUVwQyxpREFBaUQ7YUFDakMsaUJBQWlCLEVBQUUsU0FBUztJQWI5QyxPQUFnQixRQUFRLFlBQW9DO0lBRTVELE9BQU8sQ0FBQyxZQUFZLENBQTRDO0lBQ2hFLE9BQU8sQ0FBQyxjQUFjLENBQTRDO0lBRWxFO0lBQ0UsaUVBQWlFO0lBQ2pELE9BQU8sRUFBRSxnQkFBZ0I7SUFFekMsK0NBQStDO0lBQy9CLFNBQVMsRUFBRSxTQUFTO0lBRXBDLGlEQUFpRDtJQUNqQyxpQkFBaUIsRUFBRSxTQUFTLEVBRzdDO0lBRUQsTUFBTSxLQUFLLE1BQU0sSUFBSSxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FRakQ7SUFFUSw0QkFBNEIsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLENBRTdEO0lBRUQsSUFBSSxPQUFPLElBQUksRUFBRSxDQUVoQjtJQUVELElBQUksVUFBVSxJQUFJLFVBQVUsQ0FFM0I7SUFFRCxJQUFJLGdCQUFnQixJQUFJLDRCQUE0QixDQUVuRDtJQUVEOzs7T0FHRztJQUNILFNBQVMsSUFBSSxVQUFVLEdBQUcsU0FBUyxDQUtsQztJQUVEOzs7T0FHRztJQUNILFdBQVcsSUFBSSxVQUFVLEdBQUcsU0FBUyxDQWVwQztJQUVEOzs7Ozs7T0FNRztJQUNILHVCQUF1QixJQUFJLHFCQUFxQixDQUUvQztJQUVELFVBQVUsSUFBSSxNQUFNLENBRW5CO0lBRUQ7OztPQUdHO0lBQ0gsY0FBYyxJQUFJLHNCQUFzQixDQUV2QztJQUVELFFBQVEsSUFBSSxNQUFNLENBRWpCO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxHQUFHLFlBQVksR0FBRyxxQkFBcUIsQ0FPbkU7SUFFRCxNQUFNLENBQUMsS0FBSyxJQUFJLHFCQUFxQixDQUVwQztJQUVELE1BQU0sQ0FBQyxNQUFNLElBQUkscUJBQXFCLENBRXJDO0lBRUQsT0FBTyxJQUFJLE1BQU0sQ0FFaEI7SUFFRCxTQUFTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQU1SO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"checkpoint_attestation.d.ts","sourceRoot":"","sources":["../../src/p2p/checkpoint_attestation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,KAAK,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC1F,OAAO,EAAE,KAAK,YAAY,EAAY,MAAM,0BAA0B,CAAC;AACvE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAI9E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,KAAK,4BAA4B,EAA6B,MAAM,sBAAsB,CAAC;AACpG,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C;;;;;GAKG;AACH,qBAAa,qBAAsB,SAAQ,UAAU;IAOjD,iEAAiE;aACjD,OAAO,EAAE,gBAAgB;IAEzC,+CAA+C;aAC/B,SAAS,EAAE,SAAS;IAEpC,iDAAiD;aACjC,iBAAiB,EAAE,SAAS;IAb9C,OAAgB,QAAQ,YAAoC;IAE5D,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,cAAc,CAA4C;IAElE;IACE,iEAAiE;IACjD,OAAO,EAAE,gBAAgB;IAEzC,+CAA+C;IAC/B,SAAS,EAAE,SAAS;IAEpC,iDAAiD;IACjC,iBAAiB,EAAE,SAAS,EAG7C;IAED,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,qBAAqB,CAAC,CAQjD;IAEQ,4BAA4B,IAAI,OAAO,CAAC,YAAY,CAAC,CAE7D;IAED,IAAI,OAAO,IAAI,EAAE,CAEhB;IAED,IAAI,UAAU,IAAI,UAAU,CAE3B;IAED,IAAI,gBAAgB,IAAI,4BAA4B,CAEnD;IAED;;;OAGG;IACH,SAAS,IAAI,UAAU,GAAG,SAAS,CAKlC;IAED;;;OAGG;IACH,WAAW,IAAI,UAAU,GAAG,SAAS,CAepC;IAED,UAAU,IAAI,MAAM,CAEnB;IAED;;;OAGG;IACH,cAAc,IAAI,sBAAsB,CAEvC;IAED,QAAQ,IAAI,MAAM,CAEjB;IAED,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,qBAAqB,CAOnE;IAED,MAAM,CAAC,KAAK,IAAI,qBAAqB,CAEpC;IAED,MAAM,CAAC,MAAM,IAAI,qBAAqB,CAErC;IAED,OAAO,IAAI,MAAM,CAEhB;IAED,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;MAMR;CACF"}
1
+ {"version":3,"file":"checkpoint_attestation.d.ts","sourceRoot":"","sources":["../../src/p2p/checkpoint_attestation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,KAAK,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC1F,OAAO,EAAE,KAAK,YAAY,EAAY,MAAM,0BAA0B,CAAC;AAEvE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAI9E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,KAAK,4BAA4B,EAA6B,MAAM,sBAAsB,CAAC;AACpG,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C;;;;;GAKG;AACH,qBAAa,qBAAsB,SAAQ,UAAU;IAOjD,iEAAiE;aACjD,OAAO,EAAE,gBAAgB;IAEzC,+CAA+C;aAC/B,SAAS,EAAE,SAAS;IAEpC,iDAAiD;aACjC,iBAAiB,EAAE,SAAS;IAb9C,OAAgB,QAAQ,YAAoC;IAE5D,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,cAAc,CAA4C;IAElE;IACE,iEAAiE;IACjD,OAAO,EAAE,gBAAgB;IAEzC,+CAA+C;IAC/B,SAAS,EAAE,SAAS;IAEpC,iDAAiD;IACjC,iBAAiB,EAAE,SAAS,EAG7C;IAED,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,qBAAqB,CAAC,CAQjD;IAEQ,4BAA4B,IAAI,OAAO,CAAC,YAAY,CAAC,CAE7D;IAED,IAAI,OAAO,IAAI,EAAE,CAEhB;IAED,IAAI,UAAU,IAAI,UAAU,CAE3B;IAED,IAAI,gBAAgB,IAAI,4BAA4B,CAEnD;IAED;;;OAGG;IACH,SAAS,IAAI,UAAU,GAAG,SAAS,CAKlC;IAED;;;OAGG;IACH,WAAW,IAAI,UAAU,GAAG,SAAS,CAepC;IAED;;;;;;OAMG;IACH,uBAAuB,IAAI,qBAAqB,CAE/C;IAED,UAAU,IAAI,MAAM,CAEnB;IAED;;;OAGG;IACH,cAAc,IAAI,sBAAsB,CAEvC;IAED,QAAQ,IAAI,MAAM,CAEjB;IAED,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,qBAAqB,CAOnE;IAED,MAAM,CAAC,KAAK,IAAI,qBAAqB,CAEpC;IAED,MAAM,CAAC,MAAM,IAAI,qBAAqB,CAErC;IAED,OAAO,IAAI,MAAM,CAEhB;IAED,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;MAMR;CACF"}
@@ -1,5 +1,6 @@
1
1
  import { CheckpointProposalHash } from '@aztec/foundation/branded-types';
2
2
  import { Buffer32 } from '@aztec/foundation/buffer';
3
+ import { normalizeSignature } from '@aztec/foundation/crypto/secp256k1-signer';
3
4
  import { Signature } from '@aztec/foundation/eth-signature';
4
5
  import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
5
6
  import { z } from 'zod';
@@ -64,6 +65,15 @@ import { TopicType } from './topic_type.js';
64
65
  }
65
66
  return this.cachedProposer ?? undefined;
66
67
  }
68
+ /**
69
+ * Returns a copy with the attester signature canonicalized to v ∈ {27, 28}. Callers store attestations
70
+ * received from gossip verbatim; normalizing on ingress keeps a signature emitted in yParity form
71
+ * (v = 0/1) — whether by a malicious committee member or a peer mutating the byte in flight — from
72
+ * reaching the L1 bundle in a non-canonical form. Must only be called once the signature has recovered
73
+ * a sender (so it is non-empty and low-s); `normalizeSignature` throws on an all-zero signature.
74
+ */ withNormalizedSignature() {
75
+ return new CheckpointAttestation(this.payload, normalizeSignature(this.signature), this.proposerSignature);
76
+ }
67
77
  getPayload() {
68
78
  return this.payload.getPayloadToSign();
69
79
  }
@@ -28,6 +28,15 @@ export declare function hasValidSignatureContext(signable: Signable, expected: C
28
28
  export declare function getCoordinationSignatureTypedDataForPayloadHash(payloadHash: Buffer32, type: CoordinationSignatureType, context: CoordinationSignatureContext): TypedDataDefinition;
29
29
  export declare function getCoordinationSignatureTypedData(signable: Signable): TypedDataDefinition;
30
30
  export declare function getHashedSignaturePayloadTypedData(signable: Signable): Buffer32;
31
+ /**
32
+ * Recovers the sender of a gossiped coordination message. Deliberately lenient (allowYParityAsV): a
33
+ * signature whose recovery byte is in yParity form (v ∈ {0, 1}) still resolves to its sender, so the P2P
34
+ * layer can attribute and accept it and then canonicalize on ingress (CheckpointAttestation.
35
+ * withNormalizedSignature, A-1351) before it reaches the L1 bundle. This is intentionally looser than
36
+ * on-chain checkpoint validation (getAttestationInfoFromPayload), which recovers strictly to mirror L1's
37
+ * ECDSA.recover — do not unify the two. These proposal/attestation signatures are P2P-only and never reach
38
+ * L1 verbatim, so leniency here cannot leak a non-canonical byte onto L1.
39
+ */
31
40
  export declare function recoverCoordinationSigner(signable: Signable, signature: Signature): EthAddress | undefined;
32
41
  export declare function getHashedSignaturePayload(s: Signable): Buffer32;
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmF0dXJlX3V0aWxzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcDJwL3NpZ25hdHVyZV91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxLQUFLLFlBQVksRUFBcUIsTUFBTSw2QkFBNkIsQ0FBQztBQUVuRixPQUFPLEVBQUUsS0FBSyxtQkFBbUIsRUFBaUIsTUFBTSxNQUFNLENBQUM7QUFHL0QsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbEQsTUFBTSxNQUFNLHlCQUF5QixHQUNqQyxlQUFlLEdBQ2Ysb0JBQW9CLEdBQ3BCLHVCQUF1QixHQUN2Qix3QkFBd0IsR0FDeEIsV0FBVyxDQUFDO0FBRWhCLE1BQU0sTUFBTSw0QkFBNEIsR0FBRztJQUN6QyxPQUFPLEVBQUUsTUFBTSxDQUFDO0lBQ2hCLGFBQWEsRUFBRSxVQUFVLENBQUM7Q0FDM0IsQ0FBQztBQUVGLGVBQU8sTUFBTSxvQ0FBb0MsRUFBRSw0QkFHbEQsQ0FBQztBQUVGLGVBQU8sTUFBTSxrQ0FBa0MsRUFBRSxNQUFNLENBQUMsNEJBQTRCLENBR2xGLENBQUM7QUFFSCxNQUFNLFdBQVcsUUFBUTtJQUN2QixRQUFRLENBQUMsV0FBVyxFQUFFLHlCQUF5QixDQUFDO0lBQ2hELFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSw0QkFBNEIsQ0FBQztJQUN4RCxnQkFBZ0IsSUFBSSxNQUFNLENBQUM7Q0FDNUI7QUFFRCx3QkFBZ0Isa0NBQWtDLENBQ2hELENBQUMsRUFBRSw0QkFBNEIsRUFDL0IsQ0FBQyxFQUFFLDRCQUE0QixHQUM5QixPQUFPLENBRVQ7QUFFRCx3QkFBZ0IscUNBQXFDLENBQUMsR0FBRyxFQUFFLDRCQUE0QixHQUFHLE1BQU0sQ0FFL0Y7QUFFRCx3QkFBZ0IsZ0NBQWdDLENBQUMsTUFBTSxFQUFFLFlBQVksR0FBRyw0QkFBNEIsQ0FJbkc7QUFFRDs7OztHQUlHO0FBQ0gsd0JBQWdCLHdCQUF3QixDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLDRCQUE0QixHQUFHLE9BQU8sQ0FFNUc7QUFxQkQsd0JBQWdCLCtDQUErQyxDQUM3RCxXQUFXLEVBQUUsUUFBUSxFQUNyQixJQUFJLEVBQUUseUJBQXlCLEVBQy9CLE9BQU8sRUFBRSw0QkFBNEIsR0FDcEMsbUJBQW1CLENBY3JCO0FBRUQsd0JBQWdCLGlDQUFpQyxDQUFDLFFBQVEsRUFBRSxRQUFRLEdBQUcsbUJBQW1CLENBR3pGO0FBRUQsd0JBQWdCLGtDQUFrQyxDQUFDLFFBQVEsRUFBRSxRQUFRLEdBQUcsUUFBUSxDQUUvRTtBQUVELHdCQUFnQix5QkFBeUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEdBQUcsVUFBVSxHQUFHLFNBQVMsQ0FHMUc7QUFFRCx3QkFBZ0IseUJBQXlCLENBQUMsQ0FBQyxFQUFFLFFBQVEsR0FBRyxRQUFRLENBRS9EIn0=
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmF0dXJlX3V0aWxzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcDJwL3NpZ25hdHVyZV91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxLQUFLLFlBQVksRUFBcUIsTUFBTSw2QkFBNkIsQ0FBQztBQUVuRixPQUFPLEVBQUUsS0FBSyxtQkFBbUIsRUFBaUIsTUFBTSxNQUFNLENBQUM7QUFHL0QsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbEQsTUFBTSxNQUFNLHlCQUF5QixHQUNqQyxlQUFlLEdBQ2Ysb0JBQW9CLEdBQ3BCLHVCQUF1QixHQUN2Qix3QkFBd0IsR0FDeEIsV0FBVyxDQUFDO0FBRWhCLE1BQU0sTUFBTSw0QkFBNEIsR0FBRztJQUN6QyxPQUFPLEVBQUUsTUFBTSxDQUFDO0lBQ2hCLGFBQWEsRUFBRSxVQUFVLENBQUM7Q0FDM0IsQ0FBQztBQUVGLGVBQU8sTUFBTSxvQ0FBb0MsRUFBRSw0QkFHbEQsQ0FBQztBQUVGLGVBQU8sTUFBTSxrQ0FBa0MsRUFBRSxNQUFNLENBQUMsNEJBQTRCLENBR2xGLENBQUM7QUFFSCxNQUFNLFdBQVcsUUFBUTtJQUN2QixRQUFRLENBQUMsV0FBVyxFQUFFLHlCQUF5QixDQUFDO0lBQ2hELFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSw0QkFBNEIsQ0FBQztJQUN4RCxnQkFBZ0IsSUFBSSxNQUFNLENBQUM7Q0FDNUI7QUFFRCx3QkFBZ0Isa0NBQWtDLENBQ2hELENBQUMsRUFBRSw0QkFBNEIsRUFDL0IsQ0FBQyxFQUFFLDRCQUE0QixHQUM5QixPQUFPLENBRVQ7QUFFRCx3QkFBZ0IscUNBQXFDLENBQUMsR0FBRyxFQUFFLDRCQUE0QixHQUFHLE1BQU0sQ0FFL0Y7QUFFRCx3QkFBZ0IsZ0NBQWdDLENBQUMsTUFBTSxFQUFFLFlBQVksR0FBRyw0QkFBNEIsQ0FJbkc7QUFFRDs7OztHQUlHO0FBQ0gsd0JBQWdCLHdCQUF3QixDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLDRCQUE0QixHQUFHLE9BQU8sQ0FFNUc7QUFxQkQsd0JBQWdCLCtDQUErQyxDQUM3RCxXQUFXLEVBQUUsUUFBUSxFQUNyQixJQUFJLEVBQUUseUJBQXlCLEVBQy9CLE9BQU8sRUFBRSw0QkFBNEIsR0FDcEMsbUJBQW1CLENBY3JCO0FBRUQsd0JBQWdCLGlDQUFpQyxDQUFDLFFBQVEsRUFBRSxRQUFRLEdBQUcsbUJBQW1CLENBR3pGO0FBRUQsd0JBQWdCLGtDQUFrQyxDQUFDLFFBQVEsRUFBRSxRQUFRLEdBQUcsUUFBUSxDQUUvRTtBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsd0JBQWdCLHlCQUF5QixDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsR0FBRyxVQUFVLEdBQUcsU0FBUyxDQUcxRztBQUVELHdCQUFnQix5QkFBeUIsQ0FBQyxDQUFDLEVBQUUsUUFBUSxHQUFHLFFBQVEsQ0FFL0QifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"signature_utils.d.ts","sourceRoot":"","sources":["../../src/p2p/signature_utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGpD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,KAAK,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAEnF,OAAO,EAAE,KAAK,mBAAmB,EAAiB,MAAM,MAAM,CAAC;AAG/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,MAAM,yBAAyB,GACjC,eAAe,GACf,oBAAoB,GACpB,uBAAuB,GACvB,wBAAwB,GACxB,WAAW,CAAC;AAEhB,MAAM,MAAM,4BAA4B,GAAG;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,UAAU,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,oCAAoC,EAAE,4BAGlD,CAAC;AAEF,eAAO,MAAM,kCAAkC,EAAE,MAAM,CAAC,4BAA4B,CAGlF,CAAC;AAEH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,WAAW,EAAE,yBAAyB,CAAC;IAChD,QAAQ,CAAC,gBAAgB,EAAE,4BAA4B,CAAC;IACxD,gBAAgB,IAAI,MAAM,CAAC;CAC5B;AAED,wBAAgB,kCAAkC,CAChD,CAAC,EAAE,4BAA4B,EAC/B,CAAC,EAAE,4BAA4B,GAC9B,OAAO,CAET;AAED,wBAAgB,qCAAqC,CAAC,GAAG,EAAE,4BAA4B,GAAG,MAAM,CAE/F;AAED,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,YAAY,GAAG,4BAA4B,CAInG;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,4BAA4B,GAAG,OAAO,CAE5G;AAqBD,wBAAgB,+CAA+C,CAC7D,WAAW,EAAE,QAAQ,EACrB,IAAI,EAAE,yBAAyB,EAC/B,OAAO,EAAE,4BAA4B,GACpC,mBAAmB,CAcrB;AAED,wBAAgB,iCAAiC,CAAC,QAAQ,EAAE,QAAQ,GAAG,mBAAmB,CAGzF;AAED,wBAAgB,kCAAkC,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAE/E;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAG1G;AAED,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAE/D"}
1
+ {"version":3,"file":"signature_utils.d.ts","sourceRoot":"","sources":["../../src/p2p/signature_utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGpD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,KAAK,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAEnF,OAAO,EAAE,KAAK,mBAAmB,EAAiB,MAAM,MAAM,CAAC;AAG/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,MAAM,yBAAyB,GACjC,eAAe,GACf,oBAAoB,GACpB,uBAAuB,GACvB,wBAAwB,GACxB,WAAW,CAAC;AAEhB,MAAM,MAAM,4BAA4B,GAAG;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,UAAU,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,oCAAoC,EAAE,4BAGlD,CAAC;AAEF,eAAO,MAAM,kCAAkC,EAAE,MAAM,CAAC,4BAA4B,CAGlF,CAAC;AAEH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,WAAW,EAAE,yBAAyB,CAAC;IAChD,QAAQ,CAAC,gBAAgB,EAAE,4BAA4B,CAAC;IACxD,gBAAgB,IAAI,MAAM,CAAC;CAC5B;AAED,wBAAgB,kCAAkC,CAChD,CAAC,EAAE,4BAA4B,EAC/B,CAAC,EAAE,4BAA4B,GAC9B,OAAO,CAET;AAED,wBAAgB,qCAAqC,CAAC,GAAG,EAAE,4BAA4B,GAAG,MAAM,CAE/F;AAED,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,YAAY,GAAG,4BAA4B,CAInG;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,4BAA4B,GAAG,OAAO,CAE5G;AAqBD,wBAAgB,+CAA+C,CAC7D,WAAW,EAAE,QAAQ,EACrB,IAAI,EAAE,yBAAyB,EAC/B,OAAO,EAAE,4BAA4B,GACpC,mBAAmB,CAcrB;AAED,wBAAgB,iCAAiC,CAAC,QAAQ,EAAE,QAAQ,GAAG,mBAAmB,CAGzF;AAED,wBAAgB,kCAAkC,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAE/E;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAG1G;AAED,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAE/D"}
@@ -112,7 +112,15 @@ export function getCoordinationSignatureTypedData(signable) {
112
112
  export function getHashedSignaturePayloadTypedData(signable) {
113
113
  return Buffer32.fromString(hashTypedData(getCoordinationSignatureTypedData(signable)));
114
114
  }
115
- export function recoverCoordinationSigner(signable, signature) {
115
+ /**
116
+ * Recovers the sender of a gossiped coordination message. Deliberately lenient (allowYParityAsV): a
117
+ * signature whose recovery byte is in yParity form (v ∈ {0, 1}) still resolves to its sender, so the P2P
118
+ * layer can attribute and accept it and then canonicalize on ingress (CheckpointAttestation.
119
+ * withNormalizedSignature, A-1351) before it reaches the L1 bundle. This is intentionally looser than
120
+ * on-chain checkpoint validation (getAttestationInfoFromPayload), which recovers strictly to mirror L1's
121
+ * ECDSA.recover — do not unify the two. These proposal/attestation signatures are P2P-only and never reach
122
+ * L1 verbatim, so leniency here cannot leak a non-canonical byte onto L1.
123
+ */ export function recoverCoordinationSigner(signable, signature) {
116
124
  const digest = getHashedSignaturePayloadTypedData(signable);
117
125
  return tryRecoverAddress(digest, signature, {
118
126
  allowYParityAsV: true
@@ -1,5 +1,5 @@
1
- import { AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED } from '@aztec/constants';
1
+ import { AVM_V2_PROOF_LENGTH_IN_FIELDS } from '@aztec/constants';
2
2
  import { AvmCircuitPublicInputs } from '../avm/avm_circuit_public_inputs.js';
3
3
  import type { ProofDataForFixedVk } from '../proofs/proof_data.js';
4
- export type AvmProofData = ProofDataForFixedVk<AvmCircuitPublicInputs, typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>;
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX3Byb29mX2RhdGEuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yb2xsdXAvYXZtX3Byb29mX2RhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFeEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDN0UsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRSxNQUFNLE1BQU0sWUFBWSxHQUFHLG1CQUFtQixDQUFDLHNCQUFzQixFQUFFLE9BQU8sb0NBQW9DLENBQUMsQ0FBQyJ9
4
+ export type AvmProofData = ProofDataForFixedVk<AvmCircuitPublicInputs, typeof AVM_V2_PROOF_LENGTH_IN_FIELDS>;
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX3Byb29mX2RhdGEuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yb2xsdXAvYXZtX3Byb29mX2RhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDN0UsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRSxNQUFNLE1BQU0sWUFBWSxHQUFHLG1CQUFtQixDQUFDLHNCQUFzQixFQUFFLE9BQU8sNkJBQTZCLENBQUMsQ0FBQyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"avm_proof_data.d.ts","sourceRoot":"","sources":["../../src/rollup/avm_proof_data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oCAAoC,EAAE,MAAM,kBAAkB,CAAC;AAExE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,MAAM,MAAM,YAAY,GAAG,mBAAmB,CAAC,sBAAsB,EAAE,OAAO,oCAAoC,CAAC,CAAC"}
1
+ {"version":3,"file":"avm_proof_data.d.ts","sourceRoot":"","sources":["../../src/rollup/avm_proof_data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AAEjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,MAAM,MAAM,YAAY,GAAG,mBAAmB,CAAC,sBAAsB,EAAE,OAAO,6BAA6B,CAAC,CAAC"}
@@ -74,7 +74,7 @@ export type NodeSyncedChainHistoryStats = {
74
74
  /** Size of the db in bytes. */
75
75
  dbSize: number;
76
76
  };
77
- export type ClientCircuitName = 'private-kernel-init' | 'private-kernel-init-2' | 'private-kernel-init-3' | 'private-kernel-inner' | 'private-kernel-inner-2' | 'private-kernel-inner-3' | 'private-kernel-reset' | 'private-kernel-tail' | 'private-kernel-tail-to-public' | 'hiding-kernel-to-rollup' | 'hiding-kernel-to-public' | 'app-circuit';
77
+ export type ClientCircuitName = 'private-kernel-init' | 'private-kernel-init-2' | 'private-kernel-init-3' | 'private-kernel-inner' | 'private-kernel-inner-2' | 'private-kernel-inner-3' | 'private-kernel-reset' | 'private-kernel-reset-tail' | 'private-kernel-reset-tail-to-public' | 'hiding-kernel-to-rollup' | 'hiding-kernel-to-public' | 'app-circuit';
78
78
  export type ServerCircuitName = 'parity-base' | 'parity-root' | 'chonk-verifier-public' | 'rollup-tx-base-private' | 'rollup-tx-base-public' | 'rollup-tx-merge' | 'rollup-block-root-first' | 'rollup-block-root-first-single-tx' | 'rollup-block-root-first-empty-tx' | 'rollup-block-root' | 'rollup-block-root-single-tx' | 'rollup-block-merge' | 'rollup-checkpoint-root' | 'rollup-checkpoint-root-single-block' | 'rollup-checkpoint-padding' | 'rollup-checkpoint-merge' | 'rollup-root' | 'avm-circuit';
79
79
  export type CircuitName = ClientCircuitName | ServerCircuitName;
80
80
  /** Stats for circuit simulation. */
@@ -223,4 +223,4 @@ export type TxAddedToPoolStats = {
223
223
  export type Stats = AvmSimulationStats | CircuitProvingStats | CircuitSimulationStats | CircuitWitnessGenerationStats | PublicDBAccessStats | L1PublishCheckpointStats | L1PublishProofStats | L2BlockBuiltStats | L2BlockHandledStats | NodeSyncedChainHistoryStats | ProofConstructed | TreeInsertionStats | TxAddedToPoolStats;
224
224
  /** Set of event names across emitted stats. */
225
225
  export type StatsEventName = Stats['eventName'];
226
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGF0cy9zdGF0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQsTUFBTSxNQUFNLGdCQUFnQixHQUFHO0lBQzdCLDZDQUE2QztJQUM3QyxTQUFTLEVBQUUseUJBQXlCLENBQUM7SUFDckMsdUNBQXVDO0lBQ3ZDLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIseUNBQXlDO0lBQ3pDLE9BQU8sRUFBRSxNQUFNLENBQUM7SUFDaEIseUJBQXlCO0lBQ3pCLEtBQUssRUFBRSxNQUFNLENBQUM7Q0FDZixDQUFDO0FBRUYseUNBQXlDO0FBQ3pDLE1BQU0sTUFBTSxZQUFZLEdBQUc7SUFDekIscUNBQXFDO0lBQ3JDLE9BQU8sRUFBRSxNQUFNLENBQUM7SUFDaEIsOEJBQThCO0lBQzlCLFdBQVcsRUFBRSxNQUFNLENBQUM7SUFDcEIsNkJBQTZCO0lBQzdCLGNBQWMsQ0FBQyxFQUFFLE1BQU0sQ0FBQztDQUN6QixDQUFDO0FBRUYsTUFBTSxNQUFNLGVBQWUsR0FBRztJQUM1QiwrQ0FBK0M7SUFDL0MsT0FBTyxFQUFFLE1BQU0sQ0FBQztJQUNoQix5Q0FBeUM7SUFDekMsVUFBVSxFQUFFLE1BQU0sQ0FBQztDQUNwQixDQUFDO0FBRUYsMENBQTBDO0FBQzFDLE1BQU0sTUFBTSxjQUFjLEdBQUc7SUFDM0IsNkJBQTZCO0lBQzdCLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDZixxQ0FBcUM7SUFDckMsUUFBUSxFQUFFLE1BQU0sQ0FBQztJQUNqQixvQ0FBb0M7SUFDcEMsT0FBTyxFQUFFLE1BQU0sQ0FBQztJQUNoQix5QkFBeUI7SUFDekIsZUFBZSxFQUFFLE1BQU0sQ0FBQztJQUN4QixnQ0FBZ0M7SUFDaEMsV0FBVyxFQUFFLE1BQU0sQ0FBQztJQUNwQixxQ0FBcUM7SUFDckMsWUFBWSxFQUFFLE1BQU0sQ0FBQztJQUNyQixnQ0FBZ0M7SUFDaEMsV0FBVyxFQUFFLE1BQU0sQ0FBQztJQUNwQiwrQkFBK0I7SUFDL0IsV0FBVyxFQUFFLE1BQU0sQ0FBQztJQUNwQixnQ0FBZ0M7SUFDaEMsU0FBUyxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ25CLDhEQUE4RDtJQUM5RCxlQUFlLENBQUMsRUFBRSxNQUFNLENBQUM7Q0FDMUIsQ0FBQztBQUVGLGlEQUFpRDtBQUNqRCxNQUFNLE1BQU0sd0JBQXdCLEdBQUc7SUFDckMsNkNBQTZDO0lBQzdDLFNBQVMsRUFBRSx3QkFBd0IsQ0FBQztDQUNyQyxHQUFHLGNBQWMsR0FDaEIsZUFBZSxDQUFDO0FBRWxCLGlEQUFpRDtBQUNqRCxNQUFNLE1BQU0sbUJBQW1CLEdBQUc7SUFDaEMsNkNBQTZDO0lBQzdDLFNBQVMsRUFBRSx1QkFBdUIsQ0FBQztDQUNwQyxHQUFHLGNBQWMsQ0FBQztBQUVuQixxREFBcUQ7QUFDckQsTUFBTSxNQUFNLDJCQUEyQixHQUFHO0lBQ3hDLHlCQUF5QjtJQUN6QixTQUFTLEVBQUUsMkJBQTJCLENBQUM7SUFDdkMsc0NBQXNDO0lBQ3RDLE9BQU8sRUFBRSxNQUFNLENBQUM7SUFDaEIsbUNBQW1DO0lBQ25DLFdBQVcsRUFBRSxNQUFNLENBQUM7SUFDcEIsc0JBQXNCO0lBQ3RCLFFBQVEsRUFBRSxNQUFNLENBQUM7SUFDakIsMEJBQTBCO0lBQzFCLFdBQVcsRUFBRSxNQUFNLENBQUM7SUFDcEIsa0NBQWtDO0lBQ2xDLFVBQVUsRUFBRSxNQUFNLENBQUM7SUFDbkIsK0JBQStCO0lBQy9CLE1BQU0sRUFBRSxNQUFNLENBQUM7Q0FDaEIsQ0FBQztBQUVGLE1BQU0sTUFBTSxpQkFBaUIsR0FDekIscUJBQXFCLEdBQ3JCLHVCQUF1QixHQUN2Qix1QkFBdUIsR0FDdkIsc0JBQXNCLEdBQ3RCLHdCQUF3QixHQUN4Qix3QkFBd0IsR0FDeEIsc0JBQXNCLEdBQ3RCLHFCQUFxQixHQUNyQiwrQkFBK0IsR0FDL0IseUJBQXlCLEdBQ3pCLHlCQUF5QixHQUN6QixhQUFhLENBQUM7QUFFbEIsTUFBTSxNQUFNLGlCQUFpQixHQUN6QixhQUFhLEdBQ2IsYUFBYSxHQUNiLHVCQUF1QixHQUN2Qix3QkFBd0IsR0FDeEIsdUJBQXVCLEdBQ3ZCLGlCQUFpQixHQUNqQix5QkFBeUIsR0FDekIsbUNBQW1DLEdBQ25DLGtDQUFrQyxHQUNsQyxtQkFBbUIsR0FDbkIsNkJBQTZCLEdBQzdCLG9CQUFvQixHQUNwQix3QkFBd0IsR0FDeEIscUNBQXFDLEdBQ3JDLDJCQUEyQixHQUMzQix5QkFBeUIsR0FDekIsYUFBYSxHQUNiLGFBQWEsQ0FBQztBQUdsQixNQUFNLE1BQU0sV0FBVyxHQUFHLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDO0FBRWhFLG9DQUFvQztBQUNwQyxNQUFNLE1BQU0sc0JBQXNCLEdBQUc7SUFDbkMseUJBQXlCO0lBQ3pCLFNBQVMsRUFBRSxvQkFBb0IsQ0FBQztJQUNoQywyQkFBMkI7SUFDM0IsV0FBVyxFQUFFLFdBQVcsQ0FBQztJQUN6Qix5REFBeUQ7SUFDekQsY0FBYyxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ3hCLHNCQUFzQjtJQUN0QixRQUFRLEVBQUUsTUFBTSxDQUFDO0lBQ2pCLHVDQUF1QztJQUN2QyxTQUFTLEVBQUUsTUFBTSxDQUFDO0lBQ2xCLDREQUE0RDtJQUM1RCxVQUFVLEVBQUUsTUFBTSxDQUFDO0NBQ3BCLENBQUM7QUFFRixNQUFNLE1BQU0sbUJBQW1CLEdBQUc7SUFDaEMsU0FBUyxFQUFFLGtCQUFrQixDQUFDO0lBQzlCLFFBQVEsRUFBRSxNQUFNLENBQUM7SUFDakIsU0FBUyxFQUFFLE1BQU0sQ0FBQztDQUNuQixDQUFDO0FBRUYsTUFBTSxNQUFNLGtCQUFrQixHQUFHO0lBQy9CLHlCQUF5QjtJQUN6QixTQUFTLEVBQUUsZ0JBQWdCLENBQUM7SUFDNUIsMkJBQTJCO0lBQzNCLGNBQWMsRUFBRSxNQUFNLENBQUM7SUFDdkIsc0JBQXNCO0lBQ3RCLFFBQVEsRUFBRSxNQUFNLENBQUM7Q0FDbEIsQ0FBQztBQUVGLG9DQUFvQztBQUNwQyxNQUFNLE1BQU0sNkJBQTZCLEdBQUc7SUFDMUMseUJBQXlCO0lBQ3pCLFNBQVMsRUFBRSw0QkFBNEIsQ0FBQztJQUN4QywyQkFBMkI7SUFDM0IsV0FBVyxFQUFFLFdBQVcsQ0FBQztJQUN6QixzREFBc0Q7SUFDdEQsY0FBYyxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ3hCLHNCQUFzQjtJQUN0QixRQUFRLEVBQUUsTUFBTSxDQUFDO0lBQ2pCLHVDQUF1QztJQUN2QyxTQUFTLEVBQUUsTUFBTSxDQUFDO0lBQ2xCLDREQUE0RDtJQUM1RCxVQUFVLEVBQUUsTUFBTSxDQUFDO0NBQ3BCLENBQUM7QUFFRixrQ0FBa0M7QUFDbEMsTUFBTSxNQUFNLG1CQUFtQixHQUFHO0lBQ2hDLHlCQUF5QjtJQUN6QixTQUFTLEVBQUUsaUJBQWlCLENBQUM7SUFDN0IsMkJBQTJCO0lBQzNCLFdBQVcsRUFBRSxXQUFXLENBQUM7SUFDekIsa0RBQWtEO0lBQ2xELGNBQWMsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUN4QixzQkFBc0I7SUFDdEIsUUFBUSxFQUFFLE1BQU0sQ0FBQztJQUNqQix5Q0FBeUM7SUFDekMsV0FBVyxFQUFFLE1BQU0sQ0FBQztJQUNwQix1Q0FBdUM7SUFDdkMsU0FBUyxFQUFFLE1BQU0sQ0FBQztJQUNsQixrQ0FBa0M7SUFDbEMsU0FBUyxFQUFFLE1BQU0sQ0FBQztJQUNsQixrQ0FBa0M7SUFDbEMsZUFBZSxFQUFFLE1BQU0sQ0FBQztDQUN6QixDQUFDO0FBRUYsb0NBQW9DO0FBQ3BDLE1BQU0sTUFBTSx3QkFBd0IsR0FBRztJQUNyQyx5QkFBeUI7SUFDekIsU0FBUyxFQUFFLHNCQUFzQixDQUFDO0lBQ2xDLDJCQUEyQjtJQUMzQixXQUFXLEVBQUUsV0FBVyxDQUFDO0lBQ3pCLHVDQUF1QztJQUN2QyxTQUFTLEVBQUUsT0FBTyxHQUFHLFlBQVksQ0FBQztJQUNsQyxzQkFBc0I7SUFDdEIsUUFBUSxFQUFFLE1BQU0sQ0FBQztDQUNsQixDQUFDO0FBRUYsa0RBQWtEO0FBQ2xELE1BQU0sTUFBTSxpQkFBaUIsR0FBRztJQUM5Qix5QkFBeUI7SUFDekIsU0FBUyxFQUFFLGdCQUFnQixDQUFDO0lBQzVCLDRCQUE0QjtJQUM1QixRQUFRLEVBQUUsTUFBTSxDQUFDO0lBQ2pCLDRDQUE0QztJQUM1QyxxQkFBcUIsRUFBRSxNQUFNLENBQUM7Q0FDL0IsR0FBRyxZQUFZLENBQUM7QUFFakIsdUVBQXVFO0FBQ3ZFLE1BQU0sTUFBTSxtQkFBbUIsR0FBRztJQUNoQyx5QkFBeUI7SUFDekIsU0FBUyxFQUFFLGtCQUFrQixDQUFDO0lBQzlCLDRCQUE0QjtJQUM1QixRQUFRLEVBQUUsTUFBTSxDQUFDO0lBQ2pCLDRCQUE0QjtJQUM1QixzQkFBc0IsRUFBRSxNQUFNLENBQUM7SUFDL0IsMkJBQTJCO0lBQzNCLG9CQUFvQixFQUFFLE1BQU0sQ0FBQztJQUM3QixvQ0FBb0M7SUFDcEMsbUJBQW1CLEVBQUUsTUFBTSxDQUFDO0NBQzdCLEdBQUcsWUFBWSxDQUFDO0FBRWpCLHNCQUFzQjtBQUN0QixNQUFNLE1BQU0sT0FBTyxHQUFHO0lBQ3BCLHNCQUFzQjtJQUN0QixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2YsMkJBQTJCO0lBQzNCLElBQUksRUFBRSxNQUFNLENBQUM7SUFDYix5QkFBeUI7SUFDekIsU0FBUyxFQUFFLE1BQU0sQ0FBQztJQUNsQiw0QkFBNEI7SUFDNUIsYUFBYSxFQUFFLE1BQU0sQ0FBQztJQUN0QiwyQkFBMkI7SUFDM0IsY0FBYyxFQUFFLE1BQU0sQ0FBQztJQUN2Qiw2QkFBNkI7SUFDN0IsZUFBZSxFQUFFLE1BQU0sQ0FBQztJQUN4Qix1RUFBdUU7SUFDdkUsbUJBQW1CLEVBQUUsTUFBTSxDQUFDO0lBQzVCLHdEQUF3RDtJQUN4RCxvQkFBb0IsRUFBRSxNQUFNLENBQUM7SUFDN0IsbUNBQW1DO0lBQ25DLGdCQUFnQixFQUFFLFdBQVcsR0FBRyxLQUFLLENBQUM7Q0FDdkMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxNQUFNLGtCQUFrQixHQUFHO0lBQy9CLHlCQUF5QjtJQUN6QixTQUFTLEVBQUUsZ0JBQWdCLENBQUM7SUFDNUIsc0JBQXNCO0lBQ3RCLFFBQVEsRUFBRSxNQUFNLENBQUM7SUFDakIsc0NBQXNDO0lBQ3RDLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsb0JBQW9CO0lBQ3BCLFFBQVEsRUFBRSxNQUFNLENBQUM7SUFDakIscUJBQXFCO0lBQ3JCLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsZ0JBQWdCO0lBQ2hCLFFBQVEsRUFBRSxhQUFhLEdBQUcsU0FBUyxDQUFDO0lBQ3BDLGlDQUFpQztJQUNqQyxTQUFTLEVBQUUsTUFBTSxDQUFDO0lBQ2xCLDJDQUEyQztJQUMzQyxZQUFZLEVBQUUsTUFBTSxDQUFDO0NBQ3RCLENBQUM7QUFFRix5Q0FBeUM7QUFDekMsTUFBTSxNQUFNLGtCQUFrQixHQUFHO0lBQy9CLHlCQUF5QjtJQUN6QixTQUFTLEVBQUUsa0JBQWtCLENBQUM7Q0FDL0IsR0FBRyxPQUFPLENBQUM7QUFFWix5RUFBeUU7QUFDekUsTUFBTSxNQUFNLEtBQUssR0FDYixrQkFBa0IsR0FDbEIsbUJBQW1CLEdBQ25CLHNCQUFzQixHQUN0Qiw2QkFBNkIsR0FDN0IsbUJBQW1CLEdBQ25CLHdCQUF3QixHQUN4QixtQkFBbUIsR0FDbkIsaUJBQWlCLEdBQ2pCLG1CQUFtQixHQUNuQiwyQkFBMkIsR0FDM0IsZ0JBQWdCLEdBQ2hCLGtCQUFrQixHQUNsQixrQkFBa0IsQ0FBQztBQUV2QiwrQ0FBK0M7QUFDL0MsTUFBTSxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMifQ==
226
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGF0cy9zdGF0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQsTUFBTSxNQUFNLGdCQUFnQixHQUFHO0lBQzdCLDZDQUE2QztJQUM3QyxTQUFTLEVBQUUseUJBQXlCLENBQUM7SUFDckMsdUNBQXVDO0lBQ3ZDLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIseUNBQXlDO0lBQ3pDLE9BQU8sRUFBRSxNQUFNLENBQUM7SUFDaEIseUJBQXlCO0lBQ3pCLEtBQUssRUFBRSxNQUFNLENBQUM7Q0FDZixDQUFDO0FBRUYseUNBQXlDO0FBQ3pDLE1BQU0sTUFBTSxZQUFZLEdBQUc7SUFDekIscUNBQXFDO0lBQ3JDLE9BQU8sRUFBRSxNQUFNLENBQUM7SUFDaEIsOEJBQThCO0lBQzlCLFdBQVcsRUFBRSxNQUFNLENBQUM7SUFDcEIsNkJBQTZCO0lBQzdCLGNBQWMsQ0FBQyxFQUFFLE1BQU0sQ0FBQztDQUN6QixDQUFDO0FBRUYsTUFBTSxNQUFNLGVBQWUsR0FBRztJQUM1QiwrQ0FBK0M7SUFDL0MsT0FBTyxFQUFFLE1BQU0sQ0FBQztJQUNoQix5Q0FBeUM7SUFDekMsVUFBVSxFQUFFLE1BQU0sQ0FBQztDQUNwQixDQUFDO0FBRUYsMENBQTBDO0FBQzFDLE1BQU0sTUFBTSxjQUFjLEdBQUc7SUFDM0IsNkJBQTZCO0lBQzdCLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDZixxQ0FBcUM7SUFDckMsUUFBUSxFQUFFLE1BQU0sQ0FBQztJQUNqQixvQ0FBb0M7SUFDcEMsT0FBTyxFQUFFLE1BQU0sQ0FBQztJQUNoQix5QkFBeUI7SUFDekIsZUFBZSxFQUFFLE1BQU0sQ0FBQztJQUN4QixnQ0FBZ0M7SUFDaEMsV0FBVyxFQUFFLE1BQU0sQ0FBQztJQUNwQixxQ0FBcUM7SUFDckMsWUFBWSxFQUFFLE1BQU0sQ0FBQztJQUNyQixnQ0FBZ0M7SUFDaEMsV0FBVyxF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
@@ -1 +1 @@
1
- {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../src/stats/stats.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../src/stats/stats.ts"],"names":[],"mappings":"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"}
@@ -400,4 +400,4 @@ export declare function randomPublicLogResult(opts?: {
400
400
  */
401
401
  export declare function makeL2Tips(blockNumber: number | BlockNumber, hash?: string, checkpointNumber?: number | CheckpointNumber, checkpointHash?: string): L2Tips;
402
402
  export declare function randomAppTaggingSecret(kind: AppTaggingSecretKind): Promise<AppTaggingSecret>;
403
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yaWVzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdHMvZmFjdG9yaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTRDQSxPQUFPLEVBQUUsS0FBSyxRQUFRLEVBQWEsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFjLE1BQU0saUNBQWlDLENBQUM7QUFJNUYsT0FBTyxFQUFNLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDMUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBdUIsTUFBTSw2QkFBNkIsQ0FBQztBQUNuRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN6RixPQUFPLEVBR0wsbUJBQW1CLEVBQ25CLHlCQUF5QixFQUN6QixnQkFBZ0IsRUFFaEIsdUJBQXVCLEVBQ3ZCLG9CQUFvQixFQUNwQixpQ0FBaUMsRUFDakMsaUNBQWlDLEVBQ2pDLGlDQUFpQyxFQUNqQyx1QkFBdUIsRUFDdkIsdUJBQXVCLEVBQ3ZCLHdCQUF3QixFQUN4QixpQkFBaUIsRUFDakIsbUNBQW1DLEVBQ25DLG9DQUFvQyxFQUNwQyxtQkFBbUIsRUFDbkIsNEJBQTRCLEVBQzVCLHFCQUFxQixFQUNyQix1QkFBdUIsRUFDdkIsb0NBQW9DLEVBQ3BDLHFDQUFxQyxFQUNyQyxTQUFTLEVBQ1YsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixP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
403
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yaWVzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdHMvZmFjdG9yaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTRDQSxPQUFPLEVBQUUsS0FBSyxRQUFRLEVBQWEsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFjLE1BQU0saUNBQWlDLENBQUM7QUFJNUYsT0FBTyxFQUFNLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDMUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBdUIsTUFBTSw2QkFBNkIsQ0FBQztBQUNuRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN6RixPQUFPLEVBR0wsbUJBQW1CLEVBQ25CLHlCQUF5QixFQUN6QixnQkFBZ0IsRUFFaEIsdUJBQXVCLEVBQ3ZCLG9CQUFvQixFQUNwQixpQ0FBaUMsRUFDakMsaUNBQWlDLEVBQ2pDLGlDQUFpQyxFQUNqQyx1QkFBdUIsRUFDdkIsdUJBQXVCLEVBQ3ZCLHdCQUF3QixFQUN4QixpQkFBaUIsRUFDakIsbUNBQW1DLEVBQ25DLG9DQUFvQyxFQUNwQyxtQkFBbUIsRUFDbkIsNEJBQTRCLEVBQzVCLHFCQUFxQixFQUNyQix1QkFBdUIsRUFDdkIsb0NBQW9DLEVBQ3BDLHFDQUFxQyxFQUNyQyxTQUFTLEVBQ1YsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixP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