비트코인캐시, 비트코인SV, 비트코인골드, 그리고 비트모빅까지, 지금까지 다뤄온 여러 프로젝트가 공통적으로 “하드포크로 태어났다”는 설명을 달고 있었습니다. 정작 하드포크가 정확히 무엇이고, 왜 소프트포크와 다른지는 짚고 넘어가지 않았습니다. 이번 글에서 그 기초를 다집니다.
포크(Fork)란
블록체인은 하나의 규칙을 모든 참여자가 똑같이 따를 때만 하나의 체인으로 유지됩니다. 그런데 시간이 지나면서 이 규칙을 바꿔야 할 필요가 생깁니다. 성능을 개선하거나, 보안 취약점을 고치거나, 아예 철학이 다른 방향으로 가고 싶어하는 그룹이 생기기도 합니다. 규칙을 바꾸는 이 작업을 ‘포크(fork)’라고 부릅니다. 포크는 크게 두 종류로 나뉘는데, 기존 규칙과 새 규칙이 서로 호환되는가가 그 기준입니다.
소프트포크 — 기존 규칙 안에서 조이는 변화
소프트포크는 규칙을 더 엄격하게 만드는 방향의 변화입니다. 예전 규칙에서는 허용됐던 것 중 일부를 이제 허용하지 않는 식입니다. 중요한 건 이렇게 조여진 새 규칙을 따르는 블록이, 업그레이드하지 않은 예전 노드가 보기에도 여전히 유효한 블록으로 인식된다는 점입니다. 비유하자면 “모든 차량 통행 가능”이던 도로를 “승용차만 통행 가능”으로 좁히는 것과 같습니다. 승용차만 다니게 해도 그 도로는 여전히 원래 도로 규칙(우측통행 등) 안에 있습니다. 업그레이드하지 않은 참여자도 새 블록을 보고 “규칙 위반은 아니다”라고 판단할 수 있어, 네트워크가 계속 하나로 유지됩니다. 2017년 비트코인의 세그윗(SegWit) 업그레이드가 대표적인 소프트포크 사례입니다.
하드포크 — 이전 규칙과 양립할 수 없는 변화
하드포크는 반대로 규칙을 완전히 바꾸거나 확장하는 변화입니다. 새 규칙을 따르는 블록이 예전 규칙으로는 아예 무효로 판정됩니다. 비유하자면 “승용차만 통행 가능”이던 도로를 “이제 좌측통행으로 바꾼다”고 규정하는 것과 같습니다. 이건 조이는 게 아니라 근본 규칙 자체를 바꾸는 것이라, 업그레이드하지 않은 참여자는 새 블록을 아예 인식하지 못하거나 위반으로 판정합니다. 그 결과 네트워크에 참여한 모든 노드가 예외 없이 업그레이드하지 않으면, 체인이 둘로 완전히 갈라집니다. 이게 바로 비트코인캐시, 비트코인골드, 비트모빅이 태어난 방식입니다. 블록 크기를 키우거나, 채굴 알고리즘을 바꾸거나, 아예 별도의 화폐 정책을 세우는 식의 근본적 변경은 소프트포크로는 불가능하고 하드포크가 필요합니다.
왜 이 차이가 중요한가
소프트포크는 네트워크를 하나로 유지한 채 점진적으로 개선할 수 있다는 장점이 있습니다. 반면 하드포크는 원하는 방향으로 완전히 새롭게 설계할 수 있다는 자유를 주지만, 그 대가로 기존 커뮤니티가 두 갈래로 쪼개질 위험을 감수해야 합니다. 실제로 하드포크로 태어난 체인은 원본 체인의 코드와 그때까지의 거래 기록을 그대로 물려받으면서도, 그 이후로는 완전히 독립적인 발행량과 규칙을 갖게 됩니다. 비트모빅이 2019년 비트코인 특정 블록에서 하드포크로 갈라져 나오면서, 그 시점까지 비트코인을 보유했던 주소가 동일한 수량의 BMB를 자동으로 갖게 됐다는 설계도 바로 이 하드포크의 특성(과거 기록을 그대로 물려받되 그 이후는 독립) 때문에 가능했던 것입니다.
마치며
소프트포크와 하드포크는 결국 “얼마나 근본적으로 규칙을 바꾸는가”의 문제로 요약됩니다. 조이는 변화는 네트워크를 하나로 유지하고, 갈아엎는 변화는 새로운 체인을 낳습니다. 어떤 프로젝트가 “하드포크로 탄생했다”는 설명을 볼 때마다, 이제 그게 정확히 어떤 의미인지 그림이 그려지실 겁니다.
이 글이 도움이 되셨다면 북마크해두세요. Web3와 크립토의 핵심 개념들을 쉽게 설명하는 글을 계속 업로드할 예정입니다.