[Blockchain]블록체인의 합의구조

4 minute read

블록체인의 합의구조

비트코인 블록체인 하면 마이닝, 채굴, 마이너 이런 용어를 많이 들어보셨을 겁니다. 앞선 단어들은 처음 비트코인을 접하는 사람들에게 있어 전혀 새로운 느낌을 주는 단어들이죠.

Mining이라는 것은 비트코인의 합의구조를 이루어주는 하나의 알고리즘입니다. 여기서 말하는 합의구조는 각각의 블록들을 신뢰할 수 있게 만드는 알고리즘입니다.

예를들면 매우 어려운 수학문제를 풀기 위해 어마어마한 컴퓨팅 연산 능력이 소모되는데, 여기서 말하는 수학문제는 합의구조 알고리즘을 말하고 컴퓨팅 연산능력이 마이닝을 하는 과정이라고 생각하면 됩니다.

때문에 만약 어려운 수학문제를 풀게 되면, 보상을 받게 되는데 이 보상이 바로 비트코인이라는 암호화폐로 보상이 주어집니다.

이러한 일련의 과정들을 바로 Mining 이라고 비유하여 말하였습니다.

Image Alt 텍스트

마이닝

마이닝이라는 단어는 비트코인으로 많이 알려져잇지만 사실은 빅데이터에서도 쓰이는 단어입니다. 즉 데이터마이닝(DataMining)이라는 용어로 해당 데이터를 분석하기 위한 과정중 하나로, 데이터가 자산인 현 시대에서는 이처럼 마이닝이라는 단어가 어떤 가치있는 자산을 얻기위한 하나의 과정을 표현하는 듯합니다.

마이너

컴퓨팅파워가 소모되고 있는 하나의 노드라고 생각하면됩니다. 즉 블록체인의 참여자입니다. 여기서 블록체인 참여자는 마이닝을하는 하나의 노드 뿐 만 아니라 블록을 검증하는 역할도 합니다.

합의구조알고리즘(POW vs POS vs DPOS)

현재 블록체인 합의구조에서는 여러 합의구조로 이루어져 있습니다. 그 중 POW, POS, DPOS에 대한 합의구조에 대해 알아보고자 합니다. 참고로 이 3가지의 합의구조를 직접 개발하고 공부한 입장에서 작성하였습니다.

  • POW - Proof of Work (작업증명)
  • POS - Proof of Stake (지분증명)
  • DPOS - Decentralized of Stake (분산된지분증명)

POW (Proof of Work)

POW - 작업증명을 통한 합의구조(컴퓨팅 POW알고리즘은 일전에 이더리움 블록체인을 소개하면서 작업증명에 대한 알고리즘을 설명한 내용이 있습니다. 아래의 링크를 누르시면 자세한 POW알고리즘의 합의방식을 아실 수 있습니다.)

POW합의알고리즘 설명

비트코인의 대표적인 합의구조이며, 이더리움, 퀀텀,

POS (Proof of Stake)

POS는 POW알고리즘의 문제점을 해결하고자 나온 합의알고리즘입니다. POW는 컴퓨팅파워의 소모가 많이들 뿐 아니라 트랜잭션 처리 속도도 느려 확장성에도 큰 문제가 발생하였습니다. 이는 POW알고리즘을 사용하는 블록체인이 가지는 문제점이었습니다. 그래서 나온 것이 바로 POS알고리즘입니다.

POS는 지분증명이라고합니다. 말그대로 암호화폐의 지분에 따라 합의구조가 일어나는 겁니다.

그럼 이런 의문이 들 수가 있습니다. 지분이 많은 사람에 따라 합의가 일어나면 블록체인의 정체성이 흔들리는 것이 아닌가?? 결국 지분이 많은 노드에 의해 합의가 일어난다면 악의적으로 블록데이터를 수정할 수 있을 것이며 이는 전체적인 블록체인의 신뢰성이깨지는 것이 아닐까? 저 또한 POS알고리즘의 처음 든 생각이 앞선 생각이었습니다. 하지만 그러지 못하는 이유는 아래와 같습니다.

경제적인 이득??

우리가 흔히 알고있는 블록체인의 약점이라고 알려져있는 51% Attack을 생각해볼 수 있습니다.
POW와 마찬가지로 POS 또한 51%지분이 필요하며 악의적인 노드가 51%의 지분을 얻었을때의 경제적인 이득이 없습니다.

Image Alt 텍스트

51% Attack

생각해봅시다.

1000억개의 암호화폐 (가격 100원 일때 51%의 지분은 500억개 * 100원)

위 상황일경우 5조원이라는 어마어마한 자금이 들어갑니다.

또한 가격이 지속적으로 변동되기 때문에. 경제적인 이득도 없습니다.

또한 더욱 탈중앙화 된 블록체인 일수록 실시간으로 노드가 생성되기 때문에 계속해서 끊임없이 지분을 사들여야 되기 때문에 막대한 자본이 들어갈 수 밖에 없습니다. 이로인해 얻을 경제적 이득이 없다는 것이 POS의 이론입니다.

