MSTR Cat

블록체인/레벨 III · 네트워크/3.3 합의와 거버넌스/수업 3

소프트 포크와 하드 포크

유효성의 비대칭: 규칙을 강화하는 것은 안전하고 완화하는 것은 체인을 분열시키는 이유

준비물과거 체인 데이터를 제공하는 블록 탐색기제안서 상태를 확인할 수 있는 GitHub의 BIP 리포지토리

호기심

  1. 왜 네트워크는 모든 노드를 동시에 업그레이드하도록 강제하지 않고도 더 엄격한 규칙을 채택할 수 있을까요?
  2. 2017년 8월에 일어난 어떤 구조적 변화로 인해 비트코인 캐시가 비트코인에서 분리되었나요?
  3. 2013년 3월의 소프트웨어 버그는 어떻게 누구도 의도하지 않은 두 개의 경쟁 체인을 만들어 냈을까요?

탐구

  1. 소프트 포크는 합의 규칙을 강화합니다. 새롭고 더 엄격한 규칙에서 유효한 블록과 거래는 이전의 더 느슨한 규칙에서도 여전히 유효합니다. 이러한 하위 호환성 덕분에 업그레이드하지 않은 노드는 계속 체인을 받아들이고, 업그레이드한 노드는 새로운 제약을 적용합니다. 해시파워의 대부분이 새 규칙을 적용하는 한 네트워크는 하나의 체인을 유지하지만, 그렇지 않으면 2015년 7월의 사례처럼 소프트 포크라도 체인을 분열시킬 수 있습니다.
  2. 하드 포크는 규칙을 완화하거나 바꾸어 이전에는 유효하지 않던 구조가 유효해지게 합니다. 예를 들어 블록 크기 한도를 높이면 더 큰 블록이 허용됩니다. 모든 노드가 이 새로운 구조를 받아들이도록 업그레이드하지 않으면, 네트워크는 서로 호환되지 않는 기록을 가진 두 개의 경쟁 체인으로 갈라집니다. 이러한 분열은 2017년 8월 1일 비트코인 캐시가 비트코인보다 큰 블록 크기를 채택하면서 일어났습니다.
  3. 소프트 포크는 새 규칙을 적용하는 채굴자들이 해시파워의 과반을 차지해야 하므로 신중한 활성화가 필요합니다. 채굴자들이 신호를 무시하거나 낡은 규칙을 적용하면 결국 체인이 분열될 위험이 있습니다. BIP9(2015-2016)는 채굴자 신호를 통한 활성화 방식을 표준화했습니다. 2,016블록 기간 중 95%의 블록이 준비 신호를 보내면 소프트 포크가 확정(lock-in)되고, 그 후 한 기간이 더 지나면 업그레이드된 노드들이 이를 적용했습니다.
  4. 2013년 3월에 발생한 우발적인 분기는 버전 0.8에서는 큰 블록이 받아들여졌지만, 데이터베이스 제한으로 인해 버전 0.7에서는 거부된 것에서 비롯되었습니다. 네트워크가 분열되었으며, 더 긴 체인이 승리하는 방식이 아닌, 채굴자들이 의도적으로 0.7로 전환함으로써 문제가 해결되었습니다. 그 결과 0.7과 호환되는 분기가 다른 분기를 앞지르게 되었습니다. 이 사건은 버전 간의 의도치 않은 차이가 네트워크를 분열시킬 수 있음을 보여주었으며, 긴급 상황에서는 당시 더 많은 작업이 이루어진 분기가 아닌, 조율된 인간의 결정을 통해 문제를 해결할 수 있음을 시사했습니다.
  5. 역사적 사례들이 이러한 작동 방식을 잘 보여 줍니다. P2SH(Pay-to-Script-Hash)는 2012년 소프트 포크로 활성화되어, 기존 노드와의 호환성을 유지하면서 복잡한 스크립트를 쓸 수 있게 했습니다. SegWit(Segregated Witness)은 2017년 8월 24일 블록 481,824에서 활성화되었으며, 서명 데이터를 트랜잭션 ID 계산에 쓰이는 부분 밖으로 옮겨 트랜잭션 가변성(malleability) 문제를 해결하고 용량을 늘렸습니다. 이어서 Taproot가 2021년 11월 블록 709,632에서 활성화되었습니다.
  6. 두 블록 탐색기에서 비트코인 캐시 분리를 확인해 보십시오. 블록 478,558은 두 체인이 공유하는 마지막 블록입니다. 비트코인 탐색기와 비트코인 캐시 탐색기에서 블록 478,559를 조회해 보면, 서로 다른 블록이며 비트코인 캐시 쪽 블록은 기존 비트코인 규칙이 금지했던 1MB보다 큽니다. 그 높이부터 각 체인은 상대 체인의 블록을 유효하지 않은 것으로 취급합니다.

핵심 사실

  • 소프트 포크는 규칙을 강화합니다. 새 규칙에서 유효한 구조는 기존 규칙에서도 유효하므로 하위 호환성이 보장됩니다.
  • 하드 포크는 규칙을 완화합니다. 새 규칙에서 유효한 구조가 기존 규칙에서는 유효하지 않았으므로, 모두가 채택하지 않으면 네트워크가 분열될 위험이 있습니다.
  • 비트코인 캐시는 블록 크기 제한에 대한 의견 차이로 인해 2017년 8월 1일에 비트코인에서 분리되었습니다.
  • 2013년 3월의 포크는 Bitcoin-Qt/bitcoind 버전 0.7과 0.8 사이에서 우발적으로 일어난 분열로, 0.7 버전의 문서화되지 않은 데이터베이스 한도 때문에 발생했습니다.
  • 세그윗은 2017년 8월 24일, 블록 481,824에서 소프트 포크 방식으로 활성화되었습니다.
  • BIP9(2015-2016)는 채굴자들이 소프트 포크에 대한 준비 신호를 보낼 수 있게 했으며, 확정(lock-in)에는 2,016블록 기간 중 95%의 블록이 필요했습니다.

연습 아홉, 여섯, 셋, 하나

9모으기2009년부터 2023년까지 비트코인 역사상 있었던 9가지 주요 합의 변경 사항을 나열하십시오. 각 사항에 대해 해당 연도와 소프트 포크였는지 하드 포크였는지를 명시하십시오.
6묶기이 9가지 변경 사항을 영향에 따라 용량 증가, 보안 강화, 기능 추가, 버그 수정, 우발적 포크, 실패한 제안의 6가지 범주로 분류하십시오.
3추리기이 그룹들을, 변경이 하드 포크가 아닌 소프트 포크로 구현되는 3가지 핵심 이유로 줄이십시오.
1결정화소프트 포크와 하드 포크의 유효성 집합이 근본적으로 어떻게 다른지 설명하는 문장을 하나 작성하십시오.

팩트 체크

날짜, 수치 및 주장은 아래에 명시된 출처들을 통해 확인되었습니다.

인터랙티브 아카데미에서 열기 →

EN PT ES ZH JA RU DE FR MS