This article was originally authored by Ryan Bethem, COO of Chintai. You can contact him at firstname.lastname@example.org
Anyone who has used EOS recently has noticed problems. Transactions not executing. Favorite DApps not working. What was normally more than enough EOS to freely transact without concern has suddenly become far too little. What is going on? What is being done to fix the problem? And is there anything you can do right now to help alleviate the issue?
First, let’s cover the basics of EOS network resources — CPU, NET and RAM.
NOTE: If you would like to skip directly to solutions please scroll to the bottom of this article.
EOS Network Resources
Think of network resources like bodily functions. Each resource plays a crucial role for maintaining and sending information in the EOS “neural” network. Similar to a depleted body, problems occur if resources in an account are too low. Transactions fail. Only after resources have recovered or replenish will normal functioning be restored.
RAM is like memory
Similar to the brain, everything that needs to be saved is stored in RAM. For example, when a smart contract is uploaded on the blockchain, it’s stored in RAM. Without memory you cannot store information. RAM is measured in bytes.
CPU is like energy
Similar to how the body needs energy to make movements, transactions on EOS require CPU. Without CPU you cannot transact information. CPU is measured in microseconds, or the amount of time a Block Producer spends processing a transaction.
NET is like a neural signal
Neural signals for specific bodily movements are always the same. For example, the same neural pathways fire every time you lift your left index finger. Similarly, every action taken on EOS has its own unique “signal”. NET is measured in bytes.
To access and use CPU/NET you must own and stake EOS tokens. Staking EOS tokens essentially means locking them in your account. The amount of tokens staked to your account reserves network resources pro-rata. If you have 1% of EOS tokens you can access 1% of network resources.
Under normal conditions users can utilize excess or unused CPU/NET, allowing access of resources beyond the amount reserved by a users staked tokens. However, if the network is in congestion mode users cannot access unused CPU. Instead they are limited to the CPU available from their staked tokens, or from leasing.
EOS blocks are produced every 500 milliseconds. Block Producers must process and validate blocks every 200 milliseconds to account for latency between distributed nodes around the world. This leaves enough time for transactions to be broadcast across the network.
Within each 200 millisecond window a threshold exists at which “rate limiting” begins. The threshold is exceeded at times of very high usage of normally unused network resources.
When rate limiting begins users can no longer access unused network wide CPU. The network is now in “congestion mode”.
Because users can no longer access unused resources they are limited to the amount reserved by the tokens they own. This can cause unexpected “surges” of CPU usage, often times exceeding 100%. Once an account has reached 100% or more usage of CPU/NET you must wait for the resources to naturally replenish as the network recovers, use charitable services offering small amounts of free CPU, delegate CPU/NET from an account that has spare CPU/NET, use Chintai to rent and delegate CPU/NET with an alternative account, or buy more tokens.
EOSPlay was hacked in mid-September 2019. The hack was predicated by pushing the network into congestion mode. Following the hack an independent developer known as “Dexeran” began running real time “tests” that are designed to intentionally congest the network every 30 minutes. He has reported his findings and is cooperating with the EOS community to enable solutions.
Dexeran has automated repeat “tests” every 30 minutes. This has caused frustration for users and DApps who were unprepared and normally reliant on excess CPU. When challenged about the ethical implications of the tests in the Chintai telegram channel, Dexeran replied,
I’m just using the network. Anyone could do the same by simply writing a contract that will consume resources… everyone should have been prepared. Chintai (or any other automated resource delivery service if it exists) could solve the problem. We need to make BPs prepared for acting immediately in case of a REAL problem.
The ethics of Dexeran’s “tests” are debatable. However, it’s clear that the EOS community needs to transition to solutions that preempt issues caused by network congestion. Until solutions are in place we can expect congestion episodes to continue, either by Dexeran, organic usage, or malicious actors.
Block.one published an article proposing that EOS remove the ability to use “free” CPU, grey list accounts and rely on DApps to pay for their users CPU. Removing the ability to access free CPU will push the EOS community to migrate off the expectation of using free CPU and strongly incentivize DApps to pay for their users resources to remain competitive.
Long term DApps will need to obfuscate resource management if we expect them to be used by “grandma”. But it’s debatable whether or not removing access to “free” CPU is the best approach to achieve the intended goal. Regardless, automating blockchain resources is the future whether access to “free” CPU is available or not.
There are two automation mechanisms for resource management. Chintai and EOSIO 1.8. The EOSIO 1.8 payer is designed for DApps to pay for their users CPU/NET. Chintai Automated Resource Management (ARM) also enables DApps to pay for their user CPU/NET and has these additional features:
– DApps can automate CPU, NET, and RAM for their contract accounts
– Casual users can easily automate their own resources (CPU, NET, RAM)
Chintai automatically buys small amounts of CPU/NET from REX as needed. Users and DApps can also elect to automate purchasing of RAM if needed. No more running out of resources. No more having to manually track resources.
Chintai — Lease Everything
Disclaimer. EOSwriter does not endorse any content or product on this page. While we aim at providing you with all the important information we could obtain, readers should do their own research before taking any actions related to the company and carry full responsibility for their decisions, nor this article can be considered as an investment advice.