<p><strong>Addresses do not exist at the protocol level</strong>. You'll pay exactly the same fee whether you used the same or different addresses to withdraw. What matters is that there are many outputs you have to spend; whether those are assigned to the same addresses or distinct ones is a human abstraction - for the protocol it makes no difference.</p>
<p>To explain, it's important to see that Bitcoin does not have anything you could call an &quot;account model&quot;. It is more like cash: every transaction gives you one or more coins (or various values) and &quot;uses&quot; previously created coins. These coins are also called UTXOs: unspent transaction outputs.</p>
<p>For example, if you pay me 1 mBTC twice (to the same address, or to different addresses), I will have in my wallet two coins of 1 mBTC each. If I now want to pay someone else 1.5 mBTC, I (or my wallet software, transparently) will construct a transaction that consumes both 1 mBTC outputs/coins/UTXOs, and creates two new ones: one valued 1.5 mBTC assigned to the payee, and perhaps 0.49 mBTC to another output back to myself (usually a fresh address, called a change address), and the remaining 0.01 mBTC is turned into fees.</p>
<p>Why do I mention that addresses don't exist at the protocol level: they are just shorthand notations for locking scripts. Every coin/UTXO/output has an embedded script that defines the conditions under which it can be spent. When a transaction spends multiple outputs, it needs to satisfy the conditions for all of them.</p>
<p>It would be possible to define a protocol improvement that allows spending multiple outputs to the same script at reduced cost, by permitting a single signature that signs for all inputs at once. This hasn't been done for two reasons:</p>
<ul>
<li>Research around Cross-Input Signature Aggregation (CISA) will likely make this sort of benefit available to <em>any</em> inputs, even when they're using different addresses.</li>
<li>It would institute an incentive to adopt privacy-damaging practices.</li>
</ul>

CC BY-SA 4.0
2021-09-02T18:41:13.060Z
2021-09-02T21:10:51.173Z
2021-09-02T21:10:51.173Z
Pieter Wuille
<p>Let's say you withdraw 100 times from an exchange using a different address each time for a total sum of 1 BTC.</p>
<p>Now you want to move this entire BTC to a new address.
This would result in a transaction with 100 inputs.</p>
<p>Wouldn't you pay a way higher fee because the transaction size is higher due having to use 100 different inputs compared to if you just used the same address to receive these 100 withdraws?</p>
<p>Sure, you gain on privacy but if it's not relevant in this case, wouldn't it be better to reuse the same address and save on fees?</p>

<bitcoin-core><transaction-fees><address-reuse>
Would reusing addresses result in a lower fee?
walamagic
# Would reusing addresses result in a lower fee?

(Asked by: username_0 on 2021-09-02)

Let's say you withdraw 100 times from an exchange using a different address each time for a total sum of 1 BTC.

Now you want to move this entire BTC to a new address.
This would result in a transaction with 100 inputs.

Wouldn't you pay a way higher fee because the transaction size is higher due having to use 100 different inputs compared to if you just used the same address to receive these 100 withdraws?

Sure, you gain on privacy but if it's not relevant in this case, wouldn't it be better to reuse the same address and save on fees?

**Tags:** bitcoin-core, transaction-fees, address-reuse


---

## 1 answers

### Answer by username_1 on 2021-09-02. Score: 7

**Addresses do not exist at the protocol level**. You'll pay exactly the same fee whether you used the same or different addresses to withdraw. What matters is that there are many outputs you have to spend; whether those are assigned to the same addresses or distinct ones is a human abstraction - for the protocol it makes no difference.

To explain, it's important to see that Bitcoin does not have anything you could call an "account model". It is more like cash: every transaction gives you one or more coins (or various values) and "uses" previously created coins. These coins are also called UTXOs: unspent transaction outputs.

For example, if you pay me 1 mBTC twice (to the same address, or to different addresses), I will have in my wallet two coins of 1 mBTC each. If I now want to pay someone else 1.5 mBTC, I (or my wallet software, transparently) will construct a transaction that consumes both 1 mBTC outputs/coins/UTXOs, and creates two new ones: one valued 1.5 mBTC assigned to the payee, and perhaps 0.49 mBTC to another output back to myself (usually a fresh address, called a change address), and the remaining 0.01 mBTC is turned into fees.

Why do I mention that addresses don't exist at the protocol level: they are just shorthand notations for locking scripts. Every coin/UTXO/output has an embedded script that defines the conditions under which it can be spent. When a transaction spends multiple outputs, it needs to satisfy the conditions for all of them.

It would be possible to define a protocol improvement that allows spending multiple outputs to the same script at reduced cost, by permitting a single signature that signs for all inputs at once. This hasn't been done for two reasons:

* Research around Cross-Input Signature Aggregation (CISA) will likely make this sort of benefit available to *any* inputs, even when they're using different addresses.
* It would institute an incentive to adopt privacy-damaging practices.


---

