@aztec/prover-client 0.87.7 → 1.0.0-nightly.20250604
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/index.d.ts +2 -0
- package/dest/block-factory/index.d.ts.map +1 -0
- package/dest/block-factory/light.d.ts +36 -0
- package/dest/block-factory/light.d.ts.map +1 -0
- package/dest/{block_builder → block-factory}/light.js +29 -28
- package/dest/mocks/test_context.js +2 -2
- package/dest/orchestrator/block-building-helpers.d.ts +1 -1
- package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
- package/dest/orchestrator/block-building-helpers.js +4 -4
- package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/block-proving-state.js +5 -3
- package/dest/orchestrator/epoch-proving-state.d.ts +1 -1
- package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/epoch-proving-state.js +4 -3
- package/dest/orchestrator/orchestrator.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator.js +16 -11
- package/dest/orchestrator/tx-proving-state.d.ts +2 -2
- package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/tx-proving-state.js +3 -3
- package/dest/proving_broker/broker_prover_facade.d.ts +3 -2
- package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
- package/dest/proving_broker/broker_prover_facade.js +9 -2
- package/dest/proving_broker/proving_job_controller.d.ts.map +1 -1
- package/dest/proving_broker/proving_job_controller.js +2 -1
- package/dest/test/mock_prover.d.ts +2 -1
- package/dest/test/mock_prover.d.ts.map +1 -1
- package/dest/test/mock_prover.js +3 -3
- package/package.json +16 -16
- package/src/block-factory/index.ts +1 -0
- package/src/{block_builder → block-factory}/light.ts +31 -26
- package/src/mocks/test_context.ts +2 -2
- package/src/orchestrator/block-building-helpers.ts +5 -5
- package/src/orchestrator/block-proving-state.ts +4 -8
- package/src/orchestrator/epoch-proving-state.ts +9 -13
- package/src/orchestrator/orchestrator.ts +16 -14
- package/src/orchestrator/tx-proving-state.ts +11 -6
- package/src/proving_broker/broker_prover_facade.ts +12 -3
- package/src/proving_broker/proving_job_controller.ts +2 -1
- package/src/test/mock_prover.ts +10 -5
- package/dest/block_builder/index.d.ts +0 -6
- package/dest/block_builder/index.d.ts.map +0 -1
- package/dest/block_builder/light.d.ts +0 -33
- package/dest/block_builder/light.d.ts.map +0 -1
- package/src/block_builder/index.ts +0 -6
- /package/dest/{block_builder → block-factory}/index.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/block-factory/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
+
import { L2Block } from '@aztec/stdlib/block';
|
|
3
|
+
import type { IBlockFactory, MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
|
|
4
|
+
import { type GlobalVariables, type ProcessedTx } from '@aztec/stdlib/tx';
|
|
5
|
+
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
6
|
+
/**
|
|
7
|
+
* Builds a block and its header from a set of processed tx without running any circuits.
|
|
8
|
+
*
|
|
9
|
+
* NOTE: the onus is ON THE CALLER to update the db that is passed in with the notes hashes, nullifiers, etc
|
|
10
|
+
* PRIOR to calling `buildBlock`.
|
|
11
|
+
*
|
|
12
|
+
* Why? Because if you are, e.g. building a block in practice from TxObjects, you are using the
|
|
13
|
+
* PublicProcessor which will do this for you as it processes transactions.
|
|
14
|
+
*
|
|
15
|
+
* If you haven't already inserted the side effects, e.g. because you are in a testing context, you can use the helper
|
|
16
|
+
* function `buildBlockWithCleanDB`, which calls `insertSideEffectsAndBuildBaseRollupHints` for you.
|
|
17
|
+
*/
|
|
18
|
+
export declare class LightweightBlockFactory implements IBlockFactory {
|
|
19
|
+
private db;
|
|
20
|
+
private telemetry;
|
|
21
|
+
private globalVariables?;
|
|
22
|
+
private l1ToL2Messages?;
|
|
23
|
+
private txs;
|
|
24
|
+
private readonly logger;
|
|
25
|
+
constructor(db: MerkleTreeWriteOperations, telemetry?: TelemetryClient);
|
|
26
|
+
startNewBlock(globalVariables: GlobalVariables, l1ToL2Messages: Fr[]): Promise<void>;
|
|
27
|
+
addTxs(txs: ProcessedTx[]): Promise<void>;
|
|
28
|
+
setBlockCompleted(): Promise<L2Block>;
|
|
29
|
+
private buildBlock;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Inserts the processed transactions into the DB, then creates a block.
|
|
33
|
+
* @param db - A db fork to use for block building which WILL BE MODIFIED.
|
|
34
|
+
*/
|
|
35
|
+
export declare function buildBlockWithCleanDB(txs: ProcessedTx[], globalVariables: GlobalVariables, l1ToL2Messages: Fr[], db: MerkleTreeWriteOperations, telemetry?: TelemetryClient): Promise<L2Block>;
|
|
36
|
+
//# sourceMappingURL=light.d.ts.map
|
|
@@ -0,0 +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,oBAUlD"}
|
|
@@ -7,13 +7,21 @@ import { L2Block } from '@aztec/stdlib/block';
|
|
|
7
7
|
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
8
8
|
import { toNumBlobFields } from '@aztec/stdlib/tx';
|
|
9
9
|
import { getTelemetryClient } from '@aztec/telemetry-client';
|
|
10
|
-
import {
|
|
10
|
+
import { buildHeaderAndBodyFromTxs, getTreeSnapshot, insertSideEffectsAndBuildBaseRollupHints } from '../orchestrator/block-building-helpers.js';
|
|
11
11
|
/**
|
|
12
12
|
* Builds a block and its header from a set of processed tx without running any circuits.
|
|
13
|
-
|
|
13
|
+
*
|
|
14
|
+
* NOTE: the onus is ON THE CALLER to update the db that is passed in with the notes hashes, nullifiers, etc
|
|
15
|
+
* PRIOR to calling `buildBlock`.
|
|
16
|
+
*
|
|
17
|
+
* Why? Because if you are, e.g. building a block in practice from TxObjects, you are using the
|
|
18
|
+
* PublicProcessor which will do this for you as it processes transactions.
|
|
19
|
+
*
|
|
20
|
+
* If you haven't already inserted the side effects, e.g. because you are in a testing context, you can use the helper
|
|
21
|
+
* function `buildBlockWithCleanDB`, which calls `insertSideEffectsAndBuildBaseRollupHints` for you.
|
|
22
|
+
*/ export class LightweightBlockFactory {
|
|
14
23
|
db;
|
|
15
24
|
telemetry;
|
|
16
|
-
spongeBlobState;
|
|
17
25
|
globalVariables;
|
|
18
26
|
l1ToL2Messages;
|
|
19
27
|
txs;
|
|
@@ -21,7 +29,6 @@ import { buildBaseRollupHints, buildHeaderAndBodyFromTxs, getTreeSnapshot } from
|
|
|
21
29
|
constructor(db, telemetry = getTelemetryClient()){
|
|
22
30
|
this.db = db;
|
|
23
31
|
this.telemetry = telemetry;
|
|
24
|
-
this.txs = [];
|
|
25
32
|
this.logger = createLogger('prover-client:block_builder');
|
|
26
33
|
}
|
|
27
34
|
async startNewBlock(globalVariables, l1ToL2Messages) {
|
|
@@ -31,26 +38,25 @@ import { buildBaseRollupHints, buildHeaderAndBodyFromTxs, getTreeSnapshot } from
|
|
|
31
38
|
});
|
|
32
39
|
this.globalVariables = globalVariables;
|
|
33
40
|
this.l1ToL2Messages = padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
|
|
34
|
-
this.txs =
|
|
35
|
-
this.spongeBlobState = undefined;
|
|
41
|
+
this.txs = undefined;
|
|
36
42
|
// Update L1 to L2 tree
|
|
37
43
|
await this.db.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, this.l1ToL2Messages);
|
|
38
44
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
this.txs.push(
|
|
46
|
-
await buildBaseRollupHints(tx, this.globalVariables, this.db, this.spongeBlobState);
|
|
45
|
+
addTxs(txs) {
|
|
46
|
+
// Most times, `addTxs` is only called once per block.
|
|
47
|
+
// So avoid copies.
|
|
48
|
+
if (this.txs === undefined) {
|
|
49
|
+
this.txs = txs;
|
|
50
|
+
} else {
|
|
51
|
+
this.txs.push(...txs);
|
|
47
52
|
}
|
|
53
|
+
return Promise.resolve();
|
|
48
54
|
}
|
|
49
55
|
setBlockCompleted() {
|
|
50
56
|
return this.buildBlock();
|
|
51
57
|
}
|
|
52
58
|
async buildBlock() {
|
|
53
|
-
const { header, body } = await buildHeaderAndBodyFromTxs(this.txs, this.globalVariables, this.l1ToL2Messages, this.db);
|
|
59
|
+
const { header, body } = await buildHeaderAndBodyFromTxs(this.txs ?? [], this.globalVariables, this.l1ToL2Messages, this.db);
|
|
54
60
|
await this.db.updateArchive(header);
|
|
55
61
|
const newArchive = await getTreeSnapshot(MerkleTreeId.ARCHIVE, this.db);
|
|
56
62
|
const block = new L2Block(newArchive, header, body);
|
|
@@ -62,20 +68,15 @@ import { buildBaseRollupHints, buildHeaderAndBodyFromTxs, getTreeSnapshot } from
|
|
|
62
68
|
return block;
|
|
63
69
|
}
|
|
64
70
|
}
|
|
65
|
-
export class LightweightBlockBuilderFactory {
|
|
66
|
-
telemetry;
|
|
67
|
-
constructor(telemetry = getTelemetryClient()){
|
|
68
|
-
this.telemetry = telemetry;
|
|
69
|
-
}
|
|
70
|
-
create(db) {
|
|
71
|
-
return new LightweightBlockBuilder(db, this.telemetry);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
71
|
/**
|
|
75
|
-
*
|
|
76
|
-
* @param db - A db fork to use for block building.
|
|
77
|
-
*/ export async function
|
|
78
|
-
const
|
|
72
|
+
* Inserts the processed transactions into the DB, then creates a block.
|
|
73
|
+
* @param db - A db fork to use for block building which WILL BE MODIFIED.
|
|
74
|
+
*/ export async function buildBlockWithCleanDB(txs, globalVariables, l1ToL2Messages, db, telemetry = getTelemetryClient()) {
|
|
75
|
+
const spongeBlobState = SpongeBlob.init(toNumBlobFields(txs));
|
|
76
|
+
for (const tx of txs){
|
|
77
|
+
await insertSideEffectsAndBuildBaseRollupHints(tx, globalVariables, db, spongeBlobState);
|
|
78
|
+
}
|
|
79
|
+
const builder = new LightweightBlockFactory(db, telemetry);
|
|
79
80
|
await builder.startNewBlock(globalVariables, l1ToL2Messages);
|
|
80
81
|
await builder.addTxs(txs);
|
|
81
82
|
return await builder.setBlockCompleted();
|
|
@@ -16,7 +16,7 @@ import { promises as fs } from 'fs';
|
|
|
16
16
|
// TODO(#12613) This means of sharing test code is not ideal.
|
|
17
17
|
// eslint-disable-next-line import/no-relative-packages
|
|
18
18
|
import { TestCircuitProver } from '../../../bb-prover/src/test/test_circuit_prover.js';
|
|
19
|
-
import {
|
|
19
|
+
import { buildBlockWithCleanDB } from '../block-factory/light.js';
|
|
20
20
|
import { ProvingOrchestrator } from '../orchestrator/index.js';
|
|
21
21
|
import { BrokerCircuitProverFacade } from '../proving_broker/broker_prover_facade.js';
|
|
22
22
|
import { TestBroker } from '../test/mock_prover.js';
|
|
@@ -151,7 +151,7 @@ export class TestContext {
|
|
|
151
151
|
...makeProcessedTxOpts(i)
|
|
152
152
|
}));
|
|
153
153
|
await this.setTreeRoots(txs);
|
|
154
|
-
const block = await
|
|
154
|
+
const block = await buildBlockWithCleanDB(txs, globalVariables, msgs, db);
|
|
155
155
|
this.headers.set(blockNum, block.header);
|
|
156
156
|
await this.worldState.handleL2BlockAndMessages(block, msgs);
|
|
157
157
|
return {
|
|
@@ -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
|
|
21
|
+
export declare const insertSideEffectsAndBuildBaseRollupHints: (tx: ProcessedTx, globalVariables: GlobalVariables, 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[];
|
|
@@ -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,EAClC,KAAK,iCAAiC,EACtC,kBAAkB,EAClB,sBAAsB,EAEtB,qBAAqB,EACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,sBAAsB,EACtB,YAAY,EAKb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,WAAW,EAEX,KAAK,eAAe,EACpB,qBAAqB,EACrB,KAAK,WAAW,EAChB,cAAc,EACd,QAAQ,EACT,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAEnE;;GAEG;AACH,KAAK,aAAa,GAAG,cAAc,GAAG,cAAc,GAAG,eAAe,GAAG,gBAAgB,CAAC;AAC1F;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,mBAAmB,GAAG,SAAS,CAAC;AAGxE,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"block-building-helpers.d.ts","sourceRoot":"","sources":["../../src/orchestrator/block-building-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,7 @@ import { AppendOnlyTreeSnapshot, MerkleTreeId, NullifierLeafPreimage, PublicData
|
|
|
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
|
|
20
|
+
export const insertSideEffectsAndBuildBaseRollupHints = runInSpan('BlockBuilderHelpers', 'buildBaseRollupHints', async (span, tx, globalVariables, db, startSpongeBlob)=>{
|
|
21
21
|
span.setAttribute(Attributes.TX_HASH, tx.hash.toString());
|
|
22
22
|
// Get trees info before any changes hit
|
|
23
23
|
const constants = await getConstantRollupData(globalVariables, db);
|
|
@@ -47,14 +47,14 @@ export const buildBaseRollupHints = runInSpan('BlockBuilderHelpers', 'buildBaseR
|
|
|
47
47
|
// Append new data to startSpongeBlob
|
|
48
48
|
const inputSpongeBlob = startSpongeBlob.clone();
|
|
49
49
|
await startSpongeBlob.absorb(tx.txEffect.toBlobFields());
|
|
50
|
-
const
|
|
50
|
+
const contractClassLogsFields = makeTuple(MAX_CONTRACT_CLASS_LOGS_PER_TX, (i)=>tx.txEffect.contractClassLogs[i]?.fields || ContractClassLogFields.empty());
|
|
51
51
|
if (tx.avmProvingRequest) {
|
|
52
52
|
const blockHash = await tx.constants.historicalHeader.hash();
|
|
53
53
|
const archiveRootMembershipWitness = await getMembershipWitnessFor(blockHash, MerkleTreeId.ARCHIVE, ARCHIVE_HEIGHT, db);
|
|
54
54
|
return PublicBaseRollupHints.from({
|
|
55
55
|
startSpongeBlob: inputSpongeBlob,
|
|
56
56
|
archiveRootMembershipWitness,
|
|
57
|
-
|
|
57
|
+
contractClassLogsFields,
|
|
58
58
|
constants
|
|
59
59
|
});
|
|
60
60
|
} else {
|
|
@@ -83,7 +83,7 @@ export const buildBaseRollupHints = runInSpan('BlockBuilderHelpers', 'buildBaseR
|
|
|
83
83
|
stateDiffHints,
|
|
84
84
|
feePayerFeeJuiceBalanceReadHint,
|
|
85
85
|
archiveRootMembershipWitness,
|
|
86
|
-
|
|
86
|
+
contractClassLogsFields,
|
|
87
87
|
constants
|
|
88
88
|
});
|
|
89
89
|
}
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"block-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/block-proving-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { SpongeBlob } from '@aztec/blob-lib';
|
|
2
|
-
import { BLOBS_PER_BLOCK, FIELDS_PER_BLOB, NUM_BASE_PARITY_PER_ROOT_PARITY
|
|
2
|
+
import { BLOBS_PER_BLOCK, FIELDS_PER_BLOB, NUM_BASE_PARITY_PER_ROOT_PARITY } from '@aztec/constants';
|
|
3
3
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
4
4
|
import { Fr } from '@aztec/foundation/fields';
|
|
5
|
-
import {
|
|
5
|
+
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
9
|
import { BlockRootRollupBlobData, BlockRootRollupData, BlockRootRollupInputs, ConstantRollupData, EmptyBlockRootRollupInputs, MergeRollupInputs, PreviousRollupData, SingleTxBlockRootRollupInputs } from '@aztec/stdlib/rollup';
|
|
10
10
|
import { StateReference } from '@aztec/stdlib/tx';
|
|
11
|
+
import { VkData } from '@aztec/stdlib/vks';
|
|
11
12
|
import { buildBlobHints, buildHeaderFromCircuitOutputs } from './block-building-helpers.js';
|
|
12
13
|
/**
|
|
13
14
|
* The current state of the proving schedule for a given block. Managed by ProvingState.
|
|
@@ -265,7 +266,8 @@ import { buildBlobHints, buildHeaderFromCircuitOutputs } from './block-building-
|
|
|
265
266
|
}
|
|
266
267
|
#getPreviousRollupData({ inputs, proof, verificationKey }) {
|
|
267
268
|
const leafIndex = getVKIndex(verificationKey.keyAsFields);
|
|
268
|
-
|
|
269
|
+
const vkData = new VkData(verificationKey, leafIndex, getVKSiblingPath(leafIndex));
|
|
270
|
+
return new PreviousRollupData(inputs, proof, vkData);
|
|
269
271
|
}
|
|
270
272
|
#getRootParityData({ inputs, proof, verificationKey }) {
|
|
271
273
|
return new RootParityInput(proof, verificationKey.keyAsFields, getVKSiblingPath(getVKIndex(verificationKey)), inputs);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { ARCHIVE_HEIGHT, L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH } from '@aztec/constants';
|
|
2
2
|
import type { Fr } from '@aztec/foundation/fields';
|
|
3
3
|
import type { Tuple } from '@aztec/foundation/serialize';
|
|
4
4
|
import { type TreeNodeLocation } from '@aztec/foundation/trees';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"epoch-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/epoch-proving-state.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
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;IAsBb,WAAW;IAQX,iBAAiB;IAIjB,uBAAuB,CAC5B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,6BAA6B,CAClC,iCAAiC,EACjC,OAAO,yCAAyC,CACjD,GACA,gBAAgB;IAIZ,wBAAwB,CAC7B,QAAQ,EAAE,gBAAgB,EAC1B,KAAK,EAAE,6BAA6B,CAClC,iCAAiC,EACjC,OAAO,yCAAyC,CACjD;IAKI,kBAAkB,CAAC,KAAK,EAAE,6BAA6B,CAAC,sBAAsB,CAAC;IAI/E,wBAAwB,CAC7B,KAAK,EAAE,6BAA6B,CAClC,iCAAiC,EACjC,OAAO,yCAAyC,CACjD;IAKI,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB;IAI5C,yBAAyB,CAAC,aAAa,EAAE,gBAAgB;IASzD,mBAAmB,CAAC,QAAQ,EAAE,EAAE;IAYhC,yBAAyB,CAAC,QAAQ,EAAE,EAAE;IAStC,iCAAiC,CAAC,WAAW,EAAE,MAAM;IAIrD,mBAAmB,IAAI;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,YAAY,EAAE,sBAAsB,CAAA;KAAE;IAW7E,oBAAoB,CAAC,QAAQ,EAAE,gBAAgB;IAK/C,oBAAoB;IAMpB,MAAM;IAMN,MAAM,CAAC,MAAM,EAAE,MAAM;IAUrB,OAAO,CAAC,MAAM,EAAE,aAAa;CA4BrC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { MembershipWitness, UnbalancedTreeStore } from '@aztec/foundation/trees';
|
|
1
|
+
import { UnbalancedTreeStore } from '@aztec/foundation/trees';
|
|
3
2
|
import { getVKIndex, getVKSiblingPath } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
4
3
|
import { BlockMergeRollupInputs, PreviousRollupBlockData, RootRollupInputs } from '@aztec/stdlib/rollup';
|
|
4
|
+
import { VkData } from '@aztec/stdlib/vks';
|
|
5
5
|
import { BlockProvingState } from './block-proving-state.js';
|
|
6
6
|
var PROVING_STATE_LIFECYCLE = /*#__PURE__*/ function(PROVING_STATE_LIFECYCLE) {
|
|
7
7
|
PROVING_STATE_LIFECYCLE[PROVING_STATE_LIFECYCLE["PROVING_STATE_CREATED"] = 0] = "PROVING_STATE_CREATED";
|
|
@@ -158,6 +158,7 @@ var PROVING_STATE_LIFECYCLE = /*#__PURE__*/ function(PROVING_STATE_LIFECYCLE) {
|
|
|
158
158
|
}
|
|
159
159
|
#getPreviousRollupData({ inputs, proof, verificationKey }) {
|
|
160
160
|
const leafIndex = getVKIndex(verificationKey.keyAsFields);
|
|
161
|
-
|
|
161
|
+
const vkData = new VkData(verificationKey, leafIndex, getVKSiblingPath(leafIndex));
|
|
162
|
+
return new PreviousRollupBlockData(inputs, proof, vkData);
|
|
162
163
|
}
|
|
163
164
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/orchestrator.ts"],"names":[],"mappings":"
|
|
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;IA2CnH;;;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;YA+BvB,uBAAuB;IAmCrC,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"}
|
|
@@ -4,7 +4,7 @@ function _ts_decorate(decorators, target, key, desc) {
|
|
|
4
4
|
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
}
|
|
7
|
-
import {
|
|
7
|
+
import { L1_TO_L2_MSG_SUBTREE_HEIGHT, L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, NUM_BASE_PARITY_PER_ROOT_PARITY } from '@aztec/constants';
|
|
8
8
|
import { padArrayEnd, times } from '@aztec/foundation/collection';
|
|
9
9
|
import { AbortError } from '@aztec/foundation/error';
|
|
10
10
|
import { Fr } from '@aztec/foundation/fields';
|
|
@@ -14,16 +14,15 @@ import { assertLength } from '@aztec/foundation/serialize';
|
|
|
14
14
|
import { pushTestData } from '@aztec/foundation/testing';
|
|
15
15
|
import { elapsed } from '@aztec/foundation/timer';
|
|
16
16
|
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
17
|
+
import { readAvmMinimalPublicTxInputsFromFile } from '@aztec/simulator/public/fixtures';
|
|
17
18
|
import { L2Block } from '@aztec/stdlib/block';
|
|
18
19
|
import { BaseParityInputs } from '@aztec/stdlib/parity';
|
|
19
|
-
import { makeEmptyRecursiveProof } from '@aztec/stdlib/proofs';
|
|
20
20
|
import { EmptyBlockRootRollupInputs, PrivateBaseRollupInputs, SingleTxBlockRootRollupInputs, TubeInputs } from '@aztec/stdlib/rollup';
|
|
21
21
|
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
22
22
|
import { toNumBlobFields } from '@aztec/stdlib/tx';
|
|
23
|
-
import { VerificationKeyData } from '@aztec/stdlib/vks';
|
|
24
23
|
import { Attributes, getTelemetryClient, trackSpan, wrapCallbackInSpan } from '@aztec/telemetry-client';
|
|
25
24
|
import { inspect } from 'util';
|
|
26
|
-
import {
|
|
25
|
+
import { buildHeaderAndBodyFromTxs, getLastSiblingPath, getRootTreeSiblingPath, getSubtreeSiblingPath, getTreeSnapshot, insertSideEffectsAndBuildBaseRollupHints, validatePartialState, validateTx } from './block-building-helpers.js';
|
|
27
26
|
import { EpochProvingState } from './epoch-proving-state.js';
|
|
28
27
|
import { ProvingOrchestratorMetrics } from './orchestrator_metrics.js';
|
|
29
28
|
import { TxProvingState } from './tx-proving-state.js';
|
|
@@ -334,7 +333,7 @@ const logger = createLogger('prover-client:orchestrator');
|
|
|
334
333
|
const db = this.dbs.get(provingState.blockNumber);
|
|
335
334
|
// We build the base rollup inputs using a mock proof and verification key.
|
|
336
335
|
// These will be overwritten later once we have proven the tube circuit and any public kernels
|
|
337
|
-
const [ms, hints] = await elapsed(
|
|
336
|
+
const [ms, hints] = await elapsed(insertSideEffectsAndBuildBaseRollupHints(tx, provingState.globalVariables, db, provingState.spongeBlobState));
|
|
338
337
|
this.metrics.recordBaseRollupInputs(ms);
|
|
339
338
|
const promises = [
|
|
340
339
|
MerkleTreeId.NOTE_HASH_TREE,
|
|
@@ -633,17 +632,23 @@ const logger = createLogger('prover-client:orchestrator');
|
|
|
633
632
|
}, async (signal)=>{
|
|
634
633
|
const inputs = txProvingState.getAvmInputs();
|
|
635
634
|
try {
|
|
636
|
-
|
|
635
|
+
// TODO(#14234)[Unconditional PIs validation]: Remove the whole try-catch logic and
|
|
636
|
+
// just keep the next line but removing the second argument (false).
|
|
637
|
+
return await this.prover.getAvmProof(inputs, false, signal, provingState.epochNumber);
|
|
637
638
|
} catch (err) {
|
|
638
639
|
if (process.env.AVM_PROVING_STRICT) {
|
|
639
640
|
logger.error(`Error thrown when proving AVM circuit with AVM_PROVING_STRICT on`, err);
|
|
640
641
|
throw err;
|
|
641
642
|
} else {
|
|
642
|
-
logger.warn(`Error thrown when proving AVM circuit but AVM_PROVING_STRICT is off.
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
643
|
+
logger.warn(`Error thrown when proving AVM circuit but AVM_PROVING_STRICT is off. Use snapshotted
|
|
644
|
+
AVM inputs and carrying on. ${inspect(err)}.`);
|
|
645
|
+
try {
|
|
646
|
+
const snapshotAvmPrivateInputs = readAvmMinimalPublicTxInputsFromFile();
|
|
647
|
+
return await this.prover.getAvmProof(snapshotAvmPrivateInputs, true, signal, provingState.epochNumber);
|
|
648
|
+
} catch (err) {
|
|
649
|
+
logger.error(`Error thrown when proving snapshotted AVM inputs.`, err);
|
|
650
|
+
throw err;
|
|
651
|
+
}
|
|
647
652
|
}
|
|
648
653
|
}
|
|
649
654
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED, type TUBE_PROOF_LENGTH } from '@aztec/constants';
|
|
2
2
|
import type { AvmCircuitInputs } from '@aztec/stdlib/avm';
|
|
3
3
|
import type { ProofAndVerificationKey } from '@aztec/stdlib/interfaces/server';
|
|
4
4
|
import { type BaseRollupHints, PrivateBaseRollupInputs, PublicBaseRollupInputs, TubeInputs } from '@aztec/stdlib/rollup';
|
|
@@ -29,6 +29,6 @@ export declare class TxProvingState {
|
|
|
29
29
|
inputs: PrivateBaseRollupInputs;
|
|
30
30
|
};
|
|
31
31
|
setTubeProof(tubeProofAndVk: ProofAndVerificationKey<typeof TUBE_PROOF_LENGTH>): void;
|
|
32
|
-
setAvmProof(avmProofAndVk: ProofAndVerificationKey<typeof
|
|
32
|
+
setAvmProof(avmProofAndVk: ProofAndVerificationKey<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>): void;
|
|
33
33
|
}
|
|
34
34
|
//# sourceMappingURL=tx-proving-state.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/tx-proving-state.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"tx-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/tx-proving-state.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oCAAoC,EAEpC,KAAK,iBAAiB,EAEvB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAEL,KAAK,eAAe,EAEpB,uBAAuB,EAGvB,sBAAsB,EAEtB,UAAU,EACX,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpD;;;;GAIG;AACH,qBAAa,cAAc;;aAKP,WAAW,EAAE,WAAW;IACxC,OAAO,CAAC,QAAQ,CAAC,eAAe;aAChB,aAAa,EAAE,GAAG,CAAC,YAAY,EAAE,sBAAsB,CAAC;IAN1E,OAAO,CAAC,IAAI,CAAC,CAAoD;IACjE,OAAO,CAAC,GAAG,CAAC,CAAuE;gBAGjE,WAAW,EAAE,WAAW,EACvB,eAAe,EAAE,eAAe,EACjC,aAAa,EAAE,GAAG,CAAC,YAAY,EAAE,sBAAsB,CAAC;IAG1E,IAAI,eAAe,YAElB;IAEM,KAAK;IAIL,aAAa;IAIb,YAAY,IAAI,gBAAgB;IAIhC,0BAA0B;;;;;;;IAc1B,YAAY,CAAC,cAAc,EAAE,uBAAuB,CAAC,OAAO,iBAAiB,CAAC;IAI9E,WAAW,CAAC,aAAa,EAAE,uBAAuB,CAAC,OAAO,oCAAoC,CAAC;CAqEvG"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AVM_VK_INDEX, TUBE_VK_INDEX } from '@aztec/constants';
|
|
2
2
|
import { getVKIndex, getVKSiblingPath } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
3
3
|
import { AvmProofData, PrivateBaseRollupHints, PrivateBaseRollupInputs, PrivateTubeData, PublicBaseRollupHints, PublicBaseRollupInputs, PublicTubeData, TubeInputs } from '@aztec/stdlib/rollup';
|
|
4
|
-
import {
|
|
4
|
+
import { VkData } from '@aztec/stdlib/vks';
|
|
5
5
|
/**
|
|
6
6
|
* Helper class to manage the proving cycle of a transaction
|
|
7
7
|
* This includes the public VMs and the public kernels
|
|
@@ -84,11 +84,11 @@ import { VkWitnessData } from '@aztec/stdlib/vks';
|
|
|
84
84
|
// TODO(#7410) The VK for the tube won't be in the tree for now, so we manually set it to the tube vk index
|
|
85
85
|
}
|
|
86
86
|
const vkPath = getVKSiblingPath(vkIndex);
|
|
87
|
-
return new
|
|
87
|
+
return new VkData(this.tube.verificationKey, vkIndex, vkPath);
|
|
88
88
|
}
|
|
89
89
|
#getAvmVkData() {
|
|
90
90
|
const vkIndex = AVM_VK_INDEX;
|
|
91
91
|
const vkPath = getVKSiblingPath(vkIndex);
|
|
92
|
-
return new
|
|
92
|
+
return new VkData(this.avm.verificationKey, vkIndex, vkPath);
|
|
93
93
|
}
|
|
94
94
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED, NESTED_RECURSIVE_PROOF_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, RECURSIVE_PROOF_LENGTH, TUBE_PROOF_LENGTH } from '@aztec/constants';
|
|
2
2
|
import type { AvmCircuitInputs } from '@aztec/stdlib/avm';
|
|
3
3
|
import { type ProofAndVerificationKey, type ProvingJobProducer, type PublicInputsAndRecursiveProof, type ServerCircuitProver } from '@aztec/stdlib/interfaces/server';
|
|
4
4
|
import type { BaseParityInputs, ParityPublicInputs, RootParityInputs } from '@aztec/stdlib/parity';
|
|
@@ -29,7 +29,8 @@ export declare class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
29
29
|
private retrieveJobsThatShouldBeReady;
|
|
30
30
|
private backupFailedProofInputs;
|
|
31
31
|
private monitorForCompletedJobs;
|
|
32
|
-
getAvmProof(inputs: AvmCircuitInputs,
|
|
32
|
+
getAvmProof(inputs: AvmCircuitInputs, skipPublicInputsValidation?: boolean, // TODO(#14234)[Unconditional PIs validation]: remove this argument
|
|
33
|
+
signal?: AbortSignal, epochNumber?: number): Promise<ProofAndVerificationKey<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>>;
|
|
33
34
|
getBaseParityProof(inputs: BaseParityInputs, signal?: AbortSignal, epochNumber?: number): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof RECURSIVE_PROOF_LENGTH>>;
|
|
34
35
|
getBlockMergeRollupProof(input: BlockMergeRollupInputs, signal?: AbortSignal, epochNumber?: number): Promise<PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
35
36
|
getBlockRootRollupProof(input: BlockRootRollupInputs, signal?: AbortSignal, epochNumber?: number): Promise<PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broker_prover_facade.d.ts","sourceRoot":"","sources":["../../src/proving_broker/broker_prover_facade.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,
|
|
1
|
+
{"version":3,"file":"broker_prover_facade.d.ts","sourceRoot":"","sources":["../../src/proving_broker/broker_prover_facade.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { sha256 } from '@aztec/foundation/crypto';
|
|
2
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
2
3
|
import { createLogger } from '@aztec/foundation/log';
|
|
3
4
|
import { RunningPromise, promiseWithResolvers } from '@aztec/foundation/promise';
|
|
4
5
|
import { truncate } from '@aztec/foundation/string';
|
|
@@ -301,8 +302,14 @@ export class BrokerCircuitProverFacade {
|
|
|
301
302
|
// We have a list of jobs that we have been told are ready, so we go ahead and ask for their results
|
|
302
303
|
await this.retrieveJobsThatShouldBeReady();
|
|
303
304
|
}
|
|
304
|
-
getAvmProof(inputs, signal, epochNumber) {
|
|
305
|
-
|
|
305
|
+
getAvmProof(inputs, skipPublicInputsValidation, signal, epochNumber) {
|
|
306
|
+
this.log.info(`getAvmProof() called with skipPublicInputsValidation: ${skipPublicInputsValidation}`);
|
|
307
|
+
return this.enqueueJob(this.generateId(ProvingRequestType.PUBLIC_VM, inputs, epochNumber), ProvingRequestType.PUBLIC_VM, inputs, epochNumber, signal).then((result)=>{
|
|
308
|
+
// TODO(#14234)[Unconditional PIs validation]: Remove ".then()".
|
|
309
|
+
// Override the default value of skipPublicInputsValidation potentially set in BBNativeRollupProver.getAvmProof().
|
|
310
|
+
result.proof.proof[0] = skipPublicInputsValidation ? new Fr(1) : new Fr(0);
|
|
311
|
+
return result;
|
|
312
|
+
});
|
|
306
313
|
}
|
|
307
314
|
getBaseParityProof(inputs, signal, epochNumber) {
|
|
308
315
|
return this.enqueueJob(this.generateId(ProvingRequestType.BASE_PARITY, inputs, epochNumber), ProvingRequestType.BASE_PARITY, inputs, epochNumber, signal);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proving_job_controller.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proving_job_controller.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,oBAAY,0BAA0B;IACpC,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,IAAI,SAAS;CACd;AAED,qBAAa,oBAAoB;IAO7B,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,GAAG;IAZb,OAAO,CAAC,MAAM,CAA+D;IAC7E,OAAO,CAAC,OAAO,CAAC,CAAgB;IAChC,OAAO,CAAC,eAAe,CAAyB;IAChD,OAAO,CAAC,MAAM,CAAC,CAAmD;gBAGxD,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,gBAAgB,EACxB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,mBAAmB,EAClC,UAAU,EAAE,MAAM,IAAI,EACtB,GAAG,yCAA+F;IAGrG,KAAK,IAAI,IAAI;IAmBb,SAAS,IAAI,0BAA0B;IAIvC,SAAS,IAAI,oBAAoB,CAAC,kBAAkB,CAAC,GAAG,KAAK,GAAG,SAAS;IAIzE,KAAK,IAAI,IAAI;IAeb,QAAQ,IAAI,YAAY;IAIxB,YAAY,IAAI,kBAAkB;IAIlC,YAAY,IAAI,MAAM;IAItB,gBAAgB,IAAI,MAAM;IAIjC,OAAO,CAAC,GAAG,CA4BT;YAEY,aAAa;
|
|
1
|
+
{"version":3,"file":"proving_job_controller.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proving_job_controller.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,oBAAY,0BAA0B;IACpC,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,IAAI,SAAS;CACd;AAED,qBAAa,oBAAoB;IAO7B,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,GAAG;IAZb,OAAO,CAAC,MAAM,CAA+D;IAC7E,OAAO,CAAC,OAAO,CAAC,CAAgB;IAChC,OAAO,CAAC,eAAe,CAAyB;IAChD,OAAO,CAAC,MAAM,CAAC,CAAmD;gBAGxD,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,gBAAgB,EACxB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,mBAAmB,EAClC,UAAU,EAAE,MAAM,IAAI,EACtB,GAAG,yCAA+F;IAGrG,KAAK,IAAI,IAAI;IAmBb,SAAS,IAAI,0BAA0B;IAIvC,SAAS,IAAI,oBAAoB,CAAC,kBAAkB,CAAC,GAAG,KAAK,GAAG,SAAS;IAIzE,KAAK,IAAI,IAAI;IAeb,QAAQ,IAAI,YAAY;IAIxB,YAAY,IAAI,kBAAkB;IAIlC,YAAY,IAAI,MAAM;IAItB,gBAAgB,IAAI,MAAM;IAIjC,OAAO,CAAC,GAAG,CA4BT;YAEY,aAAa;CA2D5B"}
|
|
@@ -113,7 +113,8 @@ export class ProvingJobController {
|
|
|
113
113
|
switch(type){
|
|
114
114
|
case ProvingRequestType.PUBLIC_VM:
|
|
115
115
|
{
|
|
116
|
-
|
|
116
|
+
// TODO(#14234)[Unconditional PIs validation]: Remove argument "undefined".
|
|
117
|
+
return await this.circuitProver.getAvmProof(inputs, undefined, signal, this.epochNumber);
|
|
117
118
|
}
|
|
118
119
|
case ProvingRequestType.PRIVATE_BASE_ROLLUP:
|
|
119
120
|
{
|
|
@@ -19,7 +19,8 @@ export declare class TestBroker implements ProvingJobProducer {
|
|
|
19
19
|
}
|
|
20
20
|
export declare class MockProver implements ServerCircuitProver {
|
|
21
21
|
constructor();
|
|
22
|
-
getAvmProof(_inputs: AvmCircuitInputs,
|
|
22
|
+
getAvmProof(_inputs: AvmCircuitInputs, _skipPublicInputsValidation?: boolean, // TODO(#14234)[Unconditional PIs validation]: Remove.
|
|
23
|
+
_signal?: AbortSignal, _epochNumber?: number): Promise<ProofAndVerificationKey<20000>>;
|
|
23
24
|
getBaseParityProof(_inputs: BaseParityInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<import("@aztec/stdlib/parity").ParityPublicInputs, 456>>;
|
|
24
25
|
getRootParityProof(_inputs: RootParityInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<import("@aztec/stdlib/parity").ParityPublicInputs, 456>>;
|
|
25
26
|
getPrivateBaseRollupProof(_baseRollupInput: PrivateBaseRollupInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<BaseOrMergeRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock_prover.d.ts","sourceRoot":"","sources":["../../src/test/mock_prover.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,yCAAyC,EAEzC,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,6BAA6B,EAClC,KAAK,mBAAmB,EAGzB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE/E,OAAO,KAAK,EACV,6BAA6B,EAC7B,sBAAsB,EACtB,iCAAiC,EACjC,qBAAqB,EACrB,0BAA0B,EAC1B,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,EACtB,gBAAgB,EAChB,sBAAsB,EACtB,6BAA6B,EAC9B,MAAM,sBAAsB,CAAC;AAS9B,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,wCAAwC,CAAC;AAK3F,qBAAa,UAAW,YAAW,kBAAkB;IAOjD,OAAO,CAAC,UAAU;IANpB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAiB;gBAG7B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,mBAAmB,EACnB,UAAU,GAAE,UAAmC,EACvD,iBAAiB,SAAM;IASZ,KAAK;IAKL,IAAI;IAKV,aAAa,IAAI,UAAU;IAIlC,iBAAiB,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAG7D,mBAAmB,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAGhE,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3C,gBAAgB,CAAC,GAAG,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CAG/D;AAED,qBAAa,UAAW,YAAW,mBAAmB;;IAGpD,WAAW,
|
|
1
|
+
{"version":3,"file":"mock_prover.d.ts","sourceRoot":"","sources":["../../src/test/mock_prover.ts"],"names":[],"mappings":"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"}
|
package/dest/test/mock_prover.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED, AVM_V2_VERIFICATION_KEY_LENGTH_IN_FIELDS_PADDED, NESTED_RECURSIVE_PROOF_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, RECURSIVE_PROOF_LENGTH, TUBE_PROOF_LENGTH } from '@aztec/constants';
|
|
2
2
|
import { times } from '@aztec/foundation/collection';
|
|
3
3
|
import { makeProofAndVerificationKey, makePublicInputsAndRecursiveProof } from '@aztec/stdlib/interfaces/server';
|
|
4
4
|
import { makeEmptyRecursiveProof, makeRecursiveProof } from '@aztec/stdlib/proofs';
|
|
@@ -43,8 +43,8 @@ export class TestBroker {
|
|
|
43
43
|
}
|
|
44
44
|
export class MockProver {
|
|
45
45
|
constructor(){}
|
|
46
|
-
getAvmProof(_inputs, _signal, _epochNumber) {
|
|
47
|
-
return Promise.resolve(makeProofAndVerificationKey(makeEmptyRecursiveProof(
|
|
46
|
+
getAvmProof(_inputs, _skipPublicInputsValidation, _signal, _epochNumber) {
|
|
47
|
+
return Promise.resolve(makeProofAndVerificationKey(makeEmptyRecursiveProof(AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED), VerificationKeyData.makeFake(AVM_V2_VERIFICATION_KEY_LENGTH_IN_FIELDS_PADDED)));
|
|
48
48
|
}
|
|
49
49
|
getBaseParityProof(_inputs, _signal, _epochNumber) {
|
|
50
50
|
return Promise.resolve(makePublicInputsAndRecursiveProof(makeParityPublicInputs(), makeRecursiveProof(RECURSIVE_PROOF_LENGTH), VerificationKeyData.makeFakeHonk()));
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/prover-client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0-nightly.20250604",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
7
|
-
"./block-
|
|
7
|
+
"./block-factory": "./dest/block-factory/index.js",
|
|
8
8
|
"./broker": "./dest/proving_broker/index.js",
|
|
9
9
|
"./orchestrator": "./dest/orchestrator/index.js",
|
|
10
10
|
"./helpers": "./dest/orchestrator/block-building-helpers.js",
|
|
@@ -64,19 +64,19 @@
|
|
|
64
64
|
]
|
|
65
65
|
},
|
|
66
66
|
"dependencies": {
|
|
67
|
-
"@aztec/bb-prover": "0.
|
|
68
|
-
"@aztec/blob-lib": "0.
|
|
69
|
-
"@aztec/constants": "0.
|
|
70
|
-
"@aztec/ethereum": "0.
|
|
71
|
-
"@aztec/foundation": "0.
|
|
72
|
-
"@aztec/kv-store": "0.
|
|
73
|
-
"@aztec/noir-protocol-circuits-types": "0.
|
|
74
|
-
"@aztec/noir-types": "0.
|
|
75
|
-
"@aztec/protocol-contracts": "0.
|
|
76
|
-
"@aztec/simulator": "0.
|
|
77
|
-
"@aztec/stdlib": "0.
|
|
78
|
-
"@aztec/telemetry-client": "0.
|
|
79
|
-
"@aztec/world-state": "0.
|
|
67
|
+
"@aztec/bb-prover": "1.0.0-nightly.20250604",
|
|
68
|
+
"@aztec/blob-lib": "1.0.0-nightly.20250604",
|
|
69
|
+
"@aztec/constants": "1.0.0-nightly.20250604",
|
|
70
|
+
"@aztec/ethereum": "1.0.0-nightly.20250604",
|
|
71
|
+
"@aztec/foundation": "1.0.0-nightly.20250604",
|
|
72
|
+
"@aztec/kv-store": "1.0.0-nightly.20250604",
|
|
73
|
+
"@aztec/noir-protocol-circuits-types": "1.0.0-nightly.20250604",
|
|
74
|
+
"@aztec/noir-types": "1.0.0-nightly.20250604",
|
|
75
|
+
"@aztec/protocol-contracts": "1.0.0-nightly.20250604",
|
|
76
|
+
"@aztec/simulator": "1.0.0-nightly.20250604",
|
|
77
|
+
"@aztec/stdlib": "1.0.0-nightly.20250604",
|
|
78
|
+
"@aztec/telemetry-client": "1.0.0-nightly.20250604",
|
|
79
|
+
"@aztec/world-state": "1.0.0-nightly.20250604",
|
|
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": "0.
|
|
89
|
+
"@aztec/noir-contracts.js": "1.0.0-nightly.20250604",
|
|
90
90
|
"@jest/globals": "^29.5.0",
|
|
91
91
|
"@types/jest": "^29.5.0",
|
|
92
92
|
"@types/node": "^22.15.17",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './light.js';
|
|
@@ -4,26 +4,34 @@ import { padArrayEnd } from '@aztec/foundation/collection';
|
|
|
4
4
|
import { Fr } from '@aztec/foundation/fields';
|
|
5
5
|
import { createLogger } from '@aztec/foundation/log';
|
|
6
6
|
import { L2Block } from '@aztec/stdlib/block';
|
|
7
|
-
import type {
|
|
7
|
+
import type { IBlockFactory, MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
|
|
8
8
|
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
9
9
|
import { type GlobalVariables, type ProcessedTx, toNumBlobFields } from '@aztec/stdlib/tx';
|
|
10
10
|
import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
|
|
11
11
|
|
|
12
12
|
import {
|
|
13
|
-
buildBaseRollupHints,
|
|
14
13
|
buildHeaderAndBodyFromTxs,
|
|
15
14
|
getTreeSnapshot,
|
|
15
|
+
insertSideEffectsAndBuildBaseRollupHints,
|
|
16
16
|
} from '../orchestrator/block-building-helpers.js';
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* Builds a block and its header from a set of processed tx without running any circuits.
|
|
20
|
+
*
|
|
21
|
+
* NOTE: the onus is ON THE CALLER to update the db that is passed in with the notes hashes, nullifiers, etc
|
|
22
|
+
* PRIOR to calling `buildBlock`.
|
|
23
|
+
*
|
|
24
|
+
* Why? Because if you are, e.g. building a block in practice from TxObjects, you are using the
|
|
25
|
+
* PublicProcessor which will do this for you as it processes transactions.
|
|
26
|
+
*
|
|
27
|
+
* If you haven't already inserted the side effects, e.g. because you are in a testing context, you can use the helper
|
|
28
|
+
* function `buildBlockWithCleanDB`, which calls `insertSideEffectsAndBuildBaseRollupHints` for you.
|
|
20
29
|
*/
|
|
21
|
-
export class
|
|
22
|
-
private spongeBlobState?: SpongeBlob;
|
|
30
|
+
export class LightweightBlockFactory implements IBlockFactory {
|
|
23
31
|
private globalVariables?: GlobalVariables;
|
|
24
32
|
private l1ToL2Messages?: Fr[];
|
|
25
33
|
|
|
26
|
-
private txs: ProcessedTx[]
|
|
34
|
+
private txs: ProcessedTx[] | undefined;
|
|
27
35
|
|
|
28
36
|
private readonly logger = createLogger('prover-client:block_builder');
|
|
29
37
|
|
|
@@ -36,20 +44,21 @@ export class LightweightBlockBuilder implements BlockBuilder {
|
|
|
36
44
|
this.logger.debug('Starting new block', { globalVariables: globalVariables.toInspect(), l1ToL2Messages });
|
|
37
45
|
this.globalVariables = globalVariables;
|
|
38
46
|
this.l1ToL2Messages = padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
|
|
39
|
-
this.txs =
|
|
40
|
-
this.spongeBlobState = undefined;
|
|
47
|
+
this.txs = undefined;
|
|
41
48
|
|
|
42
49
|
// Update L1 to L2 tree
|
|
43
50
|
await this.db.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, this.l1ToL2Messages!);
|
|
44
51
|
}
|
|
45
52
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
this.txs
|
|
51
|
-
|
|
53
|
+
addTxs(txs: ProcessedTx[]): Promise<void> {
|
|
54
|
+
// Most times, `addTxs` is only called once per block.
|
|
55
|
+
// So avoid copies.
|
|
56
|
+
if (this.txs === undefined) {
|
|
57
|
+
this.txs = txs;
|
|
58
|
+
} else {
|
|
59
|
+
this.txs.push(...txs);
|
|
52
60
|
}
|
|
61
|
+
return Promise.resolve();
|
|
53
62
|
}
|
|
54
63
|
|
|
55
64
|
setBlockCompleted(): Promise<L2Block> {
|
|
@@ -58,7 +67,7 @@ export class LightweightBlockBuilder implements BlockBuilder {
|
|
|
58
67
|
|
|
59
68
|
private async buildBlock(): Promise<L2Block> {
|
|
60
69
|
const { header, body } = await buildHeaderAndBodyFromTxs(
|
|
61
|
-
this.txs,
|
|
70
|
+
this.txs ?? [],
|
|
62
71
|
this.globalVariables!,
|
|
63
72
|
this.l1ToL2Messages!,
|
|
64
73
|
this.db,
|
|
@@ -78,26 +87,22 @@ export class LightweightBlockBuilder implements BlockBuilder {
|
|
|
78
87
|
}
|
|
79
88
|
}
|
|
80
89
|
|
|
81
|
-
export class LightweightBlockBuilderFactory {
|
|
82
|
-
constructor(private telemetry: TelemetryClient = getTelemetryClient()) {}
|
|
83
|
-
|
|
84
|
-
create(db: MerkleTreeWriteOperations): BlockBuilder {
|
|
85
|
-
return new LightweightBlockBuilder(db, this.telemetry);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
90
|
/**
|
|
90
|
-
*
|
|
91
|
-
* @param db - A db fork to use for block building.
|
|
91
|
+
* Inserts the processed transactions into the DB, then creates a block.
|
|
92
|
+
* @param db - A db fork to use for block building which WILL BE MODIFIED.
|
|
92
93
|
*/
|
|
93
|
-
export async function
|
|
94
|
+
export async function buildBlockWithCleanDB(
|
|
94
95
|
txs: ProcessedTx[],
|
|
95
96
|
globalVariables: GlobalVariables,
|
|
96
97
|
l1ToL2Messages: Fr[],
|
|
97
98
|
db: MerkleTreeWriteOperations,
|
|
98
99
|
telemetry: TelemetryClient = getTelemetryClient(),
|
|
99
100
|
) {
|
|
100
|
-
const
|
|
101
|
+
const spongeBlobState = SpongeBlob.init(toNumBlobFields(txs));
|
|
102
|
+
for (const tx of txs) {
|
|
103
|
+
await insertSideEffectsAndBuildBaseRollupHints(tx, globalVariables, db, spongeBlobState);
|
|
104
|
+
}
|
|
105
|
+
const builder = new LightweightBlockFactory(db, telemetry);
|
|
101
106
|
await builder.startNewBlock(globalVariables, l1ToL2Messages);
|
|
102
107
|
await builder.addTxs(txs);
|
|
103
108
|
return await builder.setBlockCompleted();
|
|
@@ -23,7 +23,7 @@ import { promises as fs } from 'fs';
|
|
|
23
23
|
// TODO(#12613) This means of sharing test code is not ideal.
|
|
24
24
|
// eslint-disable-next-line import/no-relative-packages
|
|
25
25
|
import { TestCircuitProver } from '../../../bb-prover/src/test/test_circuit_prover.js';
|
|
26
|
-
import {
|
|
26
|
+
import { buildBlockWithCleanDB } from '../block-factory/light.js';
|
|
27
27
|
import { ProvingOrchestrator } from '../orchestrator/index.js';
|
|
28
28
|
import { BrokerCircuitProverFacade } from '../proving_broker/broker_prover_facade.js';
|
|
29
29
|
import { TestBroker } from '../test/mock_prover.js';
|
|
@@ -193,7 +193,7 @@ export class TestContext {
|
|
|
193
193
|
);
|
|
194
194
|
await this.setTreeRoots(txs);
|
|
195
195
|
|
|
196
|
-
const block = await
|
|
196
|
+
const block = await buildBlockWithCleanDB(txs, globalVariables, msgs, db);
|
|
197
197
|
this.headers.set(blockNum, block.header);
|
|
198
198
|
await this.worldState.handleL2BlockAndMessages(block, msgs);
|
|
199
199
|
return { block, txs, msgs };
|
|
@@ -64,7 +64,7 @@ type BaseTreeNames = 'NoteHashTree' | 'ContractTree' | 'NullifierTree' | 'Public
|
|
|
64
64
|
export type TreeNames = BaseTreeNames | 'L1ToL2MessageTree' | 'Archive';
|
|
65
65
|
|
|
66
66
|
// Builds the hints for base rollup. Updating the contract, nullifier, and data trees in the process.
|
|
67
|
-
export const
|
|
67
|
+
export const insertSideEffectsAndBuildBaseRollupHints = runInSpan(
|
|
68
68
|
'BlockBuilderHelpers',
|
|
69
69
|
'buildBaseRollupHints',
|
|
70
70
|
async (
|
|
@@ -138,9 +138,9 @@ export const buildBaseRollupHints = runInSpan(
|
|
|
138
138
|
const inputSpongeBlob = startSpongeBlob.clone();
|
|
139
139
|
await startSpongeBlob.absorb(tx.txEffect.toBlobFields());
|
|
140
140
|
|
|
141
|
-
const
|
|
141
|
+
const contractClassLogsFields = makeTuple(
|
|
142
142
|
MAX_CONTRACT_CLASS_LOGS_PER_TX,
|
|
143
|
-
i => tx.txEffect.contractClassLogs[i]?.
|
|
143
|
+
i => tx.txEffect.contractClassLogs[i]?.fields || ContractClassLogFields.empty(),
|
|
144
144
|
);
|
|
145
145
|
|
|
146
146
|
if (tx.avmProvingRequest) {
|
|
@@ -155,7 +155,7 @@ export const buildBaseRollupHints = runInSpan(
|
|
|
155
155
|
return PublicBaseRollupHints.from({
|
|
156
156
|
startSpongeBlob: inputSpongeBlob,
|
|
157
157
|
archiveRootMembershipWitness,
|
|
158
|
-
|
|
158
|
+
contractClassLogsFields,
|
|
159
159
|
constants,
|
|
160
160
|
});
|
|
161
161
|
} else {
|
|
@@ -210,7 +210,7 @@ export const buildBaseRollupHints = runInSpan(
|
|
|
210
210
|
stateDiffHints,
|
|
211
211
|
feePayerFeeJuiceBalanceReadHint,
|
|
212
212
|
archiveRootMembershipWitness,
|
|
213
|
-
|
|
213
|
+
contractClassLogsFields,
|
|
214
214
|
constants,
|
|
215
215
|
});
|
|
216
216
|
}
|
|
@@ -7,12 +7,11 @@ import {
|
|
|
7
7
|
type NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
8
8
|
NUM_BASE_PARITY_PER_ROOT_PARITY,
|
|
9
9
|
type RECURSIVE_PROOF_LENGTH,
|
|
10
|
-
VK_TREE_HEIGHT,
|
|
11
10
|
} from '@aztec/constants';
|
|
12
11
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
13
12
|
import { Fr } from '@aztec/foundation/fields';
|
|
14
13
|
import type { Tuple } from '@aztec/foundation/serialize';
|
|
15
|
-
import {
|
|
14
|
+
import { type TreeNodeLocation, UnbalancedTreeStore } from '@aztec/foundation/trees';
|
|
16
15
|
import { getVKIndex, getVKSiblingPath, getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
17
16
|
import { protocolContractTreeRoot } from '@aztec/protocol-contracts';
|
|
18
17
|
import type { L2Block } from '@aztec/stdlib/block';
|
|
@@ -33,6 +32,7 @@ import {
|
|
|
33
32
|
import type { CircuitName } from '@aztec/stdlib/stats';
|
|
34
33
|
import type { AppendOnlyTreeSnapshot, MerkleTreeId } from '@aztec/stdlib/trees';
|
|
35
34
|
import { type BlockHeader, type GlobalVariables, StateReference } from '@aztec/stdlib/tx';
|
|
35
|
+
import { VkData } from '@aztec/stdlib/vks';
|
|
36
36
|
|
|
37
37
|
import { buildBlobHints, buildHeaderFromCircuitOutputs } from './block-building-helpers.js';
|
|
38
38
|
import type { EpochProvingState } from './epoch-proving-state.js';
|
|
@@ -361,12 +361,8 @@ export class BlockProvingState {
|
|
|
361
361
|
verificationKey,
|
|
362
362
|
}: PublicInputsAndRecursiveProof<BaseOrMergeRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>) {
|
|
363
363
|
const leafIndex = getVKIndex(verificationKey.keyAsFields);
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
proof,
|
|
367
|
-
verificationKey.keyAsFields,
|
|
368
|
-
new MembershipWitness(VK_TREE_HEIGHT, BigInt(leafIndex), getVKSiblingPath(leafIndex)),
|
|
369
|
-
);
|
|
364
|
+
const vkData = new VkData(verificationKey, leafIndex, getVKSiblingPath(leafIndex));
|
|
365
|
+
return new PreviousRollupData(inputs, proof, vkData);
|
|
370
366
|
}
|
|
371
367
|
|
|
372
368
|
#getRootParityData({ inputs, proof, verificationKey }: PublicInputsAndRecursiveProof<ParityPublicInputs>) {
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
VK_TREE_HEIGHT,
|
|
1
|
+
import type {
|
|
2
|
+
ARCHIVE_HEIGHT,
|
|
3
|
+
L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH,
|
|
4
|
+
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
5
|
+
TUBE_PROOF_LENGTH,
|
|
7
6
|
} from '@aztec/constants';
|
|
8
7
|
import type { Fr } from '@aztec/foundation/fields';
|
|
9
8
|
import type { Tuple } from '@aztec/foundation/serialize';
|
|
10
|
-
import {
|
|
9
|
+
import { type TreeNodeLocation, UnbalancedTreeStore } from '@aztec/foundation/trees';
|
|
11
10
|
import { getVKIndex, getVKSiblingPath } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
12
11
|
import type { ProofAndVerificationKey, PublicInputsAndRecursiveProof } from '@aztec/stdlib/interfaces/server';
|
|
13
12
|
import type { Proof } from '@aztec/stdlib/proofs';
|
|
@@ -20,6 +19,7 @@ import {
|
|
|
20
19
|
} from '@aztec/stdlib/rollup';
|
|
21
20
|
import type { AppendOnlyTreeSnapshot, MerkleTreeId } from '@aztec/stdlib/trees';
|
|
22
21
|
import type { BlockHeader, GlobalVariables } from '@aztec/stdlib/tx';
|
|
22
|
+
import { VkData } from '@aztec/stdlib/vks';
|
|
23
23
|
|
|
24
24
|
import { BlockProvingState } from './block-proving-state.js';
|
|
25
25
|
|
|
@@ -244,11 +244,7 @@ export class EpochProvingState {
|
|
|
244
244
|
typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH
|
|
245
245
|
>) {
|
|
246
246
|
const leafIndex = getVKIndex(verificationKey.keyAsFields);
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
proof,
|
|
250
|
-
verificationKey.keyAsFields,
|
|
251
|
-
new MembershipWitness(VK_TREE_HEIGHT, BigInt(leafIndex), getVKSiblingPath(leafIndex)),
|
|
252
|
-
);
|
|
247
|
+
const vkData = new VkData(verificationKey, leafIndex, getVKSiblingPath(leafIndex));
|
|
248
|
+
return new PreviousRollupBlockData(inputs, proof, vkData);
|
|
253
249
|
}
|
|
254
250
|
}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import {
|
|
2
|
-
AVM_PROOF_LENGTH_IN_FIELDS,
|
|
3
|
-
AVM_VERIFICATION_KEY_LENGTH_IN_FIELDS,
|
|
4
2
|
L1_TO_L2_MSG_SUBTREE_HEIGHT,
|
|
5
3
|
L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH,
|
|
6
4
|
NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP,
|
|
@@ -17,6 +15,7 @@ import { pushTestData } from '@aztec/foundation/testing';
|
|
|
17
15
|
import { elapsed } from '@aztec/foundation/timer';
|
|
18
16
|
import type { TreeNodeLocation } from '@aztec/foundation/trees';
|
|
19
17
|
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
18
|
+
import { readAvmMinimalPublicTxInputsFromFile } from '@aztec/simulator/public/fixtures';
|
|
20
19
|
import { L2Block } from '@aztec/stdlib/block';
|
|
21
20
|
import type {
|
|
22
21
|
EpochProver,
|
|
@@ -26,7 +25,6 @@ import type {
|
|
|
26
25
|
ServerCircuitProver,
|
|
27
26
|
} from '@aztec/stdlib/interfaces/server';
|
|
28
27
|
import { BaseParityInputs } from '@aztec/stdlib/parity';
|
|
29
|
-
import { makeEmptyRecursiveProof } from '@aztec/stdlib/proofs';
|
|
30
28
|
import {
|
|
31
29
|
type BaseRollupHints,
|
|
32
30
|
EmptyBlockRootRollupInputs,
|
|
@@ -37,7 +35,6 @@ import {
|
|
|
37
35
|
import type { CircuitName } from '@aztec/stdlib/stats';
|
|
38
36
|
import { type AppendOnlyTreeSnapshot, MerkleTreeId } from '@aztec/stdlib/trees';
|
|
39
37
|
import { type BlockHeader, type GlobalVariables, type ProcessedTx, type Tx, toNumBlobFields } from '@aztec/stdlib/tx';
|
|
40
|
-
import { VerificationKeyData } from '@aztec/stdlib/vks';
|
|
41
38
|
import {
|
|
42
39
|
Attributes,
|
|
43
40
|
type TelemetryClient,
|
|
@@ -50,12 +47,12 @@ import {
|
|
|
50
47
|
import { inspect } from 'util';
|
|
51
48
|
|
|
52
49
|
import {
|
|
53
|
-
buildBaseRollupHints,
|
|
54
50
|
buildHeaderAndBodyFromTxs,
|
|
55
51
|
getLastSiblingPath,
|
|
56
52
|
getRootTreeSiblingPath,
|
|
57
53
|
getSubtreeSiblingPath,
|
|
58
54
|
getTreeSnapshot,
|
|
55
|
+
insertSideEffectsAndBuildBaseRollupHints,
|
|
59
56
|
validatePartialState,
|
|
60
57
|
validateTx,
|
|
61
58
|
} from './block-building-helpers.js';
|
|
@@ -492,7 +489,7 @@ export class ProvingOrchestrator implements EpochProver {
|
|
|
492
489
|
// We build the base rollup inputs using a mock proof and verification key.
|
|
493
490
|
// These will be overwritten later once we have proven the tube circuit and any public kernels
|
|
494
491
|
const [ms, hints] = await elapsed(
|
|
495
|
-
|
|
492
|
+
insertSideEffectsAndBuildBaseRollupHints(tx, provingState.globalVariables, db, provingState.spongeBlobState),
|
|
496
493
|
);
|
|
497
494
|
|
|
498
495
|
this.metrics.recordBaseRollupInputs(ms);
|
|
@@ -933,21 +930,26 @@ export class ProvingOrchestrator implements EpochProver {
|
|
|
933
930
|
async (signal: AbortSignal) => {
|
|
934
931
|
const inputs = txProvingState.getAvmInputs();
|
|
935
932
|
try {
|
|
936
|
-
|
|
933
|
+
// TODO(#14234)[Unconditional PIs validation]: Remove the whole try-catch logic and
|
|
934
|
+
// just keep the next line but removing the second argument (false).
|
|
935
|
+
return await this.prover.getAvmProof(inputs, false, signal, provingState.epochNumber);
|
|
937
936
|
} catch (err) {
|
|
938
937
|
if (process.env.AVM_PROVING_STRICT) {
|
|
939
938
|
logger.error(`Error thrown when proving AVM circuit with AVM_PROVING_STRICT on`, err);
|
|
940
939
|
throw err;
|
|
941
940
|
} else {
|
|
942
941
|
logger.warn(
|
|
943
|
-
`Error thrown when proving AVM circuit but AVM_PROVING_STRICT is off.
|
|
944
|
-
|
|
945
|
-
)}.`,
|
|
942
|
+
`Error thrown when proving AVM circuit but AVM_PROVING_STRICT is off. Use snapshotted
|
|
943
|
+
AVM inputs and carrying on. ${inspect(err)}.`,
|
|
946
944
|
);
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
945
|
+
|
|
946
|
+
try {
|
|
947
|
+
const snapshotAvmPrivateInputs = readAvmMinimalPublicTxInputsFromFile();
|
|
948
|
+
return await this.prover.getAvmProof(snapshotAvmPrivateInputs, true, signal, provingState.epochNumber);
|
|
949
|
+
} catch (err) {
|
|
950
|
+
logger.error(`Error thrown when proving snapshotted AVM inputs.`, err);
|
|
951
|
+
throw err;
|
|
952
|
+
}
|
|
951
953
|
}
|
|
952
954
|
}
|
|
953
955
|
},
|
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED,
|
|
3
|
+
AVM_VK_INDEX,
|
|
4
|
+
type TUBE_PROOF_LENGTH,
|
|
5
|
+
TUBE_VK_INDEX,
|
|
6
|
+
} from '@aztec/constants';
|
|
2
7
|
import { getVKIndex, getVKSiblingPath } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
3
8
|
import type { AvmCircuitInputs } from '@aztec/stdlib/avm';
|
|
4
9
|
import type { ProofAndVerificationKey } from '@aztec/stdlib/interfaces/server';
|
|
@@ -16,7 +21,7 @@ import {
|
|
|
16
21
|
import type { CircuitName } from '@aztec/stdlib/stats';
|
|
17
22
|
import type { AppendOnlyTreeSnapshot, MerkleTreeId } from '@aztec/stdlib/trees';
|
|
18
23
|
import type { ProcessedTx } from '@aztec/stdlib/tx';
|
|
19
|
-
import {
|
|
24
|
+
import { VkData } from '@aztec/stdlib/vks';
|
|
20
25
|
|
|
21
26
|
/**
|
|
22
27
|
* Helper class to manage the proving cycle of a transaction
|
|
@@ -25,7 +30,7 @@ import { VkWitnessData } from '@aztec/stdlib/vks';
|
|
|
25
30
|
*/
|
|
26
31
|
export class TxProvingState {
|
|
27
32
|
private tube?: ProofAndVerificationKey<typeof TUBE_PROOF_LENGTH>;
|
|
28
|
-
private avm?: ProofAndVerificationKey<typeof
|
|
33
|
+
private avm?: ProofAndVerificationKey<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>;
|
|
29
34
|
|
|
30
35
|
constructor(
|
|
31
36
|
public readonly processedTx: ProcessedTx,
|
|
@@ -67,7 +72,7 @@ export class TxProvingState {
|
|
|
67
72
|
this.tube = tubeProofAndVk;
|
|
68
73
|
}
|
|
69
74
|
|
|
70
|
-
public setAvmProof(avmProofAndVk: ProofAndVerificationKey<typeof
|
|
75
|
+
public setAvmProof(avmProofAndVk: ProofAndVerificationKey<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>) {
|
|
71
76
|
this.avm = avmProofAndVk;
|
|
72
77
|
}
|
|
73
78
|
|
|
@@ -128,12 +133,12 @@ export class TxProvingState {
|
|
|
128
133
|
}
|
|
129
134
|
const vkPath = getVKSiblingPath(vkIndex);
|
|
130
135
|
|
|
131
|
-
return new
|
|
136
|
+
return new VkData(this.tube!.verificationKey, vkIndex, vkPath);
|
|
132
137
|
}
|
|
133
138
|
|
|
134
139
|
#getAvmVkData() {
|
|
135
140
|
const vkIndex = AVM_VK_INDEX;
|
|
136
141
|
const vkPath = getVKSiblingPath(vkIndex);
|
|
137
|
-
return new
|
|
142
|
+
return new VkData(this.avm!.verificationKey, vkIndex, vkPath);
|
|
138
143
|
}
|
|
139
144
|
}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import type {
|
|
2
|
-
|
|
2
|
+
AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED,
|
|
3
3
|
NESTED_RECURSIVE_PROOF_LENGTH,
|
|
4
4
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
5
5
|
RECURSIVE_PROOF_LENGTH,
|
|
6
6
|
TUBE_PROOF_LENGTH,
|
|
7
7
|
} from '@aztec/constants';
|
|
8
8
|
import { sha256 } from '@aztec/foundation/crypto';
|
|
9
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
9
10
|
import { createLogger } from '@aztec/foundation/log';
|
|
10
11
|
import { type PromiseWithResolvers, RunningPromise, promiseWithResolvers } from '@aztec/foundation/promise';
|
|
11
12
|
import { truncate } from '@aztec/foundation/string';
|
|
@@ -389,16 +390,24 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
389
390
|
|
|
390
391
|
getAvmProof(
|
|
391
392
|
inputs: AvmCircuitInputs,
|
|
393
|
+
skipPublicInputsValidation?: boolean, // TODO(#14234)[Unconditional PIs validation]: remove this argument
|
|
392
394
|
signal?: AbortSignal,
|
|
393
395
|
epochNumber?: number,
|
|
394
|
-
): Promise<ProofAndVerificationKey<typeof
|
|
396
|
+
): Promise<ProofAndVerificationKey<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>> {
|
|
397
|
+
this.log.info(`getAvmProof() called with skipPublicInputsValidation: ${skipPublicInputsValidation}`);
|
|
398
|
+
|
|
395
399
|
return this.enqueueJob(
|
|
396
400
|
this.generateId(ProvingRequestType.PUBLIC_VM, inputs, epochNumber),
|
|
397
401
|
ProvingRequestType.PUBLIC_VM,
|
|
398
402
|
inputs,
|
|
399
403
|
epochNumber,
|
|
400
404
|
signal,
|
|
401
|
-
)
|
|
405
|
+
).then(result => {
|
|
406
|
+
// TODO(#14234)[Unconditional PIs validation]: Remove ".then()".
|
|
407
|
+
// Override the default value of skipPublicInputsValidation potentially set in BBNativeRollupProver.getAvmProof().
|
|
408
|
+
result.proof.proof[0] = skipPublicInputsValidation ? new Fr(1) : new Fr(0);
|
|
409
|
+
return result;
|
|
410
|
+
});
|
|
402
411
|
}
|
|
403
412
|
|
|
404
413
|
getBaseParityProof(
|
|
@@ -124,7 +124,8 @@ export class ProvingJobController {
|
|
|
124
124
|
const signal = this.abortController.signal;
|
|
125
125
|
switch (type) {
|
|
126
126
|
case ProvingRequestType.PUBLIC_VM: {
|
|
127
|
-
|
|
127
|
+
// TODO(#14234)[Unconditional PIs validation]: Remove argument "undefined".
|
|
128
|
+
return await this.circuitProver.getAvmProof(inputs, undefined, signal, this.epochNumber);
|
|
128
129
|
}
|
|
129
130
|
|
|
130
131
|
case ProvingRequestType.PRIVATE_BASE_ROLLUP: {
|
package/src/test/mock_prover.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED,
|
|
3
|
+
AVM_V2_VERIFICATION_KEY_LENGTH_IN_FIELDS_PADDED,
|
|
4
4
|
NESTED_RECURSIVE_PROOF_LENGTH,
|
|
5
5
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
6
6
|
RECURSIVE_PROOF_LENGTH,
|
|
@@ -96,11 +96,16 @@ export class TestBroker implements ProvingJobProducer {
|
|
|
96
96
|
export class MockProver implements ServerCircuitProver {
|
|
97
97
|
constructor() {}
|
|
98
98
|
|
|
99
|
-
getAvmProof(
|
|
99
|
+
getAvmProof(
|
|
100
|
+
_inputs: AvmCircuitInputs,
|
|
101
|
+
_skipPublicInputsValidation?: boolean, // TODO(#14234)[Unconditional PIs validation]: Remove.
|
|
102
|
+
_signal?: AbortSignal,
|
|
103
|
+
_epochNumber?: number,
|
|
104
|
+
) {
|
|
100
105
|
return Promise.resolve(
|
|
101
106
|
makeProofAndVerificationKey(
|
|
102
|
-
makeEmptyRecursiveProof(
|
|
103
|
-
VerificationKeyData.makeFake(
|
|
107
|
+
makeEmptyRecursiveProof(AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED),
|
|
108
|
+
VerificationKeyData.makeFake(AVM_V2_VERIFICATION_KEY_LENGTH_IN_FIELDS_PADDED),
|
|
104
109
|
),
|
|
105
110
|
);
|
|
106
111
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/block_builder/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAE9F,cAAc,YAAY,CAAC;AAC3B,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,EAAE,wBAAwB,GAAG,YAAY,CAAC;CACpD"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
-
import { L2Block } from '@aztec/stdlib/block';
|
|
3
|
-
import type { BlockBuilder, MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
|
|
4
|
-
import { type GlobalVariables, type ProcessedTx } from '@aztec/stdlib/tx';
|
|
5
|
-
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
6
|
-
/**
|
|
7
|
-
* Builds a block and its header from a set of processed tx without running any circuits.
|
|
8
|
-
*/
|
|
9
|
-
export declare class LightweightBlockBuilder implements BlockBuilder {
|
|
10
|
-
private db;
|
|
11
|
-
private telemetry;
|
|
12
|
-
private spongeBlobState?;
|
|
13
|
-
private globalVariables?;
|
|
14
|
-
private l1ToL2Messages?;
|
|
15
|
-
private txs;
|
|
16
|
-
private readonly logger;
|
|
17
|
-
constructor(db: MerkleTreeWriteOperations, telemetry?: TelemetryClient);
|
|
18
|
-
startNewBlock(globalVariables: GlobalVariables, l1ToL2Messages: Fr[]): Promise<void>;
|
|
19
|
-
addTxs(txs: ProcessedTx[]): Promise<void>;
|
|
20
|
-
setBlockCompleted(): Promise<L2Block>;
|
|
21
|
-
private buildBlock;
|
|
22
|
-
}
|
|
23
|
-
export declare class LightweightBlockBuilderFactory {
|
|
24
|
-
private telemetry;
|
|
25
|
-
constructor(telemetry?: TelemetryClient);
|
|
26
|
-
create(db: MerkleTreeWriteOperations): BlockBuilder;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Creates a block builder under the hood with the given txs and messages and creates a block.
|
|
30
|
-
* @param db - A db fork to use for block building.
|
|
31
|
-
*/
|
|
32
|
-
export declare function buildBlock(txs: ProcessedTx[], globalVariables: GlobalVariables, l1ToL2Messages: Fr[], db: MerkleTreeWriteOperations, telemetry?: TelemetryClient): Promise<L2Block>;
|
|
33
|
-
//# sourceMappingURL=light.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"light.d.ts","sourceRoot":"","sources":["../../src/block_builder/light.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAE/F,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,WAAW,EAAmB,MAAM,kBAAkB,CAAC;AAC3F,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAQnF;;GAEG;AACH,qBAAa,uBAAwB,YAAW,YAAY;IAUxD,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,SAAS;IAVnB,OAAO,CAAC,eAAe,CAAC,CAAa;IACrC,OAAO,CAAC,eAAe,CAAC,CAAkB;IAC1C,OAAO,CAAC,cAAc,CAAC,CAAO;IAE9B,OAAO,CAAC,GAAG,CAAqB;IAEhC,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;IAWpF,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAS/C,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;YAIvB,UAAU;CAoBzB;AAED,qBAAa,8BAA8B;IAC7B,OAAO,CAAC,SAAS;gBAAT,SAAS,GAAE,eAAsC;IAErE,MAAM,CAAC,EAAE,EAAE,yBAAyB,GAAG,YAAY;CAGpD;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,WAAW,EAAE,EAClB,eAAe,EAAE,eAAe,EAChC,cAAc,EAAE,EAAE,EAAE,EACpB,EAAE,EAAE,yBAAyB,EAC7B,SAAS,GAAE,eAAsC,oBAMlD"}
|
|
File without changes
|