[Consensus] 작업증명방식과 나카모토의 합의알고리듬 // Proof of Work and Nakamoto Consensus v1.4

Proof of Work & Nakamoto Consensus


< 서  론 >

  분석에 앞서

  ㅇ 합의 알고리듬(Consensus Algorithm)의 구성
    - 합의알고리듬은 '블록생성권한'과 '포크선택규칙'이 포함되어야 하며, 비트코인의 합의알고리듬 구성은 다음과 같다.
     1) PoW : 누가 블록을 생성하는가에 대한 답변
                    즉, 작업(채굴)을 제일 빨리 증명하는(캐는) 자가 블록을 생
     2) Nakamoto Consensus
        : 어떤 체인을 메인체인으로 선택할것인가(포크선택규칙)에 대한 답변
        즉, 블록 난이도 합이 가장 높은, 그래서 가장 긴 체인을 선택


  ㅇ 비트코인의 키워드 분석
    - 비트코인에 대한 정보는 이미 다양한 매체를 통해서 봐왔을거라 생각되기에, 본인만의 방식으로 키워드를 몇개 선정하여 분석해 보겠다.
    - 참고로, 선정된 키워드는 경쟁, 확정성(안전성), 그리고 생존성이다.

작업증명방식(PoW)은 비트코인 창시자 나카모토 사토시가 비트코인을 통해 실제 구현한 것으로, 가장 오래되고 가장 대중적이며 지속적으로 관련 인프라가 확대되고 있는 프로토콜이다. 
사실 PoW에 대해서는 이미 수많은 곳을 통해 많이 알려져 있기에, 본인이 생각하는 PoW만의 키워드를 선택하여 간단히 정리하고자 한다. 참고로, 선택된 키워드들은 향후 기고할 PoS와 비교되는 특성으로 봐주시면 더욱 흥미로운 것이다.   -WuKong


<https://hackernoon.com>

< 본  론 >

  키워드1 : 경쟁

  ㅇ 개요 : 채굴에 참여한 모든 채굴자들이 블록생성 및 그에 따른 보상을 목표로 끊임없는 경쟁을 한다.
  ㅇ 특징 : 참여자들은 손해를 보지 않으려 하기때문에 하나의 블록체인을 유지하기 용이하다.
  ㅇ 장점 : 경쟁을 통해 누가 언제 블록생산하는지, 코인(보상)배분은 어떻게  하는지, 포크(체인분리)시 어떤 체인을 선택해야하는지에 대한 이점이 있다.
    - 블록생성과 배분문제는 퍼블릭 블록체인에 있어 중요한 사안으로, PoW방식은 현존하는 그 어떤 합의알고리듬보다 경쟁이라는 이름하에 간단명료한 해결책을 제공해주고 있다. 그예로, 이더리움의 PoS전환방식인 초기 캐스퍼(Casper)에서도 블록생성은 PoW기반의 채굴자들이 하며, 지분보유자들의 2/3(정족수)를 만족시키지 못할경우에도 이 PoW방식에 따를정도다.   
    - 체인선택은 이중지불*, 재생성 등 구조적 이슈에 있어 중요한 사안인데, 채굴자에 있어 포크시 각 포크체인에 따라 모두 채굴하면 컴퓨팅 파워가 그만큼 분산되므로, 자연스럽게 그 중 블록생성에 유리한 체인에 선택과 집중하게 된다. 즉, 채굴자들은 경쟁을 통해 스스로 손해를 보는 가능성을 줄임으로써 체인을 선택하게 되고 그 중 가장 긴 체인이 정통성을 인정받게 된다.
    *이중지불 : 코인이 두번이상 지출되는 문제로, 가령 A가 B에게 코인을 보내고 계속 그 코인을 소지한것처럼 조작한뒤 C에게 코인을 보낼수 있는 치명적인 문제(자세한 설명은 여기 참조)
  ㅇ 단점 : 타협없는 경쟁 때문에 구조적으로 포크가 수시로 발생할수 있다.

