Summary
Your transaction was cancelled because your The DAO token is locked by the Proposal #17 that you have voted on. This block will be in place until Tue Jun 14 11:39:18 2016 (AEST), when the Proposal #17 deadline passes.
Your maximum gas of 121000 (0.00242 ethers) was spent due to this exception being thrown.
Q: Why would a simple Mist wallet token transfer do this?
A: This is the error generated when you call the transfer(address _to, uint256 _value)
function, and it throws an error because your tokens are blocked.
Q: And can I safely just re-transfer without concern about future execution of this first attempt (ie. is this txn dead forever)?
A: You can safely execute your transaction again. If you do so before your The DAO tokens are un-blocked, you will just spend more gas as you will trigger the same block, so wait until the block expires.
Details
From EtherScan.io - 0x368317115429c87184e9413e4777d7e986850cff339700ffe5f4a8e5db978af4, your account is 0xc472806a7f4a0eba1f0142ccc62ac4373b785d3f.
I've used the theDAOVoter
Perl script from Github - BokkyPooBah/TheDAOVoter that is described in How can I list The DAO proposals and vote from the command line? to check The DAO token status for your account. Note that your amounts and voting preference has been masked:
user@Kumquat:~$ theDAOVoter --listaccounts --account=0xc472806a7f4a0eba1f0142ccc62ac4373b785d3f
# Account ETH DAO The DAO transfer blocked by OPEN proposal?
--- ------------------------------------------ --------------------------- -------------------------- ------------------------------------------
0 0xc472806a7f4a0eba1f0142ccc62ac4373b785d3f 1.111111111111111111 2.2222222222222222 #17 OPEN until Tue Jun 14 11:39:18 2016
--- ------------------------------------------ --------------------------- -------------------------- ------------------------------------------
1 Total 1.111111111111111111 2.2222222222222222
And
user@Kumquat:$ theDAOVoter --listproposals --id=17 --account=0xc472806a7f4a0eba1f0142ccc62ac4373b785d3f --checkvotingstatus --checkpastvotes
====================================================================================================================================================================================================================
Proposal 17. OPEN until Tue Jun 14 11:39:18 2016
Votes Yea 49159666 (89.96%) Nay 5484074 (10.04%) Quorum 4.66% of 20%
Creator 0x6fc4d393bcebc69dbc8a6877e098babd19504e3b
Recipient 0xbb9bc244d798123fde783fcc1c72d3bb8c189413
Deposit 2 ETH
Amount 0 ETH
New curator N
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Raising the Proposal Deposit to 11 ETH
This Proposal will raise the deposit required to make a Proposal to The DAO from 2 ETH to 11 ETH.
An increase of the Proposal Deposit to **11 ETH** is expected to:
- decrease the number of poorly thought-out proposals.
- help avoid the confusion and concern that could be caused by hundreds of proposals that cannot be adequately assessed by DAO Token Holders.
- reduce the number of spam proposals and amount of proposal-graffiti on The DAO.
Moreover, the time spent on reviewing proposals by DAO Token Holders should be valued. Therefore, additional value will accrue to The DAO because of this Proposal from the proposal deposits that stay with
The DAO when proposals fail to reach quorum.
While an increase is necessary, **11 ETH is still within reach for small start-ups and individuals** that will want to offer services to The DAO.
[Join the conversation about this proposal on DAOhub.org](https://forum.daohub.org/t/raising-the-proposal-deposit-to-11-eth/4106)

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# Account ETH DAO (Est)Gas Voting Status
--- ------------------------------------------ --------------------------- -------------------------- -------- -------------
0 0xc472806a7f4a0eba1f0142ccc62ac4373b785d3f 1.111111111111111111 2.2222222222222222 70925 Voted XXX
--- ------------------------------------------ --------------------------- -------------------------- -------- -------------
====================================================================================================================================================================================================================
And from the transaction data 0xa9059cbb000000000000000000000000062e2cb3bdaeb58c79ff2dc43d37a5b99ce0cf1d000000000000000000000000000000000000000000000000002386f26fc10000
and the geth
command web3.sha3('transfer(address,uint256)').substr(0,10)
resulting in "0xa9059cbb"
, you tried to execute the transfer(address _to, uint256 _value)
The DAO function.
The code for this function follows (from EtherScan.io - The DAO Contract Source). The error is probably caused by the !isBlocked(msg.sender)
statement.
function transfer(address _to, uint256 _value) returns (bool success) {
if (isFueled
&& now > closingTime
&& !isBlocked(msg.sender)
&& transferPaidOut(msg.sender, _to, _value)
&& super.transfer(_to, _value)) {
return true;
} else {
throw;
}
}
The isBlocked(msg.sender)
function has the following code that check if your account is registered with a proposal id and if so, has the proposal deadline passed?
function isBlocked(address _account) internal returns (bool) {
if (blocked[_account] == 0)
return false;
Proposal p = proposals[blocked[_account]];
if (now > p.votingDeadline) {
blocked[_account] = 0;
return false;
} else {
return true;
}
}
When you have voted for any proposal, a block is placed against your account relating to the proposal id that you voted from. This is one of the two blocked[msg.sender] = _proposalID;
statements in the vote()
function below:
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);
}