@aztec/foundation 0.71.0 → 0.73.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 (167) hide show
  1. package/dest/abi/abi.d.ts +3 -2
  2. package/dest/abi/abi.d.ts.map +1 -1
  3. package/dest/abi/abi.js +22 -5
  4. package/dest/abi/decoder.d.ts +1 -1
  5. package/dest/abi/decoder.d.ts.map +1 -1
  6. package/dest/abi/decoder.js +11 -2
  7. package/dest/abi/encoder.d.ts.map +1 -1
  8. package/dest/abi/encoder.js +12 -2
  9. package/dest/abi/event_selector.d.ts +2 -3
  10. package/dest/abi/event_selector.d.ts.map +1 -1
  11. package/dest/abi/event_selector.js +4 -5
  12. package/dest/abi/function_selector.d.ts +4 -15
  13. package/dest/abi/function_selector.d.ts.map +1 -1
  14. package/dest/abi/function_selector.js +6 -18
  15. package/dest/abi/index.d.ts +1 -0
  16. package/dest/abi/index.d.ts.map +1 -1
  17. package/dest/abi/index.js +2 -1
  18. package/dest/abi/u128.d.ts +13 -0
  19. package/dest/abi/u128.d.ts.map +1 -0
  20. package/dest/abi/u128.js +58 -0
  21. package/dest/abi/utils.d.ts +5 -0
  22. package/dest/abi/utils.d.ts.map +1 -1
  23. package/dest/abi/utils.js +8 -1
  24. package/dest/array/array.d.ts +8 -0
  25. package/dest/array/array.d.ts.map +1 -1
  26. package/dest/array/array.js +13 -1
  27. package/dest/aztec-address/index.d.ts +3 -3
  28. package/dest/aztec-address/index.d.ts.map +1 -1
  29. package/dest/aztec-address/index.js +5 -5
  30. package/dest/blob/blob.d.ts +150 -0
  31. package/dest/blob/blob.d.ts.map +1 -0
  32. package/dest/blob/blob.js +249 -0
  33. package/dest/blob/encoding.d.ts +53 -0
  34. package/dest/blob/encoding.d.ts.map +1 -0
  35. package/dest/blob/encoding.js +87 -0
  36. package/dest/blob/index.d.ts +4 -58
  37. package/dest/blob/index.d.ts.map +1 -1
  38. package/dest/blob/index.js +6 -142
  39. package/dest/blob/interface.d.ts +10 -0
  40. package/dest/blob/interface.d.ts.map +1 -0
  41. package/dest/blob/interface.js +2 -0
  42. package/dest/blob/mocks.d.ts +5 -0
  43. package/dest/blob/mocks.d.ts.map +1 -0
  44. package/dest/blob/mocks.js +25 -0
  45. package/dest/collection/array.d.ts +7 -0
  46. package/dest/collection/array.d.ts.map +1 -1
  47. package/dest/collection/array.js +13 -1
  48. package/dest/config/env_var.d.ts +1 -1
  49. package/dest/config/env_var.d.ts.map +1 -1
  50. package/dest/config/index.d.ts +1 -0
  51. package/dest/config/index.d.ts.map +1 -1
  52. package/dest/config/index.js +11 -14
  53. package/dest/crypto/index.d.ts +0 -7
  54. package/dest/crypto/index.d.ts.map +1 -1
  55. package/dest/crypto/index.js +1 -11
  56. package/dest/crypto/keys/index.d.ts +1 -1
  57. package/dest/crypto/keys/index.d.ts.map +1 -1
  58. package/dest/crypto/keys/index.js +5 -5
  59. package/dest/crypto/pedersen/pedersen.wasm.d.ts +3 -3
  60. package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -1
  61. package/dest/crypto/pedersen/pedersen.wasm.js +13 -10
  62. package/dest/crypto/poseidon/index.d.ts +5 -5
  63. package/dest/crypto/poseidon/index.d.ts.map +1 -1
  64. package/dest/crypto/poseidon/index.js +20 -19
  65. package/dest/crypto/sync/index.d.ts +3 -0
  66. package/dest/crypto/sync/index.d.ts.map +1 -0
  67. package/dest/crypto/sync/index.js +5 -0
  68. package/dest/crypto/sync/pedersen/index.d.ts +21 -0
  69. package/dest/crypto/sync/pedersen/index.d.ts.map +1 -0
  70. package/dest/crypto/sync/pedersen/index.js +37 -0
  71. package/dest/crypto/sync/poseidon/index.d.ts +26 -0
  72. package/dest/crypto/sync/poseidon/index.d.ts.map +1 -0
  73. package/dest/crypto/sync/poseidon/index.js +57 -0
  74. package/dest/fields/fields.d.ts +10 -1
  75. package/dest/fields/fields.d.ts.map +1 -1
  76. package/dest/fields/fields.js +18 -9
  77. package/dest/fields/point.d.ts +5 -5
  78. package/dest/fields/point.d.ts.map +1 -1
  79. package/dest/fields/point.js +5 -5
  80. package/dest/iterable/toArray.d.ts +1 -1
  81. package/dest/iterable/toArray.d.ts.map +1 -1
  82. package/dest/iterable/toArray.js +1 -1
  83. package/dest/json-rpc/client/fetch.d.ts +2 -2
  84. package/dest/json-rpc/client/fetch.d.ts.map +1 -1
  85. package/dest/json-rpc/client/fetch.js +7 -7
  86. package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -1
  87. package/dest/json-rpc/client/safe_json_rpc_client.js +2 -2
  88. package/dest/json-rpc/convert.d.ts +1 -1
  89. package/dest/json-rpc/convert.d.ts.map +1 -1
  90. package/dest/json-rpc/convert.js +2 -2
  91. package/dest/json-rpc/server/safe_json_rpc_server.d.ts +17 -5
  92. package/dest/json-rpc/server/safe_json_rpc_server.d.ts.map +1 -1
  93. package/dest/json-rpc/server/safe_json_rpc_server.js +19 -10
  94. package/dest/json-rpc/server/telemetry.d.ts +2 -0
  95. package/dest/json-rpc/server/telemetry.d.ts.map +1 -0
  96. package/dest/json-rpc/server/telemetry.js +2 -0
  97. package/dest/message/index.d.ts +32 -0
  98. package/dest/message/index.d.ts.map +1 -0
  99. package/dest/message/index.js +23 -0
  100. package/dest/mutex/index.d.ts.map +1 -1
  101. package/dest/mutex/index.js +6 -4
  102. package/dest/promise/running-promise.d.ts +2 -1
  103. package/dest/promise/running-promise.d.ts.map +1 -1
  104. package/dest/promise/running-promise.js +6 -3
  105. package/dest/schemas/parse.d.ts +1 -1
  106. package/dest/schemas/parse.d.ts.map +1 -1
  107. package/dest/schemas/parse.js +2 -2
  108. package/dest/serialize/field_reader.d.ts +18 -0
  109. package/dest/serialize/field_reader.d.ts.map +1 -1
  110. package/dest/serialize/field_reader.js +32 -2
  111. package/dest/testing/files/index.d.ts +1 -1
  112. package/dest/testing/files/index.d.ts.map +1 -1
  113. package/dest/testing/files/index.js +3 -3
  114. package/dest/timer/timeout.js +2 -2
  115. package/dest/worker/browser/start_web_module.d.ts.map +1 -1
  116. package/dest/worker/browser/start_web_module.js +2 -1
  117. package/dest/worker/browser/web_worker.d.ts.map +1 -1
  118. package/dest/worker/browser/web_worker.js +2 -1
  119. package/dest/worker/node/node_worker.d.ts.map +1 -1
  120. package/dest/worker/node/node_worker.js +2 -1
  121. package/dest/worker/node/start_node_module.d.ts.map +1 -1
  122. package/dest/worker/node/start_node_module.js +2 -1
  123. package/package.json +6 -4
  124. package/src/abi/abi.ts +28 -8
  125. package/src/abi/decoder.ts +11 -2
  126. package/src/abi/encoder.ts +11 -1
  127. package/src/abi/event_selector.ts +3 -4
  128. package/src/abi/function_selector.ts +8 -29
  129. package/src/abi/index.ts +1 -0
  130. package/src/abi/u128.ts +71 -0
  131. package/src/abi/utils.ts +8 -0
  132. package/src/array/array.ts +15 -0
  133. package/src/aztec-address/index.ts +5 -5
  134. package/src/blob/blob.ts +294 -0
  135. package/src/blob/encoding.ts +98 -0
  136. package/src/blob/index.ts +5 -183
  137. package/src/blob/interface.ts +11 -0
  138. package/src/blob/mocks.ts +30 -0
  139. package/src/collection/array.ts +15 -0
  140. package/src/config/env_var.ts +8 -5
  141. package/src/config/index.ts +10 -12
  142. package/src/crypto/index.ts +0 -12
  143. package/src/crypto/keys/index.ts +5 -4
  144. package/src/crypto/pedersen/pedersen.wasm.ts +13 -14
  145. package/src/crypto/poseidon/index.ts +24 -39
  146. package/src/crypto/sync/index.ts +6 -0
  147. package/src/crypto/sync/pedersen/index.ts +45 -0
  148. package/src/crypto/sync/poseidon/index.ts +76 -0
  149. package/src/fields/fields.ts +18 -9
  150. package/src/fields/point.ts +6 -6
  151. package/src/iterable/toArray.ts +3 -1
  152. package/src/json-rpc/client/fetch.ts +14 -6
  153. package/src/json-rpc/client/safe_json_rpc_client.ts +1 -2
  154. package/src/json-rpc/convert.ts +2 -2
  155. package/src/json-rpc/server/safe_json_rpc_server.ts +30 -12
  156. package/src/json-rpc/server/telemetry.ts +0 -0
  157. package/src/message/index.ts +43 -0
  158. package/src/mutex/index.ts +5 -4
  159. package/src/promise/running-promise.ts +4 -1
  160. package/src/schemas/parse.ts +2 -2
  161. package/src/serialize/field_reader.ts +34 -1
  162. package/src/testing/files/index.ts +2 -2
  163. package/src/timer/timeout.ts +1 -1
  164. package/src/worker/browser/start_web_module.ts +1 -0
  165. package/src/worker/browser/web_worker.ts +1 -0
  166. package/src/worker/node/node_worker.ts +1 -0
  167. package/src/worker/node/start_node_module.ts +1 -0
