A governance token holder does not need to move tokens off a hardware wallet to vote on Snapshot. The vote is an EIP-712 signed message rather than a transaction. It costs no gas, and the tokens stay at the address that holds them. Before starting, expect the device to show a hash rather than the vote itself. As of August 1, 2026, the ERC-7730 clear-signing registry held 125 EIP-712 descriptors across 51 projects, so the device screen will usually confirm a digest and not a choice.
Moving tokens to a hot wallet to vote gains nothing. Snapshot fixes voting power at a snapshot block number. Tokens moved after that block still count at the old address. Tokens moved before it now sit in a hot wallet, which is the risk cold storage was bought to avoid.
What you need
-
A Ledger or Trezor holding the governance tokens
Trezor has supported EIP-712 since firmware 2.4.3 (December 2021). Trezor's Clear Signing runs on the Safe 7, Safe 5, Safe 3 and Model T. It does not run on the Model One.
-
Current device firmware and Ethereum app
Trezor's Clear Signing switches on only after a firmware update.
-
MetaMask or a WalletConnect-compatible wallet
Snapshot requires one or the other.
-
No ETH for gas
Signing a Snapshot vote costs nothing, whatever the wallet.
The steps
-
Connect the device to MetaMask
Add the hardware wallet as an account in MetaMask. Worked when: the hardware address appears in the account list.
-
Select the hardware account
Make it the active MetaMask account. Worked when: the address shown matches the one that holds the tokens.
-
Connect to Snapshot
Open the DAO's space on snapshot.org and connect the wallet. Worked when: the hardware address appears in the page header.
-
Read the voting power on the proposal
Open the proposal and look at the voting power before choosing. Worked when: the figure is above zero. A zero means the tokens were not held at the snapshot block, or the space counts only delegated votes.
-
Choose and click Vote
Select an option and press Vote. Worked when: MetaMask opens a signature request, not a transaction.
-
Approve in MetaMask
Snapshot's docs state that MetaMask users must "scroll to the end of the signature and click on the arrow down for the Sign button to become active." Worked when: the request moves on to the device.
-
Confirm on the device
Approve the signature on the hardware wallet. Worked when: the device accepts it. Most Snapshot spaces have no descriptor, so expect a digest rather than the proposal and choice. That means trusting that the front end showed the real vote. Ledger's clear signing is off by default and cannot decode unregistered messages.
-
Check the result
Reload the proposal. Worked when: the vote appears under the address. Snapshot stores the signed vote on IPFS.
When the signature fails
After the vote
A Snapshot vote has no on-chain effect of its own. Turning a result into a change takes a separate on-chain action, which might come from a multisig, a trusted party or a Governor contract. That action is a transaction and costs gas. Voting on a Governor contract directly is a different task from the one above, and it signs a transaction rather than a message. In both cases the risk is the same: the device confirms what it was sent, not what the page claimed to be sending.
What does the device screen actually confirm?
How blind signing and clear signing differ, and what each shows before approval.
Read clear vs blind signing
Comments
No comments yet. Be the first to comment!
Leave a Comment