Quantum Bounty
checking

Quantum Bounty Live Day 1

Not even Shor can open it.

Two vaults on Bitcoin and Solana with exposed public keys and no private key: whatever sits in them is the bounty for the first quantum computer that runs Shor's algorithm at 256 bits. And one vault built from hashes instead of curves, where not even Shor gets in. Every number on this page is read live from the chain.

The bounty
$—

in two keyless vaults · bitcoin and solana mainnet · only Shor can collect it

Bitcoin vault
— BTC · —
Solana vault
— SOL · —
Prices used
—
Next read
first read…

DEVNET · deploying

The Winternitz vault

Lock SOL behind a one-time hash signature instead of an ed25519 key. Program built from source, key generated in your browser, verified end to end on a validator. Test SOL only while it runs on devnet.

Signature
952 bytes
Withdrawal
557k CU
Tests
6 / 6
Hash security
2224
CA published at launch
The vault

Lock SOL behind a hash, not a curve.

Every Solana wallet today is an ed25519 key: the exact thing Shor's algorithm breaks. This vault is a program-derived account whose only spending path is a Winternitz one-time signature, built from Keccak hashes. Grover's algorithm at best halves a hash's security; Shor does nothing to it.

not connected

Devnet build. Use test SOL only (faucet). The mainnet deployment uses the same program id and the same code.

Phantom or any Solana wallet with signTransaction. The Solana library (484 KB) loads only when you connect.

  • No vaults on this device yet.
  1. Connect Your normal wallet only pays fees and receives withdrawals. It never holds the vault key.
  2. Open The browser draws a 32-byte master secret, derives 34 hash chains and hashes each 256 times. The result is the vault address. A key file downloads: keep it offline, it is the only way out.
  3. Deposit A plain SOL transfer to the vault address, from any wallet, any time. Start with 0.01 SOL of devnet test money.
  4. Withdraw One signature reveals one step of each chain, the program hashes them forward and checks the vault address, then sends everything to your wallet and closes the vault. One key, one use.

Your keys and vault list live in this browser's storage plus the key files you download. Clear the storage without the files and the SOL is gone for good. Withdrawing closes the vault; never deposit to a closed vault address.

How it works

A signature made of hashes.

Winternitz one-time signatures (WOTS) are the building block of every hash-based post-quantum scheme, including NIST's SLH-DSA. Here is exactly what the program checks.

  1. 01

    Chains

    34 random 28-byte seeds. Each is hashed 256 times with Keccak-256 truncated to 224 bits. The 34 chain tops, hashed together, are the public key hash and the seed of the vault's program-derived address.

  2. 02

    Message

    To withdraw, the message is the 32-byte pubkey that receives the funds. Its Keccak digest gives 32 values from 0 to 255, plus a 2-byte checksum of their complements.

  3. 03

    Sign

    For chain i with value v, reveal the seed hashed 256 − v times. Revealing it lets anyone hash forward, never backward: the signature can be verified but not reversed.

  4. 04

    Verify on-chain

    The program hashes each revealed element v more times, hashes the tops, and checks that the result derives the vault address. Then it moves the lamports and closes the account. No key, no curve, no Shor.

Why the checksum matters

The original solana-winternitz-vault (MIT, Dean Little) omits the checksum chains. Without them, anyone who sees a withdrawal in flight can hash the revealed elements forward and produce a valid signature for any destination whose digest is byte-wise smaller, about 232 attempts for a typical case, which a GPU does in seconds. This fork adds the two standard checksum chains: lowering any message value raises the checksum, and a raised chain cannot be forged. The test suite includes a forgery attempt that must fail.

Spec sheet · your wallet vs the vault

Ordinary Solana walletQuantum vault
Key typeed25519 · elliptic curveWinternitz OTS · Keccak-256 truncated to 224 bits
Public key exposureThe address is the public key, exposed from day oneOnly a hash of the key is on-chain; chain elements are revealed once, at withdrawal
Shor's algorithmRecovers the private key from the public keyNothing to apply it to: no discrete logarithm, no factoring
Grover's algorithmNot the bottleneckQuadratic speed-up only: 224-bit preimage → about 2112 work, still infeasible
Signature size64 bytes952 bytes (34 × 28) · fits one Solana transaction
ReuseUnlimitedOne signature per key. Withdrawal closes the vault; open a new one to re-lock.
ProgramSystem programdeploying to devnet · source and build hash published at mainnet · forked from solana-winternitz-vault (MIT)
Upgrade authorityn/aSet to none at mainnet deployment (immutable), verifiable on any explorer
Testsn/aOpen, close, close into a new vault, wrong-destination rejection, forgery rejection, JS/Rust cross-check. Independent audit: next step before mainnet.

Source published at mainnet: the Rust program with its tests (including the forgery case), wots.js (the same signature in 120 lines of JS), derive.py and watcher.js.

Where the vault goes next

  1. Shipped
    The vault, open source and tested

    Program built from source with the checksum fix, in-browser Winternitz signer, open / deposit / withdraw from this page, full test suite, end-to-end run on a validator. Devnet deployment is the step in progress.

  2. Next
    Mainnet, immutable

    Same program id, same code, deployed with the upgrade authority removed so nobody, including us, can ever change what the vault checks. Build hash published next to it.

  3. Planned
    A vault for $QBOUNTY itself

    Today the program locks SOL. A token-account variant puts the token behind the same one-time signature.

  4. In design
    Vault alerts

    A hosted watcher on websocket subscriptions instead of polling: Telegram and X alerts the moment a keyless vault or a watched output moves, holders first.

  5. Planned
    Watchlist governance

    Holders vote which exposed outputs join the watchlist: more Satoshi-era blocks, famous dormant P2PK coins, other chains.

  6. Planned
    Exposure scanner

    Tells you whether a Bitcoin or Solana address already has its public key on-chain: pay-to-pubkey outputs, reused addresses and every Taproot output do.

  7. Research
    Keyless vault v2, post-quantum

    A third keyless vault whose spend path is a NIST post-quantum signature such as Falcon, the scheme Solana's roadmap converges on.

The alarm · part one, the keyless vaults

Two addresses. Zero private keys.

These are the keyless vaults, the bounty in the hero. Satoshi's coins could in theory be moved by Satoshi; these two cannot be moved by anyone, because no private key was ever created. A vault is CLAIMED the moment any output is spent, and that spend can only be a quantum signature. Re-read every 60 seconds.

Bitcoin vault · Taproot · P2TR CHECKING
—BTC
Address
bc1ph3dny4spe3ffzqcc0ms4zygsqwqepswyl9ry2se5lahnxlhm6ncs2kzylk
Exposed public key · x-only output key Q
bc5b325601cc529103187ee1511110038190c1c4f946454334ff6f337efbd4f1
On-chain form · scriptPubKey
OP_1 PUSH32 5120bc5b3256…efbd4f1 · the key is the script
Public seed
QUANTUMBOUNTY/BTC/v1/000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
Counter
0 · the seed ends in the Bitcoin genesis block hash
open on mempool.space

reading chain…

Solana vault · ed25519 · system account CHECKING
—SOL
Address
CjpRvmzbWBF497hSGL3cBdxq6q1jSnZBU6LedpRhMU4y
Exposed public key · 32 bytes, hex
ae689445fb688e39de4a599ad48a568f04a7313b8237edb43b35d7baf8cc1f12
On-chain form · account
owner System Program · the address is the key, base58 of the same 32 bytes
Public seed
QUANTUMBOUNTY/SOL/v1/5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d
Counter
2 · the seed ends in the Solana mainnet genesis hash
open on solscan

reading chain…

How a claim is detected

