Workspace IndexDev Notes › L2 finality is three clocks

#33PoC

L2 finality is three clocks

A sequencer confirmation, publication to L1, and L1 finalization answer different questions. Showing one "confirmed" badge collapses three trust boundaries into one word.

Submit one OP Stack transaction, poll its block through unsafesafefinalized and record each timestamp; then repeat with an L2→L1 withdrawal, whose proof or challenge path adds a fourth clock.

Why

L2s feel instant because the first clock is fast, but bridges and high-value settlement depend on later clocks. The PoC makes the latency/trust trade explicit instead of hiding it behind UX.

An L2 feels instant because its sequencer answers quickly — and that first answer depends on the sequencer. Publication to L1 makes the transaction derivable without that operator, and L1 finalization gives it Ethereum's economic finality. Withdrawals can introduce another proof or challenge clock.

How it works

Track an OP Stack transaction from unsafe to safe to finalized, record each timestamp, then repeat for a withdrawal whose challenge or proof path adds a fourth clock.

PoC

Submit one OP Stack transaction and record the timestamps at which its block becomes unsafe, safe, and finalized. Display the trust assumption released at each transition, then compare an ordinary transaction with an L2-to-L1 withdrawal.

Clock What it establishes
Sequencer inclusion Fast ordering promise
L1 publication Data availability and derivability
L1 finalization Ethereum-backed irreversibility
Withdrawal path Proof or challenge completion

Reference: OP Stack transaction finality.

Review clarification

What actually happens when the app says "confirmed" in two seconds

You send a transaction on an OP Stack chain and the app shows a checkmark almost instantly. What happened is only this: one company's server — the sequencer — put your transaction into a block it built and promised an ordering. Nothing has touched Ethereum yet. The protocol's own name for this state is brutally honest: unsafe. The UI's word for it is "confirmed." The gap between the protocol's vocabulary and the UI's is the entire card.

The three clocks, one trust boundary each

Clock 1 — sequencer inclusion (unsafe), ~1–2 seconds. The promise is ordering: "your tx is in my next block." You are trusting the sequencer completely — it can still reorder, drop, or crash and rebuild the chain differently. This clock is fast because it is one server answering; the speed and the trust assumption are the same fact.

Clock 2 — publication to L1 (safe), minutes. The sequencer batches transactions and posts them to Ethereum as blob data. Now the transaction's bytes live on L1: anyone can reconstruct the L2's state without the sequencer's cooperation, and the operator can no longer rewrite history. The trust has shifted from a company to Ethereum's data layer — though the L1 block holding the batch can itself still reorg.

Clock 3 — L1 finalization (finalized), ~15–20 minutes. Ethereum finalizes the blocks containing the batch (two epochs of Casper FFG). Reverting now requires destroying at least a third of all staked ETH — the L2 transaction has inherited Ethereum's economic finality, the strongest thing "final" can mean here.

These are literally the RPC block tags from rpc-view-not-consensuslatest/safe/finalized — surfacing one layer up. Same words, same ladder of confidence.

Clock 4 — the withdrawal path, hours to 7 days. Moving assets L2→L1 is a separate machine: an optimistic rollup's withdrawal must survive a fault-proof challenge window (classically 7 days); a ZK rollup waits for a validity proof to be generated and verified (hours). This clock exists because the L1 does not know the L2's state — it must be proven, or left unchallenged.

Why the one-word badge is the bug

"Confirmed" at two seconds shows clock 1 while implying clock 3. The product consequence is a mapping, not a redesign: UI feedback can ride the unsafe clock; anything reversible-but-valuable waits for safe; bridges, custody releases and high-value settlement wait for finalized or the withdrawal proof. This is receipt-is-not-settlement one layer up — the same state machine, with the states further apart in time and trust.

The economic punchline

Fast-withdrawal bridges are the market pricing these clocks: a liquidity provider fronts your funds on L1 now and personally carries the 7-day risk — for a fee. That fee is the price of clock 4. Where a trust boundary exists, someone will sell you a bridge across it, and the fee tells you what the market thinks the wait is worth.

Timescales to hold in your head (OP Stack)

Clock Label Typical time You are trusting
1. Sequencer unsafe ~2 s The operator
2. L1 publication safe minutes Ethereum's data layer
3. L1 finalization finalized ~15–20 min Ethereum's stake
4. Withdrawal proven/expired hours–7 days The proof system

← All Dev Notes · Workspace Index · Top ↑

L2 파이널리티는 시계 세 개다

시퀀서 확인, L1 게시, L1 최종 확정은 서로 다른 질문에 답합니다. "confirmed" 배지 하나는 신뢰 경계 세 개를 한 단어로 뭉갭니다.

OP Stack 트랜잭션 하나를 보내고, 블록이 unsafesafefinalized 로 넘어가는 시각을 각각 기록합니다. 그다음 L2→L1 출금으로 반복합니다 — 증명 또는 챌린지 경로가 네 번째 시계를 더합니다.

L2 가 즉각적으로 느껴지는 것은 첫 번째 시계가 빠르기 때문이지만, 브리지와 고가치 정산은 뒤의 시계들에 달려 있습니다. 이 PoC 는 지연/신뢰의 교환을 UX 뒤에 숨기지 않고 명시적으로 드러냅니다.

L2 가 즉각적인 것은 시퀀서가 빨리 답하기 때문이고 — 그 첫 답은 시퀀서에 의존합니다. L1 게시부터는 그 운영자 없이도 트랜잭션을 재구성할 수 있고, L1 최종 확정에 이르러야 이더리움의 경제적 최종성을 얻습니다. 출금에는 증명 또는 챌린지 시계가 하나 더 붙을 수 있습니다.

