Недостаточно средств для отправки Tx - TestRPC и Metamask

Я тестирую и создаю смарт-контракт для отправки эфира на одну учетную запись, используя TestRPC, Truffle и Metamask.

У меня есть страница с кнопкой, когда я нажимаю на кнопку, она запускает событие submitEtherWallet.

submitEtherToWallet: function() {
    MyWallet.deployed().then(function(instance){

      return instance.sendTransaction({from: account, to: instance.address, value: web3.toWei(5, 'ether')});

    }).then(function(result) {
      App.basicInfoUpdate();
    });
  },

Метод, по-видимому, работает хорошо, потому что метамаска открывает всплывающее окно для подтверждения транзакции.

введите описание изображения здесь

После нажатия отправить транзакцию:

введите описание изображения здесь

Ответы (3)

Вы уверены, что в коде "from: account" относится к account[0] ?

Да, это так. В функции запуска он заполняет учетную запись учетными записями [0], также я попытался изменить учетную запись на учетные записи [0] и произошло то же самое.

После нескольких часов, застрявших с этой проблемой, я понял, что, по-видимому, моя метамаска работала в другом экземпляре web3, чем мой testrpc, это странная ситуация.

Metamask открывал правильное всплывающее окно учетной записи для подтверждения транзакции, но метамаска бэкэнда пыталась отправить транзакцию с другой учетной записью, я не знаю, как это произошло, но я заменил свой addEventListener обратно на оригинал из трюфельного веб-пакета и явно это устранило проблему.

window.addEventListener('load', function() {
  // Checking if Web3 has been injected by the browser (Mist/MetaMask)
  if (typeof web3 !== 'undefined') {
    console.warn("Using web3 detected from external source. If you find that your accounts don't appear or you have 0 MetaCoin, ensure you've configured that source properly. If using MetaMask, see the following link. Feel free to delete this warning. :) http://truffleframework.com/tutorials/truffle-and-metamask")
    // Use Mist/MetaMask's provider
    window.web3 = new Web3(web3.currentProvider);
  } else {
    console.warn("No web3 detected. Falling back to http://127.0.0.1:9545. You should remove this fallback when you deploy live, as it's inherently insecure. Consider switching to Metamask for development. More info here: http://truffleframework.com/tutorials/truffle-and-metamask");
    // fallback - use your fallback strategy (local node / hosted node + in-dapp id mgmt / fail)
    window.web3 = new Web3(new Web3.providers.HttpProvider("http://127.0.0.1:9545"));
  }

  App.start();
});

Как видно на принтскрине, metamask пытался отправить транзакцию через кошелек «0xf9...», а не через кошелек, который был во всплывающем окне.

Вы можете перезапустить testrpc. Я столкнулся с той же проблемой, перезапуск testrpc решил проблему