1Chaina vault output is spent, a balance drops, or one of Satoshi's outputs moves
2Public APImempool.space spent_txo_count and outspend · Solana getBalance / preBalances delta
3This page + watcher.jspolls everything every 60 s, from your browser, independent of us
4CLAIMEDstamp turns red, one Telegram alert, never reset

Both vaults expose their public key from day one. Taproot puts the x-only key in the output script itself, and a Solana address is the key. There is nothing to wait for and nothing to hide: they are the clean, keyless version of what the 6.4 million exposed BTC are by accident.

Verify

If the addresses match, nobody has the key.

A nothing-up-my-sleeve (NUMS) point is a public key built from a hash instead of a secret, so it has an address but no owner. BIP-341 relies on the same idea for Taproot outputs that must not be spendable through the key path: it tells wallets to use an internal key "with unknown discrete logarithm" and offers H = lift_x(SHA256(G)) as the example. The vaults do exactly that with a public, reproducible seed, so the only way to sign for them is to solve a 256-bit discrete logarithm, which is the problem Shor's algorithm breaks.

  1. 01

    Hash the seed

    SHA256 of the public seed string followed by a 4-byte big-endian counter. Bitcoin lands on counter 0. Solana lands on counter 2, because hashes 0 and 1 do not decode as ed25519 points.

  2. 02

    Lift to the curve

    Bitcoin: BIP-340 lift_x turns the hash into a point P with even y. Solana: the hash is decoded as an ed25519 point and multiplied by 8 to clear the cofactor.

  3. 03

    Tweak and encode

    Bitcoin: Q = P + tagged_hash("TapTweak", P.x)·G, then bech32m with witness version 1. Solana: the 32-byte compressed point, then base58.

  4. 04

    Compare

    Run derive.py, or press the button below and let your own browser do it. If the output matches the addresses on this page, there is no private key to find, only one to compute. That takes Shor.

Live derivation · runs on your device

Let your browser derive the vaults

WebCrypto SHA-256 and BigInt curve arithmetic, nothing fetched. The same ten steps as derive.py, compared against the published values at the end.

Bitcoin · secp256k1

  1. press Derive now

Solana · ed25519

  1. press Derive now
derive.py · the core in 15 lines
import hashlib
def H(b): return hashlib.sha256(b).digest()
def tagged(tag, m): t = H(tag.encode()); return H(t + t + m)

# Bitcoin: hash -> x-only internal key -> TapTweak -> output key -> bech32m
x   = H(BTC_SEED.encode() + (0).to_bytes(4, "big"))     # counter 0
P   = lift_x(int.from_bytes(x, "big"))                    # BIP-340, even y
t   = int.from_bytes(tagged("TapTweak", x), "big")        # no script tree
Q   = add(P, mul(t, G))                                   # Q = P + t*G
btc = bech32m("bc", 1, Q[0].to_bytes(32, "big"))          # bc1p...

# Solana: hash -> ed25519 point -> clear cofactor -> base58
h   = H(SOL_SEED.encode() + (2).to_bytes(4, "big"))     # counter 2
Pp  = ed_mul(8, ed_decode(h))                             # 8*P, order L
assert ed_mul(L, Pp) == (0, 1)                            # prime-order check
sol = base58(ed_encode(Pp))                               # Cjp...

Expected output

BTC internal key x
89cab8a147d54575a8fe4b9248435fe71b9811ea513e8982895e621d5f362b15
BTC TapTweak t
d234ceabc8758b652f3586af800b48fd36b136434aa9e80e27a813b54a3a4db4
BTC output key x
bc5b325601cc529103187ee1511110038190c1c4f946454334ff6f337efbd4f1
SOL public key
ae689445fb688e39de4a599ad48a568f04a7313b8237edb43b35d7baf8cc1f12

Download derive.py python3 derive.py --check · exit code 0 means every value above was reproduced

Spec sheet · what it takes to open a keyless vault

