Keen observers will have noticed that on the EOS blockchain there are system accounts that control various functions. These are all denominated by the prefix eosio.*. At EOS Canada, we felt it would be useful to provide an overview of which system accounts exist, and what they each control.
What Are eosio System Accounts?
At the genesis of an EOSIO blockchain, only one account exists, eosio. The eosio account contains the eosio.system contract, which provides the basic transactional capabilities of the chain. System accounts are accounts that are created by eosio, other than the genesis accounts created from the snapshot of ERC-20 token distribution list. The system accounts each control specific actions within the eosio.system contract and other system-level contracts.
What Are the Names and Functions of the eosio System Accounts?
eosio | privileged - the original account on an EOSIO blockchain. It holds the eosio.system contract and associated data tables |
eosio.bpay | this is where Block Producer rewards for produced blocks come from. It allots 0.25% of inflation based on the amount of blocks a Block Producer creates |
eosio.msig | privileged - the account that facilitates asynchronous review and signing of a multisig proposal on-chain for eventual execution |
eosio.names | used for holding funds from namespace auctions. Awarded namespaces are considered as fees and held by the account, while the remainder is returned once outbid |
eosio.prods | an account with a dynamic permission structure based on the current schedule of Block Producers. It does not hold any contract |
eosio.ram | this account holds all EOS funds collected when a user purchases RAM, and also returns the sale price to a user when they release RAM |
eosio.ramfee | the fees collected from RAM trading. 0.5% of the value of each trade goes into this account |
eosio.saving | where the 4% of network inflation goes |
eosio.stake | this account holds all EOS that have been staked for either CPU or Network bandwidth |
eosio.token | the account with the smart contract that drives the main EOS token issuance, transfers, etc) |
eosio.unregd | a contract on-chain that stores the Ethereum account information and token balances of all unregistered users to allow them to claim those tokens |
eosio.vpay | this is where Block Producer rewards for Votes come from. It allots 0.75% of inflation based on a Block Producer’s portion of votes |
eosio.wrap | privileged - for use by Block Producers in extreme circumstances to execute transactions on behalf of another account |
Who Controls the eosio System Accounts?
If you were to query the blockchain for any of the system accounts, you’ll notice that both the owner and active permissions of each system account are controlled by the named permission eosio@active (this notation signifies the active permission of the eosio account). When you query the eosio account, you will find that its owner and active permissions are delegated to a separate account’s active permission, eosio.prods@active. eosio.prods - often referred to just as “prods” - is a dynamic list of the current 21 Block Producers. This is what gives special authority to a quorum of at least 15 of the Top 21.
What Is a Privileged Account?
Privileged accounts are accounts which can execute a transaction while skipping the standard authorization check. To ensure that this is not a security hole, the permission authority over these accounts is granted to eosio.prods.
New system accounts can be proposed and created at any time. As of now, the list above is complete.
EOS Canada hopes this helps to broaden your understanding of the underlying structure of the EOS blockchain. If you have any questions or comments, please come drop by our Telegram channel and let us know!