블록체인 네트워크는 사진과 같은 블록을 체인 형태의 연결되어 있는 분산 데이터 환경에 저장하였다.
그럼 블록을 생성할 때 어떤 노드에서 생성되는 블록을 체인에 연결해야 할까??
이러한 문제를 해결하는 것이 분산 합의라고 한다.
Consensus Algorithm
블록체인 네트워크에서 어떤 참여자에게 블록을 생성활 권한을 주느냐 결정하는 것
탈 중앙화 시스템에서 결정을 내려줄 주체가 없기 때문에, 분산 시스템에서 모두가 동일한 상태를 가지고 있을 수 있도록 하기 위해서 분산 합의는 꼭 필요하다.
성공적인 분산 합의를 위해서 다음과 같은 조건이 필요하다.
- 올바른 참가들은 모두에 의해 같은 값으로 결정을 내리면서 합의과정이 끝나야 한다.
- 합의의 결과 결정된 값은 임의의 값이 될 수 없고, 적어도 하나의 올바른 참가자에 의해서 제안된 값이어야 한다.
분산 합의 시스템에는 다음과 같은 기술적 문제점이 있다.
- 노드가 제거되거나 악의적일 수 있음
- P2P 시스템이지만 모든 노드가 서로 연결되어 있지 않으면 네트워크가 불안전하다.
- 인터넷이 좋지 않으면 통신 실패가 될 가능성이 있다.
- 데이터 센터가 없으므로 통신 지연이 발생할 수 있다.
- 글로벌 시간이라는 개념이 존재하지 않아 단순히 타임스탬프에 근거하여 이벤트 순서를 합의하는 것은 불가능 하다.
분산 알고리즘 종류
위에서 말한 문제점을 해결하기 위한 다양한 합의 알고리즘이 존재하고 있고, 블록체인은 PoW, PoS, DPoS, PBFT 알고리즘 중 하나를 선택해서 사용한다.
PoW(Proof of Work)
작업 증명은 목표값 이하의 hash값을 찾는 과정을 무수히 반복함으로써 해당 작업에 참여했음을 증명하는 방식의 알고리즘이다.
작업 증명은 채굴을 통해서 작업을 증명한다.
해당 코인은 BitCoin, Ethereum, lightCoin, BitCoin Cash, Monero, Hdac 등이 있다.
PoW 알고리즘은 어떤 트랜잭션이 발생했을 경우 해당 트랜잭션이 유효한 지에 대한 합의 방법 및 새로운 블록이 진짜인지 가짜인지에 대한 검증을 수행한다.
암호화폐의 거래내역을 기록한 블록을 생성하고, 그 대가로 암호화폐를 얻는 행위
채굴은 임의의 nonce값을 대입하여 얻은 결과 값이 제시된 타깃보다 작은 결과 값이 나올 때까지 무한 반복 작업을 한다.
이러한 수학 문제를 풀이하는 과정을 1초에 몇 번이나 수행할 수 있는지에 대한 수치 정보를 해시파워라고 한다.
해시파워가 높다는 것은 주어진 시간당 더 많은 문제를 풀 수 있는 의미이고, 이에 따라 새로운 블록을 찾을 확률이 높아진다.
결국 높은 해시파워를 가진 채굴자가 확률적으로 더 많은 보상을 획득한다.
작업 난이도는 nonce값 계산의 어려운 정도를 나타낸다. 작업 난이도는 블록 헤더 정보에서 bits로 조절된다. 난이도는 2,016개의 블록이 생성되는 데 소요되는 시간이 평균 20,160분보다 적게 걸리면 난이도가 올라가고, 오래 걸리면 낮아지는 방식이다.
보상은 새로 발행되는 비트코인과 해당 블록에 포함되는 거래의 거래 수수료 합이다. 비트코인의 새로운 발행은, 채굴자가 블록을 처음 구성할 때 채굴자의 지갑으로 일정량의 비트코인이 입금되는 거래를 그 블록의 첫 거래로 추가하는 방식으로 이루어진다.
최소 가격대 형성이 확실하게 설정되어 있고 가장 큰 장점은 높은 보안성이다.
속도가 느리다.
수학적 계산을 위해 컴퓨팅 파워를 많이 사용하여 에너지가 무의미하게 많이 소비되어 자원이 낭비된다.
마이너들과 암호화폐 보유자들과의 이해관계가 일치하지 않을 수도 있음
PoS(Proof of Stake)
지분증명은 암호화폐를 보유하고 있는 지분율에 비례하여 의사결정 권한을 주는 합의 알고리즘이다.
채굴을 하지 않았으므로 채굴자는 없지만, 검증자가 존재한다.
얼마의 암호화폐 지분을 Staking 했냐에 따라 검증자가 선택되고, 더 많은 지분을 보유하고 있을수록 검증자로 선택될 확률이 높아진다.
친환경적인 시스템: 에너지 소모가 적게 듬으로 에너지 비용이 절감된다.
인센티브에 대한 강한 동조 및 지지: 합의 대리인을 직접적으로 암호화폐에 투자하게 만들고 그에 따라 투자자와 합의 대리인의 이해관계가 같아진다.
최종성 부여: 최종성을 부여하여 이미 체인에 연결된 블록들이 변경되기 힘들게 만듦
모든 참여자들이 이자를 받기 위해 코인을 보유하지만 유통량이 감소할 수 있음
보안성에 대한 확신이 없음
DPoS(Delegated Proof of Stake)
지분 증명 알고리즘을 보완하여 나타난 알고리즘
암호화폐 소유자들이 각자의 지분율에 비례하여 투표권을 행사하여 자신의 대표자를 선정하고, 대표자들끼리 합의하여 의사결정을 내림
해당 코인은 EOS, Steem 등이 있다.
대표자가 되기 위해서는 투표를 거쳐야 한다. 선출된 대표자는 블록을 생성한다. 블록을 확정하기 위해서는 2/3 이상의 승인이 필요하다.
PoS와 달리 같은 시간에 훨씬 더 많은 거래를 처리할 수 있음
수수료가 없음
네트워크보안: 지분을 위임받는 대표들의 수가 제한되어 있다 보니 탈중앙화가 되지 않아 보안에 취약할 수 있다. 익명성이 보장되는 블록체인에서 대표자를 선출하고자 한다면 대표자의 정보를 밝혀야 하는 딜레마를 가지고 있다.
대표자의 수: 암호화폐를 보유하고 있는 사람들의 수가 많아질수록, 대표자의 수가 늘어나야 한다. 대표자 수가 일정하다면 상대적인 중앙화가 이루어질 수 있기 때문이다. 하지만 이렇게 대표자의 수가 증가한다면 DPoS가 가지고 있는 속도의 장점이 줄어들게 된다.