CypherBFT 합의 프로토콜

Cypherium
Cypherium
Published in
11 min readMay 15, 2020

--

리브라는 백서에서 간단하고 사용하기 쉬운 글로벌 금융 인프라를 구축해 블록체인 개념을 도입하고, 사람들에게 국경 없는 결제 서비스를 제공하는 것이 목표라고 강조합니다. 리브라가 사용하는 합의 프로토콜은 LibraBFT으로, HotStuff을 응용한 새로운 비잔틴 장애 허용 알고리즘입니다.

HotStuff 합의 알고리즘은 리브라가 채택하면서 주목을 받기 시작했다고 볼 수 있습니다. HotStuff 를 연구한 수석 과학자 Dahlia Malki에 따르면, 지금까지 HotStuff를 채택한 주요 프로젝트는 4개에 불과하지만 앞으로 더 늘어날 것으로 예상됩니다.

Cypherium은 HotStuff의 얼리 어답터(Early Adopter)입니다. Cypherium CEO Sky Guo와 아바랩스(Ava Labs)의 공동 설립자인 Ted Yin 는 HotStuff 알고리즘을 공동 연구하였고 본 연구를 통해 무허가형이면서 오픈된 HotStuff 합의 메커니즘을 메인넷 상으로 구현하고자 합니다.

‘허가형’과 ‘무허가형’ 블록체인의 차이는 기업이 검증 노드로서 블록체인 네트워크에 접근할 수 있는지와 관련이 있습니다. 먼저 허가형 블록체인의 경우, 기업은 보안에 영향 없이 네트워크의 안정성을 보장하기 위해 허가 모드로 검증자 노드를 실행하게 됩니다.

반면, 무허가형 블록체인에서는 기술적인 요건을 충족하는 어느 기업이든 검증자 노드를 실행할 수 있습니다. 예를 들어 이더리움 같은 무허가형 체인은 적절한 논스 값을 발견한 채굴자라면 거래 처리에 참여할 수 있고, 일정한 고정 채굴 보상과 거래 수수료 보상을 받을 수 있습니다.

문제는 이런 방식이 전체 시스템에는 도움이 되지만, 체인을 설계할 때 전체적인 네트워크 성능과 보안 작업에 더욱 더 고도화된 작업이 요구 됩니다. 무허가형 블록체인은 허가형 블록체인이 되기 쉽지만, 그 반대는 훨씬 어렵습니다.

HotStuff 합의 프로토타입의 검증자 ID는 고정된 범위 안에 있으며, LibraBFT(LBFT)도 지분증명(PoS) 메커니즘에 기초합니다. LBFT는 주기(epoch) 개념을 도입하고, 합의에 참여하는 노드의 교체가 가능하게 하며, 인센티브 및 페널티 메커니즘을 추가하는 등 HotStuff를 블록체인에 이용할 때보다 발전되고 실용적인 메커니즘을 추구합니다. 아울러 지도 검증자(leader)가 공격받는 것을 막기 위해 예측 불가능한 지도자 선거 메커니즘(VRF; Verifiable random function) 등도 도입되었습니다.

Cypherium 팀 역시 HotStuff를 처음 구현할 때 지분증명 시스템을 사용하는 것을 고려했습니다. 하지만 지분증명 메커니즘은 제한적인 특성 때문에 해커들을 쉽게 끌어들이고, 허가된 체인에만 적합하며, 무허가형 퍼블릭 체인이라는 궁극적인 목표를 달성할 수 없어 사용하지 않기로 판단했습니다.

Cypherium CEO Sky Guo가 기본적인 퍼블릭 체인의 디자인을 위해 어떤 합의 알고리즘을 사용할지 고심하고 있을 때, Sky CEO에게 HotStuff 프로토콜의 존재를 알려준 사람은 아바랩스(Ava Labs)의 공동창업자이자 HotStuff 논문의 첫 저자인 Ted Yin이었습니다. Sky CEO는 HotStuff의 구체적인 기술, 디자인 및 성능에 대해 Ted와 함께 논의한 결과, Sky와 Cypherium 개발팀은 HotStuff가 PBFT 알고리즘을 이상적으로 보완할 수 있을 것이라는 결론을 내렸습니다. Cypherium 듀얼 체인 구조에서, 한 체인은 작업 증명 메커니즘의 선거 교대 작업(electoral rotation operations)을 하는 체인이고, 다른 체인은 컨센서스 위원회(consensus committee)의 현재 검증자 노드에 기초한 거래 체인입니다.

CypherBFT 합의 프로토콜 기술

Cypherium은 작업 증명(PoW) 메커니즘을 채택하였기에 어떠한 컴퓨팅 장치 든지 검증자 노드가 될 수 있으며, 제삼자 의존 없이 Cypherium 코인(CPH)을 채굴할 수 있습니다.

