-
Notifications
You must be signed in to change notification settings - Fork 39
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Decompilation #173
Decompilation #173
Conversation
- adds unit tests - adds type declarations to creates blocks in pretty printer - adds custom equivalence checking logic that signals success / failure in it's return value - adds whole exp traversals (mapExpM and mapExp for now) - fixes a bunch of small bugs
Hi! Is this still being worked on? Should I review? Sounds cool :) Mate |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for fixing this up and getting it ready to merge.
Mostly curious if some of the soundness concerns still in the TODO
comments are valid.
Should I review? Is this active, do you want this merged? Looks like a lot of cool work! |
Co-authored-by: dxo <[email protected]>
Co-authored-by: dxo <[email protected]>
I'm not allowed to approve because I opened the PR originally, but all your changes look good to me @zoep and I'm fine to merge this whenever. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Adds a certified decompiler that can automatically derive act specifications from evm bytecode. The process operates in the following stages:
This currently supports only very simple contracts, basically value types, simple arithmethic, and storage writes. Mappings in storage are currently not supported, but doing so should be in principle possible.
Some simple tests are added, but still todo is to hook this up to the main CLI interface.
Starting from the existing solidity code produces the following spec (I'm currently unsure where the
case True
comes from):