We built CryptoKitties and wanted to understand how people were using our contracts. Public data on the blockchain is abundant but visualization is extremely limited.
Over 500 CryptoKitties were bred by the community in just 24 hours. If we were to use Etherscan to track the most frequently called methods we would need to open 200 pages. 'Show method calls by name' is terrible because it shows the HEX in Etherscan. No one can parse all that information and make sense of it.
Etherscan is great for looking up any transaction or any block in Ethereum but it's textual data formatted into a list.
How can the community or the creators understand how people are using their contracts? Public data is readily accessible via blockchain but it's really hard to visualize.
We were inspired to build Rufflet because of our experience with another project we've worked on in the past (CryptoKitties). Rufflet allows us to understand how people are using CryptoKitties better than any other tool, and now anyone can use Rufflet for their own smart contract!
What it does
Etherscan: search for a block hash or a transaction hash and all the information related to it
Rufflet: provides all of your contract information and show you deeper insight to how methods are being used over a period of time
How we built it
We pull blocks from a full Ethereum node, index the transactions in MongoDB, parse the method call data, and send all this to the frontend to be rendered by a React app.
Grab all the most recent blocks from a full Ethereum node. Take all of those transaction and insert it into MongoDB. Index by the to address for transactions. When somebody issues a request. We find all the transaction that are sent to their contract. Parse the function calls so that we can see the function name and the inputs. Then we send that to the front end to be rendered by a React app. The graph is generated and it allows for filters.
Challenges we ran into
It is difficult to find subcalls in the EVM so we only display calls that are the entrypoint of a transaction.
What's next for Rufflet
Evaluate an EVM trace. Write code that looks through EVM trace subcalls for a particular address for every transaction. Can't index the 'to' address anymore so it will need to look through every transaction.
- Implement real-time updates