SKKRYPTO 3회차 - 합의 알고리즘

명성호·2023년 4월 1일
0

합의 알고리즘

합의 : 서로 의견이 일치하거나 혹은 그 의견
-> 어떤 문제에 대한 의견을 일치해 가는 과정

합의 알고리즘 : 다수의 참여자들이 통일된 의사결정을 하기 위해 사용하는 알고리즘

블록체인 시스템의 경우 네트워크에 참여하는 모든 참여자들이 동일한 데이터를 복사하여 분산 저장하기 때문에 통일된 의사결정을 내릴 수 있는 권위 있는 중앙장치가 없다.
-> 합리적이고 효율적인 의사결정을 내리기 위해 발명된 것이 합의 알고리즘
ex) 작업증명(PoW), 지분증명(PoS)

작업증명(PoW)

  • 작업증명(PoW)는 사토시 나카모토의 논문 ‘Bitcoin: A Peer-to-Peer Electronic Cash System’에서 처음 소개된 메커니즘으로 비트코인을 비롯한 여러 블록체인에 적용되어 있는 전형적인 합의 알고리즘.

원리
1. 네트워크에 참여하는 모든 노드는 블록 생성의 권한을 가진다.
-> 블록은 거래 내역을 가지고 있으므로 블록을 생성한다는 것은 해당 블록 내에 기록된 거래 내역들이 입증되었음을 의미한다.
2. 블록을 생성하기 위해서는 특정한 난이도의 해시값을 구하는 수학적 연산을 수행.

위의 이미지에서 볼 수 있듯이 작은 변화로도 발생하는 해시값이 크게 달라진다.
작업증명은 sha-256과 같은 알고리즘을 통해 발생한 해시값을 여러 개의 0비트로 시작한다. 블록의 해시에 필요한 0비트의 개수만큼 발견될 때까지 임시값(nonce)를 증가시키는 방법으로 구현된다. 임시값을 구하기 위해서는 반복적인 작업을 필요로 하는 단순 연산으로 높은 컴퓨팅 파워를 가질수록 유리하다.

  • 작업증명에는 높은 컴퓨팅 파워와 많은 양의 전기료가 들어가기 때문에 이를 감수하고도 작업증명을 할 만한 보상이 필요하다. 그러므로 성공적인 작업증명에 대한 보상으로 새로 발행되는 암호화폐와 작업증명이 이루어진 블록에 기록되어 있는 거래 수수료를 지급받게 된다. 이러한 보상 시스템으로 작업증명에 대한 동기 부여가 되고, 많은 사람들이 작업증명에 참여하게 된다.

  • 작업증명은 노드 단위에서 개별적으로, 자율적으로 블록 생성이 진행되므로 두 개 이상의 노드가 거의 동시에 블록을 생성하는 현상('Fork')이 발생할 수 있다. 이를 해결하기 위해 해당 시점에서 더 많은 작업증명이 수행되어 길이가 더 긴 블록을 선택한다.

뻐꾸기 사이클

  • 네덜란드의 컴퓨터공학자인 존 트롬프가 발명한 세계 최초의 작업증명 알고리즘

  • GPU를 중심으로 하는 작업증명 방식의 합의 알고리즘

    GPU : 컴퓨터의 그래픽 부분을 처리하는 장치. 모니터에 영상신호를 출력하기 위해서는 많은 연산이 필요한데 이 연산을 빠르게 처리하는 부품이 GPU이며, 연산한 결과값들을 모니터에 출력한다. 그래픽과 관련된 연산을 할 때, 중앙처리장치(CPU)보다 처리 속도가 빠르다. (GPU는 작고 단순한 연산 코어를 CPU보다 훨씬 많이 가지고 있기 때문)

  • 기존 에이식(ASIC) 채굴기가 채굴하기 어려운 알고리즘과 GPU 채굴방식의 효율성 증대로 기존 CPU 중심의 채굴기와 GPU의 간극을 좁혀 1머신 당 1표(one-machine-one-vote)를 실현할 수 있는 중요 요소로 평가받는다.

    ASIC : 특정한 목적에 적합하게 설계된 주문형 반도체. 이것으로 채굴기를 만들게 되면 에이식 채굴기가 된다. 이때 이 칩을 암호화폐와 관련하여 이용한다면, 특정한 목적이라는 것은 암호화폐 채굴이라고 할 수 있는데, 보통 특정 계열의 해시 함수의 연산에 특화되어 같거나 더 적은 전력을 소모함에도 훨씬 더 많은 해시파워를 낼 수 있음으로, 그 연산 효율성이 높다.

  • 기존 CPU 방식의 채굴은 에이식 칩으로 인해 값비싼 소수의 기기가 해시파워를 독점하기 쉬웠는데, 뻐꾸기 사이클은 GPU 중심의 방식을 채택하며 이를 극복했다. ASIC칩은 특정 알고리즘에 최적화되어 있는데, 뻐꾸기 사이클은 Sipash를 사용하여 무작위로 생성된 Cuckoo Cycle 이분그래프에서 고정 길이 L의 고리를 찾을수록 그림의 규모가 커지는 그래픽 이론에 기반한 알고리즘이다. 이러한 알고리즘은, 고리를 찾는 과정 자체에 비교적 큰 메모리 데이터에 대한 저장이 필요하며, 일종의 메모리-하드의 PoW 알고리즘이기 때문에, ASIC 화 과정 자체에 어느 정도 어려움이 있다.

