Transacción MetaMask no completada

Estoy creando una dApp simple que envía fondos de una cuenta a otra usando Truffle + MetaMask en testrpc. En mi app.js, tengo una función pay() que llama

web3.eth.sendTransaction({from: account1, to: account2, value: web3.toWei(amount,"ether")}

Cuando la función se activa a través de la página HTML y la transacción aparece en MetaMask, los fondos se deducen de la cuenta 1 pero no aparecen en la cuenta 2. Creo que podría deberse a que el contrato no se ha extraído correctamente o MetaMask es lento. Sin embargo, la extensión de Chrome muestra el contrato como "Publicado", no como "Pendiente".

Si realizo el mismo comando a través de la consola de truffle, la transacción se procesa de manera adecuada y puedo verificar que el valor se transfirió de la cuenta 1 a la cuenta 2. ¿Cómo puedo arreglar esto? He intentado reiniciar Chrome.

Enlace a mi archivo app.js: https://gist.github.com/jw122/bda506dc831e200ac5eb397b36cb2db5

Enlace al contrato de solidez: https://gist.github.com/jw122/c561c8059ca239df6623db9080805634

Implemento el contrato en 2_deploy_contract.js con:

deployer.deploy(Purchase, web3.eth.accounts[1], web3.eth.accounts[2], {from: web3.eth.accounts[0], gas: 4000000});

Respuestas (1)

Parece estar relacionado con la última versión de Google Chrome (59.0.3071.115). Estoy experimentando los mismos problemas que tú. Metamask actúa como si pasara el Tx, pero no aparece nada en la salida de testrpc.

La página de problemas de Metamask gituhub también está sintiendo el dolor. Vea los enlaces a continuación.

https://github.com/MetaMask/metamask-plugin/issues/1705 https://chromereleases.googleblog.com/2017/06/stable-channel-update-for-desktop_26.html

Veo. Por registros de testrpc, ¿te refieres a la salida de la consola? si no, ¿cómo verifico esos registros? ¿Alguna solución a este problema? ¡Gracias!
Sí, salida de consola. Gracias por ayudar a aclarar. Publicación editada en consecuencia.
En mi consola testrpc veo esto cuando apruebo un tx en MetaMask: eth_sendRawTransaction Transaction: <address> Contract created: <address> Gas usage: 0xcf08 Block Number: 0x09 Block Time: Thu Jul 06 2017 19:51:33 GMT-0300 (-03)Entonces parece que hay un registro en la consola. Pero cuando hago sendTransaction() directamente en la consola, informa eth_sendTransaction en lugar de eth_sendRawTransaction
Interesante. ¿Puedes probar web3.eth.getTransactionReceipt(<address>)y ver lo que dice? Además, ¿tiene una idea general a la que pueda vincular el código que tiene?
aquí está mi código: gist.github.com/jw122/bda506dc831e200ac5eb397b36cb2db5 La transferencia eth ocurre en la función makePayment()
¿Puedes publicar el código de solidez también?
actualicé la pregunta, gracias! Además, cuando intento getTransactionReceipt, obtengo:{ transactionHash: '0x177f4464ee67ee75a3837a4dde9fb62608f90a853077cf693113047d49fc7bef', transactionIndex: 0, blockHash: '0x0d2c54d168cbd51f97229178525cd8fe225bb1291aaadab506c438268e4506f2', blockNumber: 21, gasUsed: 53000, cumulativeGasUsed: 53000, contractAddress: '0x4ad6a1f565935c93153c5ec7747e0b1c42bb556a', logs: [] }