ZecLedger grant update

A little more context on ZecLedger

I wanted to share a bit more context around the ZecLedger retroactive grant application for anyone who hasn’t followed the project from the beginning.

I started building ZecLedger around the ZecHub Hackathon 3.0, where it was submitted to the Accounting track.

The hackathon gave me a reason to take the idea from something I was experimenting with into something people could actually run, test and use. ZecLedger was submitted as a working open source project with a demo and documentation, and it has continued to evolve since then.

The original idea came from a simple problem:

Zcash gives you financial privacy, but how do you actually keep track of your own finances when your transactions are shielded?

That’s the problem I wanted ZecLedger to solve.

ZecLedger is a read-only accounting tool built around a Unified Full Viewing Key rather than a spending key. It can read shielded wallet activity and produce balances, transaction history, cost-basis reports, payment reconciliation and privacy checks, but it cannot spend the funds.

The project has been tested against real Zcash activity. The 108 transactions mentioned in the application represent a real mainnet wallet history spanning eleven months. That is the transaction history used to test the accounting engine, not eleven months of development.

The project has also gone through independent testing against a real mainnet wallet, which helped uncover issues that still needed fixing. I think that is worth mentioning because ZecLedger is still a project under active development, and I would rather be clear about what works and what still needs work than make it sound more finished than it is.

There is also a public web version of ZecLedger:

The web version is focused on public Zcash network data and research. It does not ask for or handle private keys.

I also put together a video showing the direction I want to take ZecLedger and what I am trying to build around the idea:

The current code is open source and available here:

And the development process is documented here:

The $10,000 request is retroactive compensation for the work that has already gone into building and shipping ZecLedger and ZecLedger Web. It is not a request for funding to start the project.

There is still a lot I want to do with it. I want to make the accounting experience easier for normal users, improve the research side of the web app, and explore more ways ZecLedger can help people and organizations actually manage shielded ZEC.

For me, the bigger idea is still the same:

Privacy should not mean losing the ability to understand your own finances.

Thanks to everyone who has taken the time to look at the project, test it, give feedback, or follow the work so far.

2 Likes

For someone using this for the first time, a simple explanation of what the viewing key reveals and whether that information stays on their device would be helpful. “Cannot spend your funds” answers one concern, but people may also want to know who can see their activity.

Thanks, this is a really good question, especially for someone using a viewing key for the first time.

ZecLedger is designed so that the viewing key is used locally on your own device. The CLI is the part of ZecLedger that handles the private wallet data. It takes the Unified Full Viewing Key and uses it to scan and interpret your shielded wallet activity, then produces things like balances, transaction history, memos, accounting reports, cost basis and privacy checks locally.

The important distinction is that a viewing key is not a spending key. It can reveal the wallet activity that the key is permitted to view, but it cannot authorize a transaction or move your ZEC. ZecLedger therefore has no ability to spend from the wallet.

As for who can see that information: ZecLedger itself does not send the viewing key or your wallet activity to a ZecLedger server. The key stays on your machine, and the local wallet database is encrypted at rest. The accounting and reporting happen locally.

So, in practical terms:

Viewing key → your device → ZecLedger CLI → local accounting/reporting

rather than:

Viewing key → ZecLedger server → someone else

The CLI also makes the information visible to the person who owns the wallet, which is the whole point of the tool: you can finally see and account for your own shielded activity without handing over a spending key to a third party.

There is one optional exception worth being explicit about. ZecLedger has a wallet-ask copilot feature. If someone chooses to use it, the CLI shows what aggregate wallet data would be sent and requires explicit confirmation first of which you’ll have to generate your own API key. It does not send the viewing key, addresses or memos. The rest of the accounting features work without this.

So the short version is: the viewing key lets ZecLedger see what that key is capable of viewing, but the sensitive wallet information stays on your machine and ZecLedger cannot spend your funds.

Thanks for explaining. The distinction between local accounting and the optional copilot is helpful—that would be useful to show clearly during setup, especially for first-time users.

1 Like

I think I see what it is supposed to do, but I can’t find it on the website. There is a lot of animation and stuff, and it feels 100% AI generated.

2 Likes

Lol! Sincerely thank you so much for the feedback. You’re right that the website doesn’t currently make the core product as obvious as it should, a ux issue.

Well, ZecLedger is primarily a local, read only accounting tool, and the main accounting functionality currently lives in the CLI. The web dashboard is more of a companion layer for things like the overview, privacy/shielding information and address lookup, rather than the full accounting interface.

The animation on the site probably makes that distinction even less clear, so that’s something I need to improve. A first time visitor should be able to land on the page and immediately understand what ZecLedger actually does and where to try it.

For the actual implementation, the repository is here:
https://github.com/vancube2/zecledger

I appreciate you pointing this out. It’s exactly the kind of usability feedback I want during review.

Thank you :folded_hands:

1 Like