cardano course
  • Welcome!
  • Video lessons
  • Handbook
    • Module 1. Building and running the node
      • Building the node
      • Running the node and connecting to a network
    • Module 2. Basic operations
      • Creating keys and addresses
      • Creating a simple transaction
      • Registering the stake address and delegating
    • Module 3. Protocol parameters and configuration files
      • Protocol parameters
      • Byron genesis file
      • Shelley genesis file
      • Alonzo genesis file
      • Conway genesis file
      • Node configuration file
      • Topology file
    • Module 4. Peer-to-peer (P2P) networking
    • Module 5. Creating a stake pool
      • The setup
      • Generating keys
      • Registering a stake pool
      • Runtime system options
      • Running the nodes
      • Stake snapshots
      • Upgrading cardano-node and cardano-cli
      • Pool operations and maintenance
      • Retiring a stake pool
    • Module 6. Monitoring the nodes
    • Module 7. Cardano governance
      • Update proposals
      • Polls
    • Module 8. Setting up a local cluster
      • Creating a local cluster
      • Spending the genesis UTXO
      • From Byron to Shelley
      • Moving funds to a Shelley address
      • Creating a first stake pool
      • Bringing decentralization parameter down to .80
      • From Shelley to Alonzo
      • Creating a second stake pool before moving to the Babbage era
      • Redelegating genesis keys
      • Vasil hard fork
      • Creating a local cluster with the mkfiles script
    • Module 9. Simple scripts and Plutus scripts
    • Module 10. New tracing system
    • Module 11. Running the SMASH server
    • Module 12. Running the token metadata server
  • Curated playlist
Powered by GitBook
On this page

Was this helpful?

Edit on GitHub
  1. Handbook
  2. Module 5. Creating a stake pool

The setup

PreviousModule 5. Creating a stake poolNextGenerating keys

Last updated 1 year ago

Was this helpful?

This tutorial guides you through the process of creating a stake pool on the preview testnet (testnet-magic 2).

Make sure to use the appropriate genesis files from: https://book.world.dev.cardano.org/environments.html. For pre-production testnet, just replace --testnet-magic 2 with --testnet-magic 1.

For mainnet, use --mainnet

A stake pool requires several key components:

  • Cold keys: used for registering a stake pool, controlling stake pool parameters, issuing operational certificates, and retiring a stake pool

  • VRF keys: play a crucial role in the slot leader election process and contribute to the evolving nonce

  • Operational keys, also known as KES keys: used in conjunction with operational certificates to sign blocks

  • Operational certificate: facilitates the transfer of stake rights from cold keys to KES keys and is included in the block header

  • Operational certificate counter: to determine precedence, a certificate with a higher counter takes precedence over one with a lower counter

When operating a stake pool, there should be a core node responsible for block production and at least one relay node responsible for block propagation. Ideally, multiple relays are advisable to ensure continuous block broadcasting, even in the event of a relay or its connections failing. Each node should run on a separate machine.

The block-producing node holds the KES signing key, the VRF signing key, and the operational certificate. Relay nodes do not need any keys.

Additionally, an air-gapped machine is essential, especially when running a pool on mainnet. It ensures the security of cold keys and wallet keys by keeping them isolated from the internet, preventing any exposure.

The block producer must be well secured and only connect to its own relay nodes.

Relay nodes should connect to their own block producer and to 15-20 other relays on the network.

P2P ensures duplex connections, whereas employing a classic topology demands that other relays include your relays in their topology. This may necessitate agreements with other stake pool operators.