The Hand of God: What Q3's Coinholder Retroactive Grants Vote Tells Us

What I have disliked most about the Coinholder-Directed Retroactive Grants process to date is that it can sometimes feel like the hand of a god coming down to bless you with money.

Or not.

And a god does not need to explain herself.

The lack of feedback matters. If your proposal is rejected, you know the verdict, but you may learn almost nothing about why your dreams have just been crushed.

And most importantly you don’t know what you could change that might help before applying again.

I raised this problem last December when comparing CDRGP with Zcash Community Grants. ZCG can feel slower and more bureaucratic, but its meeting minutes leave a fairly detailed trail of what committee members thought about a grant and why.

With coinholder voting, the result is visible, but the reasoning behind it largely disappears. That has always struck me as the weakest part of the process.

Q3’s binding vote ballot includes an improvement, and it’s a very good one.

The voting wallets added four choices for each proposal:

  1. Accept
  2. Reject - Do Not Support the Proposed Project
  3. Reject - Would Reconsider in a Future Round at a Lower Amount
  4. Abstain

That third option is important. It begins to separate “I do not support this project” from “I might support this project, but not at this price.” It still does not tell an applicant everything they would like to know, but it gives considerably more information than a simple YES/NO decision.

That matters particularly for retroactive grants, because the applicant has already taken the execution risk. If coinholders think the work was useful but the reimbursement request is too high, that is information worth signalling.

This was also the first binding CDRGP vote where coinholders could vote through the ZODL, Zkool and Vizor wallets.

The detailed results are not laid out in the public results announcement. You need to use one of the supported wallets and view the individual tallies there.

I logged into Vizor this time and recorded the results. The complete vote tally looks like this:

Q3 Coinholder-Directed Retroactive Grants results

I have grouped the results into the same three price bands FPF used when it published the 37 proposals.

Under USD 25,000

14 proposals · USD 155,741.20 requested · 2 accepted, 12 rejected

Proposal Request (USD) Accept Reject - Do Not Support Reject - Lower Amount Abstain Result
Zcash Grants Hub 3,050 79,508.00 1,391,627.88 32.63 710,283.38 Reject
ShieldedScan 4,060 524,770.25 1,650,918.13 439.88 5,324.63 Reject
ZecKit Post-M3 Stabilization and Developer Adoption 5,000 396,819.88 1,671,151.75 0.00 113,478.38 Reject
zcashtocash via ZcashLabs 6,000 1,566,863.75 1,845.50 289.75 610,683.25 Accept
zec-ironwood-reconcile 8,250 408,984.00 1,649,423.13 11,429.50 109,338.00 Reject
Gleyo 9,081.20 63,859.75 2,004,999.75 1,187.88 109,139.38 Reject
Self-Sovereign Zcash Testnet Faucet 9,280 106,078.38 1,952,787.50 12,896.50 107,460.50 Reject
CyphZec. com 10,000 60,769.13 2,012,174.63 1,833.75 104,432.38 Reject
ZecLedger 10,000 404,349.13 1,663,779.50 846.13 110,234.00 Reject
lightwalletd-rs 10,720 104,752.88 1,777,439.63 15,713.25 281,303.88 Reject
Blindvault 17,000 88,976.63 1,806,783.25 176,932.63 106,545.13 Reject
Zallet RPC Parity Harness 20,000 86,930.75 1,807,452.00 3,496.50 281,366.38 Reject
Zecmap 21,300 178,398.63 1,383,932.00 11,254.50 605,677.13 Reject
Connaugh Zcash Videos 22,000 757,044.25 187,236.63 196,044.00 1,038,923.25 Accept

USD 25,000 to USD 150,000

12 proposals · USD 821,650 requested · 4 accepted, 8 rejected

