01

블록에 들어갔는데 사라질 수 있다

블록 탐색기에서 내 거래가 블록에 포함된 것을 보면 이제 끝났다고 생각하기 쉽습니다. 하지만 가장 최근 블록은 네트워크가 아직 완전히 합의하지 않은 상태일 수 있고, 드물게는 다른 블록으로 바뀌는 ‘재구성(리오그)’이 일어날 수 있습니다. 그러면 거래가 다른 순서로 다시 포함되거나 잠시 빠질 수 있습니다.

이 글은 이더리움 블록이 최신 헤드에서 safe, finalized 상태로 넘어가는 과정과 각 단계에서 되돌려질 위험을 설명합니다. 확정까지 걸리는 시간을 슬롯과 에포크로 계산하고, 가상의 결제 사례로 서비스가 어떤 기준에서 입금을 인정해야 하는지 비교합니다.

02

슬롯·에포크와 체크포인트

Ethereum.org의 지분증명 설명에 따르면 이더리움은 12초마다 한 번씩 슬롯이 돌아오고, 슬롯마다 검증자 한 명이 블록을 제안할 수 있습니다. 32개 슬롯이 하나의 에포크를 이루므로 한 에포크는 6.4분입니다. 검증자들은 블록에 투표(증명)하며 어느 체인이 올바른지 합의합니다.

각 에포크의 첫 블록은 체크포인트가 됩니다. Ethereum.org의 Gasper 설명처럼, 전체 스테이킹 물량의 3분의 2 이상이 투표한 체크포인트는 ‘정당화(justified)’되고, 그다음 체크포인트도 정당화되면 앞의 체크포인트는 ‘확정(finalized)’됩니다. 그래서 보통 약 2 에포크, 12.8분 정도면 블록이 확정됩니다.

03

블록 상태 비교

Ethereum.org의 JSON-RPC 문서는 블록을 지정할 때 latest, safe, finalized 같은 태그를 쓸 수 있다고 설명합니다. 아래 표는 각 상태의 의미와 일반적인 지연, 되돌림 위험을 비교한 것입니다.

이더리움 블록 상태 비교 (일반적인 경우)
블록 태그의미일반적인 지연되돌림 위험적합한 용도 (예시)
latest노드가 보는 가장 최근 블록0~12초짧은 재구성 가능화면 표시, 빠른 미리보기
safe정직한 다수의 투표로 되돌려질 가능성이 낮은 블록수십 초 이상네트워크가 정상이면 낮음소액 결제 확인
finalized확정된 체크포인트 이전 블록약 12.8분되돌리려면 스테이킹 물량 최소 3분의 1 소각 필요큰 금액 입금, 출금 처리

finalized 블록을 되돌리려면 공격자가 전체 스테이킹 이더의 최소 3분의 1을 잃는 규칙 위반이 필요하다고 Ethereum.org는 설명합니다.

04

가상 결제 사례

가상의 온라인 상점이 latest 블록에 결제 거래가 보이면 바로 상품을 발송한다고 합시다. 짧은 재구성이 일어나 결제 거래가 빠진 블록이 선택되면, 그사이 사용자가 같은 자금을 다른 곳으로 보내는 거래를 먼저 포함시키는 경우 상점은 대금을 받지 못한 채 상품만 보낸 상태가 될 수 있습니다.

같은 상점이 finalized 기준을 쓰면 결제 후 약 13분을 기다려야 하지만, 이런 위험은 사실상 사라집니다. 많은 거래소가 입금을 인정하기 전에 일정한 확인 시간을 두는 이유입니다. 금액이 작고 빠른 처리가 중요하다면 safe 기준을, 금액이 크다면 finalized 기준을 쓰는 식으로 위험과 속도를 나눠 정할 수 있습니다.

05

확정이 늦어지는 경우

확정에는 전체 스테이킹 물량의 3분의 2 이상의 투표가 필요합니다. 큰 클라이언트 버그나 네트워크 분리로 검증자 다수가 투표하지 못하면, 블록은 계속 만들어져도 확정이 멈출 수 있습니다. 이때 latest 블록은 계속 늘어나지만 finalized 블록은 제자리에 머뭅니다.

확정이 오래 멈추면 Gasper에는 투표하지 않는 검증자의 몫을 점차 줄여 다시 3분의 2를 회복하게 하는 장치가 있습니다. 서비스 입장에서는 확정이 멈췄을 때 입금 처리를 어떻게 할지 미리 정해 두는 것이 중요합니다.

06

서비스가 정할 기준

입금이나 결제를 처리하는 서비스라면, 또는 그런 서비스를 이용하는 사용자라면 아래 항목을 확인해 보세요.

  1. 서비스가 입금을 인정하는 기준이 latest, safe, finalized 가운데 무엇인지, 몇 블록 또는 몇 분을 기다리는지 확인합니다.
  2. 노드나 RPC 요청에서 어떤 블록 태그를 쓰는지 확인하고, 기본값인 latest를 그대로 쓰고 있지 않은지 봅니다.
  3. 금액 구간별로 다른 확인 기준을 둘지 정합니다.
  4. 확정이 멈추는 상황에서 입금·출금 처리를 어떻게 할지 운영 절차를 마련합니다.
  5. 레이어2나 다른 체인은 확정 방식이 다르므로, 체인마다 기준을 따로 확인합니다.
07

다른 체인과의 차이

작업증명 방식의 비트코인은 확정이라는 개념 대신 ‘확인 수’를 씁니다. 블록이 더 많이 쌓일수록 되돌리기 어려워지지만 수학적으로 완전히 확정되지는 않습니다. 이더리움 지분증명은 체크포인트 확정이라는 명시적인 단계를 두어, 되돌리는 데 드는 비용을 분명하게 만든 점이 다릅니다.

레이어2 롤업의 거래는 롤업 자체의 확인과, 그 데이터가 이더리움에 올라가 확정되는 단계를 모두 거칩니다. 롤업 화면에 ‘확인됨’이라고 나와도 이더리움에서 확정됐는지는 별도로 확인해야 할 수 있습니다.

08

숫자 밖의 변수

이 글의 시간은 네트워크가 정상일 때의 일반적인 값이고, 결제 사례는 가상의 예시입니다. 합의 규칙은 업그레이드로 바뀔 수 있고, 확정 시간을 줄이는 방안도 논의되고 있습니다.

실제로 기준을 정할 때는 Ethereum.org와 이더리움 합의 명세의 최신 자료를 언제 기준의 자료인지 따져 가며 확인하세요. 여기 나온 숫자는 판단 재료일 뿐, 매매 신호가 아닙니다.