k06a / hardhat-tracer

🕵️ allows you to see internal calls, events and storage operations in the console

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

hardhat-tracer 🕵️

Allows you to see events, calls and storage operations when running your tests.

NOTE: hardhat-tracer v2 is currently in beta. Please see v2-beta branch.

Installation

Step 1: Install the package

npm i hardhat-tracer

Step 2: Add to your hardhat.config.js file

require("hardhat-tracer");

Usage

Test

Just add the --trace or --fulltrace after your test command.

npx hardhat test --trace      # shows logs + calls
npx hardhat test --fulltrace  # shows logs + calls + sloads + sstores
npx hardhat test --trace --opcodes ADD,SUB # shows any opcode specified

Console testing

You can just enable trace some code snippet in your tests:

hre.tracer.enable = true;
await myContract.doStuff(val2);
hre.tracer.enable = false;

Trace

You can trace a mainnet transaction and ABIs/artifacts in your project will be used to decode the internal message calls.

npx hardhat trace --hash 0xTransactionHash # works if mainnet fork is on
npx hardhat trace --hash 0xTransactionHash --rpc https://url # must be archive node

Calldata decoder

If you are just looking for a quick decode of calldata or Solidity's Custom Error:

$ npx hardhat decode --data 0x095ea7b300000000000000000000000068b3465833fb72a70ecdf485e0e4c7bd8665fc45ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ERC20.approve(spender=0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45, amount=115792089237316195423570985008687907853269984665640564039457584007913129639935)

Address name tags

You can set display names / name tags for unknown addresses by adding new entry to hre.tracer.nameTags object in your test cases, see following example:

hre.tracer.nameTags[this.arbitrager.address] = "Arbitrager";

or can be set in hardhat config

tracer: {
    nameTags: {
        '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266': 'Hunter',
        [someVariable]: 'MyContract',
    },
},

About

🕵️ allows you to see internal calls, events and storage operations in the console

License:MIT License


Languages

Language:TypeScript 99.6%Language:Solidity 0.4%