Consensus Algorithm
합의 모델, 합의 방식, 합의 메커니즘, 합의 프로토콜이라고도 불리며 다수의 참여자들이 통일된 의사결정을 하기 위해 사용하는 알고리즘을 말한다.
블록체인 시스템은 네트워크의 참여하는 모든 참여자들이 동일한 데이터를 복사하여 분산 저장하기 때문에 원본과 사본의 구별이 없으며 통일된 의사결정을 내릴 수 있는 권위 있는 중앙(Center)이 존재하지 않는다.
중앙화된 서버 대신 전세계에 흩어져 있는 수많은 노드에 보관되기 때문에 각각의 노드들은 블록에 기록하는 데이터가 위변조되지 않은 원본이라는 것을 상호간에 합의하는 과정이 필요하다. 악의를 품은 노드가 존재해도 네트워크를 올바른 방향으로 이끌고자하는 다수의 노드들이 상호 검증을 거쳐 올바른 블록 생성을 이끌어내는 프로세스와 알고리즘을 합의(Consensus)라고 한다.
최초의 블록체인인 비트코인을 창시한 사토시 나카모토가 제안한 합의 알고리즘이다. 블록생성 시간동안 가장 많은 해시파워를 제공한 노드가 블록을 생성할 수 있도록 설계가 되어있다. 비트코인, 라이트코인 등 여러 암호화폐 블록체인에서 사용된다.
작업 증명은 현재 시빌 공격과 같은 블록체인 네트워크에 대한 각종 공격을 막을 수 있다고 증명된 유일한 알고리즘이다.
현재 높은 시장 가치를 형성하고 있는 주류 코인들이 채택하고 있으며 강력한 보안성 제공과 서비스 남용을 쉽게 방지할 수 있다는 장점이 있지만, 높은 전력 소모를 통한 자원 낭비, 지속적인 해시파워 유지, 특정 마이닝 세력의 해시 독점으로 인한 생태계 교란 우려 등의 단점이 있다.
지분을 많이 가지고 있는 노드에게 블록을 생성할 권한을 주는 방식이다. 작업이 아닌 더 많은 지분(해당 코인)을 가지고 있을수록 그에 비례하여 블록에 기록할 권한이 더 많이 부여된다는 개념이다. 채굴자에게는 마치 이자와 같은 방식으로 코인이 지급되며 일정 수 이상의 코인을 보관하고 있는 지갑을 블록체인 네트워크에 연결시켜놓기만 하면 보상을 받을 수 있다. 블록 생성자와 지분 생성자의 이해관계를 일치시켜 블록을 나쁜 의도로 생성할 동기를 없애고 잘못 생성할 경우 패널티를 부여한다. 이더리움은 작업 증명 방식에서 지분 증명 방식으로 합의 알고리즘을 변경하려 한다.
해시파워가 많이 필요하지 않아 경제적이고 친환경적이며 블록 생성자의 탈중앙화로 안정성을 확보할 수 있다. 또한 블록을 생성하기 위해 지분을 담보로 잡아야하기 때문에 Dumping을 방지할 수 있다는 장점이 있다. 하지만 아직 검증되지 않았기 때문에 보안성이 강한지 확인되지 않았고 지분이 많은 고래들이 권력을 독점할 가능성이 존재한다.
PoS에서 변형된, 시스템의 지분을 가진 각 노드가 투표를 통해 트랜잭션의 유효성 검사를 다른 노드에 위임하여 증명하는 개념이다. 이오스(EOS, 제3세대 암호화폐)에서 사용이 된다.
네트워크의 모든 노드의 투표 결과로 선출한 상위 노드에게 권한을 위임해 합의하도록 하는 방식으로, 스팀은 20명, EOS는 21명 등 일정 수의 증인들은 모든 권한을 위임 받아 블록 생성을 담당한다. 미국 대선의 대의원 제도 같은 간접선거 방식에 비유할 수 있다.
PoS에 비해 많은 트랜잭션을 빠르게 처리가능하며 PoW에 비해 비용이 낮다. 또한 하드포크의 위험이 낮고 증인들이 투표에 참여할 인센티브가 분명하다. 하지만 증인끼리 손쉽게 담합할 위험이 있고 공개된 소수의 증인에 대한 디도스(DDoS) 공격 위험이 있다.
아래는 다음에 더 자세히 정리한다.
장애가 있더라도 전체의 3분의 1을 넘지 않는다면 시스템이 정상 작동하도록 허용하는 합의 알고리즘이다.
네오, 질리카, 하이퍼레저, R3, ITC, 텐더민트 등에서 사용하는 합의 알고리즘으로 여러 노드로 구성된 네트워크에서 악의적 공격을 방어하기 위해 만들어졌다.
비트코인, 이더리움 등의 암호화폐를 보관할 수 있는 계정이며 블록체인에서 실행되고 개인 및 공개 키를 저장하고 해당 키와 관련된 모든 트랜잭션을 블록체인에 모니터링하고 유지하는 소프트웨어이다. 채굴과 노드에서 노드가 바로 지갑이다. 지갑의 종류에는 데스크탑(PC) 지갑, 모바일 지갑, 하드웨어 지갑, 웹 지갑 등이 있다.
지갑은 주소(공개 키, Public Key)와 암호(개인 키, Private Key)로 구성되어 있으며 주소는 다른 사람들이 암호화폐를 송금할 수 있도록 공개해도 되지만 개인 암호는 오직 지갑 소유자 본인만 알고 있어야 한다.
이더리움 주소와 개인키의 조합을 어카운트라고 한다. 이더리움 계정은 이더 잔고를 보유하고 트랜잭션을 전송할 수 있다. 이더리움 블록체인에서 주소와 키는 이더리움의 소유권과 전송을 나타내는데 주로 쓰인다.
미사용 트랜잭션 출력값(미지출 거래 출력)을 뜻한다. 비트코인은 이더리움의 어카운트 모델과 달리 계정이나 잔고가 없고 블록체인에 기록된 소비되지 않은 출력 값을 통해 거래의 유효성을 검사하여 코인의 존재 여부를 확인한다. 즉, 코인이 지갑에 저장되는 것이 아니라 UTXO에 저장된다고 보면 된다.
UTXO와 어카운트 각각의 장단점이 있어 어느 것이 더 나은 것인지는 사용하려는 목적과 기능, 사용하려는 역할에 따라 달라질 수 있다.
UTXO는 한번 사용되고 사라져 익명성과 보안성이 강해 화폐의 역할에 충실해야 할 때 적합할 수 있으며 dApp과 같이 다양한 기능을 구현하고 싶다면 스마트 컨트랙트를 활용할 수 있는 이더리움의 어카운트가 적절하다.
비트코인의 레퍼런스 클라이언트이며 개발자들은 비트코인 코어의 변경사항을 통해 기반이 되는 비트코인 프로토콜을 변경하게 되고 비트코인 코어는 풀노드를 돌리는 것을 전제로한 소프트웨어이므로 100GB가 넘는 블록체인 데이터를 다운로드 받아야 제대로 사용 가능하다.
이더리움 블록체인 네트워크를 구성하는 개별 클라이언트 노드이기 때문에 중앙집중형 서버 프로그램이 존재하지 않으며 오로지 클라이언트 프로그램만 존재하게 된다. 이더리움 클라이언트는 멀티 플랫폼 환경을 지원하기 위해 다양한 프로그래밍 언어로 개발되고 있다.
비트코인