• Fork
    • Bitcoin은 노드가 글로벌하게 분포되어 있으며, 각 채굴자들은 모두 동시에 PoW를 통해 신규 블록 채굴에 도전한다.
    • 혹시 미국의 노드와 중국의 노드가 동시에 블록 정답(Nonce) 찾기에 성공하는 경우에는 어떻게 될까?
    • 이런 경우를 우리는 Blockchain Network가 일시적으로 분기되었다고 이야기하고 이를 Fork 라고 부른다.
    • 하지만 Bitcoin은 Longest Blockchain Rule을 통해 이렇게 Fork 된 네트워크를 하나로 유지시키고 있다.
      • 글로벌의 예시로, 지리적으로 가까운 노드가 먼저 생성될 가능성이 높음. 나눠진 모양이 포크처럼 생겼다고 해서 포크라고 부름.
  • Fork Rule
    • Bitcoin Block은 어떤 Block이 전달될지 모르기 때문에, Fork 발생 시 2개의 Chain을 가지고 있으며, 이 중 Longest Chain을 Main Chain으로 유지하고 있다.
    • Main Branch가 Longest가 아님을 알게 된 순간, Side Branch를 Main으로 변경하고 이에 대한 LevelDB 업데이트가 이루어진다.
  • Bitcoin Software Upgrade
    • Bitcoin Software의 Upgrade는 사용자가 본인이 사용하고 있는 프로그램을 신규 버전으로 재설치 하면된다.
      • github에서 신규버전 release.
    • 이렇게 Software의 Upgrade가 필요한 경우를 Fork라고 부르고, Soft Fork 와 Hard Fork로 구분한다.
    • Soft Fork는 모든 사용자가 Node Upgrade를 하지 않아도 진행이 된다.
    • Hard Fork는 모든 사용자가 Node Upgrade를 해야 하고, 하지 않는 경우 네트워크에서 분리된다.
      • 본인의 이점에따라 네트워크 업데이트에 동의하지 않을 때,
  • Bitcoin Fork History
    • 2010년, 버그해결 및 기능 추가를 위해 수많은 hard/soft fork가 발생. 네트워크 분리는 없었음.
    • 2012년, P2P 지원을 위해 soft fork.
    • 2013년 3월, Forced Fork. rollback. 버클리 db에서 level db로 변경 되면서 24개 블록이 폐기되는 문제. dobule spending attack이 발생으로 rollback
    • 2017년 8월, Segwit을 위한 soft fork. 새로운 방식의 트랜잭션 처리 방식을 제안. soft fork임에도 네트워크 분리가 발생
    • 2021 11월, tap root. 다중 서명거래에 대해 하나의 서명으로 처리할 수 있도록 업데이트
  • Soft Fork – Segwit
    • Segwit은 Bitcoin의 블록 사이즈로 인한 처리 성능을 제한을 해소하고, Transaction Malleability 문제를 해결하는 방안으로 제시
    • Soft Fork이기 때문에, 기존 Node가 업그레이드 하지 않아도 Segwit Transaction 처리가능
      • Segwit으로 업데이트를 해야 Witness Data를 검증 가능.
    • 대표적인 ASIC 채굴자들이 반대하면서 Network Fork 분리가 발생하게 됨.
  • Bitcoin Hard Fork 발생원인
    • Hard Fork는 네트워크 분리가 발생한다. 하지만 특정 기능을 제외한 대부분은 동일하다.(주소형태 등)
      • hard fork로인한 네트워크 분리는 항상 발생하는 것은 아니지만, 대부분 발생할 수 있다. Bitcoin과 Bitcoin Cash는 soft fork와 hard fork로 인해 분리.
    • 탈중앙화된 블록체인의 특성 상 새로운 업그레이드에 찬성하는 쪽과 반대한 쪽이 나뉘게 된다.
    • Hard Fork 후에는 기존에 연결된 Node 상에서 서로 인정하는 Block이 달라지게 되고, 자연스럽게 각 네트워크 참가하는 노드에 따라 네트워크 분리가 발생
  • Hard Fork – Bitcoin Cash(Bitcoin ABC)
    • Bitcoin Cash와 Bitcoin이 분리되게 된 원인은 새로운 Segwit 업그레이드가 기존 ASIC에서는 사용이 불가능하기 때문이다.
    • 채굴자 측에서는 블록 사이즈 문제는 블록 크기 증가(8MB)로 가능하다고 하였다.
    • 개발진 측에서는 Segwit 적용이 블록체인 확장성 문제를 해결 가능하다고 하였다.
    • 478559 번쨰 블록 부터 Bitcoin Cash가 BTC(Bitcoin) 거래를 거부하기 시작하며 네트워크 분리가 시작
    • 네트워크 분리로 인해서 Bitcoin Network Hash Rate의 30% 정도가 사라졌다.
    • Craig Wright(크레이그 라이트)는 Bitcoin Cash에서 2018년 8월 Bitcoin Cash의 Atomic Swap 업데이트에 반대하며 Bitcoin SV(128MB)로
      Hard Fork를 진행하였다.
      - 사토시 나카모토의 주장인, 블록의 크기만 증가 시키는 것을 지지.
profile
"프로그래밍은 저의 상상을 실현 시킬 수 있는 유일한 도구입니다."

0개의 댓글