PoW와 PoS의 문제점

S SEONMI
B!ock.Chain
Published in
11 min readApr 16, 2019

안녕하세요 seonmi입니다.

잘 지내고 계셨나요 여러분?

첫 포스팅 때만 해도 날씨가 엄청 추웠는데.. 벌써 벚꽃이 피는 계절 “봄”이 왔어요!

다들 석촌호수나 여의도 다녀오셨나요~? 저는 석촌호수에 처음 갔다 왔는데요, 정말 너무 예쁘더라구요..

(저는 남자친구가 없어서 정말 친한 오빠와 다녀왔는데 하나도 슬프지 않았어요.. 세상 모든 커플들 지금처럼 행복하세요..)

사진 한 장 투척하고 추억 되돌아보기는 여기까지 하도록 할게요 ㅎㅎ

석촌호수에요 진짜 예쁘져!! 근데 저는 가운데 커플이 유독 눈에 띄네요..ㅎㅎ 잠시 눈물좀..

그리고 본론에 들어가기에 앞서 우선 중요한 홍보를 한번 하고 시작하려고 하는데요, 저희 DR 팀이 운영하는 유튜브 채널 중에 Devtube를 시작하게 되었어요오오오오^__^

개발자 센터에 있는 개발 가이드 문서 튜토리얼 영상인데요, 문서를 보시고 따라 하시다가 어려움이 생기시면 이 영상을 참고해주시면 됩니다!!

분명 도움이 되실 거에요.

누구든 쉽게 따라 하실 수 있으니까 많은 관심과 사랑 부탁드릴게요 :)

자 이제 본론으로 돌아와서 오늘은 PoW와 PoS의 문제점이 무엇인지에 대해 알아보도록 하겠습니다.

저번 포스팅에서 자신의 컴퓨팅 파워가 높을수록 채굴에 유리하지만 그러려면 엄청난 금액의 채굴기와 전기료를 감당해야 한다고 했었는데요, 기억하시나요??

못 보신 분이 계신다면 먼저 1편을 보고 오시는걸 추천해 드려요!

실제로 비트코인 채굴에 드는 에너지가 한 국가에서 쓰이는 양과 맞먹는다고 하는데요, 너무 많은 전기를 소비하는 탓에 베네수엘라에서는 채굴 작업을 단속하기도 했다고 합니다.

결국 PoW를 쓰는 암호화폐들이 많아질수록 에너지 소비량은 점점 더 많아질 것이고, 개인적으로 채굴을 하는 사람들은 비싼 채굴기를 구매하기가 힘들어 더는 채굴을 할 수 없게 됩니다…

그리고 비트코인에서 작업증명을 할 때 논스값(nonce)을 찾기 위해서는 여러 번의 시도가 필요했어요, 이때 컴퓨팅 파워를 많이 가진 사람일수록 논스값을 빨리 찾게 되어 채굴에 유리해지게 됩니다.

이때 채굴하는 사람들끼리 똘똘 뭉쳐서 특정 채굴 집단을 만들 수 있는데요, 그렇게 되면 사람들은 자신의 컴퓨팅 파워를 그 집단에 맡기고, 해당 집단이 채굴에 성공하면 맡겨 놓은 컴퓨팅 파워만큼 사람들은 비트코인을 나눠 받게 돼요. 이런 집단을 바로 “마이닝 풀”이라고 부릅니다.

“이 아저씨 처럼 무서운 사람들이 채굴 집단 두목이면 … 망해쓰”

근데 여기서 문제가 발생할 수 있는데, 만약 세계에서 가장 쎈 채굴 집단들이 으쌰으쌰 연합해서 악의적으로 블록체인에 올라가 있는 거래내역들을 조작하려고 한다면 어떻게 될까요?

어떤 식으로 조작을 하게 되는 것인지, 쉽게 설명을 해보도록 하겠습니다.

다시 송중기를 소환할게요..송중기의 왕팬이기때문에..

우선 송중기를 양심이라고는 눈곱만큼도 찾아볼 수 없는, 51% 이상의 해쉬 파워를 보유한 나쁜 사람이라고 가정을 해볼게요! (죄송해요 중기오빠..ㅎ)

