
하드포크와 소프트포크: 블록체인은 어떻게 규칙을 바꾸는가
블록체인의 규칙은 고정되어 있지 않습니다. Bitcoin은 새로운 주소 유형을 추가했고, Ethereum은 채굴에서 스테이킹으로 전환했으며, 규모가 작은 체인들도 정기적으로 업그레이드합니다. 하지만 업데이트할 중앙 서버는 없습니다. 모든 노드가 각자 규칙의 사본을 실행하고 있으며, 규칙을 바꾸려면 수천 명의 독립적인 운영자가 합의해야 합니다.
이를 위한 두 가지 방법을 소프트포크와 하드포크라고 부릅니다. 둘의 차이에 따라 기존 소프트웨어가 계속 작동하는지, 그리고 때로는 하나의 코인이 둘로 나뉘는지가 결정됩니다.
규칙, 노드, 그리고 합의
모든 풀 노드는 모든 블록을 자신의 규칙에 따라 검사합니다. 규칙을 위반한 블록은 누가 채굴했든 거부됩니다. 바로 이 점이 블록체인을 속이기 어렵게 만들고, 동시에 블록체인을 바꾸는 일을 까다롭게 만듭니다. 일부 노드는 새 규칙을, 다른 노드는 옛 규칙을 실행한다면 어떤 블록이 유효한지에 대해 의견이 갈릴 수 있습니다.
소프트포크: 더 엄격한 규칙, 기존 노드도 계속 따라간다
소프트포크는 규칙을 더 엄격하게 만듭니다. 새 규칙에서 유효한 블록은 옛 규칙에서도 여전히 유효하므로, 업그레이드하지 않은 노드도 계속 체인을 따라갑니다. 다만 새로운 제한을 스스로 적용하지 않을 뿐입니다.
Bitcoin의 주요 업그레이드는 소프트포크로 이루어졌습니다. 2017년의 SegWit은 서명을 저장하는 방식을 바꾸었고, 2021년의 Taproot는 Schnorr 서명과 스크립트에 커밋하는 새로운 방식을 추가했습니다. 기존 노드는 이 새로운 거래를 이해하지 못하더라도 유효한 것으로 보았습니다. 그래서 Taproot는 네트워크를 분열시키지 않고 도입될 수 있었습니다.
소프트포크는 일반적으로 더 안전하다고 여겨집니다. 업그레이드하지 않는 사람에게도 아무것도 망가지지 않기 때문입니다. 대신 새로운 기능을 옛 규칙 안에 들어맞도록 설계해야 하므로 기능이 더 복잡해질 수 있습니다.
하드포크: 새로운 규칙, 기존 노드는 뒤처진다
하드포크는 규칙을 완화하거나 변경하므로, 새 규칙에서 유효한 블록이 옛 규칙에서는 유효하지 않을 수 있습니다. 업그레이드하지 않은 노드는 새 블록을 거부하고 체인을 더 이상 따라가지 않습니다.
거의 모두가 업그레이드한다면 하드포크는 단순히 조율된 업그레이드일 뿐입니다. 많은 체인이 일정에 따라 하드포크를 진행합니다. Ethereum의 주요 업그레이드, Zcash의 네트워크 업그레이드, Kaspa의 프로토콜 업그레이드는 모두 생태계 전체가 함께 거쳐 가는 계획된 하드포크입니다.
상당한 규모의 집단이 업그레이드를 거부하면 그 결과는 체인 분할입니다. 포크 시점까지는 같은 기록을 공유하다가 이후 서로 갈라지는 두 개의 체인이 생겨납니다.
포크가 새로운 코인을 만들어 낼 때
체인 분할로 잘 알려진 코인들이 탄생했습니다.
- **Ethereum과 Ethereum Classic**은 DAO 해킹의 영향을 되돌릴지를 둘러싼 의견 대립 끝에 2016년에 분할되었습니다.
- Bitcoin과 Bitcoin Cash는 확장 방식, 즉 더 큰 블록이냐 SegWit을 비롯한 다른 접근 방식이냐를 두고 2017년에 분할되었습니다. Bitcoin Cash는 독자적인 체인으로 이어지고 있습니다.
분할 이후, 포크 시점에 코인을 보유하고 있던 사람은 같은 키로 통제되는 코인을 두 체인 모두에 갖게 됩니다. 공짜 돈처럼 들리고 실제로 그럴 때도 있지만, 위험도 따릅니다. 재전송 공격(리플레이 공격)은 체인들이 보호 장치를 추가하지 않는 한 한 체인의 거래가 다른 체인에서 다시 브로드캐스트될 수 있는 공격이며, 개인 키를 요구하는 사기성 "수령" 도구도 있습니다. 게다가 포크가 물려받는 것은 잔액만이 아닙니다. 같은 버그라도 양쪽에서 다르게 전개될 수 있습니다.
포크가 여러분에게 의미하는 것
- 대부분의 포크는 여러분에게 아무것도 요구하지 않습니다. 코인은 그 자리에 그대로 있고, 키는 여전히 코인을 통제합니다.
- 지갑을 업데이트해야 할 때도 있습니다. 거래나 서명 형식을 바꾸는 하드포크는 오래된 지갑 소프트웨어가 네트워크에서 거부되는 거래를 만들게 할 수 있습니다. 예고된 업그레이드 전후에는 지갑을 최신 상태로 유지하세요.
- 거래소는 포크 전후로 입출금을 일시 중단할 수 있습니다. 이는 통상적인 주의 조치입니다.
- "포크 수령" 사이트에 복구 문구를 절대 입력하지 마세요. 새 체인의 코인을 원한다면 먼저 주요 자금을 새 키로 옮긴 다음, 신뢰할 수 있는 지갑 소프트웨어로 옛 키에 접근하세요.
- 논란이 있는 분할 이후에는 인내심을 가지세요. 재전송 공격 보호와 거래소 지원이 명확해질 때까지 기다리세요.
포크와 SSP
SSP는 업그레이드 방식이 매우 다른 체인들을 지원합니다. Bitcoin의 소프트포크, Zcash 같은 체인의 예정된 하드포크, 그리고 EVM 체인의 정기 업그레이드가 그 예입니다. 업그레이드로 거래를 만들거나 서명하는 방식이 바뀌면 SSP Wallet과 SSP Key도 그에 맞춰 업데이트됩니다.
Zcash가 좋은 예입니다. Zcash 네트워크 업그레이드가 있을 때마다 모든 거래 서명이 커밋하는 값이 바뀌기 때문에, 옛 규칙에 맞춰 만들어진 지갑은 네트워크가 거부하는 서명을 생성합니다. SSP는 두 개의 서명이 필요하므로 SSP Wallet과 SSP Key 모두 새 규칙에 맞게 업데이트되어야 하며, 둘 다 업데이트되기 전까지 네트워크는 거래를 받아들이지 않습니다.
실질적인 교훈: 특히 예고된 네트워크 업그레이드 전후에는 두 앱을 모두 최신 상태로 유지하세요.
솔직한 요약
소프트포크는 규칙을 강화해 기존 노드도 계속 따라올 수 있게 하고, 하드포크는 규칙을 바꾸기 때문에 모두가 업그레이드해야 합니다. 대부분의 하드포크는 계획대로 별일 없이 끝나는 업그레이드입니다. 일부만이 체인 분할로 이어져 하나의 코인을 둘로 만듭니다.
보유자에게 포크는 행동이 필요한 경우가 드뭅니다. 지갑을 최신 상태로 유지하고, 포크된 코인을 "수령"하라며 복구 문구를 요구하는 모든 것을 경계하며, 논란이 있는 분할 상황에서는 자금을 옮기기 전에 상황이 진정될 때까지 기다리세요.


