BFT

zzwwoonn·2022년 4월 11일
0

Block Chain

목록 보기
3/4

BFT ( Byzantine Fault Tolerance, 비잔티움 장애 허용 )

개요

비잔틴 장애 허용이란 장애가 있더라도 전체의 3분의 1을 넘지 않는다면, 시스템이 정상 작동하도록 하용하는 합의 알고리즘이다. 블록체인의 분산원장 체계는 제대로 돌아가기 위해서 원장을 공유하는 참여자들이 정직하게 행동해야 하며 이를 보장할 방법이 있어야 한다. 만약 악의적인 노드가 존재하여 누군가 속이려 들더라도 모두가 지닌 원장은 같은 내용을 유지해야 하는 방법 또한 존재해야 한다.

비잔틴 장군의 문제

넓은 영토 지역마다 장군들이 각각의 지역을 직접 통치하는 것을 가정한다. 다른 나라를 공격 하려고 할 때 공격이 성공하려면 같은 날, 같은 시각에 모든 장군이 이끄는 병력을 전부 집중시켜야 하는데 그럴러면 각 영토마다 메세지를 전달해야 한다. 해당 메세지가 올바르게 전달되지 못하면 병력이 분산되어 공격은 실패하게 된다. 또한 장군들 가운데 배신자가 있다면 이러한 가능성은 더욱 커지게 된다.

여기서 비잔틴 장군 문제의 핵심은 동일한 내용의 메시지를 장군들끼리 공유할 수 있는 방법을 찾는 것이다.

이 문제를 블록체인에 적용해 본다면, 각 장군은 하나의 노드(피어)가 되며, 노드들은 현 시스템 상태에 합의를 달성할 수 있는 방법을 찾아야 한다. 분산화된 네트워크의 대다수의 참가자는 완전한 실패를 막기 위해 동일한 행동을 하기로 결정하고 이를 실천해야 한다. 그러므로 분산화된 시스템에서 이러한 합의를 달성할 수 있는 유일한 방법은

최소 3분의 2 혹은 그 이상의 신뢰할 수 있는 정직한 네트워크 노드를 확보하는 것이다. 이는 네트워크 참여자 대다수가 악의적으로 행동하기로 할 경우, 시스템이 실패하거나 공격(51%의 공격과 같은)을 당할 수 있음을 의미하게 된다.

간단히 말해, 비잔티움 장애 허용은 비잔티움 장군 문제의 딜레마에서 파생되는 실패들을 막기 위한 시스템이다. 비잔티움 장애 허용 시스템은 일부 노드가 고장나거나 악의적으로 행동하더라도 계속 작동할 수 있다.

비잔티움 장군 문제를 해결하는 방법은 하나 이상일 수 있으며, 따라서 비잔티움 장애 허용 시스템을 구축하는 다양한 방식이 있다. 마찬가지로, 블록체인에서도 비잔티움 장애 허용을 달성하는 다양한 접근들이 있으며, 이는 보통 합의 알고리즘이라 불린다.

결론적으로 비잔티움 장군 문제는 다양한 시나리오에 광범위하게 적용되고 있는 비잔티움 장애 허용 시스템을 탄생시킨 흥미로운 딜레마이다. 블록체인 산업 외에도, 항공, 우주, 원자력 산업에 비잔티움 장애 허용 시스템이 사용되고 있다.

암호화폐 관점에서, 좋은 합의 메커니즘과 함께 효율적인 네트워크 커뮤니케이션을 확보하는 것은 모든 블록체인 생태계에 필수적이다. 이러한 시스템을 보호하는 데는 지속적인 노력이 필요하며, 현존하는 합의 알고리즘은 몇 가지 한계(확장성과 같은)를 아직 극복하지 못했다. 그런데도, 작업 증명과 지분 증명은 비잔티움 장애 허용 시스템에 관한 아주 흥미로운 접근들이며, 잠재력을 가진 애플리케이션들은 광범위한 혁신을 불러일으키고 있다.

