There are multiple components to be aware of when running a stake pool:
NodeId: it is the identifier within the blockchain protocol (wallet will delegate to your stake pool via this
- your VRF key pairs: this is the cryptographic material we will use to participate to the leader election;
- your [KES] key pairs: this is the cryptographic material we will use to sign the block with.
So in order to start your stake pool you will need to generate these objects.
$ jcli key generate --type=Curve25519_2HashDH > stake_pool_vrf.prv
stake_pool_vrf.prv file now contains the VRF private key.
$ cat stake_pool_vrf.prv | jcli key to-public > stake_pool_vrf.pub
Similar to above:
$ jcli key generate --type=SumEd25519_12 > stake_pool_kes.prv
stake_pool_kes.prv now contains your KES private key
$ cat stake_pool_kes.prv | jcli key to-public > stake_pool_kes.pub
The certificate is what will be sent to the blockchain in order to register yourself to the other participants of the blockchain that you are a stake pool too.
$ jcli certificate new stake-pool-registration \ --kes-key $(cat stake_pool_kes.pub) \ --vrf-key $(cat stake_pool_vrf.pub) \ --serial 1010101010 > stake_pool.cert
Now you need to sign this certificate with the owner key:
$ cat stake_pool.cert | jcli certificate sign stake_key.prv | tee stake_pool.cert cert1qsqqqqqqqqqqqqqqqqqqq0p5avfqp9tzusr26...cegxaz
And now you can retrieve your stake pool id (
$ cat stake_pool.cert | jcli certificate get-stake-pool-id | tee stake_pool.id ea830e5d9647af89a5e9a4d4089e6e855891a533316adf4a42b7bf1372389b74