在太乙协议中,有一个很重要的合约,用于太乙岛治理提案的执行,这个合约称作是“赏善罚恶令”。
准确地说,这个合约(TaiyiDAOExecutor
)是一个由太乙师傅共同参加的投票执行系统,可以在链上执行太乙岛提案,这些提案几乎支持一切链上交易。这个合约衍生自Compound项目的Timelock
,它也为太乙岛运作了一个带时间锁定的金库系统,同时它也是太乙岛提案的实际执行者,因此又被称为“赏善罚恶令
”。
这个合约只能由太乙岛治理合约(TaiyiDAOProxy
)来控制,因此只能执行太乙岛治理合约通过的提案
。这些提案从给某个社区工作者发工资,到操作盘古角色印制“道理”,甚至是替换升级某个重要的合约模块,可以说是五花八门,应有尽有。
这里举个投资的例子,如果师傅们希望外界的加密货币注资到太乙岛基金会,怎么操作赏善罚恶令?
首先,太乙岛相关的协议本身是和现有的加密货币无关的,只定义了一种叫做“道理”的ERC20通货。太乙协议的角色合约中,每次铸造新角色的道理费用,是直接由铸造代码打入到太乙岛基金会地址的。另外太乙世界中的一些事件,也会给太乙基金会打入一些资源资产,比如金石、药材等等,作为太乙世界的建设基金。甚至,有一些特殊的资源,比如“师傅令牌”,每铸造十个,就会自动铸造一个直接打入到太乙岛基金会的地址。由于师傅令牌就是太乙岛治理的投票权,因此太乙岛基金会至少会获得10%的投票权。
回到我们的主题上,如果有一个投资机构,想用以太坊投资太乙基金会并获得相应数量的师傅令牌。那么就可以由当前的某位师傅在太乙岛治理合约上发起一个提案
。
提案中包含如下两个需要执行的交易(Transaction):
- 1、在包装ETH的ERC20代币(如WETH)合约上,从投资人地址转账到太乙岛基金会地址
- 2、在师傅令牌合约上,从太乙岛基金会地址将N个太乙师傅令牌转给投资人地址
接下来,由各位师傅检查这个提案的内容,如果表示满意,就投票通过这个提案。
保险起见,提案被通过并进入治理合约的执行队列后,治理合约还会等上一段时间来交给赏善罚恶令去执行。这段时间,投资人和基金会双方可以检查提案的状态,在确认为“待执行”状态后,双方才会对赏善罚恶令合约进行最后的代币操作授权。只有授权后,赏善罚恶令也才能成功执行上述两个交易。
在提案被执行后,上述两笔交易就会被一次性执行完毕。只要有其中一笔交易失败,提案所有的相关交易都会无效(revert)。提案正确执行后,太乙岛基金会应该就收到了投资人的ETH包装代币,投资人也收到了基金会转过来的师傅令牌。