Skip to content

LimeChain/ethereum-transaction-debugger

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Solidity debugger library

Required Parameters

To start the debugger session, you'll need the following parameters:

  • txHash - A transaction hash (prefixed with 0x), for the transaction to debug

  • provider - A ethers.js provider instance (see ethers.js)

  • contracts - An array of contract objects, with the following properties:

    • contractName - The name of the contract
    • source - The full Solidity source code
    • sourcePath - (optional) the path to the Solidity file on disk
    • ast - The Solidity compiler's output AST (new style, not legacyAST)
    • binary - 0x-prefixed string with the binary used to create a contract instance
    • sourceMap - The Solidity compiler output source map for the creation binary
    • deployedBinary - 0x-prefixed string with the on-chain binary for a contract instance
    • deployedSourceMap - The source map corresponding to the on-chain binary (from the Solidity compiler)
  • files - An array of sourcePaths representing file indexes (For example: /Users/username/etherlimeProject/contracts/LimeFactory.sol)

Run

  1. Start the debugger session by constructing a Debugger instance with .forTx() and then .connect() to it:
import Debugger from "ethereum-transaction-debugger";

let bugger = await Debugger
  .forTx(txHash, { contracts, files, provider });

let session = bugger.connect();
  1. Resolve the session's ready() promise:
await session.ready();
  1. Use the provided public methods on the session instance in order to step through the trace for the transaction:
session.stepNext();
session.stepOver();
session.stepInto();
  1. Access data provided by the debugger via the session.view() interface, and the provided selectors:
let { ast, data, evm, solidity, trace } = Debugger.selectors;

let variables = session.view(data.current.identifiers.native);
let sourceRange = session.view(solidity.current.sourceRange);

License

MIT (c) 2019 Truffle, LimeChain LTD

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published