합의 알고리즘 설계(Design)



블록체인 시스템 위에서 사용되는 합의 알고리즘을 설계할 때, 지켜줘야 할 몇 가지 사항이 있다.

  

블록체인 특징 Dependency

1. 블록에 포함된 거래들은 모두 지울 수 없는 기록(Permanent)으로 남게 된다.

2. 블록을 생성하는 사람들이 특정인들로 정해져서는 않된다. (Decentralize)

  

블록체인 운영 Dependency

3. 블록을 생성한 사람은 보상(Reward)을 받는다.

4. 블록을 생성하는 사람은 악의적인 행동을 하지 못한다. (Preventing Malicious Behavior)

 



1. 블록에 포함된 거래들은 모두 지울 수 없는 기록(Permanent)으로 남게 된다.

 

블록체인에 저장되어 있는 모든 각각의 블록(Block)들에는 블록체인을 사용하는 사용자들의 모든 거래내역에 대한 정보들이 블록단위로 나눠져 저장된다. 당연히 시간이 지날수록 사람들의 새로운 거래내역이 만들어지면 이 내용들을 담을 새로운 블록을 만들어져야 한다. 이때, 모든 블록체인에는 공통적인 하나의 규칙이 있다. 기존에 생성됬던 블록들과 새롭게 생성된 블록의 내용들은 모두 하나처럼 연결(Chain)되어 만들도록 설계되어야 한다는 점이다. 따라서 블록체인의 일부를 수정한다는 것은 곧 전체를 수정한다는 것이고, 일부를 수정할 수 있으려면 곧 전체를 수정할 수있는 능력이 있어야 한다는 것이다. 그리고 수정하는 것이 너무나도 어렵기 때문에, 지울 수 없는 기록이라고 표현하는 것이다.

è 기록을 수정 할 수 있는 방법이 발견되면, 이를 취약점이라고 하며 각종 공격 가능성에 대한 이야기거리가 나오게 된다.

 

 


2. 블록을 생성하는 사람들이 특정인들로 정해져서는 않된다. (Decentralize)

 

블록체인이 주목받는 기술인 이유지울 수 없는(=변하지 않는) 데이터라는 것 말고 하나가 더 있다. 중앙화된 시스템이 아니라는 것이다. 우리가 돈을 맡기는 은행이나 우리의 공인인증서를 발급해주는 최고기관인 한국인터넷진흥원(KISA)에 의해 우리 개인 정보가 관리되는 구조를 중앙화된 시스템이라고 한다. 이러한 기관들은 일반적으로 다양한 보안기술들이나 정책들로 무장되어 있기 때문에 무척 신뢰받고 있어서 평소에 우리가 사용하는데는 문제가 없다. 하지만, 문제가 생기면 그 문제는 분명 우리와 바로 직결되는 큰 문제일 것이라는 것이다. 수준높은 해커에 의해 은행시스템이 털리거나 공인인증서 시스템이 기반으로 하고 있는 기술들(ex, RSA)에 대한 취약점이 발견된다면 해당 시스템을 사용하는 모든 사람들의 개인정보는 노출되는 것이다. 그래서 중앙화된 기관들에게 의지하지 말고 시스템 자체를 여기저기 곳곳에 분산시켜놓은 상태에서, 내 개인정보는 내가 직접 관리할 수 있도록 하는 것이다. 그래서, (퍼블릭)블록체인 시스템이 이러한 시스템으로 유지되려면 절대 특정 몇 명에 의해 운영이 되면 안된다.

è 블록체인이 분산 시스템이라고 하더라도 합의 알고리즘 설계가 특정 몇 명에 의해 계속 블록을 생성할 수 밖에 없는 구조라면, 진정한 탈중앙화인가라는 논란에서 벗어나기가 힘들다.

 

 


3. 블록을 생성한 사람은 보상(Reward)을 받는다.

 

블록을 생성한 사람(Block Producer)의 가상암호화폐계좌에는 블록 생성에 대한 보상(Rewards)으로 일정금액의 코인이 입금된다. 정확히 말하면, 블록 생성 보상수수료 보상 두 종류의 보상이 입금된다. 이 보상에 대한 금액이 생각보다 크기 때문에, 누가 보상을 받을지에 대한 규칙을 결정하는 것은 중요하다. 누구나 납득할 수 있을만한 규칙이 있어야 한다. 만약, 대충 만들었다가 머리좋은 한, 두명이 계속 생성할 수 있는 방법을 찾는다면 해당 코인을 독점할 수 있고, 시장이 불안정해질 수 있기 때문에, 보상 시스템을 위한 규칙(Rule)은 누구나 납득할 수 있도록 설계되어야 한다. 또한 자기 PC24시간 켜두고 무상으로 (퍼블릭, public) 블록체인 운영의 일부로 사용해줄 사람은 없기 때문에, 보상 시스템은 반드시 필요하도록 설계되어야 한다.

