[
prev
] [
prev-tail
] [
tail
] [
up
]
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
[
prev
] [
prev-tail
] [
front
] [
up
]