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