이오스(EOS)의 자원이란?

CUBE
CUBE
Published in
7 min readJun 23, 2018

자원(Resource)이란?

자원이란 시스템을 운영하는데 필요한 요소들로 EOS나 간단한 쉘 스크립트나 모두 코드가 동작하고 운영되기 위해서는 시스템의 하드웨어적인 자원을 사용해야 합니다. 일반 사용자들은 쉽게말해 자원을 데스크탑 PC 정도라고 생각하는 것도 좋습니다.

이제 PC환경에서 (PC를 구매한다고 했을 때) 중요한 성능을 나타내는 중요한 지표가 무엇이 있을지 생각해보면, 대다수는 CPU, RAM, HDD, 그래픽카드 등을 생각할 것이고, 이 PC를 이용하여 인터넷에서 어떤 작업이 필요할 때, 일반적으로 이야기하는 인터넷 회선속도(1Gbps와 같은)가 더해질 수 있습니다.

EOS에서의 자원

EOS를 살펴보면 네트워크가 연결된 상태에서 21개의 BP가 블록체인 노드를 관리합니다. 이러한 일을 하려면 결국 하드웨어적인 자원이 필요할 것이고, 이는 곧 서버시스템(PC)의 사양을 의미하게됩니다. EOS에서는 이것을 일반시스템에서 사용하는 방식과 동일하게 CPU, Net Bandwidth, RAM(CPU 처리 시간, 네트워크의 대역폭, 램의 사용량)로 표현하고 관리하게 되고, 사용자는 이러한 자원을 할당 받아 사용합니다.

CPU

사용자가 스마트 컨트랙트를 실행하거나, DApp 개발자가 스마트 컨트랙트를 업로드하는 등의 작업을 하려면, CPU가 일을 해야 합니다. 이 일을 얼마나 빨리 할 수 있는지를 지표화하여 부품을 구매할 때 보통 3.0GHz와 같은 형태로로 표시합니다. 하지만 EOS의 세계에서는 이 일을 시키는 사람이 많은 사용자, Dapp개발자 등 불특정 다수가 됩니다. (정확히는 이런 불특정 다수가 만들어 놓은 코드들의 실행) 그래서 EOS에서는 이 자원을 얼마동안 점유하여 사용하는지를 시간 개념으로 CPU를 몇 초, 몇 시간동안 사용할 수 있다고 표현합니다.

Net Bandwidth

사용자가 EOS를 통해 어떤 작업을 하려면, EOS 서버와의 통신이 필요할 것입니다. 하나라면 모르겠지만, 수십명이, 수백, 수천이 동시에 이러한 통신을 수행하면 당연하게도 접속이 지연된다던지, 통신을 수행할 수 없는 현상이 생길 수 있습니다. 이렇게 초당 받을 수 있는 데이터의 양을 대역폭 이라하고 1Gbps (1초동안 1Gbit. 100MBytes)와 같이 표현합니다. EOS 세계에서도 이러한 개념과 동일하게 스마트 컨트랙트 등이 소모하는 네트워크상의 데이터 크기를 bytes로 표시합니다. (bps를 이해하기 쉽게 bytes로 표시합니다.)

RAM

PC를 구매할 때에도 보통 RAM이 “크면(많으면) 좋다” 정도로 알고 있으신 분이 많습니다. RAM을 다른 곳에 비유해보면 책상위에 빈 연습장을 생각해 볼 수 있는데요

위 표가 적절한 비유인지는 모르겠지만, RAM은 시스템에서 관여하지 않는 곳이 없는 중요한 자원입니다. 이러한 이유로 EOS에서도 이 자원을 Bytes로 하여 관리 합니다. 다만, 이 자원의 경우 다른 자원과 다르게 Quota의 개념을 가지게 되는데, 어떠한 “응용 프로그램이 누적 얼마만큼의 용량을 사용했다”가 아니라 시스템의 “전체 용량이 100인데. 그 중에 얼마를 사용할 수 있어”의 개념으로 사용됩니다.

판매가 된다고? Stake

EOS 초기 백서에서 가장 많은 관심을 받았던 내용 중 하나가 전송 수수료가 없다는 내용이었던 것을 기억하고 계신분들이 많으실 겁니다. 하지만 위의 내용처럼 EOS에서 운영에 필요한 중요한 자원을 관리하고 판매한다고 하였으니. 그럼 유료인가?라고 생각하시는 분도 많을 것 같습니다. 게다가 자원을 소모한다고 하였으니 사용하면 없어지는 것으로 생각할 수도 있고요. 답부터 말씀드리자면 EOS는 거짓말을 하지 않았습니다. EOS를 이용해서 구매를 한다기 보다. 알맞은 가격의 EOS를 맡겨두고(Stake) 자원을 사용하는 것입니다.

