Proof of Stake의 특성과 이론적 배경

Brian Cho
Tokenomia
Published in
14 min readOct 18, 2018

- PoW 에서 PoS 를 향해

최근 이더리움 생태계의 가장 뜨거운 관심사는 Proof of Work (PoW) 에서 Proof of Stake (PoS) 로 넘어가는 합의 알고리즘의 변화가 아닌가 합니다. 많은 분들이 합의 알고리즘의 변경 시점과 그 이후 이더리움 생태계 전반의 발전 방향을 궁금해 하실텐데, 그것에 대한 논의에 앞서 먼저 Casper the Friendly Finality Gadget 논문을 통해 PoS 가 구체적으로 어떤 과정을 통해 합의에 이르는지 알아보려고 합니다. 이를 통해 자연스럽게 PoW 에서 PoS 로 합의 알고리즘을 변화하게 된 계기와 합의 알고리즘의 변화 이후 무엇을 기대할 수 있는지 다루어보겠습니다.

- 왜 PoS?

PoS 를 이야기하기에 앞서 먼저 현재 이더리움에서 합의에 이루기 위해 사용하는 PoW 에 대해 잠깐 설명해보겠습니다. 일반적으로 사람들이 동일한 거래를 두고 다른 이야기를 한다면 누구 말이 옳은지 판별하는 중재자가 필요합니다. 블록체인은 중재자를 없애는 탈중앙화 구조를 지향하고 있기에 어느 한 개인이 중재자 역할을 하는 것이 아니라 합의 알고리즘을 통해 어떤 주장이 유효한지 판별합니다. 대부분의 블록체인 네트워크는 현재 PoW 를 합의 알고리즘으로 이용하고 있습니다. 블록체인에서 PoW 는 보통 각 블록 헤더에 있는 정보를 이용해 특정한 조건을 충족하는 해쉬 값을 찾는 암호 풀기 과정을 말합니다. 이 과정을 마이닝이라고 하며, 마이닝에 성공한 마이너는 블록을 생성하고 배포하며 합의 알고리즘에 참여한 대가로 보상을 받게 됩니다. (이더리움에서는 이더로 보상을 제공합니다) 그리고 블록체인 네트워크에 연결된 노드들은 새 블록이 유효한지 검증한 뒤 이를 장부에 추가합니다.

마이닝에 필요한 수학적인 연산은 적지 않은 시간과 전력을 요구합니다. 이를 위해 전문화된 마이닝 풀이 전세계적으로 활발히 돌아가고 있습니다. 이들이 블록을 생성하는데 사용하는 에너지는 엄청난 수준입니다. 구체적으로 말씀드리면 현재 이더리움이 소모하는 연간 전력량은 19.12 TWh 에 이를 것이라 추정하며 이를 국가로 치환하면 71번째로 연간 전력 소모량이 많은 국가가 됩니다. 이더리움으로 인해 발생하는 경제 효과와 기술 발전, 그 외에 실사용자에게 돌아가는 편의 등등을 고려해 보아도 이는 지나친 에너지 낭비라는 지적이 있습니다.

