Comment on page
Vote Proxy - Detailed Documentation
Allowing ABM users to vote with a hot or cold wallet using a proxy voting identity
- Contract Name: VoteProxy.sol
- Type/Category: Proxy Module
The
VoteProxy
contract allows for ABM users to vote with a hot or cold wallet using a proxy voting identity instead of interacting directly with the chief. In addition to supporting two different voting mechanisms, the vote proxy also minimizes the time that ABM owners need to have their wallet(s) online.
approvals
: A mapping of candidate addresses to theiruint
weight.slate
- A mapping ofbytes32
toaddress
arrays. Represents sets of candidates. Weighted votes are given to slates.votes
: A mapping of voter addresses to the slate they have voted for.GOV
:DSToken
used for voting.IOU
:DSToken
issued in exchange for lockingGOV
tokens.
The
VoteProxy
contract enables ABM owners to vote with the full weight of the ABM they own, for both for Governance and Executive votes. As mentioned above, this process also reduces the risk for ABM users when voting with a cold wallet. This is done by allowing the ABM owner to designate a “hot wallet” which is used to transfer ABM to the proxy and can only be used for voting on Governance and Executive votes. The “hot wallet” can then be used to lock ABM in the voting system and draw it back to their cold wallet.auth
- Checks to confirm that the sender must be a Cold or Hot Wallet.lock
- Charges the user wad
ABM tokens, issues an equal amount of IOU tokens to the VoteProxy, and adds wad
weight to the candidates on the user's selected slate.free
- Charges the user wad
IOU tokens, issues an equal amount of ABM tokens to the user, and subtracts wad
weight from the candidates on the user's selected slate.vote
- Saves a set of ordered addresses as a slate, moves the voter's weight from their current slate to the new slate, and returns the slate's identifier.vote(bytes32 slate)
- Removes voter's weight from their current slate and adds it to the specified slate.- One-time proxy setup cost
- As a new proxy contract user, you will need to set it up before you can use it for future voting. The price of the setup will depend on the current Ethereum gas price but will ultimately make voting easier and safer for users.
- Any ABM moved/transferred from a user's vote proxy during a Polling vote, will be subtracted/removed from any existing poll that a user has voted on. For your vote to count, you must ensure the ABM is in your wallet when the poll ends.
- Note: For the users who don't want to use the
VoteProxy
, they can now vote directly with a single wallet, by depositing directly into Chief and then voting with their wallet.
- The loss of private keys for both the hot and cold wallet will prevent you from voting.