Contents

1 Espresso Confirmation Layer
1.1 Overview
1.2 Architecture
2 Confirmation Layer State
2.1 Overview
2.2 State Merkle Tree
2.2.1 In Memory
2.2.2 In A Relational Database
2.3 State Database
2.3.1 In-Memory Representation
2.3.2 On-Disk Representation
2.3.3 Peer-to-Peer Catchup
3 State Transition Function
3.1 Overview
4 State Catchup
4.1 Overview
5 Chain Config
5.1 Overview
6 HotShot Consensus
6.1 Overview
6.2 View Protocol
6.2.1 Consensus Tasks
6.2.2 Storage
6.3 Epoch Changes
6.4 Staking
6.4.1 Staking And Withdrawing
6.4.2 Delegation
6.4.3 Rewards
6.4.4 Slashing
6.5 Light Client
6.5.1 Certificates
6.5.2 Prover
6.5.3 Contract
6.6 Protocol Upgrades
7 Networking
7.1 Overview
8 Protocol Upgrade
8.1 Overview
9 Staking
9.1 Overview
10 HotStuff
10.1 Overview
11 Stake Table Smart Contract
11.1 Overview
11.2 Transition from static stake table to proof of stake
12 Stake Table Contract Requirements
12.1 Validators
12.2 Delegators
12.3 Global Confirmation Layer (GCL)
12.4 Staking User Interface (UI)
12.5 Non-requirements
13 Rewards Requirements
14 Rewards
14.1 Overview
14.2 Types
14.3 Reward Distribution
14.4 APIs
14.5 Leader Selection
14.6 Claiming
15 Query Service Requirements
16 Query Service
16.1 Overview
16.2 Modular Architecture
16.2.1 API Layer
16.2.2 Data Sources
16.2.3 Storage Implementations
16.2.4 Plugins And Extensions
16.3 Database Schema
16.3.1 Consensus Artifacts
16.3.2 Aggregated Statistics
16.3.3 Merklized State
16.3.4 Internal State
16.3.5 Migrations
16.4 Data Streaming And Updates
16.4.1 Consensus Artifacts
16.4.2 State
16.4.3 Aggregates
16.5 Fetching Missing Data
16.5.1 Infallible Interface For Fetchable Data
16.5.2 Active And Passive Fetching
16.5.3 Fetching From Consensus Storage
16.5.4 Fetching From Peers
16.5.5 Fetching Streams
16.5.6 Scanning
16.6 Pruning
16.6.1 Consensus Artifacts
16.6.2 Merklized State
17 Builder
17.1 Overview
17.2 Core Flow
17.3 View Lifecycle
17.4 Block Building
17.5 Builder State Refactor
18 Rollup Integration
18.1 Overview
19 Rollup Integration Requirements
20 List Of Rollup Stack Integrations
21 Arbitrum Nitro Integration
21.1 Overview
21.2 Components
22 Nitro Integration Requirements
23 Nitro Batcher
23.1 Overview
23.2 Key Management
23.3 Startup
23.4 SequencerInbox
23.5 Task 1: Sequencer Espresso
23.5.1 High Level Flow
23.5.2 Tranasaction Submission Process
23.5.3 CheckEspressoQueryNodesForTransaction
23.6 Task 2: Espresso L1
23.6.1 MaybePostSequencerBatch
23.6.2 Submission To Sequencer Inbox
23.6.3 Resetting
24 Nitro Caffeinated Node Watchdog
24.1 Overview
24.2 Force Inclusion Checker
24.2.1 Starting the Checker
24.2.2 Check if a message can be force included
24.3 State Checker
25 Nitro Caffeinated Node
25.1 Overview
25.2 Initialization
25.3 Starting Caff Node
25.4 Delayed Message Fetcher
25.5 Backfill
25.6 Get Messages In Range
25.7 Start Watch Delayed Messages
25.8 Create Block
25.9 NextMessage()
25.10 Publish Transaction
26 Nitro Caff Node Requirements
27 Nitro Espresso Streamer Requirements
28 Nitro Espresso Streamer
28.1 Overview
28.2 Parameters
28.3 Streaming Messages
28.3.1 Peek
28.3.2 Next
28.3.3 NextEspressoBlock
28.4 Checkpoints
28.4.1 Proof Of Checkpoint Consistency
28.5 Low Level Functions
28.5.1 Check if the msgBuf array contains the message
28.5.2 Fetch the transactions in a block from all the clients
29 Espresso TEE Verifier
29.1 Overview
29.1.1 Verify
29.1.2 Signature V Overview
29.1.3 RegisterSigner
29.1.4 RegisteredSigners
29.1.5 RegisteredEnclaveHashes
30 Espresso SGX TEE Verifier
30.1 Overview
30.1.1 Verify
30.1.2 RegisterSigner
30.1.3 SetEnclaveHash
30.1.4 DeleteRegisteredSigners
31 Espresso AWS Nitro TEE Verifier
31.1 Overview
31.1.1 RegisterSigner
31.1.2 SetEnclaveHash
31.1.3 DeleteRegisteredSigners
32 Arbitrum Nitro Sequencer Inbox
32.1 Overview
32.1.1 AddSequencerL2Batch
32.1.2 AddSequencerL2BatchFromBlobs
33 Nitro Espresso DA
33.1 Overview
33.2 Workflow
33.3 Batch Poster
33.3.1 Header Byte
33.3.2 MaybePostSequencerBatch Logic
33.4 DA Reader Design
33.4.1 RecoverPayloadFromBatch Implementation
33.4.2 Validator Reader Implementation
33.4.3 Replay Binary Reader Implementation
33.5 Bypassing Batch Parsing
34 Nitro Decentralized Sequencing Requirements
35 Nitro Decentralized Sequencing
35.1 Overview
35.2 State Tracking
35.2.1 Undecided State Storage
35.2.2 Incomplete Storage
35.3 Sequencer Election
35.3.1 Interface
35.3.2 Determining Eligibility
35.3.3 Round Robin Implementation
35.4 Sequencer Integration
35.4.1 Sequencer Relayer
35.5 Writing To Espresso
35.5.1 Transaction Format
35.5.2 Transaction Submission
35.6 Delayed Sequencer
35.7 Espresso Streamer Changes
35.7.1 Signature Validation
35.7.2 Delayed Messages
36 OP Stack Integration
36.1 Overview
36.2 High-Level Workflow
36.2.1 Batch Submission To Espresso
36.2.2 Confirmation Validation
36.2.3 Batch Submission To L1
36.2.4 Flowchart
36.3 Components
36.3.1 OP Batcher
36.3.2 Base Layer Batch Validation
36.3.3 Derivation Pipeline
36.3.4 OP’s Espresso Streamer
36.3.5 OP Caffeinated node
36.4 Additional Considerations
36.4.1 Gas Cost Optimization
36.4.2 L1 Reorg Handling
36.4.3 Direct Header Verification
36.5 Future Work
36.5.1 Trustless Espresso Verification
36.5.2 Trustless Enclave Networking
36.5.3 Permissionless Batching
36.5.4 Finality Check Removal
36.5.5 Escape Hatch
37 OP Integration Functions
37.1 Overview
37.2 Component Breakdown
37.2.1 OP Batcher
37.2.2 Batch Authentication Contract
37.2.3 Batch Inbox Contract
37.2.4 Derivation Pipeline
38 Op Integration Requirements
39 Data Availability
39.1 Overview
39.2 CDN
39.3 DA Committee
39.4 VID
39.4.1 Data Structures
39.4.2 Payload Encoding
40 Settlement Layer
40.1 Overview
41 Rollup
41.1 Overview
42 Confirmation
42.1 Overview
43 Authenticated Data Structure
43.1 Overview
44 Merkle Tree
44.1 Overview
44.2 Universal Merkle Trees
44.3 Append-Only Merkle Trees
45 Append-only Merkle Tree
45.1 Overview
46 Universal Merkle Tree
46.1 Overview
47 Commitment
47.1 Overview
48 Commitment Scheme
48.1 Overview