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"
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
Use the testnet monitor faucet to fund the owner: http://monitor.testnet.fioprotocol.io/#faucet
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
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
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.
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
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
$ 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.
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!