@aztec/stdlib 3.0.0-nightly.20251026 → 3.0.0-nightly.20251031
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/block/body.d.ts.map +1 -1
- package/dest/block/body.js +2 -6
- package/dest/block/l2_block.d.ts +11 -0
- package/dest/block/l2_block.d.ts.map +1 -1
- package/dest/block/l2_block.js +15 -1
- package/dest/block/l2_block_source.d.ts +5 -5
- package/dest/block/l2_block_source.d.ts.map +1 -1
- package/dest/checkpoint/checkpoint_body.d.ts +4 -0
- package/dest/checkpoint/checkpoint_body.d.ts.map +1 -0
- package/dest/checkpoint/checkpoint_body.js +9 -0
- package/dest/checkpoint/index.d.ts +2 -0
- package/dest/checkpoint/index.d.ts.map +1 -0
- package/dest/checkpoint/index.js +1 -0
- package/dest/interfaces/archiver.js +3 -3
- package/dest/interfaces/epoch-prover.d.ts +3 -3
- package/dest/interfaces/epoch-prover.d.ts.map +1 -1
- package/dest/interfaces/private_kernel_prover.d.ts +2 -2
- package/dest/interfaces/private_kernel_prover.d.ts.map +1 -1
- package/dest/interfaces/proving-job.d.ts +15 -15
- package/dest/interfaces/proving-job.d.ts.map +1 -1
- package/dest/interfaces/proving-job.js +8 -8
- package/dest/interfaces/server_circuit_prover.d.ts +3 -3
- package/dest/interfaces/server_circuit_prover.d.ts.map +1 -1
- package/dest/kernel/private_kernel_data.js +2 -2
- package/dest/kernel/private_kernel_prover_output.d.ts +4 -4
- package/dest/kernel/private_kernel_prover_output.d.ts.map +1 -1
- package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts +1 -0
- package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_tail_circuit_public_inputs.js +3 -0
- package/dest/keys/derivation.d.ts.map +1 -1
- package/dest/keys/derivation.js +2 -3
- package/dest/logs/directional_app_tagging_secret.d.ts.map +1 -1
- package/dest/logs/directional_app_tagging_secret.js +1 -2
- package/dest/logs/shared_secret_derivation.d.ts.map +1 -1
- package/dest/logs/shared_secret_derivation.js +2 -4
- package/dest/p2p/gossipable.d.ts +4 -12
- package/dest/p2p/gossipable.d.ts.map +1 -1
- package/dest/p2p/gossipable.js +4 -7
- package/dest/p2p/topic_type.d.ts +4 -8
- package/dest/p2p/topic_type.d.ts.map +1 -1
- package/dest/p2p/topic_type.js +14 -8
- package/dest/proofs/chonk_proof.d.ts +28 -0
- package/dest/proofs/chonk_proof.d.ts.map +1 -0
- package/dest/proofs/chonk_proof.js +101 -0
- package/dest/proofs/index.d.ts +1 -1
- package/dest/proofs/index.d.ts.map +1 -1
- package/dest/proofs/index.js +1 -1
- package/dest/proofs/proof_data.d.ts +2 -2
- package/dest/proofs/proof_data.d.ts.map +1 -1
- package/dest/proofs/proving_request_type.d.ts +1 -1
- package/dest/proofs/proving_request_type.d.ts.map +1 -1
- package/dest/proofs/proving_request_type.js +1 -1
- package/dest/rollup/checkpoint_rollup_public_inputs.d.ts +1 -1
- package/dest/rollup/checkpoint_rollup_public_inputs.d.ts.map +1 -1
- package/dest/rollup/checkpoint_rollup_public_inputs.js +1 -1
- package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts +2 -2
- package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts.map +1 -1
- package/dest/rollup/checkpoint_root_rollup_private_inputs.js +1 -1
- package/dest/rollup/index.d.ts +2 -2
- package/dest/rollup/index.d.ts.map +1 -1
- package/dest/rollup/index.js +2 -2
- package/dest/rollup/private_tx_base_rollup_private_inputs.d.ts +4 -4
- package/dest/rollup/private_tx_base_rollup_private_inputs.d.ts.map +1 -1
- package/dest/rollup/public_chonk_verifier_private_inputs.d.ts +21 -0
- package/dest/rollup/public_chonk_verifier_private_inputs.d.ts.map +1 -0
- package/dest/rollup/{public_tube_private_inputs.js → public_chonk_verifier_private_inputs.js} +7 -6
- package/dest/rollup/{public_tube_public_inputs.d.ts → public_chonk_verifier_public_inputs.d.ts} +7 -7
- package/dest/rollup/public_chonk_verifier_public_inputs.d.ts.map +1 -0
- package/dest/rollup/{public_tube_public_inputs.js → public_chonk_verifier_public_inputs.js} +7 -6
- package/dest/rollup/public_tx_base_rollup_private_inputs.d.ts +4 -4
- package/dest/rollup/public_tx_base_rollup_private_inputs.d.ts.map +1 -1
- package/dest/rollup/public_tx_base_rollup_private_inputs.js +6 -6
- package/dest/rollup/root_rollup_public_inputs.d.ts +1 -1
- package/dest/rollup/root_rollup_public_inputs.d.ts.map +1 -1
- package/dest/rollup/root_rollup_public_inputs.js +1 -1
- package/dest/stats/stats.d.ts +3 -3
- package/dest/stats/stats.d.ts.map +1 -1
- package/dest/tests/factories.d.ts +3 -3
- package/dest/tests/factories.d.ts.map +1 -1
- package/dest/tests/factories.js +15 -15
- package/dest/tests/mocks.d.ts +3 -3
- package/dest/tests/mocks.d.ts.map +1 -1
- package/dest/tests/mocks.js +3 -3
- package/dest/tx/processed_tx.d.ts +2 -3
- package/dest/tx/processed_tx.d.ts.map +1 -1
- package/dest/tx/processed_tx.js +2 -7
- package/dest/tx/proven_tx.d.ts +7 -7
- package/dest/tx/proven_tx.d.ts.map +1 -1
- package/dest/tx/proven_tx.js +8 -8
- package/dest/tx/simulated_tx.js +2 -2
- package/dest/tx/tx.d.ts +3 -3
- package/dest/tx/tx.d.ts.map +1 -1
- package/dest/tx/tx.js +13 -13
- package/package.json +9 -8
- package/src/block/body.ts +3 -12
- package/src/block/l2_block.ts +15 -0
- package/src/block/l2_block_source.ts +5 -5
- package/src/checkpoint/checkpoint_body.ts +10 -0
- package/src/checkpoint/index.ts +1 -0
- package/src/interfaces/archiver.ts +3 -3
- package/src/interfaces/epoch-prover.ts +3 -3
- package/src/interfaces/private_kernel_prover.ts +2 -2
- package/src/interfaces/proving-job.ts +13 -10
- package/src/interfaces/server_circuit_prover.ts +7 -5
- package/src/kernel/private_kernel_data.ts +2 -2
- package/src/kernel/private_kernel_prover_output.ts +4 -4
- package/src/kernel/private_kernel_tail_circuit_public_inputs.ts +6 -0
- package/src/keys/derivation.ts +2 -3
- package/src/logs/directional_app_tagging_secret.ts +1 -2
- package/src/logs/shared_secret_derivation.ts +2 -4
- package/src/p2p/gossipable.ts +4 -12
- package/src/p2p/topic_type.ts +15 -8
- package/src/proofs/chonk_proof.ts +118 -0
- package/src/proofs/index.ts +1 -1
- package/src/proofs/proof_data.ts +2 -2
- package/src/proofs/proving_request_type.ts +1 -1
- package/src/rollup/checkpoint_rollup_public_inputs.ts +1 -1
- package/src/rollup/checkpoint_root_rollup_private_inputs.ts +1 -1
- package/src/rollup/index.ts +2 -2
- package/src/rollup/private_tx_base_rollup_private_inputs.ts +2 -2
- package/src/rollup/{public_tube_private_inputs.ts → public_chonk_verifier_private_inputs.ts} +11 -10
- package/src/rollup/{public_tube_public_inputs.ts → public_chonk_verifier_public_inputs.ts} +9 -8
- package/src/rollup/public_tx_base_rollup_private_inputs.ts +4 -4
- package/src/rollup/root_rollup_public_inputs.ts +1 -1
- package/src/stats/stats.ts +3 -3
- package/src/tests/factories.ts +21 -21
- package/src/tests/mocks.ts +4 -4
- package/src/tx/processed_tx.ts +4 -10
- package/src/tx/proven_tx.ts +6 -6
- package/src/tx/simulated_tx.ts +2 -2
- package/src/tx/tx.ts +11 -11
- package/dest/proofs/client_ivc_proof.d.ts +0 -15
- package/dest/proofs/client_ivc_proof.d.ts.map +0 -1
- package/dest/proofs/client_ivc_proof.js +0 -48
- package/dest/rollup/public_tube_private_inputs.d.ts +0 -21
- package/dest/rollup/public_tube_private_inputs.d.ts.map +0 -1
- package/dest/rollup/public_tube_public_inputs.d.ts.map +0 -1
- package/src/proofs/client_ivc_proof.ts +0 -57
|
@@ -51,13 +51,12 @@ async function computeSharedTaggingSecret(localAddress, localIvsk, externalAddre
|
|
|
51
51
|
const knownPreaddress = await computePreaddress(await localAddress.publicKeys.hash(), localAddress.partialAddress);
|
|
52
52
|
// TODO: #8970 - Computation of address point from x coordinate might fail
|
|
53
53
|
const externalAddressPoint = await externalAddress.toAddressPoint();
|
|
54
|
-
const curve = new Grumpkin();
|
|
55
54
|
// Given A (local complete address) -> B (external address) and h == preaddress
|
|
56
55
|
// Compute shared secret as S = (h_A + local_ivsk_A) * Addr_Point_B
|
|
57
56
|
// Beware! h_a + local_ivsk_a (also known as the address secret) can lead to an address point with a negative
|
|
58
57
|
// y-coordinate, since there's two possible candidates computeAddressSecret takes care of selecting the one that
|
|
59
58
|
// leads to a positive y-coordinate, which is the only valid address point
|
|
60
|
-
return
|
|
59
|
+
return Grumpkin.mul(externalAddressPoint, await computeAddressSecret(knownPreaddress, localIvsk));
|
|
61
60
|
}
|
|
62
61
|
export const DirectionalAppTaggingSecretSchema = z.object({
|
|
63
62
|
value: Fr.schema
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared_secret_derivation.d.ts","sourceRoot":"","sources":["../../src/logs/shared_secret_derivation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;;;;;;;;;;;GAYG;AACH,
|
|
1
|
+
{"version":3,"file":"shared_secret_derivation.d.ts","sourceRoot":"","sources":["../../src/logs/shared_secret_derivation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,CAOtG"}
|
|
@@ -11,11 +11,9 @@ import { Grumpkin } from '@aztec/foundation/crypto';
|
|
|
11
11
|
*
|
|
12
12
|
* TODO(#12656): This function is kept around because of the utilityGetSharedSecret oracle. Nuke this once returning
|
|
13
13
|
* the app-siloed secret.
|
|
14
|
-
*/ export
|
|
14
|
+
*/ export function deriveEcdhSharedSecret(secretKey, publicKey) {
|
|
15
15
|
if (publicKey.isZero()) {
|
|
16
16
|
throw new Error(`Attempting to derive a shared secret with a zero public key. You have probably passed a zero public key in your Noir code somewhere thinking that the note won't be broadcast... but it was.`);
|
|
17
17
|
}
|
|
18
|
-
|
|
19
|
-
const sharedSecret = await curve.mul(publicKey, secretKey);
|
|
20
|
-
return sharedSecret;
|
|
18
|
+
return Grumpkin.mul(publicKey, secretKey);
|
|
21
19
|
}
|
package/dest/p2p/gossipable.d.ts
CHANGED
|
@@ -14,26 +14,18 @@ export declare class P2PMessage {
|
|
|
14
14
|
*/
|
|
15
15
|
export declare abstract class Gossipable {
|
|
16
16
|
private cachedId;
|
|
17
|
-
/** p2p
|
|
18
|
-
*
|
|
19
|
-
* - The p2p topic identifier, this determines how the message is handled
|
|
20
|
-
*/
|
|
17
|
+
/** The p2p topic identifier, this determines how the message is handled */
|
|
21
18
|
static p2pTopic: TopicType;
|
|
22
|
-
/**
|
|
23
|
-
*
|
|
24
|
-
*
|
|
19
|
+
/**
|
|
20
|
+
* A digest of the message information **used for logging only**.
|
|
21
|
+
* The identifier used for deduplication is `getMsgIdFn` as defined in `encoding.ts` which is a hash over topic and data.
|
|
25
22
|
*/
|
|
26
23
|
p2pMessageIdentifier(): Promise<Buffer32>;
|
|
27
24
|
abstract generateP2PMessageIdentifier(): Promise<Buffer32>;
|
|
28
|
-
/** To Buffer
|
|
29
|
-
*
|
|
30
|
-
* - Serialization method
|
|
31
|
-
*/
|
|
32
25
|
abstract toBuffer(): Buffer;
|
|
33
26
|
toMessage(): Buffer;
|
|
34
27
|
/**
|
|
35
28
|
* Get the size of the gossipable object.
|
|
36
|
-
*
|
|
37
29
|
* This is used for metrics recording.
|
|
38
30
|
*/
|
|
39
31
|
abstract getSize(): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gossipable.d.ts","sourceRoot":"","sources":["../../src/p2p/gossipable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,qBAAa,UAAU;aACO,OAAO,EAAE,MAAM;gBAAf,OAAO,EAAE,MAAM;IAE3C,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU;IAItD,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU;IAMvD,aAAa,IAAI,MAAM;CAGxB;AAED;;;;GAIG;AACH,8BAAsB,UAAU;IAC9B,OAAO,CAAC,QAAQ,CAAuB;IACvC
|
|
1
|
+
{"version":3,"file":"gossipable.d.ts","sourceRoot":"","sources":["../../src/p2p/gossipable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,qBAAa,UAAU;aACO,OAAO,EAAE,MAAM;gBAAf,OAAO,EAAE,MAAM;IAE3C,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU;IAItD,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU;IAMvD,aAAa,IAAI,MAAM;CAGxB;AAED;;;;GAIG;AACH,8BAAsB,UAAU;IAC9B,OAAO,CAAC,QAAQ,CAAuB;IACvC,2EAA2E;IAC3E,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC;IAE3B;;;OAGG;IACG,oBAAoB,IAAI,OAAO,CAAC,QAAQ,CAAC;IAQ/C,QAAQ,CAAC,4BAA4B,IAAI,OAAO,CAAC,QAAQ,CAAC;IAE1D,QAAQ,CAAC,QAAQ,IAAI,MAAM;IAE3B,SAAS,IAAI,MAAM;IAInB;;;OAGG;IACH,QAAQ,CAAC,OAAO,IAAI,MAAM;CAC3B"}
|
package/dest/p2p/gossipable.js
CHANGED
|
@@ -24,13 +24,10 @@ export class P2PMessage {
|
|
|
24
24
|
* Any class which extends gossipable will be able to be Gossiped over the p2p network
|
|
25
25
|
*/ export class Gossipable {
|
|
26
26
|
cachedId;
|
|
27
|
-
/** p2p
|
|
28
|
-
|
|
29
|
-
*
|
|
30
|
-
|
|
31
|
-
/** p2p Message Identifier
|
|
32
|
-
*
|
|
33
|
-
* - A digest of the message information, this key is used for deduplication
|
|
27
|
+
/** The p2p topic identifier, this determines how the message is handled */ static p2pTopic;
|
|
28
|
+
/**
|
|
29
|
+
* A digest of the message information **used for logging only**.
|
|
30
|
+
* The identifier used for deduplication is `getMsgIdFn` as defined in `encoding.ts` which is a hash over topic and data.
|
|
34
31
|
*/ async p2pMessageIdentifier() {
|
|
35
32
|
if (this.cachedId) {
|
|
36
33
|
return this.cachedId;
|
package/dest/p2p/topic_type.d.ts
CHANGED
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
import { P2PClientType } from './client_type.js';
|
|
2
|
-
/** Create Topic String
|
|
3
|
-
*
|
|
4
|
-
* The topic channel identifier
|
|
5
|
-
* @param topicType
|
|
6
|
-
* @returns
|
|
7
|
-
*/
|
|
8
|
-
export declare function createTopicString(topicType: TopicType, protocolVersion: string): string;
|
|
9
2
|
/**
|
|
10
|
-
*
|
|
3
|
+
* Creates the topic channel identifier string from a given topic type
|
|
11
4
|
*/
|
|
5
|
+
export declare function createTopicString(topicType: TopicType, protocolVersion: string): string;
|
|
6
|
+
/** Extracts the topic type from a topic string */
|
|
7
|
+
export declare function getTopicFromString(topicStr: string): TopicType | undefined;
|
|
12
8
|
export declare enum TopicType {
|
|
13
9
|
tx = "tx",
|
|
14
10
|
block_proposal = "block_proposal",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"topic_type.d.ts","sourceRoot":"","sources":["../../src/p2p/topic_type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD
|
|
1
|
+
{"version":3,"file":"topic_type.d.ts","sourceRoot":"","sources":["../../src/p2p/topic_type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,UAE9E;AAED,kDAAkD;AAClD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAU1E;AAED,oBAAY,SAAS;IACnB,EAAE,OAAO;IACT,cAAc,mBAAmB;IACjC,iBAAiB,sBAAsB;CACxC;AAED,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,aAAa,eASlE;AAED,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,aAAa,EAAE,mBAAmB,EAAE,OAAO,eAMlG;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,eAAe,EAAE,MAAM,uBAO9D"}
|
package/dest/p2p/topic_type.js
CHANGED
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
import { P2PClientType } from './client_type.js';
|
|
2
|
-
/**
|
|
3
|
-
*
|
|
4
|
-
* The topic channel identifier
|
|
5
|
-
* @param topicType
|
|
6
|
-
* @returns
|
|
2
|
+
/**
|
|
3
|
+
* Creates the topic channel identifier string from a given topic type
|
|
7
4
|
*/ export function createTopicString(topicType, protocolVersion) {
|
|
8
5
|
return `/aztec/${TopicType[topicType]}/${protocolVersion}`;
|
|
9
6
|
}
|
|
10
|
-
/**
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
/** Extracts the topic type from a topic string */ export function getTopicFromString(topicStr) {
|
|
8
|
+
const parts = topicStr.split('/');
|
|
9
|
+
if (parts.length < 4 || parts[1] !== 'aztec') {
|
|
10
|
+
return undefined;
|
|
11
|
+
}
|
|
12
|
+
const topic = parts[2];
|
|
13
|
+
if (Object.values(TopicType).includes(topic)) {
|
|
14
|
+
return topic;
|
|
15
|
+
}
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
export var TopicType = /*#__PURE__*/ function(TopicType) {
|
|
13
19
|
TopicType["tx"] = "tx";
|
|
14
20
|
TopicType["block_proposal"] = "block_proposal";
|
|
15
21
|
TopicType["block_attestation"] = "block_attestation";
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
+
import { BufferReader } from '@aztec/foundation/serialize';
|
|
3
|
+
export declare class ChonkProof {
|
|
4
|
+
fields: Fr[];
|
|
5
|
+
constructor(fields: Fr[]);
|
|
6
|
+
attachPublicInputs(publicInputs: Fr[]): ChonkProofWithPublicInputs;
|
|
7
|
+
isEmpty(): boolean;
|
|
8
|
+
static empty(): ChonkProof;
|
|
9
|
+
static random(): ChonkProof;
|
|
10
|
+
static get schema(): import("zod").ZodType<ChonkProof, any, string>;
|
|
11
|
+
toJSON(): Buffer<ArrayBufferLike>;
|
|
12
|
+
static fromBuffer(buffer: Buffer | BufferReader): ChonkProof;
|
|
13
|
+
toBuffer(): Buffer<ArrayBufferLike>;
|
|
14
|
+
}
|
|
15
|
+
export declare class ChonkProofWithPublicInputs {
|
|
16
|
+
fieldsWithPublicInputs: Fr[];
|
|
17
|
+
constructor(fieldsWithPublicInputs: Fr[]);
|
|
18
|
+
getPublicInputs(): Fr[];
|
|
19
|
+
removePublicInputs(): ChonkProof;
|
|
20
|
+
isEmpty(): boolean;
|
|
21
|
+
static empty(): ChonkProofWithPublicInputs;
|
|
22
|
+
static get schema(): import("zod").ZodType<ChonkProofWithPublicInputs, any, string>;
|
|
23
|
+
toJSON(): Buffer<ArrayBufferLike>;
|
|
24
|
+
static fromBuffer(buffer: Buffer | BufferReader): ChonkProofWithPublicInputs;
|
|
25
|
+
toBuffer(): Buffer<ArrayBufferLike>;
|
|
26
|
+
static fromBufferArray(fields: Uint8Array[]): ChonkProofWithPublicInputs;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=chonk_proof.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chonk_proof.d.ts","sourceRoot":"","sources":["../../src/proofs/chonk_proof.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAG9E,qBAAa,UAAU;IAKZ,MAAM,EAAE,EAAE,EAAE;gBAAZ,MAAM,EAAE,EAAE,EAAE;IAOd,kBAAkB,CAAC,YAAY,EAAE,EAAE,EAAE;IAIrC,OAAO;IAId,MAAM,CAAC,KAAK;IAIZ,MAAM,CAAC,MAAM;IAWb,MAAM,KAAK,MAAM,mDAEhB;IAGD,MAAM;IAIN,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,UAAU;IAOrD,QAAQ;CAGhB;AAED,qBAAa,0BAA0B;IAI5B,sBAAsB,EAAE,EAAE,EAAE;gBAA5B,sBAAsB,EAAE,EAAE,EAAE;IAO9B,eAAe;IAKf,kBAAkB;IAKlB,OAAO;IAId,MAAM,CAAC,KAAK;IAIZ,MAAM,KAAK,MAAM,mEAEhB;IAGD,MAAM;IAIN,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,0BAA0B;IAOrE,QAAQ;IAKf,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,0BAA0B;CAIzE"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { CHONK_PROOF_LENGTH } from '@aztec/constants';
|
|
2
|
+
import { randomBytes } from '@aztec/foundation/crypto';
|
|
3
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
4
|
+
import { bufferSchemaFor } from '@aztec/foundation/schemas';
|
|
5
|
+
import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
6
|
+
// CHONK: "Client Honk" - An UltraHonk variant with incremental folding and delayed non-native arithmetic.
|
|
7
|
+
export class ChonkProof {
|
|
8
|
+
fields;
|
|
9
|
+
constructor(// The proof fields.
|
|
10
|
+
// For native verification, attach public inputs via `attachPublicInputs(publicInputs)`.
|
|
11
|
+
// Not using Tuple here due to the length being too high.
|
|
12
|
+
fields){
|
|
13
|
+
this.fields = fields;
|
|
14
|
+
if (fields.length !== CHONK_PROOF_LENGTH) {
|
|
15
|
+
throw new Error(`Invalid ChonkProof length: ${fields.length}`);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
attachPublicInputs(publicInputs) {
|
|
19
|
+
return new ChonkProofWithPublicInputs([
|
|
20
|
+
...publicInputs,
|
|
21
|
+
...this.fields
|
|
22
|
+
]);
|
|
23
|
+
}
|
|
24
|
+
isEmpty() {
|
|
25
|
+
return this.fields.every((field)=>field.isZero());
|
|
26
|
+
}
|
|
27
|
+
static empty() {
|
|
28
|
+
return new ChonkProof(new Array(CHONK_PROOF_LENGTH).fill(Fr.ZERO));
|
|
29
|
+
}
|
|
30
|
+
static random() {
|
|
31
|
+
// NB: Not using Fr.random here because it slows down some tests that require a large number of txs significantly.
|
|
32
|
+
const reducedFrSize = Fr.SIZE_IN_BYTES - 1;
|
|
33
|
+
const randomFields = randomBytes(CHONK_PROOF_LENGTH * reducedFrSize);
|
|
34
|
+
const proof = Array.from({
|
|
35
|
+
length: CHONK_PROOF_LENGTH
|
|
36
|
+
}, (_, i)=>new Fr(randomFields.subarray(i * reducedFrSize, (i + 1) * reducedFrSize)));
|
|
37
|
+
return new ChonkProof(proof);
|
|
38
|
+
}
|
|
39
|
+
static get schema() {
|
|
40
|
+
return bufferSchemaFor(ChonkProof);
|
|
41
|
+
}
|
|
42
|
+
// We use this in tandem with the bufferSchemaFor to serialize to base64 strings.
|
|
43
|
+
toJSON() {
|
|
44
|
+
return this.toBuffer();
|
|
45
|
+
}
|
|
46
|
+
static fromBuffer(buffer) {
|
|
47
|
+
const reader = BufferReader.asReader(buffer);
|
|
48
|
+
const proofLength = reader.readNumber();
|
|
49
|
+
const proof = reader.readArray(proofLength, Fr);
|
|
50
|
+
return new ChonkProof(proof);
|
|
51
|
+
}
|
|
52
|
+
toBuffer() {
|
|
53
|
+
return serializeToBuffer(this.fields.length, this.fields);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export class ChonkProofWithPublicInputs {
|
|
57
|
+
fieldsWithPublicInputs;
|
|
58
|
+
constructor(// The proof fields with public inputs.
|
|
59
|
+
// For recursive verification, use without public inputs via `removePublicInputs()`.
|
|
60
|
+
fieldsWithPublicInputs){
|
|
61
|
+
this.fieldsWithPublicInputs = fieldsWithPublicInputs;
|
|
62
|
+
if (fieldsWithPublicInputs.length < CHONK_PROOF_LENGTH) {
|
|
63
|
+
throw new Error(`Invalid ChonkProofWithPublicInputs length: ${fieldsWithPublicInputs.length}`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
getPublicInputs() {
|
|
67
|
+
const numPublicInputs = this.fieldsWithPublicInputs.length - CHONK_PROOF_LENGTH;
|
|
68
|
+
return this.fieldsWithPublicInputs.slice(0, numPublicInputs);
|
|
69
|
+
}
|
|
70
|
+
removePublicInputs() {
|
|
71
|
+
const numPublicInputs = this.fieldsWithPublicInputs.length - CHONK_PROOF_LENGTH;
|
|
72
|
+
return new ChonkProof(this.fieldsWithPublicInputs.slice(numPublicInputs));
|
|
73
|
+
}
|
|
74
|
+
isEmpty() {
|
|
75
|
+
return this.fieldsWithPublicInputs.every((field)=>field.isZero());
|
|
76
|
+
}
|
|
77
|
+
static empty() {
|
|
78
|
+
return ChonkProof.empty().attachPublicInputs([]);
|
|
79
|
+
}
|
|
80
|
+
static get schema() {
|
|
81
|
+
return bufferSchemaFor(ChonkProofWithPublicInputs);
|
|
82
|
+
}
|
|
83
|
+
// We use this in tandem with the bufferSchemaFor to serialize to base64 strings.
|
|
84
|
+
toJSON() {
|
|
85
|
+
return this.toBuffer();
|
|
86
|
+
}
|
|
87
|
+
static fromBuffer(buffer) {
|
|
88
|
+
const reader = BufferReader.asReader(buffer);
|
|
89
|
+
const proofLength = reader.readNumber();
|
|
90
|
+
const proof = reader.readArray(proofLength, Fr);
|
|
91
|
+
return new ChonkProofWithPublicInputs(proof);
|
|
92
|
+
}
|
|
93
|
+
toBuffer() {
|
|
94
|
+
return serializeToBuffer(this.fieldsWithPublicInputs.length, this.fieldsWithPublicInputs);
|
|
95
|
+
}
|
|
96
|
+
// Called when constructing from bb proving results.
|
|
97
|
+
static fromBufferArray(fields) {
|
|
98
|
+
const proof = fields.map((field)=>Fr.fromBuffer(Buffer.from(field)));
|
|
99
|
+
return new ChonkProofWithPublicInputs(proof);
|
|
100
|
+
}
|
|
101
|
+
}
|
package/dest/proofs/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/proofs/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/proofs/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC"}
|
package/dest/proofs/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { CHONK_PROOF_LENGTH, RECURSIVE_PROOF_LENGTH, RECURSIVE_ROLLUP_HONK_PROOF_LENGTH } from '@aztec/constants';
|
|
2
2
|
import { BufferReader, type Bufferable } from '@aztec/foundation/serialize';
|
|
3
3
|
import { RecursiveProof } from '../proofs/recursive_proof.js';
|
|
4
4
|
import { VkData } from '../vks/index.js';
|
|
@@ -15,7 +15,7 @@ export declare class ProofData<T extends Bufferable, PROOF_LENGTH extends number
|
|
|
15
15
|
fromBuffer: (reader: BufferReader) => T;
|
|
16
16
|
}): ProofData<T, PROOF_LENGTH>;
|
|
17
17
|
}
|
|
18
|
-
export type
|
|
18
|
+
export type ChonkProofData<T extends Bufferable> = ProofData<T, typeof CHONK_PROOF_LENGTH>;
|
|
19
19
|
export type UltraHonkProofData<T extends Bufferable> = ProofData<T, typeof RECURSIVE_PROOF_LENGTH>;
|
|
20
20
|
export type RollupHonkProofData<T extends Bufferable> = ProofData<T, typeof RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>;
|
|
21
21
|
//# sourceMappingURL=proof_data.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proof_data.d.ts","sourceRoot":"","sources":["../../src/proofs/proof_data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"proof_data.d.ts","sourceRoot":"","sources":["../../src/proofs/proof_data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,kCAAkC,EAAE,MAAM,kBAAkB,CAAC;AACvH,OAAO,EAAE,YAAY,EAAE,KAAK,UAAU,EAAqB,MAAM,6BAA6B,CAAC;AAE/F,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC;;GAEG;AACH,qBAAa,SAAS,CAAC,CAAC,SAAS,UAAU,EAAE,YAAY,SAAS,MAAM;IAE7D,YAAY,EAAE,CAAC;IACf,KAAK,EAAE,cAAc,CAAC,YAAY,CAAC;IACnC,MAAM,EAAE,MAAM;gBAFd,YAAY,EAAE,CAAC,EACf,KAAK,EAAE,cAAc,CAAC,YAAY,CAAC,EACnC,MAAM,EAAE,MAAM;IAGhB,QAAQ,IAAI,MAAM;WAIX,UAAU,CAAC,CAAC,SAAS,UAAU,EAAE,YAAY,SAAS,MAAM,EACxE,MAAM,EAAE,MAAM,GAAG,YAAY,EAC7B,YAAY,EAAE;QACZ,UAAU,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,CAAC,CAAC;KACzC,GACA,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC;CAI9B;AAED,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,UAAU,IAAI,SAAS,CAAC,CAAC,EAAE,OAAO,kBAAkB,CAAC,CAAC;AAE3F,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,UAAU,IAAI,SAAS,CAAC,CAAC,EAAE,OAAO,sBAAsB,CAAC,CAAC;AAEnG,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,UAAU,IAAI,SAAS,CAAC,CAAC,EAAE,OAAO,kCAAkC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proving_request_type.d.ts","sourceRoot":"","sources":["../../src/proofs/proving_request_type.ts"],"names":[],"mappings":"AAAA,oBAAY,kBAAkB;IAC5B,SAAS,IAAA;IACT,
|
|
1
|
+
{"version":3,"file":"proving_request_type.d.ts","sourceRoot":"","sources":["../../src/proofs/proving_request_type.ts"],"names":[],"mappings":"AAAA,oBAAY,kBAAkB;IAC5B,SAAS,IAAA;IACT,qBAAqB,IAAA;IAErB,sBAAsB,IAAA;IACtB,qBAAqB,IAAA;IACrB,eAAe,IAAA;IACf,uBAAuB,IAAA;IACvB,iCAAiC,IAAA;IACjC,gCAAgC,IAAA;IAChC,iBAAiB,IAAA;IACjB,2BAA2B,IAAA;IAC3B,kBAAkB,KAAA;IAClB,sBAAsB,KAAA;IACtB,mCAAmC,KAAA;IACnC,yBAAyB,KAAA;IACzB,uBAAuB,KAAA;IACvB,WAAW,KAAA;IAEX,WAAW,KAAA;IACX,WAAW,KAAA;CACZ"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export var ProvingRequestType = /*#__PURE__*/ function(ProvingRequestType) {
|
|
2
2
|
ProvingRequestType[ProvingRequestType["PUBLIC_VM"] = 0] = "PUBLIC_VM";
|
|
3
|
-
ProvingRequestType[ProvingRequestType["
|
|
3
|
+
ProvingRequestType[ProvingRequestType["PUBLIC_CHONK_VERIFIER"] = 1] = "PUBLIC_CHONK_VERIFIER";
|
|
4
4
|
ProvingRequestType[ProvingRequestType["PRIVATE_TX_BASE_ROLLUP"] = 2] = "PRIVATE_TX_BASE_ROLLUP";
|
|
5
5
|
ProvingRequestType[ProvingRequestType["PUBLIC_TX_BASE_ROLLUP"] = 3] = "PUBLIC_TX_BASE_ROLLUP";
|
|
6
6
|
ProvingRequestType[ProvingRequestType["TX_MERGE_ROLLUP"] = 4] = "TX_MERGE_ROLLUP";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BlobAccumulator, FinalBlobBatchingChallenges } from '@aztec/blob-lib';
|
|
1
|
+
import { BlobAccumulator, FinalBlobBatchingChallenges } from '@aztec/blob-lib/types';
|
|
2
2
|
import { AZTEC_MAX_EPOCH_DURATION } from '@aztec/constants';
|
|
3
3
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
4
4
|
import { Fr } from '@aztec/foundation/fields';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkpoint_rollup_public_inputs.d.ts","sourceRoot":"","sources":["../../src/rollup/checkpoint_rollup_public_inputs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,2BAA2B,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"checkpoint_rollup_public_inputs.d.ts","sourceRoot":"","sources":["../../src/rollup/checkpoint_rollup_public_inputs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,KAAK,KAAK,EAAwC,MAAM,6BAA6B,CAAC;AAE7G,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D;;GAEG;AACH,qBAAa,4BAA4B;IAErC;;OAEG;IACI,SAAS,EAAE,iBAAiB;IACnC;;OAEG;IACI,eAAe,EAAE,sBAAsB;IAC9C;;OAEG;IACI,UAAU,EAAE,sBAAsB;IACzC;;OAEG;IACI,sBAAsB,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,wBAAwB,CAAC;IACzE;;OAEG;IACI,IAAI,EAAE,KAAK,CAAC,YAAY,EAAE,OAAO,wBAAwB,CAAC;IACjE;;OAEG;IACI,oBAAoB,EAAE,eAAe;IAC5C;;OAEG;IACI,kBAAkB,EAAE,eAAe;IAC1C;;OAEG;IACI,mBAAmB,EAAE,2BAA2B;;IA/BvD;;OAEG;IACI,SAAS,EAAE,iBAAiB;IACnC;;OAEG;IACI,eAAe,EAAE,sBAAsB;IAC9C;;OAEG;IACI,UAAU,EAAE,sBAAsB;IACzC;;OAEG;IACI,sBAAsB,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,wBAAwB,CAAC;IACzE;;OAEG;IACI,IAAI,EAAE,KAAK,CAAC,YAAY,EAAE,OAAO,wBAAwB,CAAC;IACjE;;OAEG;IACI,oBAAoB,EAAE,eAAe;IAC5C;;OAEG;IACI,kBAAkB,EAAE,eAAe;IAC1C;;OAEG;IACI,mBAAmB,EAAE,2BAA2B;IAGzD,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;IAc/C,QAAQ;IAaR,QAAQ;IAIR,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM;IAI7B,8DAA8D;IAC9D,MAAM;IAIN,6CAA6C;IAC7C,MAAM,KAAK,MAAM,qEAEhB;CACF;AAED,qBAAa,YAAY;IAEd,SAAS,EAAE,UAAU;IACrB,KAAK,EAAE,EAAE;gBADT,SAAS,EAAE,UAAU,EACrB,KAAK,EAAE,EAAE;IAGlB,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,YAAY;IAK9D,QAAQ;IAIR,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC;IAI/C,QAAQ;IAIR,MAAM,CAAC,KAAK;IAIZ,OAAO;IAIP,cAAc;;;;;;;IAOd,MAAM,CAAC,MAAM;CAGd"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BlobAccumulator, FinalBlobBatchingChallenges } from '@aztec/blob-lib';
|
|
1
|
+
import { BlobAccumulator, FinalBlobBatchingChallenges } from '@aztec/blob-lib/types';
|
|
2
2
|
import { AZTEC_MAX_EPOCH_DURATION } from '@aztec/constants';
|
|
3
3
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
4
4
|
import { Fr } from '@aztec/foundation/fields';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BlobAccumulator, FinalBlobBatchingChallenges } from '@aztec/blob-lib';
|
|
1
|
+
import { BlobAccumulator, FinalBlobBatchingChallenges } from '@aztec/blob-lib/types';
|
|
2
2
|
import { ARCHIVE_HEIGHT, BLOBS_PER_BLOCK } from '@aztec/constants';
|
|
3
3
|
import { BLS12Point, Fr } from '@aztec/foundation/fields';
|
|
4
4
|
import { BufferReader, type Tuple } from '@aztec/foundation/serialize';
|
|
@@ -71,7 +71,7 @@ export declare class CheckpointRootRollupHints {
|
|
|
71
71
|
*/
|
|
72
72
|
blobsHash: Fr);
|
|
73
73
|
static from(fields: FieldsOf<CheckpointRootRollupHints>): CheckpointRootRollupHints;
|
|
74
|
-
static getFields(fields: FieldsOf<CheckpointRootRollupHints>): readonly [BlockHeader, [Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr], BlobAccumulator, FinalBlobBatchingChallenges, Fr[], [BLS12Point, BLS12Point, BLS12Point], Fr];
|
|
74
|
+
static getFields(fields: FieldsOf<CheckpointRootRollupHints>): readonly [BlockHeader, [Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr], BlobAccumulator, FinalBlobBatchingChallenges, Fr[], [BLS12Point, BLS12Point, BLS12Point, BLS12Point, BLS12Point, BLS12Point], Fr];
|
|
75
75
|
toBuffer(): Buffer<ArrayBufferLike>;
|
|
76
76
|
static fromBuffer(buffer: Buffer | BufferReader): CheckpointRootRollupHints;
|
|
77
77
|
toString(): `0x${string}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkpoint_root_rollup_private_inputs.d.ts","sourceRoot":"","sources":["../../src/rollup/checkpoint_root_rollup_private_inputs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,2BAA2B,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"checkpoint_root_rollup_private_inputs.d.ts","sourceRoot":"","sources":["../../src/rollup/checkpoint_root_rollup_private_inputs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BlobAccumulator, FinalBlobBatchingChallenges } from '@aztec/blob-lib';
|
|
1
|
+
import { BlobAccumulator, FinalBlobBatchingChallenges } from '@aztec/blob-lib/types';
|
|
2
2
|
import { ARCHIVE_HEIGHT, BLOBS_PER_BLOCK, FIELDS_PER_BLOB } from '@aztec/constants';
|
|
3
3
|
import { BLS12Point, Fr } from '@aztec/foundation/fields';
|
|
4
4
|
import { bufferSchemaFor } from '@aztec/foundation/schemas';
|
package/dest/rollup/index.d.ts
CHANGED
|
@@ -12,8 +12,8 @@ export * from './checkpoint_root_rollup_private_inputs.js';
|
|
|
12
12
|
export * from './epoch_constant_data.js';
|
|
13
13
|
export * from './private_tx_base_rollup_private_inputs.js';
|
|
14
14
|
export * from './public_tx_base_rollup_private_inputs.js';
|
|
15
|
-
export * from './
|
|
16
|
-
export * from './
|
|
15
|
+
export * from './public_chonk_verifier_private_inputs.js';
|
|
16
|
+
export * from './public_chonk_verifier_public_inputs.js';
|
|
17
17
|
export * from './root_rollup_private_inputs.js';
|
|
18
18
|
export * from './root_rollup_public_inputs.js';
|
|
19
19
|
export * from './tree_snapshot_diff_hints.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rollup/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wCAAwC,CAAC;AACvD,cAAc,iCAAiC,CAAC;AAChD,cAAc,uCAAuC,CAAC;AACtD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,6CAA6C,CAAC;AAC5D,cAAc,sCAAsC,CAAC;AACrD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,0BAA0B,CAAC;AACzC,cAAc,4CAA4C,CAAC;AAC3D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rollup/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wCAAwC,CAAC;AACvD,cAAc,iCAAiC,CAAC;AAChD,cAAc,uCAAuC,CAAC;AACtD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,6CAA6C,CAAC;AAC5D,cAAc,sCAAsC,CAAC;AACrD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,0BAA0B,CAAC;AACzC,cAAc,4CAA4C,CAAC;AAC3D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,0CAA0C,CAAC;AACzD,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qCAAqC,CAAC;AACpD,cAAc,8BAA8B,CAAC"}
|
package/dest/rollup/index.js
CHANGED
|
@@ -12,8 +12,8 @@ export * from './checkpoint_root_rollup_private_inputs.js';
|
|
|
12
12
|
export * from './epoch_constant_data.js';
|
|
13
13
|
export * from './private_tx_base_rollup_private_inputs.js';
|
|
14
14
|
export * from './public_tx_base_rollup_private_inputs.js';
|
|
15
|
-
export * from './
|
|
16
|
-
export * from './
|
|
15
|
+
export * from './public_chonk_verifier_private_inputs.js';
|
|
16
|
+
export * from './public_chonk_verifier_public_inputs.js';
|
|
17
17
|
export * from './root_rollup_private_inputs.js';
|
|
18
18
|
export * from './root_rollup_public_inputs.js';
|
|
19
19
|
export * from './tree_snapshot_diff_hints.js';
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { BufferReader } from '@aztec/foundation/serialize';
|
|
2
2
|
import type { FieldsOf } from '@aztec/foundation/types';
|
|
3
3
|
import { PrivateToRollupKernelCircuitPublicInputs } from '../kernel/private_to_rollup_kernel_circuit_public_inputs.js';
|
|
4
|
-
import { type
|
|
4
|
+
import { type ChonkProofData } from '../proofs/proof_data.js';
|
|
5
5
|
import { PrivateBaseRollupHints } from './base_rollup_hints.js';
|
|
6
6
|
export declare class PrivateTxBaseRollupPrivateInputs {
|
|
7
|
-
hidingKernelProofData:
|
|
7
|
+
hidingKernelProofData: ChonkProofData<PrivateToRollupKernelCircuitPublicInputs>;
|
|
8
8
|
hints: PrivateBaseRollupHints;
|
|
9
|
-
constructor(hidingKernelProofData:
|
|
9
|
+
constructor(hidingKernelProofData: ChonkProofData<PrivateToRollupKernelCircuitPublicInputs>, hints: PrivateBaseRollupHints);
|
|
10
10
|
static from(fields: FieldsOf<PrivateTxBaseRollupPrivateInputs>): PrivateTxBaseRollupPrivateInputs;
|
|
11
|
-
static getFields(fields: FieldsOf<PrivateTxBaseRollupPrivateInputs>): readonly [
|
|
11
|
+
static getFields(fields: FieldsOf<PrivateTxBaseRollupPrivateInputs>): readonly [ChonkProofData<PrivateToRollupKernelCircuitPublicInputs>, PrivateBaseRollupHints];
|
|
12
12
|
static fromBuffer(buffer: Buffer | BufferReader): PrivateTxBaseRollupPrivateInputs;
|
|
13
13
|
toBuffer(): Buffer<ArrayBufferLike>;
|
|
14
14
|
static fromString(str: string): PrivateTxBaseRollupPrivateInputs;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"private_tx_base_rollup_private_inputs.d.ts","sourceRoot":"","sources":["../../src/rollup/private_tx_base_rollup_private_inputs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAE9E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,wCAAwC,EAAE,MAAM,6DAA6D,CAAC;AACvH,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"private_tx_base_rollup_private_inputs.d.ts","sourceRoot":"","sources":["../../src/rollup/private_tx_base_rollup_private_inputs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAE9E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,wCAAwC,EAAE,MAAM,6DAA6D,CAAC;AACvH,OAAO,EAAE,KAAK,cAAc,EAAa,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,qBAAa,gCAAgC;IAElC,qBAAqB,EAAE,cAAc,CAAC,wCAAwC,CAAC;IAC/E,KAAK,EAAE,sBAAsB;gBAD7B,qBAAqB,EAAE,cAAc,CAAC,wCAAwC,CAAC,EAC/E,KAAK,EAAE,sBAAsB;IAGtC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,gCAAgC,CAAC,GAAG,gCAAgC;IAIjG,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,gCAAgC,CAAC;IAInE,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,gCAAgC;IAQlF,QAAQ;IAIR,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM;IAI7B,QAAQ;IAIR,8DAA8D;IAC9D,MAAM;IAIN,6CAA6C;IAC7C,MAAM,KAAK,MAAM,yEAEhB;CACF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
+
import { BufferReader } from '@aztec/foundation/serialize';
|
|
3
|
+
import type { FieldsOf } from '@aztec/foundation/types';
|
|
4
|
+
import { PrivateToPublicKernelCircuitPublicInputs } from '../kernel/private_to_public_kernel_circuit_public_inputs.js';
|
|
5
|
+
import { type ChonkProofData } from '../proofs/proof_data.js';
|
|
6
|
+
export declare class PublicChonkVerifierPrivateInputs {
|
|
7
|
+
hidingKernelProofData: ChonkProofData<PrivateToPublicKernelCircuitPublicInputs>;
|
|
8
|
+
proverId: Fr;
|
|
9
|
+
constructor(hidingKernelProofData: ChonkProofData<PrivateToPublicKernelCircuitPublicInputs>, proverId: Fr);
|
|
10
|
+
static from(fields: FieldsOf<PublicChonkVerifierPrivateInputs>): PublicChonkVerifierPrivateInputs;
|
|
11
|
+
static getFields(fields: FieldsOf<PublicChonkVerifierPrivateInputs>): readonly [ChonkProofData<PrivateToPublicKernelCircuitPublicInputs>, Fr];
|
|
12
|
+
static fromBuffer(buffer: Buffer | BufferReader): PublicChonkVerifierPrivateInputs;
|
|
13
|
+
toBuffer(): Buffer<ArrayBufferLike>;
|
|
14
|
+
static fromString(str: string): PublicChonkVerifierPrivateInputs;
|
|
15
|
+
toString(): `0x${string}`;
|
|
16
|
+
/** Returns a representation for JSON serialization. */
|
|
17
|
+
toJSON(): Buffer<ArrayBufferLike>;
|
|
18
|
+
/** Creates an instance from a string. */
|
|
19
|
+
static get schema(): import("zod").ZodType<PublicChonkVerifierPrivateInputs, any, string>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=public_chonk_verifier_private_inputs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public_chonk_verifier_private_inputs.d.ts","sourceRoot":"","sources":["../../src/rollup/public_chonk_verifier_private_inputs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAE9E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,wCAAwC,EAAE,MAAM,6DAA6D,CAAC;AACvH,OAAO,EAAE,KAAK,cAAc,EAAa,MAAM,yBAAyB,CAAC;AAGzE,qBAAa,gCAAgC;IAElC,qBAAqB,EAAE,cAAc,CAAC,wCAAwC,CAAC;IAC/E,QAAQ,EAAE,EAAE;gBADZ,qBAAqB,EAAE,cAAc,CAAC,wCAAwC,CAAC,EAC/E,QAAQ,EAAE,EAAE;IAGrB,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,gCAAgC,CAAC;IAI9D,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,gCAAgC,CAAC;IAInE,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;IAQ/C,QAAQ;IAIR,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM;IAI7B,QAAQ;IAIR,uDAAuD;IACvD,MAAM;IAIN,yCAAyC;IACzC,MAAM,KAAK,MAAM,yEAEhB;CACF"}
|
package/dest/rollup/{public_tube_private_inputs.js → public_chonk_verifier_private_inputs.js}
RENAMED
|
@@ -4,7 +4,8 @@ import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
|
4
4
|
import { bufferToHex, hexToBuffer } from '@aztec/foundation/string';
|
|
5
5
|
import { PrivateToPublicKernelCircuitPublicInputs } from '../kernel/private_to_public_kernel_circuit_public_inputs.js';
|
|
6
6
|
import { ProofData } from '../proofs/proof_data.js';
|
|
7
|
-
|
|
7
|
+
// CHONK_VERIFIER: Recursively verifies Chonk (Client Honk) proofs in circuits
|
|
8
|
+
export class PublicChonkVerifierPrivateInputs {
|
|
8
9
|
hidingKernelProofData;
|
|
9
10
|
proverId;
|
|
10
11
|
constructor(hidingKernelProofData, proverId){
|
|
@@ -12,7 +13,7 @@ export class PublicTubePrivateInputs {
|
|
|
12
13
|
this.proverId = proverId;
|
|
13
14
|
}
|
|
14
15
|
static from(fields) {
|
|
15
|
-
return new
|
|
16
|
+
return new PublicChonkVerifierPrivateInputs(...PublicChonkVerifierPrivateInputs.getFields(fields));
|
|
16
17
|
}
|
|
17
18
|
static getFields(fields) {
|
|
18
19
|
return [
|
|
@@ -22,13 +23,13 @@ export class PublicTubePrivateInputs {
|
|
|
22
23
|
}
|
|
23
24
|
static fromBuffer(buffer) {
|
|
24
25
|
const reader = BufferReader.asReader(buffer);
|
|
25
|
-
return new
|
|
26
|
+
return new PublicChonkVerifierPrivateInputs(ProofData.fromBuffer(reader, PrivateToPublicKernelCircuitPublicInputs), Fr.fromBuffer(reader));
|
|
26
27
|
}
|
|
27
28
|
toBuffer() {
|
|
28
|
-
return serializeToBuffer(...
|
|
29
|
+
return serializeToBuffer(...PublicChonkVerifierPrivateInputs.getFields(this));
|
|
29
30
|
}
|
|
30
31
|
static fromString(str) {
|
|
31
|
-
return
|
|
32
|
+
return PublicChonkVerifierPrivateInputs.fromBuffer(hexToBuffer(str));
|
|
32
33
|
}
|
|
33
34
|
toString() {
|
|
34
35
|
return bufferToHex(this.toBuffer());
|
|
@@ -37,6 +38,6 @@ export class PublicTubePrivateInputs {
|
|
|
37
38
|
return this.toBuffer();
|
|
38
39
|
}
|
|
39
40
|
/** Creates an instance from a string. */ static get schema() {
|
|
40
|
-
return bufferSchemaFor(
|
|
41
|
+
return bufferSchemaFor(PublicChonkVerifierPrivateInputs);
|
|
41
42
|
}
|
|
42
43
|
}
|
package/dest/rollup/{public_tube_public_inputs.d.ts → public_chonk_verifier_public_inputs.d.ts}
RENAMED
|
@@ -2,19 +2,19 @@ import { Fr } from '@aztec/foundation/fields';
|
|
|
2
2
|
import { BufferReader } from '@aztec/foundation/serialize';
|
|
3
3
|
import type { FieldsOf } from '@aztec/foundation/types';
|
|
4
4
|
import { PrivateToPublicKernelCircuitPublicInputs } from '../kernel/private_to_public_kernel_circuit_public_inputs.js';
|
|
5
|
-
export declare class
|
|
5
|
+
export declare class PublicChonkVerifierPublicInputs {
|
|
6
6
|
privateTail: PrivateToPublicKernelCircuitPublicInputs;
|
|
7
7
|
proverId: Fr;
|
|
8
8
|
constructor(privateTail: PrivateToPublicKernelCircuitPublicInputs, proverId: Fr);
|
|
9
|
-
static from(fields: FieldsOf<
|
|
10
|
-
static getFields(fields: FieldsOf<
|
|
11
|
-
static fromBuffer(buffer: Buffer | BufferReader):
|
|
9
|
+
static from(fields: FieldsOf<PublicChonkVerifierPublicInputs>): PublicChonkVerifierPublicInputs;
|
|
10
|
+
static getFields(fields: FieldsOf<PublicChonkVerifierPublicInputs>): readonly [PrivateToPublicKernelCircuitPublicInputs, Fr];
|
|
11
|
+
static fromBuffer(buffer: Buffer | BufferReader): PublicChonkVerifierPublicInputs;
|
|
12
12
|
toBuffer(): Buffer<ArrayBufferLike>;
|
|
13
|
-
static fromString(str: string):
|
|
13
|
+
static fromString(str: string): PublicChonkVerifierPublicInputs;
|
|
14
14
|
toString(): `0x${string}`;
|
|
15
15
|
/** Returns a representation for JSON serialization. */
|
|
16
16
|
toJSON(): Buffer<ArrayBufferLike>;
|
|
17
17
|
/** Creates an instance from a string. */
|
|
18
|
-
static get schema(): import("zod").ZodType<
|
|
18
|
+
static get schema(): import("zod").ZodType<PublicChonkVerifierPublicInputs, any, string>;
|
|
19
19
|
}
|
|
20
|
-
//# sourceMappingURL=
|
|
20
|
+
//# sourceMappingURL=public_chonk_verifier_public_inputs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public_chonk_verifier_public_inputs.d.ts","sourceRoot":"","sources":["../../src/rollup/public_chonk_verifier_public_inputs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAE9E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,wCAAwC,EAAE,MAAM,6DAA6D,CAAC;AAGvH,qBAAa,+BAA+B;IAEjC,WAAW,EAAE,wCAAwC;IACrD,QAAQ,EAAE,EAAE;gBADZ,WAAW,EAAE,wCAAwC,EACrD,QAAQ,EAAE,EAAE;IAGrB,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,+BAA+B,CAAC;IAI7D,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,+BAA+B,CAAC;IAIlE,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;IAQ/C,QAAQ;IAIR,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM;IAI7B,QAAQ;IAIR,uDAAuD;IACvD,MAAM;IAIN,yCAAyC;IACzC,MAAM,KAAK,MAAM,wEAEhB;CACF"}
|