블록체인 기술에서는 하드포크(Hard Fork)와 소프트포크(Soft Fork)가 네트워크 프로토콜을 업그레이드하고 업데이트하는 두 가지 다른 방법입니다. 이들은 구현에서 몇 가지 뚜렷한 차이가 있으며, 블록체인 네트워크의 구조와 운영에 영향을 미칩니다.
하드포크 “하드포크”란 규칙 변경 후 새 버전의 네트워크가 구 버전의 네트워크와 호환되지 않는 경우를 의미하며, 블록체인에 두 개의 분기(서로 영향을 미치지 않는 평행한 체인)가 형성됩니다.
소프트포크 “소프트포크”란 규칙 변경 후 새 규칙이 적용된 노드가 여전히 기존 규칙을 적용한 노드와 상호작용할 수 있는 경우를 의미합니다. 새 버전의 네트워크는 기존 버전과 호환됩니다.
빠른 비교
하드포크 | 소프트포크 |
---|---|
e.g. 2016 DAO | e.g. 2017 Segwit |
이전 버전은 새 네트워크와 호환되지 않습니다. |
새로운 네트워크는 이전 네트워크와 호환됩니다. |
다른 프로토콜 | 동일한 프로토콜 |
상황 분석
예를 들어, 네트워크 노드의 절반이 블록 크기를 2MB에서 3MB로 확장하고 싶어하는 경우, 3MB 블록을 구 버전 노드로 보내면 블록이 거부됩니다. 구 버전 노드의 규칙은 2MB를 유효한 블록의 최대 크기로 명시하고 있기 때문입니다. 이 경우, 네트워크 프로토콜은 두 개로 나뉘며, 각기 다른 통화를 사용합니다. 모든 계좌의 잔액은 원래 기록에서 새 체인으로 복제됩니다. 포크 전 20BTC를 가진 사용자는 두 개의 체인에서 각각 20BTC와 20새 BTC의 계좌를 가지게 됩니다.
예를 들어, 원래 블록 크기가 2MB이고 현재 절반의 네트워크 노드가 블록 크기를 1MB로 제한하고 너무 큰 블록을 무효로 간주하는 새 제한을 시행하는 경우, 구 버전 노드는 여전히 블록을 수신하거나 방송할 수 있습니다. 이 경우, 새 네트워크는 규칙 버전의 제한 없이 모든 노드를 포함할 수 있습니다. 비트코인의 분리된 증거(SegWit)는 소프트포크의 예입니다. 이 포크는 블록과 트랜잭션의 새로운 형식을巧妙하게 도입했습니다. 업데이트되지 않은 노드는 계속해서 블록 정보를 수신할 수 있지만 새로운 트랜잭션의 검증에는 참여하지 않습니다.