트랜잭션을 하나의 블록이라는 단위로 묶고, 그 블록에는 이전 블록의 해쉬값을 넣어서 위조하려면 체인처럼 연결된 모든 블록을 위조해야 하고… 이런 기본적인 얘기는 대부분의 사람들이 알고 있어서 자세히 설명하지는 않겠다. 블록체인의 혁신은 자료구조에서 온다고 얘기하기에는 다른 의미가 훨씬 크기 때문이다. 블록체인이 제공한 놀라운 기술은 조작이 불가능하고 트랜잭션의 처리가 투명해서 누구나 신뢰할 수 있는 데이터베이스 (장부라고 부르기도 한다)를 구현한 것이다. 데이터베이스 유지에 참여하는 모든 사람들이 믿을 수 있는 제 3의 신뢰기관이 필요하지 않다는 점과 다수의 익명의 사람들이 참여해 유지한다는 점 때문에 혁신으로 평가받는 이유다. 이는 기존에는 불가능했던 기술이다. 이제 이 두 가지 목표가 왜 어려운지 알아보자.
블록체인은 다수의 사람들이 똑같은 데이터를 네트워크를 통해서 항상 동기화 하고 있는 중복성이 매우 높은 데이터베이스다. 수만 개의 노드가 같은 데이터를 유지하기 때문에 공격자가 몇 개의 노드만 공격해서는 데이터베이스를 수정할 수 없다. 즉, 블록체인의 신뢰는 일차적으로는 본질적으로 수많은 노드가 같은 데이터를 중복해서 가지고 있다는 데서 온다. 그럼 많은 노드가 중복해서 같은 데이터를 갖도록 하는게 뭐가 그리 어려운 문제일까? 블록체인 데이터베이스에 저장되는 데이터는 경제적인 가치를 가지므로 이해관계가 각자 다른 다수의 노드들이 참여할 수 밖에 없는 공개 블록체인의 특성상, 서로 자신에게 이익이 되는 방향으로 블록체인을 수정하려고 할 것이다. 결국 네트워크에 존재하는 데이터베이스의 버전이, 최악의 경우에는 노드의 수 만큼 될 수 있다는 뜻이다.
이런 이해 관계의 불일치에도 불구하고 네트워크에는 하나의 유일한 블록체인만 존재해야한다. 어떻게 해결할 수 있을까? 답은 간단하다. 여러 개의 데이터베이스를 놓고 어떤 데이터베이스를 참여자의 대다수가 동의하는 체인(메인 체인)으로 할지를 다수결 투표를 통해 결정하면 된다. 모두 동의했던 메인체인이 갈라져서 두 개 이상의 체인이 생성될 경우, 다수결 투표를 통해서 그 중의 하나를 메인 체인으로 정하고, 나머지 체인은 버리기로 합의하는 과정이므로 이를 합의(Consensus) 알고리즘이라 부른다. 이렇게 체인이 중간 중간 갈라지는 이유는 크게 두 가지인데, 첫번째는 이중지불이라는 공격에 의해 모순되는 트랜잭션을 가지는 두 개의 체인이 생기거나, 두번째는 네트워크 지연에 의해서 생긴다. 어떤 경우든 다수결 투표를 통해 하나의 체인만을 선택하는 과정이 필요하다. 다수결 투표야 제출된 투표결과를 세기만 하면 될테고, 현대의 초고속 인터넷을 생각하면 쉽게 할 수 있을테니 문제가 해결된 것 아닌가? 그렇지 않다. 투표를 어떻게 할 것인가 하는 문제가 남는다. 앞서 몇 번 언급했던 것처럼, 이 문제가 어려운 것은 이 투표를 하는 주체가 익명의 노드들이며 이들을 중재하는 중앙관리 기관이 없기 때문이다.
신뢰기관 없이 익명 노드끼리 다수결 투표를 할 수 있을까?
익명노드들 사이의 다수결 투표는 어렵다. 우리는 4년마다 또는 5년마다 투표를 한다. 비밀투표를 하기 때문에 누구도 내가 어떤 후보에게 표를 던졌는지 알지 못한다. 따라서 비밀투표라는 행위를 구현하는 것이 어렵지 않다고 생각한다. 하지만 이는 제 3의 신뢰기관 (선관위)이 개입했기 때문에 쉽게 구현이 가능한 것이다. 누구나 참여할 수 있는 블록체인 네트워크에서는 제 3의 신뢰기관이 없다. 아무나 네트워크에 연결할 수 있는 컴퓨터에 소프트웨어 다운받아서 설치하면 노드가 된다. 따라서 비밀투표를 구현하기 오히려 쉬워 보인다. 하지만 한 사람이 한 표만 행사하도록 통제하는 운영주체가 없다는 점을 상기하자. 결국 한 사람이 하나의 노드만 운영하고 있을거라고 믿을 수 없는 상황에서, 즉 한 사람이 여러 표를 행사할 수 있는 상황에서 다수결 투표에 기대서 합의를 이뤄야 한다는 얘기다. 당연히 제대로 된 투표를 할 수 없다. 그럼 블록체인의 합의과정에서 왜 한 사람이 굳이 여러 표를 행사하려고 할까? 한 사람이 여러 표를 행사할 경우 블록 보상 확률을 높일 수 있기 때문이다. 여러 개의 체인에 동시에 투표한다면 어떤 체인이 다수결로 채택되더라도 항상 블록 보상을 받을 수 있기 때문에, 채굴자가 수익을 생각한다면 여러 표를 여러 개의 체인에 동시에 투표하는 것이 유리하다. 이렇게 완전히 개방된 블록체인에서의 기술적인 혁신은 익명의 노드(채굴자) 간의 다수결 투표를 구현하는데 있다. 또한 합의된 결과를 쉽게 번복할 수 없는 장치도 필요하다. 더우기 믿을 수 있는 중앙기관이 없는 상태에서 이 목표를 달성해야 하므로 더 어려운 문제가 된다.
작업증명 (Proof of Work)
이 문제를 비트코인에서는 작업증명이라는 것으로 해결했다. 한 사람이 여러개의 노드를 운영하면서 자신의 블록 보상 확률을 높이기 위해 여러 체인에 투표(채굴이라고 부르는 PoW 계산)한다고 가정해 보자. 어떤 체인이 메인체인으로 선택 되더라도 채굴자는 항상 보상을 받을 수 있을 것 같지만, 이는 해쉬파워를 고려하지 않아서 나오는 잘못된 결론이다. 즉 한 사람이 다중 투표를 하려면 자신의 해쉬파워를 나눠서 여러 체인을 동시에 채굴해야 하는데, 이럴 경우 각 체인에서 경쟁하는 다른 노드들과의 PoW계산 경쟁에서 질 확률이 높아진다. 결국 어떤 체인에서의 채굴도 성공하지 못하게 된다는 뜻이다. 즉 작업증명 네트워크에서 채굴자가 보상 받을 확률을 높이고 싶다면 다중 투표를 하는 전략 보다 자신이 가진 해쉬파워를 모두 집중해서 하나의 체인에 투표하는 편이 유리하도록 사토시가 작업 증명을 도입한 것이다. 이는 투표의 관점에서 보면 한사람은 하나의 노드로 동작하는 것이 경제적 보상을 최대한 높일 수 있는 전략이 되므로, 중앙기관 없이도 익명의 노드로 구성된 네트워크에서 다수결 투표를 구현할 수 있다는 의미가 된다. 엄밀히 말하면 다수결 투표를 정확히 구현한 것은 아니고, 다수결 투표를 최대한 근사한 알고리즘이라고 볼 수 있다. 또한 이렇게 합의한 결과를 쉽게 번복하지 못하도록 하는 장치가 필요한데, 많은 양의 계산이 필요한 작업증명이 체인에 누적될 수록 합의를 번복하기 어렵다는 점을 이용했다. 이는 우리가 작업증명 기반의 블록체인을 다수의 사람들이 합의하고 서명한 증거로 간주할 수 있는 이유가 된다.
요약하자면, 작업증명을 통해 중앙 관리 기관없이 아주 많은 수의 익명 노드로 이루어진 네트워크에서 다수결 투표를 꽤 빠른 속도로 근사한 것이 결국 비트코인이 가져온 혁신이라고 볼 수 있다. 비트코인 이전에는 불가능하게 여겨졌던 익명 노드 사이의 다수결 투표를 통해 미들맨 없이도 익명의 노드들 간에 기술적인 방법으로 신뢰를 확보하며 플랫폼 서비스를 할 수 있는 기반이 마련된 것이다. 물론 이를 위해서는 해결해야 할 기술적, 경제적, 의사결정 구조적 측면의 문제들이 많이 남아있다.
그루트코리아(GruutKorea)는?
완전한 탈중앙화 P2P(Peer 2 Peer) 공개 원장 서비스를 제공하는 블록체인 메인네트워크 개발사다. 그루트 (Gruut)는 다양한 비즈니스에서의 풀뿌리 운동(grassroots movement)을 의미하며 그린 색은 무한한 성장·안전·삶의 균형 등 그루트가 추구하는 비즈니스 모델의 상징성과 부합한다. 그루트 코리아는 현실 경제에서 일하는 비즈니스 참여자들에게 믿을 수 있는 트랜잭션을 제공함으로써 네트워크를 운영하는 피어들에게 거래 수수료를 낮춰주는 새로운 비즈니스 환경을 제공하는 것을 목표로 한다.
관련글 보기 : [양대헌칼럼]프라이빗 컨소시엄 체인의 의미는
기고문은 블록미디어의 의견과 다를 수 있습니다.