Technical implementation of UTXO based voting on the Dynamo blockchain
The following interim procedure will be used to implement on chain voting for Dynamo Coin. This procedure is decentralized, automated, transparent and verifiable.
Step 1: Announcement of voting
The proposer of a vote should mine an NFT with all required documentation to detail what the proposed action is. This may be in any format, such as PDF, text, PNG, etc. The proposer may mine multiple NFTs if required. If there are multiple NFTs required, the proposer needs to select a “master” NFT which references all other NFTs in the proposal.
The proposal should minimally document:
1 — The start of voting blockchain snapshot, which should be at least 10 days in advance of the announcement, but can be any time. The proposer is responsible for garnering enough interest to pass their proposal, so an adequate timeframe should be selected.
2 — The master NFT hash which documents the proposal
3 — The voting threshold required to pass — 85% for a change to consensus, 75% for a change to the rules, 66% for anything else
4 — The voting period, expressed as a number of blocks
5 — The TXID of the mined vote proposal
Vote proposal are mined into the blockchain by sending an OP_RETURN transaction with the first 4 bytes of 0x01000000 followed by the hash of the master NFT that documents the proposal.
Step 2: Blockchain snapshot
At the designated height, the balance of every address is recorded. This is the voting power of each address for the voting period. Any user can create and verify their own snapshots for audit purposes.
Step 3: Voting
Voting proceeds during the voting interval. Votes are cast by signing a transaction and having it mined into the chain.
To cast a YES vote, the user should sign an OP_RETURN transaction with the first 4 bytes of 0x02000001 followed by the TXID of the mined vote proposal followed by the user’s address containing the coins to vote.
To cast a NO vote, the user should sign an OP_RETURN transaction with the first 4 bytes of 0x02000002 followed by the TXID of the mined vote proposal followed by the user’s address containing the coins to vote.
Support for “multiple choice” type voting could be extended with opcodes like 0x020000nn.
Users are responsible for the transaction fees associated with submitting the voting transactions. As of the time of this writing those fees would be 0.0001 DMO per address per vote.
If multiple votes are cast for the same address only the latest vote is counted.
Votes cannot be withdrawn.
Step 4: Tabluation
Votes are tabulated by summing the snapshot coin balances in wallets which voted YES and NO. The % vote is the total number of coins voting yes divided by the total number of coins that were voted. The % must be greater than or equal to the threshold in order to pass the proposal.