ethers.js conectarse a la red privada RPC

Estoy tratando de trabajar en ethereum y actualmente estoy usando el paquete ethers npm y estaba tratando de conectarlo a mi red privada que usaré para probar.

He ejecutado mi geth con este comando.

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

Ahora, he asignado una IP pública a esa máquina y accedo desde afuera a través de RPC. Pero eso no está funcionando correctamente.

Estoy ejecutando este código y puedo generar una dirección, pero en la consola geth, no puedo obtener ningún registro sobre la billetera creada.

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);

¿Alguien puede señalar el error que estoy cometiendo aquí?

Respuestas (1)

La billetera que ha creado en el código anterior, utilizando la clave privada, solo está en el cliente, en JavaScript. Geth no tiene conocimiento de la clave privada ni de la cuenta.

La ventaja de ethers.js es que los firmantes y los proveedores se mantienen aislados. En el caso anterior, Geth es simplemente un proveedor. El Firmante (la billetera) puede usar el proveedor:

// 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);
});

Pero la billetera, mientras usa el nodo Geth para comunicarse con la red Ethereum, nunca revela la clave privada a Geth.