[Celo] 셀로로 살펴보는 지분증명방식 선거제도
D'Hondt method in Celo Proof-of-Stake blockchain
Celo는 전화번호만으로도 최소한의 비용으로 쉽고, 빠르고, 안전하게 결제 가능한 플랫폼으로 소개된 블록체인으로 지난 포스트에서 암호화폐 관점에서 살펴보았다. [1] 이번 글에서는 Celo의 지분증명 선거제도에 대하여 살펴보기로 한다.
Celo의 합의 알고리즘 및 선거제도
Celo는 지분증명방식 (Proof-of-Stake, PoS) 합의 알고리즘을 이용하고 있으며, Celo는 지분증명방식으로 블록체인 네트워크를 운영하기 위하여 100개의 검증자를 선정하고 있다. 그리고 100개의 검증자는 지분증명으로 자격을 얻은 검증자들 중 투표를 통하여 동트방식(D’Hondt method)라 불리우는 선거제도(Electoral System)로 선정된다. 이는 일반적인 지분증명방식 또는 위임지분증명방식(Delegated Proof-of-Stake, DPoS)에서 사용되던 일반적인 다수결 방식과는 다른 선거제도이다.
선거제도가 블록체인에서 중요한가?
현재 Celo에서는 The Great Stake Off 라는 검증자 대회가 진행 중이다. 처음에는 Celo에서 사용된 선거제도가 주목을 받지 못하였으나, 대회가 진행되면서 Celo의 선거제도와 참여자들의 높은 참여도의 시너지 효과로, 현재는 Celo에 검증자가 100개를 훨씬 넘게 되었고, 또한 참여율도 높아져 대회가 매우 다이나믹하게 진행되고 있다.

