„Authentifizierung erforderlich: Passwort oder Entsperren“ Fehler beim Versuch, die Smart-Contract-Methode über Web3 aufzurufen

Ich versuche, die Smart-Contract-Methode (bereitgestellt auf einem Remote-Ethereum-Konto) von meinem Nodejs-DAPP aufzurufen, und erhalte die folgende Fehlermeldung:

Error: authentication needed: password or unlock
    at Object.InvalidResponse (D:\dapp\node_modules\web3\lib\web3\errors.js:38:16)

Mein web3-DAPP-Code sieht so aus:

var ABI = [abiinterface];
var contract = web3.eth.contract(ABI);
var contractInstance = contract.at(accAddress);

Ich habe den Entsperrcode auf meiner Geth-Konsole mit personal.unlockAccount("address") ausgeführt, der "true" zurückgegeben hat, aber immer noch den Fehler "Authentifizierung erforderlich: Passwort oder Entsperren" in der DAPP erhalten. Jede Hilfe oder Hinweise werden sehr geschätzt. Danke.

Ich habe dasselbe Problem. Hast du eine Lösung gefunden?
Das beantwortet die Frage nicht wirklich. Wenn Sie eine andere Frage haben, können Sie diese stellen, indem Sie auf Frage stellen klicken . Sie können auch ein Kopfgeld hinzufügen , um mehr Aufmerksamkeit auf diese Frage zu lenken, sobald Sie genug Ruf haben . - Aus Bewertung
Ich habe bereits eine neue "Frage stellen" zu meinem Problem erstellt. Nur dieses Problem wie eine Mine. Und ich habe keine Lösung für das Problem gefunden. Meine Frage
Damit ist die Frage nicht beantwortet. Sobald Sie über einen ausreichenden Ruf verfügen , können Sie jeden Beitrag kommentieren . Geben Sie stattdessen Antworten an, die keine Klärung durch den Fragesteller erfordern . - Aus Bewertung

Antworten (3)

Stellen Sie zunächst sicher, dass Sie ein Konto haben.

web3.personal.listAccounts

Wenn Sie []...

web3.personal.newAccount()

Versuchen Sie es nochmal.

Dann ...

web3.personal.unlockAccount(web3.personal.listAccounts[0],"<password>", 15000)

Das heißt, entsperren Sie das erste Konto mit diesem Passwort für 15.000 Sekunden (nerven Sie mich eine Weile nicht.)

Die DAPP-Seite sollte aufhören, sich über die Sperre zu beschweren.

Ich hoffe es hilft.

Das neue Konto existiert bereits und ich konnte es mit der Geth-Konsole entsperren. Der Fehler wird immer noch auf der DAPP-Seite angezeigt.
Verwenden Sie MetaMask und wählen Sie das entsperrte Konto aus?

Ich stand vor einem ähnlichen Problem. Stellen Sie sicher, dass die folgenden 3 Dinge beachtet werden:

  1. Das von Ihnen verwendete Konto ist das erste aus der Liste der Konten. (Oder, wenn Sie ein anderes Konto verwenden, stellen Sie sicher, dass Sie die entsprechende Änderung im nodejs-Code vorgenommen haben.)
  2. Stellen Sie sicher, dass Sie dasselbe Konto mit entsperren web3.personal.unlockAccount(web3.personal.listAccounts[0],"MyPassword", 15000). In meinem Fall war es das erste Konto selbst.
  3. Das Konto enthält etwas Ether.

Bei diesem Fehler geht es darum, das Konto auf Ihrem Ethereum-Knoten zu entsperren. Die Schwierigkeit besteht darin, die verborgene Ursache zu erkennen. Einige Fehler in web3js würden das gleiche Problem verursachen:

Zum Beispiel

web3.eth.personal.unlockAccount(_senderAddress, password, 0).then(
    ...                   
     )

würde dieses Problem ausgeben, da es nicht auf die Entsperrung warten wird. Verwenden Sie also einen Rückruf oder warten Sie.

web3.eth.personal.unlockAccount(_senderAddress, password, 0).then(
                    isunlocked => {
        }
})