2

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?

  • 2
    What software and version are you using for your full node, and how are you setting the minrelayfee? It has a fee of slightly above 0.01mBTC/KB, which is the default min relay fee of many recent Bitcoin Core versions. Perhaps you made a typo in the config setting, and it remained at the default? – Pieter Wuille Jun 10 '16 at 7:44
  • I am running Bitcoin Core 0.12.0. – Pressed250 Jun 10 '16 at 14:45
  • Ok, now the other question: how are you setting the min relay fee exactly (command-line option, which? config file entry, which?) – Pieter Wuille Jun 10 '16 at 14:46
  • I added the following line to bitcoin.conf: minrelaytxfee=0.0001 – Pressed250 Jun 10 '16 at 14:46
  • Did you restart bitcoind after adding that line? – Pieter Wuille Jun 10 '16 at 14:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.