web3.eth.getBalance('address') gibt immer eine Null zurück

Ich versuche, einen Vertrag für das Netzwerk "Ropsten Testnet" bereitzustellen. Ich habe ein Konto, auf das ich 6 Ether per Faucet überweisen konnte. Das "ETH-Guthaben" meines Kontos zeigt 6 Ether von der Website https://ropsten.etherscan.io/address/ . Aber web3.eth.getBalance('address')aus irgendeinem Grund gibt mir immer noch eine zero balanceTruffle-Konsole.

Ich kann meinen Vertrag daher nicht für "Testnet" bereitstellen. Ich bekomme einen Fehler als:

Error encountered, bailing. Network state unknown. Review successful transactions manually.
Error: insufficient funds for gas * price + value

Unten ist mein geth-Befehl.

geth --testnet --syncmode "fast" --rpc --rpcapi db,eth,net,web3,personal --cache=1024  --rpcport 8545 --rpcaddr 127.0.0.1 --rpccorsdomain "*" --bootnodes "enode://20c9ad97c081d63397d7b685a412227a40e23c8bdc6688c6f37e97cfbc22d2b4d1db1510d8f61e6a8866ad7f0e17c02b14182d37ea7c3c8b9c2683aeb6b733a1@52.169.14.227:30303,enode://6ce05930c72abc632c58e2e4324f7c7ea478cec0ed4fa2528982cf34483094e9cbc9216e7aa349691242576d552a2a56aaeae426c5303ded677ce455ba1acd9d@13.84.180.240:30303"

Ich bin mir nicht sicher, warum sich die 6 Ether nicht auf meinen persönlichen Kontostand auswirken.

Antworten (1)

Ist Ihr Knoten vollständig synchronisiert? Ich denke, das ist der Hauptgrund, warum Ihr Eth-Guthaben 0 ist. Das Guthaben wird null sein, es sei denn, Sie synchronisieren mit dem Block, in dem Sie Test-Ether erhalten haben.

Um den Vertrag bereitzustellen, können Sie MyEtherWallet und Remix verwenden . Die Schritte dafür sind ganz einfach.

  • Kompilieren Sie Ihren Code aus dem Remix-Online-Solidity-Compiler. Kopieren Sie den Bytecode von hier.
  • Öffnen Sie meine Ether-Wallet. Gehen Sie zu Verträge -> Vertrag bereitstellen.
  • Wählen Sie oben rechts das Netzwerk zu Ropsten aus.
  • Fügen Sie den Bytecode ein und entsperren Sie Ihre Brieftasche mit einer der bereitgestellten Methoden und stellen Sie den Vertrag bereit.

Andernfalls können Sie auch Remix mit Metamask für dasselbe verwenden. Importieren Sie Ihr Konto in Metamask und stellen Sie den Vertrag direkt aus Remix bereit.

Aktualisieren:

Woher wissen Sie, ob Ihre Blockchain synchronisiert ist?

Sie können überprüfen, ob Ihr Knoten synchronisiert wird, indem Sie:

eth.syncing

Wenn Ihr Knoten nicht synchronisiert, eth.syncingwird zurückgegeben false. Andernfalls gibt es eine Ausgabe wie zurück

{ currentBlock: 10000, highestBlock: 1822434, knownStates: 1, pulledStates: 0, startingBlock: 90 }

Das bedeutet, dass Sie 10000 Blöcke heruntergeladen haben, wobei die Gesamtzahl der Blöcke 1822434 beträgt.

Sie können den Block, in dem Sie das Ether-Guthaben erhalten haben, anhand der überprüfen transactionHash. Wenn Sie einen Transaktions-Hash haben, können Sie eth.getTransactionReceipt(txHash)den Block überprüfen, in dem Ihre Transaktion enthalten war. Wenn Sie die Blockchain bis zu diesem Block heruntergeladen haben, wird Ihr Guthaben angezeigt. Hinweis: Wenn Sie die schnelle Synchronisierung verwenden, müssen Sie möglicherweise warten, bis der gesamte Knoten synchronisiert ist, um zu sehen, dass Ihr Guthaben nicht nur bis zu dem Block synchronisiert wird, in dem Ihre Transaktion enthalten war.

danke für deine schnelle antwort. Ich habe Geth in den letzten drei Tagen im "schnellen" Modus ausgeführt, konnte aber nicht die richtige Balance finden. Ich war verwirrt und habe ein --removedb gemacht. Habe in einem "vollständigen" Modus neu gestartet. Ich habe eine eth.syncing ausgeführt und konnte sehen, „{aktuellerBlock: 68, höchsterBlock: 1822434, bekannterZustand: 1, gezogenerZustand: 0, Startblock: 1822318}“ Gehe ich in die richtige Richtung. Wie stelle ich sicher, dass ich den Block synchronisiert habe, in dem ich meine Testether erhalten habe? Liegt es an den regelmäßigen Überprüfungen, die ich auf meinem Kontostand mache?
Ich habe meine Antwort aktualisiert.
Vielen Dank für Ihre Eingaben. Ich habe meinen Vertrag erfolgreich über "MyEtherWallet" und "Remix" bereitgestellt. Die Transaktion ist anhängig.
Kann ich die Vertragsfunktion aufrufen, sobald die Transaktion abgeschlossen ist? Derzeit kann ich den Vertrag nicht aufrufen, und ich erhalte die folgende Fehlermeldung: „wurde nicht im erkannten Netzwerk bereitgestellt (keine Übereinstimmung zwischen Netzwerk und Artefakt)“
Ja. Warten Sie, bis der Vertrag bereitgestellt wird. Nach der Bereitstellung können Sie Ihre Kontaktmethoden aufrufen.
Ich habe die Vertragsfunktionen von „MyEtherWallet“ aufgerufen und konnte sie unter ropsten.etherscan.io einsehen . Es ist ein „Voting“-Dapp-Beispiel. Ich habe ein paar "Write"-Funktionen aufgerufen, konnte aber die Ergebnisse nicht sehen, die sich beim Aufrufen der "Read"-Funktion des Vertrags widerspiegeln. Auch wenn ich die gleiche "Voting"-Vertragsfunktion von Truffle aus aufrufe, erhalte ich die folgende Ausnahme: "Fehler: Die Abstimmung wurde nicht für das erkannte Netzwerk bereitgestellt (Netzwerk/Artefakt-Nichtübereinstimmung)". Aber von der Truffle-Konsole aus konnte ich sehen, dass der Vertrag bereitgestellt wurde und die Netzwerk-ID "3" darstellt. Ich habe die Truffle-Konsole mit einer network_id=3 ausgeführt.