Releases: dapphub/dapptools
dapp/0.31.0
[0.31.0] - 2020-11-29
Changed
dapp test --match
now matches on file path and contract name, as
well as test namedapp --use
searches 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
,blocknumber
when rpc is provided - Perform tx initialization (gas payment, value transfer) in
hevm exec
,hevm symbolic
andhevm dapp-test
.
Added
- TTY commands
P
andc-p
for taking larger steps backwards in the debuger. --cache
flag 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/bin
or
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
--smttimeout
changed from unlimited to 20 seconds hevm symbolic --debug
now respects--max-iterations
Added
hevm exec --trace
flag 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 test
seth-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 exec
seth 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-src
skips the first step.seth --{max-uint,max-int,min-int}
print the largest numbers (in hex) of a given bitsizeseth call --hevm
executes a call via hevm, rather than the RPCseth call --debug
executes a call interactively via hevmseth --verbose
prints some seth debugging information to stderr
-
seth block
can now be passed the--full
option, 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 call
now accepts empty calldata and also create transactions
via--create
.seth --abi-function-json
no 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 .== 0
for 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.interpret
andStepper.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