비잔티움 장군들의 상황과 문제는 무엇인가? 이 문제에 해법을 제시한 비트코인 블록체인
안녕하세요. 블록체인을 통한 탈중화 된 미래를 꿈꾸는 @bigthumbsup 입니다. 오늘은 비잔티움 장군 문제(Byzantine generals problem)에 관해 이야기 해보겠습니다.
비잔티움 장군 상황
1. 비잔티움 장군들은 여러 방향에서 적군을 둘러싸고 있다.
2. 장군들은 일제히 공격할 지 후퇴할 지를 결정해야 한다.
3. 각 장군들은 멀리 떨어져 있기 때문에 통신할 수 있는 방법은 전령(메신저)을 통해 연락을 주고 받아야 한다.
비잔티움 장군 문제
1. 공격을 원하는 장군과 후퇴를 원하는 장군들이 있다. (그렇기 때문에 공격 또는 후퇴라는 일치된 합의가 필요하다. 중요한 건 모든 장군들이 동시에 같은 행동을 해야 한다.)
2. 장군의 전령들(메신저)이 먼 길을 가서 다른 장군들에게 메시지를 전달 해야하기 때문에 도중에 메시지가 적군으로부터 탈취가 되어서 메시지가 왜곡 된다. (왜곡된 메시지를 받은 장군들이 있기 때문에 일치된 의견을 도출할 수 없다)
3. 장군들 중에 배신자가 있어 메시지를 의도적으로 바꾼다. (장군들은 어느 장군이 배신자인지 알 수가 없다)
비잔티움 장군 문제는 장군들 간에 공격 또는 후퇴라는 의견이 합의에 이르지 못하는 상황입니다. 인터넷에서도 서로 신뢰할 수 없는 개인들이 있습니다. 개인들이 거래를 하기 위해서는 지금까지는 신뢰할 수 있는 제 3 자(정부, 금융기관, 은행 등)가 직접 개인간의 거래 장부를 저장하고 검증하며 보증 해주었습니다.
하지만 비트코인 블록체인은 비잔티움 장군 문제(일치된 의견이 불가능한 상태)에 해법을 제시합니다. 비트코인 블록체인 시스템에서 각 노드는 모두 비잔틴 장군들입니다. 각 노드들은 서로 전달 받은 정보가 진실인지 가짜인지 확인하는 방법이 필요 합니다. 비트코인 블록체인은 제3자 개입 없이도 거짓 정보(장군들간의 메시지 왜곡)으로부터 진실된 정보를 개인(장군들)들이 파악하기 위해서 작업증명(POW)방식을 해법으로 제시하였습니다.
작업 증명(POW)이란 용어는 1999년 Markus Jakobsson과 Ari Juels이 쓴 논문에서 등장하였습니다.이 방법은 DDOS(서비스 공격) 등을 막기 위해서 만들어졌습니다. 구글에서 무한 사용 방지를 막기 위해서 여러가지 그림을 제시하고 해당 하는 그림을 찾도록 하거나 사이트 가입시 숫자나 알파벳을 적게 하는 방식이 간단한 작업 증명 방식입니다.
하지만 블록체인에서 작업증명(POW)방식은 이처럼 문제 풀기가 간단하지 않습니다. 비트코인에서 작업 증명은 수학적 문제를 푸는 방식인데 현재는 이 수학 문제의 난이도가 기하급수적으로 상승해서 가장 빨리 답을 찾기(난스 찾기) 위해서는 엄청난 전기, 하드웨어, 인력 등이 필요하게 되었습니다. 흔히 중국에서 채굴업자(마이너)가 많은 이유도 값싼 전기료, 엄청난 인력, 대용량 하드웨어 물량 등을 보유하고 있기 때문입니다.
POW라는 첫 합의 알고리즘이 비잔티움 장군 문제에 대한 해법을 제시하였습니다. 그러나 엄청난 노력과 자원을 투입 대비 정답인 난스를 찾는 과정 이외에 우리가 살고 있는 사회에 도움이 되지 않는 방식입니다. 저는 앞으로 블록체인 생태계가 올바르게 정착하기 위해서는 POS, DPOS, PBFT 등 지속가능한 합의 알고리즘이 계속해서 나와야 한다고 생각합니다.
감사합니다 @bigthumbsup이었습니다.