의견.png

"간단한 비잔틴 장애 허용"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
(참고자료)
 
(같은 사용자의 중간 판 25개는 보이지 않습니다)
1번째 줄: 1번째 줄:
'''간단한 비잔틴 장애 허용'''(SBFT; Simplified Byzantine Fault Tolerance)이란 더 나은 확장성과 최상의 대기 시간을 위해 PBFT를 기반으로 하는 BFT 시스템으로 확장성과 분산성의 과제를 해결하는 새로운 비잔틴 내결함성 알고리즘을 구현한다. 20개 미만의 복제본을 중심으로 중앙집중화된 경우에만 잘 수행되었던 많은 이전 BFT 시스템과 달리, SBFT는 분산에 최적화되어 있으며, 100개 이상의 활성 복제본을 쉽게 처리할 수 있다. SBFT는 이더리움(ethereum)의 EVM 바이트 코드를 기반으로 한 스마트 계약 실행 환결을 제공한다.
+
'''간단한 비잔틴 장애 허용'''(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]] 바이트 코드를 기반으로 한 스마트 계약 실행 환경을 제공한다.
 +
 
 +
==개요==
 +
간단한 비잔틴 장애 허용은 이전의 많은 실용적인 알고리즘의 기술을 활용한다. 이것은 공통 모드에서의 선형 복잡성을 가지고 있으며 클라이언트 확인을 위해 단 하나의 메시지만 필요로 하는 실용적인 알고리즘이다.<ref>Yevhen Leonchyk, 〈[https://github.com/LabMazurokCom/Blockchain/wiki/SBFT SBFT]〉, 《깃허브》, 2018-05-31</ref> SBFT 합의에서 결함 있는 [[노드]] 수에 따라 특정 수의 노드가 [[블록]]을 수용해야 한다. 이러한 시스템은 최소한 (2f+1) 노드는 비즈니스 [[네트워크]]의 새 블록을 수용해야 한다. 여기서 f는 결함 있는 노드의 수이다. 이러한 의미에서 결함이 있는 것은 악성 노드일 수 있고, 작동하지 않는 노드일 수도 있다. 장점으로는 작업 증명보다 더 빠르며, 더 나은 확장성을 가지고 있다는 것이고, 단점으로는 중앙집권화의 경향이 강하다는 것이다.
 +
 
 +
==특징==
 +
N > 3f+2c 복제본의 경우 SBFT는 다음과 같은 속성을 얻는다.
 +
 
 +
*비동기 모드에서의 안전 : 주어진 시퀀스 번호에 대해 의사결정 블록을 실행하는 2개의 복제본이 동일한 의사결정 블록을 실행한다.
 +
*동기식 모드의 내성 : [[클라이언트]] 요청이 응답을 반환한다는 것을 의미한다.
 +
*공통 모드의 선형성 : 우리가 블록의 운영 횟수를 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분 이내에 이러한 100만 트랜잭션을 완료하거나 초당 약 833개의 트랜잭션을 완료한다.
  
== 개요 ==
 
간단한 비잔틴 장애 허용은 이전의 많은 실용적인 알고리즘의 기술을 활용한다. 이것은 공통 모드에서의 선형 복잡성을 가지고 있으며 클라이언트 확인을 위해 단 하나의 메시지만 필요로 하는 실용적인 알고리즘이다. SBFT 합의에서 결함 있는 노드 수에 다라 특정 수의 노드가 블록을 수용해야 한다. 이러한 시스템은 최소한 (2f+1) 노드는 비즈니스 네트워크의 새 블록을 수용해야 한다. 여기서 f는 결함 있는 노드의 수이다. 이러한 의미에서 결함이 있는 것은 악성 노드일 수 있고, 작동하지 않는 노드일 수도 있다. 장점으로는 작업 증명보다 더 빠르며, 더 나은 확장성을 가지고 있다는 것이고, 단점으로는 중앙집권화의 경향이 강하다는 것이다.
 
 
{{각주}}
 
{{각주}}
  
 
==참고자료==
 
==참고자료==
 
* 〈[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 ?]〉, 《깃허브.io》, 2019-06-23
+
* 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일마다 변경된다. 또한 모두 분리되어 데이터 네트워크에 다른 부분에 보관된다. 따라서 하나가 해킹되면 다른 키를 사용하여 더 고유한 키를 생성할 수 있다.

단계[편집]

  1. 자산 사용자가 더 많은 수의 고유 자산 ID를 생성하는 생성 단계로 시작한다.
  2. 제출 단계에서 사용자는 플랫폼의 모든 ID를 제출한다.
  3. ID가 지정된 사용 조건을 얻는 유효성 검증 단계를 시작한다.
  4. 모두 가입하면 저장되어 다른 계정으로 이전된다. 스마트 계약의 도움으로 거래가 이루어질 수 있다.
  5. 마지막으로 거래가 시작된다.

이 시스템의 또 다른 기능은 여러 단계에서 도움을 주는 계정 관리자이다. 주요 목표는 모든 자산을 안전하게 저장하는 것이다. 계정 관리자는 모든 거래 데이터를 저장한다. 관리자는 다양한 유형의 사용자를 위해 모든 종류의 다국적 자산을 포함할 수 있다. 또한 계정 관리자를 이용하여 스마트 연락처를 구성할 수 있으며, 특정 요건이 충족되면 자금을 해제할 수 있다.[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개의 트랜잭션을 완료한다.

각주[편집]

  1. Ittai Abraham, 〈What is the difference between PBFT, Tendermint, SBFT and HotStuff ?〉, 《개인블로그》, 2019-06-23
  2. Yevhen Leonchyk, 〈SBFT〉, 《깃허브》, 2018-05-31
  3. SAMMANTICS, 〈Chain: Simplified Byzantine Fault Tolerance (SBFT)〉, 《개인블로그》, 2016-08-16

참고자료[편집]

같이보기[편집]

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