<oembed><type>rich</type><version>1.0</version><author_name>npub16dt55fpq3a8r6zpphd9xngxr46zzqs75gna9cj5vf8pknyv2d7equx4wrd</author_name><author_url>https://nostr.ae/npub16dt55fpq3a8r6zpphd9xngxr46zzqs75gna9cj5vf8pknyv2d7equx4wrd</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2019-12-17&#xA;📝 Original message:&#xA;On Tue, Dec 17, 2019 at 09:34:07AM +0100, Bastien TEINTURIER wrote:&#xA;&gt; With Phoenix [1], we&#39;ve been experimenting with pay-to-open [2].&#xA;&gt;&#xA;&gt; That works well in practice and provides a great UX for newcomers, but&#xA;&gt; it requires temporary trust between the user and our node (until the&#xA;&gt; funding tx confirms).&#xA;&gt; &#xA;&gt; That trust relationship appears in two places:&#xA;&gt; [...]&#xA;&gt; b. The user trusts that we won&#39;t double-spend the funding transaction&#xA;&gt; [...] &#xA;&gt; I&#39;m more concerned about fixing (b). As long as the funding&#xA;&gt; transaction is unconfirmed, there&#39;s a risk of double-spending by the&#xA;&gt; funder. &#xA;&#xA;The typical proposed solution for this type of problem is a single-show&#xA;signature[1], a signature that will reveal the private key used to&#xA;create it if it&#39;s combined with another signature from the same private&#xA;key.  In other words, if you sign two different spends of the same UTXO,&#xA;someone who see both spends will be able to redirect all of that UTXO&#39;s&#xA;value to themselves.  In that case, your change output becomes a form of&#xA;fidelity bond---you get to keep it if you act honestly; otherwise,&#xA;someone else gets it (most likely whoever mines the next block).&#xA;&#xA;I&#39;m not aware of any way to currently force single-show signatures in&#xA;Bitcoin, so this is pretty theoretical.  Also, single-show signatures&#xA;add a lot of fragility to any setup and make useful features like RBF&#xA;fee bumping unavailable.&#xA;&#xA;As a less complete but more practical solution, you might want to&#xA;consider a signing federation.  This doesn&#39;t change the need for trust,&#xA;but it does allow spreading that trust around.  E.g. if spending your&#xA;funds requires three signatures each from one of five different&#xA;respected companies helping pioneer LN (perhaps all in different legal&#xA;jurisdictions), that might help mitigate user concerns about double&#xA;spending.  Besides the extra communicating and signing, your existing&#xA;workflow wouldn&#39;t need to change. &#xA;&#xA;-Dave&#xA;&#xA;[1] Here&#39;s some math for single show signatures in ECDSA:&#xA;&#xA;        https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2014-December/007038.html&#xA;&#xA;    Probably a more practical way to enforce single-show in Bitcoin&#xA;    would be something like OP_CHECKSIGFROMSTACK, e.g. as implemented in&#xA;    Elements:&#xA;&#xA;        https://elementsproject.org/features/opcodes&#xA;&#xA;    Maybe SIGHASH_NOINPUT/SIGHASH_ANYPREVOUT could also be used to&#xA;    enforce single-show with the right script?  I&#39;m not so sure about&#xA;    that.&#xA;-------------- next part --------------&#xA;A non-text attachment was scrubbed...&#xA;Name: signature.asc&#xA;Type: application/pgp-signature&#xA;Size: 833 bytes&#xA;Desc: not available&#xA;URL: &lt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20191217/dcd8987d/attachment.sig&gt;</html></oembed>