Skip to content

tintinweb/smart-contract-sanctuary

Repository files navigation

Smart Contract Sanctuary - MultiRepo / Index
⚠️UPDATE: Repo layout changed! see #13 (v1-layout)

Smart Contract Sanctuary

πŸ¦πŸŒ΄πŸŒ΄πŸŒ΄πŸ¦• A home for ethereum smart contracts verified on Etherscan. 🏠

⇝ This is the index repository for the smart-contract-sanctuary. πŸ”– Bookmark this repo.
⇝ 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 git@github.com: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

Folder Description
_docs autogenerated stats; static github page
<chain>/contracts Chain specific smart contracts
↳ ethereum/contracts Git SubModule πŸ‘‰ https://github.com/tintinweb/smart-contract-sanctuary-ethereum
↳ arbitrum/contracts Git SubModule πŸ‘‰ https://github.com/tintinweb/smart-contract-sanctuary-arbitrum
↳ avalanche/contracts Git SubModule πŸ‘‰ https://github.com/tintinweb/smart-contract-sanctuary-avalanche
↳ bsc/contracts Git SubModule πŸ‘‰ https://github.com/tintinweb/smart-contract-sanctuary-bsc
↳ fantom/contracts Git SubModule πŸ‘‰ https://github.com/tintinweb/smart-contract-sanctuary-fantom
↳ polygon/contracts Git SubModule πŸ‘‰ https://github.com/tintinweb/smart-contract-sanctuary-polygon
↳ tron/contracts Git SubModule πŸ‘‰ https://github.com/tintinweb/smart-contract-sanctuary-tron
↳ optimism/contracts Git SubModule πŸ‘‰ https://github.com/tintinweb/smart-contract-sanctuary-optimism
↳ celo/contracts Git SubModule πŸ‘‰ https://github.com/tintinweb/smart-contract-sanctuary-celo
<chain>/utils Chain specific support scripts
πŸ“‚ <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}}