고아 블록 (Orphan)

중급블록체인수정일

고아 블록은 노드가 받았지만 부모 블록을 아직 알지 못해 체인에 연결할 수 없는 블록을 말하며, 넓게는 경쟁에서 밀려 메인 체인에 포함되지 못한 블록(스테일 블록)을 가리키기도 합니다. 단순히 '고아'라고만 쓰면 의미가 통하지 않으므로 '고아 블록'이라고 부릅니다.

자세히 알아보기

엄밀한 의미의 고아 블록은 네트워크 전파 순서 때문에 생깁니다. 블록 N+1이 블록 N보다 먼저 도착하면, 노드는 N+1을 체인 어디에 붙여야 할지 몰라 임시로 보관합니다. 이후 부모 블록이 도착하면 연결해 정상 처리합니다. 비트코인 코어는 헤더를 먼저 동기화하는 방식(헤더 우선 동기화)을 도입한 뒤 이런 상황이 크게 줄었습니다.

일상적으로 더 많이 쓰이는 의미는 '스테일 블록'입니다. 두 채굴자가 거의 같은 시각에 같은 높이의 유효한 블록을 찾으면 체인이 잠시 둘로 갈라집니다. 다음 블록이 어느 쪽 위에 먼저 쌓이느냐에 따라 한쪽이 메인 체인이 되고, 다른 쪽 블록은 버려집니다. 버려진 블록 자체는 유효하지만 블록 보상을 받지 못하며, 그 안의 트랜잭션은 대부분 메인 체인 블록에도 들어 있거나 멤풀로 돌아가 다시 처리됩니다. 개발자 문서에서는 두 개념을 구분해 후자를 '스테일 블록'으로 부를 것을 권장합니다.

스테일 블록의 발생 빈도는 네트워크 상태를 보여 주는 지표이기도 합니다. 블록 전파가 느리거나 채굴이 지리적으로 흩어져 있으면 스테일 비율이 오르고, 이는 더 많은 해시 파워를 가진 쪽에 유리하게 작용해 채굴 중앙화를 부추길 수 있습니다. 압축 블록 같은 전파 개선 기술이 중요한 이유입니다.

블록체인·암호화폐에서는

스테일 블록이 생기면 짧은 체인 재구성(리오그)이 일어나 1확인 상태였던 트랜잭션이 잠시 미확인으로 돌아갈 수 있습니다. 거래소가 입금을 처리할 때 여러 번의 확인을 기다리는 이유입니다. 블록 간격이 짧을수록 스테일 비율이 높아지는데, 작업증명 시절 이더리움은 이런 블록을 '엉클(오머) 블록'으로 인정해 일부 보상을 주었습니다. 지분증명 이더리움에서는 슬롯마다 제안자가 정해져 있어 작업증명식 경쟁은 없지만, 늦게 전파된 블록이 채택되지 못하는 경우는 여전히 있습니다.

비슷한 이름의 '고아 트랜잭션'은 아직 노드가 모르는 이전 트랜잭션의 출력을 쓰는 트랜잭션으로, 부모 트랜잭션이 도착할 때까지 임시 보관됩니다.

쉽게 말하면

이어달리기에서 거의 동시에 두 명이 바통을 받았지만 결국 한 명만 공식 기록에 남는 것과 같습니다. 남지 못한 주자가 뛴 구간이 스테일 블록입니다.

이 글은 학습을 위한 일반 정보이며 투자 권유나 법률 자문이 아닙니다. 가상자산은 가격 변동이 크고 원금 손실 위험이 있습니다.