<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jan 29, 2021 at 10:51 AM Rusty Russell <<a href="mailto:rusty@rustcorp.com.au">rusty@rustcorp.com.au</a>> wrote:<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Less true after taproot though?<br></blockquote><div><br></div><div>The heuristic from [1] is not affected by Taproot.</div><div>Taproot will be helpful for keeping private channels private against the method in [2] though.</div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
> [1] <a href="https://arxiv.org/abs/2007.00764" rel="noreferrer" target="_blank">https://arxiv.org/abs/2007.00764</a><br>
> [2] <a href="https://arxiv.org/pdf/2003.12470.pdf" rel="noreferrer" target="_blank">https://arxiv.org/pdf/2003.12470.pdf</a><br>
> [3] <a href="https://graphsense.info/" rel="noreferrer" target="_blank">https://graphsense.info/</a><br>
><br>
> I am told there is a new revision of [1] coming out any day now that will<br>
> present a few more tricks and have contributions directly from a scientist<br>
> at Chainalsysis (the company).<br>
<br>
I'll add to my reading list (or wait for one of my colleagues to provide<br>
the TL;DR!).<br>
<br></blockquote><div><br></div><div>Let me TL;DR quickly the core idea quickly as it's not too difficult to grasp.</div><div><br></div><div>1. You are node n_1</div><div>2. You fund a public channel to node n_2 called c1<br></div><div>3. You use the change to fund a public channel to node n_3 called c2<br></div><div>4. The network sees that n_1 is involved in both c_1 and c_2. They're both public channels so the channel_id gives away the on-chain funding utxo. Everyone can conclude that the owner of n_1 was also the funder of both and therefore owns the change output of the funding of c_2.</div><div><br></div><div>Consider a variant of this heuristic where instead of using funding change they use the output of a cooperative close of c_1 to to fund c_2. By the same reasoning you can identify the owner of n_1 funded the channel but you can also now know  that n_2 is the owner of the other utxo of the close of c_1.</div><div><br></div><div>The point of this is if you are a node that is churning UTXOs from the funding change or the closing UTXO into other public channels you necessarily associate those UTXOs with your node id and any descendent utxos. This is the point of UTXO probing too but with this you get the info for free by just passively observing the new channel gossip. I think this makes UTXO probing useless as long we can assume that public nodes that accept dual funding requests from random people on the internet (and therefore vulnerable to probing) are also likely to use their wallet funds to fund channels in the future.</div><div><br></div><div>LL<br></div></div></div>