brunch

You can make anything
by writing

C.S.Lewis

by CURG in Seoul Aug 24. 2018

Casper PoS:비탈릭의 디자인 철학

Consensus팀

Edit by 조유정(이화여대_ewha-chain),안성주(가톨릭대_BLOCKCAT)


본 글은 Crypto Cannon의 글 A Proof of Stake Design Philosophy를 바탕으로 작성된 글입니다.



올해 4월, 깃허브에 이더리움에 적용가능한 PoS 합의 알고리즘을 코드로 설명한 제안서가 

공개되었습니다. EIP1011(이더리움 개선 제안서)에서 “PoW(작업증명)은 과도한 에너지를 소비하고, 완결성(finality)이 없다. 또한 기업 연합에 저항성이 없다. 작업증명의 과도한 에너지 소모, 채굴 하드웨어 확보 형평성 문제, 채굴풀 중앙화 문제, ASIC시장의 상승과 같이 PoS로  전환해야 하는 뚜렷한 이유들이 있다.”고 밝혔습니다. 이러한 문제해결 대안으로서 PoS와 PoW를 결합한 ‘하이브리드 캐스퍼 FFG(Casper the Friendly Finality Gadget)를 제안했고, 이를 통해서 PoS로 완전히 전환하는 것이 최종 목표라고 합니다.

현재 이더리움은 버전 업그레이드를 거듭하면서 점차적으로 합의 알고리즘을 전환하고 있습니다. 이번 포스팅에서는 비탈릭 부테린이 Medium에 작성했던 글 “A Proof of Stake Design Philosophy”의 주요 개념인 “사이퍼펑크 정신”을 참고하여  PoS로 전환하려 하는 이유에 대해 밝혀보고자 합니다. 먼저 비탈릭 글의 주요 내용을 알아보겠습니다.



비탈릭은 왜 PoS로 전환하려는 것인가 

앞서 말했던 비탈릭의 글에 따르면 암호화폐 네트워크는 각각 다른 철학을 가지고 있다고 합니다. 예를 들면, PoW는 채굴자들이 가장 많은 경제적 자본을 투자해서 만든 체인을 적법한 블록체인으로 여긴다는 점에서 과격주의자(maximalist)의 철학이 담겨있다고 볼 수 있습니다. 비탈릭 본인 또한 Casper PoS에 자신의 철학을 담았다고 말합니다. 그 철학은 바로 사이퍼펑크(Cypherpunk) 정신 입니다. 사이퍼펑크 정신이란 사회의 권위와 구조에 저항하고, 개인의 개성과 자율을 우선시하는 정신을 말합니다. 탈중앙화된 공공 장부인 블록체인은 중앙화된 서버에 저항하는데 이것은 사이퍼펑크 정신과 일맥상통합니다. 블록체인은 사이퍼펑크 정신을 바탕으로 만들어졌기때문입니다. 하지만 비탈릭은 여기서 더 나아가 진정한 사이퍼펑크 정신의 계승은 블록체인 시스템 보안에 비대칭성을 사용하는 것이라 밝힙니다. 비대칭성은 공공 장부의 무결성을 위해 시스템 유지 비용보다 파괴 비용을 더 크게 하는 것을 말합니다. 이것은 블록체인 장부를 위변조할 수 없게 시스템 공격을 유지보다 더 어렵게 만들어야 한다는 것입니다.(공격 비용> 방어 비용) 비탈릭은 이러한 비대칭성을 잘 담아낸 합의 알고리즘이 바로 PoS라고 말합니다.


따라서 두 합의 알고리즘이 비대칭성을 활용하는지에 대해서 알아보아야 할 것 같습니다. 두 합의 알고리즘의 작동 방식을 설명한 후에, 사이퍼펑크 정신에 비추어 합의 메커니즘을 분석하도록 하겠습니다.




PoW

작업증명(Proof of Work)방식은 비트코인의 창시자인 사토시 나카모토의 논문 ‘Bitcoin: A Peer-to-Peer Electronic Cash System’에서 처음 소개된 합의 알고리즘입니다. 대표적으로 비트코인 네트워크상에서 쓰이며 다양한 블록체인 네트워크에서 많이 사용되어지는 합의 알고리즘입니다.

