Dev Update: Month 4.5. We have some worrying news—things aren’t quite as rosy as we thought.**
MonteZecret: The lightest Zcash desktop wallet in Rust (instead of just tweeting)
Remember how we proudly called MonteZecret the lightest Zcash desktop wallet in Rust?
Well, it seems it’s started eating at night, and maybe even sneaking midnight snacks.
Just two weeks ago, the binary weighed 1,820,744 bytes.
It was as graceful as a ballerina.
Today? 7,330,888 bytes.
Now it looks like a programmer after three months of remote work.
We’re on a bulk, folks.
If the program used to fit on 2 floppy disks, now it needs 5.
Of course, some of the blame lies with the libraries, but more on that later.
But we will continue the fight to keep it slim. First, we’ll build the core functionality, and optimization won’t be the top priority just yet—but that will change soon. Especially since we already have experience optimizing libsecp256k1—our version runs 2.4x faster than the original!
libsecp256k1: 2.4x Speedup
We couldn’t settle for standard performance, so we rewrote the libsecp256k1 implementation (yes, that one from the Bitcoin world). Our custom version in batch mode runs 2.4 times faster than the original!
📊 Iterations: 100000
+---------------------------+------------+--------------+------------+
| Implementation | Time (sec) | Speed (h/s) | Keys/sec |
+---------------------------+------------+--------------+------------+
| 1. libsecp256k1 (Base) | 4.5015 | 22215 | 22215 |
| 2. Custom v1 | 30.6389 | 3264 | 3264 |
| 3. Custom v2 | 15.0258 | 6655 | 6655 |
| 4. Custom v3 | 4.4087 | 22682 | 22682 |
| 5. Custom v4 (single) | 3.6087 | 27711 | 27711 |
| 6. Custom v4 (batch) | 1.8738 | 53368 | 53368 |
+---------------------------+------------+--------------+------------+
⚡ v4 (batch) vs libsecp256k1: 2.40x faster
Why do we need this kind of speed? We have an ambitious (and slightly insane) goal—Bitcoin Puzzle #71. We are optimizing every single CPU clock cycle to solve it. And if we crack it… well, you get the drill: all those bitcoins are flying straight into private Zcash. ![]()
Plan B: If the wallet gets too heavy anyway, we’ll just release it as a plugin for Emacs or Vim.
The Problem of Digital Obesity
Imagine this: you invite a librarian to a party to help you slice some bread. But she shows up with a suitcase that turns out to contain an entire food processor with attachments for making sushi, a watermelon carving tool, and a manual for shaping marzipan figures.
“I just need to slice some bread,” you say.
“But what if you suddenly need a GIF animation!” the library replies, winking slyly.
That’s exactly how modern development works. Libraries are stuffed with “just in case” features. When you plug in a graphics library, say for QR codes, it drags along support for GIFs, animations, and shadow rendering. And you don’t even plan to use GIFs! It’s a classic conflict of interest: the library dev wants to cram everything in, while the app dev only needs one function.
By the way, I’m sure AI will soon change the paradigm of libraries. Instead of pulling in a giant repository, AI will read its source code and compile a “micro-library” for you, consisting of only the 3 lines of code your app actually needs. I wouldn’t be surprised if tools like this appear sooner than we think.
Optimization is coming. But first—functionality.
First the heart. Then the abs.
But there is good news
The most secure half-finished wallet in the world
We’ve updated the Zcash Rust libraries to the latest versions:
zcash_keys = { version = "0.14", features = ["sapling", "orchard", "transparent-inputs"] }
zcash_primitives = "0.28"
zcash_transparent = { version = "0.8", features = ["transparent-inputs"] }
zcash_protocol = "0.9.0"
So right now, we have the most secure wallet in the world that doesn’t quite do everything yet.
UI like a Slide Projector: Nostalgia beats minimalism
We finished the functionality for the Receive tab. Initially, we wanted to make TabSheet tabs, like in good old Delphi. But then it hit us.
Remember slide projectors (Diafilms)?
That magical device in a dark room, where you turn the dial, the shutter clicks, and the next image appears on the bedsheet, illuminated by a beam of light.
We brought this intuitive magic into the interface. The address slider (Main, Orchard, Sapling, Diversified, Transparent) switches with a smooth animation, as if you’re turning the film reel. This isn’t just an innovation; it’s a philosophy.
A Universe Inside the Progress Bar
You know what’s the most fascinating thing about developing from scratch? You realize that simple things don’t exist. We started writing a Progress Bar. We thought, “Well, it’s just a rectangle, how hard can it be?” Turns out, we discovered an entire universe. We couldn’t pick just one, so we made 4 different progress bar designs: from ascetic to ultimate stylish. Most likely, we’ll leave the choice to the user. Let everyone decide for themselves how their wallet will “load.”
The Hell and Heaven of Neural Networks: How We Made the Icons
You’d think, why draw icons when there’s AI? You write a prompt—you get a masterpiece. Let’s take off the rose-tinted glasses. Here’s how it actually goes down:
- You write a 300-word prompt, trying to explain to the neural network what early 2000s skeuomorphism in the style of Opera 7 looks like.
- You generate 10 images at a time in Qwen, Seedream, and Flux.
- You set a timer on your phone because the free tier limit is 5 generations per hour. You sit there like an addict, waiting for the timer to ring so you can hit “Generate” again.
- Over 20 hours, you generate 3,000 images.
- Out of those, you select 92 decent ones.
- Out of the 92, you pick one, which you then manually tweak.
Here’s our “modest” prompt for the Contacts icon (excerpt):
“A skeuomorphic 3D app icon… Early 2000s software design aesthetic, exact Opera 7 browser icon visual style… The book body is made of smooth, semi-transparent glossy blue acrylic plastic… Leaning against the front-bottom corner is a single large metallic gold Zcash coin… Clean mirror-like downward reflection… Negative Prompt: flat design, 2d, vector, modern minimalist, dark background…”
Total: 20 hours of work for a single icon. 5 out of 7 icons are done now. The pain was immense, but the joy of how they look in the interface is even greater.
How much is the code worth?
I got curious: how much is the code I’ve already written for MonteZecret actually worth?
I asked my AI security auditor (who knows every single commit of mine).
Here’s what it replied:
Estimated workload: ~640 hours
- Architecture and design: ~80 hrs
- UI system (SDL2 + Rust): ~150 hrs
- Zcash integration: ~100 hrs
- Cryptography and Zeroize: ~80 hrs
- Debugging Rust lifetimes (yes, the borrow checker is pain): ~100 hrs
Realistic market value:
- Minimum (freelance): $15,000 - $25,000
- Average (Senior / Studio): $50,000 - $70,000
If you add R&D (learning Rust and librustzcash from scratch), the real cost crosses $100,000+.
There could be a subtle hint here that patrons could speed up development, but let’s just enjoy the fact that in 4.5 months, working solo, an intellectual asset worth tens of thousands of dollars was created. ![]()
640 hours of work. Over 5,000 lines of Rust code. Integration with zk-SNARK-level cryptography. SDL2 UI. Architecture built from scratch.
For comparison:
- A typical startup spends $200,000–$500,000 on a crypto wallet MVP.
- A team of 3-4 developers does this in 6-12 months.
- I’m doing it solo in 4.5 months.
A lone wolf can run faster than the pack, if it chose the right route.
The price of Zcash falls and rises
But the truth is simple:
Zcash with zero lines of code = $0
Zcash with millions of lines of high-quality code = billions of dollars
Don’t look at the price right now. Invest in the code.
Zcash isn’t held up by speculation, but by science: zk-SNARKs, Halo, ECC research, dozens of ZIP proposals, and years of cryptographic work.
And yes—there are very few people in the world capable of writing a full-fledged Zcash wallet from scratch.
Maybe less than a hundred.
We are a rare species. Listed in the Red Book of rare developer species.
Protect us…
and feed us.
What’s next?
Receive funds functionality — done
Sending Zcash — in progress
Transaction handling — in progress
Performance optimization — coming soon
Icons (5 out of 7) — almost there
And in the next episode, I’ll show you the very first version of MonteZecret.
You’ll be horrified.
But for now—enjoy what we have today in a fresh screencast of the current version:
https://youtu.be/6RzEo-19Ddg
Postscriptum for Patrons
There could be a hint about donations here. But instead, I’ll say this: if you want there to be another truly lightweight, fast, and private Zcash wallet in the world—just support it and keep an eye on updates.
Code is the currency of the future. Good code is gold. And optimized Rust code for Zcash is a treasure.
Zcash isn’t just a cryptocurrency. It’s a manifesto of privacy in the digital age. And MonteZecret is my contribution to that manifesto.
One developer. One wallet. Infinite persistence.
Support the Project
To support development, leave a message for eternity (in the encrypted Memo field), and suggest your own name for the wallet at this address:
u1c9qqs5knwe360w6snjuhcldtpf6tcc9nz6xuanmz2xwyf7l4ufze89tze43yz90ajgcej5ylh0a4h2ac65flsvp7a8ewaauvtt4hwsxuhuqvv9h5fkxntw9yk0eyrrlcu004e2havqs0yx58u7kk75e8hff47srsaslc9g6u6rxfn7j9es2g6zc0drd6ajus8wjj2f8p3als53dfc9l
