요약: 체인 포크는 블록체인의 프로토콜 규칙이 갈라지면서 체인이 따를 수 있는 두 개 이상의 잠재적 경로가 생성될 때 발생합니다. 소프트 포크는 기존 규칙을 강화하는 후방 호환성 있는 규칙 변경을 도입하므로, 업그레이드되지 않은 노드도 새로운 블록을 계속 수용하고 네트워크는 통합된 상태를 유지합니다. 하드 포크는 하위 호환성이 없는 변경 사항을 도입하는데, 이는 업그레이드된 노드와 업그레이드되지 않은 노드가 서로 다른 규칙을 따르게 되며, 모든 사용자가 업그레이드하지 않을 경우 체인이 영구적으로 두 개의 별도 네트워크로 분할됨을 의미합니다. 포크는 블록체인이 진화하고, 업그레이드되며, 커뮤니티 내 의견 불일치를 해결하는 주요 메커니즘이지만, 동시에 자산 중복, 리플레이 공격, 생태계 분열과 같은 위험을 초래하기도 합니다.
간단한 설명
블록체인 포크를 마치 길의 갈림길처럼 생각해 보세요. 모든 사람은 같은 규칙을 따르며 같은 길을 걸어왔습니다. 갈림길에서 새로운 규칙이 제안됩니다. 변경 사항이 하위 호환성(소프트 포크)을 갖춘 경우, 새로운 규칙을 채택하든 그렇지 않든 상관없이 모든 사람이 같은 길을 계속 갈 수 있습니다. 길이 약간 좁아지긴 하지만(더 엄격한 규칙), 모든 여행자는 여전히 그 길을 이용할 수 있습니다. 만약 변경 사항이 하위 호환성이 없다면(하드 포크), 길은 두 개의 별개의 길로 나뉩니다. 여행자들은 어떤 길을 따라갈지 선택해야 하며, 서로 다른 길을 택한 이들은 더 이상 서로 상호작용할 수 없게 됩니다.
블록체인 용어에서 “규칙”이란 합의 프로토콜을 의미합니다. 즉, 어떤 거래가 유효한지, 블록이 어떻게 구성되는지, 최대 블록 크기는 얼마인지, 가스는 어떻게 계산되는지, 보상은 어떻게 분배되는지 등을 말합니다. 네트워크상의 모든 노드는 블록을 검증할 때 이러한 규칙을 적용합니다. 규칙이 변경되면, 새로운 규칙을 채택한 노드와 여전히 기존 규칙을 따르는 노드 간에 어떤 블록이 유효한지에 대해 의견이 엇갈릴 수 있습니다. 이러한 의견 불일치가 어떻게 해결되느냐에 따라 포크가 소프트 포크(네트워크가 통합된 상태를 유지)가 될지, 하드 포크(네트워크가 분할됨)가 될지가 결정됩니다.
소프트 포크
소프트 포크는 기존 규칙을 더욱 엄격하게 만듭니다. 새로운 규칙에 따라 유효한 블록은 기존 규칙에 따라서도 유효하지만, 기존 규칙에 따라 유효했던 일부 블록은 새로운 규칙에 따라서는 더 이상 유효하지 않게 됩니다. 즉, 업그레이드된 노드는 더 엄격한 유효성 검사를 적용하는 반면, 업그레이드되지 않은 노드는 새로운 블록이 기존 규칙을 위반하지 않기 때문에 여전히 이를 수용합니다.
Bitcoin2017년에 이루어진 비트코인의 세그위트(SegWit) 업그레이드는 소프트 포크의 전형적인 사례입니다. 세그위트는 거래 서명 저장 방식을 변경하여 거래의 실질적 크기를 줄이고 라이트닝 네트워크를 가능하게 했습니다. 업그레이드되지 않은 노드들도 기존 크기 제한 규칙 하에서 해당 블록이 유효했기 때문에 세그위트 블록을 여전히 수용했습니다. 업그레이드된 노드들은 서명 데이터의 구성 방식에 대한 추가 규칙을 적용했지만, 이는 기존 노드들에게는 눈에 띄지 않았습니다.
소프트 포크는 체인이 분할될 위험이 없기 때문에 일반적으로 하드 포크보다 안전한 것으로 간주됩니다. 채굴자나 검증자의 대다수가 새로운 규칙을 채택하기만 하면 체인은 통합된 상태를 유지합니다. 업그레이드되지 않은 노드는 새로운 기능을 이해하거나 검증하지 못할 수 있지만, 블록을 거부하지는 않으므로 네트워크는 단일 체인으로 유지됩니다. 소프트 포크의 단점은 달성할 수 있는 범위가 제한적이라는 점입니다. 새로운 규칙은 하위 호환성을 유지해야 하기 때문에, 블록 구조 변경, 계정 모델 수정, 합의 메커니즘 변경과 같은 근본적인 프로토콜 변경은 일반적으로 소프트 포크로 구현하는 것이 불가능합니다.
하드 포크
하드 포크는 규칙을 완화하거나 근본적으로 변경하여, 기존 규칙 하에서는 새로운 블록을 유효하지 않게 만듭니다. 업그레이드되지 않은 노드는 새로운 블록을 거부하고, 네트워크는 새로운 규칙을 따르는 체인과 기존 규칙을 따르는 체인, 두 개의 체인으로 분할됩니다. 두 체인 모두 포크 지점까지는 동일한 이력을 공유하지만, 그 지점부터는 서로 다른 경로를 따르게 됩니다.
대부분의 하드 포크는 전체 커뮤니티가 새로운 규칙으로 전환하는 데 동의하는, 계획적이고 조율된 업그레이드입니다. 이더리움( Ethereum)이 작업 증명(Proof of Work)에서 지분 증명(Proof of Stake)으로 전환한 사례(‘더 머지(The Merge’, 2022년 9월)는 하드 포크였습니다. 모든 노드 운영자, 스테이킹 제공업체, 거래소 및 애플리케이션 개발자는 지정된 블록이 생성되기 전에 소프트웨어를 업그레이드하기 위해 협력했습니다. 커뮤니티가 한마음으로 뭉쳤기 때문에, 기존의 작업 증명(PoW) 체인(일시적으로 “이더리움PoW”로 불렸음)은 지지를 거의 받지 못했고 금세 무의미해졌습니다.
Ethereum...의 정기적인 네트워크 업그레이드(상하이, 덴쿤 등) 역시 하드 포크에 해당하며, 미리 정해진 블록 번호나 타임스탬프에 맞춰 활성화됩니다. 전체 생태계가 사전에 업그레이드되며, 기존 규칙은 폐기됩니다. 이러한 조율된 하드 포크는 일상적인 유지보수 절차일 뿐, 논란을 일으키는 사건이 아닙니다.
논란이 되는 하드 포크
가장 극적인 포크는 커뮤니티가 프로토콜의 방향에 대해 합의에 이르지 못하고, 양측 모두 독립적인 체인을 유지할 수 있을 만큼 충분한 지지를 확보했을 때 발생합니다. 이러한 논란의 여지가 있는 하드 포크로 인해 각각 고유한 커뮤니티, 채굴자/검증자, 토큰 가치, 개발 방향을 가진 두 개의 활성 블록체인이 탄생하게 됩니다. equipe.
가장 유명한 논란의 여지가 있는 포크는 ‘ Ethereum Classic’입니다. 2016년, The DAO 스마트 계약의 버그가 악용되어 수백만 달러 상당의 ETH가 유출되었습니다. Ethereum 커뮤니티는 이 도난을 되돌리기 위해 하드 포크를 실시할지 여부를 놓고 논쟁을 벌였습니다. 대다수는 포크를 지지했고, 그 결과 도난당한 자금이 반환된 새로운 체인(현재의 Ethereum)이 생성되었습니다. 소수파는 철학적 근거(“코드는 법이다”며 블록체인은 결코 소급하여 수정되어서는 안 된다는 주장)를 들어 포크를 거부했고, 이들은 기존 체인을 계속 운영했으며, 이 체인은 Ethereum Classic(ETC)이 되었습니다. 두 체인은 오늘날까지도 공존하고 있으며, Ethereum 가 압도적으로 규모가 크고 가치가 높습니다.
Bitcoin 캐시(Cash)는 또 다른 주요 논란의 대상이었던 포크 사례입니다. 2017년, 비트코인 캐시( Bitcoin ) 커뮤니티는 거래 처리량을 늘리는 방법에 대해 논쟁을 벌였습니다. 한 진영은 블록 크기를 1MB에서 8MB로 늘리는 방안을 지지했습니다. 반면 다른 진영은 블록 크기 확대를 반대하며, 세그윗(SegWit) 소프트 포크와 라이트닝 네트워크(Lightning Network)와 같은 오프체인 확장 솔루션을 선호했습니다. 양측의 의견 차이는 해소될 수 없었으며, 2017년 8월, 대용량 블록을 지지하는 진영은 비트코인 캐시( Bitcoin )를 포크하여 비트코인 캐시( Bitcoin , BCH)를 생성했습니다. 이후 BCH는 2018년에 다시 포크되어 비트코인 캐시( Bitcoin , BCH)와 비트코인 캐시 SV( Bitcoin , SV)로 분할되었습니다.
포크가 발생하면 어떤 일이 일어나는가
하드 포크가 발생하면, 기존 암호화폐의 모든 보유자는 갑자기 두 체인 모두에서 동일한 양의 자산을 보유하게 됩니다. Ethereum/Ethereum 클래식 분할 이전에 10 ETH를 보유하고 있었다면, 새로운 체인에는 10 ETH가, 기존 체인에는 10 ETC가 있게 됩니다. 이러한 자산 중복은 한 체인에서 유효한 거래가 다른 체인에서 재전송되는 ‘리플레이 공격’을 비롯한 경제적 복잡성을 초래할 수 있습니다.
개발자에게 포크란 어떤 체인을 지원할지(혹은 두 체인을 모두 지원할지) 결정하고, 노드 소프트웨어를 업데이트하며, 새로운 규칙 하에서 스마트 계약이 올바르게 작동하는지 확인하고, 사용자에게 변경 사항을 알리는 과정을 의미합니다. 노드 운영자에게 포크는 의도된 체인을 따르기 위해 포크 블록이 생성되기 전에 클라이언트 소프트웨어를 업그레이드해야 함을 의미합니다. 업그레이드에 실패한 노드는 기존 체인에 남아 오래된 데이터를 제공하게 되며, 이로 인해 애플리케이션이 작동하지 않을 수도 있습니다.
소프트 포크와 하드 포크의 차이점은 무엇인가요?
두 방식의 핵심적인 차이는 하위 호환성에 있습니다. 소프트 포크는 기존 소프트웨어가 여전히 수용할 수 있는 방식으로 규칙을 강화하므로, 네트워크는 하나의 체인으로 유지됩니다. 반면 하드 포크는 기존 소프트웨어가 거부하는 방식으로 규칙을 변경하므로, 네트워크가 두 개의 체인으로 분할될 수 있습니다. 아래 표에서는 이 두 가지를 나란히 비교하고 있습니다.
속성
소프트 포크
하드 포크
규칙 변경
기존 규정을 강화한다
규칙을 완화하거나 재정의한다
이전 버전과 호환됨
네
아니요
업그레이드되지 않은 노드
여전히 새로운 블록을 수락합니다
새 블록 거부하기
연쇄적 결과
네트워크는 통합된 상태를 유지합니다
네트워크가 두 개의 체인으로 분할될 수 있다
새 자산이 생성되었습니다.
아니요
네, 보유자는 두 체인 모두에서 코인을 받게 됩니다.
예시
Bitcoin SegWit (2017)
‘The Merge’, ‘ Ethereum ’ 클래식 스플릿
이 두 가지 유형의 포크는 블록체인이 시간이 지남에 따라 업그레이드되는 방식입니다. 소프트 포크는 위험은 적지만 적용 범위가 제한적인 반면, 하드 포크는 모든 참여자가 동시에 업그레이드해야 한다는 대가를 치르면서 더 근본적인 프로토콜 변경을 가능하게 합니다.
우발적 또는 일시적인 포크란 무엇인가요?
모든 포크가 의도적인 프로토콜 변경은 아닙니다. 우발적인 포크는 두 검증자가 거의 동시에 경쟁하는 블록을 생성하여, 어느 블록이 체인을 연장할지에 대해 네트워크가 잠시 분할되는 상황에서 발생합니다. 네트워크는 가장 무거운 유효한 체인으로 수렴함으로써 한두 블록 이내에 이 문제를 해결하며, 고아 블록은 폐기됩니다. 이러한 일시적인 분할은 블록체인 재구성(reorg)과 밀접한 관련이 있습니다.
이러한 일시적인 분기는 정상적인 현상이며 일반적으로 사용자에게는 보이지 않지만, 확인되지 않은 블록을 확정된 것으로 간주하는 애플리케이션의 경우 나중에 사라지는 거래가 표시될 수 있습니다. 자금을 최종적으로 처리하기 전에 최종 확정(finality) 을 기다리는 것은, 리오르가(reorg)로 인해 제거되는 블록에 따라 조치를 취하는 것을 방지하기 위한 표준적인 방어책입니다.
포크 발생 시 리플레이 공격이란 무엇인가요?
하드 포크로 인해 동일한 거래 내역을 공유하는 두 개의 체인이 생성될 경우, 분할 지점에서 계정, 잔액 및 서명 방식이 동일하기 때문에 한 체인에서 서명된 거래가 다른 체인에서도 유효할 수 있습니다. 공격자는 두 번째 체인에서 사용자의 거래를 재전송(리플레이)하여 사용자가 의도하지 않은 자금을 이동시킬 수 있습니다. 잘 관리된 포크는 고유한 체인 ID와 같은 리플레이 방지 기능을 추가하므로, 거래는 의도된 네트워크에서만 유효합니다. 지갑 및 노드 운영자는 논란의 여지가 있는 분할이 발생한 후 거래를 진행하기 전에 리플레이 방지 기능이 제대로 적용되어 있는지 확인해야 합니다.
개발자들은 블록체인 포크에 어떻게 대비하나요?
계획된 포크를 준비하는 데 있어 가장 중요한 것은 타이밍과 테스트입니다. 아래 체크리스트는 예정된 하드 포크를 앞두고 대부분의 팀이 따르는 단계를 다루고 있습니다.
단계
어떻게 해야 할까요?
그것이 왜 중요한가
일정 확인하기
포크 블록이나 타임스탬프를 확인하세요
이걸 놓치면 예전 방식에 머물게 됩니다
클라이언트 업그레이드
노드 소프트웨어를 미리 업데이트하십시오
기존 클라이언트가 새로운 블록을 거부함
테스트 대상: testnet
새로운 규정에 따라 계약서 검토
중대한 변경 사항을 조기에 포착합니다
재생을 방지하는지 확인
고유한 체인 ID가 있는지 확인하십시오
크로스체인 리플레이 방지
관리형 인프라 사용
업그레이드 작업을 제공업체에 위임하기
단일 장애 지점을 제거합니다
관리형 RPC를 사용하는 팀은 제공자가 활성화 전에 노드를 업그레이드하기 때문에 이러한 작업의 대부분을 피할 수 있습니다. 이벤트 기반 앱의 경우, Webhooks 그리고 Streams 수동적인 클라이언트 관리 없이 포크 후 데이터를 전달합니다.
자주 묻는 질문
하드 포크를 통해 무료 코인을 받을 수 있나요?
하드 포크로 인해 두 번째 영구적인 체인이 생성될 경우, 기존 자산 보유자들은 포크 시점을 기준으로 새로운 체인에서도 동일한 잔고를 보유하게 됩니다. 이것이 바로 Ethereum Classic과 Bitcoin Cash 보유자들이 코인을 받게 된 방식입니다. 새로운 자산은 포크된 체인이 실제 커뮤니티와 시장의 지지를 얻을 때만 가치를 가지게 되는데, 대부분의 포크는 이를 달성하지 못합니다.
소프트 포크와 하드 포크 중 어느 쪽이 더 안전한가요?
소프트 포크는 네트워크의 통합성을 유지하고 모든 참여자가 동시에 업그레이드할 필요가 없기 때문에 일반적으로 위험도가 낮습니다. 하드 포크는 더 강력한 효과를 발휘하지만, 업그레이드에 실패한 노드는 기존 체인에 고립되고, 논란이 되는 분할로 인해 커뮤니티가 분열될 수 있으므로 위험도가 더 높습니다.
포크와 리오그의 차이점은 무엇인가요?
포크(fork)는 프로토콜 규칙이나 체인 이력에 발생하는 분기를 의미하는 반면, 리오그(reorg)는 네트워크가 최근 추가된 블록을 경쟁 분기로 대체하는 것을 말합니다. 우발적으로 발생한 짧은 포크는 리오그를 통해 해결되는 반면, 하드 포크(hard fork)는 영구적인 규칙 변경으로, 두 개의 지속적인 체인을 생성할 수 있습니다.
블록체인 포크는 되돌릴 수 있나요?
계획된 하드 포크나 논란이 되는 하드 포크는 두 체인 모두 독립적인 지지를 받게 되면 영구적으로 유지되는데, 이는 각 네트워크가 자체 규칙에 따라 블록을 계속 생성하기 때문이다. 반면, 우발적인 포크는 네트워크가 하나의 표준 체인으로 수렴함에 따라 한두 개의 블록 내에 자동으로 해결된다.
포크가 내 애플리케이션에 어떤 영향을 미치나요?
계획된 포크가 발생하는 동안 노드는 정식 체인을 계속 따르기 위해 업그레이드된 소프트웨어를 실행해야 하며, 그렇지 않으면 오래된 데이터를 제공하게 됩니다. 포크 전환을 처리해 주는 관리형 RPC 제공자를 사용하면, 별도의 조치 없이도 업그레이드 기간 동안 엔드포인트가 계속해서 정식 데이터를 반환합니다.
Quicknode 가 포크를 처리하는 방법
Quicknode equipe 의 인프라스트럭처는 80개 이상의 지원 네트워크 전반에 걸쳐 계획된 모든 하드 포크를 모니터링하며, 포크가 활성화되기 전에 노드가 업그레이드되도록 보장합니다. 즉, 를 사용하는 개발자는 클라이언트 업그레이드를 직접 관리할 필요가 없으며, 애플리케이션이 포크의 잘못된 측에 속하게 될 위험도 없습니다. 체인이 계획된 하드 포크를 거칠 때, 가 원활하게 전환을 처리하며, 사용자의 RPC 엔드포인트는 표준화된 업그레이드된 체인에서 계속해서 데이터를 제공하게 됩니다. Quicknode Quicknode
두 체인이 모두 계속 운영되는 분쟁성 포크의 경우, Quicknode 는 커뮤니티의 지지 여부, 보안, 개발자 수요 등을 종합적으로 평가한 후, 해당 신규 체인을 지원 네트워크로 추가할지 여부를 결정합니다. Quicknode 의 멀티체인 인프라 덕분에, 새로 포크된 체인에 대한 지원 추가 여부는 인프라 차원의 결정 사항일 뿐, 고객에게 개발상의 부담을 주지 않습니다.
Quicknode Streams 포크 전환 시 데이터를 최종 확정 순서대로 전달함으로써, 포크 활성화 기간 동안 발생할 수 있는 일시적인 체인 불확실성으로 인해 파이프라인에 잘못된 데이터가 전달되는 일이 없도록 보장합니다. 내장된 재구성 처리 기능은 포크 활성화 차단 기간 동안 발생할 수 있는 극단적인 사례까지 포괄적으로 처리합니다.