합의 알고리즘
합의 알고리즘(Consensus Algorithm)이란?
- 다수의 참여자들이 통일된 의사결정을 하기 위해 사용하는 알고리즘
- 합의 모델, 합의 방식, 합의 매커니즘 또는 합의 프로토콜이라고도 불림
합의 알고리즘이 필요한 이유
- 블록체인 시스템의 경우 네트워크에 참여하는 모든 참여자들이 동일한 데이터를 복사하여 분산 저장하기 때문에 원본과 사본의 구별이 없으며, 통일된 의사결정을 내릴 수 있는 권위 있는 중앙(Center)이 존재하지 않는다.
- 다시 말해, 블록체인의 데이터는 중앙화된 서버 대신 전세계에 흩어져 있는 수많은 노드에 보관되기 때문에, 각각의 노드들은 블록에 기록하는 데이터가 위변조되지 않은 원본이라는 것을 상호간에 합의하는 과정이 필요하다
- 만약 블록을 생성하는, 특정 노드가 악의를 품고 조작된 데이터를 저장하거나 네트워크에 전파한다면 시스템 전체의 신뢰도가 떨어질 것이다. 이런 악의적인 상황의 발생하더라도 네트워크를 올바른 방향으로 이끌고자하는 다수의 노드들이 상호 검증을 거쳐 올바른 블록 생성을 이끌어내는 프로세스와 알고리즘을 바로 합의(Consensus)라고 한다.
합의 알고리즘의 종류를 살펴보기 전에 알아야할 용어
노드(Node)
P2P로 연결되어 블록 체인 네트워크에 연결된 모든 블록 정보를 가지는 각각의 서버
노드의 종류
- 풀 노드 : 모든 기능을 다 가지고 있는 노드
- 라이트 노드 : 모든 블록정보의 원본을 가지고 있지 않고 일종의 요약본 즉 헤더정보만 가지고 있는 노드
채굴(Mining)
채굴(Mining)이란, 암호화폐의 거래내역을 기록한 블록을 생성하고 그 대가로 암호화폐를 얻는 행위
채굴(Mining)이 필요한 이유
블록체인 네트워크를 유지시키기 위해서 필요. 거래 내역을 기록하고 기록된 거래내역을 블록에 담아 사용자들에게 전파하는 역할을 수행하고, 추가적으로 전파된 블록이 진짜인지 거짓인지에 대한 검증을 수행
합의 알고리즘의 종류
작업 증명 (PoW, Proof of Work)
- 최초의 블록체인인 비트코인을 창시한 사토시 나카모토(Satoshi Nakamoto)가 제안한 합의 알고리즘
- 블록생성 시간동안 가장 많은 해시파워를 제공한 노드가 블록을 생성할 수 있도록 설계
- 비트코인, 라이트코인(Litecoin) 등 여러 암호화폐 블록체인에서 사용
블록을 생성하기 위해 논스(Nonce)라는 임의의 값을 맞히는 과정을 마이닝(Mining, 채굴)이라고 부르는데, 블록체인 네트워크에 전송된 암호화된 거래정보를 새로운 블록에 담고, 새로운 블록을 체인에 연결하는 작업을 완료했다는 것을 증명하는데 사용되는 컴퓨팅 파워라고 이해할 수 있다. 작업 증명에서는 브랜치가 생긴 경우 가장 긴 블록체인이 남을 때까지 서로 경쟁하여 이긴 브랜치가 최종적인 브랜치로 채택이 되며, 다른 브랜치는 버려진다.
작업 증명은 현재 시빌 공격(Sybil Attack)과 같은 블록체인 네트워크에 대한 각종 공격을 막을 수 있다고 증명된 유일한 알고리즘이다.
그러나 작업 증명에도 단점이 있다. 가령, A, B, C가 동시에 채굴을 시작했고 C가 채굴에 성공했다고 한다. 만약 A와 B가 찾는 논스에 90% 근접했다고 하더라도, 지금 찾는 논스의 값을 계속 찾는 것보다는 새로운 블록을 채굴하는 게 더 효율적이다. 따라서 채굴에 성공한 하나의 노드를 제외한 나머지 모든 노드들은 에너지 자원을 낭비할 뿐이다. 이것이 작업 증명의 가장 큰 단점입니다.
PoW의 특징 | |
장점 | - 현재 높은 시장 가치를 형성하고 있는 주류 코인들이 채택하고 있습니다. - 강력한 보안성을 제공합니다. - 서비스 남용을 쉽게 방지할 수 있습니다. |
단점 | - 높은 전력 소모를 통해 자원을 낭비합니다. - 지속적으로 해시파워를 유지해야 합니다. - 특정 마이닝 세력의 해시 독점으로 인한 생태계 교란 우려가 있습니다. |
지분 증명 (PoS, Proof of Stake)
- 노드 또는 사용자가 시스템에 충분한 지분을 갖고 있다는 아이디어에서 출발
- 즉, PoS는 지분을 많이 가지고 있는 노드에게 블록을 생성할 권한을 줌
- 작업이 아닌 더 많은 지분(해당 코인)을 가지고 있을 수록 그에 비례하여 블록에 기록할 권한이 더 많이 부여된다는 개념
- 오늘날 이더리움이 작업 증명 방식에서 지분 증명 방식으로 합의 알고리즘을 변경하려 하고 있음
채굴자에게는 마치 이자와 같은 방식으로 코인이 지급되며, 일정 수 이상의 코인을 보관하고 있는 지갑을 블록체인 네트워크에 연결시켜놓기만 하면 보상을 받을 수 있다. 블록 생성자와 지분 생성자의 이해관계를 일치시킴으로써 블록을 나쁜 의도로 생성할 동기부여를 없애며, 잘못 생성할 경우 패널티를 부여한다.
PoW보다 에너지 소모가 적고, 코인을 가진 노드 누구나 네트워크에 허가없이 참여하기 때문에 분산화가 더 잘 되어 많은 노드가 의사결정 과정에 쉽게 참여할 수 있는 이점이 있다.
PoS의 특징 | |
장점 | - 해쉬파워가 많이 필요하지 않으므로 경제적이며 친환경적입니다. - 블록 생산자의 탈중앙화로 안정성을 확보할 수 있습니다. - 블록을 생성하기 위해 지분을 담보로 잡아야하기 때문에 Dumping을 방지할 수 있습니다. |
단점 | - 아직 검증되지 않았기 때문에 보안성이 강한지 확인되지 않았습니다. - 지분이 많은 고래들이 권력을 독점할 가능성이 존재합니다. |
위임 지분 증명 (DPoS. Delegated Proof of Stake)
- PoS에서 변형된 것
- 시스템의 지분을 가진 각 노드가 투표를 통해 트랜잭션의 유효성 검사를 다른 노드에 위임하여 증명하는 개념
- 이오스(EOS)에서 사용
이오스(EOS)는 위임지분증명(DPoS) 방식을 사용하는 제3세대 암호화폐
모든 노드의 자격을 가진 주주들이 블록생성에 참여하는 대신, 네트워크의 모든 노드의 투표 결과로 선출한 '상위 노드'(스팀에서는 증인, Witness이라 함)에게 권한을 위임해 합의하도록 하는 방식이다. 일정 수의 증인들(스팀은 20명, EOS는 21명)은 모든 권한을 위임 받아 블럭 생성을 담당한다. 이는 미국 대선의 대의원 제도 같은 간접선거 방식에 비유할 수 있다.
댄 라리머는 DPoS 를 사용하는 그라핀(Graphene) 엔진을 토대로 스팀과 빗쉐어를 만들고 이에 대한 성능을 증명했습니다. DPoS는 합의에 참여하는 노드의 수가 한정되어 있기 때문에 매우 빠른 성능과 확장성을 보이고 있지만, 완전히 탈중앙화된 블록체인이 아니라는 비판을 받고 있기도 합니다.
DPoS의 특징 | |
장점 | - POS에 비해 많은 트랜잭션을 빠르게 처리가능합니다. - POW에 비해 비용이 낮습니다.- 하드포크의 위험이 낮습니다. - 증인들이 투표에 참여할 인센티브가 분명합니다. |
단점 | - 증인끼리 손쉽게 담합할 위험이 있습니다. - 공개된 소수의 증인에 대한 디도스(DDoS) 공격 위험이 있습니다. |
비잔틴 장애 허용 (BFT. Byzantine Fault Tolerance)
- 장애가 있더라도 전체의 3분의 1을 넘지 않는다면, 시스템이 정상 작동하도록 허용하는 합의 알고리즘
- 블록체인의 분산원장 체계가 제대로 돌아가기 위해서는 원장을 공유하는 참여자들이 정직하게 행동해야 하며 이를 보장할 방법이 있어야 한다.
- 만약 악의적인 노드가 존재하여 누군가 속이려 들더라도 모두가 지닌 원장은 같은 내용을 유지해야 하는 방법 또한 존재해야 하는데, 이런 골칫거리가 비잔틴 장군의 문제이다.
프랙티컬 비잔틴 장애 허용 (PBFT. Practical Byzantine Fault Tolerance)
- 네오, 질리카, 하이퍼레저, R3, ITC, 텐더민트 등에서 사용하는 합의 알고리즘
- 이 기술은 여러 노드로 구성된 네트워크에서 악의적 공격을 방어하기 위해 만들어졌다.
합의 알고리즘의 종류와 장단점
위의 합의 알고리즘 이외에도 다양한 합의 알고리즘이 있으며, 각 합의 알고리즘은 그에 맞는 장단점을 가지고 있다.
체인 공개 유형 | 합의 방식 | 설명 | 장점 | 단점 | 사용코인 |
퍼블릭 비허가형 공개형 | 작업 증명 PoW | 각 노드의 연산 능력을 증명하여 블록 생성 높은 컴퓨팅 파워를 가진 노드가 블록을 생성할 확률이 높음 오랫동안 사용되며 안전성이 검증되었지만 단점도 많이 도출 | 오랫동안 검증됨 | 51% Attack 완결성 문제 느린 트랜잭션 에너지 낭비 | 비트코인 라이트코인 |
지분 증명 PoS | 소유 지분 양에 비례하여 블록 생성 권한을 높은 확률로 부여 받음 많은 지분을 가진 노드가 블록을 생성할 확률 높음 이론적으로 우수하지만 실제 대규모 환경에서 검증 사례가 부족 | 51% Attack 내성 빠른 트랜잭션 에너지 낭비 적음 | 완결성 문제 검증 부족 | 퀀텀 네오 스트라디스 | |
위임 지분 증명 DPos | 일부 위임된 Validator끼리 PoS 수행 트랜잭션 속도가 더 빠름 신뢰도는 Validator의 신뢰도에 종속 | 빠른 트랜잭션 에너지 낭비 적음 | 완전성 문제 검증 부족 탈중앙성 부족 보안 취약 | 스팀 이오스 아크 라이즈 | |
경과 시간 증명 PoET | 경쟁적 연산으로 낭비되는 에너지를 줄이면서 작업 증명과 유사 효과 하이퍼레저 쏘투스 레이크(Sawtooth Lake)에서 제안 인텔 SGX을 기반으로 블록을 생성하는 리더를 랜덤으로 선정 | 검증된 방법의 개선 에너지 낭비 적음 | 특정 HW 종속 | 쏘투스 | |
프라이빗 허가형 컨소시엄 | PBTF | 참가자 1명이 프라이머리(리더)가 되어 모든 참가자에게 요청 송신 그 요청에 대한 결과를 집계한 뒤 다수의 값을 사용해 블록을 확정 각 노드는 브로드캐스트 된 명령을 받게 되면 모든 노드에 회신 각 노드는 명령을 일정 수 이상 수신하면 명령을 실행하고 블록을 등록 | 완결성 문제 해결 빠른 트랜잭션 | 참여자 사전 파악 필요 참가자 증가 시 성능 하락 | 페브릭 |
한 증명 PoA | 트랜잭션 및 블록의 Validator라고 승인된 계정에 의해 유효성이 검사 Validator의 권리를 얻으므로 그들이 얻은 지위를 유지하고자 함 자신의 신원에 부정적 평판이 생기길 원치 않도록 노력할 거라 가정 | ||||
PAXOS | 트랜잭션 및 블록의 Validator라고 승인된 계정에 의해 유효성이 검사 Validator가 될 수 있는 권리를얻으므로 그들이 얻은 지위를 유지하고자 함 자신의 신원에 부정적인 평판이 생기길 원치 않도록 노력할 것이라 가정 | ||||
RAFT | 리더를 선정한 후 시스템의 모든 변화를 리더를 통해 결정 신뢰된 네트워크에서만 사용 | 리더의 조작 가능 BTF 보장하지 않음 | |||
Sieve | IBM에서 고안한 PBFT 확장 알고리즘 실행결과 전송과 집계 결과 전송으로 흐름이 나뉜다. |
'Blockchain' 카테고리의 다른 글
Error: invalid argument 0: json: cannot unmarshal hex string without 0x prefix into Go struct field TransactionArgs.data of type hexutil.Bytes (0) | 2022.05.23 |
---|---|
[실습] 자바스크립트로 간단한 니모닉 지갑 (Mnemonic Wallet) 개발하기 (0) | 2022.05.18 |
블록체인 심화 (3) - 비트코인과 이더리움의 트랜잭션 데이터 구조 차이 (0) | 2022.05.12 |
블록체인 심화 (2) - 분산원장기술 vs. 중앙집중원장 (0) | 2022.05.12 |
블록체인 심화 (1) - 공개 범위에 따른 블록체인 종류 (0) | 2022.05.12 |