EOS(2): 채굴자원 확장문제
이제 EOS에 대해서 알아보겠습니다.
먼저, EOS 개발을 주도하는 댄(Daniel Larimer)에 대해서 간단히 알아보고, 그가 이전에 만든 빗쉐어와 스팀잇에 대해서 먼저 알아보겠습니다.
댄의 블로그를 보면 그의 인생 목표가 나오는데요.. 자유시장을 만들겠다는 것입니다.
그가 처음 비트코인을 접하면서 분산 거래소의 필요성을 느꼈다고 하고, 이때문에 빗쉐어, 스팀잇 그리고 현재 EOS를 개발하고 있습니다.
아래는 댄이 처음 만든 빗쉐어의 지갑을 보여주고 있습니다.
가장 큰 특징은 지갑 안에 분산형 거래소가 포함되었다는 것입니다.
지갑의 오른 쪽에 코인 목록이 나오고, 여기서 BTS코인을 선택하면 왼쪽에 가격 그래프와 매수/매도 창이 나오고, 그 밑에 order북이 있습니다.
지갑이 거래소로 사용된 최초의 예입니다.
그리고, 지갑의 맨 위쪽을 보면, 계정, 전송, 거래소, 입출금 탭이 있고요,, 아래그림은 이중에서 거래소를 선택한 것입니다.
두번째로 페깅 코인, 즉, 법정(fiat)화폐나 금과 은의 가격에 페깅(고정)되는 코인을 최초로 선보였던 것입니다.
사실, 암호화폐가 가격이 변동성이 심하면, 일상적으로 사용하기가 힘들겠죠..
따라서, 미국 달러에 가격이 연동되는 bitUSD 등을 제공했습니다. 지금은 테더 코인이 이 역할을 하고 있습니다.
또한 공개키 대신에 ID를 사용하는 첫번째 암호화폐이었습니다.
아래 그림은 제 아이디(loum)으로 로그인한 스팀잇 사이트 및 로그인 창(보라색 박스)를 보여줍니다.
먼저, 보라색 박스의 로그인 창은 나중에 설명하고요..
스팀잇의 가장 큰 특징은 블로그 서비스인데.. 투표로 보상을 제공하는 암호화폐입니다.
그래서 사이트 접근을 제 아이디(loum)으로 할 수 있습니다.
두번째로, 지갑을 웹사이트에 비번으로 연결하였습니다. 따라서 비번으로 개인키를 생성하고 있습니다.
즉, 보라색 박스의 로그인 창에 입력하는 비번이 개인키로 사용됩니다.
따라서, 아래 사이트의 오른쪽에 지갑(wallet) 탭이 있으며, 이런 기능은 개인 사용자가 지갑 관리, 즉 개인키를 관리하지 않아도 되는 편리함이 있습니다.
이때 비번은 사이트가 제공하고 이것은 공개키와 같은 길이로 되어 있으므로 사람이 암기할 수 없기 때문에 주로 저장을 해서 사용합니다.
세번째 특징은 거래수수료가 무료이고, 따라서 채굴자에게 보상을 제공하기 위해서 추가 코인을 발행하며 이것을 인플레이션이라고 합니다.
아래 그림은 간단히 EOS를 소개합니다.
목표는 분산앱(DApp)을 위한 플랫폼을 제공하는 것이고요..
대표적인 기능은 아래와 같습니다.
아래 그림은 대표적인 서비스의 초당 거래 처리량을 보여줍니다.
비자 카드가 평균 거래 처래량이 초당 약 2,000개이고요.. 최대 약 54,000개입니다.
하지만, EOS는 100 CPU 코어를 사용하여 초당 약 1 백만 거래를 처리하는 것을 목표로 하고 있습니다.
이 부분은 앞에서 이미 이야기한스팸공격 방지를 위해서 코인 소유량에 따라 채굴자원을 분배하는 것입니다.
즉 원리대로라면, 만일 1%의 코인을 가지고 있다면, 채굴자의 채굴자원 중 1%의 사용권한이 주어지는 것입니다.
아주 중요한 개념이며, 이로서 DApp 에 의한 스팸 공격으로부터 해방이 되었습니다.
아래는 스마트(자율실행) 계약 플랫폼인 이더리움과 EOS의 특징을 간략하게 비교하고 있습니다.
인플레이션에 대해서 설명을 하면 아래와 같습니다.
비트코인은 총 코인 발행량이 2100만개로 고정되어 있고, 약 4년마다 코인 발행량이 줄어들고 있습니다.
따라서 현재 채굴자에게 주어지는 보상은 코인 발행보상(블록당 12.5 BTC) + 거래 수수료로 구성되어 있습니다.
하지만 코인이 모두 발행이 되고 나면, 채굴자에게 주어지는 보상은 거래 수수료만으로 이루어집니다.
이에 반해서 EOS는 초기 발행량이 10억개로 고정되어 있고, 거래 수수료가 없기 때문에 채굴자에 대한 보상을 코인을 추가로 발행하여 주며, 이것을 인플레이션이라고 합니다.
따라서, 초기 10억개에서 총 코인의 개수가 계속 증가하게 됩니다.
그리고, EOS의 블록생성 시간은 메인넷에서 0.5초로 예정되어 있습니다.
지구 반대편에 인터넷으로 전파하는 시간이 약 1~2초 정도라고 합니다.
EOS는 블록 생성 시간을 0.5초로 줄이기 위해서 유럽- 중동-아시아 - 하와이- 미국- 유럽 등의 순으로, 즉 지구를 돌아가면서 블록을 생성하도록 하는 방법을 사용하여 블록 생성 시간을 0.5초로 줄이려고 합니다.
확장성, 즉 초당 거래처리 속도를 증가시키는 방법의 경우, EOS는 아마존 서버에서 100개의 CPU 코어로 병렬 계산을 하고, 나중에는 21의 채굴자들이 클러스터를 구성하여 처리 속도를 높이려고 합니다.
이와 달리 이더리움은 샤딩이라는 일종의 분산 DB와 raiden이라는 오프-체인 거래를 사용하여 초당 거래 처리속도를 높이려고 합니다.
참고로, 샤딩은 계정을 그룹 단위로 나누어서 블록에 자신의 계정이 포함되었다면 이를 이 그룹에서 처리하는 것입니다. 예로 100개 그룹으로 나눈다면, 100 개 그룹이 블록을 병렬적으로 처리하는 것으로 볼 수 있습니다.
raiden은 블록에 거래 조건을 기록하고, 실제 거래는 off-chain에서 이루어지는 것이고, 중간에 노드(피어)들이 이 거래를 릴레이하게 됩니다. 블록에 기록되지 않는 거래가 오프 체인에서 발생하므로, 보안이 다소 약한 측면이 있습니다.
채굴자원이 소규모(이더리움)와 대규모(EOS)로 나뉩니다. 이 부분도 중요하기 때문에 뒤에서 얘기합니다.
채굴자를 보면, 큰 특징이 있습니다. 이것을 이해하는 것이 중요합니다.
즉, 이더리움의 경우, 많은 채굴자가 채굴을 하지만, 채굴자원, 즉 컴퓨팅 능력 및 저장능력은 소규모이고 이들간의 채굴자원도 상대적으로 편차가 매우 큽니다.
이와 달리 EOS는 21명의 채굴자들이 대규모 채굴자원을 이용한다는 차이가 있고, 이부분은 아래에서 설명합니다.
중요한 것은 이와 같은 차이가 있으면, DApp을 운영, 즉 실행시키기 위해서 어떤 것이 유리한지에 대한 문제입니다.
아래와 같이, 이더리움은 다수의 소규모 채굴자원을 이용하는 시스템입니다.
따라서 분산앱(DApp)을 많이 돌리면, 채굴자원을 증가시켜야 합니다.
이것은 채굴자에게 채굴자원을 확장하라는 압력을 가해야 한다는 것을 의미합니다.
현재 이더리움은 이를 샤딩을 통해서 해결하려고 하지만, 이것이 근본적인 해결책으로는 보이지 않습니다.
또한 샤딩의 개념은 다수의 채굴자가 존재하면 더 많은 오버해드가 발생할 수 밖에 없는 구조를 가지기 때문에 효율성도 소수가 대형 채굴자원을 가지고 채굴을 하는 것보다 낮을 수 있습니다.
이와 달리, EOS의 채굴자원은 소수의 대규모 채굴자원을 이용하는 방법을 사용합니다.
즉, 채굴자들이 대형 사업자가 되는 것이고, 이들은 아마존의 클라우드를 이용해서 채굴을 하게 됩니다.
뒷 부분에 나오지만, 이 부분이 채굴자에게 채굴자원을 확장하도록 압력을 가하는 방법에 매우 유리하다는 것을 알게 될 것입니다..
이 부분이 아주 중요하며, 분산앱 때문에 발생한 채굴자원 확장압력을 아는 사람도 거의 없습니다.
EOS는 21의 채굴자가 채굴을 도맡아서 하고, 이와 같이 소수이기 때문에 투표에 의해서 채굴자에게 채굴자원을 확장하도록 압력을 가하기도 편합니다.
21명으로 소수이기 때문에 또한 로드맵에 의한 채굴자들을 클러스터로 만드는 것이 기술적으로 쉽고, 이때 오버헤드도 다수가 있을 때보다 적게 발생할 수 있으므로 더 효율적인 시스템이 될 수 있습니다.
EOS에서 채굴자원은 아래와 같이 3개로 구분합니다.
아래와 같이, (통신) 대역폭과 영구저장장치(disk)와 CPU의 계산능력과 마지막으로 임시저장장치이고 속도가 빠른 RAM으로 구분합니다.
이때 RAM이 가장 늘리기 힘든 채굴자원이기 때문에 이것이 가장 중요하며, 이것은 백서에 의하면, 이것은 코인 소유자만 이용할 수 있고, 나머지 두개는 코인 소유자나 코인을 빌려서 사용할 수 있다고 합니다.
이 부분이 상당히 중요한 부분입니다.
제게는 제일 중요한 부분입니다.
EOS에서 중요한 부분은 크게 두개입니다.
첫번째, 스팸 방어전략인 코인 소유량에 따라 채굴자원을 분배하는 소유권 개념이고요..
두번째, 채굴자에게 채굴자원 확장압력을 가하는 부분입니다.
그리고, 세번째를 든다면, 채굴자원이 다수와 소규모인 것과 소수(21) 대규모인 것의 차이이며, 이것은 두번째 부분과 상관성이 있는 부분이기도 합니다.
채굴자원 확장 압력에 대한 부분은 백서에는 구체적으로 나와 있지 않습니다.
좀 더 구체적으로 설명한 것은 아래의 링크입니다.
https://steemit.com/kr/@loum/storage-costs-on-blockchains-using-eos-io-software
제가 이해하는 한도에서, 이 문제가 가장 중요한데 이것을 백서에 소개하지 않은 것은좀 이해하기 힘든 부분입니다.
이것은 분산앱 플랫폼이라면 필연적으로 생기는 문제로서, 개발자들이 분산앱을 많이 돌리거나 킬러 앱을 만들어서 엄청난 채굴자원을 필요한 분산앱을 돌리게 되면 당연히 채굴자원을 늘려주어야 하기 때문에 발생합니다.
즉, 이것으 분산앱 플랫폼을 지향하면, 해결해야할 당연한 문제인 것입니다..
개인적으로 저는 EOS의 스팸 공격을 근본적으로 막는 코인 소유량으로 채굴자원을 분배하는 것을 보고 처음 놀랐습니다.
그리고 나서 제가 생각한 것은 분산앱을 돌리려면, 채굴자원을 필요할 때 계속 늘려주어야 하는 데, 이것을 어떻게 해결할지에 대해서 며칠 고민을 했습니다.
그러다가 제가 우연히 위의 링크를 보게되었고, EOS가 채굴자에게 채굴자원 확장압력을 가하는 방법도 있다는 것에 다시 한번 놀라게 되었습니다.
아래의 그림과 같이 위 링크에 따르면, EOS 시총이 증가하면, 채굴 자원량도 늘려주는 방법을 제시했습니다.
구체적으로 설명하면, 채굴자는 EOS 시총 대비 채굴자원인 RAM 1KB의 가격을 채굴자들이 공시합니다.
그리고 코인 소유자는 가장 싼 채굴자원에 투표를 하면, 이 채굴자에게 블록생성 확률이 증가하게 되고, 그러면 채굴 확률이 작아진 다른 채굴자들이 채굴자원을 증가시키도록 강제하는 것이 핵심적인 알고리즘입니다.
쉽죠. ㅎ
하지만, 저는 이것을 처음 보았을 때 왜 EOS 시총에 따라 채굴자원을 늘려주는 방법이 좀 이해가 안갔습니다.
더 쉬운 해결 방법은 필요한 채굴자원을 측정하여, 이에 맞추어 채굴자원을 증가시키는 전략이 누구나 생각하는 전략이라고 생각했기 때문입니다.
어째든, EOS 백서에 이 내용이 포함이 안되었기 때문에 시총에 따른 방법으로 구현된다고 확신할 수는 없는 것 같습니다.
또한 RAM의 경우 아마존 클라우드에서도 특정 크기(3GB??) 이상으로 확장이 불가능한 것으로 알고 있고, 이를 몇년안에 아마존이 해결한다는 신문 기사를 본 것 같기도 합니다.
이런 이유 때문에 시총을 기준으로 RAM 1KB를 기준으로 했는가를 생각해보면, 이것도 아닌 것 같습니다.
현재의 제 생각은, 채굴자원의 사용량을 측정하여 채굴자원 확장 압력을 채굴자에게 가하는 것입니다.
제가 생각한 방법은 이렇습니다.
현재 채굴 자원을 70% 사용하고 있다면, 채굴자의 자원을 많이 가진 채굴기(실제는 투표를 많이 받은 채굴자)에 채굴자원이 적은 채굴기 보다 더 많이 받도록 계수를 곱합니다.
즉 기준 상태의 계수는 1이라고 정하고, 70%이하의 채굴자원이 사용되면, 계수는 1로 정합니다.
채굴자원 사용량이 70%-80%의 계수는 1.2로 해서 더 많은 채굴자원을 가진 채굴기가 더 많이 채굴이 되도록 하여 작은 채굴자원을 가진 채굴자가 자신의 채굴자원을 늘리도록 합니다.
그리고 80%-85%이면, 계수를 1.5, 85%-90%이라면, 게수를 2로 하는 방법도 가능할 것으로 보입니다.
이것을 제가 글을 쓰면서 즉흥적으로 생각해본 방법입니다.
그리고 EOS는 마치 은행과 같이, 부분 지급 준비율이 있습니다.
아래과 같이, 이것은 채굴자원이 10% 소비하면, 소유한 채굴자원의 100배를 사용 가능하도록 하는 것입니다.
EOS 로드맵은 아래와 같습니다.
Phase 4까지 2018.6월까지 마치려고 합니다.
2017.12.4일에 테스트넷인 EOS DAWN 2.0이 발표되었습니다.
이것은 1 CPU, 즉 한개의 쓰레드를 사용하는 것으로 블록 생성시간은 1초이고, 초당 거래 수는 500-1000개로 처리 성능이 다소 좋지 않습니다.
2018.2.28일에 DAWN 3.0이 예정되어있으며, 아래와 같은 기능이 포함된다고 합니다.
https://github.com/EOSIO/eos/milestone/5
참고로, inter-blockchain communication은 다른 암호화폐의 체인을 이야기하는 것으로 생각됩니다.
horizontal scaling은 멀티 CPU를 이야기하는 것으로 생각됩니다.
* 밋업 자료
- 쉽게 이해하는 블록체인 기술(1): https://steemit.com/kr/@loum/1
- 쉽게 이해하는 블록체인 기술(2): https://steemit.com/kr/@loum/6knvph-2
- 쉽게 이해하는 블록체인 기술(3): 합의 알고리즘: https://steemit.com/kr/@loum/3
- EOS(1): 스팸 공격 방어방법: https://steemit.com/kr/@loum/eos-1
쉽게 풀어주셔서 감사합니다^^
예전 세미나에서 박사님 발표 듣고서 많은 도움이 되었는데, 그동안 EOS
에 대한 기술적인 궁금증들을 한방에 해결해 주시는 탁월한 설명자료에 감사 드립니다 ~~~
EOS 와 ETH의 플랫폼적 가치를 한번에 이해할수 있었습니다.
interesting postings very good, I like
단연코 EOS에 관한 설명중 탑클래스의 내용들인 것 같습니다. 리스팀합니다. 글쓰신 분의 노고에 비해 너무 편하고 쉽게 자료를 받아보네요. 거듭 감사드립니다.
감사합니다..ㅎ
와 EOS에 대해 이렇게 자세하게 쓰여진 글은 처음 보네요
감사합니다!
100%까지밖에 보팅 못하는게 아쉽습니다..
좋은 글 감사드립니다.
항상, 제 글에 관심을 가져주셔서 감사합니다.
놀라울따름입니다.
완전 보물 자료네요. 감사드립니다. 꾸벅~
엄청난 정보글을 작성하시느라 힘드셨겠습니다.
이오스 장투자로서 공부많이 되고 있습니다 고맙습니다 ^^
현실이라면 정말 기대되는군요..
스팀잇 가입하고 첫날인데 좋은글들이 정말 많네욥..
좋은글 자주 써주세욥 자주 들르겠습니다!!