This guide has been updated and can be used for setting up a block producer any EOSIO chain — PROTON, WAX, TELOS, BOS. EUROPECHAIN, COFFE, REMME, or FIO… Each chain will have varying ways of onboarding BPs, so please reach out to the admins on the relevant Telegram channels or websites.
Recommend reading my post on becoming a Block Producer.
Security First
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!
Here is JemXPat’s guide to EOS Core infrastructure.
Please note, your EOS source should be based off of the EOSIO Github.
Practice Running your Node
It’s good to practice running your node — try it out on a testnet. There are 2 really great ones — Jungle Testnet or CryptoKylin Testnet.
Block Producer Hardware
I have been updating this gist with some helpful information gathered from discussing hardware recommendations with other BPs.
Block Producer Node Configuration
Please read the above links on security. I drafted an example 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.
For instance http://<yourwebsite.com>/bp.json When you register your producer the url field should be filled with http://<yourwebsite.com>. Do not put the bp_info.json file in the url.
Example of EOS Block Producer bp_info.json
For instance, for EOS Sweden the bp.json is located at https://eossweden.org/bp.json, the URL to locate this will be https://eossweden.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.
Compliance
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 against you from 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