Proposal Request (USD) Accept Reject - Do Not Support Reject - Lower Amount Abstain Result
ZAP1 28,000 87,143.88 1,792,545.75 13,823.00 285,716.00 Reject
ZecBooks 32,000 101,026.00 1,779,666.13 190,131.75 108,415.63 Reject
CipherPay 35,000 1,988,112.00 83,142.13 1,752.63 106,221.38 Accept
Zafu Browser Extension 38,000 92,628.75 1,788,095.50 12,738.75 285,739.63 Reject
Zapp 40,000 92,218.38 1,976,691.63 2,823.63 107,505.88 Reject
Open-Source Zcash Hardware-Wallet SDK 40,000 123,819.75 1,767,283.75 179,654.63 108,480.75 Reject
Nozy Wallet 60,000 521,243.63 1,648,338.63 3,818.13 5,802.25 Reject
THORSwap/Metro 60,000 1,467,036.75 8,473.25 640.38 703,090.75 Accept
Expanding Zcash In Unstoppable Wallet 80,000 1,436,595.00 139,620.75 1,383.75 601,603.88 Accept
ZcashNames 122,400 44,642.38 1,419,201.38 7,309.75 707,876.38 Reject
Frontier Compute Zcash Security Research and Remediation Pack 136,250 171,960.00 1,884,711.13 13,472.63 109,033.50 Reject
Zebra Critical Vulnerability Bug Bounty 150,000 1,392,929.25 4,122.00 622,261.38 159,926.88 Accept

Over USD 150,000

11 proposals · USD 8,036,992 requested · 11 accepted

Proposal Request (USD) Accept Reject - Do Not Support Reject - Lower Amount Abstain Result
Bonus Grant for Ironwood zk-SNARK Formal Verification 261,058 2,170,803.13 3,736.75 1,358.25 3,305.88 Accept
CipherScan 375,000 2,169,040.63 18.88 5,960.63 4,124.13 Accept
Temporary Detectable Unlimited Mint and Sell Exploit 400,000 2,145,016.88 3,138.13 25,940.00 5,096.50 Accept
Five Critical Zebra Consensus Divergence Vulnerabilities 425,000 2,095,860.88 4,228.63 75,624.13 3,464.63 Accept
Zec.rocks - 16 months of uptime for Zcash wallets 584,992 1,970,715.00 29.50 103,761.25 104,709.38 Accept
Ironwood external audit reimbursement 599,000 2,175,934.38 60.88 316.38 2,951.25 Accept
Ironwood zk-SNARK Formal Verification 738,942 2,177,498.25 0.25 7.25 1,724.38 Accept
Orchard Counterfeiting Vulnerability Bug Bounty 750,000 2,179,062.50 19.00 98.25 0.38 Accept
Taylor Hornby Bonus Grant for Orchard Counterfeiting Vulnerability Bug Bounty 750,000 2,174,540.63 2,823.88 96.50 1,763.00 Accept
ValarGroup Ironwood Work 1,203,000 2,174,891.50 47.38 3,121.88 1,214.50 Accept
ZODL Q1 & Q2 2026 Core Protocol Development 1,950,000 1,755,093.00 286,654.63 137,082.00 474.25 Accept

A Kind Note: My totals are USD 810 higher than FPF’s review post, both overall (USD 9,014,383.20 vs 9,013,573.20) and in the top band (USD 8,036,992 vs 8,036,182). The Project Tachyon formal verification request was listed as USD 810 too low, and Tachyon corrected it to USD 738,942 in the same thread. I have used the corrected figure..

These figures were transcribed by hand from the Vizor wallet display, not exported from the voting software itself. I have not compared them with what ZODL or Zkool show. I made a CSV, with a price-band column for sorting, and will try to attach it here. If you spot a discrepancy in the table, please say and I’ll correct it.

There are 37 proposals asking for USD 9,014,383.20. Seventeen were accepted, twenty were rejected. No proposal was ultimately classified as “Would Reconsider in a Future Round at a Lower Amount.”

But that last fact is where the interesting part begins, because the underlying tallies show that coinholders did use the new option, sometimes in very large numbers.

Edit: Updated to reflect that the result for Connaugh’s grant was officially updated from Abstain to Accept.

12 Likes

Since we have the floor this my only concern is. I thought the grantee only had to receive 420,000 votes to pass?

That’s only half of the requirement. Quoting ZIP 1016:

For coinholder votes, a minimum of 420,000 ZEC (2% of the total eventual supply) MUST be voted, with a simple majority cast in favor, for a grant proposal to be approved.

