Zephyr supply review

Is Zephyr's supply right? What the code and the chain show

Version 1.0, 2026-11-14. Short version; the full report has every commit, code line, transaction id and the tools to repeat each check.

Nobody asked me to do this. I took it on because one question kept coming back in the community: is the supply right, has anyone outside the project ever checked it, and does the audit of the bridge by Sherlock cover that? So I looked at what happened around the 2025 audit. I have tried to claim nothing I cannot back up. Each point below says where it comes from: the public code, the chain itself, or what a project has said. Where I only have the project's word, or could not decide between explanations, I say so. Every quotation comes from a text that was read in full. Corrections of fact are welcome.

This review establishes what happened and what the supply is. It does not judge who is to blame.

The question, and the answer in short

Is the supply of ZEPH right? I split that into five questions that public data can answer.

A few terms first:

1. Can the number the chain shows be relied on? Yes, as a count, up to block 902083 (2026-11-07), where my copy of the chain ends. Up to that block every transaction passes the checks that keep a transaction from creating coins, no output was spent twice, and no block paid its miner more than reward and fees allow. The totals of all four assets agree with the coins generated and the public conversions at both points where they can be compared: right after the audit and at that last block. What such checks cannot exclude is a flaw in the rules themselves that nobody knows of (question 5).

2. What went wrong before the audit? Two defects in consensus code that Zephyr took over from Haven Protocol. Until 2024-10-13 a transaction could create coins, and from 2023-10-01 until 2025-01-23 one asset could be spent as another. Both were used. Both are closed.

3. What could the audit do, and what could it not? It made the supply countable for the first time. It could not separate coins that had been emitted from coins that had not: amounts and histories are hidden, and the chain offers no way to tell them apart. After the audit the chain held 2,067,576 ZEPH more than had been emitted: 1,921,650 minted once for an exchange balance that was not audited in time, and 145,926 among the audited coins. Zephyr announced the mint and how it is offset: block rewards are about 18 % lower for as long as they follow the emission curve, about ten more years. By my projection that offsets about 1.8 million of the mint, not all of it. The 145,926 are not offset.

4. What stays unknown? How many coins each defect produced, who made the transactions, and whether the unaudited exchange balance consisted of emitted coins. The second defect can explain at most about 262,688 ZEPH of the excess. Of the three transactions with invalid range proofs Zephyr says itself that it was "not able to determine if or how much" inflation came from them.

