한국어
Profile
loum

2018.10.19

[제안] EOS에서 CPU 비용을 낮추는 방법

조회 수 370 추천 수 1
이 글은 EOS 노드원의 로움(Loum, 김성일)이 작성한 것입니다.

1. 목적

우리는 CPU/Net 자원의 가격을 낮추기 위해 1) 자원 사용을 위한 스테이크와 2) BP 투표 및 국민투표를 위한 스테이크를 분리하는 것을 제안합니다.

 

2.1 스테이킹 기능에 대한 설명

EOS는 컴퓨팅 자원을 사용하기 위해 스테이킹(staking)이라는 독특한 자원분배 방법을 사용합니다. 여기서, 스테이킹이란 홀더가 스테이킹한 EOS의 개수에 비례하는 만큼의 컴퓨팅 자원을 사용할 권리를 홀더에게 분배하는 방법이고, 이를 통해 홀더는 EOS가 스테이킹되어 있는 동안 해당하는 자원을 무료로 사용할 수 있습니다. 즉, 스테이킹은 자신의 EOS를 이동시키지 못하도록 시스템 계정인 eosio.stake에 묶어놓는 것입니다.

 

여기서, 네트워크의 컴퓨팅 자원은 BP들이 제공하며, 이들이 제공한 총 자원의 공급량이 제한되어 있기 때문에 이를 네트워크에서 홀더들에게 안전하게 분배해야 합니다. 참고로 스테이킹 방법과 달리, 기존 방법은 이더리움과 같이 수수료를 기반으로 노드들이 제공한 컴퓨팅 자원을 분배하는 방법을 사용합니다.

 

2.2 CPU 자원의 높은 가격 문제


현재 EOS의 스테이킹은 두가지 목적으로 사용합니다. 이것은 1) 자원 사용 권리, 2) BP 투표 및 국민투표(Referendum) 권리를 줍니다.

 

구체적으로 이것을 설명하면 아래와 같습니다.
첫번째로, 홀더들은 스테이킹을 통해 EOS 네트워크의 자원의 사용 권리를 독점적으로 획득합니다. 이것은 홀더들이 컴퓨팅 자원을 이용하기 위해서 먼저 자신의 EOS 토큰을 네트워크에 스테이킹한 후에 EOS 네트워크에서 이에 해당하는 자원을 이용하는 방법입니다.
두번째로, EOS 네트워크는 홀더들에게 CPU/Net에 스테이킹한 코인의 개수에 비례하는 만큼의 BP 투표 및 국민투표에 참여하는 권리를 줍니다.

 

하지만 이런 방법의 단점은 홀더들이 BP 투표에 참여하기 위해 필요 없이 CPU 및 Net 자원에 많은 수의 EOS를 스테이킹하도록 유도하고, 결국 이것이 이들 자원의 가격을 올리는 역할을 할 수 있습니다.

 

예를 들면, 2018.10.4.일 현재 dApp 중에 초당거래수(transaction per sccond, tps)가 두번째로 많은 댑은 BETDice이고, 이것의 24시간 총 거래건수는 306,872이므로 tps는 3.55입니다. 그리고 EOSBet의 계정인 eosbetdice11에서 사용하는 자원은 각각 1) CPU가 123,500 EOS와, 2) 네트워크(Net)가 250 EOS를 스테이크했고, 3) RAM은 7.78MB를 구매했으므로, 이것은 976 EOS에 해당합니다. 따라서 EOSBet이 서비스를 하기위한 총 비용은 124,726 EOS입니다.

 

small_fig1.png

 

그림 1. EOSBet의 계정인 eosbetdice11의 스테이킹 상태.

 

 

small_fig2.png

 

그림 2. eosrp에서 램 자원의 환산된 EOS 개수의 계산 모습

 

여기서, 가장 중요한 것은 EOSBet의 전체 비용 중에서 CPU 비용이 약 99%을 차지한다는 것입니다. 만일 EOS의 가격을 6달러(7000원)으로 가정하면, 이 계정의 자원사용 비용은 총 약 750,000 달러(약 8억 2000천만원)에 이릅니다. 중요한 것은 이 비용의 거의 모두가 CPU를 사용하기 위해 스테이킹하는 비용으로 사용되었다는 것입니다. 이 때문에 우리는 dApp 플랫폼으로 EOS가 더 성공하기 위해서 dApp들의 진입비용을 낮추는 것이 무엇보다 중요하다고 생각합니다.

 

아래 표는 EOS에서 상위 4개의 tps를 가진 dApp들의 전체 자원 비용 중에서 CPU 비용이 차지하는 비율(%)를 보여줍니다. 아래 표와 같이, 게임인 EOS Knights를 제외하고 3개의 갬블링 dApp은 전체 비용 중 약 90% 이상을 CPU의 비용으로 사용하고 있습니다. 이와 반대로 게임인 EOS Knights는 전체 비용 중 RAM에 약 97%의 비용을 사용합니다.

 

