의견.png

간단한 비잔틴 장애 허용

위키원
eom9522 (토론 | 기여)님의 2019년 9월 3일 (화) 15:10 판 (방법)
이동: 둘러보기, 검색

간단한 비잔틴 장애 허용(SBFT; Simplified Byzantine Fault Tolerance)이란 더 나은 확장성과 최상의 대기 시간을 위해 PBFT를 기반으로 하는 BFT 시스템으로 확장성과 분산성의 과제를 해결하는 새로운 비잔틴 내결함성 알고리즘을 구현한다. 20개 미만의 복제본을 중심으로 중앙집중화된 경우에만 잘 수행되었던 많은 이전 BFT 시스템과 달리, SBFT는 분산에 최적화되어 있으며, 100개 이상의 활성 복제본을 쉽게 처리할 수 있다. SBFT는 이더리움(ethereum)의 EVM 바이트 코드를 기반으로 한 스마트 계약 실행 환결을 제공한다.

개요

간단한 비잔틴 장애 허용은 이전의 많은 실용적인 알고리즘의 기술을 활용한다. 이것은 공통 모드에서의 선형 복잡성을 가지고 있으며 클라이언트 확인을 위해 단 하나의 메시지만 필요로 하는 실용적인 알고리즘이다. SBFT 합의에서 결함 있는 노드 수에 다라 특정 수의 노드가 블록을 수용해야 한다. 이러한 시스템은 최소한 (2f+1) 노드는 비즈니스 네트워크의 새 블록을 수용해야 한다. 여기서 f는 결함 있는 노드의 수이다. 이러한 의미에서 결함이 있는 것은 악성 노드일 수 있고, 작동하지 않는 노드일 수도 있다. 장점으로는 작업 증명보다 더 빠르며, 더 나은 확장성을 가지고 있다는 것이고, 단점으로는 중앙집권화의 경향이 강하다는 것이다.

특징

N > 3f+2c 복제본의 경우 SBFT는 다음과 같은 속성을 얻는다.

  • 비동기 모드에서의 안전 : 주어진 시퀀스 번호에 대해 의사결정 블록을 실행하는 2개의 복제본이 동일한 의사결정 블록을 실행한다.
  • 동기식 모드의 내성 : 클라이언트 요청이 응답을 반환한다는 것을 의미한다.
  • 공통 모드의 선형성 : 우리가 블록의 운영 횟수를 n으로 가정하고 또한 클라이언트 수를 n으로 가정하는 추상적 모델에서 연산을 커밋하기 위한 상각 비용은 일정한 크기의 메시지의 수라는 것을 의미한다.

방법

  • 수집기를 사용하여 전체 통신량을 줄인다. 모든 사람에게 보내는 대신에, 각 복제품은 수집자에게 보내고 수집기는 모든 사람에게 브로드 캐스트한다. 또한 SBFT는 라운드 로빈 회전수집기를 사용하여 부하를 감소시키고 (k+1) 수집기를 사용하여 내결함성을 개선하고 느리거나 결함이 있는 수집기를 처리한다.
  • 임계값 서명을 사용하여 클라이언트 통신을 O(n)에서 O(1)로 줄인다. SBFT는 단일 수집기를 사용하여 임계값 서명을 집계하고 각 클라이언트에 서명 하나를 포함하는 단일 메시지를 전송하는 단계를 추가하여 클라잉너트당 선형 비용을 단 하나의 메시지 비용으로 절감한다. 공개 블록체인(비트코인 및 이더리움)과 마찬가지로 SBFT는 머클 트리(Merkle tree)를 사용해 하나의 복제품에서 읽히는 정보를 효율적으로 인증한다.
  • 올바른 보기 변경 프로토콜을 사용하여 낙관론을 도출한다. SBFT는 모든 복제본이 결함이 없고 동기적일때 실행에서 더 빠른 합의 경로를 허용한다.
  • SBFT는 최신 암호화 기술을 활용한다. SBFT는 2048비트 RSA 서명에 버금가는 보안 기능을 갖춘 BLS(Boneh-Lynn-Shacham) 서명을 사용하지만 길이는 33바이트에 불과하다.

확장성 평가

SBFT는 초당 70개 이상의 트랜잭션 속도로 실제 EVM 계약의 작업 부하를 200개 이상의 복제본으로 복제하고 최대 f = 64개의 악성 복제본을 견딜 수 있다. 실험에서 SBFT는 초당 50개 이상의 트랜잭션에서 실제 EVM 트랜잭션을 실행하면서 100개가 넘는 복제본에 의해 복제되고 최대 f = 32 악성 복제본을 견딜 수 있었다. 단일 지역에서 실행 중일 때 f = 64 오류를 견딜 수 있고 약 200개의 복제본을 사용하는 SBFT 배포는 20분 내에 이러한 100만 트랜잭션을 완료하거나 초당 약833개의 트랜잭션을 완료한다

각주

참고자료

같이보기

  의견.png 이 간단한 비잔틴 장애 허용 문서는 합의 알고리즘에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.