Optimal Pool Count

Cardano Network Parameters Part 19

Of all the parameters guiding Cardano, few spark as much debate as optimal_pool_count — better known as k. Cardano has over 40 parameters shaping its security, performance, and governance. So why does k get so much attention?

What is optimal_pool_count (k)?

The optimal_pool_count (k) is a protocol parameter that defines the ideal minimum number of stake pools to efficiently run the Cardano network. It enforces this ideal minimum by influencing how delegation incentives are structured.

In a proof-of-work (PoW) network like Bitcoin, miners compete with computational power to earn a chance to mint a block and earn a bitcoin. Cardano uses a different mechanism, called proof-of-stake (PoS). Here, security and transaction validation rely on a distributed network of stake pools. Ada holders may delegate their money (ada) to a stake pool to contribute to this security mechanism. More staked ada earns a pool more chances to validate transaction blocks. When they do that computational work, the pool and all its delegators earn more ada as a reward.

Another thing to remember is that blockchains, almost by definition, really favor decentralization. A huge part of blockchains value and purpose is to ensure that no one person or group can seize power or corrupt the record.

So, does that mean more stake pools are always better? While more pools improve decentralization, they also dilute rewards. Imagine if every city in the world had its own stake pool – that level of decentralization and shared power would be amazing, right? However, there is only a certain amount of computational work to be done, and it costs money to setup, run, and maintain a server node. Spreading the computational work – and pay – that thinly would result in economic loss across the board. That would mean no incentive to actually stay, do the work, and maintain the network.

On the other hand, if there was just one stake pool per continent, each one would have lots of work to do! Each would earn more than enough to pay the operator, and reward its delegators quite richly. But what about decentralization? Only a few continents would need to band together to seize majority control of the network, leaving the other continents powerless.

The k parameter is the fulcrum of this fascinating balancing act. k is currently set to 500. This means that Cardano will roughly favor a minimum of 500 stake pools when it comes to distributing rewards for participating in securing the network with staked ada.

k sets the floor for decentralization.

How does it work?

If a stake pool grows beyond their ‘optimal size’ based on the amount of stake, they become “saturated”. When a pool exceeds this saturation level, it earns fewer rewards for delegators. Delegators who are choosing a pool are therefore financially motivated to pick one that is not saturated yet, even if they like the pool. A delegator who is in a pool that grows beyond the saturation point might notice their rewards diminishing, and feel motivated to move their stake elsewhere. The big idea is to prevent centralization by spreading stake across multiple pools, rather than allowing a few large ones to dominate.

Cardano protocol enforces the optimal_pool_count by dynamically adjusting pool “saturation thresholds” based on the value of k. This is how it works:

  1. Divide the current number of ada in circulation (37.65 Billion Ada) by k (500). As of this article this comes to around 75 Million Ada.
  2. All rewards scheduled for distribution are put into a pot.
  3. That pot is sliced into many slices. A percentage goes into the treasury as defined by the Treasury Growth Rate parameter.
  4. The rest is divided between stake pools according to the total ada staked to each pool. Here is where optimal_pool_count explicitly comes in. Only up to 75 Million Ada weight will be considered when deciding the percentage of the reward each pool is entitled to.
  5. Lastly, the network directly sends out rewards to the pool operators as well as all delegators of that pool.

Why Does k Matter?

A higher k value encourages more people to want to open stake pools, in theory. A lower k value could lead to more stake concentration in fewer pools. Key areas affected by k include:

1.Decentralization & Security: A larger number of stake pools means power is distributed among more operators, reducing the risk of any single entity gaining excessive control.

2.Stake Pool competition & Rewards: A properly set k maintains healthy competition among pools competing for ada delegation while preventing excessive fragmentation.

3.Network Performance & Sustainability: A high k might increase decentralization but could spread delegation too thin, making it harder for pools to be profitable. A well balanced k allows for running a pool as a business to be viable, while still leaving room for hobbyist and enthusiasts who simply want to learn or contribute to Cardano’s decentralization.

The community debate around k.

Should k be increased?

Some argue that increasing k would further decentralize the network, distributing stake among more pools.

The counter argument is that the current value of k allows a healthy mix of enterprise business shops running stake pools for profit as well as hobbyist or community members running stake pools as their weekend gigs.

Is k=500 sufficient?”

When Cardano introduced the ability for anyone to open or join a stake pool with the Shelley Hard Fork upgrade, k was initially set to 150. 26 epochs (130 days) later, k was increased to 500. k has not changed again since then. IOG, the engineering firm tasked with building Cardano and the ones responsible for the first change, planned subsequent changes. However after seeing how the network changed in response to setting k at 500, they opted not to. Many community members believe it should be moved to 750, if not 1000.

How does k impact staking rewards?

Increasing k means each pool can hold less stake before becoming saturated. This combined with presumably more pools competing for the same delegation could mean lower returns for pool operators and delegators.

Could reducing k lead to less decentralization or a more unstable network?

Even though k is set to 500, according to cexplorer.io , an average of 1,200 pools regularly produce blocks. With k setting the floor for decentralization at 500, arguably k can be said to have over 200% efficacy. The healthy mix of enterprise operations, hobbyist, and enthusiasts have resulted in 100% network uptime with no outage since Shelley. So the network is working really well, and decentralization is flying well above the ground level set by k.

There’s been many polls on what the current value of k should be. The most recent poll facilitated by the Cardano Foundation in 2023 saw some interesting results: by total stake, 41% wanted k increased to 1000. By stake pool count, 69% of the 796 pools that took the poll wanted k increased to 1000. (Meaning, broadly, that large pools voted to keep k at 500, and smaller pools voted to increase it. On the surface, an unsurprising result.) Lido pool participated in the poll–you can read more about how we voted and our rationale at: LIDO Nation Votes On-Chain for K and minPoolCost parameters

cf 2023 k parameter poll

The Future of k

Since the Plomin Hard Fork (January 29, 2025), ada holders now control all updatable parameters. Someone with a 100,000 ada deposit simply needs to submit a governance action. Once submitted, if it gets enough votes from ada holders – just like that, k will be changed. As of this writing there’s been 10 governance actions submitted, including one proposal to change a parameter. That parameter was τ, not k, despite its controversial history.

We have a feeling though, that a governance action to change k is only a matter of time.

Get more articles like this in your inbox

Was the article useful?

Or leave comment

No comments yet…

close

Playlist

  • EP2: epoch_length

    Authored by: Darlington Kofa

    3m 24s
    Darlington Kofa
  • EP1: 'd' parameter

    Authored by: Darlington Kofa

    4m 3s
    Darlington Kofa
  • EP3: key_deposit

    Authored by: Darlington Kofa

    3m 48s
    Darlington Kofa
  • EP4: epoch_no

    Authored by: Darlington Kofa

    2m 16s
    Darlington Kofa
  • EP5: max_block_size

    Authored by: Darlington Kofa

    3m 14s
    Darlington Kofa
  • EP6: pool_deposit

    Authored by: Darlington Kofa

    3m 19s
    Darlington Kofa
  • EP7: max_tx_size

    Authored by: Darlington Kofa

    4m 59s
    Darlington Kofa
0:00
/
~0:00