블록체인 이야기 2 – 작업증명(PoW, Proof-of-work)

기반기술연구소 Mobile WG 김정훈 선임연구원

 

작업증명(PoW, Proof-of-work)을 설명드리기 전에 이전 글에서 말씀드린 비잔틴 장군의 문제를 다시 한 번 살펴보겠습니다.
비잔틴 장군들이 적군의 성을 공격하기 위해 합의하는 문제로 가정된 상황은 아래와 같습니다.

1. 각 장군들이 일정 비율 이상 합동 출병해야 적에게 승리할 수 있음
2. 각 장군들은 전령을 통해 한 번에 일제히 공격 가능한 시간을 연락할 수 있지만 기타 사고 등으로 인해 전령의 연락이 불가능할 수 있음
3. 각 장군들은 가장 근처의 장군에게 연락 가능함
4. 각 장군들 중 배신자가 존재하며 배신자는 실제 메시지와 다른 공격 시간으로 위조가 가능

어떻게 하면 배신자와 각종 사고의 위험으로부터 적에게 승리를 할 수 있을까요?
작업증명(PoW, Proof-of-work)을 위의 문제에 빗대어 설명해보겠습니다.

 

3명의 장군이 있고 전령의 메시지는 암호화를 통해 전달되며 암호화 하는데 걸리는 시간은 10분이며 암호화 시 10분이 걸렸다는 증표와 함께 메시지를 전달한다고 가정합시다.

1번 장군은 새벽 1시에 공격을 하자라는 메시지를 10분동안 암호화하여 바로 옆 2번 장군에게 전달합니다.
2번 장군은 1번장군의 메시지를 바로 확인 후 1번 장군의 메시지와 자신의 메시지를 암호화 하여 새벽 1시에 공격을 하자고 3번 장군에게 전달합니다.
3번 장군도 2번 장군의 메시지를 바로 확인하여 문제 없이 모두 새벽1시에 공격을 하기로 하면 쉽게 공격에 성공하게 됩니다.

 

하지만 배신자가 존재한다면 얘기는 달라집니다.

만약 2번 장군이 3번 장군에게 새벽 1시가 아닌 오후 1시로 전달하게 된다면 3번 장군이 잘못 알아 공격에 실패하게 됩니다.

여기서 가장 중요한 알고리즘은 10분의 시간을 들였다는 증거를 포함하고 있다는 것과 이전 메시지 내역들을 연결해서 보내야 한다는 점입니다.
2번 장군이 배신자라면 10분동안 암호화 하며 동시에 이전 메시지들을 모두 바꿔 보내야 하는데 이것은 사실 불가능하다고 보고 있기 때문입니다.

 

사실 비잔틴 장군 3명의 한정된 예시로만 설명하기에는 적절하지 않습니다.
블록체인 네트워크 상에서 암호화 하여 다음 PC에 메시지를 전달하며 신뢰성을 유지하는 과정은 2번 장군에서 3번 장군으로 가는 것이 아닌 다수의 네트워킹 PC들이 경쟁을 통해 다른 메시지를 보내게 되기 때문인데요.

 

 

메시지 간의 데이터가 유효한지 검증하는 과정에서 다수의 연결되어있는 네트워킹 PC에서 검증을 해주는데 전체 네트워킹 PC의 과반 이상(51%)의 메시지가 맞다고 할 때에만 다음 메시지로의 연결이 가능한데 이전에 연결되어있는 메시지들을 바꿔 연결하려면 나머지 과반 이상(51%)의 메시지를 전부 바꿔 검증이 맞다고 시도해야 할텐데 이 것을 실행하는 시간보다는 이미 다른 네트워킹 PC에서 변조하지 않은 데이터와 함께 암호화 해서 보내는 것이 훨씬 빠르므로 사실 상 데이터의 위변조가 불가능하게 되며 기존 위변조된 블록들은 다음 검증에서 별도로 분리되어 나가지며 분리된 블록들은 더이상 다수의 검증이 이루어지지 않으므로 더이상의 진행이 불가능하게 됩니다.
이로서 하나 하나의 메시지 블록(Block)형태로 연결(Chaining)되므로서 신뢰를 가진 데이터가 존재할수 있게 됩니다.

이 때 네트워킹PC들에게 적절한 보상이 없이는 유지되기 힘들 것입니다. 따라서 암호화 및 검증을 하는 PC에게 보상의 의미로 비트코인등을 지급하게 되는 것입니다.

 

실제로 그것들이 어떻게 동작하는지에 대한 상세한 내용이 더 궁금하시다면 아래의 동영상이 설명이 잘 되어 있으니 참고해주세요.

참고자료 : http://wiki.hash.kr/index.php/%EC%9E%91%EC%97%85%EC%A6%9D%EB%AA%85

 

Share your thoughts