@aztec/stdlib 4.0.0-nightly.20260108 → 4.0.0-nightly.20260111

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.
Files changed (72) hide show
  1. package/dest/abi/contract_artifact.d.ts +2 -2
  2. package/dest/abi/contract_artifact.d.ts.map +1 -1
  3. package/dest/abi/contract_artifact.js +1 -1
  4. package/dest/block/l2_block.d.ts +1 -1
  5. package/dest/block/l2_block.d.ts.map +1 -1
  6. package/dest/block/l2_block.js +4 -2
  7. package/dest/block/l2_block_code_to_purge.d.ts +2 -3
  8. package/dest/block/l2_block_code_to_purge.d.ts.map +1 -1
  9. package/dest/block/l2_block_code_to_purge.js +2 -8
  10. package/dest/block/l2_block_header.d.ts +8 -12
  11. package/dest/block/l2_block_header.d.ts.map +1 -1
  12. package/dest/block/l2_block_header.js +22 -17
  13. package/dest/interfaces/aztec-node.d.ts +7 -6
  14. package/dest/interfaces/aztec-node.d.ts.map +1 -1
  15. package/dest/interfaces/aztec-node.js +2 -2
  16. package/dest/interfaces/proving-job.d.ts +4 -4
  17. package/dest/interfaces/proving-job.d.ts.map +1 -1
  18. package/dest/interfaces/proving-job.js +1 -7
  19. package/dest/interfaces/server_circuit_prover.d.ts +4 -3
  20. package/dest/interfaces/server_circuit_prover.d.ts.map +1 -1
  21. package/dest/messaging/in_hash.d.ts +4 -2
  22. package/dest/messaging/in_hash.d.ts.map +1 -1
  23. package/dest/messaging/in_hash.js +3 -1
  24. package/dest/messaging/l2_to_l1_membership.d.ts +88 -6
  25. package/dest/messaging/l2_to_l1_membership.d.ts.map +1 -1
  26. package/dest/messaging/l2_to_l1_membership.js +158 -42
  27. package/dest/messaging/out_hash.d.ts +2 -1
  28. package/dest/messaging/out_hash.d.ts.map +1 -1
  29. package/dest/messaging/out_hash.js +13 -4
  30. package/dest/p2p/block_attestation.d.ts +3 -6
  31. package/dest/p2p/block_attestation.d.ts.map +1 -1
  32. package/dest/p2p/consensus_payload.d.ts +3 -6
  33. package/dest/p2p/consensus_payload.d.ts.map +1 -1
  34. package/dest/rollup/checkpoint_header.d.ts +11 -12
  35. package/dest/rollup/checkpoint_header.d.ts.map +1 -1
  36. package/dest/rollup/checkpoint_header.js +26 -18
  37. package/dest/rollup/checkpoint_rollup_public_inputs.d.ts +6 -1
  38. package/dest/rollup/checkpoint_rollup_public_inputs.d.ts.map +1 -1
  39. package/dest/rollup/checkpoint_rollup_public_inputs.js +6 -2
  40. package/dest/rollup/root_rollup_public_inputs.d.ts +8 -3
  41. package/dest/rollup/root_rollup_public_inputs.d.ts.map +1 -1
  42. package/dest/rollup/root_rollup_public_inputs.js +6 -3
  43. package/dest/tests/factories.d.ts +3 -7
  44. package/dest/tests/factories.d.ts.map +1 -1
  45. package/dest/tests/factories.js +6 -11
  46. package/dest/tests/mocks.d.ts +5 -2
  47. package/dest/tests/mocks.d.ts.map +1 -1
  48. package/dest/tests/mocks.js +5 -6
  49. package/dest/tx/index.d.ts +1 -2
  50. package/dest/tx/index.d.ts.map +1 -1
  51. package/dest/tx/index.js +0 -1
  52. package/package.json +8 -8
  53. package/src/abi/contract_artifact.ts +10 -10
  54. package/src/block/l2_block.ts +3 -2
  55. package/src/block/l2_block_code_to_purge.ts +3 -11
  56. package/src/block/l2_block_header.ts +26 -17
  57. package/src/interfaces/aztec-node.ts +9 -6
  58. package/src/interfaces/proving-job.ts +2 -11
  59. package/src/interfaces/server_circuit_prover.ts +3 -2
  60. package/src/messaging/in_hash.ts +3 -1
  61. package/src/messaging/l2_to_l1_membership.ts +176 -52
  62. package/src/messaging/out_hash.ts +17 -7
  63. package/src/rollup/checkpoint_header.ts +30 -20
  64. package/src/rollup/checkpoint_rollup_public_inputs.ts +6 -0
  65. package/src/rollup/root_rollup_public_inputs.ts +6 -0
  66. package/src/tests/factories.ts +11 -15
  67. package/src/tests/mocks.ts +20 -14
  68. package/src/tx/index.ts +0 -1
  69. package/dest/tx/content_commitment.d.ts +0 -49
  70. package/dest/tx/content_commitment.d.ts.map +0 -1
  71. package/dest/tx/content_commitment.js +0 -90
  72. package/src/tx/content_commitment.ts +0 -113
