Vesper · VESP · join

Join Vesper before it has a price.

There is nothing to buy and nothing will be sold. What there is: code you can read in an afternoon, a chain you can run tonight, and a project that pays people to break it. If you want a place in a privacy coin's history rather than a bag of its coins, this is the door.

Four ways in

Pick the one that matches what you know.

READ AND REVIEW

Break the math

Stealth addresses, sealed amounts, rings of 48, key images, a Dandelion++ relay, Argon2id. All of it in Python, with a test that lists what the chain still leaks. If you know elliptic curves or zero-knowledge proofs, this is the most valuable hour anyone can give before genesis.

First step: read the whitepaper and privacy.py, then tell us what is wrong. Bugs that beat the leak list are paid (see the bounty).
RUN AND MINE

Be a node from the start

Testnet-1 is launching: test coins (tVESP) that are worthless by design, on a real network. What you give is a network to attack. Everyone who runs a node through the testnet goes on the founding-node roll, by handle, forever.

First step: run testdrive.bat on your own PC today (two throwaway nodes, a payment each way, five break-it attempts, about five minutes), then start a node with start_node.bat; it joins testnet-1 through the seed node once that address is in config.json, see below.
BUILD

Make the things a coin needs

A desktop wallet people can use, a mobile wallet, atomic swaps, mining-pool support, a better explorer, translations. The development fund pays on delivery, in public, once it exists; before that, the roll and the credit are what there is.

First step: open an issue describing what you want to build. The fund's grant rules follow the Monero model: propose, deliver, get paid.
USE

Need private money, later

If you need payments nobody can read, you are who this is for, and you arrive last: after the audit, after the hardened node, after a wallet that does not need a terminal. Follow the dev log; it will say when.

First step: nothing yet. Do not buy anything from anyone claiming to sell VESP.
Read this. Vesper has no token, no presale and no sale of any kind. Testnet-1's tVESP have no value, ever; anyone offering tVESP or VESP for money is not us. The only way to get VESP on day one, if a real network ever exists, is to mine it.
Founding-node roll

The people who ran it before it was anything. opens with testnet-1

Run a node on testnet-1, by handle or by name, and you are listed here permanently. No coins, no tiers, no cost. Projects are defended by the people whose names are on them. To be listed, open an issue in the repository titled "founding node" with your handle; a node of yours has to have been seen on the network.

Empty until testnet-1's seed node is up. The first entry will be the project's own seed node, listed like everyone else's.

The trace-me bounty

Find a leak the test does not list, get paid in public. pool announced with the seed node

Vesper publishes exactly what its chain still reveals: the sender's crowd is 48, the fee, input and output counts, mining reward amounts, which block a payment landed in; and on the network, each node's address to its peers unless it runs through Tor, with the first broadcast of a payment coming from a relay rather than the sender (the measured leak is on the Breaking page). The bounty is for anything beyond that list.

  1. What counts. From chain data alone, or chain data plus what a dishonest node can see, show the receiver, the amount, or the sender of a payment with better odds than the published leak list allows; or create coins; or spend coins you do not own; or double spend. A write-up with a reproducible method is a claim. A hunch is not.
  2. What does not count. Things on the leak list, phishing a wallet file, compromising a user's machine, denial of service against the unhardened test node, or anything the whitepaper's threat model already states is out of scope.
  3. Disclosure. Report privately first. You get credit, by name or handle, when the fix ships. Public disclosure before a fix forfeits the bounty but not the credit.
  4. Payment. Prize pool announced when the testnet opens, funded by the founder and by donations until the development fund exists, paid in public with the claim and the fix linked. Severity decides the amount; the first proven trace of a payment pays the top tier.
  5. Referrals. If someone you brought in claims a bounty, you are paid too. This is the only referral program Vesper will ever have: a reward for finding problems, not for bringing buyers.
Running a node

Testnet-1: what it is and how to join.