작업 증명 방식에서는 채굴자가 채굴에 성공할 때마다, 검증 위원회(verifier committee)에 가장 많이 참여했던 노드가 위원회를 떠나고, 새로운 채굴자가 검증 위원회의 위원이 됩니다. 네트워크가 영구적인 역동적 교대(permanent dynamic rotation)를 하므로 그 누구도 선거 결과를 예측할 수 없습니다.

키 체인(Key chain)의 형성 과정에서, 각 위원회 교대가 아래와 같이 진행됩니다.

그림 1

작업 증명 시스템은 계산 난이도가 끊임없이 조정되면서 검증 값을 얻는 시간을 예측할 수 없게 됩니다. 이런 이유로 우리는 키 체인을 슬로우 체인, 즉 평균적으로 몇 분 만에 생성되는 블록으로 정의하고, 합의 위원회나 리더 교체 이벤트만 기록합니다.

키 블록을 확인한 뒤, 키 블록에 속하는 합의 검증 노드는 리더 아래에서 트랜잭션 패키지의 합의 처리에 참여하며, 아래 그림과 같이 V1, V2 , V3 , V4 , V5 뷰를 형성합니다.

그림 2

트랜젝션(transaction) 체인은 이 뷰들이 다른 체인을 만들기 위해 서로 연결된 것을 말합니다. 거래 체인 단계에서는 작업 증명 시스템식 계산이 필요 없기 때문에 각 뷰에 대한 검증은 합의 위원회의 합의 서명에 의해서만 검증됩니다. 이 때문에 블록 생산이 매우 빠르며, 초당 최대 6,000건의 거래를 처리할 수 있습니다.

아래 그림에서는 키 체인과 거래 체인이 HotStuff 알고리즘에서 하나로 연결되어 Cypherium 고유의 듀얼 체인을 이루는 것을 보여줍니다.

그림 3

작업 증명 방식을 통해 채굴하는 일반 노드는 현재 모든 검증 노드로 이를 전파하며, V2의 리더는 뷰 전환(View Change)를 시작합니다. 리더는 그림 2에서 Cmd 부분에 해당하는 ‘Cmd type=key’를 전송하는데, 이는 검증자 노드에 대한 뷰 전환이 요청되었음을 뜻합니다. 그림 2의 결정(DECIDE) 단계가 완료되면 새로운 뷰가 생성됩니다.

뷰는 현재 컨센서스 위원회에 속한 모든 검증자 노드의 ID 정보(퍼블릭 키, IP 등)를 기록해야 합니다. 저장 공간을 절약하고, 검색을 편하게 하기 위해 이 정보들은 별도의 키 블록체인(Key Blockchain)으로 저장되거나, 거래 체인에 기록되기도 합니다. 거래 체인은 Cmd type=tx으로 키 블록체인과 차별화됩니다.

검증자들은 공유 txpool 프로토콜을 통해 클라이언트에게서 거래를 수신하고, 이 거래를 공유합니다. 각 거래 그룹화 단계에서는 주도적 역할(리더)을 수행하는 검증자가 존재하며, 이 검증자는 거래 블록을 이전의 거래 기록을 모두 포함한 블록으로 확장할 것을 제안합니다.

검증자는 제안된 블록을 수신하고 투표 규칙을 확인해 해당 블록에 투표할지를 결정합니다. 만약 검증자가 이 블록에 투표 의사가 있으면, 검증자는 외부 영향 없이 해당 블록의 트랜잭션을 실행합니다. 그다음 검증자는 해당 블록에 주는 표와 블록의 상태를 리더에게 보내게 됩니다. 리더는 모든 검증자로부터 투표 결과를 수집한 뒤, 정족수 인증서(QC, quorum certificate)를 생성합니다.

그림 4

해당 블록이 받은 ‘2f +1개 투표’의 증거인 QC는 블록 데이터와 함께 모든 검증자에게 발송됩니다. 연속 3-체인 커밋 규칙(continuous 3-chain commit rule)이 충족되면 블록이 커밋(commit)됩니다. 즉, k번째 차례(round)에 QC가 있으면서, k+1과 k+2차례에 두 블록이 있고 QC가 확인된다면, 그 블록은 커밋됩니다.

커밋 규칙은 궁극적으로 정직한 검증자가 블록을 커밋할 수 있도록 합니다. Cypherium 체인은 모든 정직한 검증자가 결국 그 블록을 커밋하도록 보장합니다. 블록 시퀀스가 커밋되면, 거래가 실행된 뒤의 상태가 유지되어 나중에도 똑같은 데이터베이스를 생성할 수 있게 됩니다.

