블록체인 노드들의 합의 과정에서 BFT(Byzantine Fault Tolerance)란 무엇인가요?
안녕하세요. 아하의 블록체인 전문가님들의 지식 나눔에 깊이 감사드립니다.
블록 형성에 참여하는 노드들의 합의 과정에서 발생할 수 있는 문제점을 해결하기 위한 BFT(Byzantine Fault Tolerance -비잔틴 장애 허용)란 무엇인지 알고싶습니다.
비잔틴 장군 문제의 해결 방법으로 일반적으로 알려져 있는 '비잔틴 장애 허용(BFT)'이라는 합의 알고리즘은 합의에 참여하는 노드들 중 3분의 2가 합의할 경우 3분의 1에 문제가 있더라도(비잔틴 노드) 나머지 3분의 2에 의해 결과적으로 합의에 도달하는 것이 가능한 것을 의미합니다.
이것이 블록체인에 도입되게 되면 노드들이 블록을 생성하기 위한 합의에 도달하려 할 때 정보의 위, 변조를 시도하는 노드가 있거나 노드가 정상적으로 작동하지 않을 경우에도, 또 완전한 합의에 도달하지 못하더라도 3분의 2이상의 정상적인 노드들이 합의를 도출할 수 있다는 전제가 있다면 그러한 비잔틴 노드들의 영향을 받지 않고 합의에 도달할 수 있게 됩니다.
또한 블록체인에 따라서는 이러한 작업을 빠르게 두 번 진행하는 경우도 있는데 첫 번째 합의에서 3분의 2 이상의 합의가 도출되지 못하면 해당 블록은 확정 상태에 이르지 못하게 되며 첫 번째 합의에서 3분의 2 이상의 합의가 도출되면 다시 두 번째 합의를 다시 시작하여 빠르게 합의 한 뒤 불변하는 블록을 생성하고 확정지을 수 있습니다. 이렇게 먼저 합의에 도달한 후에 블록을 생성하는 방식을 택하게 되면 새로운 블록 생성의 이전 블록이 확정성을 부여 받은 상태이기 때문에 블록체인의 분기(Fork)를 방지할 수 있게 되어 안정성과 보안성이 높아지게 됩니다.
결론적으로 비잔틴 장군 문제에 대해 100% 합의를 이끌어 내는 방법에는 아직 도달하지 못했지만 비잔틴 장애 허용을 통해 도출된 결과의 확정성을 확보함으로써 블록체인은 '결과적으로' 비잔틴 장군 문제에 대한 해법을 찾았다고 할 수 있습니다.
답변이 도움이 되길 바랍니다.
안녕하세요. BTF합의 알고리즘에 대하여 답변드립니다.
비잔티 장애(BFT)란?
부대안에 첩자가 있을 것으로 예상하고 있으나 누구인지 모르는 상태에서 적진에 나가 싸워야하는 상황에서 과연 부대를 신뢰할 수 있는가? 라는 실제 비잔티움 제국에서 일어난 사건을 바탕으로 만들어진 용어입니다.
비잔티 장군의 딜레마라고도 불립니다.
비잔티 장군의 딜레마가 블록체인 상에서 급부상한 이유는 블록체인 네트워크에서 블록을 생산하는 블록생산자(BP노드)들간에 합의를 도출할 때 과연 신뢰있는 BP노드와 신뢰하지 않는 BP노드를 구분하고 어느정도 선에서 합의를 이룰 것인가에 대한 논재입니다.
따라서 각 노드간 합의를 도출 할 때 허용한계 값을 이용하여 합의를 이루는 여러 방식들이 존재합니다.
BTF합의는 구성원의 2/3이상 찬성하게 되면 합의가 이루어지는 방식입니다.
BFT의 여러가지 개선 방법
PBFT(Practical Byzantine Fault Tolerance)
4개의 노드 중 3N+1개 이상일 경우 합의는 신뢰할 수 있다는 수학적인 알고리즘을 이용한 방식(* N〓신뢰 할 수 없는 노드)
2번의 합의를 거처 최종 합의 합니다.
BBFT(Baystack Byzantine Fault Tolerance)
신뢰할 수 있는 노드가 전체노드의 (2/3)이상 합의가 된 상황일 경우 최종적으로 합의가 된것으로 간주하는 방식입니다.
BFT방식을 사용하는 블록체인 : 이오스(EOS), 트론(TRX)
PBFT방슥을 사용하는 블록체인 : 테더민트, 하이퍼렛저, R3, 네오, ICT
감사합니다.