<100개가 넘어가는 Celo 검증자 그룹의 일부 (Source: https://celo.org/build)>
현재 대회 중인 참여자들은 수시로 총 투표수를 확인하고, 투표 계산기를 통하여 검증자의 당선 여부를 확인해야한다. 그리고 계속해서 검증자 노드를 당선시키기 위하여 Celo이 Discord 채널에서는 검증자들은 협력을 위한 대화가 24시간 진행되고 있다. 글을 쓰는 현재는 대회가 후반으로 접어들면서 많은 참여자들이 최소 요구 득표를 얻지 못하여 검증 보상을 못 받고 있으며, 이러한 참여자들은 여러가지 방법을 통하여 테스트넷의 검증자로 복귀하기 위하여 다양한 방법들을 동원하고 있다.

<협력 및 선거 전략을 논하는 대화 Source: Celo discord의 #stake-off 채널>
그리고 지분증명방식의 블록체인에서 이와 같은 선거제도는 새롭다보니, 대회 참여자들 중 상당수는 기존 EOS, Cosmos 등의 지분증명방식 계열이 블록체인에서 활동하던 검증자임에도 새로운 경험에 대하여 환영하고 있으며, 다양한 토론이 이루어지고 있다. 그리고 그 토론을 통하여 지분증명방식 블록체인의 경우 인센티브 모델과 선거제도가 밀접하게 관련되어 있음이 명확해졌으며, 지분증명방식 블록체인을 이해하기 위해서는 선거제도도 깊게 이해하는 것이 중요하다는 공감대가 생겼다.
이에 지분증명 방식의 블록체인을 더욱 깊게 이해하기 위하여 Celo에 사용된 동트방식 선거제도를 살펴보기로 한다.
동트방식 (D’Hondt method) 이란
Wikipedia에 따르면 1878년에 Victor D'Hondt이 제안한 정당 명부식 비례대표제 선거 제도로, 50여개 이상의 국가에서 현재 사용하고 있는 선거제도이며 현재 스위스, 스페인, 덴마크, 유럽 의회, 일본, 아르헨티나, 브라질 등에서 사용하고 있다. 동트방식은 다음 과정을 반복하여 의석을 할당하게된다.
제일 많은 득표수를 가진 정당에게 의석을 할당한다.
의석을 가저간 정당의 득표수를 할당받은 의석수+1로 나누어 줄이게 된다.
남은 의석이 있으며 다시 1단계부터 반복
매우 간단하지만 쉽게 이해되지는 않으므로 예를 들어서 설명하기로 한다. 아래와 같이 총 4개의 정당이 12명의 후보와 득표수를 가지고 있을 때, 총 8개의 의석을 D’hondt Method로 의석을 배분해보자.

위 득표수를 가지고 각 Round 별로 1석의 의석을 배분하는 경우, 아래와 같이 의석이 배분되게 된다. 각 라운드 별로 제일 많은 득표수를 가지는 그룹이 1석을 확보하고, 득표수를 확보한 (의석수+1) 로 나누고 다음 라운드를 계속 진행하여 총 8개의 라운드를 거치면서 8개의 의석이 정당들에게 배분되게 된다.

각 라운드를 진행하면서 매우 간단하게 8개의 의석을 배분되는 것을 확인할 수 있다. 다시 각 정당을 살펴보면, Party A는 4의석을 확보하여 5명의 후보 중 우선 순위에 따라서 4명의 후보가 당선되었다. Party B는 우선순위에 따라 3명의 후보가 당선되었다. 반면 Party D의 경우는 의석을 할당받지 못하였다.
위 결과를 살펴보면 Party A가 유리한 것처럼 보이는데 이는 맞는 것이며, 동트방식은 상대적으로 표를 많이 받은 정당에 유리하다고 알려져 있다. 위의 예제를 살펴보면, Party A는 Party B와 비교해서 20000표 많을 뿐이지만 1석을 추가로 확보하였다. 각 그룹 별로 살펴보면 아래와 같이 의석 당 필요하였던 득표수에서 Party A가 유리함을 알 수 있다.

위 예시에서는 득표가 많은 정당일수록 유리한 것처럼 되었으나, 실제로는 상대적으로 적은 표를 받은 정당에 비교하여 유리할 뿐 표가 많다고 무조건 유리하지는 않다. 아래와 같이 Party C의 득표수를 70,000으로 수정하면, Party A와 Party B는 같은 의석수를 배정받고, 득표수로 2등인 Party B의 표 효율이 제일 좋게된다.

그렇더라도 동트방식을 채택하는 경우 득표수의 효율면에서 소수 정당보다는 거대 정당이 유리하여, 거대 정당으로 표가 몰리는 문제가 있으며, 이러한 문제를 보안하기 위하여 실제로 적용시에는 여러가지 보완 방법들이 사용될 수 있다.
Celo의 경우도 이러한 문제를 개선하기 위하여 하나의 정당에서 당선될 수 있는 최대 후보자 수를 정하고 있으며, 실제로 어떻게 적용되고 있는지 살펴보기로 한다.
Celo의 동트방식 (D’Hondt method)
검증자(Validator)와 검증자 그룹 (Validator Group)
앞에서 설명하였듯이 Celo는 지분증명방식의 합의알고리즘을 채택하고 있으며 합의(consensus)를 위하여 총 100개의 검증자 (Validator)를 투표를 통하여 선정하고 있다. 그리고 검증자는 선거에 참여하기 위해서는 검증자 그룹(Valdiator Group)이라는 일종의 정당에 가입하여야 한다. 그리고 하나의 검증자 그룹은 최대 5개의 검증자를 소속시킬 수 있다.
스테이킹 (Staking)
그리고 대부분의 지분증명방식 블록체인이 그렇듯이, 선거에 참여하기 위해서는 Nothing-at-Stake 문제를 Slashing으로 방지하기 위해 소위 스테이킹(Staking)을 해야만 한다. Celo는 Celo Gold (cGLD)라는 토큰으로 스테이킹을 하도록 하고 있으며, 각 검증자는 최소 10,000 cGLD를 스테이킹 하여야 선거에 참여할 수 있다. 그리고 이와 동시에 정당도 입후보할 검증자 마다 10,000 cGLD를 스테이킹하여한다. 일종의 비례대표 정당 기탁금이며 이도 Slashing의 대상이 된다. 검증자 그룹과 검증자를 설명한 선거제도와 같이 요약해보면 아래와 같다.

누가 누구에게 투표하는 것일까?
Celo에서는 Celo Gold (cGLD)의 보유하면 검증자 그룹에 투표할 수 있다. 검증자와 그룹도 cGLD를 보유하고 있으므로 투표할 수 있으며 일반적인 경우 검증자는 자신이 속한 그룹에, 그리고 그룹도 자기 자신에게 투표하게된다. 물론 다른 그룹에 투표할 수도 있지만, 앞에서 살펴보았듯이 그룹 간 특표수 경쟁을 하여야하기 때문에, 이익이 있을 때만 다른 그룹에 투표할 것이다.
이와 같이 Celo에 적용된 선거제도인 동트방법은 이해하는데 어렵지 않아 보이며 큰 문제도 없어보인다.
검증자 대회에서 동트방식은 왜 이슈가 되었나?
이번 대회에는 모든 참여자들이 24,000 cGLD를 가지고 대회에 참여하였다. 그리고 이를 이용하여 각 참여자들은 하나의 그룹과 하나의 검증자를 20,000 cGLD를 스테이킹하여 검증에 참여할 수 있었다. 대회 초기에는 이러한 참여자 검증자가 약 90개였으며, Celo 개발팀인 C-Lab의 검증자까지 합하여 총 100개의 검증자가 큰 문제없이 선거에 참여하여 당선되어 지분증명방식 합의에 참여하였다.
하지만 대회가 진행되면서 하나의 그룹에서 2번째 검증자를 입후보시킬 수 있는 Celo Gold를 검증 보상 (Validation reward)로 확보하게되면서 경쟁이 시작되었다. 그리고 검증자 그룹에서 2번째 후보자를 당선시킬 수 있는 상황이 되면서, 득표수에서 뒤처진 검증자 그룹의 경우는 그룹에 속한 검증자를 당선시킬 수 없는 상황이 발생하였다. 그리고 현재는 약 120개의 검증자 그룹이 있지만 이 글을 작성 중인 2020년 2월 8일 기준으로는 약 절반인 64개의 Group만이 의석을 배분받고 있다.
무슨 일이 있었던 것일까?
요약하면 당선된 검증자의 숫자에 비례하여 검증 보상을 더 많이 받게되어 더욱 빠르게 득표수를 늘릴 수 있게되어 부익부빈익빈(富益富貧益貧) 현상이 발생하게 된 것이다.
예를 아래와 같이 3개의 팀 A, B, C가 대회에 20k를 가지고 참여하였을 상황을 생각해보자.

각 팀은 T0 시점에서 각각 10k씩 그룹과 검증자에 스테이킹하고 네트워크에 참여합니다. T1 시점에서 각 팀은 검증 보상으로 여분의 10k cGLD 보유하게 되었습니다. 이 시점에 A와 B가 협력을 하여 A 팀은 그룹에, B 팀은 검증자에 스테이킹 합니다. 그리고 B팀의 검증자 B2는 그룹 B가 아닌 그룹 A에 가입함으로써 선거에 참여할 수 있게 됩니다. 참고로 Celo 대회 규정상 검증자 B2의 검증 보상은 그룹A와 검증자B2 50%씩 나누어 가지도록 설정되어 있습니다. 그 결과 검증자 B2가 당선되면 T1 시점부터는 A와 B팀은 각자 보유한 1대의 검증자의 보상이 아닌 검증자 1.5대의 보상을 받게됩니다. 반면 혼자서 활동하던 C팀은 여전이 검증자 1대의 보상만을 받게됩니다. T2 시점에 팀 A와 B는 협력하여 C팀보다 1.5배의 속도로 10k를 보상으로 받게되어 새로운 검증자 A2도 추가하게 됩니다. 반면 C팀은 여전히 검증자 C2를 추가하지 못하고 있습니다. 그리고 이는 계속해서 반복되어 부익부빈익빈을 가속하게됩니다.
그리고 어느순간 100개의 검증자 의석이 모두 유저들의 검증자로 채워진 이후에는, 새로운 검증자가 추가될 때마다 기존 검증자들과 새로운 검증자가 경쟁하는 제로섬 게임됩니다. 앞에서 살펴보았듯이 동트방법에 따르면 상대적으로 표가 많은 그룹이 유리하게되어 적은 득표를 하고 있는 하위 그룹의 검증자가 검증자 의석을 잃게됩니다
실제로도 그럴까?
Celo TGCSO 대회의 초기에는 약 90여개 참여자들의 Group이 검증자 의석을 1개씩 나누어 가지면서 시작되었다. 하지만 대회가 진행되면서 하나의 그룹에서 2번째 검증자가 당선될 수 있는 스테이킹이 가능해진 이후부터 그룹간 협력을 통하여 이와 같은 현상이 빠르게 진행되었으며, 이 글을 작성 중인 2020년 2월 8일에는 약 64개의 Group만이 의석을 배분받고 있다.
대회 후반에 접어든 현재는 이러한 노하우가 모든 참여자들에게 알려져 그 누구도 쉽게 새로운 검증자를 쉽게 추가할 수 없으며, 득표수를 계속 늘리더라도 기존 확보한 의석 유지도 쉽지 않게되는 치킨게임 양상을 보이고 있다.실제로 선거 기록들을 살펴보니 최소 필요 득표수가 초기의 20k에서 현재는 아래와 같이 146k이상으로 계속 증가되어, 실제로 그룹이 의석을 확보하지 못하게 되는 것을 확인할 수 있다.

<일부 그룹들의 시간 별 득표수 및 확보 의석수>
이러한 현상은 문제가 없는 것일까?
탈중앙화를 지향하는 블록체인 생태계에서 이러한 현상은 바람직하지 않아 보여, Celo 테스트넷의 참가자들은 우려를 표명하였고, 이와 관련된 다양한 논의와 토론도 진행되고 있다. 현재까지는 다음과 같은 이유로 크게 우려하지 않아도 될 것 같다는 공감대가 이루어지고 있다.
테스트넷에서는 검증 보상(Validation reward)의 유일한 사용처가 스테이킹과 투표 뿐
메인넷에서는 새로운 사용처(예: 현금화, 수수료 지급 등)이 생겨 투표 incentive가 적다
메인넷에서는 스테이킹/투표 외에 더 수익률 좋은 사용처가 나올 것이다
Celo에서는 투표를 하게되면 lockup 기간이 발생하므로 메인넷에서는 투표는 신중할 것이다
검증자는 그룹을 자유롭게 선택할 수 있다
Celo Gold 소유자도 투표할 그룹을 자유롭게 선택할 수 있다
투표 집중화가 발생하더라도, 100개의 검증자가 20개의 그룹에서 선정되는 것이므로, 기존 다른 블록체인과 비교하여서도 충분히 탈중화가 되었다고 볼 수 있다.
위와 같은 의견 외에도 이 문제는 비트코인이나 이더리움와 같은 Proof-of-Work 블록체인에서의 마이닝풀 집중화 현상과 비슷하며 이러한 환경에서도 비록 마이닝풀은 집중화되었지만, 마이너들은 자유롭게 마이닝 풀을 선택하고 옮길 수 있어 문제가 없었다는 의견도 있다. [2]
마치면서..
이번 Celo 검증자 대회 이전에는 대다수의 참여자들은 기존 PoS 블록체인 경험을 기반으로 검증자의 업타임(uptime)을 유지하는 기술적인 방안을 고민하고 준비하고 있었다. 하지만 대회가 시작되고 나서는 기술적인 방안 뿐만 아니라 Celo의 선거제도 (Electoral System)를 잘 이해하는 것이 중요하게 되었으며, 검증자를 운영하는 기술적인 방안에 더불어 선거제도를 잘 이해하는 참여자들이 선거 전략을 이용하여 더욱 많은 검증 보상을 받게 되었다.
이는 기존에 지분증명방식 블록체인에 새롭게 중요하게 고려해야하는 선거제도라는 부분이 추가되었음을 시사하고 있다. 그리고 실제 대회 기간 중 관측된 인센티브모델과 선거제도의 시너지 효과는 지분증명방식 블록체인들에서도 계속 고려되고 검토되어야 할 것으로 보이며, 2020년에도 매우 다양한 지분증명 기반의 블록체인이 소개될 예정이어서 새로운 선거제도가 도입되는 실험이 계속되지 않을까 기대하고 있다.
Written by “hqueue | dsrv labs”@Celo discord
References
[1] https://cryptoturtles.substack.com/p/celo-
[2] https://blog.consensusnetworks.com/celo-stakeoff/