@@ -25,6 +25,11 @@ export declare function isAztecAddressStruct(abiType: AbiType): boolean;
25
25
  * @returns Boolean.
26
26
  */
27
27
  export declare function isFunctionSelectorStruct(abiType: AbiType): boolean;
28
+ /**
29
+ * Returns whether the ABI type is the U128 defined in noir::std.
30
+ * @param abiType - Type to check.
31
+ */
32
+ export declare function isU128Struct(abiType: AbiType): boolean;
28
33
  /**
29
34
  * Returns whether the ABI type is a struct with a single `inner` field.
30
35
  * @param abiType - Type to check.
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/abi/utils.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,WAE/C;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,WAElD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,WAEpD;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,WAExD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,WAOpD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,UAqBvD"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/abi/utils.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,WAE/C;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,WAElD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,WAEpD;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,WAExD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,WAE5C;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,WAOpD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,UAqBvD"}
package/dest/abi/utils.js CHANGED
@@ -30,6 +30,13 @@ export function isAztecAddressStruct(abiType) {
30
30
  export function isFunctionSelectorStruct(abiType) {
31
31
  return abiType.kind === 'struct' && abiType.path.endsWith('types::abis::function_selector::FunctionSelector');
32
32
  }
33
+ /**
34
+ * Returns whether the ABI type is the U128 defined in noir::std.
35
+ * @param abiType - Type to check.
36
+ */
37
+ export function isU128Struct(abiType) {
38
+ return abiType.kind === 'struct' && abiType.path.endsWith('U128');
39
+ }
33
40
  /**
34
41
  * Returns whether the ABI type is a struct with a single `inner` field.
35
42
  * @param abiType - Type to check.
@@ -62,4 +69,4 @@ export function parseSignedInt(b, width) {
62
69
  // ...otherwise we just return our positive int
63
70
  return BigInt(`0x${slicedBuf.toString('hex')}`);
64
71
  }
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWJpL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLE9BQWdCO0lBQzlDLE9BQU8sa0JBQWtCLENBQUMsT0FBTyxDQUFDLElBQUksb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdEUsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsT0FBZ0I7SUFDakQsT0FBTyxPQUFPLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ25GLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLE9BQWdCO0lBQ25ELE9BQU8sT0FBTyxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsdUJBQXVCLENBQUMsQ0FBQztBQUNyRixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxPQUFnQjtJQUN2RCxPQUFPLE9BQU8sQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGtEQUFrRCxDQUFDLENBQUM7QUFDaEgsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxPQUFnQjtJQUNuRCxPQUFPLENBQ0wsT0FBTyxDQUFDLElBQUksS0FBSyxRQUFRO1FBQ3pCLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUM7UUFDM0IsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssT0FBTztRQUNsQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUN4QyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLENBQVMsRUFBRSxLQUFjO0lBQ3RELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFM0IsOEVBQThFO0lBQzlFLE1BQU0sU0FBUyxHQUFHLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFFekUsOEVBQThFO0lBRTlFLHlDQUF5QztJQUN6QyxJQUFJLElBQUksR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO1FBQ2hELG1CQUFtQjtRQUNuQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBRUQsMEJBQTBCO1FBQzFCLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCwrQ0FBK0M7SUFDL0MsT0FBTyxNQUFNLENBQUMsS0FBSyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsRCxDQUFDIn0=
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWJpL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLE9BQWdCO0lBQzlDLE9BQU8sa0JBQWtCLENBQUMsT0FBTyxDQUFDLElBQUksb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdEUsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsT0FBZ0I7SUFDakQsT0FBTyxPQUFPLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ25GLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLE9BQWdCO0lBQ25ELE9BQU8sT0FBTyxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsdUJBQXVCLENBQUMsQ0FBQztBQUNyRixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxPQUFnQjtJQUN2RCxPQUFPLE9BQU8sQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGtEQUFrRCxDQUFDLENBQUM7QUFDaEgsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsT0FBZ0I7SUFDM0MsT0FBTyxPQUFPLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNwRSxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLE9BQWdCO0lBQ25ELE9BQU8sQ0FDTCxPQUFPLENBQUMsSUFBSSxLQUFLLFFBQVE7UUFDekIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUMzQixPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxPQUFPO1FBQ2xDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPLENBQ3hDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsQ0FBUyxFQUFFLEtBQWM7SUFDdEQsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUUzQiw4RUFBOEU7SUFDOUUsTUFBTSxTQUFTLEdBQUcsS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUV6RSw4RUFBOEU7SUFFOUUseUNBQXlDO0lBQ3pDLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7UUFDaEQsbUJBQW1CO1FBQ25CLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDMUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFFRCwwQkFBMEI7UUFDMUIsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELCtDQUErQztJQUMvQyxPQUFPLE1BQU0sQ0FBQyxLQUFLLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2xELENBQUMifQ==
@@ -15,6 +15,14 @@ export declare function range(n: number, offset?: number): number[];
15
15
  * @returns The array of numbers.
16
16
  */
