Skip to content

Instantly share code, notes, and snippets.

@mfornet
Last active January 23, 2023 09:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mfornet/f3e8f5952d197c6ea74644bf7ea6883f to your computer and use it in GitHub Desktop.
Save mfornet/f3e8f5952d197c6ea74644bf7ea6883f to your computer and use it in GitHub Desktop.

stakes.txt contains the amount of stake per validator on NEAR mainnet as of writing this document. This file can be recomputed using:

export NEAR_ENV=mainnet
near validators current | tee stakes.txt

The output of running the script main.py using this version of the file stakes.txt is:

Seats: 180
Number of validators: 64
Required stake: 1961559
Excluded validators: 116

Indicating, that if rewards are given two validators sublinearly (i.e taxing larger validators), they will be incentivized to split their validators in multiple pools. In total there will be 64 real validators, divided into 180 virtual validators each staking 1961559.

current_stake = []
with open("stakes.txt") as f:
for line in f:
tokens = line.split()
total = int(tokens[3].replace(",", ""))
current_stake.append(total)
seats = len(current_stake)
best_stake = current_stake[:]
last = (seats, best_stake[-1])
while True:
new_stake = []
threshold = best_stake[-1]
for validator_id, stake in enumerate(current_stake):
k = max(stake // threshold, 1)
divided_stake = stake // k
assert k == 1 or divided_stake >= threshold
assert divided_stake * k <= stake
for _ in range(k):
new_stake.append((divided_stake, validator_id))
new_stake.sort(reverse=True)
new_stake = new_stake[:seats]
different_validators = set(validator_id for _, validator_id in new_stake)
best_stake = [stake for stake, _ in new_stake]
num_validators = len(different_validators)
required_stake = best_stake[-1]
if (num_validators, required_stake) == last:
break
last = num_validators, required_stake
num_validators, required_stake = last
print("Seats:", seats)
print("Number of validators:", num_validators)
print(
"Required stake:",
required_stake,
)
print("Excluded validators:", seats - num_validators)
| figment.poolv1.near | 39,231,184 | 1 | 99.95% | 2884 | 2884 | 11651 | 11658 |
| astro-stakers.poolv1.near | 25,771,713 | 1 | 99.96% | 2060 | 2060 | 7593 | 7596 |
| bzam6yjpnfnxsdmjf6pw.poolv1.near | 23,528,063 | 1 | 99.94% | 1867 | 1867 | 6938 | 6943 |
| zavodil.poolv1.near | 17,191,263 | 1 | 99.93% | 1299 | 1299 | 5118 | 5122 |
| binancenode1.poolv1.near | 14,293,250 | 1 | 99.73% | 1080 | 1080 | 4138 | 4152 |
| yes_protocol1.poolv1.near | 13,825,525 | 1 | 99.96% | 1073 | 1073 | 4176 | 4178 |
| staking_yes_protocol1.poolv1.near | 13,613,707 | 1 | 99.74% | 997 | 999 | 4011 | 4022 |
| electric.poolv1.near | 12,934,305 | 1 | 99.64% | 925 | 925 | 3853 | 3870 |
| epic.poolv1.near | 12,904,304 | 1 | 99.97% | 973 | 973 | 3810 | 3811 |
| aurora.pool.near | 11,937,486 | 1 | 99.95% | 929 | 929 | 3568 | 3570 |
| stake1.poolv1.near | 11,551,674 | 1 | 99.92% | 829 | 829 | 3382 | 3385 |
| sweat_validator.poolv1.near | 10,950,906 | 1 | 99.97% | 802 | 802 | 3233 | 3234 |
| dqw9k3e4422cxt92masmy.poolv1.near | 10,355,768 | 1 | 99.94% | 750 | 750 | 3002 | 3004 |
| future_is_near.poolv1.near | 10,286,370 | 1 | 99.55% | 774 | 774 | 3011 | 3028 |
| rekt.poolv1.near | 9,895,694 | 1 | 99.89% | 776 | 776 | 2930 | 2934 |
| kiln.poolv1.near | 7,889,818 | 1 | 99.96% | 576 | 576 | 2304 | 2305 |
| nearcrowd.poolv1.near | 7,001,473 | 1 | 99.96% | 527 | 527 | 2091 | 2092 |
| finoa.poolv1.near | 6,802,157 | 1 | 99.95% | 528 | 528 | 1934 | 1935 |
| foundry.poolv1.near | 6,662,598 | 1 | 99.87% | 498 | 498 | 1996 | 1999 |
| d1.poolv1.near | 6,391,425 | 1 | 100% | 490 | 490 | 1865 | 1865 |
| anonymous.poolv1.near | 6,301,922 | 1 | 99.78% | 446 | 446 | 1873 | 1878 |
| continue.poolv1.near | 6,276,772 | 1 | 99.91% | 447 | 447 | 1812 | 1814 |
| hashquark.poolv1.near | 6,085,922 | 1 | 100% | 415 | 415 | 1716 | 1716 |
| near-fans.poolv1.near | 5,863,281 | 1 | 99.95% | 491 | 491 | 1652 | 1653 |
| stakin.poolv1.near | 5,815,095 | 1 | 100% | 409 | 409 | 1700 | 1700 |
| neardevgov.poolv1.near | 5,490,348 | 1 | 100% | 393 | 393 | 1642 | 1642 |
| 08investinwomen_runbybisontrails.poolv1.near | 5,442,782 | 1 | 99.94% | 421 | 421 | 1500 | 1501 |
| hb436_pool.poolv1.near | 5,331,432 | 1 | 99.89% | 356 | 356 | 1604 | 1606 |
| chorusone.poolv1.near | 5,159,194 | 1 | 100% | 373 | 373 | 1508 | 1508 |
| openshards.poolv1.near | 5,028,068 | 1 | 99.9% | 419 | 419 | 1594 | 1596 |
| northernlights.poolv1.near | 4,636,453 | 1 | 100% | 339 | 339 | 1282 | 1282 |
| nearfans.poolv1.near | 4,618,450 | 1 | 100% | 364 | 364 | 1343 | 1343 |
| accomplice.poolv1.near | 4,294,783 | 1 | 99.93% | 358 | 358 | 1286 | 1287 |
| dokiacapital.poolv1.near | 4,286,957 | 1 | 100% | 339 | 339 | 1204 | 1204 |
| smart-stake.poolv1.near | 4,221,870 | 1 | 100% | 309 | 309 | 1265 | 1265 |
| p2p-org.poolv1.near | 4,173,656 | 1 | 100% | 333 | 333 | 1236 | 1236 |
| cryptium.poolv1.near | 4,115,707 | 1 | 100% | 301 | 301 | 1224 | 1224 |
| pandora.poolv1.near | 4,112,263 | 1 | 100% | 293 | 293 | 1158 | 1158 |
| everstake.poolv1.near | 3,992,711 | 1 | 99.59% | 306 | 306 | 1177 | 1183 |
| nc2.poolv1.near | 3,868,491 | 1 | 100% | 297 | 297 | 1161 | 1161 |
| ideocolabventures.poolv1.near | 3,722,692 | 1 | 99.93% | 307 | 307 | 1129 | 1130 |
| buildlinks.poolv1.near | 3,618,896 | 1 | 100% | 241 | 241 | 1126 | 1126 |
| stakesabai.poolv1.near | 3,529,453 | 1 | 100% | 254 | 254 | 1022 | 1022 |
| bisontrails.poolv1.near | 3,484,583 | 1 | 99.92% | 268 | 268 | 1009 | 1010 |
| sharpdarts.poolv1.near | 3,309,852 | 1 | 100% | 249 | 249 | 996 | 996 |
| blockdaemon.poolv1.near | 3,209,409 | 1 | 99.75% | 264 | 264 | 980 | 983 |
| consensus_finoa_01.poolv1.near | 3,139,272 | 1 | 100% | 217 | 217 | 920 | 920 |
| consensus_finoa_00.poolv1.near | 3,101,732 | 1 | 100% | 225 | 225 | 970 | 970 |
| nodeasy.poolv1.near | 3,068,244 | 1 | 99.91% | 229 | 229 | 912 | 913 |
| dsrvlabs.poolv1.near | 3,015,147 | 1 | 99.63% | 242 | 242 | 861 | 865 |
| staked.poolv1.near | 3,009,884 | 1 | 100% | 235 | 235 | 895 | 895 |
| lux.poolv1.near | 2,963,738 | 1 | 100% | 198 | 198 | 837 | 837 |
| republic.poolv1.near | 2,839,892 | 1 | 99.9% | 208 | 208 | 853 | 854 |
| lunanova.poolv1.near | 2,828,170 | 1 | 100% | 204 | 204 | 886 | 886 |
| brea.poolv1.near | 2,731,352 | 1 | 100% | 209 | 209 | 831 | 831 |
| zkv_staketosupportprivacy.poolv1.near | 2,649,759 | 1 | 99.79% | 188 | 188 | 805 | 807 |
| baziliknear.poolv1.near | 2,641,947 | 1 | 100% | 211 | 211 | 835 | 835 |
| erm.poolv1.near | 2,601,104 | 1 | 100% | 196 | 196 | 757 | 757 |
| fish.poolv1.near | 2,426,346 | 1 | 99.77% | 185 | 185 | 711 | 713 |
| valisaurus-dex.poolv1.near | 2,380,067 | 1 | 100% | 187 | 187 | 688 | 688 |
| stardust.poolv1.near | 2,181,435 | 1 | 99.87% | 169 | 169 | 623 | 624 |
| legends.poolv1.near | 2,133,912 | 1 | 99.6% | 151 | 151 | 615 | 618 |
| masternode24.poolv1.near | 2,080,581 | 1 | 100% | 168 | 168 | 577 | 577 |
| moonlet.poolv1.near | 1,961,603 | 1 | 100% | 159 | 159 | 574 | 574 |
| nearkoreahub.poolv1.near | 1,900,352 | 1 | 100% | 143 | 143 | 607 | 607 |
| inotel.poolv1.near | 1,894,929 | 1 | 99.85% | 134 | 134 | 534 | 535 |
| fresh.poolv1.near | 1,857,579 | 1 | 98.47% | 167 | 167 | 543 | 554 |
| allnodes.poolv1.near | 1,798,596 | 1 | 100% | 132 | 132 | 505 | 505 |
| appload.poolv1.near | 1,734,615 | 1 | 100% | 133 | 133 | 487 | 487 |
| qbit.poolv1.near | 1,698,665 | 1 | 99.52% | 118 | 118 | 504 | 507 |
| 01node.poolv1.near | 1,695,876 | 1 | 100% | 126 | 126 | 491 | 491 |
| jazza.poolv1.near | 1,563,332 | 1 | 100% | 116 | 116 | 471 | 471 |
| satori.poolv1.near | 1,515,768 | 1 | 97.77% | 119 | 119 | 453 | 466 |
| avado.poolv1.near | 1,325,063 | 1 | 99.58% | 98 | 98 | 380 | 382 |
| pandateam.poolv1.near | 1,188,387 | 1 | 99.75% | 95 | 95 | 319 | 320 |
| nonli-near.poolv1.near | 1,175,106 | 1 | 100% | 97 | 97 | 320 | 320 |
| staking_sp2.poolv1.near | 1,165,692 | 1 | 100% | 93 | 93 | 319 | 319 |
| bridgetower_v1.poolv1.near | 1,023,837 | 1 | 99.74% | 79 | 79 | 306 | 307 |
| staking_opp_disc.poolv1.near | 1,010,991 | 1 | 100% | 83 | 83 | 272 | 272 |
| galactic.poolv1.near | 845,198 | 1 | 99.66% | 61 | 61 | 235 | 236 |
| atomic-nodes.poolv1.near | 836,107 | 1 | 100% | 71 | 71 | 258 | 258 |
| dexagon.poolv1.near | 815,463 | 1 | 99.65% | 47 | 47 | 241 | 242 |
| cryptoblossom.poolv1.near | 797,031 | 1 | 100% | 63 | 63 | 220 | 220 |
| cryptogarik.poolv1.near | 787,650 | 1 | 100% | 63 | 63 | 223 | 223 |
| pathrocknetwork.poolv1.near | 754,757 | 1 | 100% | 61 | 61 | 235 | 235 |
| optimusvalidatornetwork.poolv1.near | 753,492 | 1 | 100% | 40 | 40 | 211 | 211 |
| prophet.poolv1.near | 744,573 | 1 | 100% | 64 | 64 | 238 | 238 |
| stakely_io.poolv1.near | 737,031 | 1 | 100% | 48 | 48 | 221 | 221 |
| readylayerone_staking.poolv1.near | 683,648 | 1 | 99.61% | 47 | 47 | 214 | 215 |
| grassets.poolv1.near | 664,303 | 1 | 100% | 60 | 60 | 233 | 233 |
| kosmos_and_p2p.poolv1.near | 651,713 | 1 | 99.56% | 47 | 47 | 183 | 184 |
| infiniteloop.poolv1.near | 558,242 | 1 | 100% | 49 | 49 | 162 | 162 |
| lionstake.poolv1.near | 529,065 | 1 | 100% | 34 | 34 | 163 | 163 |
| dragonfly.poolv1.near | 528,308 | 1 | 100% | 35 | 35 | 170 | 170 |
| steak.poolv1.near | 519,948 | 1 | 100% | 30 | 30 | 153 | 153 |
| calimero.pool.near | 512,407 | 1 | 100% | 36 | 36 | 149 | 149 |
| staking-power.poolv1.near | 493,678 | 1 | 100% | 29 | 29 | 146 | 146 |
| n0ok.poolv1.near | 475,428 | 1 | 99.35% | 33 | 33 | 122 | 123 |
| galaxydigital.poolv1.near | 441,721 | 1 | 100% | 35 | 35 | 129 | 129 |
| nearua.poolv1.near | 434,393 | 1 | 100% | 29 | 29 | 131 | 131 |
| hapi.poolv1.near | 420,758 | 1 | 100% | 0 | 0 | 117 | 117 |
| synclub.poolv1.near | 411,707 | 1 | 100% | 0 | 0 | 122 | 122 |
| twinstake.poolv1.near | 385,061 | 1 | 100% | 0 | 0 | 134 | 134 |
| namdokmai.poolv1.near | 376,463 | 1 | 100% | 0 | 0 | 115 | 115 |
| gfs-ventures.poolv1.near | 373,203 | 1 | 100% | 0 | 0 | 106 | 106 |
| bitcoinsuisse.poolv1.near | 364,838 | 1 | 100% | 0 | 0 | 92 | 92 |
| vortex_live.poolv1.near | 363,775 | 1 | 95.37% | 0 | 0 | 103 | 108 |
| usn-unofficial.pool.near | 358,371 | 1 | 98.91% | 0 | 0 | 91 | 92 |
| inc4.poolv1.near | 343,325 | 1 | 100% | 0 | 0 | 108 | 108 |
| ni.poolv1.near | 339,336 | 1 | 100% | 0 | 0 | 108 | 108 |
| omnistake.pool.near | 337,767 | 1 | 100% | 0 | 0 | 94 | 94 |
| stakesstone.poolv1.near | 333,358 | 1 | 99.14% | 0 | 0 | 116 | 117 |
| incrypted.poolv1.near | 305,271 | 1 | 100% | 0 | 0 | 88 | 88 |
| nearweek.pool.near | 300,359 | 1 | 100% | 0 | 0 | 86 | 86 |
| lscmval.poolv1.near | 286,898 | 1 | 100% | 0 | 0 | 79 | 79 |
| sparkpool.poolv1.near | 281,634 | 1 | 98.76% | 0 | 0 | 80 | 81 |
| pangdao.poolv1.near | 272,559 | 1 | 100% | 0 | 0 | 89 | 89 |
| stardust.pool.near | 224,386 | 1 | 100% | 0 | 0 | 72 | 72 |
| restake.poolv1.near | 217,298 | 1 | 100% | 0 | 0 | 54 | 54 |
| magic.poolv1.near | 216,786 | 1 | 0% | 0 | 0 | 0 | 70 |
| shardlabs.poolv1.near | 206,047 | 1 | 100% | 0 | 0 | 58 | 58 |
| near.poolv1.near | 194,678 | 1 | 100% | 0 | 0 | 55 | 55 |
| huobi-pos.poolv1.near | 191,254 | 1 | 100% | 0 | 0 | 57 | 57 |
| ledgerbyfigment.poolv1.near | 182,280 | 1 | 100% | 0 | 0 | 55 | 55 |
| lavenderfive.poolv1.near | 162,057 | 1 | 96.07% | 0 | 0 | 49 | 51 |
| binancestaking.poolv1.near | 141,248 | 1 | 100% | 0 | 0 | 43 | 43 |
| spectrum.poolv1.near | 140,446 | 1 | 100% | 0 | 0 | 30 | 30 |
| sicmundus.poolv1.near | 128,845 | 1 | 0% | 0 | 0 | 0 | 36 |
| udhc1.pool.near | 119,243 | 1 | 100% | 0 | 0 | 36 | 36 |
| projecttent.poolv1.near | 117,906 | 1 | 100% | 0 | 0 | 45 | 45 |
| guli.poolv1.near | 112,796 | 1 | 92.3% | 0 | 0 | 24 | 26 |
| 4ire.poolv1.near | 110,591 | 1 | 100% | 0 | 0 | 35 | 35 |
| dariya.poolv1.near | 108,087 | 1 | 100% | 0 | 0 | 39 | 39 |
| chelovek_iz_naroda.poolv1.near | 106,048 | 1 | 100% | 0 | 0 | 34 | 34 |
| cryptotribe.poolv1.near | 83,086 | 1 | 100% | 0 | 0 | 24 | 24 |
| stakeseeker.poolv1.near | 78,546 | 1 | 100% | 0 | 0 | 19 | 19 |
| 2pilot.poolv1.near | 69,218 | 1 | 100% | 0 | 0 | 17 | 17 |
| owa.poolv1.near | 67,135 | 1 | 100% | 0 | 0 | 18 | 18 |
| doubletop.poolv1.near | 64,154 | 1 | 100% | 0 | 0 | 11 | 11 |
| coinpayu.poolv1.near | 63,849 | 1 | 100% | 0 | 0 | 15 | 15 |
| genesislab.poolv1.near | 57,094 | 1 | 100% | 0 | 0 | 15 | 15 |
| cunum.poolv1.near | 56,831 | 1 | 100% | 0 | 0 | 13 | 13 |
| gateomega.poolv1.near | 53,821 | 1 | 100% | 0 | 0 | 10 | 10 |
| ruziev.poolv1.near | 53,183 | 1 | 93.33% | 0 | 0 | 14 | 15 |
| monresearch.poolv1.near | 50,066 | 1 | 100% | 0 | 0 | 7 | 7 |
| ou812.poolv1.near | 50,046 | 1 | 100% | 0 | 0 | 14 | 14 |
| evstigneeff.poolv1.near | 50,039 | 1 | 92.85% | 0 | 0 | 13 | 14 |
| sazhiv.poolv1.near | 45,487 | 1 | 100% | 0 | 0 | 13 | 13 |
| iamcryptobro.poolv1.near | 45,396 | 1 | 100% | 0 | 0 | 14 | 14 |
| chain0ps.poolv1.near | 44,104 | 1 | 91.66% | 0 | 0 | 11 | 12 |
| idtcn4.poolv1.near | 43,739 | 1 | 100% | 0 | 0 | 7 | 7 |
| davaymne.poolv1.near | 42,696 | 1 | 100% | 0 | 0 | 16 | 16 |
| snsmln.poolv1.near | 42,567 | 1 | 100% | 0 | 0 | 12 | 12 |
| lovali.poolv1.near | 42,544 | 1 | 100% | 0 | 0 | 13 | 13 |
| welldonestake.poolv1.near | 40,055 | 1 | 100% | 0 | 0 | 9 | 9 |
| anya-forger.poolv1.near | 40,043 | 1 | 100% | 0 | 0 | 13 | 13 |
| ifedi.poolv1.near | 37,559 | 1 | 100% | 0 | 0 | 15 | 15 |
| loyanix.poolv1.near | 37,542 | 1 | 100% | 0 | 0 | 8 | 8 |
| stakerrash.poolv1.near | 36,055 | 1 | 100% | 0 | 0 | 7 | 7 |
| swissstar.poolv1.near | 35,652 | 1 | 100% | 0 | 0 | 7 | 7 |
| p2pstaking.poolv1.near | 35,505 | 1 | 100% | 0 | 0 | 9 | 9 |
| shurik.poolv1.near | 35,464 | 1 | 100% | 0 | 0 | 11 | 11 |
| mexa-staking.poolv1.near | 35,287 | 1 | 92.85% | 0 | 0 | 13 | 14 |
| teoviteovi.poolv1.near | 35,059 | 1 | 100% | 0 | 0 | 9 | 9 |
| qibaocenter.poolv1.near | 32,556 | 1 | 100% | 0 | 0 | 14 | 14 |
| rockxv2.poolv1.near | 32,491 | 1 | 100% | 0 | 0 | 4 | 4 |
| ignor.poolv1.near | 30,433 | 1 | 100% | 0 | 0 | 6 | 6 |
| nativo.pool.near | 30,059 | 1 | 100% | 0 | 0 | 6 | 6 |
| validatrium.poolv1.near | 28,864 | 1 | 100% | 0 | 0 | 6 | 6 |
| annanow.poolv1.near | 28,714 | 1 | 100% | 0 | 0 | 7 | 7 |
| bitmanna.poolv1.near | 28,559 | 1 | 100% | 0 | 0 | 10 | 10 |
| bee1stake.poolv1.near | 27,961 | 1 | 100% | 0 | 0 | 7 | 7 |
| smartnode.poolv1.near | 27,563 | 1 | 100% | 0 | 0 | 5 | 5 |
| pinrocks.poolv1.near | 27,539 | 1 | 100% | 0 | 0 | 9 | 9 |
| nodeverse_2.poolv1.near | 26,047 | 1 | 100% | 0 | 0 | 3 | 3 |
| luganodes.pool.near | 25,778 | 1 | 83.33% | 0 | 0 | 5 | 6 |
| stingray.poolv1.near | 25,666 | 1 | 100% | 0 | 0 | 3 | 3 |
| meduza.poolv1.near | 25,211 | 1 | 100% | 0 | 0 | 11 | 11 |
| vcap.poolv1.near | 25,050 | 1 | 100% | 0 | 0 | 5 | 5 |
| letsnode.poolv1.near | 20,322 | 1 | 100% | 0 | 0 | 9 | 9 |
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment