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 Query Service Requirements
14 Query Service
14.1 Overview
14.2 Modular Architecture
14.2.1 API Layer
14.2.2 Data Sources
14.2.3 Storage Implementations
14.2.4 Plugins And Extensions
14.3 Database Schema
14.3.1 Consensus Artifacts
14.3.2 Aggregated Statistics
14.3.3 Merklized State
14.3.4 Internal State
14.3.5 Migrations
14.4 Data Streaming And Updates
14.4.1 Consensus Artifacts
14.4.2 State
14.4.3 Aggregates
14.5 Fetching Missing Data
14.5.1 Infallible Interface For Fetchable Data
14.5.2 Active And Passive Fetching
14.5.3 Fetching From Consensus Storage
14.5.4 Fetching From Peers
14.5.5 Fetching Streams
14.5.6 Scanning
14.6 Pruning
14.6.1 Consensus Artifacts
14.6.2 Merklized State
15 Rollup Integration
15.1 Overview
16 Rollup Integration Requirements
17 List Of Rollup Stack Integrations
18 Arbitrum Nitro Integration
18.1 Overview
18.2 Components
19 Nitro Integration Requirements
20 Nitro Batcher
20.1 Overview
20.2 Message Format
20.2.1 Upgrades
20.3 Key Management
20.4 Startup
20.5 Task 1: Sequencer Espresso
20.5.1 High Level Flow
20.5.2 Low Level Functions
20.6 Task 2: Espresso L1
20.6.1 MaybePostSequencerBatch
20.6.2 Submission To Sequencer Inbox
20.6.3 Resetting
21 Nitro Caffeinated Node Watchdog
21.1 Overview
21.2 Force Inclusion Checker
21.2.1 Starting the Checker
21.2.2 Check if a message can be force included
21.3 State Checker
22 Nitro Caffeinated Node
22.1 Overview
22.2 Initialization
22.3 Starting Caff Node
22.4 Create Block
22.5 NextMessage()
22.6 Publish Transaction
23 Nitro Caff Node Requirements
24 Nitro Espresso Streamer Requirements
25 Nitro Espresso Streamer
25.1 Overview
25.2 Parameters
25.3 Streaming Messages
25.3.1 Peek
25.3.2 Next
25.3.3 NextEspressoBlock
25.3.4 ParseEspressoPayload
25.4 Checkpoints
25.4.1 Proof Of Checkpoint Consistency
25.5 Low Level Functions
25.5.1 Check if the msgBuf array contains the message
25.5.2 Fetch the transactions in a block from all the clients
25.5.3 Fetch and verify the transactions in a block
26 Espresso TEE Verifier
26.1 Overview
26.1.1 Verify
26.1.2 Signature V Overview
26.1.3 RegisterSigner
26.1.4 RegisteredSigners
26.1.5 RegisteredEnclaveHashes
27 Espresso SGX TEE Verifier
27.1 Overview
27.1.1 Verify
27.1.2 RegisterSigner
27.1.3 SetEnclaveHash
27.1.4 DeleteRegisteredSigners
28 Espresso AWS Nitro TEE Verifier
28.1 Overview
28.1.1 RegisterSigner
28.1.2 SetEnclaveHash
28.1.3 DeleteRegisteredSigners
29 Arbitrum Nitro Sequencer Inbox
29.1 Overview
29.1.1 AddSequencerL2Batch
29.1.2 AddSequencerL2BatchFromBlobs
30 OP Stack Integration
30.1 Overview
30.2 High-Level Workflow
30.2.1 Batch Submission To Espresso
30.2.2 Confirmation Validation
30.2.3 Batch Submission To L1
30.2.4 Flowchart
30.3 Components
30.3.1 OP Batcher
30.3.2 Base Layer Batch Validation
30.3.3 Derivation Pipeline
30.3.4 OP’s Espresso Streamer
30.3.5 OP Caffeinated node
30.4 Additional Considerations
30.4.1 Gas Cost Optimization
30.4.2 L1 Reorg Handling
30.4.3 Direct Header Verification
30.5 Future Work
30.5.1 Permissionless Batching
30.5.2 Finality Check Removal
30.5.3 Inbox Address Upgrade
30.5.4 Escape Hatch
31 OP Integration Functions
31.1 Overview
31.2 Component Breakdown
31.2.1 OP Batcher
31.2.2 Batch Authentication Contract
31.2.3 Batch Inbox Contract
31.2.4 Derivation Pipeline
32 Op Integration Requirements
33 Payload Attributes
33.1 Overview
34 Data Availability
34.1 Overview
34.2 CDN
34.3 DA Committee
34.4 VID
34.4.1 Data Structures
35 Settlement Layer
35.1 Overview
36 Rollup
36.1 Overview
37 Confirmation
37.1 Overview
38 Authenticated Data Structure
38.1 Overview
39 Merkle Tree
39.1 Overview
39.2 Universal Merkle Trees
39.3 Append-Only Merkle Trees
40 Append-only Merkle Tree
40.1 Overview
41 Universal Merkle Tree
41.1 Overview
42 Commitment
42.1 Overview
43 Commitment Scheme
43.1 Overview