Error de destino de salto no válido al intentar transferir tokens DAO

Transferí tokens DAO de una billetera Mist a otra dirección y obtuve este error:

Se encontraron los siguientes errores: [323] destino de salto no válido (PUSH1) 2

El TxHash es 0x368317115429c87184e9413e4777d7e986850cff339700ffe5f4a8e5db978af4y el error [323] invalid jump destination (PUSH1) 2se muestra en el VMTrace .

¿Por qué una simple transferencia de token de billetera Mist haría esto, y puedo volver a transferir de manera segura sin preocuparme por la ejecución futura de este primer intento (es decir, esta transacción está muerta para siempre)?

NOTA: Vi esto en ESE, pero no parecía hablar de mi situación: Error durante la ejecución del contrato de token .

Respuestas (1)

Resumen

Su transacción se canceló porque su token The DAO está bloqueado por la Propuesta n.º 17 por la que votó. Este bloqueo estará vigente hasta el martes 14 de junio a las 11:39:18 de 2016 (AEST), cuando venza el plazo de la Propuesta n.º 17.

Su gas máximo de 121000 (0.00242 éteres) se gastó debido a que se lanzó esta excepción.

P : ¿Por qué una simple transferencia de token de billetera Mist haría esto?

R : Este es el error que se genera cuando llamas a la transfer(address _to, uint256 _value)función y arroja un error porque tus tokens están bloqueados.

P : ¿Y puedo volver a transferir de forma segura sin preocuparme por la ejecución futura de este primer intento (es decir, este txn está muerto para siempre)?

R : Puede volver a ejecutar su transacción de forma segura. Si lo hace antes de que se desbloqueen sus tokens DAO, solo gastará más gasolina ya que activará el mismo bloqueo, así que espere hasta que expire el bloqueo.



Detalles

Desde EtherScan.io - 0x368317115429c87184e9413e4777d7e986850cff339700ffe5f4a8e5db978af4 , su cuenta es 0xc472806a7f4a0eba1f0142ccc62ac4373b785d3f.

He usado el theDAOVoterscript Perl de Github - BokkyPooBah/TheDAOVoter que se describe en ¿Cómo puedo enumerar las propuestas de DAO y votar desde la línea de comandos? para verificar el estado del token DAO para su cuenta. Tenga en cuenta que sus cantidades y preferencia de voto han sido enmascaradas:

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

Y

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    
--- ------------------------------------------ --------------------------- -------------------------- -------- -------------
====================================================================================================================================================================================================================

Y a partir de los datos de la transacción 0xa9059cbb000000000000000000000000062e2cb3bdaeb58c79ff2dc43d37a5b99ce0cf1d000000000000000000000000000000000000000000000000002386f26fc10000y el gethcomando web3.sha3('transfer(address,uint256)').substr(0,10)resultante "0xa9059cbb", intentó ejecutar la transfer(address _to, uint256 _value)función The DAO.

A continuación se muestra el código para esta función (de EtherScan.io - The DAO Contract Source ). El error es probablemente causado por la !isBlocked(msg.sender)declaración.

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;
    }
}

La isBlocked(msg.sender)función tiene el siguiente código que verifica si su cuenta está registrada con una identificación de propuesta y, de ser así, ¿ha vencido la fecha límite de la propuesta?

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;
    }
}

Cuando haya votado por cualquier propuesta, se colocará un bloqueo en su cuenta en relación con la identificación de la propuesta desde la que votó. Esta es una de las dos blocked[msg.sender] = _proposalID;declaraciones en la vote()siguiente función:

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);
}
Por supuesto. Perdí la pista de cuál de mis direcciones votó por qué. ¿Existe una interfaz (o comando cli/geth) para mostrar las direcciones bloqueadas? Feliz de publicar una nueva Q si eso es mejor.
Consulte el theDAOVotercomando CLI que se usa gethen github.com/bokkypoobah/TheDAOVoter . Feliz de recibir comentarios si encuentra algún problema con él. De forma predeterminada, procesará todas sus cuentas en el almacén de gethclaves.
La secuencia de comandos funciona muy bien, pero observo que el mensaje isblocked no desaparece cuando caduca una propuesta (es decir, todavía se muestra el número 17 ABIERTO hasta el lunes 13 de junio a las 20:39:18 de 2016). ¿Significa esto que todavía estoy bloqueado o debo hacer algo para que desaparezca el mensaje caducado?