Snapshot投票为什么不等于链上执行
Snapshot是链下投票工具,投票结果本质上只是一个"信号",不具备自动执行能力。要把票数变成实际动作,需要通过时间锁、多签钱包或链上执行合约等工具,由人(或合约)手动触发后续操作。
步骤1:确认你参与的投票是链下投票还是链上投票
做什么:打开Snapshot提案页面,查看提案所属项目使用的执行方式。Snapshot有两种形态:原始的Snapshot是纯链下投票平台,结果存储在IPFS;Snapshot X才是全链上版本,具备自动执行能力。
怎么做:
如果提案页面显示的是普通的Snapshot投票,且有"Off-Chain Vote"标识,说明结果需要在链下由其他方式执行。
如果提案页显示"Snapshot X"或"On-Chain"标识,说明投票通过后会通过智能合约自动执行。
大多数DAO目前用的还是标准Snapshot,即链下投票+链下或手动执行。
做到什么程度算完成:你能说清当前提案的投票类型属于哪一类。
步骤2:理解链下投票的"信号"本质——结果不会自动上链
做什么:搞清楚Snapshot投票通过的提案,后续需要经过什么流程才能变成链上动作。
怎么做:
Snapshot投票通过后,结果保存在IPFS上,而不是链上。链上没有记录"这个提案通过了"这个事实。
要把结果变为现实操作,通常需要经过执行人手动发起链上交易。执行人可能是多签钱包的签名者、项目团队指定的执行人,或任何满足条件的社区成员。
常见执行路径包括:
多签执行:多签持有者根据投票结果手动执行交易,修改协议参数或转移资金。
时间锁队列:通过后的提案先排队进入时间锁,等待延迟期结束后才能执行。
Aragon代理:用Aragon Agent作为执行者,把Snapshot投票结果打包提交到链上。
做到什么程度算完成:你明确了提案通过后的执行路径——是走多签、时间锁还是其他机制。
关键提醒:即使提案在Snapshot上以100%赞成票通过,如果执行人没有操作,或者多签签名者不配合,这个提案就永远停留在"通过但未执行"的状态。投票通过和链上执行之间,隔着"人的操作"这一环。
步骤3:区分"提案通过"和"提案执行"两个状态
做什么:在提案详情页查看"State"或"Status"字段,确认提案目前处于哪个阶段。
怎么做:
Snapshot提案状态通常包括:Pending(投票中)、Accepted(已通过)、Rejected(已否决)、Executed(已执行)、Cancelled(已取消)等。
如果状态显示"Accepted"但还没变成"Executed",说明投票已经过了,但还没执行。
如果该提案关联了时间锁,还要查看isOperationReady(id)返回的状态——Ready表示可以执行,Pending表示还在排队。
做到什么程度算完成:你能准确说出当前提案是"已通过待执行"还是"已执行完成"。
步骤4:追查执行环节的卡点——谁有权执行、执行了没有
做什么:如果提案通过了但没执行,找出卡在哪个环节。
怎么做:
先看时间锁延迟:dYdX治理文档显示,提案通过后需要排队进入时间锁,等待1-9天不等的延迟期才能执行。如果还没过延迟期,执行不了是正常的。
再看执行人角色:Snapshot文档说明,提案执行通常依赖EXECUTOR_ROLE或特定的执行策略。
然后查链上记录:在对应的时间锁合约或执行合约里找CallExecuted事件。如果该事件存在,说明已经执行了;如果只有CallScheduled没有CallExecuted,说明还在排队未执行。
做到什么程度算完成:你明确了执行卡点——是时间锁还没到期、执行人还没操作,还是已经完成了执行。
前置条件
在追查前,确认你已知晓提案对应的Snapshot链接。如果提案关联了链上执行合约(如时间锁),还需要合约地址。
常见失败原因
误以为Snapshot投票通过了就等于自动执行:这是最普遍的误解。绝大多数Snapshot投票不会自动触发任何链上动作,需要额外步骤。
把"Accepted"当成"Executed":提案状态显示通过,不代表已经执行。需要去链上核实时间锁或多签的操作记录。
忽略了执行人的角色缺失:如果项目方没有指定明确的执行人,或者执行人因故无法操作(如离职、权限丢失),提案会一直卡着。
风险提醒
资金风险:如果执行人权限过大且无人监督,即使社区投了反对票,执行人理论上仍可通过多签执行操作。这种方法风险很大,也可能使多重签名成员面临不希望的法律责任。
账户风险:无直接账户风险。
合规风险:链下投票不受智能合约约束,执行人可能面临法律风险。
确认你已经正确完成的标志
你能说清当前提案在Snapshot上的状态,并知道对应的链上执行合约(时间锁/多签/代理)是否已执行了对应的操作。如果提案已通过但未执行,你能指出卡点在哪一步。下一步:如果卡在执行人环节,去对应的多签钱包或时间锁合约查看操作记录;如果卡在时间锁延迟,计算ETA时间戳,预估可执行时间。
