Транзакция MetaMask не завершена

Я делаю простое dApp, которое отправляет средства с одной учетной записи на другую, используя Truffle + MetaMask на testrpc. В моем app.js у меня есть функция pay(), которая вызывает

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

Когда функция запускается через HTML-страницу и транзакция появляется в MetaMask, средства списываются со счета 1, но не отображаются на счете 2. Я думаю, это может быть из-за того, что контракт не был добыт должным образом или MetaMask работает медленно? Расширение Chrome показывает контракт как «Опубликованный», а не «Ожидающий».

Если я выполню ту же команду через консоль трюфеля, транзакция будет обработана соответствующим образом, и я смогу убедиться, что значение было передано из учетной записи 1 в учетную запись 2. Как я могу это исправить? Я попытался перезапустить хром.

Ссылка на мой файл app.js: https://gist.github.com/jw122/bda506dc831e200ac5eb397b36cb2db5

Ссылка на контракт солидности: https://gist.github.com/jw122/c561c8059ca239df6623db9080805634

Я развертываю контракт в 2_deploy_contract.js с помощью:

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

Ответы (1)

Кажется, это связано с последней версией Google Chrome (59.0.3071.115). Я испытываю те же проблемы, что и вы. Metamask ведет себя так, как будто Tx прошел, но в выводе testrpc ничего не отображается.

Страница выпусков Metamask на Gituhub также чувствует боль. См. ссылки ниже.

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

Я понимаю. Под журналами testrpc вы имеете в виду вывод консоли? если нет, то как мне проверить эти журналы? Любые обходные пути к этой проблеме? Спасибо!
Да, консольный вывод. Спасибо за помощь в разъяснении. Отредактировал пост соответственно.
В моей консоли testrpc я вижу это, когда я одобряю tx на 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)Итак, в консоли есть запись. Но когда я делаю sendTransaction() непосредственно в консоли, он сообщает eth_sendTransaction вместо eth_sendRawTransaction.
Интересный. Можешь попробовать web3.eth.getTransactionReceipt(<address>)и посмотреть, что там написано? Кроме того, у вас есть суть кода, на который вы можете ссылаться?
вот мой код: gist.github.com/jw122/bda506dc831e200ac5eb397b36cb2db5 Передача eth происходит в функции makePayment()
Можете ли вы также опубликовать код прочности?
обновил вопрос, спасибо! Кроме того, когда я пытаюсь получить TransactionReceipt, я получаю:{ transactionHash: '0x177f4464ee67ee75a3837a4dde9fb62608f90a853077cf693113047d49fc7bef', transactionIndex: 0, blockHash: '0x0d2c54d168cbd51f97229178525cd8fe225bb1291aaadab506c438268e4506f2', blockNumber: 21, gasUsed: 53000, cumulativeGasUsed: 53000, contractAddress: '0x4ad6a1f565935c93153c5ec7747e0b1c42bb556a', logs: [] }