Published May 8, 2020 | Version v1

eThor: Practical and Provably Sound Static Analysis of Ethereum Smart Contracts (artifacts)

Description

This dataset contains the software and benchmarks accompanying the paper "eThor: Practical and Provably Sound Static Analysis of Ethereum Smart Contracts" (published at the ACM Conference on Computer and Communications Security (CCS) 2020).

ethor-sources.zip and horst-sources.zip contain the sources for our smart contract analyzer eThor and the HoRSt framework on which it is based.

ethor.jar and horst.jar are the compiled versions of eThor and HoRSt.

control-flow-reconstruction-tool.zip contains the sources for the tool used to reconstruct the control flows.

contracts.zip contains the contracts in the reentancy benchmark with redacted bytecodes (720 contracts). See below for unredaction.
contracts-with-reconstructed-control-flow.zip contains the non-trivial contracts in the benchmark contracts with reconstructed control flow and redacted bytecodes (605 contracts). See below for unredaction.
contracts-with-sources.txt contains the addresses of contracts in the reentrancy benchmark, to whose Solidity source code we had access to during assessment of the ground truth (601 contracts).
results.csv contains the classification of contracts and ground truth.

case-study-data.zip contains the data set for the functional correctness case study.

Provenance, Licenses, Recovery of Original Files

The software developed developed by the authors of this resource (ethor-sources.zip, horst-sources.zip and control-flow-reconstruction-tool.zip, ethor.jar, horst.jar) are licensed under GPL 3 or later.

All contract bytecodes in our benchmark were obtained from Ethereum Mainnet.

We redacted the bytecodes of the the smart contracts in our benchmarks due to licensing concerns. To obtain the file that we used for our experiements, first obtain the hex-encoded bytecode of any contract XYZ and place it next to XYZ.json in a file XYZ.hex.  Then executed

sed -i "s/REMOVED-DUE-TO-LICENSING-CONCERNS/$(cat XYZ.hex)/" XYZ.json

The bytecode for a contract XYZ can be, for example, obtained via etherscan, https://etherscan.io/address/XYZ#code (where XYZ has to be replaced with the actual address). Please note that all our tools ingest deployed/runtime bytecodes, not contract creation codes. Etherscan was also where we obtained the sources mentioned in contracts-with-sources.txt.

contracts.zip, contracts-with-reconstructed-control-flow.zip, contracts-with-sources.txt, and results.csv are distributed under CC0.

The addresses of the contracts in our benchmark were gathered from https://goo.gl/kFNHy3 (taken from "ZEUS: Analyzing Safety of Smart Contracts", NDSS '2018).

The solidity files in case-study-data.zip were derived from https://github.com/OpenZeppelin/openzeppelin-contracts/blob/9fdc91758dbd958a28a238a87c71b21e501a47c7/contracts/math/SafeMath.sol and are distributed under MIT.

Limitations on Reproducibility

The SMT-LIB files produced by eThor are not 100% deterministic, as the order of some statements is not fixed. This should not change the semantics of the respective file but may impact solver performance.

Files

README.md

Files (49.1 MiB)

NameSize Download all
md5:60581a36e70b1cdc51ee01526a3a8f4c
17.2 KiBPreview Download
md5:dc20835da7f8513cc4d1402d4f467a43
464.2 KiBPreview Download
md5:0bb3933bde7511ddfa43f04428992e12
25.2 KiBPreview Download
md5:583bfd92b64be3e88766d2e1af7c4a84
255.8 KiBPreview Download
md5:78edb13894b5314f1ca1b4137f7471e1
1.2 MiBPreview Download
md5:bc1212f2f347691dfcc6e4304f328660
1.6 MiBPreview Download
md5:21ccaa049f74a87cb4039201dc89994d
27.1 MiBDownload
md5:b7ce1c7bc2db3758d6bd56ada7363a22
314.4 KiBPreview Download
md5:49d6a93c720442bc1c93c64930e1b548
18.0 MiBDownload
md5:d56f568cc76eea33309ab32b72a1608d
1.3 KiBPreview Download
md5:9743ee9a4f1a5dd7e9d482048bcc0c95
45.2 KiBPreview Download

Additional details

Related works

Cites
Conference Paper: 10.14722/ndss.2018.23082 (DOI)
Is part of
Conference Paper: 10.1145/3372297.3417250 (DOI)