To start with it’s value noting there appears to be some disagreement on this on the time of writing (February 2024).
instagibbs said in his coverage zoo doc:
There are N motivations for coverage that I do know of:
Anti-DoS: Solely “low cost” issues to validate get flooded to the community
Safety: Sure kinds of transactions might mess up sure methods for no good cause
Improve hooks: We go away some issues “forbidden” such that if we discover a use for them later we don’t “confiscate” funds by refusing to relay e.g., a spend or pre-signed transaction
Professional-decentralization: Make it easy/low cost for miners to construct blocks that pay effectively
Paternalism: We wish pockets authors to make use of the least quantity of public sources whereas nonetheless carrying out their finish targets(so long as that objective isn’t “assault the community”!).
Secure soft-fork course of: Typically the one mechanism stopping an unupgraded miner from mining a block that might be thought of invalid by upgraded miners (however legitimate by unupgraded miners) is coverage discouragement.
Let folks pay charges to make transactions in a suitable API
All of those motivations clearly must be weighed in opposition to the truth that bitcoiners need to make transactions, and miners need charges from these transactions. Ideally we make a mempool/relay system the place each can stay in relative concord.
This corresponds to 2 of Suhas’ meant functions in his Stack Change publish.
The aim of coverage checks is mostly to (a) shut off DoS vectors and (b) to make future consensus modifications safer to deploy, by stopping relay of transactions that might violate such future consensus modifications effectively prematurely.
Gloria Zhao talks in regards to the trade-off between defending the bitcoind person from assaults (e.g. CPU exhaustion) and maximizing the reliability of price bumping for L2 protocols in her presentation on “Transaction Relay Coverage for L2 Builders” at Adopting Bitcoin 2021.
These views up to now appear comparatively aligned though might embrace slight variations in prioritization.
A stronger disagreement is with those that suppose coverage is and needs to be used as a instrument to limit the propagation of sure use circumstances (ordinals, inscriptions and so forth) even when these transactions are consensus legitimate and have a excessive price price. As well as Luke Dashjr takes the view (on X) that:
“Transaction pinning” AFAIK is a results of coverage centralization efforts, not an actual drawback. The choice is to encourage various insurance policies, and on the technical degree, to organize a number of different transaction variants to make sure one being rejected will not be an issue.
This alludes to a special disagreement on whether or not default (mempool) coverage needs to be standardized throughout full node implementations to aim to realize its meant functions. Full node operators are all the time free to vary from the defaults (coverage just isn’t consensus) however standardization on this case would imply constant defaults throughout completely different implementations.