The Cost of Account Creation on EOS Has Been Reduced by 25%
Background
In Daniel Larimer’s post, “A Three-Step Plan For Lowering EOS Account Creation Costs” he outlined the following.
Step 2 — Lower Account Memory Usage
The default EOS blockchain hard-codes a RAM usage of 3 KB per account where 1.5 KB is currently reserved for future expansion. This was an overly conservative estimate. Upon closer auditing of actual RAM usage per account, we have concluded that only 512 bytes are required for each new account. Block.one will provide an update to the system contract that will create 1.5 KB of RAM per account and retroactively offset the overly conservative usage estimate.
This is supported by the GitHub issue here.
EOSIO v1.2.1
On Sep-06–2018 at 13:36:41 UTC, EOS New York approved EOSIO contract update v1.2.1 along with 14 other Block Producers.
Part of this update reduced the cost of account creation on EOS by 25% by making a hard-coded change to how each account calculated the total amount of RAM it had available and added 1400 bytes to all new accounts. This reduces the recommended minimum amount of KiB one should purchase for a new account from 4 to 3. Furthermore, all existing accounts need only to stake, unstake, or buy RAM to free up 1400 bytes of RAM.
The Path to Adoption
EOS account creation cost is an extremely important aspect of the health of the platform. Many users of EOS decentralized applications (dApps) are early adopters, people who are eager and willing to spend the time to understand the EOS blockchain. But in the future, users will not be as eager. The users of the future will want to use the new dApp they found as quickly as possible. In fact, they may not know they’re about to interact with a blockchain at all.
For that to happen, dApp developers will need to pay for the network resources required to onboard users (or pass this cost on to users). Reducing this cost by 25% dramatically reduces the barriers to development when considering account creation at scale.
Created Accounts
If you are someone who created their account before the EOSIO v.1.2.1 update you are still eligible for the free 1400B of RAM. If you perform any of the following actions you will receive the 1.367188 KiB (1400 bytes): BUYRAM, DELEGATEBW, UNDELEGATEBW. In popular wallets, this is staking your tokens for any of the network resources.
BUYRAM
BEFORE
COMMAND
cleos system buyram bob123451234 bob123451234 1 — kbytes
AFTER
1 KiB was bought however as you can see 2.353516 KiB.
DELEGATEBW
BEFORE
COMMAND
cleos system delegatebw bob123451234 bob123451234 “1.0000 EOS” “1.0000 EOS”
AFTER
UNDELEGATEBW
BEFORE
COMMAND
cleos system undelegatebw bob123451234 bob123451234 “1.0000 EOS” “0.0000 EOS”`
AFTER
The New Cost of Account Creation
The minimum amount of RAM you should purchase for a new account is now 3KiB or $1.84 (with the free 1400B) as of Sep-06 2018. This new account will be able to hold EOS tokens and up to 8 unique dApp tokens that utilize the eos.io token contract.
Testing
Please note that these numbers are for testing purposes only. The EOS cost per KiB shown is from an internal test net and does not reflect actual costs. The ram_usage
shown does reflect actual ram usage on the EOS mainnet.
Create account with system contract 1.1.0
This shows the total amount of RAM purchased for a new account that purchases 4KiB of RAM.
cleos system newaccount eosio newacct12353 EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV — stake-net “100.0000 EOS” — stake-cpu “1000.0000 EOS” — transfer — buy-ram-kbytes 4
4KiB cost 0.0595 EOS
0.595 / 4 KiB= 0.014875 EOS/KiB
Account takes on responsibility of the EOS token once they do a transfer of their token
Actions taken:
- eosio tranfers ‘10000.0000 EOS’ to newacct12353
- newacct12353 transfers ‘1.0000 EOS’ back to eosio
RAM cost for storing tokens = 3574–3446 = 128 bytes
In 1.1.0 the min RAM requirements is 3574 bytes (since we cannot easily get that granular with the purchased RAM we will round up to 4KiB.
Create account with system contract 1.2.1
This shows the total amount of RAM purchased for a new account that purchases 3KiB of RAM.
cleos system newaccount eosio newacct12333 EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV — stake-net “100.0000 EOS” — stake-cpu “1000.0000 EOS” — transfer — buy-ram-kbytes 3