ZCG Grant Idea Thread

Fork and Merge

(POC 100+, V1° 1000+)

Shielded transaction aggregates · Issue #4946 · zcash/zcash · GitHub are the technical details about how we can achieve shielded transaction aggregation. The unanswered question is how we represent these aggregation of transactions in the Zcashd/Zebrad as a feature/APIs. I argue fork and merge is one good option. It also has a few side benefits:

  • Can be a representation of debt
  • Allows for an optional type of locking mechanism to prevent double spend
  • Describes some commision/fee options the aggregator can employ
  • Allows for atomic transactions
  • Can be relatively easy incorporated into wallets (wallet can query forks for info using same APIs used today)

A fork is simple a Zcash node that has decided to stop updating its state with Zcash blocks from the main chain but still accepts transactions. This fork/node could be centralised and controlled by an individual/organisation. Or this fork/node could lower its difficulty to allow continued mining from participants and represent a roll-up side chain that users/wallets can use instead of main for cheaper transactions. This also allows for any profits of the roll-up to be distributed to node participants/miners.

To be clear we would not be competing with the scaling work. The scope of this idea would be a Fork and Merge POC that could either be integrated into Zcash in its own right or proposed as an API we release shielded transaction aggregation with.

Note: The presentation of this idea wasn’t great in the original thread and more a live open thought process I was having. If ZCG or anyone are seriously interested I’d be happy to answer any questions or attempt a better description/requirements.

° V1 would require a hard fork. Requires adding a new fork ID parameter to enable asset locking to a particular fork.


Weighted Voting

(V1° 1000+)

Solve the well know weighted voting problem. How does one send a memo that has been weighted by a property of the address. Types of weighting we could use:

  • Time
  • Holdings
  • Time + Holdings

° Probable hard fork, touches some risky stuff, will likely be combined with other things like Zooko mentioned below.


Moderator Rewards

As described by @aquietinvestor. We reward moderators with cash/zec.


Zodler Badges

I really love this one. My dream is that when you are going to send an encrypted memo, there is a checkbox for “ send anonymously” or “ include Reply address”. If you check “ include Reply address” then your memo is digitally signed so that the recipient knows it was really sent from that address. (And the recipient’s wallet cannot be tricked into displaying a “Reply-To: ” address for a memo which was not digitally signed by that address.)

AND there is another checkbox option for “ without proof of holdings” or “ include proof of holdings”. If you click “ include proof of holdings” then it automatically creates a little “badge”/“medal-of-honor” icon which shows two things: (a) your current ZEC holdings rounded off to “how many figures” (ie less than 1 ZEC, between 1–10 ZEC, between 10–100 ZEC, between 100–1000 ZEC, etc), and (b) how many days in a row you’ve held at least that much, ie less than one day, 1–10 days, 10–100 days, 100–1000 days, etc.

(And of course the recipient’s wallet can’t be tricked into displaying such a badge unless the incoming memo contains a valid proof of those holdings for that time frame.)

Importantly, the user cannot configure the proof to be any more fine-grained than that, because that would (a) make the UX worse for most users, (b) leak more information about user privacy when different users chose different configurations, and (c) make the resulting “badges”/“medals-of-honor” less consistent and recognizable for all the other users.

So that’s the entire UX! You either leave the box unchecked, or your check the box and then your recipient will see your (proven) “Zodler Badge”.

If that existed, it could be used for so many cool things, such as what if ZECpages posts displayed those (proven) badges?

I can tell you that if I received a private anonymous message from someone I would sure pay a lot of attention if it came with a badge proving that they’ve been holding 100–1000 ZEC for 100–1000 days!


DAOs on Zcash

(Paper 100+)

This RFP would be a research project that could document and describe all the options the Zcash community have for on-chain DAO functionality.

