본문 바로가기
blockchain

[Blockchain] Reorg

by clolee 2025. 3. 18.

블록체인 재구성(Reorganization),
줄여서 흔히 리오그라고 불리는 이 용어는 어떤 이유로 인하여 메인체인이 뒤바뀌는 현상

메인체인이 뒤바뀐다는 것은 메인체인을 구성하는 블록이 바뀐다는 뜻

모든 리오그는 포크에서 시작된다
전 세계에 넓게 분포한 모든 노드가 단일 원장을 유지하고 검증하기 위해 서로 끊임없이 데이터를 주고받아야 하는데, 노드 간의 물리적 거리와 데이터의 제한된 이동 속도로 인해 어쩔 수 없이 발생하게 되는 레이턴시(Latency)가 포크, 즉 분기를 일으키는 주요 원인으로 알려져 있다고 한다.

 

“비트코인 노드 A가 논스를 발견하여 블록 전파를 시작한 시점과 거의 동시에 지구 반대편에 있는 노드 B도 논스를 발견해 블록 전파를 시작하여, 비트코인 네트워크가 ‘노드 A의 블록을 메인체인에 연결한 노드들’ 과 ‘노드 B의 블록을 메인체인에 연결한 노드들’ 로 분리”

 

대부분의 포크가 일시적 현상에 그친 채 네트워크가 다시 단일 메인체인을 유지하는 상태로 돌아오는 편이다.
그러나 만약 포크된 2개 이상의 체인들 중 어느 한 체인의 블록에만 포함된 트랜잭션이 있었다고 가정하면, 가령 그 체인이 메인체인 경쟁에서 패배하여 리오그되는 시점에 해당 트랜잭션은 ‘있었는데 없었던’ 것이 된다

포크 발생이 리오그의 원인. 포크 발생 가능성을 낮추거나 없애야 함.
그러려면 합의 메커니즘을 더 보완하는 것이 해결책

 

chain별 reorg 해결

  • 코스모스
    블록 생성자로 선출된 검증인이 블록을 제안하면, 해당 블록을 전파받는 다른 검증인이 유효성 검사 직후 블록을 메인체인에 연결하는 이더리움과 달리,
    ‘이 블록을 메인체인에 연결해도 괜찮을 것 같아!’ 라는 투표를 먼저 블록 생성자에게 전달하고, 그렇게 2/3 이상의 검증인의 OK사인이 확인된 이후에 해당 블록을 메인체인에 연결합니다.
    확실하게 동의를 얻은 뒤 블록을 연결하기 때문에 즉시 완결성(Instant Finality)을 보장.
    그러나 위와 같은 접근은 블록을 전파받고 끝이 아닌, OK사인과 같은 통신을 주고받는 별도의 절차가 포함되기 때문에 적지 않은 레이턴시가 추가 발생한다는 단점이 있습니다.
    그럼에도 코스모스의 블록 생성 주기가 이더리움보다 짧은 이유는 블록 생성자로 선출될 수 있는 검증인 후보를 상위 175명으로 제한하였기 때문인 것으로 보입니다.
    비탈릭 부테린이 제시한 블록체인 트릴레마의 개념처럼 탈중앙화, 확장성, 보안 사이의 트레이드오프.
  • 클레이튼
    즉시 완결성을 확보하면서도 1초의 매우 짧은 블록 생성 주기를 갖고 있는데,
    이는 클레이튼의 검증인 수가 비교적 적고 각 검증인이 서울을 중심으로 일정 거리 이내에 있어 물리적 거리도 비교적 짧기 때문으로 알려져 있다.
  • 아발란체
    아발란체의 Snowman++ 에서는 전체 검증자 중에서 일부를 사전에 선택한다.
  • 폴리곤
    • 기존
      약 30분마다 이더리움에 체크포인트를 제출하기 때문에 이더리움의 경우와 마찬가지로 ‘아직 완결되지 않은’ 블록이 항상 존재하며, 실제 리오그 빈도는 하루에 약 5회 이상으로 생각보다 많은 편
    • PIP11
      milestones 개념 도입
      마일스톤(milestones)은 사실상 "endBlock"로 제한된 연속적인 Bor 블록의 길이로, 합의를 통해 정해집니다. 이러한 연속적인 블록 집합은 업그레이드 이전보다 훨씬 빠르게 최종성을 도입합니다.
      폴리곤 PoS는 검증자 레이어인 Heimdall과 블록 생성자 EVM 호환 레이어인 Bor를 사용하는 듀얼 체인 아키텍처를 사용합니다. Heimdall은 Tendermint 합의 엔진의 구현을 사용하여 Bor 블록을 유효성 검사하는 복잡한 작업을 수행합니다. 주기적으로 Heimdall은 이더리움에 "체크포인트"를 작성하여 Bor 블록을 집계하고 L1에 Merkle 루트를 게시함으로써 루트 체인에 대한 finality를 제공합니다.

체크포인트는 기본적으로 "여기 사이드 체인 노드에서 발생한 모든 활동입니다."라고 말하는 것입니다.
마일스톤은 Heimdall에게 이더리움의 체크포인트가 되는 것처럼 finality를 알리는 코드입니다.

새로운 MilestoneValidatorSet은 가중 지분을 기반으로 마일스톤 제안자를 선택하기 위해 정의됩니다. 이 제안자는 endBlock 루트 해시를 가져와 모든 Heimdall 노드에 전파합니다. 다른 Heimdall 노드가 투표하고 2/3 이상의 합의가 이루어지면 마일스톤이 통과됩니다.

이 과정을 통해 마일스톤이 신호되고 결정적인 최종성에 도달합니다.

Bor 노드는 Heimdall에 지속적으로 체크인하여 로컬 노드의 해시가 표준 및 가장 최근 화이트리스트 마일스톤의 해시와 일치하는지 확인합니다.
가져온 마일스톤 데이터가 노드의 로컬 체인과 일치하는 경우 - Polygon PoS의 블록 및 상태 전이 및 모든 것이 동일한 경우 - 해당 마일스톤은 화이트리스트에 등록됩니다.
그러나 만약 블록 생산자가 로컬로 보는 것과 가져온 마일스톤 사이에 불일치가 있는 경우, 노드는 마지막으로 화이트리스트된 마일스톤으로 되돌아갑니다. 이것은 안전장치입니다.

이러한 새로운 아키텍처로 최종성이 빨라지면서 동시에 잘못된 체인이 너무 오랫동안 따라가지 않도록 보장됩니다. 실제로, 불일치된 마일스톤의 자동 되감기 기능에는 255개의 블록에 대한 하드한 한도가 있습니다. 그 이후에는 더 이상 되감을 수 없습니다.

Consensus

다수의 참여자가 사전에 정해진 규칙에 따라 거래를 검증하고 블록을 생성하여 통일된 원장을 유지하면서 인센티브로 코인을 가져간다는 일련의 큰 흐름은 거의 모든 퍼블릭 블록체인에서 채택되고 있지만,
블록 생성 권한을 누구에게 줄 것인지 혹은 1개 블록에 얼마나 많은 거래를 담을 수 있게 할 것인지와 같은 세부 스펙은 각자 조금씩 차이가 있다.

 

블록 생성

 

합의방식(Consensus)

 

참고 : 블록체인 reorg
https://polygon.technology/blog/faster-finality-with-the-aalborg-upgrade-for-polygon-proof-of-stake-network

댓글