Skip to content

Instantly share code, notes, and snippets.

@blockpane
Last active March 12, 2020 15:36
Show Gist options
  • Save blockpane/c7b70aff1a01c9432681acd34b7315f3 to your computer and use it in GitHub Desktop.
Save blockpane/c7b70aff1a01c9432681acd34b7315f3 to your computer and use it in GitHub Desktop.

BP Setup Notes: Manual registration

Once your node is connected, how do you register to be a FIO testnet producer?

If there isn't a local node available, use the testnet RPC-API node, setup an "alias" pointing at a live server:

$ alias clio="clio -u https://testnet.fioprotocol.io"

Create two keys:

Save them somewhere safe:

# BP, owns domain, gets BP Rewards:

$ clio create key --to-console
Private key: 5JRmxxxxxxxx_Producer_Key_xxxxxxxxxxxxxxxxxxxxxxxxxxxx
Public key: FIO6xxxxxxxxx_Producer_Pub_Keyxxxxxxxxxxxxxxxxxxxxxxxxxx
FIO Public Address (actor name): aaa.bp.aa

# Block Signing Key, only used to sign blocks:

$ clio create key --to-console
Private key: 5Kczzzzzzzzz_Signing_Key_zzzzzzzzzzzzzzzzzzzzzzzzz
Public key: FIO8zzzzzzzzz_Signing_Pub_Key_zzzzzzzzzzzzzzzzzzzzzz
FIO Public Address (actor name): bbb.sign.bb

Import the owner into the local keosd wallet, we never send transactions using the block signing key, so it is not imported:

Don't import this on the BP node!

$ clio wallet import --private-key 5JRmxxxxxxxx_Producer_Key_xxxxxxxxxxxxxxxxxxxxxxxxxxxx

Get Funds

Use the testnet monitor faucet to fund the owner: http://monitor.testnet.fioprotocol.io/#faucet

Register a domain:

This currently costs 800 FIO, don't forget to fund via the faucet.

$ clio push action fio.address regdomain '
{
    "fio_domain":"yourdomain",
    "owner_fio_public_key":"FIO6xxxxxxxxx_Producer_Pub_Keyxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "max_fee":"800000000000",
    "actor":"aaa.bp.aa",
    "tpid":""
}
' -p aaa.bp.aa

Create Addresses:

This currently costs 40 FIO per address. It's not necessary to register a name for the signer, and is optional.

$ clio push action fio.address regaddress '
  {
    "fio_address":"bp@yourdomain",
    "owner_fio_public_key":"FIO6_xxxxxxxx_Producer_Pub_Keyxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "max_fee":"40000000000",
    "actor":"aaa.bp.aa",
    "tpid":""
  }' --permission aaa.bp.aa

$ clio push action fio.address regaddress '
  {
    "fio_address":"blocksign1@yourdomain",
    "owner_fio_public_key":"FIO8_zzzzzzzz_Signing_Pub_Key_zzzzzzzzzzzzzzzzzzzzzz",
    "max_fee":"40000000000",
    "actor":"aaa.bp.aa",
    "tpid":""
  }' --permission aaa.bp.aa

Configure BP Node:

In the config.ini file used by nodeos, add the following:

NOTE: this uses the BP's account as actor, but instead of the BP's pub/priv key, it uses the Signer's public and private key:

plugin = eosio::producer_plugin
plugin = eosio::producer_api_plugin
producer-name = aaa.bp.aa
signature-provider = FIO8zzzzzzzzz_Signing_Pub_Key_zzzzzzzzzzzzzzzzzzzzzz=KEY:5Kczzzzzzzzz_Signing_Key_zzzzzzzzzzzzzzzzzzzzzzzzz

The nodeos daemon will need to be restarted to pick up the changes.

Register the producer:

Best practice is that the account used in the nodeos config.ini is only used for signing blocks, and payouts, etc go to the BP account.

This costs 200 FIO

Note: Again, the BP's fio_address, and actor, but Signers's fio_pub_key

$ clio push action eosio regproducer '
  {
    "fio_address":"bp@yourdomain",
    "fio_pub_key":"FIO8zzzzzzzzz_Signing_Pub_Key_zzzzzzzzzzzzzzzzzzzzzz",
    "url":"https://yourdomain.net",
    "location":10,
    "actor":"aaa.bp.aa",
    "max_fee":"200000000000"
}
' -p aaa.bp.aa

Vote for yourself:

You have coins, may as well get on the board!

$ clio push action eosio voteproducer '
{
  "producers": ["bp@yourdomain"],
  "fio_address":"bp@yourdomain",
  "actor":"aaa.bp.aa",
  "max_fee":"40000000000"
}' -p aaa.bp.aa

Check that it's correctly registered

$ clio system listproducers |grep yourdomain

aaa.bp.aa  FIO8zzzzzzzzz_Signing_Pub_Key_zzzzzzzzzzzzzzzzzzzzzz     https://yourdomain.net                                       0.0000

If there is a mistake and the info needs to be updated, it is required to un-register before regproducer can be called again.

Register on the testnet monitor:

Visit http://monitor.testnet.fioprotocol.io/#register and fill in the relevant information. If you don't provide an API endpoint, your node will show as offline. So be sure to offer a public endpoint :)

Congrats on getting registered, and welcome to the FIO network!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment