Another beginner question.
Is there a wiki article somewhere discussing how the bitcoin system is going to scale to a large economy? I have seen the stuff about coins being divisible so it can be used for any volume of traffic, but what about the blocks?
Currently each client has to collect signed blocks of transactions that are distributed across the network. These blocks contain every transaction made by every user. I understand that like bittorrent a large amount of data can be sent to every user, but ever user seeing every transaction isn't going to scale. Moreover, if you are in generating-mode your client needs to receive all pending transactions to see if they can be combined to create a new block. (I assume the pending transactions are not sent to clients that are not generating blocks.) That is twice the volume and is fragmented into many different pieces. What is the plan for this to scale?
This is actually not required, and not all clients, generating or not, always see every transaction. Mostly because this
isn't a requirement, Bitcoin can scale very well. The target block interval was chosen as a balance between future network latency and timeliness of confirmations. The amount of data that a given client sees is partly related to the number of connections that it maintains, as the same transactions can be sent to a given client from multiple peers. But a full client doesn't
need more than two or three trusted peers, just to be able to verify that the blocks that it receives from a single source aren't fake. A light client needs only one trusted connection, and may be able to do without the blockchain at all. Clients not in the business of generating don't need transaction traffic, and light clients wouldn't see much traffic not their own. Granted, the blocksize could grow very large when the number of transactions it is recording is in the 100's of thousands, but by that time the business of block generation would likely be confined to the computing resources of major financial institutions which have a deep vested interest in blockchain security.
My plan: (only half baked)
Here is now I would do it. Really a client only needs to examine transactions that might potentially be directed to itself so it really doesn't need to track all transactions, just the subset of transactions that could contain the client's address. (Multiple addresses are considered later) So we allow the block chain to fragment to different regions depending on the hash of the recipient of the transactions. This done in a decentralized fashion just like the current target stuff is handled. Every N blocks the transaction volume is examined and if the volume exceeds some threshold then the block chain is split into two by the hash. Then we have two parallel block chains depending on the receivers hash. Then clients only need to be tracking those blocks that can potentially contain transactions for itself. A client may also be tracking multiple chains, but only generating blocks on one chain so the detailed transactions are only needed in that region.
Division of the blockchain seems to come up regularly, but it won't work. There is no way to maintain the security of the blockchain if there is any way to permit more than one concurrent blockchain. There is no way around this without breaking the system as it is, and without losing the autonomy of cash-like currency.
This does mean that ideally when a client creates multiple addresses it should be able to make them all cluster around the same region of the hash so only a faction of the total block chains need to be tracked.
Introducing a bias into the encryption is also unwise, for entirely differnet reasons.