"간단한 비잔틴 장애 허용"의 두 판 사이의 차이
1번째 줄: | 1번째 줄: | ||
− | '''간단한 비잔틴 장애 허용'''(SBFT; Simplified Byzantine Fault Tolerance)이란 더 나은 확장성과 최상의 대기 시간을 위해 프랙티컬 비잔틴 장애 허용(PBFT)을 기반으로 하는 비잔틴 장애 허용(BFT) 시스템으로 확장성과 분산성의 과제를 해결하는 새로운 비잔틴 내결함성 알고리즘을 구현한다. 20개 미만의 복제본을 중심으로 중앙집중화된 경우에만 잘 수행되었던 많은 이전 BFT 시스템과 달리, SBFT는 분산에 최적화되어 있으며, 100개 이상의 활성 복제본을 쉽게 처리할 수 있다. SBFT는 이더리움(ethereum)의 EVM 바이트 코드를 기반으로 한 스마트 계약 실행 | + | '''간단한 비잔틴 장애 허용'''(SBFT; Simplified Byzantine Fault Tolerance)이란 더 나은 확장성과 최상의 대기 시간을 위해 프랙티컬 비잔틴 장애 허용(PBFT)을 기반으로 하는 비잔틴 장애 허용(BFT) 시스템으로 확장성과 분산성의 과제를 해결하는 새로운 비잔틴 내결함성 알고리즘을 구현한다. 20개 미만의 복제본을 중심으로 중앙집중화된 경우에만 잘 수행되었던 많은 이전 BFT 시스템과 달리, SBFT는 분산에 최적화되어 있으며, 100개 이상의 활성 복제본을 쉽게 처리할 수 있다. SBFT는 이더리움(ethereum)의 EVM 바이트 코드를 기반으로 한 스마트 계약 실행 환경을 제공한다. |
==개요== | ==개요== | ||
− | 간단한 비잔틴 장애 허용은 이전의 많은 실용적인 알고리즘의 기술을 활용한다. 이것은 공통 모드에서의 선형 복잡성을 가지고 있으며 클라이언트 확인을 위해 단 하나의 메시지만 필요로 하는 실용적인 알고리즘이다. SBFT 합의에서 결함 있는 노드 수에 | + | 간단한 비잔틴 장애 허용은 이전의 많은 실용적인 알고리즘의 기술을 활용한다. 이것은 공통 모드에서의 선형 복잡성을 가지고 있으며 클라이언트 확인을 위해 단 하나의 메시지만 필요로 하는 실용적인 알고리즘이다. SBFT 합의에서 결함 있는 노드 수에 따라 특정 수의 노드가 블록을 수용해야 한다. 이러한 시스템은 최소한 (2f+1) 노드는 비즈니스 네트워크의 새 블록을 수용해야 한다. 여기서 f는 결함 있는 노드의 수이다. 이러한 의미에서 결함이 있는 것은 악성 노드일 수 있고, 작동하지 않는 노드일 수도 있다. 장점으로는 작업 증명보다 더 빠르며, 더 나은 확장성을 가지고 있다는 것이고, 단점으로는 중앙집권화의 경향이 강하다는 것이다. |
==특징== | ==특징== | ||
12번째 줄: | 12번째 줄: | ||
==기술== | ==기술== | ||
− | *'''일회용 주소''' : 사용자가 지갑에 있는 일부 자산을 받고 싶을 때마다 일회성 사용 주소가 할당된다. 모든 주소는 서로 다르기 때문에 다른 사용자가 트랜잭션을 | + | *'''일회용 주소''' : 사용자가 지갑에 있는 일부 자산을 받고 싶을 때마다 일회성 사용 주소가 할당된다. 모든 주소는 서로 다르기 때문에 다른 사용자가 트랜잭션을 가로챌 수 없다. |
− | *'''제로 지식 증명'''(Zero Knowledge Proof) : 제로 지식 증명은 거래의 모든 구성요소를 | + | *'''제로 지식 증명'''(Zero Knowledge Proof) : 제로 지식 증명은 거래의 모든 구성요소를 감추는 데 사용된다. 그러나 전체 네트워크는 여전히 무결성을 검증할 수 있다. 이것은 한 당사자가 다른 당사자에게 진위를 증명하는 제로 지식 증명의 도움으로 이루어진다. 이러한 방식으로 수신자와 발신자만이 거래의 구성 요소를 볼 수 있다. |
− | *'''메타 데이터 암호화''' : 전환의 메타 데이터도 암호화해 추가 보안을 확보한다. 네트워크는 | + | *'''메타 데이터 암호화''' : 전환의 메타 데이터도 암호화해 추가 보안을 확보한다. 네트워크는 진위를 검증하기 위해 키를 사용할 수 있게 할 것이다. 하지만, 더 나은 보호를 위해 키는 2~3일마다 변경된다. 또한 모두 분리되어 데이터 네트워크에 다른 부분에 보관된다. 따라서 하나가 해킹되면 다른 키를 사용하여 더 고유한 키를 생성할 수 있다. |
==단계== | ==단계== | ||
23번째 줄: | 23번째 줄: | ||
#마지막으로 거래가 시작된다. | #마지막으로 거래가 시작된다. | ||
− | 이 시스템의 또 다른 기능은 여러 단계에서 | + | 이 시스템의 또 다른 기능은 여러 단계에서 도움을 주는 계정 관리자이다. 주요 목표는 모든 자산을 안전하게 저장하는 것이다. 계정 관리자는 모든 거래 데이터를 저장한다. 관리자는 다양한 유형의 사용자를 위해 모든 종류의 다국적 자산을 포함할 수 있다. 또한 계정 관리자를 이용하여 스마트 연락처를 구성할 수 있으며, 특정 요건이 충족되면 자금을 해제할 수 있다. |
==방법== | ==방법== | ||
− | *수집기를 사용하여 전체 통신량을 줄인다. 모든 사람에게 보내는 대신에, 각 복제품은 수집자에게 보내고 수집기는 모든 사람에게 브로드 | + | *수집기를 사용하여 전체 통신량을 줄인다. 모든 사람에게 보내는 대신에, 각 복제품은 수집자에게 보내고 수집기는 모든 사람에게 브로드 캐스트 한다. 또한 SBFT는 라운드 로빈 회전 수집기를 사용하여 부하를 감소시키고 (k+1) 수집기를 사용하여 내결함성을 개선하고 느리거나 결함이 있는 수집기를 처리한다. |
− | * | + | *임계 값 서명을 사용하여 클라이언트 통신을 O(n)에서 O(1)로 줄인다. SBFT는 단일 수집기를 사용하여 임계값 서명을 집계하고 각 클라이언트에 서명 하나를 포함하는 단일 메시지를 전송하는 단계를 추가하여 클라이언트당 선형 비용을 단 하나의 메시지 비용으로 절감한다. 공개 블록체인(비트코인 및 이더리움)과 마찬가지로 SBFT는 머클 트리(Merkle tree)를 사용해 하나의 복제품에서 읽히는 정보를 효율적으로 인증한다. |
− | *올바른 보기 변경 프로토콜을 사용하여 낙관론을 도출한다. SBFT는 모든 복제본이 결함이 없고 | + | *올바른 보기 변경 프로토콜을 사용하여 낙관론을 도출한다. SBFT는 모든 복제본이 결함이 없고 동기적일 때 실행에서 더 빠른 합의 경로를 허용한다. |
*SBFT는 최신 암호화 기술을 활용한다. SBFT는 2048비트 RSA 서명에 버금가는 보안 기능을 갖춘 BLS(Boneh-Lynn-Shacham) 서명을 사용하지만 길이는 33바이트에 불과하다. | *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분 | + | SBFT는 초당 70개 이상의 트랜잭션 속도로 실제 EVM 계약의 작업 부하를 200개 이상의 복제본으로 복제하고 최대 f = 64개의 악성 복제본을 견딜 수 있다. 실험에서 SBFT는 초당 50개 이상의 트랜잭션에서 실제 EVM 트랜잭션을 실행하면서 100개가 넘는 복제본에 의해 복제되고 최대 f = 32 악성 복제본을 견딜 수 있었다. 단일 지역에서 실행 중일 때 f = 64 오류를 견딜 수 있고 약 200개의 복제본을 사용하는 SBFT 배포는 20분 이내에 이러한 100만 트랜잭션을 완료하거나 초당 약 833개의 트랜잭션을 완료한다. |
{{각주}} | {{각주}} |
2019년 9월 3일 (화) 17:20 판
간단한 비잔틴 장애 허용(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으로 가정하는 추상적 모델에서 연산을 커밋하기 위한 상각 비용은 일정한 크기의 메시지의 수라는 것을 의미한다.
기술
- 일회용 주소 : 사용자가 지갑에 있는 일부 자산을 받고 싶을 때마다 일회성 사용 주소가 할당된다. 모든 주소는 서로 다르기 때문에 다른 사용자가 트랜잭션을 가로챌 수 없다.
- 제로 지식 증명(Zero Knowledge Proof) : 제로 지식 증명은 거래의 모든 구성요소를 감추는 데 사용된다. 그러나 전체 네트워크는 여전히 무결성을 검증할 수 있다. 이것은 한 당사자가 다른 당사자에게 진위를 증명하는 제로 지식 증명의 도움으로 이루어진다. 이러한 방식으로 수신자와 발신자만이 거래의 구성 요소를 볼 수 있다.
- 메타 데이터 암호화 : 전환의 메타 데이터도 암호화해 추가 보안을 확보한다. 네트워크는 진위를 검증하기 위해 키를 사용할 수 있게 할 것이다. 하지만, 더 나은 보호를 위해 키는 2~3일마다 변경된다. 또한 모두 분리되어 데이터 네트워크에 다른 부분에 보관된다. 따라서 하나가 해킹되면 다른 키를 사용하여 더 고유한 키를 생성할 수 있다.
단계
- 자산 사용자가 더 많은 수의 고유 자산 ID를 생성하는 생성 단계로 시작한다.
- 제출 단계에서 사용자는 플랫폼의 모든 ID를 제출한다.
- ID가 지정된 사용 조건을 얻는 유효성 검증 단계를 시작한다.
- 모두 가입하면 저장되어 다른 계정으로 이전된다. 스마트 계약의 도움으로 거래가 이루어질 수 있다.
- 마지막으로 거래가 시작된다.
이 시스템의 또 다른 기능은 여러 단계에서 도움을 주는 계정 관리자이다. 주요 목표는 모든 자산을 안전하게 저장하는 것이다. 계정 관리자는 모든 거래 데이터를 저장한다. 관리자는 다양한 유형의 사용자를 위해 모든 종류의 다국적 자산을 포함할 수 있다. 또한 계정 관리자를 이용하여 스마트 연락처를 구성할 수 있으며, 특정 요건이 충족되면 자금을 해제할 수 있다.
방법
- 수집기를 사용하여 전체 통신량을 줄인다. 모든 사람에게 보내는 대신에, 각 복제품은 수집자에게 보내고 수집기는 모든 사람에게 브로드 캐스트 한다. 또한 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개의 트랜잭션을 완료한다.
각주
참고자료
- 〈SBFT: a Scalable Decentralized Trust Infrastructure for Blockchains〉, 《VMware Research》, 2018-04
- Ittai Abraham, 〈What is the difference between PBFT, Tendermint, SBFT and HotStuff ?〉, 《깃허브》, 2019-06-23
- Yevhen Leonchyk, 〈SBFT〉, 《깃허브》, 2018-05-31
- HASIB ANWAR, 〈Consensus Algorithms: The Root Of The Blockchain Technology〉, 《101 Blockchains》, 2018-08-25