Awesome
<sup> <b>Smart Contract Sanctuary - MultiRepo / Index</b><br> ⚠️<b>UPDATE:</b> Repo layout changed! see <a href="https://github.com/tintinweb/smart-contract-sanctuary/issues/13">#13</a> (<a href="https://github.com/tintinweb/smart-contract-sanctuary/releases/tag/v1">v1-layout</a>) </sup>Smart Contract Sanctuary
🐦🌴🌴🌴🦕 A home for ethereum smart contracts verified on Etherscan. 🏠 <br><br> <sup> ⇝ This is the index repository for the smart-contract-sanctuary. 🔖 Bookmark this repo.<br> ⇝ Chain-specific sub-repos and the index are updated twice a day.<br> ⇝ Expect a full, recursive check-out to take 2GB+ disk space.<br> </sup>
Usage
The repo is configured for use with git+ssh
(much more stable and faster).
First time - clone the index and checkout all chain-specific sub repositories from scratch:
⇒ git clone --recursive --depth=1 git@github.com:tintinweb/smart-contract-sanctuary.git
<sub> also see https://git-scm.com/docs/git-submodule for more options</sub>
Existing repository but submodules never initialized - checkout submodules and update all chain-specific sub repositories:
⇒ git submodule update --init --remote --depth=1 --progress
Existing repository with submodules - update all chain-specific sub repositories:
⇒ git submodule update --remote --progress
Layout
📂 <chain>/contracts
Contains smart contract sources for various networks, grouped by the first two chars of the contract address.
Files are named in the format <address>_<source_unit_name>
, e.g. 0f0c3fedb6226cd5a18826ce23bec92d18336a98_URToken.sol
Some contracts are listed in contracts.json
, but the file-system may contain more files than what is listed in this summary. Rely on the folder/file structure for a full list.
This repo used to auto submit contracts to 4byte.directory.
📂 <chain>/utils
Support scripts for various activies like dumping smart contracts from public sources (etherscan.io, etherchain.com)
requires: pip install -r requirements.txt
Dev Notes
To use List of Verified Contract addresses with an OpenSource license, you can download the csv file, add it to the util folder, and run parse_download_contracts_etherscan_io.py
(with your etherscan API). This will add the new contracts to the appropriate folder
👩🔬 Data Science Tools
- 🧠 SolGrep - A scriptable semantic grep utility for solidity (crunch numbers, find specific contracts, extract data)
- 🐞 semgrep - Semgrep is a fast, open-source, static analysis tool for finding bugs and enforcing code standards at editor, commit, and CI time, and now supports Solidity! ❤️ Thanks @JoranHonig for contributing the semgrep solidity parser.
- 🌟 Sourcegraph - A powerful online code search service that can be used to search the sanctuary without cloning.
🎓 Citation
If you are using this dataset in your research and paper, here's how you can cite this dataset:
- APA6
Ortner, M., Eskandari, S. (n.d.). Smart Contract Sanctuary. Retrieved from https://github.com/tintinweb/smart-contract-sanctuary.
- LateX (Bib)
@article{smart_contract_sanctuary,
title={Smart Contract Sanctuary},
url={https://github.com/tintinweb/smart-contract-sanctuary},
author={Ortner, Martin and Eskandari, Shayan}}