<p>No, it is not possible to determine <em>definitively</em> if two addresses are in the same wallet. The protocol does not have the concept of the wallet. The wallet is a concept within the client. </p>

<p>That is to say, that the client presents the concept of a wallet as a collection of addresses. The only relation between addresses that the protocol knows about is senders and receivers, or, really, inputs and outputs. </p>

<p>It may be possible through a thorough analysis of taint to determine within a reasonable amount of certainty that several addresses are related to each other in a wallet.</p>

CC BY-SA 3.0
2013-02-04T05:18:19.110Z
2013-02-04T12:22:19.247Z
2013-02-04T12:22:19.247Z
Colin Dean
<p>There is no way to prove in the protocol that two address belong in the same wallet when you send from address A to address B in your wallet. Of course, if you are using some kind of online wallet they do know, but I'm assuming you are using a full one.</p>

<p>However, there can be clues that combined can be quite definitive.</p>

<p><strong>1. Clues when you send the transaction</strong></p>

<p>However, depending on the amount in address A, sending all funds to B with no change could be a clue that both belong to the same person. This is not a problem if you are sending a round amount like 1 BTC, but if you are sending 0.82421871 BTC and there is no change it is weird unless you are sending all your funds to donate or pay for something without a fixed price. It is the same if you send from A a round amount to another address and B gets a very weird amount.</p>

<p><strong>2. Clues after the original transaction</strong></p>

<ul>
<li>Spending from both addresses in the same transaction. This is no proof because there are ways to build a transaction with inputs from two wallets, but it is extremely rare.</li>
<li>Sending funds between the two addresses frequently, specially if you do it both ways (from A to B and from B to A). This could happen with two parties that work a lot together, but it is a clue of some relation.</li>
<li>Sending from both addresses at the same time, even if it is to different addresses (you send two transactions, one from A and another from B, that get to the same block long after you did the original one). It can be a coincidence, but it is one more signal.</li>
</ul>

<p><strong>3. IP address clue</strong></p>

<p>This is extremely unlikely, but if you connect to a rogue node that records your IP address when you send from A to B and then you connect to that same rogue node (or another one acting in coordination) when you send from B to somewhere else, it would have the same IP address associated to both addresses. You could avoid this by using Tor or changing your IP address in some other way.</p>

CC BY-SA 3.0
2016-05-06T15:22:50.803Z
2016-05-06T15:22:50.803Z
Fernando Gutierrez
<p>It depends.  Bitcoin is traceable but pseudonymous.</p>

<p>So there would be a path from your first address to your second address.  There's no way to prove that the second address is in your wallet at that point.  But when you spend from that second address, any party that knows the second address is yours would know that the second address came from funds from the first address.</p>

<p>In other words, simply moving funds from one address to another address is not an effective measure for protecting your privacy regarding your financial transactions.</p>

CC BY-SA 3.0
2013-02-04T03:53:41.377Z
2013-02-04T03:53:41.377Z
Stephen Gornick
<p>If you had the xpub you could see all the addresses derived from a particular seed, and as such determine if two addresses are linked in the manner you described. However it's extremely rare that any entity other than the actual wallet (in some cases) would be able to see this &quot;extended public key&quot; as it is very much a bit of private data.</p>

CC BY-SA 4.0
2022-09-28T19:00:22.037Z
2022-09-28T19:00:22.037Z
AmishNick
<p>Each address (corresponding to a public key) in your wallet has a corresponding private key. All private keys in the wallet are generated based on a single seed / passphrase. This why you are able to reconstitute your wallet on a new clean device. So a &quot;wallet&quot; is not strictly a client-side concept. Anyone with the phassphrase + pwd basically has access to all your private keys. Since nobody except the owners know about the passphrase there is no way for someone to mathematically prove that two addresses came out of the same wallet.</p>
<p>However, like others have mentioned, I/O and UTXO can provide some clues about the association between two addresses.</p>

CC BY-SA 4.0
2022-10-01T16:59:12.120Z
an public key is an public key and an address is an address
Mercedes
CC BY-SA 4.0
2022-10-03T18:06:00.683Z
@Mercedes they are essentially the same thing where the address is a short and convenient version of the public key. simply address = RIPEMD160 (SHA256(PK))
Fakeer
CC BY-SA 4.0
2022-09-27T20:16:15.307Z
2022-10-03T18:07:26.630Z
2022-10-03T18:07:26.630Z
Fakeer
<p>If you compare two addresses, it is <strong>impossible</strong> to determine if they were derived from the same public key.</p>