17
17
  export declare function makeTuple<T, N extends number>(length: N, fn: (i: number) => T, offset?: number): Tuple<T, N>;
18
+ /**
19
+ * Create an array over an integer range, filled with a function 'fn'.
20
+ * This is used over e.g. lodash because it resolved to a tuple type, needed for our fixed array type safety.
21
+ * @param n - The number of integers.
22
+ * @param fn - The generator function.
23
+ * @returns The array of numbers.
24
+ */
25
+ export declare function makeTupleAsync<T, N extends number>(length: N, fn: (i: number) => Promise<T>, offset?: number): Promise<Tuple<T, N>>;
18
26
  /**
19
27
  * Create an array over an integer range, filled with a function 'fn'. However, the latter half of the array are set to zeros.
20
28
  * see `makeTuple` above.
@@ -1 +1 @@
1
- {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../src/array/array.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,SAAI,YAM1C;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,EAAE,MAAM,SAAI,eAEzF;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EACnD,MAAM,EAAE,CAAC,EACT,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,EACpB,MAAM,oBAAI,EACV,SAAS,EAAE,MAAM,CAAC,eAGnB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS;KACP,CAAC,IAAI,CAAC,GAAG;QACR;;WAEG;QACH,MAAM,EAAE,MAAM,CAAC;KAChB;CACF,EACD,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,QAIlC;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS;KACP,CAAC,IAAI,CAAC,GAAG;QACR;;WAEG;QACH,MAAM,EAAE,MAAM,CAAC;KAChB,EAAE;CACJ,EACD,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,QAOlC;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,QAAQ,EAAE,CAAC,EAAE,EACb,WAAW,EAAE,CAAC,EAAE,EAChB,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,GAC/B,IAAI,CAmBN;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,QAS3E"}
1
+ {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../src/array/array.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,SAAI,YAM1C;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,EAAE,MAAM,SAAI,eAEzF;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,SAAI,wBAM7G;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EACnD,MAAM,EAAE,CAAC,EACT,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,EACpB,MAAM,oBAAI,EACV,SAAS,EAAE,MAAM,CAAC,eAGnB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS;KACP,CAAC,IAAI,CAAC,GAAG;QACR;;WAEG;QACH,MAAM,EAAE,MAAM,CAAC;KAChB;CACF,EACD,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,QAIlC;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS;KACP,CAAC,IAAI,CAAC,GAAG;QACR;;WAEG;QACH,MAAM,EAAE,MAAM,CAAC;KAChB,EAAE;CACJ,EACD,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,QAOlC;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,QAAQ,EAAE,CAAC,EAAE,EACb,WAAW,EAAE,CAAC,EAAE,EAChB,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,GAC/B,IAAI,CAmBN;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,QAS3E"}
@@ -21,6 +21,18 @@ export function range(n, offset = 0) {
21
21
  export function makeTuple(length, fn, offset = 0) {
22
22
  return Array.from({ length }, (_, i) => fn(i + offset));
23
23
  }
24
+ /**
25
+ * Create an array over an integer range, filled with a function 'fn'.
26
+ * This is used over e.g. lodash because it resolved to a tuple type, needed for our fixed array type safety.
27
+ * @param n - The number of integers.
28
+ * @param fn - The generator function.
29
+ * @returns The array of numbers.
30
+ */
31
+ export async function makeTupleAsync(length, fn, offset = 0) {
32
+ return (await Promise.all(Array(length)
33
+ .fill(0)
34
+ .map(async (_, i) => await fn(i + offset))));
35
+ }
24
36
  /**
25
37
  * Create an array over an integer range, filled with a function 'fn'. However, the latter half of the array are set to zeros.
26
38
  * see `makeTuple` above.
@@ -92,4 +104,4 @@ export function assertRightPadded(arr, isEmpty) {
92
104
  }
93
105
  }
94
106
  }
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXJyYXkvYXJyYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUE7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsS0FBSyxDQUFDLENBQVMsRUFBRSxNQUFNLEdBQUcsQ0FBQztJQUN6QyxNQUFNLEdBQUcsR0FBYSxFQUFFLENBQUM7SUFDekIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzNCLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFzQixNQUFTLEVBQUUsRUFBb0IsRUFBRSxNQUFNLEdBQUcsQ0FBQztJQUN4RixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQU0sRUFBRSxDQUFTLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQWdCLENBQUM7QUFDdEYsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsTUFBUyxFQUNULEVBQW9CLEVBQ3BCLE1BQU0sR0FBRyxDQUFDLEVBQ1YsU0FBa0I7SUFFbEIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFNLEVBQUUsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFnQixDQUFDO0FBQ3ZILENBQUM7QUFFRDs7Ozs7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
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXJyYXkvYXJyYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUE7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsS0FBSyxDQUFDLENBQVMsRUFBRSxNQUFNLEdBQUcsQ0FBQztJQUN6QyxNQUFNLEdBQUcsR0FBYSxFQUFFLENBQUM7SUFDekIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzNCLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFzQixNQUFTLEVBQUUsRUFBb0IsRUFBRSxNQUFNLEdBQUcsQ0FBQztJQUN4RixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQU0sRUFBRSxDQUFTLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQWdCLENBQUM7QUFDdEYsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsY0FBYyxDQUFzQixNQUFTLEVBQUUsRUFBNkIsRUFBRSxNQUFNLEdBQUcsQ0FBQztJQUM1RyxPQUFPLENBQUMsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUN2QixLQUFLLENBQUMsTUFBTSxDQUFDO1NBQ1YsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUNQLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBTSxFQUFFLENBQVMsRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQzFELENBQWdCLENBQUM7QUFDcEIsQ0FBQztBQUVEOzs7Ozs7R0FNRztB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
@@ -35,18 +35,18 @@ export declare class AztecAddress {
35
35
  /**
36
36
  * @returns a random valid address (i.e. one that can be encrypted to).
37
37
  */