□ 키워드2 : 확정성(Finality) 또는 안전성(Safety)

  ㅇ 개념 
    - 확정성 : 블록체인에 한번 기록된 거래는 그 특성상 불가역적이고 수정불가이므로, 거래 이후 절대 바뀌면 안된다는 것을 의미한다.
    - 안전성 : 문제없는 노드 사이에서는 잘못된 합의가 이루어지지 않는다, 즉 장애를 일으키지 않는 한, 시간이 걸려도 모든 노드가 같은 트랜잭션을 처리하는 합의에 도달한다는 뜻이며, 이는 결국 확정성을 이루기 위한 특성이다.
  ㅇ 특징 : 확정성을 위하여, 채굴자들은 현재까지 가장 긴 체인(Long chain)에 바로 이어서 블록 생성을 하려고 한다.
    - 문제 : 복수의 채굴자가 동시에 블록생성시, 포크가 발생하면서 포크체인들은 당장은 모두 가장 긴 체인으로 간주된다. 이때 채굴자들은 각 포크체인들에 이어서 블록생성을 위한 경쟁(Race Competition)에 돌입하는데, 결국 가장 긴 포크체인이 메인체인이 되면서 나머지 포크체인들은 버려지게 된다. 하지만 채굴중앙화가 되어있는 경우, 엄청난 컴퓨팅 파워(50% 초과)로 포크시점을 틈타 또는 버려진 체인들을 활용하여 가장 긴 체인을 만들어버리는 방법(51%공격)으로 기존의 가장 긴 체인의 기록된 거래들이 바뀌는 구조적 문제(Reorg, 재구성)가 발생할수 있다. 이를 두고, 확정성(Finality)이 무너졌거나 안전성(Safety)이 훼손됐다고 말할수 있다.
   *해결 : 합의 알고리듬에 검증인을 두어 특정 시점(예: 매 100블록)마다 체크포인트로 정하고, 검증인의 2/3이상이 체크포인트에 적정하다고 동의할 경우, 가장 최근의 체크포인트까지는 절대 불가역적이고 수정불가하게 되는데, 이는 PoS에서 구현될수 있는 해결책이다.

□ 키워드3 : 생존성(Liveness)

 ㅇ 개념 : 합의 대상이 트랜잭션, 블록, 노드 등 그 무엇이든간에 문제가 없다면, 네트워크 내에서 언젠가는 합의가 이루어진다는 의미이며, 다시 말해, 일정 시간이 지나 모든 노드가 문제없이 합의에 도달한다면 그 네트워크는 생존성이 있다고 말한다.
  ㅇ 특징
    - 전통적으로 합의알고리듬 설계시, 안정성을 확보한후 생존성을 줄이는 방식(Safety over Liveness)으로 접근하여 네트워크 내에서 합의가 이루어지지 않아도 모든 노드에게 동일한 메세지를 주고받는게 중요하다고 생각했다.
    - 하지만 비트코인의 경우, 그와 정반대로 생존성을 살리고 안정성을 뒤로 미루되(Liveness over Safety), 10분이라는 상대적으로 긴 블록타임동안 노드간 합의시간을 준다거나 경쟁을 통한 포크 선택규칙(가장 빨리 수학계산을 푼 자가 블록생성시키며, 긴 체인이 곧 메인체인)으로 안전성을 보완했다. 다만, 이런 보완책도 완정히 보장할수 없는것이, 51%공격과 같은 극단적인 경우에는 큰 의미가 없다는 것이며, 이는 단지 확률적으로 안정성을 부여한다는 한계에 부딪힌다.


< 결  론 >

□ 합의알고리듬

  ㅇ 합의알고리듬의 중요성
    - 비트코인을 포함한 암호화폐는 기본적으로 분산 네트워크를 기반으로 하기에, 각 참여자간 메세지를 주고받으며 그에 따른 합의를 이루는게 매우 중요하다.
    - 하지만, 투자에 대한 관심에 대비해서 중요한 기본사항을 잘 모르는 경우가 많다. 합의알고리듬은 그 기본사항 중에서도 투자자나 분석가라면 반드시 알아야할 항목이며, 본인도 정리할겸 안내할겸 해서 작성해봤다.
    - 향후, 타 암호화폐 프로젝트들의 다양한 합의알고리듬에 대해서도 안내할 계획이며, 이 글에서 부족하다 싶은 내용이 있다면 검색하시거나 피드백 주시기 바란다.



법적 고지 : 본 게시글은, 투자를 위한 정보제공을 목적으로 작성되었기에 투자결정은 신중을 기하여 주시기 바라며, 참고자료를 토대로 본인 판단하에 내용을 추가, 편집 등 작성되었기에 본인의 허락없이 복사, 배포, 편집 등을 할 수 없습니다.




<References>
1) https://blog.seulgi.kim/2018/05/safety-liveness-in-blockchain.html
2) https://steemit.com/consensus/@kblock/48-pbft-consensus-algorithm?sort=new

댓글

이 블로그의 인기 게시물

[Insight] JP모건을 통해 본 월가와 코인시장(2부작) 1부 // Wallstreet and CryptoMarket with JPmorgan part1 v1.2

[Insight] JP모건을 통해 본 월가와 코인시장(2부작) 2부 // Wallstreet and CryptoMarket with JPmorgan part2 v1.3

[Insight] 팍스 아메리카나와 팍스 블록체이나(2부작) 1부 // Pax Americana & Pax Blockchaina Part1 v1.1