Error: fondos insuficientes para gas * precio + valor

Soy nuevo en el desarrollo de Ethereum.

Escribí el siguiente código en mi nodo local para transferir 1 éter entre mis dos redes de prueba Rinkeby.

De la cuenta: 0xffD8eb81304291AFcA2C4DA5D26B691b8CC81Bd5
Tiene 21 ether en Rinkeby (Espero que esto sea suficiente).

// Environment
"web3": "^0.19.1"

Geth
Version: 1.7.2-stable
Git Commit: 1db4ecdc0b9e828ff65777fb466fc7c1d04e0de9
Architecture: amd64
Protocol Versions: [63 62]
Network Id: 1
Go Version: go1.9.2
Operating System: darwin
GOPATH=
GOROOT=/usr/local/Cellar/go/1.9.2/libexec

Mi código nodejs:

var Web3 = require('web3');
var util = require('ethereumjs-util');
var Tx = require('ethereumjs-tx');
var lightwallet = require('eth-lightwallet');
var txutils = lightwallet.txutils;

var web3 = new Web3(

new Web3.providers.HttpProvider('https://rinkeby.infura.io/qyft9l9yABZ7tJuoX8R4')
//Local RINKEYBY
//new Web3.providers.HttpProvider('http://127.0.0.1:8545')
);


var addr1 = '0xffd8eb81304291afca2c4da5d26b691b8cc81bd5';
var addr2 = '0xba5453837f30b2ba413c06567dd9ea812abf123f';
var privateKey = new Buffer('bf36e0ba1bb26ad4949df0d92554b8702cb595a23410ba8ecac8dbde0d607dfc', 'hex');

var rawTx = {
chainId: web3.toHex('4'),
gas: web3.toHex('21000'),
gasPrice: web3.toHex('25000000000'),
gasLimit: web3.toHex('90000'),
from: '0xffd8eb81304291afca2c4da5d26b691b8cc81bd5',
to: '0xba5453837f30b2ba413c06567dd9ea812abf123f',
value : web3.toHex(web3.toWei(1, "ether"))

}


var tx = new Tx(rawTx);
tx.sign(privateKey);
var serializedTx = tx.serialize();

web3.eth.sendRawTransaction('0x' + serializedTx.toString('hex'), function(err, hash) {
if (!err)
  console.log(hash); 
else 
  console.log(err);
});

Siempre termino con este mensaje de error a continuación :-(
Lo mismo me sucede en otra red privada y también en la red principal.

¿Puede decirme cómo deshacerse de este error de fondos insuficientes?

_onHttpResponseEnd (/Users/antonyjohnson/Documents/development/angularjs/mean/todo-app/todo-api/node_modules/xhr2/lib/xhr2.js:509:12) en IncomingMessage. (/Usuarios/antonyjohnson/Documentos/desarrollo/angularjs/mean/todo-app/todo-api/node_modules/xhr2/lib/xhr2.js:469:24) en emitNone (events.js:111:20) en IncomingMessage. emitir (events.js:208:7) en endReadableNT (_stream_readable.js:1056:12)

Respuestas (1)

Esto no es un error de codificación, simplemente no tiene el 1 eth que intenta enviar. Y tu GETH no está en Rinkeby, estás en la red principal:

Identificación de red: 1

Esta es la identificación de la red principal. Rinkeby es 4. Puede comenzar geth con --rinkeby, cambiará automáticamente la identificación de la red, génesis, ...

El código está conectado solo a rinkeby y también las cuentas que he usado son de Rinkeby. La identificación de red geth = 1 venía cuando usé el comando de la consola: versión geth en mi consola mac os.
"Network id = 1 estaba llegando cuando usé el comando de la consola" sí, lo que dijo la consola está por encima de toda otra información, porque es creado por el nodo (se obtiene a sí mismo), el cliente (se adjunta) simplemente lo hará imprimible ( embellecedor el json). Verifico ahora y con 18.xx de geth, en rikeby network id = 4 y la red principal es 1. Para la dirección de rinkeby y la dirección principal, son las mismas cosas, por lo que puede tener la misma dirección para ambas redes, el saldo justo será no compartido.
Como dijiste, comencé a usar --rinkeby <br/> console.log(web3.version.network); --->>> 4 Pero aún obtengo el mismo Error: fondos insuficientes para gas * precio + valor. :-(
El problema está resuelto. Había utilizado por error la clave privada incorrecta para firmar.