블록체인의 블록이 다른 블록으로 교체되는 프로세스를 의미한다.

노드가 기존에 맞다고 생각하는 체인보다 더 길거나, 더 유효한 다른 버전의 블록체인을 node가 발견했을 때 발생한다.

그다지 특별한 일은 아니고, 네트워크 문제나 tx의 충돌, 네트워크 공격등으로 발생할 수 있다.

What typically happens

1. Fork Detection

노드가 현재 블록체인과 충돌하는 다른 체인을 인식한다. (네트워크 지연 등에 의해 두 miner가 거의 동일한 시간에 block을 생성한 경우, 혹은 이중 지불 공격 등의 악의적 행동으로 인해)

2. Chain Evalution

노드가 새로운 체인을 평가.

POW에서는 일반적으로 어떤 체인이 가장 작업이 많이 누적되었는지 확인하는 것을 의미한다.

POS에서는 가장 많은 voting power를 가진 체인이 평가 대상이 된다.

3. Block Replacement

새로운 체인이 길거나 더 valid하다면 node는 자신의 체인과 db에서 해당 block(들)을 제거한 후, 새로운 chain으로 부터 자신의 db로 대체 블록을 추가한다.

4. Tx Pool Update

이전 블럭에 들어있었지만 새 블럭에는 들어있지 않은 tx들은 tx pool로 돌아가 이 후의 블럭에 추가될 준비를 한다. 새로운 block에 있고, txpool과 충돌하는 tx들은 txpool에서 제거된다.

5. Blockchain Continuation