송중기가 자신의 지인인 박보검에게 악의적인 마음으로 BTC를 팔려고 한다고 할게요. 송중기는 박보검에게 BTC를 송금하고, 송금한 내역은 블록에 담기게 되겠죠?

그다음 위의 그림처럼 거래가 담긴 블록은 블록체인에 연결이 되고,박보검은 자신의 거래 내역이 블록에 담긴것을 확인한 후에 송중기에게 KRW를 송금할 것입니다.

그런데 문제는 이제 시작입니다. 평소에 호형호제하는 동생의 돈을 날로 먹기위해 자신의 해쉬파워를 이용해서 박보검에게 송금한 거래내역을 없었던 일처럼 장부에서 싹 지워버립니다.

그런 다음 막강한 해쉬 파워로 발 빠르게 계속해서 새로운 아래의 그림처럼 블록들을 생성해서 연결해 나갑니다.

이때 송중기의 연산력은 누구보다 뛰어나기 때문에 만들어진 블록은 빨리 인정을 받고 블록체인에 연결이 돼요, 그렇게 되면 기존의 거래가 담긴 블록은 고아 블록이 되어 송중기가 송금한 내역은 사라지게 됩니다.

즉, 박보검에게 BTC를 주지않고 KRW만 받게 되는 셈인것이죠.. 이런 날강도 같은..!

그런데 이 문제가 이론상으론 가능하지만 경제적으로는 불가능하다고 해요.거래를 조작하더라도 고아블록(송중기가 박보검에게 BTC를 송금한 내역이 담긴 블록)이 발생되는 과정을 통해 거래가 조작되는 것을 다른 사람들도 알 수가 있거든요.

이런 과정을 지켜보던 사람들은 더이상 비트코인을 믿지 못하고 팔아버리게 되는데요, 이런 현상을 “패닉셀” 이라고 합니다.

패닉셀 현상으로 인해 비트코인이 똥값이 된다면, 높은 해쉬파워를 갖고 있는 사람들은 그 파워를 유지하기 위해 드는 비용을 더이상 감당 하기는 힘들어 지겠죠? 결국 꾀를 부려 이익을 챙기려다가 자신이 더 큰 손해를 보게 되는 것입니다. 그렇기 때문에 51% 공격은 실제로 일어날 수 가 없다고 보시면 될 것 같아요.

자신이 손해보는 일을 굳이 할 필요는 없을테니까요.

이렇게 PoW에는 막대한 에너지 낭비의 문제점과, 51%의 공격 가능성, 채굴집단이 등장하면서 특정 소수에게 채굴권이 집중되어, 비트코인을 비롯한 블록체인 기술의 핵심인 ‘탈중앙화’ 에 반대되는 현상이 나타나는 문제점이 있다고 보면 될 것 같습니다.

이번에는 PoS의 문제점에 대해 알아보도록 할까요?

PoW의 단점을 보완하고자 나온 합의 알고리즘이 바로 PoS였는데요, 해쉬 파워를 얼마나 가졌는지가 아니라 사람들이 지분을 얼마큼 가졌는지에 따라 블록을 생성할 수 있었습니다.

제가 그린 그림 이라서 이상해도 이해해 주세요

그리고 PoS의 지분 증명에는 여러 가지 합의 방법이 있는데요,

  1. 일정 주기를 정해 검증할 사람을 뽑는 랜덤 변수를 돌리는 Chain-based Proof-of-stake
  2. 검증자들에게 랜덤하게 새 블록을 제안할 수 있는 권한이 주어지고, 여러 라운드에 걸쳐 투표를 걸친 후에 최종 라운드에서 합의가 이루어지며, 길이와 사이즈에 관계없이 합의를 많이 받은 블록이 살아 남게 되는 BFT-Style Proof-of-stake

이렇게 대표적인 두 가지 방식 외에도 여러 종류의 합의방식이 존재합니다.

  • PoS에서는 채굴자(Miner) 대신 검증자(Validator) 용어를 사용합니다. 검증자는 블록을 생성하기 위해 참가하는 사람을 뜻해요.

훨씬 적은 전기 에너지가 필요하기 때문에 좋은 합의 알고리즘으로 볼 수 있어요. 그러나 PoS도 PoW처럼 문제점이 존재합니다.

바로

“ Nothing at stake ”