표1. 상위 4개의 tps를 가진 dApp들의 전체 비용 중 CPU 비용의 비율(%)

fig3.png

 

 

3. 스테이크의 기능 분리

이 문제를 해결하기 위해, 우리는 다음과 같이 스테이크 기능을 두개로 분리할 것을 제안합니다.

  1. CPU/Net 자원 사용을 위한 자원 스테이킹.
  2. 자원 사용 외의 BP 투표 및 국민투표 등에 사용되는 투표 스테이킹.

우리는 이 방법이 CPU/Net 자원의 가격을 낮출 수 있을 것으로 추측하고 있습니다. 단, 우리는 CUP/Net의 자원배분 방법의 소스코드를 직접 확인하지는 못했습니다.

 

이를 구현하기 위해, 기존의 자원 스테이킹 계정인 eosio.stake 외에 BP 투표 등을 위한 투표 스테이킹 계정을 새로 만들 수 있습니다. 예로, 투표 스테이킹을 위한 eosio.stakevotes 계정을 새로 생성하고, BP 투표 및 국민투표는 이 계정에 스테이킹된 EOS를 사용하여 투표하도록 네트워크를 구성할 수 있습니다.

 

하지만, 이 경우 EOS 홀더들은 자신의 EOS를 이체하지 못하게 묶어두는 불이익에도 불구하고, 네트워크의 자원 사용을 위해 자원 스테이킹을 해야하는 분명한 동기가 있습니다. 하지만, 이와 달리 이들이 네트워크의 건강성을 증진하기 위한 투표 스테이킹은 하지 않을 가능성이 매우 높습니다. 왜냐하면 이에 따르는 경제적인 이익이 없고, 단지 자신의 EOS를 이체를 못하도록 묶어놓는 불이익만 존재하기 때문입니다.

 

결국 만일 스테이킹을 분리한다면, 투표 스테이킹에 참여하도록 경제적인 이익을 주는 것이 반드시 필요합니다.

 

3.1 이자와 연계

우리는 이미 연 4%의 eosio.saving 계정에 적립되는 WP 자금 중 일부(예, 2%)를 EOS 네트워크의 건강성을 위해 사용하는 제안을 했었습니다. 한글 영문이것은 1) 스테이킹과 2) BP 투표를 한 계정에 이자를 지급하는 방법입니다. 이를 통한 효과는 1) 스테이킹되는 EOS의 비율을 증가시키고 이를 통해 EOS의 유통량이 줄어들게 되어 EOS 가격이 상승할 가능성을 높일 수 있고, 2) 더 많은 개미들(shrimps)이 스테이킹 및 BP 투표에 참여하여 네트워크의 건강성이 증가시킬 수 있습니다.

 

따라서 우리는 이 이자를 투표 스테이킹 및 이를 통한 BP 투표를 한 계정에 지급하는 방법을 제안합니다. 즉 자원 스테이킹을 한 계정에는 이자를 지급하지 않습니다. 왜냐하면, 자원 스테이킹은 홀더들이 네트워크를 ‘사용’을 위한 목적이지만, 투표 스테이킹은 생태계에 ‘참여’하여 네트워크의 건강성 증진하는 목적이기 때문입니다.

 

구체적인 예를 들면, 이자는 투표 스테이킹과 BP 투표에 대해 1:1 비율로 지급될 수 있습니다. 그리고 이자는 년 총 2%인 인플레이션을 이용하고, 전체 EOS 중에서 투표에 스테이킹된 코인이 전체 중에서 50%이고, BP 투표에 참여한 EOS가 전체 중에서 10%이라고 가정합니다.

 

이 경우 스테이킹은 년 2%, BP 투표는 년10%를 이자로 받습니다. 따라서 이것에 모두 해당하는 홀더들은 연간 12%의 이자를 보상으로 받지만, 투표 스테이킹만 참여한 홀더들은 연간 2%의 이자를 받게 됩니다.

참고로, 블록원의 CTO인 댄 라이머는 이미 스테이킹된 EOS에 REX 토큰을 통해서 거래 수수료를 지급하는 제안을 했습니다. 따라서 이것을 위의 예에 적용할 수 있습니다.

 

4. 결론

우리는 CPU의 자원 비용을 줄이기 위해 기존의 CUP/Net을 위한 스테이킹을 1) 자원 스테이킹과, 2) 투표 스테이킹으로 분리하는 방법을 제안했습니다. 또한 우리는 이를 위해 투표 스테이킹을 한 계정에 이자를 지급하여 투표 스테이킹을 늘리는 방법을 논의하였습니다. 이런 방법은 CPU 자원 비용을 낮출 수 있을 뿐아니라 홀더들의 참여를 늘려 네트워크를 더 건강하게 만드는 효과가 있다고 믿습니다.

