I read some researches about it. Seems like they just accept the fact that there are some exceptions.
In most of the cases the Heuristic1 is correct. Unless we can identify which transactions are made by coinjoin.
How do you distinguish change addresses form normal outputs?
I found the refined version of Heuristic 2.
The simplest way is to identify the transactions that only have two output addresses.
And only one of the output appears first time in the blockchain (new address).
The new address will be identify as the change address.
Problem is, most addresses are used only once. Especially now that pretty much every wallet is HD.
Yeah, that's why I want to do this! Many users are using disposal addresses to hide their track to enhance the privacy.
Maybe I didn't write it clear enough.
For example, the transaction pattern that only has one input, one output.
Most likely the input and output addresses are belong to the same user.
This kind of transaction pattern is mostly used to transit Bitcoin.
Moreover, we can also consider the whole peeling chain is belong to the same user who try to hide his/her track.
Or the distributing and converging transaction patterns.
Still trying to figure out how to identify those more complected transaction patterns.
I've tested walletexplorer.com with a few addresses of mine, but it was able to group none of them correctly. So I wouldn't have too much hope this actually works.
Try this!
https://bitiodine.net/The author implemented heuristic 1 & 2 and built this website.
I couldn't find any previous discussion regarding to this topic.
Any information or idea are welcome : ))))