TL;DR
- I’ve created a graphical mempool visualization tool for Zcash: https://zcashmetro.io
- This is not a grant application
- Need donations
u1l03325udjutp6xs33qm3cj7qt029x6dk79jnjcdnj4yzdcdfzth84385dm73cucnft00a4sjd3rsqym3jrjn6spug60qpz7w2kw5y3gvkpvz89ucrwxn4luk0rgq0egcz6ev8qr20vp9tcdknrywj9v8ac905khzncxlww4gkr0ksjn0xh4y4yhtenzstkrf9m0p0e7fr5cwj5uymvn
A Zcash Mempool Visualizer
Hello Zcash community, how you doing?
For those don’t know me, I’m James. I’m a Brazilian Zcash enthusiast and software developer. I’m also a member of the Zcash Brazil team.
For a while now I’m creating nice things using Zcash, few examples:
- Dizzy
- A Dicord bot for receiving, sending and tipping users inside the discord platform. This project was funded by the ZF’s minor grants program.
- ZecFaucet
- A Zcash faucet, gives small amounts of $ZEC for free, no login required. This is a personal project, it was not funded by any Zcash grants program.
And now, I want to introduce you my latest project: ZcashMetro, a mempool visualization tool for Zcash.
Actually, a while back I applied for the minor grants program, to develop this very same idea. But that proposal didn’t received enough votes from ZCAP. It was really close, missing by half a dozen votes or so.
But looking back, I’m so glad I wasn’t funded at the time. I’ve learned a lot since then.
I asked for $18k to develop and host the website for a year. At the time, I was going to hire a professional artist to create the game assets, I thought I would need to run a zcashd node to get access to the needed RPCs calls, and thought doing this whole project was going to be much harder.
But reading about lightwalletd I came across the RPC call GetMempoolStream
, which is exactly what I need for this project. Then in just 2 weeks I put together this MVP (Minimal viable project) as as proof of concept. I also learned a little about using Rust and zcash_primitives to parse raw transactions data.
What is metro?
No, I’m not talking about men that is really concerned with his appearance …
At least here in Brazil, metro is a city train/subway system.
Zcash blocks are represented by trains. Every time a block is mined, the train leaves the station and the next one arrives.
Each transaction in the mempool is represented by a little cute zebra. When a block is mined, the zebras rushes to the train.
It’s a PoC
By no means it should be considered a completed project, but it’s very usable as is.
Since the mempool happens in real time, but the game logic seems to pause when switching browser tabs, I experienced a few bugs and glitches, some of them are kinda funny to witness:
- Sometimes the zebras jumps on the train tracks
- Sometimes the train goes backwards or teleports
- Very rarely there are duplicated zebras
- Since the GetMempoolStream call can be a few seconds behind, sometimes there are already mined transactions waiting on the platform
Also, there are two sections on the metro station. Since there were a lot of spam transactions, the legit transactions would be located near the train, and the spam transactions would be located at the bottom in the “waiting area”. But since there are no mempool spam anymore, I believe the waiting section is useless right now. I’m probably redesigning the station soon.
I want to improve
Clearly there are a lot improvements to be made here.
The game logic need to improve, to get rid of these bugs.
The game could be a little prettier, all the assets I used, I got from the internet.
Right now the backend is running on a shared VPC with other dozen projects of mine, I’d like to move it to it’s own instance.
A few ideas for improvement:
- Put the current block and mempool length in a prettier sign, maybe using that “flip down” look.
- Types of transactions. Maybe it would be cool if shielded transactions gets represented by zebras with a little shield icon.
- More info. Right now, when we hover over the zebras, the only info we get is the txid. Maybe in the future I can add more info about inputs, outputs, pools and values.
- Better support on mobile. It’s kinda ugly on mobile devices right now. And it may look weird on some screen resolutions.
- And so on.
I need support
Maintaining this new project will be time consuming, and I really want to make the improvements I listed previously and much more.
And I know this project has value, since even with my $18k grant proposal I got so close of getting funded.
This time I want to do something different. I’m realeasing this basic version and asking for donations to continue working on it!
I’m going to be transparent here, if I were going to apply for a retroactive grant or something like that, I’d probably ask for anything from $3000 ~ $5000 usd. Which now days I believe it’s a pretty fair amount for the amount of work done plus hosting.
Since I’m not delivering a fully tested software with all bugs fixed, I would be really happy if I can get donations close to that, or even half of that. The improvement work would proportional to the donations received
So, let’s show the Zcash community strenght by donating to the following address:
u1l03325udjutp6xs33qm3cj7qt029x6dk79jnjcdnj4yzdcdfzth84385dm73cucnft00a4sjd3rsqym3jrjn6spug60qpz7w2kw5y3gvkpvz89ucrwxn4luk0rgq0egcz6ev8qr20vp9tcdknrywj9v8ac905khzncxlww4gkr0ksjn0xh4y4yhtenzstkrf9m0p0e7fr5cwj5uymvn
No value is too small! Every Penny (or Zenny) is welcome!
Here’s an idea: send you donation and watch it getting mined
Can’t / don’t want to donate? Please share this post with friends, reply with your ideas of improvement. Your feedback is important!
Shout outs
My special thank you to my teammates here in Brazil, who are very supportive!
@Michae2xl @vito @Minevg @Iogy @E-zec @Samaraanni thank you for being this dream team. It’s a pleasure to be around with you guys!
Thank you ZF and ZCAP for believing in me on my first minor grants proposal.
And thank you everyone for reading this gigantic topic (That’s why I created the TL;DR; at the beginning)