source
Hi Zeeps,
My team leader to me: “Don’t screw with that code. It’s too complicated, and you’ll break everything.”
Me to myself: “Hm. I’m going to screw with that code.”
I was less than a year out of school but earned my way up to be the lead developer of the customer care and billing system for the first GSM telecom provider in North America. The untouchable “code” was “Change MSISDN,” a library to change the phone number associated with a SIM card. It sounds simple enough, but it was entangled with just about everything in the system.
We didn’t build that software from scratch. It was originally developed for another telecom provider in Europe and then passed around to three more providers, each building on the work of the past. It became bloated spaghetti code. No one I was working with even understood how it worked. It was a Chesterton’s Fence kind of scenario. “Don’t break what you don’t understand.” The problem was no one ever took the time to understand the code.
Ok cool. But after I was tasked to add more features, I spent hours rooting through dependencies, sublibraries, application logic, and all sorts of garbage that didn’t even do anything.
So, one day, despite the order not to screw with the code, I began to try to refactor it. Two days later, I had rewritten the whole thing. This was many years ago, but I think I cut the lines of code by about 75%, it was clean, and it worked more efficiently. Felt great.
Zcash is built to be private and secure peer-to-peer electronic cash. It’s code, but it’s also a community that is growing and rapidly decentralizing. A few things we want:
- A protocol that works for private payments and storage at scale
- Healthy price action
- Broad distribution and access with deep liquidity
- Funding to add new innovation without risk of capture
- Interoperability with other innovations for greater utility and growth
- Censorship-resistant and decentralized infrastructure to support it
- A vibrant and loyal community of coin holders, users, promoters, and builders
While a lot has been built, we’ve got a ways to go. We collectively built the foundations based on what we had at the time, but now need refactoring.
We made great strides in 2023. ECC refactored itself. The community moved away from direct funding and toward greater accountability. We made tremendous progress in retiring the legacy code base and made high-quality shielded mobile and hardware wallets a reality.
But we’re just getting started. We have more to refactor. It may come with some pain, but we will win if we remain steadfast and disciplined. If we do the hard things that need to be done.
“This is a very important lesson. You must never confuse faith that you will prevail in the end—which you can never afford to lose—with the discipline to confront the most brutal facts of your current reality, whatever they might be.” - Admiral James Stockdale
Brutal facts. So let’s get real for a minute. This ain’t no sunshine pump this weekend Zeeps. Several of you have posted some brutal facts in this forum and elsewhere. Here are a few I see and the new code we need to write.
Brutal fact: Zcash governance is a mess.
New code: A new, simple, and resilient governance model will make it easier to get things done faster and with more clarity. We need to get this done this year.
Brutal fact: But, but, where is the adoption!?!? Many of us are living in a Zcash bubble. Many don’t even use crypto regularly. To build for the market, you must understand it —and to understand the market, you must participate in it.
New code: Not everyone needs to run their own node. But if you are a leader in this community, I hope you are a regular non-Zash crypto user as well. Play. We’ll do more of that in the hallways of ECC. Additionally, as we spend more time engaging with and exploring other projects, we’ll better understand what to build and how to build it, and we’ll build bridges with other communities. It’s what ECC has been doing with Flexa, Keystone, and Maya.
Brutal fact: Attention matters for adoption. The coin price drives attention. Attention is also driven by the community.
New code: Coin holders matter, a lot. We can increase their voice through governance inclusion, as has been done, and PoS. This also matters for giving them access to yield they can’t currently get.
Brutal fact: Among us leaders in the community, there is still too much ego, infighting, distrust, and bad behavior, both publicly and privately.
New code: If we cut the shit and operate transparently and positively, it will lead to increased community engagement and faith in the project. If you can’t do it, please gtfo.
Brutal fact: We need more young vocal leadership. I’m not talking about managers. I’m talking about people with a deep understanding of crypto, thoughtfulness, conviction, compassion, and the ability to execute. A-players want to work with A-players.
New code: We need to increase our standards for leadership and execution across funded projects and orgs. A-players only, otherwise, keep the seat empty or unfunded.
Brutal fact: We are funding starved and often spread funding too thin or misallocate it.
New code: Hand in hand with governance, a better funding structure that drives competition and accountability will lead to better outcomes. Only fund things that bring new users and attention. We need to also get out of our bubble and start looking for outside funding sources.
Brutal fact: As much as we want to use Zcash for payments, companies are not going to start lining up to accept Zcash until there is user demand, which requires healthy liquidity, a strong coin price, and customers willing to spend a lot of money.
New code: Allocate resources to scale payments use in partnership with others. Current examples include Flexa and Maya.
Brutal fact: The legacy code base and pools are killing our productivity.
New code: We are refactoring this now, and it will pay off bigly in the years to come. The collaboration between various orgs and people has been terrific so far.
These are just a few.
Oof. Brutal! But if we nail these, we’ll be in great shape.
We must maintain our conviction that the world needs private electronic cash and that we are uniquely positioned to deliver it with Zcash. Because we are and will!
But conviction is not enough. We must confront the brutal facts and continue to refactor the code. This is the year.
Here’s the refactoring we did this week:
Zashi
Zashi Design
- Adjustments and revisions to Transaction History screens (Sent & Received)
- Continuing design efforts for Balances, Shield ZEC, and Swap
- Working with Richard on new app illustration assets
Zashi iOS
- Hacker House with the entire engineering team in Mexico :flag-mx:
- Transaction History Redesign:
- Home Screen Transaction History redesign implemented
- Built new screen for Transaction History
- Built new Transaction Detail screen
- Implemented new Transaction empty state for the Home Screen
- Implemented logic for division into time periods
- Transaction Filter logic prepared, UI for the Filters WIP
Analytics Update:
Unique Installs: 6.11k
Total Downloads: 7.26k
AppStore Rating: 4.9*
Zashi Android
- Hacker House with the entire engineering team in Mexico :flag-mx:
- Worked on a new Zashi version 1.3.3, to be released as soon as QA is done
- Transaction History Redesign:
- Home Screen Transaction History redesign implemented
- Built new screen for Transaction History
- New Transaction Detail screen WIP - will be in the next testing build
- Transaction Filters - WIP
Analytics Update:
Total Install Base: 3.38k
Total Installs (incl. Open Beta): 13.3k
PlayStore Rating: 4.463*
Zcash Core
Thanks to @nuttycom for pulling these weekly summaries together for me moving forward. This is much better than mine!
Accomplishments:
-
Thanks to @str4d we now have a version of Zallet that is able to correctly respond (with fake data) to zcash-cli invocations of zcashd wallet RPC methods. This is a significant step forward for Zallet development because it means that it’s now possible to begin building deployment infrastructure and hooking up Zallet to the Zcashd RPC tests that have been imported into the Zebra codebase. Such tests will fail until more of the underlying functionality is implemented, but we can begin taking a red/green approach to feature development in the zcashd wallet replacement process.
-
@nuttycom finished a complete review of Greg’s new Rust implementation of the transparent script interpreter that will replace the use of the C++ interpreter in Zebra, which involved a detailed line-by-line comparison with the original C++ implementation. This now unblocks us for adding transparent multisig functionality to the PCZT stack, which is needed for zcashd wallet replacement and, by extension, will give us those capabilities for use in Zashi and Keystone.
-
@str4d and @nuttycom reviewed and integrated the changes to the zcash_note_encryption crates that were proposed by QEDit in support of ZSAs.
Work in progress:
-
Completion of no_std support (begun before the holidays) for the zcash_primitives crate, which will allow us to upgrade Keystone to use our transaction signing code; this will be important in order to provide a smooth upgrade path for Keystone when NU7 activates.
-
We are nearing completion of the transparent wallet recovery feature that will allow e.g. Ledger users to recover their funds using a Keystone device. The primary PR is in review, and additional work to ensure privacy invariants are maintained in interactions with lightwalletd is in progress.
-
We are prioritizing review of the ZSA PRs.
-
We have begun work on the API changes that are required for ZIP 231 (Memo Bundles)
Community collaboration:
ECC engineers participated in the zcashd deprecation, Light Client Working group, Arborist, and Zcash Wallet Interchange Format calls & shared progress and insights gained at the Z|ECC summit, and aligned with other developers in the community on the next steps in the development path.
Other
I posted a summary of the Z|ECC Summit in Mexico, which wrapped up with a hacker house earlier this week. The next one is tentatively scheduled for the week of July 7 in Prague.
We intend to post an updated Q1/2025 roadmap next week.
I also posted a proposal to extend the lockbox due to an anticipated delay in the activation of NU7. Please weigh in.
Paul, along with Project Glitch, hosted the first PGP event with a new format that included a topical deep dive. It was really good.
We’ve begun another round of screening for marketing candidates. We’ve had over 600 applicants this round and have shortlisted a few for initial interviews.
I will be traveling next week for an event.
That’s all for this week.
Screwing with the code.
Onward.