Capturing IP address of transactions submitted to Bitcoin Dan Kaminsky has pointed out that it would be possible to build a service that tries to infer the source IP address of each Bitcoin transaction.  His idea, which he calls Blitcoin, works by maintaining connections to all nodes in the peer-to-peer network and noting the IP address of the first node to report the transaction.  This won't always be the IP address of the source of the transaction (for instance, there are a number of ways to hide one's IP address), but sometimes it might be.

Has anyone built such a service?  How often does it work, in practice?  Are there any commercially available services that have maintained past archives of this information?
So a node that creates a transaction needs to propagate it. It will connect to other nodes. Usually to some reasonable number like 8 nodes (please see getpeerinfo on your client).

As a mental exercise: If the 8 nodes (that I randomly selected from the network) belong to the same person, that person will have the possibility to capture 100% of my traffic. My IP address will be known, but also there could be a selective attack that prevents my transaction from being broadcasted (i.e. he/she decides to drop it based on my sending bitcoin address). 

The more nodes the attacker has, the more chances to have all outgoing connections from the victims plus the possibility to do data analysis. Also more chances of dropping (selected or random) transactions.

I don't know the economics behind an attack of this nature. Buying 5000 VMs to run nodes could cost a lot. 

Examples are out there that they ask for bitcoin to set up full nodes, like https://classic-cloud.net/ [1]. as 2016-04-01 they have 810 nodes running. So you can imagine that they could be able to track some transactions to IPaddress. 

Edit: [1] as of 2019-05-17 this is not longer a page that has stats about nodes, but rather a blog.