tools/dao_status.ts、tools/committee_status.ts、tools/project_status.ts 和 tools/proposal_status.ts 是当前仓库里的只读辅助工具。
它们的定位是:
- 快速读取链上治理和系统状态
- 默认不发送交易
- 适合做运维检查、提案确认和发布前核对
读取 SourceDao 的整体系统状态,包括:
versionbootstrapAdmin- 7 个核心模块地址
- 每个模块是否已配置
- 每个模块是否有代码
SourceDao.isDAOContract(...)是否识别该地址- 模块是否实现
version()
读取当前委员会治理状态,包括:
committeeVersion- 当前委员会成员和数量
devRatio / finalRatiomainProjectName / finalVersion- final version 是否已经发布
- 可选观察地址的当前 ordinary / full proposal 投票资格
- 可选观察地址的
DevToken / NormalToken余额和当前 full proposal 票重
读取单个 proposal 的状态,包括:
- proposal 是否存在
- ordinary / full proposal 类型
statefromGroup / originexpiredsupport / reject地址和数量- full proposal 的
threshold / agree / reject / settled / pending
读取单个项目的业务状态,包括:
- 项目是否存在
- manager / budget /
projectName / version Preparing / Developing / Accepting / Finished / Rejected当前状态- 当前结果枚举
- 关联 committee proposal 的状态
- extra token 配置
- contribution 列表、总贡献值和
hasClaim - 当前版本是否已发布,以及同名项目的 latest version 信息
- 可选观察地址的 contribution 值和是否已领取
当前普通 proposal 的 snapshot version 没有公开 getter,所以工具会明确提示这项状态目前无法直接从链上接口读取。
npx hardhat run tools/dao_status.ts --network opmainnpx hardhat run tools/committee_status.ts --network opmainnpx hardhat run tools/proposal_status.ts --network opmainnpx hardhat run tools/project_status.ts --network opmain如果没有通过环境变量或配置文件提供 proposal id,proposal_status.ts 会进入交互输入。
默认输出是文本格式。
如果需要 JSON:
SOURCE_DAO_OUTPUT_FORMAT=json \
npx hardhat run tools/dao_status.ts --network opmain或:
SOURCE_DAO_OUTPUT_FORMAT=json \
SOURCE_DAO_PROPOSAL_ID=123 \
npx hardhat run tools/proposal_status.ts --network opmain这两个状态工具与 vote.ts / vote_offline.ts 共用同一套分层 JSON 配置读取逻辑。
推荐结构:
tools/config/profiles/<profile>.jsontools/config/local.json
示例文件见:
{
"daoAddress": "0xYourDaoAddress",
"status": {
"address": "0xAddressToInspect",
"projectId": 1,
"proposalId": 123,
"output": "json"
}
}支持字段:
daoAddressstatus.addressstatus.projectIdstatus.proposalIdstatus.output
优先级:
- 环境变量
SOURCE_DAO_CONFIG指向的旧单文件配置local配置profile配置- 默认值
-
SOURCE_DAO_PROFILE- 指定 profile 名称
-
SOURCE_DAO_PROFILE_PATH- 显式指定 profile 配置文件路径
-
SOURCE_DAO_LOCAL_CONFIG- 显式指定本地配置文件路径
-
SOURCE_DAO_CONFIG- 旧单文件配置兼容入口
-
SOURCE_DAO_ADDRESS- 覆盖默认 DAO 地址
-
SOURCE_DAO_OUTPUT_FORMATtext或json
-
SOURCE_DAO_STATUS_ADDRESS- 为
committee_status.ts指定要观察的地址;若未提供,会回退到voterAddress
- 为
SOURCE_DAO_PROPOSAL_ID- 直接指定 proposal id,避免交互输入
SOURCE_DAO_PROJECT_ID- 直接指定 project id,避免交互输入
这两个工具是只读工具,不会发送交易。
当前仍有几个边界需要知道:
- 普通 proposal 的 snapshot version 当前没有公开 getter
- full proposal 哪些具体 voter 已经
settled当前也没有公开 getter - full proposal 工具能给出
pendingSettleCount,但不能精确列出每个未 settle 地址 committee_status.ts当前可以判断“当前”委员会资格和 full proposal 当前票重,但不会追溯历史快照project_status.ts展示的是当前projectDetailOf(...)存量数据,不会重建历史贡献变更轨迹
如果后续需要更深的 full proposal 诊断,下一步更适合单独补一个 full_proposal_status.ts
当前已经有工具层回归测试覆盖:
dao_status的已配置 / 已 finalize 状态读取committee_status的治理参数、成员和观察地址资格读取project_status的项目生命周期、贡献列表和观察地址领取状态读取- ordinary proposal 状态读取
- full proposal 状态读取
以及:
- 离线签名 bundle 的签名和广播路径
这些测试都已进入当前 Hardhat 3 测试套件。