지분 증명(POS)기반 코인 중에 작업 증명(POW) 코인들처럼 해시 문제를 푸는 것들이 있다는 사실을 알고 계신가요? 그것이 작업 증명 코인이지 어떻게 지분 증명 코인이라고 부를 수 있냐구요? 공식적으로는 POS 코인이라고 불리지만, 사실 제 생각에도 POW와 POS 사이에 있지 않나 생각이 듭니다. 진정한 POW/POS 하이브리드 채굴 방식이 아닌가하네요.
안녕하세요 에스리입니다. 다들 즐거운 설 연휴 보내고 계신가요? 설 연휴에 맛있는 떡국과 함께 가벼운 블록체인 상식도 한그릇 하시라고 재밌는 주제로 찾아뵈었습니다. 배 불리셔서 나이 한살! 드시고, 블록체인 내공도 레벨업! 하시는 알찬 설 연휴 되시길 바랍니다. 새해 복 많이 받으시라는 말씀 전하면서 시작해보겠습니다 :)
[나만 몰랐던 블록체인 상식 #4] 해시 문제를 푸는 지분 증명(POS) 코인이 있다?
(정말) 나만 몰랐던 (것은 아니기를 바라는) 이야기 시작하겠습니다!
피어코인(Peercoin)과 레드코인(Reddcoin)
제가 지분 증명임에도 불구하고 해시문제를 푸는 이상한(?) 코인의 존재를 알게된 것은 최근입니다. 사실 그 코인 시리즈의 2번째 주인공이 되실 레드코인 백서를 읽다가 알게 되었는데요. 레드코인이 바로 그런 류의 코인이더라구요. 아무래도 처음 접하는 방식의 프로토콜이다보니, 백서를 읽는데 잘 이해가 안되더랍니다.
읽다가 아니 도대체 이게 무슨소리야!! 하고 레드코인 백서에서 "우린 피어코인 프로토콜을 이렇게 수정했어, 그러면 이런저런 점이 좋아져." 라고 말하기에 피어코인을 찾으러 떠나보았습니다. 피어코인 백서는 설명이 더 자세하게 되어 있었습니다. 혹시 관련 프로토콜 내용을 스스로 공부해보고 싶으신 분들은 피어코인 백서를 읽어보세요 :)
등장 배경
이런 생소한 프로토콜을 더 쉽게 이해하시려면, 그 등장의 배경을 이해하시는 것이 아주 중요하다고 볼 수 있겠습니다. 어떤 문제점을 해결하고자 했는지 먼저 아시고 들어가시면 제가 미처 설명드리지 못했던 부분도 똑똑한 여러분들이 유추해낼 수 있기 때문이지요.
POW 에너지 소모는 줄이고 싶은데.. 순수 POS는 못 믿겠고...
Peercoin의 백서는 무려 2012년산입니다. 와우, 벌써 6년이나 된 케케묵은 녀석이었네요. 이모, 어디서 먼지 냄새 안나? (...) 여하튼 그 때 당시의 분위기를 이해할 필요가 있겠습니다. 작업 증명(POW) 방식의 에너지 소모 문제는 이미 그 때부터 이슈가 됐었습니다. 지분 증명(POS)을 사용해보자는 것도 진작 논의가 되고 있었죠.
그러나 문제가 있었습니다. 순수 POS는 못미더웠던 것입니다. 순수 POS를 사용하려면 완전무결한 랜덤변수를 만들어내야 하는데요. 그런 방법이 마땅히 떠오르지 않았던 것 같습니다. 이 이야기는 최근 제가 포스팅한 카르다노 우로보로스편을 읽어보시면 도움이 될 것 같습니다. 다 읽기는 좀 많고 어려우실 것이고, 초반 도입부 부분만 읽으셔도 충분합니다!
읽기 힘드신 분들을 위해 요약 해드리겠습니다! 중요한 포인트는 하나입니다. 당시 합의 프로토콜은 아무리 POS라도 "최대한" 비트코인의 POW와 비슷하게 만들고자 했을 것입니다. POS는 고사하고, POW도 아직 검증이 덜 되었다고 생각했을 때였을 테니까요. 2012년이면 비트코인이 20만원이나 했으려나요? 아는 사람만 아는, 이제 막 새싹이 트는 황무지였던 것입니다.
너로 정했다! Coin Age!
최대한 POW와 비슷하면서도, POS랑 흡사한 기능을 부여해 어떻게든 전력소모를 줄여보자는 것이 당시 이슈였던 것으로 비추어집니다. 뭔가 지금보다도 그 때 더 에너지에 민감했던 것만 같은 기분이 드는데, 기분 탓이려나요. 여하튼 Peercoin은 이 가운데서 묘수를 찾아냅니다. 바로 코인 나이(Coin Age)입니다.
코인 나이(Coin Age)는 이름에서도 느껴지듯이, 코인을 얼마나 긴 시간동안 소유했는지 나타내는 지표입니다. 비트코인 블록에도 저장하는 것이라고 하는데요. 최초에 설계된 이유는 블록체인 기록이 더 용이하게 하고, 시간 차 공격을 최소화 하기 위해서였다고 하네요. 개인의 코인이 몇살인지 알면, 더 방어하기 쉽다나 뭐라나..
여하튼 이 코인 나이라는 것은 개인이 보유한 시간에 따라 늘어납니다. 지갑에 넣게 된 코인 나이는 무조건 0살부터 시작하는데요. 그 때부터 서서히 늘어나다가, 다시 지갑에서 인출하면 그 코인 나이는 초기화 됩니다. 그 코인은 타인의 지갑에서 새로운 삶을 시작합니다. 0살로 다시 태어나는거죠!
내 나이는 언제나 0살이라구! 인출만 해다오! 부럽다 짜식... 우린 오늘 1살 먹는데...
지분 증명의 시작
이 코인 나이라는 것을 이용해서 지분 증명 비스무리한 것을 만들어보자는 것이 Peercoin의 합의 프로토콜입니다. 어떻게 이 코인 나이를 이용하는지는 간단합니다. 해시 문제의 난이도가 내가 보유한 코인들의 나이에 따라 감소하게 됩니다. 내 코인들의 나이를 팔아서(?) 난이도를 내릴 수가 있다는 것입니다.
또 재미있는 점은 블록 보상이 내가 판 코인 나이의 합으로 결정됩니다. 블록 1개마다 정해진 보상을 받는 것이 아니라, 내가 더 많은 코인 나이를 팔아서 캤으면 그만큼 더 많이 받는다는 것이죠. 따라서 장비가 좋지 않아 계속 못캐더라도, 삽질(?)하는 동안 코인 나이는 꾸준히 쌓이니 결국 블록 보상도 계속 늘어납니다.
정리하면, 보상의 양은 채굴 장비의 수준이나 채굴한 블록의 수가 아니라 내가 보유한 코인 수에 의해 결정됩니다. 즉, 겉으로는 작업 증명과 별 차이가 없어보이지만 속으로는 지분 증명과 같아 장기적인 관점에서 해시 경쟁 과열을 막을 수 있게 됩니다.
- 제가 비스무리한 것이라고 비하 발언(?)을 했지만, 엄연히 위키피디아에 POS를 검색하면 그 중 하나로 나옵니다.
- 주의하실 점은 peercoin은 현재 POW 채굴이 가능합니다. IPO(initial public offer)라고 해서 자본을 고르게 분포시키게 하기 위해서라고 합니다. (요즘은 그냥 ICO를 해버려서 그런 절차가 없죠)
더 깊게 알아보기
더 자세한 내용이 궁금하실까봐, 더 디테일한 내용으로 모십니다. 이미 많은 내용은 전달 드린 것 같기는 한데요. 더 깊게 들어가서 정확히 어떻게 운영되고, 어떤 문제를 가지고 있을 수 있는지 한번 다루어보겠습니다.
합의 프로토콜 규칙
Peercoin의 더 디테일한 합의 프로토콜은 다음과 같습니다. 기본적인 규칙을 알아보며 아웃라인을 잡아보겠습니다.
- 채굴 방식은 일반 POW와 비슷하다. 채굴자는 블록을 이어붙이기 위해 해시문제를 풀어야한다.
- 해시문제의 난이도는 적절한 주기로 블록이 생성되도록, 블록 생성속도에 맞추어 자동으로 조절된다.
- 해시문제 난이도는 설계상 무한정 늘어나지 않는다. 이론적으로 특정 범위 내에서 움직이게 된다. (채굴자가 해시파워를 키울 경제적 유인이 없음)
- 채굴자는 본인 지갑에 코인을 넣어 스테이킹(staking)할 수 있다. 스테이킹은 입금 시기부터 자동으로 시작된다.
- 스테이킹 양은 코인 나이(Coin age)로 환산된다. 코인 나이 30일 이후부터, 블록 생성을 위해 사용될 수 있다.
- 코인 나이가 높을 수록, 해시문제 난이도는 줄어든다.
- 블록 생성을 위해 스테이킹 코인을 셀프 송금(본인 지갑으로 송금)을하는 내역을 포함시킨다.
- 블록 생성시, 채굴자가 셀프 송금을 한 스테이킹 코인의 나이는 초기화 된다.
- 블록 보상은 소모한 코인 나이의 양으로 계산된다. 이는 연 인플레이션 1%에 맞춰진다.
이게 무슨말이야! 조금 더 쉽게 번역해줘!
채굴 과정
규칙이 너무 복잡해서 보기 싫으시죠. 간단하게 우리말(?)로 바꿔볼게요. 채굴자가 POS 채굴로 보상을 얻는 과정은 다음과 같습니다!
- 본인 지갑에 1 Coin을 넣고 30일을 기다린다. 30일이 지나면 블록 문제를 푸는 경쟁에 참여할 수 있다.
- 내 컴퓨터는 똥컴이라 경쟁에서 계속 진다. 90일이 지났다. 내 문제의 난이도는 3배 줄었다.
- 120일째 되는 날 드디어! 내가 블록을 생성하게 되었다. 난이도가 4배 줄어드니 할만했나 보다.
- 해시문제를 가장 먼저 풀게 되면, 내 지갑에 1 Coin(120일산!)을 보내는 송금내역을 담아 블록을 생성한다.
- 내 코인은 120일동안 숙성됐으므로, 30일 숙성 코인보다 보상이 4배다!
- 슈퍼 컴으로 30일 숙성 1 코인을 4번 연속으로 캔 것과 거의 동일한 보상이다.
- 120일산 코인은 채굴 보상 지급 후 다시 0일 코인이 된다 (...)
내 똥컴으로도 해시문제를 푸는 채굴이 가능하다고? 내가 갈게~!
의의와 한계
어떤 느낌인지 대충 감을 잡으셨나요? 감을 잡으셨다면 꽤 재밌는 방식이라고 생각하셨을 것 같습니다. 카르다노의 우로보로스가 열심히 만든 완전 무결한 랜덤변수 없이도, 합리적으로 POS를 구현했거든요. 그러나 이런 방식이라고 해서 장밋빛 미래를 보장해주지는 않습니다. 더 자세히 이를 풀어써보겠습니다.
Grinding Attack 걱정은 없는 POS
코인 나이를 이용하는 방식의 경우, POW와 흡사하게 해시문제를 풉니다. 결국 해시파워로 공정한 경쟁을 통해 쟁취하는 것인데요. 지분을 가지고 있으면 해시 경쟁에서 더 유리하도록 만들고, 또 해시파워를 키워야할 경제적 유인을 없앴습니다. 결국 에너지 소모 문제는 최소화할 수 있을 것으로 보입니다.
보통의 POS는 랜덤 변수를 만들어냅니다. 랜덤 변수를 이용해 다음 블록 생성자를 선출하는데요. 이런 방식은 랜덤 변수를 누가 만들 것이냐는 문제가 있습니다. 생성자가 공정성을 해칠 수 있기 때문에 신중하게 다가가야 할 문제입니다. Peercoin은 이 문제를 꽤 합리적으로 풀어나간 것으로 해석할 수 있습니다.
- Grinding Attack은 카르다노 우로보로스편을 보시면 이해에 도움이 됩니다.
계속 컴퓨터를 켜놔야돼?
당연히 단점도 있습니다. Peercoin은 POS 채굴자가 계속 컴퓨터를 켜놓고, 네트워크에 연결할 경제적 유인을 제공하지 못합니다. 코인 나이는 네트워크에 연결하지 않아도 쌓이기 때문이죠. 그냥 90일쯤 숙성시켜놓고 느지막히 일어나 잠깐 채굴하면 됩니다. 특히 첫 30일동안은 채굴에 사용될 수 없으니, 이때는 연결할 유인이 더더욱 없네요.
이 문제가 어디로 이어지냐면, 풀 노드 감소로 이어집니다. 풀 노드는 전체 블록체인 내역을 저장한 컴퓨터를 말하는데요. 전체적인 네트워크의 참여자는 클 수 있어도, 정작 매 순간 풀 노드의 숫자는 부족하다는 것입니다. 이른 바 잠수 유저가 많은 거죠. 잠수 유저는 잠깐 채굴을 위해서 깨어났다가 다시 잠에 듭니다. 이는 보안 문제로 이어질 수 있습니다.
마치며
재밌으셨나요? 이 편은 사실 그 코인 시리즈 Reddcoin편의 이해를 돕기 위해 제작되었습니다. Reddcoin은 "풀 노드 숫자"와, POS 방식의 고질적 문제인 "유동성"을 해결하기 위한 몇가지 장치를 더했는데요. 스터디 해보니 몇가지 리스크는 동반될 것이라는 생각이 드네요. 그 점에 대해서는 Reddcoin 편에서 더 자세히 다루어보기로 하고, 이번 블록체인 상식 편은 이것으로 마무리짓도록 하겠습니다.
감사합니다~ 새해 복 많이 받으세요 :)
Awesome post
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
좋은 글 감사합니다 ㅎ pos 관련 글 읽으면 모든글에 피어코인에관한 얘기가있어서 공부해보려고했는데 ㅎㅎ 대신 알려주셔서 감사합니다 👍
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
저도 공부하다가 아 이런게 있었구나하면서 뭔가 퍼즐이 맞춰지는 느낌이였어요.
POS 공부하면서 느끼는 것인데, DPOS는 pos가 아닌 것 같다는 생각이 들어요. 뭐랄까, 공통된 이슈들이 공유가 안된다고 해야하나요.
증인들만 정직하면 사기 그 자체...^^
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
맞아요.. 사실 저는 약간 이더교여서 dpos는 읍읍..ㅎㅎ 나중에 캐스퍼도 공부해보시면 재밌을거에요! 지금 공부하고있는데 비탈릭과 저와의 거리가 너무 멀게
느껴지네요 ㅎㅎ가까워지고싶은데ㅜㅜ
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
흥미로운 방식이네요. 블록체인 기술세계는 알면 알수록 흥미진진해지는것 같아요.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
맞습니다. 그들이 걸어온 길을 보면 얼마나 다양한 시도들이 있었는지 알 수 있어요!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
에스리님의 글은 일단 풀 보팅하고 읽어야죠 ! 매번 글 열심히 읽고 있습니다 ㅎㅎ
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
아이고 감사합니다. 맹목적인 팬은 언제나 환영입니다. (...) 가끔 채찍질도 해주세요 :)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
http://news.joins.com/article/13342650
글 잘봤습니다. 피어코인이 이 시절엔 상당히 유망주였나보네요 ㅎㅎㅎ
어떤 코인인지 하나 더 알게 해주셔서 감사합니다.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
오 그러네요~ 그 와중에 10배나 올랐지만 누구인지 모를 maidsafe가 눈에 띄네요
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
maidsafe는 storj코인과 비슷한 컨셉이더라구요. 하드디스크 저장공간 남는 용량 빌려주고 수익내는. ㅎㅎ
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
제가 공부 하고 싶었던 내용들을 쉽게 짚어주시네요.
감사합니다. 리팔보댓 합니다.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
읽다가 어.. 되게 괜찮은 방식이네 하면서 내려왔는데 역시 노드감소라는 문제점이 있네요... 역시 완벽한걸 만들기란.. 잘 읽었습니다!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
그러게요. 역시 인생사 모든 것은 다 트레이드인가봅니다. 물 새는 곳에 꽃밭이 있는 시스템을 만들어야..^^
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
좋은정보 감사합니다
잘보고 갑니다
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
이런 방식의 블록체인이라니!!
정말 코인들이 다채로워서 너무 재밌는것 같아요!!!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
작성하시는 분의 내공이...!!
대단하십니다 ㅅㅅ
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
우로보로스 편에 이서 이번 포스팅도 상당히 흥미롭네요. 백서를 봐도 도통 무슨소린지 이해가 안가는 제게 승재님의 글은 가뭄에 단비같네요. 항상 감사합니다!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
열심히 공부중이라 두번 읽었습니다^^
12년도에 쓰여진 백서에서 저런발상이
있었다는 사실에 먼저 한번 놀라고,
잠수유저로 인한 풀노드 감소에 또 한번
놀랬습니다. 읽는 동안 오오~ 하다가
마지막엔 아아~~ 하게 되었네요.
엄지척입니다!!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
어려운 주제 쉽게 풀어 주셔서 감사합니다
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit