How to Build a Cardano Stake Pool
A Cardano stake pool is not simply a server with a wallet attached. It is a small, always-on network operation that must protect cryptographic keys, stay synchronized with the blockchain, propagate blocks quickly and remain maintained for years. This guide explains the complete process in plain language, while still going deep enough to help a serious operator plan a production deployment.
Start with the right expectation
Registering a pool does not create a passive-income machine. The registration only makes your pool eligible to participate. Whether it receives block opportunities depends mainly on active stake, while the rewards you actually keep depend on whether your infrastructure is online and healthy when the protocol selects your pool.
That distinction matters. A pool with little stake can be technically perfect and still wait many epochs for a block. A larger pool can be selected more often, but poor connectivity, an expired KES certificate, a full disk or a failed process can cause it to miss those opportunities. Successful pool operation therefore combines infrastructure engineering, key security, monitoring, economics and community work.
What a Cardano stake pool actually does
Understanding the job makes every technical decision easier.
A Cardano stake pool maintains a full copy of the blockchain, participates in the peer-to-peer network and produces blocks when selected by the Ouroboros protocol. Delegators keep control of their ADA; they do not send funds to the pool operator. They delegate the staking power of their wallet to the pool, and the protocol uses the pool's active stake when assigning block opportunities.
The operator's job is to keep the pool ready. The node must be synchronized, the block producer must be able to sign blocks, the relays must communicate efficiently with the wider network, and the operational certificate must still be valid. You are also responsible for upgrades, monitoring, incident response, metadata, fee settings, pledge and communication with delegators.
What the pool does not do
- It does not take custody of a delegator's ADA.
- It does not choose when it will mint a block.
- It does not guarantee a fixed return.
- It cannot compensate for insufficient active stake by simply using a faster server.
What determines practical success
Use a production architecture, not a single public server
The block producer should not be directly exposed to the wider Cardano network.
A minimal production design uses one block producer, at least two relays and a separate air-gapped machine. The relays speak to other Cardano nodes. The block producer speaks only to its own trusted relays. The offline machine stores and uses the most sensitive keys without ever joining a network.
Why at least two relays?
If one relay is offline during maintenance or an incident, the second relay can keep the producer connected. Hosting relays in different providers or regions reduces the chance that one network failure takes down the entire pool. A second relay also lets you perform rolling upgrades instead of disconnecting every path at once.
Optional nodes that become valuable later
A backup producer can shorten recovery time during a failure, but it must never forge simultaneously with the active producer using conflicting operational state. A dedicated monitoring node can collect metrics without adding work to the producer. Larger operations may also separate databases, tracing and public APIs from forging infrastructure.
Hardware, server and network requirements
Plan for future chain growth and operational headroom, not only today's minimum.
The official Cardano operator handbook recommends production Linux servers, at least two CPU cores, substantial memory, fast storage and reliable broadband. The exact requirement depends on the database backend and node version, so the release documentation should always be checked before ordering hardware.
| Resource | Practical production target | Why it matters |
|---|---|---|
| Servers | 1 block producer + at least 2 relays | Separates forging from public traffic and removes a single relay failure point. |
| CPU | Modern x86_64 CPU, 2+ cores, 2 GHz or faster | Ledger validation, networking and replay can create sustained CPU load. |
| Memory | 24 GB for the InMemory backend; lower-memory backends may reduce this | Insufficient memory can cause swapping, instability and missed slots. |
| Storage | 300 GB minimum; 500 GB or more is safer for growth | The chain database grows continuously and upgrades may require temporary extra space. |
| Network | Stable broadband, public IPv4 for relays and generous transfer allowance | Relays continuously exchange blocks, headers and transactions. |
| Operating system | Supported 64-bit Linux distribution | Production documentation, service management and security tooling are Linux-focused. |
Choose storage carefully
Fast local NVMe storage is usually preferable to slow network-attached disks. The database performs many reads and writes, and the chain keeps growing. Do not provision a server with only a few gigabytes of free space after the initial synchronization. Monitoring should warn well before the disk becomes full.
Home server or cloud server?
A home server gives you physical control but depends on local power, internet stability, router configuration and physical security. A cloud server offers easier redundancy and public networking but introduces provider risk and monthly cost. Many operators use cloud relays and a separately hosted producer. The important point is to avoid putting every component in one failure domain.
Plan the pool before touching the command line
Identity, DNS, economics and operating policy should be decided before registration.
Pool identity
Choose a clear pool name, a unique ticker, a domain you control and a public website. The current metadata format allows a ticker of 3 to 9 uppercase letters or numbers, a description of up to 255 characters and a homepage URL. Your metadata URL must be public, use HTTPS, stay within the registration limit and return the exact file without redirecting or changing its bytes.
DNS and relay names
Use names such as relay1.example.com and relay2.example.com instead of registering changing IP addresses whenever possible. DNS makes future migrations easier. Current cardano-node versions also support multi-host relay registration through DNS SRV records, but the simpler A/AAAA record model is easier for a first pool to understand and troubleshoot.
Pledge, fixed cost and margin
Pledge is ADA controlled by the owner and committed to the pool. It should remain delegated as declared. Fixed cost is deducted from epoch rewards before margin when the pool earns enough rewards; the current mainnet minimum is 170 ADA. Margin is the operator's percentage of the remaining rewards. A low fee can help marketing, but it must still support long-term infrastructure and maintenance.
Install cardano-node and cardano-cli
Use the same tested version across the producer and relays.
The official handbook currently documents cardano-node 11.0.1, but the latest stable release can change. Check the official release page before installing and read the release notes for required libraries, database migrations and configuration changes.
Choose an installation method
- Official release binaries: fastest to install and suitable when you trust the release pipeline.
- Nix build: reproducible and recommended for operators who want to verify the build more closely.
- Source build with GHC and Cabal: flexible but more complex because the exact compiler and cryptographic-library versions must match the release.
- Container image: operationally convenient, but key mounts and container security require extra care.
A simple release-binary workflow looks like this. Replace the version after checking the current official release:
VERSION="11.0.1" cardano-node --version cardano-cli --version # Use the official release artifact for your CPU architecture. # Verify the source, checksum or signature before installing.
Create a dedicated service account
Run the node under a non-root Linux user with access only to its own configuration, database, socket and hot-key files. Use systemd to start it after reboot, restart it after a failure and capture logs. Do not run the producer from an interactive terminal as your normal production method.
Keep configuration separate from data
Use predictable directories for binaries, configuration, topology, database, sockets, logs and credentials. This makes upgrades and backups easier. The producer and relays can use similar software, but they should have different topology and credential settings.
Configure the relays and block producer
The same binary becomes a relay or producer according to topology and credentials.
Relay configuration
A relay listens on its Cardano port, connects to the wider network and accepts the producer as a trusted local peer. Its firewall should expose the Cardano port only as required, along with tightly controlled SSH access. It does not need the cold key, KES key, VRF signing key or operational certificate.
Block producer configuration
The producer should list only your own relays as local roots. Public roots and ledger peer discovery should be disabled for the producer. The producer's Cardano port should not be publicly reachable; allow connections only from your relay addresses. Once the pool is registered, the producer starts with the VRF signing key, KES signing key and operational certificate.
Synchronization
Start the relays first and let them synchronize. Then start the producer through those relays. A new node can obtain the database by normal chain synchronization or by using a trusted current snapshot mechanism such as Mithril, followed by normal verification and catch-up. Do not enable forging until the node is fully synchronized and the keys are ready.
# Typical checks after the service starts cardano-cli query tip systemctl status cardano-node journalctl -u cardano-node --since "15 minutes ago" # The reported sync progress should reach 100%, # and the tip should continue advancing.
Test connectivity from both directions
Confirm that each relay sees the producer and that the producer sees every trusted relay. Confirm that public peers can reach each relay's registered port. Also verify DNS resolution, system time, firewall rules and whether the cloud provider has a second firewall layer outside the operating system.
Understand the keys before generating them
The key name is less important than what control that key grants.
| File or key | Purpose | Where it should live |
|---|---|---|
| payment.skey | Signs transactions spending ADA from the payment address. | Offline only; never on the node server. |
| stake.skey | Controls stake registration, delegation and reward withdrawals. | Offline only. |
| cold.skey | Controls pool registration updates, retirement and operational-certificate creation. | Air-gapped encrypted storage only. |
| cold.counter | Tracks the operational-certificate issue counter. | Backed up with the cold key and always kept current. |
| vrf.skey | Proves whether the pool is selected for a slot. | Block producer; sensitive hot key. |
| kes.skey | Signs blocks during a limited KES period. | Block producer; sensitive hot key and regularly rotated. |
| node.cert | Connects the KES key to the pool cold key for a defined period. | Block producer; replace during KES rotation. |
Cold keys and hot keys are intentionally different
The VRF and KES signing keys have to exist on the producer because the node needs them while running. The cold key does not. It authorizes long-term pool control and should remain offline. KES limits the damage window of a compromised operational signing key because it expires and must be renewed.
Build a real air-gapped signing workflow
Offline means the machine does not connect to Wi-Fi, Ethernet, Bluetooth or the internet.
The safest operational pattern is simple: build an unsigned transaction online, inspect and sign it offline, then submit the signed transaction online. Only public keys, addresses, protocol data and transaction files cross the boundary. Private keys remain on encrypted offline storage.
Use dedicated transfer media
Use a dedicated USB drive for transaction files and public data. Do not use that drive to store private keys. Keep the offline machine encrypted, physically secured and backed up. Disable or remove networking hardware when possible rather than relying only on a software setting.
Back up before you register
Create multiple encrypted offline backups of the cold key, cold counter, payment key, stake key and recovery information. Store copies in separate physical locations. Test that the backup can be read, but do not expose it to an internet-connected computer.
Create and fund the operator wallet
The payment address pays deposits and fees; the stake address becomes owner and reward identity.
Generate the payment and stake key pairs on the air-gapped machine. Use their verification keys to create the payment and stake addresses for the correct network. Fund the payment address with enough ADA for the stake-address deposit, the 500 ADA pool-registration deposit, transaction fees and a safety margin.
Register the stake address first
The pool reward account and owner delegation use the stake credential. Before the pool can be registered, the stake address must be registered on-chain. The current stake-address deposit is 2 ADA and is returned when the stake credential is deregistered under the protocol rules.
Keep the owner wallet separate from daily server access
The producer does not need your payment or stake signing keys. It only needs the operational hot credentials. This separation prevents a server compromise from immediately becoming a wallet compromise.
Create and host the pool metadata
Metadata is small, but byte-for-byte accuracy matters.
The basic metadata file tells wallets and explorers the public name, description, ticker and homepage of the pool. It must be valid JSON, publicly available over HTTPS and unchanged after its hash is placed in the registration certificate.
{
"name": "Your Pool Name",
"description": "A clear description of the pool and its mission.",
"ticker": "TICK",
"homepage": "https://yourpool.example"
}
Hash before registration
Generate the metadata hash locally, upload the exact file and hash the downloaded public copy again. Both hashes must match. A line-ending change, invisible byte-order mark, automatic formatting plugin or redirect can cause a mismatch.
Keep the URL stable
Use a URL you control and expect to keep for the lifetime of the pool. If the URL or hash changes later, submit an updated registration certificate. Do not host critical metadata on a temporary file-sharing service.
Register the stake pool on-chain
Registration combines metadata, economics, owner identity, relays and pool keys.
Pool registration requires four main pieces: the hosted metadata, a pool registration certificate, an owner delegation certificate and a transaction that submits those certificates. The registration certificate identifies the cold verification key, VRF verification key, pledge, cost, margin, reward account, owner stake key, relay addresses and metadata hash.
Build the certificate offline
Fetch the current protocol parameters and public information from an online node, transfer those files to the air-gapped machine, and create the registration certificate where the cold signing key is stored. Do not copy the cold signing key onto the online node for convenience.
Create the owner delegation certificate
The owner stake credential should delegate to the new pool so the declared pledge can become part of the pool's active owner stake. If several owners are used, every owner stake key listed in the registration must be handled correctly.
Pay the registration deposit
The current pool deposit is 500 ADA. It is locked by the protocol and returned when the pool is properly retired. This is separate from pledge: pledge remains ADA in owner-controlled addresses rather than a protocol deposit.
Verify instead of assuming
After submission, query the pool ID and stake snapshot, and verify the transaction in more than one explorer. It can take an epoch boundary before every wallet and explorer displays the pool. A visible transaction alone does not prove that your producer is configured to forge.
Turn the synchronized node into a block producer
The producer becomes a forging node only when it starts with valid operational credentials.
Generate the VRF key, KES key and operational certificate using the official key-generation workflow. Place only the required hot files on the producer, restrict their ownership and permissions to the node service user, and reference them in the producer service.
Files the producer needs
- The VRF signing key.
- The current KES signing key.
- The current operational certificate.
- The node configuration, topology, database path and socket path.
Files the producer must not have
- The cold signing key.
- The payment signing key.
- The stake signing key.
- Unencrypted backup archives containing any of those keys.
Restart the producer after adding the credentials and confirm through logs and node metrics that block forging is enabled. Check the KES period, operational-certificate counter and pool ID. Do this before the pool becomes active, not on the day you expect the first block.
Monitoring is part of the pool, not an optional extra
A silent failure can cost the pool and delegators rewards.
At minimum, monitor synchronization, slot height, process liveness, peer connections, CPU, memory, disk space, KES expiry, block production, propagation time and unexpected errors. An operator should receive an alert before the database fills the disk, before KES expires and when a node stops advancing.
| Metric | Failure it can reveal | Suggested response |
|---|---|---|
| Sync progress and tip age | Node stalled or disconnected | Check peers, time synchronization, disk and logs immediately. |
| Process and service state | Node crash or failed restart | Inspect systemd and node logs before restarting blindly. |
| Disk usage | Database cannot continue writing | Alert well before 90%; increase capacity or clean safe non-database files. |
| KES expiry | Producer loses forging ability | Rotate early and verify the new certificate before expiry. |
| Peer count and propagation | Weak relay connectivity or slow block distribution | Review topology, provider network, firewall and relay geography. |
| Block metrics | Missed or failed assigned slots | Correlate leadership schedule, producer logs and propagation data. |
Useful monitoring layers
gLiveView is useful for a quick terminal view while connected through SSH. Prometheus, Grafana and Alertmanager provide historical metrics, dashboards and notifications. openBlockPerf adds an external view of network propagation. Many serious operators use more than one layer because each answers a different question.
Monitor the monitor
An alerting server on the same failed machine cannot notify you. Where possible, keep monitoring or at least external uptime checks outside the node's failure domain. Test alerts instead of assuming they work.
Rotate KES keys before they expire
Mainnet KES operational credentials are valid for roughly 90 days.
KES rotation creates a new KES key pair and a new operational certificate signed by the cold key. The process uses the current KES period and the latest cold counter. The new KES signing key and certificate are then installed on the producer.
A safe rotation sequence
- Check the current KES period and the existing certificate expiry.
- Back up and verify the latest cold counter.
- Generate the new KES verification and signing keys.
- Create the new operational certificate on the air-gapped machine.
- Move only the new KES signing key and certificate to the producer.
- Set restrictive ownership and permissions.
- Reload or restart the node and verify forging status and expiry.
- Keep the previous working files temporarily for controlled rollback, then retire them securely.
Security, backups and safe upgrades
The pool should survive both attacks and ordinary operator mistakes.
Server hardening
- Use SSH keys and disable password authentication after confirming key access.
- Restrict root login and use a named administrative account with sudo.
- Open only required ports; producer access should be limited to trusted relays and administration sources.
- Run the node as a dedicated unprivileged user.
- Keep the operating system patched and remove unused services.
- Use intrusion throttling or banning for repeated authentication failures.
- Synchronize time reliably and monitor NTP status.
What to back up
The irreplaceable items are the private keys, the current cold counter, wallet recovery material, metadata source, registration records and documented configuration. Node databases can be re-synchronized, but keys cannot be reconstructed unless you have a valid recovery method. Keep encrypted copies in separate physical locations.
Upgrade one path at a time
Read the node release notes before upgrading. Some versions add dependencies, change configuration or require ledger replay. Upgrade and validate one relay first, then the next relay, then the producer. Keep a rollback plan and enough disk space. Avoid performing a producer upgrade immediately before a likely leadership slot.
Document the recovery procedure
A backup that only one person remembers how to use is not a complete recovery plan. Record the service paths, DNS, firewall rules, providers, renewal dates, monitoring endpoints, KES procedure and emergency contacts without writing private keys into the document.
Common mistakes that cause real problems
Most failures are not exotic; they are preventable operational errors.
- Running everything on one public server: one outage or compromise affects every component.
- Keeping cold or wallet signing keys on the producer: a server breach can become total pool or fund loss.
- Using only one relay: maintenance disconnects the producer from the network.
- Opening the producer port to the internet: removes the protection the relay architecture is meant to provide.
- Ignoring free disk space: the node may stop when the database cannot write.
- Forgetting KES expiry: the producer remains online but cannot forge valid blocks.
- Restoring an old cold counter: can produce invalid or conflicting operational-certificate state.
- Registering an unreachable metadata URL: wallets and explorers may not display the pool correctly.
- Declaring pledge that is not maintained: can affect reward calculations and credibility.
- Expecting immediate blocks with very low stake: creates unrealistic business planning.
- Upgrading every node simultaneously: a bad release or configuration can take the entire pool offline.
- Testing backups only during an emergency: unreadable or outdated backups are discovered too late.
Production launch checklist
Use this list before considering the pool ready for mainnet operation.
- The full registration workflow was completed successfully on a Cardano testnet.
- One producer and at least two relays are deployed in separate failure domains.
- The producer communicates only with trusted relays.
- Relay DNS and public Cardano ports resolve and respond correctly.
- All nodes use the intended stable cardano-node and cardano-cli versions.
- Every node is fully synchronized and system time is accurate.
- Cold, payment and stake signing keys exist only in the offline environment.
- Multiple encrypted offline backups and the latest cold counter are verified.
- Metadata is valid, publicly reachable and matches its registered hash.
- Pledge, fixed cost, margin, reward account, owners and relays were reviewed before signing.
- The pool registration and owner delegation appear correctly on-chain.
- VRF, KES and operational-certificate files are installed with restrictive permissions.
- Forging is enabled and the KES expiry date is recorded in monitoring.
- CPU, memory, disk, process, peers, sync, KES and block alerts are tested.
- A rolling upgrade procedure and rollback plan are documented.
- The public website and operator contact channels are ready for delegators.
Frequently asked questions
How many servers do I need?
For a resilient production pool, plan for one block producer and at least two relays. You also need a separate air-gapped machine for cold-key operations. A backup producer and independent monitoring server are useful additions but not required for the smallest deployment.
How much ADA do I need?
You need enough ADA to cover the current 500 ADA refundable pool deposit, the stake-address deposit, transaction fees and any pledge you choose to declare. There is no universal minimum pledge for registration, but a pool with little active stake will receive block opportunities less frequently.
Can I build the pool without being a Linux expert?
You can learn the process, but production operation still requires Linux administration, networking, security, backups and incident response. A guided service can reduce setup risk, but the owner should still understand the architecture and ongoing responsibilities.
How long does synchronization take?
It depends on the node version, database backend, server performance, network bandwidth and whether a current trusted snapshot is used. Plan for hours to days rather than assuming an exact time. Always verify the final tip and synchronization state.
Will my pool mint a block immediately?
No. Registration creates eligibility, not a guaranteed schedule. Selection is probabilistic and depends mainly on active stake. A small pool may remain healthy for many epochs before its first block opportunity.
Can the cold key be stored on the block producer?
No. The cold signing key controls registration updates, retirement and operational-certificate creation. It should remain on an encrypted air-gapped machine and never be copied to a networked server.
What happens when KES expires?
The node can remain online and synchronized, but it cannot forge valid blocks with the expired operational credentials. Rotate the KES key and operational certificate before expiry and verify the new files on the producer.
Official references used for this guide
Cardano node versions, CLI syntax, protocol deposits and configuration options change over time. Confirm all commands and values against the current official documentation before using mainnet funds.
Build it carefully, then operate it consistently
The installation is only the beginning. A good stake pool is defined by secure keys, reliable relays, a protected producer, early KES rotation, tested monitoring and an operator who continues maintaining the system after registration.
Explore Blockiy Stake Pool Setup
