Zcash Mempool Visualizer

TL;DR

  • I’ve created a graphical mempool visualization tool for Zcash: https://zcashmetro.io
  • This is not a grant application
  • Need donations :smiling_face:

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 :slight_smile:
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 :wink:

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 :rofl: (That’s why I created the TL;DR; at the beginning)

30 Likes

It’s so cute, I love it.

Is it open source?

I made a donation and it was fun seeing my tx boarding the train.

Random question, but I see that it links to https://mainnet.zcashexplorer.app/. I wasn’t aware of it, who is running that? I was missing the original version so much, I’m glad someone is running it.

8 Likes

I just noticed that Zcash Mempool is currently reporting a full mempool with spam txs, are you filtering them out now?

3 Likes

Hi @conradoplg thank you so much!
It will be open sourced soon, I’m doing some experiments to see what works best. But yes, it will be opensource!

About the mempool, I noticed that some websites mention the mempool is full. But I’m not doing any filtering, the transactions are just as I receive them from GetMempoolStream call.
I’m using the zec.rocks server … I believe they use zebra, maybe that’s why?

5 Likes

That’s probably it; zebra now has an unpaid action limit of 0 in its latest release, while we have not yet made the same change in zcashd.

5 Likes

Yes, since 1.8.0 I’ve noticed zebra has been rejecting them and saying typically very few mempool txs. My zcashd node is set to 1, which is the minimum.

@conradoplg Block explorer + Testnet infrastructure - #11 by Cacho

2 Likes

I am wondering what’s the best way to visualize public and private transactions on Zcash. Perhaps, a passenger holding a sign of their origin and destination? Shielded passengers can just show what pool (or train) they’re using.

5 Likes

so nice development i so glad to see this project grow up out of paper ,lets go Zcash brazil!

6 Likes

Outstanding. Keep going. :heart_eyes: :shield: :zebra: :student:

4 Likes

that is very cool! :star_struck:

4 Likes

It is sooooo cool @james_katz ! Great job!

3 Likes

this is cool, nice work

2 Likes

Hi guys. Few updates and improvements on this project!

First, I believe I solved a few bugs, but still has some visual glitches time to time.

And now, for my favorite feature: “Shielded Zebras”. Now we can see which transactions are shielded and which are not.

Bronze Shield

image

This is for Shielding and de-shielding transactions.
Either t2z or z2t transactions (Sapling or Orchard)

Silver Shield

image

This if for value transfer between shielded pools.
Either Sapling to Orchard or vice versa, this type of transactions received a silver because values are always revealed when transfering from pools.

Gold Shield

This is for fully shielded transactions, nothing is revealed.
This is for Sapling to Sapling or Orchard to Orchard transfers.

Soon I’ll finally release the source ode, just a few more tweaks.

If you find any more bugs, please report.
And if you really like this project, fell free to send a few zatoshis to my address at the top of this thread!

Thanks!

11 Likes

Hello guys, how you doing?
As promised, here is the source code for this project: GitHub - james-katz/zcashmetro: Zcash mempool visualizer

Let me explain a few things … This code is pretty much a hack. I was learning about the Zcash lightwalletd RPC methods and learning a bit of using librustzcash. So I put together this project to test the things I’ve learned.

I’ll eventually clean up the code and fix more bugs. But I believe most bugs is already fixed!

And now everyone can contribute. Please open issues, clone the code and send PRs!

I really appreciate everyone who sent donations! Thank You so much!
I can’t stop having new ideas and your support is essential to help me doing these cool projects (I think they’re cool anyways lol)

See you next time, bye!

9 Likes