동작 방식

OP Stack 트랜잭션 하나를 unsafe → safe → finalized 로 추적하며 시각을 기록하고, 챌린지·증명 경로가 네 번째 시계를 더하는 출금으로 반복합니다.

PoC

OP Stack 트랜잭션 하나를 제출하고 그 블록이 unsafe, safe, finalized 가 되는 시각을 기록합니다. 전환마다 풀려나는 신뢰 가정을 표시한 뒤, 일반 트랜잭션과 L2→L1 출금을 비교합니다.

시계 무엇을 확립하나
시퀀서 포함 빠른 순서 약속
L1 게시 데이터 가용성과 재구성 가능성
L1 최종 확정 이더리움이 뒷받침하는 비가역성
출금 경로 증명 또는 챌린지 완료

참고: OP Stack transaction finality.

검토 후 보완

앱이 2초 만에 "confirmed" 라고 할 때 실제로 일어난 일

OP Stack 체인에서 트랜잭션을 보내면 앱이 거의 즉시 체크마크를 보여줍니다. 실제로 일어난 일은 이것뿐입니다: 한 회사의 서버 — 시퀀서 — 가 자기가 만든 블록에 트랜잭션을 넣고 순서를 약속했습니다. 이더리움에는 아직 아무것도 닿지 않았습니다. 이 상태에 대한 프로토콜 자신의 이름은 잔인할 만큼 정직합니다: unsafe. UI 의 단어는 "confirmed". 프로토콜의 어휘와 UI 의 어휘 사이의 이 간극이 카드의 전부입니다.

시계 셋, 각각 신뢰 경계 하나씩

시계 1 — 시퀀서 포함 (unsafe), ~1–2초. 약속은 순서입니다: "당신 트랜잭션은 내 다음 블록에 있다." 시퀀서를 전적으로 신뢰하는 상태 — 여전히 재정렬하거나, 떨구거나, 죽었다 다르게 재구축할 수 있습니다. 이 시계가 빠른 것은 서버 하나가 답하기 때문입니다 — 속도와 신뢰 가정은 같은 사실입니다.

시계 2 — L1 게시 (safe), 몇 분. 시퀀서가 트랜잭션들을 배치로 묶어 이더리움에 블롭 데이터로 올립니다. 이제 트랜잭션의 바이트가 L1 에 삽니다: 시퀀서의 협조 없이도 누구나 L2 상태를 재구성할 수 있고, 운영자는 더 이상 역사를 다시 쓸 수 없습니다. 신뢰 대상이 회사에서 이더리움의 데이터 계층으로 옮겨 갔습니다 — 단, 배치를 담은 L1 블록 자체는 아직 리오그될 수 있습니다.

시계 3 — L1 최종 확정 (finalized), ~15–20분. 이더리움이 배치를 담은 블록들을 확정합니다(Casper FFG 두 에포크). 이제 되돌리려면 전체 스테이킹 ETH 의 1/3 이상을 태워야 합니다 — L2 트랜잭션이 이더리움의 경제적 최종성을 상속했습니다. 여기서 "final" 이 가질 수 있는 가장 강한 뜻입니다.

이 셋은 rpc-view-not-consensus 의 RPC 블록 태그 — latest/safe/finalized — 가 한 층 위로 떠오른 것입니다. 같은 단어, 같은 확신의 사다리.

시계 4 — 출금 경로, 몇 시간~7일. L2→L1 자산 이동은 별개의 기계입니다: 옵티미스틱 롤업의 출금은 사기 증명 챌린지 창(고전적으로 7일)을 살아남아야 하고, ZK 롤업은 유효성 증명의 생성·검증(몇 시간)을 기다립니다. 이 시계가 존재하는 이유: L1 은 L2 의 상태를 알지 못하므로 — 증명되거나, 무도전으로 남아야 합니다.

한 단어 배지가 버그인 이유

2초의 "confirmed" 는 시계 1을 보여주면서 시계 3을 암시합니다. 제품에의 귀결은 재설계가 아니라 매핑입니다: UI 피드백은 unsafe 시계를 타도 되고, 가역적이지만 가치 있는 것은 safe 를, 브리지·수탁 해제·고가치 정산은 finalized 나 출금 증명을 기다립니다. receipt-is-not-settlement 의 한 층 위 버전 — 같은 상태 머신, 상태들 사이가 시간과 신뢰에서 더 멀 뿐.

경제적 펀치라인

빠른 출금 브리지는 시장이 이 시계들에 값을 매기는 현장입니다: 유동성 공급자가 지금 L1 에서 돈을 대신 내주고 7일 리스크를 자기가 짊어집니다 — 수수료를 받고. 그 수수료가 시계 4의 가격입니다. 신뢰 경계가 있는 곳에는 그것을 건네주는 다리를 파는 사람이 나타나고, 수수료가 그 기다림의 시장가를 말해 줍니다.

머리에 담아 둘 시간 척도 (OP Stack)

시계 라벨 통상 시간 신뢰 대상
1. 시퀀서 unsafe ~2초 운영자
2. L1 게시 safe 몇 분 이더리움 데이터 계층
3. L1 확정 finalized ~15–20분 이더리움의 스테이크
4. 출금 증명/만료 몇 시간~7일 증명 시스템

← 전체 개발 노트 · 워크스페이스 인덱스 · 맨 위 ↑