Pow에서 51%의 해시파워를 가져야하는 비용 1조

POS에서의 51%의 지분을 가져야 하는 비용 100조

POS지분지명

그렇다면 약점이 없는 무결성인 합의알고리즘인가?

그렇지 않습니다. POS에는 두가지 치명적인 약점이 존재합니다. 바로 “Noting at Stake” 입니다. 말 그대로 비용이 없다는 뜻입니다. 비용이 없다는 뜻은 무슨말일까요?

만약에 동시에 두개의 다른 거래로 블록이 생성했다고 가정해 봅시다. 그럼 아래와 같은 그림처럼 블록이 생성될 거에요.

Image Alt 텍스트

POW같은 경우에는 동시에 생성된 블록은 계속 가지고있다가 블록이 생성되면 긴 체인으로 블록을 선택하게 됩니다. 단, 이때 버려진 블록의 정보는 버려지지 않고 긴 체인 블록으로 옮겨지게 되죠.

POS의 경우에는 지분이 많은 검증자가 두개의 거래의 참 거짓여부를 가리지 않고 증명해버립니다. 왜냐하면 참 거짓이던 여부판단 필요없이 무엇을 선택하던 체인이 유지되기 때문이죠.

때문에 아래와 같이 두가지 문제점이 발생합니다.

Long Range Attack

Image Alt 텍스트

만약 악의적으로 지분이 많은 노드가 두개의 긴체인의 블록들이 형성되었다고 하면 두 개의 체인을 증명하게 됩니다. 그러면 두개 중 거짓 체인이 어느 것인지 모른체 블록체인 참여자들은 모두 잘못된 거래 내역을 믿게 되버리는 것이죠.

Short Range Attack

Image Alt 텍스트

만약 악인적인 공격자가 이중지불 거래로 아래의 블록을 생성하였다면 블록검증자는 참 거짓 여부를 가지리 않고 증명합니다. 이때의 상황을 Short Range Attack 이라고 합니다.

이러한 앞선 문제들로 인해서 POS의 다양한 방식으로 진화하고 또 개선되고 있는 중입니다. 대표적으로 큐텀(QTUM)이 위의 문제를 가지고 있게 되면서 많은 문제가 거론된 블록체인이라고 할 수 있습니다. (큐텀은 POW와 POS를 섞은 블록체인 합의구조를 가지고 있습니다.)

이더리움은 POS지분방식에 대해서 벌금을 매기는 방식으로 전환하였습니다. 이는 이더리움이 POW에서 POS방식으로 진행하면서 개선한 방식입니다.

DPOS(Decentralized Proof Of Stake)

위임된 지분증명이라고 합니다. POS의 위 문제를 해결하고자 그리고 POW의 속도문제를 해결하고자 DPOS라는 증명방식이 나오게 되었습니다.
대표적으로 EOS, 스팀 암호화폐 블록체인을 예로 들 수 있습니다.

EOS같은 경우 21명의 위임자를 블록체인 참여자가 투표를 통해 선출할 수 있습니다.
선출된 21명의 위임자는 블록을 생성할 수 있습니다. 만약 누군가가 악의적으로 블록생성을 하거나 데이터변경을 하려한다면 투표 선출시 제외 됩니다.

라운드로빈방식의 알고리즘

라운드 로빈은 CPU 운영체제 때 사용되는 알고리즘으로 시분할 선점형 알고리즘으로 알려져있습니다. 이오스의 DPOS는 라운드로빈방식의 알고리즘방식으로 블록을 생성합니다. 즉 21명의 블록생성자가 i번째의 블록이 생성되면 모두 다 서명할 때 체인에 연결되는 구조입니다. 이를 한사이클방식으로 계속해서 이루어집니다.

그외 합의 알고리즘들….

권한증명알고리즘(Private Blockchain), PBFT알고리즘(다수결 원칙을 따르는 알고리즘) 등 블록체인의 합의 알고리즘이 있습니다. 위의 알고리즘들은 아래의 링크를 걸어드리겠습니다. 사실 저도 단순히 어떤 알고리즘인지만 알고 자세히는 알지 못하기에 포스팅에서는 자세히 다루지 않겠습니다.

권한증명알고리즘 -권한증명알고리즘은 이더리움개발진에 의해서 만들어졌고 실제로 이더리움의 테스트넷에서 확인가능합니다. 아래 링크를 통해 더 자세히 알수있습니다.

사실 모든 블록체인의 알고리즘을 알 필요는 없습니다. 블록체인 업계 종사자가 아니라면 대표적인 합의 알고리즘만 알고 있어도 무방합니다. 특히 블록체인에 관심을 가지시는 분이라면 최소한 비트코인의 작업증명은 알고 계셔야 됩니다. 블록체인이 탄생하게 된 하나의 알고리즘이기 때문입니다.

그럼 우린 어떤 알고리즘을 사용해야 할까??

=> 정답은 없고, .