[그림 1] 블록헤더 정보


PoW 방식에서 블록을 생성하기 위해서는 채굴이라는 과정을 걸쳐야 합니다. 채굴은 특정한 값을 찾는 행위입니다. 블록체인의 각각의 블록들은 고유한 해시값을 가지기 떄문입니다. 이러한 해시값은 위의 그림에서 알 수 있듯이 블록헤더의 있는 6가지 정보를 입력값으로 구하게 됩니다. 6개의 입력값 중 유일하게 값이 변하는 것은 'Nonce‘입니다. 'Nonce'는 해시 연산을 할 때마다 1씩 증가하는 값으로 해시값을 바꿔주는 역할을 하게 됩니다. 채굴은 'Nonce'값을 바꿔가면서 특정한 해시값을 찾는 과정으로 결국 적절한 'Nonce’값을 찾는 것입니다.이러한 연산과정에는 규칙이 존재하지 않습니다. 그래서 특정한 해시값을 찾기 위해서는 해시값을 찾을때까지 연산을 계속해야 합니다. 이때 많은 컴퓨팅 파워를 사용하게 되며 막대한 양의 전기 비용이 들어가게 됩니다.


* 해시함수

해시함수는 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수입니다. 같은 입력에 대해서는 같은 출력값을 가지지만 입력값이 조금이라도 다르면 완전히 다른 결과값을 갖게 됩니다. 또한 출력값을 안다고 해서 입력값을 알 수는 없습니다.

 

비탈릭 부테린은 “A Proof of Stake Design Philosophy” 글에서 PoW는 공격으로부터의 복구가 매우 어렵다고 언급했습니다. 만약 PoW 방식에서 ASIC 채굴기를 사용한 공격자에 의해 공격을 받았다면 처음에는 하드포크를 통해 해시 알고리즘을 변경하여 공격자의 ASIC을 쓸모 없게 만들 수 있지만 이 방식을 계속해서 사용할 수는 없으므로 공격자가 다시 공격을 할 수 있습니다[1]. 비탈릭 부테린은 PoW의 이러한 문제점을 지적하며 PoW는 결국 많은 컴퓨팅 파워를 필요로 하여 환경을 파괴하고, 공격비용이 유지보수 비용보다 많이 들어가게 한다는 사이퍼펑크 정신을 계승하지 못한다고 여겼습니다. 그는 보다 사이퍼펑크 정신을 계승할 수 있는 합의 알고리즘의 필요성을 주장했습니다.



PoS 

PoW는 CPU/GPU를 사용해서 많은 연산을 해야 블록을 생성할 수 있는 반면에, PoS는 자신이 가진 지분의 크기에 따라 블록을 생성합니다. PoW의 고질적 문제점을 해결한 대체 합의 알고리즘으로 여겨집니다.  비탈릭의 글에 맞춰 여기서 다루는 PoS는 Casper PoS(Casper the Friendly Finality Gadget)로 한정하겠습니다.

이더리움은 점차적으로 PoS로 전환하고 있습니다. 전환하기 위한 과정으로 선보인것이 Casper PoS입니다. 현재의 Casper PoS는 PoW 위에 PoS 메커니즘을 더한 하이브리드 캐스퍼입니다. 블록 생성 방식은 기존의 채굴 그대로 PoW를 사용하고, 여기에 PoS를 통해 생성된 블록에 완결성(finality)을 더하는 것입니다. 


완결성이란 이전의 기록이 불변하는 것을 말한다.
즉, 메인체인 블록으로 인정받은 블록은 영원히 메인 체인 블록인 것이다.


완결성은 사이퍼 펑크 정신과 연관된 중요한 개념입니다. 또한 Casper PoS가 가진 PoW와의 중요한 차이점입니다. PoW 합의 알고리즘은 완결성을 보장하지 않습니다. PoW는 가장 긴 체인을 메인체인으로 인정하는데,  51%이상의 엄청난 해시 파워를 가진 채굴자가 나타나 적법한 체인보다 긴 체인을 만든다면 메인체인이 변경되기때문입니다. 즉, 언제든지 장부가 조작될 가능성이 있다는 것을 의미합니다. 이와 다르게, Casper PoS는 매 50블록마다 완결성을 주어 장부 조작을 불가능하게 만듭니다. 


