실용적 비잔틴 장애 허용을 이해하기 위해서는 우선적으로 비잔틴 장애 허용에 대한 이해도가 필요합니다. 비잔틴 장애 허용(BFT, Byzantine Fault Tolerance)은 시스템 내부에 장애가 있더라도 문제가 되는 부분이 전체의 3분의 1을 넘지 않는다면, 시스템이 정상 작동하도록 허용되어 있는 합의 구조를 의미합니다.
이런 비잔틴 장애 허용은 앞선 포스팅에서 소개한 두 장군 문제(Two Generals Problem)가 일반화된 비잔틴 장군 문제(Byzantine Generals Problem)으로부터 파생된 장애 허용에 관련된 연구 분야입니다.
비잔티움 장애 허용이라고도 불리는 이 합의 구조는 분산시스템인 블록체인에서 존재하는 악의적인 또는 상태가 좋지 않은 노드들이 시스템 전체에 영향을 미치지 않고 정상적으로 시스템이 작동되기 위해서 연구되는 중입니다.
실용적 비잔틴 장애 허용(pBFT, Practical Byzantine Fault Tolerance) 합의 구조는 1982년 "The Byzantine Generals Problem" 논문에서 처음 제안되었고, 역할은 비잔틴 장애허용(BFT) 방식과 일치합니다. 그렇다면 비잔틴 장애허용(BFT)와 실용적 비잔틴 장애 허용(pBFT) 방식은 어떤 차이가 있는지 살펴보게 된다면, 가장 간단하게 말해서 '동기식' 시스템에서만 동작이 가능한 방식이 BFT 방식이며, 이런 제한을 해결하며 '비동기식' 시스템 내에서 구현될 수 있게 했고 또한, 느린 속도를 보완하며 블록체인에서 사용되는 솔루션으로 채택되고 있습니다.
일반적으로 실용적 비잔틴 장애 허용 합의 구조 방식에서 시스템에 방해가 되는 악의적인 노드 또는 비정상 노드가 (N-1)/3개 이상이 아닌 경우 시스템은 정상적으로 동작하며 해킹이나 외부 공격에 대해 방어가 가능하다 라고 말할 수 있습니다.
간단하게 실용적 비잔틴 장애 허용 방식에 대해 설명 드리겠습니다.
다음 그림과 같이 순서는 간단하게 진행됩니다.
1) 메인이 되는 노드 1하나가 다른 일반 노드들의 요청을 수집한 결과를 다른 노드로 전파
2) 메인에게서 메시지를 받은 노드들이 다른 노드들로 다시 한 번 메시지를 전달
3) 모든 노드는 받은 모든 메시지 중 가장 많이 일치하는 정보를 다른 노드로 전파
4) 1~3의 과정이 모두 끝나면 일치하는 정보가 임계 비율(기존 정해진 비율) 이상인 경우 합의 과정이 종료되면 데이터를 확정
즉, 두 번의 모든 노드로 데이터 전파(브로드캐스트)하는 과정을 통해 모든 노드가 같은 메시지(정보, 데이터)를 가질 수 있게 할 수 있습니다.
본 포스팅까지 블록체인의 기본적인 개념과 사용되고 있는 합의구조 및 그로 인해 발생하는 문제점과 해결 방향에 대해서 대표적인 부분만 추려서 포스팅을 진행한 것 같습니다.
앞으로는 블록체인 시스템을 사용자가 실제 사용하기 위해 필요한 개념과 방법 및 현재 이슈가 되고 있는 블록체인 기술에 대해 추가적으로 포스팅을 진행할 수 있도록 하겠습니다.
8. 블록체인, 스마트 컨트랙트(Smart Contracts)란? (0) | 2019.11.20 |
---|---|
7. 블록체인, 디앱(dApp, decentralized Application)이란? (0) | 2019.11.17 |
5. 블록체인, 비잔틴 장군 문제(Byzantine Generals Problem)란? (0) | 2019.11.13 |
4. 위임 지분증명(dPoS, Delegated Proof of Stake)이란? (2) | 2019.11.08 |
3. 블록체인 트릴레마 (0) | 2019.11.07 |