I’ve been thinking about the benefits or drawbacks of users connecting directly to miners.
Casascius Instant Partial Confirmation proposes a method where users can locate miners by addresses published on blocks.
These addresses could be normal IP, Tor addresses or whatever system each miner chooses to be located.
Currently the P2P network serves two purposes:
1. Send transactions from users to miners
2. Send blocks from miners to users.
These two transports are coupled together now but this may not be the best idea. One can imagine that users could connect directly to miners to send the transactions and the P2P network is only used to broadcasts blocks. Users willing to send a tx would choose a random sample of K miners of the last X blocks, possibly weighed by network hash power percentage. Then send the tx only to those miners.
The benefits/drawbacks would be:
– PRO. Less than half the network bandwidth usage (also users never see txs that never got into a block because of low fees)
– PRO. Less than half the CPU usage in clients (not true on v0.6.3+)
– PRO. P2P network less susceptible to DoS by spamming.
– PRO. Less memory usage for client application (no need for Tx cache, Sig chache, Orphan Tx cache, etc.)
– PRO. Huge simplification in client application
– CON. No 0-confirmations for transactions (at least not in the way it’s done today)
– CON. Miners have to find there own methods to prevent DoS attacks to their servers.
– CON. Miners are less anonymous (but they are not completely anonymous in Bitcoin anyway)
– CON. New miners must publish empty blocks until they are known by the network.
– CON. Users are less anonymous since miners can see the IP of users from where transactions are coming. This can be solved by users using Tor.
Migrating from the current system gradually would be very easy by:
– adding the possibility to connect directly to miners
– reducing the incentive of users to broadcast the tx using the P2P network by reducing the bandwidth available for tx exchange.
What do you think?