Skript zum Leeren der Adresse

Hat jemand ein Skript, mit dem alle in einer Adresse gefundenen Ether an eine andere Adresse übertragen werden können?

Das Skript prüft ständig auf eingehenden Ether und führt eine automatische Transaktion durch, wobei die Hälfte des Ethers für Gas verwendet wird.

Die Hälfte des Ethers für Gas zu verwenden, ist wahrscheinlich zu großzügig. 21000 * web3.eth.getGasPrice()wäre genug.

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

Ich habe die Async-Funktion in nicht ausprobiert setInterval(). Wenn es nicht funktioniert, ersetzen Sie es durch Promises (then()...).

Sie gehen von einem Gaspreis von 1 Wei aus.
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
});