(출처: https://digiconomist.net/ethereum-energy-consumption)

마이닝 풀이라는 전문적인 채굴업자들이 등장하여 이더리움 합의 알고리즘의 큰 비중을 차지하다보니 탈중앙화는 그저 허울 좋은 구호일 뿐이라는 비난 역시 피할 수 없습니다. 전문적인 장비를 갖춘 채굴자들은 블록 생성을 통해 더 많은 이익을 벌어들이며 이를 다시 장비에 투자합니다. 그러다보니 개인 채굴자는 이더리움 채굴 능력이 상대적으로 떨어지고 이는 다시 채굴업자의 이익을 증대시키는 악순환의 반복입니다.

(출처: https://www.etherchain.org/charts/topMiners, 2018년 10월 2일 기준 지난 24시간 채굴 통계)

위 그래프에서 보실 수 있듯이 이론적으로는 상위 5개의 마이닝 풀이 연합한다면 얼마든지 51% 공격을 시도하여 악의적으로 이더리움 합의를 좌우할 수 있는 상황에 이르렀습니다. 그것이 실제 행동으로 옮겨질 가능성은 논외로 두고서, 블록체인의 기본 개념인 탈중앙화를 위협하는 상황인 것은 분명합니다.

이처럼 PoW 는 현재 이더리움 생태계 발전을 저해하는 여러가지 문제들을 야기하고 있습니다. 이더리움 재단은 이를 해결하기 위해 PoS 를 새로운 합의 알고리즘으로 제안하였습니다. 이제 PoS 가 어떤 특성을 가지고 있으며 어떻게 위 문제들을 해결할 수 있는지 이야기해보겠습니다.

- PoS > PoW?

PoS 는 기본적으로 투표를 통해 유효한 블록을 생성하는 합의 알고리즘입니다. 투표에 참여하기 위해 일정량의 토큰을 예치해야 한다는 것을 염두에 두고 투표에 의한 합의 알고리즘이 어떻게 PoW 합의 알고리즘에서 발생한 문제들을 해결하는지 알아보려고 합니다. (투표가 일어나는 과정, 투표권을 행사하는 규칙, 제약이나 유효한 블록으로 확정되는 자세한 과정은 잠시 후에 다루겠습니다)

첫째로 PoS 의 투표 및 투표 검증 과정은 PoW 에서 필요했던 길고 복잡한 연산 과정을 요구하지 않으므로 전력 문제는 자연스럽게 해결됩니다. 전력 문제를 해결하는 것은 코인 발행량을 줄이는 효과도 있습니다. 앞서 합의 알고리즘에 참여한 마이너는 보상으로 이더를 받는다고 했는데, PoW 에서는 블록을 채굴하는데 많은 전력이 필요한 만큼 채굴자에게 사용한 전력량을 넘어서는 이득을 주기 위해서 많은 이더를 제공해야 했습니다. 그런데 PoS 에서는 블록을 채굴하는데 많은 자원을 요구하지 않으므로 적은 이더 발행으로도 충분한 보상을 줄 수 있어 코인 발행량이 줄어들게 됩니다.

그리고 PoW 에서 발생한 전문 채굴업자를 통한 중앙화의 위협은 투표 기반의 PoS 에서 줄어듭니다. PoW 는 거대 자본을 가진 한명의 채굴자가 소규모 자본으로 채굴하는 여러 명의 영향력을 압도하는 구조입니다. 예를 들어, 같은 비용이라도 $10,000를 투자한 전문 채굴업자 1명이 $1를 투자한 10,000명의 채굴자보다 더 강력한 채굴 능력을 가집니다. 하지만 PoS 에서는 자본의 양에 따른 효율이란 존재하지 않습니다. 정해진 양의 자본에 따라 정해진 양의 투표권이 있을 뿐입니다.

따라서 PoW 와 비교하여 중앙화의 우려가 적은 구조입니다. 그럼에도 불구하고 검증인들이 걸어놓은 이더리움 전체 양의 51% 넘어서는 자본이 서로 연합하거나 거대 자본이 진입하여 악의적인 공격을 시도했다면, 공격자가 투표에 참여하기 위해 예치해 둔 모든 이더가 사라진 상태의 새 포크를 만들어 이더리움 생태계를 보호할 수 있습니다. PoW 에서는 채굴 장비를 파기하는 등의 페널티가 불가능하나 PoS 에서는 검증인으로 등록할 때 걸어놓은 이더를 몰수할 수 있으므로 PoW 보다 공격자에 대한 방어가 더 강한 편입니다.

지금까지 PoW 가 가진 문제점, PoS 에 대한 간략한 설명과 PoW 에서 발생하는 문제점들을 PoS 에서 어떻게 보완하는지 알아보았습니다. 이제 조금 더 기술적인 시각에서 접근하여 PoS 가 가지는 규칙, 제약, 그리고 예상 가능한 공격 및 그것에 대한 대책 등을 알아보겠습니다.

- 투표

먼저 투표에 참여하기 위해서는 특정 계좌로 코인을 보내 검증인으로 등록하는 과정이 필요합니다. 이 때, 모든 검증인은 자신이 걸어 놓은 이더리움 양에 비례하여 투표권을 행사할 수 있습니다. (투표수가 투표자 인원수가 아닌 투표자 각각이 걸어놓은 이더리움 양이라는 의미입니다) 예를 들어 ‘2/3 이상 투표를 받아야 한다’는 말은 검증인 각자가 걸어놓은 코인 양의 2/3 이상이 하나의 합의를 이루어야 한다는 말과 동일합니다. 검증인으로 등록할 때 걸어놓은 코인 양은 투표에 참여하여 페널티를 받거나 리워드를 받을 때마다 줄어들거나 늘어나는 등으로 양이 변합니다.

앞서 PoS 에서는 투표를 통해 유효한 블록을 생성하고 합의에 이룬다고 말씀드렸습니다. 이 때, 검증인은 아래와 같은 4가지 정보와 자신의 퍼블릭키를 함께 송신하여 투표에 참가할 수 있습니다.

s: 인증된 체크포인트의 해쉬 (the “source”)

t: s 의 후손인 임의의 체크포인트 (the “target”)

h(s): 체크포인트 트리에서 체크포인트 s 의 높이

h(t): 체크포인트 트리에서 체크포인트 t 의 높이

*단, 여기서 s는 체크포인트 트리 안에서 t의 조상이어야 합니다. 그렇지 않으면 투표는 무효화됩니다.

**검증인의 퍼블릭키가 포함되지 않으면 역시 투표는 무효화됩니다. 이는 투표 이후 리워드 혹은 페널티를 적용하는데 필요한 정보입니다.

- 투표 규칙

PoS 에서 블록을 검증하고 합의에 이르기 위해 금지하는 투표가 있습니다.

1) h(t1) = h(t2)

같은 높이의 서로 다른 2개의 타겟에 투표하면 안되는 규칙입니다. 이는 2개의 충돌하는 블록이 동시에 확정되는 것을 방지하기 위한 것인데, 다른 규정 없이 높이만을 제약 규정으로 다루고 있습니다. 달리 보면 높이만 다르다면 한 명의 검증인이 다른 포크의 여러 타겟에 동시에 투표할 수 있다는 의미입니다. 이 규칙의 특수성을 이해하기 위해서는 먼저 블록이 확정되는 규칙을 이해해야 합니다.

— 소스 a 와 타겟 b 가 2/3 이상의 투표를 받았을 때, 이들 (a, b) 체크포인트 쌍을 supermajority link 라 부릅니다. 이 때, supermajority link 는 직계 관계가 아니어도 성립할 수 있으며 체크포인트 쌍 사이 다른 블록이 존재하여도 무관합니다. 즉, h(b) > h(a) + 1 이어도 supermajority link 관계는 성립합니다.

— 2개의 체크포인트 a와 b가 서로 다른 가지에 존재할 때, 즉 어떤 쪽도 다른 쪽의 부모나 자식이 아닐 때, a와 b가 충돌한다고 합니다.

— i) 체크포인트 c가 뿌리이거나 ii) justified 된 체크포인트에서 c`에서 c로 가는 supermajority link 가 존재할 때 c가 justified (검증)되었다고 합니다.

— 체크포인트 c 에서 c`의 관계가 i) c는 검증된 체크포인트이고, ii) c`는 c의 직계 자손이며 (h(c`) = h(c) + 1), iii) c에서 c` 사이의 supermajority link 가 존재하는 i), ii), iii)이 동시에 성립할 때 c가 finalized (확정)되었다고 합니다.

다시 1)의 규칙을 보겠습니다. 같은 높이의 서로 다른 2 개의 타겟에 투표하면 안된다는 규칙만으로 단일한 합의에 이를 수 있는 이유는 체크포인트가 확정되기 위해서는 타겟이 직계 자손이어야 하기 때문입니다. 합의에 이르기 위해 필요한 것은 검증된 체크포인트에서 supermajority link 로 이어진 직계 자손입니다. 따라서 하나의 검증된 체크포인트에서 여러 포크에 다수의 supermajority link 가 생기는 것 자체를 금지하고 있지 않으며 그런 일이 생기는 것은 합의 알고리즘에 영향을 미치지 못합니다.

2) h(s1) < h(s2) < h(t2) < h(t1)

하나의 투표가 다른 투표의 높이 범위 내에 있을 때는 투표가 불가능합니다. 이는 어떤 경우에서도 투표가 합의에 이루면 확정된 체크포인트가 생기며 블록체인은 전체적으로 확장한다는 것을 보장합니다.

출처: Casper the Friendly Finality Gadget (https://arxiv.org/pdf/1710.09437.pdf)

위 그래프를 기반으로 이 규칙을 말씀드리면, 이 규칙은 (a2, a3) 와 (b2, b3) 쌍에 동시에 투표하면 안 되는 걸 의미합니다. 그래프 상으로는 다른 브랜치에 있는 쌍을 예로 들었지만, 실제로는 같은 브랜치에 있는 소스, 타겟 쌍이라도 투표의 범위가 다른 투표를 포함한다면 투표해서 안됩니다. (즉, 검증인이 (b1, b4) 와 (b2, b3) 에 동시에 투표하면 안된다는 의미입니다) 브랜치를 막론하고 이런 규칙이 있는 것은, 한 명의 검증인이 이미 자신이 행사한 투표권의 범위 안에 중복해서 투표한다면 현재 체크포인트보다 높이가 높은 새로운 체크포인트가 확정되고 계속해서 체인이 확장하는 것을 보장할 수 없기 때문입니다.

1), 2) 규칙을 어겨서 투표하면 페널티를 받아 검증인으로 등록할 때 걸어놓은 이더가 몰수됩니다. 두가지 규칙과 이를 어겼을 때 이더를 몰수하여 투표권을 발탁하는 방법을 통해 PoS 는 단일한 체크포인트가 확정되는 것과 계속하여 새로운 체크포인트가 확정되고 블록체인이 확장하는 것을 보장합니다.

- 검증인 집단의 변동성

지금까지는 검증인 집단이 변하지 않는다고 가정하고 이야기하였지만 실제로는 어떤 지점에서든지 새로운 검증인이 추가될 수 있고 또 기존의 검증인이 빠져나갈 수도 있습니다. 그런 상황에서도 합의 알고리즘의 안정성을 보장하기 위해 Casper 는 start dynasty 와 end dynasty 라는 개념을 추가하였습니다. 검증인이 되고자 할 때는 현재 이더를 입금하는 블록의 부모까지 생성된 확정된 체크포인트로부터 2번 더 확정된 체크포인트가 생성되고 난 이후에 투표에 참여할 수 있는데 이를 DS(v), 검증인 v 의 start dynasty 라고 합니다. 마찬가지로 검증인에서 물러나고자 할 때에도 현재 이더를 출금하겠다고 메세지를 보낸 블록의 부모까지 생성된 확정된 체크포인트로부터 2번 더 확정된 체크포인트가 생성되고 난 이후에 이더를 돌려받을 수 있는데 이를 DE(v), 검증인 v 의 end dynasty 라고 합니다. 검증에 참여하고 빠져나가는 사람들을 구분하기 위해 한 블록에 2부류의 검증인 집단을 각각 forward validator set, rear validator set 이라고 아래와 같이 정의합니다.

Vf(d) ≡ {ν : DS(ν) ≤ d < DE(ν)}

Vr(d) ≡ {ν : DS(ν) < d ≤ DE(ν)}

위에서 기술한 supermajority link 의 규칙은 검증인의 변동성 때문에 Vf(d) 와 Vr(d) 에서 모두 2/3 이상의 투표를 받아야 supermajority link 가 성립하도록 규칙이 변합니다. 또한 dynasty 를 구분하기 위해 체크포인트가 확정되는 규칙도 변합니다. 이전에는 검증된 체크포인트 c의 직계 자손 c`으로 이어지는 supermajority link 가 존재할 때 c가 확정되었다고 했습니다. 하지만 이제는 c 에서 c` 로 이어지는 supermajority link 와 더불어 c 를 확정하는 supermajority link 의 투표가 c` 와 c` 보다 작은 모든 블록 (즉, h(c`) * 100 보다 작은 블록 넘버를 가지는 모든 블록) 체인에 포함되어 있을 때 체크포인트가 확정되었다고 합니다. 이 규칙을 추가함으로서 체크포인트가 확정되는 순간의 dynasty 를 구분할 수 있습니다. Vf(d) 와 Vr(d) 라는 개념 추가와 더불어 새롭게 바뀐 체크포인트의 확정 규칙은 급격한 검증인의 추가나 탈퇴에도 PoS 합의 알고리즘이 안전하게 동작하는 것을 보장합니다.

