<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <updated></updated>
  <generator>https://nostr.ae</generator>

  <title>Nostr notes by </title>
  <author>
    <name></name>
  </author>
  <link rel="self" type="application/atom+xml" href="https://nostr.ae/npub1wtx5qvewc7pd6znlvwktq03mdld05mv3h5dkzfwd3dc30gdmsptsugtuyn.rss" />
  <link href="https://nostr.ae/npub1wtx5qvewc7pd6znlvwktq03mdld05mv3h5dkzfwd3dc30gdmsptsugtuyn" />
  <id>https://nostr.ae/npub1wtx5qvewc7pd6znlvwktq03mdld05mv3h5dkzfwd3dc30gdmsptsugtuyn</id>
  <icon></icon>
  <logo></logo>




  <entry>
    <id>https://nostr.ae/nevent1qqs0d367q6uz9mycpnvd5rrcy945nkmh7vh9xz6spmsdgvavv5ptehqzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wtas33u</id>
    
      <title type="html">📅 Original date posted:2023-09-08 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs0d367q6uz9mycpnvd5rrcy945nkmh7vh9xz6spmsdgvavv5ptehqzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wtas33u" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszk97l9qlcps4vpxhjjhvfe6xmg6ta3f3gg4hkdmvucpz7uryh5js0p396a&#39;&gt;nevent1q…396a&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-09-08&lt;br/&gt;🗒️ Summary of this message: A proposal suggests using runes managed by a hardware wallet to authenticate RPC calls, preventing compromised clients from making unauthorized calls.&lt;br/&gt;📝 Original message:&lt;br/&gt;Very interesting proposal, though as Will points out we could implement the&lt;br/&gt;same using runes: have the rune be managed by the hardware wallet, and&lt;br/&gt;commit the rune used to authenticate the RPC call commit to the call&amp;#39;s&lt;br/&gt;payload. That way a potentially compromised client cannot authenticate&lt;br/&gt;arbitrary calls, since the hardware wallet is required to associate a rune&lt;br/&gt;with it, giving it a chance for review.&lt;br/&gt;&lt;br/&gt;This is similar to how authentication of RPC calls works in greenlight,&lt;br/&gt;where the node host is not trusted, and we need to pass the authenticated&lt;br/&gt;commands forward to the signer for verification before processing any&lt;br/&gt;signature request from the node. We chose to authenticate the payload&lt;br/&gt;rather than the transport (which is what partonnere does) because it&lt;br/&gt;removes the need for a direct connection, and adds flexibility to how we&lt;br/&gt;can deliver the commands. Functionally they are very similar however.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Christian&lt;br/&gt;&lt;br/&gt;On Thu, Sep 7, 2023, 15:06 Bastien TEINTURIER &amp;lt;bastien at acinq.fr&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi William,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; What is wrong with runes/macaroons for validating and authenticating&lt;br/&gt;&amp;gt; &amp;gt; commands?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Runes/macaroons don&amp;#39;t provide any protection if the machine you are&lt;br/&gt;&amp;gt; issuing the RPCs from is compromised. The attacker can change the&lt;br/&gt;&amp;gt; parameters of your RPC call and your lightning node will still gladly&lt;br/&gt;&amp;gt; execute it.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; I can&amp;#39;t imagine validating every RPC request with a hardware&lt;br/&gt;&amp;gt; &amp;gt; device and trusted display, unless you have some specific use case in&lt;br/&gt;&amp;gt; &amp;gt; mind.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think that this is because you have the wrong idea of which RPCs&lt;br/&gt;&amp;gt; this is supposed to protect. This is useful for the RPCs that actually&lt;br/&gt;&amp;gt; involve paying something (channel open, channel close, pay invoice).&lt;br/&gt;&amp;gt; This isn&amp;#39;t useful for &amp;#34;read&amp;#34; RPCs (listing channels).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Making an on-chain operation or paying an invoice is something that is&lt;br/&gt;&amp;gt; infrequent enough for the vast majority of nodes that it makes sense&lt;br/&gt;&amp;gt; to validate it manually. Also, this is fully configurable: you can&lt;br/&gt;&amp;gt; choose which RPCs you want to protect that way and which RPCs you want&lt;br/&gt;&amp;gt; to keep open.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thanks,&lt;br/&gt;&amp;gt; Bastien&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Le mer. 6 sept. 2023 à 17:42, William Casarin &amp;lt;jb55 at jb55.com&amp;gt; a écrit :&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; On Wed, Sep 06, 2023 at 03:32:50AM &#43;0200, Bastien TEINTURIER wrote:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;Hey Zman,&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;I saw the announcement about the commando plugin, and it was actually&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;one of the reasons I wanted to write up what I had in mind, because&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;while commando also uses a lightning connection to send commands to a&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;lightning node, it was missing what in my opinion is the most important&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;part: having all of Bolt 8 handled by the HSM and validating commands&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;using a trusted display.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; What is wrong with runes/macaroons for validating and authenticating&lt;br/&gt;&amp;gt; &amp;gt; commands? I can&amp;#39;t imagine validating every RPC request with a hardware&lt;br/&gt;&amp;gt; &amp;gt; device and trusted display, unless you have some specific use case in&lt;br/&gt;&amp;gt; &amp;gt; mind.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;         Will&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230908/57a116fe/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230908/57a116fe/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-09-12T10:59:58&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfrmjj40rdagw672408u39fawyl3f8f9nwylewwpk7l5ms50etzlczypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9w3vlzdp</id>
    
      <title type="html">📅 Original date posted:2023-05-10 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfrmjj40rdagw672408u39fawyl3f8f9nwylewwpk7l5ms50etzlczypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9w3vlzdp" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsp87sm0a0kd5a74x46nhmqgzxctl9za96cm3atrn80gha525w867se262vd&#39;&gt;nevent1q…62vd&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-05-10&lt;br/&gt;🗒️ Summary of this message: Reputation systems in Lightning Network are susceptible to sudden behavioral changes and whitewashing attacks, making them less useful. Local-only reputation systems may work for large routing nodes, but edges are more vulnerable.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Antoine,&lt;br/&gt;&lt;br/&gt;this is an intrinsic issue with reputation systems, and the main&lt;br/&gt;reason I&amp;#39;m sceptical w.r.t. their usefulness in lightning.&lt;br/&gt;Fundamentally any reputation system bases their expectations for the&lt;br/&gt;future on experiences they made in the past, and they are thus always&lt;br/&gt;susceptible to sudden behavioral changes (going rogue from a prior&lt;br/&gt;clean record) and whitewashing attacks (switching identity, abusing&lt;br/&gt;any builtin bootstrapping method for new users to gain a good or&lt;br/&gt;neutral reputation before turning rogue repeatedly).&lt;br/&gt;&lt;br/&gt;This gets compounded as soon as we start gossiping about reputations,&lt;br/&gt;since now our decisions are no longer based just on information we can&lt;br/&gt;witness ourselves, or at least verify its correctness, and as such an&lt;br/&gt;attacker can most likely &amp;#34;earn&amp;#34; a positive reputation in some other&lt;br/&gt;part of the world, and then turn around and attack the nodes that&lt;br/&gt;trusted the reputation shared from those other parts.&lt;br/&gt;&lt;br/&gt;I&amp;#39;d be very interested in how many repeat interactions nodes get from&lt;br/&gt;individual senders, since that also tells us how much use we can get&lt;br/&gt;out of local-only reputation based systems, and I wouldn&amp;#39;t be&lt;br/&gt;surprised if, for large routing nodes, we have sufficient data for&lt;br/&gt;them to make an informed decision, while the edges may be more&lt;br/&gt;vulnerable, but they&amp;#39;d also be used by way fewer senders, and the&lt;br/&gt;impact of an attack would also be proportionally smaller.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Christian&lt;br/&gt;&lt;br/&gt;On Mon, May 8, 2023 at 10:26 PM Antoine Riard &amp;lt;antoine.riard at gmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Hi *,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Our suggestion is to start simple with a binary endorsement field. As&lt;br/&gt;&amp;gt; &amp;gt; we learn more, we will be better equipped to understand whether a&lt;br/&gt;&amp;gt; &amp;gt; more expressive value is required.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think the HTLC endorsement scheme as proposed is still suffering from a vulnerability as local reputation can be built up during periods of low routing fees, endorsement gained and then abused during periods of high routing fees. Therefore, it sounds to me this scheme should aim for some reputational transitivity between incoming traffic and outgoing traffic. Namely, the acquisition cost of the local reputation should be equal to the max timevalue damage that one can inflict on a routing node channel accessible from its local counterparty granting this high-level of reputation.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I don&amp;#39;t know if this can be fixed by ensuring permanent link-level &amp;#34;gossip&amp;#34; where counterparties along a payment path expose their reputation heuristics to guarantee this transitivity, or it&amp;#39;s a fundamental issue with a point-to-point approach like HTLC endorsement.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Opened an issue on the repository to converge on a threat model:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/ClaraShk/LNJamming/pull/13&#34;&gt;https://github.com/ClaraShk/LNJamming/pull/13&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I still think building data gathering infrastructure for Lightning is valuable as ultimately any jamming mitigation will have to adapt its upfront fees or reputation acquisition cost in function of HTLC traffic and market forces.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Looking forward to giving an update on Staking Credentials [0], an end-to-end approach to mitigate channel jamming.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Best,&lt;br/&gt;&amp;gt; Antoine&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [0] &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-November/003754.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-November/003754.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Le dim. 30 avr. 2023 à 03:57, Carla Kirk-Cohen &amp;lt;kirkcohenc at gmail.com&amp;gt; a écrit :&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Hi list,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Some updates on channel jamming!&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; # Next Call&lt;br/&gt;&amp;gt;&amp;gt; - Monday 01 May @ 15:00 UTC&lt;br/&gt;&amp;gt;&amp;gt; - &lt;a href=&#34;https://meet.jit.si/UnjammingLN&#34;&gt;https://meet.jit.si/UnjammingLN&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; - Agenda: &lt;a href=&#34;https://github.com/ClaraShk/LNJamming/issues/12&#34;&gt;https://github.com/ClaraShk/LNJamming/issues/12&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; # Data Gathering&lt;br/&gt;&amp;gt;&amp;gt; During these weekly calls, we&amp;#39;ve come to agreement that we would like&lt;br/&gt;&amp;gt;&amp;gt; to gather data about the use of HTLC endorsement and local reputation&lt;br/&gt;&amp;gt;&amp;gt; tracking for jamming mitigation. A reminder of the full scheme is&lt;br/&gt;&amp;gt;&amp;gt; included at the end of this email, and covered more verbosely in [1].&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; We have a few goals in mind:&lt;br/&gt;&amp;gt;&amp;gt; - Observe the effect of endorsement in the steady state with&lt;br/&gt;&amp;gt;&amp;gt;   logging-only implementation.&lt;br/&gt;&amp;gt;&amp;gt; - Gather real-world data for use in future simulation work.&lt;br/&gt;&amp;gt;&amp;gt; - Experiment with different algorithms for tracking local reputation.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The minimal changes required to add HTLC endorsement are outlined in [2].&lt;br/&gt;&amp;gt;&amp;gt; Our suggestion is to start simple with a binary endorsement field. As&lt;br/&gt;&amp;gt;&amp;gt; we learn more, we will be better equipped to understand whether a&lt;br/&gt;&amp;gt;&amp;gt; more expressive value is required.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; With this infrastructure in place, we can start to experiment with&lt;br/&gt;&amp;gt;&amp;gt; various local reputation schemes and data gathering, possibly even&lt;br/&gt;&amp;gt;&amp;gt; externally to LN implementations in projects like circuitbreaker [3].&lt;br/&gt;&amp;gt;&amp;gt; We&amp;#39;d be interested to hear whether there&amp;#39;s any appetite to deploy using&lt;br/&gt;&amp;gt;&amp;gt; an experimental TLV value?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; # Reputation Scheme&lt;br/&gt;&amp;gt;&amp;gt; - Each node locally tracks the reputation of its direct neighbors.&lt;br/&gt;&amp;gt;&amp;gt; - Each node allocates, per its risk tolerance:&lt;br/&gt;&amp;gt;&amp;gt;   - A number of slots reserved for endorsed HTLCs from high reputation&lt;br/&gt;&amp;gt;&amp;gt;     peers.&lt;br/&gt;&amp;gt;&amp;gt;   - A portion of liquidity reserved for endorsed HTLCs from high&lt;br/&gt;&amp;gt;&amp;gt;     reputation peers.&lt;br/&gt;&amp;gt;&amp;gt; - Forwarding of HTLCs:&lt;br/&gt;&amp;gt;&amp;gt;   - If a HTLC is endorsed by a high reputation peer, it is forwarded&lt;br/&gt;&amp;gt;&amp;gt;     as usual with endorsed = 1.&lt;br/&gt;&amp;gt;&amp;gt;   - Otherwise, it is forwarded with endorsed = 0 if there are slots and&lt;br/&gt;&amp;gt;&amp;gt;     liquidity available for unknown HTLCs.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Endorsement and reputation are proposed as the first step in a two part&lt;br/&gt;&amp;gt;&amp;gt; scheme for mitigating channel jamming:&lt;br/&gt;&amp;gt;&amp;gt; - Reputation for slow jams which are easily detected as misbehavior.&lt;br/&gt;&amp;gt;&amp;gt; - Unconditional fees for quick jams that are difficult to detect, as&lt;br/&gt;&amp;gt;&amp;gt;   they can always fall under a target threshold.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Looking forward to discussing further in the upcoming call!&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Best,&lt;br/&gt;&amp;gt;&amp;gt; Carla and Clara&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [1] &lt;a href=&#34;https://gist.github.com/carlaKC/be820bb638624253f3ae7b39dbd0e343&#34;&gt;https://gist.github.com/carlaKC/be820bb638624253f3ae7b39dbd0e343&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [2] &lt;a href=&#34;https://github.com/lightning/bolts/pull/1071&#34;&gt;https://github.com/lightning/bolts/pull/1071&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [3] &lt;a href=&#34;https://github.com/lightningequipment/circuitbreaker&#34;&gt;https://github.com/lightningequipment/circuitbreaker&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;
    </content>
    <updated>2023-06-19T19:42:22&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs9wc2fxm232yrnkseh2u93gla4lnm7qs5jv3lgrtv3wk0ku2geyvgzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9waurxam</id>
    
      <title type="html">📅 Original date posted:2023-05-10 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs9wc2fxm232yrnkseh2u93gla4lnm7qs5jv3lgrtv3wk0ku2geyvgzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9waurxam" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs874vvqsscq3f86fjf7qtczzgl4rzp3dfw354s3f22dev4y4kzfqgmm5rrq&#39;&gt;nevent1q…5rrq&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-05-10&lt;br/&gt;🗒️ Summary of this message: Reputation systems in Lightning are susceptible to sudden behavioral changes and whitewashing attacks, making their usefulness questionable. Local-only reputation systems may work for large routing nodes, but edges may be more vulnerable.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Antoine,&lt;br/&gt;&lt;br/&gt;this is an intrinsic issue with reputation systems, and the main&lt;br/&gt;reason I&amp;#39;m sceptical w.r.t. their usefulness in lightning.&lt;br/&gt;Fundamentally any reputation system bases their expectations for the&lt;br/&gt;future on experiences they made in the past, and they are thus always&lt;br/&gt;susceptible to sudden behavioral changes (going rogue from a prior&lt;br/&gt;clean record) and whitewashing attacks (switching identity, abusing&lt;br/&gt;any builtin bootstrapping method for new users to gain a good or&lt;br/&gt;neutral reputation before turning rogue repeatedly).&lt;br/&gt;&lt;br/&gt;This gets compounded as soon as we start gossiping about reputations,&lt;br/&gt;since now our decisions are no longer based just on information we can&lt;br/&gt;witness ourselves, or at least verify its correctness, and as such an&lt;br/&gt;attacker can most likely &amp;#34;earn&amp;#34; a positive reputation in some other&lt;br/&gt;part of the world, and then turn around and attack the nodes that&lt;br/&gt;trusted the reputation shared from those other parts.&lt;br/&gt;&lt;br/&gt;I&amp;#39;d be very interested in how many repeat interactions nodes get from&lt;br/&gt;individual senders, since that also tells us how much use we can get&lt;br/&gt;out of local-only reputation based systems, and I wouldn&amp;#39;t be&lt;br/&gt;surprised if, for large routing nodes, we have sufficient data for&lt;br/&gt;them to make an informed decision, while the edges may be more&lt;br/&gt;vulnerable, but they&amp;#39;d also be used by way fewer senders, and the&lt;br/&gt;impact of an attack would also be proportionally smaller.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Christian&lt;br/&gt;&lt;br/&gt;On Mon, May 8, 2023 at 10:26 PM Antoine Riard &amp;lt;antoine.riard at gmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Hi *,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Our suggestion is to start simple with a binary endorsement field. As&lt;br/&gt;&amp;gt; &amp;gt; we learn more, we will be better equipped to understand whether a&lt;br/&gt;&amp;gt; &amp;gt; more expressive value is required.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think the HTLC endorsement scheme as proposed is still suffering from a vulnerability as local reputation can be built up during periods of low routing fees, endorsement gained and then abused during periods of high routing fees. Therefore, it sounds to me this scheme should aim for some reputational transitivity between incoming traffic and outgoing traffic. Namely, the acquisition cost of the local reputation should be equal to the max timevalue damage that one can inflict on a routing node channel accessible from its local counterparty granting this high-level of reputation.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I don&amp;#39;t know if this can be fixed by ensuring permanent link-level &amp;#34;gossip&amp;#34; where counterparties along a payment path expose their reputation heuristics to guarantee this transitivity, or it&amp;#39;s a fundamental issue with a point-to-point approach like HTLC endorsement.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Opened an issue on the repository to converge on a threat model:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/ClaraShk/LNJamming/pull/13&#34;&gt;https://github.com/ClaraShk/LNJamming/pull/13&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I still think building data gathering infrastructure for Lightning is valuable as ultimately any jamming mitigation will have to adapt its upfront fees or reputation acquisition cost in function of HTLC traffic and market forces.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Looking forward to giving an update on Staking Credentials [0], an end-to-end approach to mitigate channel jamming.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Best,&lt;br/&gt;&amp;gt; Antoine&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [0] &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-November/003754.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-November/003754.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Le dim. 30 avr. 2023 à 03:57, Carla Kirk-Cohen &amp;lt;kirkcohenc at gmail.com&amp;gt; a écrit :&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Hi list,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Some updates on channel jamming!&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; # Next Call&lt;br/&gt;&amp;gt;&amp;gt; - Monday 01 May @ 15:00 UTC&lt;br/&gt;&amp;gt;&amp;gt; - &lt;a href=&#34;https://meet.jit.si/UnjammingLN&#34;&gt;https://meet.jit.si/UnjammingLN&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; - Agenda: &lt;a href=&#34;https://github.com/ClaraShk/LNJamming/issues/12&#34;&gt;https://github.com/ClaraShk/LNJamming/issues/12&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; # Data Gathering&lt;br/&gt;&amp;gt;&amp;gt; During these weekly calls, we&amp;#39;ve come to agreement that we would like&lt;br/&gt;&amp;gt;&amp;gt; to gather data about the use of HTLC endorsement and local reputation&lt;br/&gt;&amp;gt;&amp;gt; tracking for jamming mitigation. A reminder of the full scheme is&lt;br/&gt;&amp;gt;&amp;gt; included at the end of this email, and covered more verbosely in [1].&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; We have a few goals in mind:&lt;br/&gt;&amp;gt;&amp;gt; - Observe the effect of endorsement in the steady state with&lt;br/&gt;&amp;gt;&amp;gt;   logging-only implementation.&lt;br/&gt;&amp;gt;&amp;gt; - Gather real-world data for use in future simulation work.&lt;br/&gt;&amp;gt;&amp;gt; - Experiment with different algorithms for tracking local reputation.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The minimal changes required to add HTLC endorsement are outlined in [2].&lt;br/&gt;&amp;gt;&amp;gt; Our suggestion is to start simple with a binary endorsement field. As&lt;br/&gt;&amp;gt;&amp;gt; we learn more, we will be better equipped to understand whether a&lt;br/&gt;&amp;gt;&amp;gt; more expressive value is required.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; With this infrastructure in place, we can start to experiment with&lt;br/&gt;&amp;gt;&amp;gt; various local reputation schemes and data gathering, possibly even&lt;br/&gt;&amp;gt;&amp;gt; externally to LN implementations in projects like circuitbreaker [3].&lt;br/&gt;&amp;gt;&amp;gt; We&amp;#39;d be interested to hear whether there&amp;#39;s any appetite to deploy using&lt;br/&gt;&amp;gt;&amp;gt; an experimental TLV value?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; # Reputation Scheme&lt;br/&gt;&amp;gt;&amp;gt; - Each node locally tracks the reputation of its direct neighbors.&lt;br/&gt;&amp;gt;&amp;gt; - Each node allocates, per its risk tolerance:&lt;br/&gt;&amp;gt;&amp;gt;   - A number of slots reserved for endorsed HTLCs from high reputation&lt;br/&gt;&amp;gt;&amp;gt;     peers.&lt;br/&gt;&amp;gt;&amp;gt;   - A portion of liquidity reserved for endorsed HTLCs from high&lt;br/&gt;&amp;gt;&amp;gt;     reputation peers.&lt;br/&gt;&amp;gt;&amp;gt; - Forwarding of HTLCs:&lt;br/&gt;&amp;gt;&amp;gt;   - If a HTLC is endorsed by a high reputation peer, it is forwarded&lt;br/&gt;&amp;gt;&amp;gt;     as usual with endorsed = 1.&lt;br/&gt;&amp;gt;&amp;gt;   - Otherwise, it is forwarded with endorsed = 0 if there are slots and&lt;br/&gt;&amp;gt;&amp;gt;     liquidity available for unknown HTLCs.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Endorsement and reputation are proposed as the first step in a two part&lt;br/&gt;&amp;gt;&amp;gt; scheme for mitigating channel jamming:&lt;br/&gt;&amp;gt;&amp;gt; - Reputation for slow jams which are easily detected as misbehavior.&lt;br/&gt;&amp;gt;&amp;gt; - Unconditional fees for quick jams that are difficult to detect, as&lt;br/&gt;&amp;gt;&amp;gt;   they can always fall under a target threshold.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Looking forward to discussing further in the upcoming call!&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Best,&lt;br/&gt;&amp;gt;&amp;gt; Carla and Clara&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [1] &lt;a href=&#34;https://gist.github.com/carlaKC/be820bb638624253f3ae7b39dbd0e343&#34;&gt;https://gist.github.com/carlaKC/be820bb638624253f3ae7b39dbd0e343&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [2] &lt;a href=&#34;https://github.com/lightning/bolts/pull/1071&#34;&gt;https://github.com/lightning/bolts/pull/1071&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [3] &lt;a href=&#34;https://github.com/lightningequipment/circuitbreaker&#34;&gt;https://github.com/lightningequipment/circuitbreaker&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;
    </content>
    <updated>2023-06-09T15:13:18&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsd3ues2y8yue5wr45dg0k79px2534r6m7mnc7jkmnju4tuv2ue3pqzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9w52c5zx</id>
    
      <title type="html">📅 Original date posted:2023-02-13 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsd3ues2y8yue5wr45dg0k79px2534r6m7mnc7jkmnju4tuv2ue3pqzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9w52c5zx" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs875k87wauy78vaq84fc4384mghrlwx5j08q2p74f0jyu4auz6e7g9dvtht&#39;&gt;nevent1q…vtht&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-02-13&lt;br/&gt;🗒️ Summary of this message: Reputation systems are difficult to get right and easy to exploit. There are three types: first-hand experience, inferred experience, and hearsay. Repeat interactions are rare, and local knowledge gets out of date. Penalizing nodes is not the goal; optimizing the payment process is.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Matt,&lt;br/&gt;Hi Joost,&lt;br/&gt;&lt;br/&gt;let me chime in here, since we seem to be slowly reinventing all the&lt;br/&gt;research on reputation systems that is already out there. First of all&lt;br/&gt;let me say that I am personally not a fan of reputation systems in&lt;br/&gt;general, just to get my own biases out of the way, now on to the why :-)&lt;br/&gt;&lt;br/&gt;Reputation systems are great when they work, but they are horrible to&lt;br/&gt;get right, and certainly the patchworky approach we see being proposed&lt;br/&gt;today will end up with a system that is easy to exploit and hard to&lt;br/&gt;understand. The last time I encountered this kind of scenario was during&lt;br/&gt;my work on Bittorrent, where the often theorized tit-for-tat approach&lt;br/&gt;failed spectacularly, and leeching (i.e., not contributing to other&lt;br/&gt;people&amp;#39;s download) is rampant even today (BT only works because a few&lt;br/&gt;don&amp;#39;t care about their upload bandwidth).&lt;br/&gt;&lt;br/&gt;First of all let&amp;#39;s see what types of reputation system exist (and yes,&lt;br/&gt;this is my very informal categorization):&lt;br/&gt;&lt;br/&gt; - First hand experience&lt;br/&gt; - Inferred experience&lt;br/&gt; - Hearsay&lt;br/&gt;&lt;br/&gt;The first two are likely the setup we all are comfortable with: we ourselves&lt;br/&gt;experienced something, and make some decisions based on that&lt;br/&gt;experience. This is probably what we&amp;#39;re all doing at the moment: we&lt;br/&gt;attempt a payment, it fails, we back off for a bit from that channel&lt;br/&gt;being used again. This requires either being able to witness the issue&lt;br/&gt;directly (local peer) or infer from unforgeable error messages (the&lt;br/&gt;failing node returns an error, and it can&amp;#39;t point the finger at someone&lt;br/&gt;else). Notice that this also includes some transitive constructions,&lt;br/&gt;such as the backpressure mechanism we were discussing for ariard&amp;#39;s&lt;br/&gt;credentials proposal.&lt;br/&gt;&lt;br/&gt;Ideally we&amp;#39;d only rely on the first two to make decisions, but here&amp;#39;s&lt;br/&gt;exactly the issue we ran into with Bittorrent: repeat interactions are&lt;br/&gt;too rare. In addition, our local knowledge gets out of date the longer&lt;br/&gt;we wait, and a previously failing channel may now be good again, and&lt;br/&gt;vice-versa. For us to have sufficient knowledge to make good decisions&lt;br/&gt;we need to repeatedly interact with the same nodes in the network, and&lt;br/&gt;since end-users will be very unlikely to do that, we might end up in a&lt;br/&gt;situation were we instinctively fall back to the hearsay method, either&lt;br/&gt;by sharing our local reputation with peers and then somehow combine that&lt;br/&gt;with our own view. To the best of my knowledge such a system has never&lt;br/&gt;been built successfully, and all attempts have ended in a system that&lt;br/&gt;was either way too simple or is gameable by rational players.&lt;br/&gt;&lt;br/&gt;I also object to the wording of penalizing nodes that haven&amp;#39;t been as&lt;br/&gt;reliable in the past. It&amp;#39;s not penalizing them if, based on our local&lt;br/&gt;information, we decide to route over other nodes for a bit. Our goal is&lt;br/&gt;optimize the payment process, chosing the best possible routes, not&lt;br/&gt;making a judgement on the honesty or reliability of a node. When talking&lt;br/&gt;about penalizing we see node operators starting to play stupid games to&lt;br/&gt;avoid that perceived penalty, when in reality they should do their best&lt;br/&gt;to route as many payments successfully as possible (the negative fees&lt;br/&gt;for direct peers &amp;#34;exhausting&amp;#34; a balanced flow is one such example of&lt;br/&gt;premature optimization in that direction imho).&lt;br/&gt;&lt;br/&gt;So I guess what I&amp;#39;m saying is that we need to get away from this&lt;br/&gt;patchwork mode of building the protocol, and have a much clearer model&lt;br/&gt;for a) what we want to achieve, b) how much untrustworthy information we&lt;br/&gt;want to rely on, and c) how we protect (and possibly prove security)&lt;br/&gt;against manipulation by rational players. For the last question we at&lt;br/&gt;least have one nice feature (for now), namely that the identities are&lt;br/&gt;semi-permanent, and so white-washing attacks at least are not free.&lt;br/&gt;&lt;br/&gt;And after all this rambling, let&amp;#39;s get back to the topic at hand: I&lt;br/&gt;don&amp;#39;t think enshrining the differences of availability in the protocol,&lt;br/&gt;thus creating two classes of nodes, is a desirable&lt;br/&gt;feature. Communicating up-front that I intend to be reliable does&lt;br/&gt;nothing, and penalizing after the fact isn&amp;#39;t worth much due to the&lt;br/&gt;repeat interactions issue. It&amp;#39;d be even worse if now we had to rely on a&lt;br/&gt;third party to aggregate and track the reliability, in order to get&lt;br/&gt;enough repeat interactions to build a good model of their liquidity,&lt;br/&gt;since we&amp;#39;re now back in the hearsay world, and the third party can feed&lt;br/&gt;us wrong information to maximize their profits.&lt;br/&gt;&lt;br/&gt;Regards,&lt;br/&gt;Christian&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Matt Corallo &amp;lt;lf-lists at mattcorallo.com&amp;gt; writes:&lt;br/&gt;&amp;gt; Hi Joost,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I’m not sure I agree that lightning is “capital efficient” (or even close to it), but more generally I don’t see why this needs a signal.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If nodes start aggressively preferring routes through nodes that reliably route payments (which I believe lnd already does, in effect, to some large extent), they should do so by measurement, not signaling.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In practice, many channels on the network are “high availability” today, but only in one direction (I.e. they aren’t regularly spliced/rebalanced and are regularly unbalanced). A node strongly preferring a high payment success rate *should* prefer such a channel, but in your scheme would not.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This ignores the myriad of “at what threshold do you signal HA” issues, which likely make such a signal DOA, anyway.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Finally, I’m very dismayed at this direction in thinking on how ln should work - nodes should be measuring the network and routing over paths that it thinks are reliable for what it wants, *robustly over an unreliable network*. We should absolutely not be expecting the lightning network to be built out of high reliability nodes, that creates strong centralization pressure. To truly meet a “high availability” threshold, realistically, you’d need to be able to JIT 0conf splice-in, which would drive lightning to actually being a credit network.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; With reasonable volume, lightning today is very reliable and relatively fast, with few retries required. I don’t think we need to change anything to fix it. :)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Matt&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; On Feb 13, 2023, at 06:46, Joost Jager &amp;lt;joost.jager at gmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; ﻿&lt;br/&gt;&amp;gt;&amp;gt; Hi,&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; For a long time I&amp;#39;ve held the expectation that eventually payers on the lightning network will become very strict about node performance. That they will require a routing node to operate flawlessly or else apply a hefty penalty such as completely avoiding the node for an extended period of time - multiple weeks. The consequence of this is that routing nodes would need to manage their liquidity meticulously because every failure potentially has a large impact on future routing revenue.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; I think movement in this direction is important to guarantee competitiveness with centralised payment systems and their (at least theoretical) ability to process a payment in the blink of an eye. A lightning wallet trying multiple paths to find one that works doesn&amp;#39;t help with this.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; A common argument against strict penalisation is that it would lead to less efficient use of capital. Routing nodes would need to maintain pools of liquidity to guarantee successes all the time. My opinion on this is that lightning is already enormously capital efficient at scale and that it is worth sacrificing a slight part of that efficiency to also achieve the lowest possible latency.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; This brings me to the actual subject of this post. Assuming strict penalisation is good, it may still not be ideal to flip the switch from one day to the other. Routing nodes may not offer the required level of service yet, causing senders to end up with no nodes to choose from.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; One option is to gradually increase the strength of the penalties, so that routing nodes are given time to adapt to the new standards. This does require everyone to move along and leaves no space for cheap routing nodes with less leeway in terms of liquidity.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; Therefore I am proposing another way to go about it: extend the `channel_update` field `channel_flags` with a new bit that the sender can use to signal `highly_available`. &lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; It&amp;#39;s then up to payers to decide how to interpret this flag. One way could be to prefer `highly_available` channels during pathfinding. But if the routing node then returns a failure, a much stronger than normal penalty will be applied. For routing nodes this creates an opportunity to attract more traffic by marking some channels as `highly_available`, but it also comes with the responsibility to deliver.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; Without shadow channels, it is impossible to guarantee liquidity up to the channel capacity. It might make sense for senders to only assume high availability for amounts up to `htlc_maximum_msat`.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; A variation on this scheme that requires no extension of `channel_update` is to signal availability implicitly through routing fees. So the more expensive a channel is, the stronger the penalty that is applied on failure will be. It seems less ideal though, because it could disincentivize cheap but reliable channels on high traffic links.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; The effort required to implement some form of a `highly_available` flag seem limited and it may help to get payment success rates up. Interested to hear your thoughts.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; Joost&lt;br/&gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;
    </content>
    <updated>2023-06-09T15:12:39&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqszwu290kjvdqd0xmw0zqfx5awf8xl8zk4mp6lec66jenpgp7g59rgzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wfajrnf</id>
    
      <title type="html">📅 Original date posted:2022-01-19 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqszwu290kjvdqd0xmw0zqfx5awf8xl8zk4mp6lec66jenpgp7g59rgzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wfajrnf" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs946aypd30tm4jp4kkthks6qvfjpp0pstet0jhydrqn9wwtfcpras56mjh6&#39;&gt;nevent1q…mjh6&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-01-19&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Will,&lt;br/&gt;&lt;br/&gt;&amp;gt; I noticed you are doing RPC stuff... I&amp;#39;m looking to do RPC over&lt;br/&gt;&amp;gt; lightning itself. I started a C library called lnsocket[1], scrounged&lt;br/&gt;&amp;gt; from clightning parts, so that I can send messages from iOS to control&lt;br/&gt;&amp;gt; my lightning node.&lt;br/&gt;&lt;br/&gt;Sounds interesting, and similar to commando&amp;#39;s goals. Rusty also has a&lt;br/&gt;summer of bitcoin project attempting to expose a websocket directly to&lt;br/&gt;browsers in order to provide another way to communicate with your node,&lt;br/&gt;and of course there&amp;#39;s commando.&lt;br/&gt;&lt;br/&gt;&amp;gt; I&amp;#39;ve got to the point with lnsocket where I can send TLVs to my node,&lt;br/&gt;&amp;gt; and now I&amp;#39;m starting to think about what format the RPC commands should&lt;br/&gt;&amp;gt; be.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I noticed the commando c-lightning plugin just uses the JSON-RPC&lt;br/&gt;&amp;gt; payload, but perhaps something more compact and rpc-friendly like grpc&lt;br/&gt;&amp;gt; would be better... which is why this cln-grpc PR peaked my curiosity.&lt;br/&gt;&lt;br/&gt;Yep, JSON-RPC is rather bad with binary data, and doesn&amp;#39;t have any&lt;br/&gt;concept of streaming. I personally like grpc because it ticks a lot of&lt;br/&gt;boxes: secure transport over TLS, mutual authentication via mTLS,&lt;br/&gt;possibility to add metadata to calls (technically prohibited by the&lt;br/&gt;JSON-RPC spec) which can help us use macaroons/runes in future,&lt;br/&gt;streaming support and compact binary format.&lt;br/&gt;&lt;br/&gt;Having an IDL to describe the interface is also rather nice, even though&lt;br/&gt;for cln-grpc we actually generate that from the JSON-RPC schemas, so&lt;br/&gt;it&amp;#39;s a bit less expressive than .proto files.&lt;br/&gt;&lt;br/&gt;&amp;gt; I think the end goal of an RPC bolt would be super powerful, so that&lt;br/&gt;&amp;gt; lnsocket could talk to any lightning node, but that could be further&lt;br/&gt;&amp;gt; down the line. Choosing the right data format seemed like an important&lt;br/&gt;&amp;gt; step in that direction. Would love to hear your thoughts on this!&lt;br/&gt;&lt;br/&gt;I agree. Exchanging the transport layer underneath grpc doesn&amp;#39;t change&lt;br/&gt;semantics, but does unlock a number of potential use-cases. I think&lt;br/&gt;either the JSON-RPC or grpc can serve as a basis for a common RPC&lt;br/&gt;definition that can have any number of bindings, since we generate&lt;br/&gt;conversion code to/from JSON-RPC and grpc we can transparently map them&lt;br/&gt;back and forth.&lt;br/&gt;&lt;br/&gt;&amp;gt; I&amp;#39;ve cc&amp;#39;d clightning/lightning-dev as well to see if anyone else is&lt;br/&gt;&amp;gt; working on this or thinking about this stuff right now.&lt;br/&gt;&lt;br/&gt;Definitely open to suggestions, comments and criticism: the cln-grpc [1]&lt;br/&gt;crate is rather new, and will see a number of rebases and fixups, but&lt;br/&gt;should be reviewable as is. The cln-plugin [2] crate is a bit less&lt;br/&gt;well-fleshed-out, but has the core functionality needed for&lt;br/&gt;cln-grpc-plugin which was the goal of this first exploration. The&lt;br/&gt;cln-rpc [4] crate is also missing many RPC commands, but that&amp;#39;s just&lt;br/&gt;grunt work that I plan to tackle separately :-)&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Christian&lt;br/&gt;&lt;br/&gt;[1] &lt;a href=&#34;https://github.com/ElementsProject/lightning/pull/5011&#34;&gt;https://github.com/ElementsProject/lightning/pull/5011&lt;/a&gt;&lt;br/&gt;[2] &lt;a href=&#34;https://github.com/ElementsProject/lightning/pull/5012&#34;&gt;https://github.com/ElementsProject/lightning/pull/5012&lt;/a&gt;&lt;br/&gt;[3] &lt;a href=&#34;https://github.com/ElementsProject/lightning/pull/5013&#34;&gt;https://github.com/ElementsProject/lightning/pull/5013&lt;/a&gt;&lt;br/&gt;[4] &lt;a href=&#34;https://github.com/ElementsProject/lightning/pull/5010&#34;&gt;https://github.com/ElementsProject/lightning/pull/5010&lt;/a&gt;
    </content>
    <updated>2023-06-09T15:05:03&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs99w0jy2t0fn6a2uv6s2hs4ttv8jtmp8f0ywqytu3dqk93j3mh5pczypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wrw04r6</id>
    
      <title type="html">📅 Original date posted:2021-12-17 📝 Original message: I was ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs99w0jy2t0fn6a2uv6s2hs4ttv8jtmp8f0ywqytu3dqk93j3mh5pczypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wrw04r6" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqst2qgy4hhycyjrewxwuc3j3nq5rs92qfdmpawhhz528qd23lyv9xcnvyykq&#39;&gt;nevent1q…yykq&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-12-17&lt;br/&gt;📝 Original message:&lt;br/&gt;I was looking into the docs [1] and stumbled over `createinvoice` which&lt;br/&gt;does almost what you need. However it requires the preimage, and stores the&lt;br/&gt;invoice in the database which you don&amp;#39;t want.&lt;br/&gt;&lt;br/&gt;However if you have access to the `hsm_secret` you could sign in the plugin&lt;br/&gt;itself, completely sidestepping `lightningd`. Once you have that it should&lt;br/&gt;be a couple of days work to get a PoC plugin for the coordination and&lt;br/&gt;testing. From there it depends on how much polish you want to apply and&lt;br/&gt;what other systems you want to embed it into.&lt;br/&gt;&lt;br/&gt;Each recipient will have to run the plugin otherwise they&amp;#39;d not understand&lt;br/&gt;how to handle the payment, and creating an invoice requires a bit more work&lt;br/&gt;(each payee needs to coordinate to be part of the Rendez-vous), but from&lt;br/&gt;the senders point of view it&amp;#39;s all seamless.&lt;br/&gt;&lt;br/&gt;As for whether this is better suited for the protocol itself: could be,&lt;br/&gt;probably not though. We let everybody experiment and then formalize and&lt;br/&gt;standardize the best ideas from the community, so it may make its way into&lt;br/&gt;the spec, but would need to be implemented, tested and popular enough to&lt;br/&gt;warrant everybody having to implement yet another feature. In this case&lt;br/&gt;it&amp;#39;s more for a bLiP, which are less formal and better match the fact that&lt;br/&gt;only a small part of the network needs to implement it (only payees need to&lt;br/&gt;coordinate and forward, senders and everybody else doesn&amp;#39;t care).&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Christian&lt;br/&gt;&lt;br/&gt;[1] &lt;a href=&#34;https://lightning.readthedocs.io/lightning-createinvoice.7.html&#34;&gt;https://lightning.readthedocs.io/lightning-createinvoice.7.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Fri, 17 Dec 2021, 11:22 Ronan McGovern, &amp;lt;Ronan at trelis.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi ZmnSCPxj,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; So, are you saying there needs to be a new command &amp;#34;signfakeinvoice&amp;#34; at&lt;br/&gt;&amp;gt; the protocol level?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If that was there, how much work/hours would it be to build the poor man&amp;#39;s&lt;br/&gt;&amp;gt; rendez-vous at the application level?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If the above were to be implemented, when the payer pays the invoice, it&amp;#39;s&lt;br/&gt;&amp;gt; then automatically split and sent to two (or more) recipients?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Lastly, would it make more sense to have split payments at the protocol&lt;br/&gt;&amp;gt; level?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thanks, Ronan&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Thu, Dec 16, 2021 at 11:44 PM ZmnSCPxj &amp;lt;ZmnSCPxj at protonmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Good morning William,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; Has anyone coded up a &amp;#39;Poor man&amp;#39;s rendez-vous&amp;#39; demo yet? How hard would&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; it be, could it be done with a clightning plugin perhaps?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Probably not *yet*; it needs each intermediate payee (i.e. the one that&lt;br/&gt;&amp;gt;&amp;gt; is not the last one) to sign an invoice for which it does not know the&lt;br/&gt;&amp;gt;&amp;gt; preimage.&lt;br/&gt;&amp;gt;&amp;gt; Maybe call such a command `signfakeinvoice`.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; However, if a command to do the above is implemented (it would have to&lt;br/&gt;&amp;gt;&amp;gt; generate and sign the invoice, but not insert it into the database at all),&lt;br/&gt;&amp;gt;&amp;gt; then intermediate payees can use `htlc_accepted` hook for the &amp;#34;rendez-vous&amp;#34;.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; So to generate the invoice:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; * Arrange the payees in some agreed fixed order.&lt;br/&gt;&amp;gt;&amp;gt; * Last payee generates a normal invoice.&lt;br/&gt;&amp;gt;&amp;gt; * From last payee to second, each one:&lt;br/&gt;&amp;gt;&amp;gt;   * Passes its invoice to the previous payee.&lt;br/&gt;&amp;gt;&amp;gt;   * The previous payee then creates its own signed invoice with&lt;br/&gt;&amp;gt;&amp;gt; `signfakeinvoice` to itself, adding its payout plus a fee budget, as well&lt;br/&gt;&amp;gt;&amp;gt; as adding its own delay budget.&lt;br/&gt;&amp;gt;&amp;gt;   * The previous payee plugin stores the next-payee invoice and the&lt;br/&gt;&amp;gt;&amp;gt; details of its own invoice to db, such as by `datastore` command.&lt;br/&gt;&amp;gt;&amp;gt; * The first payee sends the sender the invoice.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; On payment:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; * The sender sends the payment to the first hop.&lt;br/&gt;&amp;gt;&amp;gt; * From first payee to second-to-last:&lt;br/&gt;&amp;gt;&amp;gt;   * Triggers `htlc_accepted` hook, and plugin checks if the incoming&lt;br/&gt;&amp;gt;&amp;gt; payment has a hash that is in this scheme stored in the database.&lt;br/&gt;&amp;gt;&amp;gt;   * The plugin gathers `htlc_accepted` hook invocations until they sum up&lt;br/&gt;&amp;gt;&amp;gt; to the expected amount (this handles multipath between payees).&lt;br/&gt;&amp;gt;&amp;gt;   * The plugin marks that it has gathered all `htlc_accepted` hooks for&lt;br/&gt;&amp;gt;&amp;gt; that hash in durable storage a.k.a. `datastore` (this handles a race&lt;br/&gt;&amp;gt;&amp;gt; condition where the plugin is able to respond to some `htlc_accepted`&lt;br/&gt;&amp;gt;&amp;gt; hooks, but the node is restarted before all of them were able to be&lt;br/&gt;&amp;gt;&amp;gt; recorded by C-Lightning in its own database --- this makes the plugin skip&lt;br/&gt;&amp;gt;&amp;gt; the &amp;#34;gathering&amp;#34; step above, once it has already gathered them all before).&lt;br/&gt;&amp;gt;&amp;gt;   * The plugin checks if there is already an outgoing payment for that&lt;br/&gt;&amp;gt;&amp;gt; hash (this handles the case where our node gets restarted in the meantime&lt;br/&gt;&amp;gt;&amp;gt; --- C-Lightning will reissue `htlc_accepted` on startup)&lt;br/&gt;&amp;gt;&amp;gt;     * If the outgoing payment exists and is pending, wait for it to&lt;br/&gt;&amp;gt;&amp;gt; resolve to either success or failure.&lt;br/&gt;&amp;gt;&amp;gt;     * If the outgoing payment exists and succeeded, resolve all the&lt;br/&gt;&amp;gt;&amp;gt; gathered `htlc_accepted` hooks.&lt;br/&gt;&amp;gt;&amp;gt;     * If the outgoing payment exists and failed, fail all the gathered&lt;br/&gt;&amp;gt;&amp;gt; `htlc_accepted` hooks.&lt;br/&gt;&amp;gt;&amp;gt;     * Otherwise, perform a `pay`, giving `maxfeepercent` and `maxdelay`&lt;br/&gt;&amp;gt;&amp;gt; based on its fee budget and delay budget.&lt;br/&gt;&amp;gt;&amp;gt;       When the `pay` succeeds or fails, propagate it to the gathered&lt;br/&gt;&amp;gt;&amp;gt; `htlc_accepted` hooks.&lt;br/&gt;&amp;gt;&amp;gt; * The last payee just receives a normal payment using the normal&lt;br/&gt;&amp;gt;&amp;gt; invoice-receive scheme.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Regards,&lt;br/&gt;&amp;gt;&amp;gt; ZmnSCPxj&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20211217/ad84b53b/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20211217/ad84b53b/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T15:04:51&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs2tkd5k50ltj6kevxmmrsc8a8ar4xecv4y0df0kak57f564txkfkqzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wefkfm6</id>
    
      <title type="html">📅 Original date posted:2021-12-16 📝 Original message: This ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs2tkd5k50ltj6kevxmmrsc8a8ar4xecv4y0df0kak57f564txkfkqzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wefkfm6" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0gtrqw53rp43pjxewwp42kspqdantv2v0j4fa7y0zafcpvutdxmsj8pfau&#39;&gt;nevent1q…pfau&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-12-16&lt;br/&gt;📝 Original message:&lt;br/&gt;This is quite a common request, and we&amp;#39;ve used a solution I like to call&lt;br/&gt;the &amp;#34;Poor man&amp;#39;s rendez-vous&amp;#34;. It basically routes a payment through all&lt;br/&gt;the parties that are to be paid, with the last one accepting the payment&lt;br/&gt;for all participants.&lt;br/&gt;&lt;br/&gt;The payment is atomic, once the circuit is set up no participant can&lt;br/&gt;cheat the others and it&amp;#39;s seamless from the payer&amp;#39;s perspective.&lt;br/&gt;&lt;br/&gt;Let&amp;#39;s say user `A` wants to pay `B` and `C` atomically. `B` gets 10ksat&lt;br/&gt;and `C` gets 90ksat out of a total of 100ksat:&lt;br/&gt;&lt;br/&gt; 1) `C` creates an invoice with payment hash `H` for 90ksat and sends it&lt;br/&gt;    to `B`&lt;br/&gt; 2) `B` creates an invoice with payment hash `H` (same as the first&lt;br/&gt;    invoice, but `B` doesn&amp;#39;t know the preimage) for 100ksat (maybe plus&lt;br/&gt;    a tiny bit for routing fees between `B` and `C`).&lt;br/&gt; 3) `A` receives an invoice which appears to be from `B` for the&lt;br/&gt;    expected total of 100ksat.&lt;br/&gt; 4) `A` proceeds to pay the invoice to `B` like normal&lt;br/&gt; 5) `B` receives the incoming payment, but doesn&amp;#39;t have the preimage for&lt;br/&gt;    `H`, so they must forward to `C` if they want to receive their&lt;br/&gt;    share. `B` then proceeds to pay the 90ksat invoice from `C`, which&lt;br/&gt;    reveals the preimage to them, and they can turn around and claim&lt;br/&gt;    the incoming `100ksat` (covering both `B` and `C` share)&lt;br/&gt;&lt;br/&gt;It&amp;#39;s a poor man&amp;#39;s version because it requires creating two invoices and&lt;br/&gt;`B` sees two payments (100ksat incoming, 90ksat outgoing), but the&lt;br/&gt;overall outcome is the desired one: either both parties get paid or&lt;br/&gt;noone gets paid. This can trivially be extended to any number of parties&lt;br/&gt;(with reduced success probability), and will remain atomic. It also&lt;br/&gt;doesn&amp;#39;t require any changes on the sender side, and only minimal setup&lt;br/&gt;between the payees. The crux here is that we somehow need to ensure `H`&lt;br/&gt;is always the same along the entire chain of payments, but with a good&lt;br/&gt;coordination protocol that should be feasible.&lt;br/&gt;&lt;br/&gt;Regards,&lt;br/&gt;Christian&lt;br/&gt;&lt;br/&gt;Ronan McGovern &amp;lt;Ronan at trelis.com&amp;gt; writes:&lt;br/&gt;&amp;gt; Hi folks, I&amp;#39;m Ronan - based in Dublin and building Trelis.com (simple&lt;br/&gt;&amp;gt; payment links to accept Lightning).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;m wondering if there is a way to create an invoice that splits the&lt;br/&gt;&amp;gt; payment to two lightning addresses?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If not, what would be required to develop this?&lt;br/&gt;&amp;gt; * A protocol change?&lt;br/&gt;&amp;gt; * Could it be built with the current protocol (I see an app on LN Bits to&lt;br/&gt;&amp;gt; split but it doesn&amp;#39;t seem to work).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Many thanks, Ronan&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Ronan McGovern&lt;br/&gt;&amp;gt; www.Trelis.com&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;
    </content>
    <updated>2023-06-09T15:04:50&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsqccfcpxj8pr63m23a874gu033ynlu9c5pxxh2fdy8syky8e3wwkczypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9w5zme7c</id>
    
      <title type="html">📅 Original date posted:2021-07-20 📝 Original message: ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsqccfcpxj8pr63m23a874gu033ynlu9c5pxxh2fdy8syky8e3wwkczypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9w5zme7c" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8zyedlpa6vm358awxqg9s2jpenr7nhap0fdv42xczj0ru8wdu97cn07vff&#39;&gt;nevent1q…7vff&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-07-20&lt;br/&gt;📝 Original message:&lt;br/&gt;We&amp;#39;d likely be using an HMAC to ensure the integrity of the data returned&lt;br/&gt;by peers, so we&amp;#39;d only have to guard against them returning an older&lt;br/&gt;version, which in eltoo. Furthermore by retrieving the blobs on reconnect&lt;br/&gt;regardless of whether we need them or not we can verify that peers are&lt;br/&gt;behaving correctly, since they shouldn&amp;#39;t be able to distinguish whether&lt;br/&gt;we&amp;#39;re just checking or actually need the data. In addition we can store the&lt;br/&gt;same data with multiple peers, ensuring that as long as one node is&lt;br/&gt;behaving we&amp;#39;re good.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Christian&lt;br/&gt;&lt;br/&gt;On Thu, 15 Jul 2021, 12:28 Martin Habovštiak &amp;lt;martin.habovstiak at gmail.com&amp;gt;&lt;br/&gt;wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; What would happen in 2) if the node has data but the peer returned an&lt;br/&gt;&amp;gt; incorrect state?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Wed, Jul 14, 2021, 20:13 Christian Decker &amp;lt;decker.christian at gmail.com&amp;gt;&lt;br/&gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Not quite sure if this issue is unique to eltoo tbh. While in LN-penalty&lt;br/&gt;&amp;gt;&amp;gt; loss-of-state equates to loss-of-funds, in eltoo this is reduced to&lt;br/&gt;&amp;gt;&amp;gt; impact only funds that are in a PTLC at the time of the loss-of-state.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; We have a couple of options here, that don&amp;#39;t touch the blockchain, and&lt;br/&gt;&amp;gt;&amp;gt; are therefore rather lightweight:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;  1) Do nothing and keep the incentive to keep up to date backups. It&lt;br/&gt;&amp;gt;&amp;gt;  still is a reduction in risk w.r.t. LN-penalty, since this is just an&lt;br/&gt;&amp;gt;&amp;gt;  append only log of secrets, and old secrets don&amp;#39;t harm you like&lt;br/&gt;&amp;gt;&amp;gt;  attempting to close with an old commitment would.&lt;br/&gt;&amp;gt;&amp;gt;  2) Use the peer-storage idea, where we deposit an encrypted bundle with&lt;br/&gt;&amp;gt;&amp;gt;  our peers, and which we expect the peers to return. by hiding the fact&lt;br/&gt;&amp;gt;&amp;gt;  that we forgot some state, until the data has been exchanged we can&lt;br/&gt;&amp;gt;&amp;gt;  ensure that peers always return the latest snapshot of whatever we gave&lt;br/&gt;&amp;gt;&amp;gt;  them.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The latter is the encrypted-blob idea that Rusty has been proposing for&lt;br/&gt;&amp;gt;&amp;gt; a while now.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt;&amp;gt; Christian&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Anthony Towns &amp;lt;aj at erisian.com.au&amp;gt; writes:&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; Hello world,&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; Suppose you have some payments going from Alice to Bob to Carol with&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; eltoo channels. Bob&amp;#39;s lightning node crashes, and he recovers from an&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; old backup, and Alice and Carol end up dropping newer channel states&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; onto the blockchain.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; Suppose the timeout for the payments is a few hours away, while the&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; channels have specified a week long CSV delay to rectify any problems&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; on-chain.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; Then I think that that means that:&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;  1) Carol will reveal the point preimages on-chain via adaptor&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     signatures, but Bob won&amp;#39;t be able to decode those adaptor signatures&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     because those signatures will need to change for each state&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;  2) Even if Bob knows the point preimages, he won&amp;#39;t be able to&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     claim the PTLC payments on-chain, for the same reason: he needs&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     newer adaptor signatures that he&amp;#39;ll have lost with the state update&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;  3) For any payments that timeout, Carol doesn&amp;#39;t have any particular&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     incentive to make it easy for Bob to claim the refund, and Bob won&amp;#39;t&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     have the adaptor signatures for the latest state to do so&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;  4) But Alice will be able to claim refunds easily. This is working how&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     it&amp;#39;s meant to, at least!&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; I think you could fix (3) by giving Carol (who does have all the adaptor&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; signatures for the latest state) the ability to steal funds that are&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; meant to have been refunded, provided she gives Bob the option of&lt;br/&gt;&amp;gt;&amp;gt; claiming&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; them first.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; However fixing (1) and (2) aren&amp;#39;t really going against Alice or Carol&amp;#39;s&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; interests, so maybe you can just ask: Carol loses nothing by allowing&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; Bob to claim funds from Alice; and Alice has already indicated that&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; knowing P is worth more to her than the PTLC&amp;#39;s funds -- otherwise she&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; wouldn&amp;#39;t have forwarded the PTLC to Bob in the first place.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; Likewise, everyone&amp;#39;s probably incentivised to negotiate cooperative&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; closes instead of going on-chain -- better privacy, less fees, and less&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; delay before the funds can be used elsewhere.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; FWIW, I think a similar flaw exists even in the original eltoo spec --&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; Alice could simply decline to publish the settlement transaction until&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; the timeout has been reached, preventing Bob from revealing the HTLC&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; preimage before Alice can claim the refund.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; So I think that adds up to:&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;  a) Nodes should share state on reconnection; if you find a node that&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     doesn&amp;#39;t do this, close the channel and put the node on your enemies&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     list. If you disagree on what the current state is, share your most&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     recent state, and if the other guy&amp;#39;s state is more recent, and all&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     the signatures verify, update your state to match theirs.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;  b) Always negotiate a mutual/cooperative close if possible, to avoid&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     actually using the eltoo protocol on-chain.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;  c) If you want to allow continuing the channel after restoring an old&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     state from backup, set the channel state index based on the real&lt;br/&gt;&amp;gt;&amp;gt; time,&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     eg (real_time-start_time)*(max_updates_per_second). That way your&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     first update after a restore from backup will ensure that any old&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     states that your channel partner may not have told you about are&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     invalidated.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;  d) Accept that if you lose connectivity to a channel partner, you will&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     have to pay any PTLCs that were going to them, and won&amp;#39;t be able&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     to claim the PTLCs that were funding them. Perhaps limit the total&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     value of inbound PTLCs for forwarding that you&amp;#39;re willing to accept&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     at any one itme?&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; Also, layered commitments seem like they make channel factories&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; complicated too. Nobody came up with a way to avoid layered commitments&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; while I wasn&amp;#39;t watching did they?&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; Cheers,&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; aj&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210720/29630c09/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210720/29630c09/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T15:03:10&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs9aqzg6vhq0rcz23ld9lfdzp204js4cugdyphmzh2kwtjzazqdm4gzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wd9z84f</id>
    
      <title type="html">📅 Original date posted:2021-07-14 📝 Original message: Not ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs9aqzg6vhq0rcz23ld9lfdzp204js4cugdyphmzh2kwtjzazqdm4gzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wd9z84f" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsz4vgsca0636fm5azrznzz7hx9775ea0uv4pnzqwpu9aj9xr3hepgemwh8t&#39;&gt;nevent1q…wh8t&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-07-14&lt;br/&gt;📝 Original message:&lt;br/&gt;Not quite sure if this issue is unique to eltoo tbh. While in LN-penalty&lt;br/&gt;loss-of-state equates to loss-of-funds, in eltoo this is reduced to&lt;br/&gt;impact only funds that are in a PTLC at the time of the loss-of-state.&lt;br/&gt;&lt;br/&gt;We have a couple of options here, that don&amp;#39;t touch the blockchain, and&lt;br/&gt;are therefore rather lightweight:&lt;br/&gt;&lt;br/&gt; 1) Do nothing and keep the incentive to keep up to date backups. It&lt;br/&gt; still is a reduction in risk w.r.t. LN-penalty, since this is just an&lt;br/&gt; append only log of secrets, and old secrets don&amp;#39;t harm you like&lt;br/&gt; attempting to close with an old commitment would.&lt;br/&gt; 2) Use the peer-storage idea, where we deposit an encrypted bundle with&lt;br/&gt; our peers, and which we expect the peers to return. by hiding the fact&lt;br/&gt; that we forgot some state, until the data has been exchanged we can&lt;br/&gt; ensure that peers always return the latest snapshot of whatever we gave&lt;br/&gt; them.&lt;br/&gt;&lt;br/&gt;The latter is the encrypted-blob idea that Rusty has been proposing for&lt;br/&gt;a while now.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Christian&lt;br/&gt;&lt;br/&gt;Anthony Towns &amp;lt;aj at erisian.com.au&amp;gt; writes:&lt;br/&gt;&amp;gt; Hello world,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Suppose you have some payments going from Alice to Bob to Carol with&lt;br/&gt;&amp;gt; eltoo channels. Bob&amp;#39;s lightning node crashes, and he recovers from an&lt;br/&gt;&amp;gt; old backup, and Alice and Carol end up dropping newer channel states&lt;br/&gt;&amp;gt; onto the blockchain.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Suppose the timeout for the payments is a few hours away, while the&lt;br/&gt;&amp;gt; channels have specified a week long CSV delay to rectify any problems&lt;br/&gt;&amp;gt; on-chain.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Then I think that that means that:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  1) Carol will reveal the point preimages on-chain via adaptor&lt;br/&gt;&amp;gt;     signatures, but Bob won&amp;#39;t be able to decode those adaptor signatures&lt;br/&gt;&amp;gt;     because those signatures will need to change for each state&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  2) Even if Bob knows the point preimages, he won&amp;#39;t be able to&lt;br/&gt;&amp;gt;     claim the PTLC payments on-chain, for the same reason: he needs&lt;br/&gt;&amp;gt;     newer adaptor signatures that he&amp;#39;ll have lost with the state update&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  3) For any payments that timeout, Carol doesn&amp;#39;t have any particular&lt;br/&gt;&amp;gt;     incentive to make it easy for Bob to claim the refund, and Bob won&amp;#39;t&lt;br/&gt;&amp;gt;     have the adaptor signatures for the latest state to do so&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  4) But Alice will be able to claim refunds easily. This is working how&lt;br/&gt;&amp;gt;     it&amp;#39;s meant to, at least!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think you could fix (3) by giving Carol (who does have all the adaptor&lt;br/&gt;&amp;gt; signatures for the latest state) the ability to steal funds that are&lt;br/&gt;&amp;gt; meant to have been refunded, provided she gives Bob the option of claiming&lt;br/&gt;&amp;gt; them first.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; However fixing (1) and (2) aren&amp;#39;t really going against Alice or Carol&amp;#39;s&lt;br/&gt;&amp;gt; interests, so maybe you can just ask: Carol loses nothing by allowing&lt;br/&gt;&amp;gt; Bob to claim funds from Alice; and Alice has already indicated that&lt;br/&gt;&amp;gt; knowing P is worth more to her than the PTLC&amp;#39;s funds -- otherwise she&lt;br/&gt;&amp;gt; wouldn&amp;#39;t have forwarded the PTLC to Bob in the first place.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Likewise, everyone&amp;#39;s probably incentivised to negotiate cooperative&lt;br/&gt;&amp;gt; closes instead of going on-chain -- better privacy, less fees, and less&lt;br/&gt;&amp;gt; delay before the funds can be used elsewhere.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; FWIW, I think a similar flaw exists even in the original eltoo spec --&lt;br/&gt;&amp;gt; Alice could simply decline to publish the settlement transaction until&lt;br/&gt;&amp;gt; the timeout has been reached, preventing Bob from revealing the HTLC&lt;br/&gt;&amp;gt; preimage before Alice can claim the refund.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; So I think that adds up to:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  a) Nodes should share state on reconnection; if you find a node that&lt;br/&gt;&amp;gt;     doesn&amp;#39;t do this, close the channel and put the node on your enemies&lt;br/&gt;&amp;gt;     list. If you disagree on what the current state is, share your most&lt;br/&gt;&amp;gt;     recent state, and if the other guy&amp;#39;s state is more recent, and all&lt;br/&gt;&amp;gt;     the signatures verify, update your state to match theirs.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  b) Always negotiate a mutual/cooperative close if possible, to avoid&lt;br/&gt;&amp;gt;     actually using the eltoo protocol on-chain.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  c) If you want to allow continuing the channel after restoring an old&lt;br/&gt;&amp;gt;     state from backup, set the channel state index based on the real time,&lt;br/&gt;&amp;gt;     eg (real_time-start_time)*(max_updates_per_second). That way your&lt;br/&gt;&amp;gt;     first update after a restore from backup will ensure that any old&lt;br/&gt;&amp;gt;     states that your channel partner may not have told you about are&lt;br/&gt;&amp;gt;     invalidated.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  d) Accept that if you lose connectivity to a channel partner, you will&lt;br/&gt;&amp;gt;     have to pay any PTLCs that were going to them, and won&amp;#39;t be able&lt;br/&gt;&amp;gt;     to claim the PTLCs that were funding them. Perhaps limit the total&lt;br/&gt;&amp;gt;     value of inbound PTLCs for forwarding that you&amp;#39;re willing to accept&lt;br/&gt;&amp;gt;     at any one itme?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Also, layered commitments seem like they make channel factories&lt;br/&gt;&amp;gt; complicated too. Nobody came up with a way to avoid layered commitments&lt;br/&gt;&amp;gt; while I wasn&amp;#39;t watching did they?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; aj&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;
    </content>
    <updated>2023-06-09T15:03:09&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs8yelkch097mzc0j8sdy52ntsacaqvaz44h7cqmae3l8m7kmxph4czypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9w2leq52</id>
    
      <title type="html">📅 Original date posted:2020-10-13 📝 Original message: Joost ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs8yelkch097mzc0j8sdy52ntsacaqvaz44h7cqmae3l8m7kmxph4czypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9w2leq52" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyql74lfggef2gc5r7p0qq3akwgstz7ds3kn7elsnzq9nyrhmap2ga32tx8&#39;&gt;nevent1q…2tx8&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2020-10-13&lt;br/&gt;📝 Original message:&lt;br/&gt;Joost Jager &amp;lt;joost.jager at gmail.com&amp;gt; writes:&lt;br/&gt;&amp;gt;&amp;gt; The LOW-REP node being out of pocket is the clue here: if one party&lt;br/&gt;&amp;gt;&amp;gt; loses funds, even a tiny bit, another party gains some funds. In this&lt;br/&gt;&amp;gt;&amp;gt; case the HIGH-REP node collaborating with the ATTACKER can extract some&lt;br/&gt;&amp;gt;&amp;gt; funds from the intermediate node, allowing them to dime their way to all&lt;br/&gt;&amp;gt;&amp;gt; of LOW-REP&amp;#39;s funds. If an attack results in even a tiny loss for an&lt;br/&gt;&amp;gt;&amp;gt; intermediary and can be repeated, the intermediary&amp;#39;s funds can be&lt;br/&gt;&amp;gt;&amp;gt; syphoned by an attacker.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The assumption is that HIGH-REP nodes won&amp;#39;t do this :) LOW-REP will see all&lt;br/&gt;&amp;gt; those failed payments and small losses and start to realize that something&lt;br/&gt;&amp;gt; strange is happening. I know the proposal isn&amp;#39;t fully trustless, but I&lt;br/&gt;&amp;gt; think it can work in practice.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Another attack that is a spin on ZmnSCPxj&amp;#39;s waiting to backpropagate the&lt;br/&gt;&amp;gt;&amp;gt; preimage is even worse:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;  - Attacker node `A` charging hold fees receives HTLC from victim `V`&lt;br/&gt;&amp;gt;&amp;gt;  - `A` does not forward the HTLC, but starts charging hold fees&lt;br/&gt;&amp;gt;&amp;gt;  - Just before the timeout for the HTLC would force us to settle onchain&lt;br/&gt;&amp;gt;&amp;gt;    `A` just removes the HTLC without forwarding it or he can try to&lt;br/&gt;&amp;gt;&amp;gt;    forward at the last moment, potentially blaming someone else for its&lt;br/&gt;&amp;gt;&amp;gt;    failure to complete&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; This results in `A` extracting the maximum hold fee from `V`, without&lt;br/&gt;&amp;gt;&amp;gt; the downstream hold fees cutting into their profits. By forwarding as&lt;br/&gt;&amp;gt;&amp;gt; late as possible `A` can cause a downstream failure and look innocent,&lt;br/&gt;&amp;gt;&amp;gt; and the overall payment has the worst possible outcome: we waited an&lt;br/&gt;&amp;gt;&amp;gt; eternity for what turns out to be a failed attempt.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The idea is that an attacker node is untrusted and won&amp;#39;t be able to charge&lt;br/&gt;&amp;gt; hold fees.&lt;br/&gt;&lt;br/&gt;The attacker controls both the sender and the HIGH-REP node. The sender&lt;br/&gt;doesn&amp;#39;t need to be trusted, it just initiates a payment that is used to&lt;br/&gt;extract hold fees from a forwarding node. The HIGH-REP node doesn&amp;#39;t&lt;br/&gt;lose reputation because from what we can witness externally the payment&lt;br/&gt;failed somewhere downstream. It does require an attacker to have a hold&lt;br/&gt;fee charging HIGH-REP node, yes, but he is not jeopardizing its&lt;br/&gt;reputation by having it fail downstream.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Christian
    </content>
    <updated>2023-06-09T15:01:12&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsryv9hfzra53fkmzdlagef2dy2h2fafdwx8wxxvtcrf8h6fuwg40gzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wv8psgk</id>
    
      <title type="html">📅 Original date posted:2020-02-24 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsryv9hfzra53fkmzdlagef2dy2h2fafdwx8wxxvtcrf8h6fuwg40gzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wv8psgk" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspxw8kd6ylx7nf7sankwq4wrq9dwedf94uwf80pjkhrjhl4qss05qgkat53&#39;&gt;nevent1q…at53&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2020-02-24&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Bastien,&lt;br/&gt;&lt;br/&gt;seems you were a bit quicker than I was with my writeup of my&lt;br/&gt;proposal. I came up with a scheme that allows us to drop a large part of&lt;br/&gt;the partial onion, so that it can indeed fit into an outer onion, and&lt;br/&gt;the rendez-vous node RV can re-construct the original packet from the&lt;br/&gt;included data [1].&lt;br/&gt;&lt;br/&gt;The construction comes down to initializing the part of the routing info&lt;br/&gt;string that is not going to be used, in such a way that the incremental&lt;br/&gt;unwrappings at the nodes in the partial onion cancels out. Like you&lt;br/&gt;mentioned in your mail it comes down extending the filler generation to&lt;br/&gt;also cover the unused part and then applying all the encryption streams&lt;br/&gt;xored to the unused space. By doing this we get the middle part of the&lt;br/&gt;onion consisting of only 0x00 bytes.&lt;br/&gt;&lt;br/&gt;I then decided to apply an additional ChaCha20 stream to this prefill,&lt;br/&gt;such that the onion will not consist of mostly 0x00 bytes which would be&lt;br/&gt;a dead giveaway to `RV&#43;1` that `RV` was a rendez-vous node.&lt;br/&gt;&lt;br/&gt;The process for the partial onion creator boils down to:&lt;br/&gt;&lt;br/&gt; - Compute a path from `RV` of its choice to recipient `R`.&lt;br/&gt; - Compute a shared secret using a random ephemeral private key and&lt;br/&gt;  `RV`s public key, and then generate a prefill-key&lt;br/&gt; - Compute the prefill by combining the correct substrings of the&lt;br/&gt;   encryption streams for the nodes along the path, then add the&lt;br/&gt;   ChaCha20 stream keyed with the prefill-key.&lt;br/&gt; - Wrap the onion, including payloads for each of the nodes along path&lt;br/&gt;   `RV` to `R`&lt;br/&gt; - Trim out the unused space, which now will match the obfuscation&lt;br/&gt;   stream generated with the prefill-key&lt;br/&gt;&lt;br/&gt;As an example such an onion, with 5 legacy hops (65 byte each) results&lt;br/&gt;in a 325 &#43; 66 bytes onion, and we save 975 bytes. See [2] for an example&lt;br/&gt;of how this looks like.&lt;br/&gt;&lt;br/&gt;The sender `S` then just does the following:&lt;br/&gt;&lt;br/&gt; - Compute a route from `S` to `RV`&lt;br/&gt; - Build an onion with the route, specifying the trimmed partial onion&lt;br/&gt;   as payload, along with the usual parameters, for `RV`&lt;br/&gt; - Initiate payment with the constructed onion&lt;br/&gt;&lt;br/&gt;Upon receiving an incoming HTLC with a partial onion the rendez-vous&lt;br/&gt;node `RV` then just does the following:&lt;br/&gt;&lt;br/&gt; - Verify all parameters as usual&lt;br/&gt; - Extract the partial onion&lt;br/&gt; - Use the ephemeral key from the partial onion to generate the shared&lt;br/&gt;   secret and the prefill key&lt;br/&gt; - Generate the prefill stream and insert it in the correct place,&lt;br/&gt;   before the HMAC. This reconstitutes the original routing packet&lt;br/&gt; - Swap out the original onion with the reconstituted onion and forward.&lt;br/&gt;&lt;br/&gt;My writeup [1] is an early draft, but I wanted to get it out early to&lt;br/&gt;give the discussion a basis to work off. I&amp;#39;ll revisit it a couple of&lt;br/&gt;times before opening a PR, but feel free to shout at me if I have&lt;br/&gt;forgotten to consider something :-)&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Christian&lt;br/&gt;&lt;br/&gt;[1] &lt;a href=&#34;https://github.com/lightningnetwork/lightning-rfc/blob/rendez-vous/proposals/0001-rendez-vous.md&#34;&gt;https://github.com/lightningnetwork/lightning-rfc/blob/rendez-vous/proposals/0001-rendez-vous.md&lt;/a&gt;&lt;br/&gt;[2] &lt;a href=&#34;https://gist.github.com/cdecker/ec06452bc470749d9f6d2de73651c5fd&#34;&gt;https://gist.github.com/cdecker/ec06452bc470749d9f6d2de73651c5fd&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Bastien TEINTURIER via Lightning-dev&lt;br/&gt;&amp;lt;lightning-dev at lists.linuxfoundation.org&amp;gt; writes:&lt;br/&gt;&amp;gt; Good morning list,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; After exploring decoys [1], which is a cheap way of doing route blinding,&lt;br/&gt;&amp;gt; I&amp;#39;m turning back to exploring rendezvous.&lt;br/&gt;&amp;gt; The previous mails on the mailing list mentioned that there was a&lt;br/&gt;&amp;gt; technicality&lt;br/&gt;&amp;gt; to make the HMACs check out, but didn&amp;#39;t provide a lot of details.&lt;br/&gt;&amp;gt; The issue is that the filler generation needs to take into account some hops&lt;br/&gt;&amp;gt; that will be added *later*, by the payer.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; However it is quite easy to work-around, with a few space trade-offs.&lt;br/&gt;&amp;gt; Let&amp;#39;s consider a typical rendezvous setup, where Alice wants to be paid via&lt;br/&gt;&amp;gt; rendezvous Bob, and Carol wants to pay that invoice:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Carol -&amp;gt; ... -&amp;gt; Bob -&amp;gt; ... -&amp;gt; Alice&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If Alice knows how many bytes Carol is going to use for her part of the&lt;br/&gt;&amp;gt; onion&lt;br/&gt;&amp;gt; payloads, Alice can easily take them into account when generating her&lt;br/&gt;&amp;gt; filler by&lt;br/&gt;&amp;gt; pre-pending the same amount of `0` bytes. It seems reasonable to impose a&lt;br/&gt;&amp;gt; fixed&lt;br/&gt;&amp;gt; number of onion bytes for each side of the rendezvous (650 each?) so Alice&lt;br/&gt;&amp;gt; would&lt;br/&gt;&amp;gt; know that amount.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; When Carol completes the onion with her part of the route, she simply needs&lt;br/&gt;&amp;gt; to&lt;br/&gt;&amp;gt; generate filler data for her part of the route following the normal Sphinx&lt;br/&gt;&amp;gt; protocol&lt;br/&gt;&amp;gt; and apply it to the onion she found in the invoice.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; But the tricky part is that she needs to give Bob a way of generating the&lt;br/&gt;&amp;gt; same&lt;br/&gt;&amp;gt; filler data to unapply it. Then all HMACs correctly check out.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I see two ways of doing that:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * Carol simply sends that filler (650 bytes), probably via a TLV in&lt;br/&gt;&amp;gt; `update_add_htlc`.&lt;br/&gt;&amp;gt; This means every intermediate hop needs to forward that, which is painful&lt;br/&gt;&amp;gt; and&lt;br/&gt;&amp;gt; potentially leaking too much data.&lt;br/&gt;&amp;gt; * Carol provides Bob with the rho keys used to generate her filler, and the&lt;br/&gt;&amp;gt; length&lt;br/&gt;&amp;gt; used by each hop. This leaks to Bob an upper bound on the number of hops&lt;br/&gt;&amp;gt; and the&lt;br/&gt;&amp;gt; number of bytes sent to each hop.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Since shift-and-xor kind of crypto is hard to read as equations, but very&lt;br/&gt;&amp;gt; easy to&lt;br/&gt;&amp;gt; read as diagrams, I spent a bit of time doing beautiful ASCII art [2].&lt;br/&gt;&amp;gt; Don&amp;#39;t hesitate&lt;br/&gt;&amp;gt; to have a look at it to find more details about how that works. You can&lt;br/&gt;&amp;gt; also print&lt;br/&gt;&amp;gt; that on t-shirts to look fancy at conferences. I also have some sample code&lt;br/&gt;&amp;gt; working&lt;br/&gt;&amp;gt; in eclair [3] for those who can read Scala without getting headaches.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Are there other tricks we can use to reconcile both sides of the onion at&lt;br/&gt;&amp;gt; Bob&amp;#39;s?&lt;br/&gt;&amp;gt; Maybe cdecker (or someone else) has an ace up his sleeve for me there? :)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; One important thing to note is that rendezvous on normal onions will be&lt;br/&gt;&amp;gt; costly to&lt;br/&gt;&amp;gt; integrate into invoices: it takes 1366 bytes to include one onion, and if&lt;br/&gt;&amp;gt; we want&lt;br/&gt;&amp;gt; to handle route failures or let the sender use multi-part, we will need to&lt;br/&gt;&amp;gt; have a&lt;br/&gt;&amp;gt; handful of pre-encrypted onions in the invoice (hence a few kB, which may&lt;br/&gt;&amp;gt; not be&lt;br/&gt;&amp;gt; practical for QR codes).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; But I did mention before that doing rendezvous on the trampoline onion&lt;br/&gt;&amp;gt; could have&lt;br/&gt;&amp;gt; better properties [4]. When doing that, having Carol transmit her filler&lt;br/&gt;&amp;gt; data only&lt;br/&gt;&amp;gt; to Bob, via the outer onion payload becomes practical and doesn&amp;#39;t leak&lt;br/&gt;&amp;gt; information.&lt;br/&gt;&amp;gt; Multi-part would work with a single trampoline onion in the invoice (~500&lt;br/&gt;&amp;gt; bytes),&lt;br/&gt;&amp;gt; because nodes can do MPP between trampoline nodes thanks to the&lt;br/&gt;&amp;gt; onion-in-onion&lt;br/&gt;&amp;gt; construction. We simply need to decide the size of the trampoline onion to&lt;br/&gt;&amp;gt; allow&lt;br/&gt;&amp;gt; each side of the rendezvous to be able to insert a number of hops we&amp;#39;re&lt;br/&gt;&amp;gt; comfortable&lt;br/&gt;&amp;gt; with. You can find more details in the &amp;#34;Rendezvous on a trampoline&amp;#34; section&lt;br/&gt;&amp;gt; of [2].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;m really interested in other approaches to making rendezvous work with&lt;br/&gt;&amp;gt; the HMACs&lt;br/&gt;&amp;gt; correctly checking out. If people on this list have drafts, intuitions or&lt;br/&gt;&amp;gt; random&lt;br/&gt;&amp;gt; thoughts about possible constructions, please share them, I&amp;#39;d be happy to&lt;br/&gt;&amp;gt; dive into&lt;br/&gt;&amp;gt; them to explore alternatives to the one I found, hoping we can make this&lt;br/&gt;&amp;gt; work and&lt;br/&gt;&amp;gt; provide this feature to our users in the near future.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A small side-note on Hornet. Hornet does offer many features that I believe&lt;br/&gt;&amp;gt; we will&lt;br/&gt;&amp;gt; want in Lightning in the future. It may seem that doing a custom rendezvous&lt;br/&gt;&amp;gt; scheme&lt;br/&gt;&amp;gt; is a waste of time since we&amp;#39;ll ditch it once/if we implement Hornet. While&lt;br/&gt;&amp;gt; that is&lt;br/&gt;&amp;gt; true in the long run, I believe that if we&amp;#39;re able to find a rendezvous&lt;br/&gt;&amp;gt; scheme that&lt;br/&gt;&amp;gt; isn&amp;#39;t too much work to implement, it makes sense to have something&lt;br/&gt;&amp;gt; available soon-ish.&lt;br/&gt;&amp;gt; Hornet will likely be a longer-term effort that we won&amp;#39;t get as soon as&lt;br/&gt;&amp;gt; we&amp;#39;d like&lt;br/&gt;&amp;gt; (especially since it will probably require a network-wide update). But who&lt;br/&gt;&amp;gt; knows, maybe&lt;br/&gt;&amp;gt; we may see that we are trying to create many features that are already&lt;br/&gt;&amp;gt; built into Hornet&lt;br/&gt;&amp;gt; (rendezvous, directed message support, etc) and will decide to implement&lt;br/&gt;&amp;gt; Hornet sooner&lt;br/&gt;&amp;gt; than expected?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; Bastien&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-January/002435.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-January/002435.html&lt;/a&gt;&lt;br/&gt;&amp;gt; [2] &lt;a href=&#34;https://gist.github.com/t-bast/ab42a7f52eb2e73105557957c8359601&#34;&gt;https://gist.github.com/t-bast/ab42a7f52eb2e73105557957c8359601&lt;/a&gt;&lt;br/&gt;&amp;gt; [3] &lt;a href=&#34;https://github.com/ACINQ/eclair/tree/sphinx-rendezvous&#34;&gt;https://github.com/ACINQ/eclair/tree/sphinx-rendezvous&lt;/a&gt;&lt;br/&gt;&amp;gt; [4]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2019-October/002237.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2019-October/002237.html&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;
    </content>
    <updated>2023-06-09T14:59:04&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsta5frd7xkad5fy90zr69mx7dfrm28eap9p0jrcyyp3tu729zp3yszypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9w9snm99</id>
    
      <title type="html">📅 Original date posted:2019-12-04 📝 Original message: That ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsta5frd7xkad5fy90zr69mx7dfrm28eap9p0jrcyyp3tu729zp3yszypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9w9snm99" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqst6penj20uh9448ghjez89gnm83wzyg7vtpufw9h6etv4pzs00z9g6z54ed&#39;&gt;nevent1q…54ed&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-12-04&lt;br/&gt;📝 Original message:&lt;br/&gt;That is correct, the chain of noinput/anyprevout transactions is broken&lt;br/&gt;as soon as the signers are online and can interactively bind and sign&lt;br/&gt;without noinput/anyprevout.&lt;br/&gt;&lt;br/&gt;Conner Fromknecht &amp;lt;conner at lightning.engineering&amp;gt; writes:&lt;br/&gt;&lt;br/&gt;&amp;gt; Good evening,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I didn&amp;#39;t think this was the design.  The update transaction can spend any&lt;br/&gt;&amp;gt; prior, with a fixed script, due to NOINPUT.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; From my reading of the final construction, each update transaction has a&lt;br/&gt;&amp;gt; unique script to bind settlement transactions to exactly one update.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; My understanding is that this is not logically possible?&lt;br/&gt;&amp;gt; The update transaction has no fixed txid until it commits to a particular&lt;br/&gt;&amp;gt; output-to-be-spent, which is either the funding/kickoff txout, or a&lt;br/&gt;&amp;gt; lower-`nLockTime` update transaction output.&lt;br/&gt;&amp;gt;&amp;gt; Thus a settlement transaction *must* use `NOINPUT` as well, as it has no&lt;br/&gt;&amp;gt; txid it can spend, if it is constrained to spend a particular update&lt;br/&gt;&amp;gt; transaction.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This is also my understanding. Any presigned descendants of a NOINPUT txn&lt;br/&gt;&amp;gt; must also use NOINPUT as well. This chain must continue until a signer is&lt;br/&gt;&amp;gt; online to bind a txn to a confirmed input. The unique settlement keys thus&lt;br/&gt;&amp;gt; prevent rebinding of settlement txns since NOINPUT with a shared script&lt;br/&gt;&amp;gt; would be too liberal.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; Conner&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Mon, Dec 2, 2019 at 18:55 ZmnSCPxj &amp;lt;ZmnSCPxj at protonmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Good morning Rusty,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; Hi all,&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; I recently revisited the eltoo paper and noticed some things related&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; watchtowers that might affect channel construction.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; Due to NOINPUT, any update transaction can spend from any other, so&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; in theory the tower only needs the most recent update txn to resolve&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; any dispute.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; In order to spend, however, the tower must also produce a witness&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; script which when hashed matches the witness program of the input. To&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; ensure settlement txns can only spend from exactly one update txn,&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; each update txn uses unique keys for the settlement clause, meaning&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; that each state has a unique witness program.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; I didn&amp;#39;t think this was the design. The update transaction can spend&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; any prior, with a fixed script, due to NOINPUT.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; The settlement transaction does not use NOINPUT, and thus can only&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; spend the matching update.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; My understanding is that this is not logically possible?&lt;br/&gt;&amp;gt;&amp;gt; The update transaction has no fixed txid until it commits to a particular&lt;br/&gt;&amp;gt;&amp;gt; output-to-be-spent, which is either the funding/kickoff txout, or a&lt;br/&gt;&amp;gt;&amp;gt; lower-`nLockTime` update transaction output.&lt;br/&gt;&amp;gt;&amp;gt; Thus a settlement transaction *must* use `NOINPUT` as well, as it has no&lt;br/&gt;&amp;gt;&amp;gt; txid it can spend, if it is constrained to spend a particular update&lt;br/&gt;&amp;gt;&amp;gt; transaction.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Unless I misunderstand how update transactions work, or what settlement&lt;br/&gt;&amp;gt;&amp;gt; transactions are.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Regards,&lt;br/&gt;&amp;gt;&amp;gt; ZmnSCPxj&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; -- &lt;br/&gt;&amp;gt; —Sent from my Spaceship&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;
    </content>
    <updated>2023-06-09T14:57:33&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsqg9ncc6k9zdrx7ya978pxy879rnmxwm8mtrnd0u3gaz2jgya0sqszypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wts77l7</id>
    
      <title type="html">📅 Original date posted:2019-12-04 📝 Original message: ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsqg9ncc6k9zdrx7ya978pxy879rnmxwm8mtrnd0u3gaz2jgya0sqszypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wts77l7" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqstqzxgwuu8pfnqmq5lzue0t66e6pfs79rhlhdcq4tymgg4wslrt0qw7argw&#39;&gt;nevent1q…argw&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-12-04&lt;br/&gt;📝 Original message:&lt;br/&gt;ZmnSCPxj via Lightning-dev &amp;lt;lightning-dev at lists.linuxfoundation.org&amp;gt; writes:&lt;br/&gt;&amp;gt; Good morning Rusty,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; ZmnSCPxj ZmnSCPxj at protonmail.com writes:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; Good morning Rusty,&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; Hi all,&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; I recently revisited the eltoo paper and noticed some things related&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; watchtowers that might affect channel construction.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; Due to NOINPUT, any update transaction can spend from any other, so&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; in theory the tower only needs the most recent update txn to resolve&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; any dispute.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; In order to spend, however, the tower must also produce a witness&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; script which when hashed matches the witness program of the input. To&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; ensure settlement txns can only spend from exactly one update txn,&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; each update txn uses unique keys for the settlement clause, meaning&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; that each state has a unique witness program.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; I didn&amp;#39;t think this was the design. The update transaction can spend&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; any prior, with a fixed script, due to NOINPUT.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; The settlement transaction does not use NOINPUT, and thus can only&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; spend the matching update.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; My understanding is that this is not logically possible?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; You&amp;#39;re right, no wonder I missed this problem :(&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; OK, so we need to change the key(s) every time. Can we tweak it based&lt;br/&gt;&amp;gt;&amp;gt; on something the watchtower will know, i.e. something in the update tx&lt;br/&gt;&amp;gt;&amp;gt; itself? Obviously not the output, as that would create a circular&lt;br/&gt;&amp;gt;&amp;gt; dependency. Is there some taproot thing we can use to insert some&lt;br/&gt;&amp;gt;&amp;gt; noise in the input?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; You could always add a taproot branch with a `OP_RETURN &amp;lt;randomness&amp;gt;` tapscript, which can never be used (thus has no effect on the overall security), but can inject randomness to the outer taproot key.&lt;br/&gt;&amp;gt; This *is* secure, since bip-schnorr indicates that `e` is `h(R | P | m)`, with `P` being the pubkey itself, so that should be enough.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Or why not BIP32 derivation?&lt;br/&gt;&amp;gt; This should be just as secure.&lt;br/&gt;&lt;br/&gt;I still fail to see the issue, update_tx and settlement_tx are&lt;br/&gt;self-contained, and there is no need to recover the prevout scriptPubKey&lt;br/&gt;or any value therein. Are we talking about things built on top of eltoo?&lt;br/&gt;&lt;br/&gt;If that&amp;#39;s the case, we need to use noinput/anyprevout anyway, so why not&lt;br/&gt;just replicate the same logic and ship them bound correctly to the&lt;br/&gt;watchtower?&lt;br/&gt;&lt;br/&gt;I&amp;#39;d also argue that it&amp;#39;s not a watchtower&amp;#39;s job to finalize the entire&lt;br/&gt;off-chain contract. It&amp;#39;s main job is to watch the blockchain and react&lt;br/&gt;should anything trigger it, while anything we build on top likely has&lt;br/&gt;absolute locktimes (HTLCs have absolute timeouts), so it the client that&lt;br/&gt;knows when it has to check back in and settle anything that happened.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Christian
    </content>
    <updated>2023-06-09T14:57:33&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsgrmarl9me6cc42azmkx2zgg2jat6expfkd56k7lf6p39q7dkv5qgzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wwgm48n</id>
    
      <title type="html">📅 Original date posted:2019-10-01 📝 Original message: ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsgrmarl9me6cc42azmkx2zgg2jat6expfkd56k7lf6p39q7dkv5qgzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wwgm48n" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsx3rv6de8n3xe5mdnt0kql7p5545njrpzreym2ncgr3tupwe4jj4gqk29l0&#39;&gt;nevent1q…29l0&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-10-01&lt;br/&gt;📝 Original message:&lt;br/&gt;ZmnSCPxj &amp;lt;ZmnSCPxj at protonmail.com&amp;gt; writes:&lt;br/&gt;&amp;gt; To elucidate further ---&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Suppose rather than `SIGHASH_NOINPUT`, we created a new opcode,&lt;br/&gt;&amp;gt; `OP_CHECKSIG_WITHOUT_INPUT`.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This new opcode ignores any `SIGHASH` flags, if present, on a&lt;br/&gt;&amp;gt; signature, but instead hashes the current transaction without the&lt;br/&gt;&amp;gt; input references, then checks that hash to the signature.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This is equivalent to `SIGHASH_NOINPUT`.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Yet as an opcode, it would be possible to embed in a Taproot script.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For example, a Decker-Russell-Osuntokun would have an internal Taproot&lt;br/&gt;&amp;gt; point be a 2-of-2, then have a script `OP_1&lt;br/&gt;&amp;gt; OP_CHECKSIG_WITHOUT_INPUT`.  Unilateral closes would expose the hidden&lt;br/&gt;&amp;gt; script, but cooperative closes would use the 2-of-2 directly.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Of note, is that any special SCRIPT would already be supportable by Taproot.&lt;br/&gt;&amp;gt; This includes SCRIPTs that may potentially lose funds for the user.&lt;br/&gt;&amp;gt; Yet such SCRIPTs are already targetable by a Taproot address.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If we are so concerned about `SIGHASH_NOINPUT` abuse, why are we not&lt;br/&gt;&amp;gt; so concerned about Taproot abuse?&lt;br/&gt;&lt;br/&gt;That would certainly be another possibility, which I have not explored&lt;br/&gt;in detail so far. Due to the similarity between the various signature&lt;br/&gt;checking op-codes it felt that it should be a sighash flag, and it&lt;br/&gt;neatly slotted into the already existing flags. If we go for a separate&lt;br/&gt;opcode we might end up reinventing the wheel, and to be honest I feared&lt;br/&gt;that proposing a new opcode would get us into bikeshedding territory&lt;br/&gt;(which I apparently failed to avoid with the sighash flag anyway...).&lt;br/&gt;&lt;br/&gt;The advantage would be that with the sighash flag the spender is in&lt;br/&gt;charge of specifying the flags, whereas with an opcode the output&lt;br/&gt;dictates the signature verification modalities. The downside is the&lt;br/&gt;increased design space.&lt;br/&gt;&lt;br/&gt;What do others think? Would this be an acceptable opt-in mechanism that&lt;br/&gt;addresses the main concerns?&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Christian
    </content>
    <updated>2023-06-09T14:56:20&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsx3rv6de8n3xe5mdnt0kql7p5545njrpzreym2ncgr3tupwe4jj4gzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9w4vtmaf</id>
    
      <title type="html">📅 Original date posted:2019-10-03 📝 Original message: ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsx3rv6de8n3xe5mdnt0kql7p5545njrpzreym2ncgr3tupwe4jj4gzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9w4vtmaf" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdksul853a2sfmy5p2l79x86nrsvyevdusym6wvk0sc44fpzluplqqmhfvj&#39;&gt;nevent1q…hfvj&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-10-03&lt;br/&gt;📝 Original message:&lt;br/&gt;ZmnSCPxj &amp;lt;ZmnSCPxj at protonmail.com&amp;gt; writes:&lt;br/&gt;&amp;gt;&amp;gt; That is very much how I was planning to implement it anyway, using a&lt;br/&gt;&amp;gt;&amp;gt; trigger transaction to separate timeout start and the actual&lt;br/&gt;&amp;gt;&amp;gt; update/settlement pairs (cfr. eltoo paper Section 4.2). So for eltoo&lt;br/&gt;&amp;gt;&amp;gt; there shouldn&amp;#39;t be an issue here :-)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; My understanding is that a trigger transaction is not in fact&lt;br/&gt;&amp;gt; necessary for Decker-Russell-Osuntokun: any update transaction could&lt;br/&gt;&amp;gt; spend the funding transaction output directly, and thereby start the&lt;br/&gt;&amp;gt; relative timelock.  At least, if we could arrange the funding&lt;br/&gt;&amp;gt; transaction output to be spendable directly using `SIGHASH_NOINPUT` or&lt;br/&gt;&amp;gt; variants thereof.&lt;br/&gt;&lt;br/&gt;This is the case in which we don&amp;#39;t have a pre-signed settlement&lt;br/&gt;transaction (or in this case refund transaction) that uses a relative&lt;br/&gt;timelock. In order to have a refund transaction we would need to have&lt;br/&gt;the first update and settlement pair be signed before funding (otherwise&lt;br/&gt;the funder isn&amp;#39;t sure she is getting her funds back). Since that first&lt;br/&gt;update and settlement pair do not need to be rebound (they can only ever&lt;br/&gt;be bound to the funding transaction) they can be signed without&lt;br/&gt;noinput/anyprevoutanyscript. If we use output tagging we would mandate&lt;br/&gt;that this first update must be published, so that the funding output is&lt;br/&gt;indistinguishable from a normal output, and the first update switches&lt;br/&gt;from non-noinput/anyprevoutanyscript to enabling it. Collaborative&lt;br/&gt;closes are still indistinguishable, unilateral closes require the&lt;br/&gt;switch, but then would be identifiable anyway.&lt;br/&gt;&lt;br/&gt;The one downside I can see is that we now mandate that unilateral closes&lt;br/&gt;also publish the first update, which is a bit annoying.&lt;br/&gt;&lt;br/&gt;&amp;gt;&amp;gt; While I do agree that we should keep outputs as unidentifiable as&lt;br/&gt;&amp;gt;&amp;gt; possible, I am starting to question whether that is possible for&lt;br/&gt;&amp;gt;&amp;gt; off-chain payment networks since we are gossiping about the existence of&lt;br/&gt;&amp;gt;&amp;gt; channels and binding them to outpoints to prove their existence anyway.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * Lightning supports unpublished channels, so we do not gossip some outpoints even though they are in fact channels underneath.&lt;br/&gt;&amp;gt;   * I confess the existence of unpublished channels in the spec fails to summon any reaction other than incredulity from me, but they exist nonetheless, my incredulity notwithstanding.&lt;br/&gt;&lt;br/&gt;That is true, we do however selectively tell others about the channel&amp;#39;s&lt;br/&gt;existence (in invoices, our peers, ...) so I wouldn&amp;#39;t consider that to&lt;br/&gt;be the most secret information :-)&lt;br/&gt;&lt;br/&gt;As for why they exist: nodes need to have the option of not announcing&lt;br/&gt;their channels to reduce the noise in the network with channels that are&lt;br/&gt;unlikely to be useable in order to forward payments. If every node were&lt;br/&gt;to announce their channels we&amp;#39;d have a much larger routing table, mostly&lt;br/&gt;consisting of unusable channels going to leafs in the&lt;br/&gt;network. Furthermore, the sheer threat that there might be unannounced&lt;br/&gt;channels adds uncertainty for attackers trying to profile nodes: &amp;#34;I see&lt;br/&gt;only my channel with my peer, but he might have unannounced channels, so&lt;br/&gt;I can&amp;#39;t really tell whether the payment I forwarded to it is destined&lt;br/&gt;for it or one of its unannounced peers&amp;#34;.&lt;br/&gt;&lt;br/&gt;&amp;gt; * Historical channels that have been cooperatively closed are no longer normally gossiped, so the fact that they used to be channels is no longer widely broadcast, and may eventually be forgotten by most or all of the network.&lt;br/&gt;&amp;gt;   * This means anyone who wants to record the historical use of Lightning will have to retain the information themselves, rather than delegating it to fullnodes everywhere.&lt;br/&gt;&lt;br/&gt;Good point, it requires storing the ephemeral data from gossip, that&amp;#39;s&lt;br/&gt;not all that hard, but I agree that it puts up a small barrier for&lt;br/&gt;newcomers.
    </content>
    <updated>2023-06-09T14:56:20&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsf5034ke43v9fepjnfgfxw089lw6l27cevpyz3tyvqdq2hc96ntfqzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wxy0xjc</id>
    
      <title type="html">📅 Original date posted:2019-10-01 📝 Original message: ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsf5034ke43v9fepjnfgfxw089lw6l27cevpyz3tyvqdq2hc96ntfqzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wxy0xjc" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspzv9uh4mqydwcqndhy5wh02lzu2lsvphdusz8e7laqmmp54h863shsnx2z&#39;&gt;nevent1q…nx2z&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-10-01&lt;br/&gt;📝 Original message:&lt;br/&gt;ZmnSCPxj &amp;lt;ZmnSCPxj at protonmail.com&amp;gt; writes:&lt;br/&gt;&amp;gt; I rather strongly oppose output tagging.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The entire point of for example Taproot was to reduce the variability&lt;br/&gt;&amp;gt; of how outputs look like, so that unspent Taproot outputs look exactly&lt;br/&gt;&amp;gt; like other unspent Taproot outputs regardless of the SCRIPT (or lack&lt;br/&gt;&amp;gt; of SCRIPT) used to protect the outputs.  That is the reason why we&lt;br/&gt;&amp;gt; would prefer to not support P2SH-wrapped Taproot even though&lt;br/&gt;&amp;gt; P2SH-wrapping was intended to cover all future uses of SegWit,&lt;br/&gt;&amp;gt; including SegWit v1 that Taproot will eventually get.&lt;br/&gt;&lt;br/&gt;That is a bit reductive if you ask me. Taproot brings a number of&lt;br/&gt;improvements such as the reduction of on-chain footprint in the&lt;br/&gt;collaborative spend case, the hiding of complex logic in that case, and&lt;br/&gt;yes, the uniformity of UTXOs that you mentioned. I do agree that it&amp;#39;d be&lt;br/&gt;to make everything look identical to the outside observer, but saying&lt;br/&gt;that separating outputs into two coarse-grained domains is equivalent to&lt;br/&gt;throwing the baby out with the bath-water :-)&lt;br/&gt;&lt;br/&gt;That being said, I should clarify that I would prefer not having to make&lt;br/&gt;special accomodations on top of the raw sighash_noinput proposal, for&lt;br/&gt;some perceived, but abstract danger that someone might shoot themselves&lt;br/&gt;in the foot. I think we&amp;#39;re all old enough not to need too much&lt;br/&gt;handholding :-)&lt;br/&gt;&lt;br/&gt;Output tagging is my second choice, since it minimizes the need for&lt;br/&gt;people to get creative to work around other proposals, and minimizes the&lt;br/&gt;on-chain footprint, and finally chaperone signatures are my least&lt;br/&gt;preferred option due to its heavy-handed nature and the increased cost.&lt;br/&gt;&lt;br/&gt;&amp;gt; Indeed, if it is output tagging that gets into Bitcoin base layer, I&lt;br/&gt;&amp;gt; would strongly suggest the below for all Decker-Russell-Osuntokun&lt;br/&gt;&amp;gt; implementations:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * A standard MuSig 2-of-2 bip-schnorr SegWit v1 Funding Transaction Output, confirmed onchain&lt;br/&gt;&amp;gt; * A &amp;#34;translator transaction&amp;#34; spending the above and paying out to a SegWit v16 output-tagged output, kept offchain.&lt;br/&gt;&amp;gt; * Decker-Russell-Osuntokun update transaction, signed with `SIGHASH_NOINPUT` spending the translator transaction output.&lt;br/&gt;&amp;gt; * Decker-Russell-Osuntokun state transaction, signed with `SIGHASH_NOINPUT` spending the update transaction output.&lt;br/&gt;&lt;br/&gt;That is very much how I was planning to implement it anyway, using a&lt;br/&gt;trigger transaction to separate timeout start and the actual&lt;br/&gt;update/settlement pairs (cfr. eltoo paper Section 4.2). So for eltoo&lt;br/&gt;there shouldn&amp;#39;t be an issue here :-)&lt;br/&gt;&lt;br/&gt;&amp;gt; The point regarding use of a commonly-known privkey to work around&lt;br/&gt;&amp;gt; chaperone signatures is appropriate to the above, incidentally.  In&lt;br/&gt;&amp;gt; short: this is a workaround, plain and simple, and one wonders the&lt;br/&gt;&amp;gt; point of adding *either* chaperones *or* output tagging if we will, in&lt;br/&gt;&amp;gt; practice, just work around them anyway.&lt;br/&gt;&lt;br/&gt;Exactly, why introduce the extra burden of chaperone signatures or&lt;br/&gt;output tagging if we&amp;#39;re just going to sidestep it?&lt;br/&gt;&lt;br/&gt;&amp;gt; Again, the *more* important point is that special blockchain&lt;br/&gt;&amp;gt; constructions should only be used in the &amp;#34;bad&amp;#34; unilateral close case.&lt;br/&gt;&amp;gt; In the cooperative case, we want to use simple plain&lt;br/&gt;&amp;gt; bip-schnorr-signed outputs getting spent to further bip-schnor/Taproot&lt;br/&gt;&amp;gt; SegWit v1 addresses, to increase the anonymity set of all uses of&lt;br/&gt;&amp;gt; Decker-Russell-Osuntokun and other applications that might use&lt;br/&gt;&amp;gt; `SIGHASH_NOINPUT` in some edge case (but which resolve down to simple&lt;br/&gt;&amp;gt; bip-schnorr-signed n-of-n cases when the protocol is completed&lt;br/&gt;&amp;gt; successfully by all participants).&lt;br/&gt;&lt;br/&gt;While I do agree that we should keep outputs as unidentifiable as&lt;br/&gt;possible, I am starting to question whether that is possible for&lt;br/&gt;off-chain payment networks since we are gossiping about the existence of&lt;br/&gt;channels and binding them to outpoints to prove their existence anyway.&lt;br/&gt;&lt;br/&gt;Not the strongest argument I know, but there&amp;#39;s little point in talking&lt;br/&gt;ideal cases when we need to weaken that later again. &lt;br/&gt;&lt;br/&gt;&amp;gt;&amp;gt; Open questions&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; ---------------&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The questions that remain to be addressed are the following:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; 1.  General agreement on the usefulness of noinput / anyprevoutanyscript /&lt;br/&gt;&amp;gt;&amp;gt;     anyprevout. While at the CoreDev meeting I think everybody agreed that&lt;br/&gt;&amp;gt;&amp;gt;     these proposals a useful, also beyond eltoo, not everybody could be&lt;br/&gt;&amp;gt;&amp;gt;     there. I&amp;#39;d therefore like to elicit some feedback from the wider community.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I strongly agree that `NOINPUT` is useful, and I was not able to attend CoreDev (at least, not with any human fleshbot already known to you --- I checked).&lt;br/&gt;&lt;br/&gt;Great, good to know that I&amp;#39;m not shouting into the void, and that I&amp;#39;m&lt;br/&gt;not just that crazy guy trying to get his hairbrained scheme to work :-)&lt;br/&gt;&lt;br/&gt;&amp;gt;&amp;gt; 2.  Is there strong support or opposition to the chaperone signatures&lt;br/&gt;&amp;gt;&amp;gt;     introduced in anyprevout / anyprevoutanyscript? I think it&amp;#39;d be best to&lt;br/&gt;&amp;gt;&amp;gt;     formulate a concrete set of pros and contras, rather than talk about&lt;br/&gt;&amp;gt;&amp;gt;     abstract dangers or advantages.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; No opposition, we will just work around this by publishing a common&lt;br/&gt;&amp;gt; known private key to use for all chaperone signatures, since all the&lt;br/&gt;&amp;gt; important security is in the `NOINPUT` signature anyway.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; 3.  The same for output tagging / explicit opt-in. What are the advantages and&lt;br/&gt;&amp;gt;&amp;gt;     disadvantages?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Strongly oppose, see above about my argument.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; 4.  Shall we merge BIP-118 and bip-anyprevout. This would likely reduce the&lt;br/&gt;&amp;gt;&amp;gt;     confusion and make for simpler discussions in the end.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Ambivalent, mildly support.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; 5.  Anything I forgot to mention :-)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cats are very interesting creatures, and are irrelevant to `SIGHASH_NOINPUT` discussion, but are extremely cute nonetheless.&lt;br/&gt;&lt;br/&gt;Definitely agreed :&#43;1:
    </content>
    <updated>2023-06-09T14:56:19&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsvzye4dkzsmrjlkg4lewu89h7y43z437mahmf63zl9trsz8ku0ufszypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wuu4j6l</id>
    
      <title type="html">📅 Original date posted:2019-10-03 📝 Original message: ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsvzye4dkzsmrjlkg4lewu89h7y43z437mahmf63zl9trsz8ku0ufszypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wuu4j6l" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0mmt2a55s52fjvcwt47x75sd42pur5qszpwgk20j7vk24ufl22jgvhpg3j&#39;&gt;nevent1q…pg3j&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-10-03&lt;br/&gt;📝 Original message:&lt;br/&gt;ZmnSCPxj via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; writes:&lt;br/&gt;&lt;br/&gt;&amp;gt; Good morning lists,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Let me summarize concerns brought up:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * Chris concern, is that an ordinary UTXO that is not allocated for `SIGHASH_NOINPUT` use, is inadvertently spent using `SIGHASH_NOINPUT`.&lt;br/&gt;&amp;gt; * My concern, is that unless a UTXO allocated for `SIGHASH_NOINPUT` use, is *indeed* used with SIGHASH_NOINPUT`, it should look exactly the same as any other SegWit v1 output.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I propose the below instead:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * Do ***NOT*** allocate SegWit v16 for `SIGHASH_NOINPUT`.&lt;br/&gt;&amp;gt; * Instead, allocate SegWit v1 Tapscript v16 for `SIGHASH_NOINPUT`.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Then, on usage:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * Exchange hoards can be protected by simple MuSig bip-schnorr SegWit v1 outputs, or a NUMS Taproot internal point with a MAST branch Tapscript v0 `OP_CHECKSIG_ADD` sequence.&lt;br/&gt;&amp;gt; * Decker-Russell-Osuntokun constructions are backed by a n-of-n MuSig Taproot internal point, with a MAST branch containing a Tapscript v16 with `OP_1 OP_CHECKSIG`.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This solves both concerns:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * Ordinary UTXOs not allocated for `SIGHASH_NOINPUT` use simply do not commit to any Taproot that has a Tapscript v16 branch, and thus `SIGHASH_NOINPUT` is unuseable to claim it.&lt;br/&gt;&amp;gt; * If a UTXO used for an offchain protocol ends up in a cooperative-resolution state, nobody has to know that a Tapscript v16 branch existed that could have used `SIGHASH_NOINPUT`.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Again, my objection to output tagging is that it is **publicly visible** as soon as the funding transaction is confirmed onchain that this is a special output used for a Decker-Russell-Osuntokun construction, greatly damaging privacy.&lt;br/&gt;&amp;gt; But if this fact is kept secret *unless* the very specific case of unilateral uncooperative enforcement, then it is quite fine with me.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Would this alternate proposal hold better muster?&lt;br/&gt;&lt;br/&gt;Intriguing idea, this would be an invisible tagging, since the opt-in to&lt;br/&gt;noinput and friends is hidden inside the committed script, which only&lt;br/&gt;gets revealed whenever we actually need it.&lt;br/&gt;&lt;br/&gt;For eltoo this would mean that the funding output would be invisibly&lt;br/&gt;tagged, and the cooperative close would use the taproot pubkey, while&lt;br/&gt;the uncooperative close, which would require noinput opt-in, reveals the&lt;br/&gt;script, proving prior opt-in, and provides a matching signature.&lt;br/&gt;&lt;br/&gt;If I&amp;#39;m not mistaken this would require AJ&amp;#39;s alternative pubkey encoding&lt;br/&gt;(0x01 or 0x00 prefixed pubkey) to make the opt-in visible, correct?
    </content>
    <updated>2023-06-09T14:56:18&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqspzv9uh4mqydwcqndhy5wh02lzu2lsvphdusz8e7laqmmp54h863szypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wrk927a</id>
    
      <title type="html">📅 Original date posted:2019-10-03 📝 Original message: Chris ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqspzv9uh4mqydwcqndhy5wh02lzu2lsvphdusz8e7laqmmp54h863szypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wrk927a" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvzye4dkzsmrjlkg4lewu89h7y43z437mahmf63zl9trsz8ku0ufsmvgxz2&#39;&gt;nevent1q…gxz2&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-10-03&lt;br/&gt;📝 Original message:&lt;br/&gt;Chris Stewart &amp;lt;chris at suredbits.com&amp;gt; writes:&lt;br/&gt;&lt;br/&gt;&amp;gt; I do have some concerns about SIGHASH_NOINPUT, mainly that it does&lt;br/&gt;&amp;gt; introduce another footgun into the bitcoin protocol with address reuse.&lt;br/&gt;&amp;gt; It&amp;#39;s common practice for bitcoin businesses to re-use addresses. Many&lt;br/&gt;&amp;gt; exchanges [1] reuse addresses for cold storage with very large sums of&lt;br/&gt;&amp;gt; money that is stored in these addreses.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It is my understanding with this part of BIP118&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;Using NOINPUT the input containing the signature no longer references a&lt;br/&gt;&amp;gt; specific output. Any participant can take a transaction and rewrite it by&lt;br/&gt;&amp;gt; changing the hash reference to the previous output, without invalidating&lt;br/&gt;&amp;gt; the signatures. This allows transactions to be bound to any output that&lt;br/&gt;&amp;gt; matches the value committed to in the witness and whose witnessProgram,&lt;br/&gt;&amp;gt; combined with the spending transaction&amp;#39;s witness returns true.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; if an exchange were to once produce a digital signature from that cold&lt;br/&gt;&amp;gt; storage address with a SIGHASH_NOINPUT signature, that signature can be&lt;br/&gt;&amp;gt; replayed again and again on the blockchain until their wallet is drained.&lt;br/&gt;&amp;gt; This might be able to mitigated since the signatures commit to outputs,&lt;br/&gt;&amp;gt; which may be small in value for the transaction that SIGHASH_NOINPUT was&lt;br/&gt;&amp;gt; used. This means that an exchange could move coins from the address with a&lt;br/&gt;&amp;gt; larger transaction that spends money to a new output (and presumably pays a&lt;br/&gt;&amp;gt; higher fee than the smaller transactions).&lt;br/&gt;&lt;br/&gt;Thanks for sharing your concerns Chris, I do agree that noinput and&lt;br/&gt;friends are a very sharp knife that needs to be treated carefully, but&lt;br/&gt;ultimately it&amp;#39;s exactly its sharpness that makes it useful :-)&lt;br/&gt;&lt;br/&gt;&amp;gt; ### Why does this matter?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It seems that SIGHASH_NOINPUT will be an extremely useful tool for offchain&lt;br/&gt;&amp;gt; protocols like Lightning. This gives us the building blocks for enforcing&lt;br/&gt;&amp;gt; specific offchain states to end up onchain [2].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Since this tool is useful, we can presume that it will be integrated into&lt;br/&gt;&amp;gt; the signing path of large economic entities in bitcoin -- namely exchanges.&lt;br/&gt;&amp;gt; Many exchanges have specific signing procedures for transactions that are&lt;br/&gt;&amp;gt; leaving an exchange that is custom software. Now -- presuming wide adoption&lt;br/&gt;&amp;gt; of off chain protocols -- they will need to have a _second unique signing&lt;br/&gt;&amp;gt; path that uses SIGHASH_NOINPUT_.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It is imperative that this second signing path -- which uses&lt;br/&gt;&amp;gt; SIGHASH_NOINPUT -- does NOT get mixed up with the first signing path that&lt;br/&gt;&amp;gt; controls an exchanges onchain funds. If this were to happen, fund lost&lt;br/&gt;&amp;gt; could occur if the exchange is reusing address, which seems to be common&lt;br/&gt;&amp;gt; practice.&lt;br/&gt;&lt;br/&gt;Totally agreed, and as you point out, BIP118 is careful to mandate&lt;br/&gt;separate private keys be used for off-chain contracts and that the&lt;br/&gt;off-chain contract never be mixed with the remainder of your funds. The&lt;br/&gt;way eltoo uses noinput we selectively open us up to replay attacks&lt;br/&gt;(because that&amp;#39;s what the update mechanism is after all) by controlling&lt;br/&gt;the way the transactions can be replayed very carefully, and any other&lt;br/&gt;use of noinput would need to make sure to have the same guarantees.&lt;br/&gt;However, once we have separated the two domains, we can simply use a&lt;br/&gt;separate (hardened) derivation path from a seed key, and never mix them&lt;br/&gt;afterwards. We never exchange any private keys, so even leaking info&lt;br/&gt;across derived keys is not an issue here.&lt;br/&gt;&lt;br/&gt;&amp;gt; This is stated here in BIP118:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;This also means that particular care has to be taken in order to avoid&lt;br/&gt;&amp;gt; unintentionally enabling this rebinding mechanism. NOINPUT MUST NOT be&lt;br/&gt;&amp;gt; used, unless it is explicitly needed for the application, e.g., it MUST NOT&lt;br/&gt;&amp;gt; be a default signing flag in a wallet implementation. Rebinding is only&lt;br/&gt;&amp;gt; possible when the outputs the transaction may bind to all use the same&lt;br/&gt;&amp;gt; public keys. Any public key that is used in a NOINPUT signature MUST only&lt;br/&gt;&amp;gt; be used for outputs that the input may bind to, and they MUST NOT be used&lt;br/&gt;&amp;gt; for transactions that the input may not bind to. For example an application&lt;br/&gt;&amp;gt; SHOULD generate a new key-pair for the application instance using NOINPUT&lt;br/&gt;&amp;gt; signatures and MUST NOT reuse them afterwards.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This means we need to encourage onchain hot wallet signing procedures to be&lt;br/&gt;&amp;gt; kept separate from offchain hot wallet signing procedures, which introduces&lt;br/&gt;&amp;gt; more complexity for key management (two keychains).&lt;br/&gt;&lt;br/&gt;This is already the case: off-chain systems always require access to the&lt;br/&gt;signing key in real-time in order to be useful. If any state change is&lt;br/&gt;performed in a channel, even just adjusting fees or receiving a payment,&lt;br/&gt;requires the signature from the key associated with the channel. With&lt;br/&gt;high security on-chain systems on the other hand you should never have a&lt;br/&gt;hot key that automatically signs off on transfers without human&lt;br/&gt;intervention. So I find it unlikely that mandating the on-chain keys to&lt;br/&gt;be kept separate from off-chain keys is any harder than what should be&lt;br/&gt;done with the current systems.&lt;br/&gt;&lt;br/&gt;&amp;gt; One (of the few) upsides of the current Lightning penalty mechanism is that&lt;br/&gt;&amp;gt; fund loss can be contained to balance of the channel. You cannot do&lt;br/&gt;&amp;gt; something in the current protocol that will effect your funds outside of&lt;br/&gt;&amp;gt; that channel. With SIGHASH_NOINPUT, that property changes.&lt;br/&gt;&lt;br/&gt;Good point, but if the key hygiene is maintained as detailed in BIP118,&lt;br/&gt;i.e., off-chain keys must be kept separate from on-chain keys, and that&lt;br/&gt;each off-chain contract instance uses a separate set of keys, that&lt;br/&gt;property is maintained.&lt;br/&gt;&lt;br/&gt;Regards,&lt;br/&gt;Christian
    </content>
    <updated>2023-06-09T14:56:18&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsz29jt7ynlqxusksez4h4vd2vqlx7m83f5dma07pssplq3k5x73dgzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wkh6ksq</id>
    
      <title type="html">📅 Original date posted:2019-05-15 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsz29jt7ynlqxusksez4h4vd2vqlx7m83f5dma07pssplq3k5x73dgzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wkh6ksq" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8d22zdhunsuquz6rkyazgjj2pswknqws5df53frdc0um69pfhdwcvyhax3&#39;&gt;nevent1q…hax3&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-05-15&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Bastien,&lt;br/&gt;&lt;br/&gt;thanks for investigating.&lt;br/&gt;&lt;br/&gt;&amp;gt; I have been digging into Anthony Towns&amp;#39; anyprevout BIP&lt;br/&gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://github.com/ajtowns/bips/blob/bip-anyprevout/bip-anyprevout.mediawiki&amp;gt&#34;&gt;https://github.com/ajtowns/bips/blob/bip-anyprevout/bip-anyprevout.mediawiki&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt; proposal&lt;br/&gt;&amp;gt; to verify that it has everything we need for Eltoo&lt;br/&gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://blockstream.com/eltoo.pdf&amp;gt&#34;&gt;https://blockstream.com/eltoo.pdf&amp;gt&lt;/a&gt;;.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The separation between anyprevout and anyprevoutanyscript is very handy&lt;br/&gt;&amp;gt; (compared to the previous noinput proposal).&lt;br/&gt;&amp;gt; Unless I&amp;#39;m missing something, it would simplify the funding tx (to a simple&lt;br/&gt;&amp;gt; multisig without cltv/csv) and remove the need for the trigger tx.&lt;br/&gt;&lt;br/&gt;I think it makes sense for us to consider both variants, one committing&lt;br/&gt;to the script and the other not committing to the script, but I think it&lt;br/&gt;applies rather to the `update_tx` &amp;lt;-&amp;gt; `settlement_tx` link and less to&lt;br/&gt;the `funding_tx` &amp;lt;-&amp;gt; `update_tx` link and `update_tx` &amp;lt;-&amp;gt; `update_tx`&lt;br/&gt;link. The reason is that the `settlement_tx` needs to be limited to be&lt;br/&gt;bindable only to the matching `update_tx` (`anyprevout`), while&lt;br/&gt;`update_tx` need to be bindable to the `funding_tx` as well as any prior&lt;br/&gt;`update_tx` which differ in the script by at least the state number&lt;br/&gt;(hence `anyprevoutanyscript`).&lt;br/&gt;&lt;br/&gt;Like AJ pointed out in another thread, the use of an explicit trigger&lt;br/&gt;transaction is not really needed since any `update_tx` can act as a&lt;br/&gt;trigger transaction (i.e., start the relative timeouts to tick). This&lt;br/&gt;was an oversight of mine, which may have contributed more confusion than&lt;br/&gt;necessary :-)&lt;br/&gt;&lt;br/&gt;The `funding_tx` itself doesn&amp;#39;t need any form of timeout, in fact&lt;br/&gt;collaborative spending/closing without a timeout should always be&lt;br/&gt;possible. The `settlement_tx`s can have a BIP68-style relative timelock,&lt;br/&gt;which also saves us a few bytes.&lt;br/&gt;&lt;br/&gt;&amp;gt; The more tricky part to integrate is the chaperone signature.&lt;br/&gt;&amp;gt; If I understand it correctly (which I&amp;#39;m not guaranteeing), we would need to&lt;br/&gt;&amp;gt; modify the update transactions to something like:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; OP_IF&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     10 OP_CSV&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     1 A(s,i) B(s,i) 2 OP_CHECKMULTISIGVERIFY          &amp;lt;- public keys&amp;#39; first&lt;br/&gt;&amp;gt;&amp;gt; byte in this line is 0x02 or 0x03&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     2 A(s,i) B(s,i) 2 OP_CHECKMULTISIGVERIFY          &amp;lt;- public keys&amp;#39; first&lt;br/&gt;&amp;gt;&amp;gt; byte in this line is 0x00 or 0x01&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; OP_ELSE&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     &amp;lt;S(i) &#43; 1&amp;gt; OP_CLTV&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     1 A(u) B(u) 2  OP_CHECKMULTISIGVERIFY          &amp;lt;- public keys&amp;#39; first&lt;br/&gt;&amp;gt;&amp;gt; byte in this line is 0x02 or 0x03&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     2 A(u) B(u) 2  OP_CHECKMULTISIGVERIFY          &amp;lt;- public keys&amp;#39; first&lt;br/&gt;&amp;gt;&amp;gt; byte in this line is 0x00 or 0x01&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; OP_END&lt;br/&gt;&lt;br/&gt;We could collapse those 1-of-2 multisigs into a single-sig if we just&lt;br/&gt;collaboratively create a shared private key that is specific to the&lt;br/&gt;instance of the protocol upon setup. That minimizes the extra space&lt;br/&gt;needed.&lt;br/&gt;&lt;br/&gt;Something that I notived talking to Jonas Nick is that we might have&lt;br/&gt;some interaction between the taproot and noinput (or any of its aliases&lt;br/&gt;:D). Specifically we can&amp;#39;t make make use of the collaborative path where&lt;br/&gt;we override an `update_tx` with a newer one in taproot as far as I can&lt;br/&gt;see, since the `update_tx` needs to be signed with noinput (for&lt;br/&gt;rebindability) but there is no way for us to specify the chaperone key&lt;br/&gt;since we&amp;#39;re not revealing the committed script.&lt;br/&gt;&lt;br/&gt;&amp;gt; (I ommitted the tapscript changes, ie moving to OP_CHECKSIGADD, to&lt;br/&gt;&amp;gt; highlight only the chaperone changes)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; When updating the channel, Alice and Bob would exchange their&lt;br/&gt;&amp;gt; anyprevoutanyscript signatures (for the 2-of-2 multisig).&lt;br/&gt;&amp;gt; The chaperone signature can be provided by either Alice or Bob at&lt;br/&gt;&amp;gt; transaction broadcast time (so that it commits to a specific input&lt;br/&gt;&amp;gt; transaction).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It seems to me that using the same key for both signatures (the chaperone&lt;br/&gt;&amp;gt; one and the anyprevoutanyscript one) is safe here, but if someone knows&lt;br/&gt;&amp;gt; better I&amp;#39;m interested.&lt;br/&gt;&amp;gt; If that&amp;#39;s unsafe, we simply need to introduce another key-pair (chaperone&lt;br/&gt;&amp;gt; key).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Is that how you guys understand it too? Do you have other ideas on how to&lt;br/&gt;&amp;gt; comply with the need for a chaperone signature?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Note that as Anthony said himself, the BIP isn&amp;#39;t final and we don&amp;#39;t know&lt;br/&gt;&amp;gt; yet if chaperone signatures will eventually be needed, but I think it&amp;#39;s&lt;br/&gt;&amp;gt; useful to make sure that Eltoo could support it.&lt;br/&gt;&lt;br/&gt;I quite like the chaperone idea, however it doesn&amp;#39;t really play nice&lt;br/&gt;with taproot collaborative spends that require anyprevout /&lt;br/&gt;anyprevoutanyscript / noinput, which would make our transactions stand&lt;br/&gt;out quite a bit. Then again this is only the case for the unhappy,&lt;br/&gt;unilateral close, path of the protocol, which (hopfully) should happen&lt;br/&gt;rarely.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Christian
    </content>
    <updated>2023-06-09T14:54:59&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsgzkt3l3at8ey5ut4q2kcpr32ny299cq045ndnntj4lvv4k68y36qzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wg57nxk</id>
    
      <title type="html">📅 Original date posted:2019-04-03 📝 Original message: On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsgzkt3l3at8ey5ut4q2kcpr32ny299cq045ndnntj4lvv4k68y36qzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wg57nxk" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfvu9mtjxpamp3gtvzw846mghyjwl9euc7c9pkk5e85kmg34n2l2shslk68&#39;&gt;nevent1q…lk68&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-04-03&lt;br/&gt;📝 Original message:&lt;br/&gt;On Wed, 3 Apr 2019, 05:42 ZmnSCPxj via Lightning-dev &amp;lt;&lt;br/&gt;lightning-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Good morning Pierre and list,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;     There is another unrelated issue: because trampoline nodes don&amp;#39;t know&lt;br/&gt;&amp;gt; &amp;gt;     anything about what happened before they received the onion, they may&lt;br/&gt;&amp;gt; &amp;gt;     unintentionnaly create overlapping routes. So we can&amp;#39;t simply use the&lt;br/&gt;&amp;gt; &amp;gt;     payment_hash as we currently do, we would have to use something a bit&lt;br/&gt;&amp;gt; &amp;gt;     more elaborate.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Just to be clear, the issue is for example with a network like:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     A ------- B -------- C&lt;br/&gt;&amp;gt;              / \&lt;br/&gt;&amp;gt;             /   \&lt;br/&gt;&amp;gt;            /     \&lt;br/&gt;&amp;gt;           /       \&lt;br/&gt;&amp;gt;          D ------- E&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Then, A creates an inner trampoline onion &amp;#34;E-&amp;gt;C&amp;#34;, and an outer onion&lt;br/&gt;&amp;gt; &amp;#34;A-&amp;gt;B-&amp;gt;E&amp;#34;.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; E, on receiving the inner trampoline onion &amp;#34;E-&amp;gt;C&amp;#34;, finds that E-&amp;gt;B&lt;br/&gt;&amp;gt; direction is low capacity, so routes over the outer onion &amp;#34;E-&amp;gt;D-&amp;gt;B-&amp;gt;C&amp;#34; with&lt;br/&gt;&amp;gt; inner trampoline onion &amp;#34;C&amp;#34;.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This creates an overall route A-&amp;gt;B-&amp;gt;E-&amp;gt;D-&amp;gt;B-&amp;gt;C.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; When the B-&amp;gt;C HTLC is resolved, B can instead claim the A-&amp;gt;B HTLC and just&lt;br/&gt;&amp;gt; fail the D-&amp;gt;B HTLC, thereby removing D and E from the route and claiming&lt;br/&gt;&amp;gt; their fees, even though they participated in the route.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;This is not an issue. Like we discussed for the multi-part payments the&lt;br/&gt;HTLCs still resolve correctly, though node B might chose to short circuit&lt;br/&gt;the payment it&amp;#39;ll also clear the HTLCs through E And D (by failing them&lt;br/&gt;instead of settling them) but the overall payment remains atomic and&lt;br/&gt;end-to-end secure. The skipped nodes (which may include the trampoline) may&lt;br/&gt;lose a bit of fees, but that is not in any way different than a failed&lt;br/&gt;payment attempt that is being retried from the sender :-)&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20190403/326187f0/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20190403/326187f0/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T14:54:47&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsr6mve0xzsm5gpx4jvlh4rquzqkq06r2pnznfrchkexwulgskktagzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wqyfjr7</id>
    
      <title type="html">📅 Original date posted:2019-03-14 📝 Original message: ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsr6mve0xzsm5gpx4jvlh4rquzqkq06r2pnznfrchkexwulgskktagzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wqyfjr7" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsznecmp4nfzxln0q5z86grk9ts8eed3kecjll2lc0ta8u6j2mjngq2r3gc4&#39;&gt;nevent1q…3gc4&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-03-14&lt;br/&gt;📝 Original message:&lt;br/&gt;Anthony Towns &amp;lt;aj at erisian.com.au&amp;gt; writes:&lt;br/&gt;&amp;gt; I&amp;#39;m thinking of tagged outputs as &amp;#34;taproot plus&amp;#34; (ie, plus noinput),&lt;br/&gt;&amp;gt; so if you used a tagged output, you could do everything normal taproot&lt;br/&gt;&amp;gt; address could, but also do noinput sigs for them.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; So you might have:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    funding tx -&amp;gt; cooperative claim&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    funding tx -&amp;gt; update 3 [TAGGED] -&amp;gt; settlement 3 -&amp;gt; claim&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    funding tx -&amp;gt; update 3 [TAGGED] -&amp;gt; &lt;br/&gt;&amp;gt;                  update 4 [TAGGED,NOINPUT] -&amp;gt; &lt;br/&gt;&amp;gt; 		 settlement 4 [TAGGED,NOINPUT] -&amp;gt; &lt;br/&gt;&amp;gt; 		 claim [NOINPUT]&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In the cooperative case, no output tagging needed.&lt;br/&gt;&lt;br/&gt;I might be missing something here, but how do you bind update 3 to the&lt;br/&gt;funding tx output, when that output is not tagged? Do we keep each&lt;br/&gt;update in multiple separate states, one bound to the funding tx output&lt;br/&gt;and another signed with noinput? If that&amp;#39;s the case we just doubled our&lt;br/&gt;storage and communication requirements for very little gain. An&lt;br/&gt;alternative is to add a trigger transaction that needs to be published&lt;br/&gt;in a unilateral case, but that&amp;#39;d increase our on-chain footprint.
    </content>
    <updated>2023-06-09T14:54:28&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsq87v3mx6purr0k0vpv885az82f8ezvnjpq2z6ce7gz7x3km3394qzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wsl5cnh</id>
    
      <title type="html">📅 Original date posted:2018-11-13 📝 Original message: Great ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsq87v3mx6purr0k0vpv885az82f8ezvnjpq2z6ce7gz7x3km3394qzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wsl5cnh" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqujmadj0y6wca23vy2hslt3lf57uah6yext67u5wvus4wma6ctvqasecxq&#39;&gt;nevent1q…ecxq&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-11-13&lt;br/&gt;📝 Original message:&lt;br/&gt;Great proposal ZmnSCPxj, but I think I need to raise a small issue with&lt;br/&gt;it. While writing up the proposal for rendez-vous I came across a&lt;br/&gt;problem with the mechanism I described during the spec meeting: the&lt;br/&gt;padding at the rendez-vous point would usually zero-padded and then&lt;br/&gt;encrypted in one go with the shared secret that was generated from the&lt;br/&gt;previous ephemeral key (i.e., the one before the switch). That ephemeral&lt;br/&gt;key is not known to the recipient (barring additional rounds of&lt;br/&gt;communication) so the recipient would be unable to compute the correct&lt;br/&gt;MACs. There are a number of solutions to this, basically setting the&lt;br/&gt;padding to something that the recipient could know when generating its&lt;br/&gt;half onion.&lt;br/&gt;&lt;br/&gt;My current favorite goes like this:&lt;br/&gt;&lt;br/&gt; 1. Rendez-vous RV receives an onion, performs ECDH like normal to get&lt;br/&gt;    the shared secret, decrypts its payload, simultaneously encrypts&lt;br/&gt;    the padding.&lt;br/&gt; 2. It extracts its per-hop payload and shifts the entire packet over&lt;br/&gt;    (shift its payload out and the newly generated padding in)&lt;br/&gt; 3. It then notices that it should perform an ephemeral key switch, now&lt;br/&gt;    deviating from the normal protocol (which would just be to generate&lt;br/&gt;    the new ephemeral key, serialize and forward)&lt;br/&gt;    3.1. It zero-fills the padding that it just added (so we are in a&lt;br/&gt;         state that the recipient knew when generating its partial onion&lt;br/&gt;    3.2 It performs ECDH with the switched in ephemeral key to get a new&lt;br/&gt;        shared secret that which is then used to unwrap one additional&lt;br/&gt;        layer of encryption, and most importantly encrypt the padding so&lt;br/&gt;        the next hop doesn&amp;#39;t see the zero-filled padding.&lt;br/&gt;    3.3 Only then will it generate the new ephemeral key for the next&lt;br/&gt;        hop, based on the switched in ephemeral key and the newly&lt;br/&gt;        generated shared secret, serialize the packet and forward it.&lt;br/&gt;&lt;br/&gt;This has the advantage of reusing all the existing machinery but&lt;br/&gt;assembling it a bit differently, by adding a little detour when&lt;br/&gt;generating the next onion. It involves one additional ECDH at the&lt;br/&gt;rendez-vous, one ChaCha20 encryption and one scalar multiplication to&lt;br/&gt;generate the next ephemeral keys. It does not need more space than the&lt;br/&gt;single ephemeral key in the per-hop payload.&lt;br/&gt;&lt;br/&gt;And now for the reason that I write this as a reply to your post: with&lt;br/&gt;this scheme it is not possible for C to find an ephemeral key that would&lt;br/&gt;end up identical to the one that D would require to decrypt the onion&lt;br/&gt;correctly. This would not be an issue if D is informed about this split&lt;br/&gt;and would basically accept whatever it gets, but that kind of defeats&lt;br/&gt;the transparency that you were going for with your proposal.&lt;br/&gt;&lt;br/&gt;I&amp;#39;m open for other proposals but I currently can&amp;#39;t think of a way to&lt;br/&gt;make sure that a) the recipient can deterministically generate the same&lt;br/&gt;padding that RV will generate, and b) hide the fact that RV was indeed a&lt;br/&gt;rendez-vous point (e.g., by leaving the padding be a well known&lt;br/&gt;constant).&lt;br/&gt;&lt;br/&gt;Sorry for this problem, I had a mental off-by-one at the meeting that I&lt;br/&gt;hadn&amp;#39;t considered, the solution should work, but it makes this kind of&lt;br/&gt;things a bit harder.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Christian&lt;br/&gt;   &lt;br/&gt;&lt;br/&gt;ZmnSCPxj via Lightning-dev &amp;lt;lightning-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;writes:&lt;br/&gt;&amp;gt; Good morning list,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As was discussed directly in summit, we accept link-lvel payment splitting (scid is not binding), and provisionally accept rendez-vous routing.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It strikes me, that even if your node has only a single channel to the next node (c-lightning), it is possible, to still perform link-level payment splitting/re-routing.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For instance, consider this below graph:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;       E&amp;lt;---D---&amp;gt;C&amp;lt;---B&lt;br/&gt;&amp;gt;            ^  /&lt;br/&gt;&amp;gt;            | /&lt;br/&gt;&amp;gt;            |L&lt;br/&gt;&amp;gt;            A&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In the above, B requests a route from B-&amp;gt;C-&amp;gt;D-&amp;gt;E.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; However, C cannot send to D, since the channel direction is saturated in favor of D.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Alternately, C can route to D via A instead.  It holds the (encrypted) route from D to E.  It can take that sub-route and treat it as a partial route-to-payee under rendez-vous routing, as long as node A supports rendez-vous routing.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This can allow re-routing or payment splitting over multiple hops.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Even though C does not know the number of remaining hops between D and the destination, its alternative is to earn nothing anyway as its only alternative is to fail the routing.  At least with this, there is a chance it can succeed to send the payment to the final destination.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Regards,&lt;br/&gt;&amp;gt; ZmnSCPxj&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;
    </content>
    <updated>2023-06-09T14:52:24&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsvnz8tjn47z35c9kzvh9v5dd9u33q0qg5z0rvsqretts97ky8za9czypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wp8ep9e</id>
    
      <title type="html">📅 Original date posted:2018-10-11 📝 Original message: On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsvnz8tjn47z35c9kzvh9v5dd9u33q0qg5z0rvsqretts97ky8za9czypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wp8ep9e" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2t7tf78gqr0cu2llany3duy6umkpj2cltmrnn6rs3r6q9vrr5lhcr5gev9&#39;&gt;nevent1q…gev9&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-10-11&lt;br/&gt;📝 Original message:&lt;br/&gt;On Thu, Oct 11, 2018 at 3:40 AM Rusty Russell &amp;lt;rusty at rustcorp.com.au&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; &amp;gt; * Once we have enough confirmations we merge the channels (either&lt;br/&gt;&amp;gt; &amp;gt; automatically or with the next channel update). A new commitment tx is&lt;br/&gt;&amp;gt; &amp;gt; being created which now spends each output of each of the two funding tx&lt;br/&gt;&amp;gt; &amp;gt; and assigns the channel balance to the channel partners accordingly to&lt;br/&gt;&amp;gt; the&lt;br/&gt;&amp;gt; &amp;gt; two independent channels. The old commitment txs are being invalidated.&lt;br/&gt;&amp;gt; &amp;gt; * The disadvantage is that while splicing is not completed and if the&lt;br/&gt;&amp;gt; &amp;gt; funder of the splicing tx is trying to publish an old commitment tx the&lt;br/&gt;&amp;gt; &amp;gt; node will only be punished by sending all the funds of the first funding&lt;br/&gt;&amp;gt; tx&lt;br/&gt;&amp;gt; &amp;gt; to the partner as the special commitment tx of the 2nd output has no&lt;br/&gt;&amp;gt; newer&lt;br/&gt;&amp;gt; &amp;gt; state yet.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Yes, this is the alternative method; produce a parallel funding tx&lt;br/&gt;&amp;gt; (which only needs to support a single revocation, or could even be done&lt;br/&gt;&amp;gt; by a long timeout) and then join them when it reaches the agreed depth.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It has some elegance; particularly because one side doesn&amp;#39;t have to do&lt;br/&gt;&amp;gt; any validation or store anything until it&amp;#39;s about to splice in.  You get&lt;br/&gt;&amp;gt; asked for a key and signature, you produce a new one, and sign whatever&lt;br/&gt;&amp;gt; tx they want.  They hand you back the tx and the key you used once it&amp;#39;s&lt;br/&gt;&amp;gt; buried far enough, and you check the tx is indeed buried and the output&lt;br/&gt;&amp;gt; is the script you&amp;#39;re expecting, then you flip the commitment tx.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; But I chose chose not to do this because every transaction commitment&lt;br/&gt;&amp;gt; forever will require 2 signatures, and doesn&amp;#39;t allow us to forget old&lt;br/&gt;&amp;gt; revocation information.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; And it has some strange side-effects: onchain this looks like two&lt;br/&gt;&amp;gt; channels; do we gossip about both?  We have to figure the limit on&lt;br/&gt;&amp;gt; splice-in to make sure the commitment tx stays under 400kSipa.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;This is a lot closer to my original proposal for splicing, and I&lt;br/&gt;still like it a lot more since the transition from old to new&lt;br/&gt;channel is bascially atomic (not having to update state on both&lt;br/&gt;pre-splice and post-splice version). The new funds will remain&lt;br/&gt;unavailable for the same time, and since we allow only one&lt;br/&gt;concurrent splice in your proposal we don&amp;#39;t even lose any&lt;br/&gt;additional time regarding the splice-outs.&lt;br/&gt;&lt;br/&gt;So pulling the splice_add_input and splice_add_output up to&lt;br/&gt;signal the intent of adding funds to a splice. Splice_all_added&lt;br/&gt;is then used to start moving the funds to a pre-allocated 2-of-2&lt;br/&gt;output where the funds can mature. Once the funds are&lt;br/&gt;matured (e.g., 6 confirmations) we can start the transition: both&lt;br/&gt;parties claim the funding output, and the pre-allocated funds, to&lt;br/&gt;create a new funding tx which is immediately broadcast, and we&lt;br/&gt;flip over to the new channel state. No need to keep parallel&lt;br/&gt;state and then disambiguating which one it was.&lt;br/&gt;&lt;br/&gt;The downsides of this is that we now have 2 on-chain&lt;br/&gt;transactions (pre-allocation and re-open), and splice-outs are no&lt;br/&gt;longer immediate if we have a splice-in in the changeset as well.&lt;br/&gt;The latter can be remediatet with one more reanchor that just&lt;br/&gt;considers splice-ins that were proposed.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; I believe splicing out is even safer:&lt;br/&gt;&amp;gt; &amp;gt; * One just creates a spent of the funding tx which has two outputs. One&lt;br/&gt;&amp;gt; &amp;gt; output goes to the recipient of the splice out operation and the second&lt;br/&gt;&amp;gt; &amp;gt; output acts as a new funding transaction for the newly spliced channel.&lt;br/&gt;&amp;gt; &amp;gt; Once signatures for the new commitment transaction are exchanged&lt;br/&gt;&amp;gt; (basically&lt;br/&gt;&amp;gt; &amp;gt; following the protocol to open a channel) the splicing operation can be&lt;br/&gt;&amp;gt; &amp;gt; broadcasted.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; * The old channel MUST NOT be used anymore but the new channel can be&lt;br/&gt;&amp;gt; &amp;gt; operational right away without blockchain confirmation. In case someone&lt;br/&gt;&amp;gt; &amp;gt; tries to publish an old state of the old channel it will be a double&lt;br/&gt;&amp;gt; spent&lt;br/&gt;&amp;gt; &amp;gt; of the splicing operation and in the worst case will be punished and the&lt;br/&gt;&amp;gt; &amp;gt; splicing was not successful.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;  if one publishes an old state of the new&lt;br/&gt;&amp;gt; &amp;gt; channel everything will just work as normal even if the funding tx is not&lt;br/&gt;&amp;gt; &amp;gt; yet mined. It could only be replaced with an old state of the previous&lt;br/&gt;&amp;gt; &amp;gt; channel (which as we saw is not a larger risk than the usual operation&lt;br/&gt;&amp;gt; of a&lt;br/&gt;&amp;gt; &amp;gt; lightning node)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Right, you&amp;#39;re relying on CPFP pushing through the splice-out tx if it&lt;br/&gt;&amp;gt; gets stuck.  This requires that we check carefully for standardness and&lt;br/&gt;&amp;gt; other constraints which might prevent this; for example, we can&amp;#39;t allow&lt;br/&gt;&amp;gt; more than 20 (?) of these in a row without being sufficiently buried&lt;br/&gt;&amp;gt; since I think that&amp;#39;s where CPFP calculations top out.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;We shouldn&amp;#39;t allow more than one pending splice operation anyway, as&lt;br/&gt;stated in your proposal initially. We are already critically reliant on our&lt;br/&gt;transaction being confirmed on-chain, so I don&amp;#39;t see this as much of an&lt;br/&gt;added issue.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; &amp;gt; As mentioned maybe you had this workflow already in your mind but I don&amp;#39;t&lt;br/&gt;&amp;gt; &amp;gt; see why we need to send around all the messages twice with my workflow.&lt;br/&gt;&amp;gt; We&lt;br/&gt;&amp;gt; &amp;gt; only need to maintain double state but only until it is fair / safe to do&lt;br/&gt;&amp;gt; &amp;gt; so. I would also believe that with my approach it should be possible (but&lt;br/&gt;&amp;gt; &amp;gt; not really necessary) to have multiple splicing operations in parallel.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The extra sigs are only needed in transition, though; once splicing is&lt;br/&gt;&amp;gt; over the channel looks exactly like a newly created one, which is nice.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;I&amp;#39;m less worried about the bandwidth overhead, rather the&lt;br/&gt;parallel state updates are error prone and there might be&lt;br/&gt;corner-cases that we simply don&amp;#39;t see right now. Having parallel&lt;br/&gt;state-updates just for the sake of saving some on-chain&lt;br/&gt;fees (fees that we&amp;#39;d spend in purely on-chain cases anyway) has a&lt;br/&gt;direct impact on the channel state machine.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; &amp;gt; One other question: What happens to the short_channel_id of a channel to&lt;br/&gt;&amp;gt; &amp;gt; which founds have been spliced in?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In the parallel splice world, they look like two channels.  In my&lt;br/&gt;&amp;gt; proposal it looks like a new channel, with a channel_update to make sure&lt;br/&gt;&amp;gt; modern nodes know that the transition is happening.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;With the pre-allocation the final effect is the same, we&amp;#39;ve just&lt;br/&gt;pulled some of the waiting time above the re-anchoring and added&lt;br/&gt;one more TX.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;This is one of the cases where a simpler solution (relatively&lt;br/&gt;speaking ^^) is to be preferred imho, allowing for future&lt;br/&gt;iterations.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Christian&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20181011/f7fa9632/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20181011/f7fa9632/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T14:51:37&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfmh4emh4y3wzcghf37vc6uglph4n7h0mjqre2nes349chxd2zgwczypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wupkn8r</id>
    
      <title type="html">📅 Original date posted:2018-09-20 📝 Original message: That ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfmh4emh4y3wzcghf37vc6uglph4n7h0mjqre2nes349chxd2zgwczypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wupkn8r" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsffs93u67u3pv69m99jxrtg5jhy47vv47kalder4jmemgpmkdupccc8clt2&#39;&gt;nevent1q…clt2&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-09-20&lt;br/&gt;📝 Original message:&lt;br/&gt;That might not be so desirable, since it leaks the current channel&lt;br/&gt;capacity to the user. Depending on how fine grained the amount in the&lt;br/&gt;invoice is and how the user can control it, he could do a binary search&lt;br/&gt;over capacities and very reliably tell how much capacity you have and&lt;br/&gt;track it over time. That is still the case for a single channel, but if&lt;br/&gt;you always chose the same channel it reduces how much info is leaked.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Christian&lt;br/&gt;&lt;br/&gt;Johan Torås Halseth &amp;lt;johanth at gmail.com&amp;gt; writes:&lt;br/&gt;&amp;gt; Any reason not to include _all_ (up to a limit) incoming channels with&lt;br/&gt;&amp;gt; sufficient capacity?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; Johan&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Thu, Sep 20, 2018 at 4:12 AM Rusty Russell &amp;lt;rusty at blockstream.com&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Hi all,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;         I&amp;#39;m considering a change to c-lightning, where `invoice` would&lt;br/&gt;&amp;gt;&amp;gt; automatically append an &amp;#39;r&amp;#39; field for a channel which has sufficient&lt;br/&gt;&amp;gt;&amp;gt; *incoming* capacity for the amount (using a weighted probability across&lt;br/&gt;&amp;gt;&amp;gt; our peers).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;          This isn&amp;#39;t quite what &amp;#39;r&amp;#39; was for, but it would be a useful&lt;br/&gt;&amp;gt;&amp;gt; hint for payment routing and also potentially for establishing an&lt;br/&gt;&amp;gt;&amp;gt; initial channel.  This is an issue for the Blockstream Store which&lt;br/&gt;&amp;gt;&amp;gt; deliberately doesn&amp;#39;t advertize an address any more to avoid&lt;br/&gt;&amp;gt;&amp;gt; centralization.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Thoughts welcome!&lt;br/&gt;&amp;gt;&amp;gt; Rusty.&lt;br/&gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;
    </content>
    <updated>2023-06-09T14:51:31&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs0jlnxate8m7xzxaje0lezxvw9mtm900jq2zj6tl07p354e4n09dgzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9w5rr4sq</id>
    
      <title type="html">📅 Original date posted:2018-05-03 📝 Original message: ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs0jlnxate8m7xzxaje0lezxvw9mtm900jq2zj6tl07p354e4n09dgzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9w5rr4sq" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszt69q7rju0ureefgvpqhz5tctwez22dx8t06lkfaqnhw8nrqd08g8j0et9&#39;&gt;nevent1q…0et9&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-05-03&lt;br/&gt;📝 Original message:&lt;br/&gt;ZmnSCPxj &amp;lt;ZmnSCPxj at protonmail.com&amp;gt; writes:&lt;br/&gt;&amp;gt; Ha, no, looking at the detailed `SIGHASH_NOINPUT` spec, `hashPrevouts`, which normally commits to the other inputs, is blanked, so we do not commit to them either.  This means that `SIGHASH_NOINPUT` implicitly has a `SIGHASH_ANYONECANPAY`.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; (the BIP `SIGHASH_NOINPUT` in the eltoo pdf does not mention `hashSequence`, but it seems you managed to add that to your github BIP repository)&lt;br/&gt;&lt;br/&gt;Yeah, Russell O&amp;#39;Connor pointed that difference out and I saw no point in&lt;br/&gt;committing to the hashSequence, so I amended both the paper and the&lt;br/&gt;BIP. The paper will get updated in a few days with the typos people have&lt;br/&gt;found, but I thought that the BIP discussion was more urgent to keep up&lt;br/&gt;to date, so I pushed that directly :-)
    </content>
    <updated>2023-06-09T14:50:20&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqszm44tf2u65xqwdcq5c2240n4xemf6z9my5slxpkykuwzn36weleszypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wrt75xw</id>
    
      <title type="html">📅 Original date posted:2018-05-01 📝 Original message: ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqszm44tf2u65xqwdcq5c2240n4xemf6z9my5slxpkykuwzn36weleszypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wrt75xw" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqd207a8mlp9gd7q6ruae83sm7s840c2duvuyh8ng90wdc97q7thqas45yx&#39;&gt;nevent1q…45yx&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-05-01&lt;br/&gt;📝 Original message:&lt;br/&gt;Excellent summary ZmnSCPxj, I&amp;#39;ll try to address the points inline (if&lt;br/&gt;there is anything to add that is):&lt;br/&gt;&lt;br/&gt;ZmnSCPxj &amp;lt;ZmnSCPxj at protonmail.com&amp;gt; writes:&lt;br/&gt;&amp;gt; Hi Christian,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Let me know if I have summarized the paper accurately below:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1.  SIGHASH_NOINPUT removes all inputs of the transaction copy before&lt;br/&gt;&amp;gt;     signing/verifying.&lt;br/&gt;&lt;br/&gt;It sets them to a known constant, in this case we just blank&lt;br/&gt;them. Removing could entail more costly serialization depending on the&lt;br/&gt;implementation. bitcoind serializes into a hash accumulator so it&amp;#39;d not&lt;br/&gt;make a difference there, but others may do it differently.&lt;br/&gt;&lt;br/&gt;&amp;gt; 2.  SIGHASH_NOINPUT can be combined with SIGHASH_SINGLE.  It is&lt;br/&gt;&amp;gt; dangerous to combine it with SIGHASH_NONE (as this also deletes all&lt;br/&gt;&amp;gt; outputs of the transaction copy, so the signature only commits to&lt;br/&gt;&amp;gt; nLockTime) and possibly pointless to combine it with&lt;br/&gt;&amp;gt; SIGHASH_ANYONECANPAY (which deletes other inputs, but since there are&lt;br/&gt;&amp;gt; no inputs after SIGHASH_NOINPUT, there is nothing else to delete).&lt;br/&gt;&amp;gt; The BIP only mentions combining it with SIGHASH_SINGLE, in any case.&lt;br/&gt;&lt;br/&gt;`SIGHASH_SINGLE` really is only singled out (no pun intended) because it&lt;br/&gt;is usefull for the fee feature that Rusty came up with. It&amp;#39;s not our&lt;br/&gt;intention to exclude other uses, but you&amp;#39;re right, it&amp;#39;s hard to come up&lt;br/&gt;with a use-case for `SIGHASH_NOINPUT` in combination with&lt;br/&gt;`SIGHASH_NONE` or `SIGHASH_ANYONECANPAY` :-)&lt;br/&gt;&lt;br/&gt;In particular we don&amp;#39;t want to exclude potential future sighash types,&lt;br/&gt;but those will have to be dealt with when they come up.&lt;br/&gt;&lt;br/&gt;&amp;gt; 3.  We have these kinds transactions: (1) funding transaction paying&lt;br/&gt;&amp;gt; out to an ordinary N-of-N multisig (confirmed onchain); (2) offchain&lt;br/&gt;&amp;gt; trigger transaction spending a funding transaction and paying out to&lt;br/&gt;&amp;gt; the &amp;#34;update transaction script&amp;#34;; (3) offchain update transaction&lt;br/&gt;&amp;gt; spending a trigger or update transaction and paying out to the &amp;#34;update&lt;br/&gt;&amp;gt; transaction script&amp;#34; (the same script template as in trigger&lt;br/&gt;&amp;gt; transaction); (4) offchain settlement transaction spending a trigger&lt;br/&gt;&amp;gt; or update transaction and paying out to the counterparties according&lt;br/&gt;&amp;gt; to the final agreed distribution of funds.  Update and settlement&lt;br/&gt;&amp;gt; transactions are signed with SIGHASH_NOINPUT flags.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 4.  The update transaction script has two branches: a CSV-encumbered&lt;br/&gt;&amp;gt; N-of-N &amp;#34;settlement&amp;#34; branch, and a CLTV-encumbered N-of-N &amp;#34;update&amp;#34;&lt;br/&gt;&amp;gt; branch.  Crucially, we use past Unix timestamps for the CLTV&lt;br/&gt;&amp;gt; encumberance on the update.  The CLTV-encumberance starts with a&lt;br/&gt;&amp;gt; minimum time value on the trigger transaction, and increments by 1 for&lt;br/&gt;&amp;gt; every update transaction.&lt;br/&gt;&lt;br/&gt;Really any monotonically increasing sequence of increments will work,&lt;br/&gt;but incrementing by 1 maximizes the number of updates we can perform,&lt;br/&gt;yes.&lt;br/&gt;&lt;br/&gt;&amp;gt; 5.  The CLTV-encumberance ensures that if a past update transaction is&lt;br/&gt;&amp;gt; confirmed, we can spend it using any later update transaction, since&lt;br/&gt;&amp;gt; CLTV uses `stackTop &amp;lt;= nLockTime`.  The actual `nLockTime` we use is a&lt;br/&gt;&amp;gt; past Unix timestamp so they are not actually time-encumbered, but the&lt;br/&gt;&amp;gt; `OP_CLTV` still ensures that any later update transaction can be used&lt;br/&gt;&amp;gt; to spend from any earlier update transaction, but not vice versa.&lt;br/&gt;&amp;gt; This is actually quite clever.&lt;br/&gt;&lt;br/&gt;Correct, the only reason to use `nLocktime` here is that we need the&lt;br/&gt;signature of the update transaction to commit to the state number, so we&lt;br/&gt;can&amp;#39;t put it in the script itself.&lt;br/&gt;&lt;br/&gt;&amp;gt; 6.  The pubkeys on the settlement branch of each update transaction&lt;br/&gt;&amp;gt; are different, and are derived using any hierarchical derivation&lt;br/&gt;&amp;gt; method (trivially we can simply use the CLTV-encumberance value as the&lt;br/&gt;&amp;gt; derivation index).  This ensures that each settlement transaction can&lt;br/&gt;&amp;gt; only spend a particular update transaction.  Or in other words: There&lt;br/&gt;&amp;gt; is a one-to-one correspondence between update and settlement&lt;br/&gt;&amp;gt; transaction, and a settlement transaction can only confirm if the&lt;br/&gt;&amp;gt; corresponding update transaction can be confirmed deeply enough&lt;br/&gt;&amp;gt; without having its output re-spent.&lt;br/&gt;&lt;br/&gt;Other bindings are possible, e.g., compare the `nLocktime` again, but&lt;br/&gt;binding through pubkeys minimizes the script size.&lt;br/&gt;&lt;br/&gt;&amp;gt; 7.  The pubkeys on the update branch are all the same in all update&lt;br/&gt;&amp;gt; transactions.  This lets any update transaction replace any other&lt;br/&gt;&amp;gt; update transaction, as long as the CLTV-encumberance (which is used&lt;br/&gt;&amp;gt; for ordering rather than actual absolute locktime) is respected;&lt;br/&gt;&amp;gt; together they mean that any later update transaction can replace any&lt;br/&gt;&amp;gt; earlier update transaction.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 8.  If an old update transaction is confirmed, the settlement&lt;br/&gt;&amp;gt; transaction corresponding to it is still encumbered by CSV and cannot&lt;br/&gt;&amp;gt; be confirmed immediately.  During this time, a later update&lt;br/&gt;&amp;gt; transaction can spend it and be confirmed.  If that update transaction&lt;br/&gt;&amp;gt; is still not the latest available, it can be further replaced with&lt;br/&gt;&amp;gt; any, later transaction (since the CLTV-encumberance and the&lt;br/&gt;&amp;gt; `nLockTime` increase in lockstep with each other) until the latest&lt;br/&gt;&amp;gt; update transaction is confirmed.&lt;br/&gt;&lt;br/&gt;Notice that the update transactions are actually paying their keep,&lt;br/&gt;i.e., they have fees attached, so we think that participants will simply&lt;br/&gt;jump to the latest state and not waste fees on things that have no&lt;br/&gt;chance of getting them closer to getting an old state enforced.&lt;br/&gt;&lt;br/&gt;&amp;gt; 9.  When the latest update transaction gets confirmed, no other update&lt;br/&gt;&amp;gt; transaction can successfully spend its &amp;#34;update&amp;#34; branch (as their&lt;br/&gt;&amp;gt; `nLockTime` is less than the CLTV-encumberance on that branch).  This&lt;br/&gt;&amp;gt; lets the CSV-encumbered settlement transaction be confirmable after&lt;br/&gt;&amp;gt; some blocks.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 10.  Update transactions pay no fees!  Instead, for update&lt;br/&gt;&amp;gt; transactions (but not settlement transactions) we additionally give&lt;br/&gt;&amp;gt; SIGHASH_SINGLE: thus, no matter what transaction they end up in, the&lt;br/&gt;&amp;gt; signatures for the update transaction will always be verified against&lt;br/&gt;&amp;gt; only the update transaction output that pays out to the update&lt;br/&gt;&amp;gt; transaction script.  We join update transactions with a spend of some&lt;br/&gt;&amp;gt; onchain UTXO we control, which pays for the fees of the joined the&lt;br/&gt;&amp;gt; update transactions, and may have a second output that is the&lt;br/&gt;&amp;gt; remainder of the fund after paying the fees.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 11.  Settlement transactions can carry contracts (in much the same way&lt;br/&gt;&amp;gt; that Poon-Dryja commitment transactions); however contracts that&lt;br/&gt;&amp;gt; contain absolute timelock components will be affected by the&lt;br/&gt;&amp;gt; CSV-encumberance of the settlement transaction.&lt;br/&gt;&lt;br/&gt;Exactly, the timeouts need to be chosen high enough in order to allow an&lt;br/&gt;orderly resolution on-chain, should one party become uncooperative.&lt;br/&gt;&lt;br/&gt;&amp;gt; ---&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Some pros and cons relative to Poon-Dryja (LN-penalty) channels:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; - Requires more transactions in the worst-case: trigger, update,&lt;br/&gt;&amp;gt; settlement.  Compare to Poon-Dryja: commitment, claim.&lt;br/&gt;&amp;gt; Decker-Russell-Osuntokun channels can be trigger-settlement but only&lt;br/&gt;&amp;gt; in the degenerate case where the channel was never updated (indeed for&lt;br/&gt;&amp;gt; implementation simplicity we might rather prefer to make an initial&lt;br/&gt;&amp;gt; update transaction at the start, instead of starting with a&lt;br/&gt;&amp;gt; trigger-settlement).&lt;br/&gt;&lt;br/&gt;Actually the trigger can also be replaced in the cooperative case,&lt;br/&gt;meaning that the settlement in that case is just a single transaction,&lt;br/&gt;identical to LN-penalty. It is true that we&amp;#39;ve split the unilateral&lt;br/&gt;commitment from LN-penalty into two transactions, but we removed the&lt;br/&gt;need for a claim transaction, since funds directly go to the recipient&lt;br/&gt;and we have no our_unilateral/to_us or their_unilateral/to_them delay&lt;br/&gt;that needs to be sweeped (technically also not necessary, but all&lt;br/&gt;implementation do that if I&amp;#39;m not mistaken). Even if funds are not&lt;br/&gt;sweeped, the UTXO state is larger due to the bigger script that our&lt;br/&gt;simple outputs for the settlement.&lt;br/&gt;&lt;br/&gt;&amp;gt; - Dropping unilaterally onchain requires the party doing the drop to&lt;br/&gt;&amp;gt; have some onchain funds it controls completely, since update&lt;br/&gt;&amp;gt; transactions do not pay fees by themselves.  We cannot have an&lt;br/&gt;&amp;gt; autopilot that puts all onchain funds on channels, we need to reserve&lt;br/&gt;&amp;gt; some small amount for paying fees of unilateral closes.&lt;br/&gt;&lt;br/&gt;That is true, and I think this falls into the same category as the&lt;br/&gt;reserve funds in the LN-penalty mechanism, i.e., funds that are there&lt;br/&gt;but can&amp;#39;t be used. There may be a clever way to build a penalty on top&lt;br/&gt;of eltoo and then combine the fees and the penalties. Then again, a&lt;br/&gt;misbehaving participant risking their on-chain fees for an outdated&lt;br/&gt;update transaction may be a sufficient deterrent.&lt;br/&gt;&lt;br/&gt;&amp;gt; &#43; The above is counterbalanced by the fact that we can easily adjust&lt;br/&gt;&amp;gt; onchain fees for update transactions, unlike the case for Poon-Dryja&lt;br/&gt;&amp;gt; commitment transactions which once signed cannot have fees updated.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; = The onchain reserve (for paying fees for unilaterally dropped&lt;br/&gt;&amp;gt; channels) is roughly equivalent to the channel reserve under&lt;br/&gt;&amp;gt; Poon-Dryja; such a channel reserve no longer exists under&lt;br/&gt;&amp;gt; Decker-Russell-Osuntukun channels, but is replaced by the onchain&lt;br/&gt;&amp;gt; fee-paying reserve.  Possibly the fee-paying reserve here might be&lt;br/&gt;&amp;gt; feasibly smaller than the channel reserve under Poon-Dryja.&lt;br/&gt;&lt;br/&gt;The one downside that this has is that the channel participants have&lt;br/&gt;very little control over the fees that a misbehaving node may get&lt;br/&gt;punished with. As one endpoint I can no longer impose an arbitrary&lt;br/&gt;minimum loss in case of breach.&lt;br/&gt;&lt;br/&gt;&amp;gt; - The CSV-encumberance on settlement transactions, which are the ones&lt;br/&gt;&amp;gt; which carry the contracts in the channel, affects all&lt;br/&gt;&amp;gt; absolute-timelocked contracts transported on the channel.  Compare to&lt;br/&gt;&amp;gt; Poon-Dryja, where commitment transactions themselves are unencumbered&lt;br/&gt;&amp;gt; by CSV, and we simply insert the revocation to spends of the contracts&lt;br/&gt;&amp;gt; being transported (i.e. the reason why we have HTLC-success and&lt;br/&gt;&amp;gt; HTLC-timeout transactions in BOLT spec).&lt;br/&gt;&lt;br/&gt;True, but as I argued in another mail, this is a fixed offset, that is&lt;br/&gt;in the same range as today&amp;#39;s CLTV deltas for some nodes. So for the&lt;br/&gt;network of today using eltoo is roughly equivalent of adding another hop&lt;br/&gt;to our path :-)&lt;br/&gt;&lt;br/&gt;&amp;gt; &#43; Like invalidation trees, we can use N-party funds rather than just&lt;br/&gt;&amp;gt; 2-party funds (channels).  We can even use M-of-N, so if there is at&lt;br/&gt;&amp;gt; least some amount of trust you have with a group of entities (family,&lt;br/&gt;&amp;gt; close friends, conglomeration partners, ZmnSCPxj, politicians...) it&lt;br/&gt;&amp;gt; would be possible to have funds that require say only a majority of&lt;br/&gt;&amp;gt; its owners to be updated.&lt;br/&gt;&lt;br/&gt;The trust really comes down to a tradeoff between group size and&lt;br/&gt;liveness: the bigger the group and the more churn you have in that&lt;br/&gt;group, the less reliable the system becomes. Loss of liveness means that&lt;br/&gt;the funds in the contract become unavailable for a know period of time.
    </content>
    <updated>2023-06-09T14:50:19&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsv5svudmzcsvt3ag4r37xt69e5f6m4jheml9zcyyanh3hak8s9qrqzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9w52k8z9</id>
    
      <title type="html">📅 Original date posted:2018-03-13 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsv5svudmzcsvt3ag4r37xt69e5f6m4jheml9zcyyanh3hak8s9qrqzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9w52k8z9" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrntgwhxmxuy6g2jwye7c7tl8lzrm3lv2ap7chza3vx78ymurluxc8t2d06&#39;&gt;nevent1q…2d06&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-03-13&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi René,&lt;br/&gt;&lt;br/&gt;very good question. I think the simple answer is that this is exactly&lt;br/&gt;the reason why not having a participant in the network that can 51%&lt;br/&gt;attack over a prolonged period is one of the base assumptions in&lt;br/&gt;Lightning. These attacks are deadly to all blockchains, and we are&lt;br/&gt;certainly no different in that regard.&lt;br/&gt;&lt;br/&gt;More interesting is the assertion that this may indeed be more dangerous&lt;br/&gt;than a classical 51% attack, in which an attacker can only doublespend&lt;br/&gt;funds that she had control over at some point during the attack&lt;br/&gt;(duration being defined as the period she can build a hidden fork of). I&lt;br/&gt;think the case for Lightning is not more dangerous since what they could&lt;br/&gt;do is enforce an old state in which they had a higher balance than in&lt;br/&gt;the final state, without incurring in a penalty. The key observation is&lt;br/&gt;that in this old state they actually had to have the balance they are&lt;br/&gt;stealing on the channel. So this maps directly to the classical&lt;br/&gt;scenario in which an attacker simply doublespends funds they had control&lt;br/&gt;over during the attack, making the attack pretty much the same.&lt;br/&gt;&lt;br/&gt;Another interesting observation is that with Lightning the state that&lt;br/&gt;the attacker is enforcing may predate the attack, e.g., an attacker&lt;br/&gt;could use a state that existed and was replaced before it started&lt;br/&gt;generating its fork. This is in contrast to the classical doublespend&lt;br/&gt;attack in which invalidated spends have to happen after the fork&lt;br/&gt;started, and the attacker just filters them from its fork.&lt;br/&gt;&lt;br/&gt;But as I said before, if we can&amp;#39;t count on there not being a 51%&lt;br/&gt;attacker, then things are pretty much broken anyway :-)&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Christian&lt;br/&gt;&lt;br/&gt;René Pickhardt via Lightning-dev&lt;br/&gt;&amp;lt;lightning-dev at lists.linuxfoundation.org&amp;gt; writes:&lt;br/&gt;&amp;gt; Hey everyone,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; disclaimer: as mentioned in my other mail (&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2018-March/001065.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2018-March/001065.html&lt;/a&gt;&lt;br/&gt;&amp;gt; ) I am currently studying the revocation system of duplex micropayment&lt;br/&gt;&amp;gt; channels in detail but I am also pretty new to the topic. So I hope the&lt;br/&gt;&amp;gt; attack I am about to describe is not possible and it is just me overseeing&lt;br/&gt;&amp;gt; some detail or rather my lack of understanding.&lt;br/&gt;&amp;gt; That being said even after waiting one week upon discovery and double&lt;br/&gt;&amp;gt; checking the assumptions I made I am still positive that the revocation&lt;br/&gt;&amp;gt; system in its current form allows for a new form of a 51% attack. This&lt;br/&gt;&amp;gt; attack seems to be way more harmful than a successful 51% attack on the&lt;br/&gt;&amp;gt; bitcoin network. Afaik within the bitcoin network I could &amp;#39;only double&lt;br/&gt;&amp;gt; spend&amp;#39; my own funds with a successful 51% attack. In the lightning case it&lt;br/&gt;&amp;gt; seems that an attacker could steal an arbitrary amount of funds as long as&lt;br/&gt;&amp;gt; the attacker has enough payment channels with enough balance open.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The attack itself follows exactly the philosophy of lightning: &amp;#34;If a tree&lt;br/&gt;&amp;gt; falls in the forest and no one is around to hear it. Does it make a sound?&amp;#34;&lt;br/&gt;&amp;gt; In the context of the attack this would translate to: &amp;#34;If a 51% attacker&lt;br/&gt;&amp;gt; secretly mines enough blocks after fraudulently spending old commitment&lt;br/&gt;&amp;gt; transactions and no one sees it during the the *to_self_delay*  period,&lt;br/&gt;&amp;gt; have the commitment transactions been spent? (How) Can they be revoked?&amp;#34;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As for the technical details I quote from the spec of BOLT 3:&lt;br/&gt;&amp;gt; &amp;#34;*To allow an opportunity for penalty transactions, in case of a revoked&lt;br/&gt;&amp;gt; commitment transaction, all outputs that return funds to the owner of the&lt;br/&gt;&amp;gt; commitment transaction (a.k.a. the &amp;#34;local node&amp;#34;) must be delayed for *&lt;br/&gt;&amp;gt; *to_self_delay** blocks. This delay is done in a second-stage HTLC&lt;br/&gt;&amp;gt; transaction (HTLC-success for HTLCs accepted by the local node,&lt;br/&gt;&amp;gt; HTLC-timeout for HTLCs offered by the local node)*&amp;#34;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Assume an attacker has 51% of the hash power she could open several&lt;br/&gt;&amp;gt; lightning channels and in particular accept any incoming payment channel&lt;br/&gt;&amp;gt; (the more balance is in her channels the more lucrative the 51% attack).&lt;br/&gt;&amp;gt; Since the attacker already has a lot of hash power it is reasonable (but&lt;br/&gt;&amp;gt; not necessary) to assume that the attacker already has a lot of bitcoins&lt;br/&gt;&amp;gt; and is well known to honest nodes in the network which makes it even more&lt;br/&gt;&amp;gt; likely to have many open channels.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The attacker keeps track of her (revocable) commitment transactions in&lt;br/&gt;&amp;gt; which the balance is mostly on the attackers side. Once the attacker knows&lt;br/&gt;&amp;gt; enough of these (old) commitment transactions the attack is being executed&lt;br/&gt;&amp;gt; in the following way:&lt;br/&gt;&amp;gt; 0.) The max value of to_self_delay is evaluated. Let us assume it is 72&lt;br/&gt;&amp;gt; blocks (or half a day).&lt;br/&gt;&amp;gt; 1.) The attacker secretly starts mining on her own but does not broadcasts&lt;br/&gt;&amp;gt; any successfully mined block. Since the attacker has 51% of the hash power&lt;br/&gt;&amp;gt; she will most likely be faster than the network to mine the 72 blocks of&lt;br/&gt;&amp;gt; the safety period in which fraudulent commitment transactions could be&lt;br/&gt;&amp;gt; revoked.&lt;br/&gt;&amp;gt; 2.) The attacker spends all the fraudulent (old) commitment transactions in&lt;br/&gt;&amp;gt; the first block of her secrete mining endeavor.&lt;br/&gt;&amp;gt; 3.) Meanwhile the attacker starts spending her own funds of her payment&lt;br/&gt;&amp;gt; channels e.g on decentralized exchanges for any other (crypto)currency.&lt;br/&gt;&amp;gt; 4.) As soon as the attacker has mined enough blocks that the commitment&lt;br/&gt;&amp;gt; transactions cannot be revoked she broadcasts her secretly minded&lt;br/&gt;&amp;gt; blockchain which will be accepted by the network as it is the longest&lt;br/&gt;&amp;gt; chain. (In Particular she includes all the other bitcoin transactions that&lt;br/&gt;&amp;gt; are also in the original public blockchain so that other people don&amp;#39;t even&lt;br/&gt;&amp;gt; realize something suspicious has happened.)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Since according to the spec channels should never be balanced worse than&lt;br/&gt;&amp;gt; 99% to 1% the attacker could steal up to 99% of all the bitcoins allocated&lt;br/&gt;&amp;gt; in the sum of all payment channels the attacker was connected to. This&lt;br/&gt;&amp;gt; amount could obviously be way higher than just double spending her own&lt;br/&gt;&amp;gt; funds. This attack would be interesting in particular for the power nodes&lt;br/&gt;&amp;gt; created by the Barabasi-Albert model of lnd&amp;#39;s autopilot (c.f.:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/lightningnetwork/lnd/issues/677&#34;&gt;https://github.com/lightningnetwork/lnd/issues/677&lt;/a&gt; ).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I understand that with the growth of the bitcoin (mining) network a 51%&lt;br/&gt;&amp;gt; attack becomes less and less likely. Also I am very happy to be proven&lt;br/&gt;&amp;gt; false about the attack that I am describing.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Another sad thing about this attack is that I currently do not see any&lt;br/&gt;&amp;gt; (reasonable) way of preventing this form of a 51% attack (other than&lt;br/&gt;&amp;gt; creating payment channels that don&amp;#39;t offer the possibility of revocation)&lt;br/&gt;&amp;gt; as it is abusing exactly the core idea of lightning to do something in&lt;br/&gt;&amp;gt; secret without broadcasting it.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Best regards Rene&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ---&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;http://www.rene-pickhardt.de&#34;&gt;http://www.rene-pickhardt.de&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;
    </content>
    <updated>2023-06-09T14:49:29&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs2yjt0qehx8ntfmm9a2a5flqrvdt57jymdkgvsupkv848jcyxqrxczypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wldtlpx</id>
    
      <title type="html">📅 Original date posted:2018-02-12 📝 Original message: CJP ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs2yjt0qehx8ntfmm9a2a5flqrvdt57jymdkgvsupkv848jcyxqrxczypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wldtlpx" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqm557rhsp5pjuzqz7pzn5kqcx7wndngwpc2tgj6pjzpvca5ukdkcfwmhh8&#39;&gt;nevent1q…mhh8&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-02-12&lt;br/&gt;📝 Original message:&lt;br/&gt;CJP &amp;lt;cjp at ultimatestunts.nl&amp;gt; writes:&lt;br/&gt;&amp;gt; Can you give a use case for this?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Usually, especially in the common case that a payment is done in&lt;br/&gt;&amp;gt; exchange for some non-cryptographic asset (e.g. physical goods), there&lt;br/&gt;&amp;gt; already is some kind of trust between payer and payee. So, if a payment&lt;br/&gt;&amp;gt; is split non-atomically into smaller transactions, and only a part&lt;br/&gt;&amp;gt; succeeds, presumably they can cooperatively figure out some way to&lt;br/&gt;&amp;gt; settle the situation.&lt;br/&gt;&lt;br/&gt;The scenario that is commonly used in these cases is a merchant that&lt;br/&gt;provides a signed invoice &amp;#34;if you pay me X with payment_hash Y I will&lt;br/&gt;deliver Z&amp;#34;. Now the user performs the payment, learns the payment_key&lt;br/&gt;matching the payment_hash, but the merchant refuses to deliver, claiming&lt;br/&gt;it didn&amp;#39;t get the payment. Now the user can go to a court, present the&lt;br/&gt;invoice signed by the merchant, and the proof-of-payment, and force the&lt;br/&gt;merchant to honor its commitment.
    </content>
    <updated>2023-06-09T14:49:04&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqst5zn6c4lrurmz0f7grjh88nmx7tghwgvqnvdpkt5kvdhe7dp4negzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wz8wkxz</id>
    
      <title type="html">📅 Original date posted:2018-02-05 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqst5zn6c4lrurmz0f7grjh88nmx7tghwgvqnvdpkt5kvdhe7dp4negzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wz8wkxz" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsv8unz0g508azvzvx60h8rdsgqgq3zh2r8jtv8h7e78hxewz2c46gd8ufyc&#39;&gt;nevent1q…ufyc&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-02-05&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi everyone&lt;br/&gt;&lt;br/&gt;When we started drafting the specification we decided to postpone the&lt;br/&gt;topology syncronization mechanism until we have a better picture of the&lt;br/&gt;kind of loads that are to be expected in the network, e.g., churn and&lt;br/&gt;update rate, and instead implement a trivial gossip protocol to&lt;br/&gt;distribute the topology updates. This includes the dreaded initial&lt;br/&gt;synchonization dump that has caused some issues lately to all&lt;br/&gt;implementations, given that we dump several thousands of updates, that&lt;br/&gt;may require block metadata (short channel ID to txid conversion) lookup&lt;br/&gt;and a UTXO lookup (is this channel still active?).&lt;br/&gt;&lt;br/&gt;During the last call we decided to go for an incremental improvement,&lt;br/&gt;rather than a full synchronization mechanism (IBLT, rsync, ...). So&lt;br/&gt;let&amp;#39;s discuss how that improvement could look like.&lt;br/&gt;&lt;br/&gt;In the following I&amp;#39;ll describe a very simple extension based on a&lt;br/&gt;highwater mark for updates, and I think Pierre has a good proposal of&lt;br/&gt;his own, that I&amp;#39;ll let him explain.&lt;br/&gt;&lt;br/&gt;We already have the `initial_routing_sync` feature bit, which (if&lt;br/&gt;implemented) allows disabling the initial gossip synchronization, and&lt;br/&gt;onyl forwarding newly received gossip messages. I propose adding a new&lt;br/&gt;feature bit (6, i.e., bitmask 0x40) indicating that the `init` message&lt;br/&gt;is extended with a u32 `gossip_timestamp`, interpreted as a UNIX&lt;br/&gt;timestamp. The `gossip_timestamp` is the lowest `channel_update` and&lt;br/&gt;`node_announcement` timestamp the recipient is supposed to send, any&lt;br/&gt;older update or announcement is to be skipped. This allows the `init`&lt;br/&gt;sender to specify how far back the initial synchronization should go.&lt;br/&gt;&lt;br/&gt;The logic to forward announcements thus follows this outline:&lt;br/&gt;&lt;br/&gt; - Set `gossip_timestamp` for this peer&lt;br/&gt; - Iterate through all `channel_update`s that have a timestamp that is&lt;br/&gt;   newer than the `gossip_timestamp` (skipping replaced ones as per BOLT&lt;br/&gt;   07)&lt;br/&gt; - For each `channel_update` fetch the corresponding&lt;br/&gt;   `channel_announcement` and the endpoints `node_announcement`.&lt;br/&gt; - Forward the messages in the correct order, i.e.,&lt;br/&gt; - `channel_announcement`, then `channel_update`, and then `node_announcement`&lt;br/&gt;&lt;br/&gt;The feature bit is even, meaning that it is required from the peer,&lt;br/&gt;since we extend the `init` message itself, and a peer that does not&lt;br/&gt;support this feature would be unable to parse any future extensions to&lt;br/&gt;the `init` message. Alternatively we could create a new&lt;br/&gt;`set_gossip_timestamp` message that is only sent if both endpoints&lt;br/&gt;support this proposal, but that could result in duplicate messages being&lt;br/&gt;delivered between the `init` and the `set_gossip_timestamp` message and&lt;br/&gt;it&amp;#39;d require additional messages.&lt;br/&gt;&lt;br/&gt;`gossip_timestamp` is rather flexible, since it allows the sender to&lt;br/&gt;specify its most recent update if it believes it is completely caught&lt;br/&gt;up, or send a slightly older timestamp to have some overlap for&lt;br/&gt;currently broadcasting updates, or send the timestamp the node was last&lt;br/&gt;connected with the network, in the case of prolonged downtime.&lt;br/&gt;&lt;br/&gt;The reason I&amp;#39;m using timestamp and not the blockheight in the short&lt;br/&gt;channel ID is that we already use the timestamp for pruning. In the&lt;br/&gt;blockheight based timestamp we might ignore channels that were created,&lt;br/&gt;then not announced or forgotten, and then later came back and are now&lt;br/&gt;stable.&lt;br/&gt;&lt;br/&gt;I hope this rather simple proposal is sufficient to fix the short-term&lt;br/&gt;issues we are facing with the initial sync, while we wait for a real&lt;br/&gt;sync protocol. It is definitely not meant to allow perfect&lt;br/&gt;synchronization of the topology between peers, but then again I don&amp;#39;t&lt;br/&gt;believe that is strictly necessary to make the routing successful.&lt;br/&gt;&lt;br/&gt;Please let me know what you think, and I&amp;#39;d love to discuss Pierre&amp;#39;s&lt;br/&gt;proposal as well.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Christian
    </content>
    <updated>2023-06-09T14:48:49&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqswvmw6jmcmg4etvzdzf73l5mtu9h760fwnljlg7zdza4tcnh5kguczypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wx6n4qx</id>
    
      <title type="html">📅 Original date posted:2018-01-18 📝 Original message: Mark ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqswvmw6jmcmg4etvzdzf73l5mtu9h760fwnljlg7zdza4tcnh5kguczypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wx6n4qx" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvjfgmgday02exwx2j58nm2spllrz9hqcllmt58hkdxn3eutkujdcgncc5g&#39;&gt;nevent1q…cc5g&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-01-18&lt;br/&gt;📝 Original message:&lt;br/&gt;Mark Friedenbach &amp;lt;mark at friedenbach.org&amp;gt; writes:&lt;br/&gt;&lt;br/&gt;&amp;gt; It is not the case that all instances where you might have negative&lt;br/&gt;&amp;gt; fees would have loops.&lt;br/&gt;&lt;br/&gt;If we don&amp;#39;t have a cycle we can hardly talk about rebalancing&lt;br/&gt;channels. At that point you&amp;#39;re paying for someone else&amp;#39;s payment to go&lt;br/&gt;through your channel, and I&amp;#39;m unclear what the motivation for that might&lt;br/&gt;be. Anyway, this is still possible by communicating this out of band&lt;br/&gt;with the payment creator, and should not be baked into the gossip&lt;br/&gt;protocol itself, in my opinion. It&amp;#39;s obscure enough to not be worth the&lt;br/&gt;extra effort.&lt;br/&gt;&lt;br/&gt;&amp;gt; One instance where you want this feature is when the network becomes&lt;br/&gt;&amp;gt; too weighted in one side of the graph.&lt;br/&gt;&lt;br/&gt;There is little you can do to prevent this: if we have a network with a&lt;br/&gt;small cut, with a source and sink on opposite sides of that cut, no&lt;br/&gt;amount of voluntary sacrifice from the nodes along the cut will have a&lt;br/&gt;lasting effect. The better solution would be to change the topology of&lt;br/&gt;the network to remove the cut, or balance traffic over it, e.g., moving&lt;br/&gt;a sink to the other side of the cut.&lt;br/&gt;&lt;br/&gt;&amp;gt; Another is when the other side is a non-routable endpoint. In both&lt;br/&gt;&amp;gt; cases would be useful to signal to others that you were willing to pay&lt;br/&gt;&amp;gt; to rebalance, and this hand wavy argument about loops doesn’t seem to&lt;br/&gt;&amp;gt; apply.&lt;br/&gt;&lt;br/&gt;I&amp;#39;m not sure I understand what you mean with non-routable endpoint, so&lt;br/&gt;correct me if I&amp;#39;m wrong. I&amp;#39;m assuming that non-routable endpoint is a&lt;br/&gt;non-publicly announced node in the network? In that case no fee tricks&lt;br/&gt;will ever get people to route over it, since they can&amp;#39;t even construct&lt;br/&gt;the onion to talk to it. Notice that the payment requests allow for&lt;br/&gt;recipients of payments to get paid by explicitly including the necessary&lt;br/&gt;information to construct the onion to talk to that node.&lt;br/&gt;&lt;br/&gt;Not trying to be dismissive here, and I might be getting this wrong, so&lt;br/&gt;let me know if I did and what use-cases you had in mind :-)&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Christian
    </content>
    <updated>2023-06-09T14:48:36&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsp0rpegx0wgqfh8lxqftqhzemwh0cx8r92gnmhznqqra68k4uh28qzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wrzyudl</id>
    
      <title type="html">📅 Original date posted:2018-01-17 📝 Original message: ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsp0rpegx0wgqfh8lxqftqhzemwh0cx8r92gnmhznqqra68k4uh28qzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wrzyudl" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0pn48hvpdasfwmvdd9xceesee9vxhv2fc2855kxtlpl5rqh6wqkgjqnz6t&#39;&gt;nevent1q…nz6t&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-01-17&lt;br/&gt;📝 Original message:&lt;br/&gt;Benjamin Mord &amp;lt;ben at mord.io&amp;gt; writes:&lt;br/&gt;&amp;gt; It isn&amp;#39;t obvious to me from the BOLTs if fees can be negative, and I&amp;#39;m&lt;br/&gt;&amp;gt; finding uint in the go source code - which suggests not. In scenarios where&lt;br/&gt;&amp;gt; the funding of a payment channel has been fully committed in one direction,&lt;br/&gt;&amp;gt; why not allow negative fees to incent unwinding, in scenarios where nodes&lt;br/&gt;&amp;gt; consider that cheaper than on-chain rebalancing?&lt;br/&gt;&lt;br/&gt;After discussing this for a while we decided not to allow negative fees&lt;br/&gt;in channel announcements (for now), because they actually do not add to&lt;br/&gt;the flexibility and require special handling for route finding.&lt;br/&gt;&lt;br/&gt;The main argument for negative fees has always been that they allow a&lt;br/&gt;channel operator to rebalance its channels. However it is neither&lt;br/&gt;required, nor is it really all that helpful. If a node wants to&lt;br/&gt;rebalance he needs to find a cycle, that it can use to rebalance.  The&lt;br/&gt;simplest rebalancing is that the node itself sends a payment along that&lt;br/&gt;cycle back to itself, giving the rebalancing node full control over the&lt;br/&gt;amount to rebalance, timing and costs.&lt;br/&gt;&lt;br/&gt;The negative fees were intended to encourage other participants to use&lt;br/&gt;any cycle and rebalance for the node offering the negative fees. However&lt;br/&gt;that results in less control over the rebalancing for the node, e.g.,&lt;br/&gt;how many payments to incentivize, amounts, etc. This is compounded by&lt;br/&gt;the inherent delay of channel updates being disseminated in the&lt;br/&gt;network. So if a rebalancing node gets too many payments that try to&lt;br/&gt;take advantage of the negative fees, what should it do? It&amp;#39;d result in&lt;br/&gt;either losses for the node, or many forward rejections. So why not use&lt;br/&gt;the funds one would have used towards negative fees for the active way&lt;br/&gt;of rebalancing.&lt;br/&gt;&lt;br/&gt;It is preferable to have payments be routed around an exhausted channel,&lt;br/&gt;after all if there is a cycle there must be an alternative route, rather&lt;br/&gt;than trying to artificially rebalance.&lt;br/&gt;&lt;br/&gt;So overall, allowing only positive fees makes routing simpler, and still&lt;br/&gt;allows for active rebalancing. As for other applications some have&lt;br/&gt;alluded to, this constraint is only for the routing gossip. Should there&lt;br/&gt;be a good reason to allow increasing the amount forwarded by a peer,&lt;br/&gt;e.g., node n receives x from the previous hop and forwards x&#43;e to the&lt;br/&gt;next hop, that can still be negotiated out of band or even in the onion&lt;br/&gt;payload for that node.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Christian
    </content>
    <updated>2023-06-09T14:48:36&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqst2zs7c4p08a2adcksxudkc2kfpz9sju7acclryus5pxesjhk6yeqzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9w5d4saf</id>
    
      <title type="html">📅 Original date posted:2017-12-30 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqst2zs7c4p08a2adcksxudkc2kfpz9sju7acclryus5pxesjhk6yeqzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9w5d4saf" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs27a0fk88f5ml46320hnk8t2d9jkem08xugvrwvrj7aem7498zhps9tra4f&#39;&gt;nevent1q…ra4f&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-12-30&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Andy,&lt;br/&gt;&lt;br/&gt;just one minor point regarding your comparison with the bitcoin block&lt;br/&gt;size: while the bitcoin block size is a consensus critical parameter&lt;br/&gt;that cannot be modified without every participant agreeing, the capacity&lt;br/&gt;limit is not consensus critical and can be changed at any point in&lt;br/&gt;time. It can be negotiated by the two endpoints of a channel and no&lt;br/&gt;other party is involved.&lt;br/&gt;&lt;br/&gt;I quite like the comparison to training wheels, it&amp;#39;s there as long as&lt;br/&gt;you don&amp;#39;t feel safe, and you can get rid of them once you&amp;#39;re confidence&lt;br/&gt;in the system and yourself increases :-)&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Christian&lt;br/&gt;&lt;br/&gt;Andy Schroder &amp;lt;info at AndySchroder.com&amp;gt; writes:&lt;br/&gt;&amp;gt; Hello,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thanks for all of the discussion on this topic. In general, I don&amp;#39;t have &lt;br/&gt;&amp;gt; a solid opinion formed yet, but I understand all of the points that &lt;br/&gt;&amp;gt; everyone has made. I think the bottom line is that a limit doesn&amp;#39;t hurt &lt;br/&gt;&amp;gt; right now unless the purchasing power of bitcoin dramatically declines. &lt;br/&gt;&amp;gt; This limit is like the block size limit in that it is conservative and &lt;br/&gt;&amp;gt; we need to have some experience in order to determine whether the limit &lt;br/&gt;&amp;gt; is needed at all. It proved to be very clear over time that a block size &lt;br/&gt;&amp;gt; limit was needed as one force against centralization. Maybe a limit is &lt;br/&gt;&amp;gt; needed for lightning channels, maybe it isn&amp;#39;t, but we need to first see &lt;br/&gt;&amp;gt; how the network starts to evolve. My main concern long term is that a &lt;br/&gt;&amp;gt; large business couldn&amp;#39;t operate using lightning, because the channel &lt;br/&gt;&amp;gt; sizes and payment sizes are too small. What if you&amp;#39;re buying an oil rig, &lt;br/&gt;&amp;gt; a locomotive, a gas turbine, a load of coal, or a herd of cattle. Should &lt;br/&gt;&amp;gt; a blockchain transaction be used for everyone in the world for these &lt;br/&gt;&amp;gt; types of purchases? But then again, maybe different types of users will &lt;br/&gt;&amp;gt; use different kinds of lightning networks.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Another reason against accepting large incoming channels yourself would &lt;br/&gt;&amp;gt; be that you may not want to encourage people paying you to route through &lt;br/&gt;&amp;gt; one of the super nodes. Super nodes are likely spies or targets of spies &lt;br/&gt;&amp;gt; and users won&amp;#39;t naturally want to deal with those types of actors.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Also, the Eclair implementation supports push_msat too.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Other than as &amp;#34;training wheels&amp;#34;, I&amp;#39;m still not sure why we need a &lt;br/&gt;&amp;gt; payment limit if we have a channel limit. It seems as though the channel &lt;br/&gt;&amp;gt; limit puts an implicit payment limit in place.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Andy Schroder&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On 12/27/2017 03:13 PM, ZmnSCPxj wrote:&lt;br/&gt;&amp;gt;&amp;gt; Good morning Daniel,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; -------- Original Message --------&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Subject: Re: [Lightning-dev] General questions about channels&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Local Time: December 27, 2017 10:30 PM&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; UTC Time: December 27, 2017 2:30 PM&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; From: therealsangaman at gmail.com&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; To: ZmnSCPxj &amp;lt;ZmnSCPxj at protonmail.com&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Andy Schroder &amp;lt;info at andyschroder.com&amp;gt;, &lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; lightning-dev at lists.linuxfoundation.org &lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &amp;lt;lightning-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; I&amp;#39;ve only really been getting my hands into LN the past few weeks but&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; I thought I&amp;#39;d share my thoughts here.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ZmnSCPxj via Lightning-dev lightning-dev at lists.linuxfoundation.org &lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &amp;lt;mailto:lightning-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;     Perhaps some day, in the LONG TERM, the limits may be increased&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; I was always under the impression that the channel and payment limits&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; were intended to be training wheels, this is the first I&amp;#39;ve heard of&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; them intended to stick around long term. I find the channel limit to&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; be particularly restrictive, as it hinders some use cases I&amp;#39;d envision&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; where large payment channels between two parties are useful and can&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; also be used for routing LN payments. Large payments afaik can be&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; broken up into smaller ones without incurring too much cost or&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; trouble,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Splitting up large payments would require multiple invoices at least &lt;br/&gt;&amp;gt;&amp;gt; for now (whether this is troublesome or not may be a matter of &lt;br/&gt;&amp;gt;&amp;gt; opinion, bit I suspect juggling more than a few invoices would be &lt;br/&gt;&amp;gt;&amp;gt; painful as a user experience). Routing larger payments over multiple &lt;br/&gt;&amp;gt;&amp;gt; routes automatically while using a single invoice, is harder as &lt;br/&gt;&amp;gt;&amp;gt; multiple routes need to be set up, and each route must have different &lt;br/&gt;&amp;gt;&amp;gt; preimages: further it is likely you want the entire large payment to &lt;br/&gt;&amp;gt;&amp;gt; be done atomically, which would be harder to arrange.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; but that&amp;#39;s not the case for creating channels. As the channel&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; itself involves only two parties - and in sticking to my general&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; political/philosophical mantra - there is really no justification for&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; limits to be imposed on this. Which brings me to my next point.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Perhaps our definition of &amp;#34;long term&amp;#34; is askew. A year after mainnet &lt;br/&gt;&amp;gt;&amp;gt; release, I doubt anyone would feel safe implementing removal of the &lt;br/&gt;&amp;gt;&amp;gt; limit; this is my &amp;#34;long term&amp;#34;.  Five years, I imagine quite a few will &lt;br/&gt;&amp;gt;&amp;gt; use the nonlimited version and may form a subnetwork among &lt;br/&gt;&amp;gt;&amp;gt; themselves.  But possibly by then it would be unlikely that most &lt;br/&gt;&amp;gt;&amp;gt; people using Bitcoin at all would evem be capable of putting 150 mBTC &lt;br/&gt;&amp;gt;&amp;gt; in spending money on a hot wallet, in which case whether there is a &lt;br/&gt;&amp;gt;&amp;gt; 167 mBTC limit per channel or not is largely a moot point. Or perhaps &lt;br/&gt;&amp;gt;&amp;gt; I simply imagine hyperbitcoinization by then, with people putting &lt;br/&gt;&amp;gt;&amp;gt; entire bitcoins into hot wallets equivalent to people putting &lt;br/&gt;&amp;gt;&amp;gt; thousands of USD today in their back pockets as invitation to be attacked.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;     There is also again the wisdom, that one should keep most of the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;     funds in&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;     cold storage, and only a small amount for spending in hot wallets&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;     like&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;     Lightning nodes&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; I think this is a top-down way of thinking that runs counter to the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; spirit of bitcoin. The &amp;#34;wisest&amp;#34; thing to do in fact may be to simply&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; buy inflation-adjusted treasury bonds and not mess with bitcoin at&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; all, much less the experimental lightning network. As advice this is&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; perfectly fine to share with others for them to follow on a voluntary&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; basis, but I don&amp;#39;t see why this ought to be enforced as a rule on a&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; protocol level.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Possibly.  At the protocol level, a limit encourages the growth of the &lt;br/&gt;&amp;gt;&amp;gt; network towards a mesh network rather than more central forms, &lt;br/&gt;&amp;gt;&amp;gt; however.  I merely put this since it is unlikely that most people &lt;br/&gt;&amp;gt;&amp;gt; following this &amp;#34;wisdom&amp;#34; would have an incentive to even run software &lt;br/&gt;&amp;gt;&amp;gt; with the limit removed: that is, by the time Lightning becomes fully &lt;br/&gt;&amp;gt;&amp;gt; deployed the limit may not even be reached in practice.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Also, I personally can&amp;#39;t see a reason why a node would reject a large&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; channel being made with it, where is the downside or risk? The party&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; committing funds to the channel is the one risking loss or delay of&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; funds.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; But the party committing funds to the channel is known via node &lt;br/&gt;&amp;gt;&amp;gt; gossip, and it is known also who the other end of the channel is. If &lt;br/&gt;&amp;gt;&amp;gt; you were to propose opening for example a 5BTC channel to me with the &lt;br/&gt;&amp;gt;&amp;gt; funds coming from you, I would consider the possibility that I might &lt;br/&gt;&amp;gt;&amp;gt; get attacked in order to get to your funds (and I might not have the &lt;br/&gt;&amp;gt;&amp;gt; resources to protect against such an attack on my end, even if you &lt;br/&gt;&amp;gt;&amp;gt; might). Further, putting 5BTC implies that at some point there is the &lt;br/&gt;&amp;gt;&amp;gt; future possibility, due to routing and so on, that the channel will &lt;br/&gt;&amp;gt;&amp;gt; have around 5BTC belonging to me, and at some point before you can &lt;br/&gt;&amp;gt;&amp;gt; spend the entire 5BTC I would want to close the channel and commit the &lt;br/&gt;&amp;gt;&amp;gt; funds that I now own into cold storage (so that the ability to channel &lt;br/&gt;&amp;gt;&amp;gt; 5BTC from you to me is a moot point).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Regards,&lt;br/&gt;&amp;gt;&amp;gt; ZmnSCPxj&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;
    </content>
    <updated>2023-06-09T14:48:13&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs8fgmpcrccj6g4q7jyt2m9ey34zk4qp0axdxqzw4kph84slzkxclczypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wd84x2w</id>
    
      <title type="html">📅 Original date posted:2017-12-28 📝 Original message: Mark ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs8fgmpcrccj6g4q7jyt2m9ey34zk4qp0axdxqzw4kph84slzkxclczypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wd84x2w" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqstcsqlvzm95jvkp60j02krwyys9e4j2rhnr7dd03hk4pngq8tf3wq2jcuf2&#39;&gt;nevent1q…cuf2&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-12-28&lt;br/&gt;📝 Original message:&lt;br/&gt;Mark Friedenbach &amp;lt;mark at friedenbach.org&amp;gt; writes:&lt;br/&gt;&amp;gt; Splitting a single payment into multiple invoices has bad semantic&lt;br/&gt;&amp;gt; properties. Beyond implementation difficulties it also makes the&lt;br/&gt;&amp;gt; payment no longer atomic. You can end up in a situation where part of&lt;br/&gt;&amp;gt; a transaction has gone through but then channel capacity has been&lt;br/&gt;&amp;gt; exhausted. The. What do you do?&lt;br/&gt;&lt;br/&gt;We are indeed working on a solution for multipath payments, and they are&lt;br/&gt;pretty simple to implement if the sender and recipient know how to&lt;br/&gt;handle them. Re-use the same HTLC secret along all paths and the&lt;br/&gt;atomicity is re-established. The only blocker is that it increases&lt;br/&gt;complexity on the recipient, e.g., how do I tell whether the partial&lt;br/&gt;payment is all I&amp;#39;ll ever get, or whether there is more incoming, when do&lt;br/&gt;I abort waiting, and similar concerns. That&amp;#39;s the reason it didn&amp;#39;t make&lt;br/&gt;it into the v1.0 spec, but we are confident that it&amp;#39;ll be added soon.&lt;br/&gt;&lt;br/&gt;It is technically already possible to do so, if you hack together the&lt;br/&gt;recipient node to wait for all parts of the payment before releasing the&lt;br/&gt;secret. No need for multiple invoices.&lt;br/&gt;&lt;br/&gt;&amp;gt; While an annoying (and potentially exploitable) edge case for&lt;br/&gt;&amp;gt; payments, it also makes it basically impossible in practice to build&lt;br/&gt;&amp;gt; higher level smart contracts on top of lightning channels as&lt;br/&gt;&amp;gt; primitives, since those constructs typically use a single HTLC&lt;br/&gt;&amp;gt; revelation as the decision gate between multiple contingent outcomes.&lt;br/&gt;&lt;br/&gt;Absolutely, that&amp;#39;s why we want to have the payment contingent on a&lt;br/&gt;single secret, or on secrets that can be derived from one another.&lt;br/&gt;&lt;br/&gt;&amp;gt; I had always assumed the protocol limits were training wheels, and&lt;br/&gt;&amp;gt; would be shocked and dismayed if that were not the case (and would&lt;br/&gt;&amp;gt; immediately begin work on an alternative fork because such limits&lt;br/&gt;&amp;gt; would make lightning useless for my intended applications).&lt;br/&gt;&lt;br/&gt;They are training wheels, we just decided for our own implementations&lt;br/&gt;that we want to limit individual potential losses due to bugs. It is&lt;br/&gt;trivial to change that on a per-channel level, and we have all the&lt;br/&gt;pieces in place to perform an upgrade using the feature bits, no need to&lt;br/&gt;fork lightning just yet :-) You just need to agree on using larger&lt;br/&gt;amounts with your peer, on the peer layer, there is nothing preventing&lt;br/&gt;the use of large channels in the multi-hop layer.&lt;br/&gt;&lt;br/&gt;HTH,&lt;br/&gt;Christian
    </content>
    <updated>2023-06-09T14:48:11&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs0f4j0625yx2mzm4908ktxprf8lenjr064hna7dysx8uj25w9dh3qzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wm7nh43</id>
    
      <title type="html">📅 Original date posted:2016-10-05 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs0f4j0625yx2mzm4908ktxprf8lenjr064hna7dysx8uj25w9dh3qzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wm7nh43" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszetq3qh008t54zeh3unquwyjuvd4y83n6rra3w6kmqqdm6894s2gygdl4r&#39;&gt;nevent1q…dl4r&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2016-10-05&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi everybody&lt;br/&gt;&lt;br/&gt;The following blog post describes our recent use of an v0.5 C lightning&lt;br/&gt;prototype, showcasing a completed transaction that included invoicing,&lt;br/&gt;multi-hop payment, and item delivery. The included links provide additional&lt;br/&gt;content and supporting code, as well as a short video. This will be going&lt;br/&gt;live on Blockstream’s blog shortly.&lt;br/&gt;&lt;br/&gt;Regards,&lt;br/&gt;Rusty Russell&lt;br/&gt;Dr. Christian Decker&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Lightning First Strike: Christian Bought a Cat&lt;br/&gt;Rusty Russell, October 5, 2016&lt;br/&gt;&lt;a href=&#34;https://blockstream.com/blog/&#34;&gt;https://blockstream.com/blog/&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;This story of feline acquisition begins with the demonstration of v0.5 of&lt;br/&gt;the C lightning prototype, a lightning-fast micropayment system we&amp;#39;ve been&lt;br/&gt;working on here at Blockstream (see&lt;br/&gt;&lt;a href=&#34;https://github.com/ElementsProject/lightning&#34;&gt;https://github.com/ElementsProject/lightning&lt;/a&gt;). To test the impending&lt;br/&gt;prototype, we set up a web server to create invoices for test bitcoin&lt;br/&gt;payments over the lightning network, and in return to offer a cat, or at&lt;br/&gt;least an ASCII cat picture.&lt;br/&gt;&lt;br/&gt;Dr. Christian Decker, another Blockstream developer working with me,&lt;br/&gt;purchased the feline picture using 0.01 test bitcoin to open a lightning&lt;br/&gt;channel with the server (see&lt;br/&gt;&lt;a href=&#34;http://tbtc.blockr.io/tx/info/c909f1fb5e971e32ae20e34cf6cf766f7237bfadf75aa6646a42063b9acba82b&#34;&gt;http://tbtc.blockr.io/tx/info/c909f1fb5e971e32ae20e34cf6cf766f7237bfadf75aa6646a42063b9acba82b&lt;/a&gt;),&lt;br/&gt;which was mined in test block 928335 (see&lt;br/&gt;&lt;a href=&#34;http://tbtc.blockr.io/block/info/928335&#34;&gt;http://tbtc.blockr.io/block/info/928335&lt;/a&gt;). After a single confirmation, he&lt;br/&gt;paid the invoice with a 100 satoshi transfer. Afterward, he accessed the&lt;br/&gt;link to find his cat picture (see&lt;br/&gt;&lt;a href=&#34;http://128.199.80.48/?43744e221d794dcc0e61f8a757fa0346&#34;&gt;http://128.199.80.48/?43744e221d794dcc0e61f8a757fa0346&lt;/a&gt;). He discovered it&lt;br/&gt;was an ASCII picture, with a nice bonus. Two cats! Christian promptly&lt;br/&gt;opened another node, connected to the first node, and bought a second copy&lt;br/&gt;of the cat picture by routing through the previous node.&lt;br/&gt;&lt;br/&gt;What Happened Behind The Scenes?&lt;br/&gt;&lt;br/&gt;A Digital Ocean server runs Apache, bitcoind, and lightningd. When&lt;br/&gt;accessed, a CGI script calls &amp;#39;lightning-cli invoice 100000&amp;#39; to create an&lt;br/&gt;invoice, which is presented to the user (see&lt;br/&gt;&lt;a href=&#34;https://github.com/rustyrussell/lightning-cat/blob/cc206788c552e2f7feb616170178c7ec38ccedb5/catsearch.sh&#34;&gt;https://github.com/rustyrussell/lightning-cat/blob/cc206788c552e2f7feb616170178c7ec38ccedb5/catsearch.sh&lt;/a&gt;).&lt;br/&gt;The user clicks through a unique link, and if &amp;#39;lightning-cli listinvoice&amp;#39;&lt;br/&gt;indicates that the invoice was paid, the script presents the picture.&lt;br/&gt;&lt;br/&gt;This is the first end-to-end test of a lightning micropayment network,&lt;br/&gt;including invoicing, multi-hop payment, and item delivery. It is very&lt;br/&gt;different from Acinq&amp;#39;s recent simulation (see&lt;br/&gt;&lt;a href=&#34;http://www.coindesk.com/bitcoins-lightning-network-milestone-acinq-routing/&#34;&gt;http://www.coindesk.com/bitcoins-lightning-network-milestone-acinq-routing/&lt;/a&gt;)&lt;br/&gt;of a lightning routing algorithm called Flare (See&lt;br/&gt;&lt;a href=&#34;http://bitfury.com/content/5-white-papers-research/whitepaper_flare_an_approach_to_routing_in_lightning_network_7_7_2016.pdf&#34;&gt;http://bitfury.com/content/5-white-papers-research/whitepaper_flare_an_approach_to_routing_in_lightning_network_7_7_2016.pdf&lt;/a&gt;).&lt;br/&gt;Their work shows how, by way of simple analogy, one can create a streetmap&lt;br/&gt;to get from A to B in an efficient way, while the test we&amp;#39;ve demonstrated&lt;br/&gt;here with v0.5 of the C lightning prototype has us actually walking that&lt;br/&gt;path on the street.&lt;br/&gt;&lt;br/&gt;What&amp;#39;s Next?&lt;br/&gt;&lt;br/&gt;We found a few bugs in corner cases and hit some known FIXMEs, but also&lt;br/&gt;made lightningd more robust against misconfiguration. There are a few rough&lt;br/&gt;edges that we&amp;#39;d still like to smooth and some documentation that we&amp;#39;d like&lt;br/&gt;to write before the 0.5 release. Then, we want to create libraries to allow&lt;br/&gt;web developers to play with constructing their own cat picture stores!&lt;br/&gt;&lt;br/&gt;In the meantime, here&amp;#39;s a short video that shows this working (see&lt;br/&gt;&lt;a href=&#34;https://asciinema.org/a/ergldrzd43j08klix08hf9yl3&#34;&gt;https://asciinema.org/a/ergldrzd43j08klix08hf9yl3&lt;/a&gt;). The low production&lt;br/&gt;value fits with the ASCII art.&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20161005/05e0db9d/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20161005/05e0db9d/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T14:46:49&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs02260n9zlkqe5zcxz2djykm5gunded7htnlyd7t4r3u4d9puta5gzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9w93u399</id>
    
      <title type="html">📅 Original date posted:2020-03-26 📝 Original message:Ruben ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs02260n9zlkqe5zcxz2djykm5gunded7htnlyd7t4r3u4d9puta5gzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9w93u399" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsr4kys3nk6umy5rk9mqgw8rxx9mx76vmy36m00u4xgjxdxp6slruq32pk68&#39;&gt;nevent1q…pk68&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2020-03-26&lt;br/&gt;📝 Original message:Ruben Somsen via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;writes:&lt;br/&gt;&amp;gt; Regarding modification 1, I agree with ZmnSCPxj that&lt;br/&gt;&amp;gt; Decker-Wattenhofer is your next best option, given that eltoo is not&lt;br/&gt;&amp;gt; yet available. But if you are going to use a kickoff transaction, keep&lt;br/&gt;&amp;gt; in mind that every previous owner will have a copy of it. Because of&lt;br/&gt;&amp;gt; this, you can&amp;#39;t include a fee, and will instead need to have a second&lt;br/&gt;&amp;gt; output for CPFP. This way a previous owner will at least have to pay&lt;br/&gt;&amp;gt; the fee if they want to publish it. Note that it&amp;#39;s still an&lt;br/&gt;&amp;gt; improvement, because even if the kickoff transaction gets posted, it&lt;br/&gt;&amp;gt; basically becomes no different than what it would have been, had you&lt;br/&gt;&amp;gt; not used a kickoff transaction at all.&lt;br/&gt;&lt;br/&gt;It might be worth adopting the late fee binding we have in eltoo by&lt;br/&gt;having the kickoff transaction input spending the funding tx signed with&lt;br/&gt;sighash_single. This works because we only have 1 input and 1 output&lt;br/&gt;that we really care about, and can allow others to attach fees at&lt;br/&gt;will. That&amp;#39;d at least remove the need to guess the feerate days or&lt;br/&gt;months in advance and thus having to overestimate.  &lt;br/&gt;&lt;br/&gt;&amp;gt; Regarding modification 2, I like it a lot conceptually. It hadn&amp;#39;t&lt;br/&gt;&amp;gt; occurred to me before, and it&amp;#39;s a clear security improvement. The only&lt;br/&gt;&amp;gt; question is something Greg Sanders mentioned: whether it&amp;#39;s enough to&lt;br/&gt;&amp;gt; justify the added complexity of using 2P ECDSA. The alternative would&lt;br/&gt;&amp;gt; be to simply use a regular 2-of-2 multisig (until Schnorr arrives,&lt;br/&gt;&amp;gt; possibly).&lt;br/&gt;&lt;br/&gt;Wouldn&amp;#39;t that result in a changing pubkey at each update, and thus&lt;br/&gt;require an onchain move to be committed?&lt;br/&gt;&lt;br/&gt;&amp;gt; I&amp;#39;m looking forward to seeing statechains become a reality.&lt;br/&gt;&lt;br/&gt;That&amp;#39;d indeed be great :-)&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Christian
    </content>
    <updated>2023-06-07T20:23:36&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsftmatxgmtmululrzfp3y2xeqtkg7d0pll0wucnl2jlj7s7ym7w4czypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wrqftaj</id>
    
      <title type="html">📅 Original date posted:2019-10-03 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsftmatxgmtmululrzfp3y2xeqtkg7d0pll0wucnl2jlj7s7ym7w4czypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wrqftaj" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs84032my89qp65gzjumlxehgc0vprxyjz4j4jg4h09qwyku74rumsjadp95&#39;&gt;nevent1q…dp95&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-10-03&lt;br/&gt;📝 Original message:ZmnSCPxj via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; writes:&lt;br/&gt;&lt;br/&gt;&amp;gt; Good morning lists,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Let me summarize concerns brought up:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * Chris concern, is that an ordinary UTXO that is not allocated for `SIGHASH_NOINPUT` use, is inadvertently spent using `SIGHASH_NOINPUT`.&lt;br/&gt;&amp;gt; * My concern, is that unless a UTXO allocated for `SIGHASH_NOINPUT` use, is *indeed* used with SIGHASH_NOINPUT`, it should look exactly the same as any other SegWit v1 output.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I propose the below instead:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * Do ***NOT*** allocate SegWit v16 for `SIGHASH_NOINPUT`.&lt;br/&gt;&amp;gt; * Instead, allocate SegWit v1 Tapscript v16 for `SIGHASH_NOINPUT`.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Then, on usage:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * Exchange hoards can be protected by simple MuSig bip-schnorr SegWit v1 outputs, or a NUMS Taproot internal point with a MAST branch Tapscript v0 `OP_CHECKSIG_ADD` sequence.&lt;br/&gt;&amp;gt; * Decker-Russell-Osuntokun constructions are backed by a n-of-n MuSig Taproot internal point, with a MAST branch containing a Tapscript v16 with `OP_1 OP_CHECKSIG`.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This solves both concerns:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * Ordinary UTXOs not allocated for `SIGHASH_NOINPUT` use simply do not commit to any Taproot that has a Tapscript v16 branch, and thus `SIGHASH_NOINPUT` is unuseable to claim it.&lt;br/&gt;&amp;gt; * If a UTXO used for an offchain protocol ends up in a cooperative-resolution state, nobody has to know that a Tapscript v16 branch existed that could have used `SIGHASH_NOINPUT`.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Again, my objection to output tagging is that it is **publicly visible** as soon as the funding transaction is confirmed onchain that this is a special output used for a Decker-Russell-Osuntokun construction, greatly damaging privacy.&lt;br/&gt;&amp;gt; But if this fact is kept secret *unless* the very specific case of unilateral uncooperative enforcement, then it is quite fine with me.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Would this alternate proposal hold better muster?&lt;br/&gt;&lt;br/&gt;Intriguing idea, this would be an invisible tagging, since the opt-in to&lt;br/&gt;noinput and friends is hidden inside the committed script, which only&lt;br/&gt;gets revealed whenever we actually need it.&lt;br/&gt;&lt;br/&gt;For eltoo this would mean that the funding output would be invisibly&lt;br/&gt;tagged, and the cooperative close would use the taproot pubkey, while&lt;br/&gt;the uncooperative close, which would require noinput opt-in, reveals the&lt;br/&gt;script, proving prior opt-in, and provides a matching signature.&lt;br/&gt;&lt;br/&gt;If I&amp;#39;m not mistaken this would require AJ&amp;#39;s alternative pubkey encoding&lt;br/&gt;(0x01 or 0x00 prefixed pubkey) to make the opt-in visible, correct?
    </content>
    <updated>2023-06-07T20:20:50&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs8drkwee25eegaqckpklp56lmfnvzr3k8pnstzugjlcdntlzj2q2qzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wt7wrp8</id>
    
      <title type="html">📅 Original date posted:2019-10-03 📝 Original message:Chris ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs8drkwee25eegaqckpklp56lmfnvzr3k8pnstzugjlcdntlzj2q2qzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wt7wrp8" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsv9r45gwp8ctyfrzav0p6ftm0jjusx80qqsgz5mhn3syn7057w98qq6pva4&#39;&gt;nevent1q…pva4&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-10-03&lt;br/&gt;📝 Original message:Chris Stewart &amp;lt;chris at suredbits.com&amp;gt; writes:&lt;br/&gt;&lt;br/&gt;&amp;gt; I do have some concerns about SIGHASH_NOINPUT, mainly that it does&lt;br/&gt;&amp;gt; introduce another footgun into the bitcoin protocol with address reuse.&lt;br/&gt;&amp;gt; It&amp;#39;s common practice for bitcoin businesses to re-use addresses. Many&lt;br/&gt;&amp;gt; exchanges [1] reuse addresses for cold storage with very large sums of&lt;br/&gt;&amp;gt; money that is stored in these addreses.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It is my understanding with this part of BIP118&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;Using NOINPUT the input containing the signature no longer references a&lt;br/&gt;&amp;gt; specific output. Any participant can take a transaction and rewrite it by&lt;br/&gt;&amp;gt; changing the hash reference to the previous output, without invalidating&lt;br/&gt;&amp;gt; the signatures. This allows transactions to be bound to any output that&lt;br/&gt;&amp;gt; matches the value committed to in the witness and whose witnessProgram,&lt;br/&gt;&amp;gt; combined with the spending transaction&amp;#39;s witness returns true.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; if an exchange were to once produce a digital signature from that cold&lt;br/&gt;&amp;gt; storage address with a SIGHASH_NOINPUT signature, that signature can be&lt;br/&gt;&amp;gt; replayed again and again on the blockchain until their wallet is drained.&lt;br/&gt;&amp;gt; This might be able to mitigated since the signatures commit to outputs,&lt;br/&gt;&amp;gt; which may be small in value for the transaction that SIGHASH_NOINPUT was&lt;br/&gt;&amp;gt; used. This means that an exchange could move coins from the address with a&lt;br/&gt;&amp;gt; larger transaction that spends money to a new output (and presumably pays a&lt;br/&gt;&amp;gt; higher fee than the smaller transactions).&lt;br/&gt;&lt;br/&gt;Thanks for sharing your concerns Chris, I do agree that noinput and&lt;br/&gt;friends are a very sharp knife that needs to be treated carefully, but&lt;br/&gt;ultimately it&amp;#39;s exactly its sharpness that makes it useful :-)&lt;br/&gt;&lt;br/&gt;&amp;gt; ### Why does this matter?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It seems that SIGHASH_NOINPUT will be an extremely useful tool for offchain&lt;br/&gt;&amp;gt; protocols like Lightning. This gives us the building blocks for enforcing&lt;br/&gt;&amp;gt; specific offchain states to end up onchain [2].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Since this tool is useful, we can presume that it will be integrated into&lt;br/&gt;&amp;gt; the signing path of large economic entities in bitcoin -- namely exchanges.&lt;br/&gt;&amp;gt; Many exchanges have specific signing procedures for transactions that are&lt;br/&gt;&amp;gt; leaving an exchange that is custom software. Now -- presuming wide adoption&lt;br/&gt;&amp;gt; of off chain protocols -- they will need to have a _second unique signing&lt;br/&gt;&amp;gt; path that uses SIGHASH_NOINPUT_.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It is imperative that this second signing path -- which uses&lt;br/&gt;&amp;gt; SIGHASH_NOINPUT -- does NOT get mixed up with the first signing path that&lt;br/&gt;&amp;gt; controls an exchanges onchain funds. If this were to happen, fund lost&lt;br/&gt;&amp;gt; could occur if the exchange is reusing address, which seems to be common&lt;br/&gt;&amp;gt; practice.&lt;br/&gt;&lt;br/&gt;Totally agreed, and as you point out, BIP118 is careful to mandate&lt;br/&gt;separate private keys be used for off-chain contracts and that the&lt;br/&gt;off-chain contract never be mixed with the remainder of your funds. The&lt;br/&gt;way eltoo uses noinput we selectively open us up to replay attacks&lt;br/&gt;(because that&amp;#39;s what the update mechanism is after all) by controlling&lt;br/&gt;the way the transactions can be replayed very carefully, and any other&lt;br/&gt;use of noinput would need to make sure to have the same guarantees.&lt;br/&gt;However, once we have separated the two domains, we can simply use a&lt;br/&gt;separate (hardened) derivation path from a seed key, and never mix them&lt;br/&gt;afterwards. We never exchange any private keys, so even leaking info&lt;br/&gt;across derived keys is not an issue here.&lt;br/&gt;&lt;br/&gt;&amp;gt; This is stated here in BIP118:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;This also means that particular care has to be taken in order to avoid&lt;br/&gt;&amp;gt; unintentionally enabling this rebinding mechanism. NOINPUT MUST NOT be&lt;br/&gt;&amp;gt; used, unless it is explicitly needed for the application, e.g., it MUST NOT&lt;br/&gt;&amp;gt; be a default signing flag in a wallet implementation. Rebinding is only&lt;br/&gt;&amp;gt; possible when the outputs the transaction may bind to all use the same&lt;br/&gt;&amp;gt; public keys. Any public key that is used in a NOINPUT signature MUST only&lt;br/&gt;&amp;gt; be used for outputs that the input may bind to, and they MUST NOT be used&lt;br/&gt;&amp;gt; for transactions that the input may not bind to. For example an application&lt;br/&gt;&amp;gt; SHOULD generate a new key-pair for the application instance using NOINPUT&lt;br/&gt;&amp;gt; signatures and MUST NOT reuse them afterwards.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This means we need to encourage onchain hot wallet signing procedures to be&lt;br/&gt;&amp;gt; kept separate from offchain hot wallet signing procedures, which introduces&lt;br/&gt;&amp;gt; more complexity for key management (two keychains).&lt;br/&gt;&lt;br/&gt;This is already the case: off-chain systems always require access to the&lt;br/&gt;signing key in real-time in order to be useful. If any state change is&lt;br/&gt;performed in a channel, even just adjusting fees or receiving a payment,&lt;br/&gt;requires the signature from the key associated with the channel. With&lt;br/&gt;high security on-chain systems on the other hand you should never have a&lt;br/&gt;hot key that automatically signs off on transfers without human&lt;br/&gt;intervention. So I find it unlikely that mandating the on-chain keys to&lt;br/&gt;be kept separate from off-chain keys is any harder than what should be&lt;br/&gt;done with the current systems.&lt;br/&gt;&lt;br/&gt;&amp;gt; One (of the few) upsides of the current Lightning penalty mechanism is that&lt;br/&gt;&amp;gt; fund loss can be contained to balance of the channel. You cannot do&lt;br/&gt;&amp;gt; something in the current protocol that will effect your funds outside of&lt;br/&gt;&amp;gt; that channel. With SIGHASH_NOINPUT, that property changes.&lt;br/&gt;&lt;br/&gt;Good point, but if the key hygiene is maintained as detailed in BIP118,&lt;br/&gt;i.e., off-chain keys must be kept separate from on-chain keys, and that&lt;br/&gt;each off-chain contract instance uses a separate set of keys, that&lt;br/&gt;property is maintained.&lt;br/&gt;&lt;br/&gt;Regards,&lt;br/&gt;Christian
    </content>
    <updated>2023-06-07T20:20:49&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs2wnldke2vejkm7sm4ft4h7umpy0qlly9wlpjm6ajqhr983xfeh8qzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wkzyvyy</id>
    
      <title type="html">📅 Original date posted:2018-12-20 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs2wnldke2vejkm7sm4ft4h7umpy0qlly9wlpjm6ajqhr983xfeh8qzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wkzyvyy" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsx47k3nupan2snz03e0pjg5nscwswsm7dml2qnujl70azhyet7v0c0e76wk&#39;&gt;nevent1q…76wk&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-12-20&lt;br/&gt;📝 Original message:Johnson Lau &amp;lt;jl2012 at xbt.hk&amp;gt; writes:&lt;br/&gt;&amp;gt; Correct me if I’m wrong.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For the sake of simplicity, in the following I assume BIP118, 143, and&lt;br/&gt;&amp;gt; 141-P2WSH are used (i.e. no taproot). Also, I skipped all the possible&lt;br/&gt;&amp;gt; optimisations.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1. A and B are going to setup a channel.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2. They create one setup tx, with a setup output of the following&lt;br/&gt;&amp;gt; script: &amp;lt;s&amp;gt; CLTV DROP 2 Au Bu 2 CHECKMULTISIG. Do not sign&lt;br/&gt;&lt;br/&gt;If we are using a trigger transaction the output of the setup&lt;br/&gt;transaction would simply be `2 Au Bu 2 OP_CMS`. If we were to use a CLTV&lt;br/&gt;in there we would not have an option to later attach a collaborative&lt;br/&gt;close transaction that is valid immediately. Furthermore the timeout of&lt;br/&gt;the CLTV would start ticking down the exact moment the setup transaction&lt;br/&gt;is confirmed, hence whatever effect we are trying to achieve with that&lt;br/&gt;timelock is limited, and we have a limit to the total lifetime of the&lt;br/&gt;channel.&lt;br/&gt;&lt;br/&gt;&amp;gt; 3. They create the update tx 0, spending the setup output with NOINPUT&lt;br/&gt;&amp;gt; and locktime = s&#43;1, to the update-0 output with the script: IF 2 As0&lt;br/&gt;&amp;gt; Bs0 2 CHECKMULTISIG ELSE &amp;lt;s&#43;1&amp;gt; CLTV DROP 2 Au Bu 2 CHECKMULTISIG ENDIF&lt;br/&gt;&lt;br/&gt;Update 0 is usually what I call the trigger transaction. It takes the&lt;br/&gt;2-of-2 multisig from the setup transaction and translates it into the&lt;br/&gt;two-branch output that further updates or settlements can be attached&lt;br/&gt;to. The settlement transaction attached to the trigger / update 0&lt;br/&gt;reflects the initial state of the channel, i.e., if A added 2 BTC and B&lt;br/&gt;added 1 BTC then settlement 0 will have 2 outputs with value 2 and 1&lt;br/&gt;respectively, with the user&amp;#39;s keys (this can also be considered the&lt;br/&gt;refund in case of one party disappearing right away).&lt;br/&gt;&lt;br/&gt;The second branch in the script you posted is the update branch, which is&lt;br/&gt;not encumbered by a CSV, while the first branch is the one encumbered&lt;br/&gt;with the CSV and is called the settlement branch since we&amp;#39;ll be&lt;br/&gt;attaching settlement txs to it.&lt;br/&gt;&lt;br/&gt;The CLTV looks correct to me and ensures that we can only attach any&lt;br/&gt;state &amp;gt;= s&#43;1.&lt;br/&gt;&lt;br/&gt;So just to show the output script for state `i` how I think they are&lt;br/&gt;correct:&lt;br/&gt;&lt;br/&gt;```&lt;br/&gt;OP_IF&lt;br/&gt;  &amp;lt;timeout&amp;gt; OP_CSV 2 &amp;lt;As_i&amp;gt; &amp;lt;Bs_i&amp;gt; 2 OP_CHECKMULTISIG&lt;br/&gt;OP_ELSE&lt;br/&gt;  &amp;lt;s&#43;1&amp;gt; OP_CLTV OP_DROP 2 &amp;lt;Au&amp;gt; &amp;lt;Bu&amp;gt; 2 OP_CHECKMULTISIG &lt;br/&gt;```&lt;br/&gt;&lt;br/&gt;And the input scripts for the update tx and the settlement tx&lt;br/&gt;respectively would be:&lt;br/&gt;&lt;br/&gt;```&lt;br/&gt;OP_FALSE &amp;lt;Sig_Bu&amp;gt; &amp;lt;Sig_Au&amp;gt;&lt;br/&gt;```&lt;br/&gt;&lt;br/&gt;and&lt;br/&gt;&lt;br/&gt;```&lt;br/&gt;OP_TRUE &amp;lt;Sig_Bs_i&amp;gt; &amp;lt;Sig_As_i&amp;gt;&lt;br/&gt;```&lt;br/&gt;&lt;br/&gt;&amp;gt; 4. They create the settlement tx 0, spending the update-0 output with&lt;br/&gt;&amp;gt; As0 and Bs0 using BIP68 relative-locktime, with 2 settlement outputs&lt;br/&gt;&lt;br/&gt;If I&amp;#39;m not mistaken the CSV needs to be in the scriptPubkey (or P2WSH&lt;br/&gt;equivalent) since segwit witnesses only allow pushes. Hence the script&lt;br/&gt;in point 3 needs to add that :-)&lt;br/&gt;&lt;br/&gt;&amp;gt; 5. They sign the setup tx and let it confirm&lt;br/&gt;&lt;br/&gt;They also need to sign (but not broadcast) update_0, in order to allow&lt;br/&gt;either party to initiate the closure if the counterparty become&lt;br/&gt;unresponsive. The order in which settlement_0 and update_0 are signed is&lt;br/&gt;not important by the way, so we can just batch these. The important part&lt;br/&gt;is that signing the setup acts as a commitment.&lt;br/&gt;&lt;br/&gt;&amp;gt; 6. To update, they create the update tx 1, spending the setup output&lt;br/&gt;&amp;gt; with NOINPUT and locktime = s&#43;2, to the update-1 output with the&lt;br/&gt;&amp;gt; script: IF 2 As1 Bs1 2 CHECKMULTISIG ELSE &amp;lt;s&#43;2&amp;gt; CLTV DROP 2 Au Bu 2&lt;br/&gt;&amp;gt; CHECKMULTISIG ENDIF and create the settlement tx 1, spending the&lt;br/&gt;&amp;gt; update-1 output with As1 and Bs1 using relative-locktime, with 2&lt;br/&gt;&amp;gt; settlement outputs&lt;br/&gt;&lt;br/&gt;The output script of the updates are identical to the ones in the&lt;br/&gt;trigger or update_0 transaction, so they&amp;#39;d also need a CSV (this is why&lt;br/&gt;committing to the script structure with masking still works).&lt;br/&gt;&lt;br/&gt;&amp;gt; 7. To close the channel, broadcast update tx 1. Wait for several&lt;br/&gt;&amp;gt; confirmations. And broadcast settlement-tx-1&lt;br/&gt;&lt;br/&gt;We have to differentiate 2 cases: collaborative close and unilateral&lt;br/&gt;close. In the collaborative close we come to a mutual agreement that&lt;br/&gt;we&amp;#39;d like to take this latest state and settle. So we create a new&lt;br/&gt;transaction that spends the setup output, and add outputs according to&lt;br/&gt;the state we agreed upon, and we sign it. This transaction is&lt;br/&gt;immediately valid, and does not need to be signed with NOINPUT. So all&lt;br/&gt;the chain sees is a setup transaction with some inputs and one multisig&lt;br/&gt;output (singlesig with Schnorr) and a collaborative close transaction&lt;br/&gt;that spends the setup (also not signed with NOINPUT). About as normal as&lt;br/&gt;transactions in Bitcoin can get.&lt;br/&gt;&lt;br/&gt;In the unilateral case, one party isn&amp;#39;t there anymore, or refuses to&lt;br/&gt;sign. So we take the trigger transaction (not signed with NOINPUT) and&lt;br/&gt;the latest update_n transaction (signed with NOINPUT) and broadcast&lt;br/&gt;them. Then we wait for the CSV timeout to expire, and then send the&lt;br/&gt;settlement transaction, which gives us the enforcement of the latest&lt;br/&gt;state that we agreed on. The chain sees a setup transaction and a&lt;br/&gt;trigger transaction (normal transactions for all intents and purposes,&lt;br/&gt;except for the output script of the trigger, but we can hide that with&lt;br/&gt;taproot), followed by two more transactions which are signed with&lt;br/&gt;NOINPUT. So 4 transactions in the worst case, of which 2 are special,&lt;br/&gt;and 2 transactions in the good case.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;So all in all I think it&amp;#39;s a tradeoff between having a larger on-chain&lt;br/&gt;footprint (4 txs vs 3 txs in the worst case) and putting a fixed&lt;br/&gt;lifetime on the channel for the refund case if one party disappears&lt;br/&gt;right away. We&amp;#39;ll probably find out what acceptable parameters are for&lt;br/&gt;these and where the cutoff points are :-)
    </content>
    <updated>2023-06-07T20:15:45&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsztmq5adk7630z8ekgfghaq2evvp6240d0ue63rs95xf75nvw97tszypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wt2mtf6</id>
    
      <title type="html">📅 Original date posted:2018-12-19 📝 Original message:Ruben ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsztmq5adk7630z8ekgfghaq2evvp6240d0ue63rs95xf75nvw97tszypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wt2mtf6" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxmw9gf8njn7eu8qzcnere9wf0em2nfusg7eq9sdvual35wr7x78q64wkz9&#39;&gt;nevent1q…wkz9&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-12-19&lt;br/&gt;📝 Original message:Ruben Somsen via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;writes:&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi Johnson,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The design considerations here seem similar to the ML discussion of&lt;br/&gt;&amp;gt; whether Graftroot should be optional [1].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;While this seems fully compatible with eltoo, is there any other proposals require NOINPUT, and is adversely affected by either way of tagging?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As far as I can tell it should be compatible with Statechains [2],&lt;br/&gt;&amp;gt; since it pretty much mirrors Eltoo in setup.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; My understanding is somewhat lacking, so perhaps I am missing the&lt;br/&gt;&amp;gt; mark, but it is not completely clear to me how this affects&lt;br/&gt;&amp;gt; fungibility if taproot gets added and the setup and trigger tx for&lt;br/&gt;&amp;gt; Eltoo get combined into a single transaction. Would the NOINPUT&lt;br/&gt;&amp;gt; spending condition be hidden inside the taproot commitment?&lt;br/&gt;&lt;br/&gt;I&amp;#39;m not aware of a way to combine the setup and trigger transaction. The&lt;br/&gt;trigger transaction was introduced in order to delay the start of the&lt;br/&gt;timeouts until a later time, to avoid having an absolute lifetime limit&lt;br/&gt;and having really huge timeout. If we were to combine the trigger&lt;br/&gt;transaction with the setup transaction (which is broadcast during&lt;br/&gt;channel creation), all of those timeouts would start counting down&lt;br/&gt;immediately, and we could just skip the trigger transaction&lt;br/&gt;altogether. It&amp;#39;d be more interesting to combine update and trigger&lt;br/&gt;transactions in a sort of cut-through combination, but that doesn&amp;#39;t seem&lt;br/&gt;possible outside of Mimblewimble.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Christian
    </content>
    <updated>2023-06-07T20:15:44&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqstvvu2y6xwgvsrjefvu86xy5j9hrm5tw73yffe36zetk457mw0thszypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wga4uug</id>
    
      <title type="html">📅 Original date posted:2018-11-23 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqstvvu2y6xwgvsrjefvu86xy5j9hrm5tw73yffe36zetk457mw0thszypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wga4uug" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2lf4emhd449n8m9pztn34raz0sczv8p9n938lu32he0ze2fvcvrsfyk5ee&#39;&gt;nevent1q…k5ee&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-11-23&lt;br/&gt;📝 Original message:Anthony Towns &amp;lt;aj at erisian.com.au&amp;gt; writes:&lt;br/&gt;&amp;gt; Commiting to just the sequence numbers seems really weird to me; it&lt;br/&gt;&amp;gt; only really prevents you from adding inputs, since you could still&lt;br/&gt;&amp;gt; replace any input that was meant to be there by almost any arbitrary&lt;br/&gt;&amp;gt; other transaction...&lt;br/&gt;&lt;br/&gt;It&amp;#39;s a really roundabout way of committing to the inputs, I&lt;br/&gt;agree. I&amp;#39;m actually wondering if it makes sense to correct that&lt;br/&gt;additional blanked field in BIP118 at all since it seems there is no&lt;br/&gt;real use-case for NOINPUT that doesn&amp;#39;t involve blanking the&lt;br/&gt;`hashSequence` as well.&lt;br/&gt;&lt;br/&gt;&amp;gt; I could see this *maybe* making sense if you at least committed to the&lt;br/&gt;&amp;gt; values of each input&amp;#39;s outpoint; since that would be an actual constraint?&lt;br/&gt;&lt;br/&gt;BIP118 still commits to the value of the input being spent, i.e.,&lt;br/&gt;6. value is not being blanked in the current proposal. This is on&lt;br/&gt;purpose since we commit to the outputs, not committing to the input&lt;br/&gt;values could end up with unexpected fees.&lt;br/&gt;&lt;br/&gt;&amp;gt;&amp;gt; As for your proposal, I really like the `sighash_scriptmask` proposal,&lt;br/&gt;&amp;gt;&amp;gt; and committing to the fees (with the `nofee` escape hatch) also works&lt;br/&gt;&amp;gt;&amp;gt; seems also a nice fix. My one concern is that introducing a new opcode&lt;br/&gt;&amp;gt;&amp;gt; to mask things in the sighash looks like a similar layering violation as&lt;br/&gt;&amp;gt;&amp;gt; `codeseparator` was, but that&amp;#39;s just a minor issue imho.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think OP_MASK is okay as far as layering goes, if you just think of it&lt;br/&gt;&amp;gt; as a (set of) multibyte &amp;#34;OP_MASKED_PUSH&amp;#34; opcode(s). So when you&lt;br/&gt;&amp;gt; pseudocode a script like:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     &amp;lt;n&amp;gt; OP_CSV OP_DROP &amp;lt;p&amp;gt; OP_CHECKSIG&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; and then decide &amp;lt;n&amp;gt; needs to be masked, you rewrite it as:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     [n] OP_CSV OP_DROP &amp;lt;p&amp;gt; OP_CHECKSIG&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; indicating n is masked, and don&amp;#39;t worry about the exact bytes that will&lt;br/&gt;&amp;gt; encode the push, anymore than you currently worry about whether it&amp;#39;s&lt;br/&gt;&amp;gt; OP_0, OP_1..16, &amp;lt;1..75&amp;gt;&#43;1..75-bytes, PUSHDATA[1,2,3]&#43;n&#43;n-bytes.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As long as OP_MASK only applies to a PUSH and it&amp;#39;s an error for OP_MASK&lt;br/&gt;&amp;gt; not to be immediately followed by that PUSH, I think that all works&lt;br/&gt;&amp;gt; out fine.&lt;br/&gt;&lt;br/&gt;Agreed, that makes more sense :-)
    </content>
    <updated>2023-06-07T20:15:17&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqswggx4rqg5rsf7q4q9x7mlmz6d9n606h5dk20k3cruzcply33tksczypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wk409g4</id>
    
      <title type="html">📅 Original date posted:2018-11-21 📝 Original message:Hi ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqswggx4rqg5rsf7q4q9x7mlmz6d9n606h5dk20k3cruzcply33tksczypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wk409g4" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsye3p7uz9h063sx5ujw8xeqnw8622adhanuu4wr3gzvarkrx8qf0gqhms0c&#39;&gt;nevent1q…ms0c&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-11-21&lt;br/&gt;📝 Original message:Hi Pieter,&lt;br/&gt;&lt;br/&gt;great proposal, I think this may address some of the (perceived)&lt;br/&gt;downsides of BIP118, by committing to the script when possible&lt;br/&gt;(always?). One minor thing that I noticed a while ago and that I meant&lt;br/&gt;to fix on BIP118 is that `hashSequence` does not need to be blanked for&lt;br/&gt;eltoo to work (since where it is needed we also use `sighash_single`),&lt;br/&gt;so I&amp;#39;m tempted to remove that redundant blanking. It may not make a lot&lt;br/&gt;of difference but it&amp;#39;d limit the ability to change the number of inputs&lt;br/&gt;to a NOINPUT transaction (this now being the only field that commits to&lt;br/&gt;the set of inputs).&lt;br/&gt;&lt;br/&gt;As for your proposal, I really like the `sighash_scriptmask` proposal,&lt;br/&gt;and committing to the fees (with the `nofee` escape hatch) also works&lt;br/&gt;seems also a nice fix. My one concern is that introducing a new opcode&lt;br/&gt;to mask things in the sighash looks like a similar layering violation as&lt;br/&gt;`codeseparator` was, but that&amp;#39;s just a minor issue imho.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Christian&lt;br/&gt;&lt;br/&gt;Pieter Wuille via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;writes:&lt;br/&gt;&amp;gt; Hello everyone,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For future segwit versions, I think it would be good add a few things&lt;br/&gt;&amp;gt; to the sighash by default that were overlooked in BIP143:&lt;br/&gt;&amp;gt; * Committing to the absolute transaction fee (in addition to just the&lt;br/&gt;&amp;gt; amount being spent in each input) would categorically remove concerns&lt;br/&gt;&amp;gt; about wallets lying about fees to HW devices or airgapped signers.&lt;br/&gt;&amp;gt; * Committing to the scriptPubKey (in addition to the scriptCode) would&lt;br/&gt;&amp;gt; prevent lying to devices about the type of output being spent, even&lt;br/&gt;&amp;gt; when the scriptCode is correct. As a reminder, the scriptCode is the&lt;br/&gt;&amp;gt; actually executed script (which is the redeemscript in non-segwit&lt;br/&gt;&amp;gt; P2SH, and the witnesscript in P2WSH/P2WPKH).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As this implies additional information that may not be desirable to&lt;br/&gt;&amp;gt; commit to in all circumstances, it makes sense to make these optional.&lt;br/&gt;&amp;gt; This obviously interacts with SIGHASH_NOINPUT, which really adds two&lt;br/&gt;&amp;gt; different ways of rebinding signatures to inputs:&lt;br/&gt;&amp;gt; * Changing the prevout (so that the txid doesn&amp;#39;t need to be known when&lt;br/&gt;&amp;gt; the signature is created)&lt;br/&gt;&amp;gt; * Changing the script (so that the exact scriptPubKey/redeemScript/...&lt;br/&gt;&amp;gt; doesn&amp;#39;t need to be known when the signature is created)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Of course, the second implies the first, but do all use cases require&lt;br/&gt;&amp;gt; both being able to change the prevout and (arbitrarily) changing the&lt;br/&gt;&amp;gt; scriptPubKey? While BIP118 correctly points out this is secure if the&lt;br/&gt;&amp;gt; same keys are only used in scripts with which binding is to be&lt;br/&gt;&amp;gt; permitted, I feel it would be preferable if signatures/scripts would&lt;br/&gt;&amp;gt; explicitly state what can change. One way to accomplish this is by&lt;br/&gt;&amp;gt; indicating exactly what in a script is subject to change.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Here is a combined proposal:&lt;br/&gt;&amp;gt; * Three new sighash flags are added: SIGHASH_NOINPUT, SIGHASH_NOFEE,&lt;br/&gt;&amp;gt; and SIGHASH_SCRIPTMASK.&lt;br/&gt;&amp;gt; * A new opcode OP_MASK is added, which acts as a NOP during execution.&lt;br/&gt;&amp;gt; * The sighash is computed like in BIP143, but:&lt;br/&gt;&amp;gt;   * If SIGHASH_SCRIPTMASK is present, for every OP_MASK in scriptCode&lt;br/&gt;&amp;gt; the subsequent opcode/push is removed.&lt;br/&gt;&amp;gt;   * The scriptPubKey being spent is added to the sighash, unless&lt;br/&gt;&amp;gt; SIGHASH_SCRIPTMASK is set.&lt;br/&gt;&amp;gt;   * The transaction fee is added to the sighash, unless SIGHASH_NOFEE is set.&lt;br/&gt;&amp;gt;   * hashPrevouts, hashSequence, and outpoint are set to null when&lt;br/&gt;&amp;gt; SIGHASH_NOINPUT is set (like BIP118, but not for scriptCode).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; So my question is whether anyone can see ways in which this introduces&lt;br/&gt;&amp;gt; redundant flexibility, or misses obvious use cases?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; -- &lt;br/&gt;&amp;gt; Pieter&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;
    </content>
    <updated>2023-06-07T20:15:16&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs24e5y2gtwpdhsufyzpkfsr7u578s26e2gfuhhlu6pk7ypqnef22czypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wta0yer</id>
    
      <title type="html">📅 Original date posted:2018-11-21 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs24e5y2gtwpdhsufyzpkfsr7u578s26e2gfuhhlu6pk7ypqnef22czypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wta0yer" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsra3ytcs0pce9a0uar9vfdqlcfkn2gzz0ahkdqzdkgg7d8qu2ngzgxr0nq0&#39;&gt;nevent1q…0nq0&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-11-21&lt;br/&gt;📝 Original message:Anthony Towns via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;writes:&lt;br/&gt;&amp;gt; Given this implementation, NOINPUT effectively implies ANYONECANPAY,&lt;br/&gt;&amp;gt; I think. (I think that is also true of BIP 118&amp;#39;s NOINPUT spec)&lt;br/&gt;&lt;br/&gt;I mentioned this in my reply to Pieter, but this may not be true if we&lt;br/&gt;remove the blanking of the `hashSequence` field. Anyonecanpay would&lt;br/&gt;allow changing the number of inputs in an arbitrary fashion, while&lt;br/&gt;`noinput` without the blanking would (in a weird roundabout way) still&lt;br/&gt;commit to the number of inputs. Maybe we want to make that more explicit&lt;br/&gt;by also hashing the number of inputs? But I can&amp;#39;t think of a good&lt;br/&gt;usecase for keeping that, with noinput.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Christian
    </content>
    <updated>2023-06-07T20:15:16&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs9cad7xkfvaaq3t5fdktlu9aue87t28w2qkgfcn8der82x3zujczqzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wmakflp</id>
    
      <title type="html">📅 Original date posted:2018-04-30 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs9cad7xkfvaaq3t5fdktlu9aue87t28w2qkgfcn8der82x3zujczqzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wmakflp" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsp7hxpv4ywez5qn3q8t4p9e2uj8lk8rux8hcrv3xeyr2jgp0szmus97dkjw&#39;&gt;nevent1q…dkjw&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-04-30&lt;br/&gt;📝 Original message:(cross-posting to bitcoin-dev since this serves as motivation behind the&lt;br/&gt;sighash_noinput proposal)&lt;br/&gt;&lt;br/&gt;&amp;gt; TL;DR: we announce a new, simple, update mechanism for off-chain protocols,&lt;br/&gt;&amp;gt; see the announcement [1] and the paper [2] :-)&lt;br/&gt;&lt;br/&gt;A little over a year ago, the three Lightning Network implementation&lt;br/&gt;teams joined forces to work on a common specification for the protocol&lt;br/&gt;stack. Now that both that specification and our three implementations&lt;br/&gt;are becoming stable and usable, it is time to look forward: to further&lt;br/&gt;improve the protocol, to add new features, to simplify, and to fix&lt;br/&gt;downsides.&lt;br/&gt;&lt;br/&gt;One of the core innovations that enabled Lightning in the first place was an&lt;br/&gt;off-chain update mechanism to renegotiate a new state and ensure that the old&lt;br/&gt;state can not be settled on-chain. Today, we&amp;#39;re excited to release our latest&lt;br/&gt;research paper on a new, simplified, update mechanism for layer 2 protocols,&lt;br/&gt;called eltoo.&lt;br/&gt;&lt;br/&gt;eltoo is a drop-in replacement for the penalty based invalidation&lt;br/&gt;mechanism that is used today in the Lightning specification. It is&lt;br/&gt;similar in many ways to the sequence number mechanism that was already&lt;br/&gt;present in the original Bitcoin implementation. But, while sequence&lt;br/&gt;numbers were unenforceable on the blockchain, eltoo is enforceable by&lt;br/&gt;overriding subsequent states on-chain.&lt;br/&gt;&lt;br/&gt;Unlike the current mechanism used in Lightning so far, it is not penalty&lt;br/&gt;based, i.e., publishing an old state does not result in the faulty node&lt;br/&gt;to automatically lose funds, and is most similar to the duplex&lt;br/&gt;micropayment channels construction. It is a symmetric scheme, i.e., all&lt;br/&gt;participants share an identical set of transactions, and it ensures that the&lt;br/&gt;last agreed upon state is settled on-chain, with similar tradeoffs as&lt;br/&gt;today&amp;#39;s Lightning (timelock vs. online requirement).&lt;br/&gt;&lt;br/&gt;eltoo addresses some of the issues we encountered while speficying and&lt;br/&gt;implementing the Lightning Network. For example outsourcing becomes very&lt;br/&gt;simple since old states becoming public can&amp;#39;t hurt us anymore. We&lt;br/&gt;completely remove the need to estimate fees ahead of time. The&lt;br/&gt;construction allows us to attach fees when settling, and even allows for&lt;br/&gt;fees to be bumped using CPFP or RBF.&lt;br/&gt;&lt;br/&gt;Beyond Lightning, eltoo can be used as a generic update mechanism for an&lt;br/&gt;off-chain contract, for a larger number of participants. This was not&lt;br/&gt;possible in the current update mechanism since reactions to a&lt;br/&gt;misbehaving participant needed to be tailore to that participant. This&lt;br/&gt;enables other protocols such as the channel factories, and in&lt;br/&gt;combination with Schnorr signatures allows for very large off-chain&lt;br/&gt;contracts with minimal on-chain footprint.&lt;br/&gt;&lt;br/&gt;Before we can implement eltoo, we need a minor change to Bitcoin: the&lt;br/&gt;introduction of the SIGHASH_NOINPUT flag for signatures. This was first&lt;br/&gt;discussed a few months ago in the context of watchtowers to help secure&lt;br/&gt;Lightning channels, but was not formally proposed. A formal proposal may&lt;br/&gt;now be found in the eltoo paper.&lt;br/&gt;&lt;br/&gt;We invite the community to consider our proposal and to participate in&lt;br/&gt;its discussion. We hope to arrive at a consensus for the usage of&lt;br/&gt;SIGHASH_NOINPUT, so that it can be accepted and included in a future&lt;br/&gt;soft fork of Bitcoin Script. Doing so will put us on the road to a more&lt;br/&gt;reliable and simpler Lightning Network, incorporating a new update&lt;br/&gt;mechanism that can also be used for many other applications.&lt;br/&gt;&lt;br/&gt;The full official announcement can be found at [1] and the paper with the full&lt;br/&gt;details can be found at [2].&lt;br/&gt;&lt;br/&gt;Looking forward to the communities feedback,&lt;br/&gt;Christian&lt;br/&gt;&lt;br/&gt;[1] &lt;a href=&#34;https://blockstream.com/2018/04/30/eltoo-next-lightning.html&#34;&gt;https://blockstream.com/2018/04/30/eltoo-next-lightning.html&lt;/a&gt;&lt;br/&gt;[2] &lt;a href=&#34;https://blockstream.com/eltoo.pdf&#34;&gt;https://blockstream.com/eltoo.pdf&lt;/a&gt;
    </content>
    <updated>2023-06-07T20:11:42&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsy2eyeh9axcswu4ghtdhja2m9cdwjw28ghlv4f7s876x0884s5auqzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wj99wuw</id>
    
      <title type="html">📅 Original date posted:2017-01-05 📝 Original message:On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsy2eyeh9axcswu4ghtdhja2m9cdwjw28ghlv4f7s876x0884s5auqzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wj99wuw" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9klgp8409t74kw9vndy9e86equ7vza82sw4dute32k0epk34s80cd7787l&#39;&gt;nevent1q…787l&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-01-05&lt;br/&gt;📝 Original message:On Wed, Jan 04, 2017 at 11:45:18PM -0800, Eric Voskuil via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; On 01/04/2017 11:06 PM, Chris Priest via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; &amp;gt; The best way is to connect to the mempool of each miner and check to&lt;br/&gt;&amp;gt; &amp;gt; see if they have your txid in their mempool.&lt;br/&gt;&amp;gt; &amp;gt; &lt;br/&gt;&amp;gt; &amp;gt; &lt;a href=&#34;https://www.antpool.com/api/is_in_mempool?txid=334847bb&#34;&gt;https://www.antpool.com/api/is_in_mempool?txid=334847bb&lt;/a&gt;...&lt;br/&gt;&amp;gt; &amp;gt; &lt;a href=&#34;https://www.f2pool.com/api/is_in_mempool?txid=334847bb&#34;&gt;https://www.f2pool.com/api/is_in_mempool?txid=334847bb&lt;/a&gt;...&lt;br/&gt;&amp;gt; &amp;gt; &lt;a href=&#34;https://bw.com/api/is_in_mempool?txid=334847bb&#34;&gt;https://bw.com/api/is_in_mempool?txid=334847bb&lt;/a&gt;...&lt;br/&gt;&amp;gt; &amp;gt; &lt;a href=&#34;https://bitfury.com/api/is_in_mempool?txid=334847bb&#34;&gt;https://bitfury.com/api/is_in_mempool?txid=334847bb&lt;/a&gt;...&lt;br/&gt;&amp;gt; &amp;gt; &lt;a href=&#34;https://btcc.com/api/is_in_mempool?txid=334847bb&#34;&gt;https://btcc.com/api/is_in_mempool?txid=334847bb&lt;/a&gt;...&lt;br/&gt;&amp;gt; &amp;gt; &lt;br/&gt;&amp;gt; &amp;gt; If each of these services return &amp;#34;True&amp;#34;, and you know those services&lt;br/&gt;&amp;gt; &amp;gt; so not engage in RBF, then you can assume with great confidence that&lt;br/&gt;&amp;gt; &amp;gt; your transaction will be in the next block, or in a block very soon.&lt;br/&gt;&amp;gt; &amp;gt; If any one of those services return &amp;#34;False&amp;#34;, then you must assume that&lt;br/&gt;&amp;gt; &amp;gt; it is possible that there is a double spend floating around, and that&lt;br/&gt;&amp;gt; &amp;gt; you should wait to see if that tx gets confirmed. The problem is that&lt;br/&gt;&amp;gt; &amp;gt; not every pool runs such a service to check the contents of their&lt;br/&gt;&amp;gt; &amp;gt; mempool...&lt;br/&gt;&amp;gt; &amp;gt; &lt;br/&gt;&amp;gt; &amp;gt; This is an example of mining centralization increasing the security of&lt;br/&gt;&amp;gt; &amp;gt; zero confirm.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; A world connected up to a few web services to determine payment validity&lt;br/&gt;&amp;gt; is an example of a bitcoin security catastrophe.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; e&lt;br/&gt;&amp;gt; &lt;br/&gt;&lt;br/&gt;And it&amp;#39;s a great way to tell every miner who you are and what&lt;br/&gt;transactions you are sending/receiving. An absolute privacy&lt;br/&gt;nightmare...&lt;br/&gt;&lt;br/&gt;-- cdecker
    </content>
    <updated>2023-06-07T19:55:10&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqswf4hpwtd9kh49ev7n00uypcn8xas322ajy9x0y46kzcdu5re4ysszypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wdgc2et</id>
    
      <title type="html">📅 Original date posted:2015-10-22 📝 Original message:Indeed ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqswf4hpwtd9kh49ev7n00uypcn8xas322ajy9x0y46kzcdu5re4ysszypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wdgc2et" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2k4n027sgddl4rh4ylk37ja0mhecfdur7q2qva7e5eqvaug4z2yskjqmg7&#39;&gt;nevent1q…qmg7&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-10-22&lt;br/&gt;📝 Original message:Indeed the reason I got started with all of this is the use of normalized&lt;br/&gt;transaction IDs within smart contracts with multiple signers. Sorry if I&lt;br/&gt;was perceived as overselling it :-)&lt;br/&gt;&lt;br/&gt;So to summarize the discussions that have been on-going here as well as in&lt;br/&gt;the PR so far, most people seem to agree that the BIP is an improvement for&lt;br/&gt;smart-contracts as well as the third-party modification scenario. It comes&lt;br/&gt;at the cost of increased UTXO size due to the additional hash being stored&lt;br/&gt;per transaction with unclaimed outputs and some additional computations.&lt;br/&gt;The additional computation is for the normalized ID computation and the&lt;br/&gt;swapping in of normalized IDs during verification. No additional coin&lt;br/&gt;lookups are needed as they are retrieved and cached anyway when verifying&lt;br/&gt;the transaction. Would everybody agree with this assessment so far?&lt;br/&gt;&lt;br/&gt;On the PR there were some additional suggestions of treating singlesig&lt;br/&gt;transactions as 1-of-1 transactions and using Schnorr signatures for the&lt;br/&gt;new opcode. Schnorr has been in the works for a long time and gives a&lt;br/&gt;multitude of advantages, e.g., batch validation, and seems like a good&lt;br/&gt;addition. Since the verify flag is mandatory due to the soft-fork migration&lt;br/&gt;and we might merge singlesig and multisig into a single opcode we can&lt;br/&gt;replace the bitmap of flags with a simple version number. Clients would&lt;br/&gt;fall back to OP_NOP behaviour for versions they do not implement,&lt;br/&gt;maintaining soft-fork semantics to build more future signing and&lt;br/&gt;verification methods.&lt;br/&gt;&lt;br/&gt;On Thu, Oct 22, 2015 at 10:57 AM Gregory Maxwell &amp;lt;gmaxwell at gmail.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; On Thu, Oct 22, 2015 at 8:26 AM, Christian Decker via bitcoin-dev&lt;br/&gt;&amp;gt; &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt; Normalized transaction IDs do help in the case that the single signer&lt;br/&gt;&amp;gt; wants&lt;br/&gt;&amp;gt; &amp;gt; to immediately follow up its transaction with another transaction&lt;br/&gt;&amp;gt; spending&lt;br/&gt;&amp;gt; &amp;gt; the first one&amp;#39;s change output, and it prevents any modification in the&lt;br/&gt;&amp;gt; &amp;gt; multi-signer scenario.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For ordinary transactions which are not performing interesting smart&lt;br/&gt;&amp;gt; contracts that particular is better addressed via canonical encoding,&lt;br/&gt;&amp;gt; which is immediately available and doesn&amp;#39;t have the associated costs&lt;br/&gt;&amp;gt; (new pubkey type adoption, 20%-30% UTXO size increase, need for nodes&lt;br/&gt;&amp;gt; to fixup txid references, etc.).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Please, as I said up-thread: this is good and importantstuff to work&lt;br/&gt;&amp;gt; on, but it shouldn&amp;#39;t be oversold.&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20151022/f94cd31f/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20151022/f94cd31f/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:43:45&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs9nkxqntf0as4xx647stlj6tz3umwq8jus6wq2j304hruac3869qczypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9w4ahg88</id>
    
      <title type="html">📅 Original date posted:2015-10-21 📝 Original message:Hm, ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs9nkxqntf0as4xx647stlj6tz3umwq8jus6wq2j304hruac3869qczypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9w4ahg88" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqstfjshrjeq5rfnfglajcrfdjhqla98z59pqph8sy3m0u2guz08t4qj33pkr&#39;&gt;nevent1q…3pkr&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-10-21&lt;br/&gt;📝 Original message:Hm, that is true as long as the signer is the only signer of the&lt;br/&gt;transaction, otherwise he&amp;#39;d be invalidating the signatures of the other&lt;br/&gt;signers. That can however be fixed by having a canonical ordering of Inputs&lt;br/&gt;and Outputs, which has been discussed before in order to decrease&lt;br/&gt;information that can be gained about the spender. Maybe we can defer to&lt;br/&gt;that effort?&lt;br/&gt;&lt;br/&gt;On Wed, Oct 21, 2015 at 10:41 AM Luke Dashjr &amp;lt;luke at dashjr.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; On Wednesday, October 21, 2015 8:31:42 AM Christian Decker wrote:&lt;br/&gt;&amp;gt; &amp;gt; On Wed, Oct 21, 2015 at 9:52 AM Luke Dashjr &amp;lt;luke at dashjr.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; On Wednesday, October 21, 2015 7:39:45 AM Christian Decker wrote:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; On Wed, Oct 21, 2015 at 8:19 AM Luke Dashjr &amp;lt;luke at dashjr.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; This doesn&amp;#39;t completely close malleability (which should be&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; documented&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; in&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; the BIP), so I&amp;#39;m not sure it&amp;#39;s worth the cost, especially if&lt;br/&gt;&amp;gt; closing&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; malleability later on would need more. How about specifying flags&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; upfront&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; in the UTXO-creating transaction specifying which parts the&lt;br/&gt;&amp;gt; signature&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; will cover? This would allow implementation of fully&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; malleability-proof wallets.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; As far as I see it the only remaining venues for malleability are the&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; use of sighash flags that are not SIGHASH_ALL, as mentioned in the&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; BIP. Any&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; use&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; of non-sighash_all flags is already an explicit permission to modify&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; the transactions, by adding and removing inputs and outputs, so I&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; don&amp;#39;t see&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; how&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; these can be made non-malleable. Am I missing something?&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Signer malleability is still a notable concern needing consideration.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Ideally,&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; wallets should be trying to actively CoinJoin, bump fees on, etc any&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; pending&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; transactions in the background. These forms of malleability affect&lt;br/&gt;&amp;gt; nearly&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; as&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; many real use cases as third-party malleability.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Luke&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; How is signer malleability still a problem if we remove the signatures&lt;br/&gt;&amp;gt; from&lt;br/&gt;&amp;gt; &amp;gt; the transaction ID of the transaction and all preceding transactions? The&lt;br/&gt;&amp;gt; &amp;gt; signer can re-sign a transaction but it won&amp;#39;t change the transaction ID.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The signer can also change the order of the inputs, the inputs themselves,&lt;br/&gt;&amp;gt; add/remove outputs, etc... all which should be possible without becoming a&lt;br/&gt;&amp;gt; different logical transaction. The only unique property of the logical&lt;br/&gt;&amp;gt; transaction is the scriptPubKey/address.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Luke&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20151021/c06fc8ff/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20151021/c06fc8ff/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:43:43&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqszs7hde6dp4glem5wg67hxjjwee42jtzxzqrfcn0zuhklymn9kuqgzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wmuzrgp</id>
    
      <title type="html">📅 Original date posted:2015-10-21 📝 Original message:On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqszs7hde6dp4glem5wg67hxjjwee42jtzxzqrfcn0zuhklymn9kuqgzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wmuzrgp" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs86xsr3ql4yunxuq496dhzxp5zp3alkja4xcwkjkgwd2qzl6mlwzg7gu52p&#39;&gt;nevent1q…u52p&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-10-21&lt;br/&gt;📝 Original message:On Wed, Oct 21, 2015 at 9:52 AM Luke Dashjr &amp;lt;luke at dashjr.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; On Wednesday, October 21, 2015 7:39:45 AM Christian Decker wrote:&lt;br/&gt;&amp;gt; &amp;gt; On Wed, Oct 21, 2015 at 8:19 AM Luke Dashjr &amp;lt;luke at dashjr.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; This doesn&amp;#39;t completely close malleability (which should be documented&lt;br/&gt;&amp;gt; in&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; the BIP), so I&amp;#39;m not sure it&amp;#39;s worth the cost, especially if closing&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; malleability later on would need more. How about specifying flags&lt;br/&gt;&amp;gt; upfront&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; in the UTXO-creating transaction specifying which parts the signature&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; will cover? This would allow implementation of fully malleability-proof&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; wallets.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; As far as I see it the only remaining venues for malleability are the use&lt;br/&gt;&amp;gt; &amp;gt; of sighash flags that are not SIGHASH_ALL, as mentioned in the BIP. Any&lt;br/&gt;&amp;gt; use&lt;br/&gt;&amp;gt; &amp;gt; of non-sighash_all flags is already an explicit permission to modify the&lt;br/&gt;&amp;gt; &amp;gt; transactions, by adding and removing inputs and outputs, so I don&amp;#39;t see&lt;br/&gt;&amp;gt; how&lt;br/&gt;&amp;gt; &amp;gt; these can be made non-malleable. Am I missing something?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Signer malleability is still a notable concern needing consideration.&lt;br/&gt;&amp;gt; Ideally,&lt;br/&gt;&amp;gt; wallets should be trying to actively CoinJoin, bump fees on, etc any&lt;br/&gt;&amp;gt; pending&lt;br/&gt;&amp;gt; transactions in the background. These forms of malleability affect nearly&lt;br/&gt;&amp;gt; as&lt;br/&gt;&amp;gt; many real use cases as third-party malleability.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Luke&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;How is signer malleability still a problem if we remove the signatures from&lt;br/&gt;the transaction ID of the transaction and all preceding transactions? The&lt;br/&gt;signer can re-sign a transaction but it won&amp;#39;t change the transaction ID.&lt;br/&gt;&lt;br/&gt;It is still possible to double-spend transactions that do not have enough&lt;br/&gt;fees, so just starting a new round of CoinJoin is sufficient to bump fees&lt;br/&gt;for all parties that participate, and that would also result in the&lt;br/&gt;double-spent low fee transaction to be discarded, resolving the state of&lt;br/&gt;all coins in the first CoinJoin tx.&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20151021/87444434/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20151021/87444434/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:43:43&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsvcwz3d66ugystmk0j3rlgh3n0ykr4g68y2uy4c02lvul989mywaszypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wppgyas</id>
    
      <title type="html">📅 Original date posted:2015-10-21 📝 Original message:On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsvcwz3d66ugystmk0j3rlgh3n0ykr4g68y2uy4c02lvul989mywaszypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wppgyas" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsws3rl7388efx9phnqgmupcf00p82sz5c7s86sj77marqdc4jlaacfdathu&#39;&gt;nevent1q…athu&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-10-21&lt;br/&gt;📝 Original message:On Wed, Oct 21, 2015 at 8:19 AM Luke Dashjr &amp;lt;luke at dashjr.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; On Monday, October 19, 2015 2:01:04 PM Christian Decker via bitcoin-dev&lt;br/&gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt; The proposal is implemented (see below), by computing the normalized&lt;br/&gt;&amp;gt; &amp;gt; transaction ID when adding them to the UTXO and storing them along with&lt;br/&gt;&amp;gt; the&lt;br/&gt;&amp;gt; &amp;gt; coin state. OP_CHECKSIGEX mostly duplicates OP_CHECKSIG and&lt;br/&gt;&amp;gt; &amp;gt; OP_CHECKMULTISIG, but I&amp;#39;m hoping somebody can give me some pointers into&lt;br/&gt;&amp;gt; &amp;gt; how to best refactor the common functionality into reusable blocks. And&lt;br/&gt;&amp;gt; the&lt;br/&gt;&amp;gt; &amp;gt; annotating incoming transactions with their normalized inputs is a bit&lt;br/&gt;&amp;gt; &amp;gt; cumbersome, maye somebody has some pointers here as well?&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; This doesn&amp;#39;t completely close malleability (which should be documented in&lt;br/&gt;&amp;gt; the&lt;br/&gt;&amp;gt; BIP), so I&amp;#39;m not sure it&amp;#39;s worth the cost, especially if closing&lt;br/&gt;&amp;gt; malleability&lt;br/&gt;&amp;gt; later on would need more. How about specifying flags upfront in the UTXO-&lt;br/&gt;&amp;gt; creating transaction specifying which parts the signature will cover? This&lt;br/&gt;&amp;gt; would allow implementation of fully malleability-proof wallets.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;As far as I see it the only remaining venues for malleability are the use&lt;br/&gt;of sighash flags that are not SIGHASH_ALL, as mentioned in the BIP. Any use&lt;br/&gt;of non-sighash_all flags is already an explicit permission to modify the&lt;br/&gt;transactions, by adding and removing inputs and outputs, so I don&amp;#39;t see how&lt;br/&gt;these can be made non-malleable. Am I missing something?&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Additionally, you have a flag to control whether the opcode behaves as&lt;br/&gt;&amp;gt; VERIFY&lt;br/&gt;&amp;gt; or not. Non-VERIFY is not possible as a softfork (without doing a&lt;br/&gt;&amp;gt; second/new&lt;br/&gt;&amp;gt; P2SH) since it can be negated.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;Yes, this is my mistake and has been pointed out in the PR, I will amend&lt;br/&gt;the PR to make the verify flag mandatory, which also guarantees that the&lt;br/&gt;top of the stack contains a non-null element, thus resulting in a&lt;br/&gt;successful evaluation on non-updated clients.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Luke&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20151021/3a229156/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20151021/3a229156/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:43:42&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsryp9ha4mqatfljhw2qadj7ftjmng099xfkwe0zaht7xluk7ylh4gzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wmfa3zq</id>
    
      <title type="html">📅 Original date posted:2015-10-19 📝 Original message:Yes, ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsryp9ha4mqatfljhw2qadj7ftjmng099xfkwe0zaht7xluk7ylh4gzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wmfa3zq" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9l65gkla2tjzxxpfefyfhdtfvmetukhykhhdrfj22w76tav254gs75r8vt&#39;&gt;nevent1q…r8vt&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-10-19&lt;br/&gt;📝 Original message:Yes, this has been pointed out in the PR as well. Transactions inputs must&lt;br/&gt;also be normalized by replacing malleable hashes with the normalized&lt;br/&gt;hashes. I will fix the spec and the implementation to reflect this :-)&lt;br/&gt;&lt;br/&gt;Regards,&lt;br/&gt;Christian&lt;br/&gt;&lt;br/&gt;On Mon, Oct 19, 2015 at 5:24 PM Tier Nolan via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; On Mon, Oct 19, 2015 at 3:01 PM, Christian Decker via bitcoin-dev &amp;lt;&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; As with the previous version, which was using a hard-fork, the normalized&lt;br/&gt;&amp;gt;&amp;gt; transaction ID is computed only considering the non-malleable parts of a&lt;br/&gt;&amp;gt;&amp;gt; transaction, i.e., stripping the signatures before computing the hash of&lt;br/&gt;&amp;gt;&amp;gt; the transaction.&lt;br/&gt;&amp;gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Is this proposal recursive?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; *Coinbase transaction *&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * n-txid = txid&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; *Non-coinbase transactions*&lt;br/&gt;&amp;gt; * replace sigScripts with empty strings&lt;br/&gt;&amp;gt; * replace txids in TxIns with n-txid for parents&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The 2nd step is recursive starting from the coinbases.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In effect, the rule is that txids are what they would have been if n-txids&lt;br/&gt;&amp;gt; had been used right from the start.&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20151019/5df79d73/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20151019/5df79d73/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:43:41&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqszzyazg4x0d936j8z3v3k0wqnu037a39dyc2cemlfj2ra579h2t6czypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wet8vcj</id>
    
      <title type="html">📅 Original date posted:2015-10-20 📝 Original message:On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqszzyazg4x0d936j8z3v3k0wqnu037a39dyc2cemlfj2ra579h2t6czypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wet8vcj" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszfqkrrvv5axaxh2yfqzp4zcdksm25jhdrdqq4ttjhsreugxy5gdgsnhe79&#39;&gt;nevent1q…he79&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-10-20&lt;br/&gt;📝 Original message:On Tue, Oct 20, 2015 at 12:23 AM s7r via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; So what exactly is used to create the normalized txid (sha256 hash of&lt;br/&gt;&amp;gt; what data)? I&amp;#39;ve read in the linked BIP draft that it will strip the&lt;br/&gt;&amp;gt; &amp;#39;malleable parts&amp;#39; but didn&amp;#39;t understand what exactly will be used to&lt;br/&gt;&amp;gt; calculate the normalized transactions ids and how will the change apply&lt;br/&gt;&amp;gt; retro-active for the transactions so deep buried in the blockchain?&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;The normalization involves two steps:&lt;br/&gt; - strip the scriptSig scripts in the inputs, i.e., the only part whose&lt;br/&gt;integrity is not guaranteed by the signature itself, by replacing the&lt;br/&gt;scripts with empty strings (var length string of size 0)&lt;br/&gt; - replace the hashes referencing the outputs being spent with the&lt;br/&gt;normalized hashes of the transaction that created the outputs. This is done&lt;br/&gt;recursively down to the first v2 transactions.&lt;br/&gt;&lt;br/&gt;The second part is not yet explained in the draft, but I will amend it as&lt;br/&gt;soon as possible.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; Pubkeys (addresses) can be reused infinitely so what guarantees us&lt;br/&gt;&amp;gt; unique normalized txids all the time and protection against replay&lt;br/&gt;&amp;gt; attacks? The question is not if this issue is covered or not, I know it&lt;br/&gt;&amp;gt; is, I am just asking how, in simpler terms.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;Non-coinbase transactions can still not be replayed since the normalized&lt;br/&gt;transaction still includes a the normalized transaction hashes of claimed&lt;br/&gt;outputs, hence any attempt to replay a transaction would fail since the&lt;br/&gt;outputs were already spent. For coinbase transactions it is indeed possible&lt;br/&gt;that we create multiple transactions with the same hash (only one of which&lt;br/&gt;would be spendable), hence we do not strip coinbase transactions and rely&lt;br/&gt;on BIP 34 to make the coinbase transactions unique (except for blocks 91842&lt;br/&gt;and 91880 which are the reason we introduced BIP 34 in the first place).&lt;br/&gt;Clarifying the way the normalized transaction ID is computed should remove&lt;br/&gt;any ambiguities I hope.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; SCRIPT_CHECKSIGEX_NORMALIZE could be explained better in the document.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Will it also fix &amp;gt; third level malleability (a tx which spends from&lt;br/&gt;&amp;gt; another unconfirmed tx which spends from yet another unconfirmed tx)?&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;Yes, if the computation of the normalized transaction ID includes replacing&lt;br/&gt;input hashes with their normalized counterpart makes a chain of any depth&lt;br/&gt;non-malleable.&lt;br/&gt;&lt;br/&gt;HTH,&lt;br/&gt;Christian&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On 10/19/2015 6:23 PM, Tier Nolan via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; &amp;gt; On Mon, Oct 19, 2015 at 3:01 PM, Christian Decker via bitcoin-dev&lt;br/&gt;&amp;gt; &amp;gt; &amp;lt;bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;gt; &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;     As with the previous version, which was using a hard-fork, the&lt;br/&gt;&amp;gt; &amp;gt;     normalized transaction ID is computed only considering the&lt;br/&gt;&amp;gt; &amp;gt;     non-malleable parts of a transaction, i.e., stripping the signatures&lt;br/&gt;&amp;gt; &amp;gt;     before computing the hash of the transaction.&lt;br/&gt;&amp;gt; &amp;gt;     &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Is this proposal recursive?&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; *Coinbase transaction&lt;br/&gt;&amp;gt; &amp;gt; *&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; * n-txid = txid&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; *Non-coinbase transactions&lt;br/&gt;&amp;gt; &amp;gt; *&lt;br/&gt;&amp;gt; &amp;gt; * replace sigScripts with empty strings&lt;br/&gt;&amp;gt; &amp;gt; * replace txids in TxIns with n-txid for parents&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; The 2nd step is recursive starting from the coinbases.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; In effect, the rule is that txids are what they would have been if&lt;br/&gt;&amp;gt; &amp;gt; n-txids had been used right from the start.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20151020/2655d737/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20151020/2655d737/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:43:41&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqstdesxlt3xr30y0phecx8wmh8mnuuc3a8tr7k0r99fmhaxy2sfa7gzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wq7guyx</id>
    
      <title type="html">📅 Original date posted:2015-10-19 📝 Original message:After ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqstdesxlt3xr30y0phecx8wmh8mnuuc3a8tr7k0r99fmhaxy2sfa7gzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wq7guyx" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsww89c8wtlyt6n2wnkhuf043u7askzzhmwz0g3k84kprc8d086u3cerrrq9&#39;&gt;nevent1q…rrq9&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-10-19&lt;br/&gt;📝 Original message:After spending some more time on the normalized transaction ID proposal and&lt;br/&gt;reworking it to be a soft-fork (thanks sipa for helping me figuring out&lt;br/&gt;how), I&amp;#39;d like to propose the BIP again.&lt;br/&gt;&lt;br/&gt;As with the previous version, which was using a hard-fork, the normalized&lt;br/&gt;transaction ID is computed only considering the non-malleable parts of a&lt;br/&gt;transaction, i.e., stripping the signatures before computing the hash of&lt;br/&gt;the transaction. This ensures that if a transaction is modified, either by&lt;br/&gt;a third party fishing transactions from the network and re-injecting&lt;br/&gt;modified versions or by one of the signers re-signing it, any transaction&lt;br/&gt;that builds on top of it still remains valid. Furthermore it allows the use&lt;br/&gt;of template transactions, unsigned transactions upon which further&lt;br/&gt;transaction can be built before signing the template transaction and&lt;br/&gt;locking the contract.&lt;br/&gt;&lt;br/&gt;Unlike the previous proposal, this is a softfork proposal that redefines&lt;br/&gt;OP_NOP4 with an extensible and parameterized version of the signature&lt;br/&gt;checking opcodes, called OP_CHECKSIGEX. Among other things the parameters&lt;br/&gt;allow to specify that an output with an OP_CHECKSIGEX is to be referenced&lt;br/&gt;by the normalized transaction ID that created it, instead of the instance&lt;br/&gt;transaction ID containing malleable signatures. This BIP uses the&lt;br/&gt;normalized transaction IDs exclusively while signing or checking&lt;br/&gt;signatures, they are not used in any network level message as the previous&lt;br/&gt;version would have done, hence there is no change at network level and old&lt;br/&gt;clients should be able to exchange transactions as before and blocks still&lt;br/&gt;reference the transaction instances.&lt;br/&gt;&lt;br/&gt;The proposal is implemented (see below), by computing the normalized&lt;br/&gt;transaction ID when adding them to the UTXO and storing them along with the&lt;br/&gt;coin state. OP_CHECKSIGEX mostly duplicates OP_CHECKSIG and&lt;br/&gt;OP_CHECKMULTISIG, but I&amp;#39;m hoping somebody can give me some pointers into&lt;br/&gt;how to best refactor the common functionality into reusable blocks. And the&lt;br/&gt;annotating incoming transactions with their normalized inputs is a bit&lt;br/&gt;cumbersome, maye somebody has some pointers here as well?&lt;br/&gt;&lt;br/&gt;BIP Pull request: &lt;a href=&#34;https://github.com/bitcoin/bips/pull/224&#34;&gt;https://github.com/bitcoin/bips/pull/224&lt;/a&gt;&lt;br/&gt;Implementation: &lt;a href=&#34;https://github.com/cdecker/bitcoin/commits/normtx&#34;&gt;https://github.com/cdecker/bitcoin/commits/normtx&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;I think in the discussion of my previous proposal, most of you welcomed the&lt;br/&gt;introduction of normalized transaction IDs, were it not for the hardfork. I&lt;br/&gt;hope this proposal adresses the previous concerns and that we can move&lt;br/&gt;forward in adding the normalized transaction IDs to the bitcoin protocol.&lt;br/&gt;That being said, I&amp;#39;m always open to suggestions :-)&lt;br/&gt;&lt;br/&gt;Regards,&lt;br/&gt;Christian&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20151019/2ed7395d/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20151019/2ed7395d/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:43:40&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsyqtztfqdl5l0whn2dxe9xld3gnddfaus20c3nzpq7xyl5qezjmlqzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9w2teycv</id>
    
      <title type="html">📅 Original date posted:2015-08-21 📝 Original message:I ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsyqtztfqdl5l0whn2dxe9xld3gnddfaus20c3nzpq7xyl5qezjmlqzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9w2teycv" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsd7ekce5p3h7um33pwassddzudag03mz93etqg7n9pra0thkf49vsxznmf0&#39;&gt;nevent1q…nmf0&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-08-21&lt;br/&gt;📝 Original message:I hacked together a simple tracking page for the &amp;#39;block votes&amp;#39;, it&lt;br/&gt;currently includes the 8MB vote and XT, as well as the /BV\d&#43;/ vote for&lt;br/&gt;generic size:&lt;br/&gt;&lt;a href=&#34;http://bitcoinstats.com/network/votes/&#34;&gt;http://bitcoinstats.com/network/votes/&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;On Fri, Aug 21, 2015 at 7:25 AM odinn via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; -----BEGIN PGP SIGNED MESSAGE-----&lt;br/&gt;&amp;gt; Hash: SHA1&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Hello Nicolas,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On 08/20/2015 08:49 PM, Nicolas Dorier via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; A visualization I would like to see would include:&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; pie graph(s) of what % are voting for (BIP 100, BIP 101, 8MB, BIP&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; sipa&lt;br/&gt;&amp;gt; &amp;gt; etc) based on what&amp;#39;s published in blocks.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; If such a vote existed, I would gladly show the pie on BIPxDevs.&lt;br/&gt;&amp;gt; &amp;gt; However there is no standard way for miners to vote informally BIP&lt;br/&gt;&amp;gt; &amp;gt; they support.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; What about formal votes? Is there a way to visually have them appear&lt;br/&gt;&amp;gt; in a pie chart as the votes become apparent in blocks?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I appreciate good visualizations and am trying to get a (visual)&lt;br/&gt;&amp;gt; comparison of the votes on these competing proposals.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; _______________________________________________ bitcoin-dev mailing&lt;br/&gt;&amp;gt; &amp;gt; list bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; - --&lt;br/&gt;&amp;gt; &lt;a href=&#34;http://abis.io&#34;&gt;http://abis.io&lt;/a&gt; ~&lt;br/&gt;&amp;gt; &amp;#34;a protocol concept to enable decentralization&lt;br/&gt;&amp;gt; and expansion of a giving economy, and a new social good&amp;#34;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://keybase.io/odinn&#34;&gt;https://keybase.io/odinn&lt;/a&gt;&lt;br/&gt;&amp;gt; -----BEGIN PGP SIGNATURE-----&lt;br/&gt;&amp;gt; Version: GnuPG v1&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; iQEcBAEBAgAGBQJV1rZSAAoJEGxwq/inSG8CuNgIAIOIpHavzz6EJ5AOGBg2T859&lt;br/&gt;&amp;gt; MV7rsPfk1HBV4K1Yf4HfrlD/1SY0L57SANpRodi1NME3pl27QQCDnuwNLAqOLKtA&lt;br/&gt;&amp;gt; P/sHXnk9LuSG8Czk0PHOslZ&#43;f1fDbmNm9gtR3QWXGOx0jP2b&#43;WQ8RhkPhqQ&#43;&#43;S/i&lt;br/&gt;&amp;gt; oXmjyrk&#43;8TTu1hxMbuCcG5bqeS0lBm0SyrSbRTPWH&#43;4U1jGYbxQNKkHnuZGByX4B&lt;br/&gt;&amp;gt; HBWuKvIylQzHCfy0ToUW&#43;Z29Y&#43;78wQNQUOA10eq7qpZCZvfRZUov1KBVXLx8GAKy&lt;br/&gt;&amp;gt; Y5WGSJYIAt&#43;Rwn9eMxhpD91ZR1vwtqtRZn7M&#43;NtrStPBJt&#43;n4ET9VmPpsMAc/Zc=&lt;br/&gt;&amp;gt; =AHv3&lt;br/&gt;&amp;gt; -----END PGP SIGNATURE-----&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20150821/4a0ebce0/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20150821/4a0ebce0/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T17:48:55&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsg0sy6e95vectnqcqdrw7lty7v8unmvw7uqydpcll8c0zsyjpp0lszypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wz0xxc4</id>
    
      <title type="html">📅 Original date posted:2013-11-24 📝 Original message:Since ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsg0sy6e95vectnqcqdrw7lty7v8unmvw7uqydpcll8c0zsyjpp0lszypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wz0xxc4" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8lf4zurh6znv2a6c6fk7qnjlk4e65kmqcnsnkxgv7jtdav4ynfwcmlwtfs&#39;&gt;nevent1q…wtfs&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2013-11-24&lt;br/&gt;📝 Original message:Since this came up again during the discussion of the Cornell paper I&lt;br/&gt;thought I&amp;#39;d dig up my measurement code from the Information&lt;br/&gt;Propagation paper and automate it as much as possible.&lt;br/&gt;&lt;br/&gt;The result is the Network Propagation page on bitcoinstats.com&lt;br/&gt;(&lt;a href=&#34;http://bitcoinstats.com/network/propagation/&#34;&gt;http://bitcoinstats.com/network/propagation/&lt;/a&gt;). It takes a daily&lt;br/&gt;snapshot of the situation, then calculates the time until blocks and&lt;br/&gt;transactions reach a certain percentile of the nodes in the network.&lt;br/&gt;There is also a detailed page showing the density function describing&lt;br/&gt;at what times nodes learn about the existence of a block/transaction&lt;br/&gt;(for example yesterdays distribution:&lt;br/&gt;&lt;a href=&#34;http://bitcoinstats.com/network/propagation/2013/11/23&#34;&gt;http://bitcoinstats.com/network/propagation/2013/11/23&lt;/a&gt;).&lt;br/&gt;&lt;br/&gt;I intend to add more information and plots over time, but I wanted to&lt;br/&gt;push this out quickly as there were some people asking for it. Hope&lt;br/&gt;this helps getting the blockchain fork rate down :-)&lt;br/&gt;&lt;br/&gt;Regards,&lt;br/&gt;Chris&lt;br/&gt;--&lt;br/&gt;Christian Decker
    </content>
    <updated>2023-06-07T17:09:57&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs8yqne3pmslgqcres9p8nxkurew00u65jj5slxmn6lv652jzutjpgzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9w68t8ev</id>
    
      <title type="html">📅 Original date posted:2012-05-25 📝 Original message:How ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs8yqne3pmslgqcres9p8nxkurew00u65jj5slxmn6lv652jzutjpgzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9w68t8ev" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqn3s55lmyu3vuu2rsekqhzzc0dv4gg4ffxan4e2ls5apgnc6ym5svj7pnr&#39;&gt;nevent1q…7pnr&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2012-05-25&lt;br/&gt;📝 Original message:How about a simple proof of work test? This one though does not ask for CPU&lt;br/&gt;work but asks the miner for a random old transaction. If the miner really&lt;br/&gt;stores the entire blockchain he will not have any problem answering to that&lt;br/&gt;getdata request, whereas a botnet would have to ask someone else for it,&lt;br/&gt;which could be detected if the response time deviates too much from what&lt;br/&gt;has been previously measured (compare it against getdata for the block they&lt;br/&gt;advertise). It&amp;#39;s not perfect but it allows an estimate of whether it is a&lt;br/&gt;chainless miner.&lt;br/&gt;&lt;br/&gt;Regards,&lt;br/&gt;Chris&lt;br/&gt;--&lt;br/&gt;Christian Decker&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Fri, May 25, 2012 at 3:17 AM, Jeff Garzik &amp;lt;jgarzik at exmulti.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; On Thu, May 24, 2012 at 8:57 PM, Luke-Jr &amp;lt;luke at dashjr.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt; Block times are not accurate enough for that.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The times in your log are very accurate, assuming your system clock is&lt;br/&gt;&amp;gt; remotely accurate.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; --&lt;br/&gt;&amp;gt; Jeff Garzik&lt;br/&gt;&amp;gt; exMULTI, Inc.&lt;br/&gt;&amp;gt; jgarzik at exmulti.com&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ------------------------------------------------------------------------------&lt;br/&gt;&amp;gt; Live Security Virtual Conference&lt;br/&gt;&amp;gt; Exclusive live event will cover all the ways today&amp;#39;s security and&lt;br/&gt;&amp;gt; threat landscape has changed and how IT managers can respond. Discussions&lt;br/&gt;&amp;gt; will include endpoint security, mobile security and the latest in malware&lt;br/&gt;&amp;gt; threats. &lt;a href=&#34;http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/&#34;&gt;http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Bitcoin-development mailing list&lt;br/&gt;&amp;gt; Bitcoin-development at lists.sourceforge.net&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&#34;&gt;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20120525/a927acc7/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20120525/a927acc7/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T12:09:52&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqspchf6cfawtejc7qyhq95lxlhkvqndyg50pv8p03u3jy7v96wc9hqzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wr2rdge</id>
    
      <title type="html">📅 Original date posted:2011-12-22 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqspchf6cfawtejc7qyhq95lxlhkvqndyg50pv8p03u3jy7v96wc9hqzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wr2rdge" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsz3uarxyqdx2jqhqxhtyaqun3dzd4khwgpv7nazexryazcxqyc62qasyg02&#39;&gt;nevent1q…yg02&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2011-12-22&lt;br/&gt;🗒️ Summary of this message: Using negative announces in Bitcoin may lead to a DoS attack if a malicious node triggers verification for every transaction.&lt;br/&gt;📝 Original message:At first the idea of using negative announces seems attractive, but&lt;br/&gt;remember that a malicious node might trigger verification for every&lt;br/&gt;transaction, which may lead to a DoS.&lt;br/&gt;&lt;br/&gt;Regards,&lt;br/&gt;Chris&lt;br/&gt;&lt;br/&gt;On Thu, Dec 22, 2011 at 1:14 PM, Joel Joonatan Kaartinen &amp;lt;&lt;br/&gt;joel.kaartinen at gmail.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; On Thu, 2011-12-22 at 11:52 &#43;0000, Andy Parkins wrote:&lt;br/&gt;&amp;gt; &amp;gt; Why should they have to?  Joining the network as a node is very low cost&lt;br/&gt;&amp;gt; to&lt;br/&gt;&amp;gt; &amp;gt; the other nodes.  You can&amp;#39;t force any node not to be lazy, since their&lt;br/&gt;&amp;gt; option&lt;br/&gt;&amp;gt; &amp;gt; is to disconnect themselves.  As to maliciousness, that is defended&lt;br/&gt;&amp;gt; against&lt;br/&gt;&amp;gt; &amp;gt; because when a node negative announces a transaction, that transaction is&lt;br/&gt;&amp;gt; &amp;gt; going to be checked (note that there is still no implicit trust) -- if a&lt;br/&gt;&amp;gt; node&lt;br/&gt;&amp;gt; &amp;gt; is incorrectly negative-announcing then it can justifiably be kicked.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; a node that is not doing any checking themselves can not reliably&lt;br/&gt;&amp;gt; forward failed verifications without getting the blame for doing faulty&lt;br/&gt;&amp;gt; work. Those nodes would then have the incentive not to relay the failed&lt;br/&gt;&amp;gt; verifications. This ends up making it important to know which nodes will&lt;br/&gt;&amp;gt; be checking transactions or not so you don&amp;#39;t isolate yourself from other&lt;br/&gt;&amp;gt; nodes that are also checking transactions.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; - Joel&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ------------------------------------------------------------------------------&lt;br/&gt;&amp;gt; Write once. Port to many.&lt;br/&gt;&amp;gt; Get the SDK and tools to simplify cross-platform app development. Create&lt;br/&gt;&amp;gt; new or port existing apps to sell to consumers worldwide. Explore the&lt;br/&gt;&amp;gt; Intel AppUpSM program developer opportunity. appdeveloper.intel.com/join&lt;br/&gt;&amp;gt; &lt;a href=&#34;http://p.sf.net/sfu/intel-appdev&#34;&gt;http://p.sf.net/sfu/intel-appdev&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Bitcoin-development mailing list&lt;br/&gt;&amp;gt; Bitcoin-development at lists.sourceforge.net&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&#34;&gt;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20111222/8c9c7828/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20111222/8c9c7828/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T04:50:45&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqswh8ultt7h3jn5e9ydu7us5z0lnns4d9a0dhrdl02qh3yqlyt5n2szypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wh4m9f3</id>
    
      <title type="html">📅 Original date posted:2011-12-21 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqswh8ultt7h3jn5e9ydu7us5z0lnns4d9a0dhrdl02qh3yqlyt5n2szypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wh4m9f3" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswnraye7068jl874we969hals8nyts20782t644l9cpjfw654cu9gr2ul7n&#39;&gt;nevent1q…ul7n&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2011-12-21&lt;br/&gt;🗒️ Summary of this message: Supernodes will verify transactions and be owned by miners. A hierarchical network will form with miners/supernodes at the top and lightweight clients at the bottom. DHTs may be used for block storage, but IP addresses should be used with caution. Broadcasting transactions may not be necessary, and caching could be used to reduce load on responsible nodes.&lt;br/&gt;📝 Original message:For the future evolution without considering DHTs:&lt;br/&gt;While I think we will sooner or later have supernodes, I don&amp;#39;t think they&lt;br/&gt;will need to be trusted too much.&lt;br/&gt;Supernodes will be those nodes that verify all transactions and make them&lt;br/&gt;available to miners. Since miners will become more and more specialized&lt;br/&gt;these supernodes are likely to be owned by the miners themself. To be a&lt;br/&gt;miner either you need to verify all the transactions you include (otherwise&lt;br/&gt;others might be able to find an error in your block and thus drop it) or&lt;br/&gt;have someone that verifies them for you. In the end I think we&amp;#39;ll end up&lt;br/&gt;with a hierarchical network, with the miners/supernodes tighly&lt;br/&gt;interconnected at the top and the lightweight clients that simply verify&lt;br/&gt;transactions (or their inputs to be precise) that are destined for them at&lt;br/&gt;the bottom.&lt;br/&gt;&lt;br/&gt;As for the DHT we had a few brainstorming sessions a while back on the&lt;br/&gt;forum &lt;a href=&#34;http://bit.ly/sc2RLZ&#34;&gt;http://bit.ly/sc2RLZ&lt;/a&gt; (gmaxwell didn&amp;#39;t like it then either :D)&lt;br/&gt;Forcing someone to participate in a fixed position in the block storage&lt;br/&gt;network is a good way to reduce the risk of a sybil attack as Michael said.&lt;br/&gt;The hash should include only information that cannot be changed by the&lt;br/&gt;user, so IP can be used, but including the port is risky.&lt;br/&gt;&lt;br/&gt;Broadcasting the transactions would not need to be done, since miners fetch&lt;br/&gt;them from their storage place, alternatively we could use the inv broadcast&lt;br/&gt;to notify peers about a new block/transaction and let it retrieve them from&lt;br/&gt;the permanent storage (DHT or block storage network). If we route traffic&lt;br/&gt;internally in the DHT we could even start caching at nodes leading to the&lt;br/&gt;real location, since announcements would lead to flashcrowds, putting heavy&lt;br/&gt;load on the responsible nodes. Caching is not a risk since the hash of the&lt;br/&gt;object to be retrieved is already known.&lt;br/&gt;&lt;br/&gt;Regards,&lt;br/&gt;Chris&lt;br/&gt;&lt;br/&gt;On Wed, Dec 21, 2011 at 1:41 PM, Michael Grønager &amp;lt;gronager at ceptacle.com&amp;gt;wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; I find it likely that we will at some point have supernodes. If we have&lt;br/&gt;&amp;gt; browser based wallets then the server for these automatically becomes&lt;br/&gt;&amp;gt; supernodes. Further, if we move along that direction, it becomes much&lt;br/&gt;&amp;gt; simpler to use both the scheme I proposed or to use a a lot of other&lt;br/&gt;&amp;gt; schemes for sharing the validation work on a farm constituting the&lt;br/&gt;&amp;gt; supernode.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; However, if we want to keep bitcoin in a real p2p setup and enable&lt;br/&gt;&amp;gt; scalability in terms of ensuring both thin and fat client to connect then&lt;br/&gt;&amp;gt; we need to go along the path I propose.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Actually, after thinking a bit more about the possible new attack vector I&lt;br/&gt;&amp;gt; don&amp;#39;t find it that alarming - if you still require 7 confirmations of any&lt;br/&gt;&amp;gt; bigger transaction before you, as receiver accepts the transaction as payed&lt;br/&gt;&amp;gt; you will not risk anything. The question is then if it is sufficiently easy&lt;br/&gt;&amp;gt; to fake small transaction to e.g. gain access to micropayment based web&lt;br/&gt;&amp;gt; services. I would again say no - the requirement that you have ok from e.g.&lt;br/&gt;&amp;gt; 8 different A.B nodes will make it extremely difficult to cheat, and that&lt;br/&gt;&amp;gt; would even require you to gain some level of control over the network that&lt;br/&gt;&amp;gt; the service you want to cheat is connected through.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This means that you should not divide the hash space more finely than you&lt;br/&gt;&amp;gt; would at all times be able to find 8 different A.B nodes. As the number of&lt;br/&gt;&amp;gt; clients grows you can then divide the hash space further. (with 100000&lt;br/&gt;&amp;gt; nodes today and a division into 512 parts you would have approx 200 nodes&lt;br/&gt;&amp;gt; to choose from).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; M&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On 21/12/2011, at 12:42, Eric Lombrozo wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Is it just me or does it seem inevitable that at some point supernodes&lt;br/&gt;&amp;gt; &amp;gt; will emerge that other nodes trust to validate transactions for them?&lt;br/&gt;&amp;gt; &amp;gt; Supernodes needn&amp;#39;t even store the entire block chain and transaction&lt;br/&gt;&amp;gt; &amp;gt; pool...it would be sufficient that they keep lists of IP addresses of&lt;br/&gt;&amp;gt; &amp;gt; other trustworthy nodes and partition them into a hashspace.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Anonymous peers have no reputation to defend...but a trusted supernode&lt;br/&gt;&amp;gt; &amp;gt; would, which could provide just enough incentive for the supernode to&lt;br/&gt;&amp;gt; &amp;gt; do its best to ensure the nodes it vouches for are indeed legit. Of&lt;br/&gt;&amp;gt; &amp;gt; course, unless the supernode is validating the entire block chain and&lt;br/&gt;&amp;gt; &amp;gt; transaction pool itself, it could only assess the trustworthiness of&lt;br/&gt;&amp;gt; &amp;gt; other nodes by performing random sampling.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Michael, I really like your ideas and the clarity you bring to the&lt;br/&gt;&amp;gt; &amp;gt; issue. Regarding the potential attack vector you mention, would it be&lt;br/&gt;&amp;gt; &amp;gt; possible to partition the hashspace to minimize the risk that an&lt;br/&gt;&amp;gt; &amp;gt; attacker can manage to disproportionately gain control over a part of&lt;br/&gt;&amp;gt; &amp;gt; the hashspace?&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; ------------------------------------------------------------------------------&lt;br/&gt;&amp;gt; &amp;gt; Write once. Port to many.&lt;br/&gt;&amp;gt; &amp;gt; Get the SDK and tools to simplify cross-platform app development. Create&lt;br/&gt;&amp;gt; &amp;gt; new or port existing apps to sell to consumers worldwide. Explore the&lt;br/&gt;&amp;gt; &amp;gt; Intel AppUpSM program developer opportunity. appdeveloper.intel.com/join&lt;br/&gt;&amp;gt; &amp;gt; &lt;a href=&#34;http://p.sf.net/sfu/intel-appdev&#34;&gt;http://p.sf.net/sfu/intel-appdev&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; &amp;gt; Bitcoin-development mailing list&lt;br/&gt;&amp;gt; &amp;gt; Bitcoin-development at lists.sourceforge.net&lt;br/&gt;&amp;gt; &amp;gt; &lt;a href=&#34;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&#34;&gt;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ------------------------------------------------------------------------------&lt;br/&gt;&amp;gt; Write once. Port to many.&lt;br/&gt;&amp;gt; Get the SDK and tools to simplify cross-platform app development. Create&lt;br/&gt;&amp;gt; new or port existing apps to sell to consumers worldwide. Explore the&lt;br/&gt;&amp;gt; Intel AppUpSM program developer opportunity. appdeveloper.intel.com/join&lt;br/&gt;&amp;gt; &lt;a href=&#34;http://p.sf.net/sfu/intel-appdev&#34;&gt;http://p.sf.net/sfu/intel-appdev&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Bitcoin-development mailing list&lt;br/&gt;&amp;gt; Bitcoin-development at lists.sourceforge.net&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&#34;&gt;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20111221/c8347296/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20111221/c8347296/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T04:50:26&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs9gtt2rtmmjc800tp5vyegyz6kn94av5x0e2fvgnr89nzey26nu4czypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wnrusaj</id>
    
      <title type="html">📅 Original date posted:2011-12-17 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs9gtt2rtmmjc800tp5vyegyz6kn94av5x0e2fvgnr89nzey26nu4czypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wnrusaj" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsq4xanpdvdkh3crwglyckfn950w30whuy0flmktxapxtmq493d8gg7ewydf&#39;&gt;nevent1q…wydf&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2011-12-17&lt;br/&gt;🗒️ Summary of this message: Chris proposed a hypercube network structure to reduce network load, but Gregory advised presenting a working implementation to solve attack resistance problems.&lt;br/&gt;📝 Original message:Criticism accepted, although I&amp;#39;d appreciate it if you supply some reasons&lt;br/&gt;about why it&amp;#39;s such a bad idea :-)&lt;br/&gt;The idea was never really popular and before starting work on a real&lt;br/&gt;implementation I wanted to test the water, and should it turn out it&amp;#39;s&lt;br/&gt;complete non-sense I&amp;#39;m happy to accept that.&lt;br/&gt;&lt;br/&gt;I don&amp;#39;t want to have a DHT for the DHTs sake, I was more interested in&lt;br/&gt;reducing the number of messages that need to be sent around the network,&lt;br/&gt;since network load is going to be a major problem if we ever grow beyond a&lt;br/&gt;certain point.&lt;br/&gt;&lt;br/&gt;Just wanting to brainstorm.&lt;br/&gt;&lt;br/&gt;Regards,&lt;br/&gt;Chris&lt;br/&gt;On Sat, Dec 17, 2011 at 8:28 PM, Gregory Maxwell &amp;lt;gmaxwell at gmail.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; On Sat, Dec 17, 2011 at 8:37 AM, Christian Decker&lt;br/&gt;&amp;gt; &amp;lt;decker.christian at gmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt; My idea was to structure the network in a hypercube and use prefixes to&lt;br/&gt;&amp;gt; &amp;gt; address different parts of the network, and use those prefixes also to&lt;br/&gt;&amp;gt; find&lt;br/&gt;&amp;gt; &amp;gt; the location where an item (transaction, block, ...) should be stored.&lt;br/&gt;&amp;gt; Each&lt;br/&gt;&amp;gt; &amp;gt; vertex in the hypercube is a small, highly connected, cluster of nodes.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I strongly advise people who are not me to use this sort of scheme, so&lt;br/&gt;&amp;gt; that I may enjoy the benefits of robbing you blind.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; .... But really, saying &amp;#34;some sort of DHT&amp;#34; without basically&lt;br/&gt;&amp;gt; presenting a working implementation that demonstrates the feasibility&lt;br/&gt;&amp;gt; of solving the very difficulty attack resistance problems these&lt;br/&gt;&amp;gt; schemes have basically triggers my time-wasting-idiot filter.  (Or&lt;br/&gt;&amp;gt; likewise, presenting a fixed network structure that would have a nice&lt;br/&gt;&amp;gt; small and easily identifiable min-cut...)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I don&amp;#39;t doubt I&amp;#39;m completely alone in this,  though perhaps I&amp;#39;m more&lt;br/&gt;&amp;gt; of a jerk about it.   Even if your actual proposal might have some&lt;br/&gt;&amp;gt; merit you should be aware that every fool who has operated a&lt;br/&gt;&amp;gt; bittorrent client has heard of &amp;#34;DHT&amp;#34; and, although they may not even&lt;br/&gt;&amp;gt; understand what a hash table is, many have no reservation going around&lt;br/&gt;&amp;gt; suggesting them for _every_ distributed systems problem. Want to scale&lt;br/&gt;&amp;gt; matrix multiples? DHT! Want to validate bitcoin blocks? DHT! Network&lt;br/&gt;&amp;gt; syncup slow (because It&amp;#39;s bound on validation related local IO)? DHT!&lt;br/&gt;&amp;gt; I suggest people solve the real problems first, then worry what name&lt;br/&gt;&amp;gt; to give the solutions. ;)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; To address gavin&amp;#39;s tragedy of the commons concern, one useful feature&lt;br/&gt;&amp;gt; would being able to mutually authenticate a peer... then full nodes&lt;br/&gt;&amp;gt; could pick and choose which lite nodes they&amp;#39;re willing to do (a lot&lt;br/&gt;&amp;gt; of) hard work for. This would also be valuable because some modes of&lt;br/&gt;&amp;gt; lite operation require non-zero trust of the full node being queried.&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20111217/6edf419e/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20111217/6edf419e/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T04:49:56&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsxwa5sua0ln9qh73khmt8jzvnq72f0pp40d7m82q4uamm9wscla0szypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wk78h2s</id>
    
      <title type="html">📅 Original date posted:2011-12-17 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxwa5sua0ln9qh73khmt8jzvnq72f0pp40d7m82q4uamm9wscla0szypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wk78h2s" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqstcrl6veccm9026kjkkrxqp3ghwqfmhf7pk26e6jsx585wdrxpupghxcwqm&#39;&gt;nevent1q…cwqm&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2011-12-17&lt;br/&gt;🗒️ Summary of this message: A proposed idea to structure the network in a hypercube and use prefixes to address different parts of the network, reducing the need for broadcasts.&lt;br/&gt;📝 Original message:A while back I had proposed a similar idea to the DHT, although my main&lt;br/&gt;goal was to reduce the need for broadcasts.&lt;br/&gt;&lt;br/&gt;My idea was to structure the network in a hypercube and use prefixes to&lt;br/&gt;address different parts of the network, and use those prefixes also to find&lt;br/&gt;the location where an item (transaction, block, ...) should be stored. Each&lt;br/&gt;vertex in the hypercube is a small, highly connected, cluster of nodes. The&lt;br/&gt;storage would be distributed, messages are routed on behalf of others,&lt;br/&gt;which makes finding the origin of the query hard to find (think Tor), each&lt;br/&gt;node would have to store only O(log(p)) items, with p being the prefix&lt;br/&gt;length, maximum number of hops is equal to the dimension of the hypercube&lt;br/&gt;O(log(n)).&lt;br/&gt;&lt;br/&gt;Newly created transaction will be sent directly to the location they&amp;#39;ll be&lt;br/&gt;stored and miners retrieve new transactions at regular intervals. It might&lt;br/&gt;increase delays to the confirmations, but it reduces the number of&lt;br/&gt;broadcasts and storage requirements on nodes greatly.&lt;br/&gt;&lt;br/&gt;Regards,&lt;br/&gt;Chris&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Sat, Dec 17, 2011 at 2:13 PM, Michael Grønager &amp;lt;gronager at ceptacle.com&amp;gt;wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Hey Eric,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Two comments.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1.&lt;br/&gt;&amp;gt; The ability to query for transactions belonging to pubkeys or bitcoin&lt;br/&gt;&amp;gt; addresses is supported today by several implementations:&lt;br/&gt;&amp;gt; * blockexplorer.com&lt;br/&gt;&amp;gt; * bitcoin-js&lt;br/&gt;&amp;gt; * my own libBTC (will more on this soon)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; To query for transactions you need to use json-rpc and not the bitcoin&lt;br/&gt;&amp;gt; protocol, however. But still the purpose is the same: to be able to build&lt;br/&gt;&amp;gt; thin clients that can rely on a server for storing the blockchain and&lt;br/&gt;&amp;gt; keeping connected on the p2p network.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The reason for not having these queries part of the standard protocol (I&lt;br/&gt;&amp;gt; think) are as they breaks anonymity, and that you would actually encourage&lt;br/&gt;&amp;gt; people to participate in the p2p.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2. The second part you mention, to some how move the storage of the&lt;br/&gt;&amp;gt; blockchain into a DHT based storage would be quite nice. The benefit of&lt;br/&gt;&amp;gt; this is that it could be a way to integrate the smaller clients into the&lt;br/&gt;&amp;gt; network without breaking the anonymity. But it should be thought out quite&lt;br/&gt;&amp;gt; carefully. Further, if each client only store a fraction of the blockchain&lt;br/&gt;&amp;gt; we should work out what fraction that need to be in order to ensure a&lt;br/&gt;&amp;gt; similar service level. I would be happy to work with you on this.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Michael&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On 17/12/2011, at 08:41, Eric Lombrozo wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Hey, guys.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; I haven&amp;#39;t posted here before so I&amp;#39;ll introduce myself. My name&amp;#39;s Eric,&lt;br/&gt;&amp;gt; &amp;gt; I&amp;#39;ve been developing cryptocurrency-related&lt;br/&gt;&amp;gt; &amp;gt; software for several months now, I&amp;#39;ve implemented some libraries for&lt;br/&gt;&amp;gt; &amp;gt; dealing with core bitcoin datastructures, made&lt;br/&gt;&amp;gt; &amp;gt; some custom builds of bitcoind and interfaced it with a few apps I&amp;#39;ve&lt;br/&gt;&amp;gt; written.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; In doing so, I&amp;#39;ve come to appreciate just how little of the potential&lt;br/&gt;&amp;gt; &amp;gt; for the bitcoin protocol is being exploited right now...&lt;br/&gt;&amp;gt; &amp;gt; not only in terms of the script features but in terms of the potential&lt;br/&gt;&amp;gt; &amp;gt; commands and node types that could exist.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; For instance, the protocol spec at&lt;br/&gt;&amp;gt; &amp;gt; &lt;a href=&#34;https://en.bitcoin.it/wiki/Protocol_specification&#34;&gt;https://en.bitcoin.it/wiki/Protocol_specification&lt;/a&gt; only has 16 commands&lt;br/&gt;&amp;gt; &amp;gt; listed and&lt;br/&gt;&amp;gt; &amp;gt; only one service type...despite having a full 12 bytes for a command&lt;br/&gt;&amp;gt; &amp;gt; code and a full eight bytes for a services&lt;br/&gt;&amp;gt; &amp;gt; type.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; The fact that only one node service type is specified is probably due&lt;br/&gt;&amp;gt; &amp;gt; to the fact that the satoshi client was written&lt;br/&gt;&amp;gt; &amp;gt; to be a standalone monolithic app that took care of all the essential&lt;br/&gt;&amp;gt; &amp;gt; needs for a network of peers.&lt;br/&gt;&amp;gt; &amp;gt; i.e. block chain storage/management, transaction signing/verification,&lt;br/&gt;&amp;gt; &amp;gt; key generation/wallet management, block mining, etc...&lt;br/&gt;&amp;gt; &amp;gt; However, I think there&amp;#39;s an urgent need for breaking up all these&lt;br/&gt;&amp;gt; &amp;gt; different tasks into separate components that can run as independent&lt;br/&gt;&amp;gt; &amp;gt; services on different types of devices.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; One of the big issues I&amp;#39;m dealing with now pertains to block chain&lt;br/&gt;&amp;gt; &amp;gt; storage. As of right now, it is implemented as sequential&lt;br/&gt;&amp;gt; &amp;gt; disk files using Berkeley DB in the satoshi client. Then you have&lt;br/&gt;&amp;gt; &amp;gt; other projects that have been using SQL tables, etc...&lt;br/&gt;&amp;gt; &amp;gt; But I believe the direction this really needs to move towards is some&lt;br/&gt;&amp;gt; &amp;gt; sort of distributed hash table...and the database queries&lt;br/&gt;&amp;gt; &amp;gt; should be performed using the bitcoin protocol itself. Perhaps adding&lt;br/&gt;&amp;gt; &amp;gt; a few more commands. As things stand right now,&lt;br/&gt;&amp;gt; &amp;gt; the only way to query for transactions or blocks is by their hash. And&lt;br/&gt;&amp;gt; &amp;gt; once a transaction gets incorporated into a block and&lt;br/&gt;&amp;gt; &amp;gt; removed from the transaction pool, one can no longer query it by the&lt;br/&gt;&amp;gt; &amp;gt; transaction hash without stepping outside the bitcoin protocol.&lt;br/&gt;&amp;gt; &amp;gt; We need access to the disk file that stores the blocks whether it be&lt;br/&gt;&amp;gt; &amp;gt; via Berkeley DB or SQL or whatever.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; I propose an extension to the bitcoin protocol to provide methods for&lt;br/&gt;&amp;gt; &amp;gt; performing more sophisticated queries, such as &amp;#34;Give me&lt;br/&gt;&amp;gt; &amp;gt; an inventory of transactions involving this particular public key&amp;#34; or&lt;br/&gt;&amp;gt; &amp;gt; &amp;#34;Give me an inventory all transactions in the last n blocks with&lt;br/&gt;&amp;gt; &amp;gt; unredeemed outputs.&amp;#34; This could be done by adding a few more commands.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Furthermore, I propose a new network services type for nodes that&lt;br/&gt;&amp;gt; &amp;gt; serve as block chain/transaction pool storage.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Of couse, any peer that wishes to verify the integrity of the block&lt;br/&gt;&amp;gt; &amp;gt; chain would still have to download at the very least&lt;br/&gt;&amp;gt; &amp;gt; all the block headers...and to be completely sure, also all the blocks&lt;br/&gt;&amp;gt; &amp;gt; themselves...and verify everything. But it would be&lt;br/&gt;&amp;gt; &amp;gt; very nice to be able to run thin services that can rely on other&lt;br/&gt;&amp;gt; &amp;gt; network peers to do this work. It is still possible to attain&lt;br/&gt;&amp;gt; &amp;gt; a high level of confidence in the integrity by querying multiple peers&lt;br/&gt;&amp;gt; &amp;gt; for similar objects and comparing. It is also possible&lt;br/&gt;&amp;gt; &amp;gt; to run your own dedicated block chain storage servers which you trust.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; There are other ideas I have for other types of services, too.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Anyhow, I&amp;#39;m just throwing this out there...if anyone&amp;#39;s interested I&amp;#39;d&lt;br/&gt;&amp;gt; &amp;gt; love to develop these ideas further and help put together some&lt;br/&gt;&amp;gt; &amp;gt; specs.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; -Eric Lombrozo&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; ------------------------------------------------------------------------------&lt;br/&gt;&amp;gt; &amp;gt; Learn Windows Azure Live!  Tuesday, Dec 13, 2011&lt;br/&gt;&amp;gt; &amp;gt; Microsoft is holding a special Learn Windows Azure training event for&lt;br/&gt;&amp;gt; &amp;gt; developers. It will provide a great way to learn Windows Azure and what&lt;br/&gt;&amp;gt; it&lt;br/&gt;&amp;gt; &amp;gt; provides. You can attend the event by watching it streamed LIVE online.&lt;br/&gt;&amp;gt; &amp;gt; Learn more at &lt;a href=&#34;http://p.sf.net/sfu/ms-windowsazure&#34;&gt;http://p.sf.net/sfu/ms-windowsazure&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; &amp;gt; Bitcoin-development mailing list&lt;br/&gt;&amp;gt; &amp;gt; Bitcoin-development at lists.sourceforge.net&lt;br/&gt;&amp;gt; &amp;gt; &lt;a href=&#34;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&#34;&gt;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ------------------------------------------------------------------------------&lt;br/&gt;&amp;gt; Learn Windows Azure Live!  Tuesday, Dec 13, 2011&lt;br/&gt;&amp;gt; Microsoft is holding a special Learn Windows Azure training event for&lt;br/&gt;&amp;gt; developers. It will provide a great way to learn Windows Azure and what it&lt;br/&gt;&amp;gt; provides. You can attend the event by watching it streamed LIVE online.&lt;br/&gt;&amp;gt; Learn more at &lt;a href=&#34;http://p.sf.net/sfu/ms-windowsazure&#34;&gt;http://p.sf.net/sfu/ms-windowsazure&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Bitcoin-development mailing list&lt;br/&gt;&amp;gt; Bitcoin-development at lists.sourceforge.net&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&#34;&gt;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20111217/000eef2b/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20111217/000eef2b/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T04:49:49&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs08lspuf738qedlzql3tsucqaj3vpjkr7a99ftl2ltgwsaru7zqhgzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9w2lg85w</id>
    
      <title type="html">📅 Original date posted:2011-12-13 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs08lspuf738qedlzql3tsucqaj3vpjkr7a99ftl2ltgwsaru7zqhgzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9w2lg85w" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfrgmpm5n0eqe9q26f6zft2w749pmqwtetfvqrwkrhmx9dz0wekug5r5ehl&#39;&gt;nevent1q…5ehl&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2011-12-13&lt;br/&gt;🗒️ Summary of this message: Proposal for a way for merchants to translate a human-readable address into a bitcoin address, using HTTP(S) requests to a merchant-specified URL. Allows for per-transaction or fixed addresses.&lt;br/&gt;📝 Original message:I think the scope of this BIP is not so well defined right now. We need a&lt;br/&gt;way for merchants to translate a human readable, and more importantly&lt;br/&gt;human-writeable, address into a bitcoin address. I agree with Mike that a&lt;br/&gt;fixed address is not the way to go, because addresses should be used once&lt;br/&gt;for a single transaction to be able to track payments.&lt;br/&gt;&lt;br/&gt;While firstbits sounds attractive at first, I think we can all agree that&lt;br/&gt;it just isn&amp;#39;t feasible and would not allow per-transaction addresses. DNS&lt;br/&gt;sounds interesting for fixed addresses, but caching and propagation make it&lt;br/&gt;difficult to use for per-transaction addresses that are to be generated&lt;br/&gt;ad-hoc.&lt;br/&gt;&lt;br/&gt;HTTP(S) is the best option I think, merchants are probably using HTTP&lt;br/&gt;anyway for their shops. So something like&lt;br/&gt;&lt;a href=&#34;http://merchant.com/btc/transaction/1234&#34;&gt;http://merchant.com/btc/transaction/1234&lt;/a&gt; sounds reasonable. But I think it&lt;br/&gt;should not be over-engineered, it should be a simple HTTP(S) request to a&lt;br/&gt;merchant specified URL that returns an ASCII document containing either a&lt;br/&gt;bitcoin: URI or simply the bitcoin address or even a 301 redirect. It&amp;#39;s no&lt;br/&gt;use to start defining URL schemes, it should be left to the merchants to&lt;br/&gt;define how to structure them.&lt;br/&gt;&lt;br/&gt;This would allow a merchant to decide if he prefers per-transaction&lt;br/&gt;addresses, per-user transactions, fixed addresses or any combination.&lt;br/&gt;&lt;br/&gt;Regards,&lt;br/&gt;cdecker&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Tue, Dec 13, 2011 at 11:55 AM, Mike Hearn &amp;lt;mike at plan99.net&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; I was in brmlab and wanted to pay 1 BTC for a Club Mate. They had on the&lt;br/&gt;&amp;gt;&amp;gt; wall a picture of their QR code and a bitcoin address. I don&amp;#39;t own a mobile&lt;br/&gt;&amp;gt;&amp;gt; phone so the QR code is&lt;br/&gt;&amp;gt;&amp;gt; useless.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Fixed addresses like that are a temporary thing during Bitcoins maturation&lt;br/&gt;&amp;gt; period. They lead to merchants exposing data they probably don&amp;#39;t realize&lt;br/&gt;&amp;gt; they&amp;#39;re exposing, like their income, which is basically unacceptable for&lt;br/&gt;&amp;gt; any payment system.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There&amp;#39;s no point trying to optimize a case where:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1) You are in the minority (no phone?)&lt;br/&gt;&amp;gt; 2) The &amp;#34;perfect experience&amp;#34; leaks private data in such a way that would be&lt;br/&gt;&amp;gt; deemed a gross security breach by any serious payment processor.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; OK, some thoughts on the general proposal, from the POV of what it&amp;#39;d take&lt;br/&gt;&amp;gt; for a large deployment, like for every Gmail or every Facebook user. In&lt;br/&gt;&amp;gt; terms of ease of implementation it is ordered HTTPS/HTTP then DNS trailing&lt;br/&gt;&amp;gt; by a large margin. Big sites, even small sites, typically have high-speed&lt;br/&gt;&amp;gt; load balancing and demuxing already implemented for HTTP[S] and it&amp;#39;s&lt;br/&gt;&amp;gt; usually easy to add new endpoints. The same is *not* true of DNS, and&lt;br/&gt;&amp;gt; whilst coding up a custom DNS server is possible it&amp;#39;s definitely a worse&lt;br/&gt;&amp;gt; fit.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; FirstBits seems out of the question for the same privacy reasons as given&lt;br/&gt;&amp;gt; above. No banking system worth its salt would let everyone look up other&lt;br/&gt;&amp;gt; peoples income.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The simplest approach would be to request a full public key with an HTTPS&lt;br/&gt;&amp;gt; request like&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    foo at domain -&amp;gt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://domain/_bitcoin/getnewkey?user=foo&amp;amp;label=Payment%20from%20Bob&#34;&gt;https://domain/_bitcoin/getnewkey?user=foo&amp;amp;label=Payment%20from%20Bob&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If you then want to turn the resulting public key into an address before&lt;br/&gt;&amp;gt; creating a transaction you can obviously do that.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; BTW the BIP is pretty hard to read. Your spec for the HTTPS proposal is a&lt;br/&gt;&amp;gt; big pile of source code. I think it&amp;#39;s the same as above, but it&amp;#39;s hard to&lt;br/&gt;&amp;gt; tell without more effort.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ------------------------------------------------------------------------------&lt;br/&gt;&amp;gt; Systems Optimization Self Assessment&lt;br/&gt;&amp;gt; Improve efficiency and utilization of IT resources. Drive out cost and&lt;br/&gt;&amp;gt; improve service delivery. Take 5 minutes to use this Systems Optimization&lt;br/&gt;&amp;gt; Self Assessment. &lt;a href=&#34;http://www.accelacomm.com/jaw/sdnl/114/51450054/&#34;&gt;http://www.accelacomm.com/jaw/sdnl/114/51450054/&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Bitcoin-development mailing list&lt;br/&gt;&amp;gt; Bitcoin-development at lists.sourceforge.net&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&#34;&gt;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20111213/2f4582b5/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20111213/2f4582b5/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T04:46:15&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqspduczlxwe29srpe7uauyujzsl0xq8xta9q3uh0cqlyctuhe4yqfszypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wuyeagm</id>
    
      <title type="html">📅 Original date posted:2011-11-05 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqspduczlxwe29srpe7uauyujzsl0xq8xta9q3uh0cqlyctuhe4yqfszypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wuyeagm" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqtje99hstlxw54sgzc02juffpsgmzrgs5pfz0v6sq3fj9h6j2lzg4z6gp9&#39;&gt;nevent1q…6gp9&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2011-11-05&lt;br/&gt;🗒️ Summary of this message: A proposal to modify user-agent strings for Bitcoin protocol versioning is opposed, as it could lead to developers making communication choices based on client type.&lt;br/&gt;📝 Original message:Sorry for shooting this approach down, but I&amp;#39;m against it. User-agent&lt;br/&gt;strings are an extremely bad idea as it would lead developers to start&lt;br/&gt;making communication choices depending on the client type. User-Agents in&lt;br/&gt;HTTP are only useful if the clients (browsers) do not adhere to a well&lt;br/&gt;defined behavior. I see the version string more as a kind of vanity point&lt;br/&gt;(xyz peers are using my network code) and it would be bad to base choices&lt;br/&gt;on it.&lt;br/&gt;For protocol choices we already have a good mechanism in place (nServices)&lt;br/&gt;to negotiate capabilities.&lt;br/&gt;&lt;br/&gt;I for one vote for keeping it as simple as possible, just a simple string,&lt;br/&gt;without any further meaning.&lt;br/&gt;&lt;br/&gt;On Sat, Nov 5, 2011 at 4:39 PM, Amir Taaki &amp;lt;zgenjix at yahoo.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; From talking with Patrick Strateman (phantomcircuit), he suggested this&lt;br/&gt;&amp;gt; idea (which I will elaborate more on in the BIP):&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; User-agent strings are a good starting point, however they aren&amp;#39;t easy for&lt;br/&gt;&amp;gt; parsing so we&amp;#39;ll make a small modification to them.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We need a hierarchy from protocol, variant, gui, flavour, build&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; /Satoshi:314700/bitcoin-qt:0.4/&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; How does that sound? In BitcoinJ&amp;#39;s case:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; /BitcoinJ:0.2/AndroidBuild:0.8/&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thoughts:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; - Do we need a freely defined comments field?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; /BitcoinJ:0.2[iPad; U; CPU OS 3_2_1]/AndroidBuild:0.8/&lt;br/&gt;&amp;gt; /Satoshi:314700/bitcoin-qt:0.4[Ubuntu Oneiric]/&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ------------------------------&lt;br/&gt;&amp;gt; *From:* Christian Decker &amp;lt;decker.christian at gmail.com&amp;gt;&lt;br/&gt;&amp;gt; *To:* Mike Hearn &amp;lt;mike at plan99.net&amp;gt;&lt;br/&gt;&amp;gt; *Cc:* Amir Taaki &amp;lt;zgenjix at yahoo.com&amp;gt;; &amp;#34;&lt;br/&gt;&amp;gt; bitcoin-development at lists.sourceforge.net&amp;#34; &amp;lt;&lt;br/&gt;&amp;gt; bitcoin-development at lists.sourceforge.net&amp;gt;&lt;br/&gt;&amp;gt; *Sent:* Saturday, November 5, 2011 2:45 PM&lt;br/&gt;&amp;gt; *Subject:* Re: [Bitcoin-development] Lock protocol version numbers&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On BitDroid I stopped updating the protocol version at 31700 and set the&lt;br/&gt;&amp;gt; string to be both Version and Client, just like BitcoinJ :-)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Sat, Nov 5, 2011 at 3:32 PM, Mike Hearn &amp;lt;mike at plan99.net&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; BitCoinJ already sets the subver field to its name and version.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ------------------------------------------------------------------------------&lt;br/&gt;&amp;gt; RSA(R) Conference 2012&lt;br/&gt;&amp;gt; Save $700 by Nov 18&lt;br/&gt;&amp;gt; Register now&lt;br/&gt;&amp;gt; &lt;a href=&#34;http://p.sf.net/sfu/rsa-sfdev2dev1&#34;&gt;http://p.sf.net/sfu/rsa-sfdev2dev1&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Bitcoin-development mailing list&lt;br/&gt;&amp;gt; Bitcoin-development at lists.sourceforge.net&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&#34;&gt;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ------------------------------------------------------------------------------&lt;br/&gt;&amp;gt; RSA(R) Conference 2012&lt;br/&gt;&amp;gt; Save $700 by Nov 18&lt;br/&gt;&amp;gt; Register now&lt;br/&gt;&amp;gt; &lt;a href=&#34;http://p.sf.net/sfu/rsa-sfdev2dev1&#34;&gt;http://p.sf.net/sfu/rsa-sfdev2dev1&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Bitcoin-development mailing list&lt;br/&gt;&amp;gt; Bitcoin-development at lists.sourceforge.net&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&#34;&gt;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20111105/12fa49fd/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20111105/12fa49fd/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T04:37:29&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsp3lxq0cnzrfx3cptjwz8vv3305qdj0722a5gxxq2yv8vwzw7tetczypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9waeupyy</id>
    
      <title type="html">📅 Original date posted:2011-11-02 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsp3lxq0cnzrfx3cptjwz8vv3305qdj0722a5gxxq2yv8vwzw7tetczypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9waeupyy" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8kw9e38985n2m8hfc5nnfeys5ytlwmmvjug74gut2gj304mnjg8cclfafm&#39;&gt;nevent1q…fafm&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2011-11-02&lt;br/&gt;🗒️ Summary of this message: The retired wxWidgets client was the original &amp;#34;Satoshi client,&amp;#34; but the decision to use the name is up to the maintainers.&lt;br/&gt;📝 Original message:The mainline client (independently from the GUI) has been referenced to as&lt;br/&gt;&amp;#34;Satoshi&amp;#34; client. I personally like the name as a homage, but I guess it&lt;br/&gt;all comes down to the decision of the maintainers.&lt;br/&gt;&lt;br/&gt;Regards,&lt;br/&gt;Chris&lt;br/&gt;&lt;br/&gt;On Thu, Nov 3, 2011 at 12:07 AM, Luke-Jr &amp;lt;luke at dashjr.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; On Wednesday, November 02, 2011 6:55:27 PM Amir Taaki wrote:&lt;br/&gt;&amp;gt; &amp;gt; I think calling it Satoshi is apt homage to the person who made the&lt;br/&gt;&amp;gt; &amp;gt; original client reference protocol.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; My point is that the &amp;#34;Satoshi client&amp;#34; was the wxWidgets client, which was&lt;br/&gt;&amp;gt; retired by 0.5.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ------------------------------------------------------------------------------&lt;br/&gt;&amp;gt; RSA(R) Conference 2012&lt;br/&gt;&amp;gt; Save $700 by Nov 18&lt;br/&gt;&amp;gt; Register now&lt;br/&gt;&amp;gt; &lt;a href=&#34;http://p.sf.net/sfu/rsa-sfdev2dev1&#34;&gt;http://p.sf.net/sfu/rsa-sfdev2dev1&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Bitcoin-development mailing list&lt;br/&gt;&amp;gt; Bitcoin-development at lists.sourceforge.net&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&#34;&gt;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20111103/fe144b63/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20111103/fe144b63/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T04:37:20&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsys9mgwfszfl2pycy8ygm6zjyu8nc7w3p6xwnrehfr8m0kx2zt07czypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wcuxavq</id>
    
      <title type="html">📅 Original date posted:2011-11-02 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsys9mgwfszfl2pycy8ygm6zjyu8nc7w3p6xwnrehfr8m0kx2zt07czypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wcuxavq" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsw0972hyclv2asacetqzd9z4lk6y94t2pqgvht54nyfy9l8npsgfcge2r9q&#39;&gt;nevent1q…2r9q&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2011-11-02&lt;br/&gt;🗒️ Summary of this message: A proposal to lock version numbers to the protocol version and use the sub_version_num field for individual builds was discussed.&lt;br/&gt;📝 Original message:Just for reference: &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/63&#34;&gt;https://github.com/bitcoin/bitcoin/pull/63&lt;/a&gt;&lt;br/&gt;The issue resulted in my most useless pull request fixing two variables :-)&lt;br/&gt;&lt;br/&gt;I second the use of sub_version_num as a Client and Version identifier.&lt;br/&gt;&lt;br/&gt;Regards,&lt;br/&gt;Chris&lt;br/&gt;&lt;br/&gt;On Wed, Nov 2, 2011 at 11:33 PM, Amir Taaki &amp;lt;zgenjix at yahoo.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Point taken.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; About the sub_version_num though. I prefer to let the field by defined&lt;br/&gt;&amp;gt; clients however they wish, with just a guideline suggestion that IDENTIFIER&lt;br/&gt;&amp;gt; VERSION is a format they should follow.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The idea being that different projects would have different release&lt;br/&gt;&amp;gt; scheduling schemes and it&amp;#39;d be restrictive to lock people into the popular&lt;br/&gt;&amp;gt; major.minor system.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; So for the current bitcoin to find out the version number of other clients&lt;br/&gt;&amp;gt; (if it was needed), it would have to parse the number from the string:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;#34;Satoshi 0.5&amp;#34;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Although there would be little reason for this with a sane protocol&lt;br/&gt;&amp;gt; versioning scheme.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If we&amp;#39;re agreed then I&amp;#39;ll start on that BIP.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ------------------------------&lt;br/&gt;&amp;gt; *From:* Gavin Andresen &amp;lt;gavinandresen at gmail.com&amp;gt;&lt;br/&gt;&amp;gt; *To:* Amir Taaki &amp;lt;zgenjix at yahoo.com&amp;gt;&lt;br/&gt;&amp;gt; *Sent:* Wednesday, November 2, 2011 9:34 PM&lt;br/&gt;&amp;gt; *Subject:* Re: [Bitcoin-development] Lock protocol version numbers&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Good idea.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Sounds perfect for a BIP....&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Wed, Nov 2, 2011 at 5:23 PM, Amir Taaki &amp;lt;zgenjix at yahoo.com&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt; Hey,&lt;br/&gt;&amp;gt; &amp;gt; Can we lock the version numbers to be the protocol version (which changes&lt;br/&gt;&amp;gt; &amp;gt; rarely) and instead use the sub_version_num field &#43; revision number for&lt;br/&gt;&amp;gt; &amp;gt; individual builds?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; --&lt;br/&gt;&amp;gt; --&lt;br/&gt;&amp;gt; Gavin Andresen&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ------------------------------------------------------------------------------&lt;br/&gt;&amp;gt; RSA(R) Conference 2012&lt;br/&gt;&amp;gt; Save $700 by Nov 18&lt;br/&gt;&amp;gt; Register now&lt;br/&gt;&amp;gt; &lt;a href=&#34;http://p.sf.net/sfu/rsa-sfdev2dev1&#34;&gt;http://p.sf.net/sfu/rsa-sfdev2dev1&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Bitcoin-development mailing list&lt;br/&gt;&amp;gt; Bitcoin-development at lists.sourceforge.net&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&#34;&gt;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20111102/6ae2fbe3/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20111102/6ae2fbe3/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T04:37:04&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsgfr0drxvudcrerkp6u2dmk2g4u0pj6vzcfw36c7hc0jktcrygcdgzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wnenne5</id>
    
      <title type="html">📅 Original date posted:2011-11-05 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsgfr0drxvudcrerkp6u2dmk2g4u0pj6vzcfw36c7hc0jktcrygcdgzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wnenne5" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyqtzqv0402kvrvt5jfej86eefuwpc552mw2huqqq43ue4aph9xgsl53w0d&#39;&gt;nevent1q…3w0d&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2011-11-05&lt;br/&gt;🗒️ Summary of this message: BitDroid stopped updating protocol version at 31700 and set the string to be both Version and Client, similar to BitcoinJ.&lt;br/&gt;📝 Original message:On BitDroid I stopped updating the protocol version at 31700 and set the&lt;br/&gt;string to be both Version and Client, just like BitcoinJ :-)&lt;br/&gt;&lt;br/&gt;On Sat, Nov 5, 2011 at 3:32 PM, Mike Hearn &amp;lt;mike at plan99.net&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; BitCoinJ already sets the subver field to its name and version.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ------------------------------------------------------------------------------&lt;br/&gt;&amp;gt; RSA(R) Conference 2012&lt;br/&gt;&amp;gt; Save $700 by Nov 18&lt;br/&gt;&amp;gt; Register now&lt;br/&gt;&amp;gt; &lt;a href=&#34;http://p.sf.net/sfu/rsa-sfdev2dev1&#34;&gt;http://p.sf.net/sfu/rsa-sfdev2dev1&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Bitcoin-development mailing list&lt;br/&gt;&amp;gt; Bitcoin-development at lists.sourceforge.net&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&#34;&gt;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20111105/2a3d286f/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20111105/2a3d286f/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T04:36:58&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs8ylsz4st6q5dp7j4ng82nfhv34q3gkuzgfmeuzgfv7w4updr742czypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wpmwyu9</id>
    
      <title type="html">📅 Original date posted:2011-11-02 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs8ylsz4st6q5dp7j4ng82nfhv34q3gkuzgfmeuzgfv7w4updr742czypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wpmwyu9" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspg9n805kr6zyc7cs695rlzttpy6et6vnt8eun3g0f4n06j42kq9cqy5y5t&#39;&gt;nevent1q…5y5t&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2011-11-02&lt;br/&gt;🗒️ Summary of this message: Chris suggests locking version numbers to protocol version and using sub_version_num field for builds to avoid version bumping.&lt;br/&gt;📝 Original message:I don&amp;#39;t really get what you want to achieve with this. The protocol will be&lt;br/&gt;slow down evolution (hopefully) soon, while the clients will continue&lt;br/&gt;releasing at a similar rhythm. It took long enough to decouple the protocol&lt;br/&gt;version from being bumped each client release, now doing the inverse&lt;br/&gt;coupling makes no sense.&lt;br/&gt;&lt;br/&gt;Regards,&lt;br/&gt;Chris&lt;br/&gt;On Wed, Nov 2, 2011 at 10:23 PM, Amir Taaki &amp;lt;zgenjix at yahoo.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Hey,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Can we lock the version numbers to be the protocol version (which changes&lt;br/&gt;&amp;gt; rarely) and instead use the sub_version_num field &#43; revision number for&lt;br/&gt;&amp;gt; individual builds?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Satoshi 0.4&lt;br/&gt;&amp;gt; BitcoinJava 120311&lt;br/&gt;&amp;gt; bitcoin-js 6&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Like so. Otherwise we will have version bumping insanity :)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ------------------------------------------------------------------------------&lt;br/&gt;&amp;gt; RSA(R) Conference 2012&lt;br/&gt;&amp;gt; Save $700 by Nov 18&lt;br/&gt;&amp;gt; Register now&lt;br/&gt;&amp;gt; &lt;a href=&#34;http://p.sf.net/sfu/rsa-sfdev2dev1&#34;&gt;http://p.sf.net/sfu/rsa-sfdev2dev1&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Bitcoin-development mailing list&lt;br/&gt;&amp;gt; Bitcoin-development at lists.sourceforge.net&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&#34;&gt;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20111102/82bfa1e1/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20111102/82bfa1e1/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T04:36:51&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsr6f6l79au9ew6xlm6nchuek0lunsxvus6xeyh5vsg50k7hl2hnjczypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wawct4w</id>
    
      <title type="html">📅 Original date posted:2011-09-15 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsr6f6l79au9ew6xlm6nchuek0lunsxvus6xeyh5vsg50k7hl2hnjczypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wawct4w" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9zdhy02r8apwnej97qqclmyvnpzg86ufx8gha9rdwc26uz366mncrnzs35&#39;&gt;nevent1q…zs35&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2011-09-15&lt;br/&gt;🗒️ Summary of this message: Chris suggests a BitTorrent-like snubbing and dropping protocol for misbehaving peers, but warns against making the rules too restrictive.&lt;br/&gt;📝 Original message:I&amp;#39;d be happy with a sort of BitTorrent like snubbing, and dropping in&lt;br/&gt;extreme cases.&lt;br/&gt;Sharing blacklist decisions would be dangerous. We could even extend the&lt;br/&gt;protocol to include some sort of choking/unchoking in order to warn peers&lt;br/&gt;that we might drop him if he continues to misbehave.&lt;br/&gt;&lt;br/&gt;In general I think that we have to be careful in what we consider&lt;br/&gt;misbehaving, it should be really conservative to begin with, and extend the&lt;br/&gt;rules over time. Making them too restrictive might make future development&lt;br/&gt;difficult, not to speak of alternative clients.&lt;br/&gt;&lt;br/&gt;Regards,&lt;br/&gt;Chris&lt;br/&gt;&lt;br/&gt;On Thu, Sep 15, 2011 at 4:06 AM, Luke-Jr &amp;lt;luke at dashjr.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; On Wednesday, September 14, 2011 9:57:00 PM Gavin Andresen wrote:&lt;br/&gt;&amp;gt; &amp;gt; I&amp;#39;m looking for review of this pull request:&lt;br/&gt;&amp;gt; &amp;gt;   &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/517&#34;&gt;https://github.com/bitcoin/bitcoin/pull/517&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;#34;Non-standard&amp;#34; transactions, or those with &amp;#34;insufficient&amp;#34; fees should not&lt;br/&gt;&amp;gt; be&lt;br/&gt;&amp;gt; penalised. These are properly relay/miner policy decisions, not protocol&lt;br/&gt;&amp;gt; violations, and should be made more easily configurable, not punished for&lt;br/&gt;&amp;gt; configuration.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ------------------------------------------------------------------------------&lt;br/&gt;&amp;gt; Doing More with Less: The Next Generation Virtual Desktop&lt;br/&gt;&amp;gt; What are the key obstacles that have prevented many mid-market businesses&lt;br/&gt;&amp;gt; from deploying virtual desktops?   How do next-generation virtual desktops&lt;br/&gt;&amp;gt; provide companies an easier-to-deploy, easier-to-manage and more affordable&lt;br/&gt;&amp;gt; virtual desktop model.&lt;a href=&#34;http://www.accelacomm.com/jaw/sfnl/114/51426474/&#34;&gt;http://www.accelacomm.com/jaw/sfnl/114/51426474/&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Bitcoin-development mailing list&lt;br/&gt;&amp;gt; Bitcoin-development at lists.sourceforge.net&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&#34;&gt;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20110915/3c9778ee/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20110915/3c9778ee/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T04:26:14&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqstq3ryle9kngr8sz03gvassgvwflzrs5k0vdxe5tadttr229zq0wszypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wx3gnah</id>
    
      <title type="html">📅 Original date posted:2011-09-14 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqstq3ryle9kngr8sz03gvassgvwflzrs5k0vdxe5tadttr229zq0wszypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wx3gnah" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxdvkl242dpztfhdyap0cj26ajl8v07ctq3yywuu996j7kfnd0ncqnvr28l&#39;&gt;nevent1q…r28l&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2011-09-14&lt;br/&gt;🗒️ Summary of this message: The security of the Bitcoin protocol should be the top priority, even if it means putting pools at a disadvantage. Pool operators&amp;#39; problems are also potential attackers&amp;#39; problems.&lt;br/&gt;📝 Original message:Am I the only one to think putting pools at a disadvantage is actually&lt;br/&gt;desirable?&lt;br/&gt;Back when pools started to appear we all had huge reservations about putting&lt;br/&gt;so much control into the hands of a few pool operators, but nowadays it&lt;br/&gt;seems that having pool operators control a vast majority of the&lt;br/&gt;computational power is desired.&lt;br/&gt;I do like pools (I use them myself), but we should put the security of the&lt;br/&gt;protocol in first place and then only think about individual players.&lt;br/&gt;Always remember that the problems pool operators encounter are likely also&lt;br/&gt;the ones of a potential attacker that tries to accumulate 50%&#43; of the&lt;br/&gt;network power :-)&lt;br/&gt;&lt;br/&gt;Regards,&lt;br/&gt;Chris&lt;br/&gt;On Wed, Sep 14, 2011 at 5:43 PM, Luke-Jr &amp;lt;luke at dashjr.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; On Wednesday, September 14, 2011 10:45:36 AM Gavin Andresen wrote:&lt;br/&gt;&amp;gt; &amp;gt; The block timestamp rules currently give HOURS of wiggle-room for&lt;br/&gt;&amp;gt; &amp;gt; timestamps. We can&amp;#39;t change those rules without risking a chain split.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; And those hours of wiggle-room are not enough to cause a problem.&lt;br/&gt;&amp;gt; The problem only comes in (AFAIK) when the existing rules are *not*&lt;br/&gt;&amp;gt; enforced.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Assuming a majority of pools/miners adopt the &amp;#34;discourage blocks with&lt;br/&gt;&amp;gt; &amp;gt; stale timestamps&amp;#34; rule, that should squash any incentive for cartels&lt;br/&gt;&amp;gt; &amp;gt; to try to start playing with difficulty-- you would have to have 50&#43;%&lt;br/&gt;&amp;gt; &amp;gt; power to start, or you risk producing mostly orphan blocks.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As this is against pools/miners&amp;#39; interests, and doesn&amp;#39;t seem to solve any&lt;br/&gt;&amp;gt; real&lt;br/&gt;&amp;gt; problems, I&amp;#39;m going to discourage its adoption if it ever gets done.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ------------------------------------------------------------------------------&lt;br/&gt;&amp;gt; BlackBerry&amp;amp;reg; DevCon Americas, Oct. 18-20, San Francisco, CA&lt;br/&gt;&amp;gt; Learn about the latest advances in developing for the&lt;br/&gt;&amp;gt; BlackBerry&amp;amp;reg; mobile platform with sessions, labs &amp;amp; more.&lt;br/&gt;&amp;gt; See new tools and technologies. Register for BlackBerry&amp;amp;reg; DevCon today!&lt;br/&gt;&amp;gt; &lt;a href=&#34;http://p.sf.net/sfu/rim-devcon-copy1&#34;&gt;http://p.sf.net/sfu/rim-devcon-copy1&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Bitcoin-development mailing list&lt;br/&gt;&amp;gt; Bitcoin-development at lists.sourceforge.net&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&#34;&gt;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20110914/7cbfb95f/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20110914/7cbfb95f/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T04:25:33&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs26wrgr3l6hwvr84lm3elw54x9llhczj5jykxq3lr4w78nsu3sldqzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wjyzqhw</id>
    
      <title type="html">📅 Original date posted:2011-06-13 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs26wrgr3l6hwvr84lm3elw54x9llhczj5jykxq3lr4w78nsu3sldqzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wjyzqhw" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8ymr7cgpwa4u7al6pgu6rrleekkm2grp87w5sqy6lg2q33nx5czc6mh2mu&#39;&gt;nevent1q…h2mu&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2011-06-13&lt;br/&gt;🗒️ Summary of this message: Using HTTP trackers for bootstrapping Bitcoin clients has advantages over IRC and DNS Seeds, including better load balancing and no virus/botnet behavior. Hardcoding trackers would be necessary. Vladimir&amp;#39;s proposal of using a specific last octet of IPv4 addresses is not practical and could lead to network partitions.&lt;br/&gt;📝 Original message:Yes, those trackers would be hard coded, just like the IRC servers and&lt;br/&gt;channels are hardcoded right now.&lt;br/&gt;&lt;br/&gt;The advantages over IRC and DNS Seeds are:&lt;br/&gt; - sporadic HTTP requests to a tracker, as opposed to keeping an IRC&lt;br/&gt;connection open at all times&lt;br/&gt; - no virus/botnet like behaviour (automatically join IRC channel with&lt;br/&gt;cryptic name), ISPs tend to bother network admins (like myself) with alerts&lt;br/&gt;when they see this...&lt;br/&gt; - adapts faster than DNS Seeds which require configuration changes on seed&lt;br/&gt;should the nodes become unreachable&lt;br/&gt; - we already use HTTP to determine our external IP, so it would be a&lt;br/&gt;consolidation of transports&lt;br/&gt; - more peers than DNS Seeds (better load balancing)&lt;br/&gt;&lt;br/&gt;As for Vladimirs proposal, seems like an extreme measure, that is not really&lt;br/&gt;practical. Also it leads to network partitions since nodes will prefer their&lt;br/&gt;own /8 and /16 networks. IPv6 will also soon be a problem for this method.&lt;br/&gt;&lt;br/&gt;On Mon, Jun 13, 2011 at 12:54 PM, Vladimir Marchenko &amp;lt;&lt;br/&gt;vladimir at marchenko.co.uk&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; one possible bootstrap method of last resort,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1. create a convention of bitcoind listening on a specific last octest&lt;br/&gt;&amp;gt; of IPv4 address, let&amp;#39;s say, .14 when possible. Those of us who have&lt;br/&gt;&amp;gt; access to IP space would use .14&amp;#39;s.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2. if no other bootstrap method works, client could start scanning&lt;br/&gt;&amp;gt; x.x.x.14 addresses, perhaps in some semi-intelligent order (starting&lt;br/&gt;&amp;gt; from more pobable /8&amp;#39;s and /16&amp;#39;s), if enough people place bitcoind on&lt;br/&gt;&amp;gt; x.x.x.14 than after a 10-100 thousand checks it bound to find a&lt;br/&gt;&amp;gt; bitcoind peer.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It&amp;#39;s messy, with all the excessive scanning etc... but it does not&lt;br/&gt;&amp;gt; depend on anything except a bunch of bitcoind by convention preferring&lt;br/&gt;&amp;gt; listening on x.x.x.14&amp;#39;s.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Given that this is a method of last resort in bootrap chain it whould&lt;br/&gt;&amp;gt; hopefully not lead to DDOS on those unlucky to own *.14 and not&lt;br/&gt;&amp;gt; running bitcoind there. Also the more people are running bitcoind on&lt;br/&gt;&amp;gt; .14, the quicker it would find a peer, the less scanning to do. It is&lt;br/&gt;&amp;gt; kind of self-regualting.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For whatever it worth...&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On 13 June 2011 10:56, Jeff Garzik &amp;lt;jgarzik at exmulti.com&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt; On Mon, Jun 13, 2011 at 5:38 AM, Christian Decker&lt;br/&gt;&amp;gt; &amp;gt; &amp;lt;decker.christian at gmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; BitTorrent trackers are used to handle several thousands of requests, so&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; they would probably scale well enough. I&amp;#39;m not even talking about using&lt;br/&gt;&amp;gt; the&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; DHT trackers, but using old fashioned HTTP based trackers. The fact that&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; each bitcoin client would contact the tracker would make it very hard&lt;br/&gt;&amp;gt; for an&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; attacker to get bootstrapping clients to exclusively connect to his&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; compromised clients. I would say that using a tracker such as&lt;br/&gt;&amp;gt; OpenBittorrent&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; provides the same advantages as using an IRC channel.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; And how does the client discover HTTP trackers?  You&amp;#39;re either&lt;br/&gt;&amp;gt; &amp;gt; hardcoding -those- into the client, or adding an additional bootstrap&lt;br/&gt;&amp;gt; &amp;gt; step to discover them.  Either way, it has the same problems as other&lt;br/&gt;&amp;gt; &amp;gt; current methods.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; The history and experience of gnutella&amp;#39;s web caches vs. UDP host&lt;br/&gt;&amp;gt; &amp;gt; caches seems highly relevant here.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; --&lt;br/&gt;&amp;gt; &amp;gt; Jeff Garzik&lt;br/&gt;&amp;gt; &amp;gt; exMULTI, Inc.&lt;br/&gt;&amp;gt; &amp;gt; jgarzik at exmulti.com&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; ------------------------------------------------------------------------------&lt;br/&gt;&amp;gt; &amp;gt; EditLive Enterprise is the world&amp;#39;s most technically advanced content&lt;br/&gt;&amp;gt; &amp;gt; authoring tool. Experience the power of Track Changes, Inline Image&lt;br/&gt;&amp;gt; &amp;gt; Editing and ensure content is compliant with Accessibility Checking.&lt;br/&gt;&amp;gt; &amp;gt; &lt;a href=&#34;http://p.sf.net/sfu/ephox-dev2dev&#34;&gt;http://p.sf.net/sfu/ephox-dev2dev&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; &amp;gt; Bitcoin-development mailing list&lt;br/&gt;&amp;gt; &amp;gt; Bitcoin-development at lists.sourceforge.net&lt;br/&gt;&amp;gt; &amp;gt; &lt;a href=&#34;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&#34;&gt;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ------------------------------------------------------------------------------&lt;br/&gt;&amp;gt; EditLive Enterprise is the world&amp;#39;s most technically advanced content&lt;br/&gt;&amp;gt; authoring tool. Experience the power of Track Changes, Inline Image&lt;br/&gt;&amp;gt; Editing and ensure content is compliant with Accessibility Checking.&lt;br/&gt;&amp;gt; &lt;a href=&#34;http://p.sf.net/sfu/ephox-dev2dev&#34;&gt;http://p.sf.net/sfu/ephox-dev2dev&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Bitcoin-development mailing list&lt;br/&gt;&amp;gt; Bitcoin-development at lists.sourceforge.net&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&#34;&gt;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20110613/d921638d/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20110613/d921638d/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T03:36:26&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfmwjuzajggnmkp302d65ueqa7hujp90xtvfruelmvam3ky5dwqagzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9w0fy0lw</id>
    
      <title type="html">📅 Original date posted:2011-06-13 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfmwjuzajggnmkp302d65ueqa7hujp90xtvfruelmvam3ky5dwqagzypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9w0fy0lw" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxpsarjfgj9pmy35zs22mxx0zrtp6tfmtp98wfcy5ph5et6wshgjsf3kngr&#39;&gt;nevent1q…kngr&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2011-06-13&lt;br/&gt;🗒️ Summary of this message: The author suggests using BitTorrent trackers for bootstrapping instead of IRC and hardcoded nodes, as they would scale well and be harder to compromise.&lt;br/&gt;📝 Original message:Don&amp;#39;t get me wrong, DNS Seeding is an excellent way to bootstrap via trusted&lt;br/&gt;nodes, I&amp;#39;m not trying to replace it.&lt;br/&gt;What I&amp;#39;m trying to get rid of is the IRC bootstrapping and the hardcoded&lt;br/&gt;nodes in the client, they&amp;#39;re easy targets.&lt;br/&gt;&lt;br/&gt;BitTorrent trackers are used to handle several thousands of requests, so&lt;br/&gt;they would probably scale well enough. I&amp;#39;m not even talking about using the&lt;br/&gt;DHT trackers, but using old fashioned HTTP based trackers. The fact that&lt;br/&gt;each bitcoin client would contact the tracker would make it very hard for an&lt;br/&gt;attacker to get bootstrapping clients to exclusively connect to his&lt;br/&gt;compromised clients. I would say that using a tracker such as OpenBittorrent&lt;br/&gt;provides the same advantages as using an IRC channel.&lt;br/&gt;&lt;br/&gt;On Mon, Jun 13, 2011 at 11:09 AM, Jeff Garzik &amp;lt;jgarzik at exmulti.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; On Mon, Jun 13, 2011 at 4:55 AM, Christian Decker&lt;br/&gt;&amp;gt; &amp;lt;decker.christian at gmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt; We have quite a few bootstrapping mechanisms, starting with the overly&lt;br/&gt;&amp;gt; &amp;gt; complex (IMHO) IRC bootstrapping, which is often suspected as&lt;br/&gt;&amp;gt; bot-activity.&lt;br/&gt;&amp;gt; &amp;gt; Then we have a few hardcoded nodes and some fallback nodes. I was&lt;br/&gt;&amp;gt; wondering&lt;br/&gt;&amp;gt; &amp;gt; why we didn&amp;#39;t adopt BitTorrent tracker bootstrapping until now? It&amp;#39;s&lt;br/&gt;&amp;gt; &amp;gt; basically all it does. Given a hash (SHA1 hash of the genesis bloc would&lt;br/&gt;&amp;gt; be&lt;br/&gt;&amp;gt; &amp;gt; nice ^^) it gives you a list of other nodes with the same hash.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It seems to offer few benefits over DNS seeding, while potentially&lt;br/&gt;&amp;gt; potentially creating a vulnerable hot spot in the DHT.  Sybil attacks&lt;br/&gt;&amp;gt; on DHTs are well documented.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; --&lt;br/&gt;&amp;gt; Jeff Garzik&lt;br/&gt;&amp;gt; exMULTI, Inc.&lt;br/&gt;&amp;gt; jgarzik at exmulti.com&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20110613/2d8c427a/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20110613/2d8c427a/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T03:36:17&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs0yhs6pkzxaux6h05y8640s08nca6nwaflflkn8sa3lxzsta0722czypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wz8xk2l</id>
    
      <title type="html">📅 Original date posted:2011-06-13 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs0yhs6pkzxaux6h05y8640s08nca6nwaflflkn8sa3lxzsta0722czypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wz8xk2l" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdftu4yz9qydrr8rv8kh6vlaeqrhdmzmtuj2gqpqv7vyge9hvvamsthes6e&#39;&gt;nevent1q…es6e&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2011-06-13&lt;br/&gt;🗒️ Summary of this message: The Bitcoin community is discussing the adoption of BitTorrent tracker bootstrapping as a simpler alternative to the current IRC bootstrapping mechanism.&lt;br/&gt;📝 Original message:Hi all.&lt;br/&gt;&lt;br/&gt;Just wanted to carry the discussion from the Forum over to the dev-list.&lt;br/&gt;&lt;br/&gt;We have quite a few bootstrapping mechanisms, starting with the overly&lt;br/&gt;complex (IMHO) IRC bootstrapping, which is often suspected as bot-activity.&lt;br/&gt;Then we have a few hardcoded nodes and some fallback nodes. I was wondering&lt;br/&gt;why we didn&amp;#39;t adopt BitTorrent tracker bootstrapping until now? It&amp;#39;s&lt;br/&gt;basically all it does. Given a hash (SHA1 hash of the genesis bloc would be&lt;br/&gt;nice ^^) it gives you a list of other nodes with the same hash.&lt;br/&gt;&lt;br/&gt;Given that there are quite a few open trackers (accepting and tracking any&lt;br/&gt;hash you throw at them) we could just decide to use 2-3 of those to&lt;br/&gt;bootstrap.&lt;br/&gt;&lt;br/&gt;The downside would be that they return bencoded data, which has to be&lt;br/&gt;interpreted first, but it&amp;#39;s easier than implementing the IRC stuff, I think.&lt;br/&gt;&lt;br/&gt;Any comments?&lt;br/&gt;&lt;br/&gt;Regards,&lt;br/&gt;Chris&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20110613/099e3077/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20110613/099e3077/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T03:36:10&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsf4zmdxgfhtel8e5stj2kw5tzwukg7rrfw29wz27cy7g4l22lr7rszypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wa2q7yz</id>
    
      <title type="html">📅 Original date posted:2011-06-13 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsf4zmdxgfhtel8e5stj2kw5tzwukg7rrfw29wz27cy7g4l22lr7rszypev6spn9mrc9hg20a36evp78dha47ndjx73kcf9ek9hz9aphwq9wa2q7yz" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsr9206eukdnd5dfscmt6x6v2rdkvnjef5cdkfxm4c96k3d8qf03zc3kux6s&#39;&gt;nevent1q…ux6s&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2011-06-13&lt;br/&gt;🗒️ Summary of this message: Using HTTP trackers for bootstrapping Bitcoin clients has advantages over IRC and DNS Seeds, including better load balancing and no virus/botnet behavior. Hardcoding trackers would be necessary. Vladimir&amp;#39;s proposal of using a specific last octet of IPv4 addresses is not practical and could lead to network partitions.&lt;br/&gt;📝 Original message:Yes, those trackers would be hard coded, just like the IRC servers and&lt;br/&gt;channels are hardcoded right now.&lt;br/&gt;&lt;br/&gt;The advantages over IRC and DNS Seeds are:&lt;br/&gt; - sporadic HTTP requests to a tracker, as opposed to keeping an IRC&lt;br/&gt;connection open at all times&lt;br/&gt; - no virus/botnet like behaviour (automatically join IRC channel with&lt;br/&gt;cryptic name), ISPs tend to bother network admins (like myself) with alerts&lt;br/&gt;when they see this...&lt;br/&gt; - adapts faster than DNS Seeds which require configuration changes on seed&lt;br/&gt;should the nodes become unreachable&lt;br/&gt; - we already use HTTP to determine our external IP, so it would be a&lt;br/&gt;consolidation of transports&lt;br/&gt; - more peers than DNS Seeds (better load balancing)&lt;br/&gt;&lt;br/&gt;As for Vladimirs proposal, seems like an extreme measure, that is not really&lt;br/&gt;practical. Also it leads to network partitions since nodes will prefer their&lt;br/&gt;own /8 and /16 networks. IPv6 will also soon be a problem for this method.&lt;br/&gt;&lt;br/&gt;On Mon, Jun 13, 2011 at 12:54 PM, Vladimir Marchenko &amp;lt;&lt;br/&gt;vladimir at marchenko.co.uk&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; one possible bootstrap method of last resort,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1. create a convention of bitcoind listening on a specific last octest&lt;br/&gt;&amp;gt; of IPv4 address, let&amp;#39;s say, .14 when possible. Those of us who have&lt;br/&gt;&amp;gt; access to IP space would use .14&amp;#39;s.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2. if no other bootstrap method works, client could start scanning&lt;br/&gt;&amp;gt; x.x.x.14 addresses, perhaps in some semi-intelligent order (starting&lt;br/&gt;&amp;gt; from more pobable /8&amp;#39;s and /16&amp;#39;s), if enough people place bitcoind on&lt;br/&gt;&amp;gt; x.x.x.14 than after a 10-100 thousand checks it bound to find a&lt;br/&gt;&amp;gt; bitcoind peer.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It&amp;#39;s messy, with all the excessive scanning etc... but it does not&lt;br/&gt;&amp;gt; depend on anything except a bunch of bitcoind by convention preferring&lt;br/&gt;&amp;gt; listening on x.x.x.14&amp;#39;s.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Given that this is a method of last resort in bootrap chain it whould&lt;br/&gt;&amp;gt; hopefully not lead to DDOS on those unlucky to own *.14 and not&lt;br/&gt;&amp;gt; running bitcoind there. Also the more people are running bitcoind on&lt;br/&gt;&amp;gt; .14, the quicker it would find a peer, the less scanning to do. It is&lt;br/&gt;&amp;gt; kind of self-regualting.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For whatever it worth...&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On 13 June 2011 10:56, Jeff Garzik &amp;lt;jgarzik at exmulti.com&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt; On Mon, Jun 13, 2011 at 5:38 AM, Christian Decker&lt;br/&gt;&amp;gt; &amp;gt; &amp;lt;decker.christian at gmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; BitTorrent trackers are used to handle several thousands of requests, so&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; they would probably scale well enough. I&amp;#39;m not even talking about using&lt;br/&gt;&amp;gt; the&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; DHT trackers, but using old fashioned HTTP based trackers. The fact that&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; each bitcoin client would contact the tracker would make it very hard&lt;br/&gt;&amp;gt; for an&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; attacker to get bootstrapping clients to exclusively connect to his&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; compromised clients. I would say that using a tracker such as&lt;br/&gt;&amp;gt; OpenBittorrent&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; provides the same advantages as using an IRC channel.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; And how does the client discover HTTP trackers?  You&amp;#39;re either&lt;br/&gt;&amp;gt; &amp;gt; hardcoding -those- into the client, or adding an additional bootstrap&lt;br/&gt;&amp;gt; &amp;gt; step to discover them.  Either way, it has the same problems as other&lt;br/&gt;&amp;gt; &amp;gt; current methods.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; The history and experience of gnutella&amp;#39;s web caches vs. UDP host&lt;br/&gt;&amp;gt; &amp;gt; caches seems highly relevant here.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; --&lt;br/&gt;&amp;gt; &amp;gt; Jeff Garzik&lt;br/&gt;&amp;gt; &amp;gt; exMULTI, Inc.&lt;br/&gt;&amp;gt; &amp;gt; jgarzik at exmulti.com&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; ------------------------------------------------------------------------------&lt;br/&gt;&amp;gt; &amp;gt; EditLive Enterprise is the world&amp;#39;s most technically advanced content&lt;br/&gt;&amp;gt; &amp;gt; authoring tool. Experience the power of Track Changes, Inline Image&lt;br/&gt;&amp;gt; &amp;gt; Editing and ensure content is compliant with Accessibility Checking.&lt;br/&gt;&amp;gt; &amp;gt; &lt;a href=&#34;http://p.sf.net/sfu/ephox-dev2dev&#34;&gt;http://p.sf.net/sfu/ephox-dev2dev&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; &amp;gt; Bitcoin-development mailing list&lt;br/&gt;&amp;gt; &amp;gt; Bitcoin-development at lists.sourceforge.net&lt;br/&gt;&amp;gt; &amp;gt; &lt;a href=&#34;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&#34;&gt;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ------------------------------------------------------------------------------&lt;br/&gt;&amp;gt; EditLive Enterprise is the world&amp;#39;s most technically advanced content&lt;br/&gt;&amp;gt; authoring tool. Experience the power of Track Changes, Inline Image&lt;br/&gt;&amp;gt; Editing and ensure content is compliant with Accessibility Checking.&lt;br/&gt;&amp;gt; &lt;a href=&#34;http://p.sf.net/sfu/ephox-dev2dev&#34;&gt;http://p.sf.net/sfu/ephox-dev2dev&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Bitcoin-development mailing list&lt;br/&gt;&amp;gt; Bitcoin-development at lists.sourceforge.net&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&#34;&gt;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20110613/d921638d/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20110613/d921638d/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T03:19:15&#43;02:00</updated>
  </entry>

</feed>