Key Information

Register
Submit
The challenge is finished.
Show Deadlines

Challenge Overview

Mythril is a security analysis tool for Ethereum smart contracts. It is based on a symbolic virtual machine (SVM) called LASER-ethereum. The virtual machine symbolically executes the code and creates a representation of all possible program states.

The states are organized into a control flow graph. Running a smart contract in the SVM returns a Python object containing lists of nodes and edges. Each node represents a basic block of code. The LASER source code with some documentation is
available here: https://github.com/b-mueller/laser-ethereum

A good way to illustrate the data structure is Mythril’s control flow graph function, which renders the graph as an HTML file: https://github.com/ConsenSys/mythril#control-flow-graph

The code for generating the graph is found here: https://github.com/ConsenSys/mythril/blob/master/mythril/analysis/callgraph.py



In this challenge, the goal is to create a GUI version of Mythril’s trace view with some additional interactive features. Most importantly, it should be possible to click any node in the graph to open a trace view, which can then be used to navigate through the states in that node, and inspect state variables such as the stack, memory and account storage. A comparable function can be found in remix:
https://remix.ethereum.org

Documentation for debugging a transaction in remix:
http://remix.readthedocs.io/en/latest/tutorial_debug.html#from-the-transaction-gui



The submission must have the following features:
  1. An option to import a LASER statespace object in some form (e.g. by loading a JSON dump of the object), or a function to execute Mythril/LASER with bytecode input;
  2. A main window that displays a control flow graph, similar to Mythril’s HTML graph. The graph should be zoomable and scrollable.
  3. When the user clicks a node in the graph, a trace view should open. The trace view should be similar to the Remix debugger view, with a way to navigate within the range of instructions contained in the active node.
  4. The trace view should allow to investigate instruction, memory, stack and state variables for every state.
Use Electron or a comparable cross-platform framework to create a native desktop app; or, alternatively, you can create a webapp with the same functionality, that interacts with Mythril via Mythril API (ask access to the repo in the forum). In the later case you'll probably need to improve the API, exposing additional Mythril functionality via it.

Final Submission Guidelines

Submit your source code, with a brief verification video of the app in action.

Reliability Rating and Bonus

For challenges that have a reliability bonus, the bonus depends on the reliability rating at the moment of registration for that project. A participant with no previous projects is considered to have no reliability rating, and therefore gets no bonus. Reliability bonus does not apply to Digital Run winnings. Since reliability rating is based on the past 15 projects, it can only have 15 discrete values.
Read more.

ELIGIBLE EVENTS:

2018 Topcoder(R) Open

REVIEW STYLE:

Final Review:

Community Review Board
?

Approval:

User Sign-Off
?

CHALLENGE LINKS:

Review Scorecard

?