<p>Outputs neatly solve a few problems you would encounter with a balance based system. </p>

<ul>
<li><p>Transactions using outputs can not be replayed cross network, multiple times, or in different situations than when they were created. In an address based system you must keep a nonce or a record of all past transactions to ensure multiple executions of one transaction does not occur. You don't have the option of re-signing a transaction with a higher miners fee, because the transactions are not atomic and can both exist in the chain at once.</p>

<ul>
<li><p>Transactions using outputs can be deployed even years after they have been signed, which is incompatible with an incremented nonce. </p></li>
<li><p>An output based system can forget about an output once it is spent, a nonce based system must keep track of all nonces forever. </p></li>
</ul></li>
<li><p>Verifying that an output exists in a block is trivial by displaying the merkle path to it, and showing the block header is part of the main chain. In an address based system this is substantially harder to prove, if not impossible given the same constraints. </p></li>
</ul>

CC BY-SA 3.0
2015-08-21T14:35:25.610Z
Another one: a balance-based system would give an efficiency benefit to account reuse. In general, you don't want a system that encourages bad privacy.
Pieter Wuille
CC BY-SA 4.0
2019-02-28T16:20:51.400Z
Right, but all of those problems are easily solved in a balance-based system and using outputs creates a bunch of problems (also easily solved) that balance-based systems don't have. So while this is all true, it's not a reason to prefer an output-based system over a balance-based system.
David Schwartz
CC BY-SA 3.0
2015-08-21T03:54:19.070Z
2015-08-21T03:54:19.070Z
Claris
<p>Why don't we just use balances? The nodes would verify that balance > 0 before validating the transaction.</p>

CC BY-SA 3.0
2018-04-26T11:49:53.030Z
I guess SPV is one reason to do so. I'm not 100% sure but I read that some projects use UTXO to be able to have light-clients on low-performance hardware. WHen this is true Ethereum might have a hard time to gain adoption on mobile devices.
Ini
<transactions><utxo>
Why does Bitcoin use the input/output system?
bitwonder
# Why does Bitcoin use the input/output system?

(Asked by: username_0 on 2015-08-20)

Why don't we just use balances? The nodes would verify that balance > 0 before validating the transaction.

**Tags:** transactions, utxo

> **Comments:**
> **username_1**: I guess SPV is one reason to do so. I'm not 100% sure but I read that some projects use UTXO to be able to have light-clients on low-performance hardware. WHen this is true Ethereum might have a hard time to gain adoption on mobile devices.  

---

## 1 answers

### Answer by username_2 on 2015-08-21. Score: 2 | Accepted answer

Outputs neatly solve a few problems you would encounter with a balance based system.

* Transactions using outputs can not be replayed cross network, multiple times, or in different situations than when they were created. In an address based system you must keep a nonce or a record of all past transactions to ensure multiple executions of one transaction does not occur. You don't have the option of re-signing a transaction with a higher miners fee, because the transactions are not atomic and can both exist in the chain at once.

  + Transactions using outputs can be deployed even years after they have been signed, which is incompatible with an incremented nonce.
  + An output based system can forget about an output once it is spent, a nonce based system must keep track of all nonces forever.
* Verifying that an output exists in a block is trivial by displaying the merkle path to it, and showing the block header is part of the main chain. In an address based system this is substantially harder to prove, if not impossible given the same constraints.

> **Comments:**
> **username_3**: Another one: a balance-based system would give an efficiency benefit to account reuse. In general, you don't want a system that encourages bad privacy.  
> **username_4**: Right, but all of those problems are easily solved in a balance-based system and using outputs creates a bunch of problems (also easily solved) that balance-based systems don't have. So while this is all true, it's not a reason to prefer an output-based system over a balance-based system.  

---

