0

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)

  1. Each transaction needs a sender address, receiver address and signature (for authorization)
  2. 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.
  3. 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?

1 Answers1

0

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.

RedGrittyBrick
  • 26,841
  • 3
  • 25
  • 51
  • I think you nitpicked my description of how transaction are sent unecessarily, the addresses come in form of in- and out transactions. I think I described how it ESSENTIALLY works quite well. I also don't think the fact that the nodes would have to store a lot of balances would be a problem since they already store the entire blockchain which would be reduced by the fact that transactions are smaller. – Håkan Troberg Dec 04 '22 at 12:14
  • The main problem with my idea I think is that it would need some gritty checks to make sure that transactions aren't spent twice in two different blocks. Not impossible, but maybe not as efficient as the current system. Didn't think about that while asking the question. – Håkan Troberg Dec 04 '22 at 12:15