go-ethereum/eth
rjl493456442 9089f9461c
eth: add tx to locals only if it has a chance of acceptance (#31618)
This pull request improves error handling for local transaction submissions.

Specifically, if a transaction fails with a temporary error but might be
accepted later, the error will not be returned to the user; instead, the
transaction will be tracked locally for resubmission. 

However, if the transaction fails with a permanent error (e.g., invalid
transaction or insufficient balance), the error will be propagated to the user.

These errors returned in the legacyPool are regarded as temporary failure:

- `ErrOutOfOrderTxFromDelegated`
- `txpool.ErrInflightTxLimitReached`
- `ErrAuthorityReserved`
- `txpool.ErrUnderpriced`
- `ErrTxPoolOverflow`
- `ErrFutureReplacePending`

Notably, InsufficientBalance is also treated as a permanent error, as
it’s highly unlikely that users will transfer funds into the sender account
after submitting the transaction. Otherwise, users may be confused—seeing
their transaction submitted but unaware that the sender lacks sufficient funds—and
continue waiting for it to be included.

---------

Co-authored-by: lightclient <lightclient@protonmail.com>
2025-04-17 21:27:48 +02:00
..
catalyst eth/catalyst: sanitize simulated beacon period to avoid overflowing time.Duration (#31407) 2025-04-17 14:23:31 +02:00
downloader core, eth/downloader: implement pruning mode sync (#31414) 2025-04-03 15:16:35 +02:00
ethconfig core: initialize history pruning in BlockChain (#31636) 2025-04-15 14:32:46 +02:00
fetcher eth: add tx to locals only if it has a chance of acceptance (#31618) 2025-04-17 21:27:48 +02:00
filters core: initialize history pruning in BlockChain (#31636) 2025-04-15 14:32:46 +02:00
gasestimator internal/ethapi: support for beacon root and withdrawals in simulate api (#31304) 2025-03-24 19:08:53 +01:00
gasprice eth/gasprice: sanity check ratio values (#31270) 2025-02-27 15:40:35 +08:00
protocols core/txpool: add 7702 protection to blobpool (#31526) 2025-04-08 07:46:27 -06:00
tracers internal/ethapi: exclude 7702 authorities from result in eth_createAccessList (#31336) 2025-03-25 15:01:21 +01:00
api_admin.go eth: ignore genesis block on importChain (#27956) 2023-08-21 13:32:34 -04:00
api_backend.go eth: add tx to locals only if it has a chance of acceptance (#31618) 2025-04-17 21:27:48 +02:00
api_backend_test.go eth: add tx to locals only if it has a chance of acceptance (#31618) 2025-04-17 21:27:48 +02:00
api_debug.go miner: refactor the miner, make the pending block on demand (#28623) 2024-03-06 14:45:03 +02:00
api_debug_test.go all: implement state history v2 (#30107) 2025-01-17 02:59:02 +01:00
api_miner.go miner: refactor the miner, make the pending block on demand (#28623) 2024-03-06 14:45:03 +02:00
backend.go core: initialize history pruning in BlockChain (#31636) 2025-04-15 14:32:46 +02:00
dropper.go eth: add logic to drop peers randomly when saturated (#31476) 2025-04-14 12:45:27 +02:00
handler.go eth: fix transaction sender cache miss before broadcast (#31657) 2025-04-17 10:33:59 +02:00
handler_eth.go eth: check blob transaction validity on the peer goroutine when received (#31219) 2025-03-01 14:10:38 +01:00
handler_eth_test.go core/txpool: remove locals-tracking from txpools (#30559) 2025-02-04 17:23:01 +01:00
handler_snap.go eth: check snap satelliteness, delegate drop to eth (#22235) 2021-02-02 10:44:36 +02:00
handler_test.go core/txpool: add GetMetadata to transaction pool (#31433) 2025-04-02 15:47:56 +08:00
peer.go eth: remove admin.peers[i].eth.head and difficulty (#26804) 2023-03-06 09:27:46 +02:00
peerset.go consensus, cmd, core, eth: remove support for non-merge mode of operation (#29169) 2024-03-05 16:13:28 +02:00
state_accessor.go all: implement state history v2 (#30107) 2025-01-17 02:59:02 +01:00
sync.go consensus, cmd, core, eth: remove support for non-merge mode of operation (#29169) 2024-03-05 16:13:28 +02:00
sync_test.go eth/protocols/eth: prevent hanging dispatch (#30918) 2025-01-06 16:31:53 +01:00