- 예상되는 공격들

이 외에 먼 과거의 블록 source 와 target 에 투표하여 이미 확정된 블록 체인을 부정하는 공격이나 등록된 검증인 집단의 1/3 이상이 투표에 참여하지 하지 않아 필요한 투표수 2/3 를 채우지 못해 체크포인트가 더 이상 확정되지 못하는 공격 등을 예상할 수 있습니다. 먼저 먼 과거의 블록에 투표하는 경우 이미 확정된 블록은 절대 되돌릴 수 없다는 규칙으로 방어할 수 있습니다. 매번 바뀔 수 있는 검증인 집단, 그들이 이미 확정된 블록 이전의 시점에 투표하는 상황, 그리고 이를 막는 매커니즘은 이보다 더 복잡하지만, 이미 확정된 블록을 되돌리지 않는 규칙으로 공격을 방어한다는 것이 기본 기조입니다. 그리고 휴면 계정의 등장으로 인해 필요한 투표수 2/3 를 채우지 못하는 경우, 활동하는 계정의 투표수가 2/3 이상이 될 때까지 투표에 참여하지 않는 검증인이 걸어놓은 이더리움을 삭감하여 문제를 해결합니다. 하지만 검증인이 악의적으로 투표에 참여하지 않았다는 사실을 판별하기 위한 기준을 어떻게 세울 것이며, 이런 기준이 사용자들의 투표 참여 의지를 저해하지는 않을지, 어느 정도의 이더를 삭감할지, 삭감한 이더는 어떻게 해결할지 (태우거나 일정한 시간이 지난 시점에 원 소유주에게 돌려주거나) 등의 사안은 아직 명확한 방안이 세워지지 않은 상황입니다.

