<p>The whole idea of change is a bit hard to grasp when it comes to bitcoin.  With paper currency, its fairly obvious that you need change from a 20 dollar bill if you need to spend only 14 dollars.  </p>

<p>In theory the Bitcoin protocol could have been set up to just send the exact amount as a transaction, but for the blockchain transaction log, I think it was set up like this for neat traceability.  If you didn't have the 'input = output - transaction cost' rule, nodes that verify all the transactions would instead need to calculate/determine the balances of individual addresses to see if they have enough coin to cover the transaction. I guess this would cost more in terms of database querying of the log, harder verification of transactions.. </p>

CC BY-SA 3.0
2013-05-14T17:24:24.343Z
2013-05-14T17:24:24.343Z
bassride
<p><code>147krm8yWUcVq9Ta25h679TCpsEznzgvRz</code> is the change from the transaction. There was more than one output because you didn't have any previous transactions (sometimes thought of as "coins") that added up the exact amount of the transaction. </p>

<p>So your client picked some coins that added up to at least that amount and then created a new address to receive the leftover amount. So, <code>147krm8yWUcVq9Ta25h679TCpsEznzgvRz</code> is you. You just don't know it because the client isn't good at disclosing that you. Essentially you wanted to send 22 cents, but only had dollar bills in your wallet. So the 0.78 was the leftover amount and the client created a new address to hold it rather than reusing <code>1JFWE8THcAQQRYx99c43DXSGyoPL9Zs62D</code>.</p>

<p>It seems that this behavior of the Qt client (silently creating new addresses that receive the change from transactions) was created for privacy reasons. I believe the thinking was, why send the change back to the original address when a new address could easily be created? In that way, it's not even obvious whether your transaction was a payment of 0.78 BTC with a change of 0.22, or a payment of 0.22 BTC with a change of 0.78 BTC. But it seems to be causing a lot of confusion for users, based on what I see on this stack exchange. In my opinion, it might be better if the default client sent the change back to the sending address. Or if, at least, it showed that change address and its balance somewhere.</p>

<p>Some other wallets do let you manually select which address should receive the change from a transaction. </p>

CC BY-SA 3.0
2013-05-14T18:27:21.237Z
If the client would send the change back to your own address, you would only have one address. That way, everyone would be able to see your wallets balance, that's not what we want, right?
Steven Roose
CC BY-SA 3.0
2013-05-14T19:30:25.270Z
That not the ideal situation. But I prefer it over the default, where the user doesn't even know where his own balances are. My actual preference is something like the blockchain.info web wallet: it let's you choose where to send the change. Including a choice for originating address or new address. But, most importantly, showing you all of the addresses that you have. The real pain comes from the fact that the default client doesn't even let you know about the existence of the change addresses without using the command line.
David Ogren
CC BY-SA 3.0
2013-05-14T19:35:26.857Z
on that I'm with you. But keep in mind that Bitcoin-Qt is a very basic client and is designed for simplicity. Most users do not know what change is and why they would make new addresses for it. But indeed, they should know they have new addresses, as otherwise they will lose them if they are made after their last `wallet.dat` backup.
Consider using Armory when you want more options on sending transactions.
Steven Roose
CC BY-SA 3.0
2013-05-14T19:43:29.257Z
I hate to make this a threaded discussion about client behavior, but I think that being "simple" means hiding complexity is a way that makes users lives easier. This is hiding complexity poorly, in a way that makes using the client harder and more dangerous. Personally, I can get by with the standard client, because I understand the command line, but I wouldn't recommend the standard client to beginners. FWIW, I find that Armory is completely unstable on the Mac. It crashed constantly for me. (Although it's been a few weeks since I tried last.)
David Ogren
CC BY-SA 3.0
2013-05-14T19:48:18.510Z
Armory's Mac support is very new, yes. And besides, the main developer of Armory is completely rewriting the core codebase of the client to allow for greater stability. Regarding your remarks about the Bitcoin-Qt client, you should report your issues to the Bitcoin developers on [GitHub](https://github.com/bitcoin/bitcoin/issues), hopefully some of them will understand that they make great sense.
Steven Roose
CC BY-SA 3.0
2013-12-06T02:46:04.750Z
@DavidOgren, Does the bitcoin protocol allow more than one change address?
Pacerier
CC BY-SA 4.0
2018-07-05T11:48:12.663Z
if you export your wallet, then do a transaction, your exported wallet doesn't contain the new address that was created to get the change right? So you need to export your wallet every time you do a tx? That sounds like an issue
David 天宇 Wong
CC BY-SA 3.0
2013-04-03T01:18:23.920Z
2013-12-07T12:19:50.713Z
2013-12-07T12:19:50.713Z
David Ogren
<p>I did a small transaction some days ago:</p>

<p><a href="https://www.blockchain.com/btc/tx/4c07a07dfd9d5b79d168ec6835df876c64e82350a8f9211bf586d858a5aeb9ba" rel="nofollow noreferrer">https://www.blockchain.com/btc/tx/4c07a07dfd9d5b79d168ec6835df876c64e82350a8f9211bf586d858a5aeb9ba</a></p>

<p>Some info:</p>

<ul>
<li><code>1JFWE8THcAQQRYx99c43DXSGyoPL9Zs62D</code> is my wallet</li>
<li><code>1PCGNxgheKTaeT6xvTabcY8ZbS3gDpFtb</code> is the wallet I sent 0.22 BTC</li>
</ul>

