Git Product home page Git Product logo

evmdebugger's Introduction

EVM Debugger

This project aims to build the most feature-rich and user-friendly GUI debugger for Ethereum Virtual Machine (EVM) assembly code.

The Need for an Assembly Debugger

Smart contracts were designed to be verifiable and trust-less. However, the trustless-ness is only true when the source code (in Solidity) is available, which is not always the case.

Reverse engineering solutions like Porosity exists. But they don't work well enough to identify scam contracts.

Ultimately, contracts are executed in byte-codes. It is thus always possible to debug Ethereum contracts using byte-codes. Yet I've been searching for quite a while and failed to find a debugger that is nice to use (with automated testing, etc.). So I decided to write my own.

Features

The debugger supports (well, will support) a wide of features including:

  • Import contract code from address directly via Etherscan API
  • Setup transaction information with transaction hash via Etherscan API
  • Automated testing for different input values (sender, gas, data, etc.)

Dependency

The EVM project uses the following NuGet libraries:

  • SHA3: for Keccak-256 hashing.
  • Newtonsoft.Json: for JSON serialization and deserialization.

Please note that uint256 has no dependencies and is thus directly portable.

Projects

There are three projects in the solution:

  • uint256: A portable C# implementation of unsigned 256-bit integer used by EVM and EVMDebugger
  • EVM: A portable C# implementation of EVM for debugging purpose.
  • EVMDebugger: GUI for the debugger

Environment

This project is originally developed in Windows 10 Pro 16299.192 with Microsoft Visual Studio Community 2017 Version 15.5.3.

In the future, the project may be migrated to be cross platform.

Known Issues

Issues in this list are to be fixed in a future update. For any issues or bugs outside this list, please submit a GitHub issue (or a pull request directly).

  • No gas consumption calculations (so never out of gas)
  • External call not supported
  • No step-back support

Acknowledgement

No. I don't like the Ethereum yellow paper. It's so hard to read (at least for me) that it makes me more confused after reading. The implementation of EVM in this project makes extensive reference to that of cpp-ethereum.

Contribution

Open discussions are welcomed! Feel free to submit an issue for any problem regarding this project. It would be even better to submit pull request to improve the debugger.

Or you can contract me via email: [email protected]

evmdebugger's People

Contributors

xjonathanlei avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

texnomic

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.