Bitcoin vaultSolana vault
Curvesecp256k1 · 256-bit prime field, order n ≈ 2256Curve25519 (ed25519) · 255-bit field, prime subgroup L ≈ 2252
Output typeP2TR, witness v1, key path only · no script treeSystem account · address = public key
Key exposureIn the scriptPubKey, from the first depositIn the address, by definition
Best classical attackPollard's rho · about 2128 curve operationsPollard's rho · about 2126 curve operations
Quantum attackShor's algorithm · discrete log on secp256k1Shor's algorithm · discrete log on Curve25519
Resource estimateFewer than 500,000 physical superconducting qubits, minutes of runtime Google Quantum AI, Mar 2026Not estimated in that paper. Same key size, same algorithm, same order of magnitude.
Largest public break so far15-bit ECC key on public quantum hardware Project Eleven, Apr 2026 · the vaults need 256
Detection latency≤ 60 s · spent_txo_count on mempool.space≤ 60 s · balance delta on Solana RPC
  • Brute force 2128 operations. Every computer on Earth, for longer than the universe has existed.
  • Hash inversion Nothing is hashed on top of the key. The public key is the thing on-chain, and the private key never existed.
  • Stealing the key There is no wallet, no seed phrase, no hardware device, no team member to phish.
  • Rug No admin path, no multisig, no treasury, no fee stream. There is nothing to run away with.
The alarm · part two, the watchlist

The oldest exposed keys on Earth.

Satoshi mined the first blocks to pay-to-pubkey outputs. The public key is written in the output itself, exposed since the day it was mined, and these coins have never moved. The Quantum Alliance counts about 6.4 million BTC in this situation CoinDesk, Oct 2026. This page watches the oldest ones, live.

Watched outputs
11
Exposed since
Jan 9 2009, blocks 1 to 12 · block 9 is the historic exception
Unspent value
— · —
Who can move them
Satoshi, or a quantum computer running Shor
BlockMinedPublic key · coinbase outputValueStatus
reading chain…

status read from mempool.space every 3 minutes

Keyless vaults · recent activity

Bitcoin vault

DateTransactionAmount
reading chain…

Solana vault

DateTransactionAmount
reading chain…

inflow    outflow, which would mean a vault was claimed

Why now

Everyone argues about the date. Watch the vaults instead.

Estimates for a cryptographically relevant quantum computer keep moving. The vaults don't argue. They either hold or they don't.

  1. 2024
  2. Google announces Willow

    A 105-qubit chip where error rates fall as the code grows, the "below threshold" milestone for error correction. source · Google

  3. 2026
  4. Google Quantum AI: ECC-256 with fewer than 500k physical qubits

    New resource estimates put a 256-bit elliptic-curve break within reach of a superconducting machine with under 500,000 physical qubits, running in minutes. source · Google Research

  5. Global Risk Institute: 28–49% within 10 years

    The Quantum Threat Timeline survey of 26 experts rates a cryptographically relevant quantum computer "quite possible" (28–49%) within a decade. source · Global Risk Institute

  6. Project Eleven pays 1 BTC for a 15-bit key

    The Q-Day Prize goes to a researcher who recovered a 15-bit ECC private key on public quantum hardware with a variant of Shor's algorithm. 15 bits, not 256. The gap is the point. source · Project Eleven

  7. Solana Foundation publishes its quantum roadmap

    Anza and Firedancer independently converge on Falcon signatures, with a three-step migration plan ready if the threat becomes credible. source · Solana Foundation

  8. Coinbase backs BIP-360 designs

    In a technical paper, Coinbase names P2MR from BIP-360 and P2TRv2 as the output designs it wants for Bitcoin's post-quantum migration. source · The Block

  9. Quantum Alliance: 6.4M BTC exposed

    Nine firms form the Quantum Alliance and estimate 6.4 million BTC, about 30% of supply, sit on outputs whose public keys are already visible. source · CoinDesk

  10. Google cuts errors 40x in Science

    Magic state cultivation on Willow reduces the error of a key logical state about 40-fold, one of the bottlenecks on the path to running Shor at scale. source · Reuters via Yahoo