Werden Ihre Transaktionen durch die Verwendung eines sehr hohen Gaslimits irgendwie langsamer ausgeführt?

Ich führe Transaktionen im Mainnet mit einem NodeJS-Skript aus:

async function send(web3, transaction, destAddr, gasPrice, privateKey) {
    const options = {
        data    : transaction.encodeABI(),
        to      : destAddr,
        gasPrice: gasPrice,
        gas     : (await web3.eth.getBlock("latest")).gasLimit
    };
    const signed  = await web3.eth.accounts.signTransaction(options, privateKey);
    const receipt = await web3.eth.sendSignedTransaction(signed.rawTransaction);
    return receipt;
}

Jede Transaktion dauert ewig, bis sie abgeschlossen ist.

Ich erhöhe ständig den Gaspreis, aber keine Besserung.

Ich habe endlich versucht, das Gaslimit zu reduzieren, und anstatt das maximale Gaslimit pro Block zu nehmen, habe ich einfach "500000" geschrieben, was weit weniger als das Blockgaslimit ist, aber weit mehr als das tatsächlich erforderliche Gas für jede Transaktion.

Plötzlich hat das Netzwerk begonnen, meine Transaktionen viel schneller zu verarbeiten.

Es fühlt sich an, als ob ein hohes Gas-Limit Miner "abschreckt" oder so.

Ich habe versucht, es zu verwenden, await transaction.estimateGas()aber es hat mir jedes Mal den Fehler „Erforderliches Gas übersteigt die Zulage oder Transaktion schlägt immer fehl“ angezeigt.

Ich glaube, dass dies möglicherweise daran liegt, dass diese Funktion das tatsächlich für die Transaktion benötigte Gas unterschätzt, daher bin ich etwas zurückhaltend, sie zu verwenden.

Könnte hier jemand etwas Licht ins Dunkle bringen?

Danke schön!

Antworten (1)

Kurz gesagt: Es ist genau so, wie Sie vermuten, ein höheres Gaslimit bedeutet, dass Ihre Transaktion mit geringerer Wahrscheinlichkeit von Minern aufgenommen wird .

Die Begründung: Miner versuchen, ihren Gewinn innerhalb jedes Blocks zu maximieren. Aufrufe an eth_estimateGaskönnen rechenintensiv sein, sodass Miner normalerweise nicht das tatsächliche Gas bestimmen, das jeder TX verbraucht. Stattdessen berechnen sie gasPrice * gasLimitfür jede gegebene Transaktion und bestimmen daraus die kostengünstigste Gruppe von Transaktionen, die abgebaut werden können.

Wenn Sie das Gaslimit als ==Blockgaslimit festlegen, müssen Sie einen sehr hohen Gaspreis anbieten, damit Ihr TX allein rentabler ist als alle anderen möglichen Kombinationen ausstehender Transaktionen.

Ausgezeichnete Antwort. Ich habe gerade eine sehr ähnliche Erklärung von einem Freund bekommen. Vielen Dank!!!