블록체인의 기초를 공부할 때 빠지지 않는 것이 비잔틴 장군 문제라고 생각합니다.
저도 마스터링 비트코인을 읽으면서 몇 번이나 봤었던 내용이지만 항상 헷갈렸던 기억이 있네요.
그러기에 이번에 제대로 한번 정리해보려고 합니다.
아래는 2008년 제임스 A 도날도가 사토시에게 보낸 메일의 일부 내용입니다.
“모두가 X를 안다는 사실로는 충분하지 않습니다. 모두가 X를 안다는 사실도 모두가 알아야 하며,또 모두가 X를 안다는 사실을 우리 모두가 다 안다는 사실도 전원이 알아야 한다. 이는 비잔틴 장군의 문제처럼, 분산 데이터 시스템에서 오래된 난제이다.”
위의 내용과 같이 컴퓨터 네트워크 분야에서 항상 제기되었던 두장군 문제에서 출발한 비잔틴 장군의 문제가 비트코인 개발하면서 해결해야 할 큰 난제였다.
두 장군의 문제란?
두 장군의 문제는 1972년에 진행한 가상 실험입니다.
- 1. 두 아군 부대의 장군 A와 B가 침투할 도시 양 옆에 대기 중
- 2. 두 장군은 점령하기 위해 같은 날, 같은 시각에 공격을 하려 합니다.
- 3. 이때 연락을 주고받아야 하는데 이를 담당하는 연락병은 직접 적군의 도시를 통과해야 합니다.
- 4. 이러한 연락병이 가진 메시지는 항상 적군에게 뺏길 위험이 존재한다는 가정 하에 진행이 됩니다.
이러한 상황에서 두 장군이 제대로 된 연락을 받았는지, 연락병이 매수를 당한 것은 아닌지에 대한 불확실성이 존재하여 두 장군은 같은 합의를 할 수 없고, 적군의 도시를 공격할 수 없게 됩니다.
비잔틴 장군 문제란?
1982년 래슬리 램포트, 마샬피즈가 쓴 논문에서 소개된 이후 컴퓨터 공학의 난제로 꼽히는 문제로 두 장군의 문제가 아닌 여러 명의 장군이 같은 상황을 겪게 되는 문제입니다.
블록체인으로 비교해본다면 각 장군들은 노드가 되는 것이고 노드들이 합의에 이룰 수 있는 방법이 필요합니다.
분산화 네트워크의 대다수 참가자들은 동일한 행동을 하기로 결정하고 실천을 해야합니다.
그러므로 최소한 3분의 2의 노드들이 선택한 합의를 최종 합의라고 생각하고 시행해야 합니다.
비잔틴 장애 허용이란?
컴퓨터 공학에서는 비잔틴 장군 문제 해결법으로 잘못된 메시지가 와도 시스템은 유지하는 방법을 고수했습니다.
이러한 방법은 항법장치 분야에 적용되었습니다.항공기에 어러 개의 항법장치 센서를 설치하고 어느 한 장치가 잘못된 정보를 주어도 최소 3분의2 이상이 선택한 정보를 선택하면 비잔틴 장군 문제를 해결할 수 있었습니다.
이것이 바로 비잔틴 장애 허용입니다. 어떠한 장치(장군)가 잘못된 정보를 주어도 무시하고 3분의 2의 선택을 따름으로서 전체적인 시스템에는 문제가 없게 만드는 것이죠.
사토시는 항법장치와 다르게 모든 노드(장치, 장군)가 동일한 선택을 할 수 있다는 점을 수학적으로 보장하였고 그것이 바로 합의 알고리즘이라고 불리는 비트코인의 PoW입니다.
합의 알고리즘이란?
비트코인의 PoW(Power of Work)는 작업증명방식이라고 불립니다.
비잔틴 장군 문제에서는 장군들이 메시지를 아무 노력 없이 보낼 수 있었는데, PoW를 도입하면 10분이라는 텀이 생기고 10분이라는 시간 동안 어떠한 작업을 진행하여 증명할 수 있는 증거를 메시지와 함께 보내야 다른 장군들이 그 메시지를 허용합니다.
만약 그 증거가 틀렸다면 이 장군은 거짓으로 메시지를 보낸 것이기에 메시지를 허용하지 않음으로써 거짓된 정보는 애초에 방지할 수가 있는 것이죠.
혹시나 올바른 증거여서 허용되었다고 해도 3분의2 이상이 같은 정보여야지 합의에 이룰 수 있기에 2번 방지할 수 있게 됩니다.
그렇다면 다수의 장군이 올바른 증거와 거짓된 정보를 전달하려고 하면 어떻게 될까요?
위와 같은 가정을51% 공격이라고 불리는데 가능성은 있지만 비트코인상 수학적, 금전적으로 위와 같은 행동을 할 이유가 사라집니다.
비트코인의 3분의 2에 달하는 해쉬 레이트(수학 계산력)와 해쉬 레이트를 유지하기 위해서는 천문학적인 돈이 필요하게 됩니다. 실질적으로 3분의 2에 달하는 해쉬레이트를 얻을 수가 없습니다.
'블록체인' 카테고리의 다른 글
Craftsmanship 자주하는 질문 모음 (0) | 2021.11.11 |
---|---|
Craftsmanship 사용방법 (0) | 2021.11.04 |
비트코인 개인키, 공개키, 지갑종류 공부내용 (0) | 2019.05.17 |
마스터링 이더리움 번역본 드디어 출간 (0) | 2019.05.14 |
펜타시큐리티 AMO 코인 백서 분석 (0) | 2019.05.13 |