Tendermint, Casper the Finality Gadget, BFT+dPoS 등 많은 합의 알고리즘이 BFT 기반의 합의 방식을 사용하고 있습니다. BFT는 분산 컴퓨팅 분야에서 많은 연구가 되었고 safety나 liveness를 수학적으로 보장할 수 있기 때문에, 앞으로 더 많은 합의 알고리즘이 BFT를 차용하여 성능이나 확인 시간을 개선하는 용도로 사용할 것으로 보입니다.
BFT 방식의 합의 알고리즘을 실용적인 수준으로 쓸 수 있도록 개선한 PBFT(Practical Byzantine Fault Tolerance) 논문이 1999년에 나왔는데, 당시는 블록체인이 없었기 때문에 블록이 아닌 개별 연산(operation)의 순서를 보장하는 용도로 사용이 되었고 논문에서는 BFT한 NFS(Network File System)를 구현하였습니다.
이후에 나온 Tendermint 합의 알고리즘은 BFT를 블록체인에 맞게 다음과 같이 수정/보완하였습니다.
- 리더를 하나로 고정하지 않고 매 라운드마다 교체
- 노드를 동적으로 더하거나 뺄 수 있는 기능 추가
- Point-to-point 통신 대신 gossip 프로토콜 사용
특히, 리더를 라운드마다 교체하도록 한 부분이 중요한데 리더가 비잔틴일 경우 새로운 리더를 선출하기 위해 필요한 리더 선출 알고리즘을 단순화할 수 있고, 하나의 리더가 자신에게 유리한 트랜잭션만 선택적으로 블록에 포함시키는 행위를 방지할 수도 있습니다.
관련 내용에 관심 있으신 분은 Tendermint과 PBFT 비교 글을 참고하시기 바랍니다.