With the blockchain experiencing extremely high transaction volumes (most blocks at the 1MB size limit), I am interested in studying the "backlog" of transactions in the memory pool on my own full node. In order to make such an analysis meaningful, I want only "honest" transactions in my mempool (loosely defined as: transactions that should be mined someday).
I've tried adjusting minrelaytxfee to 0.0001, but I find that TONS of "unqualified" transactions build up in my mempool. Here is a representative transaction: effec9299f18314a7a13e525a7bdbaa9316be9d9cac9d082078ae325fff30500
That transaction is 14,799 bytes (100+ infinitesimal inputs) with a fee of 0.15 mBTC. At the risk of stating the obvious, that transaction should NOT pass a minrelaytxfee of 0.1 mBTC/KB. My mempool collects ~1000 transaction per day that are VERY similar to the one cited above.
Also at the risk of stating the obvious, these transactions are NEVER mined.
QUESTION #1: how do these transactions "fool" the minrelaytxfee test?
QUESTION #2: is there a better mechanism for filtering out such transactions?
QUESTION #4: might these transactions originate on "my" SPV clients?
QUESTION #3: are these transactions SPAM or something else?
Thanks for the insight.
UPDATE ----------
For debugging purposes only, I increased minrelaytxfee to 0.0002 and re-started my Bitcoin Core full node.
Observation: on the vast majority of transactions, minrelaytxfee is applied correctly. In other words, transactions will a fee lower than 0.2 mBTC/KB are not added to my mempool.
I continue to get ~250 transactions/hour that somehow "fool" the minrelaytxfee filter. Here are three representative transactions:
c299d3bd4e79590bf5d5b9cfb1f3db4378ffc5e9e64752f6deb8134d43f54501
ffc1ad32c1d8ca496fa52e5451c6abe56003029819029de9a0f941611f942402
65871d2e0bc438d5019e606daba59d7af1a2ce3eb079e5f0e6c9e21ef8373402
All of these "foolish" transactions follow a specific template:
Size is between 14790 and 14810 bytes
Roughly 100 transaction inputs, all of exactly 0.1 mBTC
Transaction fee is always exactly 0.15 mBTC
QUESTION: how are these transactions fooling the minrelaytxfee filter?
Tracing a large sample of the 0.1 mBTC transaction inputs, they are always produced by a transaction that follows its own specific template:
A single transaction input
Roughly 100 transaction outputs, all but one of exactly 0.1 mBTC
QUESTION: Am I correct in suggesting that this pattern appears suspicious and deliberate?