A Python script to scan EVM-based blockchains for smart contract upgrades
Uses a handcrafted dictionary of known upgradeable proxy addresses, with a name, implementation slot and list of implementation addresses for each. If a change is detected in the implementation slot, the new address value is added to the list and its source code is downloaded from Etherscan for diffing.
To use the scanner, you will need to:
- Install Foundry
- Get free API keys from Etherscan (and its sister sites for other chains) and Infura (or another RPC node provider)
- Copy
example.env
, rename it to.env
, and add your API keys where indicated- If you use a different node provider, you will also need to replace the Infura URL
- Infura does not support BSC, so I used Quicknode for a BSC RPC node
If you find this script useful leave a star, and if you add more proxy addresses to the dictionary or make any improvements to the code, please open a PR.