큰 그림이 필요한 순간

블록체인에 대한 전반적인 이해가 필요했다. 이 블로그 의 개요를 짜던 중 PoW와 PoS를 비교할 일이 있었는데 아무리 구글링을 해봐도 이해 못했다. 저 개념이 이더리움 Merge의 핵심이라 이를 모르는 상태로 글을 완성시킬 수는 없었다. 잠시 쓰던 블로그를 접어두고 PoW와 PoS가 블록체인에서 어느 역할을 하는지 알아보기로 했다.

이 글은 이 ETRI 발간물 을 중심으로 썼다. 구글에 검색하면 무수히 많은 PoW와 PoS를 비교하는 글들이 있었지만 그 내용들이 너무 넓거나 좁게 서술되어 있었고, 다들 용어를 정의하고 현상을 설명하는 방법들이 각자 달랐다. 그러던 중 저 글을 만나게 되었는데, 공공기관에서 연구하시는 박사님들이 작성하신 글이라 믿음이 갔다.

시작에 앞서: 이 글의 목적은 블록체인과 PoW/PoS의 관계를 이해하기 위함이며, 저자가 이해한 수준의 개념과 용어로 서술하였다. 정확하고 자세한 설명이 필요하다면 다른 글들을 참고바람.

탈중앙화

장부에는 내가 얼마만큼의 돈을 갖고 있는 지 적혀있다. 입출금이나 누군가에게 송금을 하게 된다면 장부를 알맞게 수정해야 한다. 그 장부를 관리하는 주체는 믿을만한 은행이다. 누군가가 은행 없이 우리끼리 장부를 관리하자고 한다. 은행처럼 어느 특정한 중심을 없애자라는 것이 ‘탈중앙화’이다.

블록체인

우리끼리 관리하는 장부는 그 방식이 좀 특이하다. 장부를 수정할 일이 생기면 그 내용을 블록에 기록하고 이들을 이어 붙이게 된다. 그 모습이 사슬과 같다고 해서 ‘블록체인’ 이라는 이름이 붙여졌다.

블록체인이 저장되는 공간은 네트워크에 참여하는 모든 사람들, 즉 모든 노드(Node)이다. 여러 노드들이 같은 내용의 장부를 들고 있게 되는데, 여기서 문제가 발생한다. 새로운 블록들이 아무렇게나 만들어진다면 네트워크 상에 일관된 장부를 유지하기가 어려워진다.

합의 알고리즘

블록 생성에 있어 일관성 유지가 관건이다. 노드들이 저마다 만든 블록들을 그냥 이어 붙이게 할 수는 없다. 이에 블록체인 생태계는 블록 생성에 대한 규칙을 갖게 되는데, 이것이 바로 ‘합의 알고리즘’이다. 이는 여러 사항들에 대한 의사결정 방법을 포함하는데, 그 중에서 살펴볼 것은 두 가지이다.

  1. 블록을 생성할 노드는 어떻게 정하는가?
  2. 노드 간 다른 블록이 만들어졌을 때 어떻게 할 것인가?

블록을 생성할 노드를 정할 때 고려해야 할 점은 많다. 만약 소수의 노드만 계속해서 만든다면 탈중앙화하는 의미가 없다. 그렇다고 아무 노드나 만들 수 있게 한다면 해커가 블록체인 생태계를 손쉽게 장악할 수 있다.

하나의 블록 다음으로 여러 개의 새로운 블록들이 만들어지는 것을 ‘Fork’라고 한다. 이는 블록체인 생태계 운영에 다수의 노드가 개입하는 특성 상 불가피한 문제이다. 또한 해커가 블록체인 생태계를 어지럽히기 위해서 일부러 Fork를 만들 수도 있다.

이처럼 합의 알고리즘은 수 많은 의사결정 방법의 집합이라고 말 할 수 있다. 지금부터는 블록을 생성할 노드를 정하는 방법에 대해 집중해보자.

블록 생성자

블록을 생성할 노드, 즉 블록 생성자를 정하는 방법은 좀 특이하다. 가장 먼저 문제를 맞춘 노드가 블록 생성자가 된다. 여기서 무수히 많은 물음표가 발생하는데 천천히 정리해보자.

  • 누가 문제를 내는가? 블록체인 생태계.
  • 무슨 문제가 나오는가? 어떠한 조건을 충족하는 값 찾기.
  • 왜 블록을 생성하고 싶을까? 암호화폐와 같은 인센티브를 주기 때문.
  • 어떻게 푸는가? 순수 노가다. 해시 함수 에 무작위 값을 넣어서 목표값 이하로 나오는지 계속 확인.
  • 빨리 풀려면? 좋은 성능의 컴퓨터일 수록 맞출 확률이 올라감.

