이 글을 이해하기 위해서 컴퓨터 공학 지식이 필요하지 않습니다.
Consensus Algorithm
Blockchain 은 각자의 목적에 따라 Consensus Algorithm 이라 명명 된 Rule 들을 가지고 있습니다.
- 어떤 Miner 가 Block 을 만들 수 있는지
- 어떤 Block 이 Unique Chain 의 Block 으로 선택 되는지
- 어떤 Transaction 을 버리고 어떤 Transaction 을 남기는 지
- 어떤 Node 가 Leader 가 되는지
Consensus Algorithm 은 반드시 악의적 공격자를 방어하도록 설계되어야 합니다.
- 동일한 Miner 가 연속해서 Block 을 생산하지 못 해야 합니다.
- 신뢰할 수 있는 Miner 를 선택해야 합니다
널리 사용되는 Consensus Algorithm 은 크게 2 가지 분류로 나눠 볼 수 있습니다.
- Bitcoin 에서 시작 된 Proof Of 계열
- Practical Byzantine Fault Tolerance (PBFT) 계열
Proof Of
Public Chain 혹은 Consortium Chain 에서 주로 사용되며, Bitcoin 의 Proof of Work 가 가장 유명합니다.
이 Algorithm 을 사용하는 Blockchain 의 Miner 들은 경쟁 관계에 놓입니다.
Proof Of Work (PoW)
누구나 Miner 가 될 수 있고, Block 을 생산할 수 있습니다.
대신, Block 을 만들기 위해 충분한 Computing Power 를 지불하였음을 증명하여야 합니다. 특정한 난이도에 따른 Hash 를 산출하는 작업으로 증명할 수 있습니다. 따라서 PoW 를 사용하는 경우 Hash Rate 가 중요한 수치가 됩니다.
- 많은 Computing Power 를 지불하여야 하므로, 연속적으로 Block 을 만들기 어려워 집니다.
- 별다른 자격이 요구되지 않아 누구나 Miner 가 될 수 있습니다.
- Hash 산출은 Computing Power 의 낭비를 만들어 내며, Miner 간 경쟁이 심화될 수록 이 비용은 커지게 됩니다.
Proof Of Stake (PoS)
Blockchain 에 충분한 자산을 Stake (예치) 해야만 Miner 가 될 수 있습니다.
Blockchain 및 Crypto Currency 는 결국 사용자 간의 신뢰에서 그 가치가 매겨 지므로, 많은 자산을 가진 사용자는, 자신이 가진 자산의 가치를 만들어내는 이 시스템을 붕괴시키는 선택을 하지 않을 것이라는 것에 기인 합니다.
- 다른 Consensus 와 결합 되어 PoS Miner 사이에서의 우선순위를 결정합니다.
- PoS 는 Miner 의 자격을 제한하여 경쟁을 줄이는 효과가 있습니다.
- 많은 자산을 예치하고 있는 거래소의 존재는 PoS에 위험 요소입니다. 거래소 사용자는 원하든 혹은 원하지 않든 거래소에 권리를 위임한 상태가 됩니다.
Delegated Proof of Stake (DPoS)
Blockchain 에 충분한 자산을 Stake (예치) 해야만 Miner 가 될 수 있으며, 다른 사용자로부터 Stake 에 따른 권한을 위임 받을 수 있습니다.
- PoS 의 장단점을 이어 받습니다.
- Stake 를 Delegate (위임) 하는 기능으로, 충분한 위임을 얻을 수 있다면, PoS 에 비해 낮은 비용으로 Miner 에 진입할 수 있습니다.
- 더 많은 Delegated Stake 를 획득하기 위해, Miner 들은 포퓰리즘 공략을 내세울 수 있습니다.
Proof Of Authority (PoA)
권한을 가진 Node 만 Miner 가 될 수 있습니다.
이 경우, Blockchain 을 신뢰하는 것이 아니라, Blockchain 을 운영하는 운영팀을 신뢰하는 것이 됩니다.
다만, 운영팀이 조작을 결의 하는 것은 전체 사용자가 조작에 동의하는 것 보다 훨씬 쉬운 일입니다.
Practical Byzantine Fault Tolerance (PBFT)
Consortium Chain 혹은 Private Chain 에서 주로 사용되며, Byzantine Generals Problem 을 해결하는 전통적 방식 입니다.
이 Algorithm 을 사용하는 Blockchain 의 Miner 들은 협력 관계에 놓이며, 이 방식은 Blockchain 의 운영 주체가 명확한 경우에 유리합니다.
- 일반 유저가 Miner 를 운영할 수 없다는 뜻이므로, 운영 주체를 신뢰한다는 뜻이 됩니다.
- Public Blockchain 처럼 거대한 규모의 네트워크를 유지할 필요가 없습니다.
- 작은 네트워크 에서는 블록 전파가 충분히 빠르므로, 블록 생성 간격을 짧게 설정할 수 있습니다.
Proof Of 와 마찬가지로, PBFT 역시 다양한 파생이 있지만, 근본적인 방식은 같습니다.
- 3N + 1 규칙을 따르는 Miner (Producer 혹은 Validator) 로 운영됩니다. 21이 주로 사용됩니다.
- 3N + 1 은 최소한 이 노드 수가 있어야 N Node 만큼 Fault 를 허용할 수 있다는 뜻입니다.
- 예) 20 (3N+2) 은 N이 6 이며, 20 - 6 = 14 이므로 최소 의결 요구수는 14 입니다.
- 예) 21 (3N+0) 은 N이 6 이며, 21 - 6 = 15 이므로 최소 의결 요구수는 15 입니다.
- 예) 22 (3N+1) 은 N이 7 이며, 22 - 7 = 15 이므로 최소 의결 요구수는 15 입니다.
Node 는 매 Round 마다 Leader 를 선출하며, 선택된 Leader 는 Block 을 생산하고, 다른 Node 들로부터 검증을 받습니다.
다만, 이러한 합의 과정이 복잡하기 때문에, Leader 선출 작업 대신 Block 에 대한 후속 Block 을 생산하는 것으로 합의를 대체하기도 합니다.
예를 들면,
- Miner 1 이 Block A 를 만든 뒤, Miner 2가 그 뒤를 잇는 Block B를 만들었으나, Miner 3이 Block B를 무시하고 Block B' 를 만들었습니다.
- 이 경우 Miner 3 은 Miner 2 가 만든 Block B에 동의하지 않았다는 뜻이 됩니다.
- 이후 Miner 4 는 Block B 혹은 B' 을 선택하거나 B'' 을 만들 수도 있습니다.