On-chain protocol state tracker and diff tool for DeFi teams.
Track deployed contract state across chains — proxy implementations, admin addresses, protocol parameters, access control — and detect changes between snapshots.
During audits and post-deployment ops I kept repeating the same manual checks: verifying proxy implementations on Etherscan, comparing admin addresses across chains, checking that governance proposals actually changed what they were supposed to. Multiply that by 5 chains and 20 contracts and it becomes unsustainable.
With Defender sunsetting, there's even less tooling for this. protoscan fills the gap — a self-hosted CLI that gives you a complete picture of your protocol's on-chain state in one command.
protoscan ships with curated definitions for major DeFi protocols — contract addresses, ABIs, parameter names, and access control mappings across all deployed chains. No configuration needed.
protoscan protocols aave-v3 Aave V3 v3.0 5 chains | 10 params | 3 access roles
compound-v3 Compound V3 v3.0 3 chains | 13 params | 3 access roles
uniswap-v3 Uniswap V3 v3.0 5 chains | 10 params | 2 access roles
maker Maker (Sky) vMCD 1 chain | 9 params | 2 access roles
eigenlayer EigenLayer v1.0 1 chain | 7 params | 6 access roles
pendle Pendle v2.0 2 chains | 5 params | 2 access roles
lido Lido v2.0 1 chain | 36 params | 4 access roles
morpho-blue Morpho Blue v1.0 2 chains | 20 params | 4 access roles
# Full protocol scan — contracts, access control, parameters
protoscan scan aave-v3 -c ethereum
# Save and compare
protoscan scan aave-v3 -c ethereum -l before-proposal
# ... governance executes ...
protoscan scan aave-v3 -c ethereum -l after-proposal
protoscan diff before-proposal after-proposalnpm install -g protoscanprotoscan scan morpho-blue -c ethereumOutput:
Contracts
Morpho: 0xBBBB...FFCb
Core immutable lending singleton
MetaMorphoFactory: 0xA9c3...6101
Factory deploying MetaMorpho vault instances
...
Access Control
✗ Morpho Core Owner
holder: 0xcBa2...9AFa
Can enable new IRMs/LLTVs and change fee recipient
✗ Vault Owner
holder: 0x0A0e...8DD
Full control over MetaMorpho vault
...
Config Parameters
! reserveFeePercent: 1000 (10.00%)
Fee percentage taken from yield as protocol revenue
...
# Initialize config
protoscan init
# Edit protoscan.config.json with your contracts
protoscan snapshot -l baseline
# ... time passes ...
protoscan snapshot -l current
protoscan diff baseline currentprotoscan.config.json:
{
"chains": {
"ethereum": {
"rpc": "https://ethereum-rpc.publicnode.com"
},
"arbitrum": {
"rpc": "https://arbitrum-one-rpc.publicnode.com"
}
},
"contracts": {
"MyPool": {
"address": "0x...",
"chains": ["ethereum", "arbitrum"],
"type": "proxy"
}
}
}| Type | Description |
|---|---|
proxy |
ERC-1967 proxy — tracks implementation, admin, beacon |
raw |
Non-proxy contract — tracks public state only |
gnosis-safe |
Safe multisig — tracks owners, threshold |
| Command | Description |
|---|---|
protoscan protocols |
List supported protocols in the built-in registry |
protoscan scan <id> -c <chain> |
Scan a known protocol |
protoscan snapshot |
Snapshot custom contracts from config |
protoscan diff <from> <to> |
Compare two snapshots |
protoscan show <snapshot> |
Display a snapshot |
protoscan list |
List saved snapshots |
- Proxy implementation, admin, beacon (ERC-1967)
- Owner, admin, guardian, governance addresses
- Paused state, pending ownership transfers
- Protocol-specific parameters (rates, fees, ceilings, limits)
- Access control role holders
- Token supply and configuration
Changes are classified by severity:
- critical — implementation upgrade, admin/owner change, oracle swap
- warning — paused state, fee changes, beacon change
- info — supply changes, utilization metrics
Ethereum, Arbitrum, Optimism, Base, Polygon, Avalanche, BSC, Gnosis, Scroll, Linea, Blast, zkSync.
Protocol definitions live in src/registry/. Each file exports a ProtocolDef with contracts, deployment addresses, parameter definitions, and access control mappings. See existing definitions for the pattern.
PRs welcome — especially for protocols not yet covered.
MIT