Download contracts from etherscan:
python contract_crawler.py --web etherscan --use-api --api-key $ETHERSCAN_APIKEYS --csv eth-addresses.csv --output-dir ../verified_contracts/
The contract addresses are loaded using the script:
# Monitoring online transactions to discover possible contracts addresses
python blockchain-multichain-monitor.py --endpoint $ETH_RPC_ENDPOINT eth-addresses.csv
Downloaded contracts can be found at https://github.com/cassc/verified_contracts
Crawl the latest verified contract source code from Etherscan. Usage:
python etherscan_contract_crawler.py
python etherscan_contract_crawler.py --url
To use a unified crawler for etherscan and bscscan:
python contract_crawler.py --web etherscan
python contract_crawler.py --web bscscan
python contract_crawler.py --web etherscan --url URL_HERE
python contract_crawler.py --web bscscan --url URL_HERE
Crawled contracts will be saved in contracts
folder, each contract
can have multiple source files, and the source files will be placed in
a folder with the format
{contract_address}_{contract_name}
. Metadata for contracts will be
saved in a JSON file, for example,
contracts/contracts_20220602_174048.json
.
Some sample outputs:
contracts
├── contracts/0x00000b7665850F6b1E99447a68dB1e83d8Deafe3_BadgerRegistry
│ ├── contracts/0x00000b7665850F6b1E99447a68dB1e83d8Deafe3_BadgerRegistry/01_02_BadgerRegistry.sol
│ └── contracts/0x00000b7665850F6b1E99447a68dB1e83d8Deafe3_BadgerRegistry/02_02_EnumerableSet.sol
├── contracts/0x00515d3e90950b844D54fB2781afeeda81ADea39_RGB22
│ ├── contracts/0x00515d3e90950b844D54fB2781afeeda81ADea39_RGB22/01_14_RGB22.sol
│ ├── contracts/0x00515d3e90950b844D54fB2781afeeda81ADea39_RGB22/02_14_ERC721A.sol
│ ├── contracts/0x00515d3e90950b844D54fB2781afeeda81ADea39_RGB22/03_14_Ownable.sol
│ ├── contracts/0x00515d3e90950b844D54fB2781afeeda81ADea39_RGB22/04_14_MerkleProof.sol
├── contracts/contracts_20220602_174048.json
...