Casper PoS

이더(ETH)를 가진 누구나 검증자(validator)가 될 수 있는데, 검증자가 되려면 먼저 일정한 금액을 캐스퍼 스마트 컨트랙트(smart contract)에 예치금(deposit)으로 내야합니다. 스마트 컨트랙트에는 보상과 처벌에  대한 인센티브 로직이 있기때문입니다. 

검증자는 매 50번째 블록마다 투표를 하는데, 이 지점을 체크포인트라고 부릅니다. 체크포인트 투표 결과에 따라 정당한 투표일 경우 보상을 받지만, 부당한 투표일 경우 벌금을 부과합니다. 이전에 보냈던 예치금에 보상을 더하거나 벌금을 제하는 방식으로 검증자에게 경제적인 피드백을 줍니다. 이러한 방식은 블록체인을 공격한 자에게 아무런 처벌이 없는 PoW와 큰 차이를 보입니다.


[그림 2] 투표의 구성요소 도식화 이미지(출처:캐스퍼 논문)

투표의 구성요소에 대해 살펴보겠습니다. 검증자는 위 그림처럼 5가지의 정보가 포함된 투표를 사용합니다. 두 체크포인트 s(source)와  t(target) 그리고 그 둘의 높이 정보(h(s), h(t))를 포함합니다. s는 이미 한 번의 투표로 검증된 체크포인트를 의미하고  t는 처음 투표하는 체크포인트를 말합니다. 한 번의 투표로 두 체크포인트의 상태를 결정하는 것입니다.그리고 검증인의 공용키 서명인 S가 들어갑니다.


[그림 3] 체크포인트 투표 과정 이미지(출처:캐스퍼 발표자료)

블록이 완결되기 위해서는 두 번의 투표 과정을 거쳐야 합니다. 첫 투표에서는 체크포인트를 검증하는 역할을 합니다. 체크포인트에 대해 투표가 진행되고 ⅔이상의 표를 얻었을 때 이 체크포인트는 검증(justified)됩니다. 위 이미지는 ¾ 의 투표를 받아 체크크포인트가 검증된 상태를 보여줍니다.


[그림 4] 체크포인트 투표 과정 이미지(출처:캐스퍼 발표자료)

두 번째 투표는 다음 50번째 블록에서 실시합니다. 이때의 투표는 이전에 검증된 체크포인트(s)와 새로운 체크포인트(t) 둘에 대해 진행됩니다. 투표 결과가 ⅔이상이면 검증된 체크 포인트는 완결된 체크포인트가 되고, 새로운 체크포인트는 검증된 체크포인트가 됩니다. 이렇게 두 번의 투표 과정을 거쳐서 블록에 완결성을 부여합니다. 위 이미지는 투표 결과  ¾ 의 투표를 받아 일어난, 두 체크포인트의 상태 변화 보여줍니다.


[그림 5] 악의적인 투표 방지 조건(출처:캐스퍼 논문)

악의적인 투표를 막기 위한 두 가지 조건이 있습니다. 첫 번째 조건은 높이가 같은, 경쟁하는 두 체크 포인트에 중복 투표를 하지말아야 한다는 것입니다. 두 번째 조건은 다른 두 체크포인트(s1과 t1) 사이에 있는 두 체크포인트(s2와 t2)에 투표를 하지 말아야 한다는 것입니다. 이 조건 중 하나라도 어길 경우, 검증자의 예치금을 몰수(slash)합니다.


[그림 6] 이중 투표 이미지(출처:캐스퍼 발표자료)

첫번째 조건은 이중 투표(Double Vote)를 방지하기 위한 것입니다. 이중 투표는 경쟁하는 두 체크포인트(t1과 t2)에 둘 다 투표하는 것을 말합니다. 어느 체크포인트가 검증되든지 상관없이 검증자는 보상을 받을 수 있기때문에 발생하는 일입니다.


[그림 7] 서라운드 투표 이미지(출처:캐스퍼 발표자료)

두 번째 조건은 서라운드 투표(surround vote)를 방지하기 위한 것입니다. 높이가 다른 체크포인트에 중복 투표 하는 것을 방지합니다.


