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