本文档介绍了如何使用 OpenZeppelin 的 Governor 合约搭建链上治理系统。包括 Governor 合约的工作原理、设置方法,以及如何使用 Ethers.js 和 Tally 创建、投票和执行提案。同时,还讨论了与 Compound 的 GovernorAlpha 和 GovernorBravo 系统的兼容性,并介绍了基于时间戳的治理方式。
了解将Token作为投票权可能带来的威胁,了解oz的ERC20Snapshot and ERC20Votes背后的原理,以及作为开发者需要注意什么问题。
ERC20Votes库是一个具备类Compound委托投票功能的ERC20拓展库。本库的发行量上限是2^224-1,比Compound更通用。合约内部使用快照结构Checkpoint来记录每个投票目标地址的总票数,每个token持有者可以采用直接或者离线签名两种方式委托投票给任何地址。