Is the Bitcoin's copy of the block chain completely necessary? Couldn't we just store the current balances of all addresses, without keeping logs of their transactions as well?
4 Answers
Yes this is called an SPV client. See this question here for detailed explanation of how SPV works. There are several of these today, most mobile wallets and the multibit wallet use SPV technology.
It's entirely possible for a node to store only the balances (Actually the UTXO, but it's conceptually similar). This is called blockchain pruning, and IIRC has been on the wishlist for a while.
The biggest problem is that to bootstrap a full node, it can't just take your word for what the set of balances should be, it needs proof. That proof is the full blockchain.
So even if 99% of nodes switch over to keeping pruned versions of the blockchain, we'll need a few that archive everything, so new full nodes can convince themselves of the correctness of the balances.
No, you can't. When a transaction refers to an unspent output, it refers to it by transaction ID and output number, not by address. So knowing that a particular address has a particular balance is not what you need to validate transactions. If you can't validate transactions, you can't validate blocks. If you can't validate blocks, you can't really do much of anything except trust some other server to do the real work for you.
Ripple implements accounts with balances instead of unspent outputs precisely to avoid this.
To answer your question completely:
- It is possible to implement a Bitcoin client without the whole blockchain. In fact, many exist, including Electrum, MultiBit, Mycelium, etc.
- However, it is not possible to implement the entire Bitcoin network without a full blockchain, unless you want to create a fundamentally new technology. Bitcoin thrives on the blockchain; it is what allows it to maintain a decentralized ledger. If no one kept track of transactions before block 200,000, you'd have to trust that whoever is maintaining the balances at that block 200,000 isn't making up numbers.