Eine Person hat im Thread des DAO-Forums Hat die Abstimmung begonnen , dass sie mehr als einmal über einen Vorschlag abstimmen konnte.
Kann ich mehr als einmal über jeden Vorschlag von The DAO abstimmen?
Es folgt die Funktion aus dem Quellcodevote()
von 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);
}
Die erste bedingte Anweisung in der vote()
Funktion:
if (p.votedYes[msg.sender]
|| p.votedNo[msg.sender]
|| now >= p.votingDeadline) {
throw;
}
storniert Ihre Transaktion ( throw
), wenn Ihr Konto bei einem Vorschlag bereits mit Ja ( ) oder p.votedYes[msg.sender]
Nein ( ) gestimmt hat .p.votedNo[msg.sender]
Ihre Transaktion wird auch storniert, wenn Sie nach Ablauf der Vorschlagsabstimmungsfrist ( ) abstimmen now >= p.votingDeadline
.
Ein wenig Gas (Ether) wird verbraucht, wenn Ihre Transaktion storniert wird.
Hier sind zwei Transaktionen, bei denen Stimmen für denselben Vorschlag von demselben Konto gesendet werden:
Diese beiden Transaktionen sind beide Aufrufe der vote()
Funktion, da die Verwendung der Signatur web3.sha3('vote(uint256,bool)').substr(0, 10)
das Ergebnis erzeugt , das 0xc9d27afe
mit dem Beginn der Eingabedaten in beiden Transaktionen übereinstimmt.
Und hier ist die zweite Transaktion, die die Stornierung der Transaktion zeigt.
Die erste Transaktionsgebühr betrug 0,001489425 Ether und die zweite stornierte Transaktionsgebühr betrug 0,00315 Ether. Beachten Sie, dass die zweite stornierte Transaktion mehr gekostet hat als die erste erfolgreiche Transaktion.
Ergebnisaktualisierung von einem anonymen, hilfreichen DAOHub-Forum-Benutzer:
Taywano
Datenschutz ist ein Menschenrecht.eth
estimateGas()
könnte mich interessieren (bin ich so vorhersehbar?). Ich habe jetzt ein Perl-Skript erstellt, um Vorschläge aufzulisten, den Abstimmungsstatus jedes Kontos gegen die Vorschläge aufzulisten und über die Vorschläge abzustimmen - von der Befehlszeile aus. Verwenden derestimateGas()
Methode zum Überprüfen des Abstimmungsstatus. Siehe github.com/bokkypoobah/TheDAOVoter/blob/master/theDAOVoter . Danke @tayvano.