2

I have found 2 transactions, the first one is has position 1 in block and another one has position 53 in the same block, although the second transaction has more fee to pay for gas and more priority fee. How that's possible? What else do I need to do to control my position in block?

[position 1] Base: 4.095570899 Gwei |Max: 5.36 Gwei |Max Priority: 0.08 Gwei

https://etherscan.io/tx/0x04d6ad9b7df9322b8b6be8110dd71d4c5fa3625abbe483e3096a193e3ad5b379

[position 53] Base: 4.095570899 Gwei |Max: 102 Gwei |Max Priority: 3 Gwei

https://etherscan.io/tx/0xcf10c13c30382865593ac6019ad7d7962dcbb35d9d777ef047917c721c5e97f2

If we need to use builders like Titan Builder, how do we know that this transaction has bribe to builders? If I send bribe to builder, then another transaction is sent to another builder with bribe, how do they compete whose transaction will be first in block?

2 Answers 2

1

Transaction order is ultimately up to individual block builders' discretion.

From EIP-1559:

... transaction ordering now depends on individual client internal implementation details such as how they store the transactions in memory ... Miners should still prefer higher gas premium transactions over those with a lower gas premium, purely from a selfish mining perspective.

Although a higher priority fee incentivizes block builders to include your transaction somewhere in their block, there is no particular reason for the block builder to sort the block by priority fee (the block builder will receive the same fees regardless of the transaction order, so why should they sort it?). For this reason, the term "priority fee" was originally called "inclusion fee" (source) - it was renamed later to avoid confusion with the base fee.

If the order of transactions within a block is important to you (e.g., for MEV purposes), you can directly send a "bundle" of transactions in a specific order to block builders using Flashbots. Note that Flashbots bundles are not part of the Ethereum protocol: essentially, you are separately arranging with block builders to sort transactions in a particular way in exchange for a fee that you directly pay the block builder.

2
  • If so, what's the reason of maxPriorityFeePerGas and maxFeePerGas if it does not work and the only way is to send transaction with Flashbot to prioritize?
    – sirjay
    Commented Jun 18 at 21:29
  • 1
    I love this question. maxPriorityFeePerGas and maxFeePerGas in a perfect world are used to help select transaction block inclusion, but this world isn't perfect. To get around this, you could run your own ETH node and wait for it to be selected to build a block (which might take 6+ months), or work with another group of nodes who do not take bribes (I am not sure such a group exists). This is an issue in the EVM ecosystem as of today, and at the moment, there isn't much you can do about it. Even Flashbots nodes will still attempt to extract MEV, just not certain kinds like frontrunning. Commented Jun 22 at 16:48
1
+50

Why transaction with higher gas priority fee executes later than with lower priority fee?

The builders can decide the order however they want. Generally they prioritize transactions based on the fee they can gain. MEV transactions are the most expensive as you can imagine, and these are sent in bundles (i.e. a set of transactions that must all be included in an arranged order), so they end up first. Not all transactions of the bundle need to have high priority fee, so you can get some variance.

How to know if a transaction has a bribe to builders?

There's no easy answer because transactions are sent to builders in a bundle. The bribe can be sent along any of the transactions of the bundle, so a transaction might appear without bribe but it's actually part of a bundle with the bribe somewhere else.

The best tool I know to determine if a transaction is part of a bundle is https://libmev.com/. It's not open-source but the owner shared some methodologies on how it works in this blog: https://crypticwoods.com/blog/libmev-data-methodologies/

In your example, the first transaction is part of a bundle of 8 transactions.

If I send bribe to builder, then another transaction is sent to another builder with bribe, how do they compete whose transaction will be first in block?

Each builder builds its own block and shows it (secretly) to the validator. The validator chooses the one that pays more fees. So overall it's likely that the bundle that pays more fees ends up in the final block. The strategy to get our transaction included first consists in sending it to multiple builders (all that you trust) with high enough fees.

Not the answer you're looking for? Browse other questions tagged or ask your own question.