비탈릭의 캐스퍼 폭풍 트위터 파헤치기 (상)

A Tweet Storm explaining the History and State of Ethereum’s Casper Research by Vitalik Buterin

8월 16일 비탈릭 부테린이 캐스퍼 연구에 관해 75개의 ‘폭풍 트윗’을 남겼습니다[1]. 이더리움은 확장성(scalability)과 확정성(finality) 문제의 솔루션으로 플라즈마, 캐스퍼 연구 등을 수 년 째 해오고 있었는데요. 비탈릭 부테린의 트윗을 국문으로 보면서, 조금 더 자세한 설명을 곁들여 캐스퍼에 대해 알아보고자 합니다.

트위터의 특성을 살리기 위해 비탈릭의 트윗을 평어로 번역하여 이미지를 재구성하였으며, 별개의 각주 표시가 없는 모든 링크는 비탈릭이 직접 첨부한 것입니다. ‘폭풍 트윗’ 해설은 세 편에 걸쳐 연재됩니다.

이번 편에서는 다음 내용에 대해 이야기합니다:

  • PoW 대비 PoS의 장점(이더리움이 합의 알고리즘을 전환하는 이유)
  • Nothing-at-stake 문제 해결
  • 장거리 공격(long range attack) 문제 해결
  • 탈중앙화, 가용성(availability) 강화
  • 다수의 검증자(validator)가 카르텔을 맺고 소수 검증자를 검열하는 문제 해결

I. 2014년: 보증금과 페널티 방식의 채택

캐스퍼는 앞서 말했듯 이더리움의 PoS 전환을 위한 연구로, 비탈릭이 주도하고 있는 FFG(Friendly Finality Gadget) 방식과 블라드(Vlad Zamfir; 이더리움 캐스퍼 개발자)가 주도하고 있는 CBC(Correct-by-Construct) 방식이 있습니다. 각각 어떤 것에 중점을 두었는지, 어떤 장점과 단점을 갖고 있는지는 후에 비탈릭의 트윗과 함께 천천히 살펴보도록 하겠습니다.

비탈릭은 2번 트윗에서 공유한 글 슬래셔(Slasher)에서, 최초로 PoS의 개념을 도입한 써니 킹(Sunny King)의 PPCoin을 통해 PoW 대비 PoS의 장점을 설명했습니다.

  • 불필요한 계산 작업을 하지 않아 친환경적입니다
    POW에서는 네트워크의 보안성을 유지하기 위해 마이닝(사실은 불필요한 계산 작업)을 하게 됩니다.
  • 마이닝 풀의 집중화로 인한 중앙화 현상을 완화할 수 있습니다
    POW에서는 큰 채굴장일수록 1달러 당 얻을 수 있는 해시 파워가 개인 채굴자에 비해 크지만, POS에서는 누구에게나 동등합니다.

그러나 잘 알려져 있듯 PoS는 ‘nothing-at-stake’ 라는 문제점을 가지고 있습니다. 체인에서 포크가 발생해 검증자가 투표해야 하는 상황에서, 두 블록 모두에 투표해도 검증자 입장에서는 손해보는 게 없다는 것을 이르는 말입니다. 쉽게 말하자면 ‘무위험 베팅’이죠. 하지만 전체 블록체인 입장에서는 이로 인해 이중지출 문제가 발생할 수 있습니다. 이러한 문제는 경제 메커니즘을 사용해 해결할 수 있습니다. 블록에 투표하는 검증자들이 보증금을 예치해두고, 서로 충돌하는 내용을 담은 메시지에 서명하면 보증금을 삭감하는 방식으로 페널티를 주는 것입니다.

비트코인 진영이자 밈블윔블 프로젝트를 진행하고 있는 앤드류 폴스트라의 글. 이 글에서 앤드류는 POS는 시스템 외부에서 리소스를 얻기 때문에 분산화된 합의 방식이 될 수 없다며 비판한다.

보증금을 예치하도록 해도 모든 문제가 해결되는 것은 아닙니다. 어떤 사람이 약간의 코인을 쥐어주면서 보증금이 들어있던(이제는 인출해서 잔고가 0인) 검증자 주소의 키를 자신에게도 공유해달라고 하는, 뇌물 공격(bribe attack)의 경우가 있기 때문입니다. 공격자는 블록체인을 통제할 수 있는 키를 하나 얻은 셈이어서 자신의 의지대로 공격체인 위에 거짓 역사를 만들 수 있습니다. 그럼 클라이언트는 메인체인과 공격체인 중 누가 진짜 보증금을 갖고 있던 검증자인지 알 수 없게 됩니다.

