brunch

9. 하드포크와 소프트포크 개념

합의 기반 시스템의 진화와 분열 과정

시리즈 1편부터 정주행 하기 -> [쉽게 배우는 비트코인 작동원리]




비트코인의 규칙을 바꿀 수 있을까?


비트코인 네트워크는 불변성이라는 마케팅 용어로 큰 성장을 이뤘다. 2100만 개의 한정된 채굴량과 그 누구도 장부를 차단할 수 없는 검열저항성은 비트코인의 철학 그 자체라고 봐도 과언이 아니다.


그러나 비트코인 네트워크 또한 합의를 통해 규칙 수정이 가능하며, 15년 동안 수많은 진화와 분열의 과정을 통해 시가총액 약 2조 달러를 달성하는 네트워크로 성장할 수 있었다.


비트코인 네트워크를 수정할 수 있는 주된 방식인 하드포크와 소프트포크에 대해 알아보자.



포크란 무엇인가?


[8-1. 채굴 합의 규칙과 51% 공격(상)]에서는 블록체인 포크 개념의 일부분을 다뤘다.


포크는 같은 장부 역사를 공유하면서도 특정 분기점으로 인해 서로 다른 장부가 생겨나는 현상이다.

Untitled%20design%20(14).png image source: moonpay

8-1에서 언급된 포크는 동시에 채굴된 블록들이나 51% 공격으로 인해 체인이 두 갈래로 나뉘는 현상이다.


하지만 이 글에서 다루게 될 포크는 규칙 변경으로 인해 발생하는 분기점으로 이해하면 된다. 분기 이후에 생겨난 장부들은 서로 호환될 수도, 아닐 수도 있다.




하드포크(Hard Fork)



하드포크의 정의


하드포크(Hard Fork)는 네트워크를 구성하는 개발자, 채굴자, 그리고 풀 노드 운영자 등 검증의 주체들이 네트워크의 규칙을 바꾸는 방식 중 하나이다.


하드포크만의 특별한 점이 있다면 포크 이후 생성되는 장부는 기존 규칙을 탈피한 규칙이므로 이전 장부와 호환되지 않는다.


예를 들어 모두가 빨간 티셔츠를 입고 참석해야 하는 파티가 있다고 가정해 보자.

7I%3D

만약 파티 참석자들 중 파란 티셔츠를 입고 싶은 그룹이 있다면, 그들은 파티장을 떠나 자신들만의 장소에서 파란 티셔츠를 입은 사람만 입장할 수 있는 새로운 파티를 열어야 한다.


이 두 파티를 동시에 즐길 수 있는 방법은 없다.


S2QlJ9QyGuiIOnbzokEFqaVmt3I.jpg image source: freepik.com

하드포크에서 주목할 점은, 분할 이전의 장부를 공유한다는 사실이다.


사진처럼 만약 하드포크 이전에 노란색 블록체인에서 1개의 코인을 보유하고 있었다면, 포크 이후 새로 생긴 빨간색 블록체인에도 1개의 코인이 생긴다.


다만 두 체인 위의 코인은 동일한 교환 비율을 지니기 않기 때문에 사용자는 자신이 매도하고자 하는 체인의 코인만 팔거나 두 체인 모두를 서로 다른 코인으로 간주하고 보유할 수 있다.



하드포크 사례: 비트코인 캐시(BCH)


비트코인에서 갈라져 나온 비트코인 캐시(BCH)는 2017년에 일어난 블록사이즈 전쟁의 결과로 만들어진 하드포크 블록체인이다.


당시 비트코인의 일부 채굴자와 사용자들은 더 저렴하고 빠른 거래를 위해 기존의 1MB 크기 제한을 넘는 블록을 요구하며 체인을 갈라냈다.

9895.png.webp image source: ecos

그 결과 업그레이드에 찬성하는 쪽은 BCH, 기존 1MB 규칙을 고수하는 쪽은 BTC로 나뉘어 서로 다른 장부를 유지하게 되었다.


포크 이전에 비트코인을 보유하고 있었다면 동일한 양의 비트코인 캐시가 생기므로 양쪽 진영은 생겨난 상대방 진영의 코인을 매도하고 채굴 공격을 감행하는 등 정본(本)으로 채택되기 위한 세력 다툼을 벌였다.


결국 기존 장부인 비트코인이 자연스럽게 승기를 잡으면서 현재의 모습에 이르게 되었다.




소프트포크(Soft Fork)



소프트포크의 정의


소프트포크(Soft Fork) 또한 하드포크처럼 네트워크를 구성하는 개발자, 채굴자, 그리고 풀 노드 운영자 등 검증의 주체들이 네트워크의 규칙을 바꾸는 방식 중 하나이다.


소프트포크가 하드포크와 다른 점은 새로운 체인이 갈라져 나오지 않는다는 점이다.


모두가 빨간 티셔츠를 입고 와야 하는 파티 예시로 다시 돌아가보자.


빨간 티셔츠를 입은 참석자들 일부는 서로를 알아보기 위해 파란 바지를 입기로 했다.

qzFUb4zjbFqD2J769mpGvXCVNhYKIbC564%3D

파란 바지를 입는다고 해서 규칙을 어기는 것은 아니기 때문에 이들은 계속 파티를 즐길 수 있다. 파란 바지는 빨간 티셔츠라는 큰 규칙 안에 있는 선택적 세부 규정으로 존재하게 된다.


이처럼 소프트포크에서는 업그레이드가 기존 규칙과 호환되기 때문에 체인이 갈라지지 않는다.


따라서 업그레이드에 참여하지 않는 노드라 하더라도 소프트포크로 인해 새롭게 생겨난 거래를 그대로 검증할 수 있다.



소프트포크 사례: 세그윗(SegWit)


세그윗(SegWit)은 2017년에 도입된 비트코인의 대표적인 소프트포크 중 하나이다.


분리된 서명(Segregated Witness)이라는 본래 뜻을 지닌 세그윗은 비트코인의 한정적 블록 공간을 더 효율적으로 사용할 수 있게 도와준다.

SegWit-Before-And-After.png image source: River
세그윗에 대한 보다 깊은 기술적인 설명은 추후 다른 글에서 다룰 예정입니다.

사진에 나온 내용처럼 기존의 블록에서는 거래 데이터와 해당 거래의 서명 데이터가 혼재했다.


더 많은 거래를 담기 위해 1MB로 한정된 비트코인의 블록 크기를 늘리는 것은 기존 규칙을 깨는 하드포크가 필요했다.


그래서 당시 비트코이너들은 서명 데이터(ScriptSig)를 거래 본문에서 분리하여 따로 관리하는 우회 방식을 고안해 냈다.


기술적으로는 기존 풀 노드들도 세그윗 이후 거래들이 담긴 블록을 형식상 유효한 블록으로 받아들이기 때문에, 분기점을 형성하는 하드포크를 진행하지 않아도 이 기능을 점진적으로 도입할 수 있었다.


이처럼 세그윗은 기존 규칙을 깨지 않으면서 새로운 기능을 덧붙인 변화였기에, 소프트포크라는 방식으로 비트코인 네트워크 전체에 자연스럽게 스며들었다.



비트코인의 규칙은 바꿀 수 있다. 그러나 그 과정은 기술의 문제보다 신뢰의 문제에 더 가깝다.


포크의 핵심은 기술이 아니라, 얼마나 많은 사람이 새로운 규칙을 따르느냐에 있다.

keyword
매거진의 이전글8-2. 채굴 합의 규칙과 51% 공격(하)