zerotracedocs

Refund of the earlier vault

Every note held in the earlier vault at its last state is refunded in full, automatically, into a private note of the vault.

On 12 October 2026 the earlier ZeroTrace vault (0xf3935bec6247170B28e1755c85957A72f243D84D) was emptied by a forged proof, which its verifier accepted because of a flaw in the proof system's library (see the post-mortem). Every note that was still yours in that vault is refunded in full, into a private note of the vault.

Who is refunded

Every note that was unspent in the earlier vault at its last state, block 86632173, just before it was emptied:

A note you had already spent, sold or unshielded by then is not refunded: what it held had already left it.

How much

Each note is refunded what it was worth at that state, to the wei: what unshielding it would have paid. The refund contract holds the whole amount owed to every note, 90,409,186.61 ZERO.

WhatHow it is worked out
A note of s sharess × (B + 1) / (S + 1,000,000), rounded down
B, the earlier vault's ZERO at that state90,422,335.996 ZERO
S, its shares at that state20,520,873,138,048,082,021,922,500,621,968

The ZERO arrive as a new note of the vault, at the vault's share price when the refund is paid. From then on the note earns like any other.

How to get it

Turn on privacy with the same wallet

Open the app and turn on privacy with the wallet you used before. Your keys are the same as in the earlier vault, so the app finds your notes there.

Sign each refund

The app refunds your notes by itself: one refund for every two notes, each asking for one signature in your wallet. You need no ETH: the refund contract pays the gas.

See it in your balance

Each refund shows in your history as Refund, and the ZERO are in your private balance, ready to send, sell or unshield.

A refund above 10,000,000 ZERO is paid 24 hours after you sign it, automatically: the app shows when it arrives, and you need do nothing more. Smaller refunds arrive at once.

A payment link paid in the earlier vault is refunded to whoever opens it: open it on the claim page with privacy turned on, and its ZERO arrive in your own private note.

There is no deadline. A note can be refunded once, by whoever holds its keys.

What stays private

A refund goes through the same ERC-4337 path as a private transaction: your address does not appear on-chain, and the refund lands in a private note only you can read. What a refund makes public is the size of the notes it refunds, as an unshield does.

The refund contract

NoteRefund (0x702DF8c7b312b06Fc6947Faf788C5deF7776DBE1) holds the refund and pays each note once. It checks every claim with the vault's current verifier, against the earlier vault's note tree as it was at block 86632173, so only a note that was yours then can be refunded. What is not claimed stays in the contract for its holders, with no deadline; only in an emergency, with claims paused, can its admin withdraw it.

A refund above 10,000,000 ZERO is recorded when it is claimed and paid 24 hours later; until then the guardian can stop it. Anyone can pay it once the 24 hours have passed, and the team's keeper does.

It runs behind a proxy, like the vault: its guardian can pause claims, and its upgrader can replace its code. Both roles are described in the trust model, and the contract in Contracts.

On this page