EOS Block Producer Guide — Updated Oct. 16, 2018

Ben Sigman
Jun 1, 2018 · 4 min read

This guide has been updated. In addition, I wrote another 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 EOS-MAINNET 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 — JungleTestnet and CryptoKylin.

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.

Image for post
Image for post

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 shEOS the bp.json is located at https://sheos.org/bp.json, the URL to locate this will be https://sheos.org.


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

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch

Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore

Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store