하드포크와 소프트포크

하드포크와 소프트포크

반응형

비잔티움 장군 문제는 레슬리 램포트, 쇼스탁, 피스의 1982년 논문에서 처음 언급되었다. 이 논문에서 저자들은 적군의 도시를 공격하려는 비잔티움 제국군의 여러 부대가 지리적으로 멀리 떨어진 상황을 가정했다. 각 부대의 지휘관인 동로마제국의 비잔티움 장군들은 서로 교신하면서 공격 계획을 세워야 하는데, 전령이 중간에 적군에게 사로잡힐 수도 있다. 또 일부 부대의 지휘관이 배신할 수도 있다. 그래서 공동으로 공격할 시점을 합의할 때, 서로가 서로에게 거짓말을 할 것을 두려워하여 합의에 이르지 못하게 되었다. 이렇듯 서로 협력이 필요한 상황에서 신뢰가 부족하여 합의에 이르지 못하는 상황을 ‘비잔티움 장군 문제’라고 부른다

비트코인 시스템은 이 비잔티움 장군 문제를 ‘작업증명’이라는 장치를 통하여 해결하였다. 전달받은 메시지를 조작하면 해시값이 변하기 때문에 정상적인 메시지로 위장하기 위해서는 조작한 내용에 대응하는 논스값을 구하고 그 블록의 바로 다음에 이어지는 블록의 논스값도 다시 계산해야 한다. 이런 조작을 하는 데에는 시간이 걸리기 때문에 메시지를 조작하는 장군의 메시지가 정상적인 메시지보다 더 먼저 도착할 수는 없다.

비잔티움 문제가 진정으로 의미하는 것은 어떻게 신뢰가 없는 참여자들 사이에서 신뢰를 획득하느냐 하는 것이다. 앞서 설명한 바와 같이 비트코인은 시간의 개념을 도입하여 조작을 어렵게 했다. 비트코인 시스템의 창시자 사토시는 여기에 ‘채굴’이라는 보상 개념을 추가로 도입했다. 채굴은 다수를 배신하지 않고 다수의 의견에 따를 때 보상을 받을 확률이 높아진다는 개념이다. 즉 비잔티움 장군 중 배신을 고민하는 소수는 다수를 따름으로써, 즉 배신하지 않음으로써 손해를 보지 않고 이익을 얻을 수 있는 것이다.

애덤 스미스는 사람들의 행동을 정부가 규제하지 않아도 각각의 경제 주체가 ‘이익의 최대화’라는 이기적인 동기에 따라 행동하면, 결과적으로 바람직한 자원 배분이 실현된다고 주장하였다. 물론 현실 세계에는 여러 가지 제약이 있으므로 애덤 스미스의 생각은 경제학자의 교과서적인 이야기로 여겨졌다. 그런데 비트코인은 컴퓨터 연산능력을 이용한 ‘작업증명’이라는 장치와 인터넷 IT기술을 이용하여 애덤 스미스의 주장이 실현될 가능성을 보여줬다.

이 발견이 대단한 이유는 중앙의 기능이나 통제 없이 참여자들의 협력을 통해 운영되는 비트코인 시스템이 참여자의 유토피아적 ‘선의’가 아닌, 참여자가 최대한의 이익을 선택하려는 합리적인 지성으로도 충분하다는 점을 보여주었다는 것이다. 비트코인 운영 시스템은 신뢰가 없는 참여자들 사이에서 신뢰를 획득할 수 있도록 ‘비잔티움 장군’문제를 해결했다. 이렇게 시간과 보상의 개념을 이용하여 신뢰가 없는 참여자들 사이에서 신뢰를 획득한 블록체인 시스템은 사회의 다른 시스템에도 적용할 수 있으므로 더 의미가 있다.

블록체인은 탈중앙화 된 네트워크이기 때문에 ‘노드’라고 알려진 네트워크의 참여자들은 원활한 협업을 위해 규칙(rule)을 따라야 한다. 이 규칙을 ‘프로토콜(protocol)’이라 한다

프로그램은 오류를 수정하고 성능을 향상시키기 위해 지속적인 업데이트를 필요로 한다. 블록체인에서도 이런 업데이트가 일어나는데, 이때 기존의 프로토콜을 따르려는 블록과 새로운 프로토콜을 따르려는 블록으로 갈라진다. 그래서 채굴하는 진영의 논리에 따라 암호화폐가 여러 갈래로 분기된다. 한 줄기에서 나와 여러 줄기로 갈라지는 모양이 식탁에서 사용하는 포크의 모습과 같아서 이를 포크‘Fork’라 한다. 이때 노드들은 길이가 긴 쪽을 ‘참’으로 보고 채굴(POW, 작업증명)을 수행한다.

암호화폐의 분기가 일어날 때, 기존 암호화폐를 소유하고 있던 소유자들은 기존 암호화폐에 새롭게 분기된 암호화폐를 추가로 받으니 손해 보지 않는다. 가장 대표적인 암호화폐인 비트코인과 이더리움이 분기된 예이다. 비트코인은 비트코인골드와 비트코인캐시로 분기했고, 이더리움은 이더리움과 이더리움 클래식으로 분기했다. 이렇게 분기하는 것을 ‘하드포크’ 또는 ‘소프트포크’라고 부른다.

하드포크와 소프트포크의 차이점은 무엇일까? 고려대학교 김승주 교수는 하드포크와 소프트포크를 다음과 같이 쉽게 설명하고 있다.

“비트코인과 같은 암호화폐들은 탈중앙화를 위해 블록체인이라는 분산합의(distributed consensus)메커니즘을 이용한다. 즉 어떤 거래가 일어났을 때 중앙의 은행 같은 기관이 아닌 구성원들이 거래 내역이 옳다는 것에 동의를 해줘야 한다. 그런데 어떤 것이 옳은지 그른지를 따지려면 반드시 규칙이 있어야 한다. 규칙에는 합의 메커니즘에 적극적으로 참여하는 구성원들에 대한 성과보수 지급 방안 같은 것들도 들어 있다. 포크(Fork)는 규칙이 바뀐다는 뜻이다. 하드포크(Hard fork)는 규칙의 전면 개정을 뜻하고, 소프트포크(Soft fork)는 규칙의 소폭 개정을 뜻한다”

소프트포크에서는 기존의 규칙에서 큰 틀은 바뀌지 않고 부분적인 업데이트만 일어나기 때문에 기존 블록체인과 새롭게 분기된 블록체인의 호환이 가능하다. 마치 MS오피스나 한컴오피스 같은 소프트웨어의 구 버전과 신 버전이 호환되는 것과 같다. 하드포크는 블록의 규칙을 근본적으로 바꾸는 업데이트이다. 그러므로 분기되기 이전의 블록체인과 새롭게 분기된 블록체인의 호환은 불가능하다. 마치 안드로이드와 아이폰의 운영체계가 서로 호환되지 않는 것과 같다.

.

from http://farmstory.tistory.com/11 by ccl(A) rewrite - 2021-12-28 20:00:31