The logs bloom filter in the block header has a size of 2048 bits. How many messages will it accommodate before the false positive rate is too high for it to be useful anymore? If a formula could be provided that would be excellent.
As Thomas already suggested, https://en.wikipedia.org/wiki/Bloom_filter is a good resource for this.
As far as I understand, it works like this (correct please if wrong):
The estimate formula for false positive is
Ethereum yellow paper says:
M3:2048 is a specialised Bloom filter that sets three bits out of 2048, given an arbitrary byte sequence.
Hence k=3, m=2048
For this we get the following false positive estimates (n = number of contract addresses and log topics contained in the bloom filter):
n = 100 -> ~0,25% n = 200 -> ~1,64% n = 430 -> ~10,20% n = 1080 -> ~50,14% n = 4000 -> ~99,15%