There is a bug in the get_eligible_pool_list.py
script.
The requirements for a pool to be eligible as as follows:
- Single-pool operators only
- Pool size: 200k-5m ADA at time of snapshot
- Fixed cost: 340 ADA
- Minimum Pledge: 20k
- Must be registered for at least 6 months
- Total Variable Fee/Margin to never exceed 3%
- Pool Operator has demonstrated technical capabilities: having minted at least 1 block
(as defined here: https://forum.minswap.org/t/minswap-ada-delegation-framework/3808)
The function to determine if a pool is eligible takes all these things into account:
if 200_000_000_000 < stake < 5_000_000_000_000 and \
tax_fix == 340_000_000 and \
pledge > 20_000_000_000 and \
tax_ratio <= 0.03 and \
blocks_lifetime >= 1:
return False
https://github.com/minswap/ada-delegation/blob/9de24a7e3391c31fabda46a863607cab98a7862e/get_eligible_pool_list.py#L18C8-L18C31
The bug is on line 18
. The check for the pool margin fee (aka. tax_ratio
in the json file) is checked against 0.03
. This should be 3%.
However, the tax_ratio
in the data is the percentage, not the percentile.
Example: A pool with a 1.5% margin fee would have a tax_ratio
of 1.5, not 0.015.
This leads to only pools with a <0.03% margin fee to be eligible.
I think this is a pretty severe bug and the randomly selected pools should be re-rolled after the fix.