본문 바로가기

Web 3.0

[번역] A (Short) Guide to Blockchain Consensus Protocols - CoinDesk

MIT Open course인 Blockchain and Money(Prof. Gary Gensler) 수업의 readings에 있는 CoinDesk사이트 스터디 자료를 번역하여 기록으로 남겨 두었습니다. (링크)

 

참고로 해당 페이지의 설명은 매우 간단해서 상세한 내용은 별도 공부가 꼭 필요합니다.

비트코인의 컨센서스 메커니즘은 뛰어나지만, 완벽하지는 않다. 이 게시물을 통해 비트코인 외에 다양한 public blockchain의 대체 컨센서스에 대해 알아보자.

 

public 블록체인이 어떻게 세상을 바꿀 것인지에 대해 우리는 많은 이야기를 들었지만, 글로벌 스케일의 공유 레저는 기능적이고, 효율적이고 안전한 컨센서스 알고리즘이 필요하다.

 

Proof of Work(이하 PoW)와 같은 비트코인의 컨센서스 알고리즘은 두 가지 역할을 한다.

1. 블록체인에서 다음 블럭은 오직 하나이고 한가지 버전이 되도록 한다.

2. 강력한 공격자들이 시스템을 실패하게하고 성공적으로 forking하지 못하게 한다.

 

PoW에서 마이너는 다음 블럭을 추가하기 위해 매우 어려운 암호 퍼즐을 해결하며 경쟁한다. 

먼저 퍼즐을 맞추는 사람이 노력에 대한 댓가를 지불받게 된다.(새롭게 채굴한 12.5btc과 약간의 transaction fee를 받게 됨.)

 

하지만 현 비트코인의 PoW는 완벽하지는 않다.

엄청난 computational Energy가 소비된다. 따라서 transaction confirmation까지 10~60분가랑이 소요됨.(Scalability에 약함)

이러한 이유로 대부분의 mining은 decentralized되어있지 않다. (전력이 싼 곳으로 집중됨)

 

 

대체 Consensus

Proof of Stake(이하 PoS)

가장 일반적인 PoW의 대체 컨센서스가 PoS이다.

 

이 컨센서스에서는 마이닝을 위해 비싼 computation 장비에 투자하는 것 대신, validator가 코인 시스템에 투자를 하게 된다.

 

validator에 대해서 보도록 하자. PoS에서는 마이닝(coin creation)이 없다. 대신에 모든 코인은 day one에서부터 존재하고 validator( stakeholder라고도 한다.)가 transaction fee를 전적으로 지불한다.

 

PoS에서는 당신이 얼마나 이 시스템에서 coin을 소유하고 있느냐에 따라 다음 블럭을 만들 수 있을지에 대한 확률이 정해진다. 300코인을 가진 validator는 100을 가진자 보다 3배 만큼 선택될 확률이 높을 것이다.

 

validator가 블럭을 생성하면 그 블럭은 블록체인에 commit을 받아야한다. commit 방식은 시스템에 따라서 핸들링 하는 방식이 다르다. 예를 들어 Tendermint에서는 시스템의 모든 노드의 과반수에 도달할 때까지 사인을 하여야한다. 

다른 시스템은 임의로 사인 그룹이 선택된다.


이제, PoS의 문제로 들어가보자. 새로운 두개의 블럭을 만들고 두 세트의 transaction fee를 받는 것에 대해서 validator의 의욕을 떨어지게 하는 것이 무엇일까? 그리고 무엇이 사인하는 노드가(signer) 두 블럭에 사인할 필요를 못느끼게 할까? 이것이 Nothing at stake문제이다. 잃을 것이 없는 한 참여자가 옳지 못한 행동을 하지않게할 이유가 없다. (validator와 signer가 옳바른 행동을 하도록 해야함.)

 

해당 문제는 현재 해결 중에 있고, 한가지 해결책으로는 validator의 화폐를 가상의 금고 형태로 lock시키는 것이다.

만약 validator가 double sign혹은 시스템을 fork하려 한다면, 해당 코인은 사라지게 될 것이다.

 

Peercoin이 PoS를 적용한 첫 사례이고 Blackcoin과 NXT가 다음 타자이다. 이더리움은 현재(17년도) PoW에 의존하고 있고 2018년도에 PoS로 전환할 예정이다.(PoS는 이더리움 phase2에서 적용 예정인데 아직은 적용완료되지 않은 듯 하다) (참고)

 

 

 

Proof of activity (이하 PoA)

 

극심한 인플레이션(너무 많은 통화의 흐름으로 인해 발생하는 문제)을 막기 위해, 비트코인은 오직 21,000,000개의 비트코인만 생산할 것이라 한다(코드에 하드코딩 되어있다고 함). 그 뜻은 어느 순간에서 부터 비트코인에서 채굴 보상은 사라지고, 소량의 transaction fee만 받게 될 것을 의미한다.

 

어떤 이는 이것이 ‘공유지의 비극(Tragedy of the commons)’에 의해 사람들이 이기적인 행동을 할 것이고, 시스템을 망가뜨리는 보안 문제가 생길 수 있다고도 한다.(링크의 Enter Tragedy of Commons 섹션 참고) 따라서 Proof of activity는 비트코인의 인센티브 구조의 대체제로서 등장하였다. PoA는 PoW와 PoS가 합쳐진 하이브리드 방식이다.(관련 PDF)

 

