dumtban/protoscan
GitHub: dumtban/protoscan
面向 DeFi 团队的自托管 CLI 工具,用于跨链追踪智能合约协议状态并对比快照间的变更差异。
Stars: 2 | Forks: 0
# protoscan
面向 DeFi 团队的链上协议状态追踪与 diff 工具。
跨链追踪已部署的合约状态——代理实现、admin 地址、协议参数、访问控制——并检测快照之间的变更。
## 为什么需要
在审计和部署后的运维过程中,我不断重复着相同的手动检查:在 Etherscan 上验证代理实现、跨链比较 admin 地址、检查治理提案是否确实按预期进行了更改。将此乘以 5 条链和 20 个合约,这种方式将变得不可持续。
随着 Defender 即将停服,针对此类需求的工具更是少之又少。`protoscan` 填补了这一空白——这是一个自托管的 CLI 工具,只需一条命令即可为您提供协议链上状态的完整视图。
## 内置协议注册表
`protoscan` 内置了针对主要 DeFi 协议的精选定义——包含所有已部署链上的合约地址、ABI、参数名称以及访问控制映射。无需额外配置。
```
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
```
```
# 完整协议扫描 — contracts、access control、parameters
protoscan scan aave-v3 -c ethereum
# 保存和比较
protoscan scan aave-v3 -c ethereum -l before-proposal
# ... governance 执行 ...
protoscan scan aave-v3 -c ethereum -l after-proposal
protoscan diff before-proposal after-proposal
```
## 安装
```
npm install -g protoscan
```
## 快速入门
### 扫描已知协议
```
protoscan scan morpho-blue -c ethereum
```
输出:
```
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
...
```
### 追踪您的自定义合约
```
# 初始化 config
protoscan init
# 使用你的 contracts 编辑 protoscan.config.json
protoscan snapshot -l baseline
# ... 时间流逝 ...
protoscan snapshot -l current
protoscan diff baseline current
```
## 配置
`protoscan.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"
}
}
}
```
### 合约类型
| 类型 | 描述 |
|------|-------------|
| `proxy` | ERC-1967 代理——追踪 implementation、admin、beacon |
| `raw` | 非代理合约——仅追踪公共状态 |
| `gnosis-safe` | Safe 多签——追踪 owners、threshold |
## 命令
| 命令 | 描述 |
|---------|-------------|
| `protoscan protocols` | 列出内置注册表中支持的协议 |
| `protoscan scan -c ` | 扫描已知协议 |
| `protoscan snapshot` | 从配置中为自定义合约生成快照 |
| `protoscan diff ` | 比较两个快照 |
| `protoscan show ` | 显示某个快照 |
| `protoscan list` | 列出已保存的快照 |
## 读取内容
- 代理 implementation、admin、beacon (ERC-1967)
- Owner、admin、guardian、governance 地址
- Paused 状态、待处理的 ownership 转移
- 协议特定参数(rates、fees、ceilings、limits)
- 访问控制角色持有者
- Token 供应量与配置
变更按严重程度分类如下:
- **critical** —— implementation 升级、admin/owner 变更、oracle 替换
- **warning** —— paused 状态、fee 变更、beacon 变更
- **info** —— 供应量变更、利用率指标
## 支持的链
Ethereum、Arbitrum、Optimism、Base、Polygon、Avalanche、BSC、Gnosis、Scroll、Linea、Blast、zkSync。
## 添加协议
协议定义位于 `src/registry/` 中。每个文件导出一个 `ProtocolDef`,包含合约、部署地址、参数定义和访问控制映射。具体模式请参阅现有定义。
欢迎提交 PR——特别是针对尚未涵盖的协议。
## 许可证
MIT
标签:DeFi, Homebrew安装, MITM代理, Prisma Cloud, 区块链, 文档结构分析, 智能合约, 暗色界面, 状态追踪, 自动化攻击, 运维监控