That means the total of all votes for a proposal (on any answer) must be at least 420,000 for the vote to be valid; then separately at least 50% of votes cast must be for Approve.

2 Likes

The headline count does NOT give the full story

By the published headline count, this round looks quite savage. More than half the applications were rejected. By value, it looks completely different: the 17 accepted proposals represented USD 8,389,992, or about 93.1% of all the money requested. The 20 rejected proposals represented only USD 624,391.20.

That difference makes sense once you look at what was funded. Q3 contained a large group of security, remediation and Ironwood-related requests, including bug bounties, formal verification, emergency engineering work and external audit costs. Coinholders overwhelmingly approved much of that work after the fact.

Some of those votes were not even remotely close. They were landslides.

The USD 738,942 Ironwood formal-verification request received 2,177,498.25 ZEC Accept. The USD 750,000 Orchard counterfeiting vulnerability bounty received 2,179,062.50 ZEC Accept. ValarGroup’s USD 1.203 million Ironwood work received 2,174,891.50 ZEC Accept.

Retroactive funding did its job rather well there. Something serious happened, people spent money and did work in response, there was finished output to inspect, and coinholders could decide afterwards whether they thought it was worth paying for.

The lower-amount option DID produce information

At the headline level, our fine new voting option appears to have done nothing. None of the 37 proposals ended with “Would Reconsider in a Future Round at a Lower Amount” as its displayed outcome. Twenty simply show “Reject - Do Not Support the Proposed Project.”

But look underneath the headline result, and the picture changes.

For ZecBooks, 190,131.75 ZEC selected the lower-amount option. That was about 9.7% of all rejection votes. For the Open-Source Zcash Hardware-Wallet SDK, 179,654.63 ZEC selected it, about 9.2%. Blindvault received 176,932.63 ZEC in the same category, about 8.9%.

None came close to having the lower-amount option beat outright rejection. So I would not claim that the wallet I used displayed the wrong result.

But there is still information there.

If nearly one in ten rejecting ZEC is effectively saying “not at this price”, that is different from everybody saying “I don’t support this”. The headline result strips that distinction away unless the applicant opens a voting wallet and studies the underlying tally.

That seems a waste of a useful signal from coinholders. But we can use this experience as an opportunity to improve that aspect for the next binding vote.

The most interesting price signal came from a grant that passed

The clearest example is actually the USD 150,000 Zebra Critical Vulnerability Bug Bounty.

It received 1,392,929.25 ZEC Accept, 4,122 ZEC Do Not Support, 622,261.38 ZEC Reconsider at a Lower Amount, and 159,926.88 ZEC Abstain.

So it still passed comfortably even when the two rejection options are combined. But a very large block of voting power was also saying something specific about price. Around 31% of the non-abstaining vote selected the lower-amount option.

“Accepted” is therefore a correct verdict, but it is an incomplete description of what coinholders said.

The same pattern appears elsewhere, just less dramatically. ZODL received 137,082 ZEC for lower amount despite being accepted. Zec.rocks received 103,761.25 ZEC. The Five Critical Zebra Consensus Divergence Vulnerabilities proposal received 75,624.13 ZEC.

So I don’t think the Q3 experiment shows that the lower-price option failed.

Quite the opposite.

Coinholders used it. The headline result strips that distinction away unless the applicant looks at the underlying wallet tally.

And then there is zcashtocash

The USD 6,000 zcashtocash via Zcash Labs proposal gives us a useful comparison because the funding model had been discussed very explicitly before the vote.

I wrote earlier that I liked the experiment. Zcash Labs put up USD 5,000 itself and asked coinholders for USD 6,000 afterwards, effectively cost plus 20% for its time and financial risk. That fitted my own bias towards retroactive funding and private capital carrying execution risk first.

The Q3 tally was 1,566,863.75 ZEC Accept, only 1,845.50 ZEC Do Not Support, 289.75 ZEC Lower Amount, and 610,683.25 ZEC Abstain.

So whatever people thought about the 20% markup, almost nobody expressed that objection through the lower-price option. Only 289.75 ZEC did.

There was, however, a very large Abstain vote.