è 코인 보상 시스템이 불안하면, 부익부 빈익빈 이야기 거리가 나오거나, 블록을 생성해 줄 PC들이 줄어들어 전체 시스템 성능의 저하를 만들 수 있다.

 

 


4. 블록을 생성하는 사람은 악의적인 행동을 하지 못한다. (Preventing Malicious Behavior)

 

블록체인 시스템의 운영자들은 블록을 생성하는 사람들이다. 이들이 악의적인 생각을 가지고 단합을 해서 새로 생성되는 거래들을 조작이라도 한다면 해당 블록체인 시스템은 완전히 무너질 것이다. 하지만, (퍼블릭, Public) 블록체인에서는 블록 생성자를 특정 누구로 정해두지 않고 모든 사람들에게 역할을 가질 수 있도록 기회를 주도록 설계되어 있다. 이 말은, 어떤 범법자가 블록 생성자를 해도 상관 없다는 것이다. 하지만 이 사람에 의해 블록체인 시스템이 무너지게 만들 수는 없기 때문에, 보완장치를 해두어야 한다. 그것이 바로 블록체인으로 만들어진 가상화폐가 실물화폐만큼의 가치가 있도록 시장을 형성시키는 것이다. 블록을 만들면서 가상화폐인 코인을 많이 쌓음으로써 부를 챙겨놓은 블록생성자가 다시 가치를 낮추는 일을 절대 하지는 않을 것이다. 그렇기 때문에 이들은 일부러 블록체인 시스템이 무너뜨려서 사람들에게 가상화폐는 허황뿐인 가치없는 것이었다는 것을 알리는 짓을 하지 않을 것이다. 이렇게 악의적인 행동을 하지 못하도록 현재, 많은 블록체인 시스템에서는 실물가치가 있는 코인이라는 보상을 주고, 더해서 제3자인 감사(Audit)기관들을 두어서 블록 생성자들을 모니터링하는 감사, 감독하며, 심리적으로나 정책적으로나 악의적인 행동을 하지 못하도록 설계하고 있다.

è 현재, 중국에서 비트코인 블록을 생성하는 몇 명의 채굴자(ex, BTC.com, AntPool, F2Pool, BTC.TOP, ViaBTC)를 합치면 절 반이상이다. 만약, 이들이 단합을 한다면 비트코인 블록체인을 완전히 점령할 수있지만, 점령을 한다고 하더라도 악의적인 행동을 함으로써 이득이 없다면 절대 하지 않을 것이다. 따라서, 블록체인 시스템기반의 가상화폐 시스템을 설계할 때는 보안 기술 외에도 추가적인 보완장치를 함께 고려해주어야 신뢰를 높일 수 있다.

 


 

합의 알고리즘 3가지(PoW, PoS, DPoS)

블록체인을 이루는 합의 알고리즘이 여러가지 있지만, 그 중 많은 블록체인들의 합의 알고리즘은 아래 3가지를 기반으로 하고 있다. 이번엔 간략히 설명하지만, 3가지의 설계 방식을 어느정도 이해한다면 블록체인 시스템의 다른 합의 알고리즘 또한 빠르게 이해 할 수 있을 것이다. 




1. PoW(Proof of Work) with Minor who mining

컴퓨팅 파워(Computing Power)가 높은 사람이 합의를 이끄는 리더가 되는 설계방식이다. 그 리더는 합의에 이용될 블록(Block)을 생성할 때 필요한 어떤값(Nonce)를 찾아내야 하기 때문에 채굴자(Minor)라고 부른다.

 

2. PoS(Proof of Stake) with Validator who minting or forgging

코인의 지분(Stake)를 많이 가지고 있는 사람이 합의를 이끄는 리더가 되는 설계방식이다. 그 리더는 합의에 이용될 블록(Block)을 생성할 때 블록에 포함될 거래(Transaction)들을 모두 검증해야 하기 때문에 검증자(Validator)라고 부른다.

 

3. DPoS(Delegated Proof of Stake) with Block Producer or producing

코인의 지분(Stake)에 따라 부여되는 투표권(Vote)을 다른 사람들에게 많이 받은 사람이 합의를 이끄는 리더가 되는 설계방식이다. 그 리더는 합의에 이용될 블록을 직접 생성하기 때문에 블록생성자(Block Producer)라고 부른다.


합의 알고리즘에서 블록을 생성하는 사람을 채굴자, 검증자, 블록 생성자 등 다른 말로 부르는 경우들이 있지만, 이들의 공통점은 모두 블록을 생성하도록 설계된다는 것이다.