@aztec/prover-client 0.0.1-commit.9b94fc1 → 0.0.1-commit.9ee6fcc6
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/config.d.ts +2 -2
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +13 -3
- package/dest/light/index.d.ts +2 -0
- package/dest/light/index.d.ts.map +1 -0
- package/dest/light/index.js +1 -0
- package/dest/light/lightweight_checkpoint_builder.d.ts +38 -14
- package/dest/light/lightweight_checkpoint_builder.d.ts.map +1 -1
- package/dest/light/lightweight_checkpoint_builder.js +148 -32
- package/dest/mocks/fixtures.d.ts +1 -1
- package/dest/mocks/fixtures.d.ts.map +1 -1
- package/dest/mocks/fixtures.js +6 -5
- package/dest/mocks/test_context.d.ts +5 -3
- package/dest/mocks/test_context.d.ts.map +1 -1
- package/dest/mocks/test_context.js +33 -14
- package/dest/orchestrator/block-building-helpers.d.ts +6 -6
- package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
- package/dest/orchestrator/block-building-helpers.js +7 -6
- package/dest/orchestrator/block-proving-state.d.ts +8 -4
- package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/block-proving-state.js +8 -1
- package/dest/orchestrator/checkpoint-proving-state.d.ts +22 -8
- package/dest/orchestrator/checkpoint-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/checkpoint-proving-state.js +43 -8
- package/dest/orchestrator/epoch-proving-state.d.ts +10 -9
- package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/epoch-proving-state.js +38 -2
- package/dest/orchestrator/orchestrator.d.ts +25 -8
- package/dest/orchestrator/orchestrator.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator.js +568 -158
- package/dest/orchestrator/orchestrator_metrics.d.ts +1 -3
- package/dest/orchestrator/orchestrator_metrics.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator_metrics.js +2 -15
- package/dest/orchestrator/tx-proving-state.d.ts +6 -5
- package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/tx-proving-state.js +8 -8
- package/dest/prover-client/factory.d.ts +3 -3
- package/dest/prover-client/factory.d.ts.map +1 -1
- package/dest/prover-client/prover-client.d.ts +6 -6
- package/dest/prover-client/prover-client.d.ts.map +1 -1
- package/dest/prover-client/prover-client.js +15 -10
- package/dest/prover-client/server-epoch-prover.d.ts +5 -5
- package/dest/prover-client/server-epoch-prover.d.ts.map +1 -1
- package/dest/proving_broker/broker_prover_facade.d.ts +7 -5
- package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
- package/dest/proving_broker/broker_prover_facade.js +18 -31
- package/dest/proving_broker/config.d.ts +15 -3
- package/dest/proving_broker/config.d.ts.map +1 -1
- package/dest/proving_broker/config.js +21 -4
- package/dest/proving_broker/fixtures.js +1 -1
- package/dest/proving_broker/proof_store/factory.d.ts +2 -5
- package/dest/proving_broker/proof_store/factory.d.ts.map +1 -1
- package/dest/proving_broker/proof_store/factory.js +7 -30
- package/dest/proving_broker/proof_store/file_store_proof_store.d.ts +18 -0
- package/dest/proving_broker/proof_store/file_store_proof_store.d.ts.map +1 -0
- package/dest/proving_broker/proof_store/file_store_proof_store.js +60 -0
- package/dest/proving_broker/proof_store/index.d.ts +2 -2
- package/dest/proving_broker/proof_store/index.d.ts.map +1 -1
- package/dest/proving_broker/proof_store/index.js +1 -1
- package/dest/proving_broker/proving_agent.d.ts +5 -9
- package/dest/proving_broker/proving_agent.d.ts.map +1 -1
- package/dest/proving_broker/proving_agent.js +4 -19
- package/dest/proving_broker/proving_broker.d.ts +7 -4
- package/dest/proving_broker/proving_broker.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker.js +40 -14
- package/dest/proving_broker/proving_broker_database/persisted.d.ts +3 -2
- package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_database/persisted.js +389 -1
- package/dest/proving_broker/proving_broker_instrumentation.d.ts +3 -1
- package/dest/proving_broker/proving_broker_instrumentation.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_instrumentation.js +22 -35
- package/dest/proving_broker/proving_job_controller.d.ts +4 -3
- package/dest/proving_broker/proving_job_controller.d.ts.map +1 -1
- package/dest/proving_broker/proving_job_controller.js +8 -6
- package/dest/proving_broker/rpc.d.ts +4 -2
- package/dest/proving_broker/rpc.d.ts.map +1 -1
- package/dest/proving_broker/rpc.js +8 -0
- package/dest/test/mock_proof_store.d.ts +3 -3
- package/dest/test/mock_proof_store.d.ts.map +1 -1
- package/dest/test/mock_prover.d.ts +5 -5
- package/dest/test/mock_prover.d.ts.map +1 -1
- package/dest/test/mock_prover.js +4 -4
- package/package.json +22 -22
- package/src/config.ts +14 -3
- package/src/light/index.ts +1 -0
- package/src/light/lightweight_checkpoint_builder.ts +215 -45
- package/src/mocks/fixtures.ts +6 -5
- package/src/mocks/test_context.ts +30 -13
- package/src/orchestrator/block-building-helpers.ts +7 -6
- package/src/orchestrator/block-proving-state.ts +12 -2
- package/src/orchestrator/checkpoint-proving-state.ts +60 -12
- package/src/orchestrator/epoch-proving-state.ts +66 -13
- package/src/orchestrator/orchestrator.ts +173 -147
- package/src/orchestrator/orchestrator_metrics.ts +2 -25
- package/src/orchestrator/tx-proving-state.ts +10 -14
- package/src/prover-client/factory.ts +6 -2
- package/src/prover-client/prover-client.ts +33 -24
- package/src/prover-client/server-epoch-prover.ts +4 -4
- package/src/proving_broker/broker_prover_facade.ts +26 -36
- package/src/proving_broker/config.ts +24 -2
- package/src/proving_broker/fixtures.ts +1 -1
- package/src/proving_broker/proof_store/factory.ts +10 -32
- package/src/proving_broker/proof_store/file_store_proof_store.ts +78 -0
- package/src/proving_broker/proof_store/index.ts +1 -1
- package/src/proving_broker/proving_agent.ts +6 -19
- package/src/proving_broker/proving_broker.ts +41 -11
- package/src/proving_broker/proving_broker_database/persisted.ts +15 -1
- package/src/proving_broker/proving_broker_instrumentation.ts +23 -35
- package/src/proving_broker/proving_job_controller.ts +11 -6
- package/src/proving_broker/rpc.ts +14 -0
- package/src/test/mock_prover.ts +2 -14
- package/dest/block-factory/index.d.ts +0 -2
- package/dest/block-factory/index.d.ts.map +0 -1
- package/dest/block-factory/index.js +0 -1
- package/dest/block-factory/light.d.ts +0 -38
- package/dest/block-factory/light.d.ts.map +0 -1
- package/dest/block-factory/light.js +0 -108
- package/dest/proving_broker/proof_store/gcs_proof_store.d.ts +0 -14
- package/dest/proving_broker/proof_store/gcs_proof_store.d.ts.map +0 -1
- package/dest/proving_broker/proof_store/gcs_proof_store.js +0 -52
- package/dest/proving_broker/proving_agent_instrumentation.d.ts +0 -8
- package/dest/proving_broker/proving_agent_instrumentation.d.ts.map +0 -1
- package/dest/proving_broker/proving_agent_instrumentation.js +0 -16
- package/src/block-factory/index.ts +0 -1
- package/src/block-factory/light.ts +0 -137
- package/src/proving_broker/proof_store/gcs_proof_store.ts +0 -76
- package/src/proving_broker/proving_agent_instrumentation.ts +0 -21
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { TestCircuitProver } from '@aztec/bb-prover';
|
|
2
2
|
import { NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/constants';
|
|
3
|
+
import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
3
4
|
import { padArrayEnd, times, timesAsync } from '@aztec/foundation/collection';
|
|
4
|
-
import { Fr } from '@aztec/foundation/
|
|
5
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
5
6
|
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
6
7
|
import { ProtocolContractsList } from '@aztec/protocol-contracts';
|
|
7
8
|
import { computeFeePayerBalanceLeafSlot } from '@aztec/protocol-contracts/fee-juice';
|
|
@@ -30,7 +31,9 @@ export class TestContext {
|
|
|
30
31
|
logger;
|
|
31
32
|
headers;
|
|
32
33
|
checkpoints;
|
|
34
|
+
checkpointOutHashes;
|
|
33
35
|
nextCheckpointIndex;
|
|
36
|
+
nextCheckpointNumber;
|
|
34
37
|
nextBlockNumber;
|
|
35
38
|
epochNumber;
|
|
36
39
|
feePayerBalance;
|
|
@@ -45,7 +48,9 @@ export class TestContext {
|
|
|
45
48
|
this.logger = logger;
|
|
46
49
|
this.headers = new Map();
|
|
47
50
|
this.checkpoints = [];
|
|
51
|
+
this.checkpointOutHashes = [];
|
|
48
52
|
this.nextCheckpointIndex = 0;
|
|
53
|
+
this.nextCheckpointNumber = CheckpointNumber(1);
|
|
49
54
|
this.nextBlockNumber = 1;
|
|
50
55
|
this.epochNumber = 1;
|
|
51
56
|
this.feePayerBalance = initialFeePayerBalance;
|
|
@@ -74,8 +79,10 @@ export class TestContext {
|
|
|
74
79
|
bbBinaryPath: config.expectedBBPath,
|
|
75
80
|
bbWorkingDirectory: config.bbWorkingDirectory,
|
|
76
81
|
bbSkipCleanup: config.bbSkipCleanup,
|
|
77
|
-
numConcurrentIVCVerifiers:
|
|
78
|
-
bbIVCConcurrency: 1
|
|
82
|
+
numConcurrentIVCVerifiers: 8,
|
|
83
|
+
bbIVCConcurrency: 1,
|
|
84
|
+
bbChonkVerifyMaxBatch: 16,
|
|
85
|
+
bbChonkVerifyConcurrency: 6
|
|
79
86
|
};
|
|
80
87
|
localProver = await createProver(bbConfig);
|
|
81
88
|
}
|
|
@@ -84,7 +91,7 @@ export class TestContext {
|
|
|
84
91
|
}
|
|
85
92
|
const broker = new TestBroker(proverCount, localProver);
|
|
86
93
|
const facade = new BrokerCircuitProverFacade(broker);
|
|
87
|
-
const orchestrator = new TestProvingOrchestrator(ws, facade, EthAddress.ZERO);
|
|
94
|
+
const orchestrator = new TestProvingOrchestrator(ws, facade, EthAddress.ZERO, false, 10);
|
|
88
95
|
await broker.start();
|
|
89
96
|
facade.start();
|
|
90
97
|
return new this(ws, localProver, broker, facade, orchestrator, feePayer, initialFeePayerBalance, directoriesToCleanup, logger);
|
|
@@ -109,6 +116,7 @@ export class TestContext {
|
|
|
109
116
|
}
|
|
110
117
|
startNewEpoch() {
|
|
111
118
|
this.checkpoints = [];
|
|
119
|
+
this.checkpointOutHashes = [];
|
|
112
120
|
this.nextCheckpointIndex = 0;
|
|
113
121
|
this.epochNumber++;
|
|
114
122
|
}
|
|
@@ -125,7 +133,8 @@ export class TestContext {
|
|
|
125
133
|
throw new Error('Cannot make a checkpoint with 0 blocks. Crate an empty block (numTxsPerBlock = 0) if there are no txs.');
|
|
126
134
|
}
|
|
127
135
|
const checkpointIndex = this.nextCheckpointIndex++;
|
|
128
|
-
const checkpointNumber =
|
|
136
|
+
const checkpointNumber = this.nextCheckpointNumber;
|
|
137
|
+
this.nextCheckpointNumber++;
|
|
129
138
|
const slotNumber = checkpointNumber * 15; // times an arbitrary number to make it different to the checkpoint number
|
|
130
139
|
const constants = makeCheckpointConstants(slotNumber, constantOpts);
|
|
131
140
|
const fork = await this.worldState.fork();
|
|
@@ -134,12 +143,15 @@ export class TestContext {
|
|
|
134
143
|
await fork.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP));
|
|
135
144
|
const newL1ToL2Snapshot = await getTreeSnapshot(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, fork);
|
|
136
145
|
const startBlockNumber = this.nextBlockNumber;
|
|
137
|
-
const previousBlockHeader = this.getBlockHeader(startBlockNumber - 1);
|
|
146
|
+
const previousBlockHeader = this.getBlockHeader(BlockNumber(startBlockNumber - 1));
|
|
147
|
+
// All blocks in the same slot/checkpoint share the same timestamp.
|
|
148
|
+
const timestamp = BigInt(slotNumber * 26);
|
|
138
149
|
// Build global variables.
|
|
139
150
|
const blockGlobalVariables = times(numBlocks, (i)=>makeGlobals(startBlockNumber + i, slotNumber, {
|
|
140
151
|
coinbase: constants.coinbase,
|
|
141
152
|
feeRecipient: constants.feeRecipient,
|
|
142
|
-
gasFees: constants.gasFees
|
|
153
|
+
gasFees: constants.gasFees,
|
|
154
|
+
timestamp
|
|
143
155
|
}));
|
|
144
156
|
this.nextBlockNumber += numBlocks;
|
|
145
157
|
// Build txs.
|
|
@@ -162,18 +174,24 @@ export class TestContext {
|
|
|
162
174
|
return txs;
|
|
163
175
|
});
|
|
164
176
|
const cleanFork = await this.worldState.fork();
|
|
165
|
-
const
|
|
177
|
+
const previousCheckpointOutHashes = this.checkpointOutHashes;
|
|
178
|
+
const builder = await LightweightCheckpointBuilder.startNewCheckpoint(checkpointNumber, {
|
|
179
|
+
...constants,
|
|
180
|
+
timestamp
|
|
181
|
+
}, l1ToL2Messages, previousCheckpointOutHashes, cleanFork);
|
|
166
182
|
// Add tx effects to db and build block headers.
|
|
167
183
|
const blocks = [];
|
|
168
184
|
for(let i = 0; i < numBlocks; i++){
|
|
169
|
-
const isFirstBlock = i === 0;
|
|
170
185
|
const txs = blockTxs[i];
|
|
171
186
|
const state = blockEndStates[i];
|
|
172
|
-
const block = await builder.addBlock(blockGlobalVariables[i],
|
|
187
|
+
const { block } = await builder.addBlock(blockGlobalVariables[i], txs, {
|
|
188
|
+
expectedEndState: state,
|
|
189
|
+
insertTxsEffects: true
|
|
190
|
+
});
|
|
173
191
|
const header = block.header;
|
|
174
192
|
this.headers.set(block.number, header);
|
|
175
|
-
const blockMsgs =
|
|
176
|
-
await this.worldState.handleL2BlockAndMessages(block, blockMsgs
|
|
193
|
+
const blockMsgs = block.indexWithinCheckpoint === 0 ? l1ToL2Messages : [];
|
|
194
|
+
await this.worldState.handleL2BlockAndMessages(block, blockMsgs);
|
|
177
195
|
blocks.push({
|
|
178
196
|
header,
|
|
179
197
|
txs
|
|
@@ -181,6 +199,7 @@ export class TestContext {
|
|
|
181
199
|
}
|
|
182
200
|
const checkpoint = await builder.completeCheckpoint();
|
|
183
201
|
this.checkpoints.push(checkpoint);
|
|
202
|
+
this.checkpointOutHashes.push(checkpoint.getCheckpointOutHash());
|
|
184
203
|
return {
|
|
185
204
|
constants,
|
|
186
205
|
header: checkpoint.header,
|
|
@@ -206,10 +225,10 @@ export class TestContext {
|
|
|
206
225
|
return tx;
|
|
207
226
|
}
|
|
208
227
|
getBlockHeader(blockNumber) {
|
|
209
|
-
if (blockNumber > 0 && blockNumber >= this.nextBlockNumber) {
|
|
228
|
+
if (Number(blockNumber) > 0 && Number(blockNumber) >= this.nextBlockNumber) {
|
|
210
229
|
throw new Error(`Block header not built for block number ${blockNumber}.`);
|
|
211
230
|
}
|
|
212
|
-
return blockNumber === 0 ? this.worldState.getCommitted().getInitialHeader() : this.headers.get(blockNumber);
|
|
231
|
+
return Number(blockNumber) === 0 ? this.worldState.getCommitted().getInitialHeader() : this.headers.get(Number(blockNumber));
|
|
213
232
|
}
|
|
214
233
|
async updateTrees(txs, fork) {
|
|
215
234
|
let startStateReference = await fork.getStateReference();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BatchedBlobAccumulator, SpongeBlob } from '@aztec/blob-lib';
|
|
2
|
-
import { Fr } from '@aztec/foundation/
|
|
2
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
3
|
import { type Bufferable } from '@aztec/foundation/serialize';
|
|
4
4
|
import { MembershipWitness } from '@aztec/foundation/trees';
|
|
5
5
|
import { Body } from '@aztec/stdlib/block';
|
|
@@ -22,13 +22,13 @@ export declare const insertSideEffects: (tx: ProcessedTx, db: MerkleTreeWriteOpe
|
|
|
22
22
|
nullifierInsertionResult: import("@aztec/stdlib/trees").BatchInsertionResult<number, number>;
|
|
23
23
|
publicDataInsertionResult: import("@aztec/stdlib/trees").SequentialInsertionResult<number>;
|
|
24
24
|
}>;
|
|
25
|
-
export declare function getChonkProofFromTx(tx: Tx | ProcessedTx): RecursiveProof<
|
|
25
|
+
export declare function getChonkProofFromTx(tx: Tx | ProcessedTx): RecursiveProof<1330>;
|
|
26
26
|
export declare function getPublicChonkVerifierPrivateInputsFromTx(tx: Tx | ProcessedTx, proverId: Fr): PublicChonkVerifierPrivateInputs;
|
|
27
|
-
export declare const buildBlobHints: (blobFields: Fr[]) => {
|
|
28
|
-
blobCommitments: import("@aztec/foundation/
|
|
27
|
+
export declare const buildBlobHints: (blobFields: Fr[]) => Promise<{
|
|
28
|
+
blobCommitments: import("@aztec/foundation/curves/bls12").BLS12Point[];
|
|
29
29
|
blobs: import("@aztec/blob-lib").Blob[];
|
|
30
30
|
blobsHash: Fr;
|
|
31
|
-
}
|
|
31
|
+
}>;
|
|
32
32
|
export declare const buildFinalBlobChallenges: (blobFieldsPerCheckpoint: Fr[][]) => Promise<import("@aztec/blob-lib").FinalBlobBatchingChallenges>;
|
|
33
33
|
export declare const accumulateBlobs: (blobFields: Fr[], startBlobAccumulator: BatchedBlobAccumulator) => Promise<BatchedBlobAccumulator>;
|
|
34
34
|
export declare const buildHeaderFromCircuitOutputs: (blockRootRollupOutput: BlockRollupPublicInputs) => Promise<BlockHeader>;
|
|
@@ -59,4 +59,4 @@ export declare function validatePartialState(partialState: PartialStateReference
|
|
|
59
59
|
export declare function validateTx(tx: ProcessedTx): void;
|
|
60
60
|
export declare function toProofData<T extends Bufferable, PROOF_LENGTH extends number>({ inputs, proof, verificationKey }: PublicInputsAndRecursiveProof<T, PROOF_LENGTH>, vkIndex?: number): ProofData<T, PROOF_LENGTH>;
|
|
61
61
|
export {};
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stYnVpbGRpbmctaGVscGVycy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29yY2hlc3RyYXRvci9ibG9jay1idWlsZGluZy1oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsVUFBVSxFQUtYLE1BQU0saUJBQWlCLENBQUM7QUFpQnpCLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsS0FBSyxVQUFVLEVBQWdDLE1BQU0sNkJBQTZCLENBQUM7QUFDNUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFJNUQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNDLE9BQU8sS0FBSyxFQUFFLHlCQUF5QixFQUFFLDZCQUE2QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFaEgsT0FBTyxFQUFTLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0QixxQkFBcUIsRUFDckIsZ0NBQWdDLEVBRWpDLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixZQUFZLEVBSWIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQ0wsV0FBVyxFQUNYLGVBQWUsRUFDZixxQkFBcUIsRUFDckIsS0FBSyxXQUFXLEVBQ2hCLGNBQWMsRUFDZCxFQUFFLEVBQ0gsTUFBTSxrQkFBa0IsQ0FBQztBQUcxQixPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRW5FOztHQUVHO0FBQ0gsS0FBSyxhQUFhLEdBQUcsY0FBYyxHQUFHLGNBQWMsR0FBRyxlQUFlLEdBQUcsZ0JBQWdCLENBQUM7QUFDMUY7O0dBRUc7QUFDSCxNQUFNLE1BQU0sU0FBUyxHQUFHLGFBQWEsR0FBRyxtQkFBbUIsR0FBRyxTQUFTLENBQUM7QUFHeEUsZUFBTyxNQUFNLHdDQUF3QyxtUEEwSHBELENBQUM7QUFFRixlQUFPLE1BQU0saUJBQWlCOzs7RUFvQzdCLENBQUM7QUFFRix3QkFBZ0IsbUJBQW1CLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxXQUFXLHdCQVF2RDtBQUVELHdCQUFnQix5Q0FBeUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLFdBQVcsRUFBRSxRQUFRLEVBQUUsRUFBRSxvQ0FPM0Y7QUFLRCxlQUFPLE1BQU0sY0FBYzs7OztFQUsxQixDQUFDO0FBRUYsZUFBTyxNQUFNLHdCQUF3QixxR0FFcEMsQ0FBQztBQUVGLGVBQU8sTUFBTSxlQUFlLHFHQU8zQixDQUFDO0FBRUYsZUFBTyxNQUFNLDZCQUE2QiwwRUEyQnpDLENBQUM7QUFFRixlQUFPLE1BQU0seUJBQXlCOzs7O0VBMERyQyxDQUFDO0FBRUYsd0JBQXNCLGtCQUFrQixDQUFDLEdBQUcsU0FBUyxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsd0JBQXdCOzs7Ozs7U0FJM0c7QUFFRCx3QkFBc0Isc0JBQXNCLENBQUMsR0FBRyxTQUFTLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSx3QkFBd0I7Ozs7OztTQUkvRztBQUVELHdCQUFzQixlQUFlLENBQUMsRUFBRSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsd0JBQXdCLEdBQUcsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBR3JIO0FBRUQsd0JBQWdCLDBCQUEwQixDQUFDLENBQUMsU0FBUyxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsd0JBTXJFO0FBRUQsd0JBQXNCLHFCQUFxQixDQUN6QyxNQUFNLEVBQUUsWUFBWSxFQUNwQixhQUFhLEVBQUUsTUFBTSxFQUNyQixFQUFFLEVBQUUsd0JBQXdCLEdBQzNCLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQU1mO0FBR0Qsd0JBQXNCLHVCQUF1QixDQUFDLENBQUMsU0FBUyxNQUFNLEVBQzVELEtBQUssRUFBRSxFQUFFLEVBQ1QsTUFBTSxFQUFFLFlBQVksRUFDcEIsTUFBTSxFQUFFLENBQUMsRUFDVCxFQUFFLEVBQUUsd0JBQXdCLEdBQzNCLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQVkvQjtBQUVELHdCQUFnQixvQkFBb0IsQ0FDbEMsWUFBWSxFQUFFLHFCQUFxQixFQUNuQyxhQUFhLEVBQUUsR0FBRyxDQUFDLFlBQVksRUFBRSxzQkFBc0IsQ0FBQyxRQVN6RDtBQXFCRCx3QkFBZ0IsVUFBVSxDQUFDLEVBQUUsRUFBRSxXQUFXLFFBY3pDO0FBRUQsd0JBQWdCLFdBQVcsQ0FBQyxDQUFDLFNBQVMsVUFBVSxFQUFFLFlBQVksU0FBUyxNQUFNLEVBQzNFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsRUFBRSw2QkFBNkIsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQ2xGLE9BQU8sQ0FBQyxFQUFFLE1BQU0sOEJBS2pCIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block-building-helpers.d.ts","sourceRoot":"","sources":["../../src/orchestrator/block-building-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,UAAU,EAKX,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"block-building-helpers.d.ts","sourceRoot":"","sources":["../../src/orchestrator/block-building-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { BatchedBlobAccumulator, computeBlobsHashFromBlobs, encodeBlockBlobData, getBlobCommitmentsFromBlobs, getBlobsPerL1Block } from '@aztec/blob-lib';
|
|
2
2
|
import { ARCHIVE_HEIGHT, CHONK_PROOF_LENGTH, MAX_CONTRACT_CLASS_LOGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, NOTE_HASH_SUBTREE_HEIGHT, NOTE_HASH_SUBTREE_ROOT_SIBLING_PATH_LENGTH, NULLIFIER_SUBTREE_HEIGHT, NULLIFIER_SUBTREE_ROOT_SIBLING_PATH_LENGTH, NULLIFIER_TREE_HEIGHT, PUBLIC_DATA_TREE_HEIGHT } from '@aztec/constants';
|
|
3
3
|
import { makeTuple } from '@aztec/foundation/array';
|
|
4
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
4
5
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
5
|
-
import { Fr } from '@aztec/foundation/
|
|
6
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
6
7
|
import { assertLength, toFriendlyJSON } from '@aztec/foundation/serialize';
|
|
7
8
|
import { MembershipWitness } from '@aztec/foundation/trees';
|
|
8
9
|
import { getVkData } from '@aztec/noir-protocol-circuits-types/server/vks';
|
|
@@ -25,7 +26,7 @@ export const insertSideEffectsAndBuildBaseRollupHints = runInSpan('BlockBuilderH
|
|
|
25
26
|
const noteHashSubtreeRootSiblingPath = assertLength(await getSubtreeSiblingPath(MerkleTreeId.NOTE_HASH_TREE, NOTE_HASH_SUBTREE_HEIGHT, db), NOTE_HASH_SUBTREE_ROOT_SIBLING_PATH_LENGTH);
|
|
26
27
|
const { nullifierInsertionResult, publicDataInsertionResult } = await insertSideEffects(tx, db);
|
|
27
28
|
const blockHash = await tx.data.constants.anchorBlockHeader.hash();
|
|
28
|
-
const anchorBlockArchiveSiblingPath = (await getMembershipWitnessFor(blockHash, MerkleTreeId.ARCHIVE, ARCHIVE_HEIGHT, db)).siblingPath;
|
|
29
|
+
const anchorBlockArchiveSiblingPath = (await getMembershipWitnessFor(blockHash.toFr(), MerkleTreeId.ARCHIVE, ARCHIVE_HEIGHT, db)).siblingPath;
|
|
29
30
|
const contractClassLogsFields = makeTuple(MAX_CONTRACT_CLASS_LOGS_PER_TX, (i)=>tx.txEffect.contractClassLogs[i]?.fields || ContractClassLogFields.empty());
|
|
30
31
|
if (tx.avmProvingRequest) {
|
|
31
32
|
return PublicBaseRollupHints.from({
|
|
@@ -115,8 +116,8 @@ export function getPublicChonkVerifierPrivateInputsFromTx(tx, proverId) {
|
|
|
115
116
|
// Build "hints" as the private inputs for the checkpoint root rollup circuit.
|
|
116
117
|
// The `blobCommitments` will be accumulated and checked in the root rollup against the `finalBlobChallenges`.
|
|
117
118
|
// The `blobsHash` will be validated on L1 against the submitted blob data.
|
|
118
|
-
export const buildBlobHints = (blobFields)=>{
|
|
119
|
-
const blobs = getBlobsPerL1Block(blobFields);
|
|
119
|
+
export const buildBlobHints = async (blobFields)=>{
|
|
120
|
+
const blobs = await getBlobsPerL1Block(blobFields);
|
|
120
121
|
const blobCommitments = getBlobCommitmentsFromBlobs(blobs);
|
|
121
122
|
const blobsHash = computeBlobsHashFromBlobs(blobs);
|
|
122
123
|
return {
|
|
@@ -137,8 +138,8 @@ export const buildHeaderFromCircuitOutputs = runInSpan('BlockBuilderHelpers', 'b
|
|
|
137
138
|
const globalVariables = GlobalVariables.from({
|
|
138
139
|
chainId: constants.chainId,
|
|
139
140
|
version: constants.version,
|
|
140
|
-
blockNumber: blockRootRollupOutput.previousArchive.nextAvailableLeafIndex,
|
|
141
|
-
timestamp: blockRootRollupOutput.
|
|
141
|
+
blockNumber: BlockNumber(blockRootRollupOutput.previousArchive.nextAvailableLeafIndex),
|
|
142
|
+
timestamp: blockRootRollupOutput.timestamp,
|
|
142
143
|
slotNumber: constants.slotNumber,
|
|
143
144
|
coinbase: constants.coinbase,
|
|
144
145
|
feeRecipient: constants.feeRecipient,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type BlockBlobData, type BlockEndBlobData, type SpongeBlob } from '@aztec/blob-lib';
|
|
2
2
|
import { type ARCHIVE_HEIGHT, type L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH, type NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH } from '@aztec/constants';
|
|
3
|
-
import {
|
|
3
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
4
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
5
|
import { type Tuple } from '@aztec/foundation/serialize';
|
|
5
6
|
import { type TreeNodeLocation } from '@aztec/foundation/trees';
|
|
6
7
|
import type { PublicInputsAndRecursiveProof } from '@aztec/stdlib/interfaces/server';
|
|
@@ -22,7 +23,7 @@ export type ProofState<T, PROOF_LENGTH extends number> = {
|
|
|
22
23
|
export declare class BlockProvingState {
|
|
23
24
|
#private;
|
|
24
25
|
readonly index: number;
|
|
25
|
-
readonly blockNumber:
|
|
26
|
+
readonly blockNumber: BlockNumber;
|
|
26
27
|
readonly totalNumTxs: number;
|
|
27
28
|
private readonly constants;
|
|
28
29
|
private readonly timestamp;
|
|
@@ -39,12 +40,13 @@ export declare class BlockProvingState {
|
|
|
39
40
|
private rootParityProof;
|
|
40
41
|
private blockRootProof;
|
|
41
42
|
private builtBlockHeader;
|
|
43
|
+
private builtArchive;
|
|
42
44
|
private endState;
|
|
43
45
|
private endSpongeBlob;
|
|
44
46
|
private txs;
|
|
45
47
|
private isFirstBlock;
|
|
46
48
|
private error;
|
|
47
|
-
constructor(index: number, blockNumber:
|
|
49
|
+
constructor(index: number, blockNumber: BlockNumber, totalNumTxs: number, constants: CheckpointConstantData, timestamp: UInt64, lastArchiveTreeSnapshot: AppendOnlyTreeSnapshot, lastArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>, lastL1ToL2MessageTreeSnapshot: AppendOnlyTreeSnapshot, lastL1ToL2MessageSubtreeRootSiblingPath: Tuple<Fr, typeof L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH>, newL1ToL2MessageTreeSnapshot: AppendOnlyTreeSnapshot, headerOfLastBlockInPreviousCheckpoint: BlockHeader, startSpongeBlob: SpongeBlob, parentCheckpoint: CheckpointProvingState);
|
|
48
50
|
get epochNumber(): number;
|
|
49
51
|
addNewTx(tx: TxProvingState): number;
|
|
50
52
|
isAcceptingTxs(): boolean;
|
|
@@ -62,6 +64,8 @@ export declare class BlockProvingState {
|
|
|
62
64
|
getBlockRootRollupOutput(): BlockRollupPublicInputs | undefined;
|
|
63
65
|
buildBlockHeader(): Promise<BlockHeader>;
|
|
64
66
|
getBuiltBlockHeader(): BlockHeader | undefined;
|
|
67
|
+
setBuiltArchive(archive: AppendOnlyTreeSnapshot): void;
|
|
68
|
+
getBuiltArchive(): AppendOnlyTreeSnapshot | undefined;
|
|
65
69
|
getStartSpongeBlob(): SpongeBlob;
|
|
66
70
|
setEndSpongeBlob(endSpongeBlob: SpongeBlob): void;
|
|
67
71
|
getEndSpongeBlob(): SpongeBlob | undefined;
|
|
@@ -94,4 +98,4 @@ export declare class BlockProvingState {
|
|
|
94
98
|
getError(): string | undefined;
|
|
95
99
|
reject(reason: string): void;
|
|
96
100
|
}
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stcHJvdmluZy1zdGF0ZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29yY2hlc3RyYXRvci9ibG9jay1wcm92aW5nLXN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLGFBQWEsRUFBRSxLQUFLLGdCQUFnQixFQUFFLEtBQUssVUFBVSxFQUEwQixNQUFNLGlCQUFpQixDQUFDO0FBQ3JILE9BQU8sRUFDTCxLQUFLLGNBQWMsRUFDbkIsS0FBSyw2Q0FBNkMsRUFFbEQsS0FBSyx5Q0FBeUMsRUFFL0MsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxLQUFLLEtBQUssRUFBZ0IsTUFBTSw2QkFBNkIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBdUIsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRixPQUFPLEtBQUssRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxLQUFLLGtCQUFrQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFeEYsT0FBTyxFQUNMLHVCQUF1QixFQUN2Qix3Q0FBd0MsRUFFeEMsNEJBQTRCLEVBRTVCLG9DQUFvQyxFQUNwQyxzQkFBc0IsRUFDdEIsMEJBQTBCLEVBQzFCLEtBQUssb0JBQW9CLEVBQzFCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBbUIsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEYsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHbEQsT0FBTyxLQUFL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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/block-proving-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,gBAAgB,EAAE,KAAK,UAAU,EAA0B,MAAM,iBAAiB,CAAC;AACrH,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,6CAA6C,EAElD,KAAK,yCAAyC,EAE/C,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,EAAE,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"block-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/block-proving-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { encodeBlockEndBlobData } from '@aztec/blob-lib';
|
|
2
2
|
import { NUM_BASE_PARITY_PER_ROOT_PARITY } from '@aztec/constants';
|
|
3
|
-
import { Fr } from '@aztec/foundation/
|
|
3
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
4
|
import { assertLength } from '@aztec/foundation/serialize';
|
|
5
5
|
import { UnbalancedTreeStore } from '@aztec/foundation/trees';
|
|
6
6
|
import { ParityRootPrivateInputs } from '@aztec/stdlib/parity';
|
|
@@ -29,6 +29,7 @@ import { buildHeaderFromCircuitOutputs, toProofData } from './block-building-hel
|
|
|
29
29
|
rootParityProof;
|
|
30
30
|
blockRootProof;
|
|
31
31
|
builtBlockHeader;
|
|
32
|
+
builtArchive;
|
|
32
33
|
endState;
|
|
33
34
|
endSpongeBlob;
|
|
34
35
|
txs;
|
|
@@ -178,6 +179,12 @@ import { buildHeaderFromCircuitOutputs, toProofData } from './block-building-hel
|
|
|
178
179
|
getBuiltBlockHeader() {
|
|
179
180
|
return this.builtBlockHeader;
|
|
180
181
|
}
|
|
182
|
+
setBuiltArchive(archive) {
|
|
183
|
+
this.builtArchive = archive;
|
|
184
|
+
}
|
|
185
|
+
getBuiltArchive() {
|
|
186
|
+
return this.builtArchive;
|
|
187
|
+
}
|
|
181
188
|
getStartSpongeBlob() {
|
|
182
189
|
return this.startSpongeBlob;
|
|
183
190
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { BatchedBlobAccumulator, type FinalBlobBatchingChallenges } from '@aztec/blob-lib';
|
|
2
|
-
import { type ARCHIVE_HEIGHT, type L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH, type NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH } from '@aztec/constants';
|
|
3
|
-
import {
|
|
2
|
+
import { type ARCHIVE_HEIGHT, type L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH, type NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, OUT_HASH_TREE_HEIGHT } from '@aztec/constants';
|
|
3
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
4
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
5
|
import type { Tuple } from '@aztec/foundation/serialize';
|
|
5
6
|
import { type TreeNodeLocation } from '@aztec/foundation/trees';
|
|
6
7
|
import type { PublicInputsAndRecursiveProof } from '@aztec/stdlib/interfaces/server';
|
|
@@ -12,6 +13,10 @@ import type { BlockHeader } from '@aztec/stdlib/tx';
|
|
|
12
13
|
import type { UInt64 } from '@aztec/stdlib/types';
|
|
13
14
|
import { BlockProvingState } from './block-proving-state.js';
|
|
14
15
|
import type { EpochProvingState } from './epoch-proving-state.js';
|
|
16
|
+
type OutHashHint = {
|
|
17
|
+
treeSnapshot: AppendOnlyTreeSnapshot;
|
|
18
|
+
siblingPath: Tuple<Fr, typeof OUT_HASH_TREE_HEIGHT>;
|
|
19
|
+
};
|
|
15
20
|
export declare class CheckpointProvingState {
|
|
16
21
|
#private;
|
|
17
22
|
readonly index: number;
|
|
@@ -30,14 +35,17 @@ export declare class CheckpointProvingState {
|
|
|
30
35
|
private blockProofs;
|
|
31
36
|
private checkpointRootProof;
|
|
32
37
|
private blocks;
|
|
38
|
+
private previousOutHashHint;
|
|
39
|
+
private outHash;
|
|
40
|
+
private newOutHashHint;
|
|
33
41
|
private startBlobAccumulator;
|
|
34
42
|
private endBlobAccumulator;
|
|
35
43
|
private blobFields;
|
|
36
44
|
private error;
|
|
37
|
-
readonly firstBlockNumber:
|
|
38
|
-
constructor(index: number, constants: CheckpointConstantData, totalNumBlocks: number, finalBlobBatchingChallenges: FinalBlobBatchingChallenges, headerOfLastBlockInPreviousCheckpoint: BlockHeader, lastArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>, l1ToL2Messages: Fr[], lastL1ToL2MessageTreeSnapshot: AppendOnlyTreeSnapshot, lastL1ToL2MessageSubtreeRootSiblingPath: Tuple<Fr, typeof L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH>, newL1ToL2MessageTreeSnapshot: AppendOnlyTreeSnapshot, newL1ToL2MessageSubtreeRootSiblingPath: Tuple<Fr, typeof L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH>, parentEpoch: EpochProvingState, onBlobAccumulatorSet: (checkpoint: CheckpointProvingState) => void);
|
|
45
|
+
readonly firstBlockNumber: BlockNumber;
|
|
46
|
+
constructor(index: number, constants: CheckpointConstantData, totalNumBlocks: number, finalBlobBatchingChallenges: FinalBlobBatchingChallenges, headerOfLastBlockInPreviousCheckpoint: BlockHeader, lastArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>, l1ToL2Messages: Fr[], lastL1ToL2MessageTreeSnapshot: AppendOnlyTreeSnapshot, lastL1ToL2MessageSubtreeRootSiblingPath: Tuple<Fr, typeof L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH>, newL1ToL2MessageTreeSnapshot: AppendOnlyTreeSnapshot, newL1ToL2MessageSubtreeRootSiblingPath: Tuple<Fr, typeof L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH>, parentEpoch: EpochProvingState, onBlobAccumulatorSet: (checkpoint: CheckpointProvingState) => Promise<void>);
|
|
39
47
|
get epochNumber(): number;
|
|
40
|
-
startNewBlock(blockNumber:
|
|
48
|
+
startNewBlock(blockNumber: BlockNumber, timestamp: UInt64, totalNumTxs: number, lastArchiveTreeSnapshot: AppendOnlyTreeSnapshot, lastArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>): BlockProvingState;
|
|
41
49
|
isAcceptingBlocks(): boolean;
|
|
42
50
|
setBlockRootRollupProof(blockIndex: number, provingOutput: PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>): TreeNodeLocation;
|
|
43
51
|
tryStartProvingBlockMerge(location: TreeNodeLocation): boolean;
|
|
@@ -45,13 +53,18 @@ export declare class CheckpointProvingState {
|
|
|
45
53
|
tryStartProvingCheckpointRoot(): boolean;
|
|
46
54
|
setCheckpointRootRollupProof(provingOutput: PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>): TreeNodeLocation;
|
|
47
55
|
getBaseParityInputs(baseParityIndex: number): ParityBasePrivateInputs;
|
|
56
|
+
setOutHashHint(hint: OutHashHint): void;
|
|
57
|
+
getOutHashHint(): OutHashHint | undefined;
|
|
58
|
+
accumulateBlockOutHashes(): Fr | undefined;
|
|
59
|
+
setOutHashHintForNextCheckpoint(hint: OutHashHint): void;
|
|
60
|
+
getOutHashHintForNextCheckpoint(): OutHashHint | undefined;
|
|
48
61
|
accumulateBlobs(startBlobAccumulator: BatchedBlobAccumulator): Promise<BatchedBlobAccumulator | undefined>;
|
|
49
62
|
getEndBlobAccumulator(): BatchedBlobAccumulator | undefined;
|
|
50
63
|
getParentLocation(location: TreeNodeLocation): TreeNodeLocation;
|
|
51
64
|
getBlockMergeRollupInputs(mergeLocation: TreeNodeLocation): BlockMergeRollupPrivateInputs;
|
|
52
65
|
getCheckpointRootRollupType(): CircuitName;
|
|
53
|
-
getCheckpointRootRollupInputs(): CheckpointRootRollupPrivateInputs | CheckpointRootSingleBlockRollupPrivateInputs
|
|
54
|
-
getBlockProvingStateByBlockNumber(blockNumber:
|
|
66
|
+
getCheckpointRootRollupInputs(): Promise<CheckpointRootRollupPrivateInputs | CheckpointRootSingleBlockRollupPrivateInputs>;
|
|
67
|
+
getBlockProvingStateByBlockNumber(blockNumber: BlockNumber): BlockProvingState | undefined;
|
|
55
68
|
isReadyForBlockMerge(location: TreeNodeLocation): boolean;
|
|
56
69
|
isReadyForCheckpointRoot(): boolean;
|
|
57
70
|
verifyState(): boolean;
|
|
@@ -59,4 +72,5 @@ export declare class CheckpointProvingState {
|
|
|
59
72
|
cancel(): void;
|
|
60
73
|
reject(reason: string): void;
|
|
61
74
|
}
|
|
62
|
-
|
|
75
|
+
export {};
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludC1wcm92aW5nLXN0YXRlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3JjaGVzdHJhdG9yL2NoZWNrcG9pbnQtcHJvdmluZy1zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLEtBQUssMkJBQTJCLEVBR2pDLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUNMLEtBQUssY0FBYyxFQUduQixLQUFLLDZDQUE2QyxFQUNsRCxLQUFLLHlDQUF5QyxFQUU5QyxvQkFBb0IsRUFDckIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHOUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUF1QixNQUFNLHlCQUF5QixDQUFDO0FBQ3JGLE9BQU8sS0FBSyxFQUFFLDZCQUE2QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFckYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUNMLDZCQUE2QixFQUM3Qix1QkFBdUIsRUFDdkIsc0JBQXNCLEVBQ3RCLDRCQUE0QixFQUU1QixpQ0FBaUMsRUFDakMsNENBQTRDLEVBQzdDLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkpoint-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/checkpoint-proving-state.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,KAAK,2BAA2B,EAGjC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,cAAc,EAGnB,KAAK,6CAA6C,EAClD,KAAK,yCAAyC,
|
|
1
|
+
{"version":3,"file":"checkpoint-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/checkpoint-proving-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { SpongeBlob, encodeCheckpointBlobDataFromBlocks } from '@aztec/blob-lib';
|
|
2
2
|
import { BLOBS_PER_CHECKPOINT, FIELDS_PER_BLOB, NUM_MSGS_PER_BASE_PARITY } from '@aztec/constants';
|
|
3
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
3
4
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
4
|
-
import { BLS12Point
|
|
5
|
+
import { BLS12Point } from '@aztec/foundation/curves/bls12';
|
|
6
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
5
7
|
import { UnbalancedTreeStore } from '@aztec/foundation/trees';
|
|
8
|
+
import { computeCheckpointOutHash } from '@aztec/stdlib/messaging';
|
|
6
9
|
import { ParityBasePrivateInputs } from '@aztec/stdlib/parity';
|
|
7
10
|
import { BlockMergeRollupPrivateInputs, CheckpointRootRollupHints, CheckpointRootRollupPrivateInputs, CheckpointRootSingleBlockRollupPrivateInputs } from '@aztec/stdlib/rollup';
|
|
8
11
|
import { accumulateBlobs, buildBlobHints, toProofData } from './block-building-helpers.js';
|
|
@@ -24,6 +27,11 @@ export class CheckpointProvingState {
|
|
|
24
27
|
blockProofs;
|
|
25
28
|
checkpointRootProof;
|
|
26
29
|
blocks;
|
|
30
|
+
previousOutHashHint;
|
|
31
|
+
outHash;
|
|
32
|
+
// The snapshot and sibling path after the checkpoint's out hash is inserted.
|
|
33
|
+
// Stored here to be retrieved for the next checkpoint when it's added.
|
|
34
|
+
newOutHashHint;
|
|
27
35
|
startBlobAccumulator;
|
|
28
36
|
endBlobAccumulator;
|
|
29
37
|
blobFields;
|
|
@@ -47,13 +55,13 @@ export class CheckpointProvingState {
|
|
|
47
55
|
this.onBlobAccumulatorSet = onBlobAccumulatorSet;
|
|
48
56
|
this.blocks = [];
|
|
49
57
|
this.blockProofs = new UnbalancedTreeStore(totalNumBlocks);
|
|
50
|
-
this.firstBlockNumber = headerOfLastBlockInPreviousCheckpoint.globalVariables.blockNumber + 1;
|
|
58
|
+
this.firstBlockNumber = BlockNumber(headerOfLastBlockInPreviousCheckpoint.globalVariables.blockNumber + 1);
|
|
51
59
|
}
|
|
52
60
|
get epochNumber() {
|
|
53
61
|
return this.parentEpoch.epochNumber;
|
|
54
62
|
}
|
|
55
63
|
startNewBlock(blockNumber, timestamp, totalNumTxs, lastArchiveTreeSnapshot, lastArchiveSiblingPath) {
|
|
56
|
-
const index = blockNumber - this.firstBlockNumber;
|
|
64
|
+
const index = Number(blockNumber) - Number(this.firstBlockNumber);
|
|
57
65
|
if (index >= this.totalNumBlocks) {
|
|
58
66
|
throw new Error(`Unable to start a new block at index ${index}. Expected at most ${this.totalNumBlocks} blocks.`);
|
|
59
67
|
}
|
|
@@ -114,6 +122,28 @@ export class CheckpointProvingState {
|
|
|
114
122
|
const messages = padArrayEnd(this.l1ToL2Messages.slice(baseParityIndex * NUM_MSGS_PER_BASE_PARITY, (baseParityIndex + 1) * NUM_MSGS_PER_BASE_PARITY), Fr.ZERO, NUM_MSGS_PER_BASE_PARITY);
|
|
115
123
|
return new ParityBasePrivateInputs(messages, this.constants.vkTreeRoot);
|
|
116
124
|
}
|
|
125
|
+
setOutHashHint(hint) {
|
|
126
|
+
this.previousOutHashHint = hint;
|
|
127
|
+
}
|
|
128
|
+
getOutHashHint() {
|
|
129
|
+
return this.previousOutHashHint;
|
|
130
|
+
}
|
|
131
|
+
accumulateBlockOutHashes() {
|
|
132
|
+
if (this.isAcceptingBlocks() || this.blocks.some((b)=>!b?.hasEndState())) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
if (!this.outHash) {
|
|
136
|
+
const messagesPerBlock = this.blocks.map((b)=>b.getTxEffects().map((tx)=>tx.l2ToL1Msgs));
|
|
137
|
+
this.outHash = computeCheckpointOutHash(messagesPerBlock);
|
|
138
|
+
}
|
|
139
|
+
return this.outHash;
|
|
140
|
+
}
|
|
141
|
+
setOutHashHintForNextCheckpoint(hint) {
|
|
142
|
+
this.newOutHashHint = hint;
|
|
143
|
+
}
|
|
144
|
+
getOutHashHintForNextCheckpoint() {
|
|
145
|
+
return this.newOutHashHint;
|
|
146
|
+
}
|
|
117
147
|
async accumulateBlobs(startBlobAccumulator) {
|
|
118
148
|
if (this.isAcceptingBlocks() || this.blocks.some((b)=>!b?.hasEndState())) {
|
|
119
149
|
return;
|
|
@@ -121,7 +151,7 @@ export class CheckpointProvingState {
|
|
|
121
151
|
this.blobFields = encodeCheckpointBlobDataFromBlocks(this.blocks.map((b)=>b.getBlockBlobData()));
|
|
122
152
|
this.endBlobAccumulator = await accumulateBlobs(this.blobFields, startBlobAccumulator);
|
|
123
153
|
this.startBlobAccumulator = startBlobAccumulator;
|
|
124
|
-
this.onBlobAccumulatorSet(this);
|
|
154
|
+
await this.onBlobAccumulatorSet(this);
|
|
125
155
|
return this.endBlobAccumulator;
|
|
126
156
|
}
|
|
127
157
|
getEndBlobAccumulator() {
|
|
@@ -143,21 +173,26 @@ export class CheckpointProvingState {
|
|
|
143
173
|
getCheckpointRootRollupType() {
|
|
144
174
|
return this.totalNumBlocks === 1 ? 'rollup-checkpoint-root-single-block' : 'rollup-checkpoint-root';
|
|
145
175
|
}
|
|
146
|
-
getCheckpointRootRollupInputs() {
|
|
176
|
+
async getCheckpointRootRollupInputs() {
|
|
147
177
|
const proofs = this.#getChildProofsForRoot();
|
|
148
178
|
const nonEmptyProofs = proofs.filter((p)=>!!p);
|
|
149
179
|
if (proofs.length !== nonEmptyProofs.length) {
|
|
150
180
|
throw new Error('At least one child is not ready for the checkpoint root rollup.');
|
|
151
181
|
}
|
|
182
|
+
if (!this.previousOutHashHint) {
|
|
183
|
+
throw new Error('Out hash hint is not set.');
|
|
184
|
+
}
|
|
152
185
|
if (!this.startBlobAccumulator) {
|
|
153
186
|
throw new Error('Start blob accumulator is not set.');
|
|
154
187
|
}
|
|
155
188
|
// `blobFields` must've been set if `startBlobAccumulator` is set (in `accumulateBlobs`).
|
|
156
189
|
const blobFields = this.blobFields;
|
|
157
|
-
const { blobCommitments, blobsHash } = buildBlobHints(blobFields);
|
|
190
|
+
const { blobCommitments, blobsHash } = await buildBlobHints(blobFields);
|
|
158
191
|
const hints = CheckpointRootRollupHints.from({
|
|
159
192
|
previousBlockHeader: this.headerOfLastBlockInPreviousCheckpoint,
|
|
160
193
|
previousArchiveSiblingPath: this.lastArchiveSiblingPath,
|
|
194
|
+
previousOutHash: this.previousOutHashHint.treeSnapshot,
|
|
195
|
+
newOutHashSiblingPath: this.previousOutHashHint.siblingPath,
|
|
161
196
|
startBlobAccumulator: this.startBlobAccumulator.toBlobAccumulator(),
|
|
162
197
|
finalBlobChallenges: this.finalBlobBatchingChallenges,
|
|
163
198
|
blobFields: padArrayEnd(blobFields, Fr.ZERO, FIELDS_PER_BLOB * BLOBS_PER_CHECKPOINT),
|
|
@@ -171,7 +206,7 @@ export class CheckpointProvingState {
|
|
|
171
206
|
], hints);
|
|
172
207
|
}
|
|
173
208
|
getBlockProvingStateByBlockNumber(blockNumber) {
|
|
174
|
-
const index = blockNumber - this.firstBlockNumber;
|
|
209
|
+
const index = Number(blockNumber) - Number(this.firstBlockNumber);
|
|
175
210
|
return this.blocks[index];
|
|
176
211
|
}
|
|
177
212
|
isReadyForBlockMerge(location) {
|
|
@@ -179,7 +214,7 @@ export class CheckpointProvingState {
|
|
|
179
214
|
}
|
|
180
215
|
isReadyForCheckpointRoot() {
|
|
181
216
|
const allChildProofsReady = this.#getChildProofsForRoot().every((p)=>!!p);
|
|
182
|
-
return allChildProofsReady && !!this.startBlobAccumulator;
|
|
217
|
+
return allChildProofsReady && !!this.previousOutHashHint && !!this.startBlobAccumulator;
|
|
183
218
|
}
|
|
184
219
|
verifyState() {
|
|
185
220
|
return this.parentEpoch.verifyState();
|