@aztec/blob-lib 0.0.1-commit.fce3e4f → 0.0.1-commit.ff7989d6c
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 +16 -10
- package/dest/blob.d.ts.map +1 -1
- package/dest/blob.js +15 -14
- package/dest/blob_batching.d.ts +15 -2
- package/dest/blob_batching.d.ts.map +1 -1
- package/dest/blob_batching.js +13 -11
- package/dest/blob_utils.d.ts +4 -3
- package/dest/blob_utils.d.ts.map +1 -1
- package/dest/blob_utils.js +4 -4
- 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 +6 -5
- 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 +4 -4
- 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 +3 -3
- package/dest/hash.d.ts +4 -3
- package/dest/hash.d.ts.map +1 -1
- package/dest/hash.js +6 -5
- 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 +2 -2
- 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 +15 -14
- package/src/blob_batching.ts +18 -11
- package/src/blob_utils.ts +7 -4
- 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 +7 -6
- 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 +4 -4
- package/src/encoding/fixtures.ts +3 -2
- package/src/encoding/tx_blob_data.ts +1 -1
- package/src/encoding/tx_start_marker.ts +3 -3
- package/src/hash.ts +7 -5
- 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 +3 -2
package/dest/batched_blob.d.ts
CHANGED
|
@@ -1,13 +1,19 @@
|
|
|
1
|
-
import { BLS12Fr, BLS12Point
|
|
1
|
+
import { BLS12Fr, BLS12Point } from '@aztec/foundation/curves/bls12';
|
|
2
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
3
|
import { FinalBlobAccumulator } from './circuit_types/index.js';
|
|
3
4
|
/**
|
|
4
5
|
* A class to represent the result from accumulating blobs in an epoch using BatchedBlobAccumulator.
|
|
5
6
|
*/
|
|
6
7
|
export declare class BatchedBlob {
|
|
8
|
+
/** Hash of Cs (to link to L1 blob hashes). */
|
|
7
9
|
readonly blobCommitmentsHash: Fr;
|
|
10
|
+
/** Challenge point z such that p_i(z) = y_i. */
|
|
8
11
|
readonly z: Fr;
|
|
12
|
+
/** Evaluation y, linear combination of all evaluations y_i = p_i(z) with gamma. */
|
|
9
13
|
readonly y: BLS12Fr;
|
|
14
|
+
/** Commitment C, linear combination of all commitments C_i = [p_i] with gamma. */
|
|
10
15
|
readonly commitment: BLS12Point;
|
|
16
|
+
/** KZG opening 'proof' Q (commitment to the quotient poly.), linear combination of all blob kzg 'proofs' Q_i with gamma. */
|
|
11
17
|
readonly q: BLS12Point;
|
|
12
18
|
constructor(
|
|
13
19
|
/** Hash of Cs (to link to L1 blob hashes). */
|
|
@@ -22,4 +28,4 @@ export declare class BatchedBlob {
|
|
|
22
28
|
q: BLS12Point);
|
|
23
29
|
toFinalBlobAccumulator(): FinalBlobAccumulator;
|
|
24
30
|
}
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2hlZF9ibG9iLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYmF0Y2hlZF9ibG9iLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDckUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRWhFOztHQUVHO0FBQ0gscUJBQWEsV0FBVztJQUVwQiw4Q0FBOEM7YUFDOUIsbUJBQW1CLEVBQUUsRUFBRTtJQUN2QyxnREFBZ0Q7YUFDaEMsQ0FBQyxFQUFFLEVBQUU7SUFDckIsbUZBQW1GO2FBQ25FLENBQUMsRUFBRSxPQUFPO0lBQzFCLGtGQUFrRjthQUNsRSxVQUFVLEVBQUUsVUFBVTtJQUN0Qyw0SEFBNEg7YUFDNUcsQ0FBQyxFQUFFLFVBQVU7SUFWL0I7SUFDRSw4Q0FBOEM7SUFDOUIsbUJBQW1CLEVBQUUsRUFBRTtJQUN2QyxnREFBZ0Q7SUFDaEMsQ0FBQyxFQUFFLEVBQUU7SUFDckIsbUZBQW1GO0lBQ25FLENBQUMsRUFBRSxPQUFPO0lBQzFCLGtGQUFrRjtJQUNsRSxVQUFVLEVBQUUsVUFBVTtJQUN0Qyw0SEFBNEg7SUFDNUcsQ0FBQyxFQUFFLFVBQVUsRUFDM0I7SUFFSixzQkFBc0IseUJBRXJCO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batched_blob.d.ts","sourceRoot":"","sources":["../src/batched_blob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"batched_blob.d.ts","sourceRoot":"","sources":["../src/batched_blob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE;;GAEG;AACH,qBAAa,WAAW;IAEpB,8CAA8C;aAC9B,mBAAmB,EAAE,EAAE;IACvC,gDAAgD;aAChC,CAAC,EAAE,EAAE;IACrB,mFAAmF;aACnE,CAAC,EAAE,OAAO;IAC1B,kFAAkF;aAClE,UAAU,EAAE,UAAU;IACtC,4HAA4H;aAC5G,CAAC,EAAE,UAAU;IAV/B;IACE,8CAA8C;IAC9B,mBAAmB,EAAE,EAAE;IACvC,gDAAgD;IAChC,CAAC,EAAE,EAAE;IACrB,mFAAmF;IACnE,CAAC,EAAE,OAAO;IAC1B,kFAAkF;IAClE,UAAU,EAAE,UAAU;IACtC,4HAA4H;IAC5G,CAAC,EAAE,UAAU,EAC3B;IAEJ,sBAAsB,yBAErB;CACF"}
|
package/dest/blob.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
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 } from '@aztec/foundation/serialize';
|
|
4
5
|
import type { BlobJson } from './interface.js';
|
|
5
6
|
export { FIELDS_PER_BLOB };
|
|
@@ -11,7 +12,13 @@ export { FIELDS_PER_BLOB };
|
|
|
11
12
|
* and is correctly encoded.
|
|
12
13
|
*/
|
|
13
14
|
export declare class Blob {
|
|
15
|
+
/**
|
|
16
|
+
* The data to be broadcast on L1 in bytes form.
|
|
17
|
+
*/
|
|
14
18
|
readonly data: Uint8Array;
|
|
19
|
+
/**
|
|
20
|
+
* Commitment to the blob data. Used in compressed BLS12 point format (48 bytes).
|
|
21
|
+
*/
|
|
15
22
|
readonly commitment: Buffer;
|
|
16
23
|
constructor(
|
|
17
24
|
/**
|
|
@@ -29,7 +36,7 @@ export declare class Blob {
|
|
|
29
36
|
*
|
|
30
37
|
* @throws If data does not match the expected length (BYTES_PER_BLOB).
|
|
31
38
|
*/
|
|
32
|
-
static fromBlobBuffer(data: Uint8Array): Blob
|
|
39
|
+
static fromBlobBuffer(data: Uint8Array): Promise<Blob>;
|
|
33
40
|
/**
|
|
34
41
|
* Create a Blob from an array of fields.
|
|
35
42
|
*
|
|
@@ -38,7 +45,7 @@ export declare class Blob {
|
|
|
38
45
|
* @param fields - The array of fields to create the Blob from.
|
|
39
46
|
* @returns A Blob created from the array of fields.
|
|
40
47
|
*/
|
|
41
|
-
static fromFields(fields: Fr[]): Blob
|
|
48
|
+
static fromFields(fields: Fr[]): Promise<Blob>;
|
|
42
49
|
/**
|
|
43
50
|
* Get the fields from the blob data.
|
|
44
51
|
*
|
|
@@ -50,21 +57,20 @@ export declare class Blob {
|
|
|
50
57
|
/**
|
|
51
58
|
* Create a Blob from a JSON object.
|
|
52
59
|
*
|
|
53
|
-
* Blobs will be in this form when requested from the blob
|
|
60
|
+
* Blobs will be in this form when requested from the blob client, or from
|
|
54
61
|
* the beacon chain via `getBlobSidecars`
|
|
55
62
|
* https://ethereum.github.io/beacon-APIs/?urls.primaryName=dev#/Beacon/getBlobSidecars
|
|
56
63
|
*
|
|
57
64
|
* @param json - The JSON object to create the Blob from.
|
|
58
65
|
* @returns A Blob created from the JSON object.
|
|
59
66
|
*/
|
|
60
|
-
static fromJson(json: BlobJson): Blob
|
|
67
|
+
static fromJson(json: BlobJson): Promise<Blob>;
|
|
61
68
|
/**
|
|
62
69
|
* Get the JSON representation of the blob.
|
|
63
70
|
*
|
|
64
|
-
* @param index - optional - The index of the blob in the block.
|
|
65
71
|
* @returns The JSON representation of the blob.
|
|
66
72
|
*/
|
|
67
|
-
|
|
73
|
+
toJSON(): BlobJson;
|
|
68
74
|
getEthVersionedBlobHash(): Buffer;
|
|
69
75
|
/**
|
|
70
76
|
* Challenge point z (= H(H(tx_effects), kzgCommitment)).
|
|
@@ -81,10 +87,10 @@ export declare class Blob {
|
|
|
81
87
|
* y: BLS12Fr - Evaluation y = p(z), where p() is the blob polynomial. BLS12 field element, rep. as BigNum in nr, bigint in ts.
|
|
82
88
|
* proof: Buffer - KZG opening proof for y = p(z). The commitment to quotient polynomial Q, used in compressed BLS12 point format (48 bytes).
|
|
83
89
|
*/
|
|
84
|
-
evaluate(challengeZ: Fr, verifyProof?: boolean): {
|
|
90
|
+
evaluate(challengeZ: Fr, verifyProof?: boolean): Promise<{
|
|
85
91
|
y: BLS12Fr;
|
|
86
92
|
proof: Buffer<ArrayBuffer>;
|
|
87
|
-
}
|
|
93
|
+
}>;
|
|
88
94
|
/**
|
|
89
95
|
* Get the buffer representation of the ENTIRE blob.
|
|
90
96
|
*
|
|
@@ -112,4 +118,4 @@ export declare class Blob {
|
|
|
112
118
|
computeCellsAndKzgProofs: (b: Uint8Array<ArrayBufferLike>) => [Uint8Array<ArrayBufferLike>[], Uint8Array<ArrayBufferLike>[]];
|
|
113
119
|
};
|
|
114
120
|
}
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvYi5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Jsb2IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBcUIsTUFBTSw2QkFBNkIsQ0FBQztBQUc5RSxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUcvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLENBQUM7QUFFM0I7Ozs7OztHQU1HO0FBQ0gscUJBQWEsSUFBSTtJQUViOztPQUVHO2FBQ2EsSUFBSSxFQUFFLFVBQVU7SUFDaEM7O09BRUc7YUFDYSxVQUFVLEVBQUUsTUFBTTtJQVJwQztJQUNFOztPQUVHO0lBQ2EsSUFBSSxFQUFFLFVBQVU7SUFDaEM7O09BRUc7SUFDYSxVQUFVLEVBQUUsTUFBTSxFQVFuQztJQUVEOzs7Ozs7T0FNRztJQUNILE9BQWEsY0FBYyxDQUFDLElBQUksRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUczRDtJQUVEOzs7Ozs7O09BT0c7SUFDSCxPQUFhLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQVFuRDtJQUVEOzs7Ozs7T0FNRztJQUNILFFBQVEsSUFBSSxFQUFFLEVBQUUsQ0FJZjtJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILE9BQWEsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQVNuRDtJQUVEOzs7O09BSUc7SUFDSCxNQUFNLElBQUksUUFBUSxDQU1qQjtJQUVELHVCQUF1QixJQUFJLE1BQU0sQ0FFaEM7SUFFRDs7O09BR0c7SUFDRyxpQkFBaUIsQ0FBQyxjQUFjLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FFdkQ7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDRyxRQUFRLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxXQUFXLFVBQVE7OztPQVVqRDtJQUVEOzs7Ozs7T0FNRztJQUNILFFBQVEsSUFBSSxNQUFNLENBRWpCO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxZQUFZLEdBQUcsSUFBSSxDQUdsRDtJQUVEOztPQUVHO0lBQ0gsT0FBTyxXQUVOO0lBRUQsTUFBTSxDQUFDLGtCQUFrQjs7OztNQVV4QjtDQUNGIn0=
|
package/dest/blob.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blob.d.ts","sourceRoot":"","sources":["../src/blob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"blob.d.ts","sourceRoot":"","sources":["../src/blob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAG9E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B;;;;;;GAMG;AACH,qBAAa,IAAI;IAEb;;OAEG;aACa,IAAI,EAAE,UAAU;IAChC;;OAEG;aACa,UAAU,EAAE,MAAM;IARpC;IACE;;OAEG;IACa,IAAI,EAAE,UAAU;IAChC;;OAEG;IACa,UAAU,EAAE,MAAM,EAQnC;IAED;;;;;;OAMG;IACH,OAAa,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAG3D;IAED;;;;;;;OAOG;IACH,OAAa,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAQnD;IAED;;;;;;OAMG;IACH,QAAQ,IAAI,EAAE,EAAE,CAIf;IAED;;;;;;;;;OASG;IACH,OAAa,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CASnD;IAED;;;;OAIG;IACH,MAAM,IAAI,QAAQ,CAMjB;IAED,uBAAuB,IAAI,MAAM,CAEhC;IAED;;;OAGG;IACG,iBAAiB,CAAC,cAAc,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAEvD;IAED;;;;;;;;;OASG;IACG,QAAQ,CAAC,UAAU,EAAE,EAAE,EAAE,WAAW,UAAQ;;;OAUjD;IAED;;;;;;OAMG;IACH,QAAQ,IAAI,MAAM,CAEjB;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAGlD;IAED;;OAEG;IACH,OAAO,WAEN;IAED,MAAM,CAAC,kBAAkB;;;;MAUxB;CACF"}
|
package/dest/blob.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
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
|
import { computeBlobCommitment, computeChallengeZ, computeEthVersionedBlobHash } from './hash.js';
|
|
5
|
-
import { BYTES_PER_BLOB, BYTES_PER_COMMITMENT,
|
|
6
|
+
import { BYTES_PER_BLOB, BYTES_PER_COMMITMENT, getKzg } from './kzg_context.js';
|
|
6
7
|
export { FIELDS_PER_BLOB };
|
|
7
8
|
/**
|
|
8
9
|
* A class to create, manage, and prove EVM blobs.
|
|
@@ -33,8 +34,8 @@ export { FIELDS_PER_BLOB };
|
|
|
33
34
|
* @returns A Blob created from the buffer.
|
|
34
35
|
*
|
|
35
36
|
* @throws If data does not match the expected length (BYTES_PER_BLOB).
|
|
36
|
-
*/ static fromBlobBuffer(data) {
|
|
37
|
-
const commitment = computeBlobCommitment(data);
|
|
37
|
+
*/ static async fromBlobBuffer(data) {
|
|
38
|
+
const commitment = await computeBlobCommitment(data);
|
|
38
39
|
return new Blob(data, commitment);
|
|
39
40
|
}
|
|
40
41
|
/**
|
|
@@ -44,14 +45,14 @@ export { FIELDS_PER_BLOB };
|
|
|
44
45
|
*
|
|
45
46
|
* @param fields - The array of fields to create the Blob from.
|
|
46
47
|
* @returns A Blob created from the array of fields.
|
|
47
|
-
*/ static fromFields(fields) {
|
|
48
|
+
*/ static async fromFields(fields) {
|
|
48
49
|
if (fields.length > FIELDS_PER_BLOB) {
|
|
49
50
|
throw new Error(`Attempted to overfill blob with ${fields.length} fields. The maximum is ${FIELDS_PER_BLOB}.`);
|
|
50
51
|
}
|
|
51
52
|
const data = Buffer.concat([
|
|
52
53
|
serializeToBuffer(fields)
|
|
53
54
|
], BYTES_PER_BLOB);
|
|
54
|
-
const commitment = computeBlobCommitment(data);
|
|
55
|
+
const commitment = await computeBlobCommitment(data);
|
|
55
56
|
return new Blob(data, commitment);
|
|
56
57
|
}
|
|
57
58
|
/**
|
|
@@ -68,15 +69,15 @@ export { FIELDS_PER_BLOB };
|
|
|
68
69
|
/**
|
|
69
70
|
* Create a Blob from a JSON object.
|
|
70
71
|
*
|
|
71
|
-
* Blobs will be in this form when requested from the blob
|
|
72
|
+
* Blobs will be in this form when requested from the blob client, or from
|
|
72
73
|
* the beacon chain via `getBlobSidecars`
|
|
73
74
|
* https://ethereum.github.io/beacon-APIs/?urls.primaryName=dev#/Beacon/getBlobSidecars
|
|
74
75
|
*
|
|
75
76
|
* @param json - The JSON object to create the Blob from.
|
|
76
77
|
* @returns A Blob created from the JSON object.
|
|
77
|
-
*/ static fromJson(json) {
|
|
78
|
+
*/ static async fromJson(json) {
|
|
78
79
|
const blobBuffer = Buffer.from(json.blob.slice(2), 'hex');
|
|
79
|
-
const blob = Blob.fromBlobBuffer(blobBuffer);
|
|
80
|
+
const blob = await Blob.fromBlobBuffer(blobBuffer);
|
|
80
81
|
if (blob.commitment.toString('hex') !== json.kzg_commitment.slice(2)) {
|
|
81
82
|
throw new Error('KZG commitment does not match');
|
|
82
83
|
}
|
|
@@ -85,12 +86,10 @@ export { FIELDS_PER_BLOB };
|
|
|
85
86
|
/**
|
|
86
87
|
* Get the JSON representation of the blob.
|
|
87
88
|
*
|
|
88
|
-
* @param index - optional - The index of the blob in the block.
|
|
89
89
|
* @returns The JSON representation of the blob.
|
|
90
|
-
*/
|
|
90
|
+
*/ toJSON() {
|
|
91
91
|
return {
|
|
92
92
|
blob: `0x${Buffer.from(this.data).toString('hex')}`,
|
|
93
|
-
index: index.toString(),
|
|
94
93
|
// eslint-disable-next-line camelcase
|
|
95
94
|
kzg_commitment: `0x${this.commitment.toString('hex')}`
|
|
96
95
|
};
|
|
@@ -113,8 +112,9 @@ export { FIELDS_PER_BLOB };
|
|
|
113
112
|
* @returns
|
|
114
113
|
* y: BLS12Fr - Evaluation y = p(z), where p() is the blob polynomial. BLS12 field element, rep. as BigNum in nr, bigint in ts.
|
|
115
114
|
* proof: Buffer - KZG opening proof for y = p(z). The commitment to quotient polynomial Q, used in compressed BLS12 point format (48 bytes).
|
|
116
|
-
*/ evaluate(challengeZ, verifyProof = false) {
|
|
117
|
-
const
|
|
115
|
+
*/ async evaluate(challengeZ, verifyProof = false) {
|
|
116
|
+
const kzg = getKzg();
|
|
117
|
+
const res = await kzg.asyncComputeKzgProof(this.data, challengeZ.toBuffer());
|
|
118
118
|
if (verifyProof && !kzg.verifyKzgProof(this.commitment, challengeZ.toBuffer(), res[1], res[0])) {
|
|
119
119
|
throw new Error(`KZG proof did not verify.`);
|
|
120
120
|
}
|
|
@@ -151,6 +151,7 @@ export { FIELDS_PER_BLOB };
|
|
|
151
151
|
return this.data.length;
|
|
152
152
|
}
|
|
153
153
|
static getViemKzgInstance() {
|
|
154
|
+
const kzg = getKzg();
|
|
154
155
|
return {
|
|
155
156
|
blobToKzgCommitment: kzg.blobToKzgCommitment.bind(kzg),
|
|
156
157
|
computeBlobKzgProof: kzg.computeBlobKzgProof.bind(kzg),
|
package/dest/blob_batching.d.ts
CHANGED
|
@@ -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 { BatchedBlob } from './batched_blob.js';
|
|
3
4
|
import { Blob } from './blob.js';
|
|
4
5
|
import { BlobAccumulator, FinalBlobAccumulator, FinalBlobBatchingChallenges } from './circuit_types/index.js';
|
|
@@ -7,13 +8,25 @@ import { BlobAccumulator, FinalBlobAccumulator, FinalBlobBatchingChallenges } fr
|
|
|
7
8
|
* See noir-projects/noir-protocol-circuits/crates/blob/src/abis/blob_accumulator.nr
|
|
8
9
|
*/
|
|
9
10
|
export declare class BatchedBlobAccumulator {
|
|
11
|
+
/** Hash of Cs (to link to L1 blob hashes). */
|
|
10
12
|
readonly blobCommitmentsHashAcc: Fr;
|
|
13
|
+
/** Challenge point z_acc. Final value used such that p_i(z) = y_i. */
|
|
11
14
|
readonly zAcc: Fr;
|
|
15
|
+
/** Evaluation y_acc. Final value is is linear combination of all evaluations y_i = p_i(z) with gamma. */
|
|
12
16
|
readonly yAcc: BLS12Fr;
|
|
17
|
+
/** Commitment c_acc. Final value is linear combination of all commitments C_i = [p_i] with gamma. */
|
|
13
18
|
readonly cAcc: BLS12Point;
|
|
19
|
+
/** KZG opening q_acc. Final value is linear combination of all blob kzg 'proofs' Q_i with gamma. */
|
|
14
20
|
readonly qAcc: BLS12Point;
|
|
21
|
+
/**
|
|
22
|
+
* Challenge point gamma_acc for multi opening. Used with y, C, and kzg 'proof' Q above.
|
|
23
|
+
* TODO(#13608): We calculate this by hashing natively in the circuit (hence Fr representation), but it's actually used
|
|
24
|
+
* as a BLS12Fr field elt. Is this safe? Is there a skew?
|
|
25
|
+
*/
|
|
15
26
|
readonly gammaAcc: Fr;
|
|
27
|
+
/** Simply gamma^(i + 1) at blob i. Used for calculating the i'th element of the above linear comb.s */
|
|
16
28
|
readonly gammaPow: BLS12Fr;
|
|
29
|
+
/** Final challenge values used in evaluation. Optimistically input and checked in the final acc. */
|
|
17
30
|
readonly finalBlobChallenges: FinalBlobBatchingChallenges;
|
|
18
31
|
constructor(
|
|
19
32
|
/** Hash of Cs (to link to L1 blob hashes). */
|
|
@@ -102,4 +115,4 @@ export declare class BatchedBlobAccumulator {
|
|
|
102
115
|
toBlobAccumulator(): BlobAccumulator;
|
|
103
116
|
toFinalBlobAccumulator(): FinalBlobAccumulator;
|
|
104
117
|
}
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvYl9iYXRjaGluZy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Jsb2JfYmF0Y2hpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFakMsT0FBTyxFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSTlHOzs7R0FHRztBQUNILHFCQUFhLHNCQUFzQjtJQUUvQiw4Q0FBOEM7YUFDOUIsc0JBQXNCLEVBQUUsRUFBRTtJQUMxQyxzRUFBc0U7YUFDdEQsSUFBSSxFQUFFLEVBQUU7SUFDeEIseUdBQXlHO2FBQ3pGLElBQUksRUFBRSxPQUFPO0lBQzdCLHFHQUFxRzthQUNyRixJQUFJLEVBQUUsVUFBVTtJQUNoQyxvR0FBb0c7YUFDcEYsSUFBSSxFQUFFLFVBQVU7SUFDaEM7Ozs7T0FJRzthQUNhLFFBQVEsRUFBRSxFQUFFO0lBQzVCLHVHQUF1RzthQUN2RixRQUFRLEVBQUUsT0FBTztJQUNqQyxvR0FBb0c7YUFDcEYsbUJBQW1CLEVBQUUsMkJBQTJCO0lBcEJsRTtJQUNFLDhDQUE4QztJQUM5QixzQkFBc0IsRUFBRSxFQUFFO0lBQzFDLHNFQUFzRTtJQUN0RCxJQUFJLEVBQUUsRUFBRTtJQUN4Qix5R0FBeUc7SUFDekYsSUFBSSxFQUFFLE9BQU87SUFDN0IscUdBQXFHO0lBQ3JGLElBQUksRUFBRSxVQUFVO0lBQ2hDLG9HQUFvRztJQUNwRixJQUFJLEVBQUUsVUFBVTtJQUNoQzs7OztPQUlHO0lBQ2EsUUFBUSxFQUFFLEVBQUU7SUFDNUIsdUdBQXVHO0lBQ3ZGLFFBQVEsRUFBRSxPQUFPO0lBQ2pDLG9HQUFvRztJQUNwRixtQkFBbUIsRUFBRSwyQkFBMkIsRUFDOUQ7SUFFSjs7O09BR0c7SUFDSCxNQUFNLENBQUMsaUJBQWlCLENBQUMsbUJBQW1CLEVBQUUsMkJBQTJCLEdBQUcsc0JBQXNCLENBV2pHO0lBRUQ7Ozs7T0FJRztJQUNILE9BQWEsY0FBYyxDQUFDLHVCQUF1QixFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBRzVGO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsT0FBYSxLQUFLLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxXQUFXLFVBQVEsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBZTdGO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxPQUFhLCtCQUErQixDQUFDLHVCQUF1QixFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLDJCQUEyQixDQUFDLENBbUNsSDtJQUVEOzs7O09BSUc7SUFDRyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsRUFBRSxtQ0F1Q2xEO0lBRUQ7Ozs7O09BS0c7SUFDRyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsRUFBRSxFQUFFLG1DQWtCdEM7SUFFRDs7Ozs7Ozs7Ozs7OztPQWFHO0lBQ0csUUFBUSxDQUFDLFdBQVcsVUFBUSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FzQnhEO0lBRUQsTUFBTSxZQU9MO0lBRUQsWUFBWSxZQVVYO0lBRUQsS0FBSywyQkFXSjtJQUVELGlCQUFpQixvQkFTaEI7SUFFRCxzQkFBc0IseUJBRXJCO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blob_batching.d.ts","sourceRoot":"","sources":["../src/blob_batching.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"blob_batching.d.ts","sourceRoot":"","sources":["../src/blob_batching.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAI9G;;;GAGG;AACH,qBAAa,sBAAsB;IAE/B,8CAA8C;aAC9B,sBAAsB,EAAE,EAAE;IAC1C,sEAAsE;aACtD,IAAI,EAAE,EAAE;IACxB,yGAAyG;aACzF,IAAI,EAAE,OAAO;IAC7B,qGAAqG;aACrF,IAAI,EAAE,UAAU;IAChC,oGAAoG;aACpF,IAAI,EAAE,UAAU;IAChC;;;;OAIG;aACa,QAAQ,EAAE,EAAE;IAC5B,uGAAuG;aACvF,QAAQ,EAAE,OAAO;IACjC,oGAAoG;aACpF,mBAAmB,EAAE,2BAA2B;IApBlE;IACE,8CAA8C;IAC9B,sBAAsB,EAAE,EAAE;IAC1C,sEAAsE;IACtD,IAAI,EAAE,EAAE;IACxB,yGAAyG;IACzF,IAAI,EAAE,OAAO;IAC7B,qGAAqG;IACrF,IAAI,EAAE,UAAU;IAChC,oGAAoG;IACpF,IAAI,EAAE,UAAU;IAChC;;;;OAIG;IACa,QAAQ,EAAE,EAAE;IAC5B,uGAAuG;IACvF,QAAQ,EAAE,OAAO;IACjC,oGAAoG;IACpF,mBAAmB,EAAE,2BAA2B,EAC9D;IAEJ;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,2BAA2B,GAAG,sBAAsB,CAWjG;IAED;;;;OAIG;IACH,OAAa,cAAc,CAAC,uBAAuB,EAAE,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAG5F;IAED;;;;;;OAMG;IACH,OAAa,KAAK,CAAC,uBAAuB,EAAE,EAAE,EAAE,EAAE,EAAE,WAAW,UAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAe7F;IAED;;;;;;;;;;;OAWG;IACH,OAAa,+BAA+B,CAAC,uBAAuB,EAAE,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAmClH;IAED;;;;OAIG;IACG,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,mCAuClD;IAED;;;;;OAKG;IACG,gBAAgB,CAAC,UAAU,EAAE,EAAE,EAAE,mCAkBtC;IAED;;;;;;;;;;;;;OAaG;IACG,QAAQ,CAAC,WAAW,UAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAsBxD;IAED,MAAM,YAOL;IAED,YAAY,YAUX;IAED,KAAK,2BAWJ;IAED,iBAAiB,oBAShB;IAED,sBAAsB,yBAErB;CACF"}
|
package/dest/blob_batching.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { poseidon2Hash
|
|
3
|
-
import {
|
|
1
|
+
import { BLOBS_PER_CHECKPOINT, MAX_CHECKPOINTS_PER_EPOCH } from '@aztec/constants';
|
|
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
|
import { BatchedBlob } from './batched_blob.js';
|
|
5
7
|
import { getBlobsPerL1Block } from './blob_utils.js';
|
|
6
8
|
import { BlobAccumulator, FinalBlobAccumulator, FinalBlobBatchingChallenges } from './circuit_types/index.js';
|
|
7
9
|
import { computeBlobFieldsHash, hashNoirBigNumLimbs } from './hash.js';
|
|
8
|
-
import {
|
|
10
|
+
import { getKzg } from './kzg_context.js';
|
|
9
11
|
/**
|
|
10
12
|
* A class to create, manage, and prove batched EVM blobs.
|
|
11
13
|
* See noir-projects/noir-protocol-circuits/crates/blob/src/abis/blob_accumulator.nr
|
|
@@ -54,8 +56,8 @@ import { kzg } from './kzg_context.js';
|
|
|
54
56
|
* @returns A batched blob.
|
|
55
57
|
*/ static async batch(blobFieldsPerCheckpoint, verifyProof = false) {
|
|
56
58
|
const numCheckpoints = blobFieldsPerCheckpoint.length;
|
|
57
|
-
if (numCheckpoints >
|
|
58
|
-
throw new Error(`Too many checkpoints sent to batch(). The maximum is ${
|
|
59
|
+
if (numCheckpoints > MAX_CHECKPOINTS_PER_EPOCH) {
|
|
60
|
+
throw new Error(`Too many checkpoints sent to batch(). The maximum is ${MAX_CHECKPOINTS_PER_EPOCH}. Got ${numCheckpoints}.`);
|
|
59
61
|
}
|
|
60
62
|
// Precalculate the values (z and gamma) and initialize the accumulator:
|
|
61
63
|
let acc = await this.fromBlobFields(blobFieldsPerCheckpoint);
|
|
@@ -83,7 +85,7 @@ import { kzg } from './kzg_context.js';
|
|
|
83
85
|
for (const blobFields of blobFieldsPerCheckpoint){
|
|
84
86
|
// Compute the hash of all the fields in the block.
|
|
85
87
|
const blobFieldsHash = await computeBlobFieldsHash(blobFields);
|
|
86
|
-
const blobs = getBlobsPerL1Block(blobFields);
|
|
88
|
+
const blobs = await getBlobsPerL1Block(blobFields);
|
|
87
89
|
for (const blob of blobs){
|
|
88
90
|
// Compute the challenge z for each blob and accumulate it.
|
|
89
91
|
const challengeZ = await blob.computeChallengeZ(blobFieldsHash);
|
|
@@ -102,7 +104,7 @@ import { kzg } from './kzg_context.js';
|
|
|
102
104
|
throw new Error('No blobs to precompute challenges for.');
|
|
103
105
|
}
|
|
104
106
|
// Now we have a shared challenge for all blobs, evaluate them...
|
|
105
|
-
const proofObjects = allBlobs.map((b)=>b.evaluate(z));
|
|
107
|
+
const proofObjects = await Promise.all(allBlobs.map((b)=>b.evaluate(z)));
|
|
106
108
|
const evaluations = await Promise.all(proofObjects.map(({ y })=>hashNoirBigNumLimbs(y)));
|
|
107
109
|
// ...and find the challenge for the linear combination of blobs.
|
|
108
110
|
let gamma = evaluations[0];
|
|
@@ -124,7 +126,7 @@ import { kzg } from './kzg_context.js';
|
|
|
124
126
|
* We assume the input blob has not been evaluated at z.
|
|
125
127
|
* @returns An updated blob accumulator.
|
|
126
128
|
*/ async accumulateBlob(blob, blobFieldsHash) {
|
|
127
|
-
const { proof, y: thisY } = blob.evaluate(this.finalBlobChallenges.z);
|
|
129
|
+
const { proof, y: thisY } = await blob.evaluate(this.finalBlobChallenges.z);
|
|
128
130
|
const thisC = BLS12Point.decompress(blob.commitment);
|
|
129
131
|
const thisQ = BLS12Point.decompress(proof);
|
|
130
132
|
const blobChallengeZ = await blob.computeChallengeZ(blobFieldsHash);
|
|
@@ -160,7 +162,7 @@ import { kzg } from './kzg_context.js';
|
|
|
160
162
|
* @param blobFields - The blob fields of a checkpoint to accumulate.
|
|
161
163
|
* @returns An updated blob accumulator.
|
|
162
164
|
*/ async accumulateFields(blobFields) {
|
|
163
|
-
const blobs = getBlobsPerL1Block(blobFields);
|
|
165
|
+
const blobs = await getBlobsPerL1Block(blobFields);
|
|
164
166
|
if (blobs.length > BLOBS_PER_CHECKPOINT) {
|
|
165
167
|
throw new Error(`Too many blobs to accumulate. The maximum is ${BLOBS_PER_CHECKPOINT} per checkpoint. Got ${blobs.length}.`);
|
|
166
168
|
}
|
|
@@ -206,7 +208,7 @@ import { kzg } from './kzg_context.js';
|
|
|
206
208
|
return batchedBlob;
|
|
207
209
|
}
|
|
208
210
|
verify() {
|
|
209
|
-
return
|
|
211
|
+
return getKzg().verifyKzgProof(this.cAcc.compress(), this.zAcc.toBuffer(), this.yAcc.toBuffer(), this.qAcc.compress());
|
|
210
212
|
}
|
|
211
213
|
isEmptyState() {
|
|
212
214
|
return this.blobCommitmentsHashAcc.isZero() && this.zAcc.isZero() && this.yAcc.isZero() && this.cAcc.isZero() && this.qAcc.isZero() && this.gammaAcc.isZero() && this.gammaPow.isZero();
|
package/dest/blob_utils.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { BLS12Point
|
|
1
|
+
import { BLS12Point } from '@aztec/foundation/curves/bls12';
|
|
2
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
3
|
import type { BatchedBlob } from './batched_blob.js';
|
|
3
4
|
import { Blob } from './blob.js';
|
|
4
5
|
import { type CheckpointBlobData } from './encoding/index.js';
|
|
@@ -15,7 +16,7 @@ export declare function getPrefixedEthBlobCommitments(blobs: Blob[]): `0x${strin
|
|
|
15
16
|
*
|
|
16
17
|
* @throws If the number of fields does not match what's indicated by the checkpoint prefix.
|
|
17
18
|
*/
|
|
18
|
-
export declare function getBlobsPerL1Block(fields: Fr[]): Blob[]
|
|
19
|
+
export declare function getBlobsPerL1Block(fields: Fr[]): Promise<Blob[]>;
|
|
19
20
|
/**
|
|
20
21
|
* Get the encoded data from all blobs in the checkpoint.
|
|
21
22
|
* @param blobs - The blobs to read data from. Should be all the blobs for the L1 block proposing the checkpoint.
|
|
@@ -36,4 +37,4 @@ export declare function getBlobCommitmentsFromBlobs(blobs: Blob[]): BLS12Point[]
|
|
|
36
37
|
* See https://eips.ethereum.org/EIPS/eip-4844#point-evaluation-precompile
|
|
37
38
|
*/
|
|
38
39
|
export declare function getEthBlobEvaluationInputs(batchedBlob: BatchedBlob): `0x${string}`;
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvYl91dGlscy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Jsb2JfdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVwRCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxLQUFLLGtCQUFrQixFQUFzQyxNQUFNLHFCQUFxQixDQUFDO0FBR2xHOzs7OztHQUtHO0FBQ0gsd0JBQWdCLDZCQUE2QixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLE1BQU0sRUFBRSxDQVMxRTtBQUVEOzs7OztHQUtHO0FBQ0gsd0JBQXNCLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FXdEU7QUFFRDs7OztHQUlHO0FBQ0gsd0JBQWdCLGlDQUFpQyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxrQkFBa0IsQ0FHbkY7QUFFRCx3QkFBZ0IseUJBQXlCLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FFM0Q7QUFFRCx3QkFBZ0IsMkJBQTJCLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLFVBQVUsRUFBRSxDQUV2RTtBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSCx3QkFBZ0IsMEJBQTBCLENBQUMsV0FBVyxFQUFFLFdBQVcsR0FBRyxLQUFLLE1BQU0sRUFBRSxDQVNsRiJ9
|
package/dest/blob_utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blob_utils.d.ts","sourceRoot":"","sources":["../src/blob_utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"blob_utils.d.ts","sourceRoot":"","sources":["../src/blob_utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,kBAAkB,EAAsC,MAAM,qBAAqB,CAAC;AAGlG;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,MAAM,EAAE,CAS1E;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAWtE;AAED;;;;GAIG;AACH,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,kBAAkB,CAGnF;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAE3D;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,UAAU,EAAE,CAEvE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,WAAW,GAAG,KAAK,MAAM,EAAE,CASlF"}
|
package/dest/blob_utils.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FIELDS_PER_BLOB } from '@aztec/constants';
|
|
2
|
-
import { BLS12Point } from '@aztec/foundation/
|
|
2
|
+
import { BLS12Point } from '@aztec/foundation/curves/bls12';
|
|
3
3
|
import { Blob } from './blob.js';
|
|
4
4
|
import { decodeCheckpointBlobDataFromBuffer } from './encoding/index.js';
|
|
5
5
|
import { computeBlobsHash, computeEthVersionedBlobHash } from './hash.js';
|
|
@@ -24,14 +24,14 @@ import { computeBlobsHash, computeEthVersionedBlobHash } from './hash.js';
|
|
|
24
24
|
* @returns As many blobs as required to broadcast the given fields to an L1 block.
|
|
25
25
|
*
|
|
26
26
|
* @throws If the number of fields does not match what's indicated by the checkpoint prefix.
|
|
27
|
-
*/ export function getBlobsPerL1Block(fields) {
|
|
27
|
+
*/ export async function getBlobsPerL1Block(fields) {
|
|
28
28
|
if (!fields.length) {
|
|
29
29
|
throw new Error('Cannot create blobs from empty fields.');
|
|
30
30
|
}
|
|
31
31
|
const numBlobs = Math.ceil(fields.length / FIELDS_PER_BLOB);
|
|
32
|
-
return Array.from({
|
|
32
|
+
return await Promise.all(Array.from({
|
|
33
33
|
length: numBlobs
|
|
34
|
-
}, (_, i)=>Blob.fromFields(fields.slice(i * FIELDS_PER_BLOB, (i + 1) * FIELDS_PER_BLOB)));
|
|
34
|
+
}, (_, i)=>Blob.fromFields(fields.slice(i * FIELDS_PER_BLOB, (i + 1) * FIELDS_PER_BLOB))));
|
|
35
35
|
}
|
|
36
36
|
/**
|
|
37
37
|
* Get the encoded data from all blobs in the checkpoint.
|
|
@@ -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, FieldReader } from '@aztec/foundation/serialize';
|
|
3
4
|
/**
|
|
4
5
|
* See `noir-projects/noir-protocol-circuits/crates/blob/src/abis/blob_accumulator.nr` for documentation.
|
|
@@ -19,4 +20,4 @@ export declare class BlobAccumulator {
|
|
|
19
20
|
static fromFields(fields: Fr[] | FieldReader): BlobAccumulator;
|
|
20
21
|
static random(): BlobAccumulator;
|
|
21
22
|
}
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvYl9hY2N1bXVsYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NpcmN1aXRfdHlwZXMvYmxvYl9hY2N1bXVsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQVcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBcUIsTUFBTSw2QkFBNkIsQ0FBQztBQUUzRjs7R0FFRztBQUNILHFCQUFhLGVBQWU7SUFFakIsc0JBQXNCLEVBQUUsRUFBRTtJQUMxQixJQUFJLEVBQUUsRUFBRTtJQUNSLElBQUksRUFBRSxPQUFPO0lBQ2IsSUFBSSxFQUFFLFVBQVU7SUFDaEIsUUFBUSxFQUFFLEVBQUU7SUFDWixXQUFXLEVBQUUsT0FBTztJQU43QixZQUNTLHNCQUFzQixFQUFFLEVBQUUsRUFDMUIsSUFBSSxFQUFFLEVBQUUsRUFDUixJQUFJLEVBQUUsT0FBTyxFQUNiLElBQUksRUFBRSxVQUFVLEVBQ2hCLFFBQVEsRUFBRSxFQUFFLEVBQ1osV0FBVyxFQUFFLE9BQU8sRUFDekI7SUFFSixNQUFNLENBQUMsS0FBSyxJQUFJLGVBQWUsQ0FFOUI7SUFFRCxNQUFNLENBQUMsS0FBSyxFQUFFLGVBQWUsV0FTNUI7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsWUFBWSxHQUFHLGVBQWUsQ0FVaEU7SUFFRCxRQUFRLDRCQVNQO0lBRUQsUUFBUSxTQVdQO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsV0FBVyxHQUFHLGVBQWUsQ0FjN0Q7SUFFRCxNQUFNLENBQUMsTUFBTSxvQkFTWjtDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blob_accumulator.d.ts","sourceRoot":"","sources":["../../src/circuit_types/blob_accumulator.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"blob_accumulator.d.ts","sourceRoot":"","sources":["../../src/circuit_types/blob_accumulator.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAqB,MAAM,6BAA6B,CAAC;AAE3F;;GAEG;AACH,qBAAa,eAAe;IAEjB,sBAAsB,EAAE,EAAE;IAC1B,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,EAAE;IACZ,WAAW,EAAE,OAAO;IAN7B,YACS,sBAAsB,EAAE,EAAE,EAC1B,IAAI,EAAE,EAAE,EACR,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,EAAE,EACZ,WAAW,EAAE,OAAO,EACzB;IAEJ,MAAM,CAAC,KAAK,IAAI,eAAe,CAE9B;IAED,MAAM,CAAC,KAAK,EAAE,eAAe,WAS5B;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,eAAe,CAUhE;IAED,QAAQ,4BASP;IAED,QAAQ,SAWP;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,GAAG,eAAe,CAc7D;IAED,MAAM,CAAC,MAAM,oBASZ;CACF"}
|
|
@@ -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
|
* See `noir-projects/noir-protocol-circuits/crates/blob/src/abis/blob_accumulator.nr` for documentation.
|
|
@@ -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 } from '@aztec/foundation/serialize';
|
|
3
4
|
import { inspect } from 'util';
|
|
4
5
|
/**
|
|
@@ -19,4 +20,4 @@ export declare class FinalBlobAccumulator {
|
|
|
19
20
|
static random(): FinalBlobAccumulator;
|
|
20
21
|
[inspect.custom](): string;
|
|
21
22
|
}
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluYWxfYmxvYl9hY2N1bXVsYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NpcmN1aXRfdHlwZXMvZmluYWxfYmxvYl9hY2N1bXVsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFxQixNQUFNLDZCQUE2QixDQUFDO0FBRTlFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0I7O0dBRUc7QUFDSCxxQkFBYSxvQkFBb0I7SUFFdEIsbUJBQW1CLEVBQUUsRUFBRTtJQUN2QixDQUFDLEVBQUUsRUFBRTtJQUNMLENBQUMsRUFBRSxPQUFPO0lBQ1YsQ0FBQyxFQUFFLFVBQVU7SUFKdEIsWUFDUyxtQkFBbUIsRUFBRSxFQUFFLEVBQ3ZCLENBQUMsRUFBRSxFQUFFLEVBQ0wsQ0FBQyxFQUFFLE9BQU8sRUFDVixDQUFDLEVBQUUsVUFBVSxFQUNsQjtJQUVKLE1BQU0sQ0FBQyxLQUFLLElBQUksb0JBQW9CLENBRW5DO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLFlBQVksR0FBRyxvQkFBb0IsQ0FRckU7SUFFRCxRQUFRLDRCQUVQO0lBRUQsUUFBUSxTQU9QO0lBR0QsUUFBUSxXQU1QO0lBRUQsTUFBTSxDQUFDLEtBQUssRUFBRSxvQkFBb0IsV0FPakM7SUFHRCxNQUFNLENBQUMsTUFBTSx5QkFFWjtJQUVELENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQU9mO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"final_blob_accumulator.d.ts","sourceRoot":"","sources":["../../src/circuit_types/final_blob_accumulator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"final_blob_accumulator.d.ts","sourceRoot":"","sources":["../../src/circuit_types/final_blob_accumulator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAE9E,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B;;GAEG;AACH,qBAAa,oBAAoB;IAEtB,mBAAmB,EAAE,EAAE;IACvB,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,OAAO;IACV,CAAC,EAAE,UAAU;IAJtB,YACS,mBAAmB,EAAE,EAAE,EACvB,CAAC,EAAE,EAAE,EACL,CAAC,EAAE,OAAO,EACV,CAAC,EAAE,UAAU,EAClB;IAEJ,MAAM,CAAC,KAAK,IAAI,oBAAoB,CAEnC;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,oBAAoB,CAQrE;IAED,QAAQ,4BAEP;IAED,QAAQ,SAOP;IAGD,QAAQ,WAMP;IAED,MAAM,CAAC,KAAK,EAAE,oBAAoB,WAOjC;IAGD,MAAM,CAAC,MAAM,yBAEZ;IAED,CAAC,OAAO,CAAC,MAAM,CAAC,WAOf;CACF"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
var _computedKey;
|
|
2
|
+
import { BLS12Fr, BLS12Point } from '@aztec/foundation/curves/bls12';
|
|
3
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
4
|
import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
3
5
|
import { inspect } from 'util';
|
|
6
|
+
_computedKey = inspect.custom;
|
|
4
7
|
/**
|
|
5
8
|
* See `noir-projects/noir-protocol-circuits/crates/blob/src/abis/final_blob_accumulator.nr` for documentation.
|
|
6
9
|
*/ export class FinalBlobAccumulator {
|
|
@@ -52,7 +55,7 @@ import { inspect } from 'util';
|
|
|
52
55
|
static random() {
|
|
53
56
|
return new FinalBlobAccumulator(Fr.random(), Fr.random(), BLS12Fr.random(), BLS12Point.random());
|
|
54
57
|
}
|
|
55
|
-
[
|
|
58
|
+
[_computedKey]() {
|
|
56
59
|
return `FinalBlobAccumulator {
|
|
57
60
|
blobCommitmentsHash: ${inspect(this.blobCommitmentsHash)},
|
|
58
61
|
z: ${inspect(this.z)},
|
|
@@ -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
|
import { BufferReader } from '@aztec/foundation/serialize';
|
|
3
4
|
/**
|
|
4
5
|
* See `noir-projects/noir-protocol-circuits/crates/blob/src/abis/final_blob_batching_challenges.nr` for documentation.
|
|
@@ -12,4 +13,4 @@ export declare class FinalBlobBatchingChallenges {
|
|
|
12
13
|
static fromBuffer(buffer: Buffer | BufferReader): FinalBlobBatchingChallenges;
|
|
13
14
|
toBuffer(): Buffer<ArrayBufferLike>;
|
|
14
15
|
}
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluYWxfYmxvYl9iYXRjaGluZ19jaGFsbGVuZ2VzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2lyY3VpdF90eXBlcy9maW5hbF9ibG9iX2JhdGNoaW5nX2NoYWxsZW5nZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFxQixNQUFNLDZCQUE2QixDQUFDO0FBRTlFOztHQUVHO0FBQ0gscUJBQWEsMkJBQTJCO2FBRXBCLENBQUMsRUFBRSxFQUFFO2FBQ0wsS0FBSyxFQUFFLE9BQU87SUFGaEMsWUFDa0IsQ0FBQyxFQUFFLEVBQUUsRUFDTCxLQUFLLEVBQUUsT0FBTyxFQUM1QjtJQUVKLE1BQU0sQ0FBQyxLQUFLLEVBQUUsMkJBQTJCLFdBRXhDO0lBRUQsTUFBTSxDQUFDLEtBQUssSUFBSSwyQkFBMkIsQ0FFMUM7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsWUFBWSxHQUFHLDJCQUEyQixDQUc1RTtJQUVELFFBQVEsNEJBRVA7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"final_blob_batching_challenges.d.ts","sourceRoot":"","sources":["../../src/circuit_types/final_blob_batching_challenges.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"final_blob_batching_challenges.d.ts","sourceRoot":"","sources":["../../src/circuit_types/final_blob_batching_challenges.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAE9E;;GAEG;AACH,qBAAa,2BAA2B;aAEpB,CAAC,EAAE,EAAE;aACL,KAAK,EAAE,OAAO;IAFhC,YACkB,CAAC,EAAE,EAAE,EACL,KAAK,EAAE,OAAO,EAC5B;IAEJ,MAAM,CAAC,KAAK,EAAE,2BAA2B,WAExC;IAED,MAAM,CAAC,KAAK,IAAI,2BAA2B,CAE1C;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,2BAA2B,CAG5E;IAED,QAAQ,4BAEP;CACF"}
|
|
@@ -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
|
import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
3
4
|
/**
|
|
4
5
|
* See `noir-projects/noir-protocol-circuits/crates/blob/src/abis/final_blob_batching_challenges.nr` for documentation.
|
|
@@ -1,8 +1,16 @@
|
|
|
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 BlockEndMarker } from './block_end_marker.js';
|
|
4
4
|
import { type BlockEndStateField } from './block_end_state_field.js';
|
|
5
5
|
import { type TxBlobData } from './tx_blob_data.js';
|
|
6
|
+
export declare const NUM_BLOCK_END_BLOB_FIELDS = 6;
|
|
7
|
+
export declare const NUM_FIRST_BLOCK_END_BLOB_FIELDS = 7;
|
|
8
|
+
export declare const NUM_CHECKPOINT_END_MARKER_FIELDS = 1;
|
|
9
|
+
/**
|
|
10
|
+
* Returns the number of blob fields used for block end data.
|
|
11
|
+
* @param isFirstBlockInCheckpoint - Whether this is the first block in a checkpoint.
|
|
12
|
+
*/
|
|
13
|
+
export declare function getNumBlockEndBlobFields(isFirstBlockInCheckpoint: boolean): number;
|
|
6
14
|
export interface BlockEndBlobData {
|
|
7
15
|
blockEndMarker: BlockEndMarker;
|
|
8
16
|
blockEndStateField: BlockEndStateField;
|
|
@@ -19,4 +27,4 @@ export declare function encodeBlockEndBlobData(blockEndBlobData: BlockEndBlobDat
|
|
|
19
27
|
export declare function decodeBlockEndBlobData(fields: Fr[] | FieldReader, isFirstBlock: boolean): BlockEndBlobData;
|
|
20
28
|
export declare function encodeBlockBlobData(blockBlobData: BlockBlobData): Fr[];
|
|
21
29
|
export declare function decodeBlockBlobData(fields: Fr[] | FieldReader, isFirstBlock: boolean): BlockBlobData;
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfYmxvYl9kYXRhLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZW5jb2RpbmcvYmxvY2tfYmxvYl9kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHMUQsT0FBTyxFQUNMLEtBQUssY0FBYyxFQUlwQixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFDTCxLQUFLLGtCQUFrQixFQUd4QixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxLQUFLLFVBQVUsRUFBc0MsTUFBTSxtQkFBbUIsQ0FBQztBQUl4RixlQUFPLE1BQU0seUJBQXlCLElBQUksQ0FBQztBQUMzQyxlQUFPLE1BQU0sK0JBQStCLElBQUksQ0FBQztBQUNqRCxlQUFPLE1BQU0sZ0NBQWdDLElBQUksQ0FBQztBQUVsRDs7O0dBR0c7QUFDSCx3QkFBZ0Isd0JBQXdCLENBQUMsd0JBQXdCLEVBQUUsT0FBTyxHQUFHLE1BQU0sQ0FFbEY7QUFFRCxNQUFNLFdBQVcsZ0JBQWdCO0lBQy9CLGNBQWMsRUFBRSxjQUFjLENBQUM7SUFDL0Isa0JBQWtCLEVBQUUsa0JBQWtCLENBQUM7SUFDdkMsZUFBZSxFQUFFLEVBQUUsQ0FBQztJQUNwQixZQUFZLEVBQUUsRUFBRSxDQUFDO0lBQ2pCLGFBQWEsRUFBRSxFQUFFLENBQUM7SUFDbEIsY0FBYyxFQUFFLEVBQUUsQ0FBQztJQUNuQixpQkFBaUIsRUFBRSxFQUFFLEdBQUcsU0FBUyxDQUFDO0NBQ25DO0FBRUQsTUFBTSxXQUFXLGFBQWMsU0FBUSxnQkFBZ0I7SUFDckQsR0FBRyxFQUFFLFVBQVUsRUFBRSxDQUFDO0NBQ25CO0FBRUQsd0JBQWdCLHNCQUFzQixDQUFDLGdCQUFnQixFQUFFLGdCQUFnQixHQUFHLEVBQUUsRUFBRSxDQVUvRTtBQUVELHdCQUFnQixzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsV0FBVyxFQUFFLFlBQVksRUFBRSxPQUFPLEdBQUcsZ0JBQWdCLENBbUIxRztBQUVELHdCQUFnQixtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsYUFBYSxHQUFHLEVBQUUsRUFBRSxDQUV0RTtBQUVELHdCQUFnQixtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsV0FBVyxFQUFFLFlBQVksRUFBRSxPQUFPLEdBQUcsYUFBYSxDQStCcEcifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block_blob_data.d.ts","sourceRoot":"","sources":["../../src/encoding/block_blob_data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"block_blob_data.d.ts","sourceRoot":"","sources":["../../src/encoding/block_blob_data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAG1D,OAAO,EACL,KAAK,cAAc,EAIpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,KAAK,kBAAkB,EAGxB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,KAAK,UAAU,EAAsC,MAAM,mBAAmB,CAAC;AAIxF,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAC3C,eAAO,MAAM,+BAA+B,IAAI,CAAC;AACjD,eAAO,MAAM,gCAAgC,IAAI,CAAC;AAElD;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,wBAAwB,EAAE,OAAO,GAAG,MAAM,CAElF;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,cAAc,CAAC;IAC/B,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,eAAe,EAAE,EAAE,CAAC;IACpB,YAAY,EAAE,EAAE,CAAC;IACjB,aAAa,EAAE,EAAE,CAAC;IAClB,cAAc,EAAE,EAAE,CAAC;IACnB,iBAAiB,EAAE,EAAE,GAAG,SAAS,CAAC;CACnC;AAED,MAAM,WAAW,aAAc,SAAQ,gBAAgB;IACrD,GAAG,EAAE,UAAU,EAAE,CAAC;CACnB;AAED,wBAAgB,sBAAsB,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,EAAE,EAAE,CAU/E;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,YAAY,EAAE,OAAO,GAAG,gBAAgB,CAmB1G;AAED,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,aAAa,GAAG,EAAE,EAAE,CAEtE;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,YAAY,EAAE,OAAO,GAAG,aAAa,CA+BpG"}
|
|
@@ -3,6 +3,16 @@ import { BlobDeserializationError } from '../errors.js';
|
|
|
3
3
|
import { decodeBlockEndMarker, encodeBlockEndMarker, isBlockEndMarker } from './block_end_marker.js';
|
|
4
4
|
import { decodeBlockEndStateField, encodeBlockEndStateField } from './block_end_state_field.js';
|
|
5
5
|
import { decodeTxBlobData, encodeTxBlobData } from './tx_blob_data.js';
|
|
6
|
+
// Must match the implementation in `noir-protocol-circuits/crates/types/src/blob_data/block_blob_data.nr`.
|
|
7
|
+
export const NUM_BLOCK_END_BLOB_FIELDS = 6;
|
|
8
|
+
export const NUM_FIRST_BLOCK_END_BLOB_FIELDS = 7;
|
|
9
|
+
export const NUM_CHECKPOINT_END_MARKER_FIELDS = 1;
|
|
10
|
+
/**
|
|
11
|
+
* Returns the number of blob fields used for block end data.
|
|
12
|
+
* @param isFirstBlockInCheckpoint - Whether this is the first block in a checkpoint.
|
|
13
|
+
*/ export function getNumBlockEndBlobFields(isFirstBlockInCheckpoint) {
|
|
14
|
+
return isFirstBlockInCheckpoint ? NUM_FIRST_BLOCK_END_BLOB_FIELDS : NUM_BLOCK_END_BLOB_FIELDS;
|
|
15
|
+
}
|
|
6
16
|
export function encodeBlockEndBlobData(blockEndBlobData) {
|
|
7
17
|
return [
|
|
8
18
|
encodeBlockEndMarker(blockEndBlobData.blockEndMarker),
|
|
@@ -18,7 +28,7 @@ export function encodeBlockEndBlobData(blockEndBlobData) {
|
|
|
18
28
|
}
|
|
19
29
|
export function decodeBlockEndBlobData(fields, isFirstBlock) {
|
|
20
30
|
const reader = FieldReader.asReader(fields);
|
|
21
|
-
const numBlockEndData = isFirstBlock
|
|
31
|
+
const numBlockEndData = getNumBlockEndBlobFields(isFirstBlock);
|
|
22
32
|
if (numBlockEndData > reader.remainingFields()) {
|
|
23
33
|
throw new BlobDeserializationError(`Incorrect encoding of blob fields: not enough fields for block end data. Expected ${numBlockEndData} fields, only ${reader.remainingFields()} remaining.`);
|
|
24
34
|
}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
3
|
export interface BlockEndMarker {
|
|
3
4
|
timestamp: bigint;
|
|
4
|
-
blockNumber:
|
|
5
|
+
blockNumber: BlockNumber;
|
|
5
6
|
numTxs: number;
|
|
6
7
|
}
|
|
7
8
|
export declare function encodeBlockEndMarker(blockEndMarker: BlockEndMarker): Fr;
|
|
8
9
|
export declare function decodeBlockEndMarker(field: Fr): BlockEndMarker;
|
|
9
10
|
export declare function isBlockEndMarker(field: Fr): boolean;
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfZW5kX21hcmtlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2VuY29kaW5nL2Jsb2NrX2VuZF9tYXJrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQVVwRCxNQUFNLFdBQVcsY0FBYztJQUM3QixTQUFTLEVBQUUsTUFBTSxDQUFDO0lBQ2xCLFdBQVcsRUFBRSxXQUFXLENBQUM7SUFDekIsTUFBTSxFQUFFLE1BQU0sQ0FBQztDQUNoQjtBQUVELHdCQUFnQixvQkFBb0IsQ0FBQyxjQUFjLEVBQUUsY0FBYyxNQVNsRTtBQUVELHdCQUFnQixvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLGNBQWMsQ0FtQjlEO0FBR0Qsd0JBQWdCLGdCQUFnQixDQUFDLEtBQUssRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUduRCJ9
|