Скрипт для очистки адреса

У кого-нибудь есть скрипт, который можно использовать для перевода всего эфира, найденного в адресе, на другой адрес?

Скрипт будет постоянно проверять наличие входящего эфира и совершать автоматическую транзакцию, используя половину эфира для газа.

Использование половины эфира для газа, вероятно, слишком щедро. 21000 * web3.eth.getGasPrice()было бы достаточно.

Ответы (2)

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

Я не пробовал асинхронную функцию в setInterval(). Если это не работает, замените обещаниями (тогда()...).

Вы предполагаете, что цена газа равна 1 Wei.
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
});