¿Alguien tiene un script que pueda usarse para transferir todo el éter que se encuentra en una dirección a otra dirección?
El script verificará constantemente si hay éter entrante y realizará una transacción automática, usará la mitad del éter para gas.
const ETH_URL = ... //ex: http://localhost:8545
const TIMEOUT = 15000; //blocktime
const ADDRESS_FROM = ...
const ADDRESS_TO = ...
const TX_COST = 21000;
const web3 = new web3(ETH_URL);
setInterval(async () => {
const balance = await web3.eth.getBalance(ADDRESS_FROM);
if(balance > TX_COST) {
await web3.sendTransaction({to: ADDRESS_TO, from: ADDRESS_FROM, value: balance - TX_COST});
}
}), TIMEOUT);
No he probado la función asíncrona en setInterval()
. Si no funciona, reemplácelo por promesas (entonces () ...).
var from = ...;
var to = ...;
var fromBalance = web3.utils.toBN (web3.eth.getBalance (from));
var gasPrice = web3.utils.toBN (web3.eth.getGasPrice ());
var fee = gasPrice.mul (web3.utils.toBN (21000));
if (fromBalance.gte (fee)) {
web3.eth.sendTransaction ({
from: from,
to: to,
value: fromBalance.sub (fee),
gas: 21000,
gasPrice: gasPrice
});
mijail vladimirov
21000 * web3.eth.getGasPrice()
seria suficiente.