5. Has anyone outside the project reviewed the code of the node? Not that I could find. In 2025 Zephyr said no third-party review was planned. The audit by Sherlock that it commissioned in 2026 covers the bridge: the scope Zephyr published names the bridge's smart contracts and off-chain services, not the node. Asked about it in July 2026, Zephyr's marketing lead wrote: "Scoped to the EVM bridge only ... Not the L1" (the L1 is Zephyr's own chain), and that a review of it is "a reasonable step" as the protocol grows. This review is not a code audit either: it checks the chain against the rules as they are written.

In short: up to the block I checked, the number the chain shows is a sound count. At the end of the audit (block 536000) it was 2,067,576 ZEPH higher than ordinary emission to that block: 1,921,650 that Zephyr minted for an exchange balance that was not audited, for the larger part offset by lower block rewards in the years after, and 145,926 among the audited coins, which the audit had no way to tell from the rest.

The findings behind the answers

1. Zephyr's asset code came from Haven Protocol (code). Of the non-Monero lines in Zephyr's first commit (2023-05-26), 38 % are word for word Haven's code of that day. The Djed rules on top are Zephyr's own. Zephyr has said the same about the defects: "both Zephyr exploits were inherited from "audited" Haven code portions" (X, 2025-08-25).

2. Two consensus defects (code):

3. Both were used (chain). I scanned every transaction from genesis to block 902083: 1,265,146 transactions, 128 million ring members, every range proof.

Amounts are hidden, so the chain shows that it happened and when, not how much or by whom.

4. How the fixes were made (code, release notes, Discord). Defect A was closed in v2.0.0 by a new verification function. The release notes present that release as the yield feature and mention no security fix. Zephyr's own account (2025-01-13): the three transactions "fail an updated range proofs check ... introduced in Zephyr v2.0.0 as we refactored that section of the code", and the earlier check "was incorrect, an oversight on our part". So by its account the gap was closed as a by-product, and the three transactions were noticed only after Haven's exploit. The code is consistent with that. Defect B was closed by the v2.0.2 hotfix and explained two days later: reported by an anonymous developer, 30 transactions, and "our best educated guess" of about 200,000 ZEPH of inflation.

4a. What Zephyr said beforehand (Discord).

5. The audit (code, chain). From 2025-03-31 to 2025-06-15 normal transfers were off and every holder had to move each asset once with the amount in the open. Coins not moved became invalid. I summed all 15,040 audit transactions: 5,164,648 ZEPH, 1,023,509 ZRS, 88,315 ZSD and 185,474 ZYS.

This method counts the coins that were presented. It cannot tell which of them had been emitted, and with hidden amounts and histories no audit of this kind can.

What the chain held right after the audit is these audited coins plus three other things: 5,164,648 ZEPH audited, 2,289,862 in the reserve, 373,779 paid to miners while the audit ran, and 1,921,657 paid in block 536000 (the one-time mint and that block's reward). Together 9,749,946 ZEPH, the first line of the table below.

6. The supply (code, chain).

ZEPH
On chain right after the audit (block 536000) 9,749,946
Emitted up to that block, without the mint 7,682,370
More than was emitted 2,067,576
of which a one-time mint in block 536000 1,921,650
of which excess in the audited supply itself 145,926

6a. Which defect explains it (Zephyr's figures, and my inference). Morphing turns one unit of another asset into one ZEPH, so every morphed unit is missing from that asset at the audit. Rebuilt from the chain, 262,688 units of the other assets are missing after the audit (Zephyr's own estimate was 256,634). Defect B can therefore explain at most about that much, and Zephyr's own guess is about 200,000. At least 1.8 million of the excess is not explained by defect B. Defect A is the only other known cause, but the chain does not show what the three transactions created, so I do not attribute the rest to them. Zephyr's post-audit report (X, 2025-09-06) leaves it open as well: "We were not able to determine if or how much net chain-wide inflation originated from this vector, but the possibility that this contributed could also not be ruled out."

7. The one-time mint (code, chain, Discord).

8. Where the extra coins were I cannot say, and I do not want to guess. Either the unaudited exchange balance was mostly made of them and the audited coins were nearly all genuine, or that balance was genuine and about two million extra coins were among what others audited, or something in between. Both cases take Zephyr's word that the mint replaced an existing balance. An exchange holds what its customers deposit; nothing here establishes anything about the exchange's conduct.

Haven, where the code came from (code)

What I could not establish

Checking my work

Every finding can be repeated with a synced v2.3.0 node and the public repositories. My copy of the chain ends at block 902083 (2026-11-07); it is identical, by block hash at that block, to the chain of a node running the official v2.3.0 binary. The full report lists the transaction ids, the code lines with links, the programs and their results.

I made this review with AI assistance (Claude Fable 5.2, Anthropic); the README says how. That is why every finding comes with the means to repeat it.

Author's note

The review above sticks to what can be shown and does not judge. This note is my opinion, and only that.

I think the team handled a bad situation well. Two defects in inherited code had been live for well over a year. Both are closed. Once the scope became clear, the team asked exchanges to stop deposits and ran a migration that gave the chain a supply that can be counted. They published figures along the way, credited the developer who found the second defect, announced the mint before it happened and wrote their own postmortem. A small team did this in a little over five months. It could have ended far worse.

It was not flawless. Ordinary transfers were off for about 76 days, some early statements were more certain than the evidence allowed, and a part of the excess is still unexplained. As far as I could find, nobody outside the project has reviewed the node's code, and I hope that follows.

I should say where I stand. I bought a small amount of ZEPH in 2023, lost sight of the project and missed the audit, so those coins are gone. None of that changes how I see it.

If I had to grade them, I would give them a B to B− overall.