Again, that tells us something useful that the single word “Accepted” does not.

Connaugh did actually pass

The initial Q3 results reported Connaugh Zcash Videos as Abstain.

Its tally was 757,044.25 ZEC Accept, 187,236.63 ZEC Do Not Support, 196,044 ZEC Lower Amount, and 1,038,923.25 ZEC Abstain.

@str4d pointed out that ZIP 1016 requires at least 420,000 ZEC to be voted, with a simple majority cast in favour. Excluding Abstain leaves 1,140,324.88 ZEC of non-abstaining voting power, of which 757,044.25 ZEC, about 66.4%, was cast in favour.

FPF agreed and corrected the official result from Abstain to Accept.

So this was not just a question about how the wallet displayed the result. A binding grant result was initially published incorrectly and corrected only after somebody independently checked the tally against the governing ZIP.

That is worth remembering when we think about independent verification of binding coinholder votes.

ZEC participation was up sharply

About 2.18 million ZEC of voting power participated in Q3.

Q1 had 500,607.94 ZEC on every question. The inaugural Q4 2025 round reported more than 1 million ZEC on most questions.

That is more than four times Q1. It is also roughly twice the level seen on most proposals in the inaugural Q4 2025 round, where more than 1 million ZEC participated on most questions.

One thing I nearly got wrong. Across the 37 questions, total voting power varied by only about 2,423 ZEC around the 2.18 million level, a spread of roughly 0.11%. I first read that as holders engaging equally with famous and obscure proposals.

It isn’t evidence of that. In Q1, the wallet presented all questions together and defaulted each one to Abstain, producing exactly the same 500,607.94 ZEC total on all six questions. So near-identical totals can be a feature of the ballot design rather than evidence that voters paid equal attention to every proposal.

What this does not tell us is how many individual coinholders were behind that 2.18 million ZEC of voting power. The totals themselves do not reveal how voting power was distributed, and shielded voting prevents us from identifying voters. We therefore cannot tell from these figures alone whether the result reflects many smaller holders or a small number of very large ones.

That distinction is important.

Q2 applicants were not rejected twice

There is another trap here which I nearly fell into.

Several Q3 applications have low GitHub issue numbers and Forum threads dating from the Q2 period. At first glance it looks as though they were rejected before, came back, and were rejected again.

That is mostly wrong.

The Q2 vote was postponed after disclosure of the Orchard vulnerability because the voting system relied on Orchard notes. Applicants could carry their applications into Q3, revise them or withdraw them.

So applications carried forward from the postponed Q2 round were getting their first CDRGP funding vote in Q3. Zcash Grants Hub, the Hardware-Wallet SDK, Zafu, ZAP1 and ZcashNames should not be described as rejected twice.

This matters, because a supposed repeat rejection with no explanation would be one of the strongest examples of a broken feedback loop. It would also be a bad argument if the first rejection never happened.

Nozy is different

Nozy Wallet really was rejected in an earlier CDRGP round and returned in Q3.

The earlier application asked for USD 21,000. The Q3 application asked for USD 60,000 and covered materially broader work.

It was rejected again, with 521,243.63 ZEC Accept, 1,648,338.63 ZEC Do Not Support, 3,818.13 ZEC Lower Amount and 5,802.25 ZEC Abstain.

They did not simply lower the price and resubmit the same thing. The scope changed and the request increased.

But it still illustrates the feedback problem.

A project can return with substantially more completed work, receive another rejection, and still learn almost nothing from the ballot about why the majority remained opposed.

Was it the wallet architecture? Demand? Quality? Duplication? Price? Something else entirely?

3,818.13 ZEC said lower amount. More than 1.64 million ZEC simply said no.

That is a verdict.

It is not an explanation.

Edit: Updated to reflect that the result for Connaugh’s grant was officially updated from Abstain to Accept.

2 Likes

Not going to lie, I’m dissapointed in the no’s. We can do better than this, I hope next round we do. /me glances at the total avail lockbox :sweat_smile:

This sends a message, I just hope whales realize what it sounds like. :headphone:

1 Like

I seem to have temporarily taken over from @dismad as the person going through the coinholder voting numbers after the fact.

