<p>First, blockchain space is at a premium, since every node has to store the whole thing forever.  So in general it is better not to store redundant information in the block chain, and to let each node compute it instead.</p>

<p>Second, the "balance" in an address can be affected by multiple transactions which are not necessarily ordered with respect to one another.  Suppose that address 123abc initially has no incoming transactions, so its balance is 0.  Now suppose that Alice decides to send 1 BTC to that address.  So by your logic, her transaction should show the "final balance" of the address as 1 BTC.  Simultaneously, and with no knowledge of what Alice is doing, Bob sends 2 BTC to that address, and so naturally his transaction shows the final balance as 2 BTC.  But the "true" final balance is 3 BTC, so both of their statements as to the final balance are wrong.  So anyone who wants to know the true final balance has to calculate it themselves anyway, and can't rely on the numbers in the transaction.</p>

<p>To make this work at all, you would need some sort of rule that you can't send more coins to an address until the previous transaction has some number of confirmations.  This would be completely impractical for addresses which are supposed to receive lots of incoming transactions (think of a donation address on a popular website).   It would also mean that an attacker who knows your address could prevent you from receiving an important transaction by sending you lots of tiny transactions which would have to confirm one by one.</p>

CC BY-SA 3.0
2017-09-18T21:38:57.417Z
Don't forget that this would break the pseudo-anonymity that bitcoin offers.  You would have to re-use addresses for that address to have a running balance.  Alternatively, the blockchain could keep track of which addresses belong to which wallet in order to maintain a balance, but again...this breaks anonymity.
Jestin
CC BY-SA 3.0
2017-09-18T21:24:40.937Z
2017-09-18T21:24:40.937Z
Nate Eldredge
<p>As far as I know, you need to travel back through the entire blockchain to verify your balance. Surely adding the balances of the sender and receiver to each transaction would be easier? If balances are included, and after 6 blocks a transaction is considered 'final', why then can we not just go back 6 blocks and look at the balance there for verification, instead of travelling all the way back to the genesis block?  </p>

<transactions><balance><genesis-block>
Why aren't balances appended to transactions?
Steve
# Why aren't balances appended to transactions?

(Asked by: username_0 on 2017-09-18)

As far as I know, you need to travel back through the entire blockchain to verify your balance. Surely adding the balances of the sender and receiver to each transaction would be easier? If balances are included, and after 6 blocks a transaction is considered 'final', why then can we not just go back 6 blocks and look at the balance there for verification, instead of travelling all the way back to the genesis block?

**Tags:** transactions, balance, genesis-block


---

## 1 answers

### Answer by username_1 on 2017-09-18. Score: 1

First, blockchain space is at a premium, since every node has to store the whole thing forever. So in general it is better not to store redundant information in the block chain, and to let each node compute it instead.

Second, the "balance" in an address can be affected by multiple transactions which are not necessarily ordered with respect to one another. Suppose that address 123abc initially has no incoming transactions, so its balance is 0. Now suppose that Alice decides to send 1 BTC to that address. So by your logic, her transaction should show the "final balance" of the address as 1 BTC. Simultaneously, and with no knowledge of what Alice is doing, Bob sends 2 BTC to that address, and so naturally his transaction shows the final balance as 2 BTC. But the "true" final balance is 3 BTC, so both of their statements as to the final balance are wrong. So anyone who wants to know the true final balance has to calculate it themselves anyway, and can't rely on the numbers in the transaction.

To make this work at all, you would need some sort of rule that you can't send more coins to an address until the previous transaction has some number of confirmations. This would be completely impractical for addresses which are supposed to receive lots of incoming transactions (think of a donation address on a popular website). It would also mean that an attacker who knows your address could prevent you from receiving an important transaction by sending you lots of tiny transactions which would have to confirm one by one.

> **Comments:**
> **username_2**: Don't forget that this would break the pseudo-anonymity that bitcoin offers.  You would have to re-use addresses for that address to have a running balance.  Alternatively, the blockchain could keep track of which addresses belong to which wallet in order to maintain a balance, but again...this breaks anonymity.  

---

