codigo js:
const Web3 = require('web3');
const web3 = new Web3();
const {eth, personal} = web3;
web3.setProvider(new web3.providers.HttpProvider('http://localhost:8545'));
personal.unlockAccount(eth.coinbase, '1234567890');
const tx = eth.sendTransaction({
from: eth.coinbase,
data: web3.toHex('Hello World'),
});
console.log(eth.getTransaction(tx));
Y ejecutarlo con bash:
geth --dev \
--rpc --rpcaddr "0.0.0.0" --rpcapi "admin,miner,txpool,personal,eth,net,web3" \
--mine &
GETH_PID=$!
sleep 3
node web3.js
sleep 1
kill -s 9 $GETH_PID
La salida del script de Node.js es:
{ blockHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
blockNumber: null,
from: '0xdfb1b9b8693366eb9044ffd8c00058abc904558b',
gas: 90000,
gasPrice: { [String: '20000000000'] s: 1, e: 10, c: [ 20000000000 ] },
hash: '0x0b4f742149fc3018a168950b56786846da99675913dbc043971cbe25ac7792ac',
input: '0x48656c6c6f20576f726c64',
nonce: 2,
to: null,
transactionIndex: null,
value: { [String: '0'] s: 1, e: 0, c: [ 0 ] } }
Pero a veces no hay tal transacción cuando reinicio Geth. ¿Cuánto tiempo deben colocarse las transacciones en un bloque y cómo verificar si se agrega/rechaza?
antes de obtener Transacción, verifique txpool.status.pending, vea si está pendiente = 0. mayor que 0 significa que hay transacciones pendientes en su nodo.
o puede llamar a eth.getBlock("pendiente"), ver si su transacción está en el bloque pendiente.
--
solo después de que el nodo se extrajo con éxito y con la transacción en el bloque, el estado de la transacción cambiará de pendiente y se incluirá en la cadena. para asegurarse de que la transacción sea válida, es mejor que espere alrededor de 12 confirmaciones (bloqueos), eso es alrededor de 3 minutos.
Pablo Rumkin