Profile
2
Lv

2개의 댓글

Profile
loum
2018.10.19

노드원에 많은 응원과 투표를 부탁드립니다.

Profile
수다
2018.11.21

투표와 자원을 위한 스테이킹을 분리하는 게 어떻게 CPU 자원을 절약하는데 도움이 될까요? BP라면 셀프 보팅을 위해서 최대한 많은 자원을 스테이킹하겠고, DAPP개발자는 필요한 양 만큼의 자원을 스테이킹할 텐데, 이때 CPU는 네트워크의 Throughput이 많은 것과 관련될 것 같아요. 전체 자원의 점유 문제라서 비용으로 보기 어렵고 공공재를 나누는 기준으로 작용한다는 것 같아요. 물론 투표율을 높이기 위해 투표한 계정에 한 해 혜택을 주는 것에는 동의합니다.

 

Profile
추천 수 제목 글쓴이 날짜
2 [노드원] 짧은 근황 업데이트 2 hahn 2019.08.21
2 [노드원] OKex에 계정을 가지고 계신 분들께 1 EOS를 보내드립니다. (선착순 100명) 1 hahn 2019.08.18
6 이오스 노드원, 캄보디아 BP인 이오스 KH와의 합병 소식 전해 드립니다. 3 hahn 2019.04.24
2 [3부] 이오스 토큰홀더와 거래소를 위한 거부할 수 없는 제안 2 hahn 2019.04.10
6 [2부] 비상을 준비하는 잠룡 이오스. 9 hahn 2019.04.03
4 [1부] 이오스 노드원이 걸어온 길 10 hahn 2019.04.01
1 EOS 노드원 [월드 인터뷰 시리즈1] — Starteos! profile loum 2018.11.01
0 EOS DApp FESTA 행사에서 DEXEOS의 발표 내용 4 profile loum 2018.11.01
8 EOS 노드원의 업적 6 profile loum 2018.10.29
3 [공지] 노드원 두개의 BP 평가 플랫폼에서 21등과 22등을 차지하다. profile loum 2018.10.20
1 [제안] EOS에서 CPU 비용을 낮추는 방법 2 profile loum 2018.10.19
0 [EOS 미등록 홀더들을 위한 해결책] 1 profile loum 2018.10.18
1 [노드원 설문 조사] 인플레이션 4% 활용 방안 11 profile EOS노드원 2018.09.11
10 [제안] 이자를 통한 EOS 네트워크의 건강성 증진방법 12 profile EOS노드원 2018.09.07
1 국내 eos홀더들의 구심점 노드원 'Vote to change' 참여안하시나요? 2 profile 푸른바다 2018.08.08
3 [제안] 충분한 보상을 통한 자발적 인프라 확장 방법 3 profile EOS노드원 2018.07.25
8 [제안] RAM 무단점유 해결방법: 무제한적 RAM 공급 모델 8 profile EOS노드원 2018.07.24
1 [커뮤니티 설문조사 : EOS Community Confrence 2018] 1 profile EOS노드원 2018.07.18
3 [EOS Community Confrence 2018] 4 profile EOS노드원 2018.07.13
2 투기장화된 RAM 마켓에 대한 노드원에 입장은 어떤지 궁금합니다. 6 profile 푸른바다 2018.07.11
12 (제안) 담보물에 의한 BP 책임성 및 시스템 기반 투표 보상 방법 9 profile EOS노드원 2018.07.11
2 [EOS 노드원] 스캠 주의 뉴스+피싱 사례+예방법+대처 방안 profile EOS노드원 2018.06.25
2 [EOS 노드원] EOS 지갑 그레이매스를 사용해보자 ! (코인 이동 / 언스테이킹) 유튜브영상 6 profile 크리머 2018.06.20
3 [EOS 노드원 제안] 장비보상 기반의 새 BP보상 방법 1 profile 크리머 2018.06.20
6 EOS 메인넷 헌법(한글 번역본) 4 profile 크리머 2018.06.19
11 [EOS 노드원] 메인넷 런칭을 축하합니다 ! 9 profile 크리머 2018.06.15
1 [EOS 노드원] EOS 투표 5분만에 하는 방법 38 profile 크리머 2018.06.14
4 [EOS 런치 업데이트] BP 후보자들의 체인 런칭 과정 & BP들의 노력 3 profile 크리머 2018.06.05
0 스냅샷 확인 + EOS 레지스터 미등록 & 퍼블릭 주소 오입력 해결책 11 profile 크리머 2018.06.05
2 EOS & 노드원에 대해 무엇이&든 물어보세요! (1편) 5 profile 크리머 2018.05.31
서버에 요청 중입니다. 잠시만 기다려 주십시오...