hevm

Ethereum virtual machine evaluator https://github.com/dapphub/dapptools

Latest on Hackage:0.24

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow stackage.org to host generated Haddocks.

AGPL-3.0-only licensed by Mikael Brockman
Maintained by mikael@brockman.se

Hevm implements the Ethereum virtual machine semantics.

It can be used as a library, and it also comes with an executable that can run unit test suites, optionally with a visual TTY debugger.

Changes

hevm changelog

0.24 - 2019-01-23

  • Fix STATICCALL for precompiled contracts
  • Assume Solidity 0.5.2 in tests

0.23 - 2018-12-12

  • Show passing test traces with –verbose flag

0.22 - 2018-11-13

  • Simple memory view in TTY

0.21 - 2018-10-29

  • Fix Hackage package by including C header files for ethjet

0.20 - 2018-10-27

  • Parse constructor inputs from Solidity AST

0.19 - 2018-10-09

  • Enable experimental ‘cheat’ address, allowing for modification of the EVM environment from within the tests. Currently just the block timestamp can be adjusted.

0.18 - 2018-10-09

0.17 - 2018-10-05

  • Semigroup/Monoid fix

0.16 - 2018-09-19

  • Move ethjet into hevm

[0.15] - 2018-05-09

  • Fix SDIV/SMOD definitions for extreme case

[0.14.1] - 2018-04-17

  • Improve PC display in TTY

[0.14] - 2018-03-08

  • Implement STATICCALL

[0.13] - 2018-02-28

  • Require specific block number for RPC debugging
  • Implement RETURNDATACOPY and RETURNDATASIZE
  • Fix bug where created contracts didn’t get their balance

[0.12.3] - 2017-12-19

  • More useful RPC debugging because we strip the entire BZZR metadata

[0.12.2] - 2017-12-17

  • Experimental new ecrecover implementation via libethjet
  • Correct error checking for setUp() invocations

[0.12.1] - 2017-11-28

  • Test name regex matching via –match
  • Fixed source map parsing bug when used with solc –optimize
  • TTY: fix a padding-related display glitch

0.12 - 2017-11-14

  • Use 13 different environment variables to control block parameters for unit testing, e.g. block number, timestamp, initial balance, etc.

    Full list:

    • DAPP_TEST_ADDRESS
    • DAPP_TEST_CALLER
    • DAPP_TEST_ORIGIN
    • DAPP_TEST_GAS_CREATE
    • DAPP_TEST_GAS_CALL
    • DAPP_TEST_BALANCE_CREATE
    • DAPP_TEST_BALANCE_CALL
    • DAPP_TEST_COINBASE
    • DAPP_TEST_NUMBER
    • DAPP_TEST_TIMESTAMP
    • DAPP_TEST_GAS_LIMIT
    • DAPP_TEST_GAS_PRICE
    • DAPP_TEST_DIFFICULTY

0.11.5 - 2017-11-14

  • Use –state with –exec –debug

0.11.4 - 2017-11-12

  • Fix bug when unit test contract has creations in constructor

0.11.3 - 2017-11-08

  • Fix array support in ABI module

0.11.2 - 2017-11-04

  • TTY: show a help bar with key bindings at the bottom

0.11.1 - 2017-11-02

  • TTY: fix a display glitch
  • TTY: improve display of ABI hashes on the stack

0.11 - 2017-10-31

  • Add “hevm flatten” for Etherscan-ish source code concatenation
  • Simplify code by removing concrete/symbolic machine abstraction

0.10.9 - 2017-10-23

  • Fix bugs in ABI formatting

0.10.7 - 2017-10-19

  • Fix library linking bug
  • Fix gas consumption of DELEGATECALL
  • Better error tracing
  • Experimental “contract browser” (stupid list of addresses)

0.10.6 - 2017-10-19

  • Enable library linking for unit tests and debugger
  • Use the same default gas/balance values as ethrun

0.10.5 - 2017-10-17

  • Better trace output including arguments and return values
  • Proof of concept coverage analysis via dapp-test --coverage

0.10 - 2017-10-10

  • Enable new trace output by default for failing tests
  • Exit with failure code from test runner when tests fail
  • More fixes to improve Ethereum test suite compliance

0.9.5 - 2017-10-06

  • Prototype of new trace output with hevm dapp-test --verbose
  • Nicer trace tree in the TTY debugger
  • Many fixes to improve Ethereum test suite compliance

0.9 - 2017-09-29

  • Integrates with live chains via RPC (read-only)
  • Exposes a special contract address with test-related functionality (time warp)

0.8.5 - 2017-09-22

  • Renames hevm from its maiden name hsevm :sparkles:

0.8 - 2017-09-21

  • Implements gas metering (Metropolis rules by default)
  • Shows gas counter in the terminal interface
  • Enables debugger for consensus test executions
  • Consensus test runner script with HTML reporting
  • Passes 564 of the VMTests; fails 115 (see 0.8 test report)
  • Command line options for specifying initial gas amounts and balances
  • Improved TTY UI layout

0.7 - 2017-09-07

  • Can save and load contract states to disk using a Git-backed store (only --exec)
  • Can debug raw EVM bytecode using exec --debug
  • Fixes exec --value
  • Has smarter defaults for command line when running tests or debugging
  • Fixes bug with MSIZE in CALL context

0.6.5 - 2017-09-01

  • Fixes exec with regards to exit codes and error messages

0.6.1 - 2017-08-03

  • TTY: Adds command C-n in TTY for “stepping over”

0.6 - 2017-08-03

  • TTY: Adds second line to stack entries with humanized formatting
  • TTY: Gets rid of the separate log pane in favor of a unified trace pane

0.5 - 2017-08-02

  • TTY: Adds p command for stepping backwards
  • Adds ability to track origins of stack and heap words
  • Tracks Keccak preimage for words that come from the SHA3 instruction

0.4 - 2017-07-31

  • Parallelizes unit test runner
  • Improves speed by changing representation of memory
  • Internal refactoring for future support of symbolic execution
  • Adds logs to the trace pane

0.3.2 - 2017-06-17

  • Adds REVERT opcode
  • Sets TIMESTAMP value to 1 in unit tests

0.3.0 - 2017-06-14

  • Reverts contract state after CALL fails
  • Improves test runner console output

0.2.0 - 2017-06-13

  • Fixes bug in CALL

0.1.0.1 - 2017-03-31

  • Highlights Solidity exactly on character level
  • Adds N command for stepping by Solidity source position instead of by opcode

0.1.0.0 - 2017-03-29

  • First release
comments powered byDisqus