So entsperren Sie ein Konto über web3js ohne geth (web3-extended funktioniert nicht)

Konto muss entsperrt werden, um Vertragsfunktionen auf Clientseite aufzurufen. Also muss ich Web 3 oder Web 3 Extended verwenden. Aber es funktioniert nicht. Methode ist nicht verfügbar. Vielleicht kennen Sie einige andere Möglichkeiten, wie Sie Funktionen speziell in der IOS-App aufrufen können.

Hier ist der Weg, wie Sie mit Ihrem Problem umgehen können: ethereum.stackexchange.com/a/2670/6041

Antworten (3)

Sie können die Methode unlockAccount von personal aus Ihrer Webanwendung aufrufen. Ich verwende die Version Web3 0.18.2.

Im unten erwähnten Methodenaufruf ist der letzte Parameter die Dauer, dh wie lange das Konto in Sekunden entsperrt bleibt. Es ist optional. Sie können eine der Möglichkeiten verwenden.

Wenn Sie Ihren Knoten mit Geth starten, müssen Sie Personal über rpc verfügbar machen. Ich verwende diesen Parameter "--rpcapi "db,eth,net,web3,personal". Obwohl es nicht empfohlen wird, Personal über rpc verfügbar zu machen.

Codebeispiel var web3
= new Web3(new Web3.providers.HttpProvider(" http://localhost:8545 ")); web3.personal.unlockAccount("(Kontoadresse)", "(Passphrase)");

web3.personal.unlockAccount("(Kontoadresse)", "(Passphrase)", 500);

Ich muss die Client-Version ausführen, also muss ich dies in reinem NODEjs tun
Die Zeile hinzugefügt, um das web3-Objekt zu füllen, von dem ich glaube, dass es ein generischer Aufruf sein wird.

Es ist ganz einfach, geben Sie einfach diesen Befehl in die Geth-Konsole ein:

web3.personal.unlockAccount("0x..", "<pass>");

vielleicht sowas in der richtung:

function unlockAccount(val) {
var accounts = web3.eth.coinbase;
var passphrase = val;
if(passphrase !=null){
web3.personal.unlockAccount(web3.eth.coinbase, passphrase,1000, function (error, result){
    if(error){
    var str =error.toString();
    if(str.includes("could not decrypt")){
        bootbox.hideAll();
        document.getElementById("loading").style.display = "none";
        document.getElementById("successAlert").style.display = "none";
        if(document.getElementById("dangerAlert")){
            document.getElementById("dangerAlert").style.display = "none";
        }
        bootbox.alert("Please enter the valid Passphrase.! ");
    }
    }
  });
 }
}

Wir verwenden dieses JS, um ein Konto zu entsperren, bevor wir Funktionen von Smart Contracts usw. aufrufen.

/B

Wenn ich dies in NodeJS (Trüffelkonsole) mache. Wenn ich web3.personal.unlockAccount versuche, habe ich einen Fehler: Methode sind nicht verfügbar oder nicht vorhanden
Glauben Sie, dass Sie den persönlichen lib rpcapi param nicht eingeschlossen haben, aufgrund dessen er nicht zugreifen kann. Können Sie den gesamten Geth-Befehl teilen, den Sie aufrufen?
Tut mir leid, aber benutze Geth überhaupt nicht. Ich habe eine private Blockchain auf Axure und verbinde mich mit ihm in nodejs. Mit reinem web3 oder web3extended.
Ich denke, die Frage war, wie der Geth-Knoten auf Azure gestartet wurde. Sie können Module und Schalter hinzufügen, beginnend mit ...
Borinho, welche Module sollte ich im Azure-Knoten hinzufügen und wie?
Hallo, ich starte meinen Knoten mit diesen Schalterngeth --networkid 1234 --datadir c:\geth\01\ --rpc --rpccorsdomain "*" --rpcapi "db,net,web3,miner,eth,personal" --port "30301" --rpcport 8101 --maxpeers 3 console