This guide has been updated. In addition, I wrote another post on becoming a Block Producer.
First check out this EOS Block Producer Ghostbusters Security guide for your infrastructure setup. REMINDER — please do not run nodeos as “root” under any circumstances.
Please also read this security advice from EOS Tribe is located here — Note to BPs — How not to get hacked!
Please note, your EOS source should be based off of the EOS-MAINNET Github.
Practice Running your Node
Block Producer Node Configuration
Please read the above links on security. I went ahead and drafted a config.ini you can use, but I strongly recommend against using this in production. This config has everything running from a single server. It’s not recommended to expose the API on your producer node. In your producer node, you only need to run the chain and producer plugins, but I recommend adding the LiquidEOS Heartbeat plugin.
Ideally, you want to keep your producer node IP secret. Most Block Producers have several seed nodes that hide their producer node. The producer only peers with the seed node.
Explanation of EOS Permissions
This is very important to understand because the future of your Block Producer depends on being able to manage your keys successfully.
Producer Key — This is the key for signing blocks and identifying your Block Producer. This key cannot sign transactions on EOS, it can only sign blocks. Therefore it cannot transfer or claim EOS.
Owner Permission — this is the superuser key for your Block Producer. Do not store on any computer, put the private key somewhere safe. You can use this key to change your Active Key at any time. Additionally, in the case that your active key is stolen, you may be able to recover funds through arbitration by proving the Owner Key. Best practice is to set this as a multisig permission.
Active Permission — this is the controlling key for your Block Producer — you will use this key to claim block rewards.
EOS Block Producer Registration Commands
Create EOS wallet
cleos wallet create -n walletname
Record the password and keep secure.
Unlock EOS Wallet
cleos wallet unlock
Paste your wallet password
Load Generated EOS Account Private Key Into Your Wallet
cleos wallet import <privkey>
Create New Account From Your Generated Account
To find your automatically created account visit https://eosauthority.com and paste in your ETH public key, this will return your EOS public key and your created account name. This new account name should be 12 lowercase alphanumeric first char is a-z, then 1 to 11 more chars that are a-z or 1–5.
cleos system newaccount — stake-net "4.0000 EOS" — stake-cpu "4.0000 EOS" — buy-ram-kbytes 8 accountname newaccountname <owner-publickey> <active-publickey>
Load new account private key into your wallet.
cleos wallet import -n walletname <privkey>
Create a bp.json For Your Block Producer
This will be used by voting portals and websites to identify producers. The bp.json contains location info for your Block Producer, nodes, and also contains other identifiable information such as your Block Producer public key.
Example of EOS Block Producer bp_info.json
For instance, for shEOS the bp.json is located at https://sheos.org/bp.json, the URL to locate this will be https://sheos.org.
- Template for the standard bp_info.json format for the EOS Mainnet.
- You can find most BPs bp.json at their websites.
- Please conform to the JSON format standard.
- Here is an excellent JSON validator.
Your bp.json must contain your logo, links to your website, your p2p and api servers, a code of conduct, and an ownership disclosure. Failure to provide some of these items could result in arbitration being against you by other BPs.
- Register as an EOS Block Producer (regproducer)
This account name should be 12 lowercase alphanumeric first char is a-z, then 1 to 11 more chars that are a-z or 1–5 and it should match the new account you created above.
cleos -u https://proxy.eosnode.tools system regproducer accountname <producer-publickey> “https://<domain.com>/” -p accountname
Finally, Verify You Are A Registered Producer
cleos system listproducers
The output should show your producer in the list with the number of votes:
Producer Producer key Url Scaled votes
eos42freedom XXXXXXXXXXXXXXXXXXX https://keybase.pub/ankh2054/ 14.4242
Now you can start collecting votes and you should appear automagically in voting portals based on your json.
Please comment with questions, corrections, or requests for additional info below.
Written in collaboration with Charles Holzkampf with EOS42.
Additional Tools for Block Producers: http://bit.ly/eosbptools