Author

Topic: FeeFilter message (minmempoolfee) and privacy (Read 650 times)

hero member
Activity: 968
Merit: 515
February 17, 2017, 08:10:25 PM
#3
Thanks for your reply gmaxwell.

I do understand the purpose of the feefilter message. My point was to show that bad actors can get the minmempoolfee without "abusing" the feefilter message. So there is no point in randomizing it for privacy reasons.

Quote
It isn't a significant leakage, but it costs basically nothing to decrease it a little.
I can live with that explanation.
staff
Activity: 4284
Merit: 8808
February 17, 2017, 07:27:45 PM
#2
It's not clear to me if you understand the purpose of fee filter.

The purpose of feefilter is not to "find out the fee", the purpose is so that peers will not waste bandwidth INVing you transactions that you will not bother accepting.

The mempool message is not supported by all nodes, and is delayed and restricted for privacy reasons.

Similarly, reject messages are not universally used, and are not mandatory. There has been some recent discussion about eliminating most of them from the protocol since most are never used by any application and serve no purpose but wasting bandwidth and harming privacy.  (They were not originally in the protocol, their addition was somewhat controversial, and they have not turned out to be useful for the things they were claimed to be useful for).

The settings are also just one privacy vector. The minfee your node has depends on the settings as well as the history of limit reaching events that it has seen.  As a result, there is some information leakage as a node moves connections around the network. It isn't a significant leakage, but it costs basically nothing to decrease it a little.
hero member
Activity: 968
Merit: 515
February 17, 2017, 01:41:15 PM
#1
For privacy reasons a partly randomized FeeFilter is sent to peers:
Quote
There are privacy concerns with deanonymizing a node by the fact that it is broadcasting identifying information about its mempool min fee. To help ameliorate this concern, the implementation quantizes the filter value broadcast with a small amount of randomness, in addition, the messages are broadcast to different peers at individually randomly distributed times.
https://github.com/bitcoin/bips/blob/master/bip-0133.mediawiki

I have several questions regarding the issue:

1. Isn't the mempool message the easiest way to find out the fee? Just find the lowest tx and compare it to your mempool that includes all transactions.
2. Another way is using reject messages. Just monitor over a while all REJECT_INSUFFICIENTFEE messages and you will find out the min fee.
3. Why is this a privacy issue? If the mempool is limited a bad actor could probably calculate the maxmempool setting as well but he can get that much easier via the mempool message. Non limiting nodes send out the original fee anyway (correct me if I am wrong):
Code:
filterToSend = std::max(filterToSend, ::minRelayTxFee.GetFeePerK());
Jump to: