Proof of agefor private money.
Every shielded Ironwood spend names an earlier state of the note tree, and consensus checks it. Vintage turns that into a claim anyone can verify from one txid: these coins were already here before a hack, a tax cutoff, a bug window, or any block you name. Their amount, sender and history stay shielded.
Covers coins received before the event you pick. Fresh coins have their own path, explained here.
A real mainnet transaction, da9017e0…7095e3a7: the deposit into a NEAR Intents swap. Its coins were already in the tree 13 blocks before the event block (a staged demo event, not a real hack). That is the whole proof.
Open on explorerPaste a txid. Get its age.
Every shielded Ironwood spend is built on a dated state of the pool. Vintage finds that date from public chain data and lists the events the coins predate.
Your txid goes to our verifier and to a public lightwalletd server. We keep no logs of either. To involve nobody, run vintage age on your own machine.
> The answer names the block by which every coin was in the pool, and which events that predates.
Checks run since launch
We count checks per day, by verdict and event. Nothing else: no txids, no IPs, no times of day. See the raw numbers
Proving you're clean shouldn't mean unshielding.
After the Bitget hacker moved 2,746 ZEC into Ironwood on 30 September, screening can't tell a shielded deposit from the stolen coins. Exit rails already hold shielded deposits for review, and the only proof on offer is giving up your privacy.
The chain already dates every shielded spend.
A fingerprint per block
Every block ends with a root: one fingerprint of every shielded coin that exists at that moment.
Every spend names one
A spend must point at one of those roots and prove its coins are inside it. Consensus rejects it otherwise.
Older root, older coins
If the named root is older than the event, the coins were already there. Nothing else about them is revealed.
No blocklist. No new cryptography. A rule Zcash already enforces on every spend.
Don't trust this page. Check the chain.
| Txid | da9017e0…e3a7 |
| What it is | Vintage payment = NEAR Intents deposit |
| Mined at | 3,527,813 |
| Anchor root | 855ccc99…81d98502 |
| Anchor located | 3,525,693 to 3,525,696 |
| Event height | 3,525,709 (staged demo) |
| Roots checked | 1,303 · 0.06 s |
| Swap | 3.668896 USDC |
| Verdict | PASS |
| Deposit | df151ee2…9402 |
| What it is | Receipt account → NEAR Intents |
| Mined at | 3,527,827 |
| Inputs | 2 of 2 from da9017e0…, outputs 1 and 2 |
| Funded by | da9017e0… is both the first NEAR deposit and this account's funding payment (outputs 1 and 2) |
| Funding check | PASS before 3,525,709 |
| Disclosed | one retired receipt account's viewing key |
| Swap | 5.52164 USDC |
| Verdict | LINK PASS |
| Txid | 18f733e2…9a73 |
| Mined at | 4,524,646 |
| Anchor root | 69ee8500…05fce0b |
| Anchor located | 4,524,636 to 4,524,641 |
| Event height | 4,523,439 |
| Roots checked | 1,918 · 32.0 s |
| Verdict | NOT PROVABLE |
What it proves, and what it doesn't.
- Every Ironwood coin the deposit spends was already in the pool before the event block.
- It holds by consensus. Nobody can fake an older anchor.
- It covers every event after the anchor at once.
- Date coins received after the event. They need the payer-side path.
- Cover transparent, Sapling or Orchard inputs.
- Say who sent the coins or how much. It only rules out known events.
- Hide that you chose to prove it. An old anchor is visible on chain, so use it only when you deposit somewhere that already knows you.
- Make it mandatory. It's yours to offer, never a rail's to demand from everyone.
Go deeper.
Questions, answered.
What does Vintage prove?
That every shielded coin a transaction spends was already in Zcash's Ironwood pool before a block you choose. It says nothing about who sent the coins or how many.
Why would anyone need that?
After a hack, screening can't tell stolen shielded coins from anyone else's, and exit rails can hold shielded deposits for review. A Vintage proof shows your coins were there before the hack, so they can't be the stolen ones.
Can a proof be faked?
No. Zcash consensus checks every spend's anchor. Coins that arrived after the event aren't in any earlier state of the pool, so no valid transaction can spend them under an earlier anchor.
What do I give up?
No keys, amounts or history. The one visible trace: your transaction uses an older anchor than most, so use it where you're already known, like an exchange account.
What if I received my coins after the event?
Ask the person paying you to send a Vintage payment. You can then link your deposit to it with one single-use account's viewing key. A zero-knowledge version that shows no key exists as a research prototype.
Is there a blocklist?
No. The registry only labels block heights, like the Bitget hack's. Nothing marks a coin or a person as bad, and a failed check is not a flag.
Do I have to trust you?
No. The verifier is open source and reads public chain data. Run vintage verify against your own node and you get the same answer. Our public verifier keeps no logs.