Announcing ZF Grants — funding platform for grants and Zcash ecosystem projects!

Originally a blog post, copy-pasted below for your convenience. We are stoked to debut ZF Grants, so excuse all the exclamation points :wink:

The Zcash Foundation’s new platform for grants and community funding, ZF Grants, is in open beta on the Zcash testnet! The full launch will come in April. The Foundation plans to dispense the Zcash equivalent of $500,000 through ZF Grants in 2019. created the web app, which was inspired by the Monero Forum Funding System. ZF Grants replaces our previous grants workflow and adds new features.

Check out the example proposal that Executive Director Josh Cincinnati created. is offering a bug bounty for ZF Grants: “Critical bug disclosures that follow our Responsible Disclosure Policy will be eligible for a $500 reward (paid out in USD, not testnet coins).” Learn more on the website.

How It Works

ZF Grants is similar to Kickstarter. But instead of using fiat money, users can pledge $ZEC to projects that grow or strengthen the Zcash ecosystem. On top of that, imagine if Kickstarter itself gave funds to the best campaigns on the website. That’s our plan!

The Foundation will evaluate proposed projects on a rolling basis and choose which ones to sponsor. We are able to match funds or attach a bounty payment to a given campaign. But you can also fund a project solely through the contributions of… anyone!

ZF Grants differs from standard crowdfunding platforms in a couple more ways. For starters, a campaign can incorporate milestones that serve as payout thresholds. At least one is required. Here’s how it looks when you create a proposal:

Set up milestones for deliverables

Example milestones

You are able to run a campaign that receives a single lump sum, or you can split your project into chunks, thereby adding progress checkpoints. Milestones are ideal for substantial, longer-term efforts.

Submitting a proposal requires a small $ZEC stake (the exact amount may change) to prevent spam and abuse:

Confirm submission

After a proposal is submitted, Zcash Foundation staff will approve or reject it. We plan to be broadly permissive, and keep an eye out for projects to funds-match or augment with a bounty.

Importantly, the Zcash Foundation is able to appoint an “arbiter” to any campaign. That’s our term for the person who decides when successive payout thresholds have been met. The arbiter can be a Foundation employee, or anyone else who seems like they’d do a good job, such as a trustworthy community member. Obviously, the arbiter cannot be the person or team behind the proposal, although they are welcome to suggest names.

Arbiters are crucial. If the person or team behind a given campaign doesn’t meet their obligations, the contributors have someone representing their interests. Remaining funds will be withheld until the arbiter’s concerns are satisfied. (In the event of a rogue arbiter, the Zcash Foundation would choose a replacement.)

Privacy on ZF Grants

Please review the privacy policy to understand our commitments with respect to data collected by the platform. The Zcash Foundation intentionally chose a stricter privacy policy than most internet services.

Unfortunately, because we didn’t want to delay launch, ZF Grants can only support contributions through transparent transactions — for the time being. (Campaign payouts must be made to shielded Sapling addresses). Zcash transparent addresses and transactions, like Bitcoin addresses and transactions, are pseudonymous but not private.

Shielded transactions will be added as soon as possible! We’d love to support them right from the get-go, but blockchain-level visibility is important. After all, transparency is first on our list of institutional values.

Today, when people contribute funds to a proposal, the proposal is assigned a Zcash t-address. Users can send $ZEC from a z-address, ensuring that the origin of the funds is private, but such transactions are not quite as private as shielded-to-shielded transactions.

In the future, when Zcash includes viewing keys, ZF Grants will be able to support completely private z-to-z contributions. Viewing keys will enable the Zcash Foundation to publicly demonstrate the exact amounts deposited into a proposal’s z-address — without the ZF Grants servers requiring access to private keys.

We could have built a platform that interacts with private keys, but it would be an unacceptable security risk. Instead, ZF Grants relies on a secure custody solution without direct access to private keys. In other words, proposal funds are not held in hot wallets. Since the private keys aren’t available, and currently neither are viewing keys, we would be unable to determine the balance of a campaign z-address.

Once Sapling is ready for integration, ZF grants will be able to support users who want to make a fully private contribution, while still enabling the Foundation to provide transparency around grant funding.

We do allow non-attributed contributions, which can be made by users with accounts who select that option, logged-out users, or people who don’t have accounts at all. Such contributions are not tied to a ZF Grants account, either publicly or in the database.

