{"id":15650013,"url":"https://github.com/pirapira/vmtrace_visualizer","last_synced_at":"2026-03-05T21:32:02.042Z","repository":{"id":66718527,"uuid":"69368727","full_name":"pirapira/vmtrace_visualizer","owner":"pirapira","description":"A program that annotates a vm trace with dataflow information","archived":false,"fork":false,"pushed_at":"2022-03-24T10:31:47.000Z","size":369,"stargazers_count":35,"open_issues_count":0,"forks_count":6,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-30T16:48:48.804Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pirapira.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-09-27T15:03:20.000Z","updated_at":"2023-10-27T10:53:09.000Z","dependencies_parsed_at":"2023-04-06T00:21:40.379Z","dependency_job_id":null,"html_url":"https://github.com/pirapira/vmtrace_visualizer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pirapira/vmtrace_visualizer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pirapira%2Fvmtrace_visualizer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pirapira%2Fvmtrace_visualizer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pirapira%2Fvmtrace_visualizer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pirapira%2Fvmtrace_visualizer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pirapira","download_url":"https://codeload.github.com/pirapira/vmtrace_visualizer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pirapira%2Fvmtrace_visualizer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30150420,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T21:15:50.531Z","status":"ssl_error","status_checked_at":"2026-03-05T21:15:11.173Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-03T12:33:01.428Z","updated_at":"2026-03-05T21:32:02.015Z","avatar_url":"https://github.com/pirapira.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ethereum VM trace visualizer\n\n![Dataflow visualized](https://yoichihirai.com/spam.png)\n\n[geth](https://github.com/ethereum/go-ethereum) outputs a VM trace for an Ethereum\n transaction, by [`debug.traceTransaction()` function](https://github.com/ethereum/go-ethereum/wiki/Management-APIs#debug_tracetransaction).\nThis repository contains a small ruby program that annotates the traces with the original steps that produced the operands.\n\nThe enricher tries to answer questions like\n\n* how does this contract calculate the value it sends?\n* how does this contract determine the address it calls?\n\non concrete transaction logs.\n\nCurrently the enricher keeps track of the origins of values on the stack.\n\n## Usage\n\nAfter checking out this repository:\n```\nruby src/enricher.rb example/example_1.json | less\n```\nis a way to use it.\n\n## Example\n\nBefore the transformation\n```\n{\n\t\"depth\":1,\n\t\"error\":null,\n\t\"gas\":977788,\n\t\"gasCost\":20,\n\t\"memory\":[\n\t\t\"0000000000000000000000000000000000000000000000000000000000000000\",\n\t\t\"0000000000000000000000000000000000000000000000000000000000000000\",\n\t\t\"0000000000000000000000000000000000000000000000000000000000000060\"\n\t],\n\t\"op\":\"EXP\",\n\t\"pc\":9,\n\t\"stack\":[\n\t\t\"00000000000000000000000000000000000000000000000000000000000000e0\",\n\t\t\"0000000000000000000000000000000000000000000000000000000000000002\"\n\t],\n\t\"storage\":{}\n},\n```\n\nAfter the transformation\n```diff\n{\n\t\"depth\":1,\n\t\"error\":null,\n\t\"gas\":977788,\n\t\"gasCost\":20,\n\t\"memory\":[\n\t\t\"0000000000000000000000000000000000000000000000000000000000000000\",\n\t\t\"0000000000000000000000000000000000000000000000000000000000000000\",\n\t\t\"0000000000000000000000000000000000000000000000000000000000000060\"\n\t],\n\t\"op\":\"EXP\",\n\t\"pc\":9,\n\t\"stack\":[\n\t\t\"00000000000000000000000000000000000000000000000000000000000000e0\",\n\t\t\"0000000000000000000000000000000000000000000000000000000000000002\"\n\t],\n\t\"storage\":{\n\t},\n+\t\"step\":5,\n+\t\"arg_origins\":[\n+\t\t{\n+\t\t\t\"depth\":1,\n+\t\t\t\"step\":3\n+\t\t},\n+\t\t{\n+\t\t\t\"depth\":1,\n+\t\t\t\"step\":4\n+\t\t}\n+\t]\n},\n\n```\n\n## Graphviz output\n\nAs a preparation, you need the `graphviz` tools:\n```\nsudo apt install graphviz\n```\n\nThen,\n```\nruby src/enricher.rb -g example/example_1.json \u003e graph.dot \u0026\u0026 \\\ndot -Tpdf graph.dot -o graph.pdf\n```\nwould produce a data-flow diagram in `graph.pdf`.\n\n## How to obtain vm traces\n\nThe input JSON can be obtained from `geth` RPC.  See `example/get_example_1.sh` for how.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpirapira%2Fvmtrace_visualizer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpirapira%2Fvmtrace_visualizer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpirapira%2Fvmtrace_visualizer/lists"}