블라드는 간단한 솔루션을 생각해냈습니다. 현재 잔고가 0인 검증자의 서명은 유효하지 않다고 치는 겁니다. 그리고 보증금을 인출하기 위해서 네 달이 걸리게 하면, 네 달보다 더 오래 전 시점으로 돌아가는 변화는 클라이언트가 의심하고 거절할 수 있습니다.

이 방식은 PoW와는 완전히 다릅니다. PoW에서는 제네시스 블록과 이어져 있고, 해시값이 난이도 필요조건을 만족하면 다른 외부 정보가 없어도 유효한 블록으로 취급하지만, 보증금 기반의 PoS 방식에서는 검증자의 잔고를 확인해야 하는 지금 당장의 정보가 필요하기 때문입니다. 그렇기 때문에 비록 PoW 지지자들로부터 반발은 있었지만, 비탈릭은 “신뢰할 만한 소스가 있고, 소프트웨어 업데이트를 잊지만 않으면 큰 비용이 아니라서 별 문제가 되지 않는다”고 트윗했습니다. 한번 외부 정보를 가져다가 동기화하면, 그 이후엔 (적어도 네 달에 한 번만 로그온하면) 스스로 블록의 유효성을 검증할 수 있기 때문입니다. 아래 10~12번 트윗이 이 논쟁에 대한 비탈릭의 의견입니다.

주관주의: 인간의 판단은 단지 ‘각자가 대상에 어떻게 관련되어 있고, 어떻게 생각하는가’에만 의존하고 있어, 엄밀히 말하면 보편∙타당적이며 객관적인 판단이란 없다는 철학.

II. 2015년: 베팅에 의한 합의(consensus by bet)

베팅에 의한 합의의 핵심 개념은 ‘어떤 블록이 확정될지, 블록에 베팅할 기회를 제공하는 것’입니다. 즉, 검증자가 블록 X에 베팅했는데 블록 X가 프로세스됐다면(유효 검증자들이 블록 X에 가장 많이 베팅을 했다면) 보상을 받게 되고, 프로세스되지 않는다면(블록 X가 아닌 다른 블록이 가장 많이 베팅을 받았다면) 보증금이 삭감되는 방식입니다.

때문에 검증자들은 어떤 블록이 유효한지 혼자 판단하기보다는, 다른 검증자들이 어디에 많이 베팅을 했는지 살펴보게 됩니다. 베팅 초기에는 어떤 검증자가 베팅한 블록이 베팅에서 우승할 확률은 낮지만, 다른 검증자들이 해당 블록에 따라 베팅을 할수록, 아직 베팅하지 않은 검증자들도 따라서 블록 X에 베팅을 하기 때문에 결국엔 한 블록에 다들 보증금을 걸게 되는 것입니다. 이렇게 경제적 확정성을 이룰 수 있습니다.

합의 방식(consensus)에 대한 오래된 혼용과 오해가 있는데, 우선 이를 명확히 짚고 넘어가고자 합니다. 퍼블릭 블록체인과 같은 무허가성 네트워크에서는

A. 시빌 공격(Sybil attack)을 막기 위한 프로토콜
블록 생성 권한을 누구에게 줄 것인가

B. 결정을 내리기 위한 메커니즘
어느 체인을 선택할 것인가

두 개가 조합됩니다[2]. 예컨대 비트코인에서는 무차별적으로 블록을 생성하는 것을 막기 위해 A. PoW 방식을 쓰고, B. 블록 난이도의 합이 가장 높은 체인을 선택하는 나카모토 컨센서스를 사용하고 있습니다. PoS로 전환되는 이더리움에서도 A. 삭감될 수 있는 보증금을 예치해 블록을 올바르게 생성하게 하고, 어떤 체인이 맞는지 결정을 내리기 위해 B. 캐스퍼를 그 위에 얹는(overlay) 방식으로 구성합니다.

