@aztec/prover-client 0.87.3-nightly.20250529 → 0.87.4-starknet.1
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_builder/light.d.ts +4 -12
- package/dest/block_builder/light.d.ts.map +1 -1
- package/dest/block_builder/light.js +17 -27
- 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 +3 -5
- 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 +3 -4
- package/dest/orchestrator/orchestrator.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator.js +11 -16
- 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 +2 -3
- package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
- package/dest/proving_broker/broker_prover_facade.js +2 -9
- package/dest/proving_broker/proving_job_controller.d.ts.map +1 -1
- package/dest/proving_broker/proving_job_controller.js +1 -2
- package/dest/test/mock_prover.d.ts +1 -2
- package/dest/test/mock_prover.d.ts.map +1 -1
- package/dest/test/mock_prover.js +3 -3
- package/package.json +15 -15
- package/src/block_builder/light.ts +15 -28
- package/src/mocks/test_context.ts +2 -2
- package/src/orchestrator/block-building-helpers.ts +5 -5
- package/src/orchestrator/block-proving-state.ts +8 -4
- package/src/orchestrator/epoch-proving-state.ts +13 -9
- package/src/orchestrator/orchestrator.ts +14 -16
- package/src/orchestrator/tx-proving-state.ts +6 -11
- package/src/proving_broker/broker_prover_facade.ts +3 -12
- package/src/proving_broker/proving_job_controller.ts +1 -2
- package/src/test/mock_prover.ts +5 -10
|
@@ -5,19 +5,11 @@ import { type GlobalVariables, type ProcessedTx } from '@aztec/stdlib/tx';
|
|
|
5
5
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
6
6
|
/**
|
|
7
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
8
|
*/
|
|
18
9
|
export declare class LightweightBlockBuilder implements BlockBuilder {
|
|
19
10
|
private db;
|
|
20
11
|
private telemetry;
|
|
12
|
+
private spongeBlobState?;
|
|
21
13
|
private globalVariables?;
|
|
22
14
|
private l1ToL2Messages?;
|
|
23
15
|
private txs;
|
|
@@ -34,8 +26,8 @@ export declare class LightweightBlockBuilderFactory {
|
|
|
34
26
|
create(db: MerkleTreeWriteOperations): BlockBuilder;
|
|
35
27
|
}
|
|
36
28
|
/**
|
|
37
|
-
*
|
|
38
|
-
* @param db - A db fork to use for block building
|
|
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.
|
|
39
31
|
*/
|
|
40
|
-
export declare function
|
|
32
|
+
export declare function buildBlock(txs: ProcessedTx[], globalVariables: GlobalVariables, l1ToL2Messages: Fr[], db: MerkleTreeWriteOperations, telemetry?: TelemetryClient): Promise<L2Block>;
|
|
41
33
|
//# sourceMappingURL=light.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
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
|
|
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"}
|
|
@@ -7,21 +7,13 @@ 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 { buildHeaderAndBodyFromTxs, getTreeSnapshot
|
|
10
|
+
import { buildBaseRollupHints, buildHeaderAndBodyFromTxs, getTreeSnapshot } 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
|
-
*
|
|
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
13
|
*/ export class LightweightBlockBuilder {
|
|
23
14
|
db;
|
|
24
15
|
telemetry;
|
|
16
|
+
spongeBlobState;
|
|
25
17
|
globalVariables;
|
|
26
18
|
l1ToL2Messages;
|
|
27
19
|
txs;
|
|
@@ -29,6 +21,7 @@ import { buildHeaderAndBodyFromTxs, getTreeSnapshot, insertSideEffectsAndBuildBa
|
|
|
29
21
|
constructor(db, telemetry = getTelemetryClient()){
|
|
30
22
|
this.db = db;
|
|
31
23
|
this.telemetry = telemetry;
|
|
24
|
+
this.txs = [];
|
|
32
25
|
this.logger = createLogger('prover-client:block_builder');
|
|
33
26
|
}
|
|
34
27
|
async startNewBlock(globalVariables, l1ToL2Messages) {
|
|
@@ -38,25 +31,26 @@ import { buildHeaderAndBodyFromTxs, getTreeSnapshot, insertSideEffectsAndBuildBa
|
|
|
38
31
|
});
|
|
39
32
|
this.globalVariables = globalVariables;
|
|
40
33
|
this.l1ToL2Messages = padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
|
|
41
|
-
this.txs =
|
|
34
|
+
this.txs = [];
|
|
35
|
+
this.spongeBlobState = undefined;
|
|
42
36
|
// Update L1 to L2 tree
|
|
43
37
|
await this.db.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, this.l1ToL2Messages);
|
|
44
38
|
}
|
|
45
|
-
addTxs(txs) {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
this.txs.push(
|
|
39
|
+
async addTxs(txs) {
|
|
40
|
+
this.spongeBlobState = SpongeBlob.init(toNumBlobFields(txs));
|
|
41
|
+
for (const tx of txs){
|
|
42
|
+
this.logger.debug('Adding new tx to block', {
|
|
43
|
+
txHash: tx.hash.toString()
|
|
44
|
+
});
|
|
45
|
+
this.txs.push(tx);
|
|
46
|
+
await buildBaseRollupHints(tx, this.globalVariables, this.db, this.spongeBlobState);
|
|
52
47
|
}
|
|
53
|
-
return Promise.resolve();
|
|
54
48
|
}
|
|
55
49
|
setBlockCompleted() {
|
|
56
50
|
return this.buildBlock();
|
|
57
51
|
}
|
|
58
52
|
async buildBlock() {
|
|
59
|
-
const { header, body } = await buildHeaderAndBodyFromTxs(this.txs
|
|
53
|
+
const { header, body } = await buildHeaderAndBodyFromTxs(this.txs, this.globalVariables, this.l1ToL2Messages, this.db);
|
|
60
54
|
await this.db.updateArchive(header);
|
|
61
55
|
const newArchive = await getTreeSnapshot(MerkleTreeId.ARCHIVE, this.db);
|
|
62
56
|
const block = new L2Block(newArchive, header, body);
|
|
@@ -78,13 +72,9 @@ export class LightweightBlockBuilderFactory {
|
|
|
78
72
|
}
|
|
79
73
|
}
|
|
80
74
|
/**
|
|
81
|
-
*
|
|
82
|
-
* @param db - A db fork to use for block building
|
|
83
|
-
*/ export async function
|
|
84
|
-
const spongeBlobState = SpongeBlob.init(toNumBlobFields(txs));
|
|
85
|
-
for (const tx of txs){
|
|
86
|
-
await insertSideEffectsAndBuildBaseRollupHints(tx, globalVariables, db, spongeBlobState);
|
|
87
|
-
}
|
|
75
|
+
* Creates a block builder under the hood with the given txs and messages and creates a block.
|
|
76
|
+
* @param db - A db fork to use for block building.
|
|
77
|
+
*/ export async function buildBlock(txs, globalVariables, l1ToL2Messages, db, telemetry = getTelemetryClient()) {
|
|
88
78
|
const builder = new LightweightBlockBuilder(db, telemetry);
|
|
89
79
|
await builder.startNewBlock(globalVariables, l1ToL2Messages);
|
|
90
80
|
await builder.addTxs(txs);
|
|
@@ -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 { buildBlock } from '../block_builder/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 buildBlock(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 buildBaseRollupHints: (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 buildBaseRollupHints = 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 insertSideEffectsAndBuildBaseRollupHints = runInSpan('BlockBuilderH
|
|
|
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 contractClassLogsPreimages = makeTuple(MAX_CONTRACT_CLASS_LOGS_PER_TX, (i)=>tx.txEffect.contractClassLogs[i]?.toUnsiloed().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
|
+
contractClassLogsPreimages,
|
|
58
58
|
constants
|
|
59
59
|
});
|
|
60
60
|
} else {
|
|
@@ -83,7 +83,7 @@ export const insertSideEffectsAndBuildBaseRollupHints = runInSpan('BlockBuilderH
|
|
|
83
83
|
stateDiffHints,
|
|
84
84
|
feePayerFeeJuiceBalanceReadHint,
|
|
85
85
|
archiveRootMembershipWitness,
|
|
86
|
-
|
|
86
|
+
contractClassLogsPreimages,
|
|
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,14 +1,13 @@
|
|
|
1
1
|
import { SpongeBlob } from '@aztec/blob-lib';
|
|
2
|
-
import { BLOBS_PER_BLOCK, FIELDS_PER_BLOB, NUM_BASE_PARITY_PER_ROOT_PARITY } from '@aztec/constants';
|
|
2
|
+
import { BLOBS_PER_BLOCK, FIELDS_PER_BLOB, NUM_BASE_PARITY_PER_ROOT_PARITY, VK_TREE_HEIGHT } from '@aztec/constants';
|
|
3
3
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
4
4
|
import { Fr } from '@aztec/foundation/fields';
|
|
5
|
-
import { UnbalancedTreeStore } from '@aztec/foundation/trees';
|
|
5
|
+
import { MembershipWitness, 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';
|
|
12
11
|
import { buildBlobHints, buildHeaderFromCircuitOutputs } from './block-building-helpers.js';
|
|
13
12
|
/**
|
|
14
13
|
* The current state of the proving schedule for a given block. Managed by ProvingState.
|
|
@@ -266,8 +265,7 @@ import { buildBlobHints, buildHeaderFromCircuitOutputs } from './block-building-
|
|
|
266
265
|
}
|
|
267
266
|
#getPreviousRollupData({ inputs, proof, verificationKey }) {
|
|
268
267
|
const leafIndex = getVKIndex(verificationKey.keyAsFields);
|
|
269
|
-
|
|
270
|
-
return new PreviousRollupData(inputs, proof, vkData);
|
|
268
|
+
return new PreviousRollupData(inputs, proof, verificationKey.keyAsFields, new MembershipWitness(VK_TREE_HEIGHT, BigInt(leafIndex), getVKSiblingPath(leafIndex)));
|
|
271
269
|
}
|
|
272
270
|
#getRootParityData({ inputs, proof, verificationKey }) {
|
|
273
271
|
return new RootParityInput(proof, verificationKey.keyAsFields, getVKSiblingPath(getVKIndex(verificationKey)), inputs);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type ARCHIVE_HEIGHT, type L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH, type 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,KAAK,
|
|
1
|
+
{"version":3,"file":"epoch-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/epoch-proving-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { VK_TREE_HEIGHT } from '@aztec/constants';
|
|
2
|
+
import { MembershipWitness, UnbalancedTreeStore } from '@aztec/foundation/trees';
|
|
2
3
|
import { getVKIndex, getVKSiblingPath } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
3
4
|
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,7 +158,6 @@ 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
|
-
|
|
162
|
-
return new PreviousRollupBlockData(inputs, proof, vkData);
|
|
161
|
+
return new PreviousRollupBlockData(inputs, proof, verificationKey.keyAsFields, new MembershipWitness(VK_TREE_HEIGHT, BigInt(leafIndex), getVKSiblingPath(leafIndex)));
|
|
163
162
|
}
|
|
164
163
|
}
|
|
@@ -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":"AAWA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAQ9C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,EACV,WAAW,EACX,wBAAwB,EAGxB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AAWzC,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;AAEtH,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;IA8CjB,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 { 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';
|
|
7
|
+
import { AVM_PROOF_LENGTH_IN_FIELDS, AVM_VERIFICATION_KEY_LENGTH_IN_FIELDS, 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,15 +14,16 @@ 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';
|
|
18
17
|
import { L2Block } from '@aztec/stdlib/block';
|
|
19
18
|
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';
|
|
23
24
|
import { Attributes, getTelemetryClient, trackSpan, wrapCallbackInSpan } from '@aztec/telemetry-client';
|
|
24
25
|
import { inspect } from 'util';
|
|
25
|
-
import { buildHeaderAndBodyFromTxs, getLastSiblingPath, getRootTreeSiblingPath, getSubtreeSiblingPath, getTreeSnapshot,
|
|
26
|
+
import { buildBaseRollupHints, buildHeaderAndBodyFromTxs, getLastSiblingPath, getRootTreeSiblingPath, getSubtreeSiblingPath, getTreeSnapshot, validatePartialState, validateTx } from './block-building-helpers.js';
|
|
26
27
|
import { EpochProvingState } from './epoch-proving-state.js';
|
|
27
28
|
import { ProvingOrchestratorMetrics } from './orchestrator_metrics.js';
|
|
28
29
|
import { TxProvingState } from './tx-proving-state.js';
|
|
@@ -333,7 +334,7 @@ const logger = createLogger('prover-client:orchestrator');
|
|
|
333
334
|
const db = this.dbs.get(provingState.blockNumber);
|
|
334
335
|
// We build the base rollup inputs using a mock proof and verification key.
|
|
335
336
|
// These will be overwritten later once we have proven the tube circuit and any public kernels
|
|
336
|
-
const [ms, hints] = await elapsed(
|
|
337
|
+
const [ms, hints] = await elapsed(buildBaseRollupHints(tx, provingState.globalVariables, db, provingState.spongeBlobState));
|
|
337
338
|
this.metrics.recordBaseRollupInputs(ms);
|
|
338
339
|
const promises = [
|
|
339
340
|
MerkleTreeId.NOTE_HASH_TREE,
|
|
@@ -632,23 +633,17 @@ const logger = createLogger('prover-client:orchestrator');
|
|
|
632
633
|
}, async (signal)=>{
|
|
633
634
|
const inputs = txProvingState.getAvmInputs();
|
|
634
635
|
try {
|
|
635
|
-
|
|
636
|
-
// just keep the next line but removing the second argument (false).
|
|
637
|
-
return await this.prover.getAvmProof(inputs, false, signal, provingState.epochNumber);
|
|
636
|
+
return await this.prover.getAvmProof(inputs, signal, provingState.epochNumber);
|
|
638
637
|
} catch (err) {
|
|
639
638
|
if (process.env.AVM_PROVING_STRICT) {
|
|
640
639
|
logger.error(`Error thrown when proving AVM circuit with AVM_PROVING_STRICT on`, err);
|
|
641
640
|
throw err;
|
|
642
641
|
} else {
|
|
643
|
-
logger.warn(`Error thrown when proving AVM circuit but AVM_PROVING_STRICT is off.
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
} catch (err) {
|
|
649
|
-
logger.error(`Error thrown when proving snapshotted AVM inputs.`, err);
|
|
650
|
-
throw err;
|
|
651
|
-
}
|
|
642
|
+
logger.warn(`Error thrown when proving AVM circuit but AVM_PROVING_STRICT is off. Faking AVM proof and carrying on. ${inspect(err)}.`);
|
|
643
|
+
return {
|
|
644
|
+
proof: makeEmptyRecursiveProof(AVM_PROOF_LENGTH_IN_FIELDS),
|
|
645
|
+
verificationKey: VerificationKeyData.makeFake(AVM_VERIFICATION_KEY_LENGTH_IN_FIELDS)
|
|
646
|
+
};
|
|
652
647
|
}
|
|
653
648
|
}
|
|
654
649
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type AVM_PROOF_LENGTH_IN_FIELDS, 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_PROOF_LENGTH_IN_FIELDS>): 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,EAAE,KAAK,0BAA0B,EAAgB,KAAK,iBAAiB,EAAiB,MAAM,kBAAkB,CAAC;AAExH,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,CAA6D;gBAGvD,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,0BAA0B,CAAC;CAqE7F"}
|
|
@@ -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 { VkWitnessData } 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 { VkData } 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 VkWitnessData(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 VkWitnessData(this.avm.verificationKey, AVM_VK_INDEX, vkPath);
|
|
93
93
|
}
|
|
94
94
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { AVM_PROOF_LENGTH_IN_FIELDS, 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,8 +29,7 @@ export declare class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
29
29
|
private retrieveJobsThatShouldBeReady;
|
|
30
30
|
private backupFailedProofInputs;
|
|
31
31
|
private monitorForCompletedJobs;
|
|
32
|
-
getAvmProof(inputs: AvmCircuitInputs,
|
|
33
|
-
signal?: AbortSignal, epochNumber?: number): Promise<ProofAndVerificationKey<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>>;
|
|
32
|
+
getAvmProof(inputs: AvmCircuitInputs, signal?: AbortSignal, epochNumber?: number): Promise<ProofAndVerificationKey<typeof AVM_PROOF_LENGTH_IN_FIELDS>>;
|
|
34
33
|
getBaseParityProof(inputs: BaseParityInputs, signal?: AbortSignal, epochNumber?: number): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof RECURSIVE_PROOF_LENGTH>>;
|
|
35
34
|
getBlockMergeRollupProof(input: BlockMergeRollupInputs, signal?: AbortSignal, epochNumber?: number): Promise<PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
36
35
|
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,5 +1,4 @@
|
|
|
1
1
|
import { sha256 } from '@aztec/foundation/crypto';
|
|
2
|
-
import { Fr } from '@aztec/foundation/fields';
|
|
3
2
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
3
|
import { RunningPromise, promiseWithResolvers } from '@aztec/foundation/promise';
|
|
5
4
|
import { truncate } from '@aztec/foundation/string';
|
|
@@ -302,14 +301,8 @@ export class BrokerCircuitProverFacade {
|
|
|
302
301
|
// We have a list of jobs that we have been told are ready, so we go ahead and ask for their results
|
|
303
302
|
await this.retrieveJobsThatShouldBeReady();
|
|
304
303
|
}
|
|
305
|
-
getAvmProof(inputs,
|
|
306
|
-
this.
|
|
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
|
-
});
|
|
304
|
+
getAvmProof(inputs, signal, epochNumber) {
|
|
305
|
+
return this.enqueueJob(this.generateId(ProvingRequestType.PUBLIC_VM, inputs, epochNumber), ProvingRequestType.PUBLIC_VM, inputs, epochNumber, signal);
|
|
313
306
|
}
|
|
314
307
|
getBaseParityProof(inputs, signal, epochNumber) {
|
|
315
308
|
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;CA0D5B"}
|
|
@@ -113,8 +113,7 @@ export class ProvingJobController {
|
|
|
113
113
|
switch(type){
|
|
114
114
|
case ProvingRequestType.PUBLIC_VM:
|
|
115
115
|
{
|
|
116
|
-
|
|
117
|
-
return await this.circuitProver.getAvmProof(inputs, undefined, signal, this.epochNumber);
|
|
116
|
+
return await this.circuitProver.getAvmProof(inputs, signal, this.epochNumber);
|
|
118
117
|
}
|
|
119
118
|
case ProvingRequestType.PRIVATE_BASE_ROLLUP:
|
|
120
119
|
{
|
|
@@ -19,8 +19,7 @@ export declare class TestBroker implements ProvingJobProducer {
|
|
|
19
19
|
}
|
|
20
20
|
export declare class MockProver implements ServerCircuitProver {
|
|
21
21
|
constructor();
|
|
22
|
-
getAvmProof(_inputs: AvmCircuitInputs,
|
|
23
|
-
_signal?: AbortSignal, _epochNumber?: number): Promise<ProofAndVerificationKey<20000>>;
|
|
22
|
+
getAvmProof(_inputs: AvmCircuitInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<ProofAndVerificationKey<4154>>;
|
|
24
23
|
getBaseParityProof(_inputs: BaseParityInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<import("@aztec/stdlib/parity").ParityPublicInputs, 456>>;
|
|
25
24
|
getRootParityProof(_inputs: RootParityInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<import("@aztec/stdlib/parity").ParityPublicInputs, 456>>;
|
|
26
25
|
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_PROOF_LENGTH_IN_FIELDS, AVM_VERIFICATION_KEY_LENGTH_IN_FIELDS, 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,
|
|
47
|
-
return Promise.resolve(makeProofAndVerificationKey(makeEmptyRecursiveProof(
|
|
46
|
+
getAvmProof(_inputs, _signal, _epochNumber) {
|
|
47
|
+
return Promise.resolve(makeProofAndVerificationKey(makeEmptyRecursiveProof(AVM_PROOF_LENGTH_IN_FIELDS), VerificationKeyData.makeFake(AVM_VERIFICATION_KEY_LENGTH_IN_FIELDS)));
|
|
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,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/prover-client",
|
|
3
|
-
"version": "0.87.
|
|
3
|
+
"version": "0.87.4-starknet.1",
|
|
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": "0.87.
|
|
68
|
-
"@aztec/blob-lib": "0.87.
|
|
69
|
-
"@aztec/constants": "0.87.
|
|
70
|
-
"@aztec/ethereum": "0.87.
|
|
71
|
-
"@aztec/foundation": "0.87.
|
|
72
|
-
"@aztec/kv-store": "0.87.
|
|
73
|
-
"@aztec/noir-protocol-circuits-types": "0.87.
|
|
74
|
-
"@aztec/noir-types": "0.87.
|
|
75
|
-
"@aztec/protocol-contracts": "0.87.
|
|
76
|
-
"@aztec/simulator": "0.87.
|
|
77
|
-
"@aztec/stdlib": "0.87.
|
|
78
|
-
"@aztec/telemetry-client": "0.87.
|
|
79
|
-
"@aztec/world-state": "0.87.
|
|
67
|
+
"@aztec/bb-prover": "0.87.4-starknet.1",
|
|
68
|
+
"@aztec/blob-lib": "0.87.4-starknet.1",
|
|
69
|
+
"@aztec/constants": "0.87.4-starknet.1",
|
|
70
|
+
"@aztec/ethereum": "0.87.4-starknet.1",
|
|
71
|
+
"@aztec/foundation": "0.87.4-starknet.1",
|
|
72
|
+
"@aztec/kv-store": "0.87.4-starknet.1",
|
|
73
|
+
"@aztec/noir-protocol-circuits-types": "0.87.4-starknet.1",
|
|
74
|
+
"@aztec/noir-types": "0.87.4-starknet.1",
|
|
75
|
+
"@aztec/protocol-contracts": "0.87.4-starknet.1",
|
|
76
|
+
"@aztec/simulator": "0.87.4-starknet.1",
|
|
77
|
+
"@aztec/stdlib": "0.87.4-starknet.1",
|
|
78
|
+
"@aztec/telemetry-client": "0.87.4-starknet.1",
|
|
79
|
+
"@aztec/world-state": "0.87.4-starknet.1",
|
|
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.87.
|
|
89
|
+
"@aztec/noir-contracts.js": "0.87.4-starknet.1",
|
|
90
90
|
"@jest/globals": "^29.5.0",
|
|
91
91
|
"@types/jest": "^29.5.0",
|
|
92
92
|
"@types/node": "^22.15.17",
|
|
@@ -10,28 +10,20 @@ import { type GlobalVariables, type ProcessedTx, toNumBlobFields } from '@aztec/
|
|
|
10
10
|
import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
|
|
11
11
|
|
|
12
12
|
import {
|
|
13
|
+
buildBaseRollupHints,
|
|
13
14
|
buildHeaderAndBodyFromTxs,
|
|
14
15
|
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.
|
|
29
20
|
*/
|
|
30
21
|
export class LightweightBlockBuilder implements BlockBuilder {
|
|
22
|
+
private spongeBlobState?: SpongeBlob;
|
|
31
23
|
private globalVariables?: GlobalVariables;
|
|
32
24
|
private l1ToL2Messages?: Fr[];
|
|
33
25
|
|
|
34
|
-
private txs: ProcessedTx[]
|
|
26
|
+
private txs: ProcessedTx[] = [];
|
|
35
27
|
|
|
36
28
|
private readonly logger = createLogger('prover-client:block_builder');
|
|
37
29
|
|
|
@@ -44,21 +36,20 @@ export class LightweightBlockBuilder implements BlockBuilder {
|
|
|
44
36
|
this.logger.debug('Starting new block', { globalVariables: globalVariables.toInspect(), l1ToL2Messages });
|
|
45
37
|
this.globalVariables = globalVariables;
|
|
46
38
|
this.l1ToL2Messages = padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
|
|
47
|
-
this.txs =
|
|
39
|
+
this.txs = [];
|
|
40
|
+
this.spongeBlobState = undefined;
|
|
48
41
|
|
|
49
42
|
// Update L1 to L2 tree
|
|
50
43
|
await this.db.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, this.l1ToL2Messages!);
|
|
51
44
|
}
|
|
52
45
|
|
|
53
|
-
addTxs(txs: ProcessedTx[]): Promise<void> {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
this.txs
|
|
58
|
-
|
|
59
|
-
this.txs.push(...txs);
|
|
46
|
+
async addTxs(txs: ProcessedTx[]): Promise<void> {
|
|
47
|
+
this.spongeBlobState = SpongeBlob.init(toNumBlobFields(txs));
|
|
48
|
+
for (const tx of txs) {
|
|
49
|
+
this.logger.debug('Adding new tx to block', { txHash: tx.hash.toString() });
|
|
50
|
+
this.txs.push(tx);
|
|
51
|
+
await buildBaseRollupHints(tx, this.globalVariables!, this.db, this.spongeBlobState!);
|
|
60
52
|
}
|
|
61
|
-
return Promise.resolve();
|
|
62
53
|
}
|
|
63
54
|
|
|
64
55
|
setBlockCompleted(): Promise<L2Block> {
|
|
@@ -67,7 +58,7 @@ export class LightweightBlockBuilder implements BlockBuilder {
|
|
|
67
58
|
|
|
68
59
|
private async buildBlock(): Promise<L2Block> {
|
|
69
60
|
const { header, body } = await buildHeaderAndBodyFromTxs(
|
|
70
|
-
this.txs
|
|
61
|
+
this.txs,
|
|
71
62
|
this.globalVariables!,
|
|
72
63
|
this.l1ToL2Messages!,
|
|
73
64
|
this.db,
|
|
@@ -96,20 +87,16 @@ export class LightweightBlockBuilderFactory {
|
|
|
96
87
|
}
|
|
97
88
|
|
|
98
89
|
/**
|
|
99
|
-
*
|
|
100
|
-
* @param db - A db fork to use for block building
|
|
90
|
+
* Creates a block builder under the hood with the given txs and messages and creates a block.
|
|
91
|
+
* @param db - A db fork to use for block building.
|
|
101
92
|
*/
|
|
102
|
-
export async function
|
|
93
|
+
export async function buildBlock(
|
|
103
94
|
txs: ProcessedTx[],
|
|
104
95
|
globalVariables: GlobalVariables,
|
|
105
96
|
l1ToL2Messages: Fr[],
|
|
106
97
|
db: MerkleTreeWriteOperations,
|
|
107
98
|
telemetry: TelemetryClient = getTelemetryClient(),
|
|
108
99
|
) {
|
|
109
|
-
const spongeBlobState = SpongeBlob.init(toNumBlobFields(txs));
|
|
110
|
-
for (const tx of txs) {
|
|
111
|
-
await insertSideEffectsAndBuildBaseRollupHints(tx, globalVariables, db, spongeBlobState);
|
|
112
|
-
}
|
|
113
100
|
const builder = new LightweightBlockBuilder(db, telemetry);
|
|
114
101
|
await builder.startNewBlock(globalVariables, l1ToL2Messages);
|
|
115
102
|
await builder.addTxs(txs);
|
|
@@ -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 { buildBlock } from '../block_builder/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 buildBlock(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 buildBaseRollupHints = runInSpan(
|
|
68
68
|
'BlockBuilderHelpers',
|
|
69
69
|
'buildBaseRollupHints',
|
|
70
70
|
async (
|
|
@@ -138,9 +138,9 @@ export const insertSideEffectsAndBuildBaseRollupHints = runInSpan(
|
|
|
138
138
|
const inputSpongeBlob = startSpongeBlob.clone();
|
|
139
139
|
await startSpongeBlob.absorb(tx.txEffect.toBlobFields());
|
|
140
140
|
|
|
141
|
-
const
|
|
141
|
+
const contractClassLogsPreimages = makeTuple(
|
|
142
142
|
MAX_CONTRACT_CLASS_LOGS_PER_TX,
|
|
143
|
-
i => tx.txEffect.contractClassLogs[i]?.fields || ContractClassLogFields.empty(),
|
|
143
|
+
i => tx.txEffect.contractClassLogs[i]?.toUnsiloed().fields || ContractClassLogFields.empty(),
|
|
144
144
|
);
|
|
145
145
|
|
|
146
146
|
if (tx.avmProvingRequest) {
|
|
@@ -155,7 +155,7 @@ export const insertSideEffectsAndBuildBaseRollupHints = runInSpan(
|
|
|
155
155
|
return PublicBaseRollupHints.from({
|
|
156
156
|
startSpongeBlob: inputSpongeBlob,
|
|
157
157
|
archiveRootMembershipWitness,
|
|
158
|
-
|
|
158
|
+
contractClassLogsPreimages,
|
|
159
159
|
constants,
|
|
160
160
|
});
|
|
161
161
|
} else {
|
|
@@ -210,7 +210,7 @@ export const insertSideEffectsAndBuildBaseRollupHints = runInSpan(
|
|
|
210
210
|
stateDiffHints,
|
|
211
211
|
feePayerFeeJuiceBalanceReadHint,
|
|
212
212
|
archiveRootMembershipWitness,
|
|
213
|
-
|
|
213
|
+
contractClassLogsPreimages,
|
|
214
214
|
constants,
|
|
215
215
|
});
|
|
216
216
|
}
|
|
@@ -7,11 +7,12 @@ 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,
|
|
10
11
|
} from '@aztec/constants';
|
|
11
12
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
12
13
|
import { Fr } from '@aztec/foundation/fields';
|
|
13
14
|
import type { Tuple } from '@aztec/foundation/serialize';
|
|
14
|
-
import { type TreeNodeLocation, UnbalancedTreeStore } from '@aztec/foundation/trees';
|
|
15
|
+
import { MembershipWitness, type TreeNodeLocation, UnbalancedTreeStore } from '@aztec/foundation/trees';
|
|
15
16
|
import { getVKIndex, getVKSiblingPath, getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
16
17
|
import { protocolContractTreeRoot } from '@aztec/protocol-contracts';
|
|
17
18
|
import type { L2Block } from '@aztec/stdlib/block';
|
|
@@ -32,7 +33,6 @@ import {
|
|
|
32
33
|
import type { CircuitName } from '@aztec/stdlib/stats';
|
|
33
34
|
import type { AppendOnlyTreeSnapshot, MerkleTreeId } from '@aztec/stdlib/trees';
|
|
34
35
|
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,8 +361,12 @@ 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
|
-
|
|
364
|
+
return new PreviousRollupData(
|
|
365
|
+
inputs,
|
|
366
|
+
proof,
|
|
367
|
+
verificationKey.keyAsFields,
|
|
368
|
+
new MembershipWitness(VK_TREE_HEIGHT, BigInt(leafIndex), getVKSiblingPath(leafIndex)),
|
|
369
|
+
);
|
|
366
370
|
}
|
|
367
371
|
|
|
368
372
|
#getRootParityData({ inputs, proof, verificationKey }: PublicInputsAndRecursiveProof<ParityPublicInputs>) {
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import
|
|
2
|
-
ARCHIVE_HEIGHT,
|
|
3
|
-
L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH,
|
|
4
|
-
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
5
|
-
TUBE_PROOF_LENGTH,
|
|
1
|
+
import {
|
|
2
|
+
type ARCHIVE_HEIGHT,
|
|
3
|
+
type L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH,
|
|
4
|
+
type NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
5
|
+
type TUBE_PROOF_LENGTH,
|
|
6
|
+
VK_TREE_HEIGHT,
|
|
6
7
|
} from '@aztec/constants';
|
|
7
8
|
import type { Fr } from '@aztec/foundation/fields';
|
|
8
9
|
import type { Tuple } from '@aztec/foundation/serialize';
|
|
9
|
-
import { type TreeNodeLocation, UnbalancedTreeStore } from '@aztec/foundation/trees';
|
|
10
|
+
import { MembershipWitness, type TreeNodeLocation, UnbalancedTreeStore } from '@aztec/foundation/trees';
|
|
10
11
|
import { getVKIndex, getVKSiblingPath } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
11
12
|
import type { ProofAndVerificationKey, PublicInputsAndRecursiveProof } from '@aztec/stdlib/interfaces/server';
|
|
12
13
|
import type { Proof } from '@aztec/stdlib/proofs';
|
|
@@ -19,7 +20,6 @@ import {
|
|
|
19
20
|
} from '@aztec/stdlib/rollup';
|
|
20
21
|
import type { AppendOnlyTreeSnapshot, MerkleTreeId } from '@aztec/stdlib/trees';
|
|
21
22
|
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,7 +244,11 @@ export class EpochProvingState {
|
|
|
244
244
|
typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH
|
|
245
245
|
>) {
|
|
246
246
|
const leafIndex = getVKIndex(verificationKey.keyAsFields);
|
|
247
|
-
|
|
248
|
-
|
|
247
|
+
return new PreviousRollupBlockData(
|
|
248
|
+
inputs,
|
|
249
|
+
proof,
|
|
250
|
+
verificationKey.keyAsFields,
|
|
251
|
+
new MembershipWitness(VK_TREE_HEIGHT, BigInt(leafIndex), getVKSiblingPath(leafIndex)),
|
|
252
|
+
);
|
|
249
253
|
}
|
|
250
254
|
}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
|
+
AVM_PROOF_LENGTH_IN_FIELDS,
|
|
3
|
+
AVM_VERIFICATION_KEY_LENGTH_IN_FIELDS,
|
|
2
4
|
L1_TO_L2_MSG_SUBTREE_HEIGHT,
|
|
3
5
|
L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH,
|
|
4
6
|
NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP,
|
|
@@ -15,7 +17,6 @@ import { pushTestData } from '@aztec/foundation/testing';
|
|
|
15
17
|
import { elapsed } from '@aztec/foundation/timer';
|
|
16
18
|
import type { TreeNodeLocation } from '@aztec/foundation/trees';
|
|
17
19
|
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
18
|
-
import { readAvmMinimalPublicTxInputsFromFile } from '@aztec/simulator/public/fixtures';
|
|
19
20
|
import { L2Block } from '@aztec/stdlib/block';
|
|
20
21
|
import type {
|
|
21
22
|
EpochProver,
|
|
@@ -25,6 +26,7 @@ import type {
|
|
|
25
26
|
ServerCircuitProver,
|
|
26
27
|
} from '@aztec/stdlib/interfaces/server';
|
|
27
28
|
import { BaseParityInputs } from '@aztec/stdlib/parity';
|
|
29
|
+
import { makeEmptyRecursiveProof } from '@aztec/stdlib/proofs';
|
|
28
30
|
import {
|
|
29
31
|
type BaseRollupHints,
|
|
30
32
|
EmptyBlockRootRollupInputs,
|
|
@@ -35,6 +37,7 @@ import {
|
|
|
35
37
|
import type { CircuitName } from '@aztec/stdlib/stats';
|
|
36
38
|
import { type AppendOnlyTreeSnapshot, MerkleTreeId } from '@aztec/stdlib/trees';
|
|
37
39
|
import { type BlockHeader, type GlobalVariables, type ProcessedTx, type Tx, toNumBlobFields } from '@aztec/stdlib/tx';
|
|
40
|
+
import { VerificationKeyData } from '@aztec/stdlib/vks';
|
|
38
41
|
import {
|
|
39
42
|
Attributes,
|
|
40
43
|
type TelemetryClient,
|
|
@@ -47,12 +50,12 @@ import {
|
|
|
47
50
|
import { inspect } from 'util';
|
|
48
51
|
|
|
49
52
|
import {
|
|
53
|
+
buildBaseRollupHints,
|
|
50
54
|
buildHeaderAndBodyFromTxs,
|
|
51
55
|
getLastSiblingPath,
|
|
52
56
|
getRootTreeSiblingPath,
|
|
53
57
|
getSubtreeSiblingPath,
|
|
54
58
|
getTreeSnapshot,
|
|
55
|
-
insertSideEffectsAndBuildBaseRollupHints,
|
|
56
59
|
validatePartialState,
|
|
57
60
|
validateTx,
|
|
58
61
|
} from './block-building-helpers.js';
|
|
@@ -489,7 +492,7 @@ export class ProvingOrchestrator implements EpochProver {
|
|
|
489
492
|
// We build the base rollup inputs using a mock proof and verification key.
|
|
490
493
|
// These will be overwritten later once we have proven the tube circuit and any public kernels
|
|
491
494
|
const [ms, hints] = await elapsed(
|
|
492
|
-
|
|
495
|
+
buildBaseRollupHints(tx, provingState.globalVariables, db, provingState.spongeBlobState),
|
|
493
496
|
);
|
|
494
497
|
|
|
495
498
|
this.metrics.recordBaseRollupInputs(ms);
|
|
@@ -930,26 +933,21 @@ export class ProvingOrchestrator implements EpochProver {
|
|
|
930
933
|
async (signal: AbortSignal) => {
|
|
931
934
|
const inputs = txProvingState.getAvmInputs();
|
|
932
935
|
try {
|
|
933
|
-
|
|
934
|
-
// just keep the next line but removing the second argument (false).
|
|
935
|
-
return await this.prover.getAvmProof(inputs, false, signal, provingState.epochNumber);
|
|
936
|
+
return await this.prover.getAvmProof(inputs, signal, provingState.epochNumber);
|
|
936
937
|
} catch (err) {
|
|
937
938
|
if (process.env.AVM_PROVING_STRICT) {
|
|
938
939
|
logger.error(`Error thrown when proving AVM circuit with AVM_PROVING_STRICT on`, err);
|
|
939
940
|
throw err;
|
|
940
941
|
} else {
|
|
941
942
|
logger.warn(
|
|
942
|
-
`Error thrown when proving AVM circuit but AVM_PROVING_STRICT is off.
|
|
943
|
-
|
|
943
|
+
`Error thrown when proving AVM circuit but AVM_PROVING_STRICT is off. Faking AVM proof and carrying on. ${inspect(
|
|
944
|
+
err,
|
|
945
|
+
)}.`,
|
|
944
946
|
);
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
} catch (err) {
|
|
950
|
-
logger.error(`Error thrown when proving snapshotted AVM inputs.`, err);
|
|
951
|
-
throw err;
|
|
952
|
-
}
|
|
947
|
+
return {
|
|
948
|
+
proof: makeEmptyRecursiveProof(AVM_PROOF_LENGTH_IN_FIELDS),
|
|
949
|
+
verificationKey: VerificationKeyData.makeFake(AVM_VERIFICATION_KEY_LENGTH_IN_FIELDS),
|
|
950
|
+
};
|
|
953
951
|
}
|
|
954
952
|
}
|
|
955
953
|
},
|
|
@@ -1,9 +1,4 @@
|
|
|
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';
|
|
1
|
+
import { type AVM_PROOF_LENGTH_IN_FIELDS, AVM_VK_INDEX, type TUBE_PROOF_LENGTH, TUBE_VK_INDEX } from '@aztec/constants';
|
|
7
2
|
import { getVKIndex, getVKSiblingPath } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
8
3
|
import type { AvmCircuitInputs } from '@aztec/stdlib/avm';
|
|
9
4
|
import type { ProofAndVerificationKey } from '@aztec/stdlib/interfaces/server';
|
|
@@ -21,7 +16,7 @@ import {
|
|
|
21
16
|
import type { CircuitName } from '@aztec/stdlib/stats';
|
|
22
17
|
import type { AppendOnlyTreeSnapshot, MerkleTreeId } from '@aztec/stdlib/trees';
|
|
23
18
|
import type { ProcessedTx } from '@aztec/stdlib/tx';
|
|
24
|
-
import {
|
|
19
|
+
import { VkWitnessData } from '@aztec/stdlib/vks';
|
|
25
20
|
|
|
26
21
|
/**
|
|
27
22
|
* Helper class to manage the proving cycle of a transaction
|
|
@@ -30,7 +25,7 @@ import { VkData } from '@aztec/stdlib/vks';
|
|
|
30
25
|
*/
|
|
31
26
|
export class TxProvingState {
|
|
32
27
|
private tube?: ProofAndVerificationKey<typeof TUBE_PROOF_LENGTH>;
|
|
33
|
-
private avm?: ProofAndVerificationKey<typeof
|
|
28
|
+
private avm?: ProofAndVerificationKey<typeof AVM_PROOF_LENGTH_IN_FIELDS>;
|
|
34
29
|
|
|
35
30
|
constructor(
|
|
36
31
|
public readonly processedTx: ProcessedTx,
|
|
@@ -72,7 +67,7 @@ export class TxProvingState {
|
|
|
72
67
|
this.tube = tubeProofAndVk;
|
|
73
68
|
}
|
|
74
69
|
|
|
75
|
-
public setAvmProof(avmProofAndVk: ProofAndVerificationKey<typeof
|
|
70
|
+
public setAvmProof(avmProofAndVk: ProofAndVerificationKey<typeof AVM_PROOF_LENGTH_IN_FIELDS>) {
|
|
76
71
|
this.avm = avmProofAndVk;
|
|
77
72
|
}
|
|
78
73
|
|
|
@@ -133,12 +128,12 @@ export class TxProvingState {
|
|
|
133
128
|
}
|
|
134
129
|
const vkPath = getVKSiblingPath(vkIndex);
|
|
135
130
|
|
|
136
|
-
return new
|
|
131
|
+
return new VkWitnessData(this.tube!.verificationKey, vkIndex, vkPath);
|
|
137
132
|
}
|
|
138
133
|
|
|
139
134
|
#getAvmVkData() {
|
|
140
135
|
const vkIndex = AVM_VK_INDEX;
|
|
141
136
|
const vkPath = getVKSiblingPath(vkIndex);
|
|
142
|
-
return new
|
|
137
|
+
return new VkWitnessData(this.avm!.verificationKey, AVM_VK_INDEX, vkPath);
|
|
143
138
|
}
|
|
144
139
|
}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import type {
|
|
2
|
-
|
|
2
|
+
AVM_PROOF_LENGTH_IN_FIELDS,
|
|
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';
|
|
10
9
|
import { createLogger } from '@aztec/foundation/log';
|
|
11
10
|
import { type PromiseWithResolvers, RunningPromise, promiseWithResolvers } from '@aztec/foundation/promise';
|
|
12
11
|
import { truncate } from '@aztec/foundation/string';
|
|
@@ -390,24 +389,16 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
390
389
|
|
|
391
390
|
getAvmProof(
|
|
392
391
|
inputs: AvmCircuitInputs,
|
|
393
|
-
skipPublicInputsValidation?: boolean, // TODO(#14234)[Unconditional PIs validation]: remove this argument
|
|
394
392
|
signal?: AbortSignal,
|
|
395
393
|
epochNumber?: number,
|
|
396
|
-
): Promise<ProofAndVerificationKey<typeof
|
|
397
|
-
this.log.info(`getAvmProof() called with skipPublicInputsValidation: ${skipPublicInputsValidation}`);
|
|
398
|
-
|
|
394
|
+
): Promise<ProofAndVerificationKey<typeof AVM_PROOF_LENGTH_IN_FIELDS>> {
|
|
399
395
|
return this.enqueueJob(
|
|
400
396
|
this.generateId(ProvingRequestType.PUBLIC_VM, inputs, epochNumber),
|
|
401
397
|
ProvingRequestType.PUBLIC_VM,
|
|
402
398
|
inputs,
|
|
403
399
|
epochNumber,
|
|
404
400
|
signal,
|
|
405
|
-
)
|
|
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
|
-
});
|
|
401
|
+
);
|
|
411
402
|
}
|
|
412
403
|
|
|
413
404
|
getBaseParityProof(
|
|
@@ -124,8 +124,7 @@ export class ProvingJobController {
|
|
|
124
124
|
const signal = this.abortController.signal;
|
|
125
125
|
switch (type) {
|
|
126
126
|
case ProvingRequestType.PUBLIC_VM: {
|
|
127
|
-
|
|
128
|
-
return await this.circuitProver.getAvmProof(inputs, undefined, signal, this.epochNumber);
|
|
127
|
+
return await this.circuitProver.getAvmProof(inputs, signal, this.epochNumber);
|
|
129
128
|
}
|
|
130
129
|
|
|
131
130
|
case ProvingRequestType.PRIVATE_BASE_ROLLUP: {
|
package/src/test/mock_prover.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
AVM_PROOF_LENGTH_IN_FIELDS,
|
|
3
|
+
AVM_VERIFICATION_KEY_LENGTH_IN_FIELDS,
|
|
4
4
|
NESTED_RECURSIVE_PROOF_LENGTH,
|
|
5
5
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
6
6
|
RECURSIVE_PROOF_LENGTH,
|
|
@@ -96,16 +96,11 @@ export class TestBroker implements ProvingJobProducer {
|
|
|
96
96
|
export class MockProver implements ServerCircuitProver {
|
|
97
97
|
constructor() {}
|
|
98
98
|
|
|
99
|
-
getAvmProof(
|
|
100
|
-
_inputs: AvmCircuitInputs,
|
|
101
|
-
_skipPublicInputsValidation?: boolean, // TODO(#14234)[Unconditional PIs validation]: Remove.
|
|
102
|
-
_signal?: AbortSignal,
|
|
103
|
-
_epochNumber?: number,
|
|
104
|
-
) {
|
|
99
|
+
getAvmProof(_inputs: AvmCircuitInputs, _signal?: AbortSignal, _epochNumber?: number) {
|
|
105
100
|
return Promise.resolve(
|
|
106
101
|
makeProofAndVerificationKey(
|
|
107
|
-
makeEmptyRecursiveProof(
|
|
108
|
-
VerificationKeyData.makeFake(
|
|
102
|
+
makeEmptyRecursiveProof(AVM_PROOF_LENGTH_IN_FIELDS),
|
|
103
|
+
VerificationKeyData.makeFake(AVM_VERIFICATION_KEY_LENGTH_IN_FIELDS),
|
|
109
104
|
),
|
|
110
105
|
);
|
|
111
106
|
}
|