However, refunds aren’t available to non-attributed contributors. In the event that funds unattached to a ZF Grants account are not paid out as intended, the $ZEC goes back to the Zcash Foundation as a donation. (By contrast, regular logged-in users would receive a refund if a campaign didn’t reach its goal or milestones.)


We are beyond excited to see how the Zcash community will use ZF Grants! Thank you,, for being wonderful collaborators in realizing our vision. The Foundation is equally grateful for the community’s patience… and eager to fund proposals that will improve the Zcash ecosystem.


This is really great work!

It will allow for so many community projects to get funding. I’ve always been envious of the Monero FFS and am super excited that we now have one of our own!



This is so awesome! Nice work!

If a user contributes to a proposal, can that contribution potentially fall under tax exemptions in the US for 501c(3)? If so, then I’d love to see any kind of technical streamlining possible around documenting tax exempt donations for users.

While I’m on the topic, here’s my fantasy vision to aim for in story form:

  1. A ZF Grant user selects a proposal and donates to it using a z→z transfer.
  2. The ZF Grant website uses a View Key to display donation timing and amounts (and maybe donator memos?) for a proposal.
  3. Meanwhile, the ZF Grant website additionally publishes the View Key of each proposal, so that anyone may track the funding of a project without relying on the ZF Grant website.
  4. If the user desires, they can submit a Payment Disclosure associated with their donation transaction to the ZF Grant website in a manner that proves to the ZF Grant site that they were indeed the donator. In doing so, they can also optionally request any receipts or documents from the Zcash Foundation to file for 501c(3) tax exemption.
  5. The rest of the funding mechanics proceed normally.

The interesting thing about this story is to consider privacy in the context of steps 1 and 4:

  • The “punchline” of the story is that some users may receive tax deductions on their donations, with only the Foundation and the US IRS knowing about their donation. (Note: This is very speculative on my part, and I’m not a certified tax accountant, nor a tax lawyer, and you should always with legally qualified experts on anything like this, especially in a “new space” like cybercoins.)
  • However, users could disclose only to the Foundation and not the IRS (assuming the Foundation is legally able to not make such disclosures and chooses to honor that arrangement).
  • Yet a third option, users could not disclose even to the Foundation, as the blog post describes as “non-attributed transactions”.
  • Also notice that in this fantasy the funding of a particular proposal has transparency in the form of a View Key and there’s no dependence on the ZF Grant website for third parties to see the accumulation and spend of those funds.

This story is compelling to me for a few reasons:

  • It demonstrates to everyone how “privacy” is much more than anonymity, and a single transaction can involve both privacy (of the donator) and transparency (of the proposal funds).
  • It demonstrates how Zcash can preserve privacy while also supporting tax deductible donations.

So to get there, we need to do some tax/legal analysis and some technical work. I look forward to digging into this and seeing if we can make it a reality.


Notice that a z→z donation can enable refunds without requiring a user account or disclosure of a user identity if that transfer includes a “refund address” in the encrypted memo field.

Currently there is no standard for doing this, but one should be developed that all wallets and e-commerce solutions follow. See ZIP 302 Proposal if you’re interested in the technical side of this.

Also, see Least Authority’s P4 Protocol for a design to do this very kind of thing in a real world service.


Initial impressions of this are it looks great and was super easy to use, both funding and arbitrating on a proposal. Really looking forward to seeing how this develops!


Thanks for taking a look and the feedback! So at the moment because of the way we structured the payouts, most of the way community members interact with the site is not tax deductible, since they are effectively funding projects by other community members that may or may not be 501(c)3s. If we made every donation tax deductible, we’d have to collect lots more information about our users (and recipients) of grant funds, which is something we’ve purposefully been trying to work around: there were cases in the past were proposers declined funds because of the reporting requirements we have. Thus for those users crowdfunding presents an avenue to still work on projects in the Zcash ecosystem, and they can simply decline matching funds or bounties if we offer them to avoid the reporting requirements.

There is the case where a refund is generated if a project doesn’t reach its fundraising goal, and if that refund doesn’t go back to the user (their preference, unless they are an anonymous user in which case the following behavior is required) it becomes a donation to the Zcash Foundation. In those cases it would be nice for us to generate proof for them that they made a donation without knowing who they are as you outlined; with payment disclosures and memos perhaps this could be automated further. (I wonder if the IRS would accept a memo field description as a proof of donation :smile:)

All that said the Sapling view key for each grant project is definitely on the road map (so users don’t have to trust the site) but it requires both view keys and Sapling HD z-addr generation. The sooner those are available the sooner we can make it happen! :smiley: