블록체인의 PoW와 경제적인 인센티브
블록체인의 핵심은 합의라고 생각한다. 여러 합의 방법이 있을 수 있지만, 그중 가장 잘 동작하고 있는 방식은 PoW라고 생각한다.
PoW는 블록체인 네트워크에 참여한 모든 컴퓨터가 각자 랜덤한 숫자를 끊임없이 계산한다. 숫자마다 점수가 있어서, 해당 차례에 필요한 최소 점수보다 높은 점수를 계산하는 컴퓨터가 다음 블록을 생성할 권리를 얻는다.
PoW로 합의하는 방식은 그전까지 내가 생각하던 알고리즘과 달랐다. 내가 생각하는 알고리즘은 내가 전지적인 지적 설계자가 되어서 모든 요소의 트레이드오프를 고려한 뒤 적절한 방식을 결정했다. PoW는 다르다. PoW가 잘 동작하려면, 한 노드가 생성한 블록이 전체 네트워크에 잘 퍼져야 한다. 과연 한 노드 작성한 블록을 다른 노드들이 전 세계 네트워크에 잘 퍼뜨려 줄까?
블록체인 분야에서 재밌고, 또한 어려운 점은, 컴퓨터가 경제적인 주체라는 점이다. 나는 로봇도 만들어 봤고, 게임도 만들어봤고, 앱도 만들어봤지만, 아직 컴퓨터가 경제적인 주체라는 점은 고려해본 적이 없었다. 로봇은 내가 명령한 대로만 움직였다. 게임은 간혹 사람들이 해킹을 시도했긴 했지만, 해당 행동은 찾아서 막아야 했다. 블록체인에서는, 의사소통하는 규칙만 맞으면 세부적인 동작 방식은 자유로웠다. 내 노드가 생성한 블록을 다른 노드에 전달할지 말지는 다른 노드의 자유란 의미다. 누구든지 소스 코드를 수정해서 다른 동작을 만들어도 괜찮은 동네다.
PoW에서 다른 노드가 생성한 블록을 퍼뜨리는 이유는, 그것이 경제적으로 이득이 되기 때문이다. 내가 생성하게 될 미래의 블록의 점수는 해당 블록이 쌓아온 모든 역사를 포함하는 점수다. 따라서 다른 사람이 만든 하나라도 높은 블록 위에 내 블록을 쌓는 것이 이득이다. 또한 다른 사람이 만든 블록이 전체 네트워크에 잘 알려져야 한다.
블록체인 업계에서 공부하다 보면, 경제적인 인센티브를 고려하는 많은 서비스를 볼 수 있다. 서비스들이 이야기하는 알고리즘들을 공부하고, 이해하려고 하다 보면, 경제적인 부분에서 막힐 때가 많다. 정말 모두 의도한 대로 이득을 찾아 행동할까? 코너케이스로 나쁜 찟 하는게 이득이면 어떡하지. 경제적 인센티브의 예외사항들은 어떻게 찾아야 하나.