As part of my vision for 2025, I had resolved to do more things. Namely, to conduct more rapid, focused experimentation in public. So, I started writing a toy TUI block explorer in Rust over the Christmas-New Year break. Today, I'm happy to announce the first release of blocktop
, a minimalist TUI block explorer (and indexer) for Ethereum blockchains. In order to use it, simply run:
$ cargo install blocktop
Conceptually, blocktop
is two things: a snappy TUI block explorer and a blockchain indexer.
I (like many others reading this, I'm sure) have always been enamoured with TUI applications: their raw aesthetic appeal, their pragmatism and minimalism, and the way that they utilise the terminal for rich visual communication with users. Obviously, I've always wanted to write one: so I decided to make the block explorer a TUI program.
I think that I chose a block explorer because it was something that I could fit in my head without having to do much research prior to writing code and that it was a critical tool in the development stack for Ethereum (and any other blockchain). To quote my boss Paul: "block explorers are hard". This is very true, but it does require some qualification: making useful and performant block explorers is hard. Of course, something being hard is, a priori, not a reason to not attempt it—in fact, it's often the exact opposite! With this being said, I don't consider blocktop
to be an Etherscan-killer and nor do I intend it to be. What I'd like for blocktop
is to be a truly useful block explorer but also an example of what's possible with just relying on an Ethereum (EL) node.
Any block explorer fundamentally has to contain a blockchain indexer of some form somewhere in the system. This is because the raw chain data itself isn't really that useful to an end user and displaying information about the state of the chain is something that we expect to be snappy and very clearly organised. In order to achieve this, blocktop
uses SQLite. That's it. I personally intend to keep using SQLite until it becomes entirely untenable to do so—if that even ever happens1. Blockchain indexing represents a fairly large problem space with many distinct solutions: key-value, columnar, or relational stores all have their unique strengths and shine in different applications; any complete solution is likely to use all of them at some layer of the stack. A simple relational database is a (hopefully) uncontroversial first stop along the way though.
Currently, blocktop
is only at version 0.1.0: so please don't go staking your life on it! The database schema will change, the UI's appearance will change, the supported client transports will change. Despite all of this, blocktop
can currently do the very basics like,
newHeads
subscription of your node)Read the functionality document for the full list of features.
A few people are owed thanks for blocktop
0.1, but two shine in particular: My dear friend, Alec for brainstorming and manual testing of the UI, and my data hero, Danning Sui, for helping me to get builder IDs working for BuilderNet. You can see the full list here.
I'm looking forward to the next release and the eventual stable blocktop
1.0 release some time this year! Contributions are of course very welcome: open a ticket today!