- PoS 에 거는 기대감

현재 이더리움에서 개발중인 PoS 는 Casper the Friendly Finality Gadget 이라는 이름의 PoW 와 PoS 의 절충안입니다. 블록 생성은 PoW 로 하되 높이가 50의 배수가 되는 블록 생성시 PoS 알고리즘을 적용하여 블록을 검증하고 확정하는 구조입니다. 완전한 PoS 로 이전하는 것은 개발 기간이 조금 더 필요한 것으로 알려져 있습니다. 그리고 앞서 설명한 사안들의 완전한 기술적인 구현과 이론적으로 제안한 방안들이 블록 체인 상에서 무리 없이 돌아가는지를 확인하고 예상하지 못한 문제점은 없는지 등을 점검하기 위해서 아직 풀어야 할 숙제들이 다소 남아 있다고 생각합니다.

아직 미완성으로 남아 있는 부분들이 있음에도 불구하고 PoW 에서 PoS 로 넘어가는 것을 기대하는 이유는 그것이 곧 이더리움 생태계의 발전을 의미하기 때문이 아닐까 생각합니다. PoS 가 모두를 만족하는 절대적인 정답은 아닐테지만 새로운 시각에서 블록체인을 바라보고 새로운 매커니즘을 시도해보고 그렇게 계속 발전하고 나아가는 것을 모두가 기대하고 있다고 생각합니다. 그리고 저 역시 하루 빨리 PoS 가 완성되어 새로운 환경에서 많은 다양한 시도들이 이루어지길 기대해봅니다.

--

--