What it is. A real Vesper network with test coins, tVESP, whose addresses start tvsp2. They have no value and never will; a real network, if there is one, gets its own genesis, ticker and addresses. Ring size 48, three times Monero's. The genesis block was made by launch_genesis.py: its message names the newest Bitcoin block at the launch moment (two block explorers had to agree) and the launch time, so nobody could have mined before it; the exact Bitcoin block and the genesis ID are in README.md and printed by python coin.py info, and every node checks them. Starting difficulty 4,096 tries, from measured test mining.

First time at any of this? START_HERE.md in the repository walks you through it in nine numbered steps, from installing Python to paying someone and trying to break it, in about 15 minutes.

How to join. Python 3.10 or newer, two packages, and one command. The node has per-address limits, bans, connection timeouts and a peer table built for strangers; testnet-1 is where they meet real ones for the first time.

git clone https://github.com/vesperorg/vesper
cd vesper
pip install -r requirements.txt
python selftest.py                           (44 checks; the seed node refuses to start if these fail, so should you)
python coin.py wallet new                    (write the recovery code on paper; anyone who sees it can spend)
python node.py --mine                        (finds the network through the seed node listed in config.json)
python node.py --mine --proxy socks5h://127.0.0.1:9050   (the same, through Tor)
python testdrive.py --more                   (the whole test drive on a private chain of its own, 17 checks)

The seed node's address (SEED-NODE-ADDRESS, a rented server, never a home connection) is published here and in config.json the day the server is up; until then the same commands run a chain of your own, and --peer joins any node a friend runs. What to try: the test drive, then every line of Breaking Vesper. Anything that behaves differently from those pages is a bounty claim.

Dev log

What shipped, with dates. This is the heartbeat.

2026-10-19

Ring raised to 48, three times Monero's, before the first peer

The founder's call, made while nobody had joined yet, so it cost one re-made first block (now tied to Bitcoin block 972,206). Measured at 48: a node accepts a payment in 64 ms, a fresh node checks a block at 33 ms per payment, a payment is 9.5 kB, and an informed attacker names the real coin 2.09% of the time where 2.08% is a pure guess. 44 checks and the 14-step test drive pass. 64 was measured too (82 ms, 11.7 kB, 1.8%) and judged not worth the extra cost yet.

2026-10-19

Code published; testnet-1 launching

The repository is public under the Vesper organisation on GitHub, with these pages served from it. Node v0.9.0, 44 self-test checks, MIT licence; every push re-runs the checks in public on Windows and Linux. The first public commit is the dated record of what existed. The seed node follows on a rented server; its address lands here and in config.json the day it is up.

2026-10-18

Testnet-1 decided and built: ring of 32

Three decisions by the founder: a public testnet first, ring size 32 (measured: a node accepts a payment in 54 ms, 7.3 kB per payment, an informed attacker names the real coin 3.0% of the time where 3.1% is fair), and a seed node on a rented server. Test coins tVESP with tvsp2 addresses. launch_genesis.py ties the genesis block to the newest Bitcoin block at launch. deploy/ holds the seed-node kit for an Ubuntu server: it refuses to start if the self-test fails, opens only SSH and 8880, mines on one core. The automated test drive now runs on a network of its own, so it can never join testnet-1 by accident. Node v0.9.0.

2026-10-15

Node v0.8.0: review fixes, 44 checks

A silent connection is closed after 20 s and one address holds at most 8 of 64 slots: before, a slowloris attack of 64 idle connections locked every peer and wallet out. Blocks are at most 4,000,000 bytes, a consensus rule: a valid 18 MB block that no node could relay was possible. Peer answers capped at 16 MB. 9,500 malformed requests against every API route: no crashes.

2026-10-15

Payment proofs and recovery codes

proof pay lets a payer prove that one output paid one address an amount, and nothing else; the receiver can do the same from a view key; six forgeries fail in the self-test. A new wallet shows a 55-character recovery code once: the code is the wallet, on any computer. A payment spends from one of the wallet's addresses when one holds enough, so payers comparing rings cannot link your addresses.

2026-10-15

Peer table, sorted inputs, Tor