PoA에서 마이닝은 기존의 PoW와 동일한 방식대로 진행이 된다. 구현방식에 따라, 블록에는 transaction이 전혀 포함되지 않을 수도 있다.(template 형태) 따라서 winning block은 헤더와 마이너의 보상 주소만 포함하게 된다.

 

다음 관점에서 시스템은 PoS로 전환된다. 헤더의 정보에 따라 새로운 블럭에 sign할 임의의 validator의 random group이 지정된다. 더 많은 코인은 소유한 validator는 선택될 확률이 높아진다. 그리고 그 template형태의 블록은 모든 validator가 sign을 하게 되면 commit된 블럭이 된다.

 

만약에 몇개의 선택된 validator가 sign을 완료할 수 없는 상황이라면, 그 다음 winning block이 선택되고, 이에 따라 새로운 validator 그룹이 선택된다. validator 그룹의 모든 sign을 득할 때까지 반복된다. 수수료는 마이너와 그 블럭에 사인한 validator사이에 나눠서 배분된다.

 

PoA는 PoW와 PoS가 가진 논쟁사항을 모두 가지고 있다.

 

현재 Decred가 유일하게 PoA를 사용중에 있다.

 

 

Proof of burn (이하 PoB)

 

PoB는 컴퓨터 장비에 비싼 돈을 투자하는 것 대신 코인을 인출할 수 없는 주소로 보냄으로서 태운다(burn). 당신의 코인을 네버-네버 랜드 (다시는 돌아올 수 없는 곳을 말하는 것 같음)에 보냄으로서 임의의 선택된 프로세스로 시스템에서 마이닝 할 수 있는 권한을 평생 가지게 된다.

 

PoB의 구현 방식에 따라 마이너는 네이티브 화폐 혹은 대체 체인의 화폐(예로 비트코인)를 태우게 될 것이다. 더 많은 코인을 태울 수록, 다음 블럭을 마이닝할 수 있는 기회가 높아지게 된다.

 

시간이 흘러갈 수록, 시스템에서 당신의 지분은 저하 될 것이고, 결국은 더 많은 기회를 얻기위해 더 많은 코인을 태울 것이다.(이 부분은 해싱파워를 유지하기 위해 최신 컴퓨터장비에 지속적으로 투자하는 비트코인의 마이닝 프로세스를 따라하고 있다.)

 

PoB가 PoW의 대체 컨센서스라고는 하지만 여전히 리소스를 무의미하게 낭비하는 것이다. 그리고 마이닝 파워가 단순히 돈을 더 많이 태우고 싶은 자에게 간다는 비판도 있다.

 

PoB를 사용하는 코인은 slimcoin(peercoin base)이 있다. 

 

 

Proof of capacity (이하 PoC)

 

앞서 보았듯이 대부분의 대체 프로토콜은 pay-to-play 방식을 따르고 있다. PoC도 다른 것은 없다. 하지만 여기서는 하드 드라이브 공간을 pay하게 된다. 더 많은 드라이브 공간을 가질 수록 다음 블록을 마이닝하고 리워드를 얻을 수 있는 확률은 높아진다. 

 

PoC에서 마이닝을 하기에 앞서 알고리즘은 plot이라고 불리는 엄청난 양의 데이터 셋을 생성하여 마이너의 하드드라이브에 저장한다. 더 많은 plot이 있을 수록 다음 블록을 찾을 확률은 높아진다.

 

테라바이트 수준의 하드드라이브를 투자하면 블록을 복제하고 시스템을 fork할 기회를 사게 되는 것이다. 하지만 PoC는 여전히 nothing at stake 문제가 생길 수 있는 여지가 있다. 

 

PoC의 변종으로는 Proof of storage와 Proof of space가 있다. Burstcoin이 PoC를 쓰는 암호화폐이다.

 

 

Proof of Elapsed time (이하 PoE)

 

Chip메이커인 인텔에서 자신만의 대체 컨센서스 프로토콜인 Proof of elapsed time을 발표하였다. 이 시스템은 PoW와 비슷하게 동작하지만, 훨씬 더 적은 전기를 소모한다.

 

그리고 나아가 참여자들이 암호 퍼즐을 해결하는 것 대신, Trusted execution environment(TEE)라고 하는 알고리즘을 사용하여 랜덤으로 생성된 블럭이 생성되도록 한다.

 

인텔의 접근법은 TEE를 통해 제공되는 보장된 대기 시간을 기반으로 한다. 인텔에 따르면 PoE 알고리즘은 1000여개의 노드만큼 스케일 업이 가능하고 SGX를 지원한느 Intel 프로세서에서 효율적으로 작동한다.

 

이 프로토콜의 한 가지 문제점은 intel에 신뢰 의존성이 있다는 것이다. - public blockchain은 제3자에게 신뢰성을 두지 않는 것이지 않은가?

 

 

Figurines work on mining a Bitcoin. (Image by  Marco Verch . License: CC BY.) 

'Web 3.0' 카테고리의 다른 글

[번역] Making Sense of Cryptoeconomics - CoinDesk  (0) 2022.01.19