Revert tie breaker change for small pools

Revert tie breaker change for small pools

We have opened a new PR on the ouroboros-consensus GitHub repo, seeking to revert the tie-breaker mechanism for slot battles, to what it was before the Vasil Hard Fork. The full PR can be found here.


Background

A previous GitHub issue (ouroboros-network#4051) raised concerns that the original Praos implementation used the raw VRF value from the block header instead of the range‑extended leader VRF value.

This removes a small advantage that small pools previously enjoyed. Small pools are more likely to win this tie breaker, since by being a small pool they need a smaller leader VRF value in order to win the leader check. Using the the VRF value before the range extension is applied removes this small advantage. 

What does our PR do?

This PR modifies the Praos implementation to once again use the range‑extended leader VRF value for tie‑breaking. In turn, this would restore the small‑pool advantage in slot battles by using the leader VRF value, matching the behaviour before the change referenced in the original discussion.

Why this matters

Some overarching considerations must be made about this proposed change:

  1. The tiebreaker VRF was already the leader VRF prior to the Vasil Hard Fork (see GitHub Issue #4051), so we are basically asking to go back to the previous behaviour;
  2. Although using leader VRF as a tiebreaker in slot battles does give an advantage to small pools, this is not a concern for Sybil protection (see "Further research" below): this advantage only applies to slot battles;
  3. Multi-leader slots (and therefore slot battles) are very infrequent, occurring roughly every 13 minutes, so approximately 553 times per epoch (or 0.128% of slots). This means that, the advantage to small pools only matters in a very small portion of slots;
  4. For a small pool (for example, one minting on average 1 block per epoch), loosing a block to a large pool in a slot battle has a very big impact on ROI. This is not at all the case in the reverse scenario: the ROI of a large pool minting 50 blocks on average every epoch is almost unimpacted by a lost slot battle;
  5. The relative benefit and loss of this proposed change are small: +2.6% and -1.4%, respectively (see "Further research" below). Noteworthy is the relative component: if a pool is minting on average 1 block per epoch, this change would result in a 1.026 block/epoch average instead. Similarly, if a pool is minting 50 blocks per epoch, its new average would be 49.3 blocks/epoch;
  6. Lastly, reintroducing an advantage for small pools in slot battles does not mean that a small pool is guaranteed to win every battle, only that it has a slightly better probability. At a time when small pools are struggling to survive, this is a minor, but welcome, improvement.

Further research

Since this PR and post were published (June 3, 2025), Alexander Esgen has done a deep dive into the effects of reverting to the use of leader VRF as a tiebreaker for slot battles. Although this change provides some advantage to small pools, the effect is very small and not a concern for Sybil protection. The full writeup can be found here.

Revert tie breaker change for small pools by Cerkoryn · Pull Request #1548 · IntersectMBO/ouroboros-consensus
Background Issue ouroboros-network#4051 raised concerns that the original Praos implementation used the raw VRF value from the block header instead of the range‑extended leader VRF value. The issue…

CHANGELOG:

2025.06.13 Added "Further research" subheading and content.

2025.0615 Modified "Why this matters" subheading for clarity of intent and scope.