ethers.js stellt eine Verbindung zum privaten Netz-RPC her

Ich versuche, an Ethereum zu arbeiten, und derzeit verwende ich das npm-Paket von Ether , und ich habe versucht, es mit meinem privaten Netz zu verbinden, das ich zum Testen verwenden werde.

Ich habe mein Geth mit diesem Befehl ausgeführt.

geth --port 3000 --networkid 5  --rpc --rpcport 8545 --rpcaddr 0.0.0.0 --rpccorsdomain "*" --rpcapi "eth,net,web3,personal" 

Jetzt habe ich dieser Maschine eine öffentliche IP zugewiesen und greife von außen über RPC zu. Aber das funktioniert nicht richtig.

Ich führe diesen Code aus und kann eine Adresse generieren, aber auf der Geth-Konsole kann ich kein Protokoll über die erstellte Brieftasche abrufen.

var ethers = require('ethers');
var providers = require('ethers').providers;
var p = new providers.JsonRpcProvider('http://MY_RPC_PUBLIC_IP:8545', false, 5);
ethers.Wallet.provider=p;

var privateKey = "0x0123456789012345678901234567890123456789012345678901234567890123";
var wallet = new ethers.Wallet(privateKey);
console.log("Address: " + wallet.address);

Kann jemand auf den Fehler hinweisen, den ich hier mache?

Antworten (1)

Das Wallet, das Sie im obigen Code mit dem privaten Schlüssel erstellt haben, befindet sich nur auf dem Client im JavaScript. Geth hat weder Kenntnis über den privaten Schlüssel noch über das Konto.

Der Vorteil von ethers.js besteht darin, dass Unterzeichner und Anbieter isoliert bleiben. Im obigen Fall ist Geth lediglich ein Anbieter. Der Unterzeichner (das Wallet) kann den Anbieter verwenden:

// Connect the wallet to the provider
wallet.provider = provider;

// Ask the provider for the wallet's balance
wallet.getBalance().then(function(balance) {
    console.log(balance);
});

var sendPromise = wallet.sendTransaction({ to: targetAddress, value: amountWei})
sendPromise.then(function(tx) {
    console.log(tx);
});

Aber die Brieftasche, während sie den Geth-Knoten verwendet, um mit dem Ethereum-Netzwerk zu kommunizieren, gibt Geth niemals den privaten Schlüssel preis.