@aztec/sequencer-client 0.16.9 → 0.17.0
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/solo_block_builder.d.ts +14 -12
- package/dest/block_builder/solo_block_builder.d.ts.map +1 -1
- package/dest/block_builder/solo_block_builder.js +107 -97
- package/dest/block_builder/types.d.ts +2 -2
- package/dest/block_builder/types.d.ts.map +1 -1
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +3 -3
- package/dest/sequencer/public_processor.d.ts +1 -0
- package/dest/sequencer/public_processor.d.ts.map +1 -1
- package/dest/sequencer/public_processor.js +29 -9
- package/dest/sequencer/sequencer.js +8 -8
- package/dest/sequencer/utils.d.ts +1 -1
- package/dest/sequencer/utils.js +3 -3
- package/dest/simulator/public_executor.d.ts.map +1 -1
- package/dest/simulator/public_executor.js +14 -10
- package/package.json +11 -13
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AppendOnlyTreeSnapshot, BaseOrMergeRollupPublicInputs, BaseRollupInputs, ConstantRollupData, GlobalVariables, MembershipWitness, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, NullifierLeafPreimage, PreviousKernelData, PreviousRollupData, Proof, RollupTypes, RootRollupInputs, RootRollupPublicInputs, VerificationKey } from '@aztec/circuits.js';
|
|
1
|
+
import { AppendOnlyTreeSnapshot, BaseOrMergeRollupPublicInputs, BaseRollupInputs, ConstantRollupData, GlobalVariables, MembershipWitness, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, NullifierLeafPreimage, PreviousKernelData, PreviousRollupData, Proof, PublicDataTreeLeaf, PublicDataTreeLeafPreimage, RollupTypes, RootRollupInputs, RootRollupPublicInputs, VerificationKey } from '@aztec/circuits.js';
|
|
2
2
|
import { Fr } from '@aztec/foundation/fields';
|
|
3
3
|
import { Tuple } from '@aztec/foundation/serialize';
|
|
4
4
|
import { L2Block, MerkleTreeId } from '@aztec/types';
|
|
@@ -32,7 +32,7 @@ export declare class SoloBlockBuilder implements BlockBuilder {
|
|
|
32
32
|
protected validateTxs(txs: ProcessedTx[]): void;
|
|
33
33
|
protected getTreeSnapshot(id: MerkleTreeId): Promise<AppendOnlyTreeSnapshot>;
|
|
34
34
|
protected runCircuits(globalVariables: GlobalVariables, txs: ProcessedTx[], newL1ToL2Messages: Fr[]): Promise<[RootRollupPublicInputs, Proof]>;
|
|
35
|
-
protected baseRollupCircuit(
|
|
35
|
+
protected baseRollupCircuit(tx: ProcessedTx, globalVariables: GlobalVariables): Promise<[BaseOrMergeRollupPublicInputs, Proof]>;
|
|
36
36
|
protected mergeRollupCircuit(left: [BaseOrMergeRollupPublicInputs, Proof], right: [BaseOrMergeRollupPublicInputs, Proof]): Promise<[BaseOrMergeRollupPublicInputs, Proof]>;
|
|
37
37
|
protected getVerificationKey(type: RollupTypes): VerificationKey;
|
|
38
38
|
protected rootRollupCircuit(left: [BaseOrMergeRollupPublicInputs, Proof], right: [BaseOrMergeRollupPublicInputs, Proof], newL1ToL2Messages: Tuple<Fr, typeof NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP>): Promise<[RootRollupPublicInputs, Proof]>;
|
|
@@ -40,13 +40,6 @@ export declare class SoloBlockBuilder implements BlockBuilder {
|
|
|
40
40
|
protected calculateBlockHash(globals: GlobalVariables): Promise<Fr>;
|
|
41
41
|
protected validateTrees(rollupOutput: BaseOrMergeRollupPublicInputs | RootRollupPublicInputs): Promise<void>;
|
|
42
42
|
protected validateRootOutput(rootOutput: RootRollupPublicInputs): Promise<void>;
|
|
43
|
-
/**
|
|
44
|
-
* Validates that the root of the public data tree matches the output of the circuit simulation.
|
|
45
|
-
* @param output - The output of the circuit simulation.
|
|
46
|
-
* Note: Public data tree is sparse, so the "next available leaf index" doesn't make sense there.
|
|
47
|
-
* For this reason we only validate root.
|
|
48
|
-
*/
|
|
49
|
-
protected validatePublicDataTreeRoot(output: BaseOrMergeRollupPublicInputs | RootRollupPublicInputs): Promise<void>;
|
|
50
43
|
protected validateTree<T extends BaseOrMergeRollupPublicInputs | RootRollupPublicInputs>(output: T, treeId: MerkleTreeId, name: AllowedTreeNames<T>): Promise<void>;
|
|
51
44
|
protected validateSimulatedTree(localTree: AppendOnlyTreeSnapshot, simulatedTree: AppendOnlyTreeSnapshot, name: TreeNames, label?: string): void;
|
|
52
45
|
protected getRootRollupInput(rollupOutputLeft: BaseOrMergeRollupPublicInputs, rollupProofLeft: Proof, rollupOutputRight: BaseOrMergeRollupPublicInputs, rollupProofRight: Proof, newL1ToL2Messages: Tuple<Fr, typeof NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP>): Promise<RootRollupInputs>;
|
|
@@ -68,9 +61,18 @@ export declare class SoloBlockBuilder implements BlockBuilder {
|
|
|
68
61
|
witness: MembershipWitness<20>;
|
|
69
62
|
}>;
|
|
70
63
|
protected getSubtreeSiblingPath(treeId: MerkleTreeId, subtreeHeight: number): Promise<Fr[]>;
|
|
71
|
-
protected processPublicDataUpdateRequests(tx: ProcessedTx): Promise<[[Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr], [Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr], [Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr], [Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr], [Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr], [Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr], [Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr], [Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr], [Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr], [Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr], [Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr], [Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr], [Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr], [Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr], [Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr], [Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr]]>;
|
|
72
|
-
protected getPublicDataReadsSiblingPaths(tx: ProcessedTx): Promise<[[Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr], [Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr], [Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr], [Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr], [Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr], [Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr], [Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr], [Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr], [Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr], [Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr], [Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr], [Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr], [Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr], [Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr], [Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr], [Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr]]>;
|
|
73
|
-
|
|
64
|
+
protected processPublicDataUpdateRequests(tx: ProcessedTx): Promise<{
|
|
65
|
+
lowPublicDataWritesPreimages: [PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage];
|
|
66
|
+
lowPublicDataWritesMembershipWitnesses: [MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>];
|
|
67
|
+
newPublicDataSubtreeSiblingPath: [Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr];
|
|
68
|
+
sortedPublicDataWrites: [PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf];
|
|
69
|
+
sortedPublicDataWritesIndexes: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number];
|
|
70
|
+
}>;
|
|
71
|
+
protected getPublicDataReadsInfo(tx: ProcessedTx): Promise<{
|
|
72
|
+
newPublicDataReadsWitnesses: [MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>];
|
|
73
|
+
newPublicDataReadsPreimages: [PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage];
|
|
74
|
+
}>;
|
|
75
|
+
protected buildBaseRollupInput(tx: ProcessedTx, globalVariables: GlobalVariables): Promise<BaseRollupInputs>;
|
|
74
76
|
protected makeEmptyMembershipWitness<N extends number>(height: N): MembershipWitness<N>;
|
|
75
77
|
}
|
|
76
78
|
//# sourceMappingURL=solo_block_builder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solo_block_builder.d.ts","sourceRoot":"","sources":["../../src/block_builder/solo_block_builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,sBAAsB,EACtB,6BAA6B,EAC7B,gBAAgB,EAGhB,kBAAkB,EAClB,eAAe,
|
|
1
|
+
{"version":3,"file":"solo_block_builder.d.ts","sourceRoot":"","sources":["../../src/block_builder/solo_block_builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ARCHIVE_HEIGHT, AppendOnlyTreeSnapshot, BaseRollupInputs, CONTRACT_SUBTREE_HEIGHT, CONTRACT_SUBTREE_SIBLING_PATH_LENGTH, ConstantRollupData, L1_TO_L2_MSG_SUBTREE_HEIGHT, L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH,
|
|
1
|
+
import { ARCHIVE_HEIGHT, AppendOnlyTreeSnapshot, BaseRollupInputs, CONTRACT_SUBTREE_HEIGHT, CONTRACT_SUBTREE_SIBLING_PATH_LENGTH, ConstantRollupData, L1_TO_L2_MSG_SUBTREE_HEIGHT, L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH, MAX_NEW_NULLIFIERS_PER_TX, MAX_PUBLIC_DATA_READS_PER_TX, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, MembershipWitness, MergeRollupInputs, NOTE_HASH_SUBTREE_HEIGHT, NOTE_HASH_SUBTREE_SIBLING_PATH_LENGTH, NULLIFIER_SUBTREE_HEIGHT, NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH, NULLIFIER_TREE_HEIGHT, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, NullifierLeafPreimage, PUBLIC_DATA_SUBTREE_HEIGHT, PUBLIC_DATA_SUBTREE_SIBLING_PATH_LENGTH, PUBLIC_DATA_TREE_HEIGHT, PreviousKernelData, PreviousRollupData, PublicDataTreeLeaf, PublicDataTreeLeafPreimage, ROLLUP_VK_TREE_HEIGHT, RollupTypes, RootRollupInputs, RootRollupPublicInputs, VK_TREE_HEIGHT, makeTuple, } from '@aztec/circuits.js';
|
|
2
2
|
import { computeBlockHash, computeBlockHashWithGlobals, computeContractLeaf, computeGlobalsHash, } from '@aztec/circuits.js/abis';
|
|
3
3
|
import { toFriendlyJSON } from '@aztec/circuits.js/utils';
|
|
4
4
|
import { toBigIntBE } from '@aztec/foundation/bigint-buffer';
|
|
@@ -8,7 +8,6 @@ import { createDebugLogger } from '@aztec/foundation/log';
|
|
|
8
8
|
import { assertLength } from '@aztec/foundation/serialize';
|
|
9
9
|
import { ContractData, L2Block, L2BlockL2Logs, MerkleTreeId, PublicDataWrite, TxL2Logs } from '@aztec/types';
|
|
10
10
|
import chunk from 'lodash.chunk';
|
|
11
|
-
import flatMap from 'lodash.flatmap';
|
|
12
11
|
const frToBigInt = (fr) => toBigIntBE(fr.toBuffer());
|
|
13
12
|
// Denotes fields that are not used now, but will be in the future
|
|
14
13
|
const FUTURE_FR = new Fr(0n);
|
|
@@ -41,21 +40,23 @@ export class SoloBlockBuilder {
|
|
|
41
40
|
MerkleTreeId.NULLIFIER_TREE,
|
|
42
41
|
MerkleTreeId.CONTRACT_TREE,
|
|
43
42
|
MerkleTreeId.PUBLIC_DATA_TREE,
|
|
44
|
-
MerkleTreeId.
|
|
43
|
+
MerkleTreeId.L1_TO_L2_MESSAGE_TREE,
|
|
45
44
|
MerkleTreeId.ARCHIVE,
|
|
46
45
|
].map(tree => this.getTreeSnapshot(tree)));
|
|
47
46
|
// Check txs are good for processing
|
|
48
47
|
this.validateTxs(txs);
|
|
49
48
|
// We fill the tx batch with empty txs, we process only one tx at a time for now
|
|
50
49
|
const [circuitsOutput, proof] = await this.runCircuits(globalVariables, txs, newL1ToL2Messages);
|
|
51
|
-
const { endNoteHashTreeSnapshot, endNullifierTreeSnapshot, endContractTreeSnapshot,
|
|
50
|
+
const { endNoteHashTreeSnapshot, endNullifierTreeSnapshot, endContractTreeSnapshot, endPublicDataTreeSnapshot, endL1ToL2MessageTreeSnapshot, endArchiveSnapshot, } = circuitsOutput;
|
|
52
51
|
// Collect all new nullifiers, commitments, and contracts from all txs in this block
|
|
53
|
-
const newNullifiers = flatMap(
|
|
54
|
-
const newCommitments = flatMap(
|
|
55
|
-
const newContracts = flatMap(
|
|
56
|
-
const newContractData =
|
|
57
|
-
|
|
58
|
-
|
|
52
|
+
const newNullifiers = txs.flatMap(tx => tx.data.end.newNullifiers);
|
|
53
|
+
const newCommitments = txs.flatMap(tx => tx.data.end.newCommitments);
|
|
54
|
+
const newContracts = txs.flatMap(tx => tx.data.end.newContracts).map(cd => computeContractLeaf(cd));
|
|
55
|
+
const newContractData = txs
|
|
56
|
+
.flatMap(tx => tx.data.end.newContracts)
|
|
57
|
+
.map(n => new ContractData(n.contractAddress, n.portalContractAddress));
|
|
58
|
+
const newPublicDataWrites = txs.flatMap(tx => tx.data.end.publicDataUpdateRequests.map(t => new PublicDataWrite(t.leafSlot, t.newValue)));
|
|
59
|
+
const newL2ToL1Msgs = txs.flatMap(tx => tx.data.end.newL2ToL1Msgs);
|
|
59
60
|
// Consolidate logs data from all txs
|
|
60
61
|
const encryptedLogsArr = [];
|
|
61
62
|
const unencryptedLogsArr = [];
|
|
@@ -76,14 +77,14 @@ export class SoloBlockBuilder {
|
|
|
76
77
|
endNullifierTreeSnapshot,
|
|
77
78
|
startContractTreeSnapshot,
|
|
78
79
|
endContractTreeSnapshot,
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
80
|
+
startPublicDataTreeSnapshot,
|
|
81
|
+
endPublicDataTreeSnapshot,
|
|
82
|
+
startL1ToL2MessageTreeSnapshot: startL1ToL2MessageTreeSnapshot,
|
|
83
|
+
endL1ToL2MessageTreeSnapshot,
|
|
83
84
|
startArchiveSnapshot,
|
|
84
85
|
endArchiveSnapshot,
|
|
85
|
-
newCommitments,
|
|
86
|
-
newNullifiers,
|
|
86
|
+
newCommitments: newCommitments.map((c) => c.value),
|
|
87
|
+
newNullifiers: newNullifiers.map((n) => n.value),
|
|
87
88
|
newL2ToL1Msgs,
|
|
88
89
|
newContracts,
|
|
89
90
|
newContractData,
|
|
@@ -105,7 +106,7 @@ export class SoloBlockBuilder {
|
|
|
105
106
|
'noteHashTreeRoot',
|
|
106
107
|
'contractTreeRoot',
|
|
107
108
|
'nullifierTreeRoot',
|
|
108
|
-
'
|
|
109
|
+
'l1ToL2MessageTreeRoot',
|
|
109
110
|
]) {
|
|
110
111
|
if (tx.data.constants.blockHeader[historicalTreeRoot].isZero()) {
|
|
111
112
|
throw new Error(`Empty ${historicalTreeRoot} for tx: ${toFriendlyJSON(tx)}`);
|
|
@@ -120,16 +121,15 @@ export class SoloBlockBuilder {
|
|
|
120
121
|
async runCircuits(globalVariables, txs, newL1ToL2Messages) {
|
|
121
122
|
// Check that the length of the array of txs is a power of two
|
|
122
123
|
// See https://graphics.stanford.edu/~seander/bithacks.html#DetermineIfPowerOf2
|
|
123
|
-
if (txs.length <
|
|
124
|
-
throw new Error(`Length of txs for the block should be a power of two and at least
|
|
124
|
+
if (txs.length < 2 || (txs.length & (txs.length - 1)) !== 0) {
|
|
125
|
+
throw new Error(`Length of txs for the block should be a power of two and at least two (got ${txs.length})`);
|
|
125
126
|
}
|
|
126
127
|
// padArrayEnd throws if the array is already full. Otherwise it pads till we reach the required size
|
|
127
128
|
const newL1ToL2MessagesTuple = padArrayEnd(newL1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
|
|
128
129
|
// Run the base rollup circuits for the txs
|
|
129
130
|
const baseRollupOutputs = [];
|
|
130
|
-
for (const
|
|
131
|
-
|
|
132
|
-
baseRollupOutputs.push(await this.baseRollupCircuit(tx1, tx2, globalVariables));
|
|
131
|
+
for (const tx of txs) {
|
|
132
|
+
baseRollupOutputs.push(await this.baseRollupCircuit(tx, globalVariables));
|
|
133
133
|
}
|
|
134
134
|
// Run merge rollups in layers until we have only two outputs
|
|
135
135
|
let mergeRollupInputs = baseRollupOutputs;
|
|
@@ -146,9 +146,9 @@ export class SoloBlockBuilder {
|
|
|
146
146
|
const [mergeOutputLeft, mergeOutputRight] = mergeRollupInputs;
|
|
147
147
|
return this.rootRollupCircuit(mergeOutputLeft, mergeOutputRight, newL1ToL2MessagesTuple);
|
|
148
148
|
}
|
|
149
|
-
async baseRollupCircuit(
|
|
150
|
-
this.debug(`Running base rollup for ${
|
|
151
|
-
const rollupInput = await this.buildBaseRollupInput(
|
|
149
|
+
async baseRollupCircuit(tx, globalVariables) {
|
|
150
|
+
this.debug(`Running base rollup for ${tx.hash}`);
|
|
151
|
+
const rollupInput = await this.buildBaseRollupInput(tx, globalVariables);
|
|
152
152
|
const rollupOutput = await this.simulator.baseRollupCircuit(rollupInput);
|
|
153
153
|
await this.validateTrees(rollupOutput);
|
|
154
154
|
const proof = await this.prover.getBaseRollupProof(rollupInput, rollupOutput);
|
|
@@ -179,7 +179,7 @@ export class SoloBlockBuilder {
|
|
|
179
179
|
this.debug(`Running root rollup circuit`);
|
|
180
180
|
const rootInput = await this.getRootRollupInput(...left, ...right, newL1ToL2Messages);
|
|
181
181
|
// Update the local trees to include the new l1 to l2 messages
|
|
182
|
-
await this.db.appendLeaves(MerkleTreeId.
|
|
182
|
+
await this.db.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, newL1ToL2Messages.map(m => m.toBuffer()));
|
|
183
183
|
// Simulate and get proof for the root circuit
|
|
184
184
|
const rootOutput = await this.simulator.rootRollupCircuit(rootInput);
|
|
185
185
|
const rootProof = await this.prover.getRootRollupProof(rootInput, rootOutput);
|
|
@@ -203,7 +203,7 @@ export class SoloBlockBuilder {
|
|
|
203
203
|
MerkleTreeId.NULLIFIER_TREE,
|
|
204
204
|
MerkleTreeId.CONTRACT_TREE,
|
|
205
205
|
MerkleTreeId.PUBLIC_DATA_TREE,
|
|
206
|
-
MerkleTreeId.
|
|
206
|
+
MerkleTreeId.L1_TO_L2_MESSAGE_TREE,
|
|
207
207
|
].map(tree => this.getTreeSnapshot(tree)))).map(r => r.root);
|
|
208
208
|
const blockHash = computeBlockHashWithGlobals(globals, noteHashTreeRoot, nullifierTreeRoot, contractTreeRoot, l1ToL2MessageTreeRoot, publicDataTreeRoot);
|
|
209
209
|
return blockHash;
|
|
@@ -214,7 +214,7 @@ export class SoloBlockBuilder {
|
|
|
214
214
|
this.validateTree(rollupOutput, MerkleTreeId.CONTRACT_TREE, 'ContractTree'),
|
|
215
215
|
this.validateTree(rollupOutput, MerkleTreeId.NOTE_HASH_TREE, 'NoteHashTree'),
|
|
216
216
|
this.validateTree(rollupOutput, MerkleTreeId.NULLIFIER_TREE, 'NullifierTree'),
|
|
217
|
-
this.
|
|
217
|
+
this.validateTree(rollupOutput, MerkleTreeId.PUBLIC_DATA_TREE, 'PublicDataTree'),
|
|
218
218
|
]);
|
|
219
219
|
}
|
|
220
220
|
// Validate that the roots of all local trees match the output of the root circuit simulation
|
|
@@ -222,22 +222,9 @@ export class SoloBlockBuilder {
|
|
|
222
222
|
await Promise.all([
|
|
223
223
|
this.validateTrees(rootOutput),
|
|
224
224
|
this.validateTree(rootOutput, MerkleTreeId.ARCHIVE, 'Archive'),
|
|
225
|
-
this.validateTree(rootOutput, MerkleTreeId.
|
|
225
|
+
this.validateTree(rootOutput, MerkleTreeId.L1_TO_L2_MESSAGE_TREE, 'L1ToL2MessageTree'),
|
|
226
226
|
]);
|
|
227
227
|
}
|
|
228
|
-
/**
|
|
229
|
-
* Validates that the root of the public data tree matches the output of the circuit simulation.
|
|
230
|
-
* @param output - The output of the circuit simulation.
|
|
231
|
-
* Note: Public data tree is sparse, so the "next available leaf index" doesn't make sense there.
|
|
232
|
-
* For this reason we only validate root.
|
|
233
|
-
*/
|
|
234
|
-
async validatePublicDataTreeRoot(output) {
|
|
235
|
-
const localTree = await this.getTreeSnapshot(MerkleTreeId.PUBLIC_DATA_TREE);
|
|
236
|
-
const simulatedTreeRoot = output[`endPublicDataTreeRoot`];
|
|
237
|
-
if (!simulatedTreeRoot.toBuffer().equals(localTree.root.toBuffer())) {
|
|
238
|
-
throw new Error(`PublicData tree root mismatch (local ${localTree.root}, simulated ${simulatedTreeRoot})`);
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
228
|
// Helper for validating a non-roots tree against a circuit simulation output
|
|
242
229
|
async validateTree(output, treeId, name) {
|
|
243
230
|
if ('endL1ToL2MessageTreeSnapshot' in output && !(output instanceof RootRollupPublicInputs)) {
|
|
@@ -270,10 +257,10 @@ export class SoloBlockBuilder {
|
|
|
270
257
|
const path = await this.db.getSiblingPath(treeId, size);
|
|
271
258
|
return path.toFieldArray();
|
|
272
259
|
};
|
|
273
|
-
const
|
|
274
|
-
const
|
|
260
|
+
const newL1ToL2MessageTreeRootSiblingPathArray = await this.getSubtreeSiblingPath(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, L1_TO_L2_MSG_SUBTREE_HEIGHT);
|
|
261
|
+
const newL1ToL2MessageTreeRootSiblingPath = makeTuple(L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH, i => i < newL1ToL2MessageTreeRootSiblingPathArray.length ? newL1ToL2MessageTreeRootSiblingPathArray[i] : Fr.ZERO, 0);
|
|
275
262
|
// Get tree snapshots
|
|
276
|
-
const
|
|
263
|
+
const startL1ToL2MessageTreeSnapshot = await this.getTreeSnapshot(MerkleTreeId.L1_TO_L2_MESSAGE_TREE);
|
|
277
264
|
// Get blocks tree
|
|
278
265
|
const startArchiveSnapshot = await this.getTreeSnapshot(MerkleTreeId.ARCHIVE);
|
|
279
266
|
const newArchiveSiblingPathArray = await getRootTreeSiblingPath(MerkleTreeId.ARCHIVE);
|
|
@@ -281,8 +268,8 @@ export class SoloBlockBuilder {
|
|
|
281
268
|
return RootRollupInputs.from({
|
|
282
269
|
previousRollupData,
|
|
283
270
|
newL1ToL2Messages,
|
|
284
|
-
|
|
285
|
-
|
|
271
|
+
newL1ToL2MessageTreeRootSiblingPath,
|
|
272
|
+
startL1ToL2MessageTreeSnapshot,
|
|
286
273
|
startArchiveSnapshot,
|
|
287
274
|
newArchiveSiblingPath,
|
|
288
275
|
});
|
|
@@ -314,8 +301,8 @@ export class SoloBlockBuilder {
|
|
|
314
301
|
}
|
|
315
302
|
getHistoricalTreesMembershipWitnessFor(tx) {
|
|
316
303
|
const blockHeader = tx.data.constants.blockHeader;
|
|
317
|
-
const { noteHashTreeRoot, nullifierTreeRoot, contractTreeRoot,
|
|
318
|
-
const blockHash = computeBlockHash(blockHeader.globalVariablesHash, noteHashTreeRoot, nullifierTreeRoot, contractTreeRoot,
|
|
304
|
+
const { noteHashTreeRoot, nullifierTreeRoot, contractTreeRoot, l1ToL2MessageTreeRoot, publicDataTreeRoot } = blockHeader;
|
|
305
|
+
const blockHash = computeBlockHash(blockHeader.globalVariablesHash, noteHashTreeRoot, nullifierTreeRoot, contractTreeRoot, l1ToL2MessageTreeRoot, publicDataTreeRoot);
|
|
319
306
|
return this.getMembershipWitnessFor(blockHash, MerkleTreeId.ARCHIVE, ARCHIVE_HEIGHT);
|
|
320
307
|
}
|
|
321
308
|
async getConstantRollupData(globalVariables) {
|
|
@@ -357,28 +344,60 @@ export class SoloBlockBuilder {
|
|
|
357
344
|
return fullSiblingPath.getSubtreeSiblingPath(subtreeHeight).toFieldArray();
|
|
358
345
|
}
|
|
359
346
|
async processPublicDataUpdateRequests(tx) {
|
|
360
|
-
const
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
347
|
+
const { lowLeavesWitnessData, newSubtreeSiblingPath, sortedNewLeaves, sortedNewLeavesIndexes } = await this.db.batchInsert(MerkleTreeId.PUBLIC_DATA_TREE,
|
|
348
|
+
// TODO(#3675) remove oldValue from update requests
|
|
349
|
+
tx.data.end.publicDataUpdateRequests.map(updateRequest => {
|
|
350
|
+
return new PublicDataTreeLeaf(updateRequest.leafSlot, updateRequest.newValue).toBuffer();
|
|
351
|
+
}), PUBLIC_DATA_SUBTREE_HEIGHT);
|
|
352
|
+
if (lowLeavesWitnessData === undefined) {
|
|
353
|
+
throw new Error(`Could not craft public data batch insertion proofs`);
|
|
367
354
|
}
|
|
368
|
-
|
|
355
|
+
const sortedPublicDataWrites = makeTuple(MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, i => {
|
|
356
|
+
return PublicDataTreeLeaf.fromBuffer(sortedNewLeaves[i]);
|
|
357
|
+
});
|
|
358
|
+
const sortedPublicDataWritesIndexes = makeTuple(MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, i => {
|
|
359
|
+
return sortedNewLeavesIndexes[i];
|
|
360
|
+
});
|
|
361
|
+
const subtreeSiblingPathAsFields = newSubtreeSiblingPath.toFieldArray();
|
|
362
|
+
const newPublicDataSubtreeSiblingPath = makeTuple(PUBLIC_DATA_SUBTREE_SIBLING_PATH_LENGTH, i => {
|
|
363
|
+
return subtreeSiblingPathAsFields[i];
|
|
364
|
+
});
|
|
365
|
+
const lowPublicDataWritesMembershipWitnesses = makeTuple(MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, i => {
|
|
366
|
+
const witness = lowLeavesWitnessData[i];
|
|
367
|
+
return MembershipWitness.fromBufferArray(witness.index, assertLength(witness.siblingPath.toBufferArray(), PUBLIC_DATA_TREE_HEIGHT));
|
|
368
|
+
});
|
|
369
|
+
const lowPublicDataWritesPreimages = makeTuple(MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, i => {
|
|
370
|
+
return lowLeavesWitnessData[i].leafPreimage;
|
|
371
|
+
});
|
|
372
|
+
return {
|
|
373
|
+
lowPublicDataWritesPreimages,
|
|
374
|
+
lowPublicDataWritesMembershipWitnesses,
|
|
375
|
+
newPublicDataSubtreeSiblingPath,
|
|
376
|
+
sortedPublicDataWrites,
|
|
377
|
+
sortedPublicDataWritesIndexes,
|
|
378
|
+
};
|
|
369
379
|
}
|
|
370
|
-
async
|
|
371
|
-
const
|
|
380
|
+
async getPublicDataReadsInfo(tx) {
|
|
381
|
+
const newPublicDataReadsWitnesses = makeTuple(MAX_PUBLIC_DATA_READS_PER_TX, () => MembershipWitness.empty(PUBLIC_DATA_TREE_HEIGHT, 0n));
|
|
382
|
+
const newPublicDataReadsPreimages = makeTuple(MAX_PUBLIC_DATA_READS_PER_TX, () => PublicDataTreeLeafPreimage.empty());
|
|
372
383
|
for (const i in tx.data.end.publicDataReads) {
|
|
373
|
-
const
|
|
374
|
-
const
|
|
375
|
-
|
|
376
|
-
|
|
384
|
+
const leafSlot = tx.data.end.publicDataReads[i].leafSlot.value;
|
|
385
|
+
const lowLeafResult = await this.db.getPreviousValueIndex(MerkleTreeId.PUBLIC_DATA_TREE, leafSlot);
|
|
386
|
+
if (!lowLeafResult) {
|
|
387
|
+
throw new Error(`Public data tree should have one initial leaf`);
|
|
388
|
+
}
|
|
389
|
+
const preimage = await this.db.getLeafPreimage(MerkleTreeId.PUBLIC_DATA_TREE, lowLeafResult.index);
|
|
390
|
+
const path = await this.db.getSiblingPath(MerkleTreeId.PUBLIC_DATA_TREE, lowLeafResult.index);
|
|
391
|
+
newPublicDataReadsWitnesses[i] = new MembershipWitness(PUBLIC_DATA_TREE_HEIGHT, BigInt(lowLeafResult.index), path.toTuple());
|
|
392
|
+
newPublicDataReadsPreimages[i] = preimage;
|
|
377
393
|
}
|
|
378
|
-
return
|
|
394
|
+
return {
|
|
395
|
+
newPublicDataReadsWitnesses,
|
|
396
|
+
newPublicDataReadsPreimages,
|
|
397
|
+
};
|
|
379
398
|
}
|
|
380
399
|
// Builds the base rollup inputs, updating the contract, nullifier, and data trees in the process
|
|
381
|
-
async buildBaseRollupInput(
|
|
400
|
+
async buildBaseRollupInput(tx, globalVariables) {
|
|
382
401
|
// Get trees info before any changes hit
|
|
383
402
|
const constants = await this.getConstantRollupData(globalVariables);
|
|
384
403
|
const startNullifierTreeSnapshot = await this.getTreeSnapshot(MerkleTreeId.NULLIFIER_TREE);
|
|
@@ -393,28 +412,17 @@ export class SoloBlockBuilder {
|
|
|
393
412
|
const newContractsSubtreeSiblingPath = makeTuple(CONTRACT_SUBTREE_SIBLING_PATH_LENGTH, i => i < newContractsSubtreeSiblingPathArray.length ? newContractsSubtreeSiblingPathArray[i] : Fr.ZERO);
|
|
394
413
|
// Update the contract and note hash trees with the new items being inserted to get the new roots
|
|
395
414
|
// that will be used by the next iteration of the base rollup circuit, skipping the empty ones
|
|
396
|
-
const newContracts =
|
|
397
|
-
const newCommitments =
|
|
415
|
+
const newContracts = tx.data.end.newContracts.map(cd => computeContractLeaf(cd));
|
|
416
|
+
const newCommitments = tx.data.end.newCommitments.map(x => x.value.toBuffer());
|
|
398
417
|
await this.db.appendLeaves(MerkleTreeId.CONTRACT_TREE, newContracts.map(x => x.toBuffer()));
|
|
399
418
|
await this.db.appendLeaves(MerkleTreeId.NOTE_HASH_TREE, newCommitments);
|
|
400
|
-
//
|
|
401
|
-
// All
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
// See https://github.com/AztecProtocol/aztec3-packages/issues/270#issuecomment-1522258200
|
|
405
|
-
const leftPublicDataReadSiblingPaths = await this.getPublicDataReadsSiblingPaths(left);
|
|
406
|
-
const leftPublicDataUpdateRequestsSiblingPaths = await this.processPublicDataUpdateRequests(left);
|
|
407
|
-
const rightPublicDataReadSiblingPaths = await this.getPublicDataReadsSiblingPaths(right);
|
|
408
|
-
const rightPublicDataUpdateRequestsSiblingPaths = await this.processPublicDataUpdateRequests(right);
|
|
409
|
-
const newPublicDataReadsSiblingPaths = makeTuple(MAX_PUBLIC_DATA_READS_PER_BASE_ROLLUP, i => i < MAX_PUBLIC_DATA_READS_PER_TX
|
|
410
|
-
? leftPublicDataReadSiblingPaths[i]
|
|
411
|
-
: rightPublicDataReadSiblingPaths[i - MAX_PUBLIC_DATA_READS_PER_TX]);
|
|
412
|
-
const newPublicDataUpdateRequestsSiblingPaths = makeTuple(MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_BASE_ROLLUP, i => i < MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX
|
|
413
|
-
? leftPublicDataUpdateRequestsSiblingPaths[i]
|
|
414
|
-
: rightPublicDataUpdateRequestsSiblingPaths[i - MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX]);
|
|
419
|
+
// The read witnesses for a given TX should be generated before the writes of the same TX are applied.
|
|
420
|
+
// All reads that refer to writes in the same tx are transient and can be simplified out.
|
|
421
|
+
const txPublicDataReadsInfo = await this.getPublicDataReadsInfo(tx);
|
|
422
|
+
const txPublicDataUpdateRequestInfo = await this.processPublicDataUpdateRequests(tx);
|
|
415
423
|
// Update the nullifier tree, capturing the low nullifier info for each individual operation
|
|
416
|
-
const newNullifiers =
|
|
417
|
-
const { lowLeavesWitnessData: nullifierWitnessLeaves, newSubtreeSiblingPath: newNullifiersSubtreeSiblingPath, sortedNewLeaves: sortedNewNullifiers, sortedNewLeavesIndexes: sortednewNullifiersIndexes, } = await this.db.batchInsert(MerkleTreeId.NULLIFIER_TREE, newNullifiers.map(
|
|
424
|
+
const newNullifiers = tx.data.end.newNullifiers;
|
|
425
|
+
const { lowLeavesWitnessData: nullifierWitnessLeaves, newSubtreeSiblingPath: newNullifiersSubtreeSiblingPath, sortedNewLeaves: sortedNewNullifiers, sortedNewLeavesIndexes: sortednewNullifiersIndexes, } = await this.db.batchInsert(MerkleTreeId.NULLIFIER_TREE, newNullifiers.map(sideEffectLinkedToNoteHash => sideEffectLinkedToNoteHash.value.toBuffer()), NULLIFIER_SUBTREE_HEIGHT);
|
|
418
426
|
if (nullifierWitnessLeaves === undefined) {
|
|
419
427
|
throw new Error(`Could not craft nullifier batch insertion proofs`);
|
|
420
428
|
}
|
|
@@ -426,30 +434,32 @@ export class SoloBlockBuilder {
|
|
|
426
434
|
startNullifierTreeSnapshot,
|
|
427
435
|
startContractTreeSnapshot,
|
|
428
436
|
startNoteHashTreeSnapshot,
|
|
429
|
-
|
|
437
|
+
startPublicDataTreeSnapshot,
|
|
430
438
|
archiveSnapshot: startArchiveSnapshot,
|
|
431
|
-
|
|
432
|
-
|
|
439
|
+
sortedPublicDataWrites: txPublicDataUpdateRequestInfo.sortedPublicDataWrites,
|
|
440
|
+
sortedPublicDataWritesIndexes: txPublicDataUpdateRequestInfo.sortedPublicDataWritesIndexes,
|
|
441
|
+
lowPublicDataWritesPreimages: txPublicDataUpdateRequestInfo.lowPublicDataWritesPreimages,
|
|
442
|
+
lowPublicDataWritesMembershipWitnesses: txPublicDataUpdateRequestInfo.lowPublicDataWritesMembershipWitnesses,
|
|
443
|
+
publicDataWritesSubtreeSiblingPath: txPublicDataUpdateRequestInfo.newPublicDataSubtreeSiblingPath,
|
|
444
|
+
sortedNewNullifiers: makeTuple(MAX_NEW_NULLIFIERS_PER_TX, i => Fr.fromBuffer(sortedNewNullifiers[i])),
|
|
445
|
+
sortednewNullifiersIndexes: makeTuple(MAX_NEW_NULLIFIERS_PER_TX, i => sortednewNullifiersIndexes[i]),
|
|
433
446
|
newCommitmentsSubtreeSiblingPath,
|
|
434
447
|
newContractsSubtreeSiblingPath,
|
|
435
448
|
newNullifiersSubtreeSiblingPath: makeTuple(NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH, i => i < newNullifiersSubtreeSiblingPathArray.length ? newNullifiersSubtreeSiblingPathArray[i] : Fr.ZERO),
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
lowNullifierLeafPreimages: makeTuple(
|
|
449
|
+
publicDataReadsPreimages: txPublicDataReadsInfo.newPublicDataReadsPreimages,
|
|
450
|
+
publicDataReadsMembershipWitnesses: txPublicDataReadsInfo.newPublicDataReadsWitnesses,
|
|
451
|
+
lowNullifierLeafPreimages: makeTuple(MAX_NEW_NULLIFIERS_PER_TX, i => i < nullifierWitnessLeaves.length
|
|
439
452
|
? nullifierWitnessLeaves[i].leafPreimage
|
|
440
453
|
: NullifierLeafPreimage.empty()),
|
|
441
|
-
lowNullifierMembershipWitness: makeTuple(
|
|
454
|
+
lowNullifierMembershipWitness: makeTuple(MAX_NEW_NULLIFIERS_PER_TX, i => i < lowNullifierMembershipWitnesses.length
|
|
442
455
|
? lowNullifierMembershipWitnesses[i]
|
|
443
456
|
: this.makeEmptyMembershipWitness(NULLIFIER_TREE_HEIGHT)),
|
|
444
|
-
kernelData:
|
|
445
|
-
|
|
446
|
-
await this.getHistoricalTreesMembershipWitnessFor(left),
|
|
447
|
-
await this.getHistoricalTreesMembershipWitnessFor(right),
|
|
448
|
-
],
|
|
457
|
+
kernelData: this.getKernelDataFor(tx),
|
|
458
|
+
archiveRootMembershipWitness: await this.getHistoricalTreesMembershipWitnessFor(tx),
|
|
449
459
|
});
|
|
450
460
|
}
|
|
451
461
|
makeEmptyMembershipWitness(height) {
|
|
452
462
|
return new MembershipWitness(height, 0n, makeTuple(height, () => Fr.ZERO));
|
|
453
463
|
}
|
|
454
464
|
}
|
|
455
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sb19ibG9ja19idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jsb2NrX2J1aWxkZXIvc29sb19ibG9ja19idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxjQUFjLEVBQ2Qsc0JBQXNCLEVBRXRCLGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsb0NBQW9DLEVBQ3BDLGtCQUFrQixFQUVsQiwyQkFBMkIsRUFDM0Isd0NBQXdDLEVBQ3hDLGtDQUFrQyxFQUNsQyxxQ0FBcUMsRUFDckMsNEJBQTRCLEVBQzVCLCtDQUErQyxFQUMvQyxzQ0FBc0MsRUFDdEMsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIscUNBQXFDLEVBQ3JDLHdCQUF3QixFQUN4QixxQ0FBcUMsRUFDckMscUJBQXFCLEVBQ3JCLG1DQUFtQyxFQUNuQyxxQkFBcUIsRUFDckIsdUJBQXVCLEVBQ3ZCLGtCQUFrQixFQUNsQixrQkFBa0IsRUFFbEIscUJBQXFCLEVBQ3JCLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsc0JBQXNCLEVBQ3RCLGNBQWMsRUFFZCxTQUFTLEdBQ1YsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLDJCQUEyQixFQUMzQixtQkFBbUIsRUFDbkIsa0JBQWtCLEdBQ25CLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBUyxZQUFZLEVBQUUsTUFBTSw2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
|
|
465
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sb19ibG9ja19idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jsb2NrX2J1aWxkZXIvc29sb19ibG9ja19idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxjQUFjLEVBQ2Qsc0JBQXNCLEVBRXRCLGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsb0NBQW9DLEVBQ3BDLGtCQUFrQixFQUVsQiwyQkFBMkIsRUFDM0Isd0NBQXdDLEVBQ3hDLHlCQUF5QixFQUN6Qiw0QkFBNEIsRUFDNUIsc0NBQXNDLEVBQ3RDLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsd0JBQXdCLEVBQ3hCLHFDQUFxQyxFQUNyQyx3QkFBd0IsRUFDeEIscUNBQXFDLEVBQ3JDLHFCQUFxQixFQUNyQixtQ0FBbUMsRUFDbkMscUJBQXFCLEVBQ3JCLDBCQUEwQixFQUMxQix1Q0FBdUMsRUFDdkMsdUJBQXVCLEVBQ3ZCLGtCQUFrQixFQUNsQixrQkFBa0IsRUFFbEIsa0JBQWtCLEVBQ2xCLDBCQUEwQixFQUMxQixxQkFBcUIsRUFDckIsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixzQkFBc0IsRUFHdEIsY0FBYyxFQUVkLFNBQVMsR0FDVixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsMkJBQTJCLEVBQzNCLG1CQUFtQixFQUNuQixrQkFBa0IsR0FDbkIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQs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
|
|
@@ -2,11 +2,11 @@ import { AppendOnlyTreeSnapshot, BaseOrMergeRollupPublicInputs, RootRollupPublic
|
|
|
2
2
|
/**
|
|
3
3
|
* Type representing the names of the trees for the base rollup.
|
|
4
4
|
*/
|
|
5
|
-
type BaseTreeNames = 'NoteHashTree' | 'ContractTree' | 'NullifierTree';
|
|
5
|
+
type BaseTreeNames = 'NoteHashTree' | 'ContractTree' | 'NullifierTree' | 'PublicDataTree';
|
|
6
6
|
/**
|
|
7
7
|
* Type representing the names of the trees.
|
|
8
8
|
*/
|
|
9
|
-
export type TreeNames = BaseTreeNames | '
|
|
9
|
+
export type TreeNames = BaseTreeNames | 'L1ToL2MessageTree' | 'Archive';
|
|
10
10
|
/**
|
|
11
11
|
* Type to assert that only the correct trees are checked when validating rollup tree outputs.
|
|
12
12
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/block_builder/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEnH;;GAEG;AACH,KAAK,aAAa,GAAG,cAAc,GAAG,cAAc,GAAG,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/block_builder/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEnH;;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;AAExE;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,6BAA6B,GAAG,sBAAsB,IAC3F,CAAC,SAAS,sBAAsB,GAAG,SAAS,GAAG,aAAa,CAAC;AAE/D;;GAEG;AACH,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,6BAA6B,GAAG,sBAAsB,IAAI;KACpG,CAAC,IAAI,MAAM,gBAAgB,CAAC,CAAC,CAAC,UAAU,GAAG,sBAAsB;CACnE,CAAC"}
|
package/dest/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,2BAA2B;AAC3B,KAAK,WAAW,GAAG;IACjB,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,eAAe,GACjD,cAAc,GACd,eAAe,GACf,kBAAkB,GAClB,WAAW,CAAC;AAEd;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,qBAAqB,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,2BAA2B;AAC3B,KAAK,WAAW,GAAG;IACjB,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,eAAe,GACjD,cAAc,GACd,eAAe,GACf,kBAAkB,GAClB,WAAW,CAAC;AAEd;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,qBAAqB,CA+CxD"}
|
package/dest/config.js
CHANGED
|
@@ -4,7 +4,7 @@ import { EthAddress } from '@aztec/foundation/eth-address';
|
|
|
4
4
|
* Creates an instance of SequencerClientConfig out of environment variables using sensible defaults for integration testing if not set.
|
|
5
5
|
*/
|
|
6
6
|
export function getConfigEnvVars() {
|
|
7
|
-
const { SEQ_PUBLISHER_PRIVATE_KEY, ETHEREUM_HOST, CHAIN_ID, VERSION, API_KEY, SEQ_REQUIRED_CONFIRMATIONS, SEQ_PUBLISH_RETRY_INTERVAL_MS, SEQ_TX_POLLING_INTERVAL_MS, SEQ_MAX_TX_PER_BLOCK, SEQ_MIN_TX_PER_BLOCK, ROLLUP_CONTRACT_ADDRESS, REGISTRY_CONTRACT_ADDRESS, INBOX_CONTRACT_ADDRESS, CONTRACT_DEPLOYMENT_EMITTER_ADDRESS, } = process.env;
|
|
7
|
+
const { SEQ_PUBLISHER_PRIVATE_KEY, ETHEREUM_HOST, CHAIN_ID, VERSION, API_KEY, SEQ_REQUIRED_CONFIRMATIONS, SEQ_PUBLISH_RETRY_INTERVAL_MS, SEQ_TX_POLLING_INTERVAL_MS, SEQ_MAX_TX_PER_BLOCK, SEQ_MIN_TX_PER_BLOCK, ROLLUP_CONTRACT_ADDRESS, REGISTRY_CONTRACT_ADDRESS, INBOX_CONTRACT_ADDRESS, CONTRACT_DEPLOYMENT_EMITTER_ADDRESS, OUTBOX_CONTRACT_ADDRESS, } = process.env;
|
|
8
8
|
const publisherPrivateKey = SEQ_PUBLISHER_PRIVATE_KEY
|
|
9
9
|
? `0x${SEQ_PUBLISHER_PRIVATE_KEY.replace('0x', '')}`
|
|
10
10
|
: NULL_KEY;
|
|
@@ -13,7 +13,7 @@ export function getConfigEnvVars() {
|
|
|
13
13
|
rollupAddress: ROLLUP_CONTRACT_ADDRESS ? EthAddress.fromString(ROLLUP_CONTRACT_ADDRESS) : EthAddress.ZERO,
|
|
14
14
|
registryAddress: REGISTRY_CONTRACT_ADDRESS ? EthAddress.fromString(REGISTRY_CONTRACT_ADDRESS) : EthAddress.ZERO,
|
|
15
15
|
inboxAddress: INBOX_CONTRACT_ADDRESS ? EthAddress.fromString(INBOX_CONTRACT_ADDRESS) : EthAddress.ZERO,
|
|
16
|
-
outboxAddress: EthAddress.ZERO,
|
|
16
|
+
outboxAddress: OUTBOX_CONTRACT_ADDRESS ? EthAddress.fromString(OUTBOX_CONTRACT_ADDRESS) : EthAddress.ZERO,
|
|
17
17
|
contractDeploymentEmitterAddress: CONTRACT_DEPLOYMENT_EMITTER_ADDRESS
|
|
18
18
|
? EthAddress.fromString(CONTRACT_DEPLOYMENT_EMITTER_ADDRESS)
|
|
19
19
|
: EthAddress.ZERO,
|
|
@@ -33,4 +33,4 @@ export function getConfigEnvVars() {
|
|
|
33
33
|
minTxsPerBlock: SEQ_MIN_TX_PER_BLOCK ? +SEQ_MIN_TX_PER_BLOCK : 1,
|
|
34
34
|
};
|
|
35
35
|
}
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQXlCM0Q7O0dBRUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCO0lBQzlCLE1BQU0sRUFDSix5QkFBeUIsRUFDekIsYUFBYSxFQUNiLFFBQVEsRUFDUixPQUFPLEVBQ1AsT0FBTyxFQUNQLDBCQUEwQixFQUMxQiw2QkFBNkIsRUFDN0IsMEJBQTBCLEVBQzFCLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIsdUJBQXVCLEVBQ3ZCLHlCQUF5QixFQUN6QixzQkFBc0IsRUFDdEIsbUNBQW1DLEVBQ25DLHVCQUF1QixHQUN4QixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7SUFFaEIsTUFBTSxtQkFBbUIsR0FBUSx5QkFBeUI7UUFDeEQsQ0FBQyxDQUFDLEtBQUsseUJBQXlCLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRTtRQUNwRCxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQ2IsMkRBQTJEO0lBQzNELE1BQU0sU0FBUyxHQUF3QjtRQUNyQyxhQUFhLEVBQUUsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUk7UUFDekcsZUFBZSxFQUFFLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJO1FBQy9HLFlBQVksRUFBRSxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSTtRQUN0RyxhQUFhLEVBQUUsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUk7UUFDekcsZ0NBQWdDLEVBQUUsbUNBQW1DO1lBQ25FLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLG1DQUFtQyxDQUFDO1lBQzVELENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSTtRQUNuQixvQkFBb0IsRUFBRSxVQUFVLENBQUMsSUFBSTtLQUN0QyxDQUFDO0lBRUYsT0FBTztRQUNMLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUMxQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSztRQUNyQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQixNQUFNLEVBQUUsT0FBTztRQUNmLHFCQUFxQixFQUFFLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25GLDZCQUE2QixFQUFFLDZCQUE2QixDQUFDLENBQUMsQ0FBQyxDQUFDLDZCQUE2QixDQUFDLENBQUMsQ0FBQyxJQUFLO1FBQ3JHLDRCQUE0QixFQUFFLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxJQUFLO1FBQzlGLFdBQVcsRUFBRSxTQUFTO1FBQ3RCLG1CQUFtQjtRQUNuQixjQUFjLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDakUsY0FBYyxFQUFFLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ2pFLENBQUM7QUFDSixDQUFDIn0=
|
|
@@ -73,5 +73,6 @@ export declare class PublicProcessor {
|
|
|
73
73
|
* @param execResult - result of the top/first execution for this enqueued public call
|
|
74
74
|
*/
|
|
75
75
|
private patchPublicStorageActionOrdering;
|
|
76
|
+
private removeRedundantPublicDataWrites;
|
|
76
77
|
}
|
|
77
78
|
//# sourceMappingURL=public_processor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public_processor.d.ts","sourceRoot":"","sources":["../../src/sequencer/public_processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,qBAAqB,EACrB,cAAc,EACd,aAAa,EAId,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAEL,WAAW,EAKX,EAAE,EACF,eAAe,EACf,yBAAyB,EAUzB,kBAAkB,EAClB,KAAK,EACL,cAAc,EACd,mBAAmB,EACnB,yBAAyB,EAIzB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"public_processor.d.ts","sourceRoot":"","sources":["../../src/sequencer/public_processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { PublicExecutor, collectPublicDataReads, collectPublicDataUpdateRequests, isPublicExecutionResult, } from '@aztec/acir-simulator';
|
|
2
|
-
import { AztecAddress, CallRequest, CombinedAccumulatedData, ContractStorageRead, ContractStorageUpdateRequest, Fr, KernelCircuitPublicInputs, MAX_NEW_COMMITMENTS_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_DATA_READS_PER_CALL, MAX_PUBLIC_DATA_READS_PER_TX, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, MembershipWitness, PreviousKernelData, PublicCallData, PublicCallStackItem, PublicCircuitPublicInputs, PublicDataRead, PublicDataUpdateRequest, PublicKernelInputs, RETURN_VALUES_LENGTH, VK_TREE_HEIGHT, } from '@aztec/circuits.js';
|
|
2
|
+
import { AztecAddress, CallRequest, CombinedAccumulatedData, ContractStorageRead, ContractStorageUpdateRequest, Fr, KernelCircuitPublicInputs, MAX_NEW_COMMITMENTS_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_DATA_READS_PER_CALL, MAX_PUBLIC_DATA_READS_PER_TX, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, MembershipWitness, PreviousKernelData, PublicCallData, PublicCallStackItem, PublicCircuitPublicInputs, PublicDataRead, PublicDataUpdateRequest, PublicKernelInputs, RETURN_VALUES_LENGTH, SideEffect, SideEffectLinkedToNoteHash, VK_TREE_HEIGHT, } from '@aztec/circuits.js';
|
|
3
3
|
import { computeVarArgsHash } from '@aztec/circuits.js/abis';
|
|
4
4
|
import { arrayNonEmptyLength, isArrayEmpty, padArrayEnd } from '@aztec/foundation/collection';
|
|
5
5
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
6
6
|
import { to2Fields } from '@aztec/foundation/serialize';
|
|
7
|
+
import { Timer } from '@aztec/foundation/timer';
|
|
7
8
|
import { MerkleTreeId, Tx } from '@aztec/types';
|
|
8
9
|
import { getVerificationKeys } from '../index.js';
|
|
9
10
|
import { EmptyPublicProver } from '../prover/empty.js';
|
|
@@ -95,9 +96,17 @@ export class PublicProcessor {
|
|
|
95
96
|
}
|
|
96
97
|
async processTx(tx) {
|
|
97
98
|
if (!isArrayEmpty(tx.data.end.publicCallStack, item => item.isEmpty())) {
|
|
99
|
+
const timer = new Timer();
|
|
98
100
|
const [publicKernelOutput, publicKernelProof, newUnencryptedFunctionLogs] = await this.processEnqueuedPublicCalls(tx);
|
|
99
101
|
tx.unencryptedLogs.addFunctionLogs(newUnencryptedFunctionLogs);
|
|
100
|
-
|
|
102
|
+
const processedTransaction = await makeProcessedTx(tx, publicKernelOutput, publicKernelProof);
|
|
103
|
+
this.log(`Processed public part of ${tx.data.end.newNullifiers[0]}`, {
|
|
104
|
+
eventName: 'tx-sequencer-processing',
|
|
105
|
+
duration: timer.ms(),
|
|
106
|
+
publicDataUpdateRequests: processedTransaction.data.end.publicDataUpdateRequests.filter(x => !x.leafSlot.isZero()).length ?? 0,
|
|
107
|
+
...tx.getStats(),
|
|
108
|
+
});
|
|
109
|
+
return processedTransaction;
|
|
101
110
|
}
|
|
102
111
|
else {
|
|
103
112
|
return makeProcessedTx(tx);
|
|
@@ -138,6 +147,8 @@ export class PublicProcessor {
|
|
|
138
147
|
// TODO(#757): Enforce proper ordering of public state actions
|
|
139
148
|
this.patchPublicStorageActionOrdering(kernelOutput, enqueuedExecutionResult);
|
|
140
149
|
}
|
|
150
|
+
// TODO(#3675): This should be done in a public kernel circuit
|
|
151
|
+
this.removeRedundantPublicDataWrites(kernelOutput);
|
|
141
152
|
return [kernelOutput, kernelProof, newUnencryptedFunctionLogs];
|
|
142
153
|
}
|
|
143
154
|
async runKernelCircuit(callData, previousOutput, previousProof) {
|
|
@@ -180,8 +191,8 @@ export class PublicProcessor {
|
|
|
180
191
|
callContext: result.execution.callContext,
|
|
181
192
|
proverAddress: AztecAddress.ZERO,
|
|
182
193
|
argsHash: computeVarArgsHash(result.execution.args),
|
|
183
|
-
newCommitments: padArrayEnd(result.newCommitments,
|
|
184
|
-
newNullifiers: padArrayEnd(result.newNullifiers,
|
|
194
|
+
newCommitments: padArrayEnd(result.newCommitments, SideEffect.empty(), MAX_NEW_COMMITMENTS_PER_CALL),
|
|
195
|
+
newNullifiers: padArrayEnd(result.newNullifiers, SideEffectLinkedToNoteHash.empty(), MAX_NEW_NULLIFIERS_PER_CALL),
|
|
185
196
|
newL2ToL1Msgs: padArrayEnd(result.newL2ToL1Messages, Fr.ZERO, MAX_NEW_L2_TO_L1_MSGS_PER_CALL),
|
|
186
197
|
returnValues: padArrayEnd(result.returnValues, Fr.ZERO, RETURN_VALUES_LENGTH),
|
|
187
198
|
contractStorageReads: padArrayEnd(result.contractStorageReads, ContractStorageRead.empty(), MAX_PUBLIC_DATA_READS_PER_CALL),
|
|
@@ -243,9 +254,9 @@ export class PublicProcessor {
|
|
|
243
254
|
const simPublicDataUpdateRequests = collectPublicDataUpdateRequests(execResult);
|
|
244
255
|
const { publicDataReads, publicDataUpdateRequests } = publicInputs.end; // from kernel
|
|
245
256
|
// Validate all items in enqueued public calls are in the kernel emitted stack
|
|
246
|
-
const readsAreEqual = simPublicDataReads.reduce((accum, read) => accum && !!publicDataReads.find(item => item.
|
|
257
|
+
const readsAreEqual = simPublicDataReads.reduce((accum, read) => accum && !!publicDataReads.find(item => item.leafSlot.equals(read.leafSlot) && item.value.equals(read.value)), true);
|
|
247
258
|
const updatesAreEqual = simPublicDataUpdateRequests.reduce((accum, update) => accum &&
|
|
248
|
-
!!publicDataUpdateRequests.find(item => item.
|
|
259
|
+
!!publicDataUpdateRequests.find(item => item.leafSlot.equals(update.leafSlot) &&
|
|
249
260
|
item.oldValue.equals(update.oldValue) &&
|
|
250
261
|
item.newValue.equals(update.newValue)), true);
|
|
251
262
|
if (!readsAreEqual) {
|
|
@@ -261,8 +272,8 @@ export class PublicProcessor {
|
|
|
261
272
|
// Assume that kernel public inputs has the right number of items.
|
|
262
273
|
// We only want to reorder the items from the public inputs of the
|
|
263
274
|
// most recently processed top/enqueued call.
|
|
264
|
-
const numTotalReadsInKernel = arrayNonEmptyLength(publicInputs.end.publicDataReads, f => f.
|
|
265
|
-
const numTotalUpdatesInKernel = arrayNonEmptyLength(publicInputs.end.publicDataUpdateRequests, f => f.
|
|
275
|
+
const numTotalReadsInKernel = arrayNonEmptyLength(publicInputs.end.publicDataReads, f => f.leafSlot.equals(Fr.ZERO) && f.value.equals(Fr.ZERO));
|
|
276
|
+
const numTotalUpdatesInKernel = arrayNonEmptyLength(publicInputs.end.publicDataUpdateRequests, f => f.leafSlot.equals(Fr.ZERO) && f.oldValue.equals(Fr.ZERO) && f.newValue.equals(Fr.ZERO));
|
|
266
277
|
const numReadsBeforeThisEnqueuedCall = numTotalReadsInKernel - simPublicDataReads.length;
|
|
267
278
|
const numUpdatesBeforeThisEnqueuedCall = numTotalUpdatesInKernel - simPublicDataUpdateRequests.length;
|
|
268
279
|
// Override kernel output
|
|
@@ -278,5 +289,14 @@ export class PublicProcessor {
|
|
|
278
289
|
...simPublicDataUpdateRequests,
|
|
279
290
|
], PublicDataUpdateRequest.empty(), MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX);
|
|
280
291
|
}
|
|
292
|
+
removeRedundantPublicDataWrites(publicInputs) {
|
|
293
|
+
const lastWritesMap = new Map();
|
|
294
|
+
for (const write of publicInputs.end.publicDataUpdateRequests) {
|
|
295
|
+
const key = write.leafSlot.toString();
|
|
296
|
+
lastWritesMap.set(key, write);
|
|
297
|
+
}
|
|
298
|
+
const lastWrites = publicInputs.end.publicDataUpdateRequests.filter(write => lastWritesMap.get(write.leafSlot.toString()) === write);
|
|
299
|
+
publicInputs.end.publicDataUpdateRequests = padArrayEnd(lastWrites, PublicDataUpdateRequest.empty(), MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX);
|
|
300
|
+
}
|
|
281
301
|
}
|
|
282
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3Byb2Nlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXF1ZW5jZXIvcHVibGljX3Byb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsY0FBYyxFQUVkLHNCQUFzQixFQUN0QiwrQkFBK0IsRUFDL0IsdUJBQXVCLEdBQ3hCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUNMLFlBQVksRUFFWixXQUFXLEVBQ1gsdUJBQXVCLEVBQ3ZCLG1CQUFtQixFQUNuQiw0QkFBNEIsRUFDNUIsRUFBRSxFQUVGLHlCQUF5QixFQUN6Qiw0QkFBNEIsRUFDNUIsOEJBQThCLEVBQzlCLDJCQUEyQixFQUMzQixxQ0FBcUMsRUFDckMsOEJBQThCLEVBQzlCLDRCQUE0QixFQUM1Qix3Q0FBd0MsRUFDeEMsc0NBQXNDLEVBQ3RDLGlCQUFpQixFQUNqQixrQkFBa0IsRUFFbEIsY0FBYyxFQUNkLG1CQUFtQixFQUNuQix5QkFBeUIsRUFDekIsY0FBYyxFQUNkLHVCQUF1QixFQUN2QixrQkFBa0IsRUFFbEIsb0JBQW9CLEVBQ3BCLGNBQWMsR0FDZixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3hELE9BQU8sRUFBMkQsWUFBWSxFQUFFLEVBQUUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUd6RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHdkQs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
|
|
302
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3Byb2Nlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXF1ZW5jZXIvcHVibGljX3Byb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsY0FBYyxFQUVkLHNCQUFzQixFQUN0QiwrQkFBK0IsRUFDL0IsdUJBQXVCLEdBQ3hCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUNMLFlBQVksRUFFWixXQUFXLEVBQ1gsdUJBQXVCLEVBQ3ZCLG1CQUFtQixFQUNuQiw0QkFBNEIsRUFDNUIsRUFBRSxFQUVGLHlCQUF5QixFQUN6Qiw0QkFBNEIsRUFDNUIsOEJBQThCLEVBQzlCLDJCQUEyQixFQUMzQixxQ0FBcUMsRUFDckMsOEJBQThCLEVBQzlCLDRCQUE0QixFQUM1Qix3Q0FBd0MsRUFDeEMsc0NBQXNDLEVBQ3RDLGlCQUFpQixFQUNqQixrQkFBa0IsRUFFbEIsY0FBYyxFQUNkLG1CQUFtQixFQUNuQix5QkFBeUIsRUFDekIsY0FBYyxFQUNkLHVCQUF1QixFQUN2QixrQkFBa0IsRUFFbEIsb0JBQW9CLEVBQ3BCLFVBQVUsRUFDViwwQkFBMEIsRUFDMUIsY0FBYyxHQUNmLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDeEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hELE9BQU8sRUFBMkQsWUFBWSxFQUFFLEVBQUUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUl6RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUs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
|
|
@@ -239,7 +239,7 @@ export class Sequencer {
|
|
|
239
239
|
this.log(`Skipping tx with double-spend for this same block ${await Tx.getHash(tx)}`);
|
|
240
240
|
continue;
|
|
241
241
|
}
|
|
242
|
-
tx.data.end.newNullifiers.forEach(n => thisBlockNullifiers.add(n.toBigInt()));
|
|
242
|
+
tx.data.end.newNullifiers.forEach(n => thisBlockNullifiers.add(n.value.toBigInt()));
|
|
243
243
|
validTxs.push(tx);
|
|
244
244
|
if (validTxs.length >= this.maxTxsPerBlock) {
|
|
245
245
|
break;
|
|
@@ -274,8 +274,8 @@ export class Sequencer {
|
|
|
274
274
|
* @returns The new block.
|
|
275
275
|
*/
|
|
276
276
|
async buildBlock(txs, newL1ToL2Messages, emptyTx, globalVariables) {
|
|
277
|
-
// Pad the txs array with empty txs to be a power of two, at least
|
|
278
|
-
const txsTargetSize = Math.max(ceilPowerOfTwo(txs.length),
|
|
277
|
+
// Pad the txs array with empty txs to be a power of two, at least 2
|
|
278
|
+
const txsTargetSize = Math.max(ceilPowerOfTwo(txs.length), 2);
|
|
279
279
|
const emptyTxCount = txsTargetSize - txs.length;
|
|
280
280
|
const allTxs = [...txs, ...times(emptyTxCount, () => emptyTx)];
|
|
281
281
|
this.log(`Building block ${globalVariables.blockNumber}`);
|
|
@@ -297,9 +297,9 @@ export class Sequencer {
|
|
|
297
297
|
*/
|
|
298
298
|
isTxDoubleSpendSameBlock(tx, thisBlockNullifiers) {
|
|
299
299
|
// We only consider non-empty nullifiers
|
|
300
|
-
const newNullifiers = tx.data.end.newNullifiers.filter(n => !n.
|
|
300
|
+
const newNullifiers = tx.data.end.newNullifiers.filter(n => !n.isEmpty());
|
|
301
301
|
for (const nullifier of newNullifiers) {
|
|
302
|
-
if (thisBlockNullifiers.has(nullifier.toBigInt())) {
|
|
302
|
+
if (thisBlockNullifiers.has(nullifier.value.toBigInt())) {
|
|
303
303
|
return true;
|
|
304
304
|
}
|
|
305
305
|
}
|
|
@@ -313,9 +313,9 @@ export class Sequencer {
|
|
|
313
313
|
*/
|
|
314
314
|
async isTxDoubleSpend(tx) {
|
|
315
315
|
// We only consider non-empty nullifiers
|
|
316
|
-
const newNullifiers = tx.data.end.newNullifiers.filter(n => !n.
|
|
316
|
+
const newNullifiers = tx.data.end.newNullifiers.filter(n => !n.isEmpty());
|
|
317
317
|
// Ditch this tx if it has a repeated nullifiers
|
|
318
|
-
const uniqNullifiers = new Set(newNullifiers.map(n => n.toBigInt()));
|
|
318
|
+
const uniqNullifiers = new Set(newNullifiers.map(n => n.value.toBigInt()));
|
|
319
319
|
if (uniqNullifiers.size !== newNullifiers.length) {
|
|
320
320
|
return true;
|
|
321
321
|
}
|
|
@@ -360,4 +360,4 @@ export var SequencerState;
|
|
|
360
360
|
*/
|
|
361
361
|
SequencerState[SequencerState["STOPPED"] = 5] = "STOPPED";
|
|
362
362
|
})(SequencerState || (SequencerState = {}));
|
|
363
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcXVlbmNlci9zZXF1ZW5jZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV6RCxPQUFPLEVBQStDLFlBQVksRUFBRSxFQUFFLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFJN0YsT0FBTyxLQUFLLE1BQU0sY0FBYyxDQUFDO0FBS2pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFLN0M7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLE9BQU8sU0FBUztJQVFwQixZQUNVLFNBQXNCLEVBQ3RCLGNBQXFDLEVBQ3JDLFNBQWMsRUFDZCxVQUFrQyxFQUNsQyxZQUEwQixFQUMxQixhQUE0QixFQUM1QixtQkFBd0MsRUFDeEMsc0JBQThDLEVBQ3RELFNBQTBCLEVBQUUsRUFDcEIsTUFBTSxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQztRQVQxQyxjQUFTLEdBQVQsU0FBUyxDQUFhO1FBQ3RCLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQUNyQyxjQUFTLEdBQVQsU0FBUyxDQUFLO1FBQ2QsZUFBVSxHQUFWLFVBQVUsQ0FBd0I7UUFDbEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBRTlDLFFBQUcsR0FB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
|
|
363
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcXVlbmNlci9zZXF1ZW5jZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV6RCxPQUFPLEVBQStDLFlBQVksRUFBRSxFQUFFLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFJN0YsT0FBTyxLQUFLLE1BQU0sY0FBYyxDQUFDO0FBS2pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFLN0M7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLE9BQU8sU0FBUztJQVFwQixZQUNVLFNBQXNCLEVBQ3RCLGNBQXFDLEVBQ3JDLFNBQWMsRUFDZCxVQUFrQyxFQUNsQyxZQUEwQixFQUMxQixhQUE0QixFQUM1QixtQkFBd0MsRUFDeEMsc0JBQThDLEVBQ3RELFNBQTBCLEVBQUUsRUFDcEIsTUFBTSxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQztRQVQxQyxjQUFTLEdBQVQsU0FBUyxDQUFhO1FBQ3RCLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQUNyQyxjQUFTLEdBQVQsU0FBUyxDQUFLO1FBQ2QsZUFBVSxHQUFWLFVBQVUsQ0FBd0I7UUFDbEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBRTlDLFFBQUcsR0FB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
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BlockHeader, GlobalVariables } from '@aztec/circuits.js';
|
|
2
2
|
import { MerkleTreeOperations } from '@aztec/world-state';
|
|
3
3
|
/**
|
|
4
|
-
* Fetches the private, nullifier, contract tree and l1 to l2
|
|
4
|
+
* Fetches the private, nullifier, contract tree and l1 to l2 message tree roots from a given db and assembles a CombinedHistoricalTreeRoots object.
|
|
5
5
|
*/
|
|
6
6
|
export declare function getBlockHeader(db: MerkleTreeOperations, prevBlockGlobalVariables?: GlobalVariables): Promise<BlockHeader>;
|
|
7
7
|
//# sourceMappingURL=utils.d.ts.map
|
package/dest/sequencer/utils.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { BlockHeader, Fr, GlobalVariables } from '@aztec/circuits.js';
|
|
2
2
|
import { computeGlobalsHash } from '@aztec/circuits.js/abis';
|
|
3
3
|
/**
|
|
4
|
-
* Fetches the private, nullifier, contract tree and l1 to l2
|
|
4
|
+
* Fetches the private, nullifier, contract tree and l1 to l2 message tree roots from a given db and assembles a CombinedHistoricalTreeRoots object.
|
|
5
5
|
*/
|
|
6
6
|
export async function getBlockHeader(db, prevBlockGlobalVariables = GlobalVariables.empty()) {
|
|
7
7
|
const prevGlobalsHash = computeGlobalsHash(prevBlockGlobalVariables);
|
|
8
8
|
const roots = await db.getTreeRoots();
|
|
9
|
-
return new BlockHeader(Fr.fromBuffer(roots.noteHashTreeRoot), Fr.fromBuffer(roots.nullifierTreeRoot), Fr.fromBuffer(roots.contractDataTreeRoot), Fr.fromBuffer(roots.
|
|
9
|
+
return new BlockHeader(Fr.fromBuffer(roots.noteHashTreeRoot), Fr.fromBuffer(roots.nullifierTreeRoot), Fr.fromBuffer(roots.contractDataTreeRoot), Fr.fromBuffer(roots.l1Tol2MessageTreeRoot), Fr.fromBuffer(roots.archiveRoot), Fr.ZERO, Fr.fromBuffer(roots.publicDataTreeRoot), prevGlobalsHash);
|
|
10
10
|
}
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VxdWVuY2VyL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRzdEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxjQUFjLENBQ2xDLEVBQXdCLEVBQ3hCLDJCQUE0QyxlQUFlLENBQUMsS0FBSyxFQUFFO0lBRW5FLE1BQU0sZUFBZSxHQUFHLGtCQUFrQixDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDckUsTUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFdEMsT0FBTyxJQUFJLFdBQVcsQ0FDcEIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsRUFDckMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFDdEMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsRUFDekMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsRUFDMUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQ2hDLEVBQUUsQ0FBQyxJQUFJLEVBQ1AsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsRUFDdkMsZUFBZSxDQUNoQixDQUFDO0FBQ0osQ0FBQyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public_executor.d.ts","sourceRoot":"","sources":["../../src/simulator/public_executor.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACjH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"public_executor.d.ts","sourceRoot":"","sources":["../../src/simulator/public_executor.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACjH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,EAAE,gBAAgB,EAA8B,MAAM,oBAAoB,CAAC;AAEhH,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,mBAAmB,EAAgB,EAAE,EAAE,MAAM,cAAc,CAAC;AAC/G,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D;;;GAGG;AACH,qBAAa,2BAA4B,YAAW,iBAAiB;;IAGvD,OAAO,CAAC,EAAE;IAFtB,KAAK,oCAA2C;gBAE5B,EAAE,EAAE,kBAAkB;IAE1C;;;OAGG;IACI,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAc7C;;;OAGG;IACI,kBAAkB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAa1C,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI3F,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAI9F,wBAAwB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;CAQvF;AAED;;GAEG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IAI1C,OAAO,CAAC,EAAE;IAHtB,OAAO,CAAC,kBAAkB,CAA8B;IACxD,OAAO,CAAC,oBAAoB,CAA8B;gBAEtC,EAAE,EAAE,oBAAoB;IAE5C;;;;;OAKG;IACU,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IAwBvE;;;;;OAKG;IACI,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAMlF;;;OAGG;IACH,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAOvB;;;OAGG;IACH,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAI1B;AAED;;GAEG;AACH,qBAAa,YAAa,YAAW,aAAa;IACpC,OAAO,CAAC,EAAE;IAAwB,OAAO,CAAC,mBAAmB;gBAArD,EAAE,EAAE,oBAAoB,EAAU,mBAAmB,EAAE,mBAAmB;IAEjF,gBAAgB,CAAC,UAAU,EAAE,EAAE,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAalE,kBAAkB,CAAC,UAAU,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAG7E"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var _ContractsDataSourcePublicDB_instances, _ContractsDataSourcePublicDB_getContract;
|
|
2
2
|
import { __classPrivateFieldGet } from "tslib";
|
|
3
3
|
import { Fr } from '@aztec/circuits.js';
|
|
4
|
-
import {
|
|
4
|
+
import { computePublicDataTreeLeafSlot } from '@aztec/circuits.js/abis';
|
|
5
5
|
import { MerkleTreeId } from '@aztec/types';
|
|
6
6
|
/**
|
|
7
7
|
* Implements the PublicContractsDB using a ContractDataSource.
|
|
@@ -73,17 +73,21 @@ export class WorldStatePublicDB {
|
|
|
73
73
|
* @returns The current value in the storage slot.
|
|
74
74
|
*/
|
|
75
75
|
async storageRead(contract, slot) {
|
|
76
|
-
const
|
|
77
|
-
const uncommited = this.uncommitedWriteCache.get(
|
|
76
|
+
const leafSlot = computePublicDataTreeLeafSlot(contract, slot).value;
|
|
77
|
+
const uncommited = this.uncommitedWriteCache.get(leafSlot);
|
|
78
78
|
if (uncommited !== undefined) {
|
|
79
79
|
return uncommited;
|
|
80
80
|
}
|
|
81
|
-
const commited = this.commitedWriteCache.get(
|
|
81
|
+
const commited = this.commitedWriteCache.get(leafSlot);
|
|
82
82
|
if (commited !== undefined) {
|
|
83
83
|
return commited;
|
|
84
84
|
}
|
|
85
|
-
const
|
|
86
|
-
|
|
85
|
+
const lowLeafResult = await this.db.getPreviousValueIndex(MerkleTreeId.PUBLIC_DATA_TREE, leafSlot);
|
|
86
|
+
if (!lowLeafResult || !lowLeafResult.alreadyPresent) {
|
|
87
|
+
return Fr.ZERO;
|
|
88
|
+
}
|
|
89
|
+
const preimage = (await this.db.getLeafPreimage(MerkleTreeId.PUBLIC_DATA_TREE, lowLeafResult.index));
|
|
90
|
+
return preimage.value;
|
|
87
91
|
}
|
|
88
92
|
/**
|
|
89
93
|
* Records a write to public storage.
|
|
@@ -92,7 +96,7 @@ export class WorldStatePublicDB {
|
|
|
92
96
|
* @param newValue - The new value to store.
|
|
93
97
|
*/
|
|
94
98
|
storageWrite(contract, slot, newValue) {
|
|
95
|
-
const index =
|
|
99
|
+
const index = computePublicDataTreeLeafSlot(contract, slot).value;
|
|
96
100
|
this.uncommitedWriteCache.set(index, newValue);
|
|
97
101
|
return Promise.resolve();
|
|
98
102
|
}
|
|
@@ -126,8 +130,8 @@ export class WorldStateDB {
|
|
|
126
130
|
async getL1ToL2Message(messageKey) {
|
|
127
131
|
// todo: #697 - make this one lookup.
|
|
128
132
|
const message = await this.l1ToL2MessageSource.getConfirmedL1ToL2Message(messageKey);
|
|
129
|
-
const index = (await this.db.findLeafIndex(MerkleTreeId.
|
|
130
|
-
const siblingPath = await this.db.getSiblingPath(MerkleTreeId.
|
|
133
|
+
const index = (await this.db.findLeafIndex(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, messageKey.toBuffer()));
|
|
134
|
+
const siblingPath = await this.db.getSiblingPath(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, index);
|
|
131
135
|
return {
|
|
132
136
|
message: message.toFieldArray(),
|
|
133
137
|
siblingPath: siblingPath.toFieldArray(),
|
|
@@ -138,4 +142,4 @@ export class WorldStateDB {
|
|
|
138
142
|
return await this.db.findLeafIndex(MerkleTreeId.NOTE_HASH_TREE, commitment.toBuffer());
|
|
139
143
|
}
|
|
140
144
|
}
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2V4ZWN1dG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NpbXVsYXRvci9wdWJsaWNfZXhlY3V0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSxPQUFPLEVBQTRCLEVBQUUsRUFBZ0QsTUFBTSxvQkFBb0IsQ0FBQztBQUNoSCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RSxPQUFPLEVBQWlFLFlBQVksRUFBTSxNQUFNLGNBQWMsQ0FBQztBQUcvRzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sMkJBQTJCO0lBR3RDLFlBQW9CLEVBQXNCOztRQUF0QixPQUFFLEdBQUYsRUFBRSxDQUFvQjtRQUYxQyxVQUFLLEdBQUcsSUFBSSxHQUFHLEVBQWdDLENBQUM7SUFFSCxDQUFDO0lBRTlDOzs7T0FHRztJQUNJLGVBQWUsQ0FBQyxFQUFNO1FBQzNCLEtBQUssTUFBTSxRQUFRLElBQUksRUFBRSxDQUFDLFlBQVksRUFBRTtZQUN0QyxNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQztZQUU5RCxJQUFJLGVBQWUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDNUIsU0FBUzthQUNWO1lBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQ3REO1FBRUQsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGtCQUFrQixDQUFDLEVBQU07UUFDOUIsS0FBSyxNQUFNLFFBQVEsSUFBSSxFQUFFLENBQUMsWUFBWSxFQUFFO1lBQ3RDLE1BQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDO1lBRTlELElBQUksZUFBZSxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUM1QixTQUFTO2FBQ1Y7WUFFRCxJQUFJLENB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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/sequencer-client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.17.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": "./dest/index.js",
|
|
6
6
|
"typedocOptions": {
|
|
@@ -32,18 +32,17 @@
|
|
|
32
32
|
"rootDir": "./src"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@aztec/acir-simulator": "0.
|
|
36
|
-
"@aztec/circuits.js": "0.
|
|
37
|
-
"@aztec/ethereum": "0.
|
|
38
|
-
"@aztec/foundation": "0.
|
|
39
|
-
"@aztec/l1-artifacts": "0.
|
|
40
|
-
"@aztec/merkle-tree": "0.
|
|
41
|
-
"@aztec/noir-protocol-circuits": "0.
|
|
42
|
-
"@aztec/p2p": "0.
|
|
43
|
-
"@aztec/types": "0.
|
|
44
|
-
"@aztec/world-state": "0.
|
|
35
|
+
"@aztec/acir-simulator": "0.17.0",
|
|
36
|
+
"@aztec/circuits.js": "0.17.0",
|
|
37
|
+
"@aztec/ethereum": "0.17.0",
|
|
38
|
+
"@aztec/foundation": "0.17.0",
|
|
39
|
+
"@aztec/l1-artifacts": "0.17.0",
|
|
40
|
+
"@aztec/merkle-tree": "0.17.0",
|
|
41
|
+
"@aztec/noir-protocol-circuits": "0.17.0",
|
|
42
|
+
"@aztec/p2p": "0.17.0",
|
|
43
|
+
"@aztec/types": "0.17.0",
|
|
44
|
+
"@aztec/world-state": "0.17.0",
|
|
45
45
|
"lodash.chunk": "^4.2.0",
|
|
46
|
-
"lodash.flatmap": "^4.5.0",
|
|
47
46
|
"lodash.pick": "^4.4.0",
|
|
48
47
|
"lodash.times": "^4.3.2",
|
|
49
48
|
"tslib": "^2.4.0",
|
|
@@ -54,7 +53,6 @@
|
|
|
54
53
|
"@types/jest": "^29.5.0",
|
|
55
54
|
"@types/levelup": "^5.1.2",
|
|
56
55
|
"@types/lodash.chunk": "^4.2.7",
|
|
57
|
-
"@types/lodash.flatmap": "^4.5.7",
|
|
58
56
|
"@types/lodash.pick": "^4.4.7",
|
|
59
57
|
"@types/lodash.times": "^4.3.7",
|
|
60
58
|
"@types/memdown": "^3.0.0",
|