Skip to content

Commit 8de4637

Browse files
author
Alex Gherghisan
committed
feat: serialize public kernel private inputs
1 parent b3fdb3b commit 8de4637

2 files changed

Lines changed: 36 additions & 0 deletions

File tree

yarn-project/circuits.js/src/structs/kernel/public_kernel_circuit_private_inputs.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,10 @@ describe('PublicKernelCircuitPrivateInputs', () => {
1414
expect(original).toEqual(serialized);
1515
expect(original).not.toBe(serialized);
1616
});
17+
18+
it('serializes to and deserializes from a string', () => {
19+
const original = makePublicKernelCircuitPrivateInputs(123);
20+
const serialized = PublicKernelCircuitPrivateInputs.fromString(original.toString());
21+
expect(original).toEqual(serialized);
22+
});
1723
});

yarn-project/circuits.js/src/structs/kernel/public_kernel_circuit_private_inputs.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,47 @@ export class PublicKernelCircuitPrivateInputs {
1818
public readonly publicCall: PublicCallData,
1919
) {}
2020

21+
/**
22+
* Serializes the object to a buffer.
23+
* @returns - Buffer representation of the object.
24+
*/
2125
toBuffer() {
2226
return serializeToBuffer(this.previousKernel, this.publicCall);
2327
}
2428

29+
/**
30+
* Serializes the object to a hex string.
31+
* @returns - Hex string representation of the object.
32+
*/
33+
toString() {
34+
return this.toBuffer().toString('hex');
35+
}
36+
37+
/**
38+
* Deserializes the object from a buffer.
39+
* @param buffer - Buffer to deserialize.
40+
* @returns - Deserialized object.
41+
*/
2542
static fromBuffer(buffer: BufferReader | Buffer) {
2643
const reader = BufferReader.asReader(buffer);
2744
const previousKernel = reader.readObject(PublicKernelData);
2845
const publicCall = reader.readObject(PublicCallData);
2946
return new PublicKernelCircuitPrivateInputs(previousKernel, publicCall);
3047
}
3148

49+
/**
50+
* Deserializes the object from a hex string.
51+
* @param str - Hex string to deserialize.
52+
* @returns - Deserialized object.
53+
*/
54+
static fromString(str: string) {
55+
return PublicKernelCircuitPrivateInputs.fromBuffer(Buffer.from(str, 'hex'));
56+
}
57+
58+
/**
59+
* Clones the object.
60+
* @returns - Cloned object.
61+
*/
3262
clone() {
3363
return PublicKernelCircuitPrivateInputs.fromBuffer(this.toBuffer());
3464
}

0 commit comments

Comments
 (0)