Ich möchte ein neues Konto über JSON-RPC erstellen. Ich habe das Wiki von Ethereum überprüft , konnte jedoch nicht herausfinden, wie das geht.
Ich habe vorhandene Anrufkonten gefunden, aber das ist nicht das, was ich will. eth_accounts
Können Sie mir sagen, wie das geht?
Sie sollten die personal
API nicht über RPC verfügbar machen
Wenn Sie sich auf einem lokalen, vertrauenswürdigen Computer befinden, sollten Sie IPC anstelle von RPC verwenden. Andernfalls kann jeder, der sich über RPC mit Ihrem Knoten verbinden kann, versuchen, Ihre Passwörter brutal zu erzwingen und Ihr Ether zu stehlen.
Alle administrativen APIs sind standardmäßig über IPC verfügbar, sodass keine Flags mit geth verwendet werden müssen
Installieren Sie meine Bibliothek:npm install web3_extended
var web3_extended = require('web3_extended');
var options = {
host: '/home/user/.ethereum/geth.ipc',
ipc:true,
personal: true,
admin: false,
debug: false
};
var web3 = web3_extended.create(options);
web3.personal.newAccount("password",function(error,result){
if(!error){
console.log(result);
}
});
Ersetzen Sie die host
Variable durch den richtigen Pfad für Ihr System.
Hinweis: Alle Anfragen über IPC müssen asynchron sein.
Ich weiß nicht, warum Sie neue Konten über web3 erstellen möchten, aber es ist wahrscheinlich nicht der beste Weg, um das zu erreichen, was Sie erreichen möchten. Es ist viel sicherer und modularer, einen Hooked-Web3-Anbieter mit einer clientseitigen Light Wallet zu verwenden oder einfach den Mist-Browser zu verwenden , der alle Konten für Sie verwaltet.
Sie müssen die personal
API über RPC aktivieren. Tun Sie dies, indem Sie geth mit starten
geth --rpc --rpcapi "db,eth,net,web3,personal"
Dann können Sie die personal_newAccount
Methode über RPC verwenden. Es ist nicht in web3.js implementiert, daher müssen Sie die RPC-Anforderung manuell ausgeben. Zum Beispiel mit curl:
curl -X POST --data '{"jsonrpc":"2.0","method":"personal_newAccount","params":["password"],"id":1}' localhost:8545
erstellt ein neues Konto mit Passwort password
und gibt die Adresse zurück:
{"id":1,"jsonrpc":"2.0","result":"0x05ca0ddf7e7506672f745b2b567f1d33b7b55f4f"}
Es gibt eine grundlegende Dokumentation
Alternativ: Verwenden Sie die inoffizielle erweiterte web3.js
personal
, admin
und miner
über eine standardmäßige web3.js-Schnittstelle verwenden.In ethereum-php/ethereum.php hinzufügen
function personal_newAccount($passphase) { return $this->ether_request(__FUNCTION__, array($passphase)); }
und rufen Sie es auf, um ein neues Konto zu erstellen
So wie es aussieht, denke ich, dass Sie Testrpc von Ganache verwenden, um dies zu tun. Wenn Sie dafür Python verwenden. Es ist sehr einfach. Zuerst müssen Sie web3 installieren. Geben Sie im Terminal Folgendes ein
pip install web3
(Stellen Sie sicher, dass Sie Python 3.5 oder höher verwenden.) Öffnen Sie nun die Python-Konsole im Terminal, indem Sie im Terminal eingeben python
. Sobald Sie sich in der Python-Konsole befinden, geben Sie ein
from web3 import Web3
web3 = Web3(Web3.HTTPProvider("http://127.0.0.1:8545"))
web3.newAccount('1234')
Hier ist „1234“ der Passcode, der zum Erstellen des Ethereum-Kontos erforderlich ist. Wenn Sie den Passcode nicht angeben, werden Sie dazu aufgefordert. Wenn Sie testrpc oder ganache nicht verwenden, sollten Sie den HTTPProvider wie hier beschrieben auf einige andere Anbieter ändern
Tjaden Hess
personal
Funktionen implementiert, auch nicht über IPC. Gib mir eine Minute, um etwas zusammenzuhacken.Tjaden Hess
Toschi
Tjaden Hess
npm install web3_ipc
Viktor Trón
Toschi
Tjaden Hess
Toschi
Tjaden Hess
Nick Carraway
Yogesh Karodiya