Why Snapshot Voting Is Not Equivalent to On-Chain Execution

 / 
1

Snapshot is an off-chain voting tool. The voting result is essentially just a "signal" and does not have automatic execution capability. To turn votes into actual actions, tools such as timelocks, multisig wallets, or on-chain execution contracts are needed, with someone (or a contract) manually triggering the subsequent operations.

Step 1: Confirm whether the vote you are participating in is off-chain or on-chain

What to do: Open the Snapshot proposal page and check the execution method used by the project to which the proposal belongs. Snapshot has two forms: the original Snapshot is a purely off-chain voting platform, with results stored on IPFS; Snapshot X is the fully on-chain version with automatic execution capability.

How to do it:

  • If the proposal page displays an ordinary Snapshot vote and has an "Off-Chain Vote" label, it means the result needs to be executed off-chain through other methods.

  • If the proposal page shows "Snapshot X" or "On-Chain", it means the vote will be automatically executed via smart contracts once passed.

  • Currently, most DAOs still use standard Snapshot, i.e., off-chain voting plus off-chain or manual execution.

Completion criterion: You can clearly state which type the current proposal's voting belongs to.

Step 2: Understand the "signal" nature of off-chain voting — the result is not automatically committed on-chain

What to do: Figure out what process a Snapshot-voting-approved proposal must go through to become an on-chain action.

How to do it:

  • After a Snapshot vote passes, the result is stored on IPFS, not on-chain. There is no record on the chain that "this proposal has passed".

  • To turn the result into a real operation, an executor usually needs to manually initiate an on-chain transaction. The executor may be a signer of a multisig wallet, an executor designated by the project team, or any community member who meets the conditions.

  • Common execution paths include:

    • Multisig execution: Multisig holders manually execute transactions based on the voting result, modifying protocol parameters or transferring funds.

    • Timelock queue: Passed proposals are first queued into a timelock and can only be executed after a delay period expires.

    • Aragon Agent: Using Aragon Agent as the executor, the Snapshot voting result is packaged and submitted on-chain.

Completion criterion: You have identified the execution path after the proposal passes — whether it goes through multisig, timelock, or another mechanism.

Key reminder: Even if a proposal passes on Snapshot with 100% approval, if the executor does not act, or the multisig signers do not cooperate, the proposal will forever remain in the "passed but not executed" state. Between the vote passing and on-chain execution lies the layer of "human action".

Step 3: Distinguish between the "Proposal Passed" and "Proposal Executed" states

What to do: Check the "State" or "Status" field on the proposal details page to confirm which stage the proposal is currently in.

How to do it:

  • Snapshot proposal states typically include: Pending (voting in progress), Accepted (passed), Rejected (denied), Executed (executed), Cancelled (canceled), etc.

  • If the status shows "Accepted" but has not yet changed to "Executed", it means the vote has passed but has not been executed.

  • If the proposal is associated with a timelock, also check the status returned by isOperationReady(id) — Ready means it can be executed, Pending means it is still in the queue.

Completion criterion: You can accurately tell whether the current proposal is "passed and awaiting execution" or "execution completed".

Step 4: Investigate the bottleneck in the execution phase — who has the authority to execute and whether it has been executed

What to do: If a proposal has passed but not been executed, find out where it is stuck.

How to do it:

  • First check the timelock delay: According to dYdX governance documents, after a proposal passes, it needs to be queued into a timelock and wait for a delay period ranging from 1 to 9 days before execution. If the delay period has not expired yet, it is normal that execution cannot proceed.

  • Then check the executor role: Snapshot documentation states that proposal execution usually depends on an EXECUTOR_ROLE or a specific execution strategy.

  • Then check the on-chain records: Look for the CallExecuted event in the corresponding timelock contract or execution contract. If this event exists, it means it has already been executed; if there is only CallScheduled but no CallExecuted, it is still queued and not executed.

Completion criterion: You have pinpointed the execution blocker — whether the timelock has not expired, the executor has not acted yet, or execution has already been completed.

Prerequisites

Before investigating, make sure you know the Snapshot link corresponding to the proposal. If the proposal is associated with an on-chain execution contract (such as a timelock), you will also need the contract address.

Common Reasons for Failure

  • Mistakenly thinking that a Snapshot vote passing equals automatic execution: This is the most common misunderstanding. The vast majority of Snapshot votes do not automatically trigger any on-chain actions; extra steps are required.

  • Treating "Accepted" as "Executed": A proposal showing a passed status does not mean it has been executed. You need to verify the timelock or multisig operation records on-chain.

  • Ignoring the absence of an executor: If the project has not designated a clear executor, or the executor is unable to act for some reason (e.g., resignation, loss of access), the proposal will remain stuck.

Risk Warnings

  • Fund risk: If the executor's authority is too large and unsupervised, even if the community votes against it, the executor could theoretically still execute operations through multisig. This approach is highly risky and may also expose multisig members to undesired legal liabilities.

  • Account risk: No direct account risk.

  • Compliance risk: Off-chain voting is not bound by smart contracts, and executors may face legal risks.

Signs That You Have Correctly Completed the Checks

You can clearly state the status of the current proposal on Snapshot and know whether the corresponding on-chain execution contract (timelock/multisig/agent) has carried out the corresponding operation. If the proposal has been passed but not executed, you can point out exactly where it is stuck. Next steps: If it is stuck at the executor stage, check the operation records of the corresponding multisig wallet or timelock contract; if it is stuck at the timelock delay, calculate the ETA timestamp to estimate when execution will be possible.