CC BY-SA 4.0
2022-09-29T03:17:51.297Z
2022-09-29T03:17:51.297Z
luisschwab
<p>It is possible to tell that two addresses are in the same wallet if they both appear as an input of a transaction. This indicates that one person owns both of them as they can spend both of them.</p>

<p>It is also quite likely that when you are sending a transaction that has one neat input (say, 1BTC), and one not so neat (say, 0.59721364BTC), that the latter is most likely a change left over from a transaction you sent to someone and is being sent to another address you own from the same wallet. This claim could be possibly deniable, but should be true in most cases.</p>

CC BY-SA 3.0
2015-01-09T14:58:21.350Z
Shouldn't it be "neat **out**put" instead of "neat input"?
Murch
CC BY-SA 3.0
2013-02-04T10:55:55.873Z
Re first paragraph: Having both addresses as inputs of a transaction is evidence, but not definite proof, that they are owned by the same person. There are many use cases when different people may want to each supply an input.
Meni Rosenfeld
CC BY-SA 3.0
2013-02-04T10:59:25.040Z
@MeniRosenfeld Well, I personally can't think of many. Same thing could be achieved by multisig addresses and just sending the person the money from a transaction you want to spend together.
ThePiachu
CC BY-SA 3.0
2013-02-04T11:27:34.507Z
No. Once you send to the multisig address you're at the mercy of the other party. The whole point with multi-input is to make atomic swaps where neither party can deny the other - e.g., mixing transactions and swapping colored coins.
Meni Rosenfeld
CC BY-SA 3.0
2013-02-04T13:38:35.797Z
@MeniRosenfeld They could use 2-out-of-2 multisig address. But I get your point.
ThePiachu
CC BY-SA 3.0
2013-02-04T13:57:08.267Z
I'm not sure you do. To use a 2-of-2 multisig address they'd first need to send to this address. Once coins are in the multisig address, if the other party loses their key, you lose the coins. The other party can also extort you taking the coins hostage.
Meni Rosenfeld
CC BY-SA 3.0
2013-02-04T06:05:13.503Z
2013-02-04T06:05:13.503Z
ThePiachu
<p>I'm wondering, if I sent some bitcoins from one of my own addresses to another address in my wallet, will it be possible for someone to figure out that both addresses are in the same wallet? Or can I claim the other address is not my own and no one can find out?</p>