지금까지 Casper PoS의 작동 방식에 대해 알아보았습니다. Casper PoS의 검증자는 PoW의 채굴자와 달리 예치금을 내어야만 하고, 예치금의 손익으로 경제적인 피드백을 받습니다. 또한 악의적인 행동을 할 경우, 예치금을 몰수함으로써 직접적인 처벌을 받습니다. 예치금 몰수는 검증자가 받는 보상금의 수백, 수천배입니다. 이것은 시스템 유지를 위해 검증자에게 주는 보상금보다 악의적인 행동에 부과하는 벌금이 월등히 큰 것을 보여줍니다. 다시 말해, 유지 비용(방어)보다 파괴 비용(공격)의 비율은 1:n(n>1)인 것입니다. 이러한 비대칭적인 비용을 부과하여 검증자가 장부를 조작할 수 없게 만듭니다.




결론

비탈릭은 시스템 유지 비용보다 파괴 비용을 크게하는 블록체인이 진정한 블록체인이라고 말합니다. 시스템 보호를 유리하게 해야만 사이퍼펑크 정신 제대로 계승한 블록체인이라고 생각했기 때문입니다.

이러한 관점으로 볼 때, PoW는 사이퍼펑크 정신을 담지 못합니다. 시스템 유지 비용과 파괴 비용이 동일하기 때문입니다. 먼저 장부 공격을 처벌하는 프로토콜이 마련되어 있지 않아  공격자에게 직접적인 처벌을 가할 수 없습니다. 오직 가능한 처벌은 공격 이전의 상태로 돌리는 것입니다. 그렇기 위해서는 누군가 공격자보다 더 큰 해시 파워를 확보하여 적법한 체인이 메인 체인이 되도록 만들어야 합니다. 바로 적법한 체인을 위변조된 체인보다 길게 만들어 보안을 유지하는 것입니다. 정리하면 공격비용과 방어비용은 모두 해시 파워를 확보하는 것입니다. 결과적으로 공격 비용과 방어 비용은 1:1로 같습니다.

이와 다르게, PoS는 예치금을 낸 검증자의 투표에 의해서 보안이 유지됩니다. 검증자의 투표의 옳고 그름을 판단하여 검증자에게 보상과 처벌을 줍니다. 검증자가 체인 보안 유지에 기여를 했다면 금전적인 보상을 주고, 체인 공격을 시도했다면 예치금을 몰수하거나 삭감하는 처벌을 가합니다. 알아야할 것은 상금의 크기보다 벌금의 크기가 수백, 수천배 더 크다는 것입니다. 다시 말해, 공격과 방어의 비율은 1:n(n>1)인 것입니다. 비대칭적인 비용을 부과하여 장부를 조작할 수 없게 만듭니다. 이러한 비대칭성이 바로 비탈릭이 PoS로 전환하려고 하는 이유입니다.


참고문헌 

[1] https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1011.md

[2] https://blog.ethereum.org/2016/05/09/on-settlement-finality/ 

[3] https://en.wikipedia.org/wiki/Cryptography

[4] https://en.wikipedia.org/wiki/Cypherpunk

[5] https://steemit.com/kr/@kblock/44-1-pow-pos

[6] https://medium.com/@VitalikButerin/a-proof-of-stake-design-philosophy-506585978d51

[7]  https://arxiv.org/pdf/1710.09437.pdf

[8]https://docs.google.com/presentation/d/1fqnjL-2TqXjhHx8k7HRX7eUYnDK83adnlCLLH8Bk054/edit#slide=id.g29703948a2_0_1887

링크 

[1] https://medium.com/@sambodhiprem/but-the-second-time-you-no-longer-have-that-option-why-3a3267724c92

[2] https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQs#what-is-proof-of-stake

[3] https://medium.com/decipher-media/%EB%B8%94%EB%A1%9D%EC%B2%B4%EC%9D%B8-%ED%99%95%EC%9E%A5%EC%84%B1-%EC%86%94%EB%A3%A8%EC%85%98-%EC%8B%9C%EB%A6%AC%EC%A6%88-1-1-casper-overview-3e0154487458

이미지 출처

[1]Ethereum-Erfinder Vitalik-Buterin auf der Techcrunch Disrupt. © Techcrunch/Flickr (CC BY 2.0)

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari