The-Dao
我可以對每個 The DAO 提案進行多次投票嗎?
有人在 The DAO 論壇執行緒中表示投票開始了,他們能夠對提案進行多次投票。
我可以對每個 The DAO 提案進行多次投票嗎?
以下是
vote()
The DAO原始碼中的函式。function vote( uint _proposalID, bool _supportsProposal ) onlyTokenholders noEther returns (uint _voteID) { Proposal p = proposals[_proposalID]; if (p.votedYes[msg.sender] || p.votedNo[msg.sender] || now >= p.votingDeadline) { throw; } if (_supportsProposal) { p.yea += balances[msg.sender]; p.votedYes[msg.sender] = true; } else { p.nay += balances[msg.sender]; p.votedNo[msg.sender] = true; } if (blocked[msg.sender] == 0) { blocked[msg.sender] = _proposalID; } else if (p.votingDeadline > proposals[blocked[msg.sender]].votingDeadline) { // this proposal's voting deadline is further into the future than // the proposal that blocks the sender so make it the blocker blocked[msg.sender] = _proposalID; } Voted(_proposalID, _supportsProposal, msg.sender); }
函式中的第一個條件語句
vote()
:if (p.votedYes[msg.sender] || p.votedNo[msg.sender] || now >= p.votingDeadline) { throw; }
如果您的賬戶已經對提案投了贊成票 ( ) 或反對票 ( ),將取消您的交易**(** ) 。
throw``p.votedYes[msg.sender]``p.votedNo[msg.sender]
如果您在提案投票截止日期後投票(
now >= p.votingDeadline
),您的交易也將被取消。當您的交易被取消時,會消耗一點氣體(乙太幣)。
檢驗我的假設
以下是從同一賬戶為同一提案發送投票的兩筆交易:
- 發送 0x4c69fbf18b0274bc73bdaa1f55db86f37b75ca9336c7a756924115731bf3e42e
- 發送 0x6cb6dd1cc4d9555f080077ef1ef16ce5bd44921a8386ec9f945578720044ca13
這兩個事務都是對
vote()
函式的呼叫,因為簽名使用web3.sha3('vote(uint256,bool)').substr(0, 10)
產生的結果0xc9d27afe
與兩個事務中的輸入數據的開始相匹配。第一次交易手續費為 0.001489425 ether,第二次取消交易手續費為 0.00315 ether。請注意,第二次取消的交易比第一次成功的交易花費更多。
MyEtherWallet 與乙太坊錢包(霧)
來自匿名有用的 DAOHub 論壇使用者的結果更新:
- MyEtherWallet 目前允許您對來自同一賬戶的同一提案進行多次投票。
- 乙太坊錢包(Mist)將在您第一次投票後通知您該帳戶已被鎖定。如果您選擇繼續,它會在執行交易之前向您顯示一條消息“數據無法執行,因此它將使用所有提供的氣體”。