비잔틴 장애 허용
블록체인 네트워크의 서로 다른 참여자(노드)들은 데이터의 위변조를 막기 위해 실시간으로 합의를 거쳐야 합니다. 하지만 탈중앙화된 네트워크에서 모두가 동일한 장부를 유지하기 위해 해당 장부의 진위 여부를 비교 대조하여 실시간으로 진본에 대한 모두의 합의를 이루는 것은 절대 쉽지 습니다. 바로 여기서 비잔틴 장애 허용(BFT, Byzantine Fault Tolerance)이라는 개념이 나왔습니다.
비잔틴 장군 문제
비잔틴 장애 허용에 대해 이해하기 위해서는 먼저 비잔틴 장군 문제에 대해 알아야 합니다.
비잔틴 장군 문제의 핵심은 ‘어떻게 하면 멀리 떨어져 있는 독립된 사람들이 특정 시점에 특정 행동을 하기 전에 서로 의견을 일치할 수 있느냐’입니다.
예를 들어 비잔틴 제국의 여러 명의 장군이 타국의 성을 공격해야 하는 상황이고 장군들은 서로 멀리 떨어져 있습니다. 이들이 동시에 공격해야만 성을 함락시킬 수 있고, 동시에 공격하지 않는다면 성을 함락시킬 수 없는 상황입니다. 이런 상황에서 어떻게 각 장군이 공격에 대한 합의를 이루어 정해진 시간에 동시에 성을 공격할 수 있을까요?
당시에는 휴대폰도 없었으며, 횃불로 공격 시점을 알리는 방법은 적에게 들킬 위험이 있습니다. 또한 사람을 보내 정보를 전달하는 것 역시 위험 부담이 있는데요. 만약 전령을 전달하다 적에게 잡히는 경우 메시지가 전달되지 않거나 조작된 메시지가 전달될 수도 있습니다. 그리고 장군 중 배신자가 존재한다면 절대 성을 함락시킬 수 없습니다.
비잔틴 장애 허용
비잔틴 장애 허용은 위에서 이야기한 비잔틴 장군 문제를 블록체인 위에서 어떻게 해결하느냐에 대한 방법론입니다. 계속해서 실시간으로 거래 정보가 갱신되는 블록체인 네트워크에서 여러 명의 참여자(노드)가 동일한 장부를 유지하기 위해 정보의 누락이나 오입력 혹은 악의적인 공격을 피할 수 없기 때문입니다.
따라서 장부를 유지하는 참여자 가운데 2/3 이상의 장부가 동일하다면 나머지 1/3의 장부가 일치하지 않더라도 2/3이 합의한 장부 내용을 공식적으로 인정한다는 것이 바로 비잔틴 장애 허용이라는 개념입니다. 다시 말하자면 기술적 오류나 공격에 의한 장애가 있더라도 전체의 3분의 1을 넘지 않는다면 시스템이 정상 작동하도록 허용한다는 것을 뜻하는 것입니다.
이는 결국 다수가 진본으로 치는 원장을 무엇으로 볼 것인지 결정하는 합의 기준을 참여자의 2/3가 합의하면 진본으로 인정하는 것으로 한다는 것으로 블록체인 합의 알고리즘의 중요한 축 중 하나입니다.