I am currently studying how bitcoin works and the motivations behind the design decisions. I understand that the way transactions are sent works essentially like this (correct me if I'm wrong)
- Each transaction needs a sender address, receiver address and signature (for authorization)
- Each transaction needs a list of unspent transactions sent to the sender address in order for the sender to prove he has enough coins to be able to afford the transaction he wants to send.
- In order for the miners to verify the transaction, they need to confirm that the unspent transactions are real by looking for them in the blockchain. This can be made effective by storing transactions in merkle trees, otherwise it would be very expensive for the miners to find the unspent transactions.
It seems to me that a better way of accomplishing the same task would be for each miner to seperately store a list of all addresses coin-balances which are used to verify that the sender has enough coins to afford the transaction. The balances would have to be updated everytime a new block is mined. This method would make the protocol a lot simpler because transactions wouldn't need to come with a bunch of unspent transactions, and each block wouldn't need to generate or store any merkle trees.
Are there any severe disadvantages to the method I described above? Is there some security risk or would it somehow be very expensive for the miners?