지분증명(PoS)

  • 지분증명(Pos)은 해당 암호화폐를 보유하고 있는 지분율에 비례하여 의사결정 권한을 주는 방식이다. 지분증명은 의사 결정 권한을 코인 보유량에 비례해 지급하는 방식이기 때문에 코인을 많이 보유하고 있는 노드일수록 블록 생성에 참여할 수 있는 기회가 더 많다.

원리
1. 새로운 블록 생성: PoS에서는 블록체인에서 새로운 블록을 생성하는데, 블록 생성자는 네트워크의 참여자들 중에서 랜덤으로 선택된다.
2. 코인 스테이킹: PoS는 블록 생성자를 선출할 때, 해당 참여자가 보유한 코인의 양에 따라 선출됩니다. 이를 코인 스테이킹(Coin Staking)이라고 한다. 블록 생성자가 되기 위해서는 일정한 양의 코인을 블록체인 네트워크에 스테이킹 해야한다.
3. 스테이킹 보상: 코인을 스테이킹하면 블록 생성자가 되는 기회를 얻을 수 있습니다. 블록 생성자가 새로운 블록을 성공적으로 생성하면, 해당 블록에 대한 보상으로 코인을 받게 된다.
4. 코인 충분성 검증: PoS에서는 코인의 양뿐만 아니라, 코인이 일정 기간 동안 지갑에 머무르고 있는지도 확인합니다. 이를 코인 충분성 검증(Coin Age)이라고 한다. 코인이 일정 기간 이상 지갑에 머무르고 있으면, 블록 생성자를 선출하는데 더 많은 가중치를 부여한다.
5. 블록 생성자 로테이션: PoS에서는 블록 생성자를 랜덤하게 선출하지만, 일정한 주기마다 블록 생성자가 로테이션되어 새로운 참여자가 블록 생성 기회를 얻을 수 있도록 한다.

  • Miner -> Validator, Mining -> Minting
    Validator : 블록체인에서 새로운 블록을 생성하거나 유효성을 검증하는 역할
    Minting : PoS에서 Minting은 Validator가 새로운 블록을 생성하여 블록체인에 추가할 때, 해당 블록에 대한 보상을 받는 과정

  • 블록 생성에 따른 보상도 코인 보유량에 비례한다.

  • 모든 노드들의 승인을 거치지 않아도 되므로 작업증명보다 거래 처리 속도가 빠르다.

  • 해시값을 구하지 않고 투표를 함으로써 전력소비를 줄였고, 해싱파워가 아닌 지분을 사용하기 때문에 51% 공격을 훨씬 힘들게 만들었다.

  • 초기 코인 분배 문제, Nothing at Stake 문제등이 발생한다.

초기 코인 분배 문제
PoS 방식에서 블록 생성 지분이 소유 지분을 기반으로 하기 때문에 초기에 코인을 많이 보유한 참여자가 블록 생성에 유리하다는 점에 의한 공정성에 대한 문제

Nothing at Stake 문제
유효한 블록체인이 두 개 이상 존재하는 fork 상황에서 참여자들이 보상받을 확률을 높이기 위해 두 개 이상의 블록체인 상에서 블록을 생성함으로써, 하나의 블록체인으로 수렴해 가는 것을 어렵게 하는 것.
-> 해결을 위해 최근에는 위임된 지분증명(DPoS) 방식이 제안

위임지분증명(DPoS)

  • PoS가 일정한 지분을 가진 모든 노드에게 블록 생성 권한을 주었던 반면, DPoS에서 지분 보유자들은 지분에 비레한 투표로 대표자를 선출하고, 대표자들에게 블록 생성과 검증에 대한 권한을 부여하여 합의에 대한 권리를 위임한다.
    (아테네의 직접 민주주의에서 현대의 간접 민주주의로 변화한 느낌)
    투표에 의해 선출된 대표자들이 블록을 생성하기 때문에 합의에 걸리는 시간과 비용이 적게 소모되고, PoW와 PoS에 비해 상대적으로 단위 시간 동안 생성되는 블록의 개수도 더 많다.

  • 일반 노드들의 투표율이 저조할 경우 소수의 대표 노드들에 의해 블록체인 생태계가 좌지우지 될 수 있다는 한계가 있다.

profile
SKKRYPTO

0개의 댓글