본문으로 바로가기

블록체인의 분기

category 비트코인/Bitcoin Core 2018. 3. 13. 23:39

채굴노드에서 채굴에 성공된 블록이 인근노드로 전파가 시작되면 해당 블록을 전달받은 노드들은 그 블록의 유효성을 검사하여 유효한 경우 자신의 메인체인에 블록을 연결하여 블록체인의 길이를 연장시키고 다시 인근노드로 블록을 전달합니다. 이과정이 순차적으로 이루어져 전체 블록체인에 동일한 블록이 추가되게 됩니다.

하지만, 동시에 두개의 유효한 블록이 생성되어 전파되는 경우 일시적으로 블록체인이 두개의 브렌치로 분기가 발생할수 있습니다.

"Mastering Bitcoin" 에서 설명한 예를 가지고 이 과정을 설명하도록 하겠습니다.

https://unglueit-files.s3.amazonaws.com/ebf/05db7df4f31840f0a873d6ea14dcc28d.pdf


다음 그림은 파란색 블록을 가장 최상위 블록으로 가지고 있는 블록체인을 나타내고 있으며, 모든 노드가 동일한 파란블록을 부모블록으로 가지고 있습니다.



다음 그림은 동시에 다른지역에서 각자 유효한 블록을 생성하여 전파하는 과정을 보여주고 있습니다.

캐나다에서 빨간색 블록이 생성되어 전파가 되고, 호주에서 초록색 블록이 생성되어 전파가 되고 있으며 두개 블록은 모두 동일한 파란색 블록을 부모블록으로 하여 전파되고 있습니다.



각자 생성된 블록이 모든노드에 전파가 완료되면 다음 그림과 같이 빨간색 블록과 초록색 블록이 마지막 블록으로 이루어진 두개의 블록체인으로 분기가 발생하게 됩니다.

이 과정에서 초록색 블록으로 확장된 노드에서는 뒤늦게 도착한 빨간색 블록은 무시하게 되고, 마찬가지로 빨간색 블록으로 확장된 노드는 뒤늦게 도착한 초록색 블록은 무시하게 됩니다.



이후에 초록색 블록을 부모블록으로 가지는 노드에서 새롭게 분홍색 블록을 생성하여 전파를 시작합니다.



전파가 진행된 결과 다음 그림과 같이 초록색 블록을 부모블록으로 가지는 노드는 정상적으로 확장이 진행되지만, 빨간색 블록을 부모로 가지는 노드는 2개의 블록체인으로 분기가 됩니다. 새로 생성된 분홍색 블록이 초록색 블록을 부모블록으로 가르치고 있기 때문입니다. 따라서 하기 그림과 같이 파란블록->빨간블록으로 이루어진 블록체인과, 파란블록->초록블록->분홍블록 으로 이루어진 2개의 블록으로 분기가 됩니다. 분기가 발생하게 되는 경우 가장많은수의 블록으로 구성된 체인이 그만큼 유효한 작업증명이 이루어졌다고 판단하여 하기 예에서는 파란색->초록색->분홍색 블록으로 구성된 체인을 메인체인으로 선택하게 되고, 빨간색 블록에 포함되어 있던 거래는 다시 거래풀에 들어가 새로운 블록생성을 위해 대기하게 됩니다.



이와같이 순간적으로 블록체인의 분기가 발생하게 되더라도 바로 다음블록의 생성시점에 하나의 메인체인으로 수렴이 이루어지게 됩니다.