Why isn't the same argument of "relying on altruists" applied to mining as well? We can take your line of thinking and ask oruselves "Why pay miners"? After all, a small bunch of people interested in the currency will contribute all the resources one needs to verify transactions.
Miners are providing a service: they're memorializing transactions in the block chain, which hardens them against double spending. They don't have to do it. If they refuse to, the transactions will sit unconfirmed.
The problem with this argument is that if transaction authentication is left in the hands of a few, they can exploit the system in order to make money. The same applies to transaction propagation: If a few nodes control the flow of information to the entire miner network they can exploit the system for their own benefits.
I believe the scenario of a "few" nodes controlling all the flow of information is highly unlikely to happen. The vast majority of nodes aren't mining and have absolutely no incentive to withhold transactions. They are just average joe schmoes running the Bitcoin client. Each one of those links up to at least 8 peers. So a swarm of 100,000 nodes could, for simplicity's sake, have 400,000 connections between them (100,000 * 8/2). Fewer than 5% of those nodes are likely to be mining and would see any benefit to refusing to relay valid transactions. The other 95% have no reason to run what amounts to a crippled client that contributes to network disruption with no benefit to them. What's the odds that all
of any given node's 8+ connections are going to coincidentally go to people who see an advantage to withholding transactions, and
are doing it? Pretty small, in my opinion.
Let's assume that in the future, running the client becomes infeasible and only miners run clients. So, 100% of the nodes are miners and are refusing to relay transactions. I, as someone who wants to execute a transaction, could easily send my transaction to each of them myself. Just the same way your bank separately reports your history to Experian, Equifax, and TransUnion separately. Given the a transaction size of 0.5 KB, it would be painless for my computer to submit that to a hundred different nodes if necessary. They could go in UDP packets and be blasted out in the blind.
Bitcoin's great leap is that it incentivizes many miners that keep tabs on each other. We simply argue that it should similarly incentivize a large diversity of transaction distribution channels. Just like anyone can make money by mining, we think that everyone should be able to make money from transaction propagation. This inherently breaks any possible monopoly.
I don't believe that any of the developers would take this idea seriously because it comes with a large resource burden to solve a problem nobody (other than you guys, of course) believe exists. If for every big transaction, we need to add (and relay) 9 little transactions just to make sure the miners make a penny, we have suddenly increased the resource cost tenfold, and imposed that increased cost upon every node. It would be ridiculous and self-destructive. Each transaction has the same resource cost on the network, whether big or small. Miners don't want to collectively consume 4.5 KB of disk space - per miner
- to make sure that a few of them collect a penny for the service of storing and forwarding a 0.5 KB transaction.
If you really want to write a paper on a real weakness of Bitcoin as currently implemented, what you really should pursue is the fact that bitcoin's resource consumption increases exponentially as transaction volume increases linearly, and that it's likely to see a scenario where it bursts in popularity for some reason and then suddenly becomes almost completely unusable (Gnutella style) because it is being crushed under its own weight.
I don't see where there is an exponential increase in resource consumption from a linear increase in volume. Could you elaborate?
In my view, this is the elephant in the room - in comparison, the "miners won't want to relay" problem is like the distant comet that might or might not hit us.
Presently, all nodes must store and forward all transactions. If twenty people start their own Bitcoin blockchain and sell each other some snacks, there will never be a problem.
But if scaled to the US size of Visa in its current form, where you could buy sodapop and candybars from vending machines with Bitcoin, every vending machine in the US would need to hear about any time any other vending machine anywhere in the US sold a snack, and would need a gadzookabyte hard drive to store it all. This would obviously be unsustainable, since I don't know how many snacks are sold every second, but if I needed to download 0.5 KB over my internet connection each time anyone anywhere bought a snack, my internet connection would be useless. The block chain as we know it now is absolutely unusable for wide scale micropayments - it's only usable that way today because there's plenty of as-yet unused room. A four-lane highway with a couple cars per mile, if you will.
I refer to this as exponential growth by considering the total number of terabytes of disk space consumed and the total amount of bandwidth consumed in the aggregate passing all these transactions across all nodes, taking into account a vague assumption that transaction volume is correlated with the number of nodes on the network. That, and the more people that enter the world of Bitcoin and the more potential counterparties they can pay with Bitcoin, the more transactions we will see per participant.
Scaled to Visa proportions, Bitcoin and its blockchain would be useful only the same way Fedwire is useful now - as the backbone that moves large amounts of funds between banks, and which is prohibitive for all but the largest everyday transactions. The market (miners, that is) would price the transaction fee such that it would be senseless to add entries to the blockchain to buy sodapop - sort of like paying $20 to send a wire for a $1 soda.
On the other hand, everyday transactions with Bitcoin would be possible by using smaller private "banks" that internally accounted for all of the transactions amongst each other, and used Bitcoin as backing. These wouldn't be cryptographic transactions, they would just be the same sort of internal transactions like me using PayPal to send part of my PayPal balance to you. Presumably, there could be many such online payment services, with a standardized agreement to push small payments across one another's network and settle up later (the same way competing telcom carriers and long-distance companies handoff phone calls to one another). The blockchain would only become involved when these internal banks needed to settle their aggregated obligations to one another, or in the event of large transactions where it makes sense for the transactor to cover the fee, just like a bankwire today.
I don't believe Bitcoin would need to get to Visa proportions to suddenly encounter its practical transaction volume limits. If it suddenly became the preferred way to pay for online gambling, or to buy services to get around a national firewall, or access to adult material, it could find itself bumping up against that limitation rather quickly.