erigon-pulse/cmd/txpool
Somnath Banerjee f51d9b61a0
Txpool 4844 upgrades Part 2 (#8213)
Some peer-review changes from the last related PR. 
Addition of a flag for BlobSlots - for max allowed blobs per account in
txpool.
Use BlobFee from the block to validate txs in the pool.

See also https://github.com/ledgerwatch/erigon-lib/pull/1125
2023-09-20 17:29:30 +05:30
..
main.go Txpool 4844 upgrades Part 2 (#8213) 2023-09-20 17:29:30 +05:30
readme.md txpool: update cli flags (#7282) 2023-04-08 06:52:04 +00:00

TxPool v2

Transaction Pool - place where living "not-included-to-block-yet transactions". Erigon's TxPool can work inside Erigon (default) and as separated process.

Erigon's pool implementation is not fork of Geths, has Apache license - Design docs: https://github.com/ledgerwatch/erigon/wiki/Transaction-Pool-Design 95% of pool-related code (from p2p message parsing, to sorting logic) is inside this folder: https://github.com/ledgerwatch/erigon-lib/tree/main/txpool

Internal mode

It's default. No special flags required - just start Erigon. RPCDaemon - flags --private.api.addr and --txpool.api.addr must have same value in this case.

External mode

make txpool

# Add `--txpool.disable` flag to Erigon

# External TxPool require(!) external Sentry
./build/bin/sentry --sentry.api.addr=localhost:9091 --datadir=<your_datadir>

# Start TxPool service (it connects to Erigon and Sentry):
# --private.api.addr - connect to Erigon's grpc api
# --sentry.api.addr  - connect to Sentry's grpc api
# --txpool.api.addr  - other services to connect TxPool's grpc api
# Increase limits flags: --txpool.globalslots, --txpool.globalbasefeeslots, --txpool.globalqueue
# --txpool.trace.senders - print more logs about Txs with senders in this list 
./build/bin/txpool --private.api.addr=localhost:9090 --sentry.api.addr=localhost:9091 --txpool.api.addr=localhost:9094 --datadir=<your_datadir>

# Add flag `--txpool.api.addr` to RPCDaemon  

ToDo list

[] Hard-forks support (now TxPool require restart - after hard-fork happens) [] Add pool to docker-compose [] Add pool (db table) - where store recently mined txs - for faster unwind/reorg. [] Save history of local transactions - with 1 day expiration [] move tx.rlp field to separated map, to make tx immutable