Bitcoin은 노드가 글로벌하게 분포되어 있으며, 각 채굴자들 모두 동시에 PoW를 통해 신규 블록 채굴에 도전한다.
혹시 미국의 노드와 중국의 노드가 동시에 블록 정답(Nonce)찾기에 성공하는 경우에는 어떻게 될까?
이런 경우를 우리는 Blockchain Network가 일시적으로 분기되었다고 이야기하고 이를 Fork 라고 부른다.
하지만 Bitcoin은 Longest Blockchain Rule을 통해 이렇게 Fork 된 네트워크를 하나로 유지시키고 있다.
Bitcoin Block은 어떤 Block이 전달될지 모르기 때문에, Fork 발생 시 2개의 Chain을 가지고 있으며, 이 중 Longest Chain을 Main Chain으로 유지하고 있다.
Main Branch가 Longest가 아님을 알게 된 순간, Side Branch를 Main으로 변경하고 이에 대한 LevelDB 업데이트가 이루어진다.
Bitcoin Software의 Upgrade는 사용자가 본인이 사용하고 있는 프로그램을 신규 버전으로 재설치 하면된다.
이렇게 Software의 Upgrade가 필요한 경우를 Fork라고 부르고, Soft Fork 와 Hard Fork로 구분한다.
Soft Fork는 모든 사용자가 Node Upgrade를 하지 않아도 진행이 된다.
Hard Fork는 모든 사용자가 Node Upgrade를 해야 하고, 하지 않는 경우 네트워크에서 분리된다.