Miao - EVM Transaction Decoder

Recently, I found myself increasingly reliant on (free) 3rd party tools such as ethtx.info to decode and debug failed mainnet transactions. This made me felt quite uneasy as:

And so, I decided to write one myself. But I also had a couple of requirements:

Learning from existing projects

tx2uml

tx2uml

One of the projects that kept popping up on my radar was tx2uml by Nick Addison.

It initially seemed like the perfect fit, but unfortunately digging deeper, the readme states that it was at the mercy of yet another API - alethio. And so, I jumped ship.

HEVM

hevm

Fortunately one of my favorite tooling framework dapp.tools already has built in tracing - it was also doing that data processing in house!

Only problem was that the tracing output didn't convey a lot of information unless it was used against a project that uses dapp.tools behind the scenes. This was because it was missing the ABIs / function signatures of the external contracts it was interacting with.

But this served as a good basis point to work off from.

Introducing Miao

Miao, is a lightweight (And by lightweight, I mean that a full node is not required to use it, e.g. parity trace) transaction decoder that consists of three parts:

What does Miao mean?

Miao, when pronounced in Chinese can be interpreted as 描 or 喵.

This is a great time to remind everyone that my cat has an instagram.

Usage

Using miao is fairly easy, just clone the repository and run docker-compose up

git clone git@github.com:kendricktan/miao.git
cd miao
docker-compose up

A localhost ganache-cli will also be spawned for your convinence.

Example

miao-gif

Conclusion

Transaction traces very good.