블록타임 10분인 경우 누적분포도
setBlockIndexCandidates 은 current tip보다 total work가 큰 블록들의 집합이다. 위 블록들이 현 체인과 계속 연결되는 경우가 대부분이다. 그러나 경우에 따라서 위 블록에는 현 체인을 re-organizing 할 수 있는 블록이 있을 수 있다.
Example 1: Let A be our tip; we then receive, in order, B, C, D, such that:
A -- B
\
C -- D
A가 현재 체인의 tip이다. 이후 B,C,D 블록헤더를 받았다고 하자. setBlockIndexCandidates 집합은 <B,C,D>를 포함한다. B의 total work이 C보다 크고 D보다 작다고 하자. 만약 B의 블록내용을 모두 수신했으면 현 체인의 tip은 B가 된다. 그리고 setBlockIndexCandidates 집합에서 당연히 B를 제거하고 C도 제거한다. D만 집합에 남게 된다.
이후 C,D를 수신했는데 C는 유효하고, D는 bad 전송자료를 가진다고 하자. 그러면 C는 디스크에 저장하고 mapBlocksIndex 집합에 남는다. D블록은 버려지고 mapBlocksIndex 집합에서도 지워진다. 그리고 D를 setBlockIndexCandidates 집합에서 지운다.