Generating Cardano Block producer keys

Let's create our pool keys

With SPOS scripts this task is a super easy task:

04a_genNodeKeys.sh myPool cli
04b_genVRFKeys.sh myPool cli 
04c_genKESKeys.sh myPool cli
04d_genNodeOpCert.sh myPool

# let's see generated files
ls -al myPool*

Now you have generated your pool keys!

StakePool certificate generation

05a_genStakepoolCert.sh myPool

This command will generate a template that you have to fill in so we can generate a valid pool certificate

nano myPool.pool.json 

I'm creating a single owner pool with the following configuration:

  • Pools Pledge: 1mil ADA (will be held in poolOwner address)

  • Fixed Fee: 340 ADA (This is currently the minimum you can set)

  • Pools Margin: 5%

  • 2 IP relays: 89.191.111.111 and 89.191.111.112, both will run on port 3001

  • Pool's TICKER: XPOOL

  • short and long descriptions: "My Testnet Pool #2", "This pool is used for the guide i created",

  • main metadata file will be stored at the following url: https://www.stakepool247.eu/xpool-testnet.metadata.json

  • extended metadata (used by adapools, pooltool, and other services): https://www.stakepool247.eu/xpool-testnet.extended.json

Let's run again the same command

05a_genStakepoolCert.sh myPool

as we previously didn't have an extended metadata file, the script created a template, which we will edit and re-run the command once again.

05a_genStakepoolCert.sh myPool

edit it so it corresponds to your needs, this file is just for additional information.

when you have edited it, let's run the same command again:

nano myPool.additional-metadata.json 

you will get 2 reminders to upload the 2 generated metadata files (myPool.extended-metadata.jsonmyPool.metadata.json) to your webserver. This is mandatory for your pool to be visible on Daedalus and other wallets:

so, let's rename them as we defined them in our config files a

cp myPool.metadata.json xpool-testnet.metadata.json
cp myPool.extended-metadata.json xpool-testnet.extended.json

and upload to a webserver (either by ftp/sftp or any other means), when it's done, let's proceed.

Let's create a delegation certificate where we will delegate to our own pool

05b_genDelegationCert.sh myPool poolOwner

this will generate the poolOwner.deleg.cert before proceeding let's honor our pledge and send the pledged amount to poolOwner.paymet address, you can find the address where you have to send your funds in the poolOwner.payment.addr file

cat poolOwner.payment.addr 

send your pledge to that address and check in few seconds if it has arrived:

01_queryAddress.sh poolOwner.payment

Great, fund arrived - let's move forward.

As the final task - let's register the stake pool on the blockchain (fees paid by the myWallet)

05c_regStakepoolCert.sh myPool myWallet

So, if you did everything correctly in few minutes (sometimes hours) you will have your freshlly registred pool on Daedalus: