합의 알고리즘: PoW, PoS, BFT, PBFT

Hyeonji Yoo·2022년 10월 3일
0

작업 증명(PoW)

: 새로운 블록을 블록체인에 추가하는 작업을 완료했음을 증명하는 합의 알고리즘
ex. 비트코인, 이더리움(2.0이전)

  • 거래기록정보를 무작위 특성을 가진 nonce 값과 hash 알고리즘을 적용시켜 설정된 난이도를 충족하는 해시값을 도출하는 방식
  • 블록 생성자(채굴자 혹은 검증자) 들이 컴퓨터 연산을 통해 블록체인의 블록 헤더에 제시된 난이도 조건을 만족하는 블록 해시값을 경쟁을 통해 찾으면, 새로운 블록을 추가하는 작업이 완료(거래가 정당하다는 사실 증명) > 그 대가로 비트코인을 보상을 받는다.
  • 이러한 방식이 마치 금광에서 광부들이 금을 캐는 것과 유사하다고 해서 채굴(Mining)이라 불린다.
  • 1997년 아담 백이 고안한 해시캐시를 기반으로 개발, 비트코인 채굴에서 사용되는 PoW 알고리즘은 SHA-256 기반으로 하는 해시캐시

<장점>
1) 최대의 보안성과 비가역성: 해시값을 찾아내는 하는 작업증명의 어려움, 거래의 기록을 변경할 수 없으며 악의적 공격을 막아낼 수 있음
2) 자유롭고 개방적인 참여: 모든 거래는 자유롭고 개방적인 참여 가능하게 하며, 자신의 컴퓨팅 파워를 사용한 참여자들에게는 보상이 이루어짐

<단점>
1) 컴퓨팅 파워 낭비, 에너지 소모: 컴퓨터 성능 발달함에 따라 난이도 조건이 높아지며 컴퓨팅 파워 낭비와 에너지 소모가 심해짐
2) 블록체인 속도 느림
3) 큰 자본을 가진 기업의 연산력 장악

참고: 작업증명 (naver.com)


지분증명(PoS)

: 암호화폐 보유한 지분율에 비례하여 의사결정 권한을 주는 합의 알고리즘
ex. 이오스, 에이다(ADA), 큐텀(QTUM), 피어코인(Peercoin), 이더리움 2.0

  • 노드(거래가 정당한지 투표할 수 있는 검증자)가 보유한 자산을 기준으로 권한 분배하여 합의하고 보상을 분배 > 많은 지분을 가진 사람이 높은 확률로 더 짧은 시간안에 블록 생성할 권한을 가지게 됨
  • 각 노드마다 식별자(ID)를 만들어 합의 시 지분의 양을 계산하는 데 활용
  • 스테이킹: 본인이 소유하고 있는 화폐를 예치하여 블록체인 검증에 활용하도록 하는 것
    : 예치자에게 일정 코인 보상이 이루어짐(보증금과 유사한 개념)
    : 공격자의 네트워크 마비 방지 > 스테이킹 기간이 필수적으로 있기 때문에 그것으로 네트워크 마비시켜서 차익얻는 것을 방지시킬 수 있음

<장점>
1) 코인 소유한 검증자만 참여 > 채굴 경쟁 약화: 지분증명은 코인을 소유한 검증자만이 참여할 수 있기 때문에 과도한 연산작업이 줄어들어 채굴 경쟁 약화> 수많은 컴퓨터 동원해 코인 차지하려는 경쟁 사라지고, 에너지 과소비도 줄어듦
2) 블록체인 속도 빠름
3) 일부 거대 자본의 네트워크 장악을 막는데 유리: 자본 1% 얻는 것보다 연산력 1% 갖는게 훨씬 쉬움

<단점>
1) 소수에 의한 지분 독점: 참여를 통한 보상이 소유한 코인을 기준으로 권한 부여
2) 검증을 위한 스테이킹으로 가격변동성 증대: 암호화폐가 스테이킹이 되면서 시중에 유통되는 암호화폐수량이 줄어들어 가격 변동성 증대될 가능성이 있음

