What it does
Tx Flow allows Ethereum developers to easily see the whole execution flow for a given transaction.
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:
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
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.