Образец Truffle Dapp не показывает баланс Metacoin, когда Metamask активен

Образец Truffle Dapp не работает при активной метамаске. Я запускаю testrpc, я импортировал закрытый ключ учетной записи tesrpc в Metamask, и Metamask подключается к локальному testrpc в соответствии с журналом консоли Chrome:

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

Однако Metamask не показывает баланс эфира на счете, а на странице Dapp отображается пустая строка для баланса Metacoin.

Я отладил его, и кажется, что web.3eth.getBalance никогда не вызывает функцию обратного вызова, когда метамаска активна:

  web3.eth.getBalance(myAccount, web3.eth.defaultBlock,
        function(error,result){
          if(error) {
            console.error("Error while retrieving the balance for address["+myAccount+"]: "+err);
          } else {
            var balance = web3.fromWei(result.toNumber());
            console.debug("Balance for address["+myAccount+"]: "+balance);

          }
        }
      ); 

Он отлично работает, когда Metamask не активен.

Ответы (4)

Переустановите Metamask, создайте новую учетную запись Metamask, а затем импортируйте тот же закрытый ключ учетной записи testrcp, чтобы решить проблему.

Я не уверен, что было причиной. Тот же код начал работать после переустановки Metamask. Я даже не перезапускал testrpc и не переустанавливал код.

Не работает для меня.

Другая возможность — запустить testrpc с параметрами -m и -u. Опция -m требует строки слов, которые вы получили при первой установке Metamsk. Опция -u разблокирует учетную запись. Командная строка для запуска testrpc будет выглядеть примерно так:

# testrpc -m "Insert your unlock words here" -u 0 -u 1

Если вы запустите testrpc таким образом, вы увидите, что первая учетная запись в разделе «Доступные учетные записи» будет первой учетной записью вашего Metamsk.

Я использовал параметр -m для запуска testrpc, чтобы всегда иметь те же учетные записи, которые я импортировал в Metamask. Я не пробовал запускать testrpc с разблокированными учетными записями. Однако getBalance не требует разблокировки учетной записи, поэтому я сомневаюсь, что это решило бы проблему.

Установка четности с помощью Metamask приводит к поломке. Отключите четность и все должно работать. Я потратил час, чтобы понять это, но я до сих пор не знаю, почему это работает.

Я столкнулся с той же проблемой, и любой из ответов помог мне, я что-то попробовал, и это решилось.

  1. Установить метамаску
  2. Запустите сеть TestRPC и подключитесь к TestRPC (Localhost:8545) в Metamask.
  3. Импортируйте закрытый ключ учетной записи в Metamask и выберите учетную запись.
  4. Откройте другой терминал и снова перенесите контракт «Truffle Migrate».
  5. Обновите страницу, и вы увидите 10000 метаданных.

Это сработало для меня.