All Projects → fergarrui → Ethereum Graph Debugger

fergarrui / Ethereum Graph Debugger

Licence: gpl-3.0
Ethereum solidity graph plain debugger. To have the whole picture when debugging.

Programming Languages

typescript
32286 projects
solidity
1140 projects
bytecode
52 projects

Projects that are alternatives of or similar to Ethereum Graph Debugger

Ico Contracts
Ethereum smart contracts that have been used during successful ICOs
Stars: ✭ 160 (-9.6%)
Mutual labels:  blockchain, ethereum, ethereum-contract
Eth Crypto
Cryptographic javascript-functions for ethereum and tutorials to use them with web3js and solidity
Stars: ✭ 420 (+137.29%)
Mutual labels:  blockchain, ethereum, transaction
Ethlist
The Comprehensive Ethereum Reading List
Stars: ✭ 3,576 (+1920.34%)
Mutual labels:  blockchain, ethereum, ethereum-contract
Eth Vue
Featured in Awesome Vue [https://github.com/vuejs/awesome-vue], a curated list maintained by vuejs of awesome things related to the Vue.js framework, and Awesome List [https://awesomelists.net/150-Vue.js/3863-Open+Source/18749-DOkwufulueze-eth-vue], this Truffle Box provides everything you need to quickly build Ethereum dApps that have authentication features with vue, including configuration for easy deployment to the Ropsten Network. It's also Gravatar-enabled. Connecting to a running Ganache blockchain network from Truffle is also possible -- for fast development and testing purposes. Built on Truffle 5 and Vue 3, eth-vue uses vuex for state management, vuex-persist for local storage of app state, and vue-router for routing. Authentication functionalities are handled by Smart Contracts running on the Ethereum blockchain.
Stars: ✭ 171 (-3.39%)
Mutual labels:  blockchain, ethereum, ethereum-contract
Smart Contract Watch
A tool to monitor a number of smart contracts and transactions
Stars: ✭ 168 (-5.08%)
Mutual labels:  blockchain, ethereum, transaction
Yearn Protocol
Yearn smart contracts
Stars: ✭ 277 (+56.5%)
Mutual labels:  blockchain, ethereum, ethereum-contract
React Ethereum Dapp Example
A starter boilerplate for an Ethereum dapp using web3.js v1.0, truffle, react, and parity
Stars: ✭ 384 (+116.95%)
Mutual labels:  blockchain, ethereum, ethereum-contract
Learning Blockchain
Tidy up Blockchain ecosystem and tutorial
Stars: ✭ 188 (+6.21%)
Mutual labels:  blockchain, ethereum, transaction
Angular Truffle Starter Dapp
Angular CLI + Truffle Starter Dapp; write, compile & deploy smart contracts on Ethereum blockchains
Stars: ✭ 174 (-1.69%)
Mutual labels:  blockchain, ethereum, ethereum-contract
Smart Contracts Example
Simple example of token market. Based on blockchain technology using Ethereum platform.
Stars: ✭ 37 (-79.1%)
Mutual labels:  blockchain, ethereum, ethereum-contract
Colonynetwork
Colony Network smart contracts
Stars: ✭ 351 (+98.31%)
Mutual labels:  blockchain, ethereum, ethereum-contract
Smart Contract Sanctuary
🐦🌴🌴🌴🦕 A home for ethereum smart contracts. 🏠
Stars: ✭ 99 (-44.07%)
Mutual labels:  blockchain, ethereum, ethereum-contract
Stromdao Businessobject
Abstract BusinessObject for StromDAO Energy Blockchain. Abstraction layer between blockchain technology and business logic providing energy market related entities and use cases.
Stars: ✭ 10 (-94.35%)
Mutual labels:  blockchain, ethereum, ethereum-contract
Trust Wallet Ios
📱 Trust - Ethereum Wallet and Web3 DApp Browser for iOS
Stars: ✭ 1,228 (+593.79%)
Mutual labels:  blockchain, ethereum, ethereum-contract
Yearn Vaults
Yearn Vault smart contracts
Stars: ✭ 132 (-25.42%)
Mutual labels:  blockchain, ethereum, ethereum-contract
Basic Attention Token Crowdsale
Basic Attention Token
Stars: ✭ 160 (-9.6%)
Mutual labels:  ethereum, ethereum-contract
Curso blockchain
Indtroductory course to cryptocurrencies and applications of Blockchain technologies.
Stars: ✭ 161 (-9.04%)
Mutual labels:  blockchain, ethereum
Trust Ray
☁️ API for the Trust Wallet. Project no longer supported and current version used as source of transactions and address tokens in Blockatlas https://github.com/trustwallet/blockatlas/blob/master/config.yml#L64
Stars: ✭ 172 (-2.82%)
Mutual labels:  blockchain, ethereum
Evmone
Fast Ethereum Virtual Machine implementation
Stars: ✭ 162 (-8.47%)
Mutual labels:  blockchain, ethereum
Tokenbalance
Simple Ethereum API to get your ERC20 Token Balance along with useful information
Stars: ✭ 163 (-7.91%)
Mutual labels:  ethereum, ethereum-contract

ethereum-graph-debugger

EGD Demo GIF

Graphical EVM debugger. This debugger takes a different approach to traditional debugging. Instead of stepping through the execution of the program, it shows the whole program control flow graph and the actual execution of the transaction highlighted in red. In this way, the developer can see the whole picture and jump where it is necessary in a quick and graphical way.

This project was rewritten with a frontend made by Swolfeyes and backend by fergarrui

Development repository was archived, marked as read-only and moved here, to the main repo.

Existing tools

There are already tools that allow you to debug Ethereum transactions (Solidity):

Usage

Download

Use release link:

If you want to use master (it can be more unstable), clone and start the application

For the first time:

  git clone https://github.com/fergarrui/ethereum-graph-debugger.git
  cd ethereum-graph-debugger
  npm install
  npm start

Subsequents just:

npm start

Go to localhost:9090

With docker

docker-compose up

Go to localhost:9090

Add contracts to ./contracts (you will need to create the directory) and empty string at the 'Load contracts from URI' form.

Use

  • Go to localhost:9090
  • Enter the path where the contracts are in the input text (it will load Solidity contracts recursively)
  • A tab per file found will be created
  • Under a file tab there are a few actions using the left menu

How to debug bytecode (with no source code) [Experimental]

  • Create a file with extension .evm and paste the runtime bytecode (⚠️ important: with 0x as prefix)
    • For example: create a file named: contract1.evm with content 0x60806040
  • Scan the directory as described above
  • You won't get source code mappings when clicking in operations of the CFG

Features

  • Now interactive 🌟: it has a sepparate frontend and API instead of building a static HTML file like in earlier versions
  • Control flow graph: the CFG can be built without debugging a transaction.
  • Disassembler: just disassembled opcodes can be seen, from runtime and constructor
  • Source mapping: snippet of code related to the selected instruction is highlighted in the editor left panel
  • Debug transaction: a transaction can be debugged using the contract's CFG and the execution trace
  • Storage viewer: Storage layout and values can be retrieved (including dynamic arrays and mappings ❗️ )
  • Supports contracts calls. All contracts involved in the transaction can be debugged (going to the caller/called tab to see the contract-specific trace)
  • EVM state in transaction: it is shown below the editor when selecting an opcode present in the execution trace of the provided transaction hash
  • Settings: right now, there are settings to point to a different chain (by default it connects to http://127.0.0.1:8545) and basic authentication can be configured, so the RPC endpoint can be accessed if authentication is needed (to be compatible with platforms like Kaleido)
  • When building the CFG a basic dynamic execution is made to calculate jumps and to remove most of orphan blocks (this will be improved in the future, probably with SymExec)
  • To debug directly bytecode, use .evm extension files
  • Constructor CFG is supported
  • Debugging constructor transactions is supported

Limitations/Considerations

  • Only Solidity is supported at the moment
  • Only runtime debugging is supported for now (no constructor)
  • You must run it against a node that supports debug_traceTransaction, like Geth or Ganache, therefore, Infura is not supported
  • It was rewritten, so new bugs may appear
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].