Byzantine Fault Tolerance (BFT)
**비잔틴 장애 허용(Byzantine Fault Tolerance, BFT)**은 분산 시스템이 결함이 있거나 악의적인 노드를 허용하면서도 나머지 노드들 사이에서 합의(consensus)를 유지할 수 있도록 설계된 알고리즘입니다. 이는 일부 노드가 허위 트랜잭션에 대한 정보를 전송함으로써 발생하는 51% 공격이나 서비스 거부(DoS) 공격에 저항하여 시스템이나 네트워크가 계속 작동할 수 있게 해줍니다. [1][2][3]
개요
암호화폐는 분산된 노드 네트워크를 활용하여 독립적으로 거래를 검증하고 기록하는 탈중앙화 모델로 운영됩니다. 합의는 이러한 탈중앙화 프레임워크의 무결성을 위해 필수적이며, 비잔틴 장애 허용(Byzantine Fault Tolerance, BFT)은 합의 수립에 있어 중추적인 역할을 담당합니다. [1][4]
분산 시스템의 고유한 특성인 BFT는 결함이 있거나 악의적인 노드가 존재하더라도 네트워크가 적절하게 작동하도록 보장합니다. 노드가 부정확한 정보를 퍼뜨릴 때 발생하는 비잔틴 오류는 악의적인 공격, 소프트웨어 결함 또는 노드 간 합의 도달의 어려움과 같은 요인으로 인해 발생할 수 있습니다. 분산 시스템에서 비잔틴 오류의 불가피성을 인식할 때, 비잔틴 장애 허용의 구현은 필수적입니다. BFT의 기능은 시스템이 잘못된 정보를 제공하는 노드에 직면했을 때에도 합의에 도달할 수 있도록 하는 것입니다. [5]
역사
블록체인 기술에서의 비잔틴 장애 허용(Byzantine fault tolerance)은 레슬리 램포트(Leslie Lamport), 마셜 피스(Marshall Pease), 로버트 쇼스탁(Robert Shostak)이 처음 개념화한 비잔틴 장군 문제에서 유래되었습니다. 그들의 1982년 기념비적인 논문인 "비잔틴 장군 문제(The Byzantine Generals Problem)"는 공격할지 후퇴할지에 대해 만장일치의 결정을 내려야 하는 비잔틴 군대 장군들의 시나리오를 제시했습니다. 매수된 장군들은 비잔틴 장애(Byzantine fault)라고 불리는 장애물을 만들어냈으며, 이 문제를 효과적으로 처리하는 시스템을 비잔틴 장애 허용 시스템이라고 간주합니다. [2]
이 개념은 암호화폐 블록체인 네트워크에서 응용되었으며, 여기서 군대 장군과 유사한 노드들은 트랜잭션을 검증하여 노드 실패나 의도적인 기만에도 불구하고 작동할 수 있는 비잔틴 장애 허용 시스템을 형성합니다. [2][4]
2008년, 사토시 나카모토가 작업 증명(PoW) 프로토콜을 활용하여 비잔틴 장애에 탄력적인 합의 방식을 소개한 비트코인 백서를 발표하면서 비잔틴 장애 허용은 널리 주목받기 시작했습니다. 비트코인의 탄생 이후, 블록체인 연구자들은 이러한 원칙을 발전시켜 지분 증명(PoS)과 같은 다양한 합의 방식을 만들어냈으며, 이 모든 방식은 비잔틴 장애 허용을 달성하는 것을 목표로 합니다. [3]
.$$
BFT 기술
비잔틴 장애 허용(BFT) 알고리즘은 네트워크 노드를 그룹으로 나누고 메시지 교환을 통해 통신하도록 강제함으로써 작동합니다. 이러한 통신을 통해 노드는 다른 노드가 공유한 정보를 인증할 수 있으며, 시스템의 현재 상태에 대해 모든 노드 간의 만장일치 합의를 보장합니다. [1]
블록체인은 합의 알고리즘을 통해 비잔틴 장애 허용 메커니즘을 채택하여 분산 원장의 현재 상태에 대한 집단적 합의를 수립합니다. 이러한 합의 알고리즘은 누가 블록체인에 블록을 추가할 권한을 가질지 규제합니다. 특정 블록체인에서는 복잡한 수학적 문제를 해결하는 과정(PoW)이 포함되며, 다른 블록체인에서는 새로운 블록 추가를 용이하게 하기 위해 블록체인의 기본 통화를 일정량 스테이킹해야 합니다(PoS). [6]
또한, 블록체인에 포함될 모든 새로운 블록은 네트워크 내의 모든 노드에 전파됩니다. 각 노드는 이후 이러한 블록과 트랜잭션을 검증한 뒤 자신의 로컬 블록체인 버전에 통합합니다. 블록체인 기술은 일반적으로 실용적 비잔틴 장애 허용(pBFT), 연합 비잔틴 합의(FBA), 위임된 비잔틴 장애 허용(dBFT) 등 다양한 BFT 알고리즘을 사용합니다. [6][7]
PoW 합의 알고리즘은 네트워크의 채굴자가 트랜잭션 데이터를 저장하는 블록을 검증하고 생성하기 위해 암호화 퍼즐을 풀도록 요구합니다. 퍼즐을 먼저 성공적으로 푼 채굴자는 블록에 트랜잭션을 추가하고 블록 보상을 받을 특권을 얻지만, 블록 추가를 확정하기 위해 퍼즐을 풀었음을 증명해야 합니다. PoW에서의 채굴은 고가의 컴퓨터나 채굴 장비를 사용하는 것을 포함하며, 이는 다른 참여자들이 거부할 것이기 때문에 채굴자가 허위 정보를 퍼뜨리는 것을 방지합니다. 이는 또한 악의적인 행위자가 시스템 노드의 과반수를 장악할 위험을 줄여줍니다. [2]
반면, PoS 합의 메커니즘은 트랜잭션을 검증할 권한을 얻기 위해 특정 수량의 암호화폐 토큰을 스테이킹할 것을 요구합니다. 네트워크 프로토콜이 개인을 수락하면, 트랜잭션은 블록 보상을 받기 위해 확장되는 블록에 포함될 수 있습니다. [2]
BFT 알고리즘의 유형
실용적 비잔틴 장애 허용 (pBFT)
pBFT는 요청에 대한 응답을 받는 시점에 정해진 상한선이 없는 비동기 시스템에서 효율적으로 작동하도록 설계된 합의 알고리즘입니다. 이는 네트워크의 모든 노드가 블록체인의 복사본을 보유하고, 새로운 트랜잭션과 블록이 블록체인에 추가되기 전에 이를 검증할 수 있도록 함으로써 작동합니다. [1][8]
pBFT에서 노드는 세 가지 그룹으로 분류됩니다. 네트워크에 새로운 트랜잭션이나 블록을 제안할 책임을 맡고 클라이언트로부터 요청을 받는 리더 노드(leader node), 서로 메시지를 교환하며 제안을 검증하는 데 중요한 역할을 하는 레플리카 노드(replica nodes) 세트, 그리고 트랜잭션 요청을 보내는 역할을 하는 클라이언트 노드(client nodes) 그룹입니다. [1][8][9]
연합 비잔틴 장애 허용 (FBA)
FBA는 전통적인 BFT 알고리즘에 비해 더 분산되고 유연한 방식으로 BFT를 달성하기 위해 개발된 합의 메커니즘입니다. 사용자 요청이 있기 전에, 노드들은 FBA 네트워크 내에서 미리 설정되고 검증되어야 합니다. 노드들은 다른 노드들을 선택하고 신뢰할 수 있는 자율성을 가지며, 이는 솔루션이 올바른 것으로 간주되는 데 필요한 최소 노드 수인 쿼럼(Quorum)의 형성으로 이어집니다. 쿼럼이 형성되면 해당 블록이 검증되어 블록체인에 통합됩니다. FBA 합의 알고리즘은 다음 단계를 따릅니다: [10][11]
- 노드 선택: 각 노드는 다른 노드에 대한 신뢰를 바탕으로 자신의 쿼럼 슬라이스(Quorum slices)를 선택하며, 이러한 슬라이스는 로컬에서 정의되어 노드마다 다릅니다.
- 투표: 노드들은 트랜잭션 유효성이나 원장 버전과 같은 문구(Statement)에 대해 투표를 던집니다. 노드는 쿼럼이 해당 문구를 지지한다고 판단하면 이를 승인합니다.
- 수락 및 비준: 노드들은 수락된 문구를 네트워크의 다른 노드들에게 전파합니다. 노드가 쿼럼이 문구를 뒷받침하는 것을 관찰하면, 해당 문구가 비준된 것으로 간주하고 적절한 조치를 취합니다. [10][11]
위임 비잔틴 장애 허용 (dBFT)
dBFT(Delegated Byzantine Fault Tolerance) 합의 알고리즘은 블록체인 및 암호화폐 커뮤니티 내에서 합의를 달성하는 목적을 수행하지만, 그 복잡성으로 인해 입문자들에게는 어려울 수 있습니다. 이 알고리즘의 복잡성은 블록체인 상의 신뢰할 수 없는 참여자들을 처리하는 숙련도에서 비롯되며, 이 측면에서 다른 알고리즘들을 능가합니다. [12]
종종 "중국의 이더리움"으로 불리는 NEO는 자산의 디지털화와 블록체인 상의 스마트 컨트랙트 구현을 통해 "스마트 경제"를 구축하겠다는 의지를 강조하며 위임 비잔틴 장애 허용 합의를 도입했습니다. dBFT 합의 메커니즘은 상태 머신(State machine)으로 작동하며, 라운드 로빈 방식을 사용하여 주 노드(Primary)/백업 노드(Backup)를 정의하고 네트워크 메시지를 관리합니다. 다음은 dBFT의 상태들입니다: [12][13]
- Initial: 초기 기계 상태를 나타냅니다.
- Primary: 블록 높이와 뷰 번호에 따라 결정됩니다.
- Backup: 노드가 주 노드(primary)가 아니면 True, 그렇지 않으면 False입니다.
- Request Sent Or Received: 주 노드로부터 유효한 서명을 받았으면 True, 그렇지 않으면 False입니다.
- Response Sent: 블록 헤더 확인이 전송되었으면 True입니다.
- Commit Sent: 블록 서명이 전송되었으면 True입니다.
- Block Sent: 블록이 전송되었으면 True, 그렇지 않으면 False입니다.
- View Changing: 뷰 변경(view change) 메커니즘이 트리거되었으면 True, 그렇지 않으면 False입니다.
- More Than F Nodes Committed Or Lost: f개 이상의 노드가 커밋 단계에 고정되었거나 손실된 것으로 간주되면 True입니다.
- Is Recovering: 유효한 복구 페이로드를 수신하여 현재 처리 중이면 True입니다.
BFT의 사례
질리카 (Zilliqa)
질리카는 초당 수천 건의 트랜잭션을 처리할 수 있는 높은 처리량을 제공하도록 설계된 소프트웨어입니다. 질리카는 인프라를 여러 개의 상호 연결된 블록체인으로 분할하여 더 많은 트랜잭션을 지원하는 레이어 2 확장 솔루션인 샤딩(sharding)을 사용하여 블록체인 확장성 문제와 속도를 해결하는 것을 목표로 합니다. 이 플랫폼은 스테이킹 및 이자 농사(yield farming)를 허용하며, Zilswap, Avely Finance, LunarCrush를 포함한 많은 탈중앙화 애플리케이션(dApps)이 질리카를 프로토콜에 통합하고 있습니다. [14][15][16][17]
질리카 네트워크는 스마트 컨트랙트, 트랜잭션 정산, 토큰 발행 등 다양한 기능을 제공합니다. 질리카의 운영은 두 가지 주요 원칙에 기반합니다. 하나는 네트워크를 샤드로 나누어 노드가 트랜잭션의 일부만 처리할 수 있도록 하는 샤딩 방식이고, 다른 하나는 네트워크 보안과 동기화를 보장하는 알고리즘인 pBFT입니다. pBFT를 사용하면 기록이 블록체인에 추가되기 전에 최소 3분의 2 이상의 노드가 기록의 정확성에 동의할 때 합의가 이루어집니다. 이 합의 프로세스는 특정 샤드에 적용되며, 마이크로 블록이 확정되어 트랜잭션 블록으로 병합되기 전에 모든 노드가 동의해야 합니다. 또한 질리카는 작업 증명(proof-of-work) 알고리즘을 사용하여 노드 ID를 할당하고 샤드를 생성함으로써 플랫폼 트랜잭션 기록의 보안을 강화합니다. [15][16]
스텔라 (Stellar)
스텔라 루멘이라고도 불리는 스텔라(Stellar, XLM)는 글로벌 금융 시스템을 연결하고 결제 서비스 제공업체와 금융 기관을 위한 표준화된 프로토콜을 구축하는 것을 목표로 하는 탈중앙화 피어 투 피어 (P2P) 네트워크입니다. 그 목적은 개인, 은행 및 결제 처리업체를 연결하여 금융 자산의 이동을 원활하게 하는 것입니다. 또한 스텔라는 사용자가 다양한 암호화폐를 생성, 전송 및 거래할 수 있도록 지원합니다. [20]
스텔라는 탈중앙화된 서버 네트워크와 모든 노드에서 2~5초마다 업데이트되는 분산 원장을 사용하며, FBA 알고리즘으로 알려진 합의 프로토콜을 채택하고 있습니다. 이 프로토콜은 쿼럼 슬라이스(quorum slices), 즉 특정 네트워크 부분을 활용하여 트랜잭션을 검증함으로써 더 빠른 트랜잭션 처리를 달성합니다. 스텔라 네트워크의 각 노드는 "신뢰할 수 있는" 노드 세트를 선택하며, 트랜잭션이 이 세트의 모든 노드로부터 승인을 받으면 검증된 것으로 간주됩니다. 이러한 간소화된 프로세스는 스텔라의 네트워크 속도를 크게 향상시켜 초당 최대 1,000건의 네트워크 작업을 처리할 수 있게 해줍니다. [21]
네오 (Neo, NEO)
네오(Neo)는 스마트 컨트랙트를 통해 디지털 자산 관리를 자동화하고, 탈중앙화 애플리케이션을 사용하여 분산형 스마트 경제 시스템을 구축하도록 설계된 블록체인 네트워크입니다. 이 플랫폼은 탈중앙화 거래소 (DEX), 예측 시장, 소셜 네트워크와 같은 목적을 위한 dApps 생성을 지원합니다. [18]
이러한 기능 외에도 Neo는 사용자에게 탈중앙화 파일 저장 시스템, 신원 시스템, 그리고 가격 데이터와 같은 외부 정보를 통합하기 위한 오라클(Oracle) 시스템과 같은 기능을 제공합니다. [18][19]
Neo 블록체인에는 두 가지 네이티브 암호화폐가 있습니다. 프로토콜 변경에 대한 투표에 사용되는 NEO와 네트워크의 계산 비용을 충당하는 데 사용되는 GAS입니다. 이 플랫폼은 분산된 컴퓨터 네트워크 전반에서 블록체인 보안과 동기화를 보장하기 위해 dBFT 합의 메커니즘을 채택하고 있습니다. [18]
dBFT는 위임 지분 증명(DPoS)과 유사하게 작동하며, 실시간 투표 시스템을 사용하여 소프트웨어를 실행하는 컴퓨터 중 어떤 것이 Neo 블록체인에서 다음 블록을 생성할 수 있는지 결정합니다. 이는 NEO를 보유한 사람이라면 누구나 네트워크 운영에 참여할 수 있음을 의미합니다. 각 NEO 토큰(또는 Neo 코인)은 투표권을 나타내기 위해 스테이킹(staked)될 수 있으며, 더 많은 NEO를 스테이킹할수록 더 큰 투표권을 갖게 됩니다. 토큰을 스테이킹하는 모든 NEO 소유자는 블록 생성을 담당하는 합의 노드에 투표합니다. Neo 블록체인에 새로운 블록을 제안하고 추가하는 대가로, 이러한 합의 노드들은 GAS 암호화폐로 지불되는 네트워크 트랜잭션 수수료를 받습니다. [18][19]







