What it does

Tx Flow allows Ethereum developers to easily see the whole execution flow for a given transaction.

An example of a transaction call trace

As Smart Contracts are getting more complex, we are slowly losing visibility of what is actually happening within a single transaction. This is especially true when a Smart Contract interacts with other Smart Contracts.

Take for example MakerDAO where when a user makes a transaction it can result in more than 3 internal transactions1.

Below you can an image demonstrating the value that Tx Flow brings to the flow of an Ethereum developer:

An example of a transaction call trace An example of a transaction call trace

How we built it

We had a couple of tools at our disposal:

  • A Geth node that we use for local development
  • Go which we used to write a custom EVM execution tracer so we can extract EVM runtime information, and to host the web server for the front-end app
  • LevelDB (the database that the Geth node uses) from which we ingested the necessary data
  • React/JavaScript to have a user-friendly interface with a powerful, but simple, interface to view call traces

Challenges we ran into

The biggest challenge we faced was that the idea we initially wanted to hack on was proved technically impossible (doing a binary search to extract all transactions for a given contract by comparing storage Patricia trie roots). We wanted to connect directly to LevelDB to accomplish this.

Accomplishments that we're proud of

The good thing is that we used the knowledge that we gained while trying out the initial idea, so we successfully accomplished the goal we have set ourselves: to show input variables and the full call stack for a given transaction.

What we learned

We already had some knowledge of the inner workings of the EVM, but we discovered so much more during this hackathon.

Links

GitHub Repository

Demo

video

Notes

  1. MakerDAO call graph

Built With

Share this project:

Updates