참고: PoW(작업증명) PoS(지분증명) 차이 장단점 (tistory.com), [암호화폐]작업증명(PoW)와 지분증명(PoS) 그리고 스테이킹에 대해 알아보자 (tistory.com)


PoS 예시1: 큐텀(QTUM)

: 비트코인의 단점인 느린 속도 보완하여 빠른 전송 속도 보장함과 동시에 이더리움의 스마트 계약 기능 추가하여 다양한 디앱 적용(솔리디티 이외의 다양한 언어로 개발가능) 가능한 플랫폼

  • 큐텀의 화폐 단위: QTUM

  • AAL : 비트코인 결제 시스템인 UTXO 와 이더리움 가상머신(EVM)을 결합하여 만든 기술로 UTXO 계정을 이더리움 가상머신 계약 계정에 적용하고, UTXO 트랜잭션 출력을 사용하여 체인에서 스마트 계약 생성, 거래를 계약 계정으로 보내 계약 실행 작동
    : 즉, 비트코인과 이더리움이 데이터를 저장하는 방식이 근본적으로 달라 비호환적인데, 이것을 해결해주는 기술

  • 일반적으로 위에서 설명한 PoS 채굴 방식 그대로 사용 > 가지고 있는 코인 양이 많을수록 더 많은 코인을 지속적으로 얻게 된다.


PoS 예시2: 카르다노 에이다

: 카르다노는 블록체인 플랫폼, 에이다는 카르다노 기반의 암호화폐

  • 채굴 없이 ‘우로보로스 지분증명’ 방식으로 신규 코인 발행

  • 우로보로스: 고대 그리스 신화에서 자기 꼬리를 입에 물고 있는 큰 뱀 = 무한 또는 영원을 상징
    :즉, 기존 PoS 방식의 문제점인 한 사람이 다수의 코인을 보유함으로써 발생할 수 있는 문제점 극복> 소수에 의한 지분 독점을 막기위해 PoS + 랜덤성 추가

    PoS + 랜덤성: 자격요건을 충족한 대표가 무작위적으로 선정되어 블록 검증,생성

  • 우로보로스에는 에포크와 슬롯이 있음
    1) 에포크: 검증작업을 하는 체크포인트 블록 간격을 지칭하는 말, 다수의 블록을 하나의 단위로 묶은 것(보통 50개 블록 묶어서 하나의 에폭 구성) >다수의 슬롯으로 구성
    2) 슬롯: 각 슬롯별로 대표 선정, 선정된 대표는 슬롯 내 최대 1개의 블록만 생성 가능
    : 슬롯의 대표 자격을 얻기 위해서는 에디다를 정해진 기준 이상으로 보유하고 있어야 자격 획득

  • 즉, 지분 독점을 막기 위해 일정한 자격 요건을 충족한 후보자들 가운데 임의로 대표자 선정 > 임의의 숫자 하나를 지정하면 그 숫자에 지정된 후보가 대표자가 되는 것

  • 슬롯 대표가 만든 블록은 무조건 연결되기 때문에, 만약 대표 컴퓨터 디도스 공격한다면, 네트워크 마비가 올 수 있는 위험성 존재

  • 해시 코드 사용 x, 채굴기능 제거: 블록체인 확장성에 장애물이 되기 때문 > 해시 값 찾는 작업 증명방식의 채굴기능 제거함으로써 더 많은 사용자 끌어들일 수 있음

참고: 카르다노 - 해시넷 (hash.kr)


DPoS 예시: 이오스

  • DPoS(위임지분증명)란?
    1) PoS: 일정 지분을 가진 모든 노드에게 블록 생성 권한 줌
    2) DPoS: 네트워크를 구성하는 모든 노드들의 투표 결과로 정한 ‘상위노드’ 에게 권한을 위임해 합의하도록 함 > 상위 노드 수가 적기 때문에 합의 시간, 비용을 줄일 수 있음

<장점>
1) 합의 시간, 비용의 효율성: 상위노드 수가 적기 때문에 합의 시간과 비용이 적게 들어 같은 시간동안 PoS, PoW 보다 더 많은 블록 생성 가능
2) PoS의 수수료 변동성 문제 해결: 특정 코인 보유자에게 보증을 받는 것이 몰리는 경우, 수요와 공급의 법칙에 의해 수수료 상승하게 되는 결과 > 모든 거래수수료 무료

