Skip to content

docs(ops): GIWA 확정성 단계와 강제 포함 대응 기록 - #95

Merged
0xMuang merged 1 commit into
mainfrom
docs/giwa-chain-semantics
Sep 11, 2026
Merged

docs(ops): GIWA 확정성 단계와 강제 포함 대응 기록#95
0xMuang merged 1 commit into
mainfrom
docs/giwa-chain-semantics

Conversation

@heijiLee

@heijiLee heijiLee commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

영수증 화면과 장애 대응 문서가 전제하는 GIWA 운영 semantics를 기록한다. 2026-09-07에 GIWA Sepolia에 대한 live JSON-RPC 호출과 L1 Sepolia 컨트랙트 on-chain read로 직접 검증했다. 코드 변경은 없다.

Q3. 확정 시점

GIWA public RPC는 latest/safe/finalized block tag를 모두 지원한다 (직접 확인). 따라서 sequencer 포함, L1 anchoring, Ethereum consensus finality를 클라이언트에서 구분할 수 있다.

단계 관측 지연 되돌릴 수 있는 주체
latest sub-second (1s block) GIWA sequencer 단독
safe 약 4~5분 깊은 L1 reorg
finalized 약 19~22분 사실상 불가

관측치이며 GIWA가 공표한 SLA가 아니다. 결제 완결 timestamp는 finalized에 둘 것을 권장한다.

7일은 출금 챌린지 기간(proofMaturityDelaySeconds() = 604800, on-chain 확인)이며 L2→L1 출금에만 해당한다. L2 state finality와 혼용하면 안 된다.

기존 DEFAULT_CONFIRMATIONS = 12 휴리스틱은 L1 모델이라 OP Stack L2에 매핑되지 않는다는 점도 적어두었다. GIWA에서 12 confirmation은 12초다. 현재 이 indexer는 running server에 배선되어 있지 않아 깨진 건 아니지만, 영수증 작업이 여기 기대면 안 된다. 참고로 grep -rn "blockTag"는 repo 전체에서 0건이다.

Q5. Escape hatch

지원한다. OptimismPortal이 L1 Sepolia 0x956962C34687A954e611A83619ABaA37Ce6bC78A에 살아 있다 (version 5.6.1, 둘 다 on-chain 확인). depositTransaction() 호출은 늦어도 약 12시간 sequencing window 안에 포함되어야 한다.

runbook에 넣은 두 가지가 "존재한다"보다 중요하다.

  1. forced call은 address-aliased로 도착한다 (L1 주소 + 0x1111...1111). 다른 주소이므로, aliased 주소를 별도로 operator로 등록하지 않으면 L2 operator EOA의 pause 권한을 escape hatch로 행사할 수 없다. pause lever가 모두 L2 트랜잭션이라, 지금 상태로는 sequencer 장애 중 setVenueSuspended에 도달할 방법이 없다. OPEN ITEM으로 표시했고 임의로 결정하지 않았다.
  2. 출금은 단일 permissioned keypair에 의존한다. gameImpls(0)(permissionless CANNON)은 zero address, gameImpls(1)은 설정됨, respectedGameType()1로 확인했다. 즉 fault-proof 가능한 컨트랙트를 permissioned-only 모드로 운영 중이며 실질적으로 Stage 0이다. GIWA가 공식 stage label을 게시하지 않으므로 이 결론은 우리 분석으로 표기했다.

변경 파일

  • docs/operations/giwa-chain-semantics.md (신규)
  • docs/operations/incident-response.md: sequencer 장애/censorship 대응 절 추가, 이후 절 번호 조정 (삭제된 4줄은 renumbering된 heading뿐)
  • docs/README.md: Start Here 표에 1행 추가

검증

docs 전용이라 build/test 영향 없음. 현재 main에서 forge fmt --check 통과 확인.

Record the operational semantics the receipt screen and the incident runbook
depend on, verified on 2026-09-07 by live JSON-RPC against GIWA Sepolia and
on-chain reads of GIWA's L1 Sepolia contracts.

- GIWA's public RPC serves the `latest`, `safe` and `finalized` block tags, so
  a client can distinguish sequencer inclusion from L1 anchoring from Ethereum
  consensus finality. Observed lag: safe about 4 to 5 minutes, finalized about
  19 to 22 minutes. These are observations, not a published SLA.
- A settlement-final timestamp belongs at `finalized`. The 7 day figure is the
  withdrawal challenge period (`proofMaturityDelaySeconds() = 604800`) and
  applies only to L2 to L1 withdrawals, never to L2 state finality.
- Forced inclusion via `OptimismPortal.depositTransaction()` stays available
  without the sequencer, bounded by the roughly 12 hour sequencing window, but
  arrives address-aliased. An L2 operator EOA therefore cannot exercise its
  pause authority through that path unless the aliased address is separately
  authorized. Flagged as an open item in the runbook.
- Withdrawals depend on a single permissioned proposer/challenger: no
  permissionless dispute game is deployed and the portal accepts only game
  type 1.

Also note that the existing 12 confirmation depth heuristic is an L1 model
that does not map to an OP Stack L2, where 12 confirmations is 12 seconds.
@0xMuang 0xMuang changed the title Document GIWA finality stages and the forced-inclusion escape hatch docs(ops): GIWA 확정성 단계와 강제 포함 대응 기록 Sep 11, 2026
@0xMuang
0xMuang merged commit 16d2a58 into main Sep 11, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants