Vesper · VESP · the evening-star coin

Private by default.
Provable on demand.

Vesper is a privacy cryptocurrency on its own new blockchain, built to outdo both Monero and Zcash. Your money, your business: nobody sees what you earn, what you spend or who you pay, and nobody gets to ask where it came from. Privacy is never optional, so every user hides in the same crowd, and that crowd is three times the size of Monero's. When you do want to prove something, to an accountant, a partner or a court, you hand over exactly one thing and nothing more. Money that works like cash, anywhere in the world, built in the open by people who publish every weakness instead of hiding it.

How it works. No transaction ever names who paid or who was paid. Every payment lands at a one-time key only its owner can recognise, its amount is sealed so the chain can check the books without reading them, and its sender is hidden among 48 possible spenders, three times Monero's crowd. A view key shows your own history to an accountant or a court, and nobody else's.

Receivers hidden Amounts hidden Senders hidden in a ring of 48 Network: the first broadcast is not the sender's Addresses on chain: none, ever Testnet-1: test coins, no value, launching
Why Vesper

Four reasons, each one you can check yourself.

Nothing to see

No address, no amount, no sender. Ever.

Not hidden behind a setting most people never turn on, as on Zcash. Hidden for everyone, on every payment, with no transparent kind of transaction to leak from.

Three times Monero's crowd

Every spend hides among 48 coins.

Monero uses 16. Vesper's decoys are drawn from how people really spend, and the leak is measured in public: an informed attacker names the real coin 2.1% of the time, where 2.1% (1 in 48) would be perfect.

Private, not unaccountable

Prove your own history, to whom you choose.

A view key shows an accountant everything of yours and lets them spend nothing. A payment proof shows one payment to one person and nothing else. Both built in, one command each.

Measured, not promised

Every claim ships with a test.

44 checks run in public on every change, a page lists every known weakness, and the network leak has a number, not an adjective. Privacy that is attacked in the open is the only kind worth trusting.

Why we are doing this

Nothing to buy. Nothing for sale. Not yet even a coin worth anything.

Security and privacy come first, and nobody here treats that as a game. The goal is real privacy in everyday money, the kind cash used to give and no longer can, and a coin good enough to be the one serious people reach for.

Being asked where money came from and where it is going, every time you pay someone, is not how free people should have to live. Cash cannot cross the world; a private currency can. Vesper is meant to be the modern, legitimate way to do that, built in the open, tested in the open, and launched the only fair way there is: mined from block one by anyone who shows up.

Which is exactly why there is no sale and no price. Test coins have no value, the code is unaudited, and the honest state of its privacy is written plainly further down this page and on Breaking Vesper. Privacy that is claimed is worthless; privacy that is measured and attacked in public is the only kind worth having.

The problem

Most blockchains are the most public ledger ever built.

On Bitcoin and Ethereum every payment is written down forever, in the open, with both addresses attached. Give an analyst one address and they can walk your whole financial life: who pays you, who you pay, how much, when. Companies sell exactly that service.

Two coins fixed it, each with a flaw. Monero hides the sender in a ring of 16, the real output and 15 decoys, a small crowd that statistics have cracked before. Zcash has stronger math but made privacy optional, so almost nobody used it and the chain leaked anyway. Both still reveal which computer first announced a transaction.

Vesper sets out to beat both. It takes the best idea from each, mandatory privacy and a hidden sender from Monero, strong proofs from Zcash, adds the two things they lack, a bigger crowd for every spend and a way to prove your own history on demand, and is written in a few thousand lines of Python, with libsodium doing the curve arithmetic, so you can read every trick line by line. Where it stands against that aim today is stated plainly further down: Monero's design with three times its ring, not yet more.

What is different

Vesper against Monero and Zcash, side by side.

CommitmentMoneroZcashVesper
Privacy is mandatoryYesNo, optional, and most people skipped itYes. There is no transparent transaction type.
Receiver hiddenStealth addressesShielded addressesStealth addresses, done
Amount hiddenYes (RingCT)YesYes, done: commitments the chain checks without reading, with range proofs
Sender hiddenRing of 16: the real output and 15 decoysZero-knowledge proof over the shielded poolHidden in a ring of 48 today, three times Monero's: an attacker who knows how people spend names the real coin 2.1% of the time, where 2.1% is fair. Hiding among every output on the chain is the research target, not a promise.
Prove your own historyView key, incoming onlyViewing keysView keys from day one: see everything of yours, spend nothing. Payment proofs for one payment at a time.
Network layerDandelion++None built inDandelion++-style stem relay, built; the leak is measured and published (an attacker with 10% of nodes names the sender's node 11% of the time); Tor with one flag
MiningRandomX: favours CPUs, hostile to mining chipsEquihash: graphics cards and chipsArgon2id, memory-hard, hostile to Bitcoin's chips; an interim choice, RandomX likely for production
Can a person read the code?Hundreds of thousands of lines of C++Rust, Halo 2A few thousand lines of Python written to be read
Speed budgetLarge transactionsProofs take seconds to createEvery phase reports milliseconds; the rule is nobody waits
How a payment hides

As many addresses as you like, a new key every time.

A Vesper address is two public keys made from two secret numbers, and one wallet hands out as many addresses as it likes, none linkable to another. The values below are from a real run of demo.py on node v0.9.0 at testnet-1 settings.

1 · Bob publishes an address

Two secret numbers on his PC, as many addresses as he likes. His first, and one he hands only to Carol: they share no key, and both pay into the same wallet.

tvsp2BrctjexB79KJMX1chV8TumT…FfzDtCBA
tvsp2UPS8mvLREWroWLLcXiH1fFx…paPFCNAb
2 · Alice pays him twice

Each payment draws a fresh secret, publishes its own R, and lands at a fresh key with a sealed amount. Two payments of 5 tVESP to the same person: nothing in common.

key 68ca195ef35e03d5dd68f017…
sealed amount cef674c062aa6d8c…
key e3b09ebac0c7e2e5642f1090…
sealed amount b801cb38eafe0bcf…
3 · Eve scans the chain

She has her own keys and all the time in the world. She recomputes the test for every output.

payment 1 is Eve's? False
payment 2 is Eve's? False
4 · Bob, and his accountant

Bob's view key finds both instantly. His accountant, holding only the view key, sees the same two payments and can spend neither.

accountant sees payment 1: True
accountant sees payment 2: True
accountant can spend: False

The whole trick is two lines of arithmetic on an elliptic curve. The sender computes the one-time key from Bob's public keys D and C; Bob recomputes it from his private view key, because a·R equals r·C. Spending needs the private spend key as well.

P = H(r·C)·G + D     (sender builds the one-time key)
x = H(a·R) + b + m      (only Bob can derive the key that spends it; m is the per-address offset, 0 for his first address)

Give someone a and B and they can list your incoming payments forever and never move a coin. That is the view key. Monero has one too; Vesper makes it, and the one-payment receipt, a first-class tool rather than an afterthought.

What each person sees in one transaction

Alice pays Bob 12.5 VESP from a 50 VESP mining reward (keys from the recorded test drive). Switch viewpoints.

Input: one of 48 outputs, unknown which

ring of 48 existing outputs, sorted; the real one is among themsealed
key image 79547d2a8209… a one-way spent marker: seen twice means double spend
one ring signature: proves the signer owns one of the 48, not which1,600 bytes

Outputs: one-time keys, sealed amounts

#0  b6e38e6d9ab5…sealed
#1  fa6ba22488df…sealed
fee0.00001 VESP
range proof, one for both outputs736 bytes
Someone spent one of 48 possible outputs and made two sealed outputs. The chain verified three things without learning which output, who, or how much: the ring signature (one of the 48 is really theirs), the spent marker (never seen before), and that sealed inputs equal sealed outputs plus the fee. Known limit: a crowd of 48 is three times Monero's, not the whole chain.
Speed, measured

Privacy that nobody waits for.

Measured on an ordinary laptop with receivers, amounts and senders all hidden: Python with libsodium doing the curve arithmetic. Numbers from the self-test.

64ms
for a node to accept a payment at a ring of 48: ring signature, spent marker and one joint range proof checked (45 ms at 16, 54 at 32)
33ms
per payment when a fresh node validates a block of 20 (15 ms at a ring of 16, 23 at 32)
15ms
for a wallet to re-check when nothing is new: it reads only new blocks, never the whole chain
204ms
for the sender to build a payment, once
4kB
per payment in binary (9.5 kB as JSON): 1,600 bytes of ring signature for a ring of 48, one 736-byte range proof
90tries/s
mining per laptop core, 300 to 420 on eight: Argon2id with 32 MB per try; 11 ms to check a block's work

Each layer has a price on the node: about 4 ms per payment with only receivers hidden, 8.4 with amounts sealed, 18.6 with senders hidden in a ring of 16, back to 15.1 with one joint range proof per payment, 23 at a ring of 32, and 33 at the ring of 48 the testnet runs. Ring signatures cannot be batch-checked, which is one reason the research target matters: a proof of membership among every output has to beat the ring's per-input cost to ship.

Roadmap

What is hidden, phase by phase.

Done

1. Stealth addresses and view keys

No address ever appears on the chain. Wallets find their coins by scanning. View keys audit without spending.

Done

2. Hidden amounts

Amounts are sealed in commitments with one 736-byte range proof per payment, batch-checked per block. Nodes prove inputs equal outputs and nothing is negative without seeing a number. Every payment has at least two shuffled outputs.

Done, stage one

3. Hidden senders

Every input is signed as one of a ring of 48 outputs, three times Monero's, with a one-way spent marker that makes double spends impossible without ever naming the output. Monero's strength. Stage two, hiding among every output on the chain, is research with no design chosen yet. 44 self-test checks across all phases.

Done, measured

4. Network privacy

A payment travels quietly from node to node before anyone broadcasts it, so the first announcer is a relay, not the sender. Measured 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. Nothing between nodes is encrypted; one flag sends everything through Tor.

Read this

A learning chain. Not money.

Vesper has no value, is not listed anywhere, and never will be. Testnet-1's tVESP are test coins, worth nothing by design. It exists so a person can read exactly how private money works and then try to do it better.

Homemade privacy cryptography is unaudited. The real projects spent years and several audits getting this right, and their first versions still had traceability bugs. If you want private money for real, use Monero.

What the chain still shows an observer today, stated plainly: that the sender is one of 48 outputs rather than one of all of them (an attacker who knows how people spend names the real one 2.1% of the time; fair would be 2.1%), the fee, the amount of each mining reward, the count and size of inputs and outputs, and that the outputs of one payment belong together. Off the chain, the first broadcast of your payment comes from a relay rather than your node, but an attacker running a share of the nodes still guesses your node about that share of the time, your peers see your address unless you run through Tor, and a dishonest node could feed your wallet decoys of its choosing, so for real privacy you run your own node, the same rule Monero users live by. The self-test includes a check that lists exactly that, so the claim on this page and the code never drift apart. The honest line today: Monero's design with three times its ring, which is still a crowd of 48 and not of everyone. "Untraceable" waits for stage two of phase 3 and an outside audit.

Run it

Ten minutes on your own PC.

Python 3.10 or newer and pip install -r requirements.txt. Everything lives in one folder. python coin.py reset-chain starts a fresh chain and keeps your wallets. A coin can be spent, or used as a decoy, only once it is 10 blocks old, so a new chain needs 48 such coins, about 58 blocks or fifteen to thirty minutes, before its first payment: there is nothing to hide among before that. On testnet-1 your node finds the network through the seed node in config.json; the coins are tVESP and worth nothing.

  1. selftest.bat runs 44 checks, including that the miner's address never appears on the chain, that amounts stay sealed, that a spent output is never named, that the first broadcast of a payment is not the sender's, and that a view key can see but not spend.
  2. wallet.bat creates your wallet, two secret numbers behind one password, and shows your tvsp2… testnet-1 address and a 55-character recovery code. Write the code on paper: it is the wallet, and anyone who sees it can spend.
  3. start_node.bat starts the node, explorer and miner at http://127.0.0.1:8880. Every reward lands at a different one-time key.
  4. explorer.bat opens the explorer. There is no address search. There is nothing to search.
  5. wallet.bat again shows your balance, found by reading the blocks it has not seen yet and opening the outputs that are yours. That scan is what privacy costs.
  6. testdrive.bat runs the whole test drive by itself: two throwaway nodes, a payment each way, a search of the raw chain, five break-it attempts, about five minutes.
python coin.py send tvspTHEIRADDRESS 12.5     # pay someone; change comes back to you unlinkably
python coin.py wallet new-address --label carol   # one more address, for one payer; nobody can link it to the others
python coin.py wallet export-view            # write a view-key file: can see, cannot spend
python coin.py watch data\wallets\default.viewkey.json   # what an accountant with your view key sees
python coin.py proof pay TXID                # prove one payment to one person, and nothing else
python node.py --proxy socks5h://127.0.0.1:9050   # every connection to a peer through Tor
python demo.py                               # the math, step by step, with timings