합의 알고리즘

합의 알고리즘은 블록체인 네트워크에서 합의(피어들의 OK사인을 받고 이를 뭉뚱그리는 과정)를 달성하는 메커니즘으로 정의할 수 있다. 가장 일반적인 예로 비트코인의 작업증명(PoW, Proof of Work)을 들 수 있다.

블록체인 중 가장 처음 제시된 비트코인의 합의 알고리즘인 작업증명방식(Proof of Work, POW)는 타임 스탬프(Timestamp)와 서명(Sign, 블록체인에서는 Key)을 통해 이 문제를 해결한다.

'장군은 메세지를 보내기 위해 10분의 시간을 가지며, 메시지는 모든 장군의 메시지와 메시지를 보내기 위해 10분을 들였다는 증거를 포함한다.'라는 규칙이 추가됨에 따라 중간의 비잔틴 장군이 존재하더라도 다른 장군들은 이 장군이 거짓임을 밝혀낼 수 있다.

혹은 초기에 메시지를 받은 장군이 존재하더라도 앞선 시나리오처럼 정직한 장군들이 성을 함락할 수 있게 된다. 비트코인을 설계할 당시 사토시 나카모토는 참여자 모두가 가장 최신의 원장을 같이 보유할 수 있다는 점을 수학적으로 보장할 수 있도록 했다.

우선 비트코인은 참여자가 돈을 받는 순간부터 보내는 순간까지 지켜야 할 기본적인 규정을 특정한 숫자로 표현되도록 설계해놓고 있다. 사토시는 새로운 블록을 만들 때 이런 여러 숫자를 모아 이를 기초로 새로 만들 블록의 고유번호를 찾는 일종의 퍼즐 게임을 풀도록 했는데 퍼즐을 푸는 과정이 곧 작업증명이며 수학 퍼즐이 풀리면 블록이 만들어지며 이를 채굴이라고 한다. 작업증명을 수행해 퍼즐이 풀렸다면 결국 블록은 부정이 없도록 각종 규정을 지킨 정상 거래를 모아 정상적인 방법으로 만든 원장이라는 의미이다.

마지막에 나온 블록의 고윳값이 정상이면 계산과정에 들어간 모든 숫자 역시 올바른 값이므로 수학적으로도 이 값을 수용해도 좋다는 의미이다.

비트코인 채굴이 왜 비트코인의 안정성에 기여하나요?

채굴은 블록을 생성하는 과정이고 이 블록안에 10분간의 이체 내역이 들어갑니다. 그런데 시스템적으로 어느 누구도 연속하여 블록체인을 생성하기 어렵게 설계되어있습니다. 이것은 두번째 블록을 생성하면서 이전에 만든 블록을 수정하는 것을 방지하기 위한 것입니다.

많은 채굴자들이 채굴을 진행하기 때문에 연속적인 블록생성을 막고 새로운 블록이 생성될 때 기존 블록의 변조를 막으면서 이전 거래내역의 변조를 막습니다. 기존 블록 변조의 난이도는 기하급수적으로 늘어나기 때문에 바로 이전블록의 변조가 어려우면 그 이전의 블록 변조는 굉장히 더 어려우므로 기존의 거래내역들은 보존됩니다.

비트코인은 결국 작업증명을 거친 블록을 받아들이는 방식의 합의 구조를 갖추고 있다. 작업증명을 거친 블록을 실시간 공유함으로써 참여자들은 다른 장군들이 부정을 저질렀는지 걱정할 필요 없이 결국 모두가 항상 같은 원장 상태에 도달해 있게 되는 셈이다. 은행과 중앙기관의 역할은 이러한 비트코인 시스템 내에서 사라졌으며 비잔틴 장애 허용을 달성하는 가장 똑똑한 접근으로 여겨지고 있다.

0개의 댓글