correct me if I’m wrong)
Happy to help!
Each transaction needs a sender address, receiver address and signature (for authorization)
There are no addresses in the transmitted data.
Each transaction needs a list of unspent transactions
A transaction input is a pointer to one output of an older transaction
sent to the sender address
Addresses are not used as message destinations.
in order for the sender to prove he has enough coins to be able to afford the transaction he wants to send.
No one cares about the total amount of money the sender has. They only check that the money spent is genuine.
In order for the miners to verify the transaction
Everyone verifies transactions. Not just miners
they need to confirm that the unspent transactions are real by looking for them in the blockchain.
Usually nodes look up the inputs in a list of unspent transaction outputs that the node maintains.
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.
So far as I know, Merkle trees are not primarily used to speed up data retrieval of transaction data.
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.
Moving Bitcoin from being cash to being a bank-account is a pretty big conceptual change.
The main problem I see is having each of potentially 8 billion nodes keep track of the balances of 8 billion people. Is my phone more powerful than the computing centres of the worlds largest banks combined?
Currently each node typically keeps track of the total amount of money controlled by only one person. Currently no one needs to know how much money anyone else has. Currently no-one needs to trust miners or any other third party.