I think there is kind of an assumption we would need smart contracts on Zcash to have a DAO. I’m not sure that’s true. We might even be able to produce more reliable/predictable DAOs without the complexities of “code”. A DAO is just the ability for a decentralized group to control funds. There are a few ways I can think of that could achieve a DAO without smart contracts.

  • On-chain voting where the vote is weight by how many DAO tokens a user has (post ZSAs). A new consensus rule could describe how that vote could trigger a transaction to occur.
  • Using a side/forked chain to create a new side chain that has some additional consensus rules for penalizing/rewarding nodes for correctly controlling DAO funds.
  • A new type of address called a ZSA address (e.g. zsa-“asset type number”). This address would be similar to a ethereum contract address but rather then a contract controlling the funds it would be the ZSA holders that control the funds. When the ZSA type is created the asset sets a voting threshold (e.g. 50%). The holders of that asset can vote to transfer the funds held at the zsa-“asset type number” address. The votes could be manual votes triggered by an actual user, or they could be triggered by a node the user is running.
1 Like

Login with Zcash

(B1° 100+)

There are probably a few ways this could be done but the idea revolves around the user proving they have access to the private key (or other secure information) and a website, web app, service, or mobile app issuing/using the subsequent access token. I can also imagine scenarios where access tokens are on-chain. In the future ZSAs could be used to encode user data (e.g. badges and subscription information) and access rights (e.g. admin).

° I suggest B1 be a user challenge/response and let/fund wallets/clients think about how best to solve this problem. e.g. could I login using a hardware wallet?


Cool idea! Also, imagine if there were Zodler Badges so when you would “Login With Zcash”, the site/service/product that you’re logging into could give you special badges or added features if you’re a long-term zodler! :grin:


Sidechains - The Z Amigos

(B1 1000+)

Using the above features (i.e. forks, asset locks, ZSA-addresses) should be enough to create 3 sidechains. I advocate that sidechains are probably the most powerful feature a zk-proofs chain can have. Optionally these sidechains could be self funding. Fees for transactions on sidechains can not only fund nodes and the cost of merging but also contribute for future maintenance/development.


This sidechain will enable user defined contracts. These contracts will allow the user to programmatically control how and when transactions occur.


This sidechain will enable anonymous groups of users to aggregate their transactions. This enables users to transfer their assets at a much cheaper rate.


This sidechain utilises the fork asset locking functionality. These locked assets can then be used as collateral for other assets.

° the dependencies (e.g. fork, consensus callbacks, asset locks, and ZSA-addresses) haven’t been included in costing. But given these side chains themselves pose no risk to main chain consensus I believe all 3 of this could easily be beta’d in 1000+)


Building Zec clusters

Earning zec by visiting physical locations. Today, I will visit kitsilano Beach because I know I can collect three different zec rewards at this location. I visit the Canteen, Maritime Museum & payparking machine an at each location I import a new viewkey. This viewkey has a few unique features, A Zaddr to send a message to receive the zec reward, plus a message “Visit Segal’s Bagels - Special 12 Bagels for 0.09 zec only today”
Getting users into physical locations is hard work. Rewarding users with Zec for visiting phyical locations sponored by business to Use Zec as advertisements.


Trusted Nodes:

When a zec user launches a new zcash node, normally they connect to eight nodes. Often, the zec user does not pay attention to which nodes they are connecting too or the importance of the node connections. Awareness of the importance of node connections is growing and we need to build a network of trusted node operators.
Let’s Subsidize Business Partners to operate trusted nodes. Who, receive a zec subsidy to operate nodes to a set of principles and flash their external ip addresses. So, when zec users light up a new zcash node they have a trusted choice for the node connections.


I’ve added some weird code for my above suggestions since we are not comparing apples. We can only compare if we know the time scale. Accurately measuring hours is hard but I can attempt to ballpark the scale.

Work Hours

100+ = 100 to 1000
1,000+ = 1,000 to 10,000
10,000+ = 10,000+ (none of my ideas are 10,000+ plus but this would be what sharding falls under).

Release Type

POC = proof of concept
B1 = first beta
R1 = first release


