@aztec/blob-lib
Advanced tools
@@ -1,2 +0,2 @@ | ||
| import { AZTEC_MAX_EPOCH_DURATION, BLOBS_PER_CHECKPOINT } from '@aztec/constants'; | ||
| import { BLOBS_PER_CHECKPOINT, MAX_CHECKPOINTS_PER_EPOCH } from '@aztec/constants'; | ||
| import { poseidon2Hash } from '@aztec/foundation/crypto/poseidon'; | ||
@@ -59,4 +59,4 @@ import { sha256ToField } from '@aztec/foundation/crypto/sha256'; | ||
| const numCheckpoints = blobFieldsPerCheckpoint.length; | ||
| if (numCheckpoints > AZTEC_MAX_EPOCH_DURATION) { | ||
| throw new Error(`Too many checkpoints sent to batch(). The maximum is ${AZTEC_MAX_EPOCH_DURATION}. Got ${numCheckpoints}.`); | ||
| if (numCheckpoints > MAX_CHECKPOINTS_PER_EPOCH) { | ||
| throw new Error(`Too many checkpoints sent to batch(). The maximum is ${MAX_CHECKPOINTS_PER_EPOCH}. Got ${numCheckpoints}.`); | ||
| } | ||
@@ -89,3 +89,3 @@ // Precalculate the values (z and gamma) and initialize the accumulator: | ||
| const blobFieldsHash = await computeBlobFieldsHash(blobFields); | ||
| const blobs = getBlobsPerL1Block(blobFields); | ||
| const blobs = await getBlobsPerL1Block(blobFields); | ||
| for (const blob of blobs){ | ||
@@ -109,3 +109,3 @@ // Compute the challenge z for each blob and accumulate it. | ||
| // Now we have a shared challenge for all blobs, evaluate them... | ||
| const proofObjects = allBlobs.map((b)=>b.evaluate(z)); | ||
| const proofObjects = await Promise.all(allBlobs.map((b)=>b.evaluate(z))); | ||
| const evaluations = await Promise.all(proofObjects.map(({ y })=>hashNoirBigNumLimbs(y))); | ||
@@ -132,3 +132,3 @@ // ...and find the challenge for the linear combination of blobs. | ||
| */ async accumulateBlob(blob, blobFieldsHash) { | ||
| const { proof, y: thisY } = blob.evaluate(this.finalBlobChallenges.z); | ||
| const { proof, y: thisY } = await blob.evaluate(this.finalBlobChallenges.z); | ||
| const thisC = BLS12Point.decompress(blob.commitment); | ||
@@ -169,3 +169,3 @@ const thisQ = BLS12Point.decompress(proof); | ||
| */ async accumulateFields(blobFields) { | ||
| const blobs = getBlobsPerL1Block(blobFields); | ||
| const blobs = await getBlobsPerL1Block(blobFields); | ||
| if (blobs.length > BLOBS_PER_CHECKPOINT) { | ||
@@ -172,0 +172,0 @@ throw new Error(`Too many blobs to accumulate. The maximum is ${BLOBS_PER_CHECKPOINT} per checkpoint. Got ${blobs.length}.`); |
@@ -19,3 +19,3 @@ import { BLS12Point } from '@aztec/foundation/curves/bls12'; | ||
| */ | ||
| export declare function getBlobsPerL1Block(fields: Fr[]): Blob[]; | ||
| export declare function getBlobsPerL1Block(fields: Fr[]): Promise<Blob[]>; | ||
| /** | ||
@@ -41,2 +41,2 @@ * Get the encoded data from all blobs in the checkpoint. | ||
| export declare function getEthBlobEvaluationInputs(batchedBlob: BatchedBlob): `0x${string}`; | ||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvYl91dGlscy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Jsb2JfdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVwRCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxLQUFLLGtCQUFrQixFQUFzQyxNQUFNLHFCQUFxQixDQUFDO0FBR2xHOzs7OztHQUtHO0FBQ0gsd0JBQWdCLDZCQUE2QixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLE1BQU0sRUFBRSxDQVMxRTtBQUVEOzs7OztHQUtHO0FBQ0gsd0JBQWdCLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FTdkQ7QUFFRDs7OztHQUlHO0FBQ0gsd0JBQWdCLGlDQUFpQyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxrQkFBa0IsQ0FHbkY7QUFFRCx3QkFBZ0IseUJBQXlCLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FFM0Q7QUFFRCx3QkFBZ0IsMkJBQTJCLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLFVBQVUsRUFBRSxDQUV2RTtBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSCx3QkFBZ0IsMEJBQTBCLENBQUMsV0FBVyxFQUFFLFdBQVcsR0FBRyxLQUFLLE1BQU0sRUFBRSxDQVNsRiJ9 | ||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvYl91dGlscy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Jsb2JfdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVwRCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxLQUFLLGtCQUFrQixFQUFzQyxNQUFNLHFCQUFxQixDQUFDO0FBR2xHOzs7OztHQUtHO0FBQ0gsd0JBQWdCLDZCQUE2QixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLE1BQU0sRUFBRSxDQVMxRTtBQUVEOzs7OztHQUtHO0FBQ0gsd0JBQXNCLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FXdEU7QUFFRDs7OztHQUlHO0FBQ0gsd0JBQWdCLGlDQUFpQyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxrQkFBa0IsQ0FHbkY7QUFFRCx3QkFBZ0IseUJBQXlCLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FFM0Q7QUFFRCx3QkFBZ0IsMkJBQTJCLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLFVBQVUsRUFBRSxDQUV2RTtBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSCx3QkFBZ0IsMEJBQTBCLENBQUMsV0FBVyxFQUFFLFdBQVcsR0FBRyxLQUFLLE1BQU0sRUFBRSxDQVNsRiJ9 |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"blob_utils.d.ts","sourceRoot":"","sources":["../src/blob_utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,kBAAkB,EAAsC,MAAM,qBAAqB,CAAC;AAGlG;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,MAAM,EAAE,CAS1E;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,CASvD;AAED;;;;GAIG;AACH,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,kBAAkB,CAGnF;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAE3D;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,UAAU,EAAE,CAEvE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,WAAW,GAAG,KAAK,MAAM,EAAE,CASlF"} | ||
| {"version":3,"file":"blob_utils.d.ts","sourceRoot":"","sources":["../src/blob_utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,kBAAkB,EAAsC,MAAM,qBAAqB,CAAC;AAGlG;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,MAAM,EAAE,CAS1E;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAWtE;AAED;;;;GAIG;AACH,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,kBAAkB,CAGnF;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAE3D;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,UAAU,EAAE,CAEvE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,WAAW,GAAG,KAAK,MAAM,EAAE,CASlF"} |
@@ -27,3 +27,3 @@ import { FIELDS_PER_BLOB } from '@aztec/constants'; | ||
| * @throws If the number of fields does not match what's indicated by the checkpoint prefix. | ||
| */ export function getBlobsPerL1Block(fields) { | ||
| */ export async function getBlobsPerL1Block(fields) { | ||
| if (!fields.length) { | ||
@@ -33,5 +33,5 @@ throw new Error('Cannot create blobs from empty fields.'); | ||
| const numBlobs = Math.ceil(fields.length / FIELDS_PER_BLOB); | ||
| return Array.from({ | ||
| return await Promise.all(Array.from({ | ||
| length: numBlobs | ||
| }, (_, i)=>Blob.fromFields(fields.slice(i * FIELDS_PER_BLOB, (i + 1) * FIELDS_PER_BLOB))); | ||
| }, (_, i)=>Blob.fromFields(fields.slice(i * FIELDS_PER_BLOB, (i + 1) * FIELDS_PER_BLOB)))); | ||
| } | ||
@@ -38,0 +38,0 @@ /** |
+6
-6
@@ -39,3 +39,3 @@ import { FIELDS_PER_BLOB } from '@aztec/constants'; | ||
| */ | ||
| static fromBlobBuffer(data: Uint8Array): Blob; | ||
| static fromBlobBuffer(data: Uint8Array): Promise<Blob>; | ||
| /** | ||
@@ -49,3 +49,3 @@ * Create a Blob from an array of fields. | ||
| */ | ||
| static fromFields(fields: Fr[]): Blob; | ||
| static fromFields(fields: Fr[]): Promise<Blob>; | ||
| /** | ||
@@ -69,3 +69,3 @@ * Get the fields from the blob data. | ||
| */ | ||
| static fromJson(json: BlobJson): Blob; | ||
| static fromJson(json: BlobJson): Promise<Blob>; | ||
| /** | ||
@@ -93,6 +93,6 @@ * Get the JSON representation of the blob. | ||
| */ | ||
| evaluate(challengeZ: Fr, verifyProof?: boolean): { | ||
| evaluate(challengeZ: Fr, verifyProof?: boolean): Promise<{ | ||
| y: BLS12Fr; | ||
| proof: Buffer<ArrayBuffer>; | ||
| }; | ||
| }>; | ||
| /** | ||
@@ -125,2 +125,2 @@ * Get the buffer representation of the ENTIRE blob. | ||
| } | ||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvYi5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Jsb2IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBcUIsTUFBTSw2QkFBNkIsQ0FBQztBQUc5RSxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUcvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLENBQUM7QUFFM0I7Ozs7OztHQU1HO0FBQ0gscUJBQWEsSUFBSTtJQUViOztPQUVHO2FBQ2EsSUFBSSxFQUFFLFVBQVU7SUFDaEM7O09BRUc7YUFDYSxVQUFVLEVBQUUsTUFBTTtJQVJwQztJQUNFOztPQUVHO0lBQ2EsSUFBSSxFQUFFLFVBQVU7SUFDaEM7O09BRUc7SUFDYSxVQUFVLEVBQUUsTUFBTSxFQVFuQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVUsR0FBRyxJQUFJLENBRzVDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FRcEM7SUFFRDs7Ozs7O09BTUc7SUFDSCxRQUFRLElBQUksRUFBRSxFQUFFLENBSWY7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLEdBQUcsSUFBSSxDQVNwQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLElBQUksUUFBUSxDQU1qQjtJQUVELHVCQUF1QixJQUFJLE1BQU0sQ0FFaEM7SUFFRDs7O09BR0c7SUFDRyxpQkFBaUIsQ0FBQyxjQUFjLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FFdkQ7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxRQUFRLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxXQUFXLFVBQVE7OztNQVUzQztJQUVEOzs7Ozs7T0FNRztJQUNILFFBQVEsSUFBSSxNQUFNLENBRWpCO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxZQUFZLEdBQUcsSUFBSSxDQUdsRDtJQUVEOztPQUVHO0lBQ0gsT0FBTyxXQUVOO0lBRUQsTUFBTSxDQUFDLGtCQUFrQjs7OztNQVV4QjtDQUNGIn0= | ||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvYi5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Jsb2IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBcUIsTUFBTSw2QkFBNkIsQ0FBQztBQUc5RSxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUcvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLENBQUM7QUFFM0I7Ozs7OztHQU1HO0FBQ0gscUJBQWEsSUFBSTtJQUViOztPQUVHO2FBQ2EsSUFBSSxFQUFFLFVBQVU7SUFDaEM7O09BRUc7YUFDYSxVQUFVLEVBQUUsTUFBTTtJQVJwQztJQUNFOztPQUVHO0lBQ2EsSUFBSSxFQUFFLFVBQVU7SUFDaEM7O09BRUc7SUFDYSxVQUFVLEVBQUUsTUFBTSxFQVFuQztJQUVEOzs7Ozs7T0FNRztJQUNILE9BQWEsY0FBYyxDQUFDLElBQUksRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUczRDtJQUVEOzs7Ozs7O09BT0c7SUFDSCxPQUFhLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQVFuRDtJQUVEOzs7Ozs7T0FNRztJQUNILFFBQVEsSUFBSSxFQUFFLEVBQUUsQ0FJZjtJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILE9BQWEsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQVNuRDtJQUVEOzs7O09BSUc7SUFDSCxNQUFNLElBQUksUUFBUSxDQU1qQjtJQUVELHVCQUF1QixJQUFJLE1BQU0sQ0FFaEM7SUFFRDs7O09BR0c7SUFDRyxpQkFBaUIsQ0FBQyxjQUFjLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FFdkQ7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDRyxRQUFRLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxXQUFXLFVBQVE7OztPQVVqRDtJQUVEOzs7Ozs7T0FNRztJQUNILFFBQVEsSUFBSSxNQUFNLENBRWpCO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxZQUFZLEdBQUcsSUFBSSxDQUdsRDtJQUVEOztPQUVHO0lBQ0gsT0FBTyxXQUVOO0lBRUQsTUFBTSxDQUFDLGtCQUFrQjs7OztNQVV4QjtDQUNGIn0= |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"blob.d.ts","sourceRoot":"","sources":["../src/blob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAG9E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B;;;;;;GAMG;AACH,qBAAa,IAAI;IAEb;;OAEG;aACa,IAAI,EAAE,UAAU;IAChC;;OAEG;aACa,UAAU,EAAE,MAAM;IARpC;IACE;;OAEG;IACa,IAAI,EAAE,UAAU;IAChC;;OAEG;IACa,UAAU,EAAE,MAAM,EAQnC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAG5C;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAQpC;IAED;;;;;;OAMG;IACH,QAAQ,IAAI,EAAE,EAAE,CAIf;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CASpC;IAED;;;;OAIG;IACH,MAAM,IAAI,QAAQ,CAMjB;IAED,uBAAuB,IAAI,MAAM,CAEhC;IAED;;;OAGG;IACG,iBAAiB,CAAC,cAAc,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAEvD;IAED;;;;;;;;;OASG;IACH,QAAQ,CAAC,UAAU,EAAE,EAAE,EAAE,WAAW,UAAQ;;;MAU3C;IAED;;;;;;OAMG;IACH,QAAQ,IAAI,MAAM,CAEjB;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAGlD;IAED;;OAEG;IACH,OAAO,WAEN;IAED,MAAM,CAAC,kBAAkB;;;;MAUxB;CACF"} | ||
| {"version":3,"file":"blob.d.ts","sourceRoot":"","sources":["../src/blob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAG9E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B;;;;;;GAMG;AACH,qBAAa,IAAI;IAEb;;OAEG;aACa,IAAI,EAAE,UAAU;IAChC;;OAEG;aACa,UAAU,EAAE,MAAM;IARpC;IACE;;OAEG;IACa,IAAI,EAAE,UAAU;IAChC;;OAEG;IACa,UAAU,EAAE,MAAM,EAQnC;IAED;;;;;;OAMG;IACH,OAAa,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAG3D;IAED;;;;;;;OAOG;IACH,OAAa,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAQnD;IAED;;;;;;OAMG;IACH,QAAQ,IAAI,EAAE,EAAE,CAIf;IAED;;;;;;;;;OASG;IACH,OAAa,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CASnD;IAED;;;;OAIG;IACH,MAAM,IAAI,QAAQ,CAMjB;IAED,uBAAuB,IAAI,MAAM,CAEhC;IAED;;;OAGG;IACG,iBAAiB,CAAC,cAAc,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAEvD;IAED;;;;;;;;;OASG;IACG,QAAQ,CAAC,UAAU,EAAE,EAAE,EAAE,WAAW,UAAQ;;;OAUjD;IAED;;;;;;OAMG;IACH,QAAQ,IAAI,MAAM,CAEjB;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAGlD;IAED;;OAEG;IACH,OAAO,WAEN;IAED,MAAM,CAAC,kBAAkB;;;;MAUxB;CACF"} |
+8
-8
@@ -37,4 +37,4 @@ import { FIELDS_PER_BLOB } from '@aztec/constants'; | ||
| * @throws If data does not match the expected length (BYTES_PER_BLOB). | ||
| */ static fromBlobBuffer(data) { | ||
| const commitment = computeBlobCommitment(data); | ||
| */ static async fromBlobBuffer(data) { | ||
| const commitment = await computeBlobCommitment(data); | ||
| return new Blob(data, commitment); | ||
@@ -49,3 +49,3 @@ } | ||
| * @returns A Blob created from the array of fields. | ||
| */ static fromFields(fields) { | ||
| */ static async fromFields(fields) { | ||
| if (fields.length > FIELDS_PER_BLOB) { | ||
@@ -57,3 +57,3 @@ throw new Error(`Attempted to overfill blob with ${fields.length} fields. The maximum is ${FIELDS_PER_BLOB}.`); | ||
| ], BYTES_PER_BLOB); | ||
| const commitment = computeBlobCommitment(data); | ||
| const commitment = await computeBlobCommitment(data); | ||
| return new Blob(data, commitment); | ||
@@ -81,5 +81,5 @@ } | ||
| * @returns A Blob created from the JSON object. | ||
| */ static fromJson(json) { | ||
| */ static async fromJson(json) { | ||
| const blobBuffer = Buffer.from(json.blob.slice(2), 'hex'); | ||
| const blob = Blob.fromBlobBuffer(blobBuffer); | ||
| const blob = await Blob.fromBlobBuffer(blobBuffer); | ||
| if (blob.commitment.toString('hex') !== json.kzg_commitment.slice(2)) { | ||
@@ -119,5 +119,5 @@ throw new Error('KZG commitment does not match'); | ||
| * proof: Buffer - KZG opening proof for y = p(z). The commitment to quotient polynomial Q, used in compressed BLS12 point format (48 bytes). | ||
| */ evaluate(challengeZ, verifyProof = false) { | ||
| */ async evaluate(challengeZ, verifyProof = false) { | ||
| const kzg = getKzg(); | ||
| const res = kzg.computeKzgProof(this.data, challengeZ.toBuffer()); | ||
| const res = await kzg.asyncComputeKzgProof(this.data, challengeZ.toBuffer()); | ||
| if (verifyProof && !kzg.verifyKzgProof(this.commitment, challengeZ.toBuffer(), res[1], res[0])) { | ||
@@ -124,0 +124,0 @@ throw new Error(`KZG proof did not verify.`); |
@@ -10,3 +10,3 @@ import { BLOCK_END_PREFIX } from '@aztec/constants'; | ||
| export function encodeBlockEndMarker(blockEndMarker) { | ||
| let value = BLOCK_END_PREFIX; | ||
| let value = BigInt(BLOCK_END_PREFIX); | ||
| value <<= TIMESTAMP_BIT_SIZE; | ||
@@ -29,3 +29,3 @@ value += blockEndMarker.timestamp; | ||
| const prefix = value; | ||
| if (prefix !== BLOCK_END_PREFIX) { | ||
| if (prefix !== BigInt(BLOCK_END_PREFIX)) { | ||
| throw new BlobDeserializationError(`Incorrect encoding of blob fields: invalid block end marker.`); | ||
@@ -42,3 +42,3 @@ } | ||
| const prefix = field.toBigInt() >> NUM_TXS_BIT_SIZE + BLOCK_NUMBER_BIT_SIZE + TIMESTAMP_BIT_SIZE; | ||
| return prefix === BLOCK_END_PREFIX; | ||
| return prefix === BigInt(BLOCK_END_PREFIX); | ||
| } |
@@ -7,3 +7,3 @@ import { CHECKPOINT_END_PREFIX } from '@aztec/constants'; | ||
| export function encodeCheckpointEndMarker(checkpointEndMarker) { | ||
| let value = CHECKPOINT_END_PREFIX; | ||
| let value = BigInt(CHECKPOINT_END_PREFIX); | ||
| value <<= NUM_BLOB_FIELDS_BIT_SIZE; | ||
@@ -18,3 +18,3 @@ value += BigInt(checkpointEndMarker.numBlobFields); | ||
| const prefix = value; | ||
| if (prefix !== CHECKPOINT_END_PREFIX) { | ||
| if (prefix !== BigInt(CHECKPOINT_END_PREFIX)) { | ||
| throw new BlobDeserializationError(`Incorrect encoding of blob fields: invalid checkpoint end marker.`); | ||
@@ -29,3 +29,3 @@ } | ||
| const prefix = field.toBigInt() >> NUM_BLOB_FIELDS_BIT_SIZE; | ||
| return prefix === CHECKPOINT_END_PREFIX; | ||
| return prefix === BigInt(CHECKPOINT_END_PREFIX); | ||
| } |
@@ -16,3 +16,3 @@ import { TX_START_PREFIX } from '@aztec/constants'; | ||
| export function encodeTxStartMarker(txStartMarker) { | ||
| let value = TX_START_PREFIX; | ||
| let value = BigInt(TX_START_PREFIX); | ||
| value <<= NUM_NOTE_HASH_BIT_SIZE; | ||
@@ -63,3 +63,3 @@ value += BigInt(txStartMarker.numNoteHashes); | ||
| const prefix = value; | ||
| if (prefix !== TX_START_PREFIX) { | ||
| if (prefix !== BigInt(TX_START_PREFIX)) { | ||
| throw new BlobDeserializationError(`Incorrect encoding of blob fields: invalid tx start marker.`); | ||
@@ -66,0 +66,0 @@ } |
+2
-2
@@ -21,3 +21,3 @@ import { BLS12Fr } from '@aztec/foundation/curves/bls12'; | ||
| export declare function computeBlobFieldsHash(fields: Fr[]): Promise<Fr>; | ||
| export declare function computeBlobCommitment(data: Uint8Array): Buffer; | ||
| export declare function computeBlobCommitment(data: Uint8Array): Promise<Buffer>; | ||
| /** | ||
@@ -44,2 +44,2 @@ * Get the commitment fields of the blob, to compute the challenge z. | ||
| export declare function hashNoirBigNumLimbs(field: BLS12Fr): Promise<Fr>; | ||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzaC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2hhc2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQU9wRDs7R0FFRztBQUNILHdCQUFnQiwyQkFBMkIsQ0FBQyxVQUFVLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FJdEU7QUFPRCx3QkFBZ0IsZ0JBQWdCLENBQUMsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUVyRTtBQUVEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsd0JBQXNCLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLENBSXJFO0FBRUQsd0JBQWdCLHFCQUFxQixDQUFDLElBQUksRUFBRSxVQUFVLEdBQUcsTUFBTSxDQU05RDtBQUVEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCx3QkFBZ0Isa0JBQWtCLENBQUMsVUFBVSxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FNL0Q7QUFFRCx3QkFBc0IsaUJBQWlCLENBQUMsY0FBYyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FHM0Y7QUFFRDs7O0dBR0c7QUFDSCx3QkFBc0IsbUJBQW1CLENBQUMsS0FBSyxFQUFFLE9BQU8sR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLENBR3JFIn0= | ||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzaC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2hhc2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQU9wRDs7R0FFRztBQUNILHdCQUFnQiwyQkFBMkIsQ0FBQyxVQUFVLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FJdEU7QUFPRCx3QkFBZ0IsZ0JBQWdCLENBQUMsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUVyRTtBQUVEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsd0JBQXNCLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLENBSXJFO0FBRUQsd0JBQXNCLHFCQUFxQixDQUFDLElBQUksRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQU03RTtBQUVEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCx3QkFBZ0Isa0JBQWtCLENBQUMsVUFBVSxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FNL0Q7QUFFRCx3QkFBc0IsaUJBQWlCLENBQUMsY0FBYyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FHM0Y7QUFFRDs7O0dBR0c7QUFDSCx3QkFBc0IsbUJBQW1CLENBQUMsS0FBSyxFQUFFLE9BQU8sR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLENBR3JFIn0= |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../src/hash.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAOpD;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAItE;AAOD,wBAAgB,gBAAgB,CAAC,sBAAsB,EAAE,MAAM,EAAE,GAAG,EAAE,CAErE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAIrE;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAM9D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAM/D;AAED,wBAAsB,iBAAiB,CAAC,cAAc,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,CAG3F;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,EAAE,CAAC,CAGrE"} | ||
| {"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../src/hash.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAOpD;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAItE;AAOD,wBAAgB,gBAAgB,CAAC,sBAAsB,EAAE,MAAM,EAAE,GAAG,EAAE,CAErE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAIrE;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAM7E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAM/D;AAED,wBAAsB,iBAAiB,CAAC,cAAc,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,CAG3F;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,EAAE,CAAC,CAGrE"} |
+2
-2
@@ -38,7 +38,7 @@ import { poseidon2Hash } from '@aztec/foundation/crypto/poseidon'; | ||
| } | ||
| export function computeBlobCommitment(data) { | ||
| export async function computeBlobCommitment(data) { | ||
| if (data.length !== BYTES_PER_BLOB) { | ||
| throw new Error(`Expected ${BYTES_PER_BLOB} bytes per blob. Got ${data.length}.`); | ||
| } | ||
| return Buffer.from(getKzg().blobToKzgCommitment(data)); | ||
| return Buffer.from(await getKzg().asyncBlobToKzgCommitment(data)); | ||
| } | ||
@@ -45,0 +45,0 @@ /** |
@@ -30,3 +30,3 @@ import { Blob } from './blob.js'; | ||
| */ | ||
| export declare function makeRandomBlob(length: number): Blob; | ||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGluZy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Rlc3RpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDakYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDaEcsT0FBTyxFQUFtQixVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUvRCxjQUFjLHdCQUF3QixDQUFDO0FBRXZDOzs7OztHQUtHO0FBQ0gsd0JBQWdCLGNBQWMsQ0FBQyxJQUFJLFNBQUksR0FBRyxVQUFVLENBVW5EO0FBMEJEOzs7OztHQUtHO0FBQ0gsd0JBQWdCLG1CQUFtQixDQUFDLElBQUksU0FBSSxHQUFHLGVBQWUsQ0FTN0Q7QUFFRCx3QkFBZ0Isd0JBQXdCLENBQUMsSUFBSSxTQUFJLHdCQU9oRDtBQUVELHdCQUFnQiwrQkFBK0IsQ0FBQyxJQUFJLFNBQUksK0JBRXZEO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsd0JBQWdCLGNBQWMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FFbkQifQ== | ||
| export declare function makeRandomBlob(length: number): Promise<Blob>; | ||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGluZy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Rlc3RpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDakYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDaEcsT0FBTyxFQUFtQixVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUvRCxjQUFjLHdCQUF3QixDQUFDO0FBRXZDOzs7OztHQUtHO0FBQ0gsd0JBQWdCLGNBQWMsQ0FBQyxJQUFJLFNBQUksR0FBRyxVQUFVLENBVW5EO0FBMEJEOzs7OztHQUtHO0FBQ0gsd0JBQWdCLG1CQUFtQixDQUFDLElBQUksU0FBSSxHQUFHLGVBQWUsQ0FTN0Q7QUFFRCx3QkFBZ0Isd0JBQXdCLENBQUMsSUFBSSxTQUFJLHdCQU9oRDtBQUVELHdCQUFnQiwrQkFBK0IsQ0FBQyxJQUFJLFNBQUksK0JBRXZEO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsd0JBQWdCLGNBQWMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FFNUQifQ== |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,2BAA2B,EAAE,MAAM,mDAAmD,CAAC;AAChG,OAAO,EAAmB,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE/D,cAAc,wBAAwB,CAAC;AAEvC;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,SAAI,GAAG,UAAU,CAUnD;AA0BD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,SAAI,GAAG,eAAe,CAS7D;AAED,wBAAgB,wBAAwB,CAAC,IAAI,SAAI,wBAOhD;AAED,wBAAgB,+BAA+B,CAAC,IAAI,SAAI,+BAEvD;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAEnD"} | ||
| {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,2BAA2B,EAAE,MAAM,mDAAmD,CAAC;AAChG,OAAO,EAAmB,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE/D,cAAc,wBAAwB,CAAC;AAEvC;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,SAAI,GAAG,UAAU,CAUnD;AA0BD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,SAAI,GAAG,eAAe,CAS7D;AAED,wBAAgB,wBAAwB,CAAC,IAAI,SAAI,wBAOhD;AAED,wBAAgB,+BAA+B,CAAC,IAAI,SAAI,+BAEvD;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5D"} |
+3
-3
| { | ||
| "name": "@aztec/blob-lib", | ||
| "version": "0.0.1-commit.6d63667d", | ||
| "version": "0.0.1-commit.733c4a3", | ||
| "type": "module", | ||
@@ -30,4 +30,4 @@ "exports": { | ||
| "dependencies": { | ||
| "@aztec/constants": "0.0.1-commit.6d63667d", | ||
| "@aztec/foundation": "0.0.1-commit.6d63667d", | ||
| "@aztec/constants": "0.0.1-commit.733c4a3", | ||
| "@aztec/foundation": "0.0.1-commit.733c4a3", | ||
| "@crate-crypto/node-eth-kzg": "^0.10.0", | ||
@@ -34,0 +34,0 @@ "tslib": "^2.4.0" |
@@ -1,2 +0,2 @@ | ||
| import { AZTEC_MAX_EPOCH_DURATION, BLOBS_PER_CHECKPOINT } from '@aztec/constants'; | ||
| import { BLOBS_PER_CHECKPOINT, MAX_CHECKPOINTS_PER_EPOCH } from '@aztec/constants'; | ||
| import { poseidon2Hash } from '@aztec/foundation/crypto/poseidon'; | ||
@@ -78,5 +78,5 @@ import { sha256ToField } from '@aztec/foundation/crypto/sha256'; | ||
| const numCheckpoints = blobFieldsPerCheckpoint.length; | ||
| if (numCheckpoints > AZTEC_MAX_EPOCH_DURATION) { | ||
| if (numCheckpoints > MAX_CHECKPOINTS_PER_EPOCH) { | ||
| throw new Error( | ||
| `Too many checkpoints sent to batch(). The maximum is ${AZTEC_MAX_EPOCH_DURATION}. Got ${numCheckpoints}.`, | ||
| `Too many checkpoints sent to batch(). The maximum is ${MAX_CHECKPOINTS_PER_EPOCH}. Got ${numCheckpoints}.`, | ||
| ); | ||
@@ -113,3 +113,3 @@ } | ||
| const blobFieldsHash = await computeBlobFieldsHash(blobFields); | ||
| const blobs = getBlobsPerL1Block(blobFields); | ||
| const blobs = await getBlobsPerL1Block(blobFields); | ||
| for (const blob of blobs) { | ||
@@ -131,3 +131,3 @@ // Compute the challenge z for each blob and accumulate it. | ||
| // Now we have a shared challenge for all blobs, evaluate them... | ||
| const proofObjects = allBlobs.map(b => b.evaluate(z)); | ||
| const proofObjects = await Promise.all(allBlobs.map(b => b.evaluate(z))); | ||
| const evaluations = await Promise.all(proofObjects.map(({ y }) => hashNoirBigNumLimbs(y))); | ||
@@ -151,3 +151,3 @@ // ...and find the challenge for the linear combination of blobs. | ||
| async accumulateBlob(blob: Blob, blobFieldsHash: Fr) { | ||
| const { proof, y: thisY } = blob.evaluate(this.finalBlobChallenges.z); | ||
| const { proof, y: thisY } = await blob.evaluate(this.finalBlobChallenges.z); | ||
| const thisC = BLS12Point.decompress(blob.commitment); | ||
@@ -199,3 +199,3 @@ const thisQ = BLS12Point.decompress(proof); | ||
| async accumulateFields(blobFields: Fr[]) { | ||
| const blobs = getBlobsPerL1Block(blobFields); | ||
| const blobs = await getBlobsPerL1Block(blobFields); | ||
@@ -202,0 +202,0 @@ if (blobs.length > BLOBS_PER_CHECKPOINT) { |
@@ -33,3 +33,3 @@ import { FIELDS_PER_BLOB } from '@aztec/constants'; | ||
| */ | ||
| export function getBlobsPerL1Block(fields: Fr[]): Blob[] { | ||
| export async function getBlobsPerL1Block(fields: Fr[]): Promise<Blob[]> { | ||
| if (!fields.length) { | ||
@@ -40,4 +40,6 @@ throw new Error('Cannot create blobs from empty fields.'); | ||
| const numBlobs = Math.ceil(fields.length / FIELDS_PER_BLOB); | ||
| return Array.from({ length: numBlobs }, (_, i) => | ||
| Blob.fromFields(fields.slice(i * FIELDS_PER_BLOB, (i + 1) * FIELDS_PER_BLOB)), | ||
| return await Promise.all( | ||
| Array.from({ length: numBlobs }, (_, i) => | ||
| Blob.fromFields(fields.slice(i * FIELDS_PER_BLOB, (i + 1) * FIELDS_PER_BLOB)), | ||
| ), | ||
| ); | ||
@@ -44,0 +46,0 @@ } |
+8
-8
@@ -45,4 +45,4 @@ import { FIELDS_PER_BLOB } from '@aztec/constants'; | ||
| */ | ||
| static fromBlobBuffer(data: Uint8Array): Blob { | ||
| const commitment = computeBlobCommitment(data); | ||
| static async fromBlobBuffer(data: Uint8Array): Promise<Blob> { | ||
| const commitment = await computeBlobCommitment(data); | ||
| return new Blob(data, commitment); | ||
@@ -59,3 +59,3 @@ } | ||
| */ | ||
| static fromFields(fields: Fr[]): Blob { | ||
| static async fromFields(fields: Fr[]): Promise<Blob> { | ||
| if (fields.length > FIELDS_PER_BLOB) { | ||
@@ -66,3 +66,3 @@ throw new Error(`Attempted to overfill blob with ${fields.length} fields. The maximum is ${FIELDS_PER_BLOB}.`); | ||
| const data = Buffer.concat([serializeToBuffer(fields)], BYTES_PER_BLOB); | ||
| const commitment = computeBlobCommitment(data); | ||
| const commitment = await computeBlobCommitment(data); | ||
| return new Blob(data, commitment); | ||
@@ -94,5 +94,5 @@ } | ||
| */ | ||
| static fromJson(json: BlobJson): Blob { | ||
| static async fromJson(json: BlobJson): Promise<Blob> { | ||
| const blobBuffer = Buffer.from(json.blob.slice(2), 'hex'); | ||
| const blob = Blob.fromBlobBuffer(blobBuffer); | ||
| const blob = await Blob.fromBlobBuffer(blobBuffer); | ||
@@ -141,5 +141,5 @@ if (blob.commitment.toString('hex') !== json.kzg_commitment.slice(2)) { | ||
| */ | ||
| evaluate(challengeZ: Fr, verifyProof = false) { | ||
| async evaluate(challengeZ: Fr, verifyProof = false) { | ||
| const kzg = getKzg(); | ||
| const res = kzg.computeKzgProof(this.data, challengeZ.toBuffer()); | ||
| const res = await kzg.asyncComputeKzgProof(this.data, challengeZ.toBuffer()); | ||
| if (verifyProof && !kzg.verifyKzgProof(this.commitment, challengeZ.toBuffer(), res[1], res[0])) { | ||
@@ -146,0 +146,0 @@ throw new Error(`KZG proof did not verify.`); |
@@ -20,3 +20,3 @@ import { BLOCK_END_PREFIX } from '@aztec/constants'; | ||
| export function encodeBlockEndMarker(blockEndMarker: BlockEndMarker) { | ||
| let value = BLOCK_END_PREFIX; | ||
| let value = BigInt(BLOCK_END_PREFIX); | ||
| value <<= TIMESTAMP_BIT_SIZE; | ||
@@ -41,3 +41,3 @@ value += blockEndMarker.timestamp; | ||
| const prefix = value; | ||
| if (prefix !== BLOCK_END_PREFIX) { | ||
| if (prefix !== BigInt(BLOCK_END_PREFIX)) { | ||
| throw new BlobDeserializationError(`Incorrect encoding of blob fields: invalid block end marker.`); | ||
@@ -56,3 +56,3 @@ } | ||
| const prefix = field.toBigInt() >> (NUM_TXS_BIT_SIZE + BLOCK_NUMBER_BIT_SIZE + TIMESTAMP_BIT_SIZE); | ||
| return prefix === BLOCK_END_PREFIX; | ||
| return prefix === BigInt(BLOCK_END_PREFIX); | ||
| } |
@@ -15,3 +15,3 @@ import { CHECKPOINT_END_PREFIX } from '@aztec/constants'; | ||
| export function encodeCheckpointEndMarker(checkpointEndMarker: CheckpointEndMarker) { | ||
| let value = CHECKPOINT_END_PREFIX; | ||
| let value = BigInt(CHECKPOINT_END_PREFIX); | ||
| value <<= NUM_BLOB_FIELDS_BIT_SIZE; | ||
@@ -28,3 +28,3 @@ value += BigInt(checkpointEndMarker.numBlobFields); | ||
| const prefix = value; | ||
| if (prefix !== CHECKPOINT_END_PREFIX) { | ||
| if (prefix !== BigInt(CHECKPOINT_END_PREFIX)) { | ||
| throw new BlobDeserializationError(`Incorrect encoding of blob fields: invalid checkpoint end marker.`); | ||
@@ -41,3 +41,3 @@ } | ||
| const prefix = field.toBigInt() >> NUM_BLOB_FIELDS_BIT_SIZE; | ||
| return prefix === CHECKPOINT_END_PREFIX; | ||
| return prefix === BigInt(CHECKPOINT_END_PREFIX); | ||
| } |
@@ -33,3 +33,3 @@ import { TX_START_PREFIX } from '@aztec/constants'; | ||
| export function encodeTxStartMarker(txStartMarker: TxStartMarker): Fr { | ||
| let value = TX_START_PREFIX; | ||
| let value = BigInt(TX_START_PREFIX); | ||
| value <<= NUM_NOTE_HASH_BIT_SIZE; | ||
@@ -82,3 +82,3 @@ value += BigInt(txStartMarker.numNoteHashes); | ||
| const prefix = value; | ||
| if (prefix !== TX_START_PREFIX) { | ||
| if (prefix !== BigInt(TX_START_PREFIX)) { | ||
| throw new BlobDeserializationError(`Incorrect encoding of blob fields: invalid tx start marker.`); | ||
@@ -85,0 +85,0 @@ } |
+2
-2
@@ -47,3 +47,3 @@ import { poseidon2Hash } from '@aztec/foundation/crypto/poseidon'; | ||
| export function computeBlobCommitment(data: Uint8Array): Buffer { | ||
| export async function computeBlobCommitment(data: Uint8Array): Promise<Buffer> { | ||
| if (data.length !== BYTES_PER_BLOB) { | ||
@@ -53,3 +53,3 @@ throw new Error(`Expected ${BYTES_PER_BLOB} bytes per blob. Got ${data.length}.`); | ||
| return Buffer.from(getKzg().blobToKzgCommitment(data)); | ||
| return Buffer.from(await getKzg().asyncBlobToKzgCommitment(data)); | ||
| } | ||
@@ -56,0 +56,0 @@ |
+1
-1
@@ -92,4 +92,4 @@ import { makeTuple } from '@aztec/foundation/array'; | ||
| */ | ||
| export function makeRandomBlob(length: number): Blob { | ||
| export function makeRandomBlob(length: number): Promise<Blob> { | ||
| return Blob.fromFields([...Array.from({ length: length }, () => Fr.random())]); | ||
| } |
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
653786
0.11%8108
0.02%+ Added
+ Added
+ Added
- Removed
- Removed
- Removed