[Proposal] How to lower CPU costs in EOS network
We propose to divide staking into two unique parts to lower the price of CPU/Net resources:
- stake for resource use
- stake for BP voting and referendum
2.1 Description of the Staking Feature
Because the computing resources of the EOS network are provided by BPs and the total supply of the resources provided by them is limited, it is required to safely distribute them to the holders in the network.
EOS network utilizes a unique resource allocation method called staking. And this is a method of distributing the rights to use computing resources of EOS network to all holders in proportion to the number of their staked EOS coins that deposits EOS tokens as collateral. In other words, staking is to hold EOS coins in the system account eosio.stake to prevent them from moving. So, this method makes the holders use the corresponding resources for free while their EOS is staked. Unlike the staking method, the existing method distributes the computing resources provided by nodes based on transaction fees as practiced in the case of Ethereum.
2. High Price Issue with CPU Resources
Currently, staking in the network is used for two purposes. It gives 1) the right to use resources and 2) the right to participate in BP voting and referendum.
To be specific, this can be described as follows. First, the holders acquire the exclusive right to use the resources of the EOS network through staking EOS tokens. This way, the holders first stake their EOS tokens to use computing resources, and then utilize the corresponding resources in the network. Second, they also obtain the right to participate in BP voting and referendum in proportion to the number of staked EOS to CPU/Net.
However, the drawback of this method is that it induces the holders to stake a large number of EOSs to CPU and Net resources to participate in BP voting, which is able to increase the price of these resources eventually.
For example, as of October 4, 2018, the second highest dApp in the number of transactions per second (tps) is BETDice. The total number of its transactions for 24 hours is equal to 306,872, so the tps is 3.55. The resources used by eosbetdice11, an account of EOSBet, staked 1) 123,500 EOS to the CPU and 2) 250 EOS to the network (Net) and 3) purchased 7.78 MB of RAM, which corresponds to 976 EOS. Therefore, the total cost for the EOSBet service is equivalent to 124,726 EOS.
Most importantly, CPU costs account for about 99% of the total EOSBet cost. Assuming the EOS price is $6, this account’s total cost of using resources is about $750,000. The bottom line is that almost all of these costs were spent on staking to use the CPU. For this reason, we believe that lowering the entry cost for dApps will be most needed to help EOS succeed as a dApp platform.
The table below shows the percentage of CPU cost in the total resource cost of top four dApps in EOS. Excluding the game EOS Knights, the three gambling dApps spend about over 90% of the total cost for the CPU. In contrast, the game EOS Knights spends about 97% of the total cost for RAM.
Table 1. Percentage of CPU cost in the total cost of top four dApps in tps (%)
3. Division of Staking Feature
To solve this problem, we suggest splitting the staking feature into two as follows.
- [Resource staking] for CPU/Net resource use.
- [Voting staking] for BP voting and referendum i.e. other than resource use.
We expect that this method can lower the price of CPU/Net resources. To realize this, we can create a new voting staking account for BP voting etc., in addition to the existing resource staking account, eosio.stake. For example, we can create a new eosio.stakevotes account for voting staking, and then configure the network for BP voting and referendum, using the EOS tokens staked to this account.
However, in this case, EOS holders can have a strong motivation to resource-stake to use the resources of the network, despite the disadvantages of keeping their EOS tokens from being transferred. However, it is highly likely that they will not vote-stake to enhance the health of the network. It is because there is no economic benefit but only a disadvantage of preventing transfer their EOS tokens by staking.
After all, if the staking feature is divided into two, it is strongly required to provide economic benefit to encourage them to participate in voting staking. However, we have not identified the source code for the CPU/Net resource allocation method.
3.1 Linkage with Interest
We have already proposed using some of the WP funds (e.g. 2%) accumulated in the eosio.saving account with 4% interest per annum for the health of the EOS network. link
This method pays interest to all EOS accounts for 1) resource staking and 2) BP voting via resource staking respectively. This can lead to the result that 1) it can increase the ratio of EOS tokens being staked, which would in turn reduces the EOS circulation and thus increase the probability that EOS prices will rise, and 2) it make more small account holders participate in staking and BP voting, which improves the health of the network.
Thus, we propose a method of paying interest to all accounts through voting staking and BP voting via voting staking. It means that no interest is paid to the accounts that has resource-staked. It is because resource staking is meant for the holders to 'use' the network, but voting staking is aimed at 'participating' in the EOS ecosystem to improve the health of the network.
For example, interest may be paid at 1:1 ratio for voting staking and BP voting via voting staking. The interest rate is assumed to use the total yearly inflation, which is 2%, and let us say 50% of the total EOS tokens are staked for voting, and 10% of the total EOS tokens are participated in the BP voting.
In this case, 2% and 10% interests are paid a year for the voting staking and the BP voting respectively. Therefore, the holders who are eligible for all will receive 12% interest per year, while those who only participated in the voting staking will earn 2% interest annually.
Dan Larimer, CTO of BlockOne, has already made a proposal to pay interest with REX tokens to the resource staking. We also can apply this to our example above.
We have proposed a method of dividing the existing staking feature for CPU/Net into 1) resource staking and 2) voting staking to reduce CPU resource costs. We also discussed how to increase voting staking by paying interest to all accounts that has vote-staked. We believe that this approach not only lowers CPU resource costs but also increases the participation of the BP voting by the holders, thereby making the network healthier.