개발자는 오늘도 달립니다.
[Hyperledger Fabric] 블록체인 대표적인 합의 알고리즘 - 작업증명, 지분증명 본문
이전 포스팅에서 블록체인의 종류인 퍼블릭과 프라이빗 블록체인의 정의와 특징에 대해서 알아보았습니다.
오늘은 두 블록체인 네트워크에서 보편적으로 채택하고 있는 합의 알고리즘에 대해서도
자세히 알아 보고 이를 포스팅 남기려고 합니다.
합의 알고리즘을 설명하기에 앞서,
우선 채굴(마이닝)에 대한 이해가 필요하다. 단순히 코인을 캐내서 얻는다는 의미만 알고있을 것이 아니라,
채굴이 어떻게 이루어지는지 그 과정을 이해하는 것이 좋다.
1. 작업증명(Proof of Work, PoW)
말 그대로 작업한 내용을 증명하는 합의 방식이다. 비트코인을 비롯한 이더리움, 라이트코인 등 코인을 '채굴'한다고 말하는 가상화페들 대부분이 채택하고 있다. 여기서 작업이란 수학적 문제에 대한 답을 해결하는 과정을 뜻한다. 코인을 채굴하는 채굴자들은 컴퓨터로 복잡한 수식을 풀어 조건에 맞는 해시(Hash)값을 찾는 과정을 반복한다. 이때 가장 빨리 해결한 사람에게 블록을 생성할 수 있는 권한을 주고, 그에 대한 보상으로 코인을 제공한다. 이 경우 모든 노드(채굴자)들이 찾아낸 해시값을 검증하고 승인하는 과정을 거쳐 블록에 거래 내역을 저장한다.
채굴자들이 해시 값을 찾기 위해 그 과정을 계속해서 반복하는 이유는, 해시 함수는 단방향 암호화 기술이므로 결과 값을 통해 입력 값을 알 수 없다. 따라서 결과 값이 나올 때까지 입력 값을 바꿔가며 지속적으로 실행해야 하는 것이다.
1.1 장점
모든 노드들의 승인을 거쳐야 하기 때문에 거래 내역을 위변조하기 힘들다. 이는 블록체인이 가지는 탈중앙화라는 본질을 가장 잘 살린 합의 방식.
1.2 단점
장점이 곧 단점이 될 수도 있다고 느낀게, 승인을 받기 위해선 모든 노드들을 거쳐야 하기 때문에 처리 속도가 늦어지기 때문이다. 또한 채굴 난이도가 높아질수록 연산에 필요한 에너지(전기, CPU) 소비가 크다는 점도 있다.
- 51% Attack (공격) : 어떠한 참여자가 절반 이상의 해시 파워를 가지게 되면, 블록 내용을 조작할 수 있다.
2. 지분증명(Proof of Stake, PoS)
참여자의 코인 보유량에 비례하게 의사 결정 권한을 지급하므로, 당연히 참여자의 코인 지분이 많을수록 유리해지는 방식이다. 이 때문에 코인을 많이 보유하고 있는 노드일수록 블록 생성에 참여할 수 있는 기회가 많아진다. 또한, 블록 생성에 따른 보상도 코인 보유량에 비례한다. 그런데 지분에 대한 이자의 개념으로 보상이 지급된다고 하니, 이는 PoW와는 다른 점이라고 할 수 있다.
지분증명을 통해 합의하는 대략의 과정은 다음과 같다. 네트워크에서 각 자산을 보유하고 있는 노드들은 자신이 합의하는 블록에 자산을 증명하여 데이터를 업데이트 하게 된다. 즉, 본인이 옳다고 생각하는 블록에 동의를 하기 위해 자신이 가진 stake(지분)을 해당 블록에 보여주어 증명하는 것이고, 그 결과 과반수의 자산이 동의한 블록이 더 빠르고 길게 블록들을 형성하게 된다.
2.1 장점
모든 노드들의 승인을 거치지 않아도 되기 때문에 PoW 방식보다 거래 처리 속도가 빠르다. 이는 곧 전력소비로 이어지므로 이 때문에 이더리움 재단은 기존 합의 방식인 PoW를 PoS 방식으로 전환하기 위한 '캐스퍼(Casper)' 프로젝트를 진행 중에 있다.
2.2 단점
노드 간의 '부익부 빈익빈'을 초래할 수 있다. 앞서 언급했듯이 많은 코인을 가지고 있을수록 더 많은 보상을 받는 구조이기 때문이다. 또한, 자산증명을 하는데 있어서 한계 비용(marginal cost)이 전혀 없다. 이를 'Nothing at Stake'라 하는데, 쉽게 말해서 한 노드가 블록체인에서 포크 상황이 발생했을 때 어느 쪽에 투표를 해도 손해보지 않는 상황을 말한다. 이 때문에 포크 상황이 해결되기 어려워진다(이더리움에서는 이를 해결하기 위해 보증금과 벌점 제도를 사용).
작업증명과 지분증명을 채택한 블록체인의 경우에 보상 시스템이 꼭 필요하다. 작업증명 알고리즘의 경우에 보상이 주어지기 때문에 노드들이 채굴을 한다. 지분증명의 경우 보상이 없다면 알고리즘 자체가 유효하지 않다(보유한 지분에 대한 이자로 보상이 주어지기 때문). 이 때문에 가상 화폐 외의 다른 서비스를 수행하는 사설 블록체인의 경우 내부 화폐가 필요한 합의 알고리즘을 사용할 수 없다.
가상화폐가 필요하다는 점 외에도 또 다른 문제점이 있다. 바로 부분 분기가 일어날 수 있다는 점이다. 예를 들면 작업 증명에서 A와 B블록이 거의 동시에 생성되면 각 노드는 A와 B블록 중 하나를 선택한다. 이후 블록들이 확정되어야만 이전 블록들이 확실하게 합의를 이루므로 즉각적인 거래 확정을 요구하는 서비스에는 적용이 어렵다.
'블록체인 > 하이퍼레저패브릭' 카테고리의 다른 글
[Hyperledger Fabric] 합의 프로토콜의 종류와 특성 (0) | 2021.11.03 |
---|---|
[Hyperledger Fabric] 하이퍼레저 패브릭 first-network 올리기! (v1.4.1) (0) | 2021.10.22 |
[Hyperledger Fabric] 블록체인 종류 및 합의 알고리즘 (0) | 2020.07.04 |
[Hyperledger Fabric] 블록체인에 사용되는 합의 알고리즘 3 - PBFT, DPoS, Paxos, Raft (0) | 2020.07.04 |
[Hyperledger Fabric] Hyperledger Caliper 설치 및 실행 방법 (0) | 2020.06.08 |