개발하는 기획자

반응형

 

앞선 포스팅에서는 블록체인의 개념과 핵심이 되는 합의 방식에 대해서 확인을 했습니다.

블록체인은 중앙집중형 시스템이 아닌 분산형 시스템으로 중앙 집중이 가진 문제점을 해결하고 사용자들이 분산화된 시스템 내부에서 사용자들의 편리성을 확보하기 위해 다양한 합의구조를 제시하며 문제점들을 해결하며 발전하고 있는 추세입니다.

 

그렇다면 분산화된 시스템에서 어떤 대표적인 문제가 발생하게 될까요?

 

블록체인, 비잔틴 장군 문제(Byzantine Generals Problem)?


비잔틴 장군 문제는 1982년에 램포트(Lamport)와 쇼스탁(Shostak), 피스(Pease)가 작성된 논문에서 처음으로 제시된 문제로 비잔틴 제국에 두 명 이상의 장군들이 적군을 무찌르기 위해 동시에 공격하는 상황에서 발생하는 상황에 대한 시나리오를 분산 시스템에 대비해 제시한 문제점이다.

 

간단해 보이지만 이 문제에서 악의적인 상황을 가정하게 되며 문제는 훨씬 복잡하게 꼬이게 됩니다. 먼저 장군들은 하나의 공통의 성(적군)을 공격하기 위해 같은 시간에 공격을 해야 성을 함락할 수 있다 라는 부분과, 한 명 이상의 장군은 배신자로 공격에 실패하기 위해서 잘못된 정보를 전달할 수 있는 상황이 가정되어 있어 더욱 문제를 해결하기에 복잡한 상황이 되는 것을 확인할 수 있습니다.

 

그렇다면, 분산 시스템에서는 왜 이런 문제점이 발생하게 될까요?

 

중앙화 집중형 시스템에서 만약 중앙 시스템이 악의적인 사용자들에 의해 해킹이 되거나 공격 당할 경우 전체 시스템이 마비가 된다라는 단점이 존재하지만 정상적으로 운영이 되는 경우 한 번에 모든 하위 조직 또는 인원들에게 일정한 정보를 신속하게 전달될 수 있어 굉장히 빠른 속도로 운영이 가능합니다. 이런 문제를 해결하기 위해 분산 시스템인 블록체인이 개발되었지만, 분산화된 블록체인 시스템 역시 악의적인 해킹 공격이나 네트워크 공격이 가능한 부분이 발생합니다. 

 

그 중 비잔틴 장군 문제는 다음과 같이 중앙 집중화 된 시스템에서는 중앙에서 내려오는 명령을 받아 수행하면 되지만, 분산화된 시스템에서는 각 장군들이 동등한 권한과 역할을 가지게 된다는 점에서 발생하는 문제입니다. 

 

이런 가정과 상황 안에서 장군들은 어떤 규칙과 방식으로 정보를 교환해야 하는지 와 배신자가 아닌 장군이 몇 명이 있어야 공격을 성공할 수 있는지에 대한 정리가 비잔틴 장군 문제입니다.

 

비잔틴 장군 문제의 예시


예시로, 위와 같은 상황에서 100명의 병사를 가진 5명의 장군이 300명의 병력을 가진 하나의 성을 공격하는 상황을 가정한다면, 기본적으로 300명 보다 많은 병력이 일제히 공격해야 되기에 4명의 장군이 공격을 일제히 해야한다. 라고 생각할 수 있습니다.

 

이런 문제를 해결하기 위해서 다수결을 통한 결과 도출방식을 선택하게 된다면, 장군들은 철저히 다수결을 통해 과반이 이상되는 공격 시간을 선택해 공격을 할 때 배반한 장군의 수가 전체 장군의 수에서 1/3이 넘지 않는 경우 공격에 성공할 수 있다 라는 결론을 내릴 수 있습니다.

 

물론, 이런 상황 역시 모든 장군의 메시지가 모두 손실없이 정확하게 전달되어야 한다는 가정도 존재한다.

 

초기에는 간단한 문제 제시에 대해 해결책 제시하였고, 점차 복잡한 시나리오와 조금 더 좋은 성능을 발휘할 수 있는 해결방안들이 제시되고 실제 개발되었고, 1980년대에는 Draper's FTP, Honeywell's MMFCS. SRI's SIFT과 같은 다양한 시스템 구조가 디자인되기도 하였으며, 최근에는 작업증명(PoW, Proof of Work) 방식 또는 실용적 비잔틴 장애 허용(pBFT, practical Byzantine Fault Tolerance)까지 발전해 위와 같은 문제를 조금 더 빠르고 안전하게 해결하기 위한 신뢰성 높은 방식들까지 연구되고 있는 상황입니다.

 

다음 포스팅에서는 작업증명 구조와 실용적 비잔틴 장애 허용(pBFT, practical Byzantine Fault Tolerance)이 어떻게 효과적으로 비잔틴 장군 문제를 해결하고 어떤 블록체인에 적용되어 있는지 확인해보겠습니다.

반응형

이 글을 공유합시다

facebook twitter googleplus kakaostory naver
-->