Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.
Sign upGrant Project Ideas
Ideas for Project Grants
This page is for listing and discussing ideas for projects that could be supported by the Zcash Foundation's grant program. Everyone is welcome to add new ideas, or to use these ideas in their own projects and grant proposals.
Other places where such ideas may be collected:
- the Zcash issue tracker and the Zcash Foundation issue tracker
- the Zcash forum
- the Zcash Community Chat
Wallets Development
- New Zcash wallets
- Key-management tools:
- Physical storage (e.g., paper wallets or lightweight hardware) for z-addresses.
(Spending from such storage would be by importing the key to a full wallet, or via https://github.com/zcash/zcash/issues/1113) - Web tool for converting BIP39 mnemonic codes (e.g., based on https://iancoleman.github.io/bip39/) for Zcash t-addrs and/or z-addrs
- Physical storage (e.g., paper wallets or lightweight hardware) for z-addresses.
- Payment offloading:
- Adapt an existing open-source JavaScript wallet to be a "Payment Offloading" client which works with a proof-of-concept server. This protocol is in flux, but there is already a working demo and a javascript client library. See Zcash #1113 or ask @str4d for details.
- Make a Zcash wallet that automatically donates.
- When:
- Whenever it sends a transaction, in addition to adding the normal transaction fee for the miner (0.0001 ⓩ), it adds an additional donation (0.0001 ⓩ).
- Or, once a month it donates 0.1% of the current balance.
- To whom:
- To organizations
- To the author of the wallet
- To a randomly selected Tor node which advertises a z-address in its Tor consensus metadata
- When:
Science and research
- Scholarship Program https://github.com/ZcashFoundation/ZcashFoundation/issues/3
Core/Security
- Alternative implementations (for implementation robustness). Any of the steps along this route would be valuable.
- Create a "transparent-transaction-only partially-validating node" based on a Bitcoin "alt implementation" like bcoin, btcd, bitcore. This would result in a node that validates all transparent portions of transactions, but assumes all shielded transfers are correct. For this step, no wallet support is needed.
- As above, plus with wallet support.
- Combine the above with libsnark or https://github.com/plutomonkey/zcash-sprout-verifier, to make a fully validating node.
- Add proving to the above, to get a fully-validating node with full wallet functionality
- Security auditing for the code and protocols
- Securing nodes in the next parameter generation ceremony (see https://z.cash/technology/paramgen.html for the previous one, and https://github.com/zcash/zcash/issues/2247 for upcoming improvements):
- Design+implementation of secure compute nodes (software, hardware, operating procedures)
- Adding SGX-based compute nodes
- Network monitoring and anomaly detection:
- public chain-fork detector (https://github.com/zcash/zcash/issues/2536)
- block observatory (https://github.com/zcash/zcash/issues/1922)
- timestamp observatory (https://github.com/zcash/zcash/issues/1924)
- cross-branch double-spend detector (https://github.com/zcash/zcash/issues/2275)
- internal chain fork detector (https://github.com/zcash/zcash/issues/1925)
- Concept for a distributed monitoring service (https://github.com/paulogr/dstatuspage)
Mining
- Integrate the best CPU miner from https://zcashminers.org/ into zcashd, designed to run continuously in the background solo-mining as a contribution to the decentralized network instead of as a business
- Port a good GPU miner to the GPU in a modern high-end smartphone
- Find and implements ways to encourage decentralization of mining pools, and solo mining
- Build an alternative PoW puzzle and upgrade proposal (e.g., for ASIC-resistance)
Integration with other systems
- Support W3C's Payment Request API (see also this article)
- OpenBazaar client support for Zcash (see here)
- Shielded transfer over any secure channel without z-address (https://github.com/zcash/zcash/issues/2432) — sending ZEC by email or WhatsApp
- Port bithub (https://whispersystems.org/blog/bithub/) to Zcash
- Evaluate and review the existing WooCommerce plugins that support Zcash (examples: 1, 2, 3)
Ongoing services
- ZEC↔XLM gateway or exchange (see https://twitter.com/zooko/status/906002125284458496)
- A "service status dashboard" site that monitors the status of the dozens of Zcash-related online services (e.g., those listed in this section, the "Network monitoring and anomaly detection" listed above, as well as exchanges, software download sites, etc.), so that systemic problems can be identified at a glance. The monitoring website can check that the services are responding to web requests, as well as heuristically check that they are synchronized (e.g., blockchain height is correct and underlying zcashd is a recent version) and sensible (e.g., transaction volume and spot price are not zero).
- Network monitoring and anomaly detection (see above)
- Continuous monitoring of third-party Zcash block explorers to identify discrepancies (indicative of failures or attacks)
Examples of online service types that already exist, and can be supported by the Zcash Foundation:
- Xyzcash runs several Tor hidden services that offer connectivity to the hidden service community. So far these are supported by community donations (not including the Foundation). https://forum.z.cash/t/zcash-on-tor-a-community-funded-proposal/14651
- MineZcash operates the community rocket chat chat.zcashcommunity.com
- @radix42 operates the blockchain explorer at https://insight.mercerweiss.com
- The Zcash Company operates forum.z.cash
- Proving key distribution: mirrors are needed (@radix42 runs one), as well improved reliability and speed of downloading proving keys (https://github.com/zcash/zcash/issues/1296)
Education and outreach
- Translation to new languages
- Zcash social meetups
- Zcash hackathons and/or workshops
Cryptographic research
- Security analysis of cryptographic primitives/assumptions that are (or will, or should) be used by Zcash
- Constructing new cryptographic primitives that can improve the performance or functionality of Zcash (zkSNARKs, SNARK-friendly hash functions and commitment schemes, etc.)
See related ideas in https://github.com/ZcashFoundation/ZcashFoundation/issues/21 (which is about bounty/competition for the first/best analysis, rather than committing in advance to doing an analysis.)
Supporting larger projects
There are many improvements to Zcash that are already underway (e.g., see the roadmap, near-future blog post and Sapling crypto blog post), or are too large for the intended scope of a Grant, or require too many changes in other components to be suitable as a stand-alone project. But it's possible to addresses specific aspects, for example:
- Selective disclosure (https://github.com/zcash/zcash/issues/406)
- Systematic use-case study, or user-experience study using a mock-up