We present a solution for lowering the capital costs of using network and CPU resources on EOSIO based blockchains. The EOS network allows at most 400ms per second of CPU time to be billed and an average of 40ms per second sustained. This CPU time is divided evenly among all holders of EOS tokens that choose to stake them for 3 days. Unused CPU time is allocated on a fractional reserve basis, which means unused time is given to those who stake and decide to use it.
The EOSIO white paper called for the ability to delegate bandwidth to others. The ability to delegate bandwidth implies the ability to rent unused bandwidth. From this token holders have an opportunity cost associated with not renting their unused bandwidth.
Creating an efficient rental market requires price discovery and liquidity. An efficient rental market will ensure resources are always available and at more reasonable prices for the participants. Token holders can lend their EOS at a fee in exchange for some loss of liquidity for the duration of the loan. There is no risk of losing capital to the lender.
A EOS holder can lend their tokens to the Resource Exchange and will receive REX tokens for their EOS at the current book value of the Resource Exchange. The REX will generate fees by lending the EOS which will increase the book value. At any time the holder of REX tokens can convert REX back to EOS at book value.
In addition to earning fees for renting CPU and NET resources, we propose the fees from RAM trading, name auctions, and any other resource offered by the EOSIO chain will be added to the books of the REX. This will cause the rewards from network operation to accrue to REX holders (staked EOS holders) and generate an effective reward for holding EOS for at least 30 days (the rental period).
Borrowing Stake Tokens
For every EOS contributed to the books of the REX a number of Staked EOS tokens (SEOS) is created. The SEOS and EOS are deposited into two connectors of a Bancor Relay. The initial number of SEOS per EOS created is 1 to 1. From this point traders can buy and sell SEOS for EOS with a small trading fee (e.g. 0.5%).
If the SEOS is not sold back to the Bancor Relay, it can be converted into delegated EOS for either CPU or NET resources for a period of 30 days. At the end of 30 days the SEOS is returned to the Bancor Relay connector (after 3 day delay) and resold to other renters. No EOS is returned to the renter after they convert SEOS into a delegated period.
To discourage holders of SEOS from holding and never converting or selling, SEOS is inflated at a rate equal to the implied interest rate defined by the current EOS/SEOS price for 30 day rental. As SEOS is inflated the number of SEOS required to delegate 1 EOS will grow. The newly inflated SEOS is added to the Bancor Relay connector and sold into the market.
The act of inflating SEOS creates generates an effective interest rate paid to the REX holders which are lending their EOS to the REX.
EOS lent to the REX will count as stake for voting purposes.
Effect on Resource Prices
Under the existing EOS resource allocation model, the cost of using the network for one month is equal to the cost of buying the right to use it forever minus the proceeds of selling 30 days later. During this time the user of EOS is exposed to price volatility which could be extreme. It is possible that the user could double their money or lose half of their money.
Under heavy congestion (sustained load over 10%), the staking algorithm of EOS would give about 100 microseconds per day of guaranteed CPU time per 1 EOS staked. A trader wanting to transact once per minute (where each transaction requires 1ms) would require stake of about 15,000 EOS (or about $100,000 dollars as of August 2018). Many traders lack that much capital and few would want to expose it to volatility risks just to trade.
Renting CPU and NET resources makes far more sense for traders because they are not exposed to EOS price volatility nor do they have expensive capital costs. If we assume that staked EOS holders are renting EOS at 5% APR then the cost to trade once per minute for a month would be 60 EOS or about $0.01 per trade. This is less than the trading fees associated with buying and selling 15,000 EOS even if the price of EOS was flat.
While it is impossible to know what the resource rental rates will be, it is safe to assume that higher rental rates will drive demand to purchase and hold EOS. This market would effectively decouple EOS price and network usage costs.
Trading SEOS and EOS
The creation of the SEOS / EOS market will enable speculators to set the interest rate for 30 day of delegated CPU or NET bandwidth. Speculators make money by accurately predicting future price movements and help inform the network of the proper rental rates. The network and REX holders profit from this trading volume in addition to the rental fees.
In order to buy REX an account must set and maintain a voting proxy or approve at least 21 block producers. They may change their votes but not remove them while they hold REX tokens. After an account has sold all REX tokens they may vote for less than 21 producers.
Update to System Contract
Implementing this proposal will require updates to the EOSIO system contract to the extent that it intersects with voting rights and distribution of fees from other network activities. While it would be possible to implement a similar market outside of the system contract, such markets would come at an opportunity cost to staking for voting purposes.
At the end of a 30 day delegation contract, a user can opt to automatically purchase and stake another 30 days for a 10% discount assuming the user has sufficient EOS to purchase another 30 day rental. The 10% discount comes from not having to wait for the 3-day delay to pass before the stake can be delegated to another user. The 3-day delay prevents double-spending of resource usage due to the averaging algorithm used in measuring usage.
Comparison to Fee Model
Other blockchains sell their transactions based upon a per-transaction fee. Using cell phones as an analogy, one could either pay-per-minute or pay $50 per month for a certain minimal level of service.
Research shows that monthly fee models are easier to value and understand than micropayment models. Which is more paletable to users, paying $0.01 per news paper article, or paying a monthly subscription? Paying $2 per song or paying $10 per month to stream?
The instantinous fee prices on Ethereum generate high volatility and unpredictable experiences. The monthly rental of defined bandwidth provides significantly lower price volatility and more predictable user experience.
Fee based models also increase accounting costs and enable lower-cost short-term denial of service by pushing prices high. It is much more expensive raise 30-day rental prices than it is to raise Ethereum GAS prices for 24 hours.
We believe that this proposal will lower the cost of using the EOS network and decouple cost of CPU and NET use from capital appriciation/loss of EOS. It will make EOS usable by people who do not want to have high exposure to EOS price volatility and it will create incentives to participate in the governance of the EOS network.
Not adopting a resource rental model will likely limit use of EOS to those who are also willing to speculate on EOS price.