소위 “비트코인을 채굴한다”는 말은 노드들이 무작위 연산으로 목표값을 찾는 작업이라고 할 수 있다. 이 작업을 하는 이유는 블록을 생성하기 위함이며 그래야만 비트코인을 인센티브로 받을 수 있기 때문이다.

노드들의 주된 관심사는 정답을 맞출 확률을 올리는 방법이다. 이는 블록 생성자를 정하는 규칙에 전적으로 달려있다. 대표적으로 PoW와 PoS가 있다.

PoW vs PoS

PoW (Proof of Work)는 컴퓨팅 파워에 따라 정답을 맞출 확률이 달라진다. 노가다만이 문제를 풀 수 있는 유일한 방법이기에 다른 노드들보다 더 많은 연산을 할 수 있어야 조건에 맞는 값을 먼저 발견할 수 있다. 그러므로 노드들은 더 많은 컴퓨팅 파워를 확보하기 위해 노력한다.

PoS (Proof of Stake)는 계좌 잔고에 따라 정답을 맞출 확률이 달라진다. 노가다를 하는 건 같지만 노드 별로 잔고가 많을 수록 더 넓은 조건, 즉 쉬운 문제를 풀게 된다. 그러므로 노드들은 자신의 잔고를 늘리기 위해 노력한다.

이러한 방법들은 저마다의 문제점을 갖고 있다. PoW의 잘 알려진 문제는 에너지 낭비이다. 노드들은 더 많은 인센티브를 얻고자 많은 장비와 전기를 소비하게 된다. PoS는 Nothing at Stake(위험이 없는 상태)라는 대표적인 문제가 있다. 인센티브를 얻기 위해선 더 많은 잔고가 필요할 뿐, PoW처럼 무언가를 낭비하지 않으니 블록체인 생태계에 해로운 행동들을 마음대로 할 위험이 있다는 것이다.

참고: PoW에서 PoS로의 전환을 선택한 이더리움에 대한 논의는 이 블로그 에서 이어진다.

정리를 마치고 나서

탈중앙화에 대한 여정

블록체인 생태계를 만드는 사람들은 탈중앙화가 가장 큰 고민이다. 하나의 강력한 노드가 모든 것을 관리하면 복잡할 것이 하나도 없다. 하지만 블록체인은 관리의 주체가 분산되어 있기 때문에 블록체인과 같은 자료구조나 합의 알고리즘 등 여러 개념들이 새롭게 고안되었다. 그리고 블록체인 생태계를 유지하는 일은 결코 가볍지 않다. 더 복잡하고, 더 많은 에너지가 필요하고, 더 많은 숨겨진 위험을 감수해야 한다. 그럼에도 불구하고 블록체인 생태계가 유지되는 이유는 바로 탈중앙화라는 비전이 있기 때문이다.

문제 발견과 해결책 제시의 반복

블록체인은 이론적으로나 기술적으로나 끊임없이 발전해오고 있다. 탈중앙화를 위해 블록체인이라는 형태로 장부를 관리하기 시작했다. 그러다보니 장부의 일관성 유지가 어려워지니 합의 알고리즘이 등장했다. 어떠한 문제를 완벽하게 해결하는 방법은 없었다. 그러다보니 새로운 해결책이 기존의 해결책의 효과를 반감시키기도 하며, 또다른 문제를 낳기도 한다. 거의 모든 것이 Trade-off에 놓인 만큼 세상에 완벽한 블록체인 생태계는 없다.

부록: 참 어려운 구글링

이번에 정리하면서 구글링이 제일 어려웠다. 인터넷에는 블록체인과 관련된 정말 많은 글들이 존재한다. 하지만 서로 다른 목적을 위해 쓰인 글들은 그 논의의 수준과 범위가 천차만별이었다. 그래서 나는 이 글이 상업성이 있는 지, 저자의 이해 수준이 얼마나 되는 지, 저자가 공인된 신분이나 기관에 속해있는 지 등을 면밀하게 따져보면서 참고했다. 그리고 이 모든 정보들을 PoW와 PoS 비교라는 나만의 목적에 맞게 잘 다듬어 보았다.