<p>On some blockchains, they are. They just don't work that way on the bitcoin blockchain. There are advantages to the way bitcoin does it. What if you want to send bitcoins to more than one destination or from more than one source?</p>

<p>Also, bitcoin's scheme is much simpler. Either a particular transaction output exists and is unspent or it isn't. A balance is the end result of a very large number of transactions and much more complex to verify.</p>

CC BY-SA 3.0
2017-11-27T02:39:27.370Z
Not only that, an accounts based system is vulnerable to transaction replay. Suppose you were to send me money in a transaction. What prevents me from waiting until your balance is high enough and rebroadcasting that transaction?
Ava Chow
CC BY-SA 3.0
2017-11-27T02:40:46.923Z
@AndrewChow That's not particularly difficult to solve. Ripple does it by requiring that transactions include a sequence number that must match the account's sequence number. During the transaction execution, the account's sequence number is incremented, forever invalidating the transaction. (Ripple also supports binding the transaction to a "ticket" that can only exist once and which is destroyed when the transaction succeeds.) If an account can have a balance, it can just as easily have a sequence number.
David Schwartz
CC BY-SA 3.0
2017-11-27T06:43:14.420Z
You have to store the sequence numbers forever though.
Claris
CC BY-SA 3.0
2017-11-27T02:34:48.447Z
2017-11-27T02:34:48.447Z
David Schwartz
<p>Wouldn't it save lots of block space and reduce transaction fees? It seems to me the current method wastes lots of space. I wasn't able to find a technical reason for the current method</p>

CC BY-SA 3.0
2017-11-27T04:56:34.513Z
Bitcoin transactions basically are just "from, to, amount" - "from" are the inputs, "to, amount" are the outputs. What specific difference are you suggesting?
meshcollider
<blockchain>
why aren't transactions on the blockchain stored like "from, to, amount"?
user1781498
# why aren't transactions on the blockchain stored like "from, to, amount"?

(Asked by: username_0 on 2017-11-27)

Wouldn't it save lots of block space and reduce transaction fees? It seems to me the current method wastes lots of space. I wasn't able to find a technical reason for the current method

**Tags:** blockchain

> **Comments:**
> **username_1**: Bitcoin transactions basically are just "from, to, amount" - "from" are the inputs, "to, amount" are the outputs. What specific difference are you suggesting?  

---

## 1 answers

### Answer by username_2 on 2017-11-27. Score: 1 | Accepted answer

On some blockchains, they are. They just don't work that way on the bitcoin blockchain. There are advantages to the way bitcoin does it. What if you want to send bitcoins to more than one destination or from more than one source?

Also, bitcoin's scheme is much simpler. Either a particular transaction output exists and is unspent or it isn't. A balance is the end result of a very large number of transactions and much more complex to verify.

> **Comments:**
> **username_3**: Not only that, an accounts based system is vulnerable to transaction replay. Suppose you were to send me money in a transaction. What prevents me from waiting until your balance is high enough and rebroadcasting that transaction?  
> **username_2**: @AndrewChow That's not particularly difficult to solve. Ripple does it by requiring that transactions include a sequence number that must match the account's sequence number. During the transaction execution, the account's sequence number is incremented, forever invalidating the transaction. (Ripple also supports binding the transaction to a "ticket" that can only exist once and which is destroyed when the transaction succeeds.) If an account can have a balance, it can just as easily have a sequence number.  
> **username_4**: You have to store the sequence numbers forever though.  

---

