- 블록체인에서는 수 많은 사람들이 네트워크에 참가한다.
- 블록체인 시스템에서는 권위 있는 중앙이 없고, 모든 참여자들은 동일한 데이터의 사본을 저장하고 이는 원본과 사본의 구분이 없다.
- 블록체인의 데이터는 수 많은 노드에 저장되어 있고, 각각의 노드들은 블록에 기록하는 데이터가 유효한 데이터, 즉 위변조가 일어나지 않은 원본 데이터라는 것을 상호간에 합의가 필요한 것이다.
- 이때, 다수의 참여자들이 통일된 의사소통을 하기 위해서 사용하는 알고리즘을 합의 알고리즘이라고 한다.
사토시 나카모토가 제안한 합의 알고리즘이다.
강한 보안성을 제공하고 탈중앙화되어 있지만, 자원을 많이 소모하고 특정 채굴 세역이 해시 독점을 통해 생태계를 교란할 수 있는 가능성이 있다.
블록 생성 시간동안, 가장 많은 자원(해시파워)을 제공한 노드가 블록을 생성할 권한을 얻는다.
PoW에서는 체인이 두 갈래로 갈릴 수 있다. 하지만, 하나의 체인을 따라가야 하기에 두 체인 중 하나를 선택해야 한다.
이때, 블록이 더 많은 체인이 선택되고 다른 체인은 버린다. (트랜잭션이 취소된다)
이때, 체인이 변경되는 것은 잘못된 합의가 있을 수 있음을 의미하고 liveness를 보장하는 대신 safety를 포기하는 것임을 의미한다.
여러 개의 노드가 동일한 논스의 값을 찾는다면, 가장 먼저 값을 찾는 노드가 블록을 생성하고 보상을 받는다.
이 과정에서 다른 노드들의 작업은 채굴에 실패하고, 이 노드들이 논스값을 찾기 위해서 사용한 에너지는 결과적으로 낭비된다.
비트코인, 라이트코인 등의 암호화폐 블록체인에서 사용된다.
🧅 블록을 생성하기 위해서 Nonce라는 임의의 값을 맞추는 과정을 채굴이라고 한다.
PoS는 지분(해당 코인)을 많이 가진 노드에게 블록을 생성할 권한을 준다.
(블록을 생성할 확률이 높아진다)
PoW에 비해서 에너지 소모가 적고 코인을 가진 누구나 네트워크에 참여할 수 있기에 분산화가 잘 되어 많은 노드가 의사 결정 과정에 쉽게 참여할 수 있다.
또한, 블록 생성자의 탈중앙화로 안정성이 높다.
지분에 비례하여 블록을 생성할 권한이 더 많이 부여된다.
채굴자에게는 이자와 같은 방식으로 코인이 지급되며 일정 수 이상의 코인이 보관된 지갑을 블록체인 네트워크에 연결시키면, 보상을 받을 수 있다.
블록 생성자와 지분 생성자의 이해관계를 일치시켜 나쁜의도로 블록을 생성할 동기 부여를 없앤다.
하지만 아직 검증되지 않아 보안성이 확인되지 않았고, 지분이 많은 노드들이 권력을 독점할 가능성이 있다.
퀀텀, 네오, 스트라디스 등의 암호화폐 블록체인에서 사용된다.
🥩 블록을 잘못 생성할 경우 패널티가 부여된다.
PoS에서 변형된 알고리즘으로, 지분을 가지는 노드가 투표를 통해서 트랜잭션의 유효성 검사를 다른 노드에 위임하여 증명한다.
모든 노드가 블록 생성에 참여하지 않는다.
대신에, 투표의 결과로 선출된 상위 노드(이오스는 21개, 스팀은 20개)가 모든 권한을 위임받아 블럭을 생성한다.
내가 투표한 노드가 선출되어 블럭을 생성하면 나 역시 보상(인센티브)을 받기에 투표에 참여할 동기부여가 된다.
🍬 코인을 통해 투표할 수 있다.
PoS에 비해서 트랜잭션을 빠르게 처리하지만, (이오스의 TPS는 약 3000) 권한을 가진 노드들이 담함을 할 수도 있고, 공개된 상위 노드들이 DDoS 공격 위험에 처할 수 있다.
대표적으로 DPoS 알고리즘을 사용하는 암호화폐 블록체인으로 이오스(EOS), 스팀, 아크, 라이즈가 있다.
PBFT는 프랙티컬 비잔틴 장애 허용으로, PoW와 PoS의 불확실성과 성능문제를 해결하였다.
분산 컴퓨팅의 한 이론으로 BFT(비잔틴 장군 문제)를 개선하여 더 빠르고 실용적이게 만들었다.
🌸 BFT는 복잡하고 악의적인 행위자가 있을 때에도 정상적으로 시스템이 작동할 수 있도록 한다.
🌸 다만, 신뢰할 수 있는 참여자들이 있는 컨소시엄형 블록체인 시스템에서는 참여자들이 악위적인 행위를 하지 않을 것이라고 믿고 서비스를 하기에 특정 상황에 노드에 문제가 생기는 경우를 대비한 CFT(Crash Fault Tolerance)기반의 알고리즘이 우선된다.
기존의 BFT는 동기식 네트워크에서만 합의가 가능했던 문제가 있었고, PBFT는 이 문제를 해결하여 비잔틴 노드(고의로 잘못된 정보를 전달하는 노드)가 있는 비동기 네트워크에서도 모든 노드가 합의를 이룰 수 있게 하였다.
PBFT는 사전에 네트워크의 모든 참여자를 아는 상태에서 참가자 한 명이 리더가 되어 다른 모든 사용자들에게 요청을 보낸다.
그 요청의 결과를 집계하여 다수의 값을 사용하여 블록을 생성한다.
부정한 노드의 수가 n개라면, 노드의 수는 3n+1이 되어야 하고 확정에는 n+1개의 노드가 필요하다.
2/3 이상의 노드가 합의하면 검증되기에 빠르고 노드의 수가 적어져 보안에도 유리하다.
PBFT는 트랜잭션의 완결성과 짧은 거래 확정시간, PoS를 기반으로 하기에 거래 비용과 에너지 소비가 작다는 장점이 있다.
하지만 노드의 수가 늘어나면 노드의 합의를 위해서 노드간 통신의 횟수가 기하급수적으로 증가한다.
🌼 전체 노드의 N제곱 수준
페브릭 등의 암호화폐 블록체인에서 사용된다.
참고 자료 : 코드 스테이츠