3

I transfered DAO tokens from a Mist wallet to another address and got this error:

The following error(s) were encountered : [323] invalid jump destination (PUSH1) 2

The TxHash is 0x368317115429c87184e9413e4777d7e986850cff339700ffe5f4a8e5db978af4 and the error [323] invalid jump destination (PUSH1) 2 is displayed in the VMTrace.

Why would a simple Mist wallet token transfer do this, and can I safely just re-transfer without concern about future execution of this first attempt (ie. is this transaction dead forever)?

NOTE: Saw this on ESE, but didn't seem to speak to my situation: Error During Token Contract Execution.

3

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)   

 ![Graphic: decrease proposals, increase quality](https://ipfs.pics/ipfs/Qmcg2geJ2eCSMEBBSbP8Z56AZgg6mnfTHo56t4SBC74873)   

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

  # 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);
}
  • Of course. Lost track of which of my addresses voted for what. Is there an interface (or cli/geth command) to show locked addresses? Happy to post new Q if that's better. – Bill LaPrise Jun 4 '16 at 16:33
  • 1
    Check out the theDAOVoter CLI command that uses geth from github.com/bokkypoobah/TheDAOVoter . Happy to get feedback if you find any problems with it. By default it will process all your accounts in the geth keystore. – Bokky WeAreAllAssange PooBah Jun 4 '16 at 16:35
  • Script works great, but I notice that the isblocked message does not go away when a proposal expires (i.e. #17 OPEN until Mon Jun 13 20:39:18 2016 still displays). Does this mean I am still blocked, or do I need to do something to make the expired message disappear? – Bill LaPrise Jun 14 '16 at 13:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.