I was inspired by @ml_sudo’s post about temporarily re-allocating funding to write up my thoughts on funding allocation and strategies we should consider for Zcash. I have three thoughts.
Thought 1: Our efforts to decentralized have created single-points-of-failure.
The purpose of having at least three independent entities (ECC, ZF, and ZCG), as I see it, is to make Zcash resilient against the capture of or failure of any one of these entities. A single entity in full control of the project would be a massive risk and would erode trust in Zcash. However, I think the outcomes of our efforts to decentralize aren’t working as intended.
In the Apollo 13 mission, the spacecraft had three redundant oxygen tanks. Engineers expected that this would provide safety in case any one of the tanks failed. What actually happened was that an explosion in one tank damaged the other two; the redundancy didn’t work as expected, and the astronauts nearly died as oxygen vented into space.
Similarly, the redundant elements we’ve created to support Zcash aren’t truly redundant. We absolutely rely on all of ECC, ZF, and many ZCG-funded projects to be working properly for Zcash to keep working and evolving. Many crucial grant projects, notably wallets and wallet-like projects, have failed and/or had their development paused, which has set Zcash back a long way in terms of usability.
@hanh has single-handedly kept Zcash usable through the spam attack and is now getting the Ledger wallet working. This is an example of our decentralization working for us, but it has also created yet another single point of failure; we can’t afford to lose @hanh.
What was intended to create redundancy in a healthy community has instead led to us having many weaker single-points-of-failure.
Thought 2: We’re misaligned, not working together towards a common goal.
Something I’ve noticed as I’ve been auditing community projects is that not many of them work together. This is true in the literal sense of interoperability (e.g. ZGo’s functionality could be built into wallets) and I think also in the sense of collaborating together for common goals.
At present, our efforts seem disjoint and pulling in all directions. There’s also a lot of unnecessarily redundant work going on: multiple different but functionally-equivalent wallets, ECC and ZF doing double-effort to implement every consensus rule twice, and the recent Ledger thing.
We would be more effective if we shared a common vision and worked towards that, sharing the load as we go, and collectively making sure all of the important things get done. This doesn’t have to come at the cost of decentralization of power, we just need some way to broadly agree on what the vision is and to try to collaborate with each other more.
Thought 3: We need to re-think what to build.
Up until now we have not prioritized the things that would make Zcash useful and usable. We’ve built a lot of flashy and amazing cryptography, but we’re lacking the basics like super-easy-to-use libraries and all-around usability of most Zcash-related projects.
In The Moral Character of Cryptographic Work, Phillip Rogaway talks about “boring cryptography.” “Interesting cryptography” is cryptography that makes for flashy papers whereas boring cryptography is about making the cryptography real, usable and resilient.
Now that we’ve laid amazing cryptographic foundations for Zcash, my hope is that we can align around a vision that centres around the “boring cryptography”, where we work on the “boring” things that get Zcash into the hands of developers and make it more attractive to users.