글을 쓰기에 앞서 케블리에 글을 쓸 수 있는 기회를 주셔서 감사합니다 :)
EOS 메인넷이 시작된 지 무려 한 달이 됐습니다. 작년 12월부터 EOS를 알고 투자를 시작해 공부하기 시작했고, 올해 5월부터 EOSYS에서 일을 시작해 6월 메인넷을 지켜봐 왔습니다. 출퇴근 길마다 가격을 보면 그저 웃음만 나오지만 트랜잭션 속도와 점점 시장으로 나오려는 DApp들을 보면서 한편으로는 위안을 삼고 있습니다.
성장통(?)을 겪고 있는 EOS가 어떤 구조를 가지고 있고, EOS 기반 DApp(Decentralized Application)과 EOS 생태계는 어떠한 방향으로 흘러갈지에 대해 살펴보도록 하겠습니다.
1. 수수료가 무료?
이더리움에서는 가스(GAS)라는 수수료를 사용해야 다른 사람에게 이더리움을 전달할 수 있습니다. 반면, EOS는 사용자가 수수료를 내지 않는 시스템이라고 알려져 있습니다. 네, 수수료는 없습니다. 하지만 EOS를 전송하기 위해서는 EOS가 필요합니다. '뭐지?' 하시는 분들을 위해 자세히 설명해드리도록 하겠습니다.
블록체인 위에서 코인이나 토큰을 전송하기 위해서는 누군가의 컴퓨터를 사용해야 블록체인에 그 내용이 저장됩니다. 이더리움에서는 채굴자의 컴퓨터를 사용하기위해 가스라는 수수료를 냅니다. EOS에서는 블록 프로듀서(Block Producer, 이하 BP)의 컴퓨터를 쓰기 위해 EOS를 사용해야합니다. 컴퓨터를 빌려주는 보상(블록 생산 보상)으로 이더리움에서는 가스와 인플레이션을 채굴자가 가져가고, EOS에서는 수수료가 없기 때문에 인플레이션만 BP가 가져갑니다.
컴퓨터들은 네트워크(이하 NET)로 연결되어있고 각각의 컴퓨터는 CPU와 RAM으로 구성되어 있습니다. 즉, 이더리움은 컴퓨터를 사용할때마다 가스(수수료)를 내고 사용하면 됩니다. 하지만 EOS에서는 BP의 컴퓨터를 사용하려면 NET, CPU, RAM을 각각 따로 빌리거나 사서 이용해야 합니다. 다른 블록체인도 이해하기 어려운데 유난히 EOS가 더 어려운 이유는 컴퓨터를 쪼개서 빌리는데 있지 않나 싶습니다.
EOS를 이용하기 위해서는 가입비를 내야합니다.
EOS에서는 12자 이하의 영문 소문자 + 숫자 1~5 조합의 계정을 사용합니다. 이 계정들은 EOS 블록체인 위에 등록되어있습니다. RAM의 약 4KB의 공간은 필수로 필요한데, 이곳에서는 전송, 투표 등의 기본적인 트랜잭션을 처리하고 계정의 정보를 저장합니다. EOS 메인넷이 오픈하기 전 이더리움 기반 EOS 토큰을 eos.io에 등록하신 분들은 랜덤한 영문 12자의 EOS 계정을 받으셨을 겁니다. 이분들은 공짜로 무려 8KB(현재 약 2.5EOS)를 받으셨습니다. RAM은 EOS로 사고팔 수 있는데 메인넷 이후 계정 생성에는 RAM 구매가 필수이므로 계정을 가지고 있는 분들만 계정 생성이 가능합니다. 이 4KB에 해당하는 EOS는 돌려받을 수 없는 가입비라고 보시면 됩니다.
EOS를 이용하기 위해서는 보증금을 내야합니다.
계정이 있으신 분들은 전송, 투표 등의 트랜잭션을 이용하기 위해 NET, CPU가 필요합니다. 사고팔 수 있는 RAM과 달리, NET, CPU는 EOS를 스테이크(stake) 시켜야 사용 가능합니다. 스테이크란 쉽게 말해 EOS를 보증금처럼 맡기는 것이라 생각하시면 됩니다. 따라서 언제나 되돌려 받을 수 있습니다(72시간 소요). NET은 데이터를 보낼 때 사용되고 CPU는 데이터를 처리할 때 사용됩니다. EOS에서는 BP들의 컴퓨터 능력을 자동적으로 계산해 EOS를 맡겨 놓았을 때 NET과 CPU를 얼마나 이용할 수 있는지 알려줍니다. 모든 사람이 동시에 이 자원들을 사용하지 않기 때문에 대역폭(Bandwidth)이라는 개념을 사용해 한번 트랜잭션을 했을 때 사용 가능한 NET과 CPU 양이 줄어들고 일정 시간이 지나면 다시 회복됩니다. 원활한 트랜잭션을 위해서는 항상 보증금이 필요합니다.
심지어 언스테이킹(보증금을 되돌려 받는 트랜잭션)도 NET과 CPU가 사용되므로 마지막 트랜잭션을 위해 소량의 EOS를 남겨두어야 합니다.
가입비와 보증금을 내면 이제 수수료 없이 무료로 사용가능하십니다 :)
2. RAM 가격 이슈
메인넷이 오픈하고 RAM 가격이 단기간에 무려 80배 가까이 올랐었습니다(현재는 0.3EOS/KB 정도). 최고점에서는 앞서 말한 가입비가 3.6EOS 정도였습니다. 일반 유저의 경우는 가입비 정도는 낼 수 있겠지만, DApp 개발자의 경우, 회원의 정보를 RAM에서 처리를 해야 하기 때문에 RAM이 많이 필요하고 따라서 RAM 가격이 오르면 치명적입니다. EOS RAM은 수요와 공급에의해 자동적으로 가격이 형성되는 Bancor 알고리즘을 따르고 있습니다. 이번 급상승은 RAM을 BP가 공급하기 때문에 정보의 비대칭성이 존재하고, 자원이 한정되어있기 때문에 Bancor 알고리즘을 악용한 사례로 볼 수 있습니다.
Block.one의 해결 방안
1단계 - 램 공급량의 증가 2단계 - 계정 생성 비용의 절감 3단계 - iOS 용 EOS 지갑의 무료 계정 제공
댄 라리머는 이러한 문제점을 인지하고 해결 방안을 내놓았습니다.
램을 1년에 64GB씩 증가시킬 예정입니다.
새 계정의 생성에 0.5KB 만 필요하다는 결론을 내렸습니다. 따라서 가입비가 줄어들 것으로 보입니다.
Block.one은 무료 iOS 지갑을 제작하고 있으며, 이 지갑의 사용자에게 무료 EOS 계정을 제공할 예정입니다.
위와 같이 된다면 일반 사용자와 DApp 개발자의 부담이 줄어들 것으로 생각합니다.
3. DApp 개발자가 해야할 일
DApp을 만들기 위해서는 C++을 이용해 스마트 컨트랙트를 짜야 합니다. 개발자는 이 컨트랙트의 크기와 사용자 정보량에 따라 RAM을 구입해야 합니다. 또한, 컨트랙트에서 데이터를 주고받고 처리하기 위해 NET과 CPU가 필요합니다. 따라서 EOS를 스테이크 시켜야 합니다(이러한 자원을 계산하는 방법은 이 곳을 참조하세요).
대부분 DApp은 EOS 블록체인에 새로운 토큰을 발행해서 사용합니다. 이 새로운 토큰을 전송할 때도 EOS 토큰 전송과 마찬가지로 NET과 CPU를 사용하게 됩니다. 따라서, 사용자도 새로운 토큰을 사용하기 위해 EOS를 스테이크 시켜야 합니다(새로운 토큰을 스테이크 시키는 것이 아닙니다).
DApp 내에서 트랜잭션을 누가 부담하느냐에 따라 두 가지 유형의 DApp이 생길 것입니다.
사용자에게 트랜잭션 일부 전가
스팀잇과 비슷한 성격을 가진 DApp이 EOS 위에서 동작된다고 생각해 보겠습니다. 당연히 스마트 컨트랙트를 사용하고 있는 이 DApp은 사용자들의 글들과 정보를 저장하고 처리하기 위해 RAM이 필요하고 NET과 CPU도 필요합니다. 하지만 글을 쓸 때, 보팅 할 때, 댓글을 달 때 사용자도 사용 가능한 NET과 CPU가 있어야 하므로 EOS를 직접 스테이킹 해야 합니다.
DApp 개발자가 모두 부담
게임 DApp을 예로 들겠습니다. 게임을 시작함과 동시에 DApp에서 자동적으로 NET과 CPU를 사용자에게 임대(Delegate)를 해줍니다(NET과 CPU는 다른 사람에게 임대가 가능합니다). 게임을 하는 동안 사용자는 DApp에서 빌려놓은 NET과 CPU를 이용해 게임을 즐깁니다. 게임을 종료할 때는 다시 자동적으로 NET과 CPU는 DApp에게 반환됩니다. 이러한 DApp이 개발되면 사용자는 EOS를 따로 스테이크 할 필요 없이 사용할 수 있습니다(물론 게임 접속과 종료할 때 트랜잭션은 사용자 몫입니다)
4. EOS의 가치 상승
현재 약 189개의 EOS 기반 DApp 프로젝트가 진행 중입니다. 만약 이 모든 DApp들이 성공을 해서 EOS 메인 체인에서 작동을 한다면 EOS 가치 상승과 RAM의 가치 상승이 동시에 올 것입니다. 이러한 상황이 벌어진다면, 새로 진입하려는 DApp들은 RAM, NET, CPU를 사용하기 위한 가격이 만만치 않을 것입니다.
NET, CPU 임대 시장
BP들이 이러한 상황에서 NET과 CPU의 성능을 높일 수 있지만 하드웨어의 한계는 존재합니다. NET과 CPU는 임대(delegate)가 가능하기 때문에 현실 세계에서의 월세 개념으로 임대 플랫폼이 나올 것으로 기대됩니다. EOS를 직접 구입해서 NET과 CPU를 이용하기 힘든 DApp 개발자는 일정 기간 동안 EOS를 지불하고 NET과 CPU를 사용할 수 있습니다. 실제로 Chintai라는 임대 플랫폼이 개발 중에 있습니다.
사이드 체인(Side Chain)
이 내용은 댄 라리머의 메세지를 기반으로 쓰여졌습니다.
가격이 높아진 RAM은 BP들이 RAM의 공급을 늘리면서 가격을 낮출 수 있습니다. 하지만 이 또한 하드웨어이기 때문에 한계가 존재합니다. 메인 체인의 땅값(RAM, NET, CPU)이 치솟게 되면 BP들의 합의하에 사이드 체인을 만들 수 있습니다. 사이드 체인은 메인 체인의 복제품입니다. 하지만 이곳에는 새로운 토큰이 발행되지 않습니다. 즉, 아무것도 존재하지 않는 체인이 됩니다. 사이드 체인을 사용하기 위해서는 메인 체인과 사이드 체인에 동시에 스마트 컨트랙트를 만들어 메인 체인에 있는 EOS를 일부 태우고(Burn) 사이드 체인에서 동일한 수량으로 발행(Print) 해야 합니다.
현재 메인 체인에는 10억 개가 조금 넘는 EOS 토큰이 5%의 인플레이션을 가지고 늘어나고 있습니다. 사이드 체인이 만들어져서 1억 개의 EOS 토큰이 메인 체인에서 사이드 체인으로 이동한다고 생각해보겠습니다. 사이드 체인에서 인플레이션은 메인 체인과 동일하고 BP는 메인 체인의 BP와 같을 수도 있고 다를 수도 있습니다. 1억 개의 EOS로 운영되는 사이드 체인의 BP들은 메인 체인과 마찬가지로 RAM, NET, CPU의 컴퓨터를 제공하므로 1억 개의 인플레이션을 보상으로 받습니다. 하지만 메인 체인의 인플레이션 보상보다는 적은 금액이므로 메인 체인 컴퓨터 사양보다 좋지 못할 겁니다. 따라서, 사용자와 DApp 개발자는 보다 저렴한 가격으로 이 자원들을 이용할 수 있습니다. 이처럼 사이드 체인을 이용하면 값비싼 자원 문제를 해결할 수 있습니다.
5. 마치며
EOS는 DApp 개발을 위한 플랫폼이기 때문에 컴퓨터 관련 내용이 많고 어렵습니다. 기존에 EOS에 대한 궁금하시거나 이해 안 되시는 내용들이 이번 글을 통해 해결되셨으면 하는 바람입니다. 사실 EOS에는 오늘 말씀드린 내용 외에 더 많은 개념과 문제들이 있습니다. 예를 들면, EOS의 거버넌스(Governance), 헌법(Constitution) 등 BP들이 운영해야 하는 것들인데요, 모든 BP들이 EOS가 처음이고 미숙하기 때문에 EOS 발전에 걸림돌이 되고 있습니다. 하지만, 차츰차츰 사소한 문제들이 해결되고 많은 DApp 들과 사용자들이 생기는 날이 오지 않을까 생각합니다. 긴 글 끝까지 읽어주셔서 감사드립니다 :)