Warum wirft Mist „Nicht erfasste ungültige Adresse“?

Ich versuche, eine Webseite zu erstellen, die eine Nachricht von einem einfachen Smart Contract "Hallo Welt" erhält. Leider funktioniert es nicht. Ich sehe das in der Mist-Konsole.

Uncaught invalid address
v                     @ web3.min.js:2
p                     @ web3.min.js:2
(anonymous function)  @ web3.min.js:2
i.formatInput         @ web3.min.js:2
i.toPayload           @ web3.min.js:2
i.buildCall.e         @ web3.min.js:2
s.sendTransaction     @ web3.min.js:2
s.execute             @ web3.min.js:2
(anonymous function)  @ (index):26

Die Webseite ist hier und der Vertragsquellcode ist hier . Ich kann nicht herausfinden, was ich falsch mache.

Antworten (4)

Dieser Fehler tritt auf, wenn Sie im web3.eth-Objekt keine defaultAccount-Eigenschaft festgelegt haben. Versuchen Sie, dies in der Javascript-Konsole auszuführen:

web3.eth.defaultAccount=web3.eth.accounts[0]

(vorausgesetzt, Sie haben bereits einige Konten erstellt)

Ich habe das gerade versucht. Ich bekomme: Error: Provider not set or invalid at Object.e.exports.InvalidProvider...undUncaught TypeError: Cannot read property '0' of null at <anonymous>:2:42...
Wie könnten Sie dies erreichen, ohne das defaultAccount explizit festzulegen?
Dieser hat bei mir funktioniert.
Nebel 9.0Uncaught Error: No callback given, sync calls are not possible anymore in Mist. Please use only async calls.

Laut Ihrem Fehler müssen Sie den Anbieter noch einrichten.

web3.setProvider(new web3.providers.HttpProvider('http://localhost:8102'));

Dabei bezieht sich localhost und port auf den Ethereum-Serverknoten, den Sie mit dem Web3 verwenden möchten.

Wie von Alexey beantwortet, tritt der Fehler aufgrund einer undefinierten defaultAccount-Eigenschaft auf.

Die Umgehung dafür in Javascript fügt die folgende Anweisung hinzu

web3.eth.defaultAccount = ethereum._state.accounts[0]

Hier haben wir ethereum._state.accounts[0]anstelle von verwendet, web3.eth.accounts[0]da es veraltet ist, von Metamask verwendet zu werden, wie auf der Website dokumentiert

https://docs.metamask.io/guide/provider-migration.html#summary-of-breaking-changes

Von: https://github.com/jefflau/ens-manager/issues/36

Neue Synchronisierungsaufrufe sind in den neuesten Versionen von web3.js nicht zulässig. Infolgedessen erkennt die App nicht den richtigen Benutzer und erlaubt Ihnen daher nicht, ihn zu verwalten und einen Fehler zu protokollieren:

Uncaught (In Promise) Error: Kein Callback gegeben, Sync-Calls sind in Mist nicht mehr möglich. Bitte verwenden Sie nur asynchrone Aufrufe.

Sie sollten alle ersetzen

web3.eth.accounts[0] 

mit:

web3.eth.getAccounts(function(e,accounts){ // do something });