Qaupot Blog
Software Engineering, Trip

이 글을 이해하기 위해서 컴퓨터 공학 지식이 필요하지 않습니다.

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'' 을 만들 수도 있습니다.
이 블로그는 개인 블로그입니다. 게시글은 오류를 포함하고 있을 수 있지만, 저자는 오류를 해결하기 위해 노력하고 있습니다.
게시글에 별도의 고지가 없는 경우, 크리에이티브 커먼즈 저작자표시-비영리-변경금지 4.0 라이선스를 따릅니다.

This blog is personal blog. published posts may contain some errors, but author doing efforts to clear errors.
If post have not notice of license, it under creative commons Attribution-NonCommercial-NoDerivatives 4.0.