I recon all from current state of thing to a Z Amigos beta we are still under 10,000 hours (assuming ZSAs are delivered).

1 Like

On reflection I think we need multisig as a priority. Not sure if this is something appropriate for an RFP or something ECC is already working on.

Limitless (recursive) Multisig Addresses

Most implementations of multisig have hard limits on how many signatures they allow for a multisig address. With recursive proofs we should be able to effectively remove that limit and have 100s of signatures.

Transaction Contains Signature Proof

Not sure if this is the correct term but given all signatures will not be stored on-chain there are some applications where the participants wants/needs to prove they were part of a transaction. Is this possible?


Unreal Engine 4.26, 4.27, 5 - zcash test net intergrattion.

As an indie game developer in Unreal Engine 4, I would like to be able to use zcash test net in my game through a simple to use ue4 plugin.

Use case:
Virtual, Visual, Interactive Education for simulated zcash, wallet management, zero proof, trustless setup, mining, governance and cybercoins in games, edu and media products.

Used as in game resource to exchange virtual assets “anonymously” between players, ai and for in game virtual economy and game mechanics.

State of the art dynamic presentations and realtime analytics of complex information through gpu and cpu optimization provided by UE4. See information like you never have before.

Brings VR, AR, Hololens capabilities to zcash test net with real time analytics and other possible apps.

Test case for Live Net Plugin.

Requestor: CyberAxe of OutLandishly Crafted


Zcast - A podcast about Zcash - Z-CAST.


Linking this in


Bug Bounty Program - Security researchers and bug bounty hunters to find security vulnerabilities in its website and projects.


The biggest threat to users of cryptocurrency, including Zcash, is having the device where they store their private keys hacked and those keys stolen. Think about the grandma who clicks on misleading popup ads.

Paper wallets are one solution, but it is a pain in the neck to send funds from a paper wallet.

Hardware wallets are another, but not all users are going to buy a new piece of hardware. And then there is figuring out how to use it-- most are far from intuitive. Think about the grandma who can just about use an iPad but nothing more complicated than that.

And yet Zcash, and for that matter all cryptocurrencies, are doomed to failure unless that grandma can store it securely and use it to transact. See my other thread about that.

The best solution to the problem that I have seen is this pair of apps for Android and-- yes! iPad, the AirGap Vault and AirGap Wallet, https://airgap.it/ . I have no connection to this project except as a satisfied user, but I think it checks all the boxes: security, convenience, and low cost.

The way it works is, your private keys stay on an air-gapped device, which runs the Vault app. Once you have the app loaded, you never need to connect it to a network again. You transact using a device which is on the network, running the Wallet app. Data is passed between the two using one device’s camera to scan QR codes displayed on the other device. (In a pinch, of course, you can run the two apps on one device-- but then you lose the air-gap security.) The cost is low because at this point everyone has an old phone, tablet, or iPad hanging around.

There’s more on their website or their github– to their credit, everything is open source and the builds are even reproducible.

The app pair supports a number of cryptocurrencies, and I think Zcash should be one of them. The main developer, Andreas Gassmann, writes that the main issue with supporting more cryptocurrencies are time and funding. There’s nothing we can do to give him more time, but I think a community grant should give him the funding. Maybe once shielded-by-default goes live? It would be a shame to only have support for transparent addresses.


@hanh this made me think of a multisig setup where both the hot and air gapped wallet both need to sign the transaction. Not within scope but it made me think of your proposal :relaxed:.

1 Like

ZWallet has an air-gapped feature (cold storage spending) where you prepare the transaction in the app, and sign it offline with a separate command-line utility.


@MikeInMass It doesn’t use QR-codes like the Vault app because the size of the transaction data is too large and makes it less user-friendly ( ZCash offline signer (cold wallet) - YouTube)
Less user friendly for sure but I’m like a grandpa and I can use it :slight_smile:
@GGuy Technically, FROST is not a multisig protocol but a multi-party ceremony. If you want to do it offline, you would be scanning a lot of qr codes back and forth…