SourceDAO 是一套面向开源组织的链上治理与激励系统。当前主实现位于 contracts/,围绕以下几类能力展开:
- 委员会治理与全员投票
- 项目立项、验收与贡献结算
DevToken / NormalToken双代币分层权益- 锁仓释放、质押分红、收购与升级治理
仓库使用 Hardhat 3 和 UUPS proxy 模式组织核心合约。
Node.js 运行环境要求:v22+,推荐最新 LTS。
从系统职责看,SourceDAO 不是单一投票合约,而是一组协作模块:
- 主控层:
Dao.sol、SourceDaoUpgradeable.sol - 治理层:
Committee.sol - 生产层:
Project.sol - 资产层:
DevToken.sol、NormalToken.sol、TokenLockup.sol、Dividend.sol、Acquired.sol
如果是第一次阅读这个项目,建议先看:
- docs/Architecture.md
- docs/ContractInterfaces.md
- contracts/Dao.sol
- contracts/Committee.sol
- contracts/Project.sol
英文版本可参考:
系统总注册表,维护各核心模块地址,并通过 isDAOContract(...) 限制内部模块调用边界。
治理核心,负责:
- 普通提案
- 全员提案
- 委员会成员管理
devRatio / finalRatio- 合约升级提案
项目生命周期管理,负责:
- 立项
- 开发期状态推进
- 验收提案
- contribution 记录
- DevToken 奖励结算
DevToken:贡献权益型 Token,流转受限NormalToken:可流通 Token,由DevToken1:1 转换得到
锁仓与线性释放模块,和主项目版本发布状态联动。
质押与分红模块,支持 DevToken / NormalToken 质押和多资产奖励发放。
外部资产收购 NormalToken 的模块,支持 ERC20 和原生币路径。
contracts/ 当前主合约实现
docs/ 架构、接口、工具和治理讨论文档
test/ 主测试套件
test-hh3/ Hardhat 3 测试入口与兼容辅助
tools/ 投票、离线签名、状态读取等辅助工具
说明:
- 当前应优先以
contracts/为准理解系统。 - 历史目录和旧脚本如果存在,应和当前主实现区分阅读。
npm installnpx hardhat buildnpm testtools/ 目录已经整理为统一的辅助工具层,当前主要包括:
tools/vote.ts:在线交互式投票tools/vote_offline.ts:离线签名投票,支持prepare / sign / broadcasttools/dao_status.ts:读取 DAO 和模块配置状态tools/committee_status.ts:读取委员会治理状态tools/project_status.ts:读取项目生命周期和贡献状态tools/proposal_status.ts:读取普通/全员提案状态
根目录的 vote.ts 仍保留兼容入口,但新的使用方式应优先走 tools/。
工具支持分层配置:
tools/config/profiles/<profile>.jsontools/config/local.json- 环境变量覆盖
示例文件:
更多工具说明见:
npx hardhat run tools/vote.ts --network opmainnpx hardhat run tools/vote_offline.ts --network opmainnpx hardhat run tools/dao_status.ts --network opmainnpx hardhat run tools/committee_status.ts --network opmainnpx hardhat run tools/project_status.ts --network opmainnpx hardhat run tools/proposal_status.ts --network opmain当前测试不仅覆盖单合约行为,也包含多模块联动和升级回归,重点包括:
Committee普通提案 / 全员提案Project生命周期与奖励结算Dividend、TokenLockup、Acquired业务边界Dao/Committee升级兼容tools/层离线签名和状态查询回归
如需深入理解当前测试入口,可从以下文件开始:
- test/committee.ts
- test/project.ts
- test/system_integration.ts
- test/upgrade.ts
- test/vote_tool.ts
- test/status_tool.ts
如果你是第一次进入这个仓库,推荐按下面顺序建立整体认知:
- 先读 docs/Architecture.md
- 再读 docs/ContractInterfaces.md
- 然后看 contracts/Dao.sol 和 contracts/Committee.sol
- 再看 contracts/Project.sol 和资产层合约
- 最后结合 docs/ContractChangeLog.md 和
test/理解当前实现边界