He has done a lot of this work before. After the Q1 CDRGP vote he independently ran the counter using the election creator’s seed, published the full results, and encouraged other voting authorities and community members to verify them.

He was also involved in the earlier voting-authority coordination work.

I hope this is only a temporary substitution. I’d very much like to see @dismad participate again as a voting authority in the next binding coinholder vote.

The voting software has changed for the better, and the sterling work on adding voting UX to wallets has no doubt helped drive participation to where it is today. Thank you to ValarGroup, ZODL, @hanh, and Space Explorers @dogemos (Vizor) for that. But it is important that as many independent folk as possible are able to run nodes next time.

Finally, a big thank you to @str4d for catching the Connaugh result issue, and to Alex B/ @FPF for checking it quickly and correcting the published result.

That is exactly how this should work: independent scrutiny, a concrete challenge based on what the governing ZIP says, and a prompt correction when the challenge is right.

Q3 has given us a useful reminder that independent people checking the machinery, running the numbers themselves, and comparing the result with the governing rules is not just nice to have. It matters.

2 Likes

P.S. As he is ‘in the news’ in this voting round, through no fault of his own, I wanted to mention Connaugh’s grant activity.

@Connaugh was funded through both ZCG and CDRGP, but for separate scopes of the same overall activity.

His CDRGP application came first and sought retroactive payment for work already completed (USD 22,000). He then applied to ZCG for USD 60,000 to produce a further 24 videos, explicitly disclosing the CDRGP application and stating that no film would be funded twice.

Interestingly, ZCG actually approved its grant first, on 14th September, while the CDRGP vote was still to come. The coinholder grant for the earlier work was approved afterwards in the Q3 binding vote on 29th September.

This is a neat example of plural governance in practice. Two ways in. Different funding mechanisms can do different jobs, and legitimacy does not have to come from just one place.

The work rewarded by CDRGP had already been completed at his own risk. ZCG separately decided to fund future work. Neither mechanism needed to be the sole gatekeeper.

3 Likes

The THORSwap/METRO team appreciate the overwhelming support from the Zcash Community!

We look forward to shipping more Zcash features and supporting Zcash Growth.

Thanks for the report vaspholdings.

Onwards and upwards,
0xbadgers

3 Likes

@Michae2xl has added two excellent additions to OpenZcash: the coinholder retro grants pages, and a new Verify it yourself page, alongside the existing ZCG grants pages.

You can also click through from the retro grants results to individual proposals and see the underlying vote visually.

Three examples:

  • Zecmap: only 11.3% Accept, but a relatively large 605,677 ZEC Abstain. The coin volume that voted rejected it heavily, while few chose Lower Amount. Does not look mainly like a pricing objection.
  • Gleyo: 3.1% Accept, low Abstain, virtually nothing for Lower Amount. A fairly clear “does not support” signal.
  • Nozy: 24.0% Accept, almost no Abstain or Lower Amount. More support than the other two, but still decisively rejected and again not obviously about price.

The visual pages make the shape of the vote much easier to read. A rejection can mean different things: little support for the project, support but not at that price, or simply a lot of Abstain.

This is useful feedback for applicants, and may also be for people deciding whether the retroactive route is the right one for them rather than going through ZCG. But the reasoning behind these decisions is still pretty invisible, unlike ZCG decisions.

1 Like

/me rattles Witcher tip jar

I’ve been doing quite a bit of Zcash research lately. If you feel like throwing a few coins at your friendly neighbourhood witcher consultant, ZEC tips are welcome.

Scan the QR with your Zcash wallet, or copy the shielded-only Ironwood address below.
(Both are the same address.)


u1cz402vsvetylm8tyf9rly5ha072haver85v9wlxvlv4v756t38ult9h4zph8ufq3z857ukkufmu7lc5u4upcy893ff05c0zgsclghrlm

Planning to make this a sinful habit? Zodl users can save me to their Address Book.

Anonymous is preferred. I’m happy to know somebody found my work useful. I’d just rather not know who.

Disclosure: Tips to me are for work already published, not for opinions or outcomes. If I ever do paid or commissioned work for somebody I write about, I’ll disclose it.

2 Likes