<oembed><type>rich</type><version>1.0</version><title>Lloyd Fournier [ARCHIVE] wrote</title><author_name>Lloyd Fournier [ARCHIVE] (npub1kh…y05yp)</author_name><author_url>https://yabu.me/npub1khlhcuz0jrjwa0ayznq2q9agg4zvxfvx5x7jljrvwnpfzngrcf0q7y05yp</author_url><provider_name>njump</provider_name><provider_url>https://yabu.me</provider_url><html>📅 Original date posted:2021-04-20&#xA;📝 Original message:&#xA;Hi Rusty,&#xA;&#xA;On Tue, 20 Apr 2021 at 10:55, Rusty Russell &lt;rusty at rustcorp.com.au&gt; wrote:&#xA;&#xA;&gt; Lloyd Fournier &lt;lloyd.fourn at gmail.com&gt; writes:&#xA;&gt; &gt; On Wed, Dec 9, 2020 at 4:26 PM Rusty Russell &lt;rusty at rustcorp.com.au&gt;&#xA;&gt; wrote:&#xA;&gt; &gt;&#xA;&gt; &gt;&gt;&#xA;&gt; &gt;&gt; Say r1=SHA256(ss || counter || 0), r2 = SHA256(ss || counter || 1)?&#xA;&gt; &gt;&gt;&#xA;&gt; &gt;&gt; Nice work.  This would be a definite recovery win.  We should add this&#xA;&gt; &gt;&gt; to the DF spec, because Lisa was almost finished implmenting it, so it&#39;s&#xA;&gt; &gt;&gt; clearly due for a change!&#xA;&gt; &gt;&gt;&#xA;&gt; &gt;&#xA;&gt; &gt; Yes that&#39;s certainly a fine way to do it.&#xA;&gt; &gt; I was also thinking you could eliminate all &#34;basepoints&#34; (not just&#xA;&gt; funding&#xA;&gt; &gt; pubkey) using something like this. i.e. just use the node pubkey as the&#xA;&gt; &gt; &#34;basepoint&#34; for everything and randomize it using the shared secret for&#xA;&gt; &gt; each purpose.&#xA;&gt;&#xA;&gt; OK, I tried to spec this out, to implement it.  One issue is that you&#xA;&gt; now can&#39;t sign the commitment_tx (or htlc_tx) without knowing the node&#39;s&#xA;&gt; secret key (or, equivalently, knowing the tweaked key and being able to&#xA;&gt; use the derivation scheme to untweak it).&#xA;&gt;&#xA;&#xA;Using node secret key to sign the commitment_tx seems like something you&#xA;will have to accept to introduce this feature. For the idea to work it has&#xA;to be some public key that is known by others and gossiped through the&#xA;network. Of course you could extend the information that is gossiped about&#xA;a node to include a &#34;commit_tx_point&#34; but the nodeid seems the more natural&#xA;choice.&#xA;&#xA;&#xA;&gt; c-lightning currently does a round-trip to the signing daemon for this&#xA;&gt; already, but it&#39;d be nice to avoid requiring it.&#xA;&gt;&#xA;&gt; So I somewhat reluctantly added `commit_basepoint` from which the others&#xA;&gt; are derived: an implementation can use some hardened derivation from its&#xA;&gt; privkey (e.g. SHA256(node_privkey || ss || counter)) to create&#xA;&gt; this in a deterministic but still private manner.&#xA;&gt;&#xA;&gt; Or we could just leave all the other points in and just replace&#xA;&gt; funding_pubkey.&#xA;&gt;&#xA;&#xA;Another approach is to do things in &#34;soft-fork&#34; like manner.&#xA;Each node that wants to offer this feature sets their funding_pubkey to a&#xA;specified DH tweak of the nodeid. Nodes that want backup-free channel&#xA;recovery can just refuse to carry on the funding protocol if the&#xA;funding_pubkey is not set the way it wanted.&#xA;&#xA;&gt;From my pruisit crypto point of view having only one public key is nice but&#xA;I&#39;m not sure how it impacts things architecturally and other protocols like&#xA;watchtowers.&#xA;&#xA;Cheers,&#xA;&#xA;LL&#xA;-------------- next part --------------&#xA;An HTML attachment was scrubbed...&#xA;URL: &lt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210420/65f16c10/attachment.html&gt;</html></oembed>