PoS와 전통적 BFT를 조합해 사용하는 텐더민트의 합의 알고리즘을 살펴보던 블라드는 ‘텐더민트는 충분히 탈중앙화되어 있지 않다’는 결론을 내립니다. 불의의 사고로 인해 블록체인 노드가 하나만 남게 되더라도, 그 노드로부터 전체 블록체인을 재생성해낼 수 있어야 진정한 탈중앙화라고 생각했기 때문입니다. 마치 세포 하나만 남아도 전체를 재생성할 수 있는 균사체(mycelium)처럼 말입니다.

전통적 BFT는 블록이 확정될 만큼 많은 노드들이 투표한 블록만을 채택하는, 안전성에 중점을 둔 방식이기 때문에 블록을 선택하는 데에 전체 노드의 ⅔ 를 초과하는 동의가 있어야 합니다. 이 값이 블라드에게는 너무 높아보였던 겁니다. 노드가 하나만 남았을 때 블록체인이 계속 운영될 수도 없고요.

따라서 블라드는 BFT를 아예 구조부터 새로 디자인하기 시작하고, 여기에 CBC(Correct by Construction)라는 이름을 붙입니다. 검증자들이 블록에 서명할 때마다 어느 블록에 누가 서명했는지 DAG 방식으로 기록해두면 어떤 블록이 서명 가중치가 높은지 알 수 있을 뿐만 아니라 하나의 노드만 남더라도 시간 순으로 모든 트랜잭션을 재생성할 수 있죠. 특정 검증자가 서명한 블록이 자주 DAG에 포함되지 않으면 다수가 카르텔을 맺고 소수 검증자를 검열하고 있다는 뜻이 될테니 페널티를 줄 수도 있고요. 안정성에 중점을 둔 전통 BFT보다 가용성을 강화합니다. 블록이 생성된 뒤에 블록에 서명할 수 있게 하면 어쨌든 비잔틴 정족수(Byzantine Quorum; 2/3)를 충족할 수 있어 확정성도 챙길 수 있습니다.

이번 편에서는 다음과 같은 내용을 알아봤습니다.

  • PoW 대비 PoS의 장점(이더리움이 합의 알고리즘을 전환하는 이유)
  • Nothing-at-stake 문제 해결 → 보증금 삭감 방식의 도입
  • 장거리 공격(long range attack) 문제 해결 → 보증금 인출에 기간 도입
  • 탈중앙화, 가용성 강화 → 하나의 노드로부터 전체 블록체인을 재생성할 수 있게 함
  • 다수 검증자가 카르텔을 맺어 소수 검증자를 검열하는 문제 해결

이번 편에서 다룬 내용은 주로 캐스퍼 연구 초기에 있던 주요 개념의 도입에 관한 내용이었습니다. 다음 편에서는 비탈릭의 50번째 트윗까지 살펴보며 보증금의 삭감, 포크가 일어났을 때의 체인 선택 규칙 등에 대해 조금 더 자세히 알아보도록 하겠습니다. Follow me and stay tuned!👏👏


면책조항. 이 글은 매우 개인적인 의견을 담고 있으며, 해시드의 철학이나 다른 멤버들의 생각과 다를 수 있습니다. 글을 올리기 전에 최대한 내용을 신중하게 검토하지만, 읽는 이는 항상 정보를 주체적으로 받아들여야 합니다. 이 글에서 제공하는 정보의 이용 또는 비이용으로 인한 피해, 또는 부정확하거나 불완전한 정보 이용으로 인한 피해에 대한 책임을 지지 않습니다.
인용한 내용에 대해서는 미주에 출처를 표기하며, 별도 출처 표기가 없는 이미지는 저자가 직접 제작한 것입니다. 잘못된 내용에 대한 지적과 다양한 피드백을 환영합니다.

References

[1] Buterin, V. (2018, August 15). Retrieved from https://twitter.com/VitalikButerin/status/1029900695925706753

[2] Sirer, E. G. (2018, June 13). Retrieved fromhttps://twitter.com/el33th4xor/status/1006931658338177024 (국문 번역: 이로운. (2018, June 15). Retrieved from https://medium.com/@LounLee/pow는-컨센서스-프로토콜이-아니다-521e8fb7f656)

함께 읽어보면 좋은 글

[1] Choi, J. (2017, October 22). Retrieved from https://medium.com/@jonchoi/ethereum-casper-101-7a851a4f1eb0 (국문 번역: 이로운. (2018, March 4). Retrieved from https://medium.com/@LounLee/이더리움-캐스퍼-첫걸음-by-jon-choi-14e014e0d9f7)