why is the blockchain necessary if bitcoins utilize cryptography Mainly I am proposing the idea below because I feel that the blockchain is overkill, but I assume I must be missing something. So if someone could pick out the flaw below, I would greatly appreciate it.



Suppose there is an alternative architecture:

Every user holds a complete ledger, not of all historical transactions, but the current balance of every other user. To send a coin, I would simply send out a message to every node saying who the money is going to and how much. Then using my address (public key), all other nodes can determine if the message actually came from me, and if so alter their copy of the ledger. As a fail safe against double spending, before this alteration takes place, every node would then query other nodes and see if if the majority have received the same message. If two transactions are present, it would enact the earliest timestamped trade (or whoever the majority thinks is first), then accept or reject the later based on balance.
Problems:

1) Sybil attack (this is actually a huge one and has been for decades and decades in all kinds of applications). Other answers already mentioned this too. What is a majority if one attacker can easily pretend to be 10 million nodes?

Bitcoin makes (mining) nodes do Proof of Work and it's the amount of (unfakeable) work done that counts, not the number of (easily fakeable) nodes.

2) Timestamp? There is no such thing as an "earliest timestamped trade". Transactions arrive at different nodes at different times. Do you trust the timestamp that the attached put inside the transaction or do you listen to the majority (see 1).

Note that Bitcoin decides what is "earliest" by constructing a global clock that beats very irregularly, but on average every 10 minutes.

3) Initial download. Where in your system is a brand new node going to get the current ledger? From the majority? (See 1) Bitcoin solves this by keeping the history so as long as you start with the initial genesis block, you'll arrive at the current ledger without having to trust anyone.

4) Keeping balances is actually not more efficient at all if you care anything for the pseudonymous nature of Bitcoin. Every address is supposed to be unique so if you keep a balance for every address it's still going to be big. Sure you can drop zero balances but Bitcoin does that too in the UTXO set. Once validated old blocks don't matter anymore at all. They get archived on disk or even deleted (pruned). So the 50GB of blocks don't matter anymore anyway.