Why don't we just use balances? The nodes would verify that balance > 0 before validating the transaction.
1 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.
-
3Another 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. Commented Aug 21, 2015 at 14:35
-
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. Commented Feb 28, 2019 at 16:20