Addresses from gossip are candidates checked two a round, at most 2 peers per network block, never home addresses on a public node, so one attacker cannot fill a node's peer table. Inputs are listed in key-image order: the old order said which hidden input was bigger. --proxy sends every connection through Tor, name lookups included, and a hidden node stops announcing its address. Node v0.7.0, 42 checks.

2026-10-15

Addresses v2: as many as you like

Subaddresses: give each payer their own address, all unlinkable, one wallet, one view key. Each output has its own R from a sealed anchor, which closes the Janus attack Monero's subaddresses still carry. One-byte view tags halve scanning time. Addresses now start vesp2. Node v0.6.0.

2026-10-15

One range proof per payment; the test drive runs itself

Aggregated Bulletproofs: 736 bytes for a payment's outputs instead of 672 each; a payment is 5.1 kB of JSON; a fresh node checks a block at 15.1 ms per payment. python testdrive.py runs the whole public test drive on two throwaway nodes, 14 checks, five minutes. Node v0.5.0.

2026-10-15

Decoys drawn from measured spending

Decoys were picked by rank; against an attacker who knows how people spend, the real coin was named 7.3% of the time on a young chain and 22% on a busy year-old one. Now drawn as ages from the spending distribution Monero's wallets use: 7.2%, 6.5%, 6.1%. Fair for a ring of 16 is 6.2%.

2026-10-15

Phase 4: network privacy, built and measured

A payment travels quietly from node to node before any node broadcasts it (Dandelion++). leaktest.py runs the node's own routing code in a 200-node simulation: an attacker with 10% of the nodes names the sender's node 11% of the time, 25% without the stem. A trace-back leak in the first version (a "loop" answer that revealed which nodes held a payment) was found and closed the same day, before any network ran it. Per-address limits and bans; mining on several cores, 300 to 420 tries a second on eight. Node v0.4.0, 37 checks.

2026-10-14

Check-everything pass before publication

33 of 33 self-test checks; the whole test drive re-run live on two nodes. A damaged chain file no longer stops a node: it keeps the good blocks, sets the file aside and fetches the rest from peers. Readable transaction summaries. The seven out-of-date statements found on these pages were corrected.

2026-10-12

Join and Breaking pages; code prepared for publication

MIT licence, repository assembled, proof-of-existence fingerprints written. Planned: the code goes public under the Vesper organisation on GitHub; the first public commit is the dated record. Until then the link above is a placeholder.

2026-10-11

Second review pass: node v0.3.0, 33 checks

Per-block difficulty (ASERT-style, 10-minute half-life). 10-block spend lock. Wallets read only new blocks with an encrypted notebook. Rings fetched whole. Block-ID collision and junk-block DoS designed out. Reorganisations cost branches, not the chain. Power-cut-safe saves. Wallet passwords stretched 8x harder.

2026-10-11

Proof of work switched to Argon2id

32 MiB per try, about 90 tries a second per laptop core. Bitcoin mining chips cannot run it. Interim; RandomX likely for production.

2026-10-11

Phase 3, stage one: hidden senders

CLSAG-style rings of 16 and key images. A payment no longer names the output it spends. 20 checks at the time; 640-byte signatures; 35 ms to accept a payment.

2026-10-11

Development fund as a glass box

10% of each reward for 4,204,800 blocks, paid to an auditable one-time key, enforced by consensus. Fund spends are public on chain.

2026-10-11

Phase 2: hidden amounts

Pedersen commitments, Bulletproofs range proofs (672 bytes, batch-verified), two-plus shuffled outputs per payment, view keys open amounts. libsodium backend. 18 checks.

2026-10-10

Phase 1: stealth addresses and view keys

No address ever on chain. Two nodes, one payment each way, a stranger finds nothing in the chain file. 13 checks. Named Vesper; ticker later changed to VESP after collisions with Vesper Finance (VSP) and the bolivar (VES).

2026-10-05

A learning chain first

A complete transparent cryptocurrency in Python, 15 checks, built to understand blocks, proof of work and signatures before adding privacy. Vesper runs on its engine.