@@ -6,7 +6,7 @@ import {
6
6
  MAX_NULLIFIERS_PER_TX,
7
7
  MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
8
8
  } from '@aztec/constants';
9
- import { makeTuple } from '@aztec/foundation/array';
9
+ import { type FieldsOf, makeTuple } from '@aztec/foundation/array';
10
10
  import { BlockNumber, CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
11
11
  import { Buffer32 } from '@aztec/foundation/buffer';
12
12
  import { padArrayEnd, times } from '@aztec/foundation/collection';
@@ -16,6 +16,7 @@ import { Fr } from '@aztec/foundation/curves/bn254';
16
16
 
17
17
  import type { ContractArtifact } from '../abi/abi.js';
18
18
  import { PublicTxEffect } from '../avm/avm.js';
19
+ import type { AvmAccumulatedData } from '../avm/avm_accumulated_data.js';
19
20
  import { AvmCircuitPublicInputs } from '../avm/avm_circuit_public_inputs.js';
20
21
  import { PublicDataWrite } from '../avm/public_data_write.js';
21
22
  import { RevertCode } from '../avm/revert_code.js';
@@ -202,6 +203,7 @@ export async function mockProcessedTx({
202
203
  // The default gasUsed is the tx overhead.
203
204
  gasUsed = Gas.from({ daGas: FIXED_DA_GAS, l2Gas: FIXED_L2_GAS }),
204
205
  privateOnly = false,
206
+ avmAccumulatedData,
205
207
  ...mockTxOpts
206
208
  }: {
207
209
  seed?: number;
@@ -213,6 +215,7 @@ export async function mockProcessedTx({
213
215
  protocolContracts?: ProtocolContracts;
214
216
  feePaymentPublicDataWrite?: PublicDataWrite;
215
217
  privateOnly?: boolean;
218
+ avmAccumulatedData?: Partial<FieldsOf<AvmAccumulatedData>>;
216
219
  } & Parameters<typeof mockTx>[1] = {}) {
217
220
  seed *= 0x1000; // Avoid clashing with the previous mock values if seed only increases by 1.
218
221
  anchorBlockHeader ??= db?.getInitialHeader() ?? makeBlockHeader(seed);
@@ -292,19 +295,22 @@ export async function mockProcessedTx({
292
295
  avmOutput.previousRevertibleAccumulatedDataArrayLengths =
293
296
  avmOutput.previousRevertibleAccumulatedData.getArrayLengths();
294
297
  // Assign final data emitted from avm.
295
- avmOutput.accumulatedData.noteHashes = revertibleData.noteHashes;
296
- avmOutput.accumulatedData.nullifiers = padArrayEnd(
297
- nonRevertibleData.nullifiers.concat(revertibleData.nullifiers).filter(n => !n.isEmpty()),
298
- Fr.ZERO,
299
- MAX_NULLIFIERS_PER_TX,
300
- );
301
- avmOutput.accumulatedData.l2ToL1Msgs = revertibleData.l2ToL1Msgs;
302
- avmOutput.accumulatedData.publicDataWrites = makeTuple(
303
- MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
304
- i => new PublicDataWrite(new Fr(i), new Fr(i + 10)),
305
- seed + 0x2000,
306
- );
307
- avmOutput.accumulatedData.publicDataWrites[0] = feePaymentPublicDataWrite;
298
+ avmOutput.accumulatedData.noteHashes = avmAccumulatedData?.noteHashes ?? revertibleData.noteHashes;
299
+ avmOutput.accumulatedData.nullifiers =
300
+ avmAccumulatedData?.nullifiers ??
301
+ padArrayEnd(
302
+ nonRevertibleData.nullifiers.concat(revertibleData.nullifiers).filter(n => !n.isEmpty()),
303
+ Fr.ZERO,
304
+ MAX_NULLIFIERS_PER_TX,
305
+ );
306
+ avmOutput.accumulatedData.l2ToL1Msgs = avmAccumulatedData?.l2ToL1Msgs ?? revertibleData.l2ToL1Msgs;
307
+ avmOutput.accumulatedData.publicDataWrites =
308
+ avmAccumulatedData?.publicDataWrites ??
309
+ makeTuple(
310
+ MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
311
+ i => (i === 0 ? feePaymentPublicDataWrite : new PublicDataWrite(new Fr(i), new Fr(i + 10))),
312
+ seed + 0x2000,
313
+ );
308
314
  avmOutput.accumulatedDataArrayLengths = avmOutput.accumulatedData.getArrayLengths();
309
315
  avmOutput.gasSettings = gasSettings;
310
316
  // Note: The fee is computed from the tx's gas used, which only includes the gas used in private. But this shouldn't
package/src/tx/index.ts CHANGED
@@ -1,7 +1,6 @@
1
1
  export * from './block_header.js';
2
2
  export * from './call_context.js';
3
3
  export * from './global_variables.js';
4
- export * from './content_commitment.js';
5
4
  export * from './state_reference.js';
6
5
  export * from './partial_state_reference.js';
7
6
  export * from './function_data.js';
@@ -1,49 +0,0 @@
1
- import type { ViemContentCommitment } from '@aztec/ethereum/contracts';
2
- import { Fr } from '@aztec/foundation/curves/bn254';
3
- import { BufferReader, FieldReader } from '@aztec/foundation/serialize';
4
- import type { FieldsOf } from '@aztec/foundation/types';
5
- import { z } from 'zod';
6
- export declare class ContentCommitment {
7
- blobsHash: Fr;
8
- inHash: Fr;
9
- outHash: Fr;
10
- constructor(blobsHash: Fr, inHash: Fr, outHash: Fr);
11
- static get schema(): z.ZodEffects<z.ZodObject<{
12
- blobsHash: z.ZodType<Fr, any, string>;
13
- inHash: z.ZodType<Fr, any, string>;
14
- outHash: z.ZodType<Fr, any, string>;
15
- }, "strip", z.ZodTypeAny, {
16
- blobsHash: Fr;
17
- inHash: Fr;
18
- outHash: Fr;
19
- }, {
20
- blobsHash: string;
21
- inHash: string;
22
- outHash: string;
23
- }>, ContentCommitment, {
24
- blobsHash: string;
25
- inHash: string;
26
- outHash: string;
27
- }>;
28
- static getFields(fields: FieldsOf<ContentCommitment>): readonly [Fr, Fr, Fr];
29
- static from(fields: FieldsOf<ContentCommitment>): ContentCommitment;
30
- getSize(): number;
31
- toBuffer(): Buffer<ArrayBufferLike>;
32
- static fromBuffer(buffer: Buffer | BufferReader): ContentCommitment;
33
- toInspect(): {
34
- blobsHash: `0x${string}`;
35
- inHash: `0x${string}`;
36
- outHash: `0x${string}`;
37
- };
38
- toViem(): ViemContentCommitment;
39
- static fromViem(contentCommitment: ViemContentCommitment): ContentCommitment;
40
- toFields(): Fr[];
41
- static fromFields(fields: Fr[] | FieldReader): ContentCommitment;
42
- static random(overrides?: Partial<FieldsOf<ContentCommitment>>): ContentCommitment;
43
- static empty(): ContentCommitment;
44
- isEmpty(): boolean;
45
- toString(): string;
46
- static fromString(str: string): ContentCommitment;
47
- equals(other: this): boolean;
48
- }
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudF9jb21taXRtZW50LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHgvY29udGVudF9jb21taXRtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBELE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUF3QyxNQUFNLDZCQUE2QixDQUFDO0FBRTlHLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXhELE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIscUJBQWEsaUJBQWlCO0lBRW5CLFNBQVMsRUFBRSxFQUFFO0lBQ2IsTUFBTSxFQUFFLEVBQUU7SUFDVixPQUFPLEVBQUUsRUFBRTtJQUhwQixZQUNTLFNBQVMsRUFBRSxFQUFFLEVBQ2IsTUFBTSxFQUFFLEVBQUUsRUFDVixPQUFPLEVBQUUsRUFBRSxFQUNoQjtJQUVKLE1BQU0sS0FBSyxNQUFNOzs7Ozs7Ozs7Ozs7Ozs7O09BUWhCO0lBRUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLGlCQUFpQixDQUFDLHlCQUVuRDtJQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxxQkFFOUM7SUFFRCxPQUFPLFdBRU47SUFFRCxRQUFRLDRCQUVQO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLFlBQVksR0FBRyxpQkFBaUIsQ0FJbEU7SUFFRCxTQUFTOzs7O01BTVI7SUFFRCxNQUFNLElBQUkscUJBQXFCLENBTTlCO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxxQkFBcUIscUJBTXZEO0lBRUQsUUFBUSxJQUFJLEVBQUUsRUFBRSxDQUVmO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsV0FBVyxHQUFHLGlCQUFpQixDQUcvRDtJQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxHQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBTSxHQUFHLGlCQUFpQixDQU9yRjtJQUVELE1BQU0sQ0FBQyxLQUFLLElBQUksaUJBQWlCLENBRWhDO0lBRUQsT0FBTyxJQUFJLE9BQU8sQ0FFakI7SUFFTSxRQUFRLElBQUksTUFBTSxDQUV4QjtJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxpQkFBaUIsQ0FHaEQ7SUFFTSxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksR0FBRyxPQUFPLENBSWxDO0NBQ0YifQ==
@@ -1 +0,0 @@
1
- {"version":3,"file":"content_commitment.d.ts","sourceRoot":"","sources":["../../src/tx/content_commitment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAwC,MAAM,6BAA6B,CAAC;AAE9G,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,qBAAa,iBAAiB;IAEnB,SAAS,EAAE,EAAE;IACb,MAAM,EAAE,EAAE;IACV,OAAO,EAAE,EAAE;IAHpB,YACS,SAAS,EAAE,EAAE,EACb,MAAM,EAAE,EAAE,EACV,OAAO,EAAE,EAAE,EAChB;IAEJ,MAAM,KAAK,MAAM;;;;;;;;;;;;;;;;OAQhB;IAED,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,yBAEnD;IAED,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,qBAE9C;IAED,OAAO,WAEN;IAED,QAAQ,4BAEP;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,iBAAiB,CAIlE;IAED,SAAS;;;;MAMR;IAED,MAAM,IAAI,qBAAqB,CAM9B;IAED,MAAM,CAAC,QAAQ,CAAC,iBAAiB,EAAE,qBAAqB,qBAMvD;IAED,QAAQ,IAAI,EAAE,EAAE,CAEf;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,GAAG,iBAAiB,CAG/D;IAED,MAAM,CAAC,MAAM,CAAC,SAAS,GAAE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAM,GAAG,iBAAiB,CAOrF;IAED,MAAM,CAAC,KAAK,IAAI,iBAAiB,CAEhC;IAED,OAAO,IAAI,OAAO,CAEjB;IAEM,QAAQ,IAAI,MAAM,CAExB;IAED,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAGhD;IAEM,MAAM,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO,CAIlC;CACF"}
@@ -1,90 +0,0 @@
1
- import { Fr } from '@aztec/foundation/curves/bn254';
2
- import { schemas } from '@aztec/foundation/schemas';
3
- import { BufferReader, FieldReader, serializeToBuffer, serializeToFields } from '@aztec/foundation/serialize';
4
- import { bufferToHex } from '@aztec/foundation/string';
5
- import { z } from 'zod';
6
- export class ContentCommitment {
7
- blobsHash;
8
- inHash;
9
- outHash;
10
- constructor(blobsHash, inHash, outHash){
11
- this.blobsHash = blobsHash;
12
- this.inHash = inHash;
13
- this.outHash = outHash;
14
- }
15
- static get schema() {
16
- return z.object({
17
- blobsHash: schemas.Fr,
18
- inHash: schemas.Fr,
19
- outHash: schemas.Fr
20
- }).transform(({ blobsHash, inHash, outHash })=>new ContentCommitment(blobsHash, inHash, outHash));
21
- }
22
- static getFields(fields) {
23
- return [
24
- fields.blobsHash,
25
- fields.inHash,
26
- fields.outHash
27
- ];
28
- }
29
- static from(fields) {
30
- return new ContentCommitment(...ContentCommitment.getFields(fields));
31
- }
32
- getSize() {
33
- return this.toBuffer().length;
34
- }
35
- toBuffer() {
36
- return serializeToBuffer(...ContentCommitment.getFields(this));
37
- }
38
- static fromBuffer(buffer) {
39
- const reader = BufferReader.asReader(buffer);
40
- return new ContentCommitment(reader.readObject(Fr), reader.readObject(Fr), reader.readObject(Fr));
41
- }
42
- toInspect() {
43
- return {
44
- blobsHash: this.blobsHash.toString(),
45
- inHash: this.inHash.toString(),
46
- outHash: this.outHash.toString()
47
- };
48
- }
49
- toViem() {
50
- return {
51
- blobsHash: this.blobsHash.toString(),
52
- inHash: this.inHash.toString(),
53
- outHash: this.outHash.toString()
54
- };
55
- }
56
- static fromViem(contentCommitment) {
57
- return new ContentCommitment(Fr.fromString(contentCommitment.blobsHash), Fr.fromString(contentCommitment.inHash), Fr.fromString(contentCommitment.outHash));
58
- }
59
- toFields() {
60
- return serializeToFields(...ContentCommitment.getFields(this));
61
- }
62
- static fromFields(fields) {
63
- const reader = FieldReader.asReader(fields);
64
- return new ContentCommitment(reader.readField(), reader.readField(), reader.readField());
65
- }
66
- static random(overrides = {}) {
67
- return ContentCommitment.from({
68
- blobsHash: Fr.random(),
69
- inHash: Fr.random(),
70
- outHash: Fr.random(),
71
- ...overrides
72
- });
73
- }
74
- static empty() {
75
- return new ContentCommitment(Fr.zero(), Fr.zero(), Fr.zero());
76
- }
77
- isEmpty() {
78
- return this.blobsHash.isZero() && this.inHash.isZero() && this.outHash.isZero();
79
- }
80
- toString() {
81
- return bufferToHex(this.toBuffer());
82
- }
83
- static fromString(str) {
84
- const buffer = Buffer.from(str.replace(/^0x/i, ''), 'hex');
85
- return ContentCommitment.fromBuffer(buffer);
86
- }
87
- equals(other) {
88
- return this.blobsHash.equals(other.blobsHash) && this.inHash.equals(other.inHash) && this.outHash.equals(other.outHash);
89
- }
90
- }
@@ -1,113 +0,0 @@
1
- import type { ViemContentCommitment } from '@aztec/ethereum/contracts';
2
- import { Fr } from '@aztec/foundation/curves/bn254';
3
- import { schemas } from '@aztec/foundation/schemas';
4
- import { BufferReader, FieldReader, serializeToBuffer, serializeToFields } from '@aztec/foundation/serialize';
5
- import { bufferToHex } from '@aztec/foundation/string';
6
- import type { FieldsOf } from '@aztec/foundation/types';
7
-
8
- import { z } from 'zod';
9
-
10
- export class ContentCommitment {
11
- constructor(
12
- public blobsHash: Fr,
13
- public inHash: Fr,
14
- public outHash: Fr,
15
- ) {}
16
-
17
- static get schema() {
18
- return z
19
- .object({
20
- blobsHash: schemas.Fr,
21
- inHash: schemas.Fr,
22
- outHash: schemas.Fr,
23
- })
24
- .transform(({ blobsHash, inHash, outHash }) => new ContentCommitment(blobsHash, inHash, outHash));
25
- }
26
-
27
- static getFields(fields: FieldsOf<ContentCommitment>) {
28
- return [fields.blobsHash, fields.inHash, fields.outHash] as const;
29
- }
30
-
31
- static from(fields: FieldsOf<ContentCommitment>) {
32
- return new ContentCommitment(...ContentCommitment.getFields(fields));
33
- }
34
-
35
- getSize() {
36
- return this.toBuffer().length;
37
- }
38
-
39
- toBuffer() {
40
- return serializeToBuffer(...ContentCommitment.getFields(this));
41
- }
42
-
43
- static fromBuffer(buffer: Buffer | BufferReader): ContentCommitment {
44
- const reader = BufferReader.asReader(buffer);
45
-
46
- return new ContentCommitment(reader.readObject(Fr), reader.readObject(Fr), reader.readObject(Fr));
47
- }
48
-
49
- toInspect() {
50
- return {
51
- blobsHash: this.blobsHash.toString(),
52
- inHash: this.inHash.toString(),
53
- outHash: this.outHash.toString(),
54
- };
55
- }
56
-
57
- toViem(): ViemContentCommitment {
58
- return {
59
- blobsHash: this.blobsHash.toString(),
60
- inHash: this.inHash.toString(),
61
- outHash: this.outHash.toString(),
62
- };
63
- }
64
-
65
- static fromViem(contentCommitment: ViemContentCommitment) {
66
- return new ContentCommitment(
67
- Fr.fromString(contentCommitment.blobsHash),
68
- Fr.fromString(contentCommitment.inHash),
69
- Fr.fromString(contentCommitment.outHash),
70
- );
71
- }
72
-
73
- toFields(): Fr[] {
74
- return serializeToFields(...ContentCommitment.getFields(this));
75
- }
76
-
77
- static fromFields(fields: Fr[] | FieldReader): ContentCommitment {
78
- const reader = FieldReader.asReader(fields);
79
- return new ContentCommitment(reader.readField(), reader.readField(), reader.readField());
80
- }
81
-
82
- static random(overrides: Partial<FieldsOf<ContentCommitment>> = {}): ContentCommitment {
83
- return ContentCommitment.from({
84
- blobsHash: Fr.random(),
85
- inHash: Fr.random(),
86
- outHash: Fr.random(),
87
- ...overrides,
88
- });
89
- }
90
-
91
- static empty(): ContentCommitment {
92
- return new ContentCommitment(Fr.zero(), Fr.zero(), Fr.zero());
93
- }
94
-
95
- isEmpty(): boolean {
96
- return this.blobsHash.isZero() && this.inHash.isZero() && this.outHash.isZero();
97
- }
98
-
99
- public toString(): string {
100
- return bufferToHex(this.toBuffer());
101
- }
102
-
103
- static fromString(str: string): ContentCommitment {
104
- const buffer = Buffer.from(str.replace(/^0x/i, ''), 'hex');
105
- return ContentCommitment.fromBuffer(buffer);
106
- }
107
-
108
- public equals(other: this): boolean {
109
- return (
110
- this.blobsHash.equals(other.blobsHash) && this.inHash.equals(other.inHash) && this.outHash.equals(other.outHash)
111
- );
112
- }
113
- }