Trüffelprobe Dapp zeigt kein Metacoin-Guthaben an, wenn Metamask aktiv ist

Das Beispiel Truffle Dapp funktioniert nicht, wenn Metamask aktiv ist. Ich führe testrpc aus, ich habe den privaten Schlüssel des tesrpc-Kontos in Metamask importiert und Metamask stellt gemäß dem Chrome-Konsolenprotokoll eine Verbindung zum lokalen testrpc her:

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 zeigt jedoch kein Ether-Guthaben auf dem Konto an und die Dapp-Seite zeigt eine leere Zeichenfolge für das Metacoin-Guthaben.

Ich habe es debuggt und es scheint, dass web.3eth.getBalance die Callback-Funktion nie aufruft, wenn Metamask aktiv ist:

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

          }
        }
      ); 

Es funktioniert perfekt, wenn Metamask nicht aktiv ist.

Antworten (4)

Installieren Sie Metamask neu, erstellen Sie ein neues Metamask-Konto und importieren Sie dann denselben privaten Schlüssel für das testrcp-Konto, um das Problem zu beheben.

Ich bin mir nicht sicher, was die Ursache war. Derselbe Code begann nach der Neuinstallation von Metamask zu funktionieren. Ich habe testrpc nicht einmal neu gestartet oder den Code erneut bereitgestellt.

Funktioniert nicht für mich.

Eine andere Möglichkeit wäre, testrpc mit den Optionen -m und -u zu starten. Die Option -m erfordert eine Zeichenfolge der Wörter, die Sie bei der Erstinstallation von Metamsk erhalten haben. Die Option -u entsperrt das Konto. Die Befehlszeile zum Starten von testrpc würde in etwa so aussehen:

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

Wenn Sie testrpc so starten, sehen Sie, dass das erste Konto unter "Verfügbare Konten" das erste Konto Ihres Metamsk ist.

Ich habe die Option -m verwendet, um testrpc zu starten, um immer dieselben Konten zu haben, die ich in Metamask importiert habe. Ich habe nicht versucht, testrpc mit entsperrten Konten zu starten. GetBalance erfordert jedoch nicht, dass das Konto entsperrt wird, daher bezweifle ich, dass dies das Problem gelöst hätte.

Die Installation von Parity mit Metamask führt dazu, dass Dinge kaputt gehen. Deaktivieren Sie die Parität und es sollte funktionieren. Ich habe eine Stunde damit verbracht, das herauszufinden, aber ich weiß immer noch nicht, warum es funktioniert.

Ich stand vor dem gleichen Problem und jede der Antworten hat mir geholfen, ich habe etwas ausprobiert und es gelöst.

  1. Metamaske installieren
  2. Führen Sie das TestRPC-Netzwerk aus und verbinden Sie sich mit TestRPC (Localhost:8545) in Metamask
  3. Importieren Sie den privaten Kontoschlüssel in Metamask und wählen Sie das Konto aus
  4. Öffnen Sie ein anderes Terminal und migrieren Sie den Vertrag erneut "Truffle Migrate"
  5. Aktualisieren Sie die Seite und Sie sehen die 10000 Meta

Bei mir hat es funktioniert.