Block 50,000
Entries close at block 50,000. 50 winners.
| Status | open |
|---|---|
| Base | 50 shares × 1,000 AMMO |
| Rolled in from earlier draws | 0 AMMO |
| Pot | 50,000 AMMO |
| One share (pot ÷ 50, rounded down to 8 decimals) | 1,000 AMMO |
How the shares work: pot = shares × base + whatever earlier draws rolled in. Every winner gets one share. Shares nobody claimed (fewer entries than shares), shares cut by the per-member cap and shares that could not be granted roll into the next draw that hasn't been drawn yet; after the season's last draw they go back to the contributor reserve. The pot never changes who wins: the winners come from the block hash alone, as below. AMMO is Proudly Worthless.
Check it yerself
Rule: entries are ordered by entry id. Winner k (k = 0, 1, 2, ...) is the entry at index int(sha256(blockhash + ":" + k)) mod n; an index already picked is skipped and k moves on. Get the block hash from the explorer: https://explorer.ammocoin.org/api/getblockhash?index=0
PHP: php recheck.php entries.txt <blockhash> 50
<?php
// php recheck.php entries.txt <blockhash> <winners>
$lines = array_values(array_filter(array_map('trim', file($argv[1]))));
echo "entry list sha256: ", hash('sha256', implode("\n", $lines)), "\n";
$n = count($lines); $want = min((int)$argv[3], $n); $seen = array();
for ($k = 0; count($seen) < $want; $k++) {
$h = hash('sha256', strtolower($argv[2]) . ':' . $k);
$i = 0; foreach (str_split($h) as $c) $i = ($i * 16 + hexdec($c)) % $n;
if (isset($seen[$i])) continue;
$seen[$i] = true;
echo "k=$k index=$i entry={$lines[$i]}\n";
}Python: python3 recheck.py entries.txt <blockhash> 50
import hashlib, sys
# python3 recheck.py entries.txt <blockhash> <winners>
lines = [l.strip() for l in open(sys.argv[1]) if l.strip()]
print("entry list sha256:", hashlib.sha256("\n".join(lines).encode()).hexdigest())
h, n = sys.argv[2].lower(), len(lines)
want, seen, k = min(int(sys.argv[3]), n), set(), 0
while len(seen) < want:
i = int(hashlib.sha256(f"{h}:{k}".encode()).hexdigest(), 16) % n
if i not in seen:
seen.add(i)
print(f"k={k} index={i} entry={lines[i]}")
k += 1