🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

@ethereumjs/util

Package Overview
Dependencies
Maintainers
4
Versions
26
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@ethereumjs/util - npm Package Compare versions

Comparing version
10.0.0
to
10.1.0
+2
-2
dist/cjs/account.d.ts

@@ -19,3 +19,3 @@ import type { BigIntLike, BytesLike, PrefixedHexString } from './types.ts';

* Account class to load and maintain the basic account objects.
* Supports partial loading and access required for verkle with null
* Supports partial loading and access required for stateless with null
* as the placeholder.

@@ -159,3 +159,3 @@ *

export declare function accountBodyFromSlim(body: AccountBodyBytes): Uint8Array<ArrayBufferLike>[];
export declare function accountBodyToSlim(body: AccountBodyBytes): Uint8Array<ArrayBuffer>[];
export declare function accountBodyToSlim(body: AccountBodyBytes): Uint8Array<ArrayBufferLike>[];
/**

@@ -162,0 +162,0 @@ * Converts a slim account (per snap protocol spec) to the RLP encoded version of the account

@@ -1,1 +0,1 @@

{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../src/account.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../src/account.ts"],"names":[],"mappings":"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"}

@@ -48,3 +48,3 @@ "use strict";

* Account class to load and maintain the basic account objects.
* Supports partial loading and access required for verkle with null
* Supports partial loading and access required for stateless with null
* as the placeholder.

@@ -51,0 +51,0 @@ *

@@ -22,3 +22,3 @@ import { secp256k1 } from 'ethereum-cryptography/secp256k1.js';

*/
export declare function eoaCode7702AuthorizationMessageToSign(input: EOACode7702AuthorizationListItemUnsigned | EOACode7702AuthorizationListBytesItemUnsigned): Uint8Array<ArrayBufferLike>;
export declare function eoaCode7702AuthorizationMessageToSign(input: EOACode7702AuthorizationListItemUnsigned | EOACode7702AuthorizationListBytesItemUnsigned): Uint8Array<ArrayBuffer>;
/**

@@ -25,0 +25,0 @@ * Hashes the RLP-encoded message to sign

@@ -1,1 +0,1 @@

{"version":3,"file":"authorization.d.ts","sourceRoot":"","sources":["../../src/authorization.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAA;AAE9D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAWtC,OAAO,KAAK,EACV,qCAAqC,EACrC,6CAA6C,EAC7C,gCAAgC,EAChC,wCAAwC,EACzC,MAAM,YAAY,CAAA;AAEnB,eAAO,MAAM,qCAAqC,6BAAqB,CAAA;AAEvE;;;;GAIG;AACH,wBAAgB,2CAA2C,CACzD,iBAAiB,EAAE,qCAAqC,GACvD,gCAAgC,CAUlC;AAED;;;;GAIG;AACH,wBAAgB,2CAA2C,CACzD,iBAAiB,EAAE,gCAAgC,GAClD,qCAAqC,CAoBvC;AAWD;;;;GAIG;AACH,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,wCAAwC,GAAG,6CAA6C,+BAgBhG;AAED;;;;GAIG;AACH,wBAAgB,2CAA2C,CACzD,KAAK,EAAE,wCAAwC,GAAG,6CAA6C,+BAGhG;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,wCAAwC,GAAG,6CAA6C,EAC/F,UAAU,EAAE,UAAU,EACtB,MAAM,CAAC,EAAE,CACP,GAAG,EAAE,UAAU,EACf,EAAE,EAAE,UAAU,EACd,UAAU,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,UAAU,GAAG,OAAO,CAAA;CAAE,KACjD,IAAI,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,GAAG,GAAG,GAAG,CAAC,GACnE,qCAAqC,CAgBvC;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,gCAAgC,GAAG,qCAAqC,GAC9E,OAAO,CAQT"}
{"version":3,"file":"authorization.d.ts","sourceRoot":"","sources":["../../src/authorization.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAA;AAE9D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAWtC,OAAO,KAAK,EACV,qCAAqC,EACrC,6CAA6C,EAC7C,gCAAgC,EAChC,wCAAwC,EACzC,MAAM,YAAY,CAAA;AAEnB,eAAO,MAAM,qCAAqC,6BAAqB,CAAA;AAEvE;;;;GAIG;AACH,wBAAgB,2CAA2C,CACzD,iBAAiB,EAAE,qCAAqC,GACvD,gCAAgC,CAUlC;AAED;;;;GAIG;AACH,wBAAgB,2CAA2C,CACzD,iBAAiB,EAAE,gCAAgC,GAClD,qCAAqC,CAoBvC;AAWD;;;;GAIG;AACH,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,wCAAwC,GAAG,6CAA6C,2BAgBhG;AAED;;;;GAIG;AACH,wBAAgB,2CAA2C,CACzD,KAAK,EAAE,wCAAwC,GAAG,6CAA6C,+BAGhG;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,wCAAwC,GAAG,6CAA6C,EAC/F,UAAU,EAAE,UAAU,EACtB,MAAM,CAAC,EAAE,CACP,GAAG,EAAE,UAAU,EACf,EAAE,EAAE,UAAU,EACd,UAAU,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,UAAU,GAAG,OAAO,CAAA;CAAE,KACjD,IAAI,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,GAAG,GAAG,GAAG,CAAC,GACnE,qCAAqC,CAgBvC;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,gCAAgC,GAAG,qCAAqC,GAC9E,OAAO,CAQT"}

@@ -75,3 +75,3 @@ import type { Account } from './account.ts';

*/
export declare const getBinaryTreeKey: (stem: Uint8Array, leaf: BinaryTreeLeafType | Uint8Array) => Uint8Array<ArrayBufferLike>;
export declare const getBinaryTreeKey: (stem: Uint8Array, leaf: BinaryTreeLeafType | Uint8Array) => Uint8Array<ArrayBuffer>;
/**

@@ -104,3 +104,3 @@ * Calculates the position of the storage key in the BinaryTree tree, determining

*/
export declare const getBinaryTreeKeyForCodeChunk: (address: Address, chunkId: number, hashFunction: (input: Uint8Array) => Uint8Array) => Uint8Array<ArrayBufferLike>;
export declare const getBinaryTreeKeyForCodeChunk: (address: Address, chunkId: number, hashFunction: (input: Uint8Array) => Uint8Array) => Uint8Array<ArrayBuffer>;
export declare const chunkifyBinaryTreeCode: (code: Uint8Array) => Uint8Array<ArrayBufferLike>[];

@@ -114,3 +114,3 @@ /**

*/
export declare const getBinaryTreeKeyForStorageSlot: (address: Address, storageKey: bigint, hashFunction: (input: Uint8Array) => Uint8Array) => Uint8Array<ArrayBufferLike>;
export declare const getBinaryTreeKeyForStorageSlot: (address: Address, storageKey: bigint, hashFunction: (input: Uint8Array) => Uint8Array) => Uint8Array<ArrayBuffer>;
/**

@@ -117,0 +117,0 @@ * This function extracts and decodes account header elements (version, nonce, code size, and balance)

@@ -1,1 +0,1 @@

{"version":3,"file":"binaryTree.d.ts","sourceRoot":"","sources":["../../src/binaryTree.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"binaryTree.d.ts","sourceRoot":"","sources":["../../src/binaryTree.ts"],"names":[],"mappings":"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"}
import type { KZG } from './kzg.ts';
import type { PrefixedHexString } from './types.ts';
export declare const getBlobs: (input: string) => `0x${string}`[];
export declare const CELLS_PER_EXT_BLOB = 128;
/**
* EIP-4844: Converts UTF-8 string(s) into EIP-4844 blob format.
*
* Each input string is converted to UTF-8 bytes, padded with 0x80 followed by zeros
* to align with blob boundaries, and encoded as one or more blobs depending on size.
* Multiple inputs are processed sequentially, with each input contributing its own blob(s).
*
* @param input Single UTF-8 string or array of UTF-8 strings to encode
* @throws Error with message 'invalid blob data' if any input string is empty
* @throws Error with message 'blob data is too large' if any single input exceeds MAX_USEFUL_BYTES_PER_TX
* @returns Array of hex-prefixed blob strings (0x...), one blob per 131,071 useful bytes per input
*/
export declare const getBlobs: (input: string | string[]) => `0x${string}`[];
/**
* EIP-4844: Computes KZG commitments for a set of blobs.
* @param kzg KZG implementation used to compute commitments
* @param blobs Array of blob data as hex-prefixed strings
* @returns Array of lowercase hex-prefixed KZG commitments (one per blob)
*/
export declare const blobsToCommitments: (kzg: KZG, blobs: PrefixedHexString[]) => `0x${string}`[];
/**
* EIP-4844: Computes KZG proofs for each blob/commitment pair.
* @param kzg KZG implementation used to compute proofs
* @param blobs Array of blob data as hex-prefixed strings
* @param commitments Array of corresponding blob commitments
* @returns Array of lowercase hex-prefixed proofs (aligned with input order)
*/
export declare const blobsToProofs: (kzg: KZG, blobs: PrefixedHexString[], commitments: PrefixedHexString[]) => `0x${string}`[];
/**
* Converts a vector commitment for a given data blob to its versioned hash. For 4844, this version
* EIP-4844: Converts a vector commitment for a given data blob to its versioned hash. For 4844, this version
* number will be 0x01 for KZG vector commitments but could be different if future vector commitment

@@ -16,3 +42,3 @@ * types are introduced

/**
* Generate an array of versioned hashes from corresponding kzg commitments
* EIP-4844: Generate an array of versioned hashes from corresponding kzg commitments
* @param commitments array of kzg commitments

@@ -23,2 +49,23 @@ * @returns array of versioned hashes

export declare const commitmentsToVersionedHashes: (commitments: PrefixedHexString[]) => `0x${string}`[];
/**
* EIP-7594: Expands blobs into their extended cells using the provided KZG implementation.
* @param kzg KZG implementation capable of computing cells
* @param blobs Array of blob data as hex-prefixed strings
* @returns Tuple of [cells, indices], where cells are hex strings and indices are 0..127
*/
export declare const blobsToCells: (kzg: KZG, blobs: PrefixedHexString[]) => [PrefixedHexString[], number[]];
/**
* EIP-7594: Computes extended cells and corresponding proofs for the given blobs.
* @param kzg KZG implementation capable of computing cells and proofs
* @param blobs Array of blob data as hex-prefixed strings
* @returns Tuple of [cells, proofs, indices]; indices are 0..127
*/
export declare const blobsToCellsAndProofs: (kzg: KZG, blobs: PrefixedHexString[]) => [PrefixedHexString[], PrefixedHexString[], number[]];
/**
* EIP-7594: Computes cell proofs for the given blobs.
* @param kzg KZG implementation capable of computing cell proofs
* @param blobs Array of blob data as hex-prefixed strings
* @returns Array of lowercase hex-prefixed cell proofs (aligned with input order)
*/
export declare const blobsToCellProofs: (kzg: KZG, blobs: PrefixedHexString[]) => PrefixedHexString[];
//# sourceMappingURL=blobs.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"blobs.d.ts","sourceRoot":"","sources":["../../src/blobs.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AACnC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AA8BnD,eAAO,MAAM,QAAQ,GAAI,OAAO,MAAM,oBAsBrC,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,KAAK,GAAG,EAAE,OAAO,iBAAiB,EAAE,oBAMtE,CAAA;AAED,eAAO,MAAM,aAAa,GACxB,KAAK,GAAG,EACR,OAAO,iBAAiB,EAAE,EAC1B,aAAa,iBAAiB,EAAE,oBAOjC,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,GAC/B,YAAY,iBAAiB,EAC7B,uBAAuB,MAAM,kBAM9B,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,GAAI,aAAa,iBAAiB,EAAE,oBAM5E,CAAA"}
{"version":3,"file":"blobs.d.ts","sourceRoot":"","sources":["../../src/blobs.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AACnC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAYnD,eAAO,MAAM,kBAAkB,MAAM,CAAA;AAgCrC;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,QAAQ,GAAI,OAAO,MAAM,GAAG,MAAM,EAAE,oBA0BhD,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAI,KAAK,GAAG,EAAE,OAAO,iBAAiB,EAAE,oBAMtE,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GACxB,KAAK,GAAG,EACR,OAAO,iBAAiB,EAAE,EAC1B,aAAa,iBAAiB,EAAE,oBAOjC,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,GAC/B,YAAY,iBAAiB,EAC7B,uBAAuB,MAAM,kBAM9B,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,GAAI,aAAa,iBAAiB,EAAE,oBAM5E,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GACvB,KAAK,GAAG,EACR,OAAO,iBAAiB,EAAE,KACzB,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,CAOhC,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAChC,KAAK,GAAG,EACR,OAAO,iBAAiB,EAAE,KACzB,CAAC,iBAAiB,EAAE,EAAE,iBAAiB,EAAE,EAAE,MAAM,EAAE,CAiBrD,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAI,KAAK,GAAG,EAAE,OAAO,iBAAiB,EAAE,KAAG,iBAAiB,EAEzF,CAAA"}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.commitmentsToVersionedHashes = exports.computeVersionedHash = exports.blobsToProofs = exports.blobsToCommitments = exports.getBlobs = void 0;
exports.blobsToCellProofs = exports.blobsToCellsAndProofs = exports.blobsToCells = exports.commitmentsToVersionedHashes = exports.computeVersionedHash = exports.blobsToProofs = exports.blobsToCommitments = exports.getBlobs = exports.CELLS_PER_EXT_BLOB = void 0;
const sha256_js_1 = require("ethereum-cryptography/sha256.js");

@@ -9,10 +9,16 @@ const bytes_ts_1 = require("./bytes.js");

*/
const BYTES_PER_FIELD_ELEMENT = 32;
const FIELD_ELEMENTS_PER_BLOB = 4096;
const USEFUL_BYTES_PER_BLOB = 32 * FIELD_ELEMENTS_PER_BLOB;
const MAX_BLOBS_PER_TX = 2;
const MAX_USEFUL_BYTES_PER_TX = USEFUL_BYTES_PER_BLOB * MAX_BLOBS_PER_TX - 1;
const BYTES_PER_FIELD_ELEMENT = 32; // EIP-4844
const FIELD_ELEMENTS_PER_BLOB = 4096; // EIP-4844
const BLOB_SIZE = BYTES_PER_FIELD_ELEMENT * FIELD_ELEMENTS_PER_BLOB;
function get_padded(data, blobs_len) {
const pData = new Uint8Array(blobs_len * USEFUL_BYTES_PER_BLOB);
const MAX_BLOBS_PER_TX = 6; // EIP-7691: Blob throughput increase, Pectra HF
const MAX_BLOB_BYTES_PER_TX = BLOB_SIZE * MAX_BLOBS_PER_TX - 1;
exports.CELLS_PER_EXT_BLOB = 128; // EIP-4844, Consensus Spec, 2 * FIELD_ELEMENTS_PER_BLOB // 64 (FIELD_ELEMENTS_PER_CELL)
/**
* Pads input data to blob boundaries with 0x80 marker and zeros.
* @param data Input data to pad
* @param blobs_len Number of blobs the data should span
* @returns Padded data aligned to blob boundaries
*/
function getPadded(data, blobs_len) {
const pData = new Uint8Array(blobs_len * BLOB_SIZE);
pData.set(data);

@@ -22,3 +28,9 @@ pData[data.byteLength] = 0x80;

}
function get_blob(data) {
/**
* Converts arbitrary byte data into EIP-4844 blob format.
* Splits data into 4096 field elements of 32 bytes each, with proper alignment.
* @param data Input data (must be exactly BLOB_SIZE bytes)
* @returns Hex-prefixed blob string
*/
function getBlob(data) {
const blob = new Uint8Array(BLOB_SIZE);

@@ -32,18 +44,33 @@ for (let i = 0; i < FIELD_ELEMENTS_PER_BLOB; i++) {

}
/**
* EIP-4844: Converts UTF-8 string(s) into EIP-4844 blob format.
*
* Each input string is converted to UTF-8 bytes, padded with 0x80 followed by zeros
* to align with blob boundaries, and encoded as one or more blobs depending on size.
* Multiple inputs are processed sequentially, with each input contributing its own blob(s).
*
* @param input Single UTF-8 string or array of UTF-8 strings to encode
* @throws Error with message 'invalid blob data' if any input string is empty
* @throws Error with message 'blob data is too large' if any single input exceeds MAX_USEFUL_BYTES_PER_TX
* @returns Array of hex-prefixed blob strings (0x...), one blob per 131,071 useful bytes per input
*/
const getBlobs = (input) => {
const data = (0, bytes_ts_1.utf8ToBytes)(input);
const len = data.byteLength;
if (len === 0) {
throw Error('invalid blob data');
}
if (len > MAX_USEFUL_BYTES_PER_TX) {
throw Error('blob data is too large');
}
const blobs_len = Math.ceil(len / USEFUL_BYTES_PER_BLOB);
const pData = get_padded(data, blobs_len);
const inputArray = Array.isArray(input) ? input : [input];
const blobs = [];
for (let i = 0; i < blobs_len; i++) {
const chunk = pData.subarray(i * USEFUL_BYTES_PER_BLOB, (i + 1) * USEFUL_BYTES_PER_BLOB);
const blob = get_blob(chunk);
blobs.push(blob);
for (const input of inputArray) {
const data = (0, bytes_ts_1.utf8ToBytes)(input);
const len = data.byteLength;
if (len === 0) {
throw Error('invalid blob data (0 bytes)');
}
if (len > MAX_BLOB_BYTES_PER_TX) {
throw Error(`blob data is too large (${len} bytes > ${MAX_BLOB_BYTES_PER_TX} bytes)`);
}
const blobs_len = Math.ceil(len / BLOB_SIZE);
const pData = getPadded(data, blobs_len);
for (let i = 0; i < blobs_len; i++) {
const chunk = pData.subarray(i * BLOB_SIZE, (i + 1) * BLOB_SIZE);
const blob = getBlob(chunk);
blobs.push(blob);
}
}

@@ -53,2 +80,8 @@ return blobs;

exports.getBlobs = getBlobs;
/**
* EIP-4844: Computes KZG commitments for a set of blobs.
* @param kzg KZG implementation used to compute commitments
* @param blobs Array of blob data as hex-prefixed strings
* @returns Array of lowercase hex-prefixed KZG commitments (one per blob)
*/
const blobsToCommitments = (kzg, blobs) => {

@@ -62,2 +95,9 @@ const commitments = [];

exports.blobsToCommitments = blobsToCommitments;
/**
* EIP-4844: Computes KZG proofs for each blob/commitment pair.
* @param kzg KZG implementation used to compute proofs
* @param blobs Array of blob data as hex-prefixed strings
* @param commitments Array of corresponding blob commitments
* @returns Array of lowercase hex-prefixed proofs (aligned with input order)
*/
const blobsToProofs = (kzg, blobs, commitments) => {

@@ -69,3 +109,3 @@ const proofs = blobs.map((blob, ctx) => kzg.computeBlobProof(blob, commitments[ctx]).toLowerCase());

/**
* Converts a vector commitment for a given data blob to its versioned hash. For 4844, this version
* EIP-4844: Converts a vector commitment for a given data blob to its versioned hash. For 4844, this version
* number will be 0x01 for KZG vector commitments but could be different if future vector commitment

@@ -85,3 +125,3 @@ * types are introduced

/**
* Generate an array of versioned hashes from corresponding kzg commitments
* EIP-4844: Generate an array of versioned hashes from corresponding kzg commitments
* @param commitments array of kzg commitments

@@ -99,2 +139,44 @@ * @returns array of versioned hashes

exports.commitmentsToVersionedHashes = commitmentsToVersionedHashes;
/**
* EIP-7594: Expands blobs into their extended cells using the provided KZG implementation.
* @param kzg KZG implementation capable of computing cells
* @param blobs Array of blob data as hex-prefixed strings
* @returns Tuple of [cells, indices], where cells are hex strings and indices are 0..127
*/
const blobsToCells = (kzg, blobs) => {
const cells = blobs.reduce((acc, elem) => {
return [...acc, ...kzg.computeCells(elem)];
}, []);
const indices = Array.from({ length: exports.CELLS_PER_EXT_BLOB }, (_, i) => i);
return [cells, indices];
};
exports.blobsToCells = blobsToCells;
/**
* EIP-7594: Computes extended cells and corresponding proofs for the given blobs.
* @param kzg KZG implementation capable of computing cells and proofs
* @param blobs Array of blob data as hex-prefixed strings
* @returns Tuple of [cells, proofs, indices]; indices are 0..127
*/
const blobsToCellsAndProofs = (kzg, blobs) => {
const blobsAndCells = blobs.reduce(([cellsAcc, proofsAcc], elem) => {
const blobCellsAndProofs = kzg.computeCellsAndProofs(elem);
return [
[...cellsAcc, ...blobCellsAndProofs[0]],
[...proofsAcc, ...blobCellsAndProofs[1]],
];
}, [[], []]);
const indices = Array.from({ length: exports.CELLS_PER_EXT_BLOB }, (_, i) => i);
return [...blobsAndCells, indices];
};
exports.blobsToCellsAndProofs = blobsToCellsAndProofs;
/**
* EIP-7594: Computes cell proofs for the given blobs.
* @param kzg KZG implementation capable of computing cell proofs
* @param blobs Array of blob data as hex-prefixed strings
* @returns Array of lowercase hex-prefixed cell proofs (aligned with input order)
*/
const blobsToCellProofs = (kzg, blobs) => {
return (0, exports.blobsToCellsAndProofs)(kzg, blobs)[1];
};
exports.blobsToCellProofs = blobsToCellProofs;
//# sourceMappingURL=blobs.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"blobs.js","sourceRoot":"","sources":["../../src/blobs.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"blobs.js","sourceRoot":"","sources":["../../src/blobs.ts"],"names":[],"mappings":"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"}

@@ -199,3 +199,3 @@ import { bytesToHex as _bytesToUnprefixedHex } from 'ethereum-cryptography/utils.js';

*/
export declare const concatBytes: (...arrays: Uint8Array[]) => Uint8Array;
export declare const concatBytes: (...arrays: Uint8Array[]) => Uint8Array<ArrayBuffer>;
/**

@@ -202,0 +202,0 @@ * @notice Convert a Uint8Array to a 32-bit integer

@@ -1,1 +0,1 @@

{"version":3,"file":"bytes.d.ts","sourceRoot":"","sources":["../../src/bytes.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"bytes.d.ts","sourceRoot":"","sources":["../../src/bytes.ts"],"names":[],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"bytes.js","sourceRoot":"","sources":["../../src/bytes.ts"],"names":[],"mappings":";;;AAgcA,oCAMC;AAQD,0CAMC;AAQD,oCAKC;AAQD,0CAKC;AAID,kCAEC;AAQD,kCAUC;AAQD,kCAWC;AAQD,kDAaC;AAQD,gDAWC;AAWD,gCAUC;AAtlBD,+DAAoE;AAEpE,6DAGuC;AAEvC,2CAAwD;AACxD,6CAA8E;AAC9E,+CAAsE;AAItE,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;AAE1B;;GAEG;AACU,QAAA,oBAAoB,GAAG,qBAAqB,CAAA;AAEzD;;;;;GAKG;AACI,MAAM,UAAU,GAAG,CAAC,GAAsB,EAAc,EAAE;IAC/D,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,MAAM,IAAA,sCAA0B,EAAC,kCAAkC,CAAC,CAAA;IAC/F,OAAO,IAAA,qBAAQ,EAAC,IAAA,uBAAS,EAAC,IAAA,4BAAc,EAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AACjD,CAAC,CAAA;AAHY,QAAA,UAAU,cAGtB;AAEM,MAAM,oBAAoB,GAAG,CAAC,GAAW,EAAc,EAAE;IAC9D,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,MAAM,IAAA,sCAA0B,EAAC,oCAAoC,CAAC,CAAA;IAChG,OAAO,IAAA,qBAAQ,EAAC,IAAA,uBAAS,EAAC,GAAG,CAAC,CAAC,CAAA;AACjC,CAAC,CAAA;AAHY,QAAA,oBAAoB,wBAGhC;AAED;;;;;GAKG;AACI,MAAM,UAAU,GAAG,CAAC,KAAiB,EAAqB,EAAE;IACjE,MAAM,aAAa,GAAG,IAAA,4BAAoB,EAAC,KAAK,CAAC,CAAA;IACjD,OAAO,KAAK,aAAa,EAAE,CAAA;AAC7B,CAAC,CAAA;AAHY,QAAA,UAAU,cAGtB;AAED,8DAA8D;AAC9D,MAAM,YAAY,GAAa,EAAE,CAAA;AACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACxC,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;AAC7B,CAAC;AAED;;;;GAIG;AACI,MAAM,aAAa,GAAG,CAAC,KAAiB,EAAE,YAAY,GAAG,KAAK,EAAU,EAAE;IAC/E,IAAI,YAAY,EAAE,CAAC;QACjB,KAAK,CAAC,OAAO,EAAE,CAAA;IACjB,CAAC;IACD,MAAM,GAAG,GAAG,IAAA,kBAAU,EAAC,KAAK,CAAC,CAAA;IAC7B,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,OAAO,QAAQ,CAAA;IACjB,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,8EAA8E;QAC9E,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/B,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAChD,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAA;AACpB,CAAC,CAAA;AAhBY,QAAA,aAAa,iBAgBzB;AAED;;;;;GAKG;AACI,MAAM,UAAU,GAAG,CAAC,KAAiB,EAAU,EAAE;IACtD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAA,qBAAa,EAAC,KAAK,CAAC,CAAC,CAAA;IACxC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC;QAAE,MAAM,IAAA,sCAA0B,EAAC,wBAAwB,CAAC,CAAA;IAC1F,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAJY,QAAA,UAAU,cAItB;AAED,4CAA4C;AAE5C;;;;GAIG;AACI,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAqB,EAAE;IACvD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACtC,MAAM,IAAA,sCAA0B,EAAC,qCAAqC,CAAC,EAAE,CAAC,CAAA;IAC5E,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAA;AAC9B,CAAC,CAAA;AALY,QAAA,QAAQ,YAKpB;AAED;;;;GAIG;AACI,MAAM,UAAU,GAAG,CAAC,CAAS,EAAc,EAAE;IAClD,MAAM,GAAG,GAAG,IAAA,gBAAQ,EAAC,CAAC,CAAC,CAAA;IACvB,OAAO,IAAA,kBAAU,EAAC,GAAG,CAAC,CAAA;AACxB,CAAC,CAAA;AAHY,QAAA,UAAU,cAGtB;AAED;;;;GAIG;AACI,MAAM,aAAa,GAAG,CAAC,GAAW,EAAE,YAAY,GAAG,KAAK,EAAc,EAAE;IAC7E,MAAM,KAAK,GAAG,IAAA,kBAAU,EAAC,KAAK,IAAA,uBAAS,EAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;IAE5D,OAAO,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAA;AAC/C,CAAC,CAAA;AAJY,QAAA,aAAa,iBAIzB;AAED;;;;;;;GAOG;AACH,MAAM,SAAS,GAAG,CAAC,GAAe,EAAE,MAAc,EAAE,KAAc,EAAc,EAAE;IAChF,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;YACxB,OAAO,IAAI,UAAU,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACzE,CAAC;QACD,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;IAChC,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;YACxB,OAAO,IAAI,UAAU,CAAC,CAAC,GAAG,IAAI,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAA;QACzE,CAAC;QACD,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAA;IAC9B,CAAC;AACH,CAAC,CAAA;AAED;;;;;;GAMG;AACI,MAAM,aAAa,GAAG,CAAC,GAAe,EAAE,MAAc,EAAc,EAAE;IAC3E,IAAA,0BAAa,EAAC,GAAG,CAAC,CAAA;IAClB,OAAO,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;AACtC,CAAC,CAAA;AAHY,QAAA,aAAa,iBAGzB;AAED;;;;;;GAMG;AACI,MAAM,cAAc,GAAG,CAAC,GAAe,EAAE,MAAc,EAAc,EAAE;IAC5E,IAAA,0BAAa,EAAC,GAAG,CAAC,CAAA;IAClB,OAAO,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;AACrC,CAAC,CAAA;AAHY,QAAA,cAAc,kBAG1B;AAED;;;;GAIG;AACH,MAAM,UAAU,GAAG,CACjB,CAAI,EACD,EAAE;IACL,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAChB,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,KAAK,GAAG,EAAE,CAAC;QAChD,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAM,CAAA;QACnB,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACd,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC,CAAA;AAED;;;;GAIG;AACI,MAAM,UAAU,GAAG,CAAC,CAAa,EAAc,EAAE;IACtD,IAAA,0BAAa,EAAC,CAAC,CAAC,CAAA;IAChB,OAAO,UAAU,CAAC,CAAC,CAAC,CAAA;AACtB,CAAC,CAAA;AAHY,QAAA,UAAU,cAGtB;AAED;;;;GAIG;AACI,MAAM,UAAU,GAAG,CAAC,CAAW,EAAY,EAAE;IAClD,IAAA,0BAAa,EAAC,CAAC,CAAC,CAAA;IAChB,OAAO,UAAU,CAAC,CAAC,CAAC,CAAA;AACtB,CAAC,CAAA;AAHY,QAAA,UAAU,cAGtB;AAED;;;;GAIG;AACI,MAAM,QAAQ,GAAG,CAAC,CAAoB,EAAqB,EAAE;IAClE,IAAA,8BAAiB,EAAC,CAAC,CAAC,CAAA;IACpB,OAAO,KAAK,UAAU,CAAC,IAAA,4BAAc,EAAC,CAAC,CAAC,CAAC,EAAE,CAAA;AAC7C,CAAC,CAAA;AAHY,QAAA,QAAQ,YAGpB;AAYD;;;;;;GAMG;AAEI,MAAM,OAAO,GAAG,CAAC,CAAoB,EAAc,EAAE;IAC1D,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,IAAI,UAAU,EAAE,CAAA;IACzB,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,UAAU,EAAE,CAAC;QAChD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC3B,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAA,yBAAW,EAAC,CAAC,CAAC,EAAE,CAAC;YACpB,MAAM,IAAA,sCAA0B,EAC9B,iHAAiH,CAAC,EAAE,CACrH,CAAA;QACH,CAAC;QACD,OAAO,IAAA,kBAAU,EAAC,CAAC,CAAC,CAAA;IACtB,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,IAAA,kBAAU,EAAC,CAAC,CAAC,CAAA;IACtB,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC;YACjB,MAAM,IAAA,sCAA0B,EAAC,wDAAwD,CAAC,EAAE,CAAC,CAAA;QAC/F,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QACtB,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,CAAC,GAAG,GAAG,GAAG,CAAC,CAAA;QAC7B,OAAO,IAAA,4BAAoB,EAAC,CAAC,CAAC,CAAA;IAChC,CAAC;IAED,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC5B,2DAA2D;QAC3D,OAAO,CAAC,CAAC,OAAO,EAAE,CAAA;IACpB,CAAC;IAED,MAAM,IAAA,sCAA0B,EAAC,cAAc,CAAC,CAAA;AAClD,CAAC,CAAA;AArCY,QAAA,OAAO,WAqCnB;AAED;;;;GAIG;AACI,MAAM,UAAU,GAAG,CAAC,GAAe,EAAU,EAAE;IACpD,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAA,qBAAa,EAAC,GAAG,CAAC,CAAC,CAAA;AAC/C,CAAC,CAAA;AAFY,QAAA,UAAU,cAEtB;AAED;;;;GAIG;AACI,MAAM,UAAU,GAAG,CAAC,GAAW,EAAc,EAAE;IACpD,OAAO,IAAA,qBAAa,EAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;AAChD,CAAC,CAAA;AAFY,QAAA,UAAU,cAEtB;AAED;;;;GAIG;AACI,MAAM,YAAY,GAAG,CAAC,GAAW,EAAqB,EAAE;IAC7D,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,OAAO,IAAA,yBAAW,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAA;AAC5C,CAAC,CAAA;AANY,QAAA,YAAY,gBAMxB;AAED;;;;;;;;;;GAUG;AACI,MAAM,KAAK,GAAG,CAAC,KAA0B,EAAE,YAAoB,EAAE,EAAU,EAAE;IAClF,MAAM,OAAO,GAAG,KAAK,YAAY,UAAU,CAAC,CAAC,CAAC,IAAA,kBAAU,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IACvE,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACpE,IAAI,OAAO,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;QAC1B,OAAO,OAAO,CAAA;IAChB,CAAC;IACD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAA;AACpC,CAAC,CAAA;AAPY,QAAA,KAAK,SAOjB;AAED;;;;;;;;;;;;GAYG;AACI,MAAM,uBAAuB,GAAG,CAAC,MAAiD,EAAE,EAAE;IAC3F,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YAClD,MAAM,IAAA,sCAA0B,EAC9B,GAAG,CAAC,0CAA0C,IAAA,kBAAU,EAAC,CAAC,CAAC,EAAE,CAC9D,CAAA;QACH,CAAC;IACH,CAAC;AACH,CAAC,CAAA;AARY,QAAA,uBAAuB,2BAQnC;AAED;;;;GAIG;AACI,MAAM,WAAW,GAAG,CAAC,GAAW,EAAqB,EAAE;IAC5D,OAAO,KAAK,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAA;AAChC,CAAC,CAAA;AAFY,QAAA,WAAW,eAEvB;AAED;;;GAGG;AACI,MAAM,SAAS,GAAG,CAAC,GAAG,IAAc,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAAzE,QAAA,SAAS,aAAgE;AAEtF;;;GAGG;AACI,MAAM,SAAS,GAAG,CAAC,GAAG,IAAc,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAAzE,QAAA,SAAS,aAAgE;AAEtF;;;;;GAKG;AACI,MAAM,qBAAqB,GAAG,CAAC,KAAa,EAAc,EAAE;IACjE,OAAO,IAAA,kBAAU,EAAC,IAAA,qBAAa,EAAC,KAAK,CAAC,CAAC,CAAA;AACzC,CAAC,CAAA;AAFY,QAAA,qBAAqB,yBAEjC;AAEM,MAAM,oBAAoB,GAAG,CAAC,KAAa,EAAE,SAAkB,IAAI,EAAc,EAAE;IACxF,MAAM,YAAY,GAAG,IAAA,qBAAa,EAAC,KAAK,CAAC,CAAA;IACzC,IAAI,MAAM,IAAI,YAAY,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACvC,MAAM,KAAK,CAAC,gCAAgC,YAAY,CAAC,MAAM,WAAW,MAAM,EAAE,CAAC,CAAA;IACrF,CAAC;IAED,yDAAyD;IACzD,OAAO,IAAA,qBAAa,EAAC,YAAY,EAAE,EAAE,CAAC,CAAA;AACxC,CAAC,CAAA;AARY,QAAA,oBAAoB,wBAQhC;AAED;;;;;GAKG;AACI,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAc,EAAE;IAC9D,OAAO,IAAA,kBAAU,EAAC,IAAA,kBAAU,EAAC,KAAK,CAAC,CAAC,CAAA;AACtC,CAAC,CAAA;AAFY,QAAA,kBAAkB,sBAE9B;AAED;;;;;;;;GAQG;AACI,MAAM,YAAY,GAAG,CAAC,MAAkB,EAAE,MAAkB,EAAU,EAAE;IAC7E,MAAM,YAAY,GAAG,IAAA,qBAAa,EAAC,MAAM,CAAC,CAAA;IAC1C,MAAM,YAAY,GAAG,IAAA,qBAAa,EAAC,MAAM,CAAC,CAAA;IAC1C,OAAO,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC/E,CAAC,CAAA;AAJY,QAAA,YAAY,gBAIxB;AAED;;;;;GAKG;AACI,MAAM,WAAW,GAAG,CAAC,MAAc,EAAc,EAAE;IACxD,OAAO,IAAA,8BAAkB,EAAC,MAAM,CAAC,CAAA;AACnC,CAAC,CAAA;AAFY,QAAA,WAAW,eAEvB;AAED;;;;;;;GAOG;AACI,MAAM,WAAW,GAAG,CAAC,GAAG,MAAoB,EAAc,EAAE;IACjE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAA;IACzC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IAC3D,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAA;IACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChD,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACrB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QACpB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAA;IACnB,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAVY,QAAA,WAAW,eAUvB;AAED;;;;;GAKG;AACH,SAAgB,YAAY,CAAC,KAAiB,EAAE,eAAwB,KAAK;IAC3E,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,YAAY,CAAC,CAAA;IAC3C,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;IAC/E,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;AAC5C,CAAC;AAED;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,KAAiB,EAAE,eAAwB,KAAK;IAC9E,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,YAAY,CAAC,CAAA;IAC3C,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;IAC/E,OAAO,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;AAC/C,CAAC;AAED;;;;;GAKG;AACH,SAAgB,YAAY,CAAC,KAAa,EAAE,eAAwB,KAAK;IACvE,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAA;IACjC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;IACrC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAA;IAC1C,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,CAAA;AAC/B,CAAC;AAED;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,KAAa,EAAE,eAAwB,KAAK;IAC1E,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAA;IACjC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;IACrC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAA;IAC7C,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,CAAA;AAC/B,CAAC;AAED,2DAAsF;AAA7E,uGAAA,WAAW,OAAA;AAAE,uGAAA,WAAW,OAAA;AAAE,uGAAA,WAAW,OAAA;AAE9C,SAAgB,WAAW,CAAC,KAAwB;IAClD,OAAO,IAAA,qBAAa,EAAC,IAAA,kBAAU,EAAC,IAAA,yBAAW,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAA;AAC7E,CAAC;AAED;;;;;GAKG;AACH,SAAgB,WAAW,CAAC,KAAiB,EAAE,SAAkB;IAC/D,MAAM,IAAI,GAAa,EAAE,CAAA;IAEzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACzD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QACnC,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QAC5B,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;IAC/C,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;GAKG;AACH,SAAgB,WAAW,CAAC,IAAc;IACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA,CAAC,8BAA8B;IAC1E,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAA;IAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QACnC,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QAC5B,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAA;IAC5C,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAC,MAAkB,EAAE,MAAkB;IACxE,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;IAExD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5B,KAAK,EAAE,CAAA;QACT,CAAC;aAAM,CAAC;YACN,qCAAqC;YACrC,MAAK;QACP,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAC,KAAe,EAAE,KAAe;IACjE,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1B,KAAK,EAAE,CAAA;QACT,CAAC;aAAM,CAAC;YACN,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,UAAU,CAAC,KAAe,EAAE,KAAe;IACzD,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;QAClC,OAAO,KAAK,CAAA;IACd,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
{"version":3,"file":"bytes.js","sourceRoot":"","sources":["../../src/bytes.ts"],"names":[],"mappings":"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"}

@@ -53,2 +53,9 @@ /**

/**
* EIP-7934: RLP Execution Block Size Limit constants
* Maximum RLP-encoded block size to 10 MiB, with a 2 MiB margin for beacon block sizes
*/
export declare const MAX_BLOCK_SIZE = 10485760;
export declare const SAFETY_MARGIN = 2097152;
export declare const MAX_RLP_BLOCK_SIZE: number;
/**
* BigInt constants

@@ -55,0 +62,0 @@ */

@@ -1,1 +0,1 @@

{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,eAAO,MAAM,UAAU,QAA+B,CAAA;AAEtD;;GAEG;AACH,eAAO,MAAM,WAAW,QAEvB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QAE9B,CAAA;AAED,eAAO,MAAM,eAAe,QAAoB,CAAA;AAChD,eAAO,MAAM,qBAAqB,QAAgC,CAAA;AAElE;;GAEG;AACH,eAAO,MAAM,UAAU,QAEtB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,uEAAuE,CAAA;AAEpG;;GAEG;AACH,eAAO,MAAM,cAAc,6BAA+B,CAAA;AAE1D;;GAEG;AACH,eAAO,MAAM,qBAAqB,uEACoC,CAAA;AAEtE;;GAEG;AACH,eAAO,MAAM,mBAAmB,6BAAoC,CAAA;AAEpE;;GAEG;AACH,eAAO,MAAM,eAAe,uEAAuE,CAAA;AAEnG;;GAEG;AACH,eAAO,MAAM,aAAa,6BAA8B,CAAA;AAExD,eAAO,MAAM,WAAW,6BAA2B,CAAA;AAEnD;;GAEG;AACH,eAAO,MAAM,gBAAgB,yBAA0B,CAAA;AAEvD,eAAO,MAAM,2BAA2B,KAAK,CAAA;AAE7C,eAAO,MAAM,wBAAwB,6CAA6C,CAAA;AAElF;;GAEG;AAEH,eAAO,MAAM,WAAW,QAAa,CAAA;AAErC,eAAO,MAAM,QAAQ,QAAY,CAAA;AACjC,eAAO,MAAM,QAAQ,QAAY,CAAA;AACjC,eAAO,MAAM,QAAQ,QAAY,CAAA;AACjC,eAAO,MAAM,QAAQ,QAAY,CAAA;AACjC,eAAO,MAAM,QAAQ,QAAY,CAAA;AACjC,eAAO,MAAM,QAAQ,QAAY,CAAA;AAEjC,eAAO,MAAM,SAAS,QAAa,CAAA;AACnC,eAAO,MAAM,SAAS,QAAa,CAAA;AACnC,eAAO,MAAM,SAAS,QAAa,CAAA;AACnC,eAAO,MAAM,SAAS,QAAa,CAAA;AACnC,eAAO,MAAM,SAAS,QAAa,CAAA;AAEnC,eAAO,MAAM,UAAU,QAAc,CAAA;AACrC,eAAO,MAAM,UAAU,QAAc,CAAA;AACrC,eAAO,MAAM,UAAU,QAAc,CAAA;AAErC,eAAO,MAAM,SAAS,QAAa,CAAA;AACnC,eAAO,MAAM,UAAU,QAAc,CAAA;AACrC,eAAO,MAAM,UAAU,QAAc,CAAA;AACrC,eAAO,MAAM,UAAU,QAAc,CAAA;AACrC,eAAO,MAAM,aAAa,QAAwC,CAAA;AAClE,eAAO,MAAM,cAAc,QAA4D,CAAA;AACvF,eAAO,MAAM,cAAc,QACmD,CAAA;AAC9E,eAAO,MAAM,cAAc,QAAyB,CAAA"}
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,eAAO,MAAM,UAAU,QAA+B,CAAA;AAEtD;;GAEG;AACH,eAAO,MAAM,WAAW,QAEvB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QAE9B,CAAA;AAED,eAAO,MAAM,eAAe,QAAoB,CAAA;AAChD,eAAO,MAAM,qBAAqB,QAAgC,CAAA;AAElE;;GAEG;AACH,eAAO,MAAM,UAAU,QAEtB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,uEAAuE,CAAA;AAEpG;;GAEG;AACH,eAAO,MAAM,cAAc,6BAA+B,CAAA;AAE1D;;GAEG;AACH,eAAO,MAAM,qBAAqB,uEACoC,CAAA;AAEtE;;GAEG;AACH,eAAO,MAAM,mBAAmB,6BAAoC,CAAA;AAEpE;;GAEG;AACH,eAAO,MAAM,eAAe,uEAAuE,CAAA;AAEnG;;GAEG;AACH,eAAO,MAAM,aAAa,6BAA8B,CAAA;AAExD,eAAO,MAAM,WAAW,6BAA2B,CAAA;AAEnD;;GAEG;AACH,eAAO,MAAM,gBAAgB,yBAA0B,CAAA;AAEvD,eAAO,MAAM,2BAA2B,KAAK,CAAA;AAE7C,eAAO,MAAM,wBAAwB,6CAA6C,CAAA;AAElF;;;GAGG;AACH,eAAO,MAAM,cAAc,WAAa,CAAA;AACxC,eAAO,MAAM,aAAa,UAAY,CAAA;AACtC,eAAO,MAAM,kBAAkB,QAAiC,CAAA;AAEhE;;GAEG;AAEH,eAAO,MAAM,WAAW,QAAa,CAAA;AAErC,eAAO,MAAM,QAAQ,QAAY,CAAA;AACjC,eAAO,MAAM,QAAQ,QAAY,CAAA;AACjC,eAAO,MAAM,QAAQ,QAAY,CAAA;AACjC,eAAO,MAAM,QAAQ,QAAY,CAAA;AACjC,eAAO,MAAM,QAAQ,QAAY,CAAA;AACjC,eAAO,MAAM,QAAQ,QAAY,CAAA;AAEjC,eAAO,MAAM,SAAS,QAAa,CAAA;AACnC,eAAO,MAAM,SAAS,QAAa,CAAA;AACnC,eAAO,MAAM,SAAS,QAAa,CAAA;AACnC,eAAO,MAAM,SAAS,QAAa,CAAA;AACnC,eAAO,MAAM,SAAS,QAAa,CAAA;AAEnC,eAAO,MAAM,UAAU,QAAc,CAAA;AACrC,eAAO,MAAM,UAAU,QAAc,CAAA;AACrC,eAAO,MAAM,UAAU,QAAc,CAAA;AAErC,eAAO,MAAM,SAAS,QAAa,CAAA;AACnC,eAAO,MAAM,UAAU,QAAc,CAAA;AACrC,eAAO,MAAM,UAAU,QAAc,CAAA;AACrC,eAAO,MAAM,UAAU,QAAc,CAAA;AACrC,eAAO,MAAM,aAAa,QAAwC,CAAA;AAClE,eAAO,MAAM,cAAc,QAA4D,CAAA;AACvF,eAAO,MAAM,cAAc,QACmD,CAAA;AAC9E,eAAO,MAAM,cAAc,QAAyB,CAAA"}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.BIGINT_2EXP256 = exports.BIGINT_2EXP224 = exports.BIGINT_2EXP160 = exports.BIGINT_2EXP96 = exports.BIGINT_224 = exports.BIGINT_160 = exports.BIGINT_100 = exports.BIGINT_96 = exports.BIGINT_256 = exports.BIGINT_255 = exports.BIGINT_128 = exports.BIGINT_64 = exports.BIGINT_32 = exports.BIGINT_31 = exports.BIGINT_28 = exports.BIGINT_27 = exports.BIGINT_8 = exports.BIGINT_7 = exports.BIGINT_3 = exports.BIGINT_2 = exports.BIGINT_1 = exports.BIGINT_0 = exports.BIGINT_NEG1 = exports.RIPEMD160_ADDRESS_STRING = exports.MAX_WITHDRAWALS_PER_PAYLOAD = exports.RLP_EMPTY_STRING = exports.SHA256_NULL = exports.KECCAK256_RLP = exports.KECCAK256_RLP_S = exports.KECCAK256_RLP_ARRAY = exports.KECCAK256_RLP_ARRAY_S = exports.KECCAK256_NULL = exports.KECCAK256_NULL_S = exports.TWO_POW256 = exports.SECP256K1_ORDER_DIV_2 = exports.SECP256K1_ORDER = exports.MAX_INTEGER_BIGINT = exports.MAX_INTEGER = exports.MAX_UINT64 = void 0;
exports.BIGINT_2EXP256 = exports.BIGINT_2EXP224 = exports.BIGINT_2EXP160 = exports.BIGINT_2EXP96 = exports.BIGINT_224 = exports.BIGINT_160 = exports.BIGINT_100 = exports.BIGINT_96 = exports.BIGINT_256 = exports.BIGINT_255 = exports.BIGINT_128 = exports.BIGINT_64 = exports.BIGINT_32 = exports.BIGINT_31 = exports.BIGINT_28 = exports.BIGINT_27 = exports.BIGINT_8 = exports.BIGINT_7 = exports.BIGINT_3 = exports.BIGINT_2 = exports.BIGINT_1 = exports.BIGINT_0 = exports.BIGINT_NEG1 = exports.MAX_RLP_BLOCK_SIZE = exports.SAFETY_MARGIN = exports.MAX_BLOCK_SIZE = exports.RIPEMD160_ADDRESS_STRING = exports.MAX_WITHDRAWALS_PER_PAYLOAD = exports.RLP_EMPTY_STRING = exports.SHA256_NULL = exports.KECCAK256_RLP = exports.KECCAK256_RLP_S = exports.KECCAK256_RLP_ARRAY = exports.KECCAK256_RLP_ARRAY_S = exports.KECCAK256_NULL = exports.KECCAK256_NULL_S = exports.TWO_POW256 = exports.SECP256K1_ORDER_DIV_2 = exports.SECP256K1_ORDER = exports.MAX_INTEGER_BIGINT = exports.MAX_INTEGER = exports.MAX_UINT64 = void 0;
const secp256k1_js_1 = require("ethereum-cryptography/secp256k1.js");

@@ -59,2 +59,9 @@ const sha256_js_1 = require("ethereum-cryptography/sha256.js");

/**
* EIP-7934: RLP Execution Block Size Limit constants
* Maximum RLP-encoded block size to 10 MiB, with a 2 MiB margin for beacon block sizes
*/
exports.MAX_BLOCK_SIZE = 10485760; // 10 MiB
exports.SAFETY_MARGIN = 2097152; // 2 MiB
exports.MAX_RLP_BLOCK_SIZE = exports.MAX_BLOCK_SIZE - exports.SAFETY_MARGIN; // 8 MiB
/**
* BigInt constants

@@ -61,0 +68,0 @@ */

@@ -1,1 +0,1 @@

{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"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"}

@@ -54,3 +54,2 @@ /**

export * from './tasks.ts';
export * from './verkle.ts';
//# sourceMappingURL=index.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,gBAAgB,CAAA;AAE9B;;GAEG;AACH,cAAc,aAAa,CAAA;AAE3B;;GAEG;AACH,cAAc,YAAY,CAAA;AAE1B;;GAEG;AACH,cAAc,cAAc,CAAA;AAE5B;;GAEG;AACH,cAAc,cAAc,CAAA;AAE5B;;GAEG;AACH,cAAc,SAAS,CAAA;AAEvB;;GAEG;AACH,cAAc,iBAAiB,CAAA;AAE/B;;GAEG;AACH,cAAc,gBAAgB,CAAA;AAE9B;;GAEG;AACH,cAAc,YAAY,CAAA;AAE1B;;GAEG;AACH,cAAc,YAAY,CAAA;AAE1B;;GAEG;AACH,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,OAAO,EACL,kBAAkB,EAClB,SAAS,EACT,QAAQ,EACR,aAAa,EACb,OAAO,EACP,WAAW,EACX,SAAS,EACT,cAAc,EACd,OAAO,GACR,MAAM,eAAe,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,gBAAgB,CAAA;AAE9B;;GAEG;AACH,cAAc,aAAa,CAAA;AAE3B;;GAEG;AACH,cAAc,YAAY,CAAA;AAE1B;;GAEG;AACH,cAAc,cAAc,CAAA;AAE5B;;GAEG;AACH,cAAc,cAAc,CAAA;AAE5B;;GAEG;AACH,cAAc,SAAS,CAAA;AAEvB;;GAEG;AACH,cAAc,iBAAiB,CAAA;AAE/B;;GAEG;AACH,cAAc,gBAAgB,CAAA;AAE9B;;GAEG;AACH,cAAc,YAAY,CAAA;AAE1B;;GAEG;AACH,cAAc,YAAY,CAAA;AAE1B;;GAEG;AACH,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,OAAO,EACL,kBAAkB,EAClB,SAAS,EACT,QAAQ,EACR,aAAa,EACb,OAAO,EACP,WAAW,EACX,SAAS,EACT,cAAc,EACd,OAAO,GACR,MAAM,eAAe,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA"}

@@ -80,3 +80,2 @@ "use strict";

__exportStar(require("./tasks.js"), exports);
__exportStar(require("./verkle.js"), exports);
//# sourceMappingURL=index.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA;;GAEG;AACH,iDAA8B;AAE9B;;GAEG;AACH,8CAA2B;AAE3B;;GAEG;AACH,6CAA0B;AAE1B;;GAEG;AACH,+CAA4B;AAE5B;;GAEG;AACH,+CAA4B;AAE5B;;GAEG;AACH,0CAAuB;AAEvB;;GAEG;AACH,kDAA+B;AAE/B;;GAEG;AACH,iDAA8B;AAE9B;;GAEG;AACH,6CAA0B;AAE1B;;GAEG;AACH,6CAA0B;AAE1B;;GAEG;AACH,qDAAkC;AAClC,kDAA+B;AAC/B,6CAA0B;AAC1B,6CAUsB;AATpB,iHAAA,kBAAkB,OAAA;AAClB,wGAAA,SAAS,OAAA;AACT,uGAAA,QAAQ,OAAA;AACR,4GAAA,aAAa,OAAA;AACb,sGAAA,OAAO,OAAA;AACP,0GAAA,WAAW,OAAA;AACX,wGAAA,SAAS,OAAA;AACT,6GAAA,cAAc,OAAA;AACd,sGAAA,OAAO,OAAA;AAET,2CAAwB;AACxB,4CAAyB;AACzB,6CAA0B;AAC1B,gDAA6B;AAC7B,+CAA4B;AAC5B,6CAA0B;AAC1B,8CAA2B"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA;;GAEG;AACH,iDAA8B;AAE9B;;GAEG;AACH,8CAA2B;AAE3B;;GAEG;AACH,6CAA0B;AAE1B;;GAEG;AACH,+CAA4B;AAE5B;;GAEG;AACH,+CAA4B;AAE5B;;GAEG;AACH,0CAAuB;AAEvB;;GAEG;AACH,kDAA+B;AAE/B;;GAEG;AACH,iDAA8B;AAE9B;;GAEG;AACH,6CAA0B;AAE1B;;GAEG;AACH,6CAA0B;AAE1B;;GAEG;AACH,qDAAkC;AAClC,kDAA+B;AAC/B,6CAA0B;AAC1B,6CAUsB;AATpB,iHAAA,kBAAkB,OAAA;AAClB,wGAAA,SAAS,OAAA;AACT,uGAAA,QAAQ,OAAA;AACR,4GAAA,aAAa,OAAA;AACb,sGAAA,OAAO,OAAA;AACP,0GAAA,WAAW,OAAA;AACX,wGAAA,SAAS,OAAA;AACT,6GAAA,cAAc,OAAA;AACd,sGAAA,OAAO,OAAA;AAET,2CAAwB;AACxB,4CAAyB;AACzB,6CAA0B;AAC1B,gDAA6B;AAC7B,+CAA4B;AAC5B,6CAA0B"}

@@ -9,3 +9,7 @@ /**

verifyBlobProofBatch(blobs: string[], expectedKZGCommitments: string[], KZGProofs: string[]): boolean;
computeCells(blob: string): string[];
computeCellsAndProofs(blob: string): [string[], string[]];
recoverCellsAndProofs(indices: number[], cells: string[]): [string[], string[]];
verifyCellKzgProofBatch(commitments: string[], indices: number[], cells: string[], proofs: string[]): boolean;
}
//# sourceMappingURL=kzg.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"kzg.d.ts","sourceRoot":"","sources":["../../src/kzg.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,GAAG;IAClB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;IACzC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAAA;IAC1D,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAA;IACnF,oBAAoB,CAClB,KAAK,EAAE,MAAM,EAAE,EACf,sBAAsB,EAAE,MAAM,EAAE,EAChC,SAAS,EAAE,MAAM,EAAE,GAClB,OAAO,CAAA;CACX"}
{"version":3,"file":"kzg.d.ts","sourceRoot":"","sources":["../../src/kzg.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,GAAG;IAElB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;IACzC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAAA;IAC1D,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAA;IACnF,oBAAoB,CAClB,KAAK,EAAE,MAAM,EAAE,EACf,sBAAsB,EAAE,MAAM,EAAE,EAChC,SAAS,EAAE,MAAM,EAAE,GAClB,OAAO,CAAA;IAEV,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACpC,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;IACzD,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;IAC/E,uBAAuB,CACrB,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,EAAE,MAAM,EAAE,EACjB,KAAK,EAAE,MAAM,EAAE,EACf,MAAM,EAAE,MAAM,EAAE,GACf,OAAO,CAAA;CACX"}

@@ -19,3 +19,3 @@ import type { BigIntLike, BytesLike, PrefixedHexString } from './types.ts';

* Account class to load and maintain the basic account objects.
* Supports partial loading and access required for verkle with null
* Supports partial loading and access required for stateless with null
* as the placeholder.

@@ -159,3 +159,3 @@ *

export declare function accountBodyFromSlim(body: AccountBodyBytes): Uint8Array<ArrayBufferLike>[];
export declare function accountBodyToSlim(body: AccountBodyBytes): Uint8Array<ArrayBuffer>[];
export declare function accountBodyToSlim(body: AccountBodyBytes): Uint8Array<ArrayBufferLike>[];
/**

@@ -162,0 +162,0 @@ * Converts a slim account (per snap protocol spec) to the RLP encoded version of the account

@@ -1,1 +0,1 @@

{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../src/account.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../src/account.ts"],"names":[],"mappings":"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"}

@@ -37,3 +37,3 @@ import { RLP } from '@ethereumjs/rlp';

* Account class to load and maintain the basic account objects.
* Supports partial loading and access required for verkle with null
* Supports partial loading and access required for stateless with null
* as the placeholder.

@@ -40,0 +40,0 @@ *

@@ -22,3 +22,3 @@ import { secp256k1 } from 'ethereum-cryptography/secp256k1.js';

*/
export declare function eoaCode7702AuthorizationMessageToSign(input: EOACode7702AuthorizationListItemUnsigned | EOACode7702AuthorizationListBytesItemUnsigned): Uint8Array<ArrayBufferLike>;
export declare function eoaCode7702AuthorizationMessageToSign(input: EOACode7702AuthorizationListItemUnsigned | EOACode7702AuthorizationListBytesItemUnsigned): Uint8Array<ArrayBuffer>;
/**

@@ -25,0 +25,0 @@ * Hashes the RLP-encoded message to sign

@@ -1,1 +0,1 @@

{"version":3,"file":"authorization.d.ts","sourceRoot":"","sources":["../../src/authorization.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAA;AAE9D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAWtC,OAAO,KAAK,EACV,qCAAqC,EACrC,6CAA6C,EAC7C,gCAAgC,EAChC,wCAAwC,EACzC,MAAM,YAAY,CAAA;AAEnB,eAAO,MAAM,qCAAqC,6BAAqB,CAAA;AAEvE;;;;GAIG;AACH,wBAAgB,2CAA2C,CACzD,iBAAiB,EAAE,qCAAqC,GACvD,gCAAgC,CAUlC;AAED;;;;GAIG;AACH,wBAAgB,2CAA2C,CACzD,iBAAiB,EAAE,gCAAgC,GAClD,qCAAqC,CAoBvC;AAWD;;;;GAIG;AACH,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,wCAAwC,GAAG,6CAA6C,+BAgBhG;AAED;;;;GAIG;AACH,wBAAgB,2CAA2C,CACzD,KAAK,EAAE,wCAAwC,GAAG,6CAA6C,+BAGhG;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,wCAAwC,GAAG,6CAA6C,EAC/F,UAAU,EAAE,UAAU,EACtB,MAAM,CAAC,EAAE,CACP,GAAG,EAAE,UAAU,EACf,EAAE,EAAE,UAAU,EACd,UAAU,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,UAAU,GAAG,OAAO,CAAA;CAAE,KACjD,IAAI,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,GAAG,GAAG,GAAG,CAAC,GACnE,qCAAqC,CAgBvC;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,gCAAgC,GAAG,qCAAqC,GAC9E,OAAO,CAQT"}
{"version":3,"file":"authorization.d.ts","sourceRoot":"","sources":["../../src/authorization.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAA;AAE9D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAWtC,OAAO,KAAK,EACV,qCAAqC,EACrC,6CAA6C,EAC7C,gCAAgC,EAChC,wCAAwC,EACzC,MAAM,YAAY,CAAA;AAEnB,eAAO,MAAM,qCAAqC,6BAAqB,CAAA;AAEvE;;;;GAIG;AACH,wBAAgB,2CAA2C,CACzD,iBAAiB,EAAE,qCAAqC,GACvD,gCAAgC,CAUlC;AAED;;;;GAIG;AACH,wBAAgB,2CAA2C,CACzD,iBAAiB,EAAE,gCAAgC,GAClD,qCAAqC,CAoBvC;AAWD;;;;GAIG;AACH,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,wCAAwC,GAAG,6CAA6C,2BAgBhG;AAED;;;;GAIG;AACH,wBAAgB,2CAA2C,CACzD,KAAK,EAAE,wCAAwC,GAAG,6CAA6C,+BAGhG;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,wCAAwC,GAAG,6CAA6C,EAC/F,UAAU,EAAE,UAAU,EACtB,MAAM,CAAC,EAAE,CACP,GAAG,EAAE,UAAU,EACf,EAAE,EAAE,UAAU,EACd,UAAU,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,UAAU,GAAG,OAAO,CAAA;CAAE,KACjD,IAAI,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,GAAG,GAAG,GAAG,CAAC,GACnE,qCAAqC,CAgBvC;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,gCAAgC,GAAG,qCAAqC,GAC9E,OAAO,CAQT"}

@@ -75,3 +75,3 @@ import type { Account } from './account.ts';

*/
export declare const getBinaryTreeKey: (stem: Uint8Array, leaf: BinaryTreeLeafType | Uint8Array) => Uint8Array<ArrayBufferLike>;
export declare const getBinaryTreeKey: (stem: Uint8Array, leaf: BinaryTreeLeafType | Uint8Array) => Uint8Array<ArrayBuffer>;
/**

@@ -104,3 +104,3 @@ * Calculates the position of the storage key in the BinaryTree tree, determining

*/
export declare const getBinaryTreeKeyForCodeChunk: (address: Address, chunkId: number, hashFunction: (input: Uint8Array) => Uint8Array) => Uint8Array<ArrayBufferLike>;
export declare const getBinaryTreeKeyForCodeChunk: (address: Address, chunkId: number, hashFunction: (input: Uint8Array) => Uint8Array) => Uint8Array<ArrayBuffer>;
export declare const chunkifyBinaryTreeCode: (code: Uint8Array) => Uint8Array<ArrayBufferLike>[];

@@ -114,3 +114,3 @@ /**

*/
export declare const getBinaryTreeKeyForStorageSlot: (address: Address, storageKey: bigint, hashFunction: (input: Uint8Array) => Uint8Array) => Uint8Array<ArrayBufferLike>;
export declare const getBinaryTreeKeyForStorageSlot: (address: Address, storageKey: bigint, hashFunction: (input: Uint8Array) => Uint8Array) => Uint8Array<ArrayBuffer>;
/**

@@ -117,0 +117,0 @@ * This function extracts and decodes account header elements (version, nonce, code size, and balance)

@@ -1,1 +0,1 @@

{"version":3,"file":"binaryTree.d.ts","sourceRoot":"","sources":["../../src/binaryTree.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"binaryTree.d.ts","sourceRoot":"","sources":["../../src/binaryTree.ts"],"names":[],"mappings":"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"}
import type { KZG } from './kzg.ts';
import type { PrefixedHexString } from './types.ts';
export declare const getBlobs: (input: string) => `0x${string}`[];
export declare const CELLS_PER_EXT_BLOB = 128;
/**
* EIP-4844: Converts UTF-8 string(s) into EIP-4844 blob format.
*
* Each input string is converted to UTF-8 bytes, padded with 0x80 followed by zeros
* to align with blob boundaries, and encoded as one or more blobs depending on size.
* Multiple inputs are processed sequentially, with each input contributing its own blob(s).
*
* @param input Single UTF-8 string or array of UTF-8 strings to encode
* @throws Error with message 'invalid blob data' if any input string is empty
* @throws Error with message 'blob data is too large' if any single input exceeds MAX_USEFUL_BYTES_PER_TX
* @returns Array of hex-prefixed blob strings (0x...), one blob per 131,071 useful bytes per input
*/
export declare const getBlobs: (input: string | string[]) => `0x${string}`[];
/**
* EIP-4844: Computes KZG commitments for a set of blobs.
* @param kzg KZG implementation used to compute commitments
* @param blobs Array of blob data as hex-prefixed strings
* @returns Array of lowercase hex-prefixed KZG commitments (one per blob)
*/
export declare const blobsToCommitments: (kzg: KZG, blobs: PrefixedHexString[]) => `0x${string}`[];
/**
* EIP-4844: Computes KZG proofs for each blob/commitment pair.
* @param kzg KZG implementation used to compute proofs
* @param blobs Array of blob data as hex-prefixed strings
* @param commitments Array of corresponding blob commitments
* @returns Array of lowercase hex-prefixed proofs (aligned with input order)
*/
export declare const blobsToProofs: (kzg: KZG, blobs: PrefixedHexString[], commitments: PrefixedHexString[]) => `0x${string}`[];
/**
* Converts a vector commitment for a given data blob to its versioned hash. For 4844, this version
* EIP-4844: Converts a vector commitment for a given data blob to its versioned hash. For 4844, this version
* number will be 0x01 for KZG vector commitments but could be different if future vector commitment

@@ -16,3 +42,3 @@ * types are introduced

/**
* Generate an array of versioned hashes from corresponding kzg commitments
* EIP-4844: Generate an array of versioned hashes from corresponding kzg commitments
* @param commitments array of kzg commitments

@@ -23,2 +49,23 @@ * @returns array of versioned hashes

export declare const commitmentsToVersionedHashes: (commitments: PrefixedHexString[]) => `0x${string}`[];
/**
* EIP-7594: Expands blobs into their extended cells using the provided KZG implementation.
* @param kzg KZG implementation capable of computing cells
* @param blobs Array of blob data as hex-prefixed strings
* @returns Tuple of [cells, indices], where cells are hex strings and indices are 0..127
*/
export declare const blobsToCells: (kzg: KZG, blobs: PrefixedHexString[]) => [PrefixedHexString[], number[]];
/**
* EIP-7594: Computes extended cells and corresponding proofs for the given blobs.
* @param kzg KZG implementation capable of computing cells and proofs
* @param blobs Array of blob data as hex-prefixed strings
* @returns Tuple of [cells, proofs, indices]; indices are 0..127
*/
export declare const blobsToCellsAndProofs: (kzg: KZG, blobs: PrefixedHexString[]) => [PrefixedHexString[], PrefixedHexString[], number[]];
/**
* EIP-7594: Computes cell proofs for the given blobs.
* @param kzg KZG implementation capable of computing cell proofs
* @param blobs Array of blob data as hex-prefixed strings
* @returns Array of lowercase hex-prefixed cell proofs (aligned with input order)
*/
export declare const blobsToCellProofs: (kzg: KZG, blobs: PrefixedHexString[]) => PrefixedHexString[];
//# sourceMappingURL=blobs.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"blobs.d.ts","sourceRoot":"","sources":["../../src/blobs.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AACnC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AA8BnD,eAAO,MAAM,QAAQ,GAAI,OAAO,MAAM,oBAsBrC,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,KAAK,GAAG,EAAE,OAAO,iBAAiB,EAAE,oBAMtE,CAAA;AAED,eAAO,MAAM,aAAa,GACxB,KAAK,GAAG,EACR,OAAO,iBAAiB,EAAE,EAC1B,aAAa,iBAAiB,EAAE,oBAOjC,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,GAC/B,YAAY,iBAAiB,EAC7B,uBAAuB,MAAM,kBAM9B,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,GAAI,aAAa,iBAAiB,EAAE,oBAM5E,CAAA"}
{"version":3,"file":"blobs.d.ts","sourceRoot":"","sources":["../../src/blobs.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AACnC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAYnD,eAAO,MAAM,kBAAkB,MAAM,CAAA;AAgCrC;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,QAAQ,GAAI,OAAO,MAAM,GAAG,MAAM,EAAE,oBA0BhD,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAI,KAAK,GAAG,EAAE,OAAO,iBAAiB,EAAE,oBAMtE,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GACxB,KAAK,GAAG,EACR,OAAO,iBAAiB,EAAE,EAC1B,aAAa,iBAAiB,EAAE,oBAOjC,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,GAC/B,YAAY,iBAAiB,EAC7B,uBAAuB,MAAM,kBAM9B,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,GAAI,aAAa,iBAAiB,EAAE,oBAM5E,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GACvB,KAAK,GAAG,EACR,OAAO,iBAAiB,EAAE,KACzB,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,CAOhC,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAChC,KAAK,GAAG,EACR,OAAO,iBAAiB,EAAE,KACzB,CAAC,iBAAiB,EAAE,EAAE,iBAAiB,EAAE,EAAE,MAAM,EAAE,CAiBrD,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAI,KAAK,GAAG,EAAE,OAAO,iBAAiB,EAAE,KAAG,iBAAiB,EAEzF,CAAA"}

@@ -6,10 +6,16 @@ import { sha256 } from 'ethereum-cryptography/sha256.js';

*/
const BYTES_PER_FIELD_ELEMENT = 32;
const FIELD_ELEMENTS_PER_BLOB = 4096;
const USEFUL_BYTES_PER_BLOB = 32 * FIELD_ELEMENTS_PER_BLOB;
const MAX_BLOBS_PER_TX = 2;
const MAX_USEFUL_BYTES_PER_TX = USEFUL_BYTES_PER_BLOB * MAX_BLOBS_PER_TX - 1;
const BYTES_PER_FIELD_ELEMENT = 32; // EIP-4844
const FIELD_ELEMENTS_PER_BLOB = 4096; // EIP-4844
const BLOB_SIZE = BYTES_PER_FIELD_ELEMENT * FIELD_ELEMENTS_PER_BLOB;
function get_padded(data, blobs_len) {
const pData = new Uint8Array(blobs_len * USEFUL_BYTES_PER_BLOB);
const MAX_BLOBS_PER_TX = 6; // EIP-7691: Blob throughput increase, Pectra HF
const MAX_BLOB_BYTES_PER_TX = BLOB_SIZE * MAX_BLOBS_PER_TX - 1;
export const CELLS_PER_EXT_BLOB = 128; // EIP-4844, Consensus Spec, 2 * FIELD_ELEMENTS_PER_BLOB // 64 (FIELD_ELEMENTS_PER_CELL)
/**
* Pads input data to blob boundaries with 0x80 marker and zeros.
* @param data Input data to pad
* @param blobs_len Number of blobs the data should span
* @returns Padded data aligned to blob boundaries
*/
function getPadded(data, blobs_len) {
const pData = new Uint8Array(blobs_len * BLOB_SIZE);
pData.set(data);

@@ -19,3 +25,9 @@ pData[data.byteLength] = 0x80;

}
function get_blob(data) {
/**
* Converts arbitrary byte data into EIP-4844 blob format.
* Splits data into 4096 field elements of 32 bytes each, with proper alignment.
* @param data Input data (must be exactly BLOB_SIZE bytes)
* @returns Hex-prefixed blob string
*/
function getBlob(data) {
const blob = new Uint8Array(BLOB_SIZE);

@@ -29,21 +41,42 @@ for (let i = 0; i < FIELD_ELEMENTS_PER_BLOB; i++) {

}
/**
* EIP-4844: Converts UTF-8 string(s) into EIP-4844 blob format.
*
* Each input string is converted to UTF-8 bytes, padded with 0x80 followed by zeros
* to align with blob boundaries, and encoded as one or more blobs depending on size.
* Multiple inputs are processed sequentially, with each input contributing its own blob(s).
*
* @param input Single UTF-8 string or array of UTF-8 strings to encode
* @throws Error with message 'invalid blob data' if any input string is empty
* @throws Error with message 'blob data is too large' if any single input exceeds MAX_USEFUL_BYTES_PER_TX
* @returns Array of hex-prefixed blob strings (0x...), one blob per 131,071 useful bytes per input
*/
export const getBlobs = (input) => {
const data = utf8ToBytes(input);
const len = data.byteLength;
if (len === 0) {
throw Error('invalid blob data');
}
if (len > MAX_USEFUL_BYTES_PER_TX) {
throw Error('blob data is too large');
}
const blobs_len = Math.ceil(len / USEFUL_BYTES_PER_BLOB);
const pData = get_padded(data, blobs_len);
const inputArray = Array.isArray(input) ? input : [input];
const blobs = [];
for (let i = 0; i < blobs_len; i++) {
const chunk = pData.subarray(i * USEFUL_BYTES_PER_BLOB, (i + 1) * USEFUL_BYTES_PER_BLOB);
const blob = get_blob(chunk);
blobs.push(blob);
for (const input of inputArray) {
const data = utf8ToBytes(input);
const len = data.byteLength;
if (len === 0) {
throw Error('invalid blob data (0 bytes)');
}
if (len > MAX_BLOB_BYTES_PER_TX) {
throw Error(`blob data is too large (${len} bytes > ${MAX_BLOB_BYTES_PER_TX} bytes)`);
}
const blobs_len = Math.ceil(len / BLOB_SIZE);
const pData = getPadded(data, blobs_len);
for (let i = 0; i < blobs_len; i++) {
const chunk = pData.subarray(i * BLOB_SIZE, (i + 1) * BLOB_SIZE);
const blob = getBlob(chunk);
blobs.push(blob);
}
}
return blobs;
};
/**
* EIP-4844: Computes KZG commitments for a set of blobs.
* @param kzg KZG implementation used to compute commitments
* @param blobs Array of blob data as hex-prefixed strings
* @returns Array of lowercase hex-prefixed KZG commitments (one per blob)
*/
export const blobsToCommitments = (kzg, blobs) => {

@@ -56,2 +89,9 @@ const commitments = [];

};
/**
* EIP-4844: Computes KZG proofs for each blob/commitment pair.
* @param kzg KZG implementation used to compute proofs
* @param blobs Array of blob data as hex-prefixed strings
* @param commitments Array of corresponding blob commitments
* @returns Array of lowercase hex-prefixed proofs (aligned with input order)
*/
export const blobsToProofs = (kzg, blobs, commitments) => {

@@ -62,3 +102,3 @@ const proofs = blobs.map((blob, ctx) => kzg.computeBlobProof(blob, commitments[ctx]).toLowerCase());

/**
* Converts a vector commitment for a given data blob to its versioned hash. For 4844, this version
* EIP-4844: Converts a vector commitment for a given data blob to its versioned hash. For 4844, this version
* number will be 0x01 for KZG vector commitments but could be different if future vector commitment

@@ -77,3 +117,3 @@ * types are introduced

/**
* Generate an array of versioned hashes from corresponding kzg commitments
* EIP-4844: Generate an array of versioned hashes from corresponding kzg commitments
* @param commitments array of kzg commitments

@@ -90,2 +130,41 @@ * @returns array of versioned hashes

};
/**
* EIP-7594: Expands blobs into their extended cells using the provided KZG implementation.
* @param kzg KZG implementation capable of computing cells
* @param blobs Array of blob data as hex-prefixed strings
* @returns Tuple of [cells, indices], where cells are hex strings and indices are 0..127
*/
export const blobsToCells = (kzg, blobs) => {
const cells = blobs.reduce((acc, elem) => {
return [...acc, ...kzg.computeCells(elem)];
}, []);
const indices = Array.from({ length: CELLS_PER_EXT_BLOB }, (_, i) => i);
return [cells, indices];
};
/**
* EIP-7594: Computes extended cells and corresponding proofs for the given blobs.
* @param kzg KZG implementation capable of computing cells and proofs
* @param blobs Array of blob data as hex-prefixed strings
* @returns Tuple of [cells, proofs, indices]; indices are 0..127
*/
export const blobsToCellsAndProofs = (kzg, blobs) => {
const blobsAndCells = blobs.reduce(([cellsAcc, proofsAcc], elem) => {
const blobCellsAndProofs = kzg.computeCellsAndProofs(elem);
return [
[...cellsAcc, ...blobCellsAndProofs[0]],
[...proofsAcc, ...blobCellsAndProofs[1]],
];
}, [[], []]);
const indices = Array.from({ length: CELLS_PER_EXT_BLOB }, (_, i) => i);
return [...blobsAndCells, indices];
};
/**
* EIP-7594: Computes cell proofs for the given blobs.
* @param kzg KZG implementation capable of computing cell proofs
* @param blobs Array of blob data as hex-prefixed strings
* @returns Array of lowercase hex-prefixed cell proofs (aligned with input order)
*/
export const blobsToCellProofs = (kzg, blobs) => {
return blobsToCellsAndProofs(kzg, blobs)[1];
};
//# sourceMappingURL=blobs.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"blobs.js","sourceRoot":"","sources":["../../src/blobs.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"blobs.js","sourceRoot":"","sources":["../../src/blobs.ts"],"names":[],"mappings":"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"}

@@ -199,3 +199,3 @@ import { bytesToHex as _bytesToUnprefixedHex } from 'ethereum-cryptography/utils.js';

*/
export declare const concatBytes: (...arrays: Uint8Array[]) => Uint8Array;
export declare const concatBytes: (...arrays: Uint8Array[]) => Uint8Array<ArrayBuffer>;
/**

@@ -202,0 +202,0 @@ * @notice Convert a Uint8Array to a 32-bit integer

@@ -1,1 +0,1 @@

{"version":3,"file":"bytes.d.ts","sourceRoot":"","sources":["../../src/bytes.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"bytes.d.ts","sourceRoot":"","sources":["../../src/bytes.ts"],"names":[],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"bytes.js","sourceRoot":"","sources":["../../src/bytes.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"bytes.js","sourceRoot":"","sources":["../../src/bytes.ts"],"names":[],"mappings":"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"}

@@ -53,2 +53,9 @@ /**

/**
* EIP-7934: RLP Execution Block Size Limit constants
* Maximum RLP-encoded block size to 10 MiB, with a 2 MiB margin for beacon block sizes
*/
export declare const MAX_BLOCK_SIZE = 10485760;
export declare const SAFETY_MARGIN = 2097152;
export declare const MAX_RLP_BLOCK_SIZE: number;
/**
* BigInt constants

@@ -55,0 +62,0 @@ */

@@ -1,1 +0,1 @@

{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,eAAO,MAAM,UAAU,QAA+B,CAAA;AAEtD;;GAEG;AACH,eAAO,MAAM,WAAW,QAEvB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QAE9B,CAAA;AAED,eAAO,MAAM,eAAe,QAAoB,CAAA;AAChD,eAAO,MAAM,qBAAqB,QAAgC,CAAA;AAElE;;GAEG;AACH,eAAO,MAAM,UAAU,QAEtB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,uEAAuE,CAAA;AAEpG;;GAEG;AACH,eAAO,MAAM,cAAc,6BAA+B,CAAA;AAE1D;;GAEG;AACH,eAAO,MAAM,qBAAqB,uEACoC,CAAA;AAEtE;;GAEG;AACH,eAAO,MAAM,mBAAmB,6BAAoC,CAAA;AAEpE;;GAEG;AACH,eAAO,MAAM,eAAe,uEAAuE,CAAA;AAEnG;;GAEG;AACH,eAAO,MAAM,aAAa,6BAA8B,CAAA;AAExD,eAAO,MAAM,WAAW,6BAA2B,CAAA;AAEnD;;GAEG;AACH,eAAO,MAAM,gBAAgB,yBAA0B,CAAA;AAEvD,eAAO,MAAM,2BAA2B,KAAK,CAAA;AAE7C,eAAO,MAAM,wBAAwB,6CAA6C,CAAA;AAElF;;GAEG;AAEH,eAAO,MAAM,WAAW,QAAa,CAAA;AAErC,eAAO,MAAM,QAAQ,QAAY,CAAA;AACjC,eAAO,MAAM,QAAQ,QAAY,CAAA;AACjC,eAAO,MAAM,QAAQ,QAAY,CAAA;AACjC,eAAO,MAAM,QAAQ,QAAY,CAAA;AACjC,eAAO,MAAM,QAAQ,QAAY,CAAA;AACjC,eAAO,MAAM,QAAQ,QAAY,CAAA;AAEjC,eAAO,MAAM,SAAS,QAAa,CAAA;AACnC,eAAO,MAAM,SAAS,QAAa,CAAA;AACnC,eAAO,MAAM,SAAS,QAAa,CAAA;AACnC,eAAO,MAAM,SAAS,QAAa,CAAA;AACnC,eAAO,MAAM,SAAS,QAAa,CAAA;AAEnC,eAAO,MAAM,UAAU,QAAc,CAAA;AACrC,eAAO,MAAM,UAAU,QAAc,CAAA;AACrC,eAAO,MAAM,UAAU,QAAc,CAAA;AAErC,eAAO,MAAM,SAAS,QAAa,CAAA;AACnC,eAAO,MAAM,UAAU,QAAc,CAAA;AACrC,eAAO,MAAM,UAAU,QAAc,CAAA;AACrC,eAAO,MAAM,UAAU,QAAc,CAAA;AACrC,eAAO,MAAM,aAAa,QAAwC,CAAA;AAClE,eAAO,MAAM,cAAc,QAA4D,CAAA;AACvF,eAAO,MAAM,cAAc,QACmD,CAAA;AAC9E,eAAO,MAAM,cAAc,QAAyB,CAAA"}
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,eAAO,MAAM,UAAU,QAA+B,CAAA;AAEtD;;GAEG;AACH,eAAO,MAAM,WAAW,QAEvB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QAE9B,CAAA;AAED,eAAO,MAAM,eAAe,QAAoB,CAAA;AAChD,eAAO,MAAM,qBAAqB,QAAgC,CAAA;AAElE;;GAEG;AACH,eAAO,MAAM,UAAU,QAEtB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,uEAAuE,CAAA;AAEpG;;GAEG;AACH,eAAO,MAAM,cAAc,6BAA+B,CAAA;AAE1D;;GAEG;AACH,eAAO,MAAM,qBAAqB,uEACoC,CAAA;AAEtE;;GAEG;AACH,eAAO,MAAM,mBAAmB,6BAAoC,CAAA;AAEpE;;GAEG;AACH,eAAO,MAAM,eAAe,uEAAuE,CAAA;AAEnG;;GAEG;AACH,eAAO,MAAM,aAAa,6BAA8B,CAAA;AAExD,eAAO,MAAM,WAAW,6BAA2B,CAAA;AAEnD;;GAEG;AACH,eAAO,MAAM,gBAAgB,yBAA0B,CAAA;AAEvD,eAAO,MAAM,2BAA2B,KAAK,CAAA;AAE7C,eAAO,MAAM,wBAAwB,6CAA6C,CAAA;AAElF;;;GAGG;AACH,eAAO,MAAM,cAAc,WAAa,CAAA;AACxC,eAAO,MAAM,aAAa,UAAY,CAAA;AACtC,eAAO,MAAM,kBAAkB,QAAiC,CAAA;AAEhE;;GAEG;AAEH,eAAO,MAAM,WAAW,QAAa,CAAA;AAErC,eAAO,MAAM,QAAQ,QAAY,CAAA;AACjC,eAAO,MAAM,QAAQ,QAAY,CAAA;AACjC,eAAO,MAAM,QAAQ,QAAY,CAAA;AACjC,eAAO,MAAM,QAAQ,QAAY,CAAA;AACjC,eAAO,MAAM,QAAQ,QAAY,CAAA;AACjC,eAAO,MAAM,QAAQ,QAAY,CAAA;AAEjC,eAAO,MAAM,SAAS,QAAa,CAAA;AACnC,eAAO,MAAM,SAAS,QAAa,CAAA;AACnC,eAAO,MAAM,SAAS,QAAa,CAAA;AACnC,eAAO,MAAM,SAAS,QAAa,CAAA;AACnC,eAAO,MAAM,SAAS,QAAa,CAAA;AAEnC,eAAO,MAAM,UAAU,QAAc,CAAA;AACrC,eAAO,MAAM,UAAU,QAAc,CAAA;AACrC,eAAO,MAAM,UAAU,QAAc,CAAA;AAErC,eAAO,MAAM,SAAS,QAAa,CAAA;AACnC,eAAO,MAAM,UAAU,QAAc,CAAA;AACrC,eAAO,MAAM,UAAU,QAAc,CAAA;AACrC,eAAO,MAAM,UAAU,QAAc,CAAA;AACrC,eAAO,MAAM,aAAa,QAAwC,CAAA;AAClE,eAAO,MAAM,cAAc,QAA4D,CAAA;AACvF,eAAO,MAAM,cAAc,QACmD,CAAA;AAC9E,eAAO,MAAM,cAAc,QAAyB,CAAA"}

@@ -56,2 +56,9 @@ import { secp256k1 } from 'ethereum-cryptography/secp256k1.js';

/**
* EIP-7934: RLP Execution Block Size Limit constants
* Maximum RLP-encoded block size to 10 MiB, with a 2 MiB margin for beacon block sizes
*/
export const MAX_BLOCK_SIZE = 10485760; // 10 MiB
export const SAFETY_MARGIN = 2097152; // 2 MiB
export const MAX_RLP_BLOCK_SIZE = MAX_BLOCK_SIZE - SAFETY_MARGIN; // 8 MiB
/**
* BigInt constants

@@ -58,0 +65,0 @@ */

@@ -1,1 +0,1 @@

{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"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"}

@@ -54,3 +54,2 @@ /**

export * from './tasks.ts';
export * from './verkle.ts';
//# sourceMappingURL=index.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,gBAAgB,CAAA;AAE9B;;GAEG;AACH,cAAc,aAAa,CAAA;AAE3B;;GAEG;AACH,cAAc,YAAY,CAAA;AAE1B;;GAEG;AACH,cAAc,cAAc,CAAA;AAE5B;;GAEG;AACH,cAAc,cAAc,CAAA;AAE5B;;GAEG;AACH,cAAc,SAAS,CAAA;AAEvB;;GAEG;AACH,cAAc,iBAAiB,CAAA;AAE/B;;GAEG;AACH,cAAc,gBAAgB,CAAA;AAE9B;;GAEG;AACH,cAAc,YAAY,CAAA;AAE1B;;GAEG;AACH,cAAc,YAAY,CAAA;AAE1B;;GAEG;AACH,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,OAAO,EACL,kBAAkB,EAClB,SAAS,EACT,QAAQ,EACR,aAAa,EACb,OAAO,EACP,WAAW,EACX,SAAS,EACT,cAAc,EACd,OAAO,GACR,MAAM,eAAe,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,gBAAgB,CAAA;AAE9B;;GAEG;AACH,cAAc,aAAa,CAAA;AAE3B;;GAEG;AACH,cAAc,YAAY,CAAA;AAE1B;;GAEG;AACH,cAAc,cAAc,CAAA;AAE5B;;GAEG;AACH,cAAc,cAAc,CAAA;AAE5B;;GAEG;AACH,cAAc,SAAS,CAAA;AAEvB;;GAEG;AACH,cAAc,iBAAiB,CAAA;AAE/B;;GAEG;AACH,cAAc,gBAAgB,CAAA;AAE9B;;GAEG;AACH,cAAc,YAAY,CAAA;AAE1B;;GAEG;AACH,cAAc,YAAY,CAAA;AAE1B;;GAEG;AACH,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,OAAO,EACL,kBAAkB,EAClB,SAAS,EACT,QAAQ,EACR,aAAa,EACb,OAAO,EACP,WAAW,EACX,SAAS,EACT,cAAc,EACd,OAAO,GACR,MAAM,eAAe,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA"}

@@ -54,3 +54,2 @@ /**

export * from "./tasks.js";
export * from "./verkle.js";
//# sourceMappingURL=index.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,gBAAgB,CAAA;AAE9B;;GAEG;AACH,cAAc,aAAa,CAAA;AAE3B;;GAEG;AACH,cAAc,YAAY,CAAA;AAE1B;;GAEG;AACH,cAAc,cAAc,CAAA;AAE5B;;GAEG;AACH,cAAc,cAAc,CAAA;AAE5B;;GAEG;AACH,cAAc,SAAS,CAAA;AAEvB;;GAEG;AACH,cAAc,iBAAiB,CAAA;AAE/B;;GAEG;AACH,cAAc,gBAAgB,CAAA;AAE9B;;GAEG;AACH,cAAc,YAAY,CAAA;AAE1B;;GAEG;AACH,cAAc,YAAY,CAAA;AAE1B;;GAEG;AACH,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,OAAO,EACL,kBAAkB,EAClB,SAAS,EACT,QAAQ,EACR,aAAa,EACb,OAAO,EACP,WAAW,EACX,SAAS,EACT,cAAc,EACd,OAAO,GACR,MAAM,eAAe,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,gBAAgB,CAAA;AAE9B;;GAEG;AACH,cAAc,aAAa,CAAA;AAE3B;;GAEG;AACH,cAAc,YAAY,CAAA;AAE1B;;GAEG;AACH,cAAc,cAAc,CAAA;AAE5B;;GAEG;AACH,cAAc,cAAc,CAAA;AAE5B;;GAEG;AACH,cAAc,SAAS,CAAA;AAEvB;;GAEG;AACH,cAAc,iBAAiB,CAAA;AAE/B;;GAEG;AACH,cAAc,gBAAgB,CAAA;AAE9B;;GAEG;AACH,cAAc,YAAY,CAAA;AAE1B;;GAEG;AACH,cAAc,YAAY,CAAA;AAE1B;;GAEG;AACH,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,OAAO,EACL,kBAAkB,EAClB,SAAS,EACT,QAAQ,EACR,aAAa,EACb,OAAO,EACP,WAAW,EACX,SAAS,EACT,cAAc,EACd,OAAO,GACR,MAAM,eAAe,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA"}

@@ -9,3 +9,7 @@ /**

verifyBlobProofBatch(blobs: string[], expectedKZGCommitments: string[], KZGProofs: string[]): boolean;
computeCells(blob: string): string[];
computeCellsAndProofs(blob: string): [string[], string[]];
recoverCellsAndProofs(indices: number[], cells: string[]): [string[], string[]];
verifyCellKzgProofBatch(commitments: string[], indices: number[], cells: string[], proofs: string[]): boolean;
}
//# sourceMappingURL=kzg.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"kzg.d.ts","sourceRoot":"","sources":["../../src/kzg.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,GAAG;IAClB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;IACzC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAAA;IAC1D,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAA;IACnF,oBAAoB,CAClB,KAAK,EAAE,MAAM,EAAE,EACf,sBAAsB,EAAE,MAAM,EAAE,EAChC,SAAS,EAAE,MAAM,EAAE,GAClB,OAAO,CAAA;CACX"}
{"version":3,"file":"kzg.d.ts","sourceRoot":"","sources":["../../src/kzg.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,GAAG;IAElB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;IACzC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAAA;IAC1D,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAA;IACnF,oBAAoB,CAClB,KAAK,EAAE,MAAM,EAAE,EACf,sBAAsB,EAAE,MAAM,EAAE,EAChC,SAAS,EAAE,MAAM,EAAE,GAClB,OAAO,CAAA;IAEV,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACpC,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;IACzD,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;IAC/E,uBAAuB,CACrB,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,EAAE,MAAM,EAAE,EACjB,KAAK,EAAE,MAAM,EAAE,EACf,MAAM,EAAE,MAAM,EAAE,GACf,OAAO,CAAA;CACX"}
{
"name": "@ethereumjs/util",
"version": "10.0.0",
"version": "10.1.0",
"description": "A collection of utility functions for Ethereum",

@@ -92,3 +92,3 @@ "keywords": ["ethereum", "utilities", "utils"],

"test": "npm run test:node && npm run test:browser",
"test:browser": "npx vitest run --config=../../config/vitest.config.browser.mts",
"test:browser": "npx vitest run --config=./vitest.config.browser.mts",
"test:node": "npx vitest run -c ../../config/vitest.config.mts",

@@ -98,9 +98,9 @@ "tsc": "../../config/cli/ts-compile.sh"

"dependencies": {
"@ethereumjs/rlp": "^10.0.0",
"@ethereumjs/rlp": "^10.1.0",
"ethereum-cryptography": "^3.2.0"
},
"devDependencies": {
"@paulmillr/trusted-setups": "^0.1.2",
"kzg-wasm": "^0.5.0",
"micro-eth-signer": "^0.14.0"
"@paulmillr/trusted-setups": "^0.2.0",
"kzg-wasm": "1.0.0",
"micro-eth-signer": "^0.15.0"
},

@@ -107,0 +107,0 @@ "engines": {

@@ -106,3 +106,3 @@ # @ethereumjs/util `v10`

Module providing helpers for 4844 blobs and versioned hashes.
Module providing helpers around EIP-4844 blobs for creating blobs, associated KZG commitments and proofs as well as versioned hashes. It also provides helpers for EIP-7594 conformant blobs for creating extended cells and corresponding proofs.

@@ -319,3 +319,3 @@ ```ts

See our organizational [documentation](https://ethereumjs.readthedocs.io) for an introduction to `EthereumJS` as well as information on current standards and best practices. If you want to join for work or carry out improvements on the libraries, please review our [contribution guidelines](https://ethereumjs.readthedocs.io/en/latest/contributing.html) first.
The `EthereumJS` GitHub organization and its repositories are managed by members of the former Ethereum Foundation JavaScript team and the broader Ethereum community. If you want to join for work or carry out improvements on the libraries see the [developer docs](../../DEVELOPER.md) for an overview of current standards and tools and review our [code of conduct](../../CODE_OF_CONDUCT.md).

@@ -322,0 +322,0 @@ ## License

@@ -73,3 +73,3 @@ import { RLP } from '@ethereumjs/rlp'

* Account class to load and maintain the basic account objects.
* Supports partial loading and access required for verkle with null
* Supports partial loading and access required for stateless with null
* as the placeholder.

@@ -76,0 +76,0 @@ *

@@ -11,11 +11,19 @@ import { sha256 } from 'ethereum-cryptography/sha256.js'

*/
const BYTES_PER_FIELD_ELEMENT = 32
const FIELD_ELEMENTS_PER_BLOB = 4096
const USEFUL_BYTES_PER_BLOB = 32 * FIELD_ELEMENTS_PER_BLOB
const MAX_BLOBS_PER_TX = 2
const MAX_USEFUL_BYTES_PER_TX = USEFUL_BYTES_PER_BLOB * MAX_BLOBS_PER_TX - 1
const BYTES_PER_FIELD_ELEMENT = 32 // EIP-4844
const FIELD_ELEMENTS_PER_BLOB = 4096 // EIP-4844
const BLOB_SIZE = BYTES_PER_FIELD_ELEMENT * FIELD_ELEMENTS_PER_BLOB
function get_padded(data: Uint8Array, blobs_len: number): Uint8Array {
const pData = new Uint8Array(blobs_len * USEFUL_BYTES_PER_BLOB)
const MAX_BLOBS_PER_TX = 6 // EIP-7691: Blob throughput increase, Pectra HF
const MAX_BLOB_BYTES_PER_TX = BLOB_SIZE * MAX_BLOBS_PER_TX - 1
export const CELLS_PER_EXT_BLOB = 128 // EIP-4844, Consensus Spec, 2 * FIELD_ELEMENTS_PER_BLOB // 64 (FIELD_ELEMENTS_PER_CELL)
/**
* Pads input data to blob boundaries with 0x80 marker and zeros.
* @param data Input data to pad
* @param blobs_len Number of blobs the data should span
* @returns Padded data aligned to blob boundaries
*/
function getPadded(data: Uint8Array, blobs_len: number): Uint8Array {
const pData = new Uint8Array(blobs_len * BLOB_SIZE)
pData.set(data)

@@ -26,3 +34,9 @@ pData[data.byteLength] = 0x80

function get_blob(data: Uint8Array): PrefixedHexString {
/**
* Converts arbitrary byte data into EIP-4844 blob format.
* Splits data into 4096 field elements of 32 bytes each, with proper alignment.
* @param data Input data (must be exactly BLOB_SIZE bytes)
* @returns Hex-prefixed blob string
*/
function getBlob(data: Uint8Array): PrefixedHexString {
const blob = new Uint8Array(BLOB_SIZE)

@@ -38,21 +52,37 @@ for (let i = 0; i < FIELD_ELEMENTS_PER_BLOB; i++) {

export const getBlobs = (input: string) => {
const data = utf8ToBytes(input)
const len = data.byteLength
if (len === 0) {
throw Error('invalid blob data')
}
if (len > MAX_USEFUL_BYTES_PER_TX) {
throw Error('blob data is too large')
}
/**
* EIP-4844: Converts UTF-8 string(s) into EIP-4844 blob format.
*
* Each input string is converted to UTF-8 bytes, padded with 0x80 followed by zeros
* to align with blob boundaries, and encoded as one or more blobs depending on size.
* Multiple inputs are processed sequentially, with each input contributing its own blob(s).
*
* @param input Single UTF-8 string or array of UTF-8 strings to encode
* @throws Error with message 'invalid blob data' if any input string is empty
* @throws Error with message 'blob data is too large' if any single input exceeds MAX_USEFUL_BYTES_PER_TX
* @returns Array of hex-prefixed blob strings (0x...), one blob per 131,071 useful bytes per input
*/
export const getBlobs = (input: string | string[]) => {
const inputArray = Array.isArray(input) ? input : [input]
const blobs: PrefixedHexString[] = []
const blobs_len = Math.ceil(len / USEFUL_BYTES_PER_BLOB)
for (const input of inputArray) {
const data = utf8ToBytes(input)
const len = data.byteLength
if (len === 0) {
throw Error('invalid blob data (0 bytes)')
}
if (len > MAX_BLOB_BYTES_PER_TX) {
throw Error(`blob data is too large (${len} bytes > ${MAX_BLOB_BYTES_PER_TX} bytes)`)
}
const pData = get_padded(data, blobs_len)
const blobs_len = Math.ceil(len / BLOB_SIZE)
const blobs: PrefixedHexString[] = []
for (let i = 0; i < blobs_len; i++) {
const chunk = pData.subarray(i * USEFUL_BYTES_PER_BLOB, (i + 1) * USEFUL_BYTES_PER_BLOB)
const blob = get_blob(chunk)
blobs.push(blob)
const pData = getPadded(data, blobs_len)
for (let i = 0; i < blobs_len; i++) {
const chunk = pData.subarray(i * BLOB_SIZE, (i + 1) * BLOB_SIZE)
const blob = getBlob(chunk)
blobs.push(blob)
}
}

@@ -63,2 +93,8 @@

/**
* EIP-4844: Computes KZG commitments for a set of blobs.
* @param kzg KZG implementation used to compute commitments
* @param blobs Array of blob data as hex-prefixed strings
* @returns Array of lowercase hex-prefixed KZG commitments (one per blob)
*/
export const blobsToCommitments = (kzg: KZG, blobs: PrefixedHexString[]) => {

@@ -72,2 +108,9 @@ const commitments: PrefixedHexString[] = []

/**
* EIP-4844: Computes KZG proofs for each blob/commitment pair.
* @param kzg KZG implementation used to compute proofs
* @param blobs Array of blob data as hex-prefixed strings
* @param commitments Array of corresponding blob commitments
* @returns Array of lowercase hex-prefixed proofs (aligned with input order)
*/
export const blobsToProofs = (

@@ -86,3 +129,3 @@ kzg: KZG,

/**
* Converts a vector commitment for a given data blob to its versioned hash. For 4844, this version
* EIP-4844: Converts a vector commitment for a given data blob to its versioned hash. For 4844, this version
* number will be 0x01 for KZG vector commitments but could be different if future vector commitment

@@ -105,3 +148,3 @@ * types are introduced

/**
* Generate an array of versioned hashes from corresponding kzg commitments
* EIP-4844: Generate an array of versioned hashes from corresponding kzg commitments
* @param commitments array of kzg commitments

@@ -118,1 +161,57 @@ * @returns array of versioned hashes

}
/**
* EIP-7594: Expands blobs into their extended cells using the provided KZG implementation.
* @param kzg KZG implementation capable of computing cells
* @param blobs Array of blob data as hex-prefixed strings
* @returns Tuple of [cells, indices], where cells are hex strings and indices are 0..127
*/
export const blobsToCells = (
kzg: KZG,
blobs: PrefixedHexString[],
): [PrefixedHexString[], number[]] => {
const cells = blobs.reduce((acc, elem) => {
return [...acc, ...(kzg.computeCells(elem) as PrefixedHexString[])]
}, [] as PrefixedHexString[])
const indices = Array.from({ length: CELLS_PER_EXT_BLOB }, (_, i) => i)
return [cells, indices]
}
/**
* EIP-7594: Computes extended cells and corresponding proofs for the given blobs.
* @param kzg KZG implementation capable of computing cells and proofs
* @param blobs Array of blob data as hex-prefixed strings
* @returns Tuple of [cells, proofs, indices]; indices are 0..127
*/
export const blobsToCellsAndProofs = (
kzg: KZG,
blobs: PrefixedHexString[],
): [PrefixedHexString[], PrefixedHexString[], number[]] => {
const blobsAndCells = blobs.reduce(
([cellsAcc, proofsAcc], elem) => {
const blobCellsAndProofs = kzg.computeCellsAndProofs(elem) as [
PrefixedHexString[],
PrefixedHexString[],
]
return [
[...cellsAcc, ...blobCellsAndProofs[0]],
[...proofsAcc, ...blobCellsAndProofs[1]],
]
},
[[] as PrefixedHexString[], [] as PrefixedHexString[]],
)
const indices = Array.from({ length: CELLS_PER_EXT_BLOB }, (_, i) => i)
return [...blobsAndCells, indices] as [PrefixedHexString[], PrefixedHexString[], number[]]
}
/**
* EIP-7594: Computes cell proofs for the given blobs.
* @param kzg KZG implementation capable of computing cell proofs
* @param blobs Array of blob data as hex-prefixed strings
* @returns Array of lowercase hex-prefixed cell proofs (aligned with input order)
*/
export const blobsToCellProofs = (kzg: KZG, blobs: PrefixedHexString[]): PrefixedHexString[] => {
return blobsToCellsAndProofs(kzg, blobs)[1] as PrefixedHexString[]
}

@@ -431,6 +431,6 @@ import { getRandomBytesSync } from 'ethereum-cryptography/random.js'

*/
export const concatBytes = (...arrays: Uint8Array[]): Uint8Array => {
if (arrays.length === 1) return arrays[0]
export const concatBytes = (...arrays: Uint8Array[]): Uint8Array<ArrayBuffer> => {
if (arrays.length === 1) return arrays[0] as Uint8Array<ArrayBuffer>
const length = arrays.reduce((a, arr) => a + arr.length, 0)
const result = new Uint8Array(length)
const result = new Uint8Array(length) as Uint8Array<ArrayBuffer>
for (let i = 0, pad = 0; i < arrays.length; i++) {

@@ -437,0 +437,0 @@ const arr = arrays[i]

@@ -80,2 +80,10 @@ import { secp256k1 } from 'ethereum-cryptography/secp256k1.js'

/**
* EIP-7934: RLP Execution Block Size Limit constants
* Maximum RLP-encoded block size to 10 MiB, with a 2 MiB margin for beacon block sizes
*/
export const MAX_BLOCK_SIZE = 10_485_760 // 10 MiB
export const SAFETY_MARGIN = 2_097_152 // 2 MiB
export const MAX_RLP_BLOCK_SIZE = MAX_BLOCK_SIZE - SAFETY_MARGIN // 8 MiB
/**
* BigInt constants

@@ -82,0 +90,0 @@ */

@@ -74,2 +74,1 @@ /**

export * from './tasks.ts'
export * from './verkle.ts'

@@ -5,2 +5,3 @@ /**

export interface KZG {
// eip-4844
blobToKzgCommitment(blob: string): string

@@ -14,2 +15,12 @@ computeBlobProof(blob: string, commitment: string): string

): boolean
// eip-7594
computeCells(blob: string): string[]
computeCellsAndProofs(blob: string): [string[], string[]]
recoverCellsAndProofs(indices: number[], cells: string[]): [string[], string[]]
verifyCellKzgProofBatch(
commitments: string[],
indices: number[],
cells: string[],
proofs: string[],
): boolean
}
import type { Account } from './account.ts';
import type { Address } from './address.ts';
import type { PrefixedHexString } from './types.ts';
/**
* Verkle related constants and helper functions
*
* Experimental (do not use in production!)
*/
export interface VerkleCrypto {
getTreeKey: (address: Uint8Array, treeIndex: Uint8Array, subIndex: number) => Uint8Array;
getTreeKeyHash: (address: Uint8Array, treeIndexLE: Uint8Array) => Uint8Array;
updateCommitment: (commitment: Uint8Array, commitmentIndex: number, oldScalarValue: Uint8Array, newScalarValue: Uint8Array) => Uint8Array;
zeroCommitment: Uint8Array;
verifyExecutionWitnessPreState: (prestateRoot: string, execution_witness_json: string) => boolean;
hashCommitment: (commitment: Uint8Array) => Uint8Array;
serializeCommitment: (commitment: Uint8Array) => Uint8Array;
createProof: (bytes: ProverInput[]) => Uint8Array;
verifyProof: (proof: Uint8Array, verifierInput: VerifierInput[]) => boolean;
commitToScalars: (vector: Uint8Array[]) => Uint8Array;
}
export interface ProverInput {
serializedCommitment: Uint8Array;
vector: Uint8Array[];
indices: number[];
}
export interface VerifierInput {
serializedCommitment: Uint8Array;
indexValuePairs: Array<{
index: number;
value: Uint8Array;
}>;
}
/**
* @dev Returns the 31-bytes verkle tree stem for a given address and tree index.
* @dev Assumes that the verkle node width = 256
* @param {VerkleCrypto} verkleCrypto The {@link VerkleCrypto} foreign function interface object from Verkle cryptography
* @param {Address} address The address to generate the tree key for.
* @param treeIndex The index of the tree to generate the key for. Defaults to 0.
* @return The 31-bytes verkle tree stem as a Uint8Array.
*/
export declare function getVerkleStem(verkleCrypto: VerkleCrypto, address: Address, treeIndex?: number | bigint): Uint8Array;
/**
* Verifies that the executionWitness is valid for the given prestateRoot.
* @param {VerkleCrypto} verkleCrypto The {@link VerkleCrypto} foreign function interface object from Verkle cryptography
* @param {VerkleExecutionWitness} executionWitness The verkle execution witness.
* @returns {boolean} Whether or not the executionWitness belongs to the prestateRoot.
*/
export declare function verifyVerkleProof(verkleCrypto: VerkleCrypto, executionWitness: VerkleExecutionWitness): boolean;
export interface VerkleProof {
commitmentsByPath: PrefixedHexString[];
d: PrefixedHexString;
depthExtensionPresent: PrefixedHexString;
ipaProof: {
cl: PrefixedHexString[];
cr: PrefixedHexString[];
finalEvaluation: PrefixedHexString;
};
otherStems: PrefixedHexString[];
}
export interface VerkleStateDiff {
stem: PrefixedHexString;
suffixDiffs: {
currentValue: PrefixedHexString | null;
newValue: PrefixedHexString | null;
suffix: number | string;
}[];
}
/**
* Experimental, object format could eventual change.
* An object that provides the state and proof necessary for verkle stateless execution
* */
export interface VerkleExecutionWitness {
/**
* The stateRoot of the parent block
*/
parentStateRoot: PrefixedHexString;
/**
* An array of state diffs.
* Each item corresponding to state accesses or state modifications of the block.
* In the current design, it also contains the resulting state of the block execution (post-state).
*/
stateDiff: VerkleStateDiff[];
/**
* The verkle proof for the block.
* Proves that the provided stateDiff belongs to the canonical verkle tree.
*/
verkleProof: VerkleProof;
}
export type VerkleLeafType = (typeof VerkleLeafType)[keyof typeof VerkleLeafType];
export declare const VerkleLeafType: {
readonly BasicData: 0;
readonly CodeHash: 1;
};
export type VerkleLeafBasicData = {
version: number;
nonce: bigint;
balance: bigint;
codeSize: number;
};
export declare const VERKLE_VERSION_OFFSET = 0;
export declare const VERKLE_CODE_SIZE_OFFSET = 5;
export declare const VERKLE_NONCE_OFFSET = 8;
export declare const VERKLE_BALANCE_OFFSET = 16;
export declare const VERKLE_VERSION_BYTES_LENGTH = 1;
export declare const VERKLE_CODE_SIZE_BYTES_LENGTH = 3;
export declare const VERKLE_NONCE_BYTES_LENGTH = 8;
export declare const VERKLE_BALANCE_BYTES_LENGTH = 16;
export declare const VERKLE_BASIC_DATA_LEAF_KEY: Uint8Array<ArrayBufferLike>;
export declare const VERKLE_CODE_HASH_LEAF_KEY: Uint8Array<ArrayBufferLike>;
export declare const VERKLE_CODE_CHUNK_SIZE = 31;
export declare const VERKLE_HEADER_STORAGE_OFFSET = 64;
export declare const VERKLE_CODE_OFFSET = 128;
export declare const VERKLE_NODE_WIDTH = 256;
export declare const VERKLE_MAIN_STORAGE_OFFSET: bigint;
/**
* @dev Returns the tree key for a given verkle tree stem, and sub index.
* @dev Assumes that the verkle node width = 256
* @param stem The 31-bytes verkle tree stem as a Uint8Array.
* @param subIndex The sub index of the tree to generate the key for as a Uint8Array.
* @return The tree key as a Uint8Array.
*/
export declare const getVerkleKey: (stem: Uint8Array, leaf: VerkleLeafType | Uint8Array) => Uint8Array<ArrayBufferLike>;
/**
* Calculates the position of the storage key in the Verkle tree, determining
* both the tree index (the node in the tree) and the subindex (the position within the node).
* @param {bigint} storageKey - The key representing a specific storage slot.
* @returns {Object} - An object containing the tree index and subindex
*/
export declare function getVerkleTreeIndicesForStorageSlot(storageKey: bigint): {
treeIndex: bigint;
subIndex: number;
};
/**
* Calculates the position of the code chunks in the Verkle tree, determining
* both the tree index (the node in the tree) and the subindex (the position within the node).
* @param {bigint} chunkId - The ID representing a specific chunk.
* @returns {Object} - An object containing the tree index and subindex
*/
export declare function getVerkleTreeIndicesForCodeChunk(chunkId: number): {
treeIndex: number;
subIndex: number;
};
/**
* Asynchronously calculates the Verkle tree key for the specified code chunk ID.
* @param {Address} address - The account address to access code for.
* @param {number} chunkId - The ID of the code chunk to retrieve.
* @param {VerkleCrypto} verkleCrypto - The cryptographic object used for Verkle-related operations.
* @returns {Promise<Uint8Array>} - A promise that resolves to the Verkle tree key as a byte array.
*/
export declare const getVerkleTreeKeyForCodeChunk: (address: Address, chunkId: number, verkleCrypto: VerkleCrypto) => Promise<Uint8Array<ArrayBufferLike>>;
export declare const chunkifyCode: (code: Uint8Array) => Uint8Array<ArrayBufferLike>[];
/**
* Asynchronously calculates the Verkle tree key for the specified storage slot.
* @param {Address} address - The account address to access code for.
* @param {bigint} storageKey - The storage slot key to retrieve the verkle key for.
* @param {VerkleCrypto} verkleCrypto - The cryptographic object used for Verkle-related operations.
* @returns {Promise<Uint8Array>} - A promise that resolves to the Verkle tree key as a byte array.
*/
export declare const getVerkleTreeKeyForStorageSlot: (address: Address, storageKey: bigint, verkleCrypto: VerkleCrypto) => Promise<Uint8Array<ArrayBufferLike>>;
/**
* This function extracts and decodes account header elements (version, nonce, code size, and balance)
* from an encoded `Uint8Array` representation of raw Verkle leaf-node basic data. Each component is sliced
* from the `encodedBasicData` array based on predefined offsets and lengths, and then converted
* to its appropriate type (integer or BigInt).
* @param {Uint8Array} encodedBasicData - The encoded Verkle leaf basic data containing the version, nonce,
* code size, and balance in a compact Uint8Array format.
* @returns {VerkleLeafBasicData} - An object containing the decoded version, nonce, code size, and balance.
*/
export declare function decodeVerkleLeafBasicData(encodedBasicData: Uint8Array): VerkleLeafBasicData;
/**
* This function takes a `VerkleLeafBasicData` object and encodes its properties
* (version, nonce, code size, and balance) into a compact `Uint8Array` format. Each
* property is serialized and padded to match the required byte lengths defined by
* EIP-6800. Additionally, 4 bytes are reserved for future use as specified
* in EIP-6800.
* @param {VerkleLeafBasicData} basicData - An object containing the version, nonce,
* code size, and balance to be encoded.
* @returns {Uint8Array} - A compact bytes representation of the account header basic data.
*/
export declare function encodeVerkleLeafBasicData(account: Account): Uint8Array;
/**
* Helper method to generate the suffixes for code chunks for putting code
* @param numChunks number of chunks to generate suffixes for
* @returns number[] - an array of numbers corresponding to the code chunks being put
*/
export declare const generateChunkSuffixes: (numChunks: number) => number[];
/**
* Helper method for generating the code stems necessary for putting code
* @param numChunks the number of code chunks to be put
* @param address the address of the account getting the code
* @param verkleCrypto an initialized {@link VerkleCrypto} object
* @returns an array of stems for putting code
*/
export declare const generateCodeStems: (numChunks: number, address: Address, verkleCrypto: VerkleCrypto) => Promise<Uint8Array[]>;
//# sourceMappingURL=verkle.d.ts.map
{"version":3,"file":"verkle.d.ts","sourceRoot":"","sources":["../../src/verkle.ts"],"names":[],"mappings":"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"}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateCodeStems = exports.generateChunkSuffixes = exports.getVerkleTreeKeyForStorageSlot = exports.chunkifyCode = exports.getVerkleTreeKeyForCodeChunk = exports.getVerkleKey = exports.VERKLE_MAIN_STORAGE_OFFSET = exports.VERKLE_NODE_WIDTH = exports.VERKLE_CODE_OFFSET = exports.VERKLE_HEADER_STORAGE_OFFSET = exports.VERKLE_CODE_CHUNK_SIZE = exports.VERKLE_CODE_HASH_LEAF_KEY = exports.VERKLE_BASIC_DATA_LEAF_KEY = exports.VERKLE_BALANCE_BYTES_LENGTH = exports.VERKLE_NONCE_BYTES_LENGTH = exports.VERKLE_CODE_SIZE_BYTES_LENGTH = exports.VERKLE_VERSION_BYTES_LENGTH = exports.VERKLE_BALANCE_OFFSET = exports.VERKLE_NONCE_OFFSET = exports.VERKLE_CODE_SIZE_OFFSET = exports.VERKLE_VERSION_OFFSET = exports.VerkleLeafType = void 0;
exports.getVerkleStem = getVerkleStem;
exports.verifyVerkleProof = verifyVerkleProof;
exports.getVerkleTreeIndicesForStorageSlot = getVerkleTreeIndicesForStorageSlot;
exports.getVerkleTreeIndicesForCodeChunk = getVerkleTreeIndicesForCodeChunk;
exports.decodeVerkleLeafBasicData = decodeVerkleLeafBasicData;
exports.encodeVerkleLeafBasicData = encodeVerkleLeafBasicData;
const bytes_ts_1 = require("./bytes.js");
/**
* @dev Returns the 31-bytes verkle tree stem for a given address and tree index.
* @dev Assumes that the verkle node width = 256
* @param {VerkleCrypto} verkleCrypto The {@link VerkleCrypto} foreign function interface object from Verkle cryptography
* @param {Address} address The address to generate the tree key for.
* @param treeIndex The index of the tree to generate the key for. Defaults to 0.
* @return The 31-bytes verkle tree stem as a Uint8Array.
*/
function getVerkleStem(verkleCrypto, address, treeIndex = 0) {
const address32 = (0, bytes_ts_1.setLengthLeft)(address.toBytes(), 32);
let treeIndexBytes;
if (typeof treeIndex === 'number') {
treeIndexBytes = (0, bytes_ts_1.setLengthRight)((0, bytes_ts_1.int32ToBytes)(Number(treeIndex), true), 32);
}
else {
treeIndexBytes = (0, bytes_ts_1.setLengthRight)((0, bytes_ts_1.bigIntToBytes)(BigInt(treeIndex), true).slice(0, 32), 32);
}
const treeStem = verkleCrypto.getTreeKey(address32, treeIndexBytes, 0).slice(0, 31);
return treeStem;
}
/**
* Verifies that the executionWitness is valid for the given prestateRoot.
* @param {VerkleCrypto} verkleCrypto The {@link VerkleCrypto} foreign function interface object from Verkle cryptography
* @param {VerkleExecutionWitness} executionWitness The verkle execution witness.
* @returns {boolean} Whether or not the executionWitness belongs to the prestateRoot.
*/
function verifyVerkleProof(verkleCrypto, executionWitness) {
const { parentStateRoot, ...parsedExecutionWitness } = executionWitness;
return verkleCrypto.verifyExecutionWitnessPreState(parentStateRoot, JSON.stringify(parsedExecutionWitness));
}
exports.VerkleLeafType = {
BasicData: 0,
CodeHash: 1,
};
exports.VERKLE_VERSION_OFFSET = 0;
exports.VERKLE_CODE_SIZE_OFFSET = 5;
exports.VERKLE_NONCE_OFFSET = 8;
exports.VERKLE_BALANCE_OFFSET = 16;
exports.VERKLE_VERSION_BYTES_LENGTH = 1;
exports.VERKLE_CODE_SIZE_BYTES_LENGTH = 3;
exports.VERKLE_NONCE_BYTES_LENGTH = 8;
exports.VERKLE_BALANCE_BYTES_LENGTH = 16;
exports.VERKLE_BASIC_DATA_LEAF_KEY = (0, bytes_ts_1.intToBytes)(exports.VerkleLeafType.BasicData);
exports.VERKLE_CODE_HASH_LEAF_KEY = (0, bytes_ts_1.intToBytes)(exports.VerkleLeafType.CodeHash);
exports.VERKLE_CODE_CHUNK_SIZE = 31;
exports.VERKLE_HEADER_STORAGE_OFFSET = 64;
exports.VERKLE_CODE_OFFSET = 128;
exports.VERKLE_NODE_WIDTH = 256;
exports.VERKLE_MAIN_STORAGE_OFFSET = BigInt(256) ** BigInt(exports.VERKLE_CODE_CHUNK_SIZE);
/**
* @dev Returns the tree key for a given verkle tree stem, and sub index.
* @dev Assumes that the verkle node width = 256
* @param stem The 31-bytes verkle tree stem as a Uint8Array.
* @param subIndex The sub index of the tree to generate the key for as a Uint8Array.
* @return The tree key as a Uint8Array.
*/
const getVerkleKey = (stem, leaf) => {
switch (leaf) {
case exports.VerkleLeafType.BasicData:
return (0, bytes_ts_1.concatBytes)(stem, exports.VERKLE_BASIC_DATA_LEAF_KEY);
case exports.VerkleLeafType.CodeHash:
return (0, bytes_ts_1.concatBytes)(stem, exports.VERKLE_CODE_HASH_LEAF_KEY);
default:
return (0, bytes_ts_1.concatBytes)(stem, leaf);
}
};
exports.getVerkleKey = getVerkleKey;
/**
* Calculates the position of the storage key in the Verkle tree, determining
* both the tree index (the node in the tree) and the subindex (the position within the node).
* @param {bigint} storageKey - The key representing a specific storage slot.
* @returns {Object} - An object containing the tree index and subindex
*/
function getVerkleTreeIndicesForStorageSlot(storageKey) {
let position;
if (storageKey < exports.VERKLE_CODE_OFFSET - exports.VERKLE_HEADER_STORAGE_OFFSET) {
position = BigInt(exports.VERKLE_HEADER_STORAGE_OFFSET) + storageKey;
}
else {
position = exports.VERKLE_MAIN_STORAGE_OFFSET + storageKey;
}
const treeIndex = position / BigInt(exports.VERKLE_NODE_WIDTH);
const subIndex = Number(position % BigInt(exports.VERKLE_NODE_WIDTH));
return { treeIndex, subIndex };
}
/**
* Calculates the position of the code chunks in the Verkle tree, determining
* both the tree index (the node in the tree) and the subindex (the position within the node).
* @param {bigint} chunkId - The ID representing a specific chunk.
* @returns {Object} - An object containing the tree index and subindex
*/
function getVerkleTreeIndicesForCodeChunk(chunkId) {
const treeIndex = Math.floor((exports.VERKLE_CODE_OFFSET + chunkId) / exports.VERKLE_NODE_WIDTH);
const subIndex = (exports.VERKLE_CODE_OFFSET + chunkId) % exports.VERKLE_NODE_WIDTH;
return { treeIndex, subIndex };
}
/**
* Asynchronously calculates the Verkle tree key for the specified code chunk ID.
* @param {Address} address - The account address to access code for.
* @param {number} chunkId - The ID of the code chunk to retrieve.
* @param {VerkleCrypto} verkleCrypto - The cryptographic object used for Verkle-related operations.
* @returns {Promise<Uint8Array>} - A promise that resolves to the Verkle tree key as a byte array.
*/
const getVerkleTreeKeyForCodeChunk = async (address, chunkId, verkleCrypto) => {
const { treeIndex, subIndex } = getVerkleTreeIndicesForCodeChunk(chunkId);
return (0, bytes_ts_1.concatBytes)(getVerkleStem(verkleCrypto, address, treeIndex), (0, bytes_ts_1.intToBytes)(subIndex));
};
exports.getVerkleTreeKeyForCodeChunk = getVerkleTreeKeyForCodeChunk;
// This code was written by robots based on the reference implementation in EIP-6800
const chunkifyCode = (code) => {
const PUSH1 = 0x60; // Assuming PUSH1 is defined as 0x60
const PUSH32 = 0x7f; // Assuming PUSH32 is defined as 0x7f
const PUSH_OFFSET = 0x5f; // Assuming PUSH_OFFSET is defined as 0x5f
// Calculate padding length
const paddingLength = (31 - (code.length % 31)) % 31;
const paddedCode = new Uint8Array(code.length + paddingLength);
paddedCode.set(code);
// Pre-allocate the bytesToExecData array
const bytesToExecData = new Uint8Array(paddedCode.length + 32);
let pos = 0;
while (pos < paddedCode.length) {
let pushdataBytes = 0;
if (PUSH1 <= paddedCode[pos] && paddedCode[pos] <= PUSH32) {
pushdataBytes = paddedCode[pos] - PUSH_OFFSET;
}
pos += 1;
for (let x = 0; x < pushdataBytes; x++) {
bytesToExecData[pos + x] = pushdataBytes - x;
}
pos += pushdataBytes;
}
// Pre-allocate the chunks array
const numChunks = Math.ceil(paddedCode.length / 31);
const chunks = new Array(numChunks);
for (let i = 0, pos = 0; i < numChunks; i++, pos += 31) {
const chunk = new Uint8Array(32);
chunk[0] = Math.min(bytesToExecData[pos], 31);
chunk.set(paddedCode.subarray(pos, pos + 31), 1);
chunks[i] = chunk;
}
return chunks;
};
exports.chunkifyCode = chunkifyCode;
/**
* Asynchronously calculates the Verkle tree key for the specified storage slot.
* @param {Address} address - The account address to access code for.
* @param {bigint} storageKey - The storage slot key to retrieve the verkle key for.
* @param {VerkleCrypto} verkleCrypto - The cryptographic object used for Verkle-related operations.
* @returns {Promise<Uint8Array>} - A promise that resolves to the Verkle tree key as a byte array.
*/
const getVerkleTreeKeyForStorageSlot = async (address, storageKey, verkleCrypto) => {
const { treeIndex, subIndex } = getVerkleTreeIndicesForStorageSlot(storageKey);
return (0, bytes_ts_1.concatBytes)(getVerkleStem(verkleCrypto, address, treeIndex), (0, bytes_ts_1.intToBytes)(subIndex));
};
exports.getVerkleTreeKeyForStorageSlot = getVerkleTreeKeyForStorageSlot;
/**
* This function extracts and decodes account header elements (version, nonce, code size, and balance)
* from an encoded `Uint8Array` representation of raw Verkle leaf-node basic data. Each component is sliced
* from the `encodedBasicData` array based on predefined offsets and lengths, and then converted
* to its appropriate type (integer or BigInt).
* @param {Uint8Array} encodedBasicData - The encoded Verkle leaf basic data containing the version, nonce,
* code size, and balance in a compact Uint8Array format.
* @returns {VerkleLeafBasicData} - An object containing the decoded version, nonce, code size, and balance.
*/
function decodeVerkleLeafBasicData(encodedBasicData) {
const versionBytes = encodedBasicData.slice(0, exports.VERKLE_VERSION_BYTES_LENGTH);
const nonceBytes = encodedBasicData.slice(exports.VERKLE_NONCE_OFFSET, exports.VERKLE_NONCE_OFFSET + exports.VERKLE_NONCE_BYTES_LENGTH);
const codeSizeBytes = encodedBasicData.slice(exports.VERKLE_CODE_SIZE_OFFSET, exports.VERKLE_CODE_SIZE_OFFSET + exports.VERKLE_CODE_SIZE_BYTES_LENGTH);
const balanceBytes = encodedBasicData.slice(exports.VERKLE_BALANCE_OFFSET, exports.VERKLE_BALANCE_OFFSET + exports.VERKLE_BALANCE_BYTES_LENGTH);
const version = (0, bytes_ts_1.bytesToInt32)(versionBytes);
const nonce = (0, bytes_ts_1.bytesToBigInt)(nonceBytes);
const codeSize = (0, bytes_ts_1.bytesToInt32)(codeSizeBytes);
const balance = (0, bytes_ts_1.bytesToBigInt)(balanceBytes);
return { version, nonce, codeSize, balance };
}
/**
* This function takes a `VerkleLeafBasicData` object and encodes its properties
* (version, nonce, code size, and balance) into a compact `Uint8Array` format. Each
* property is serialized and padded to match the required byte lengths defined by
* EIP-6800. Additionally, 4 bytes are reserved for future use as specified
* in EIP-6800.
* @param {VerkleLeafBasicData} basicData - An object containing the version, nonce,
* code size, and balance to be encoded.
* @returns {Uint8Array} - A compact bytes representation of the account header basic data.
*/
function encodeVerkleLeafBasicData(account) {
const encodedVersion = (0, bytes_ts_1.setLengthLeft)((0, bytes_ts_1.int32ToBytes)(account.version), exports.VERKLE_VERSION_BYTES_LENGTH);
// Per EIP-6800, bytes 1-4 are reserved for future use
const reservedBytes = new Uint8Array([0, 0, 0, 0]);
const encodedNonce = (0, bytes_ts_1.setLengthLeft)((0, bytes_ts_1.bigIntToBytes)(account.nonce), exports.VERKLE_NONCE_BYTES_LENGTH);
const encodedCodeSize = (0, bytes_ts_1.setLengthLeft)((0, bytes_ts_1.int32ToBytes)(account.codeSize), exports.VERKLE_CODE_SIZE_BYTES_LENGTH);
const encodedBalance = (0, bytes_ts_1.setLengthLeft)((0, bytes_ts_1.bigIntToBytes)(account.balance), exports.VERKLE_BALANCE_BYTES_LENGTH);
return (0, bytes_ts_1.concatBytes)(encodedVersion, reservedBytes, encodedCodeSize, encodedNonce, encodedBalance);
}
/**
* Helper method to generate the suffixes for code chunks for putting code
* @param numChunks number of chunks to generate suffixes for
* @returns number[] - an array of numbers corresponding to the code chunks being put
*/
const generateChunkSuffixes = (numChunks) => {
if (numChunks === 0)
return [];
const chunkSuffixes = new Array(numChunks);
let currentSuffix = exports.VERKLE_CODE_OFFSET;
for (let x = 0; x < numChunks; x++) {
chunkSuffixes[x] = currentSuffix;
currentSuffix++;
// Reset suffix to 0 if exceeds VERKLE_NODE_WIDTH
if (currentSuffix >= exports.VERKLE_NODE_WIDTH)
currentSuffix = 0;
}
return chunkSuffixes;
};
exports.generateChunkSuffixes = generateChunkSuffixes;
/**
* Helper method for generating the code stems necessary for putting code
* @param numChunks the number of code chunks to be put
* @param address the address of the account getting the code
* @param verkleCrypto an initialized {@link VerkleCrypto} object
* @returns an array of stems for putting code
*/
const generateCodeStems = async (numChunks, address, verkleCrypto) => {
// The maximum number of chunks is 793 (maxCodeSize - 24576) / (bytes per chunk 31) + (round up - 1)
// Code is stored in chunks starting at leaf index 128 of the leaf node corresponding to the stem of the code's address
// Code chunks beyond the initial 128 are stored in additional leaf nodes in batches up of up to 256 chunks per leaf node
// so the maximum number of leaf nodes that can hold contract code for a specific address is 4 leaf nodes (128 chunks in
// the first leaf node and 256 chunks in up to 3 additional leaf nodes)
// So, instead of computing every single leaf key (which is a heavy async operation), we just compute the stem for the first
// chunk in each leaf node and can then know that the chunks in between have tree keys in monotonically increasing order
const numStems = numChunks > exports.VERKLE_CODE_OFFSET ? Math.ceil(numChunks / exports.VERKLE_NODE_WIDTH) + 1 : 1;
const chunkStems = new Array(numStems);
// Compute the stem for the initial set of code chunks
chunkStems[0] = (await (0, exports.getVerkleTreeKeyForCodeChunk)(address, 0, verkleCrypto)).slice(0, 31);
for (let stemNum = 0; stemNum < numStems - 1; stemNum++) {
// Generate additional stems
const firstChunkKey = await (0, exports.getVerkleTreeKeyForCodeChunk)(address, exports.VERKLE_CODE_OFFSET + stemNum * exports.VERKLE_NODE_WIDTH, verkleCrypto);
chunkStems[stemNum + 1] = firstChunkKey.slice(0, 31);
}
return chunkStems;
};
exports.generateCodeStems = generateCodeStems;
//# sourceMappingURL=verkle.js.map
{"version":3,"file":"verkle.js","sourceRoot":"","sources":["../../src/verkle.ts"],"names":[],"mappings":"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"}
import type { Account } from './account.ts';
import type { Address } from './address.ts';
import type { PrefixedHexString } from './types.ts';
/**
* Verkle related constants and helper functions
*
* Experimental (do not use in production!)
*/
export interface VerkleCrypto {
getTreeKey: (address: Uint8Array, treeIndex: Uint8Array, subIndex: number) => Uint8Array;
getTreeKeyHash: (address: Uint8Array, treeIndexLE: Uint8Array) => Uint8Array;
updateCommitment: (commitment: Uint8Array, commitmentIndex: number, oldScalarValue: Uint8Array, newScalarValue: Uint8Array) => Uint8Array;
zeroCommitment: Uint8Array;
verifyExecutionWitnessPreState: (prestateRoot: string, execution_witness_json: string) => boolean;
hashCommitment: (commitment: Uint8Array) => Uint8Array;
serializeCommitment: (commitment: Uint8Array) => Uint8Array;
createProof: (bytes: ProverInput[]) => Uint8Array;
verifyProof: (proof: Uint8Array, verifierInput: VerifierInput[]) => boolean;
commitToScalars: (vector: Uint8Array[]) => Uint8Array;
}
export interface ProverInput {
serializedCommitment: Uint8Array;
vector: Uint8Array[];
indices: number[];
}
export interface VerifierInput {
serializedCommitment: Uint8Array;
indexValuePairs: Array<{
index: number;
value: Uint8Array;
}>;
}
/**
* @dev Returns the 31-bytes verkle tree stem for a given address and tree index.
* @dev Assumes that the verkle node width = 256
* @param {VerkleCrypto} verkleCrypto The {@link VerkleCrypto} foreign function interface object from Verkle cryptography
* @param {Address} address The address to generate the tree key for.
* @param treeIndex The index of the tree to generate the key for. Defaults to 0.
* @return The 31-bytes verkle tree stem as a Uint8Array.
*/
export declare function getVerkleStem(verkleCrypto: VerkleCrypto, address: Address, treeIndex?: number | bigint): Uint8Array;
/**
* Verifies that the executionWitness is valid for the given prestateRoot.
* @param {VerkleCrypto} verkleCrypto The {@link VerkleCrypto} foreign function interface object from Verkle cryptography
* @param {VerkleExecutionWitness} executionWitness The verkle execution witness.
* @returns {boolean} Whether or not the executionWitness belongs to the prestateRoot.
*/
export declare function verifyVerkleProof(verkleCrypto: VerkleCrypto, executionWitness: VerkleExecutionWitness): boolean;
export interface VerkleProof {
commitmentsByPath: PrefixedHexString[];
d: PrefixedHexString;
depthExtensionPresent: PrefixedHexString;
ipaProof: {
cl: PrefixedHexString[];
cr: PrefixedHexString[];
finalEvaluation: PrefixedHexString;
};
otherStems: PrefixedHexString[];
}
export interface VerkleStateDiff {
stem: PrefixedHexString;
suffixDiffs: {
currentValue: PrefixedHexString | null;
newValue: PrefixedHexString | null;
suffix: number | string;
}[];
}
/**
* Experimental, object format could eventual change.
* An object that provides the state and proof necessary for verkle stateless execution
* */
export interface VerkleExecutionWitness {
/**
* The stateRoot of the parent block
*/
parentStateRoot: PrefixedHexString;
/**
* An array of state diffs.
* Each item corresponding to state accesses or state modifications of the block.
* In the current design, it also contains the resulting state of the block execution (post-state).
*/
stateDiff: VerkleStateDiff[];
/**
* The verkle proof for the block.
* Proves that the provided stateDiff belongs to the canonical verkle tree.
*/
verkleProof: VerkleProof;
}
export type VerkleLeafType = (typeof VerkleLeafType)[keyof typeof VerkleLeafType];
export declare const VerkleLeafType: {
readonly BasicData: 0;
readonly CodeHash: 1;
};
export type VerkleLeafBasicData = {
version: number;
nonce: bigint;
balance: bigint;
codeSize: number;
};
export declare const VERKLE_VERSION_OFFSET = 0;
export declare const VERKLE_CODE_SIZE_OFFSET = 5;
export declare const VERKLE_NONCE_OFFSET = 8;
export declare const VERKLE_BALANCE_OFFSET = 16;
export declare const VERKLE_VERSION_BYTES_LENGTH = 1;
export declare const VERKLE_CODE_SIZE_BYTES_LENGTH = 3;
export declare const VERKLE_NONCE_BYTES_LENGTH = 8;
export declare const VERKLE_BALANCE_BYTES_LENGTH = 16;
export declare const VERKLE_BASIC_DATA_LEAF_KEY: Uint8Array<ArrayBufferLike>;
export declare const VERKLE_CODE_HASH_LEAF_KEY: Uint8Array<ArrayBufferLike>;
export declare const VERKLE_CODE_CHUNK_SIZE = 31;
export declare const VERKLE_HEADER_STORAGE_OFFSET = 64;
export declare const VERKLE_CODE_OFFSET = 128;
export declare const VERKLE_NODE_WIDTH = 256;
export declare const VERKLE_MAIN_STORAGE_OFFSET: bigint;
/**
* @dev Returns the tree key for a given verkle tree stem, and sub index.
* @dev Assumes that the verkle node width = 256
* @param stem The 31-bytes verkle tree stem as a Uint8Array.
* @param subIndex The sub index of the tree to generate the key for as a Uint8Array.
* @return The tree key as a Uint8Array.
*/
export declare const getVerkleKey: (stem: Uint8Array, leaf: VerkleLeafType | Uint8Array) => Uint8Array<ArrayBufferLike>;
/**
* Calculates the position of the storage key in the Verkle tree, determining
* both the tree index (the node in the tree) and the subindex (the position within the node).
* @param {bigint} storageKey - The key representing a specific storage slot.
* @returns {Object} - An object containing the tree index and subindex
*/
export declare function getVerkleTreeIndicesForStorageSlot(storageKey: bigint): {
treeIndex: bigint;
subIndex: number;
};
/**
* Calculates the position of the code chunks in the Verkle tree, determining
* both the tree index (the node in the tree) and the subindex (the position within the node).
* @param {bigint} chunkId - The ID representing a specific chunk.
* @returns {Object} - An object containing the tree index and subindex
*/
export declare function getVerkleTreeIndicesForCodeChunk(chunkId: number): {
treeIndex: number;
subIndex: number;
};
/**
* Asynchronously calculates the Verkle tree key for the specified code chunk ID.
* @param {Address} address - The account address to access code for.
* @param {number} chunkId - The ID of the code chunk to retrieve.
* @param {VerkleCrypto} verkleCrypto - The cryptographic object used for Verkle-related operations.
* @returns {Promise<Uint8Array>} - A promise that resolves to the Verkle tree key as a byte array.
*/
export declare const getVerkleTreeKeyForCodeChunk: (address: Address, chunkId: number, verkleCrypto: VerkleCrypto) => Promise<Uint8Array<ArrayBufferLike>>;
export declare const chunkifyCode: (code: Uint8Array) => Uint8Array<ArrayBufferLike>[];
/**
* Asynchronously calculates the Verkle tree key for the specified storage slot.
* @param {Address} address - The account address to access code for.
* @param {bigint} storageKey - The storage slot key to retrieve the verkle key for.
* @param {VerkleCrypto} verkleCrypto - The cryptographic object used for Verkle-related operations.
* @returns {Promise<Uint8Array>} - A promise that resolves to the Verkle tree key as a byte array.
*/
export declare const getVerkleTreeKeyForStorageSlot: (address: Address, storageKey: bigint, verkleCrypto: VerkleCrypto) => Promise<Uint8Array<ArrayBufferLike>>;
/**
* This function extracts and decodes account header elements (version, nonce, code size, and balance)
* from an encoded `Uint8Array` representation of raw Verkle leaf-node basic data. Each component is sliced
* from the `encodedBasicData` array based on predefined offsets and lengths, and then converted
* to its appropriate type (integer or BigInt).
* @param {Uint8Array} encodedBasicData - The encoded Verkle leaf basic data containing the version, nonce,
* code size, and balance in a compact Uint8Array format.
* @returns {VerkleLeafBasicData} - An object containing the decoded version, nonce, code size, and balance.
*/
export declare function decodeVerkleLeafBasicData(encodedBasicData: Uint8Array): VerkleLeafBasicData;
/**
* This function takes a `VerkleLeafBasicData` object and encodes its properties
* (version, nonce, code size, and balance) into a compact `Uint8Array` format. Each
* property is serialized and padded to match the required byte lengths defined by
* EIP-6800. Additionally, 4 bytes are reserved for future use as specified
* in EIP-6800.
* @param {VerkleLeafBasicData} basicData - An object containing the version, nonce,
* code size, and balance to be encoded.
* @returns {Uint8Array} - A compact bytes representation of the account header basic data.
*/
export declare function encodeVerkleLeafBasicData(account: Account): Uint8Array;
/**
* Helper method to generate the suffixes for code chunks for putting code
* @param numChunks number of chunks to generate suffixes for
* @returns number[] - an array of numbers corresponding to the code chunks being put
*/
export declare const generateChunkSuffixes: (numChunks: number) => number[];
/**
* Helper method for generating the code stems necessary for putting code
* @param numChunks the number of code chunks to be put
* @param address the address of the account getting the code
* @param verkleCrypto an initialized {@link VerkleCrypto} object
* @returns an array of stems for putting code
*/
export declare const generateCodeStems: (numChunks: number, address: Address, verkleCrypto: VerkleCrypto) => Promise<Uint8Array[]>;
//# sourceMappingURL=verkle.d.ts.map
{"version":3,"file":"verkle.d.ts","sourceRoot":"","sources":["../../src/verkle.ts"],"names":[],"mappings":"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"}
import { bigIntToBytes, bytesToBigInt, bytesToInt32, concatBytes, int32ToBytes, intToBytes, setLengthLeft, setLengthRight, } from "./bytes.js";
/**
* @dev Returns the 31-bytes verkle tree stem for a given address and tree index.
* @dev Assumes that the verkle node width = 256
* @param {VerkleCrypto} verkleCrypto The {@link VerkleCrypto} foreign function interface object from Verkle cryptography
* @param {Address} address The address to generate the tree key for.
* @param treeIndex The index of the tree to generate the key for. Defaults to 0.
* @return The 31-bytes verkle tree stem as a Uint8Array.
*/
export function getVerkleStem(verkleCrypto, address, treeIndex = 0) {
const address32 = setLengthLeft(address.toBytes(), 32);
let treeIndexBytes;
if (typeof treeIndex === 'number') {
treeIndexBytes = setLengthRight(int32ToBytes(Number(treeIndex), true), 32);
}
else {
treeIndexBytes = setLengthRight(bigIntToBytes(BigInt(treeIndex), true).slice(0, 32), 32);
}
const treeStem = verkleCrypto.getTreeKey(address32, treeIndexBytes, 0).slice(0, 31);
return treeStem;
}
/**
* Verifies that the executionWitness is valid for the given prestateRoot.
* @param {VerkleCrypto} verkleCrypto The {@link VerkleCrypto} foreign function interface object from Verkle cryptography
* @param {VerkleExecutionWitness} executionWitness The verkle execution witness.
* @returns {boolean} Whether or not the executionWitness belongs to the prestateRoot.
*/
export function verifyVerkleProof(verkleCrypto, executionWitness) {
const { parentStateRoot, ...parsedExecutionWitness } = executionWitness;
return verkleCrypto.verifyExecutionWitnessPreState(parentStateRoot, JSON.stringify(parsedExecutionWitness));
}
export const VerkleLeafType = {
BasicData: 0,
CodeHash: 1,
};
export const VERKLE_VERSION_OFFSET = 0;
export const VERKLE_CODE_SIZE_OFFSET = 5;
export const VERKLE_NONCE_OFFSET = 8;
export const VERKLE_BALANCE_OFFSET = 16;
export const VERKLE_VERSION_BYTES_LENGTH = 1;
export const VERKLE_CODE_SIZE_BYTES_LENGTH = 3;
export const VERKLE_NONCE_BYTES_LENGTH = 8;
export const VERKLE_BALANCE_BYTES_LENGTH = 16;
export const VERKLE_BASIC_DATA_LEAF_KEY = intToBytes(VerkleLeafType.BasicData);
export const VERKLE_CODE_HASH_LEAF_KEY = intToBytes(VerkleLeafType.CodeHash);
export const VERKLE_CODE_CHUNK_SIZE = 31;
export const VERKLE_HEADER_STORAGE_OFFSET = 64;
export const VERKLE_CODE_OFFSET = 128;
export const VERKLE_NODE_WIDTH = 256;
export const VERKLE_MAIN_STORAGE_OFFSET = BigInt(256) ** BigInt(VERKLE_CODE_CHUNK_SIZE);
/**
* @dev Returns the tree key for a given verkle tree stem, and sub index.
* @dev Assumes that the verkle node width = 256
* @param stem The 31-bytes verkle tree stem as a Uint8Array.
* @param subIndex The sub index of the tree to generate the key for as a Uint8Array.
* @return The tree key as a Uint8Array.
*/
export const getVerkleKey = (stem, leaf) => {
switch (leaf) {
case VerkleLeafType.BasicData:
return concatBytes(stem, VERKLE_BASIC_DATA_LEAF_KEY);
case VerkleLeafType.CodeHash:
return concatBytes(stem, VERKLE_CODE_HASH_LEAF_KEY);
default:
return concatBytes(stem, leaf);
}
};
/**
* Calculates the position of the storage key in the Verkle tree, determining
* both the tree index (the node in the tree) and the subindex (the position within the node).
* @param {bigint} storageKey - The key representing a specific storage slot.
* @returns {Object} - An object containing the tree index and subindex
*/
export function getVerkleTreeIndicesForStorageSlot(storageKey) {
let position;
if (storageKey < VERKLE_CODE_OFFSET - VERKLE_HEADER_STORAGE_OFFSET) {
position = BigInt(VERKLE_HEADER_STORAGE_OFFSET) + storageKey;
}
else {
position = VERKLE_MAIN_STORAGE_OFFSET + storageKey;
}
const treeIndex = position / BigInt(VERKLE_NODE_WIDTH);
const subIndex = Number(position % BigInt(VERKLE_NODE_WIDTH));
return { treeIndex, subIndex };
}
/**
* Calculates the position of the code chunks in the Verkle tree, determining
* both the tree index (the node in the tree) and the subindex (the position within the node).
* @param {bigint} chunkId - The ID representing a specific chunk.
* @returns {Object} - An object containing the tree index and subindex
*/
export function getVerkleTreeIndicesForCodeChunk(chunkId) {
const treeIndex = Math.floor((VERKLE_CODE_OFFSET + chunkId) / VERKLE_NODE_WIDTH);
const subIndex = (VERKLE_CODE_OFFSET + chunkId) % VERKLE_NODE_WIDTH;
return { treeIndex, subIndex };
}
/**
* Asynchronously calculates the Verkle tree key for the specified code chunk ID.
* @param {Address} address - The account address to access code for.
* @param {number} chunkId - The ID of the code chunk to retrieve.
* @param {VerkleCrypto} verkleCrypto - The cryptographic object used for Verkle-related operations.
* @returns {Promise<Uint8Array>} - A promise that resolves to the Verkle tree key as a byte array.
*/
export const getVerkleTreeKeyForCodeChunk = async (address, chunkId, verkleCrypto) => {
const { treeIndex, subIndex } = getVerkleTreeIndicesForCodeChunk(chunkId);
return concatBytes(getVerkleStem(verkleCrypto, address, treeIndex), intToBytes(subIndex));
};
// This code was written by robots based on the reference implementation in EIP-6800
export const chunkifyCode = (code) => {
const PUSH1 = 0x60; // Assuming PUSH1 is defined as 0x60
const PUSH32 = 0x7f; // Assuming PUSH32 is defined as 0x7f
const PUSH_OFFSET = 0x5f; // Assuming PUSH_OFFSET is defined as 0x5f
// Calculate padding length
const paddingLength = (31 - (code.length % 31)) % 31;
const paddedCode = new Uint8Array(code.length + paddingLength);
paddedCode.set(code);
// Pre-allocate the bytesToExecData array
const bytesToExecData = new Uint8Array(paddedCode.length + 32);
let pos = 0;
while (pos < paddedCode.length) {
let pushdataBytes = 0;
if (PUSH1 <= paddedCode[pos] && paddedCode[pos] <= PUSH32) {
pushdataBytes = paddedCode[pos] - PUSH_OFFSET;
}
pos += 1;
for (let x = 0; x < pushdataBytes; x++) {
bytesToExecData[pos + x] = pushdataBytes - x;
}
pos += pushdataBytes;
}
// Pre-allocate the chunks array
const numChunks = Math.ceil(paddedCode.length / 31);
const chunks = new Array(numChunks);
for (let i = 0, pos = 0; i < numChunks; i++, pos += 31) {
const chunk = new Uint8Array(32);
chunk[0] = Math.min(bytesToExecData[pos], 31);
chunk.set(paddedCode.subarray(pos, pos + 31), 1);
chunks[i] = chunk;
}
return chunks;
};
/**
* Asynchronously calculates the Verkle tree key for the specified storage slot.
* @param {Address} address - The account address to access code for.
* @param {bigint} storageKey - The storage slot key to retrieve the verkle key for.
* @param {VerkleCrypto} verkleCrypto - The cryptographic object used for Verkle-related operations.
* @returns {Promise<Uint8Array>} - A promise that resolves to the Verkle tree key as a byte array.
*/
export const getVerkleTreeKeyForStorageSlot = async (address, storageKey, verkleCrypto) => {
const { treeIndex, subIndex } = getVerkleTreeIndicesForStorageSlot(storageKey);
return concatBytes(getVerkleStem(verkleCrypto, address, treeIndex), intToBytes(subIndex));
};
/**
* This function extracts and decodes account header elements (version, nonce, code size, and balance)
* from an encoded `Uint8Array` representation of raw Verkle leaf-node basic data. Each component is sliced
* from the `encodedBasicData` array based on predefined offsets and lengths, and then converted
* to its appropriate type (integer or BigInt).
* @param {Uint8Array} encodedBasicData - The encoded Verkle leaf basic data containing the version, nonce,
* code size, and balance in a compact Uint8Array format.
* @returns {VerkleLeafBasicData} - An object containing the decoded version, nonce, code size, and balance.
*/
export function decodeVerkleLeafBasicData(encodedBasicData) {
const versionBytes = encodedBasicData.slice(0, VERKLE_VERSION_BYTES_LENGTH);
const nonceBytes = encodedBasicData.slice(VERKLE_NONCE_OFFSET, VERKLE_NONCE_OFFSET + VERKLE_NONCE_BYTES_LENGTH);
const codeSizeBytes = encodedBasicData.slice(VERKLE_CODE_SIZE_OFFSET, VERKLE_CODE_SIZE_OFFSET + VERKLE_CODE_SIZE_BYTES_LENGTH);
const balanceBytes = encodedBasicData.slice(VERKLE_BALANCE_OFFSET, VERKLE_BALANCE_OFFSET + VERKLE_BALANCE_BYTES_LENGTH);
const version = bytesToInt32(versionBytes);
const nonce = bytesToBigInt(nonceBytes);
const codeSize = bytesToInt32(codeSizeBytes);
const balance = bytesToBigInt(balanceBytes);
return { version, nonce, codeSize, balance };
}
/**
* This function takes a `VerkleLeafBasicData` object and encodes its properties
* (version, nonce, code size, and balance) into a compact `Uint8Array` format. Each
* property is serialized and padded to match the required byte lengths defined by
* EIP-6800. Additionally, 4 bytes are reserved for future use as specified
* in EIP-6800.
* @param {VerkleLeafBasicData} basicData - An object containing the version, nonce,
* code size, and balance to be encoded.
* @returns {Uint8Array} - A compact bytes representation of the account header basic data.
*/
export function encodeVerkleLeafBasicData(account) {
const encodedVersion = setLengthLeft(int32ToBytes(account.version), VERKLE_VERSION_BYTES_LENGTH);
// Per EIP-6800, bytes 1-4 are reserved for future use
const reservedBytes = new Uint8Array([0, 0, 0, 0]);
const encodedNonce = setLengthLeft(bigIntToBytes(account.nonce), VERKLE_NONCE_BYTES_LENGTH);
const encodedCodeSize = setLengthLeft(int32ToBytes(account.codeSize), VERKLE_CODE_SIZE_BYTES_LENGTH);
const encodedBalance = setLengthLeft(bigIntToBytes(account.balance), VERKLE_BALANCE_BYTES_LENGTH);
return concatBytes(encodedVersion, reservedBytes, encodedCodeSize, encodedNonce, encodedBalance);
}
/**
* Helper method to generate the suffixes for code chunks for putting code
* @param numChunks number of chunks to generate suffixes for
* @returns number[] - an array of numbers corresponding to the code chunks being put
*/
export const generateChunkSuffixes = (numChunks) => {
if (numChunks === 0)
return [];
const chunkSuffixes = new Array(numChunks);
let currentSuffix = VERKLE_CODE_OFFSET;
for (let x = 0; x < numChunks; x++) {
chunkSuffixes[x] = currentSuffix;
currentSuffix++;
// Reset suffix to 0 if exceeds VERKLE_NODE_WIDTH
if (currentSuffix >= VERKLE_NODE_WIDTH)
currentSuffix = 0;
}
return chunkSuffixes;
};
/**
* Helper method for generating the code stems necessary for putting code
* @param numChunks the number of code chunks to be put
* @param address the address of the account getting the code
* @param verkleCrypto an initialized {@link VerkleCrypto} object
* @returns an array of stems for putting code
*/
export const generateCodeStems = async (numChunks, address, verkleCrypto) => {
// The maximum number of chunks is 793 (maxCodeSize - 24576) / (bytes per chunk 31) + (round up - 1)
// Code is stored in chunks starting at leaf index 128 of the leaf node corresponding to the stem of the code's address
// Code chunks beyond the initial 128 are stored in additional leaf nodes in batches up of up to 256 chunks per leaf node
// so the maximum number of leaf nodes that can hold contract code for a specific address is 4 leaf nodes (128 chunks in
// the first leaf node and 256 chunks in up to 3 additional leaf nodes)
// So, instead of computing every single leaf key (which is a heavy async operation), we just compute the stem for the first
// chunk in each leaf node and can then know that the chunks in between have tree keys in monotonically increasing order
const numStems = numChunks > VERKLE_CODE_OFFSET ? Math.ceil(numChunks / VERKLE_NODE_WIDTH) + 1 : 1;
const chunkStems = new Array(numStems);
// Compute the stem for the initial set of code chunks
chunkStems[0] = (await getVerkleTreeKeyForCodeChunk(address, 0, verkleCrypto)).slice(0, 31);
for (let stemNum = 0; stemNum < numStems - 1; stemNum++) {
// Generate additional stems
const firstChunkKey = await getVerkleTreeKeyForCodeChunk(address, VERKLE_CODE_OFFSET + stemNum * VERKLE_NODE_WIDTH, verkleCrypto);
chunkStems[stemNum + 1] = firstChunkKey.slice(0, 31);
}
return chunkStems;
};
//# sourceMappingURL=verkle.js.map
{"version":3,"file":"verkle.js","sourceRoot":"","sources":["../../src/verkle.ts"],"names":[],"mappings":"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"}
import {
bigIntToBytes,
bytesToBigInt,
bytesToInt32,
concatBytes,
int32ToBytes,
intToBytes,
setLengthLeft,
setLengthRight,
} from './bytes.ts'
import type { Account } from './account.ts'
import type { Address } from './address.ts'
import type { PrefixedHexString } from './types.ts'
/**
* Verkle related constants and helper functions
*
* Experimental (do not use in production!)
*/
/* Verkle Crypto */
export interface VerkleCrypto {
getTreeKey: (address: Uint8Array, treeIndex: Uint8Array, subIndex: number) => Uint8Array
getTreeKeyHash: (address: Uint8Array, treeIndexLE: Uint8Array) => Uint8Array
updateCommitment: (
commitment: Uint8Array,
commitmentIndex: number,
oldScalarValue: Uint8Array,
newScalarValue: Uint8Array,
) => Uint8Array // Commitment
zeroCommitment: Uint8Array
verifyExecutionWitnessPreState: (prestateRoot: string, execution_witness_json: string) => boolean
hashCommitment: (commitment: Uint8Array) => Uint8Array
serializeCommitment: (commitment: Uint8Array) => Uint8Array
createProof: (bytes: ProverInput[]) => Uint8Array
verifyProof: (proof: Uint8Array, verifierInput: VerifierInput[]) => boolean
commitToScalars: (vector: Uint8Array[]) => Uint8Array
}
export interface ProverInput {
serializedCommitment: Uint8Array // serialized node commitment we want a proof from i.e. verkleCrypto.serializeCommitment(commitment)
vector: Uint8Array[] // Array of 256 children/values
indices: number[] // Indices from the valuesArray we are proving existence of
}
export interface VerifierInput {
serializedCommitment: Uint8Array // serialized node commitment we want a proof from i.e. verkleCrypto.serializeCommitment(commitment)
indexValuePairs: Array<{ index: number; value: Uint8Array }> // array of tuples of indices and values from node's children array being verified by proof
}
/**
* @dev Returns the 31-bytes verkle tree stem for a given address and tree index.
* @dev Assumes that the verkle node width = 256
* @param {VerkleCrypto} verkleCrypto The {@link VerkleCrypto} foreign function interface object from Verkle cryptography
* @param {Address} address The address to generate the tree key for.
* @param treeIndex The index of the tree to generate the key for. Defaults to 0.
* @return The 31-bytes verkle tree stem as a Uint8Array.
*/
export function getVerkleStem(
verkleCrypto: VerkleCrypto,
address: Address,
treeIndex: number | bigint = 0,
): Uint8Array {
const address32 = setLengthLeft(address.toBytes(), 32)
let treeIndexBytes: Uint8Array
if (typeof treeIndex === 'number') {
treeIndexBytes = setLengthRight(int32ToBytes(Number(treeIndex), true), 32)
} else {
treeIndexBytes = setLengthRight(bigIntToBytes(BigInt(treeIndex), true).slice(0, 32), 32)
}
const treeStem = verkleCrypto.getTreeKey(address32, treeIndexBytes, 0).slice(0, 31)
return treeStem
}
/**
* Verifies that the executionWitness is valid for the given prestateRoot.
* @param {VerkleCrypto} verkleCrypto The {@link VerkleCrypto} foreign function interface object from Verkle cryptography
* @param {VerkleExecutionWitness} executionWitness The verkle execution witness.
* @returns {boolean} Whether or not the executionWitness belongs to the prestateRoot.
*/
export function verifyVerkleProof(
verkleCrypto: VerkleCrypto,
executionWitness: VerkleExecutionWitness,
): boolean {
const { parentStateRoot, ...parsedExecutionWitness } = executionWitness
return verkleCrypto.verifyExecutionWitnessPreState(
parentStateRoot,
JSON.stringify(parsedExecutionWitness),
)
}
/* Verkle Structure */
export interface VerkleProof {
commitmentsByPath: PrefixedHexString[]
d: PrefixedHexString
depthExtensionPresent: PrefixedHexString
ipaProof: {
cl: PrefixedHexString[]
cr: PrefixedHexString[]
finalEvaluation: PrefixedHexString
}
otherStems: PrefixedHexString[]
}
export interface VerkleStateDiff {
stem: PrefixedHexString
suffixDiffs: {
currentValue: PrefixedHexString | null
newValue: PrefixedHexString | null
suffix: number | string
}[]
}
/**
* Experimental, object format could eventual change.
* An object that provides the state and proof necessary for verkle stateless execution
* */
export interface VerkleExecutionWitness {
/**
* The stateRoot of the parent block
*/
parentStateRoot: PrefixedHexString
/**
* An array of state diffs.
* Each item corresponding to state accesses or state modifications of the block.
* In the current design, it also contains the resulting state of the block execution (post-state).
*/
stateDiff: VerkleStateDiff[]
/**
* The verkle proof for the block.
* Proves that the provided stateDiff belongs to the canonical verkle tree.
*/
verkleProof: VerkleProof
}
export type VerkleLeafType = (typeof VerkleLeafType)[keyof typeof VerkleLeafType]
export const VerkleLeafType = {
BasicData: 0,
CodeHash: 1,
} as const
export type VerkleLeafBasicData = {
version: number
nonce: bigint
balance: bigint
codeSize: number
}
export const VERKLE_VERSION_OFFSET = 0
export const VERKLE_CODE_SIZE_OFFSET = 5
export const VERKLE_NONCE_OFFSET = 8
export const VERKLE_BALANCE_OFFSET = 16
export const VERKLE_VERSION_BYTES_LENGTH = 1
export const VERKLE_CODE_SIZE_BYTES_LENGTH = 3
export const VERKLE_NONCE_BYTES_LENGTH = 8
export const VERKLE_BALANCE_BYTES_LENGTH = 16
export const VERKLE_BASIC_DATA_LEAF_KEY = intToBytes(VerkleLeafType.BasicData)
export const VERKLE_CODE_HASH_LEAF_KEY = intToBytes(VerkleLeafType.CodeHash)
export const VERKLE_CODE_CHUNK_SIZE = 31
export const VERKLE_HEADER_STORAGE_OFFSET = 64
export const VERKLE_CODE_OFFSET = 128
export const VERKLE_NODE_WIDTH = 256
export const VERKLE_MAIN_STORAGE_OFFSET = BigInt(256) ** BigInt(VERKLE_CODE_CHUNK_SIZE)
/**
* @dev Returns the tree key for a given verkle tree stem, and sub index.
* @dev Assumes that the verkle node width = 256
* @param stem The 31-bytes verkle tree stem as a Uint8Array.
* @param subIndex The sub index of the tree to generate the key for as a Uint8Array.
* @return The tree key as a Uint8Array.
*/
export const getVerkleKey = (stem: Uint8Array, leaf: VerkleLeafType | Uint8Array) => {
switch (leaf) {
case VerkleLeafType.BasicData:
return concatBytes(stem, VERKLE_BASIC_DATA_LEAF_KEY)
case VerkleLeafType.CodeHash:
return concatBytes(stem, VERKLE_CODE_HASH_LEAF_KEY)
default:
return concatBytes(stem, leaf)
}
}
/**
* Calculates the position of the storage key in the Verkle tree, determining
* both the tree index (the node in the tree) and the subindex (the position within the node).
* @param {bigint} storageKey - The key representing a specific storage slot.
* @returns {Object} - An object containing the tree index and subindex
*/
export function getVerkleTreeIndicesForStorageSlot(storageKey: bigint): {
treeIndex: bigint
subIndex: number
} {
let position: bigint
if (storageKey < VERKLE_CODE_OFFSET - VERKLE_HEADER_STORAGE_OFFSET) {
position = BigInt(VERKLE_HEADER_STORAGE_OFFSET) + storageKey
} else {
position = VERKLE_MAIN_STORAGE_OFFSET + storageKey
}
const treeIndex = position / BigInt(VERKLE_NODE_WIDTH)
const subIndex = Number(position % BigInt(VERKLE_NODE_WIDTH))
return { treeIndex, subIndex }
}
/**
* Calculates the position of the code chunks in the Verkle tree, determining
* both the tree index (the node in the tree) and the subindex (the position within the node).
* @param {bigint} chunkId - The ID representing a specific chunk.
* @returns {Object} - An object containing the tree index and subindex
*/
export function getVerkleTreeIndicesForCodeChunk(chunkId: number) {
const treeIndex = Math.floor((VERKLE_CODE_OFFSET + chunkId) / VERKLE_NODE_WIDTH)
const subIndex = (VERKLE_CODE_OFFSET + chunkId) % VERKLE_NODE_WIDTH
return { treeIndex, subIndex }
}
/**
* Asynchronously calculates the Verkle tree key for the specified code chunk ID.
* @param {Address} address - The account address to access code for.
* @param {number} chunkId - The ID of the code chunk to retrieve.
* @param {VerkleCrypto} verkleCrypto - The cryptographic object used for Verkle-related operations.
* @returns {Promise<Uint8Array>} - A promise that resolves to the Verkle tree key as a byte array.
*/
export const getVerkleTreeKeyForCodeChunk = async (
address: Address,
chunkId: number,
verkleCrypto: VerkleCrypto,
) => {
const { treeIndex, subIndex } = getVerkleTreeIndicesForCodeChunk(chunkId)
return concatBytes(getVerkleStem(verkleCrypto, address, treeIndex), intToBytes(subIndex))
}
// This code was written by robots based on the reference implementation in EIP-6800
export const chunkifyCode = (code: Uint8Array) => {
const PUSH1 = 0x60 // Assuming PUSH1 is defined as 0x60
const PUSH32 = 0x7f // Assuming PUSH32 is defined as 0x7f
const PUSH_OFFSET = 0x5f // Assuming PUSH_OFFSET is defined as 0x5f
// Calculate padding length
const paddingLength = (31 - (code.length % 31)) % 31
const paddedCode = new Uint8Array(code.length + paddingLength)
paddedCode.set(code)
// Pre-allocate the bytesToExecData array
const bytesToExecData = new Uint8Array(paddedCode.length + 32)
let pos = 0
while (pos < paddedCode.length) {
let pushdataBytes = 0
if (PUSH1 <= paddedCode[pos] && paddedCode[pos] <= PUSH32) {
pushdataBytes = paddedCode[pos] - PUSH_OFFSET
}
pos += 1
for (let x = 0; x < pushdataBytes; x++) {
bytesToExecData[pos + x] = pushdataBytes - x
}
pos += pushdataBytes
}
// Pre-allocate the chunks array
const numChunks = Math.ceil(paddedCode.length / 31)
const chunks = new Array<Uint8Array>(numChunks)
for (let i = 0, pos = 0; i < numChunks; i++, pos += 31) {
const chunk = new Uint8Array(32)
chunk[0] = Math.min(bytesToExecData[pos], 31)
chunk.set(paddedCode.subarray(pos, pos + 31), 1)
chunks[i] = chunk
}
return chunks
}
/**
* Asynchronously calculates the Verkle tree key for the specified storage slot.
* @param {Address} address - The account address to access code for.
* @param {bigint} storageKey - The storage slot key to retrieve the verkle key for.
* @param {VerkleCrypto} verkleCrypto - The cryptographic object used for Verkle-related operations.
* @returns {Promise<Uint8Array>} - A promise that resolves to the Verkle tree key as a byte array.
*/
export const getVerkleTreeKeyForStorageSlot = async (
address: Address,
storageKey: bigint,
verkleCrypto: VerkleCrypto,
) => {
const { treeIndex, subIndex } = getVerkleTreeIndicesForStorageSlot(storageKey)
return concatBytes(getVerkleStem(verkleCrypto, address, treeIndex), intToBytes(subIndex))
}
/**
* This function extracts and decodes account header elements (version, nonce, code size, and balance)
* from an encoded `Uint8Array` representation of raw Verkle leaf-node basic data. Each component is sliced
* from the `encodedBasicData` array based on predefined offsets and lengths, and then converted
* to its appropriate type (integer or BigInt).
* @param {Uint8Array} encodedBasicData - The encoded Verkle leaf basic data containing the version, nonce,
* code size, and balance in a compact Uint8Array format.
* @returns {VerkleLeafBasicData} - An object containing the decoded version, nonce, code size, and balance.
*/
export function decodeVerkleLeafBasicData(encodedBasicData: Uint8Array): VerkleLeafBasicData {
const versionBytes = encodedBasicData.slice(0, VERKLE_VERSION_BYTES_LENGTH)
const nonceBytes = encodedBasicData.slice(
VERKLE_NONCE_OFFSET,
VERKLE_NONCE_OFFSET + VERKLE_NONCE_BYTES_LENGTH,
)
const codeSizeBytes = encodedBasicData.slice(
VERKLE_CODE_SIZE_OFFSET,
VERKLE_CODE_SIZE_OFFSET + VERKLE_CODE_SIZE_BYTES_LENGTH,
)
const balanceBytes = encodedBasicData.slice(
VERKLE_BALANCE_OFFSET,
VERKLE_BALANCE_OFFSET + VERKLE_BALANCE_BYTES_LENGTH,
)
const version = bytesToInt32(versionBytes)
const nonce = bytesToBigInt(nonceBytes)
const codeSize = bytesToInt32(codeSizeBytes)
const balance = bytesToBigInt(balanceBytes)
return { version, nonce, codeSize, balance }
}
/**
* This function takes a `VerkleLeafBasicData` object and encodes its properties
* (version, nonce, code size, and balance) into a compact `Uint8Array` format. Each
* property is serialized and padded to match the required byte lengths defined by
* EIP-6800. Additionally, 4 bytes are reserved for future use as specified
* in EIP-6800.
* @param {VerkleLeafBasicData} basicData - An object containing the version, nonce,
* code size, and balance to be encoded.
* @returns {Uint8Array} - A compact bytes representation of the account header basic data.
*/
export function encodeVerkleLeafBasicData(account: Account): Uint8Array {
const encodedVersion = setLengthLeft(int32ToBytes(account.version), VERKLE_VERSION_BYTES_LENGTH)
// Per EIP-6800, bytes 1-4 are reserved for future use
const reservedBytes = new Uint8Array([0, 0, 0, 0])
const encodedNonce = setLengthLeft(bigIntToBytes(account.nonce), VERKLE_NONCE_BYTES_LENGTH)
const encodedCodeSize = setLengthLeft(
int32ToBytes(account.codeSize),
VERKLE_CODE_SIZE_BYTES_LENGTH,
)
const encodedBalance = setLengthLeft(bigIntToBytes(account.balance), VERKLE_BALANCE_BYTES_LENGTH)
return concatBytes(encodedVersion, reservedBytes, encodedCodeSize, encodedNonce, encodedBalance)
}
/**
* Helper method to generate the suffixes for code chunks for putting code
* @param numChunks number of chunks to generate suffixes for
* @returns number[] - an array of numbers corresponding to the code chunks being put
*/
export const generateChunkSuffixes = (numChunks: number) => {
if (numChunks === 0) return []
const chunkSuffixes: number[] = new Array<number>(numChunks)
let currentSuffix = VERKLE_CODE_OFFSET
for (let x = 0; x < numChunks; x++) {
chunkSuffixes[x] = currentSuffix
currentSuffix++
// Reset suffix to 0 if exceeds VERKLE_NODE_WIDTH
if (currentSuffix >= VERKLE_NODE_WIDTH) currentSuffix = 0
}
return chunkSuffixes
}
/**
* Helper method for generating the code stems necessary for putting code
* @param numChunks the number of code chunks to be put
* @param address the address of the account getting the code
* @param verkleCrypto an initialized {@link VerkleCrypto} object
* @returns an array of stems for putting code
*/
export const generateCodeStems = async (
numChunks: number,
address: Address,
verkleCrypto: VerkleCrypto,
): Promise<Uint8Array[]> => {
// The maximum number of chunks is 793 (maxCodeSize - 24576) / (bytes per chunk 31) + (round up - 1)
// Code is stored in chunks starting at leaf index 128 of the leaf node corresponding to the stem of the code's address
// Code chunks beyond the initial 128 are stored in additional leaf nodes in batches up of up to 256 chunks per leaf node
// so the maximum number of leaf nodes that can hold contract code for a specific address is 4 leaf nodes (128 chunks in
// the first leaf node and 256 chunks in up to 3 additional leaf nodes)
// So, instead of computing every single leaf key (which is a heavy async operation), we just compute the stem for the first
// chunk in each leaf node and can then know that the chunks in between have tree keys in monotonically increasing order
const numStems = numChunks > VERKLE_CODE_OFFSET ? Math.ceil(numChunks / VERKLE_NODE_WIDTH) + 1 : 1
const chunkStems = new Array<Uint8Array>(numStems)
// Compute the stem for the initial set of code chunks
chunkStems[0] = (await getVerkleTreeKeyForCodeChunk(address, 0, verkleCrypto)).slice(0, 31)
for (let stemNum = 0; stemNum < numStems - 1; stemNum++) {
// Generate additional stems
const firstChunkKey = await getVerkleTreeKeyForCodeChunk(
address,
VERKLE_CODE_OFFSET + stemNum * VERKLE_NODE_WIDTH,
verkleCrypto,
)
chunkStems[stemNum + 1] = firstChunkKey.slice(0, 31)
}
return chunkStems
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet