JoinMarket-Org / joinmarket-clientserver

Bitcoin CoinJoin implementation with incentive structure to convince people to take part
GNU General Public License v3.0
699 stars 173 forks source link

Incorrect UTXO status is most often shown for WabiSabi coinjoin outputs #1672

Open kristapsk opened 4 months ago

kristapsk commented 4 months ago

wallet-tool.py does not recognize correctly WabiSabi (Wasabi 2.0) coinjoins, which have multiple denominations of equal value outputs and shows UTXO status as non-cj-change instead of cj-out. Noticed while testing #1632, but that's unrelated. If you receive bitcoins from different JoinMarket wallet with coinjoin, it will show that UTXO as cj-out. Same should apply to coins received from Wasabi or some other future coinjoin implementations. Also with #994 taker will have multiple cj-out's from a single tx. This is not critical, but would be nice to have.

internal addresses  m/84'/1'/0'/1   
m/84'/1'/0'/1/6         tb1qfhwgv3hj3tgn9hueygd4kuzjs8asmutz0rr0gq  0.00050000  non-cj-change       
m/84'/1'/0'/1/7         tb1qjkcr4cv48zeg89l7y4jg489n3wu4jyu24vs9x6  0.00050000  non-cj-change       
m/84'/1'/0'/1/8         tb1qmu0y9yzrtc3ar4j08vlggs9y0hwmle4rf4c4t5  0.00050000  non-cj-change       
m/84'/1'/0'/1/9         tb1q74f80hjyclxcsxf2e6lkewwawwl3ql0srfkpnj  0.00050000  non-cj-change       
m/84'/1'/0'/1/10        tb1q24nvmsvgyd0lvhe5jecm3u45vh5hmkspwnndn3  0.00050000  non-cj-change       
m/84'/1'/0'/1/11        tb1qtsms6de2mnlx94a2hw0pg074ad9gwm02nuxc48  0.00498980  non-cj-change       
m/84'/1'/0'/1/12        tb1qa4dz0j7tw7jjgqczmq6lcv4kxghu2v5vwfundy  0.00039366  cj-out      
m/84'/1'/0'/1/13        tb1qqeuj8z6fm74er77lu2xrzwgkhfettuf0hmtxd4  0.00010000  change-out      
m/84'/1'/0'/1/14        tb1qlmmp72hrk6jjlpwuk7wdtgcjkfadkdfmw4ykqx  0.00039366  non-cj-change       
m/84'/1'/0'/1/15        tb1qpy5h33zusp4rwg5q4s9hxqxlrmj5v7jjxswq5m  0.00039366  non-cj-change       
m/84'/1'/0'/1/16        tb1qrls8q5euvtdhsy48dk9g5pxm3lek7kttyduzp5  0.00010000  non-cj-change       
m/84'/1'/0'/1/17        tb1qy442stedzw8tsj8s2mcvckgssep58ag00cfdr6  0.00010000  non-cj-change       
m/84'/1'/0'/1/18        tb1qwge0cdm82js559r9j9aymdx2077f440t9rlj2j  0.00039366  non-cj-change       
m/84'/1'/0'/1/19        tb1qzyjjjmed7d48l2cq0apxx9n3raa2lxe0lw8grt  0.00010000  non-cj-change       
m/84'/1'/0'/1/20        tb1qx3kanv2zpn3lnm3puw8vvmyc77agdsdf6j8lq8  0.00039366  non-cj-change       
m/84'/1'/0'/1/21        tb1qnqy8nj0rh5stfzyuwg3e543n335cdynaxjpwhe  0.00010000  non-cj-change   

Example with tb1qnqy8nj0rh5stfzyuwg3e543n335cdynaxjpwhe, tx c3448394c3d49402f6e6c78af2d950bf9eda49575d2483e730a2574b338c0214, there are 0.00039366 and 0.00010000 outputs, all of them are actually cj-out's.

image

It shown correctly for tb1qa4dz0j7tw7jjgqczmq6lcv4kxghu2v5vwfundy, because 74fa0144b3fb1409647678d7bd90a142e6a4ede066a4d1ff4940727e019a2d04 doesn't contain equal value outputs of different denominations (but that's unlikely on mainnet).

image