Smart Contract Sanctuary
⇝ This is the index repository for the smart-contract-sanctuary.
⇝ Chain-specific sub-repos and the index are updated twice a day.
⇝ Expect a full, recursive check-out to take 2GB+ disk space.
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 [email protected]:tintinweb/smart-contract-sanctuary.git
also see https://git-scm.com/docs/git-submodule for more options
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}}