# Feijoa Specs (Jordi Proposal) ## Publics BatchProof / BatchRecursion requiredL1InfoTreeRoot[8] // If 0 then do not check requiredL1InfoTreeIdx oldStateRoot[8] oldAccInputHash[8] // Mayybe [4] using Poseidon oldBlockNum chainId forkId newStateRoot[8] newAccInputHash[8] // Mayybe [4] using Poseidon newBlockNum newLocalExitRoot[8] assumedL1InfoTreeRoot[8] assumedL1InfoTreeIdx[8] ## Publics BlobProofInner oldStateRoot[8] // NO oldAccInputHash[8] // NO // Mayybe [4] using Poseidon oldBlobAccInputHash[8] oldBlockNum // // NO chainId // NO forkId // NO newAccInputHash[8] // NO // Mayybe [4] using Poseidon newBlobAccInputHash[8] dataIsValid // NO // Boolean, If false no batch proof is required and the state is maintained oldBlobNum newBlobNum forkId finalAccBatchHashdata ## Publics BlobProofOuter / BlobRecursion oldStateRoot[8] oldBlobAccInputHash[8] oldBlockNum oldBlobNum chainId forkId newStateRoot[8] newBlobAccInputHash[8] newBlockNum newBlobNum newLocalExitRoot[8] ## Publics Final sha256( aggregatorAddr -> 160 oldStateRoot -> 256 oldBlobInputHash -> 256 oldBlockNum -> 64 oldBlobNum -> 64 chainId -> 64 forkId -> 64 newStateRoot -> 256 newBlobAccInputHash -> 256 newBlockNum -> 64 newBlobNum -> 64 newLocalExitRoot -> 256 ) ## In the L2Block Header (in DA): L1InfoTreeRoot L1InfoTreeIdx BlockNum CoinBase Timestamp (Absolute) ## BlobAccInputHash Hash ( oldAccInputHash firstL1InfoTreeIdx lastL1InfoTreeIdx lastL1InfoTreeRoot minTimestamp maxTimestamp isEIP4844 z,y // When isEIP4844 is true keccakData // When isEIP4844 is false coinBase zkGasgLimit ) ## AccInputHash (Poseidon) Hash ( oldAccInputHash L1InfoTreeRoot L1InfoTreeIdx L2Block CoinBase Timestamp L2TXData ) This hash is calculated inside the proof so it guarantiees consecutive block numbers and coherent timestamps with previus and next and minTimestamp and maxTimestamp ```graphviz digraph { // rankdir="LR"; batchProof_1 -> recursive1proof_1 batchProof_2 -> recursive1proof_2 batchProof_3 -> recursive1proof_3 recursive1proof_1 -> recursive2proof_1 recursive1proof_2 -> recursive2proof_1 recursive2proof_1 -> recursive2proof_2 recursive1proof_3 -> recursive2proof_2 blobProofInner -> blobProofOuter_1 recursive2proof_2 -> blobProofOuter_1 blobProofOuter_1 -> recursive2blob_1 blobProofOuter_2 -> recursive2blob_1 blobProofOuter_3 -> recursive2blob_2 recursive2blob_1 -> recursive2blob_2 recursive2blob_2 -> recursivefblob recursivefblob -> final subgraph cluster_2 { peripheries=0 blobProofOuter_1 blobProofOuter_2 blobProofOuter_3 } subgraph cluster_1 { peripheries=0 recursive1proof_1 recursive1proof_2 recursive1proof_3 } batchProof_1 [shape="box" label="batchProof" style=filled fillcolor="lightyellow"] batchProof_2 [shape="box" label="batchProof" style=filled fillcolor="lightyellow"] batchProof_3 [shape="box" label="batchProof" style=filled fillcolor="lightyellow"] recursive1proof_1 [shape="box" label="recursive1p" style=filled fillcolor="aquamarine"] recursive1proof_2 [shape="box" label="recursive1p" style=filled fillcolor="aquamarine"] recursive1proof_3 [shape="box" label="recursive1p" style=filled fillcolor="aquamarine"] recursive2proof_1 [shape="box" label="recursive2p" style=filled fillcolor="aquamarine3"] recursive2proof_2 [shape="box" label="recursive2p" style=filled fillcolor="aquamarine3"] blobProofInner [shape="box" label="blobProofInner" style=filled fillcolor="cyan"] blobProofOuter_1 [shape="box" label="blobProofOuter" style=filled fillcolor="cornflowerblue"] blobProofOuter_2 [shape="box" label="blobProofOuter" style=filled fillcolor="cornflowerblue"] blobProofOuter_3 [shape="box" label="blobProofOuter" style=filled fillcolor="cornflowerblue"] recursive2blob_1 [shape="box" label="recursive2b" style=filled fillcolor="coral"] recursive2blob_2 [shape="box" label="recursive2b" style=filled fillcolor="coral"] recursivefblob [shape="box" label="recursivefb" style=filled fillcolor="coral3"] final [shape="box" label="final" style=filled fillcolor="darkorchid1"] } ``` * Batch (3) * zkevm * c12aBatch * recursive1Batch * AggBatch (1) * recursive2Batch * BlobInner (3) * blobInner * c12aBlob * c12bBlob * BlobOuter (1) * blobOuter * AggBlob (1) * recursive2Blob * Final (2) * recursivefBlob * final
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up