Ich entwickle derzeit eine Anwendung auf Basis von Ethereums JSON RPC. Ich möchte die Brieftasche nach Bedarf entsperren und sperren können, ähnlich wie es Bitcoin tut. Es scheint jedoch, dass es derzeit nur möglich ist, eine Geth-Wallet mit der Konsole über personal.unlockAccount zu entsperren. Ich frage mich - ist das die einzige Möglichkeit, eine Geth-Brieftasche zu entsperren, oder gibt es eine Möglichkeit, dies auf andere Weise zu tun, idealerweise mit JSON RPC?
Es ist sicherer, die Go Ethereum - Management APIs - personal_sendTransaction API zu verwenden, um Ihr Konto zu entsperren UND gleichzeitig Ihre Transaktion zu senden:
personal_sendTransaction
Validieren Sie die angegebene Passphrase und übermitteln Sie die Transaktion.
Die Transaktion ist das gleiche Argument wie für eth_sendTransaction und enthält die Absenderadresse. Wenn die Passphrase zum Entschlüsseln des privaten Schlüssels von tx.from verwendet werden kann, wird die Transaktion verifiziert, signiert und an das Netzwerk gesendet. Das Konto wird im Knoten nicht global entsperrt und kann nicht in anderen RPC-Aufrufen verwendet werden.
Client Method invocation Console personal.signAndSendTransaction(tx, passphrase) RPC {"method": "personal_sendTransaction", "params": [tx, string]}
Beachten Sie, dass Sie vor Geth 1.5 bitte personal_signAndSendTransaction verwenden, da dies der ursprüngliche Einführungsname war und erst später in die aktuelle endgültige Version umbenannt wurde.
Beispiele
var tx = {from: "0x391694e7e0b0cce554cb130d723a9d27458f9298", to: "0xafa3f8684e54059998bc3a7b0d2b0da075154d66", value: web3.toWei(1.23, "ether")} undefined personal.sendTransaction(tx, "passphrase") 0x8474441674cdd47b35b875fd1a530b800b51a5264b9975fb21129eeb8c18582f
Ihr Konto wird nur für die angegebene Transaktion freigeschaltet.
Sie müssen die persönliche API über die RPC-Schnittstelle mit der geth
API-Option aktivieren:
geth --rpc --rpcapi "eth,net,web3,personal" [other option] console
Vielleicht möchten Sie die folgenden Links über die Sicherheit lesen, wenn Sie die persönliche API über RPC zulassen:
Update 21.07.2016 – Antwort auf Kommentar unten
Ich habe im geth
Github-Repository gesucht personal_sendTransaction
und den Text nicht gefunden. Ich habe jedoch internal/web3ext/web3ext.go#L435-L440 gefunden :
new web3._extend.Method({
name: 'signAndSendTransaction',
call: 'personal_signAndSendTransaction',
params: 2,
inputFormatter: [web3._extend.formatters.inputTransactionFormatter, null]
})
Wie Sie sagten, scheint die Dokumentation veraltet zu sein.
Ja, mit dem API-Aufruf „personal_unlockAccount“.
{
'jsonrpc':'2.0',
'method':'personal_unlockAccount',
'params':[address, password, seconds],
'id':1
};
DerPiachu
The method personal_sendTransaction does not exist/is not available
. Ich habe es jedoch geschafft,personal_listAccounts
und zu verwendenpersonal_unlockAccount
- ich bin mir nicht ganz sicher, was dazu führen würde, dass diese funktionieren, aber nicht die sendTransaction ...DerPiachu
personal_signAndSendTransaction
es funktioniert - das Management-APIs-Dokument scheint veraltet zu sein ...Matt