Latest Threat Research:SANDWORM_MODE: Shai-Hulud-Style npm Worm Hijacks CI Workflows and Poisons AI Toolchains.Details
Socket
Book a DemoInstallSign in
Socket

@aztec/blob-lib

Package Overview
Dependencies
Maintainers
6
Versions
684
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@aztec/blob-lib - npm Package Compare versions

Comparing version
0.0.1-commit.6d63667d
to
0.0.1-commit.733c4a3
+7
-7
dest/blob_batching.js

@@ -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 @@ /**

@@ -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"}

@@ -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 @@ }

@@ -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"}

@@ -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"}
{
"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 @@ }

@@ -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 @@ }

@@ -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 @@

@@ -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())]);
}