각 검증기 노드에는 각 단계(준비, 사전 커밋, 커밋, 결정) 사이의 시간 차이를 기록하는 페이스메이커(PaceMaker)가 있습니다. 만약 시간이 초과되면 뷰 전환 요청이 새 리더에게 바로 전송됩니다. 새 리더도 응답하지 않을 경우, 다음 리더에게로 전송됩니다.

기존 뷰 전환 PBFT에서의 메시징(messaging)은 O(n²)의 복잡성을 가지고 있습니다. 즉, 뷰 전환 전에 모든 정직한 검증자 노드는 실제로 모든 정직한 노드들이 다음 뷰로 진행하는지를 확인해야 했습니다.

HotStuff는 PBFT의 전통적인 2단계 합의를 3단계로 바꾸고, 뷰 전환 비용을 O(n)으로 줄이며 혁신적인 변환을 도모했습니다. 뷰 전환은 다른 노드가 이에 대해 알고 있는지를 확인할 필요가 없습니다. 즉, 뷰 스스로 바꿀 수 있기 때문에 메시지 복잡성은 O(n²)에서 O(n)로 감소되는 것입니다.

뷰 전환은 정직한 노드가 뷰 전환을 새 리더에게 직접 요청하고 새 리더의 피드백을 받으면서 시작됩니다.

Cypherium 체인은 뷰 전환이 완료된 뒤, 해당 QC와 변경 결과를 기록하고, 새로운 키 블록을 형성하여 새로운 합의 위원회 아래에서 위에서 설명한 절차를 반복합니다.

Cypherium은 작업 증명(PoW; Proof of Work) 시스템과 HotStuff를 합친 하이브리드 합의 메커니즘이 적용되는 독특한 CypherBFT를 만들었습니다. 이로써 Cypherium은 무허가형 듀얼 체인 합의 메커니즘으로 더욱 보완된 HotStuff를 구현해낼 수 있었습니다.

Cypherium 소개

Cypherium은 비트코인의 작업증명(Proof of Work) 알고리즘과 페이스북 Libra의 핫스터프(HotStuff) 알고리즘을 활용한 듀얼체인 구조의 컨센서스 메커니즘 기반 기업용 블록체인 플랫폼으로서, 혁신적이면서 새로운 분산 네트워크를 통해, 즉각적이고 최종적인 거래 및 튜링 완전한 스마트 컨트랙트를 지원하는 최초의 기업용 블록체인 플랫폼입니다.

Cypherium은 ▲구글 ▲아마존 ▲Microsoft ▲IBM ▲미국 연방준비제도(Federal Reserve Board) 등 세계적인 IT 기업 및 정부 기관과 파트너십을 맺었고, ▲페이스북 ▲JP모건 ▲마이크로소프트 ▲아마존 ▲인텔 등 글로벌 기업들로 구성된 블록체인 기술 연구 컨소시엄 ‘IC3’와 함께 블록체인 기술을 연구하고 있습니다. Cypherium은 이러한 글로벌 네트워크와 혁신적인 블록체인 기술력을 바탕으로 세계 유수의 기업에 기업용 블록체인 솔루션을 제공하고 있습니다. Cypherium의 블록체인 기술은 엔터프라이즈 솔루션 분야에서 새로운 비즈니스 및 거버넌스에 대한 혁신적인 비전을 제시합니다.

Cypherium 공식 채널

Homepage: https://cypherium.io/
Medium: https://medium.com/@cypherium/
KakaoTalk: https://open.kakao.com/o/ghgVo4Ob
Telegram: https://t.me/cypherium_supergroup
Telegram Asia: https://t.me/cypherium_asia
Twitter: https://twitter.com/CypheriumChain?s=20
Reddit: https://www.reddit.com/r/Cypherium/
Github: https://github.com/cypherium/CypherTestBin
Contact Us: contact.kr@cypherium.io

Cypherium 소개 자료

▪ Cypherium Introduction : https://bit.ly/37n01Vl
▪ Nasdaq Interview : https://bit.ly/31R6dUH
▪ Google X Cypherium Use Case : https://cloud.google.com/customers/randstad/
▪ Google Partnership : https://bit.ly/2HnPhve
▪ Amazon Partnership : https://bloom.bg/2OTSm9K
▪ IBM Partnership : https://bit.ly/37mxxLq
▪ USFPC Partnership : https://bit.ly/2SDYJ2Y
▪ IC3 Partnership : https://bit.ly/37gKKpa

Cypherium에 대한 자세한 정보는 공식 홈페이지(https://cypherium.io)에서 확인할 수 있으며, 궁금한 사항은 이메일(contact.kr@cypherium.io)로 문의해 주시면 감사하겠습니다.

--

--