📍 합의 알고리즘(Consensus algorithm)이란?
- 다수의 참여자들이 통일된 의사결정을 하기 위해 사용하는 알고리즘이다.
- 블록체인은 통일된 의사결정을 하는 중앙 관리자가 존재하지 않는다.
이 때문에 참여자의 의견 일치를 합리적이고 효율적으로 하기 위해 다양한 알고리즘이 개발되었다.
- 블록체인 데이터는 수많은 노드에 보관되고,
각 노드들은 블록에 기록된 데이터가 위조되지 않은 원본이라는 것을 합의하는 과정을 필요로 한다.
특정 노드가 악의를 품고 데이터를 조작하는 등의 악의적인 상황이 발생하더라도
다수의 노드들이 상호검증을 거쳐 올바른 블록 생성을 이끌어내기 위한 알고리즘이 '합의 알고리즘'이다.
- 가장 일반적인 합의 알고리즘 유형으로는 '작업 증명'과 '지분 증명'이 있다.
📍 작업 증명(PoW, Proof of Work)이란?
- '작업'이란 '채굴'에 이르기까지의 연산과정을 말한다.
- '작업 증명'이란 목푯값 이하의 해시를 찾는 과정을 무수히 반복함으로써
해당 작업에 참여했음을 증명하는 방식의 알고리즘이다.
- 채굴을 통해 작업 증명을 한다.
- 메인 체인을 선택할 때는, 가장 긴 체인을 선택하는 알고리즘인 '고스트 프로토콜'을 사용한다.
- 채굴자들은 컴퓨터로 복잡한 수식을 풀어 조건에 맞는 해시값을 찾는 과정을 반복한다.
이 경우 모든 노드들이 찾아낸 해시값을 검증하고 승인하는 과정을 거쳐 블록에 거래 내역을 저장한다.
모든 노드들의 승인을 거쳐야 하기 때문에 거래 내역을 속이기가 힘들다는 장점이 있다.
- 작업 증명은 '탈중앙화'라는 본질을 가장 잘 살린 합의 방식이다.
그러나 위와 같은 과정 때문에 거래 처리 속도가 늦어진다는 한계가 있다.
또한 채굴에 필요한 에너지 소비가 심하다는 것도 단점이다.
위 한계를 극복하기 위해
일정 조건에 따라 블록 생성에 참여하는 노드들을 제한하는 지분 증명 방식이 등장했다.
📍 지분 증명(PoS, Proof of Stake)이란?
- 해당 암호화폐를 보유하고 있는 지분율에 비례하여 의사결정을 주는 합의 알고리즘이다.
- 주주총회에서 주식 지분율에 비례하여 의사결정 권한을 가지는 것과 비슷하다.
- 작업 증명의 문제점인 막대한 에너지 및 리소스 소모를 해결하기 위해 등장했다. 즉, 채굴 과정이 필요하지 않다.
- 누구든 해당 네트워크의 암호화폐만 있다면 ID를 만들 수 있고, 블록을 생성할 권한은 자신의 ID에 보유한 암호화폐의 양으로 결정된다.
따라서 많은 지분을 가진 사람이 더 높은 확률로 더 짧은 시간 안에 블록을 생성할 권한을 가지게 된다.
- 자본주의가 반영된 증명 방식이기 때문에, 소수의 사람들에게 자금이 집중될 수 있다는 단점이 있다. 한마디로 부익부 빈익빈.
- Nothing at stake problem (= 위험에 노출되지 않는 문제)
: 많은 지분을 가진 노드가 공격을 목적으로 두 개의 블록에 모두 증명을 해놓고
거짓인 체인도 참인 것처럼 길게 체인을 형성시켰을 때
이에 새로 참여한 검증자는 어느 것이 정당한 블록체인인지 알 수 없다.
그래서 새로 많은 지분을 사들여 검증에 참여하는 노드가 거짓 블록체인에 합의하는 경우 제대로 된 거래를 한 사람은 공격당할 수 있다.
공격자가 이중 지불로 블록을 추가했을 때
검증자는 블록의 정당성 여부와 상관없이 양쪽 모두에 자신들의 지분을 증명하는 것이 유리하다.
그래야 어느 것이 참이 되든 보상을 받을 수 있기 때문이다.
즉 검증자가 두 곳에 다 투표를 해서 포크 상황이 쉽게 해결되지 않는 문제가 발생한다.
* 이중 지불(double spending)이란?
원본 파일에 저장된 가치를 지불한 뒤, 해당 파일을 복사하여 다른 사람에게 또 지불하는 것을 말한다.
예를 들어, A가 B에게 1,000원이라고 기록된 파일을 전송한 후 다시 해당 파일을 복사하여 C에게 또 1,000원을 전송하는 것을 말한다.
이더리움 개발자들은 '보증금'과 '벌금'제도를 부가해서 위 문제를 해결하려고 하고 있다.
검증자들이 지분을 증명할 때 보증금을 어느 정도 걸어놓고 블록이 거짓임이 드러나게 되면 보증금에서 벌금을 차감하는 방식이다.
📍 위임 지분 증명(DPoS, Delegated Proof-of-Stake)이란?
- 암호화폐 소유자들이 각자의 지분율에 비례하여 투표권을 행사하여 자신의 대표자를 선정하고
이 대표자들끼리 합의하여 의사결정을 내리는 합의 알고리즘이다.
- 노드들이 코인 보유량에 따라 투표권을 행사해 중요한 의사결정 권한을 수행할 일종의 대리인을 선출하는 합의 방식이다.
- 지분증명(PoS)에 비해 많은 트랜잭션을 빠르게 처리할 수 있다.
- 작업증명(PoW)에 비해 비용이 낮다.
- 하지만 노드들의 투표율이 저조할 경우, 소수의 대표 노드들에 의해 블록체인 생테계가 좌지우지될 수 있다.
* 참고 자료
http://wiki.hash.kr/index.php/%EC%A7%80%EB%B6%84%EC%A6%9D%EB%AA%85
'Programming > 블록체인' 카테고리의 다른 글
[블록체인-6] 디앱(DApp) (0) | 2022.03.07 |
---|---|
[블록체인-5] 이더리움(Ethereum) / 스마트 컨트랙트(Smart contract) / EVM (0) | 2022.03.06 |
[블록체인-3] 분산원장기술 / 채굴 (1) | 2022.03.01 |
[블록체인-2] 블록체인은 비트코인과 같을까? 비트코인은 왜 만들어졌을까? (1) | 2022.02.28 |
[블록체인-1] 블록체인이란? (0) | 2022.02.27 |