“문제가 되지 않는” 또는 “전혀 손해 볼 것이 없는” 이정도로 생각하시면 될 것 같은데요, 지금부터 쉽게 알려드릴게요.

우선 A와 B라고 적힌 두 개의 상자가 있는데 둘 중 하나의 상자에는 현금 “천만원”이 들어있다고 가정해 볼게요.

그런데 다른 상자에는 아무것도 들지 않았으며 이 상자에 베팅해서 질 경우에도 돈을 다시 돌려준다고 한다면, 여러분은 어느 쪽에 베팅을 거실 건가요???

저 같으면 둘다 걸어볼거에요! 왜냐하면 둘 다 배팅을 걸게되면 적어도 손해보는 일은 생기지 않잖아요? 현금이 들어있으면 “앗싸 내 돈!!!” 이러면서 가지면 되고, 꽝이더라도 돈을 돌려주니까요..

제가 너무 당연한 소리를 했죠?

즉 “Nothing at stake”어느쪽이든 잃을 것이 없다 라는 뜻을 말합니다.

예를 들어 PoS 합의 알고리즘에서 유효한 블록체인이 두 개 이상 존재하는 포크(fork) 상황이 발생했다고 가정해 볼게요.

PoS같은 경우는 합의 하는 방식에 별다른 제한이 없다고해요, 그래서 포크가 발생한 모든 블록에 지분을 증명할 수가 있어요.

  • 여기서 지분을 증명한다는 것은 두 개의 체인중에서 맞는 거래에 검증을 하는것을 말합니다.

그리고 위에서 말씀드린 것처럼 두개의 선물 상자에 모두 베팅을 해놔야 상금 천만원을 얻을 확률이 높아지잖아요?

PoS도 마찬가지로 두개의 블록에 지분을 증명해야만 보상 받을 가능성이 높아지게 됩니다.

그런데 여기서 문제가 모든 노드는 여러 블록에 자신의 지분을 이용해 두 가지의 거래 모두 맞다고 검증을 할 수가 있다는 거에요.

지분을 증명한다는 것은 두 개의 체인 중에서 맞는 거래에 검증을 하는 것인데, 두 개의 체인에 모두 투표를 하게 되는 경우에도 아무런 문제가 발생하지 않기 때문에 그것이 문제가 되는 것이죠..

이렇게 되면 어떠한 공격이 발생하느냐..

악의적인 마음을 품은 노드가 자신의 막대한 지분을 이용해서 진짜 블록 말고도 가짜 블록까지 검증해서 체인으로 연결할 수 있습니다. 그렇게 되면 이제 막 들어온 검증자들은 “대체 둘 중 어떤 게 진짜 블록이지..?” 하며 난처해지겠죠.. 결국 가짜 블록에 합의하게 되면 제대로 거래를 한 사람들은 공격을 당하는 일이 발생하게 되는 거예요.

사람들이 보상받을 확률을 높이려고 두 개 이상의 블록체인에 블록을 생성하게 되면 블록체인이 하나로 수렴되는 것을 당연히 어렵게 하겠죠? 그렇게 되면 유효한 체인에 대한 합의를 빨리 이루지 못한다는 문제가 발생하게 되는 것입니다..

이렇게 PoS같은 경우 PoW와는 달리

블록생성을 할 때 전기를 소비하지 않는다.

Nothing at stake 라는 문제가 발생한다.

유효한 체인에 대한 합의가 늦어지는 문제가 발생한다.

라고 보시면 될 것 같아요.

그렇지만 이러한 문제를 막기 위해 해결방안을 찾고 있다고 하는데요, 블록을 증명할 때 보증금을 얼마 정도 걸어놓고 만약 그 블록이 가짜라면 보증금에서 벌금을 차감하도록 하는 등 해결방안을 계속해서 찾고 있다고 합니다.

오늘도 긴 글 읽어주셔서 너무 감사드리구요

모두 화이팅 하세요!!

아래의 링크들은 DR 팀에서 운영하는 채널이에요! 궁금한게 있으시다면 참고 부탁드릴게요 :)

  • 아이콘 개발자 센터
  • 페이스북
  • 유튜브

Reference

<PoW와 PoS 관련 자료>

<베네수엘라 채굴 단속 관련 뉴스>

--

--