Configuré una red de prueba privada local y ahora quiero conectarme desde Node.js a un nodo en el probado usando IPC. Empecé un nodo con este comando:
./geth --identity "5" --datadir /home/davide/Documents/Ether/5th/ --networkid 4999 --port 30600 --nodiscover --ipcpath /home/davide/Documents/Ether/5th/geth.ipc --shh
Este es mi cifrado node.js
const http = require('http');
var fs = require('fs');
var net = require('net');
var Web3 = require('web3');
var web3 = new Web3(new Web3.providers.IpcProvider('/home/davide/Documents/Ether/5th/geth.ipc', net));
console.log(web3.version);
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end(web3.version+' '+console.log(web3.currentProvider)+' '+console.log(web3.eth.accounts)+' '+web3.contentProvider);
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`+web3.eth.accounts[0]);
});
y en la página web obtengo el siguiente resultado:
1.0.0-beta.33 undefined undefined undefined
Si trato de conectarme, geth attach
todo funciona, pero con node.js no funciona. ¿Cuál es el problema?
Está utilizando console.log en la devolución de llamada del servidor, esto hará eco en la consola del nodo, no en su salida html.
En web3 v1.0 web3.eth.accounts
es un objeto, no una matriz como en versiones anteriores. Además, web3 v1.0 solo admite métodos asíncronos.