여기에서 EOS를 맡겨두는 Stake(Staking)라는 개념이 나옵니다. 자원 중 Net Bandwidth를 100Kbytes 사용하기 위해 “구매” 한다면, 100Kbytes에 알맞은 EOS를 맡겨두는 것이지요. 이렇게 EOS를 맡겨두면 마음대로 거래를 하지 못하게 되는 것은 당연하겠지요. 즉 자원을 구매한다고해서 가지고 있던 EOS가 소진되어 없어지는 것이 아니라. 보유하고 있는데 마음대로 사용할 수 없는 동결 상태가 된다는 것입니다.

한 예로 EOS의 BP를 선정하는 투표(Vote)를 할 때에도 자신이 가지고 있는 EOS를 Staking하고 투표를 하게 됩니다. 투표를 했다고 해서 EOS가 늘거나 줄어들지 않는다는 것입니다.

RAM! RAM은 다르다.

CPU와 Net Bandwidth의 경우 자원 사용량은 누적되어 관리됩니다. 측정량 자체가 누적이 될 수 있는 구조이지요. CPU는 몇 초간 몇 번 사용하였다. 등등. 하지만, 바쁘게 사용되었다가 쉬는 경우도 있기 때문에 정확한 순간 사용량 보다. 누적하여 사용한 시간과 대역폭을 차감하는 것이 맞겠지요.

RAM 역시 위와 같은 형태로 봐도 상관없겠지만, 바로 확장가능하고, 성능에 영향을 미치는 효과가 크기 때문에 Dawn 4.0에서 “램은 별도로 구매 하셔야 합니다”라는 변화가 생깁니다.

개인적인 생각이기는 하지만, CPU와 대역폭은 사실 BP가 처음 설치한 상태에서 자주 변경되거나 변경되더라도 선형적 (CPU 하나를 늘리는 것은 시스템 한 대를 늘리는 것, 대역폭을 늘리는 것은 회선을 하나 더 늘리는 것이라는 식으로)으로 증가하는데 비하여, RAM이라는 자원은 쉽게 늘리고 줄일 수 있는 자원이라서 유동성에 대한 부분에 주목할 수 있었을 것으로 보입니다.

위의 문단에서 RAM은’ Quota를 할당 받는다’라고 언급하였습니다. 그 할당량을 사용자들은 구매를 하게 되고, 그 할당량 안에서 EOS 네트워크를 이용하게 됩니다. DApp의 개발자의 경우 개발한 DApp이 인기가 있어 자주 호출된다면, 그만큼의 RAM공간을 미리 구매 해두어야 한다는 뜻입니다만, 이 구매 역시, 사용이 만료되면 다시 팔 수 있는 만큼, EOS가 소진 되는 것이 아니라 Stake한다는 개념으로 접근해야 합니다.

다만, RAM의 경우 구매라는 프로세스를 둠으로서 구매-판매 사이에 시세차익이 발생할 수 있고, 구매 및 판매시 발생하는 1%의 수수료는 소진(사용해서 없어지게)됩니다. 만일 사업적으로 EOS를 응용하시는 분이라면 이 자원을 할당하는 부분에 대해서 충분히 공부하시고 이해한 후 기획을 진행하셔야 할것입니다.

나는 매점매석왕

RAM을 구매하고 판매한다는 형식을 취하게 되면서, 이러한 자원을 이용해 시세차익을 노리는 현상이 최근 많이 보이지만, 이를 안정적으로 유지하기 위해 별도의 알고리즘을 통한 조정 방식(Bancor)을 도입하는 등의 변화가 생기게 되었습니다.

하지만 개인적으로 이러한 도입이 오히려 EOS 상의 통화 불균형을 해소하기 위한 장치로서 동작할 수도 있을 것이라는 생각과 자원의 가격을 낮추기 위한 노력의 일환으로 발생할 수 있는 사이드 체인의 오픈을 가속화하는 방안으로 꽤 괜찮은 모델이라는 생각을 합니다. 마치 AWS 초기에 가격적인 접근 장벽이 있음에도 꾸준히 성장하였고, 성장 후 전체적인 가격이 안정화 되면서 인프라의 필수적인 요소로 자리잡은 모습처럼 말이죠

이번 포스팅에서는 개인적인 생각이 많이 반영 되었습니다. 실무에 응용하시고자 하는 분들은 반드시 본인 스스로 확실한 개념을 잡고 응용하시기를 부탁드립니다. (‘Stake된 EOS는 어짜피 못쓰는 돈이니 사용하는 것과 다름없다’라고 하시는 분들도 꽤 많이 존재 하니까요)

투명한 게임 생태계를 위한 블록체인 플랫폼 ITAM Games

ITAM Games의 미디움을 구독하시면 새롭게 업로드 되는 정보를 가장 빠르게 확인하실 수 있습니다.

ITAM Games의 카카오톡 오픈채팅에서는 ITAM Games와 EOS 개발 관련 이야기를 나눌 수 있습니다. 👫

웹사이트: https://itam.games
카카오톡: https://open.kakao.com/o/g7XFlhJ
텔레그램: https://t.me/itamgames

--

--