go-ethereum/miner
Martin HS 7c7b7f6ab1
core/txpool: remove locals-tracking from txpools (#30559)
Replaces  #29297, descendant from #27535

---------

This PR removes `locals` as a concept from transaction pools. Therefore,
the pool now acts as very a good simulation/approximation of how our
peers' pools behave. What this PR does instead, is implement a
locals-tracker, which basically is a little thing which, from time to
time, asks the pool "did you forget this transaction?". If it did, the
tracker resubmits it.

If the txpool _had_ forgotten it, chances are that the peers had also
forgotten it. It will be propagated again.

Doing this change means that we can simplify the pool internals, quite a
lot.

### The semantics of `local` 

Historically, there has been two features, or usecases, that has been
combined into the concept of `locals`.

1. "I want my local node to remember this transaction indefinitely, and
resubmit to the network occasionally"
2. "I want this (valid) transaction included to be top-prio for my
miner"


This PR splits these features up, let's call it `1: local` and `2:
prio`. The `prio` is not actually individual transaction, but rather a
set of `address`es to prioritize.
The attribute `local` means it will be tracked, and `prio` means it will
be prioritized by miner.

For `local`: anything transaction received via the RPC is marked as
`local`, and tracked by the tracker.
For `prio`: any transactions from this sender is included first, when
building a block. The existing commandline-flag `--txpool.locals` sets
the set of `prio` addresses.

---------

Co-authored-by: Gary Rong <garyrong0905@gmail.com>
2025-02-04 17:23:01 +01:00
..
miner.go core/txpool: remove locals-tracking from txpools (#30559) 2025-02-04 17:23:01 +01:00
miner_test.go cmd, core, miner: rework genesis setup (#30907) 2025-01-14 11:49:30 +01:00
ordering.go core/txpool, eth, miner: retrieve plain and blob txs separately (#29026) 2024-02-20 11:37:23 +02:00
ordering_test.go core/txpool, miner: speed up blob pool pending retrievals (#29008) 2024-02-19 15:59:40 +02:00
payload_building.go miner: send full request when resolving full payload (#30615) 2024-10-17 10:04:20 +02:00
payload_building_test.go core/txpool: remove locals-tracking from txpools (#30559) 2025-02-04 17:23:01 +01:00
pending.go miner: refactor the miner, make the pending block on demand (#28623) 2024-03-06 14:45:03 +02:00
worker.go core/txpool: remove locals-tracking from txpools (#30559) 2025-02-04 17:23:01 +01:00