38
- static random(): AztecAddress;
38
+ static random(): Promise<AztecAddress>;
39
39
  get size(): number;
40
40
  equals(other: AztecAddress): boolean;
41
41
  isZero(): boolean;
42
42
  /**
43
43
  * @returns true if the address is valid. Invalid addresses cannot receive encrypted messages.
44
44
  */
45
- isValid(): boolean;
45
+ isValid(): Promise<boolean>;
46
46
  /**
47
47
  * @returns the Point from which the address is derived. Throws if the address is invalid.
48
48
  */
49
- toAddressPoint(): Point;
49
+ toAddressPoint(): Promise<Point>;
50
50
  toBuffer(): Buffer;
51
51
  toBigInt(): bigint;
52
52
  toField(): Fr;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/aztec-address/index.ts"],"names":[],"mappings":";;;AACA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAc,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EAAE,KAAK,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIvE,+DAA+D;AAC/D,MAAM,WAAW,YAAY;IAC3B,aAAa;IACb,SAAS,EAAE,cAAc,CAAC;CAC3B;AACD;;;;;;;;GAQG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAK;gBAEP,MAAM,EAAE,MAAM,GAAG,EAAE;IAO/B,CAAC,OAAO,CAAC,MAAM,CAAC;IAIhB,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM;IAI5B,MAAM,CAAC,aAAa,SAAoB;IAExC,MAAM,CAAC,IAAI,eAAyC;IAEpD,MAAM,CAAC,IAAI,IAAI,YAAY;IAI3B,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE;IAIvB,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;IAI/C,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW;IAK5C,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM;IAI/B,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM;IAI/B,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM;IAI7B;;OAEG;IACH,MAAM,CAAC,MAAM;IAUb,IAAI,IAAI,WAEP;IAED,MAAM,CAAC,KAAK,EAAE,YAAY;IAI1B,MAAM;IAIN;;OAEG;IACH,OAAO;IAUP;;OAEG;IACH,cAAc;IAId,QAAQ;IAIR,QAAQ;IAIR,OAAO;IAIP,QAAQ;IAIR,MAAM;IAIN,MAAM,KAAK,MAAM,qDAEhB;CACF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/aztec-address/index.ts"],"names":[],"mappings":";;;AACA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAc,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EAAE,KAAK,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIvE,+DAA+D;AAC/D,MAAM,WAAW,YAAY;IAC3B,aAAa;IACb,SAAS,EAAE,cAAc,CAAC;CAC3B;AACD;;;;;;;;GAQG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAK;gBAEP,MAAM,EAAE,MAAM,GAAG,EAAE;IAO/B,CAAC,OAAO,CAAC,MAAM,CAAC;IAIhB,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM;IAI5B,MAAM,CAAC,aAAa,SAAoB;IAExC,MAAM,CAAC,IAAI,eAAyC;IAEpD,MAAM,CAAC,IAAI,IAAI,YAAY;IAI3B,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE;IAIvB,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;IAI/C,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW;IAK5C,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM;IAI/B,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM;IAI/B,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM;IAI7B;;OAEG;WACU,MAAM;IAUnB,IAAI,IAAI,WAEP;IAED,MAAM,CAAC,KAAK,EAAE,YAAY;IAI1B,MAAM;IAIN;;OAEG;IACG,OAAO;IAUb;;OAEG;IACH,cAAc,IAAI,OAAO,CAAC,KAAK,CAAC;IAIhC,QAAQ;IAIR,QAAQ;IAIR,OAAO;IAIP,QAAQ;IAIR,MAAM;IAIN,MAAM,KAAK,MAAM,qDAEhB;CACF"}
