르록 생성에 성공하였고 검증에 오류가 없어서 이더리움 네트워크를 통해 다른 노드에 브로드캐스팅은 되었으나 다른 마이너가 생성한 다른 블록에 비해 난이도가 낮아 블록체인에는 등록되지 못한 블록.
비트코인에서는 엉클 블록을 스테일블록(Stale Block)혹은 고아블록(Orpahn Block)이라고 한다.
두 마이너가 같은 시간에 블록을 채굴할 때 이들 마이너의 블록에는 서로 다른 트랜잭션이 포함된다. 따라서 정상 블록에 포함된 트랜잭션은 처리가 되는 반면, 엉클 블록 내에 있는 트랜잭션은 즉시 처리되지 않는다.
두 개의 블록이 거의 같은 시간에 생성될 때 블록체인은 두 개의 체인으로 분리되고, 이 중 길이가 긴 체인이 정상적으로 등록된다. 길이가 짧은 체인은 엉클 블록을 포함한 체인이 되고, 이후 엉클 블록체인 뒤에 연결된 블록들은 모두 엉클 블록이 된다. 즉, 엉클 블록의 짧은 체인의 생성 과정은 불필요한 해시 계산을 위한 컴퓨팅 파워를 쓴 셈이 된다.
엉클 블록을 생성 후 다음 블록을 생성하면 평균 블록 생성 시간이 더 길어져서 블록 생성 후 난이도가 줄어들게 된다. 난이도가 줄어들면 블록 타임이 줄어들게 되고 컴퓨팅 파워가 큰 마이너의 영향력이 커지는 문제가 발생한다. 또한, 엉클 블록 비율이 너무 높을 경우 블록체인의 폭이 넓어지고, 자칫 컴퓨팅 파워가 강한 마이너에 의해 블록체인이 악의적으로 변경되는 등의 문제가 발생할 수 있다. 엉클 블록이 추가됨으로써 블록체인의 전체 난이도에 엉클 블록의 난이도가 포함되기 때문에 전체 난이도의 합(TD,Total Difficulty) 또한 상승한다.
이더리움은 엉클블록의 문제를 고스트(Ghost, Greedy heavisest observed Subtree) 알고리즘을 사용하여 해결한다. 고스트 알고리즘은 블록 생성 시 정상 블록에 최대 2개의 엉클 블록까지 추가하고 보상하여 엉클 블록까지 추가하고 보상하여 엉클 블록의 문제를 해결한다.
하나의 블록은 반드시 하나의 부모 블록을 지정하며, 0 또는 그 이상의 엉클 블록을 지정한다. 현재 엉클 블록은 최대 2개까지 지원한다.
블록 A에 포함된 엉클 블록은 다음과 같은 속성들을 갖는다.
- 블록 A의 k번째 조상의 직접적인 자손이어야 한다. 여기서 '2≤k≤7'. 실제 한 블록이 생성된 후 블록체인에 등록되고 최종적으로 반영된 ㅅ하실이 확인될 때 까지 최대 생성 시점 이후 6개의 블록이 블록체인에 연결될 때까지 기다린다. 이를 '6번 확인(confirmation)'이라고 한다. 엉클 블록 역시 6개의 블록 중 하나에 포함되어야 한다.
블록 A의 조상이어서는 안 된다.
엉클 블록은 반드시 유효한 블록 헤더를 가져야 하지만 미리 검증되거나 유효한 블록일 필요는 없다.
블록 보상 + 트랜잭션 수수료 + 엉클 블록 1개당 블록 보상의 3.125%
여기서 엉클 블록 1개당 블록보상 3.125% 주는 것은 최대 2개 까지만 허용한다.
(8- (정상 블록 번호 - 엉클 블록 번호) ) / 8 X 블록 보상
본래 블록 생성에 대한 기본 보상은 5이더였지만, 비잔티움 업그레이드 이후 3이더로 조정되었다.