No. 001Zecathon 2026 · Core & Tooling

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, further down.

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 explorer
02 / Verify

Paste a txid. Pick the event.

The verifier reads the anchor from the transaction and walks the tree back to the event. It needs nothing but the txid.

Your txid goes to our verifier and to a public lightwalletd server. We keep no logs of either. To involve nobody, run vintage verify on your own machine.

Verify a deposit
Mainnet

> Paste a Zcash txid, pick the event, get a verdict from public chain data in seconds. The verifier lives in the app.

03 / Use

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

04 / Why

Proving you're clean shouldn't mean unshielding.

After the Bitget hacker moved 2,746 ZEC into Ironwood on 30 September, every large shielded deposit became suspect. Exit rails hold them, and the only proof on offer is giving up your privacy.

Today
Trace to the origin
Reveal where the coins entered the pool.
Privacy lost
Find a voucher
Ask an exchange to vouch for you.
Privacy lost
Hand over a viewing key
Your whole history, shown.
Privacy lost
⧗
Wait
One forum user's $589k was still held after 50 days.
Held
With Vintage
◆
Pick the event
The hack, cutoff or block the rail cares about.
Nothing revealed
←
Send with an older anchor
One setting in the send. Still a shielded deposit.
Nothing revealed
✓
The rail checks the txid
A verdict from public chain data, in seconds.
Cleared

Sources: Zcash forum, thread 57497   CoinDesk, 30 Sep

05 / Mechanism

The chain already dates every shielded spend.

01 The tree

A fingerprint per block

Every block ends with a root: one fingerprint of every shielded coin that exists at that moment.

02 The anchor

Every spend names one

A spend must point at one of those roots and prove its coins are inside it. Consensus rejects it otherwise.

03 The check
Mainnet

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.

06 / Events

One proof, any dated event.

One deposit proves it predates every event after its anchor, all at once. The registry labels block heights and nothing else: no addresses, no people, and anyone can check against any height they choose.

HackLive

Exploit inflows

Prove a deposit can't contain funds that entered the pool after a hack, like the Bitget inflow on 30 September.

Tax cutoffDraft law

31 December 2026

A German finance ministry draft, not yet law, would end the one-year tax exemption for coins bought from 2027 and keep it for earlier ones. If it passes, prove the date without handing a platform your keys.

Bug windowSupply integrity

Pre-bug coins

If a counterfeiting bug is ever found, coins older than its window provably weren't minted through it.

HoldingFrom Jul 2027

Held a year

Prove the exact coins you sell are over a year old. Ironwood launched in July 2026, so full-year proofs start in July 2027.

CustomAny block

Your own date

Before a contract, a job, a dispute. Any block height you name, checked the same way.

SnapshotAlready served

Airdrops and votes

Works, but ZAIR and coinholder voting already prove "unspent at the snapshot", which is what a snapshot needs. Use them.

Fresh coins · Payer side
Nothing revealed

Ask your payer to send with Vintage

Coins you received after an event can't be dated by age. But if the person paying you uses an older anchor, the payment itself is provably clean, and you know it the moment it lands.

$ vintage request --to <your address> \
    --amount 0.5 --before bitget-2026-09
Fresh coins · Carry it forward
Optional · one key, one rail

A single-use receipt account

Receive the Vintage payment into a fresh account with its own seed, deposit from it, and let the exit rail check the link with that account's viewing key. It is optional, and the only Vintage feature that discloses anything. What it discloses:

The receipt account's viewing key, therefore the funding payments, the amounts received, the receipt address, and the deposit. Nothing from the user's other accounts. The viewing key cannot spend. Rotate to a fresh receipt account for every use.

The rail can run the check itself with vintage link verify, so the key goes to nobody else. A zero-knowledge version that discloses no key is on the roadmap.

07 / Privacy

Stay shielded all the way to the exit.

Guides today tell you to unshield before depositing, because shielded deposits get frozen. Vintage lets the deposit stay shielded and still clear.

We never seeYour keys

Age proofs need no key of any kind, not even a viewing key.

We never seeYour balance

Amounts, senders and history stay encrypted on chain.

We never keepYour txid or IP

No logs, no analytics, no cookies, no third-party requests. Fonts are served from this site.

You can skip usRun it yourself

The verifier is open source. Your machine, a public lightwalletd, nobody else.

08 / Evidence

Don't trust this page. Check the chain.

No trackingFonts served from this siteOpen sourceMainnet proof da9017e0…e3a7 2 NEAR Intents swaps, proven
Old coins
Mainnet · 23 Oct 2026
Txidda9017e0…e3a7
What it isVintage payment = NEAR Intents deposit
Mined at3,527,813
Anchor root855ccc99…81d98502
Anchor located3,525,693 to 3,525,696
Event height3,525,709 (staged demo)
Roots checked1,303 · 0.06 s
Swap3.668896 USDC
VerdictPASS
Fresh coins
Mainnet · link
Depositdf151ee2…9402
What it isReceipt account → NEAR Intents
Mined at3,527,827
Inputs2 of 2 from da9017e0…, outputs 1 and 2
Funding checkPASS before 3,525,709
Disclosedone retired receipt account's viewing key
Swap5.52164 USDC
VerdictLINK PASS
The control
Testnet spike
Txid18f733e2…9a73
Mined at4,524,646
Anchor root69ee8500…05fce0b
Anchor located4,524,636 to 4,524,641
Event height4,523,439
Roots checked1,918 · 32.0 s
VerdictNOT PROVABLE
09 / Limits

What it proves, and what it doesn't.

Proves
  • 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.
Doesn't
  • 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.
10 / Integrate

One request before you hold a deposit.

An exit rail calls the verifier with the deposit txid and the event. A pass means every coin in the deposit predates that event. It does not identify anyone and it is not a source-of-funds report.

Run the verifier yourself, or call ours. Either way the answer comes from public chain data, so you can check it independently.

GET /verify · trimmed
GET /verify/da9017e0…7095e3a7?before=vintage-demo-2026-10

{
  "verdict": "PASS",
  "network": "main",
  "provisional": false,
  "mined_height": 3527813,
  "before": { "height": 3525709, "event_type": "custom" },
  "anchor": "855ccc99…81d98502",
  "evidence": { "distinct_roots": 1303 }
}
11 / Next

Where this goes.

Roadmap
1
Zero-knowledge receipt links
Prove fresh coins came from a clean payment without showing any viewing key.
Research
2
A clean set defined by the chain
Coins stay provable across any number of hops, with no curated list.
Research
3
Sapling anchors
The same rule holds for Sapling, which reaches back to 2018.
Planned
4
An anchor-provenance ZIP
So any wallet can offer a Vintage send.
Drafted