@@ -52,11 +52,11 @@ export class AztecAddress {
52
52
  /**
53
53
  * @returns a random valid address (i.e. one that can be encrypted to).
54
54
  */
55
- static random() {
55
+ static async random() {
56
56
  // About half of random field elements result in invalid addresses, so we loop until we get a valid one.
57
57
  while (true) {
58
58
  const candidate = new AztecAddress(Fr.random());
59
- if (candidate.isValid()) {
59
+ if (await candidate.isValid()) {
60
60
  return candidate;
61
61
  }
62
62
  }
@@ -73,14 +73,14 @@ export class AztecAddress {
73
73
  /**
74
74
  * @returns true if the address is valid. Invalid addresses cannot receive encrypted messages.
75
75
  */
76
- isValid() {
76
+ async isValid() {
77
77
  // An address is a field value (Fr), which for some purposes is assumed to be the x coordinate of a point in the
78
78
  // Grumpkin curve (notably in order to encrypt to it). An address that is not the x coordinate of such a point is
79
79
  // called an 'invalid' address.
80
80
  //
81
81
  // For Grumpkin, y^2 = x^3 − 17 . There exist values x ∈ Fr for which no y satisfies this equation. This means that
82
82
  // given such an x and t = x^3 − 17, then sqrt(t) does not exist in Fr.
83
- return Point.YFromX(this.xCoord) !== null;
83
+ return (await Point.YFromX(this.xCoord)) !== null;
84
84
  }
85
85
  /**
86
86
  * @returns the Point from which the address is derived. Throws if the address is invalid.
@@ -111,4 +111,4 @@ AztecAddress.SIZE_IN_BYTES = Fr.SIZE_IN_BYTES;
111
111
  AztecAddress.ZERO = new AztecAddress(Buffer.alloc(32, 0));
112
112
  // For deserializing JSON.
113
113
  TypeRegistry.register('AztecAddress', AztecAddress);
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXp0ZWMtYWRkcmVzcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxRUFBcUU7QUFDckUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFxQixXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBT2pEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxPQUFPLFlBQVk7SUFHdkIsWUFBWSxNQUFtQjtRQUM3QixJQUFJLFFBQVEsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUMvQyxNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQ2QsT0FBTyxnQkFBZ0IsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUM7SUFDNUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBVztRQUMxQixPQUFPLHdCQUF3QixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBTUQsTUFBTSxDQUFDLElBQUk7UUFDVCxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUM7SUFDM0Is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
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXp0ZWMtYWRkcmVzcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxRUFBcUU7QUFDckUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFxQixXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBT2pEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxPQUFPLFlBQVk7SUFHdkIsWUFBWSxNQUFtQjtRQUM3QixJQUFJLFFBQVEsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUMvQyxNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQ2QsT0FBTyxnQkFBZ0IsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUM7SUFDNUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBVztRQUMxQixPQUFPLHdCQUF3QixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBTUQsTUFBTSxDQUFDLElBQUk7UUFDVCxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUM7SUFDM0Is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
@@ -0,0 +1,150 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ /// <reference types="node" resolution-mode="require"/>
3
+ import cKzg from 'c-kzg';
4
+ import type { Blob as BlobBuffer } from 'c-kzg';
5
+ import { Fr } from '../fields/index.js';
6
+ import { BufferReader } from '../serialize/index.js';
7
+ import { type BlobJson } from './interface.js';
8
+ export declare const VERSIONED_HASH_VERSION_KZG = 1;
9
+ /**
10
+ * A class to create, manage, and prove EVM blobs.
11
+ */
12
+ export declare class Blob {
13
+ /** The blob to be broadcast on L1 in bytes form. */
14
+ readonly data: BlobBuffer;
15
+ /** The hash of all tx effects inside the blob. Used in generating the challenge z and proving that we have included all required effects. */
16
+ readonly fieldsHash: Fr;
17
+ /** Challenge point z (= H(H(tx_effects), kzgCommmitment). Used such that p(z) = y. */
18
+ readonly challengeZ: Fr;
19
+ /** Evaluation y = p(z), where p() is the blob polynomial. BLS12 field element, rep. as BigNum in nr, bigint in ts. */
20
+ readonly evaluationY: Buffer;
21
+ /** Commitment to the blob C. Used in compressed BLS12 point format (48 bytes). */
22
+ readonly commitment: Buffer;
23
+ /** KZG opening proof for y = p(z). The commitment to quotient polynomial Q, used in compressed BLS12 point format (48 bytes). */
24
+ readonly proof: Buffer;
25
+ constructor(
26
+ /** The blob to be broadcast on L1 in bytes form. */
27
+ data: BlobBuffer,
28
+ /** The hash of all tx effects inside the blob. Used in generating the challenge z and proving that we have included all required effects. */
29
+ fieldsHash: Fr,
30
+ /** Challenge point z (= H(H(tx_effects), kzgCommmitment). Used such that p(z) = y. */
31
+ challengeZ: Fr,
32
+ /** Evaluation y = p(z), where p() is the blob polynomial. BLS12 field element, rep. as BigNum in nr, bigint in ts. */
33
+ evaluationY: Buffer,
34
+ /** Commitment to the blob C. Used in compressed BLS12 point format (48 bytes). */
35
+ commitment: Buffer,
36
+ /** KZG opening proof for y = p(z). The commitment to quotient polynomial Q, used in compressed BLS12 point format (48 bytes). */
37
+ proof: Buffer);
38
+ /**
39
+ * The encoded version of the blob will determine the end of the blob based on the transaction encoding.
40
+ * This is required when the fieldsHash of a blob will contain trailing zeros.
41
+ *
42
+ * See `./encoding.ts` for more details.
43
+ *
44
+ * This method is used to create a Blob from a buffer.
45
+ * @param blob - The buffer to create the Blob from.
46
+ * @param multiBlobFieldsHash - The fields hash to use for the Blob.
47
+ * @returns A Blob created from the buffer.
48
+ */
49
+ static fromEncodedBlobBuffer(blob: BlobBuffer, multiBlobFieldsHash?: Fr): Promise<Blob>;
50
+ /**
51
+ * Create a Blob from an array of fields.
52
+ *
53
+ * @param fields - The array of fields to create the Blob from.
54
+ * @param multiBlobFieldsHash - The fields hash to use for the Blob.
55
+ * @returns A Blob created from the array of fields.
56
+ */
57
+ static fromFields(fields: Fr[], multiBlobFieldsHash?: Fr): Promise<Blob>;
58
+ /**
59
+ * Create a Blob from a JSON object.
60
+ *
61
+ * Blobs will be in this form when requested from the blob sink, or from
62
+ * the beacon chain via `getBlobSidecars`
63
+ * https://ethereum.github.io/beacon-APIs/?urls.primaryName=dev#/Beacon/getBlobSidecars
64
+ *
65
+ * @dev WARNING: by default json deals with encoded buffers
66
+ *
67
+ * @param json - The JSON object to create the Blob from.
68
+ * @returns A Blob created from the JSON object.
69
+ */
70
+ static fromJson(json: BlobJson): Promise<Blob>;
71
+ /**
72
+ * Get the JSON representation of the blob.
73
+ *
74
+ * @dev WARNING: by default json deals with encoded buffers
75
+ * @param index - optional - The index of the blob in the block.
76
+ * @returns The JSON representation of the blob.
77
+ */
78
+ toJson(index?: number): BlobJson;
79
+ /**
80
+ * Get the fields from the blob.
81
+ *
82
+ * @dev WARNING: this method does not take into account trailing zeros
83
+ *
84
+ * @returns The fields from the blob.
85
+ */
86
+ toFields(): Fr[];
87
+ /**
88
+ * Get the encoded fields from the blob.
89
+ *
90
+ * @dev This method takes into account trailing zeros
91
+ *
92
+ * @returns The encoded fields from the blob.
93
+ */
94
+ toEncodedFields(): Fr[];
95
+ /**
96
+ * Get the commitment fields from the blob.
97
+ *
98
+ * The 48-byte commitment is encoded into two field elements:
99
+ * +------------------+------------------+
100
+ * | Field Element 1 | Field Element 2 |
101
+ * | [bytes 0-31] | [bytes 32-47] |
102
+ * +------------------+------------------+
103
+ * | 32 bytes | 16 bytes |
104
+ * +------------------+------------------+
105
+ * @returns The commitment fields from the blob.
106
+ */
107
+ commitmentToFields(): [Fr, Fr];
108
+ getEthVersionedBlobHash(): Buffer;
109
+ static getEthVersionedBlobHash(commitment: Buffer): Buffer;
110
+ /**
111
+ * Get the buffer representation of the ENTIRE blob.
112
+ *
113
+ * @dev WARNING: this buffer contains all metadata aswell as the data itself
114
+ *
115
+ * @returns The buffer representation of the blob.
116
+ */
117
+ toBuffer(): Buffer;
118
+ /**
119
+ * Create a Blob from a buffer.
120
+ *
121
+ * @dev WARNING: this method contains all metadata aswell as the data itself
122
+ *
123
+ * @param buf - The buffer to create the Blob from.
124
+ * @returns A Blob created from the buffer.
125
+ */
126
+ static fromBuffer(buf: Buffer | BufferReader): Blob;
127
+ /**
128
+ * Get the size of the blob in bytes
129
+ */
130
+ getSize(): number;
131
+ /**
132
+ * Returns a proof of opening of the blob to verify on L1 using the point evaluation precompile:
133
+ *
134
+ * input[:32] - versioned_hash
135
+ * input[32:64] - z
136
+ * input[64:96] - y
137
+ * input[96:144] - commitment C
138
+ * input[144:192] - proof (a commitment to the quotient polynomial q(X))
139
+ *
140
+ * See https://eips.ethereum.org/EIPS/eip-4844#point-evaluation-precompile
141
+ */
142
+ getEthBlobEvaluationInputs(): `0x${string}`;
143
+ static getEthBlobEvaluationInputs(blobs: Blob[]): `0x${string}`;
144
+ static getViemKzgInstance(): {
145
+ blobToKzgCommitment: typeof cKzg.blobToKzgCommitment;
146
+ computeBlobKzgProof: typeof cKzg.computeBlobKzgProof;
147
+ };
148
+ static getBlobs(fields: Fr[]): Promise<Blob[]>;
149
+ }
150
+ //# sourceMappingURL=blob.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blob.d.ts","sourceRoot":"","sources":["../../src/blob/blob.ts"],"names":[],"mappings":";;AACA,OAAO,IAAI,MAAM,OAAO,CAAC;AACzB,OAAO,KAAK,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,OAAO,CAAC;AAGhD,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAqB,MAAM,uBAAuB,CAAC;AAExE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAM/C,eAAO,MAAM,0BAA0B,IAAO,CAAC;AAE/C;;GAEG;AACH,qBAAa,IAAI;IAEb,oDAAoD;aACpC,IAAI,EAAE,UAAU;IAChC,6IAA6I;aAC7H,UAAU,EAAE,EAAE;IAC9B,sFAAsF;aACtE,UAAU,EAAE,EAAE;IAC9B,sHAAsH;aACtG,WAAW,EAAE,MAAM;IACnC,kFAAkF;aAClE,UAAU,EAAE,MAAM;IAClC,iIAAiI;aACjH,KAAK,EAAE,MAAM;;IAX7B,oDAAoD;IACpC,IAAI,EAAE,UAAU;IAChC,6IAA6I;IAC7H,UAAU,EAAE,EAAE;IAC9B,sFAAsF;IACtE,UAAU,EAAE,EAAE;IAC9B,sHAAsH;IACtG,WAAW,EAAE,MAAM;IACnC,kFAAkF;IAClE,UAAU,EAAE,MAAM;IAClC,iIAAiI;IACjH,KAAK,EAAE,MAAM;IAG/B;;;;;;;;;;OAUG;IACH,MAAM,CAAC,qBAAqB,CAAC,IAAI,EAAE,UAAU,EAAE,mBAAmB,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKvF;;;;;;OAMG;WACU,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,mBAAmB,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB9E;;;;;;;;;;;OAWG;WACU,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAepD;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ;IAWhC;;;;;;OAMG;IACH,QAAQ,IAAI,EAAE,EAAE;IAIhB;;;;;;OAMG;IACH,eAAe,IAAI,EAAE,EAAE;IAIvB;;;;;;;;;;;OAWG;IACH,kBAAkB,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;IAK9B,uBAAuB,IAAI,MAAM;IAMjC,MAAM,CAAC,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAM1D;;;;;;OAMG;IACH,QAAQ,IAAI,MAAM;IAiBlB;;;;;;;OAOG;IACH,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAYnD;;OAEG;IACH,OAAO;IAIP;;;;;;;;;;OAUG;IACH,0BAA0B,IAAI,KAAK,MAAM,EAAE;IAW3C,MAAM,CAAC,0BAA0B,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,MAAM,EAAE;IAmB/D,MAAM,CAAC,kBAAkB;;;;WASZ,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;CAUrD"}
@@ -0,0 +1,249 @@
1
+ // Importing directly from 'c-kzg' does not work, ignoring import/no-named-as-default-member err:
2
+ import cKzg from 'c-kzg';
3
+ import { poseidon2Hash, sha256 } from '../crypto/index.js';
4
+ import { Fr } from '../fields/index.js';
5
+ import { BufferReader, serializeToBuffer } from '../serialize/index.js';
6
+ import { deserializeEncodedBlobFields, extractBlobFieldsFromBuffer } from './encoding.js';
7
+ /* eslint-disable import/no-named-as-default-member */
8
+ const { BYTES_PER_BLOB, FIELD_ELEMENTS_PER_BLOB, blobToKzgCommitment, computeKzgProof, verifyKzgProof } = cKzg;
9
+ // The prefix to the EVM blobHash, defined here: https://eips.ethereum.org/EIPS/eip-4844#specification
10
+ export const VERSIONED_HASH_VERSION_KZG = 0x01;
11
+ /**
12
+ * A class to create, manage, and prove EVM blobs.
13
+ */
14
+ export class Blob {
15
+ constructor(
16
+ /** The blob to be broadcast on L1 in bytes form. */
17
+ data,
18
+ /** The hash of all tx effects inside the blob. Used in generating the challenge z and proving that we have included all required effects. */
19
+ fieldsHash,
20
+ /** Challenge point z (= H(H(tx_effects), kzgCommmitment). Used such that p(z) = y. */
21
+ challengeZ,
22
+ /** Evaluation y = p(z), where p() is the blob polynomial. BLS12 field element, rep. as BigNum in nr, bigint in ts. */
23
+ evaluationY,
24
+ /** Commitment to the blob C. Used in compressed BLS12 point format (48 bytes). */
25
+ commitment,
26
+ /** KZG opening proof for y = p(z). The commitment to quotient polynomial Q, used in compressed BLS12 point format (48 bytes). */
27
+ proof) {
28
+ this.data = data;
29
+ this.fieldsHash = fieldsHash;
30
+ this.challengeZ = challengeZ;
31
+ this.evaluationY = evaluationY;
32
+ this.commitment = commitment;
33
+ this.proof = proof;
34
+ }
35
+ /**
36
+ * The encoded version of the blob will determine the end of the blob based on the transaction encoding.
37
+ * This is required when the fieldsHash of a blob will contain trailing zeros.
38
+ *
39
+ * See `./encoding.ts` for more details.
40
+ *
41
+ * This method is used to create a Blob from a buffer.
42
+ * @param blob - The buffer to create the Blob from.
43
+ * @param multiBlobFieldsHash - The fields hash to use for the Blob.
44
+ * @returns A Blob created from the buffer.
45
+ */
46
+ static fromEncodedBlobBuffer(blob, multiBlobFieldsHash) {
47
+ const fields = deserializeEncodedBlobFields(blob);
48
+ return Blob.fromFields(fields, multiBlobFieldsHash);
49
+ }
50
+ /**
51
+ * Create a Blob from an array of fields.
52
+ *
53
+ * @param fields - The array of fields to create the Blob from.
54
+ * @param multiBlobFieldsHash - The fields hash to use for the Blob.
55
+ * @returns A Blob created from the array of fields.
56
+ */
57
+ static async fromFields(fields, multiBlobFieldsHash) {
58
+ if (fields.length > FIELD_ELEMENTS_PER_BLOB) {
59
+ throw new Error(`Attempted to overfill blob with ${fields.length} elements. The maximum is ${FIELD_ELEMENTS_PER_BLOB}`);
60
+ }
61
+ const data = Buffer.concat([serializeToBuffer(fields)], BYTES_PER_BLOB);
62
+ // This matches the output of SpongeBlob.squeeze() in the blob circuit
63
+ const fieldsHash = multiBlobFieldsHash ? multiBlobFieldsHash : await poseidon2Hash(fields);
64
+ const commitment = Buffer.from(blobToKzgCommitment(data));
65
+ const challengeZ = await poseidon2Hash([fieldsHash, ...commitmentToFields(commitment)]);
66
+ const res = computeKzgProof(data, challengeZ.toBuffer());
67
+ if (!verifyKzgProof(commitment, challengeZ.toBuffer(), res[1], res[0])) {
68
+ throw new Error(`KZG proof did not verify.`);
69
+ }
70
+ const proof = Buffer.from(res[0]);
71
+ const evaluationY = Buffer.from(res[1]);
72
+ return new Blob(data, fieldsHash, challengeZ, evaluationY, commitment, proof);
73
+ }
74
+ /**
75
+ * Create a Blob from a JSON object.
76
+ *
77
+ * Blobs will be in this form when requested from the blob sink, or from
78
+ * the beacon chain via `getBlobSidecars`
79
+ * https://ethereum.github.io/beacon-APIs/?urls.primaryName=dev#/Beacon/getBlobSidecars
80
+ *
81
+ * @dev WARNING: by default json deals with encoded buffers
82
+ *
83
+ * @param json - The JSON object to create the Blob from.
84
+ * @returns A Blob created from the JSON object.
85
+ */
86
+ static async fromJson(json) {
87
+ const blobBuffer = Buffer.from(json.blob.slice(2), 'hex');
88
+ const blob = await Blob.fromEncodedBlobBuffer(blobBuffer);
89
+ if (blob.commitment.toString('hex') !== json.kzg_commitment.slice(2)) {
90
+ throw new Error('KZG commitment does not match');
91
+ }
92
+ // We do not check the proof, as it will be different if the challenge is shared
93
+ // across multiple blobs
94
+ return blob;
95
+ }
96
+ /**
97
+ * Get the JSON representation of the blob.
98
+ *
99
+ * @dev WARNING: by default json deals with encoded buffers
100
+ * @param index - optional - The index of the blob in the block.
101
+ * @returns The JSON representation of the blob.
102
+ */
103
+ toJson(index) {
104
+ return {
105
+ blob: `0x${Buffer.from(this.data).toString('hex')}`,
106
+ index,
107
+ // eslint-disable-next-line camelcase
108
+ kzg_commitment: `0x${this.commitment.toString('hex')}`,
109
+ // eslint-disable-next-line camelcase
110
+ kzg_proof: `0x${this.proof.toString('hex')}`,
111
+ };
112
+ }
113
+ /**
114
+ * Get the fields from the blob.
115
+ *
116
+ * @dev WARNING: this method does not take into account trailing zeros
117
+ *
118
+ * @returns The fields from the blob.
119
+ */
120
+ toFields() {
121
+ return extractBlobFieldsFromBuffer(this.data);
122
+ }
123
+ /**
124
+ * Get the encoded fields from the blob.
125
+ *
126
+ * @dev This method takes into account trailing zeros
127
+ *
128
+ * @returns The encoded fields from the blob.
129
+ */
130
+ toEncodedFields() {
131
+ return deserializeEncodedBlobFields(this.data);
132
+ }
133
+ /**
134
+ * Get the commitment fields from the blob.
135
+ *
136
+ * The 48-byte commitment is encoded into two field elements:
137
+ * +------------------+------------------+
138
+ * | Field Element 1 | Field Element 2 |
139
+ * | [bytes 0-31] | [bytes 32-47] |
140
+ * +------------------+------------------+
141
+ * | 32 bytes | 16 bytes |
142
+ * +------------------+------------------+
143
+ * @returns The commitment fields from the blob.
144
+ */
145
+ commitmentToFields() {
146
+ return commitmentToFields(this.commitment);
147
+ }
148
+ // Returns ethereum's versioned blob hash, following kzg_to_versioned_hash: https://eips.ethereum.org/EIPS/eip-4844#helpers
149
+ getEthVersionedBlobHash() {
150
+ const hash = sha256(this.commitment);
151
+ hash[0] = VERSIONED_HASH_VERSION_KZG;
152
+ return hash;
153
+ }
154
+ static getEthVersionedBlobHash(commitment) {
155
+ const hash = sha256(commitment);
156
+ hash[0] = VERSIONED_HASH_VERSION_KZG;
157
+ return hash;
158
+ }
159
+ /**
160
+ * Get the buffer representation of the ENTIRE blob.
161
+ *
162
+ * @dev WARNING: this buffer contains all metadata aswell as the data itself
163
+ *
164
+ * @returns The buffer representation of the blob.
165
+ */
166
+ toBuffer() {
167
+ return Buffer.from(serializeToBuffer(this.data.length, this.data, this.fieldsHash, this.challengeZ, this.evaluationY.length, this.evaluationY, this.commitment.length, this.commitment, this.proof.length, this.proof));
168
+ }
169
+ /**
170
+ * Create a Blob from a buffer.
171
+ *
172
+ * @dev WARNING: this method contains all metadata aswell as the data itself
173
+ *
174
+ * @param buf - The buffer to create the Blob from.
175
+ * @returns A Blob created from the buffer.
176
+ */
177
+ static fromBuffer(buf) {
178
+ const reader = BufferReader.asReader(buf);
179
+ return new Blob(reader.readUint8Array(), reader.readObject(Fr), reader.readObject(Fr), reader.readBuffer(), reader.readBuffer(), reader.readBuffer());
180
+ }
181
+ /**
182
+ * Get the size of the blob in bytes
183
+ */
184
+ getSize() {
185
+ return this.data.length;
186
+ }
187
+ /**
188
+ * Returns a proof of opening of the blob to verify on L1 using the point evaluation precompile:
189
+ *
190
+ * input[:32] - versioned_hash
191
+ * input[32:64] - z
192
+ * input[64:96] - y
193
+ * input[96:144] - commitment C
194
+ * input[144:192] - proof (a commitment to the quotient polynomial q(X))
195
+ *
196
+ * See https://eips.ethereum.org/EIPS/eip-4844#point-evaluation-precompile
197
+ */
198
+ getEthBlobEvaluationInputs() {
199
+ const buf = Buffer.concat([
200
+ this.getEthVersionedBlobHash(),
201
+ this.challengeZ.toBuffer(),
202
+ this.evaluationY,
203
+ this.commitment,
204
+ this.proof,
205
+ ]);
206
+ return `0x${buf.toString('hex')}`;
207
+ }
208
+ static getEthBlobEvaluationInputs(blobs) {
209
+ let buf = Buffer.alloc(0);
210
+ blobs.forEach(blob => {
211
+ buf = Buffer.concat([
212
+ buf,
213
+ blob.getEthVersionedBlobHash(),
214
+ blob.challengeZ.toBuffer(),
215
+ blob.evaluationY,
216
+ blob.commitment,
217
+ blob.proof,
218
+ ]);
219
+ });
220
+ // For multiple blobs, we prefix the number of blobs:
221
+ const lenBuf = Buffer.alloc(1);
222
+ lenBuf.writeUint8(blobs.length);
223
+ buf = Buffer.concat([lenBuf, buf]);
224
+ return `0x${buf.toString('hex')}`;
225
+ }
226
+ static getViemKzgInstance() {
227
+ return {
228
+ blobToKzgCommitment: cKzg.blobToKzgCommitment,
229
+ computeBlobKzgProof: cKzg.computeBlobKzgProof,
230
+ };
231
+ }
232
+ // Returns as many blobs as we require to broadcast the given fields
233
+ // Assumes we share the fields hash between all blobs
234
+ static async getBlobs(fields) {
235
+ const numBlobs = Math.max(Math.ceil(fields.length / FIELD_ELEMENTS_PER_BLOB), 1);
236
+ const multiBlobFieldsHash = await poseidon2Hash(fields);
237
+ const res = [];
238
+ for (let i = 0; i < numBlobs; i++) {
239
+ const end = fields.length < (i + 1) * FIELD_ELEMENTS_PER_BLOB ? fields.length : (i + 1) * FIELD_ELEMENTS_PER_BLOB;
240
+ res.push(await Blob.fromFields(fields.slice(i * FIELD_ELEMENTS_PER_BLOB, end), multiBlobFieldsHash));
241
+ }
242
+ return res;
243
+ }
244
+ }
245
+ // 48 bytes encoded in fields as [Fr, Fr] = [0->31, 31->48]
246
+ function commitmentToFields(commitment) {
247
+ return [new Fr(commitment.subarray(0, 31)), new Fr(commitment.subarray(31, 48))];
248
+ }
249
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ibG9iL2Jsb2IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUdBQWlHO0FBQ2pHLE9BQU8sSUFBSSxNQUFNLE9BQU8sQ0FBQztBQUd6QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLDJCQUEyQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzFGLHNEQUFzRDtBQUN0RCxNQUFNLEVBQUUsY0FBYyxFQUFFLHVCQUF1QixFQUFFLG1CQUFtQixFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFFL0csc0dBQXNHO0FBQ3RHLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLElBQUksQ0FBQztBQUUvQzs7R0FFRztBQUNILE1BQU0sT0FBTyxJQUFJO0lBQ2Y7SUFDRSxvREFBb0Q7SUFDcEMsSUFBZ0I7SUFDaEMsNklBQTZJO0lBQzdILFVBQWM7SUFDOUIsc0ZBQXNGO0lBQ3RFLFVBQWM7SUFDOUIsc0hBQXNIO0lBQ3RHLFdBQW1CO0lBQ25DLGtGQUFrRjtJQUNsRSxVQUFrQjtJQUNsQyxpSUFBaUk7SUFDakgsS0FBYTtRQVZiLFNBQUksR0FBSixJQUFJLENBQVk7UUFFaEIsZUFBVSxHQUFWLFVBQVUsQ0FBSTtRQUVkLGVBQVUsR0FBVixVQUFVLENBQUk7UUFFZCxnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUVuQixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBRWxCLFVBQUssR0FBTCxLQUFLLENBQVE7SUFDNUIsQ0FBQztJQUVKOzs7Ozs7Ozs7O09BVUc7SUFDSCxNQUFNLENBQUMscUJBQXFCLENB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