<p>Questions:</p>

<ul>
<li>Who is <code>147krm8yWUcVq9Ta25h679TCpsEznzgvRz</code>?</li>
<li>Why there is more than one output?</li>
</ul>

CC BY-SA 4.0
2019-10-28T09:50:19.503Z
Possible duplicate of [How does change work in a bitcoin transaction?](https://bitcoin.stackexchange.com/questions/736/how-does-change-work-in-a-bitcoin-transaction)
Raghav Sood
<transactions><change>
Why are there two transaction outputs when sending to one address?
Macarse
# Why are there two transaction outputs when sending to one address?

(Asked by: username_0 on 2013-04-02)

I did a small transaction some days ago:

<https://www.blockchain.com/btc/tx/4c07a07dfd9d5b79d168ec6835df876c64e82350a8f9211bf586d858a5aeb9ba>

Some info:

* `1JFWE8THcAQQRYx99c43DXSGyoPL9Zs62D` is my wallet
* `1PCGNxgheKTaeT6xvTabcY8ZbS3gDpFtb` is the wallet I sent 0.22 BTC

Questions:

* Who is `147krm8yWUcVq9Ta25h679TCpsEznzgvRz`?
* Why there is more than one output?

**Tags:** transactions, change

> **Comments:**
> **username_1**: Possible duplicate of [How does change work in a bitcoin transaction?](https://bitcoin.stackexchange.com/questions/736/how-does-change-work-in-a-bitcoin-transaction)  

---

## 2 answers

### Answer by username_3 on 2013-04-03. Score: 35 | Accepted answer

`147krm8yWUcVq9Ta25h679TCpsEznzgvRz` is the change from the transaction. There was more than one output because you didn't have any previous transactions (sometimes thought of as "coins") that added up the exact amount of the transaction.

So your client picked some coins that added up to at least that amount and then created a new address to receive the leftover amount. So, `147krm8yWUcVq9Ta25h679TCpsEznzgvRz` is you. You just don't know it because the client isn't good at disclosing that you. Essentially you wanted to send 22 cents, but only had dollar bills in your wallet. So the 0.78 was the leftover amount and the client created a new address to hold it rather than reusing `1JFWE8THcAQQRYx99c43DXSGyoPL9Zs62D`.

It seems that this behavior of the Qt client (silently creating new addresses that receive the change from transactions) was created for privacy reasons. I believe the thinking was, why send the change back to the original address when a new address could easily be created? In that way, it's not even obvious whether your transaction was a payment of 0.78 BTC with a change of 0.22, or a payment of 0.22 BTC with a change of 0.78 BTC. But it seems to be causing a lot of confusion for users, based on what I see on this stack exchange. In my opinion, it might be better if the default client sent the change back to the sending address. Or if, at least, it showed that change address and its balance somewhere.

Some other wallets do let you manually select which address should receive the change from a transaction.

> **Comments:**
> **username_4**: If the client would send the change back to your own address, you would only have one address. That way, everyone would be able to see your wallets balance, that's not what we want, right?  
> **username_3**: That not the ideal situation. But I prefer it over the default, where the user doesn't even know where his own balances are. My actual preference is something like the blockchain.info web wallet: it let's you choose where to send the change. Including a choice for originating address or new address. But, most importantly, showing you all of the addresses that you have. The real pain comes from the fact that the default client doesn't even let you know about the existence of the change addresses without using the command line.  
> **username_4**: on that I'm with you. But keep in mind that Bitcoin-Qt is a very basic client and is designed for simplicity. Most users do not know what change is and why they would make new addresses for it. But indeed, they should know they have new addresses, as otherwise they will lose them if they are made after their last `wallet.dat` backup. Consider using Armory when you want more options on sending transactions.  
> **username_3**: I hate to make this a threaded discussion about client behavior, but I think that being "simple" means hiding complexity is a way that makes users lives easier. This is hiding complexity poorly, in a way that makes using the client harder and more dangerous. Personally, I can get by with the standard client, because I understand the command line, but I wouldn't recommend the standard client to beginners. FWIW, I find that Armory is completely unstable on the Mac. It crashed constantly for me. (Although it's been a few weeks since I tried last.)  
> **username_4**: Armory's Mac support is very new, yes. And besides, the main developer of Armory is completely rewriting the core codebase of the client to allow for greater stability. Regarding your remarks about the Bitcoin-Qt client, you should report your issues to the Bitcoin developers on [GitHub](https://github.com/bitcoin/bitcoin/issues), hopefully some of them will understand that they make great sense.  
> **username_5**: @username_3, Does the bitcoin protocol allow more than one change address?  
> **username_6**: if you export your wallet, then do a transaction, your exported wallet doesn't contain the new address that was created to get the change right? So you need to export your wallet every time you do a tx? That sounds like an issue  

---

### Answer by username_2 on 2013-05-14. Score: 2

The whole idea of change is a bit hard to grasp when it comes to bitcoin. With paper currency, its fairly obvious that you need change from a 20 dollar bill if you need to spend only 14 dollars.

In theory the Bitcoin protocol could have been set up to just send the exact amount as a transaction, but for the blockchain transaction log, I think it was set up like this for neat traceability. If you didn't have the 'input = output - transaction cost' rule, nodes that verify all the transactions would instead need to calculate/determine the balances of individual addresses to see if they have enough coin to cover the transaction. I guess this would cost more in terms of database querying of the log, harder verification of transactions..


---

