@aztec/prover-client 1.0.0-nightly.20250605 → 1.0.0-nightly.20250606
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-factory/light.d.ts.map +1 -1
- package/dest/block-factory/light.js +2 -1
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +6 -1
- package/dest/mocks/test_context.d.ts.map +1 -1
- package/dest/mocks/test_context.js +2 -1
- package/dest/orchestrator/block-building-helpers.d.ts +2 -3
- package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
- package/dest/orchestrator/block-building-helpers.js +21 -20
- package/dest/orchestrator/block-proving-state.d.ts +2 -1
- package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/block-proving-state.js +14 -9
- package/dest/orchestrator/epoch-proving-state.d.ts +2 -2
- package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/epoch-proving-state.js +4 -5
- package/dest/orchestrator/orchestrator.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator.js +7 -5
- package/dest/proving_broker/rpc.d.ts +0 -2
- package/dest/proving_broker/rpc.d.ts.map +1 -1
- package/dest/proving_broker/rpc.js +1 -4
- package/package.json +15 -15
- package/src/block-factory/light.ts +2 -1
- package/src/config.ts +11 -1
- package/src/mocks/test_context.ts +1 -0
- package/src/orchestrator/block-building-helpers.ts +21 -23
- package/src/orchestrator/block-proving-state.ts +12 -8
- package/src/orchestrator/epoch-proving-state.ts +3 -2
- package/src/orchestrator/orchestrator.ts +19 -5
- package/src/proving_broker/rpc.ts +1 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"light.d.ts","sourceRoot":"","sources":["../../src/block-factory/light.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAEhG,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,WAAW,EAAmB,MAAM,kBAAkB,CAAC;AAC3F,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAQnF;;;;;;;;;;;GAWG;AACH,qBAAa,uBAAwB,YAAW,aAAa;IASzD,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,SAAS;IATnB,OAAO,CAAC,eAAe,CAAC,CAAkB;IAC1C,OAAO,CAAC,cAAc,CAAC,CAAO;IAE9B,OAAO,CAAC,GAAG,CAA4B;IAEvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+C;gBAG5D,EAAE,EAAE,yBAAyB,EAC7B,SAAS,GAAE,eAAsC;IAGrD,aAAa,CAAC,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAU1F,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAWzC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;YAIvB,UAAU;CAoBzB;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,WAAW,EAAE,EAClB,eAAe,EAAE,eAAe,EAChC,cAAc,EAAE,EAAE,EAAE,EACpB,EAAE,EAAE,yBAAyB,EAC7B,SAAS,GAAE,eAAsC,
|
|
1
|
+
{"version":3,"file":"light.d.ts","sourceRoot":"","sources":["../../src/block-factory/light.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAEhG,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,WAAW,EAAmB,MAAM,kBAAkB,CAAC;AAC3F,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAQnF;;;;;;;;;;;GAWG;AACH,qBAAa,uBAAwB,YAAW,aAAa;IASzD,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,SAAS;IATnB,OAAO,CAAC,eAAe,CAAC,CAAkB;IAC1C,OAAO,CAAC,cAAc,CAAC,CAAO;IAE9B,OAAO,CAAC,GAAG,CAA4B;IAEvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+C;gBAG5D,EAAE,EAAE,yBAAyB,EAC7B,SAAS,GAAE,eAAsC;IAGrD,aAAa,CAAC,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAU1F,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAWzC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;YAIvB,UAAU;CAoBzB;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,WAAW,EAAE,EAClB,eAAe,EAAE,eAAe,EAChC,cAAc,EAAE,EAAE,EAAE,EACpB,EAAE,EAAE,yBAAyB,EAC7B,SAAS,GAAE,eAAsC,oBAWlD"}
|
|
@@ -73,8 +73,9 @@ import { buildHeaderAndBodyFromTxs, getTreeSnapshot, insertSideEffectsAndBuildBa
|
|
|
73
73
|
* @param db - A db fork to use for block building which WILL BE MODIFIED.
|
|
74
74
|
*/ export async function buildBlockWithCleanDB(txs, globalVariables, l1ToL2Messages, db, telemetry = getTelemetryClient()) {
|
|
75
75
|
const spongeBlobState = SpongeBlob.init(toNumBlobFields(txs));
|
|
76
|
+
const l1ToL2MessageTree = await getTreeSnapshot(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, db);
|
|
76
77
|
for (const tx of txs){
|
|
77
|
-
await insertSideEffectsAndBuildBaseRollupHints(tx, globalVariables, db, spongeBlobState);
|
|
78
|
+
await insertSideEffectsAndBuildBaseRollupHints(tx, globalVariables, l1ToL2MessageTree, db, spongeBlobState);
|
|
78
79
|
}
|
|
79
80
|
const builder = new LightweightBlockFactory(db, telemetry);
|
|
80
81
|
await builder.startNewBlock(globalVariables, l1ToL2Messages);
|
package/dest/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,YAAY,EAAwB,MAAM,iCAAiC,CAAC;AAE1F,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EAGxB,MAAM,4BAA4B,CAAC;AAEpC,uDAAuD;AACvD,MAAM,MAAM,sBAAsB,GAAG,YAAY,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEnH,iEAAiE;AACjE,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,GAAG,QAAQ,CAAC,IAAI,CAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC,CAAC;AAE7G,eAAO,MAAM,gBAAgB,EAAE,kBAAkB,CAAC,QAAQ,GAAG,UAAU,CA2BtE,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,CAAC,sBAAsB,CAKjF,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,sBAAsB,CAEzD"}
|
package/dest/config.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { booleanConfigHelper, getConfigFromMappings } from '@aztec/foundation/config';
|
|
1
|
+
import { booleanConfigHelper, getConfigFromMappings, numberConfigHelper } from '@aztec/foundation/config';
|
|
2
2
|
import { proverConfigMappings } from '@aztec/stdlib/interfaces/server';
|
|
3
3
|
import { proverAgentConfigMappings, proverBrokerConfigMappings } from './proving_broker/config.js';
|
|
4
4
|
export const bbConfigMappings = {
|
|
@@ -22,6 +22,11 @@ export const bbConfigMappings = {
|
|
|
22
22
|
env: 'BB_SKIP_CLEANUP',
|
|
23
23
|
description: 'Whether to skip cleanup of bb temporary files',
|
|
24
24
|
...booleanConfigHelper(false)
|
|
25
|
+
},
|
|
26
|
+
numConcurrentIVCVerifiers: {
|
|
27
|
+
env: 'BB_NUM_IVC_VERIFIERS',
|
|
28
|
+
description: 'Max number of client IVC verifiers to run concurrently',
|
|
29
|
+
...numberConfigHelper(8)
|
|
25
30
|
}
|
|
26
31
|
};
|
|
27
32
|
export const proverClientConfigMappings = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test_context.d.ts","sourceRoot":"","sources":["../../src/mocks/test_context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAKpD,OAAO,EAAE,wBAAwB,EAA4B,MAAM,kCAAkC,CAAC;AACtG,OAAO,EAAE,eAAe,EAA0B,MAAM,yBAAyB,CAAC;AAElF,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,KAAK,sBAAsB,EAAsB,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,KAAK,WAAW,EAAiB,KAAK,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACpH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AASlE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,qBAAa,WAAW;IAKb,UAAU,EAAE,uBAAuB;IACnC,eAAe,EAAE,eAAe;IAChC,eAAe,EAAE,eAAe;IAChC,MAAM,EAAE,mBAAmB;IAC3B,MAAM,EAAE,UAAU;IAClB,kBAAkB,EAAE,yBAAyB;IAC7C,YAAY,EAAE,uBAAuB;IACrC,WAAW,EAAE,MAAM;IACnB,QAAQ,EAAE,YAAY;IAEtB,oBAAoB,EAAE,MAAM,EAAE;IAC9B,MAAM,EAAE,wBAAwB;IAChC,MAAM,EAAE,MAAM;IAhBvB,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,eAAe,CAAK;gBAGnB,UAAU,EAAE,uBAAuB,EACnC,eAAe,EAAE,eAAe,EAChC,eAAe,EAAE,eAAe,EAChC,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,UAAU,EAClB,kBAAkB,EAAE,yBAAyB,EAC7C,YAAY,EAAE,uBAAuB,EACrC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,YAAY,EAC7B,sBAAsB,EAAE,EAAE,EACnB,oBAAoB,EAAE,MAAM,EAAE,EAC9B,MAAM,EAAE,wBAAwB,EAChC,MAAM,EAAE,MAAM;IAKvB,IAAW,WAAW,4BAErB;WAEY,GAAG,CACd,MAAM,EAAE,MAAM,EACd,WAAW,SAAI,EACf,YAAY,GAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,OAAO,CAAC,mBAAmB,CACV,EAC7D,WAAW,SAAI;
|
|
1
|
+
{"version":3,"file":"test_context.d.ts","sourceRoot":"","sources":["../../src/mocks/test_context.ts"],"names":[],"mappings":"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"}
|
|
@@ -81,7 +81,8 @@ export class TestContext {
|
|
|
81
81
|
acvmWorkingDirectory: config.acvmWorkingDirectory,
|
|
82
82
|
bbBinaryPath: config.expectedBBPath,
|
|
83
83
|
bbWorkingDirectory: config.bbWorkingDirectory,
|
|
84
|
-
bbSkipCleanup: config.bbSkipCleanup
|
|
84
|
+
bbSkipCleanup: config.bbSkipCleanup,
|
|
85
|
+
numConcurrentIVCVerifiers: 2
|
|
85
86
|
};
|
|
86
87
|
localProver = await createProver(bbConfig);
|
|
87
88
|
}
|
|
@@ -6,7 +6,7 @@ import { PublicDataHint } from '@aztec/stdlib/avm';
|
|
|
6
6
|
import { Body } from '@aztec/stdlib/block';
|
|
7
7
|
import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
|
|
8
8
|
import type { ParityPublicInputs } from '@aztec/stdlib/parity';
|
|
9
|
-
import { type BaseOrMergeRollupPublicInputs, type BlockRootOrBlockMergePublicInputs,
|
|
9
|
+
import { type BaseOrMergeRollupPublicInputs, type BlockRootOrBlockMergePublicInputs, PrivateBaseRollupHints, PublicBaseRollupHints } from '@aztec/stdlib/rollup';
|
|
10
10
|
import { AppendOnlyTreeSnapshot, MerkleTreeId } from '@aztec/stdlib/trees';
|
|
11
11
|
import { BlockHeader, type GlobalVariables, PartialStateReference, type ProcessedTx, StateReference, TxEffect } from '@aztec/stdlib/tx';
|
|
12
12
|
import type { MerkleTreeReadOperations } from '@aztec/world-state';
|
|
@@ -18,7 +18,7 @@ type BaseTreeNames = 'NoteHashTree' | 'ContractTree' | 'NullifierTree' | 'Public
|
|
|
18
18
|
* Type representing the names of the trees.
|
|
19
19
|
*/
|
|
20
20
|
export type TreeNames = BaseTreeNames | 'L1ToL2MessageTree' | 'Archive';
|
|
21
|
-
export declare const insertSideEffectsAndBuildBaseRollupHints: (tx: ProcessedTx, globalVariables: GlobalVariables, db: MerkleTreeWriteOperations, startSpongeBlob: SpongeBlob) => Promise<PublicBaseRollupHints | PrivateBaseRollupHints>;
|
|
21
|
+
export declare const insertSideEffectsAndBuildBaseRollupHints: (tx: ProcessedTx, globalVariables: GlobalVariables, l1ToL2MessageTreeSnapshot: AppendOnlyTreeSnapshot, db: MerkleTreeWriteOperations, startSpongeBlob: SpongeBlob) => Promise<PublicBaseRollupHints | PrivateBaseRollupHints>;
|
|
22
22
|
export declare function getPublicDataHint(db: MerkleTreeWriteOperations, leafSlot: bigint): Promise<PublicDataHint>;
|
|
23
23
|
export declare const buildBlobHints: (txEffects: TxEffect[]) => Promise<{
|
|
24
24
|
blobFields: Fr[];
|
|
@@ -48,7 +48,6 @@ export declare function getRootTreeSiblingPath<TID extends MerkleTreeId>(treeId:
|
|
|
48
48
|
readonly 0: 40;
|
|
49
49
|
readonly 2: 40;
|
|
50
50
|
}[TID]>>;
|
|
51
|
-
export declare const getConstantRollupData: (globalVariables: GlobalVariables, db: MerkleTreeReadOperations) => Promise<ConstantRollupData>;
|
|
52
51
|
export declare function getTreeSnapshot(id: MerkleTreeId, db: MerkleTreeReadOperations): Promise<AppendOnlyTreeSnapshot>;
|
|
53
52
|
export declare function makeEmptyMembershipWitness<N extends number>(height: N): MembershipWitness<N>;
|
|
54
53
|
export declare function getSubtreeSiblingPath(treeId: MerkleTreeId, subtreeHeight: number, db: MerkleTreeReadOperations): Promise<Fr[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block-building-helpers.d.ts","sourceRoot":"","sources":["../../src/orchestrator/block-building-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAiBxD,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,KAAK,KAAK,EAAmD,MAAM,6BAA6B,CAAC;AAC1G,OAAO,EAAE,iBAAiB,EAAqD,MAAM,yBAAyB,CAAC;AAI/G,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAEjF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EACL,KAAK,6BAA6B,
|
|
1
|
+
{"version":3,"file":"block-building-helpers.d.ts","sourceRoot":"","sources":["../../src/orchestrator/block-building-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,15 +12,17 @@ import { computeFeePayerBalanceLeafSlot } from '@aztec/protocol-contracts/fee-ju
|
|
|
12
12
|
import { PublicDataHint } from '@aztec/stdlib/avm';
|
|
13
13
|
import { Body } from '@aztec/stdlib/block';
|
|
14
14
|
import { ContractClassLogFields } from '@aztec/stdlib/logs';
|
|
15
|
-
import {
|
|
15
|
+
import { BlockConstantData, PrivateBaseRollupHints, PrivateBaseStateDiffHints, PublicBaseRollupHints } from '@aztec/stdlib/rollup';
|
|
16
16
|
import { AppendOnlyTreeSnapshot, MerkleTreeId, NullifierLeafPreimage, PublicDataTreeLeaf, PublicDataTreeLeafPreimage, getTreeHeight } from '@aztec/stdlib/trees';
|
|
17
17
|
import { BlockHeader, ContentCommitment, PartialStateReference, StateReference, TxEffect } from '@aztec/stdlib/tx';
|
|
18
18
|
import { Attributes, runInSpan } from '@aztec/telemetry-client';
|
|
19
19
|
// Builds the hints for base rollup. Updating the contract, nullifier, and data trees in the process.
|
|
20
|
-
export const insertSideEffectsAndBuildBaseRollupHints = runInSpan('BlockBuilderHelpers', 'buildBaseRollupHints', async (span, tx, globalVariables, db
|
|
20
|
+
export const insertSideEffectsAndBuildBaseRollupHints = runInSpan('BlockBuilderHelpers', 'buildBaseRollupHints', async (span, tx, globalVariables, // Passing in the snapshot instead of getting it from the db because it might've been updated in the orchestrator
|
|
21
|
+
// when base parity proof is being generated.
|
|
22
|
+
l1ToL2MessageTreeSnapshot, db, startSpongeBlob)=>{
|
|
21
23
|
span.setAttribute(Attributes.TX_HASH, tx.hash.toString());
|
|
22
24
|
// Get trees info before any changes hit
|
|
23
|
-
const
|
|
25
|
+
const lastArchive = await getTreeSnapshot(MerkleTreeId.ARCHIVE, db);
|
|
24
26
|
const start = new PartialStateReference(await getTreeSnapshot(MerkleTreeId.NOTE_HASH_TREE, db), await getTreeSnapshot(MerkleTreeId.NULLIFIER_TREE, db), await getTreeSnapshot(MerkleTreeId.PUBLIC_DATA_TREE, db));
|
|
25
27
|
// Get the subtree sibling paths for the circuit
|
|
26
28
|
const noteHashSubtreeSiblingPathArray = await getSubtreeSiblingPath(MerkleTreeId.NOTE_HASH_TREE, NOTE_HASH_SUBTREE_HEIGHT, db);
|
|
@@ -49,13 +51,13 @@ export const insertSideEffectsAndBuildBaseRollupHints = runInSpan('BlockBuilderH
|
|
|
49
51
|
await startSpongeBlob.absorb(tx.txEffect.toBlobFields());
|
|
50
52
|
const contractClassLogsFields = makeTuple(MAX_CONTRACT_CLASS_LOGS_PER_TX, (i)=>tx.txEffect.contractClassLogs[i]?.fields || ContractClassLogFields.empty());
|
|
51
53
|
if (tx.avmProvingRequest) {
|
|
52
|
-
const blockHash = await tx.constants.historicalHeader.hash();
|
|
54
|
+
const blockHash = await tx.data.constants.historicalHeader.hash();
|
|
53
55
|
const archiveRootMembershipWitness = await getMembershipWitnessFor(blockHash, MerkleTreeId.ARCHIVE, ARCHIVE_HEIGHT, db);
|
|
54
56
|
return PublicBaseRollupHints.from({
|
|
55
57
|
startSpongeBlob: inputSpongeBlob,
|
|
58
|
+
lastArchive,
|
|
56
59
|
archiveRootMembershipWitness,
|
|
57
|
-
contractClassLogsFields
|
|
58
|
-
constants
|
|
60
|
+
contractClassLogsFields
|
|
59
61
|
});
|
|
60
62
|
} else {
|
|
61
63
|
if (txPublicDataUpdateRequestInfo.lowPublicDataWritesMembershipWitnesses.length > 1 || txPublicDataUpdateRequestInfo.lowPublicDataWritesPreimages.length > 1 || txPublicDataUpdateRequestInfo.publicDataWritesSiblingPaths.length > 1) {
|
|
@@ -75,8 +77,15 @@ export const insertSideEffectsAndBuildBaseRollupHints = runInSpan('BlockBuilderH
|
|
|
75
77
|
feeWriteLowLeafMembershipWitness,
|
|
76
78
|
feeWriteSiblingPath
|
|
77
79
|
});
|
|
78
|
-
const blockHash = await tx.constants.historicalHeader.hash();
|
|
80
|
+
const blockHash = await tx.data.constants.historicalHeader.hash();
|
|
79
81
|
const archiveRootMembershipWitness = await getMembershipWitnessFor(blockHash, MerkleTreeId.ARCHIVE, ARCHIVE_HEIGHT, db);
|
|
82
|
+
const constants = BlockConstantData.from({
|
|
83
|
+
lastArchive,
|
|
84
|
+
lastL1ToL2: l1ToL2MessageTreeSnapshot,
|
|
85
|
+
vkTreeRoot: getVKTreeRoot(),
|
|
86
|
+
protocolContractTreeRoot,
|
|
87
|
+
globalVariables
|
|
88
|
+
});
|
|
80
89
|
return PrivateBaseRollupHints.from({
|
|
81
90
|
start,
|
|
82
91
|
startSpongeBlob: inputSpongeBlob,
|
|
@@ -195,14 +204,6 @@ export async function getRootTreeSiblingPath(treeId, db) {
|
|
|
195
204
|
const path = await db.getSiblingPath(treeId, size);
|
|
196
205
|
return padArrayEnd(path.toFields(), Fr.ZERO, getTreeHeight(treeId));
|
|
197
206
|
}
|
|
198
|
-
export const getConstantRollupData = runInSpan('BlockBuilderHelpers', 'getConstantRollupData', async (_span, globalVariables, db)=>{
|
|
199
|
-
return ConstantRollupData.from({
|
|
200
|
-
vkTreeRoot: getVKTreeRoot(),
|
|
201
|
-
protocolContractTreeRoot,
|
|
202
|
-
lastArchive: await getTreeSnapshot(MerkleTreeId.ARCHIVE, db),
|
|
203
|
-
globalVariables
|
|
204
|
-
});
|
|
205
|
-
});
|
|
206
207
|
export async function getTreeSnapshot(id, db) {
|
|
207
208
|
const treeInfo = await db.getTreeInfo(id);
|
|
208
209
|
return new AppendOnlyTreeSnapshot(Fr.fromBuffer(treeInfo.root), Number(treeInfo.size));
|
|
@@ -268,17 +269,17 @@ function validateSimulatedTree(localTree, simulatedTree, name, label) {
|
|
|
268
269
|
}
|
|
269
270
|
}
|
|
270
271
|
export function validateTx(tx) {
|
|
271
|
-
const txHeader = tx.constants.historicalHeader;
|
|
272
|
-
if (txHeader.state.l1ToL2MessageTree.
|
|
272
|
+
const txHeader = tx.data.constants.historicalHeader;
|
|
273
|
+
if (txHeader.state.l1ToL2MessageTree.isEmpty()) {
|
|
273
274
|
throw new Error(`Empty L1 to L2 messages tree in tx: ${toFriendlyJSON(tx)}`);
|
|
274
275
|
}
|
|
275
|
-
if (txHeader.state.partial.noteHashTree.
|
|
276
|
+
if (txHeader.state.partial.noteHashTree.isEmpty()) {
|
|
276
277
|
throw new Error(`Empty note hash tree in tx: ${toFriendlyJSON(tx)}`);
|
|
277
278
|
}
|
|
278
|
-
if (txHeader.state.partial.nullifierTree.
|
|
279
|
+
if (txHeader.state.partial.nullifierTree.isEmpty()) {
|
|
279
280
|
throw new Error(`Empty nullifier tree in tx: ${toFriendlyJSON(tx)}`);
|
|
280
281
|
}
|
|
281
|
-
if (txHeader.state.partial.publicDataTree.
|
|
282
|
+
if (txHeader.state.partial.publicDataTree.isEmpty()) {
|
|
282
283
|
throw new Error(`Empty public data tree in tx: ${toFriendlyJSON(tx)}`);
|
|
283
284
|
}
|
|
284
285
|
}
|
|
@@ -21,6 +21,7 @@ export declare class BlockProvingState {
|
|
|
21
21
|
readonly index: number;
|
|
22
22
|
readonly globalVariables: GlobalVariables;
|
|
23
23
|
readonly newL1ToL2Messages: Fr[];
|
|
24
|
+
readonly l1ToL2MessageTreeSnapshot: AppendOnlyTreeSnapshot;
|
|
24
25
|
private readonly l1ToL2MessageSubtreeSiblingPath;
|
|
25
26
|
private readonly l1ToL2MessageTreeSnapshotAfterInsertion;
|
|
26
27
|
private readonly lastArchiveSnapshot;
|
|
@@ -38,7 +39,7 @@ export declare class BlockProvingState {
|
|
|
38
39
|
totalNumTxs: number;
|
|
39
40
|
private txs;
|
|
40
41
|
error: string | undefined;
|
|
41
|
-
constructor(index: number, globalVariables: GlobalVariables, newL1ToL2Messages: Fr[], l1ToL2MessageSubtreeSiblingPath: Tuple<Fr, typeof L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH>, l1ToL2MessageTreeSnapshotAfterInsertion: AppendOnlyTreeSnapshot, lastArchiveSnapshot: AppendOnlyTreeSnapshot, lastArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>, newArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>, previousBlockHeader: BlockHeader, parentEpoch: EpochProvingState);
|
|
42
|
+
constructor(index: number, globalVariables: GlobalVariables, newL1ToL2Messages: Fr[], l1ToL2MessageTreeSnapshot: AppendOnlyTreeSnapshot, l1ToL2MessageSubtreeSiblingPath: Tuple<Fr, typeof L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH>, l1ToL2MessageTreeSnapshotAfterInsertion: AppendOnlyTreeSnapshot, lastArchiveSnapshot: AppendOnlyTreeSnapshot, lastArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>, newArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>, previousBlockHeader: BlockHeader, parentEpoch: EpochProvingState);
|
|
42
43
|
get blockNumber(): number;
|
|
43
44
|
startNewBlock(numTxs: number, numBlobFields: number): void;
|
|
44
45
|
addNewTx(tx: TxProvingState): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/block-proving-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EACL,KAAK,cAAc,EAGnB,KAAK,wCAAwC,EAC7C,KAAK,yCAAyC,EAG/C,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,KAAK,gBAAgB,EAAuB,MAAM,yBAAyB,CAAC;AAGrF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,EAAE,KAAK,kBAAkB,EAAmB,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,EACL,KAAK,6BAA6B,
|
|
1
|
+
{"version":3,"file":"block-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/block-proving-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ import { UnbalancedTreeStore } from '@aztec/foundation/trees';
|
|
|
6
6
|
import { getVKIndex, getVKSiblingPath, getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
7
7
|
import { protocolContractTreeRoot } from '@aztec/protocol-contracts';
|
|
8
8
|
import { RootParityInput, RootParityInputs } from '@aztec/stdlib/parity';
|
|
9
|
-
import { BlockRootRollupBlobData, BlockRootRollupData, BlockRootRollupInputs,
|
|
9
|
+
import { BlockConstantData, BlockRootRollupBlobData, BlockRootRollupData, BlockRootRollupInputs, EmptyBlockRootRollupInputs, MergeRollupInputs, PreviousRollupData, SingleTxBlockRootRollupInputs } from '@aztec/stdlib/rollup';
|
|
10
10
|
import { StateReference } from '@aztec/stdlib/tx';
|
|
11
11
|
import { VkData } from '@aztec/stdlib/vks';
|
|
12
12
|
import { buildBlobHints, buildHeaderFromCircuitOutputs } from './block-building-helpers.js';
|
|
@@ -17,6 +17,7 @@ import { buildBlobHints, buildHeaderFromCircuitOutputs } from './block-building-
|
|
|
17
17
|
index;
|
|
18
18
|
globalVariables;
|
|
19
19
|
newL1ToL2Messages;
|
|
20
|
+
l1ToL2MessageTreeSnapshot;
|
|
20
21
|
l1ToL2MessageSubtreeSiblingPath;
|
|
21
22
|
l1ToL2MessageTreeSnapshotAfterInsertion;
|
|
22
23
|
lastArchiveSnapshot;
|
|
@@ -34,10 +35,11 @@ import { buildBlobHints, buildHeaderFromCircuitOutputs } from './block-building-
|
|
|
34
35
|
totalNumTxs;
|
|
35
36
|
txs;
|
|
36
37
|
error;
|
|
37
|
-
constructor(index, globalVariables, newL1ToL2Messages, l1ToL2MessageSubtreeSiblingPath, l1ToL2MessageTreeSnapshotAfterInsertion, lastArchiveSnapshot, lastArchiveSiblingPath, newArchiveSiblingPath, previousBlockHeader, parentEpoch){
|
|
38
|
+
constructor(index, globalVariables, newL1ToL2Messages, l1ToL2MessageTreeSnapshot, l1ToL2MessageSubtreeSiblingPath, l1ToL2MessageTreeSnapshotAfterInsertion, lastArchiveSnapshot, lastArchiveSiblingPath, newArchiveSiblingPath, previousBlockHeader, parentEpoch){
|
|
38
39
|
this.index = index;
|
|
39
40
|
this.globalVariables = globalVariables;
|
|
40
41
|
this.newL1ToL2Messages = newL1ToL2Messages;
|
|
42
|
+
this.l1ToL2MessageTreeSnapshot = l1ToL2MessageTreeSnapshot;
|
|
41
43
|
this.l1ToL2MessageSubtreeSiblingPath = l1ToL2MessageSubtreeSiblingPath;
|
|
42
44
|
this.l1ToL2MessageTreeSnapshotAfterInsertion = l1ToL2MessageTreeSnapshotAfterInsertion;
|
|
43
45
|
this.lastArchiveSnapshot = lastArchiveSnapshot;
|
|
@@ -125,8 +127,9 @@ import { buildBlobHints, buildHeaderFromCircuitOutputs } from './block-building-
|
|
|
125
127
|
}
|
|
126
128
|
const data = this.#getBlockRootRollupData(proverId);
|
|
127
129
|
if (this.totalNumTxs === 0) {
|
|
128
|
-
const constants =
|
|
130
|
+
const constants = BlockConstantData.from({
|
|
129
131
|
lastArchive: this.lastArchiveSnapshot,
|
|
132
|
+
lastL1ToL2: this.l1ToL2MessageTreeSnapshot,
|
|
130
133
|
globalVariables: this.globalVariables,
|
|
131
134
|
vkTreeRoot: getVKTreeRoot(),
|
|
132
135
|
protocolContractTreeRoot
|
|
@@ -158,19 +161,21 @@ import { buildBlobHints, buildHeaderFromCircuitOutputs } from './block-building-
|
|
|
158
161
|
if (!this.rootParityProvingOutput) {
|
|
159
162
|
throw new Error('Root parity is not ready.');
|
|
160
163
|
}
|
|
161
|
-
// Use the new block header and
|
|
162
|
-
const
|
|
163
|
-
const
|
|
164
|
+
// Use the new block header, archive and l1toL2 of the current block as the previous header, archive and l1toL2 of the next padding block.
|
|
165
|
+
const previousBlockHeader = await this.buildHeaderFromProvingOutputs();
|
|
166
|
+
const lastArchive = this.blockRootProvingOutput.inputs.newArchive;
|
|
167
|
+
const lastL1ToL2 = this.l1ToL2MessageTreeSnapshotAfterInsertion;
|
|
164
168
|
const data = BlockRootRollupData.from({
|
|
165
169
|
l1ToL2Roots: this.#getRootParityData(this.rootParityProvingOutput),
|
|
166
170
|
l1ToL2MessageSubtreeSiblingPath: this.l1ToL2MessageSubtreeSiblingPath,
|
|
167
171
|
previousArchiveSiblingPath: this.lastArchiveSiblingPath,
|
|
168
172
|
newArchiveSiblingPath: this.newArchiveSiblingPath,
|
|
169
|
-
previousBlockHeader
|
|
173
|
+
previousBlockHeader,
|
|
170
174
|
proverId
|
|
171
175
|
});
|
|
172
|
-
const constants =
|
|
173
|
-
lastArchive
|
|
176
|
+
const constants = BlockConstantData.from({
|
|
177
|
+
lastArchive,
|
|
178
|
+
lastL1ToL2,
|
|
174
179
|
globalVariables: this.globalVariables,
|
|
175
180
|
vkTreeRoot: getVKTreeRoot(),
|
|
176
181
|
protocolContractTreeRoot
|
|
@@ -35,7 +35,7 @@ export declare class EpochProvingState {
|
|
|
35
35
|
readonly cachedTubeProofs: Map<string, Promise<ProofAndVerificationKey<535>>>;
|
|
36
36
|
blocks: (BlockProvingState | undefined)[];
|
|
37
37
|
constructor(epochNumber: number, firstBlockNumber: number, totalNumBlocks: number, completionCallback: (result: ProvingResult) => void, rejectionCallback: (reason: string) => void);
|
|
38
|
-
startNewBlock(globalVariables: GlobalVariables, l1ToL2Messages: Fr[], l1ToL2MessageSubtreeSiblingPath: Tuple<Fr, typeof L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH>, l1ToL2MessageTreeSnapshotAfterInsertion: AppendOnlyTreeSnapshot, lastArchiveSnapshot: AppendOnlyTreeSnapshot, lastArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>, newArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>, previousBlockHeader: BlockHeader): BlockProvingState;
|
|
38
|
+
startNewBlock(globalVariables: GlobalVariables, l1ToL2Messages: Fr[], l1ToL2MessageTreeSnapshot: AppendOnlyTreeSnapshot, l1ToL2MessageSubtreeSiblingPath: Tuple<Fr, typeof L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH>, l1ToL2MessageTreeSnapshotAfterInsertion: AppendOnlyTreeSnapshot, lastArchiveSnapshot: AppendOnlyTreeSnapshot, lastArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>, newArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>, previousBlockHeader: BlockHeader): BlockProvingState;
|
|
39
39
|
verifyState(): boolean;
|
|
40
40
|
isAcceptingBlocks(): boolean;
|
|
41
41
|
setBlockRootRollupProof(blockIndex: number, proof: PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>): TreeNodeLocation;
|
|
@@ -44,7 +44,7 @@ export declare class EpochProvingState {
|
|
|
44
44
|
setPaddingBlockRootProof(proof: PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>): void;
|
|
45
45
|
getParentLocation(location: TreeNodeLocation): TreeNodeLocation;
|
|
46
46
|
getBlockMergeRollupInputs(mergeLocation: TreeNodeLocation): BlockMergeRollupInputs;
|
|
47
|
-
getRootRollupInputs(
|
|
47
|
+
getRootRollupInputs(): RootRollupInputs;
|
|
48
48
|
getPaddingBlockRootInputs(proverId: Fr): Promise<import("@aztec/stdlib/rollup").EmptyBlockRootRollupInputs>;
|
|
49
49
|
getBlockProvingStateByBlockNumber(blockNumber: number): BlockProvingState | undefined;
|
|
50
50
|
getEpochProofResult(): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"epoch-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/epoch-proving-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,wCAAwC,EACxC,yCAAyC,EAE1C,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,KAAK,gBAAgB,EAAuB,MAAM,yBAAyB,CAAC;AAErF,OAAO,KAAK,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAC9G,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EACL,sBAAsB,EACtB,KAAK,iCAAiC,EAEtC,gBAAgB,EAChB,KAAK,sBAAsB,EAC5B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,MAAM,aAAa,GAAG,GAAG,CAAC,YAAY,EAAE,sBAAsB,CAAC,CAAC;AAStE,MAAM,MAAM,aAAa,GAAG;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1F;;;;;GAKG;AACH,qBAAa,iBAAiB;;aAgBV,WAAW,EAAE,MAAM;aACnB,gBAAgB,EAAE,MAAM;aACxB,cAAc,EAAE,MAAM;IACtC,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,iBAAiB;IAnB3B,OAAO,CAAC,8BAA8B,CAEpC;IACF,OAAO,CAAC,6BAA6B,CAEvB;IACd,OAAO,CAAC,uBAAuB,CAAoE;IACnG,OAAO,CAAC,qBAAqB,CAAiD;IAG9E,SAAgB,gBAAgB,qDAAiF;IAE1G,MAAM,EAAE,CAAC,iBAAiB,GAAG,SAAS,CAAC,EAAE,CAAM;gBAGpC,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,EAC9B,kBAAkB,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,EACnD,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;IAO9C,aAAa,CAClB,eAAe,EAAE,eAAe,EAChC,cAAc,EAAE,EAAE,EAAE,EACpB,+BAA+B,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,wCAAwC,CAAC,EAC3F,uCAAuC,EAAE,sBAAsB,EAC/D,mBAAmB,EAAE,sBAAsB,EAC3C,sBAAsB,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,cAAc,CAAC,EACxD,qBAAqB,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,cAAc,CAAC,EACvD,mBAAmB,EAAE,WAAW,GAC/B,iBAAiB;
|
|
1
|
+
{"version":3,"file":"epoch-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/epoch-proving-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,9 +41,9 @@ var PROVING_STATE_LIFECYCLE = /*#__PURE__*/ function(PROVING_STATE_LIFECYCLE) {
|
|
|
41
41
|
}
|
|
42
42
|
// Adds a block to the proving state, returns its index
|
|
43
43
|
// Will update the proving life cycle if this is the last block
|
|
44
|
-
startNewBlock(globalVariables, l1ToL2Messages, l1ToL2MessageSubtreeSiblingPath, l1ToL2MessageTreeSnapshotAfterInsertion, lastArchiveSnapshot, lastArchiveSiblingPath, newArchiveSiblingPath, previousBlockHeader) {
|
|
44
|
+
startNewBlock(globalVariables, l1ToL2Messages, l1ToL2MessageTreeSnapshot, l1ToL2MessageSubtreeSiblingPath, l1ToL2MessageTreeSnapshotAfterInsertion, lastArchiveSnapshot, lastArchiveSiblingPath, newArchiveSiblingPath, previousBlockHeader) {
|
|
45
45
|
const index = globalVariables.blockNumber.toNumber() - this.firstBlockNumber;
|
|
46
|
-
const block = new BlockProvingState(index, globalVariables, l1ToL2Messages, l1ToL2MessageSubtreeSiblingPath, l1ToL2MessageTreeSnapshotAfterInsertion, lastArchiveSnapshot, lastArchiveSiblingPath, newArchiveSiblingPath, previousBlockHeader, this);
|
|
46
|
+
const block = new BlockProvingState(index, globalVariables, l1ToL2Messages, l1ToL2MessageTreeSnapshot, l1ToL2MessageSubtreeSiblingPath, l1ToL2MessageTreeSnapshotAfterInsertion, lastArchiveSnapshot, lastArchiveSiblingPath, newArchiveSiblingPath, previousBlockHeader, this);
|
|
47
47
|
this.blocks[index] = block;
|
|
48
48
|
if (this.blocks.filter((b)=>!!b).length === this.totalNumBlocks) {
|
|
49
49
|
this.provingStateLifecycle = 1;
|
|
@@ -83,7 +83,7 @@ var PROVING_STATE_LIFECYCLE = /*#__PURE__*/ function(PROVING_STATE_LIFECYCLE) {
|
|
|
83
83
|
this.#getPreviousRollupData(right)
|
|
84
84
|
]);
|
|
85
85
|
}
|
|
86
|
-
getRootRollupInputs(
|
|
86
|
+
getRootRollupInputs() {
|
|
87
87
|
const [left, right] = this.#getChildProofsForRoot();
|
|
88
88
|
if (!left || !right) {
|
|
89
89
|
throw new Error('At lease one child is not ready.');
|
|
@@ -92,8 +92,7 @@ var PROVING_STATE_LIFECYCLE = /*#__PURE__*/ function(PROVING_STATE_LIFECYCLE) {
|
|
|
92
92
|
previousRollupData: [
|
|
93
93
|
this.#getPreviousRollupData(left),
|
|
94
94
|
this.#getPreviousRollupData(right)
|
|
95
|
-
]
|
|
96
|
-
proverId
|
|
95
|
+
]
|
|
97
96
|
});
|
|
98
97
|
}
|
|
99
98
|
getPaddingBlockRootInputs(proverId) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/orchestrator.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAS9C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,EACV,WAAW,EACX,wBAAwB,EAGxB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AAUzC,OAAO,EAAE,KAAK,sBAAsB,EAAgB,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,KAAK,WAAW,EAAE,KAAK,EAAE,EAAmB,MAAM,kBAAkB,CAAC;AACtH,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,MAAM,EAIZ,MAAM,yBAAyB,CAAC;AAqBjC;;;;;;;;;GASG;AAEH;;GAEG;AACH,qBAAa,mBAAoB,YAAW,WAAW;IASnD,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAV3B,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,kBAAkB,CAAyB;IAEnD,OAAO,CAAC,cAAc,CAAiD;IACvE,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,GAAG,CAAqD;gBAGtD,UAAU,EAAE,wBAAwB,EACpC,MAAM,EAAE,mBAAmB,EAClB,QAAQ,EAAE,EAAE,EAC7B,eAAe,GAAE,eAAsC;IAKzD,IAAI,MAAM,IAAI,MAAM,CAEnB;IAEM,WAAW,IAAI,EAAE;IAIjB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAKrB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;IAW1F;;;;;OAKG;IAIU,aAAa,CAAC,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,EAAE,EAAE,EAAE,mBAAmB,EAAE,WAAW;
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/orchestrator.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAS9C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,EACV,WAAW,EACX,wBAAwB,EAGxB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AAUzC,OAAO,EAAE,KAAK,sBAAsB,EAAgB,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,KAAK,WAAW,EAAE,KAAK,EAAE,EAAmB,MAAM,kBAAkB,CAAC;AACtH,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,MAAM,EAIZ,MAAM,yBAAyB,CAAC;AAqBjC;;;;;;;;;GASG;AAEH;;GAEG;AACH,qBAAa,mBAAoB,YAAW,WAAW;IASnD,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAV3B,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,kBAAkB,CAAyB;IAEnD,OAAO,CAAC,cAAc,CAAiD;IACvE,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,GAAG,CAAqD;gBAGtD,UAAU,EAAE,wBAAwB,EACpC,MAAM,EAAE,mBAAmB,EAClB,QAAQ,EAAE,EAAE,EAC7B,eAAe,GAAE,eAAsC;IAKzD,IAAI,MAAM,IAAI,MAAM,CAEnB;IAEM,WAAW,IAAI,EAAE;IAIjB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAKrB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;IAW1F;;;;;OAKG;IAIU,aAAa,CAAC,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,EAAE,EAAE,EAAE,mBAAmB,EAAE,WAAW;IAgDnH;;;OAGG;IAIU,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiDtD;;;OAGG;IAEU,iBAAiB,CAAC,GAAG,EAAE,EAAE,EAAE;IAcxC;;;OAGG;IAIU,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAyBnG,oDAAoD;IAC7C,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;YAQzB,UAAU;cAqCR,kCAAkC,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,sBAAsB;IAWvG;;OAEG;IACI,MAAM;IAQb;;OAEG;IACU,aAAa;;;;IAoB1B;;;;OAIG;YACW,kBAAkB;IAShC;;;;;OAKG;IACH,OAAO,CAAC,eAAe;YAwDT,uBAAuB;YAkCvB,uBAAuB;IAyCrC,OAAO,CAAC,iBAAiB;IA8CzB,OAAO,CAAC,gBAAgB;IA0BxB,OAAO,CAAC,aAAa;IA4BrB,OAAO,CAAC,kBAAkB;YA0BZ,sBAAsB;IAmEpC,OAAO,CAAC,wBAAwB;IAuBhC,OAAO,CAAC,gCAAgC;IAUxC,OAAO,CAAC,wBAAwB;IA2BhC,OAAO,CAAC,uBAAuB;YAyBjB,mBAAmB;IA6BjC,OAAO,CAAC,iBAAiB;YA4BX,8BAA8B;YAa9B,8BAA8B;IAyB5C,OAAO,CAAC,mCAAmC;IAa3C,OAAO,CAAC,yBAAyB;IASjC;;;;;OAKG;IACH,OAAO,CAAC,SAAS;IAmDjB,OAAO,CAAC,4BAA4B;CAWrC"}
|
|
@@ -97,12 +97,12 @@ const logger = createLogger('prover-client:orchestrator');
|
|
|
97
97
|
const db = await this.dbProvider.fork(globalVariables.blockNumber.toNumber() - 1);
|
|
98
98
|
this.dbs.set(globalVariables.blockNumber.toNumber(), db);
|
|
99
99
|
// we start the block by enqueueing all of the base parity circuits
|
|
100
|
-
const { l1ToL2MessageSubtreeSiblingPath, l1ToL2MessageTreeSnapshotAfterInsertion, baseParityInputs } = await this.prepareBaseParityInputs(l1ToL2Messages, db);
|
|
100
|
+
const { l1ToL2MessageTreeSnapshot, l1ToL2MessageSubtreeSiblingPath, l1ToL2MessageTreeSnapshotAfterInsertion, baseParityInputs } = await this.prepareBaseParityInputs(l1ToL2Messages, db);
|
|
101
101
|
// Get archive snapshot before this block lands
|
|
102
102
|
const lastArchive = await getTreeSnapshot(MerkleTreeId.ARCHIVE, db);
|
|
103
103
|
const lastArchiveSiblingPath = await getLastSiblingPath(MerkleTreeId.ARCHIVE, db);
|
|
104
104
|
const newArchiveSiblingPath = await getRootTreeSiblingPath(MerkleTreeId.ARCHIVE, db);
|
|
105
|
-
const blockProvingState = this.provingState.startNewBlock(globalVariables, l1ToL2Messages, l1ToL2MessageSubtreeSiblingPath, l1ToL2MessageTreeSnapshotAfterInsertion, lastArchive, lastArchiveSiblingPath, newArchiveSiblingPath, previousBlockHeader);
|
|
105
|
+
const blockProvingState = this.provingState.startNewBlock(globalVariables, l1ToL2Messages, l1ToL2MessageTreeSnapshot, l1ToL2MessageSubtreeSiblingPath, l1ToL2MessageTreeSnapshotAfterInsertion, lastArchive, lastArchiveSiblingPath, newArchiveSiblingPath, previousBlockHeader);
|
|
106
106
|
// Enqueue base parity circuits for the block
|
|
107
107
|
for(let i = 0; i < baseParityInputs.length; i++){
|
|
108
108
|
this.enqueueBaseParityCircuit(blockProvingState, baseParityInputs[i], i);
|
|
@@ -118,7 +118,7 @@ const logger = createLogger('prover-client:orchestrator');
|
|
|
118
118
|
logger.warn(`Provided no txs to orchestrator addTxs.`);
|
|
119
119
|
return;
|
|
120
120
|
}
|
|
121
|
-
const blockNumber = txs[0].
|
|
121
|
+
const blockNumber = txs[0].globalVariables.blockNumber.toNumber();
|
|
122
122
|
const provingState = this.provingState?.getBlockProvingStateByBlockNumber(blockNumber);
|
|
123
123
|
if (!provingState) {
|
|
124
124
|
throw new Error(`Block proving state for ${blockNumber} not found`);
|
|
@@ -314,11 +314,13 @@ const logger = createLogger('prover-client:orchestrator');
|
|
|
314
314
|
async prepareBaseParityInputs(l1ToL2Messages, db) {
|
|
315
315
|
const l1ToL2MessagesPadded = padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, 'Too many L1 to L2 messages');
|
|
316
316
|
const baseParityInputs = times(NUM_BASE_PARITY_PER_ROOT_PARITY, (i)=>BaseParityInputs.fromSlice(l1ToL2MessagesPadded, i, getVKTreeRoot()));
|
|
317
|
+
const l1ToL2MessageTreeSnapshot = await getTreeSnapshot(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, db);
|
|
317
318
|
const l1ToL2MessageSubtreeSiblingPath = assertLength(await getSubtreeSiblingPath(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, L1_TO_L2_MSG_SUBTREE_HEIGHT, db), L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH);
|
|
318
319
|
// Update the local trees to include the new l1 to l2 messages
|
|
319
320
|
await db.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, l1ToL2MessagesPadded);
|
|
320
321
|
const l1ToL2MessageTreeSnapshotAfterInsertion = await getTreeSnapshot(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, db);
|
|
321
322
|
return {
|
|
323
|
+
l1ToL2MessageTreeSnapshot,
|
|
322
324
|
l1ToL2MessageSubtreeSiblingPath,
|
|
323
325
|
l1ToL2MessageTreeSnapshotAfterInsertion,
|
|
324
326
|
baseParityInputs
|
|
@@ -333,7 +335,7 @@ const logger = createLogger('prover-client:orchestrator');
|
|
|
333
335
|
const db = this.dbs.get(provingState.blockNumber);
|
|
334
336
|
// We build the base rollup inputs using a mock proof and verification key.
|
|
335
337
|
// These will be overwritten later once we have proven the tube circuit and any public kernels
|
|
336
|
-
const [ms, hints] = await elapsed(insertSideEffectsAndBuildBaseRollupHints(tx, provingState.globalVariables, db, provingState.spongeBlobState));
|
|
338
|
+
const [ms, hints] = await elapsed(insertSideEffectsAndBuildBaseRollupHints(tx, provingState.globalVariables, provingState.l1ToL2MessageTreeSnapshot, db, provingState.spongeBlobState));
|
|
337
339
|
this.metrics.recordBaseRollupInputs(ms);
|
|
338
340
|
const promises = [
|
|
339
341
|
MerkleTreeId.NOTE_HASH_TREE,
|
|
@@ -556,7 +558,7 @@ const logger = createLogger('prover-client:orchestrator');
|
|
|
556
558
|
return;
|
|
557
559
|
}
|
|
558
560
|
logger.debug(`Preparing root rollup`);
|
|
559
|
-
const inputs = provingState.getRootRollupInputs(
|
|
561
|
+
const inputs = provingState.getRootRollupInputs();
|
|
560
562
|
this.deferredProving(provingState, wrapCallbackInSpan(this.tracer, 'ProvingOrchestrator.prover.getRootRollupProof', {
|
|
561
563
|
[Attributes.PROTOCOL_CIRCUIT_NAME]: 'root-rollup'
|
|
562
564
|
}, (signal)=>this.prover.getRootRollupProof(inputs, signal, provingState.epochNumber)), (result)=>{
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import type { SafeJsonRpcServer } from '@aztec/foundation/json-rpc/server';
|
|
2
1
|
import { type ProvingJobBroker, type ProvingJobConsumer, type ProvingJobProducer } from '@aztec/stdlib/interfaces/server';
|
|
3
2
|
import { type ApiSchemaFor } from '@aztec/stdlib/schemas';
|
|
4
3
|
import { type ComponentsVersions } from '@aztec/stdlib/versioning';
|
|
5
4
|
export declare const ProvingJobProducerSchema: ApiSchemaFor<ProvingJobProducer>;
|
|
6
5
|
export declare const ProvingJobConsumerSchema: ApiSchemaFor<ProvingJobConsumer>;
|
|
7
6
|
export declare const ProvingJobBrokerSchema: ApiSchemaFor<ProvingJobBroker>;
|
|
8
|
-
export declare function createProvingBrokerServer(broker: ProvingJobBroker): SafeJsonRpcServer;
|
|
9
7
|
export declare function createProvingJobBrokerClient(url: string, versions: Partial<ComponentsVersions>, fetch?: (host: string, body: unknown, extraHeaders?: Record<string, string>, noRetry?: boolean) => Promise<{
|
|
10
8
|
response: any;
|
|
11
9
|
headers: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../src/proving_broker/rpc.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../src/proving_broker/rpc.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EAEvB,KAAK,kBAAkB,EAExB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,KAAK,YAAY,EAAY,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,KAAK,kBAAkB,EAAgC,MAAM,0BAA0B,CAAC;AAcjG,eAAO,MAAM,wBAAwB,EAAE,YAAY,CAAC,kBAAkB,CAKrE,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,YAAY,CAAC,kBAAkB,CAcrE,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,YAAY,CAAC,gBAAgB,CAGjE,CAAC;AAEF,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,OAAO,CAAC,kBAAkB,CAAC,EACrC,KAAK;;;;;EAAoC,GACxC,gBAAgB,CAMlB;AAED,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,OAAO,CAAC,kBAAkB,CAAC,EACrC,KAAK;;;;;EAAoC,GACxC,kBAAkB,CAMpB;AAED,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,OAAO,CAAC,kBAAkB,CAAC,EACrC,KAAK;;;;;EAAoC,GACxC,kBAAkB,CAMpB"}
|
|
@@ -3,7 +3,7 @@ import { ProofUri, ProvingJob, ProvingJobId, ProvingJobStatus } from '@aztec/std
|
|
|
3
3
|
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
4
4
|
import { optional } from '@aztec/stdlib/schemas';
|
|
5
5
|
import { getVersioningResponseHandler } from '@aztec/stdlib/versioning';
|
|
6
|
-
import {
|
|
6
|
+
import { makeTracedFetch } from '@aztec/telemetry-client';
|
|
7
7
|
import { z } from 'zod';
|
|
8
8
|
const ProvingJobFilterSchema = z.object({
|
|
9
9
|
allowList: z.array(z.nativeEnum(ProvingRequestType))
|
|
@@ -28,9 +28,6 @@ export const ProvingJobBrokerSchema = {
|
|
|
28
28
|
...ProvingJobConsumerSchema,
|
|
29
29
|
...ProvingJobProducerSchema
|
|
30
30
|
};
|
|
31
|
-
export function createProvingBrokerServer(broker) {
|
|
32
|
-
return createTracedJsonRpcServer(broker, ProvingJobBrokerSchema);
|
|
33
|
-
}
|
|
34
31
|
export function createProvingJobBrokerClient(url, versions, fetch = makeTracedFetch([
|
|
35
32
|
1,
|
|
36
33
|
2,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/prover-client",
|
|
3
|
-
"version": "1.0.0-nightly.
|
|
3
|
+
"version": "1.0.0-nightly.20250606",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -64,19 +64,19 @@
|
|
|
64
64
|
]
|
|
65
65
|
},
|
|
66
66
|
"dependencies": {
|
|
67
|
-
"@aztec/bb-prover": "1.0.0-nightly.
|
|
68
|
-
"@aztec/blob-lib": "1.0.0-nightly.
|
|
69
|
-
"@aztec/constants": "1.0.0-nightly.
|
|
70
|
-
"@aztec/ethereum": "1.0.0-nightly.
|
|
71
|
-
"@aztec/foundation": "1.0.0-nightly.
|
|
72
|
-
"@aztec/kv-store": "1.0.0-nightly.
|
|
73
|
-
"@aztec/noir-protocol-circuits-types": "1.0.0-nightly.
|
|
74
|
-
"@aztec/noir-types": "1.0.0-nightly.
|
|
75
|
-
"@aztec/protocol-contracts": "1.0.0-nightly.
|
|
76
|
-
"@aztec/simulator": "1.0.0-nightly.
|
|
77
|
-
"@aztec/stdlib": "1.0.0-nightly.
|
|
78
|
-
"@aztec/telemetry-client": "1.0.0-nightly.
|
|
79
|
-
"@aztec/world-state": "1.0.0-nightly.
|
|
67
|
+
"@aztec/bb-prover": "1.0.0-nightly.20250606",
|
|
68
|
+
"@aztec/blob-lib": "1.0.0-nightly.20250606",
|
|
69
|
+
"@aztec/constants": "1.0.0-nightly.20250606",
|
|
70
|
+
"@aztec/ethereum": "1.0.0-nightly.20250606",
|
|
71
|
+
"@aztec/foundation": "1.0.0-nightly.20250606",
|
|
72
|
+
"@aztec/kv-store": "1.0.0-nightly.20250606",
|
|
73
|
+
"@aztec/noir-protocol-circuits-types": "1.0.0-nightly.20250606",
|
|
74
|
+
"@aztec/noir-types": "1.0.0-nightly.20250606",
|
|
75
|
+
"@aztec/protocol-contracts": "1.0.0-nightly.20250606",
|
|
76
|
+
"@aztec/simulator": "1.0.0-nightly.20250606",
|
|
77
|
+
"@aztec/stdlib": "1.0.0-nightly.20250606",
|
|
78
|
+
"@aztec/telemetry-client": "1.0.0-nightly.20250606",
|
|
79
|
+
"@aztec/world-state": "1.0.0-nightly.20250606",
|
|
80
80
|
"@google-cloud/storage": "^7.15.0",
|
|
81
81
|
"@iarna/toml": "^2.2.5",
|
|
82
82
|
"commander": "^12.1.0",
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
"zod": "^3.23.8"
|
|
87
87
|
},
|
|
88
88
|
"devDependencies": {
|
|
89
|
-
"@aztec/noir-contracts.js": "1.0.0-nightly.
|
|
89
|
+
"@aztec/noir-contracts.js": "1.0.0-nightly.20250606",
|
|
90
90
|
"@jest/globals": "^29.5.0",
|
|
91
91
|
"@types/jest": "^29.5.0",
|
|
92
92
|
"@types/node": "^22.15.17",
|
|
@@ -99,8 +99,9 @@ export async function buildBlockWithCleanDB(
|
|
|
99
99
|
telemetry: TelemetryClient = getTelemetryClient(),
|
|
100
100
|
) {
|
|
101
101
|
const spongeBlobState = SpongeBlob.init(toNumBlobFields(txs));
|
|
102
|
+
const l1ToL2MessageTree = await getTreeSnapshot(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, db);
|
|
102
103
|
for (const tx of txs) {
|
|
103
|
-
await insertSideEffectsAndBuildBaseRollupHints(tx, globalVariables, db, spongeBlobState);
|
|
104
|
+
await insertSideEffectsAndBuildBaseRollupHints(tx, globalVariables, l1ToL2MessageTree, db, spongeBlobState);
|
|
104
105
|
}
|
|
105
106
|
const builder = new LightweightBlockFactory(db, telemetry);
|
|
106
107
|
await builder.startNewBlock(globalVariables, l1ToL2Messages);
|
package/src/config.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import type { ACVMConfig, BBConfig } from '@aztec/bb-prover';
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
type ConfigMappingsType,
|
|
4
|
+
booleanConfigHelper,
|
|
5
|
+
getConfigFromMappings,
|
|
6
|
+
numberConfigHelper,
|
|
7
|
+
} from '@aztec/foundation/config';
|
|
3
8
|
import { type ProverConfig, proverConfigMappings } from '@aztec/stdlib/interfaces/server';
|
|
4
9
|
|
|
5
10
|
import {
|
|
@@ -37,6 +42,11 @@ export const bbConfigMappings: ConfigMappingsType<BBConfig & ACVMConfig> = {
|
|
|
37
42
|
description: 'Whether to skip cleanup of bb temporary files',
|
|
38
43
|
...booleanConfigHelper(false),
|
|
39
44
|
},
|
|
45
|
+
numConcurrentIVCVerifiers: {
|
|
46
|
+
env: 'BB_NUM_IVC_VERIFIERS',
|
|
47
|
+
description: 'Max number of client IVC verifiers to run concurrently',
|
|
48
|
+
...numberConfigHelper(8),
|
|
49
|
+
},
|
|
40
50
|
};
|
|
41
51
|
|
|
42
52
|
export const proverClientConfigMappings: ConfigMappingsType<ProverClientUserConfig> = {
|
|
@@ -28,8 +28,8 @@ import { ContractClassLogFields } from '@aztec/stdlib/logs';
|
|
|
28
28
|
import type { ParityPublicInputs } from '@aztec/stdlib/parity';
|
|
29
29
|
import {
|
|
30
30
|
type BaseOrMergeRollupPublicInputs,
|
|
31
|
+
BlockConstantData,
|
|
31
32
|
type BlockRootOrBlockMergePublicInputs,
|
|
32
|
-
ConstantRollupData,
|
|
33
33
|
PrivateBaseRollupHints,
|
|
34
34
|
PrivateBaseStateDiffHints,
|
|
35
35
|
PublicBaseRollupHints,
|
|
@@ -71,12 +71,15 @@ export const insertSideEffectsAndBuildBaseRollupHints = runInSpan(
|
|
|
71
71
|
span: Span,
|
|
72
72
|
tx: ProcessedTx,
|
|
73
73
|
globalVariables: GlobalVariables,
|
|
74
|
+
// Passing in the snapshot instead of getting it from the db because it might've been updated in the orchestrator
|
|
75
|
+
// when base parity proof is being generated.
|
|
76
|
+
l1ToL2MessageTreeSnapshot: AppendOnlyTreeSnapshot,
|
|
74
77
|
db: MerkleTreeWriteOperations,
|
|
75
78
|
startSpongeBlob: SpongeBlob,
|
|
76
79
|
) => {
|
|
77
80
|
span.setAttribute(Attributes.TX_HASH, tx.hash.toString());
|
|
78
81
|
// Get trees info before any changes hit
|
|
79
|
-
const
|
|
82
|
+
const lastArchive = await getTreeSnapshot(MerkleTreeId.ARCHIVE, db);
|
|
80
83
|
const start = new PartialStateReference(
|
|
81
84
|
await getTreeSnapshot(MerkleTreeId.NOTE_HASH_TREE, db),
|
|
82
85
|
await getTreeSnapshot(MerkleTreeId.NULLIFIER_TREE, db),
|
|
@@ -144,7 +147,7 @@ export const insertSideEffectsAndBuildBaseRollupHints = runInSpan(
|
|
|
144
147
|
);
|
|
145
148
|
|
|
146
149
|
if (tx.avmProvingRequest) {
|
|
147
|
-
const blockHash = await tx.constants.historicalHeader.hash();
|
|
150
|
+
const blockHash = await tx.data.constants.historicalHeader.hash();
|
|
148
151
|
const archiveRootMembershipWitness = await getMembershipWitnessFor(
|
|
149
152
|
blockHash,
|
|
150
153
|
MerkleTreeId.ARCHIVE,
|
|
@@ -154,9 +157,9 @@ export const insertSideEffectsAndBuildBaseRollupHints = runInSpan(
|
|
|
154
157
|
|
|
155
158
|
return PublicBaseRollupHints.from({
|
|
156
159
|
startSpongeBlob: inputSpongeBlob,
|
|
160
|
+
lastArchive,
|
|
157
161
|
archiveRootMembershipWitness,
|
|
158
162
|
contractClassLogsFields,
|
|
159
|
-
constants,
|
|
160
163
|
});
|
|
161
164
|
} else {
|
|
162
165
|
if (
|
|
@@ -196,7 +199,7 @@ export const insertSideEffectsAndBuildBaseRollupHints = runInSpan(
|
|
|
196
199
|
feeWriteSiblingPath,
|
|
197
200
|
});
|
|
198
201
|
|
|
199
|
-
const blockHash = await tx.constants.historicalHeader.hash();
|
|
202
|
+
const blockHash = await tx.data.constants.historicalHeader.hash();
|
|
200
203
|
const archiveRootMembershipWitness = await getMembershipWitnessFor(
|
|
201
204
|
blockHash,
|
|
202
205
|
MerkleTreeId.ARCHIVE,
|
|
@@ -204,6 +207,14 @@ export const insertSideEffectsAndBuildBaseRollupHints = runInSpan(
|
|
|
204
207
|
db,
|
|
205
208
|
);
|
|
206
209
|
|
|
210
|
+
const constants = BlockConstantData.from({
|
|
211
|
+
lastArchive,
|
|
212
|
+
lastL1ToL2: l1ToL2MessageTreeSnapshot,
|
|
213
|
+
vkTreeRoot: getVKTreeRoot(),
|
|
214
|
+
protocolContractTreeRoot,
|
|
215
|
+
globalVariables,
|
|
216
|
+
});
|
|
217
|
+
|
|
207
218
|
return PrivateBaseRollupHints.from({
|
|
208
219
|
start,
|
|
209
220
|
startSpongeBlob: inputSpongeBlob,
|
|
@@ -403,19 +414,6 @@ export async function getRootTreeSiblingPath<TID extends MerkleTreeId>(treeId: T
|
|
|
403
414
|
return padArrayEnd(path.toFields(), Fr.ZERO, getTreeHeight(treeId));
|
|
404
415
|
}
|
|
405
416
|
|
|
406
|
-
export const getConstantRollupData = runInSpan(
|
|
407
|
-
'BlockBuilderHelpers',
|
|
408
|
-
'getConstantRollupData',
|
|
409
|
-
async (_span, globalVariables: GlobalVariables, db: MerkleTreeReadOperations): Promise<ConstantRollupData> => {
|
|
410
|
-
return ConstantRollupData.from({
|
|
411
|
-
vkTreeRoot: getVKTreeRoot(),
|
|
412
|
-
protocolContractTreeRoot,
|
|
413
|
-
lastArchive: await getTreeSnapshot(MerkleTreeId.ARCHIVE, db),
|
|
414
|
-
globalVariables,
|
|
415
|
-
});
|
|
416
|
-
},
|
|
417
|
-
);
|
|
418
|
-
|
|
419
417
|
export async function getTreeSnapshot(id: MerkleTreeId, db: MerkleTreeReadOperations): Promise<AppendOnlyTreeSnapshot> {
|
|
420
418
|
const treeInfo = await db.getTreeInfo(id);
|
|
421
419
|
return new AppendOnlyTreeSnapshot(Fr.fromBuffer(treeInfo.root), Number(treeInfo.size));
|
|
@@ -536,17 +534,17 @@ function validateSimulatedTree(
|
|
|
536
534
|
}
|
|
537
535
|
|
|
538
536
|
export function validateTx(tx: ProcessedTx) {
|
|
539
|
-
const txHeader = tx.constants.historicalHeader;
|
|
540
|
-
if (txHeader.state.l1ToL2MessageTree.
|
|
537
|
+
const txHeader = tx.data.constants.historicalHeader;
|
|
538
|
+
if (txHeader.state.l1ToL2MessageTree.isEmpty()) {
|
|
541
539
|
throw new Error(`Empty L1 to L2 messages tree in tx: ${toFriendlyJSON(tx)}`);
|
|
542
540
|
}
|
|
543
|
-
if (txHeader.state.partial.noteHashTree.
|
|
541
|
+
if (txHeader.state.partial.noteHashTree.isEmpty()) {
|
|
544
542
|
throw new Error(`Empty note hash tree in tx: ${toFriendlyJSON(tx)}`);
|
|
545
543
|
}
|
|
546
|
-
if (txHeader.state.partial.nullifierTree.
|
|
544
|
+
if (txHeader.state.partial.nullifierTree.isEmpty()) {
|
|
547
545
|
throw new Error(`Empty nullifier tree in tx: ${toFriendlyJSON(tx)}`);
|
|
548
546
|
}
|
|
549
|
-
if (txHeader.state.partial.publicDataTree.
|
|
547
|
+
if (txHeader.state.partial.publicDataTree.isEmpty()) {
|
|
550
548
|
throw new Error(`Empty public data tree in tx: ${toFriendlyJSON(tx)}`);
|
|
551
549
|
}
|
|
552
550
|
}
|
|
@@ -19,11 +19,11 @@ import type { PublicInputsAndRecursiveProof } from '@aztec/stdlib/interfaces/ser
|
|
|
19
19
|
import { type ParityPublicInputs, RootParityInput, RootParityInputs } from '@aztec/stdlib/parity';
|
|
20
20
|
import {
|
|
21
21
|
type BaseOrMergeRollupPublicInputs,
|
|
22
|
+
BlockConstantData,
|
|
22
23
|
type BlockRootOrBlockMergePublicInputs,
|
|
23
24
|
BlockRootRollupBlobData,
|
|
24
25
|
BlockRootRollupData,
|
|
25
26
|
BlockRootRollupInputs,
|
|
26
|
-
ConstantRollupData,
|
|
27
27
|
EmptyBlockRootRollupInputs,
|
|
28
28
|
MergeRollupInputs,
|
|
29
29
|
PreviousRollupData,
|
|
@@ -64,6 +64,7 @@ export class BlockProvingState {
|
|
|
64
64
|
public readonly index: number,
|
|
65
65
|
public readonly globalVariables: GlobalVariables,
|
|
66
66
|
public readonly newL1ToL2Messages: Fr[],
|
|
67
|
+
public readonly l1ToL2MessageTreeSnapshot: AppendOnlyTreeSnapshot,
|
|
67
68
|
private readonly l1ToL2MessageSubtreeSiblingPath: Tuple<Fr, typeof L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH>,
|
|
68
69
|
private readonly l1ToL2MessageTreeSnapshotAfterInsertion: AppendOnlyTreeSnapshot,
|
|
69
70
|
private readonly lastArchiveSnapshot: AppendOnlyTreeSnapshot,
|
|
@@ -183,8 +184,9 @@ export class BlockProvingState {
|
|
|
183
184
|
const data = this.#getBlockRootRollupData(proverId);
|
|
184
185
|
|
|
185
186
|
if (this.totalNumTxs === 0) {
|
|
186
|
-
const constants =
|
|
187
|
+
const constants = BlockConstantData.from({
|
|
187
188
|
lastArchive: this.lastArchiveSnapshot,
|
|
189
|
+
lastL1ToL2: this.l1ToL2MessageTreeSnapshot,
|
|
188
190
|
globalVariables: this.globalVariables,
|
|
189
191
|
vkTreeRoot: getVKTreeRoot(),
|
|
190
192
|
protocolContractTreeRoot,
|
|
@@ -225,21 +227,23 @@ export class BlockProvingState {
|
|
|
225
227
|
throw new Error('Root parity is not ready.');
|
|
226
228
|
}
|
|
227
229
|
|
|
228
|
-
// Use the new block header and
|
|
229
|
-
const
|
|
230
|
-
const
|
|
230
|
+
// Use the new block header, archive and l1toL2 of the current block as the previous header, archive and l1toL2 of the next padding block.
|
|
231
|
+
const previousBlockHeader = await this.buildHeaderFromProvingOutputs();
|
|
232
|
+
const lastArchive = this.blockRootProvingOutput!.inputs.newArchive;
|
|
233
|
+
const lastL1ToL2 = this.l1ToL2MessageTreeSnapshotAfterInsertion;
|
|
231
234
|
|
|
232
235
|
const data = BlockRootRollupData.from({
|
|
233
236
|
l1ToL2Roots: this.#getRootParityData(this.rootParityProvingOutput!),
|
|
234
237
|
l1ToL2MessageSubtreeSiblingPath: this.l1ToL2MessageSubtreeSiblingPath,
|
|
235
238
|
previousArchiveSiblingPath: this.lastArchiveSiblingPath,
|
|
236
239
|
newArchiveSiblingPath: this.newArchiveSiblingPath,
|
|
237
|
-
previousBlockHeader
|
|
240
|
+
previousBlockHeader,
|
|
238
241
|
proverId,
|
|
239
242
|
});
|
|
240
243
|
|
|
241
|
-
const constants =
|
|
242
|
-
lastArchive
|
|
244
|
+
const constants = BlockConstantData.from({
|
|
245
|
+
lastArchive,
|
|
246
|
+
lastL1ToL2,
|
|
243
247
|
globalVariables: this.globalVariables,
|
|
244
248
|
vkTreeRoot: getVKTreeRoot(),
|
|
245
249
|
protocolContractTreeRoot,
|
|
@@ -70,6 +70,7 @@ export class EpochProvingState {
|
|
|
70
70
|
public startNewBlock(
|
|
71
71
|
globalVariables: GlobalVariables,
|
|
72
72
|
l1ToL2Messages: Fr[],
|
|
73
|
+
l1ToL2MessageTreeSnapshot: AppendOnlyTreeSnapshot,
|
|
73
74
|
l1ToL2MessageSubtreeSiblingPath: Tuple<Fr, typeof L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH>,
|
|
74
75
|
l1ToL2MessageTreeSnapshotAfterInsertion: AppendOnlyTreeSnapshot,
|
|
75
76
|
lastArchiveSnapshot: AppendOnlyTreeSnapshot,
|
|
@@ -82,6 +83,7 @@ export class EpochProvingState {
|
|
|
82
83
|
index,
|
|
83
84
|
globalVariables,
|
|
84
85
|
l1ToL2Messages,
|
|
86
|
+
l1ToL2MessageTreeSnapshot,
|
|
85
87
|
l1ToL2MessageSubtreeSiblingPath,
|
|
86
88
|
l1ToL2MessageTreeSnapshotAfterInsertion,
|
|
87
89
|
lastArchiveSnapshot,
|
|
@@ -156,7 +158,7 @@ export class EpochProvingState {
|
|
|
156
158
|
return new BlockMergeRollupInputs([this.#getPreviousRollupData(left), this.#getPreviousRollupData(right)]);
|
|
157
159
|
}
|
|
158
160
|
|
|
159
|
-
public getRootRollupInputs(
|
|
161
|
+
public getRootRollupInputs() {
|
|
160
162
|
const [left, right] = this.#getChildProofsForRoot();
|
|
161
163
|
if (!left || !right) {
|
|
162
164
|
throw new Error('At lease one child is not ready.');
|
|
@@ -164,7 +166,6 @@ export class EpochProvingState {
|
|
|
164
166
|
|
|
165
167
|
return RootRollupInputs.from({
|
|
166
168
|
previousRollupData: [this.#getPreviousRollupData(left), this.#getPreviousRollupData(right)],
|
|
167
|
-
proverId,
|
|
168
169
|
});
|
|
169
170
|
}
|
|
170
171
|
|
|
@@ -145,8 +145,12 @@ export class ProvingOrchestrator implements EpochProver {
|
|
|
145
145
|
this.dbs.set(globalVariables.blockNumber.toNumber(), db);
|
|
146
146
|
|
|
147
147
|
// we start the block by enqueueing all of the base parity circuits
|
|
148
|
-
const {
|
|
149
|
-
|
|
148
|
+
const {
|
|
149
|
+
l1ToL2MessageTreeSnapshot,
|
|
150
|
+
l1ToL2MessageSubtreeSiblingPath,
|
|
151
|
+
l1ToL2MessageTreeSnapshotAfterInsertion,
|
|
152
|
+
baseParityInputs,
|
|
153
|
+
} = await this.prepareBaseParityInputs(l1ToL2Messages, db);
|
|
150
154
|
|
|
151
155
|
// Get archive snapshot before this block lands
|
|
152
156
|
const lastArchive = await getTreeSnapshot(MerkleTreeId.ARCHIVE, db);
|
|
@@ -156,6 +160,7 @@ export class ProvingOrchestrator implements EpochProver {
|
|
|
156
160
|
const blockProvingState = this.provingState!.startNewBlock(
|
|
157
161
|
globalVariables,
|
|
158
162
|
l1ToL2Messages,
|
|
163
|
+
l1ToL2MessageTreeSnapshot,
|
|
159
164
|
l1ToL2MessageSubtreeSiblingPath,
|
|
160
165
|
l1ToL2MessageTreeSnapshotAfterInsertion,
|
|
161
166
|
lastArchive,
|
|
@@ -184,7 +189,7 @@ export class ProvingOrchestrator implements EpochProver {
|
|
|
184
189
|
logger.warn(`Provided no txs to orchestrator addTxs.`);
|
|
185
190
|
return;
|
|
186
191
|
}
|
|
187
|
-
const blockNumber = txs[0].
|
|
192
|
+
const blockNumber = txs[0].globalVariables.blockNumber.toNumber();
|
|
188
193
|
const provingState = this.provingState?.getBlockProvingStateByBlockNumber(blockNumber!);
|
|
189
194
|
if (!provingState) {
|
|
190
195
|
throw new Error(`Block proving state for ${blockNumber} not found`);
|
|
@@ -455,6 +460,8 @@ export class ProvingOrchestrator implements EpochProver {
|
|
|
455
460
|
BaseParityInputs.fromSlice(l1ToL2MessagesPadded, i, getVKTreeRoot()),
|
|
456
461
|
);
|
|
457
462
|
|
|
463
|
+
const l1ToL2MessageTreeSnapshot = await getTreeSnapshot(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, db);
|
|
464
|
+
|
|
458
465
|
const l1ToL2MessageSubtreeSiblingPath = assertLength(
|
|
459
466
|
await getSubtreeSiblingPath(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, L1_TO_L2_MSG_SUBTREE_HEIGHT, db),
|
|
460
467
|
L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH,
|
|
@@ -465,6 +472,7 @@ export class ProvingOrchestrator implements EpochProver {
|
|
|
465
472
|
const l1ToL2MessageTreeSnapshotAfterInsertion = await getTreeSnapshot(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, db);
|
|
466
473
|
|
|
467
474
|
return {
|
|
475
|
+
l1ToL2MessageTreeSnapshot,
|
|
468
476
|
l1ToL2MessageSubtreeSiblingPath,
|
|
469
477
|
l1ToL2MessageTreeSnapshotAfterInsertion,
|
|
470
478
|
baseParityInputs,
|
|
@@ -489,7 +497,13 @@ export class ProvingOrchestrator implements EpochProver {
|
|
|
489
497
|
// We build the base rollup inputs using a mock proof and verification key.
|
|
490
498
|
// These will be overwritten later once we have proven the tube circuit and any public kernels
|
|
491
499
|
const [ms, hints] = await elapsed(
|
|
492
|
-
insertSideEffectsAndBuildBaseRollupHints(
|
|
500
|
+
insertSideEffectsAndBuildBaseRollupHints(
|
|
501
|
+
tx,
|
|
502
|
+
provingState.globalVariables,
|
|
503
|
+
provingState.l1ToL2MessageTreeSnapshot,
|
|
504
|
+
db,
|
|
505
|
+
provingState.spongeBlobState,
|
|
506
|
+
),
|
|
493
507
|
);
|
|
494
508
|
|
|
495
509
|
this.metrics.recordBaseRollupInputs(ms);
|
|
@@ -825,7 +839,7 @@ export class ProvingOrchestrator implements EpochProver {
|
|
|
825
839
|
|
|
826
840
|
logger.debug(`Preparing root rollup`);
|
|
827
841
|
|
|
828
|
-
const inputs = provingState.getRootRollupInputs(
|
|
842
|
+
const inputs = provingState.getRootRollupInputs();
|
|
829
843
|
|
|
830
844
|
this.deferredProving(
|
|
831
845
|
provingState,
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { createSafeJsonRpcClient } from '@aztec/foundation/json-rpc/client';
|
|
2
|
-
import type { SafeJsonRpcServer } from '@aztec/foundation/json-rpc/server';
|
|
3
2
|
import {
|
|
4
3
|
type GetProvingJobResponse,
|
|
5
4
|
ProofUri,
|
|
@@ -13,7 +12,7 @@ import {
|
|
|
13
12
|
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
14
13
|
import { type ApiSchemaFor, optional } from '@aztec/stdlib/schemas';
|
|
15
14
|
import { type ComponentsVersions, getVersioningResponseHandler } from '@aztec/stdlib/versioning';
|
|
16
|
-
import {
|
|
15
|
+
import { makeTracedFetch } from '@aztec/telemetry-client';
|
|
17
16
|
|
|
18
17
|
import { z } from 'zod';
|
|
19
18
|
|
|
@@ -54,10 +53,6 @@ export const ProvingJobBrokerSchema: ApiSchemaFor<ProvingJobBroker> = {
|
|
|
54
53
|
...ProvingJobProducerSchema,
|
|
55
54
|
};
|
|
56
55
|
|
|
57
|
-
export function createProvingBrokerServer(broker: ProvingJobBroker): SafeJsonRpcServer {
|
|
58
|
-
return createTracedJsonRpcServer(broker, ProvingJobBrokerSchema);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
56
|
export function createProvingJobBrokerClient(
|
|
62
57
|
url: string,
|
|
63
58
|
versions: Partial<ComponentsVersions>,
|