<단점>
1) 권한이 소수에게 집중
: EOS 내 다양한 법률재정 가능 ex. 없던 수수료 부과, 혹은 수익배분 자신에게 유리
: 투표에 의해 선출되는 증인의 신뢰도 무척 중요

참고: https://za-ryong.tistory.com/entry/%EC%9D%B4%EC%98%A4%EC%8A%A4-EOS-%EC%BD%94%EC%9D%B8-%EB%B0%B1%EC%84%9C-%EB%8B%A8%EC%A0%90-%ED%95%9C%EA%B3%84


BFT(비잔틴 장애 허용)

: 비잔틴 장애가 있더라도 전체의 1/3 을 넘지 않는다면, 시스템이 정상적으로 작동하도록 허용하는 합의 알고리즘

  • 블록체인의 분산원장 체계는 제대로 돌아가기 위해서 원장을 공유하는 참여자들이 정직하게 행동해야 하며 이를 보장할 방법이 있어야 한다.

  • 만약 악의적인 노드가 존재하여 누군가 속이려 들더라도 모두가 지닌 원장은 같은 내용을 유지해야 하는 방법 또한 존재해야 한다. 이런 골칫거리가 비잔틴 장군의 문제

  • 비잔틴 장군의 문제
    : 비잔틴 장군의 문제는 광활한 영토 지역마다 장군들이 통치하는 것을 가정
    : 이웃 나라 공격이 성공하려면 같은 날, 같은 시각에 모든 장군이 이끄는 병력을 집중시켜야 하는데, 이러한 목적을 달성하기 위한 메시지가 올바르게 전달되지 못하면 병력이 분산되어 공격은 실패하게 됨
    : 또한 장군들 가운데 배신자가 있다면 이러한 가능성은 더욱 커지게 됨
    : -> 여기서 비잔틴 장군 문제의 핵심은 동일한 내용의 메시지를 장군들끼리 공유할 수 있는 방법을 찾는 것

  • 분산화된 시스템에서 이러한 합의를 달성할 수 있는 유일한 방법은 최소 3분의 2 혹은 그 이상의 신뢰할 수 있는 정직한 네트워크 노드를 확보하는 것


PBFT 합의 과정

: 어떤 분산시스템이 약속된 행동을 하지 않는 노드가 존재할 수 있는 비동기 시스템일 때 시스템에 참여한 모든 노드가 성공적으로 합의를 이룰 수 있도록 개발된 알고리즘

<과정>
1) 먼저 리더가 되는 노드(노드0)가 클라이언트의 요청을 받아 다른 노드(노드 1 ~ 노드 3)에 전파
2) 리더의 메시지를 받은 노드들은 메시지를 확인하고 다른 노드들에 다시 메시지를 전파
3) 모든 노드는 다른 노드에서 가장 많이 받은 메시지(승인 메시지)가 무엇인지를 확인하고 그 승인 메시지를 다른 노드들에게 전파
4) 각 노드들은 각자 승인한 메시지를 모두 수신하고 정족수(혹은 과반수) 이상이 승인한 메시지가 무엇인지 확인함으로써 합의를 이룬 동일한 메시지를 보유

즉, 일부 노드의 결과가 달라도, 어느정도 이상의 결과가 동일하면 합의가 이루어진 것으로 보기 때문에 다수결의 원칙을 따르는 합의 알고리즘으로 볼 수 있다.

<장점>
1) 배신자가 발생할 수 있는 비동기 네트워크에서 안전성을 보장
2) 보상의 변동성 작음: 네트워크의 모든 노드는 client 의 요청에 응답해주기 때문에, 의사결정에 도움을 준 모든 노드에게 보상이 돌아간다.

<단점>
1) 참여자 사전 파악 필요> 참여자 증가 시 성능 하락

참고: BFT 기반 합의 알고리즘 – 아이콘루프 (iconloop.com), 비잔틴 장애 허용 - 해시넷 (hash.kr), https://www.2e.co.kr/news/articleView.html?idxno=203965

0개의 댓글