@aztec/blob-lib
Advanced tools
Comparing version 0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2 to 0.76.1
245
dest/blob.js
@@ -8,3 +8,4 @@ // Importing directly from 'c-kzg' does not work, ignoring import/no-named-as-default-member err: | ||
import { BlobDeserializationError } from './errors.js'; | ||
/* eslint-disable import/no-named-as-default-member */ const { BYTES_PER_BLOB, FIELD_ELEMENTS_PER_BLOB, blobToKzgCommitment, computeKzgProof, verifyKzgProof } = cKzg; | ||
/* eslint-disable import/no-named-as-default-member */ | ||
const { BYTES_PER_BLOB, FIELD_ELEMENTS_PER_BLOB, blobToKzgCommitment, computeKzgProof, verifyKzgProof } = cKzg; | ||
// The prefix to the EVM blobHash, defined here: https://eips.ethereum.org/EIPS/eip-4844#specification | ||
@@ -14,10 +15,17 @@ export const VERSIONED_HASH_VERSION_KZG = 0x01; | ||
* A class to create, manage, and prove EVM blobs. | ||
*/ export class Blob { | ||
data; | ||
fieldsHash; | ||
challengeZ; | ||
evaluationY; | ||
commitment; | ||
proof; | ||
constructor(/** The blob to be broadcast on L1 in bytes form. */ data, /** The hash of all tx effects inside the blob. Used in generating the challenge z and proving that we have included all required effects. */ fieldsHash, /** Challenge point z (= H(H(tx_effects), kzgCommmitment). Used such that p(z) = y. */ challengeZ, /** Evaluation y = p(z), where p() is the blob polynomial. BLS12 field element, rep. as BigNum in nr, bigint in ts. */ evaluationY, /** Commitment to the blob C. Used in compressed BLS12 point format (48 bytes). */ commitment, /** KZG opening proof for y = p(z). The commitment to quotient polynomial Q, used in compressed BLS12 point format (48 bytes). */ proof){ | ||
*/ | ||
export class Blob { | ||
constructor( | ||
/** The blob to be broadcast on L1 in bytes form. */ | ||
data, | ||
/** The hash of all tx effects inside the blob. Used in generating the challenge z and proving that we have included all required effects. */ | ||
fieldsHash, | ||
/** Challenge point z (= H(H(tx_effects), kzgCommmitment). Used such that p(z) = y. */ | ||
challengeZ, | ||
/** Evaluation y = p(z), where p() is the blob polynomial. BLS12 field element, rep. as BigNum in nr, bigint in ts. */ | ||
evaluationY, | ||
/** Commitment to the blob C. Used in compressed BLS12 point format (48 bytes). */ | ||
commitment, | ||
/** KZG opening proof for y = p(z). The commitment to quotient polynomial Q, used in compressed BLS12 point format (48 bytes). */ | ||
proof) { | ||
this.data = data; | ||
@@ -31,18 +39,20 @@ this.fieldsHash = fieldsHash; | ||
/** | ||
* The encoded version of the blob will determine the end of the blob based on the transaction encoding. | ||
* This is required when the fieldsHash of a blob will contain trailing zeros. | ||
* | ||
* See `./encoding.ts` for more details. | ||
* | ||
* This method is used to create a Blob from a buffer. | ||
* @param blob - The buffer to create the Blob from. | ||
* @param multiBlobFieldsHash - The fields hash to use for the Blob. | ||
* @returns A Blob created from the buffer. | ||
* | ||
* @throws If unable to deserialize the blob. | ||
*/ static fromEncodedBlobBuffer(blob, multiBlobFieldsHash) { | ||
* The encoded version of the blob will determine the end of the blob based on the transaction encoding. | ||
* This is required when the fieldsHash of a blob will contain trailing zeros. | ||
* | ||
* See `./encoding.ts` for more details. | ||
* | ||
* This method is used to create a Blob from a buffer. | ||
* @param blob - The buffer to create the Blob from. | ||
* @param multiBlobFieldsHash - The fields hash to use for the Blob. | ||
* @returns A Blob created from the buffer. | ||
* | ||
* @throws If unable to deserialize the blob. | ||
*/ | ||
static fromEncodedBlobBuffer(blob, multiBlobFieldsHash) { | ||
try { | ||
const fields = deserializeEncodedBlobToFields(blob); | ||
return Blob.fromFields(fields, multiBlobFieldsHash); | ||
} catch (err) { | ||
} | ||
catch (err) { | ||
throw new BlobDeserializationError(`Failed to create Blob from encoded blob buffer, this blob was likely not created by us`); | ||
@@ -52,21 +62,17 @@ } | ||
/** | ||
* Create a Blob from an array of fields. | ||
* | ||
* @param fields - The array of fields to create the Blob from. | ||
* @param multiBlobFieldsHash - The fields hash to use for the Blob. | ||
* @returns A Blob created from the array of fields. | ||
*/ static async fromFields(fields, multiBlobFieldsHash) { | ||
* Create a Blob from an array of fields. | ||
* | ||
* @param fields - The array of fields to create the Blob from. | ||
* @param multiBlobFieldsHash - The fields hash to use for the Blob. | ||
* @returns A Blob created from the array of fields. | ||
*/ | ||
static async fromFields(fields, multiBlobFieldsHash) { | ||
if (fields.length > FIELD_ELEMENTS_PER_BLOB) { | ||
throw new Error(`Attempted to overfill blob with ${fields.length} elements. The maximum is ${FIELD_ELEMENTS_PER_BLOB}`); | ||
} | ||
const data = Buffer.concat([ | ||
serializeToBuffer(fields) | ||
], BYTES_PER_BLOB); | ||
const data = Buffer.concat([serializeToBuffer(fields)], BYTES_PER_BLOB); | ||
// This matches the output of SpongeBlob.squeeze() in the blob circuit | ||
const fieldsHash = multiBlobFieldsHash ? multiBlobFieldsHash : await poseidon2Hash(fields); | ||
const commitment = Buffer.from(blobToKzgCommitment(data)); | ||
const challengeZ = await poseidon2Hash([ | ||
fieldsHash, | ||
...commitmentToFields(commitment) | ||
]); | ||
const challengeZ = await poseidon2Hash([fieldsHash, ...commitmentToFields(commitment)]); | ||
const res = computeKzgProof(data, challengeZ.toBuffer()); | ||
@@ -81,13 +87,14 @@ if (!verifyKzgProof(commitment, challengeZ.toBuffer(), res[1], res[0])) { | ||
/** | ||
* Create a Blob from a JSON object. | ||
* | ||
* Blobs will be in this form when requested from the blob sink, or from | ||
* the beacon chain via `getBlobSidecars` | ||
* https://ethereum.github.io/beacon-APIs/?urls.primaryName=dev#/Beacon/getBlobSidecars | ||
* | ||
* @dev WARNING: by default json deals with encoded buffers | ||
* | ||
* @param json - The JSON object to create the Blob from. | ||
* @returns A Blob created from the JSON object. | ||
*/ static async fromJson(json) { | ||
* Create a Blob from a JSON object. | ||
* | ||
* Blobs will be in this form when requested from the blob sink, or from | ||
* the beacon chain via `getBlobSidecars` | ||
* https://ethereum.github.io/beacon-APIs/?urls.primaryName=dev#/Beacon/getBlobSidecars | ||
* | ||
* @dev WARNING: by default json deals with encoded buffers | ||
* | ||
* @param json - The JSON object to create the Blob from. | ||
* @returns A Blob created from the JSON object. | ||
*/ | ||
static async fromJson(json) { | ||
const blobBuffer = Buffer.from(json.blob.slice(2), 'hex'); | ||
@@ -103,8 +110,9 @@ const blob = await Blob.fromEncodedBlobBuffer(blobBuffer); | ||
/** | ||
* Get the JSON representation of the blob. | ||
* | ||
* @dev WARNING: by default json deals with encoded buffers | ||
* @param index - optional - The index of the blob in the block. | ||
* @returns The JSON representation of the blob. | ||
*/ toJson(index) { | ||
* Get the JSON representation of the blob. | ||
* | ||
* @dev WARNING: by default json deals with encoded buffers | ||
* @param index - optional - The index of the blob in the block. | ||
* @returns The JSON representation of the blob. | ||
*/ | ||
toJson(index) { | ||
return { | ||
@@ -116,26 +124,29 @@ blob: `0x${Buffer.from(this.data).toString('hex')}`, | ||
// eslint-disable-next-line camelcase | ||
kzg_proof: `0x${this.proof.toString('hex')}` | ||
kzg_proof: `0x${this.proof.toString('hex')}`, | ||
}; | ||
} | ||
/** | ||
* Get the fields from the blob. | ||
* | ||
* @dev WARNING: this method does not take into account trailing zeros | ||
* | ||
* @returns The fields from the blob. | ||
*/ toFields() { | ||
* Get the fields from the blob. | ||
* | ||
* @dev WARNING: this method does not take into account trailing zeros | ||
* | ||
* @returns The fields from the blob. | ||
*/ | ||
toFields() { | ||
return extractBlobFieldsFromBuffer(this.data); | ||
} | ||
/** | ||
* Get the encoded fields from the blob. | ||
* | ||
* @dev This method takes into account trailing zeros | ||
* | ||
* @returns The encoded fields from the blob. | ||
* | ||
* @throws If unable to deserialize the blob. | ||
*/ toEncodedFields() { | ||
* Get the encoded fields from the blob. | ||
* | ||
* @dev This method takes into account trailing zeros | ||
* | ||
* @returns The encoded fields from the blob. | ||
* | ||
* @throws If unable to deserialize the blob. | ||
*/ | ||
toEncodedFields() { | ||
try { | ||
return deserializeEncodedBlobToFields(this.data); | ||
} catch (err) { | ||
} | ||
catch (err) { | ||
throw new BlobDeserializationError(`Failed to deserialize encoded blob fields, this blob was likely not created by us`); | ||
@@ -145,13 +156,14 @@ } | ||
/** | ||
* Get the commitment fields from the blob. | ||
* | ||
* The 48-byte commitment is encoded into two field elements: | ||
* +------------------+------------------+ | ||
* | Field Element 1 | Field Element 2 | | ||
* | [bytes 0-31] | [bytes 32-47] | | ||
* +------------------+------------------+ | ||
* | 32 bytes | 16 bytes | | ||
* +------------------+------------------+ | ||
* @returns The commitment fields from the blob. | ||
*/ commitmentToFields() { | ||
* Get the commitment fields from the blob. | ||
* | ||
* The 48-byte commitment is encoded into two field elements: | ||
* +------------------+------------------+ | ||
* | Field Element 1 | Field Element 2 | | ||
* | [bytes 0-31] | [bytes 32-47] | | ||
* +------------------+------------------+ | ||
* | 32 bytes | 16 bytes | | ||
* +------------------+------------------+ | ||
* @returns The commitment fields from the blob. | ||
*/ | ||
commitmentToFields() { | ||
return commitmentToFields(this.commitment); | ||
@@ -171,18 +183,20 @@ } | ||
/** | ||
* Get the buffer representation of the ENTIRE blob. | ||
* | ||
* @dev WARNING: this buffer contains all metadata aswell as the data itself | ||
* | ||
* @returns The buffer representation of the blob. | ||
*/ toBuffer() { | ||
* Get the buffer representation of the ENTIRE blob. | ||
* | ||
* @dev WARNING: this buffer contains all metadata aswell as the data itself | ||
* | ||
* @returns The buffer representation of the blob. | ||
*/ | ||
toBuffer() { | ||
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)); | ||
} | ||
/** | ||
* Create a Blob from a buffer. | ||
* | ||
* @dev WARNING: this method contains all metadata aswell as the data itself | ||
* | ||
* @param buf - The buffer to create the Blob from. | ||
* @returns A Blob created from the buffer. | ||
*/ static fromBuffer(buf) { | ||
* Create a Blob from a buffer. | ||
* | ||
* @dev WARNING: this method contains all metadata aswell as the data itself | ||
* | ||
* @param buf - The buffer to create the Blob from. | ||
* @returns A Blob created from the buffer. | ||
*/ | ||
static fromBuffer(buf) { | ||
const reader = BufferReader.asReader(buf); | ||
@@ -192,17 +206,19 @@ return new Blob(reader.readUint8Array(), reader.readObject(Fr), reader.readObject(Fr), reader.readBuffer(), reader.readBuffer(), reader.readBuffer()); | ||
/** | ||
* Get the size of the blob in bytes | ||
*/ getSize() { | ||
* Get the size of the blob in bytes | ||
*/ | ||
getSize() { | ||
return this.data.length; | ||
} | ||
/** | ||
* Returns a proof of opening of the blob to verify on L1 using the point evaluation precompile: | ||
* | ||
* input[:32] - versioned_hash | ||
* input[32:64] - z | ||
* input[64:96] - y | ||
* input[96:144] - commitment C | ||
* input[144:192] - proof (a commitment to the quotient polynomial q(X)) | ||
* | ||
* See https://eips.ethereum.org/EIPS/eip-4844#point-evaluation-precompile | ||
*/ getEthBlobEvaluationInputs() { | ||
* Returns a proof of opening of the blob to verify on L1 using the point evaluation precompile: | ||
* | ||
* input[:32] - versioned_hash | ||
* input[32:64] - z | ||
* input[64:96] - y | ||
* input[96:144] - commitment C | ||
* input[144:192] - proof (a commitment to the quotient polynomial q(X)) | ||
* | ||
* See https://eips.ethereum.org/EIPS/eip-4844#point-evaluation-precompile | ||
*/ | ||
getEthBlobEvaluationInputs() { | ||
const buf = Buffer.concat([ | ||
@@ -213,3 +229,3 @@ this.getEthVersionedBlobHash(), | ||
this.commitment, | ||
this.proof | ||
this.proof, | ||
]); | ||
@@ -220,3 +236,3 @@ return `0x${buf.toString('hex')}`; | ||
let buf = Buffer.alloc(0); | ||
blobs.forEach((blob)=>{ | ||
blobs.forEach(blob => { | ||
buf = Buffer.concat([ | ||
@@ -228,3 +244,3 @@ buf, | ||
blob.commitment, | ||
blob.proof | ||
blob.proof, | ||
]); | ||
@@ -235,6 +251,3 @@ }); | ||
lenBuf.writeUint8(blobs.length); | ||
buf = Buffer.concat([ | ||
lenBuf, | ||
buf | ||
]); | ||
buf = Buffer.concat([lenBuf, buf]); | ||
return `0x${buf.toString('hex')}`; | ||
@@ -245,3 +258,3 @@ } | ||
blobToKzgCommitment: cKzg.blobToKzgCommitment, | ||
computeBlobKzgProof: cKzg.computeBlobKzgProof | ||
computeBlobKzgProof: cKzg.computeBlobKzgProof, | ||
}; | ||
@@ -255,3 +268,3 @@ } | ||
const res = []; | ||
for(let i = 0; i < numBlobs; i++){ | ||
for (let i = 0; i < numBlobs; i++) { | ||
const end = fields.length < (i + 1) * FIELD_ELEMENTS_PER_BLOB ? fields.length : (i + 1) * FIELD_ELEMENTS_PER_BLOB; | ||
@@ -265,6 +278,4 @@ res.push(await Blob.fromFields(fields.slice(i * FIELD_ELEMENTS_PER_BLOB, end), multiBlobFieldsHash)); | ||
function commitmentToFields(commitment) { | ||
return [ | ||
new Fr(commitment.subarray(0, 31)), | ||
new Fr(commitment.subarray(31, 48)) | ||
]; | ||
return [new Fr(commitment.subarray(0, 31)), new Fr(commitment.subarray(31, 48))]; | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ibG9iLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlHQUFpRztBQUNqRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFOUUsT0FBTyxJQUFJLE1BQU0sT0FBTyxDQUFDO0FBR3pCLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHdkQsc0RBQXNEO0FBQ3RELE1BQU0sRUFBRSxjQUFjLEVBQUUsdUJBQXVCLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxHQUFHLElBQUksQ0FBQztBQUUvRyxzR0FBc0c7QUFDdEcsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxDQUFDO0FBRS9DOztHQUVHO0FBQ0gsTUFBTSxPQUFPLElBQUk7SUFDZjtJQUNFLG9EQUFvRDtJQUNwQyxJQUFnQjtJQUNoQyw2SUFBNkk7SUFDN0gsVUFBYztJQUM5QixzRkFBc0Y7SUFDdEUsVUFBYztJQUM5QixzSEFBc0g7SUFDdEcsV0FBbUI7SUFDbkMsa0ZBQWtGO0lBQ2xFLFVBQWtCO0lBQ2xDLGlJQUFpSTtJQUNqSCxLQUFhO1FBVmIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUVoQixlQUFVLEdBQVYsVUFBVSxDQUFJO1FBRWQsZUFBVSxHQUFWLFVBQVUsQ0FBSTtRQUVkLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBRW5CLGVBQVUsR0FBVixVQUFVLENBQVE7UUFFbEIsVUFBSyxHQUFMLEtBQUssQ0FBUTtJQUM1QixDQUFDO0lBRUo7Ozs7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 |
@@ -42,3 +42,4 @@ import { Fr } from '@aztec/foundation/fields'; | ||
* @returns An array of field elements. | ||
*/ export function deserializeEncodedBlobToFields(blob) { | ||
*/ | ||
export function deserializeEncodedBlobToFields(blob) { | ||
// Convert blob buffer to array of field elements | ||
@@ -49,3 +50,3 @@ const reader = BufferReader.asReader(blob); | ||
// Read fields until we hit zeros at the end | ||
while(!fieldReader.isFinished()){ | ||
while (!fieldReader.isFinished()) { | ||
const currentField = fieldReader.peekField(); | ||
@@ -70,3 +71,4 @@ // Stop when we hit a zero field | ||
* @throws If the first field does not include the correct prefix - encoding invalid. | ||
*/ export function getLengthFromFirstField(firstField) { | ||
*/ | ||
export function getLengthFromFirstField(firstField) { | ||
// Check that the first field includes the correct prefix | ||
@@ -82,12 +84,18 @@ if (!isValidFirstField(firstField)) { | ||
* Determines whether a field is the first field of a tx effect | ||
*/ export function isValidFirstField(field) { | ||
*/ | ||
export function isValidFirstField(field) { | ||
const buf = field.toBuffer(); | ||
if (!buf.subarray(0, field.size - TX_EFFECT_PREFIX_BYTE_LENGTH).equals(Buffer.alloc(field.size - TX_EFFECT_PREFIX_BYTE_LENGTH))) { | ||
if (!buf | ||
.subarray(0, field.size - TX_EFFECT_PREFIX_BYTE_LENGTH) | ||
.equals(Buffer.alloc(field.size - TX_EFFECT_PREFIX_BYTE_LENGTH))) { | ||
return false; | ||
} | ||
const sliced = buf.subarray(-TX_EFFECT_PREFIX_BYTE_LENGTH); | ||
if (// Checking we start with the correct prefix... | ||
!new Fr(sliced.subarray(0, TX_START_PREFIX_BYTES_LENGTH)).equals(new Fr(TX_START_PREFIX)) || // ...and include the revert code prefix.. | ||
sliced[sliced.length - 3] !== REVERT_CODE_PREFIX || // ...and the following revert code is valid. | ||
sliced[sliced.length - 1] > 4) { | ||
if ( | ||
// Checking we start with the correct prefix... | ||
!new Fr(sliced.subarray(0, TX_START_PREFIX_BYTES_LENGTH)).equals(new Fr(TX_START_PREFIX)) || | ||
// ...and include the revert code prefix.. | ||
sliced[sliced.length - 3] !== REVERT_CODE_PREFIX || | ||
// ...and the following revert code is valid. | ||
sliced[sliced.length - 1] > 4) { | ||
return false; | ||
@@ -108,3 +116,4 @@ } | ||
* Function reads until here ---------------------- | ||
*/ export function extractBlobFieldsFromBuffer(blob) { | ||
*/ | ||
export function extractBlobFieldsFromBuffer(blob) { | ||
const reader = BufferReader.asReader(blob); | ||
@@ -114,3 +123,3 @@ const array = reader.readArray(blob.length >> 5, Fr); | ||
let lastNonZeroIndex = array.length - 1; | ||
while(lastNonZeroIndex >= 0 && array[lastNonZeroIndex].isZero()){ | ||
while (lastNonZeroIndex >= 0 && array[lastNonZeroIndex].isZero()) { | ||
lastNonZeroIndex--; | ||
@@ -121,1 +130,2 @@ } | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2RpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZW5jb2RpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFJeEUsdUNBQXVDO0FBQ3ZDLGlEQUFpRDtBQUNqRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsb0JBQW9CLENBQUM7QUFDcEQsMkVBQTJFO0FBQzNFLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUNwRixxRkFBcUY7QUFDckYsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsNEJBQTRCLEdBQUcsQ0FBQyxDQUFDO0FBQzdFLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsQ0FBQztBQUVwQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCRztBQUNILE1BQU0sVUFBVSw4QkFBOEIsQ0FBQyxJQUFnQjtJQUM3RCxpREFBaUQ7SUFDakQsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0NBQWdDO0lBQ3RGLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFaEQsNENBQTRDO0lBQzVDLE9BQU8sQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztRQUNqQyxNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFN0MsZ0NBQWdDO1FB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 |
export class BlobDeserializationError extends Error { | ||
constructor(message){ | ||
constructor(message) { | ||
super(message); | ||
@@ -7,1 +7,2 @@ this.name = 'BlobDeserializationError'; | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsS0FBSztJQUNqRCxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRywwQkFBMEIsQ0FBQztJQUN6QyxDQUFDO0NBQ0YifQ== |
import cKzg from 'c-kzg'; | ||
/* eslint-disable import/no-named-as-default-member */ const { loadTrustedSetup } = cKzg; | ||
/* eslint-disable import/no-named-as-default-member */ | ||
const { loadTrustedSetup } = cKzg; | ||
export * from './blob.js'; | ||
@@ -10,10 +11,13 @@ export * from './mocks.js'; | ||
loadTrustedSetup(); | ||
} catch (error) { | ||
} | ||
catch (error) { | ||
if (error.message.includes('trusted setup is already loaded')) { | ||
// NB: The c-kzg lib has no way of checking whether the setup is loaded or not, | ||
// and it throws an error if it's already loaded, even though nothing is wrong. | ||
// This is a rudimentary way of ensuring we load the trusted setup if we need it. | ||
} else { | ||
// NB: The c-kzg lib has no way of checking whether the setup is loaded or not, | ||
// and it throws an error if it's already loaded, even though nothing is wrong. | ||
// This is a rudimentary way of ensuring we load the trusted setup if we need it. | ||
} | ||
else { | ||
throw new Error(error); | ||
} | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sT0FBTyxDQUFDO0FBRXpCLHNEQUFzRDtBQUN0RCxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFFbEMsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGFBQWEsQ0FBQztBQUU1QixJQUFJLENBQUM7SUFDSCxnQkFBZ0IsRUFBRSxDQUFDO0FBQ3JCLENBQUM7QUFBQyxPQUFPLEtBQVUsRUFBRSxDQUFDO0lBQ3BCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUNBQWlDLENBQUMsRUFBRSxDQUFDO1FBQzlELCtFQUErRTtRQUMvRSwrRUFBK0U7UUFDL0UsaUZBQWlGO0lBQ25GLENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0FBQ0gsQ0FBQyJ9 |
@@ -1,3 +0,2 @@ | ||
/** | ||
* The relevant parts of a response from https://ethereum.github.io/beacon-APIs/?urls.primaryName=dev#/Beacon/getBlobSidecars | ||
*/ export { }; | ||
export {}; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0= |
@@ -14,7 +14,5 @@ import { toBufferBE } from '@aztec/foundation/bigint-buffer'; | ||
Buffer.alloc(1), | ||
Buffer.from([ | ||
1 | ||
]), | ||
Buffer.from([1]), | ||
Buffer.alloc(1), | ||
Buffer.alloc(1) | ||
Buffer.alloc(1), | ||
])); | ||
@@ -28,9 +26,5 @@ } | ||
* @returns | ||
*/ export function makeEncodedBlob(length) { | ||
return Blob.fromFields([ | ||
encodeFirstField(length + 1), | ||
...Array.from({ | ||
length: length | ||
}, ()=>Fr.random()) | ||
]); | ||
*/ | ||
export function makeEncodedBlob(length) { | ||
return Blob.fromFields([encodeFirstField(length + 1), ...Array.from({ length: length }, () => Fr.random())]); | ||
} | ||
@@ -43,14 +37,9 @@ /** | ||
* @returns | ||
*/ export function makeUnencodedBlob(length) { | ||
return Blob.fromFields([ | ||
...Array.from({ | ||
length: length | ||
}, ()=>Fr.random()) | ||
]); | ||
*/ | ||
export function makeUnencodedBlob(length) { | ||
return Blob.fromFields([...Array.from({ length: length }, () => Fr.random())]); | ||
} | ||
export function makeEncodedBlobFields(fields) { | ||
return Blob.fromFields([ | ||
encodeFirstField(fields.length + 1), | ||
...fields | ||
]); | ||
return Blob.fromFields([encodeFirstField(fields.length + 1), ...fields]); | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbW9ja3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU5QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUUsNENBQTRDO0FBQzVDLFNBQVMsZ0JBQWdCLENBQUMsTUFBYztJQUN0QyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLFNBQVMsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25DLE9BQU8sSUFBSSxFQUFFLENBQ1gsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUNaLFVBQVUsQ0FBQyxlQUFlLEVBQUUsNEJBQTRCLENBQUM7UUFDekQsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDZixTQUFTO1FBQ1QsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDZixNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDZixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztLQUNoQixDQUFDLENBQ0gsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLE1BQWM7SUFDNUMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0csQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxNQUFjO0lBQzlDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakYsQ0FBQztBQUVELE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxNQUFZO0lBQ2hELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzNFLENBQUMifQ== |
{ | ||
"name": "@aztec/blob-lib", | ||
"version": "0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2", | ||
"version": "0.76.1", | ||
"type": "module", | ||
@@ -23,3 +23,3 @@ "exports": { | ||
"start": "node ./dest/index.js", | ||
"test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests --maxWorkers=${JEST_MAX_WORKERS:-8}" | ||
"test": "HARDWARE_CONCURRENCY=${HARDWARE_CONCURRENCY:-16} RAYON_NUM_THREADS=${RAYON_NUM_THREADS:-4} NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests --maxWorkers=${JEST_MAX_WORKERS:-8}" | ||
}, | ||
@@ -30,3 +30,3 @@ "inherits": [ | ||
"dependencies": { | ||
"@aztec/foundation": "0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2", | ||
"@aztec/foundation": "0.76.1", | ||
"c-kzg": "4.0.0-alpha.1", | ||
@@ -33,0 +33,0 @@ "tslib": "^2.4.0" |
69361
25
1198
+ Added@aztec/bb.js@0.76.1(transitive)
+ Added@aztec/foundation@0.76.1(transitive)
+ Addedcomlink@4.4.2(transitive)
+ Addedcommander@12.1.0(transitive)
+ Addedfflate@0.8.2(transitive)
- Removed@aztec/foundation@0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2(transitive)
Updated@aztec/foundation@0.76.1