Releases: dapphub/dapptools
dapp/0.31.0
[0.31.0] - 2020-11-29
Changed
dapp test --matchnow matches on file path and contract name, as
well as test namedapp --usesearches directly for binaries in your path, rather than
usingnix run, giving a significant speed boost.
hevm/0.42.0
hevm 0.42.0 - 2020-10-31
Changed
- z3 updated to 4.8.8
- optimize SMT queries
- More useful trace output for unknown calls
- Default to on chain values for
coinbase,timestamp,difficulty,blocknumberwhen rpc is provided - Perform tx initialization (gas payment, value transfer) in
hevm exec,hevm symbolicandhevm dapp-test.
Added
- TTY commands
Pandc-pfor taking larger steps backwards in the debuger. --cacheflag fordapp-test,exec,symbolic,interactive,
enabling caching of contracts received by rpc.load(address,bytes32)cheat code allowing storage reads from arbitrary contracts.
dapp 0.30.0 - 2020-10-31
Added
- Support for solc 0.6.8
- Support for setting solc by path. Use
DAPP_SOLC=/path/to/binor
dapp --use /path/to/solc ...to use a custom solc. - dapp test --cache for RPC caching, via hevm.
hevm/0.41.0
hevm-0.41.0
Changed
- Switched to PVP for version control, starting now at
0.41.0(MAJOR.MAJOR.MINOR). - z3 updated to 4.8.7
- Generate more interesting values in property based testing,
and implement proper shrinking for all abi values. - Fixed soundness bug when using KECCAK or SHA256 opcode/precompile
- Fixed an issue in debug mode where backstepping could cause path information to be forgotten
- Ensure that pathconditions are consistent when branching, and end the execution with VMFailure: DeadPath if this is not the case
- Fixed a soundness bug where nonzero jumpconditions were assumed to equal one.
- default
--smttimeoutchanged from unlimited to 20 seconds hevm symbolic --debugnow respects--max-iterations
Added
hevm exec --traceflag to dump a trace- Faster backstepping in interactive mode by saving multiple snapshot states.
- Support for symbolic storage for multiple contracts
dapp-0.29.0
Added
- Support for solc 0.6.12 for linux
Fixed
- Support for libraries. To test a project which includes libraries you need to use:
DAPP_BUILD_EXTRACT=1 dapp testseth-0.9.1
Added
-
New commands:
seth source <address>fetches the contract source from etherscanseth bundle-source <address>fetches contract source and compiles to combined jsonseth run-tx <tx-hash> [--debug, --source <file>, --state <repository>],
set hevm options according to the options given andhevm execseth debug <tx-hash> [--no-src]downloads etherscan source, executes previous txs in block and enters into an hevm interactive session for the given tx.--no-srcskips the first step.seth --{max-uint,max-int,min-int}print the largest numbers (in hex) of a given bitsizeseth call --hevmexecutes a call via hevm, rather than the RPCseth call --debugexecutes a call interactively via hevmseth --verboseprints some seth debugging information to stderr
-
seth blockcan now be passed the--fulloption, which returns the full block. -
hexdata can be concatenated with
:, e.g. '0xaa:0xbb' will be read as '0xaabb'.
Changed
seth --to-{hex,wei,word,address,dec,int256,ascii,fix,uint256}and
seth --from-{ascii,wei}can now read values from stdin.seth callnow accepts empty calldata and also create transactions
via--create.seth --abi-function-jsonno longer returns a singleton list, but rather the JSON object it contained.- Updated hevm to 0.41.0
hevm/0.40.0
This release makes hevm capable of symbolic execution, and exposes the new hevm symbolic or hevm equivalence.
For more details, check out the announcing post https://fv.ethereum.org/2020/07/28/symbolic-hevm-release/ or consult the README for usage options.
Install as always using nix. Check out installation instructions or in brief:
curl -L https://nixos.org/nix/install | sh
. "$HOME/.nix-profile/etc/profile.d/nix.sh"
curl https://dapp.tools/install | sh
Full changelog:
0.40 - 2020-07-22
- hevm is now capable of symbolic execution!
Changed
As a result, the types of several registers of the EVM have changed to admit symbolic values as well as concrete ones.
-
state.stack:
Word->SymWord. -
state.memory:
ByteString->[SWord 8]. -
state.callvalue:
W256->SymWord. -
state.caller:
Addr->SAddr. -
state.returndata:
ByteString->[SWord 8]. -
state.calldata:
ByteString->([SWord 8], (SWord 32)). The first element is a list of symbolic bytes, the second is the length of calldata. We havefst calldata !! i .== 0for allsnd calldata < i. -
tx.value:
W256->SymWord. -
contract.storage:
Map Word Word->Storage, defined as:
data Storage
= Concrete (Map Word SymWord)
| Symbolic (SArray (WordN 256) (WordN 256))
deriving (Show)Added
New cli commands:
hevm symbolic: search for assertion violations, or step through a symbolic execution in debug mode.hevm equivalence: compare two programs for equivalence.
See the README for details on usage.
The new module EVM.SymExec exposes several library functions dealing with symbolic execution.
In particular,
SymExec.interpret: implements an operational monad script similar toTTY.interpretandStepper.interpret, but returns a list of final VM states rather than a single VM.SymExec.verify: takes a prestate and a postcondition, symbolically executes the prestate and checks that all final states matches the postcondition.
Removed
The concrete versions of a lot of arithmetic operations, replaced with their more general symbolic counterpart.
hevm/0.39.0
hevm 0.39 release (#427)
dapp/0.28.0
Merge pull request #421 from dapphub/solc-0.6.7 dapp: 0.28.0
ethsign/0.15.0
bump ethsign to 0.15.0