CC BY-SA 3.0
2013-02-04T03:40:35.173Z
possible duplicate of [How anonymous are Bitcoin transactions?](http://bitcoin.stackexchange.com/questions/52/how-anonymous-are-bitcoin-transactions)
Stephen Gornick
CC BY-SA 3.0
2013-02-08T05:48:49.680Z
I noticed that there is nothing on that page about figuring out that certain addresses are in the same wallet, despite the fact that there has been specific research on that topic.  Perhaps this question could be rephrased to more specifically address that topic?  Or if we want it all to go on that other one, maybe someone (KoKo or anyone else) could start a bounty on that question for an answer detailing this point.  Personally I favour rephrasing this question since it is an important topic and really much more specific than "how anonymous are transactions".  Any feedback on this KoKo?
eMansipater
<wallet><address><traceability>
Is it possible to figure out whether two addresses are in the same wallet?
KoKo
# Is it possible to figure out whether two addresses are in the same wallet?

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

I'm wondering, if I sent some bitcoins from one of my own addresses to another address in my wallet, will it be possible for someone to figure out that both addresses are in the same wallet? Or can I claim the other address is not my own and no one can find out?

**Tags:** wallet, address, traceability

> **Comments:**
> **username_1**: possible duplicate of [How anonymous are Bitcoin transactions?](http://bitcoin.stackexchange.com/questions/52/how-anonymous-are-bitcoin-transactions)  
> **username_2**: I noticed that there is nothing on that page about figuring out that certain addresses are in the same wallet, despite the fact that there has been specific research on that topic.  Perhaps this question could be rephrased to more specifically address that topic?  Or if we want it all to go on that other one, maybe someone (username_0 or anyone else) could start a bounty on that question for an answer detailing this point.  Personally I favour rephrasing this question since it is an important topic and really much more specific than "how anonymous are transactions".  Any feedback on this username_0?  

---

## 7 answers

### Answer by username_9 on 2013-02-04. Score: 15 | Accepted answer

It is possible to tell that two addresses are in the same wallet if they both appear as an input of a transaction. This indicates that one person owns both of them as they can spend both of them.

It is also quite likely that when you are sending a transaction that has one neat input (say, 1BTC), and one not so neat (say, 0.59721364BTC), that the latter is most likely a change left over from a transaction you sent to someone and is being sent to another address you own from the same wallet. This claim could be possibly deniable, but should be true in most cases.

> **Comments:**
> **username_11**: Re first paragraph: Having both addresses as inputs of a transaction is evidence, but not definite proof, that they are owned by the same person. There are many use cases when different people may want to each supply an input.  
> **username_9**: @username_11 Well, I personally can't think of many. Same thing could be achieved by multisig addresses and just sending the person the money from a transaction you want to spend together.  
> **username_11**: No. Once you send to the multisig address you're at the mercy of the other party. The whole point with multi-input is to make atomic swaps where neither party can deny the other - e.g., mixing transactions and swapping colored coins.  
> **username_9**: @username_11 They could use 2-out-of-2 multisig address. But I get your point.  
> **username_11**: I'm not sure you do. To use a 2-of-2 multisig address they'd first need to send to this address. Once coins are in the multisig address, if the other party loses their key, you lose the coins. The other party can also extort you taking the coins hostage.  
> **username_10**: Shouldn't it be "neat **out**put" instead of "neat input"?  

---

### Answer by username_3 on 2013-02-04. Score: 8

No, it is not possible to determine *definitively* if two addresses are in the same wallet. The protocol does not have the concept of the wallet. The wallet is a concept within the client.

That is to say, that the client presents the concept of a wallet as a collection of addresses. The only relation between addresses that the protocol knows about is senders and receivers, or, really, inputs and outputs.

It may be possible through a thorough analysis of taint to determine within a reasonable amount of certainty that several addresses are related to each other in a wallet.


---

### Answer by username_4 on 2016-05-06. Score: 4

There is no way to prove in the protocol that two address belong in the same wallet when you send from address A to address B in your wallet. Of course, if you are using some kind of online wallet they do know, but I'm assuming you are using a full one.

However, there can be clues that combined can be quite definitive.

**1. Clues when you send the transaction**

However, depending on the amount in address A, sending all funds to B with no change could be a clue that both belong to the same person. This is not a problem if you are sending a round amount like 1 BTC, but if you are sending 0.82421871 BTC and there is no change it is weird unless you are sending all your funds to donate or pay for something without a fixed price. It is the same if you send from A a round amount to another address and B gets a very weird amount.

**2. Clues after the original transaction**

* Spending from both addresses in the same transaction. This is no proof because there are ways to build a transaction with inputs from two wallets, but it is extremely rare.
* Sending funds between the two addresses frequently, specially if you do it both ways (from A to B and from B to A). This could happen with two parties that work a lot together, but it is a clue of some relation.
* Sending from both addresses at the same time, even if it is to different addresses (you send two transactions, one from A and another from B, that get to the same block long after you did the original one). It can be a coincidence, but it is one more signal.

**3. IP address clue**

This is extremely unlikely, but if you connect to a rogue node that records your IP address when you send from A to B and then you connect to that same rogue node (or another one acting in coordination) when you send from B to somewhere else, it would have the same IP address associated to both addresses. You could avoid this by using Tor or changing your IP address in some other way.


---

### Answer by username_1 on 2013-02-04. Score: 3

It depends. Bitcoin is traceable but pseudonymous.

So there would be a path from your first address to your second address. There's no way to prove that the second address is in your wallet at that point. But when you spend from that second address, any party that knows the second address is yours would know that the second address came from funds from the first address.

In other words, simply moving funds from one address to another address is not an effective measure for protecting your privacy regarding your financial transactions.


---

### Answer by username_5 on 2022-09-28. Score: 1

If you had the xpub you could see all the addresses derived from a particular seed, and as such determine if two addresses are linked in the manner you described. However it's extremely rare that any entity other than the actual wallet (in some cases) would be able to see this "extended public key" as it is very much a bit of private data.


---

### Answer by username_6 on 2022-09-27. Score: 0

Each address (corresponding to a public key) in your wallet has a corresponding private key. All private keys in the wallet are generated based on a single seed / passphrase. This why you are able to reconstitute your wallet on a new clean device. So a "wallet" is not strictly a client-side concept. Anyone with the phassphrase + pwd basically has access to all your private keys. Since nobody except the owners know about the passphrase there is no way for someone to mathematically prove that two addresses came out of the same wallet.

However, like others have mentioned, I/O and UTXO can provide some clues about the association between two addresses.

> **Comments:**
> **username_7**: an public key is an public key and an address is an address  
> **username_6**: @username_7 they are essentially the same thing where the address is a short and convenient version of the public key. simply address = RIPEMD160 (SHA256(PK))  

---

### Answer by username_8 on 2022-09-29. Score: 0

If you compare two addresses, it is **impossible** to determine if they were derived from the same public key.


---

