Registering a stake pool on the blockchain

An account needs to have a stake pool registration certificate before it can participate in stake delegation between stake pools. This cryptographically-signed certificate contains details such as pool owner information, the hash of the pool operator’s verification key and VRF key, pledge details, the associated reward account, pool relay nodes, and the hash of the pool metadata.

The registration certificate transfers staking rights from one staking key to another. The certificate contains the staking-key of the pool leader and is sent to the blockchain to register the stake pool with the other participants of the blockchain.

To make sure that you can delegate your stake to one or more pools, you need to register your stake key in the blockchain using the CLI:

--staking-verification-key-file stake.vkey \
--out-file stake.cert

Once the certificate has been created, you must include it in a transaction to post it to the blockchain. First, you need to calculate the fees needed for this transaction. The transaction will have to be signed by both the payment signing key (corresponding to the UTXO used to pay the fees), and by the stake signing key, as illustrated in this example:

--tx-in-count 1 \
--tx-out-count 1 \
--ttl 200000 \
--testnet-<name> \
--signing-key-file payment.skey \
--signing-key-file stake.skey \
--certificate-file stake.cert \
--protocol-params-file protocol.json
> 171485

In addition to paying fees for this transaction, you also need to include a deposit. This deposit is refundable and you will get it back when you deregister the key. The deposit amount can be found in the protocol.json under key keyDeposit:

"keyDeposit": 400000,

Next, you need to create the raw transaction, for example:

cardano-cli shelley transaction build-raw \
--tx-in <the utxo used for paying fees and deposit> \
--tx-out $(cat payment.addr)+999428515 \
--ttl 200000 \
--fee 171485 \
--out-file tx.raw \
--certificate-file stake.cert

Finally, you sign and submit the transaction to complete the process.

How to create a registration certificate:

You can create a registration certificate, as follows:

cardano-cli shelley stake-pool registration-certificate \
--stake-pool-verification-key-file node.vkey \
--vrf-verification-key-file vrf.vkey \
--pool-pledge 100000000000 \
--pool-cost 10000000000 \
--pool-margin 0.01 \
--reward-account-verification-key-file staking.vkey \
--pool-owner-staking-verification-key staking.vkey \
--out-file pool.cert

Where the pledge to the pool is 100000000000 lovelace, and the cost of operating the pool is set to 100000000000 lovelace.

A delegation certificate is published on the blockchain, therefore transaction fees apply. When you are creating a stake pool, you need to generate a registration certificate and embed it in a special transaction that creates the stake pool.

Once the certificate is registered on the blockchain a node ID is assigned to the stake pool.

© IOHK 2015 - 2021

Cardano is an open-source project.

Cardano is a software platform ONLY and does not conduct any independent diligence on, or substantive review of, any blockchain asset, digital currency, cryptocurrency or associated funds. You are fully and solely responsible for evaluating your investments, for determining whether you will exchange blockchain assets based on your own judgement, and for all your decisions as to whether to exchange blockchain assets with Cardano. In many cases, blockchain assets you exchange on the basis of your research may not increase in value, and may decrease in value. Similarly, blockchain assets you exchange on the basis of your research may fall or rise in value after your exchange.

Past performance is not indicative of future results. Any investment in blockchain assets involves the risk of loss of part or all of your investment. The value of the blockchain assets you exchange is subject to market and other investment risks