@aztec/blob-lib 0.0.1-commit.fce3e4f → 0.0.1-commit.fffb133c
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/batched_blob.d.ts +8 -2
- package/dest/batched_blob.d.ts.map +1 -1
- package/dest/blob.d.ts +11 -5
- package/dest/blob.d.ts.map +1 -1
- package/dest/blob.js +7 -6
- package/dest/blob_batching.d.ts +15 -2
- package/dest/blob_batching.d.ts.map +1 -1
- package/dest/blob_batching.js +6 -4
- package/dest/blob_utils.d.ts +3 -2
- package/dest/blob_utils.d.ts.map +1 -1
- package/dest/blob_utils.js +1 -1
- package/dest/circuit_types/blob_accumulator.d.ts +3 -2
- package/dest/circuit_types/blob_accumulator.d.ts.map +1 -1
- package/dest/circuit_types/blob_accumulator.js +2 -1
- package/dest/circuit_types/final_blob_accumulator.d.ts +3 -2
- package/dest/circuit_types/final_blob_accumulator.d.ts.map +1 -1
- package/dest/circuit_types/final_blob_accumulator.js +5 -2
- package/dest/circuit_types/final_blob_batching_challenges.d.ts +3 -2
- package/dest/circuit_types/final_blob_batching_challenges.d.ts.map +1 -1
- package/dest/circuit_types/final_blob_batching_challenges.js +2 -1
- package/dest/encoding/block_blob_data.d.ts +10 -2
- package/dest/encoding/block_blob_data.d.ts.map +1 -1
- package/dest/encoding/block_blob_data.js +11 -1
- package/dest/encoding/block_end_marker.d.ts +4 -3
- package/dest/encoding/block_end_marker.d.ts.map +1 -1
- package/dest/encoding/block_end_marker.js +3 -2
- package/dest/encoding/block_end_state_field.d.ts +2 -2
- package/dest/encoding/block_end_state_field.d.ts.map +1 -1
- package/dest/encoding/block_end_state_field.js +1 -1
- package/dest/encoding/checkpoint_blob_data.d.ts +2 -2
- package/dest/encoding/checkpoint_blob_data.d.ts.map +1 -1
- package/dest/encoding/checkpoint_blob_data.js +6 -6
- package/dest/encoding/checkpoint_end_marker.d.ts +2 -2
- package/dest/encoding/checkpoint_end_marker.d.ts.map +1 -1
- package/dest/encoding/checkpoint_end_marker.js +1 -1
- package/dest/encoding/fixtures.d.ts +1 -1
- package/dest/encoding/fixtures.d.ts.map +1 -1
- package/dest/encoding/fixtures.js +3 -2
- package/dest/encoding/tx_blob_data.d.ts +2 -2
- package/dest/encoding/tx_blob_data.d.ts.map +1 -1
- package/dest/encoding/tx_blob_data.js +1 -1
- package/dest/encoding/tx_start_marker.d.ts +2 -2
- package/dest/encoding/tx_start_marker.d.ts.map +1 -1
- package/dest/encoding/tx_start_marker.js +1 -1
- package/dest/hash.d.ts +3 -2
- package/dest/hash.d.ts.map +1 -1
- package/dest/hash.js +5 -4
- package/dest/index.d.ts +2 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -0
- package/dest/interface.d.ts +1 -2
- package/dest/interface.d.ts.map +1 -1
- package/dest/kzg_context.d.ts +6 -2
- package/dest/kzg_context.d.ts.map +1 -1
- package/dest/kzg_context.js +12 -3
- package/dest/sponge_blob.d.ts +4 -2
- package/dest/sponge_blob.d.ts.map +1 -1
- package/dest/sponge_blob.js +2 -2
- package/dest/testing.d.ts +1 -1
- package/dest/testing.d.ts.map +1 -1
- package/dest/testing.js +2 -1
- package/package.json +7 -7
- package/src/batched_blob.ts +2 -1
- package/src/blob.ts +7 -6
- package/src/blob_batching.ts +11 -4
- package/src/blob_utils.ts +2 -1
- package/src/circuit_types/blob_accumulator.ts +2 -1
- package/src/circuit_types/final_blob_accumulator.ts +2 -1
- package/src/circuit_types/final_blob_batching_challenges.ts +2 -1
- package/src/encoding/block_blob_data.ts +14 -2
- package/src/encoding/block_end_marker.ts +4 -3
- package/src/encoding/block_end_state_field.ts +1 -1
- package/src/encoding/checkpoint_blob_data.ts +13 -6
- package/src/encoding/checkpoint_end_marker.ts +1 -1
- package/src/encoding/fixtures.ts +3 -2
- package/src/encoding/tx_blob_data.ts +1 -1
- package/src/encoding/tx_start_marker.ts +1 -1
- package/src/hash.ts +6 -4
- package/src/index.ts +1 -0
- package/src/interface.ts +0 -1
- package/src/kzg_context.ts +12 -1
- package/src/sponge_blob.ts +2 -2
- package/src/testing.ts +2 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CHECKPOINT_END_PREFIX } from '@aztec/constants';
|
|
2
|
-
import { Fr } from '@aztec/foundation/
|
|
2
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
3
|
import { BlobDeserializationError } from '../errors.js';
|
|
4
4
|
// Must match the implementation in `noir-protocol-circuits/crates/types/src/blob_data/checkpoint_blob_data.nr`.
|
|
5
5
|
const NUM_BLOB_FIELDS_BIT_SIZE = 32n;
|
|
@@ -38,4 +38,4 @@ export declare function makeCheckpointBlobData({ numBlocks, numTxsPerBlock, isFu
|
|
|
38
38
|
isFullTx?: boolean;
|
|
39
39
|
seed?: number;
|
|
40
40
|
} & Partial<CheckpointBlobData>): CheckpointBlobData;
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZXMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbmNvZGluZy9maXh0dXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFjQSxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RSxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxLQUFLLGtCQUFrQixFQUFnQyxNQUFNLDJCQUEyQixDQUFDO0FBQ2xHLE9BQU8sRUFBRSxLQUFLLFVBQVUsRUFBc0IsTUFBTSxtQkFBbUIsQ0FBQztBQUN4RSxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUkxRCx3QkFBZ0IsaUJBQWlCLENBQUMsRUFDaEMsUUFBZ0IsRUFDaEIsR0FBRyxTQUFTLEVBQ2IsR0FBRTtJQUFFLFFBQVEsQ0FBQyxFQUFFLE9BQU8sQ0FBQTtDQUFFLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBTSxHQUFHLGFBQWEsQ0FtQnRFO0FBRUQsd0JBQWdCLGNBQWMsQ0FBQyxFQUM3QixRQUFnQixFQUNoQixJQUFRLEVBQ1IsR0FBRyxTQUFTLEVBQ2IsR0FBRTtJQUFFLFFBQVEsQ0FBQyxFQUFFLE9BQU8sQ0FBQztJQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sQ0FBQTtDQUFFLEdBQUcsT0FBTyxDQUNoRCxJQUFJLENBQUMsVUFBVSxFQUFFLGVBQWUsQ0FBQyxHQUFHO0lBQUUsYUFBYSxDQUFDLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFBO0NBQUUsQ0FDMUUsR0FBRyxVQUFVLENBbURsQjtBQUVELHdCQUFnQixrQkFBa0IsQ0FBQyxFQUNqQyxJQUFRLEVBQ1IsR0FBRyxTQUFTLEVBQ2IsR0FBRTtJQUFFLElBQUksQ0FBQyxFQUFFLE1BQU0sQ0FBQTtDQUFFLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBTSxHQUFHLGNBQWMsQ0FPbkU7QUFFRCx3QkFBZ0Isc0JBQXNCLENBQUMsRUFDckMsSUFBUSxFQUNSLEdBQUcsU0FBUyxFQUNiLEdBQUU7SUFBRSxJQUFJLENBQUMsRUFBRSxNQUFNLENBQUE7Q0FBRSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBTSxHQUFHLGtCQUFrQixDQVMzRTtBQUVELHdCQUFnQixvQkFBb0IsQ0FBQyxFQUNuQyxZQUFtQixFQUNuQixJQUFRLEVBQ1IsR0FBRyxTQUFTLEVBQ2IsR0FBRTtJQUFFLElBQUksQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUFDLFlBQVksQ0FBQyxFQUFFLE9BQU8sQ0FBQTtDQUFFLEdBQUcsT0FBTyxDQUNwRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLEdBQUcsb0JBQW9CLENBQUMsQ0FDaEUsR0FBRztJQUNBLGNBQWMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN6QyxrQkFBa0IsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0NBQzdDLEdBQUcsZ0JBQWdCLENBZ0IxQjtBQUVELHdCQUFnQixpQkFBaUIsQ0FBQyxFQUNoQyxNQUFVLEVBQ1YsWUFBbUIsRUFDbkIsUUFBZ0IsRUFDaEIsSUFBUSxFQUNSLEdBQUcsU0FBUyxFQUNiLEdBQUU7SUFBRSxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUM7SUFBQyxZQUFZLENBQUMsRUFBRSxPQUFPLENBQUM7SUFBQyxRQUFRLENBQUMsRUFBRSxPQUFPLENBQUM7SUFBQyxJQUFJLENBQUMsRUFBRSxNQUFNLENBQUE7Q0FBRSxHQUFHLE9BQU8sQ0FDekYsVUFBVSxDQUFDLE9BQU8sb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDdEMsR0FBRyxhQUFhLENBWXJCO0FBRUQsd0JBQWdCLHNCQUFzQixDQUFDLEVBQ3JDLFNBQWEsRUFDYixjQUFrQixFQUNsQixRQUFnQixFQUNoQixJQUFRLEVBQ1IsR0FBRyxTQUFTLEVBQ2IsR0FBRTtJQUNELFNBQVMsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNuQixjQUFjLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDeEIsUUFBUSxDQUFDLEVBQUUsT0FBTyxDQUFDO0lBQ25CLElBQUksQ0FBQyxFQUFFLE1BQU0sQ0FBQztDQUNmLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFNLEdBQUcsa0JBQWtCLENBaUJ4RCJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../src/encoding/fixtures.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../src/encoding/fixtures.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,KAAK,kBAAkB,EAAgC,MAAM,2BAA2B,CAAC;AAClG,OAAO,EAAE,KAAK,UAAU,EAAsB,MAAM,mBAAmB,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAI1D,wBAAgB,iBAAiB,CAAC,EAChC,QAAgB,EAChB,GAAG,SAAS,EACb,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,aAAa,CAAM,GAAG,aAAa,CAmBtE;AAED,wBAAgB,cAAc,CAAC,EAC7B,QAAgB,EAChB,IAAQ,EACR,GAAG,SAAS,EACb,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAChD,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,GAAG;IAAE,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;CAAE,CAC1E,GAAG,UAAU,CAmDlB;AAED,wBAAgB,kBAAkB,CAAC,EACjC,IAAQ,EACR,GAAG,SAAS,EACb,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,cAAc,CAAM,GAAG,cAAc,CAOnE;AAED,wBAAgB,sBAAsB,CAAC,EACrC,IAAQ,EACR,GAAG,SAAS,EACb,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,kBAAkB,CAAM,GAAG,kBAAkB,CAS3E;AAED,wBAAgB,oBAAoB,CAAC,EACnC,YAAmB,EACnB,IAAQ,EACR,GAAG,SAAS,EACb,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CACpD,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,oBAAoB,CAAC,CAChE,GAAG;IACA,cAAc,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACzC,kBAAkB,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAC7C,GAAG,gBAAgB,CAgB1B;AAED,wBAAgB,iBAAiB,CAAC,EAChC,MAAU,EACV,YAAmB,EACnB,QAAgB,EAChB,IAAQ,EACR,GAAG,SAAS,EACb,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CACzF,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAC,CAAC,CACtC,GAAG,aAAa,CAYrB;AAED,wBAAgB,sBAAsB,CAAC,EACrC,SAAa,EACb,cAAkB,EAClB,QAAgB,EAChB,IAAQ,EACR,GAAG,SAAS,EACb,GAAE;IACD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,kBAAkB,CAAM,GAAG,kBAAkB,CAiBxD"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { FLAT_PUBLIC_LOGS_PAYLOAD_LENGTH, MAX_CONTRACT_CLASS_LOGS_PER_TX, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_PRIVATE_LOGS_PER_TX, MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, PRIVATE_LOG_SIZE_IN_FIELDS } from '@aztec/constants';
|
|
2
2
|
import { makeTuple } from '@aztec/foundation/array';
|
|
3
|
-
import {
|
|
3
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
4
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
5
|
import { getTotalNumBlobFieldsFromTxs } from './checkpoint_blob_data.js';
|
|
5
6
|
import { getNumTxBlobFields } from './tx_blob_data.js';
|
|
6
7
|
const fr = (seed)=>new Fr(BigInt(seed));
|
|
@@ -72,7 +73,7 @@ export function makeTxBlobData({ isFullTx = false, seed = 1, ...overrides } = {}
|
|
|
72
73
|
export function makeBlockEndMarker({ seed = 1, ...overrides } = {}) {
|
|
73
74
|
return {
|
|
74
75
|
numTxs: seed,
|
|
75
|
-
blockNumber: seed + 1,
|
|
76
|
+
blockNumber: BlockNumber(seed + 1),
|
|
76
77
|
timestamp: BigInt(seed + 2),
|
|
77
78
|
...overrides
|
|
78
79
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
2
|
import { FieldReader } from '@aztec/foundation/serialize';
|
|
3
3
|
import { type TxStartMarker } from './tx_start_marker.js';
|
|
4
4
|
export interface TxBlobData {
|
|
@@ -16,4 +16,4 @@ export interface TxBlobData {
|
|
|
16
16
|
export declare function encodeTxBlobData(txBlobData: TxBlobData): Fr[];
|
|
17
17
|
export declare function decodeTxBlobData(fields: Fr[] | FieldReader): TxBlobData;
|
|
18
18
|
export declare function getNumTxBlobFields(txStartMarker: Omit<TxStartMarker, 'revertCode' | 'numBlobFields'>): number;
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfYmxvYl9kYXRhLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZW5jb2RpbmcvdHhfYmxvYl9kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHMUQsT0FBTyxFQUFFLEtBQUssYUFBYSxFQUE0QyxNQUFNLHNCQUFzQixDQUFDO0FBSXBHLE1BQU0sV0FBVyxVQUFVO0lBQ3pCLGFBQWEsRUFBRSxhQUFhLENBQUM7SUFDN0IsTUFBTSxFQUFFLEVBQUUsQ0FBQztJQUNYLGNBQWMsRUFBRSxFQUFFLENBQUM7SUFDbkIsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2pCLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNqQixVQUFVLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDakIsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUM3QixXQUFXLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNwQixVQUFVLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDakIsZ0JBQWdCLEVBQUUsRUFBRSxFQUFFLENBQUM7Q0FDeEI7QUFFRCx3QkFBZ0IsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLFVBQVUsR0FBRyxFQUFFLEVBQUUsQ0FhN0Q7QUFFRCx3QkFBZ0IsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLFdBQVcsR0FBRyxVQUFVLENBNkR2RTtBQUVELHdCQUFnQixrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxZQUFZLEdBQUcsZUFBZSxDQUFDLFVBZXBHIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx_blob_data.d.ts","sourceRoot":"","sources":["../../src/encoding/tx_blob_data.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"tx_blob_data.d.ts","sourceRoot":"","sources":["../../src/encoding/tx_blob_data.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAG1D,OAAO,EAAE,KAAK,aAAa,EAA4C,MAAM,sBAAsB,CAAC;AAIpG,MAAM,WAAW,UAAU;IACzB,aAAa,EAAE,aAAa,CAAC;IAC7B,MAAM,EAAE,EAAE,CAAC;IACX,cAAc,EAAE,EAAE,CAAC;IACnB,UAAU,EAAE,EAAE,EAAE,CAAC;IACjB,UAAU,EAAE,EAAE,EAAE,CAAC;IACjB,UAAU,EAAE,EAAE,EAAE,CAAC;IACjB,gBAAgB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;IAC7B,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC;IACpB,UAAU,EAAE,EAAE,EAAE,CAAC;IACjB,gBAAgB,EAAE,EAAE,EAAE,CAAC;CACxB;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,UAAU,GAAG,EAAE,EAAE,CAa7D;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,GAAG,UAAU,CA6DvE;AAED,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,GAAG,eAAe,CAAC,UAepG"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { chunk } from '@aztec/foundation/collection';
|
|
2
|
-
import { Fr } from '@aztec/foundation/
|
|
2
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
3
|
import { FieldReader } from '@aztec/foundation/serialize';
|
|
4
4
|
import { BlobDeserializationError } from '../errors.js';
|
|
5
5
|
import { decodeTxStartMarker, encodeTxStartMarker } from './tx_start_marker.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
2
|
export interface TxStartMarker {
|
|
3
3
|
numBlobFields: number;
|
|
4
4
|
revertCode: number;
|
|
@@ -13,4 +13,4 @@ export interface TxStartMarker {
|
|
|
13
13
|
}
|
|
14
14
|
export declare function encodeTxStartMarker(txStartMarker: TxStartMarker): Fr;
|
|
15
15
|
export declare function decodeTxStartMarker(field: Fr): TxStartMarker;
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfc3RhcnRfbWFya2VyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZW5jb2RpbmcvdHhfc3RhcnRfbWFya2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQWlCcEQsTUFBTSxXQUFXLGFBQWE7SUFDNUIsYUFBYSxFQUFFLE1BQU0sQ0FBQztJQUN0QixVQUFVLEVBQUUsTUFBTSxDQUFDO0lBQ25CLGFBQWEsRUFBRSxNQUFNLENBQUM7SUFDdEIsYUFBYSxFQUFFLE1BQU0sQ0FBQztJQUN0QixhQUFhLEVBQUUsTUFBTSxDQUFDO0lBQ3RCLG1CQUFtQixFQUFFLE1BQU0sQ0FBQztJQUM1QixjQUFjLEVBQUUsTUFBTSxDQUFDO0lBQ3ZCLGlCQUFpQixFQUFFLE1BQU0sQ0FBQztJQUMxQixnQkFBZ0IsRUFBRSxNQUFNLENBQUM7SUFDekIsc0JBQXNCLEVBQUUsTUFBTSxDQUFDO0NBQ2hDO0FBRUQsd0JBQWdCLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxhQUFhLEdBQUcsRUFBRSxDQXVCcEU7QUFFRCx3QkFBZ0IsbUJBQW1CLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRyxhQUFhLENBd0M1RCJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx_start_marker.d.ts","sourceRoot":"","sources":["../../src/encoding/tx_start_marker.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"tx_start_marker.d.ts","sourceRoot":"","sources":["../../src/encoding/tx_start_marker.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAiBpD,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,aAAa,GAAG,EAAE,CAuBpE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,EAAE,GAAG,aAAa,CAwC5D"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TX_START_PREFIX } from '@aztec/constants';
|
|
2
|
-
import { Fr } from '@aztec/foundation/
|
|
2
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
3
|
import { BlobDeserializationError } from '../errors.js';
|
|
4
4
|
// Must match the implementation in `noir-protocol-circuits/crates/types/src/blob_data/tx_blob_data.nr`.
|
|
5
5
|
const NUM_BLOB_FIELDS_BIT_SIZE = 32n;
|
package/dest/hash.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { BLS12Fr
|
|
1
|
+
import { BLS12Fr } from '@aztec/foundation/curves/bls12';
|
|
2
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
3
|
/**
|
|
3
4
|
* Returns ethereum's versioned blob hash, following kzg_to_versioned_hash: https://eips.ethereum.org/EIPS/eip-4844#helpers
|
|
4
5
|
*/
|
|
@@ -39,4 +40,4 @@ export declare function computeChallengeZ(blobFieldsHash: Fr, commitment: Buffer
|
|
|
39
40
|
* rollup circuits.
|
|
40
41
|
*/
|
|
41
42
|
export declare function hashNoirBigNumLimbs(field: BLS12Fr): Promise<Fr>;
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzaC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2hhc2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQU9wRDs7R0FFRztBQUNILHdCQUFnQiwyQkFBMkIsQ0FBQyxVQUFVLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FJdEU7QUFPRCx3QkFBZ0IsZ0JBQWdCLENBQUMsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUVyRTtBQUVEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsd0JBQXNCLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLENBSXJFO0FBRUQsd0JBQWdCLHFCQUFxQixDQUFDLElBQUksRUFBRSxVQUFVLEdBQUcsTUFBTSxDQU05RDtBQUVEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCx3QkFBZ0Isa0JBQWtCLENBQUMsVUFBVSxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FNL0Q7QUFFRCx3QkFBc0IsaUJBQWlCLENBQUMsY0FBYyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FHM0Y7QUFFRDs7O0dBR0c7QUFDSCx3QkFBc0IsbUJBQW1CLENBQUMsS0FBSyxFQUFFLE9BQU8sR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLENBR3JFIn0=
|
package/dest/hash.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../src/hash.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../src/hash.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAOpD;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAItE;AAOD,wBAAgB,gBAAgB,CAAC,sBAAsB,EAAE,MAAM,EAAE,GAAG,EAAE,CAErE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAIrE;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAM9D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAM/D;AAED,wBAAsB,iBAAiB,CAAC,cAAc,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,CAG3F;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,EAAE,CAAC,CAGrE"}
|
package/dest/hash.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { poseidon2Hash
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { poseidon2Hash } from '@aztec/foundation/crypto/poseidon';
|
|
2
|
+
import { sha256, sha256ToField } from '@aztec/foundation/crypto/sha256';
|
|
3
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
|
+
import { BYTES_PER_BLOB, BYTES_PER_COMMITMENT, getKzg } from './kzg_context.js';
|
|
4
5
|
import { SpongeBlob } from './sponge_blob.js';
|
|
5
6
|
const VERSIONED_HASH_VERSION_KZG = 0x01;
|
|
6
7
|
/**
|
|
@@ -38,7 +39,7 @@ export function computeBlobCommitment(data) {
|
|
|
38
39
|
if (data.length !== BYTES_PER_BLOB) {
|
|
39
40
|
throw new Error(`Expected ${BYTES_PER_BLOB} bytes per blob. Got ${data.length}.`);
|
|
40
41
|
}
|
|
41
|
-
return Buffer.from(
|
|
42
|
+
return Buffer.from(getKzg().blobToKzgCommitment(data));
|
|
42
43
|
}
|
|
43
44
|
/**
|
|
44
45
|
* Get the commitment fields of the blob, to compute the challenge z.
|
package/dest/index.d.ts
CHANGED
|
@@ -7,4 +7,5 @@ export * from './encoding/index.js';
|
|
|
7
7
|
export * from './hash.js';
|
|
8
8
|
export * from './interface.js';
|
|
9
9
|
export * from './sponge_blob.js';
|
|
10
|
-
|
|
10
|
+
export * from './kzg_context.js';
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsa0JBQWtCLENBQUMifQ==
|
package/dest/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC"}
|
package/dest/index.js
CHANGED
package/dest/interface.d.ts
CHANGED
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export interface BlobJson {
|
|
5
5
|
blob: string;
|
|
6
|
-
index: string;
|
|
7
6
|
kzg_commitment: string;
|
|
8
7
|
}
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxXQUFXLFFBQVE7SUFDdkIsSUFBSSxFQUFFLE1BQU0sQ0FBQztJQUNiLGNBQWMsRUFBRSxNQUFNLENBQUM7Q0FDeEIifQ==
|
package/dest/interface.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../src/interface.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,
|
|
1
|
+
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../src/interface.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;CACxB"}
|
package/dest/kzg_context.d.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import { DasContextJs } from '@crate-crypto/node-eth-kzg';
|
|
2
2
|
export * from '@crate-crypto/node-eth-kzg';
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Returns the lazily-initialized KZG context.
|
|
5
|
+
* The first call takes ~3 seconds to initialize the precomputation tables.
|
|
6
|
+
*/
|
|
7
|
+
export declare function getKzg(): DasContextJs;
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3pnX2NvbnRleHQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9remdfY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFMUQsY0FBYyw0QkFBNEIsQ0FBQztBQUkzQzs7O0dBR0c7QUFDSCx3QkFBZ0IsTUFBTSxJQUFJLFlBQVksQ0FLckMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kzg_context.d.ts","sourceRoot":"","sources":["../src/kzg_context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,cAAc,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"kzg_context.d.ts","sourceRoot":"","sources":["../src/kzg_context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,cAAc,4BAA4B,CAAC;AAI3C;;;GAGG;AACH,wBAAgB,MAAM,IAAI,YAAY,CAKrC"}
|
package/dest/kzg_context.js
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import { DasContextJs } from '@crate-crypto/node-eth-kzg';
|
|
2
2
|
export * from '@crate-crypto/node-eth-kzg';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
let kzgInstance;
|
|
4
|
+
/**
|
|
5
|
+
* Returns the lazily-initialized KZG context.
|
|
6
|
+
* The first call takes ~3 seconds to initialize the precomputation tables.
|
|
7
|
+
*/ export function getKzg() {
|
|
8
|
+
if (!kzgInstance) {
|
|
9
|
+
kzgInstance = DasContextJs.create({
|
|
10
|
+
usePrecomp: true
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
return kzgInstance;
|
|
14
|
+
}
|
package/dest/sponge_blob.d.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { type FieldsOf } from '@aztec/foundation/array';
|
|
2
|
-
import { Fr } from '@aztec/foundation/
|
|
2
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
3
|
import { BufferReader, FieldReader, type Tuple } from '@aztec/foundation/serialize';
|
|
4
4
|
/**
|
|
5
5
|
* A Poseidon2 sponge used to accumulate data that will be added to blobs.
|
|
6
6
|
* See noir-projects/noir-protocol-circuits/crates/types/src/abis/sponge_blob.nr.
|
|
7
7
|
*/
|
|
8
8
|
export declare class SpongeBlob {
|
|
9
|
+
/** Sponge with absorbed fields that will go into one or more blobs. */
|
|
9
10
|
readonly sponge: Poseidon2Sponge;
|
|
11
|
+
/** Number of effects absorbed so far. */
|
|
10
12
|
numAbsorbedFields: number;
|
|
11
13
|
static MAX_FIELDS: number;
|
|
12
14
|
constructor(
|
|
@@ -45,4 +47,4 @@ export declare class Poseidon2Sponge {
|
|
|
45
47
|
absorb(fields: Fr[]): Promise<void>;
|
|
46
48
|
squeeze(): Promise<Fr>;
|
|
47
49
|
}
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BvbmdlX2Jsb2IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zcG9uZ2VfYmxvYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsS0FBSyxRQUFRLEVBQWEsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxFQUNMLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxLQUFLLEVBR1gsTUFBTSw2QkFBNkIsQ0FBQztBQUVyQzs7O0dBR0c7QUFDSCxxQkFBYSxVQUFVO0lBSW5CLHVFQUF1RTthQUN2RCxNQUFNLEVBQUUsZUFBZTtJQUN2Qyx5Q0FBeUM7SUFDbEMsaUJBQWlCLEVBQUUsTUFBTTtJQU5sQyxNQUFNLENBQUMsVUFBVSxTQUEwQztJQUUzRDtJQUNFLHVFQUF1RTtJQUN2RCxNQUFNLEVBQUUsZUFBZTtJQUN2Qyx5Q0FBeUM7SUFDbEMsaUJBQWlCLEVBQUUsTUFBTSxFQUM5QjtJQUVKOztPQUVHO0lBQ0gsTUFBTSxDQUFDLElBQUksSUFBSSxVQUFVLENBS3hCO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLFlBQVksR0FBRyxVQUFVLENBRzNEO0lBRUQsUUFBUSw0QkFFUDtJQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsZ0NBRTVDO0lBRUQsUUFBUSxJQUFJLEVBQUUsRUFBRSxDQUVmO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsV0FBVyxHQUFHLFVBQVUsQ0FHeEQ7SUFFRCxLQUFLLGVBRUo7SUFFSyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxpQkFReEI7SUFFSyxPQUFPLElBQUksT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUUzQjtJQUVELE1BQU0sQ0FBQyxLQUFLLElBQUksVUFBVSxDQUV6QjtDQUNGO0FBR0QscUJBQWEsZUFBZTtJQUVqQixLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbkIsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ25CLFNBQVMsRUFBRSxNQUFNO0lBQ2pCLFdBQVcsRUFBRSxPQUFPO0lBSjdCLFlBQ1MsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQ25CLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUNuQixTQUFTLEVBQUUsTUFBTSxFQUNqQixXQUFXLEVBQUUsT0FBTyxFQUN6QjtJQUVKLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxZQUFZLEdBQUcsZUFBZSxDQVFoRTtJQUVELFFBQVEsNEJBRVA7SUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsZUFBZSxDQUFDLDBEQUVqRDtJQUVELFFBQVEsSUFBSSxFQUFFLEVBQUUsQ0FFZjtJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLFdBQVcsR0FBRyxlQUFlLENBUTdEO0lBRUQsTUFBTSxDQUFDLEtBQUssSUFBSSxlQUFlLENBTzlCO0lBRUQsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLGVBQWUsQ0FJbkM7SUFLSyxhQUFhLGtCQVNsQjtJQUVLLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLGlCQWF4QjtJQUVLLE9BQU8sSUFBSSxPQUFPLENBQUMsRUFBRSxDQUFDLENBTzNCO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sponge_blob.d.ts","sourceRoot":"","sources":["../src/sponge_blob.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,QAAQ,EAAa,MAAM,yBAAyB,CAAC;AAEnE,OAAO,EAAE,EAAE,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"sponge_blob.d.ts","sourceRoot":"","sources":["../src/sponge_blob.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,QAAQ,EAAa,MAAM,yBAAyB,CAAC;AAEnE,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EACL,YAAY,EACZ,WAAW,EACX,KAAK,KAAK,EAGX,MAAM,6BAA6B,CAAC;AAErC;;;GAGG;AACH,qBAAa,UAAU;IAInB,uEAAuE;aACvD,MAAM,EAAE,eAAe;IACvC,yCAAyC;IAClC,iBAAiB,EAAE,MAAM;IANlC,MAAM,CAAC,UAAU,SAA0C;IAE3D;IACE,uEAAuE;IACvD,MAAM,EAAE,eAAe;IACvC,yCAAyC;IAClC,iBAAiB,EAAE,MAAM,EAC9B;IAEJ;;OAEG;IACH,MAAM,CAAC,IAAI,IAAI,UAAU,CAKxB;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,UAAU,CAG3D;IAED,QAAQ,4BAEP;IAED,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,gCAE5C;IAED,QAAQ,IAAI,EAAE,EAAE,CAEf;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,GAAG,UAAU,CAGxD;IAED,KAAK,eAEJ;IAEK,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,iBAQxB;IAEK,OAAO,IAAI,OAAO,CAAC,EAAE,CAAC,CAE3B;IAED,MAAM,CAAC,KAAK,IAAI,UAAU,CAEzB;CACF;AAGD,qBAAa,eAAe;IAEjB,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IACnB,SAAS,EAAE,MAAM;IACjB,WAAW,EAAE,OAAO;IAJ7B,YACS,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EACnB,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EACnB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,OAAO,EACzB;IAEJ,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,eAAe,CAQhE;IAED,QAAQ,4BAEP;IAED,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,0DAEjD;IAED,QAAQ,IAAI,EAAE,EAAE,CAEf;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,GAAG,eAAe,CAQ7D;IAED,MAAM,CAAC,KAAK,IAAI,eAAe,CAO9B;IAED,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,eAAe,CAInC;IAKK,aAAa,kBASlB;IAEK,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,iBAaxB;IAEK,OAAO,IAAI,OAAO,CAAC,EAAE,CAAC,CAO3B;CACF"}
|
package/dest/sponge_blob.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BLOBS_PER_CHECKPOINT, FIELDS_PER_BLOB, TWO_POW_64 } from '@aztec/constants';
|
|
2
2
|
import { makeTuple } from '@aztec/foundation/array';
|
|
3
|
-
import { poseidon2Permutation } from '@aztec/foundation/crypto';
|
|
4
|
-
import { Fr } from '@aztec/foundation/
|
|
3
|
+
import { poseidon2Permutation } from '@aztec/foundation/crypto/poseidon';
|
|
4
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
5
5
|
import { BufferReader, FieldReader, serializeToBuffer, serializeToFields } from '@aztec/foundation/serialize';
|
|
6
6
|
/**
|
|
7
7
|
* A Poseidon2 sponge used to accumulate data that will be added to blobs.
|
package/dest/testing.d.ts
CHANGED
|
@@ -28,4 +28,4 @@ export declare function makeFinalBlobBatchingChallenges(seed?: number): FinalBlo
|
|
|
28
28
|
* @returns
|
|
29
29
|
*/
|
|
30
30
|
export declare function makeRandomBlob(length: number): Blob;
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGluZy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Rlc3RpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDakYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDaEcsT0FBTyxFQUFtQixVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUvRCxjQUFjLHdCQUF3QixDQUFDO0FBRXZDOzs7OztHQUtHO0FBQ0gsd0JBQWdCLGNBQWMsQ0FBQyxJQUFJLFNBQUksR0FBRyxVQUFVLENBVW5EO0FBMEJEOzs7OztHQUtHO0FBQ0gsd0JBQWdCLG1CQUFtQixDQUFDLElBQUksU0FBSSxHQUFHLGVBQWUsQ0FTN0Q7QUFFRCx3QkFBZ0Isd0JBQXdCLENBQUMsSUFBSSxTQUFJLHdCQU9oRDtBQUVELHdCQUFnQiwrQkFBK0IsQ0FBQyxJQUFJLFNBQUksK0JBRXZEO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsd0JBQWdCLGNBQWMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FFbkQifQ==
|
package/dest/testing.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,2BAA2B,EAAE,MAAM,mDAAmD,CAAC;AAChG,OAAO,EAAmB,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE/D,cAAc,wBAAwB,CAAC;AAEvC;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,SAAI,GAAG,UAAU,CAUnD;AA0BD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,SAAI,GAAG,eAAe,CAS7D;AAED,wBAAgB,wBAAwB,CAAC,IAAI,SAAI,wBAOhD;AAED,wBAAgB,+BAA+B,CAAC,IAAI,SAAI,+BAEvD;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAEnD"}
|
package/dest/testing.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { makeTuple } from '@aztec/foundation/array';
|
|
2
|
-
import { BLS12Fq, BLS12Fr, BLS12Point, BLSPointNotOnCurveError
|
|
2
|
+
import { BLS12Fq, BLS12Fr, BLS12Point, BLSPointNotOnCurveError } from '@aztec/foundation/curves/bls12';
|
|
3
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
4
|
import { Blob } from './blob.js';
|
|
4
5
|
import { BlobAccumulator } from './circuit_types/blob_accumulator.js';
|
|
5
6
|
import { FinalBlobAccumulator } from './circuit_types/final_blob_accumulator.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/blob-lib",
|
|
3
|
-
"version": "0.0.1-commit.
|
|
3
|
+
"version": "0.0.1-commit.fffb133c",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -16,10 +16,10 @@
|
|
|
16
16
|
"tsconfig": "./tsconfig.json"
|
|
17
17
|
},
|
|
18
18
|
"scripts": {
|
|
19
|
-
"build": "yarn clean &&
|
|
20
|
-
"build:dev": "
|
|
19
|
+
"build": "yarn clean && ../scripts/tsc.sh",
|
|
20
|
+
"build:dev": "../scripts/tsc.sh --watch",
|
|
21
21
|
"clean": "rm -rf ./dest .tsbuildinfo",
|
|
22
|
-
"start:dev": "concurrently -k \"
|
|
22
|
+
"start:dev": "concurrently -k \"../scripts/tsc.sh --watch\" \"nodemon --watch dest --exec yarn start\"",
|
|
23
23
|
"start": "node ./dest/index.js",
|
|
24
24
|
"test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests --maxWorkers=${JEST_MAX_WORKERS:-8}"
|
|
25
25
|
},
|
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
"../package.common.json"
|
|
28
28
|
],
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@aztec/constants": "0.0.1-commit.
|
|
31
|
-
"@aztec/foundation": "0.0.1-commit.
|
|
30
|
+
"@aztec/constants": "0.0.1-commit.fffb133c",
|
|
31
|
+
"@aztec/foundation": "0.0.1-commit.fffb133c",
|
|
32
32
|
"@crate-crypto/node-eth-kzg": "^0.10.0",
|
|
33
33
|
"tslib": "^2.4.0"
|
|
34
34
|
},
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"@jest/globals": "^30.0.0",
|
|
37
37
|
"@types/jest": "^30.0.0",
|
|
38
38
|
"@types/node": "^22.15.17",
|
|
39
|
-
"@typescript/native-preview": "7.0.0-dev.
|
|
39
|
+
"@typescript/native-preview": "7.0.0-dev.20260113.1",
|
|
40
40
|
"get-port": "^7.1.0",
|
|
41
41
|
"jest": "^30.0.0",
|
|
42
42
|
"ts-node": "^10.9.1",
|
package/src/batched_blob.ts
CHANGED
package/src/blob.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { FIELDS_PER_BLOB } from '@aztec/constants';
|
|
2
|
-
import { BLS12Fr
|
|
2
|
+
import { BLS12Fr } from '@aztec/foundation/curves/bls12';
|
|
3
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
4
|
import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
4
5
|
|
|
5
6
|
import { computeBlobCommitment, computeChallengeZ, computeEthVersionedBlobHash } from './hash.js';
|
|
6
7
|
import type { BlobJson } from './interface.js';
|
|
7
|
-
import { BYTES_PER_BLOB, BYTES_PER_COMMITMENT,
|
|
8
|
+
import { BYTES_PER_BLOB, BYTES_PER_COMMITMENT, getKzg } from './kzg_context.js';
|
|
8
9
|
|
|
9
10
|
export { FIELDS_PER_BLOB };
|
|
10
11
|
|
|
@@ -80,7 +81,7 @@ export class Blob {
|
|
|
80
81
|
/**
|
|
81
82
|
* Create a Blob from a JSON object.
|
|
82
83
|
*
|
|
83
|
-
* Blobs will be in this form when requested from the blob
|
|
84
|
+
* Blobs will be in this form when requested from the blob client, or from
|
|
84
85
|
* the beacon chain via `getBlobSidecars`
|
|
85
86
|
* https://ethereum.github.io/beacon-APIs/?urls.primaryName=dev#/Beacon/getBlobSidecars
|
|
86
87
|
*
|
|
@@ -101,13 +102,11 @@ export class Blob {
|
|
|
101
102
|
/**
|
|
102
103
|
* Get the JSON representation of the blob.
|
|
103
104
|
*
|
|
104
|
-
* @param index - optional - The index of the blob in the block.
|
|
105
105
|
* @returns The JSON representation of the blob.
|
|
106
106
|
*/
|
|
107
|
-
|
|
107
|
+
toJSON(): BlobJson {
|
|
108
108
|
return {
|
|
109
109
|
blob: `0x${Buffer.from(this.data).toString('hex')}`,
|
|
110
|
-
index: index.toString(),
|
|
111
110
|
// eslint-disable-next-line camelcase
|
|
112
111
|
kzg_commitment: `0x${this.commitment.toString('hex')}`,
|
|
113
112
|
};
|
|
@@ -136,6 +135,7 @@ export class Blob {
|
|
|
136
135
|
* proof: Buffer - KZG opening proof for y = p(z). The commitment to quotient polynomial Q, used in compressed BLS12 point format (48 bytes).
|
|
137
136
|
*/
|
|
138
137
|
evaluate(challengeZ: Fr, verifyProof = false) {
|
|
138
|
+
const kzg = getKzg();
|
|
139
139
|
const res = kzg.computeKzgProof(this.data, challengeZ.toBuffer());
|
|
140
140
|
if (verifyProof && !kzg.verifyKzgProof(this.commitment, challengeZ.toBuffer(), res[1], res[0])) {
|
|
141
141
|
throw new Error(`KZG proof did not verify.`);
|
|
@@ -178,6 +178,7 @@ export class Blob {
|
|
|
178
178
|
}
|
|
179
179
|
|
|
180
180
|
static getViemKzgInstance() {
|
|
181
|
+
const kzg = getKzg();
|
|
181
182
|
return {
|
|
182
183
|
blobToKzgCommitment: kzg.blobToKzgCommitment.bind(kzg),
|
|
183
184
|
computeBlobKzgProof: kzg.computeBlobKzgProof.bind(kzg),
|
package/src/blob_batching.ts
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { AZTEC_MAX_EPOCH_DURATION, BLOBS_PER_CHECKPOINT } from '@aztec/constants';
|
|
2
|
-
import { poseidon2Hash
|
|
3
|
-
import {
|
|
2
|
+
import { poseidon2Hash } from '@aztec/foundation/crypto/poseidon';
|
|
3
|
+
import { sha256ToField } from '@aztec/foundation/crypto/sha256';
|
|
4
|
+
import { BLS12Fr, BLS12Point } from '@aztec/foundation/curves/bls12';
|
|
5
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
6
|
|
|
5
7
|
import { BatchedBlob } from './batched_blob.js';
|
|
6
8
|
import { Blob } from './blob.js';
|
|
7
9
|
import { getBlobsPerL1Block } from './blob_utils.js';
|
|
8
10
|
import { BlobAccumulator, FinalBlobAccumulator, FinalBlobBatchingChallenges } from './circuit_types/index.js';
|
|
9
11
|
import { computeBlobFieldsHash, hashNoirBigNumLimbs } from './hash.js';
|
|
10
|
-
import {
|
|
12
|
+
import { getKzg } from './kzg_context.js';
|
|
11
13
|
|
|
12
14
|
/**
|
|
13
15
|
* A class to create, manage, and prove batched EVM blobs.
|
|
@@ -248,7 +250,12 @@ export class BatchedBlobAccumulator {
|
|
|
248
250
|
}
|
|
249
251
|
|
|
250
252
|
verify() {
|
|
251
|
-
return
|
|
253
|
+
return getKzg().verifyKzgProof(
|
|
254
|
+
this.cAcc.compress(),
|
|
255
|
+
this.zAcc.toBuffer(),
|
|
256
|
+
this.yAcc.toBuffer(),
|
|
257
|
+
this.qAcc.compress(),
|
|
258
|
+
);
|
|
252
259
|
}
|
|
253
260
|
|
|
254
261
|
isEmptyState() {
|
package/src/blob_utils.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { FIELDS_PER_BLOB } from '@aztec/constants';
|
|
2
|
-
import { BLS12Point
|
|
2
|
+
import { BLS12Point } from '@aztec/foundation/curves/bls12';
|
|
3
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
4
|
|
|
4
5
|
import type { BatchedBlob } from './batched_blob.js';
|
|
5
6
|
import { Blob } from './blob.js';
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { BLS12_FQ_LIMBS, BLS12_FR_LIMBS } from '@aztec/constants';
|
|
2
|
-
import { BLS12Fq, BLS12Fr, BLS12Point
|
|
2
|
+
import { BLS12Fq, BLS12Fr, BLS12Point } from '@aztec/foundation/curves/bls12';
|
|
3
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
4
|
import { BufferReader, FieldReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
4
5
|
|
|
5
6
|
/**
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { BLS12Fr, BLS12Point
|
|
1
|
+
import { BLS12Fr, BLS12Point } from '@aztec/foundation/curves/bls12';
|
|
2
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
3
|
import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
3
4
|
|
|
4
5
|
import { inspect } from 'util';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
2
|
import { FieldReader } from '@aztec/foundation/serialize';
|
|
3
3
|
|
|
4
4
|
import { BlobDeserializationError } from '../errors.js';
|
|
@@ -17,6 +17,18 @@ import { type TxBlobData, decodeTxBlobData, encodeTxBlobData } from './tx_blob_d
|
|
|
17
17
|
|
|
18
18
|
// Must match the implementation in `noir-protocol-circuits/crates/types/src/blob_data/block_blob_data.nr`.
|
|
19
19
|
|
|
20
|
+
export const NUM_BLOCK_END_BLOB_FIELDS = 6;
|
|
21
|
+
export const NUM_FIRST_BLOCK_END_BLOB_FIELDS = 7;
|
|
22
|
+
export const NUM_CHECKPOINT_END_MARKER_FIELDS = 1;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Returns the number of blob fields used for block end data.
|
|
26
|
+
* @param isFirstBlockInCheckpoint - Whether this is the first block in a checkpoint.
|
|
27
|
+
*/
|
|
28
|
+
export function getNumBlockEndBlobFields(isFirstBlockInCheckpoint: boolean): number {
|
|
29
|
+
return isFirstBlockInCheckpoint ? NUM_FIRST_BLOCK_END_BLOB_FIELDS : NUM_BLOCK_END_BLOB_FIELDS;
|
|
30
|
+
}
|
|
31
|
+
|
|
20
32
|
export interface BlockEndBlobData {
|
|
21
33
|
blockEndMarker: BlockEndMarker;
|
|
22
34
|
blockEndStateField: BlockEndStateField;
|
|
@@ -46,7 +58,7 @@ export function encodeBlockEndBlobData(blockEndBlobData: BlockEndBlobData): Fr[]
|
|
|
46
58
|
export function decodeBlockEndBlobData(fields: Fr[] | FieldReader, isFirstBlock: boolean): BlockEndBlobData {
|
|
47
59
|
const reader = FieldReader.asReader(fields);
|
|
48
60
|
|
|
49
|
-
const numBlockEndData = isFirstBlock
|
|
61
|
+
const numBlockEndData = getNumBlockEndBlobFields(isFirstBlock);
|
|
50
62
|
if (numBlockEndData > reader.remainingFields()) {
|
|
51
63
|
throw new BlobDeserializationError(
|
|
52
64
|
`Incorrect encoding of blob fields: not enough fields for block end data. Expected ${numBlockEndData} fields, only ${reader.remainingFields()} remaining.`,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { BLOCK_END_PREFIX } from '@aztec/constants';
|
|
2
|
-
import {
|
|
2
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
3
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
4
|
|
|
4
5
|
import { BlobDeserializationError } from '../errors.js';
|
|
5
6
|
|
|
@@ -11,7 +12,7 @@ const NUM_TXS_BIT_SIZE = 16n;
|
|
|
11
12
|
|
|
12
13
|
export interface BlockEndMarker {
|
|
13
14
|
timestamp: bigint;
|
|
14
|
-
blockNumber:
|
|
15
|
+
blockNumber: BlockNumber;
|
|
15
16
|
numTxs: number;
|
|
16
17
|
}
|
|
17
18
|
|
|
@@ -30,7 +31,7 @@ export function decodeBlockEndMarker(field: Fr): BlockEndMarker {
|
|
|
30
31
|
let value = field.toBigInt();
|
|
31
32
|
const numTxs = Number(value & (2n ** NUM_TXS_BIT_SIZE - 1n));
|
|
32
33
|
value >>= NUM_TXS_BIT_SIZE;
|
|
33
|
-
const blockNumber = Number(value & (2n ** BLOCK_NUMBER_BIT_SIZE - 1n));
|
|
34
|
+
const blockNumber = BlockNumber(Number(value & (2n ** BLOCK_NUMBER_BIT_SIZE - 1n)));
|
|
34
35
|
value >>= BLOCK_NUMBER_BIT_SIZE;
|
|
35
36
|
const timestamp = value & (2n ** TIMESTAMP_BIT_SIZE - 1n);
|
|
36
37
|
value >>= TIMESTAMP_BIT_SIZE;
|
|
@@ -1,8 +1,15 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
2
|
import { BufferReader, FieldReader } from '@aztec/foundation/serialize';
|
|
3
3
|
|
|
4
4
|
import { BlobDeserializationError } from '../errors.js';
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
type BlockBlobData,
|
|
7
|
+
NUM_BLOCK_END_BLOB_FIELDS,
|
|
8
|
+
NUM_CHECKPOINT_END_MARKER_FIELDS,
|
|
9
|
+
NUM_FIRST_BLOCK_END_BLOB_FIELDS,
|
|
10
|
+
decodeBlockBlobData,
|
|
11
|
+
encodeBlockBlobData,
|
|
12
|
+
} from './block_blob_data.js';
|
|
6
13
|
import {
|
|
7
14
|
type CheckpointEndMarker,
|
|
8
15
|
decodeCheckpointEndMarker,
|
|
@@ -25,7 +32,7 @@ export function encodeCheckpointBlobData(checkpointBlobData: CheckpointBlobData)
|
|
|
25
32
|
|
|
26
33
|
export function encodeCheckpointBlobDataFromBlocks(blocks: BlockBlobData[]): Fr[] {
|
|
27
34
|
const blocksBlobFields = blocks.map(block => encodeBlockBlobData(block)).flat();
|
|
28
|
-
const numBlobFields = blocksBlobFields.length +
|
|
35
|
+
const numBlobFields = blocksBlobFields.length + NUM_CHECKPOINT_END_MARKER_FIELDS;
|
|
29
36
|
return blocksBlobFields.concat(encodeCheckpointEndMarker({ numBlobFields }));
|
|
30
37
|
}
|
|
31
38
|
|
|
@@ -87,9 +94,9 @@ export function getTotalNumBlobFieldsFromTxs(txsPerBlock: TxStartMarker[][]): nu
|
|
|
87
94
|
}
|
|
88
95
|
|
|
89
96
|
return (
|
|
90
|
-
(numBlocks ?
|
|
91
|
-
numBlocks *
|
|
97
|
+
(numBlocks ? NUM_FIRST_BLOCK_END_BLOB_FIELDS - NUM_BLOCK_END_BLOB_FIELDS : 0) + // l1ToL2Messages root in the first block
|
|
98
|
+
numBlocks * NUM_BLOCK_END_BLOB_FIELDS + // 6 fields for each block end blob data.
|
|
92
99
|
txsPerBlock.reduce((total, txs) => total + txs.reduce((total, tx) => total + tx.numBlobFields, 0), 0) +
|
|
93
|
-
|
|
100
|
+
NUM_CHECKPOINT_END_MARKER_FIELDS // checkpoint end marker
|
|
94
101
|
);
|
|
95
102
|
}
|