<?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/npub1ly5vrg5ylhdkxrkj824jhlnfsy2z8fvlg8wcc0jqc4aezma6majsycdx6n.rss" />
  <link href="https://nostr.ae/npub1ly5vrg5ylhdkxrkj824jhlnfsy2z8fvlg8wcc0jqc4aezma6majsycdx6n" />
  <id>https://nostr.ae/npub1ly5vrg5ylhdkxrkj824jhlnfsy2z8fvlg8wcc0jqc4aezma6majsycdx6n</id>
  <icon></icon>
  <logo></logo>




  <entry>
    <id>https://nostr.ae/nevent1qqs0jnafqdlxltcnmagsc3wlqdlaqzgwd7vaxlva0a6j6h0h50zcryczyruj3sdzsn7akccw6ga2k2l7dxq3gga9naqamrp7grzhhyt0ht0k2smgtlj</id>
    
      <title type="html">📅 Original date posted:2019-01-08 📝 Original message: ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs0jnafqdlxltcnmagsc3wlqdlaqzgwd7vaxlva0a6j6h0h50zcryczyruj3sdzsn7akccw6ga2k2l7dxq3gga9naqamrp7grzhhyt0ht0k2smgtlj" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsreqkrulznldeeh04u08ng5trtuc53e45wa9felxmpk3hthm2vr9sku8564&#39;&gt;nevent1q…8564&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-01-08&lt;br/&gt;📝 Original message:&lt;br/&gt;ZmnSCPxj,&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Without reading your proposed solution, I don&amp;#39;t understand the problem&lt;br/&gt;you describe here:&lt;br/&gt;&lt;br/&gt;&amp;gt; David solution effectively makes the exchange node (OM in CJP terminology) also the RM in the route.&lt;br/&gt;&amp;gt; However, with use of mere preimages and hashes, it is obvious that such a &amp;#34;loop&amp;#34; where the end payee (RM) is also an intermediate node, is foolish, as the end payee will simply claim the payment without letting the loop through.&lt;br/&gt;&amp;gt; And since the payee (S in CJP terminology) is paid via the delta from its incoming to its outgoing HTLC on that loop, then if the RM is the OM then it is possible for the OM To simply steal the payment outright.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; (It is helpful to realize that payment routes pay not just the end payee, but all hops in the middle; thus the &amp;#34;real&amp;#34; target of the payment (the one who receives the bulk of the value) need not be at the *end* of the route)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;All hops on the route are linked together the same way as hops in a&lt;br/&gt;regular Lightning payment. An intermediate node who is also the end&lt;br/&gt;payee, and therefore knows the preimage, can indeed shortcut the payment&lt;br/&gt;by accepting the payment on the intermediate node instead of forwarding&lt;br/&gt;it; this is true for all Lightning payments [*].&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I think the scenario where &amp;#34;the bulk of the value&amp;#34; ends up at one or&lt;br/&gt;more intermediate nodes should not typically apply here. With a&lt;br/&gt;sufficiently low spread and fees, the bulk of the value should be&lt;br/&gt;roughly the same on each hop. The only thing that might be stolen is in&lt;br/&gt;those fees and exchange rate differences.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;By design, OT will pay the fees, so its outgoing amount will be higher&lt;br/&gt;than the incoming amount. RM will not want to exclude OT from its route.&lt;br/&gt;If RM is OM, then RM cannot exclude OM from the route either.&lt;br/&gt;Effectively, you end up with a RM-OT-RM route, which is OK if RM is OM.&lt;br/&gt;Minimizing Lightning route length to minimize fees is not a bad thing.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;There is a remaining issue though, that if RM is OM, then, obviously, RM&lt;br/&gt;and OM can cooperate to perform a delay attack on OT. I think this is&lt;br/&gt;acceptable, given that in section 4 of my paper[1] I already described&lt;br/&gt;some countermeasures OT can take. I think the attack possibility is&lt;br/&gt;wider: if OT and OM are anonymous / pseudonymous toward each other, then&lt;br/&gt;RM can either be OM and attack OT, or it can be OT and attack OM. I&lt;br/&gt;argued in section 4 that OM is more vulnerable than OT, but luckily the&lt;br/&gt;assumptions to this argument do not apply anymore. OM knows the&lt;br/&gt;attacker: it is RM. RM can perform a single attack on OM, and after&lt;br/&gt;that, OM will refuse incoming exchange transactions that are coordinated&lt;br/&gt;by RM.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;So my proposal is not perfect, it does contain the trusted role RM, and&lt;br/&gt;participants have to be somewhat careful which RMs they do business&lt;br/&gt;with. However, it does have the benefit of de-coupling the trusted role&lt;br/&gt;RM from the actual trading roles of OT and OM, so you only need to trust&lt;br/&gt;a few parties and you can trade with lots of parties. Trading parties&lt;br/&gt;can remain anonymous to RM, and they can hide from RM what second asset&lt;br/&gt;they are trading, and to what exchange rate, so there&amp;#39;s very little that&lt;br/&gt;can be censored by RM.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;CJP&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;[*] So it is a vulnerability for the idea where you anonymously donate&lt;br/&gt;to an intermediate node by giving it a huge fee. The vulnerability does&lt;br/&gt;not apply if you are the final payee, since nobody else but the final&lt;br/&gt;payee can perform the attack. Other parties might control multiple nodes&lt;br/&gt;on the route, but they only learn the preimage after HTLC acceptance on&lt;br/&gt;all hops.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;[1] &lt;a href=&#34;https://bitonic.nl/public/slowdown_prevention.pdf&#34;&gt;https://bitonic.nl/public/slowdown_prevention.pdf&lt;/a&gt;
    </content>
    <updated>2023-06-09T12:53:47Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsdf7g62ylpljz35jmg6w22dfnurawqq0qvnz38u4suq6a7at34xkszyruj3sdzsn7akccw6ga2k2l7dxq3gga9naqamrp7grzhhyt0ht0k2c6enjy</id>
    
      <title type="html">📅 Original date posted:2018-12-06 📝 Original message: &amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsdf7g62ylpljz35jmg6w22dfnurawqq0qvnz38u4suq6a7at34xkszyruj3sdzsn7akccw6ga2k2l7dxq3gga9naqamrp7grzhhyt0ht0k2c6enjy" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsx4h7dxf0kzq0gv9ndjgkln3p8dm5negejephearqxqqvajmq3lfguyva87&#39;&gt;nevent1q…va87&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-12-06&lt;br/&gt;📝 Original message:&lt;br/&gt;&amp;gt; * layer 0 (to B): decorrelation_secret = k[b]&lt;br/&gt;&amp;gt; * layer 1 (to B): total_decorrelation_secrets = k = k[a] &#43; k[b]&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I would have less trouble understanding that if it were layer 1 (to C)&lt;br/&gt;instead of (to B).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; The total_decorrelation_secrets serves as the payer-generated shared secret between payer and payee.&lt;br/&gt;&amp;gt; B cannot learn this, and thus cannot fake its own secret.&lt;br/&gt;&amp;gt; Even if it instead offers ((I &#43; K[A]) &#43; k[z] * G) for a new secret k[z], it cannot know how to change total_decorrelation_secrets from k[a] &#43; k[b] to k[a] &#43; k[z] instead.&lt;br/&gt;&amp;gt;&lt;br/&gt;The way things are now, the ephemeral key generation and the payment&lt;br/&gt;hash/preimage generation are completely unrelated. This is what allows&lt;br/&gt;an attacker to use the same payment hash, and use his own ephemeral key&lt;br/&gt;pair to create a new onion packet around it.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Primarily, path decorrelation replaces the payment hash/preimage part.&lt;br/&gt;Maybe I still don&amp;#39;t understand something, but if that&amp;#39;s the only thing&lt;br/&gt;(without changing the ephemeral key / onion shared secret generation),&lt;br/&gt;attacking the direct neighbor should still work; in your case, B would&lt;br/&gt;still offer ((I &#43; K[A]) &#43; K[B]) to C, with an onion packet B created&lt;br/&gt;himself. I&amp;#39;m not familiar enough with the path correlation to understand&lt;br/&gt;what happens after step 6, but for C it looks the same, so she should do&lt;br/&gt;the same.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I do see that, if you couple the &amp;#34;H&amp;#34;TLC payment secret generation to the&lt;br/&gt;onion shared secret generation, you can make the attack impossible. Do I&lt;br/&gt;understand correctly that this is the idea? After all, C still needs to&lt;br/&gt;receive k somehow; my crypto math isn&amp;#39;t that good, but my intuitive&lt;br/&gt;guess is that i &#43; k is the secret that allows C to claim funds locked in&lt;br/&gt;((I &#43; K[A]) &#43; K[B]) =? (i &#43; (k[a] &#43; k[b])) * G. If k is submitted from A&lt;br/&gt;to C through some mechanism that replaces the current ephemeral key&lt;br/&gt;system, then I understand what you&amp;#39;re at.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Assuming this is the case, it&amp;#39;s pretty neat. I do wonder how it&lt;br/&gt;interacts with rendezvous routing. If the sender and receiver each&lt;br/&gt;create the k[..] values for their own part of the route, can the&lt;br/&gt;receiver-generated onion packet still use points of the form ((I &#43; K[A])&lt;br/&gt;&#43; K[B]), including K[..] values related to the sender side? I need to&lt;br/&gt;dig deeper into this path decorrelation idea.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;CJP
    </content>
    <updated>2023-06-09T12:53:20Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsvdlhcv4e9aesrfakcms7flxkpup4fftz8lwhjqdjln3f4x2exn5qzyruj3sdzsn7akccw6ga2k2l7dxq3gga9naqamrp7grzhhyt0ht0k233sz3m</id>
    
      <title type="html">📅 Original date posted:2018-12-04 📝 Original message: ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsvdlhcv4e9aesrfakcms7flxkpup4fftz8lwhjqdjln3f4x2exn5qzyruj3sdzsn7akccw6ga2k2l7dxq3gga9naqamrp7grzhhyt0ht0k233sz3m" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2wqcvwfpm5k86zfk3jtnds3xzhhff4nhgmuc8pnlr9nzl4aktjmg3ez2rk&#39;&gt;nevent1q…z2rk&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-12-04&lt;br/&gt;📝 Original message:&lt;br/&gt;&amp;gt;&amp;gt; I think we could stop this type of attack by including some kind of&lt;br/&gt;&amp;gt;&amp;gt; shared secret in the onion message to the final node:&lt;br/&gt;&amp;gt; I think we get this &amp;#34;for free&amp;#34; if we switch to path decorrelation and points&#43;privkeys instead of hashes&#43;preimages.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Path decorrelation means that each hop is given a random point, to be added to the next SS &amp;#34;HTLC&amp;#34;.&lt;br/&gt;&amp;gt; The final node needs to be given the total of the scalars of each hop random point along the route, most likely within the last hop of the onion.&lt;br/&gt;&amp;gt; The final node also cannot differentiate between an incorrect total for this scalar, or an incorrect &amp;#34;invoice hash&amp;#34;/invoice point.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Hence, some intermediate node along the way cannot guess this, and the final node will give the same error, i.e. &amp;#34;invoice point not found&amp;#34;.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;That might indeed stop an attacker from testing 2nd-degree, 3rd-degree&lt;br/&gt;etc. neighbors, making the attack much less versatile. However, for his&lt;br/&gt;direct neighbor in the route, the attacker does learn the point to be&lt;br/&gt;used in that hop. Therefore I think the attacker can still test whether&lt;br/&gt;or not the next node is the final hop.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;CJP
    </content>
    <updated>2023-06-09T12:53:20Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs872afak7284rah4h0h3c00zst88cesl0qeqk5aunq2qd05xx625gzyruj3sdzsn7akccw6ga2k2l7dxq3gga9naqamrp7grzhhyt0ht0k2cykkux</id>
    
      <title type="html">📅 Original date posted:2018-12-04 📝 Original message: ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs872afak7284rah4h0h3c00zst88cesl0qeqk5aunq2qd05xx625gzyruj3sdzsn7akccw6ga2k2l7dxq3gga9naqamrp7grzhhyt0ht0k2cykkux" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszlj6yth2hg4jgxkeqdrqrpwjw243c84dezh44wclklwnz4j92xqs5u7y8q&#39;&gt;nevent1q…7y8q&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-12-04&lt;br/&gt;📝 Original message:&lt;br/&gt;Thanks Christian, that makes sense. Unfortunately it&amp;#39;s not very clear&lt;br/&gt;from the BOLT, at least not for me.&lt;br/&gt;&lt;br/&gt;Now that I think of this type of attack: *in general* the HMAC prevents&lt;br/&gt;this kind of attack, but isn&amp;#39;t the attack still possible in certain&lt;br/&gt;specific cases?&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;For instance, the attacking intermediate node might guess that the next&lt;br/&gt;node in the route is the final node; it can test this by completely&lt;br/&gt;replacing the onion packet it sends to the next node with a self-written&lt;br/&gt;onion packet that has the next hop as final node, with the same amount&lt;br/&gt;and payment hash as instructed by the incoming payment. If that&lt;br/&gt;succeeds, it has learned that the next node is indeed the final node&lt;br/&gt;(and nobody gets to know about the attack); if that fails, it might&lt;br/&gt;retry the payment with the original onion packet. In that case, it&lt;br/&gt;learned that the next node is *not* the final node. In this case, the&lt;br/&gt;attack is detectable by the next node though: it first receives an&lt;br/&gt;incoming payment with a payment hash it doesn&amp;#39;t recognize, and then it&lt;br/&gt;receives a payment forwarding request with the same payment hash.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Given that the attacker has good knowledge of the shape of the Lightning&lt;br/&gt;network, this type of attack can be generalized to test whether a&lt;br/&gt;certain second-degree neighbor, third-degree neighbor etc. is the final&lt;br/&gt;node; it scales pretty badly with increasing network distance though. An&lt;br/&gt;additional advantage for the attacker is that this gives plausible&lt;br/&gt;deniability: if the attack becomes visible, the attacker can always&lt;br/&gt;claim it wasn&amp;#39;t him, but some node upstream in the route. A practical&lt;br/&gt;difficulty for the attacker might be that the exact amount forwarded in&lt;br/&gt;further-away hops is unknown, but it&amp;#39;s probably not that difficult to guess.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I think we could stop this type of attack by including some kind of&lt;br/&gt;shared secret in the onion message to the final node:&lt;br/&gt;&lt;br/&gt;* Payee generates shared secret and passes this to payer, as part of the&lt;br/&gt;invoice&lt;br/&gt;&lt;br/&gt;* Payer includes shared secret in the per hop data to payee&lt;br/&gt;&lt;br/&gt;* On receiving the incoming message, payee checks whether the received&lt;br/&gt;shared secret corresponds to the generated one. If this is not the case,&lt;br/&gt;behave in exactly the same way as when the payment hash is unrecognized&lt;br/&gt;(including timing, to prevent timing side-channel attacks).&lt;br/&gt;&lt;br/&gt;If this shared secret is encrypted like the rest of the per hop data,&lt;br/&gt;the attacker can&amp;#39;t learn the shared secret, and can&amp;#39;t include it in his&lt;br/&gt;own replacement onion. He can&amp;#39;t copy-paste the encrypted shared secret&lt;br/&gt;from the original onion either, since he has to use his own, different&lt;br/&gt;ephemeral key in his own onion. With this protocol in place, a final&lt;br/&gt;node can no longer be distinguished from a non-final node with this attack.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;The shared secret doesn&amp;#39;t need to be very large: the number of attempts&lt;br/&gt;per second (to guess the shared secret) is limited by network latency,&lt;br/&gt;bandwidth and maybe some artificial rate limiting. If an attacker can do&lt;br/&gt;100 attempts per second, then a 32-bit shared secret will take (on&lt;br/&gt;average) 2^31 / (100*3600*24) = 248 days to crack, for a single guess of&lt;br/&gt;which node is the final node. In the mean time, people will have noticed&lt;br/&gt;the ongoing attack and will have taken countermeasures. Besides, the&lt;br/&gt;transaction lock time will likely have expired in the mean time as well.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;CJP&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On 29-11-18 18:13, Christian Decker wrote:&lt;br/&gt;&amp;gt; Hi Corne,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; the HMACs are necessary in order to make sure that a hop cannot modify&lt;br/&gt;&amp;gt; the packet before forwarding, and the next node not detecting that&lt;br/&gt;&amp;gt; modification.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; One potential attack that could facilitate is that an attacker could&lt;br/&gt;&amp;gt; learn the path length by messing with different per-hop payloads: set&lt;br/&gt;&amp;gt; n=0 the attacker flips bits in the nth per-hop payload, and forwards&lt;br/&gt;&amp;gt; it. If the next node doesn&amp;#39;t return an error it was the final recipient,&lt;br/&gt;&amp;gt; if if returns an error, increment n and flip bits in the (n&#43;1)th per-hop&lt;br/&gt;&amp;gt; payload, until no error is returned. Congratulation you just learned the&lt;br/&gt;&amp;gt; path length after you. The same can probably be done with the error&lt;br/&gt;&amp;gt; packet, meaning you can learn the exact position in the route. Add to&lt;br/&gt;&amp;gt; that the information you already know about the network (cltv_deltas,&lt;br/&gt;&amp;gt; amounts, fees, ...) and you can probably detect sender and recipient.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Adding HMACs solves this by ensuring that the next hop will return an&lt;br/&gt;&amp;gt; error if anything was changed, i.e., removing the leak about which node&lt;br/&gt;&amp;gt; would have failed the route.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; Christian
    </content>
    <updated>2023-06-09T12:53:19Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqszp8r69cgfshuuk007gg404cph74hj0apzuvn8tq90f3qxj8p88cczyruj3sdzsn7akccw6ga2k2l7dxq3gga9naqamrp7grzhhyt0ht0k2epjkf0</id>
    
      <title type="html">📅 Original date posted:2018-05-22 📝 Original message: &amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqszp8r69cgfshuuk007gg404cph74hj0apzuvn8tq90f3qxj8p88cczyruj3sdzsn7akccw6ga2k2l7dxq3gga9naqamrp7grzhhyt0ht0k2epjkf0" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyy9hdkthctcgeny9zt43pvew286m3cmj6e4rjvvw3eqkg3f8u2sqll8ekh&#39;&gt;nevent1q…8ekh&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-05-22&lt;br/&gt;📝 Original message:&lt;br/&gt;&amp;gt; You missed the vital detail: that you must prove channel closure if you&lt;br/&gt;&amp;gt; can&amp;#39;t unpeel the onion further.  That *will* hit an unresponsive party&lt;br/&gt;&amp;gt; with a penalty.[1]&lt;br/&gt;Is this specified in a BOLT somewhere? I tried to find it several times,&lt;br/&gt;without success.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;CJP
    </content>
    <updated>2023-06-09T12:50:30Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsdhhp2vtwe05uvyauqhsv4cp4km8jkamumggs5wftvnx2lumkn9mszyruj3sdzsn7akccw6ga2k2l7dxq3gga9naqamrp7grzhhyt0ht0k2qt865d</id>
    
      <title type="html">📅 Original date posted:2018-04-16 📝 Original message: Op ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsdhhp2vtwe05uvyauqhsv4cp4km8jkamumggs5wftvnx2lumkn9mszyruj3sdzsn7akccw6ga2k2l7dxq3gga9naqamrp7grzhhyt0ht0k2qt865d" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsygcz8l4cljkg4msyrpnmasv2thm5f5qjf7jggpmdzppsywwgcnjqyp2ggl&#39;&gt;nevent1q…2ggl&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-04-16&lt;br/&gt;📝 Original message:&lt;br/&gt;Op 10-04-18 om 20:34 schreef Tyler H:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I will continue to approach the problem of securely advertising&lt;br/&gt;&amp;gt; human-understandable node names, and I hope someday soon I will have a&lt;br/&gt;&amp;gt; solution Lightning can use that retains the open, decentralized&lt;br/&gt;&amp;gt; properties of the technology and the underlying blockchains.&lt;br/&gt;&amp;gt;&lt;br/&gt;Two of my favorite approaches:&lt;br/&gt;* Namecoin-style: Register your name first-come-first-serve on a block&lt;br/&gt;chain.&lt;br/&gt;  -&amp;gt; Provides no protection against name squatting and attackers&lt;br/&gt;registering similarly-looking names.&lt;br/&gt;* Web of Trust: I tell you I believe this pubkey really corresponds to&lt;br/&gt;this name; someone else might tell you something else. DNS is&lt;br/&gt;essentially a special case of this, where the WoT has a centralized star&lt;br/&gt;shape. TLS is another case, where there is dozens of signing parties&lt;br/&gt;(CAs), and everyone typically gets their keys signed by only one of&lt;br/&gt;them, so anyone verifying keys has to trust all these CAs. More&lt;br/&gt;generally, a WoT can have any shape though.&lt;br/&gt;  -&amp;gt; Provides little to no protection against trusted parties lying to you.&lt;br/&gt;&lt;br/&gt;CJP
    </content>
    <updated>2023-06-09T12:49:52Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsr2rxlq6aexulp8wasvv464m4tda68rcv8rjx2jd5a2cg8j65m8jqzyruj3sdzsn7akccw6ga2k2l7dxq3gga9naqamrp7grzhhyt0ht0k2tpl5ca</id>
    
      <title type="html">📅 Original date posted:2018-03-15 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsr2rxlq6aexulp8wasvv464m4tda68rcv8rjx2jd5a2cg8j65m8jqzyruj3sdzsn7akccw6ga2k2l7dxq3gga9naqamrp7grzhhyt0ht0k2tpl5ca" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs93tjfx5zmu66anpzy7x6hxge7wfuaklxragdsyerksv2ql9f467g2pa9mh&#39;&gt;nevent1q…a9mh&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-03-15&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Andy,&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;1. Don&amp;#39;t confuse TOR onion routing (used for anonymous/pseudonymous&lt;br/&gt;communication) with Lightning onion routing (used for anonymous&lt;br/&gt;payments). TOR&amp;#39;s design is outside the scope of the discussion; as far&lt;br/&gt;as I can see, TOR is only relevant because it exists, it works(*) and it&lt;br/&gt;is useful to us. The &amp;#34;partial onion route&amp;#34; is about Lightning&amp;#39;s onion&lt;br/&gt;routing. You could consider the start of the partial route as an&lt;br/&gt;&amp;#34;introduction point&amp;#34;; it is selected by the payee(**). I&amp;#39;m not sure if&lt;br/&gt;it is exactly equivalent to TOR&amp;#39;s introduction points though.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;2. Good thinking. I guess that, since either payer *or* payee will&lt;br/&gt;decide on the amount, there is no use case for omitting the amount in an&lt;br/&gt;invoice in BOLT 12; unlike BOLT 11, it should not be optional here. So&lt;br/&gt;that&amp;#39;s not a problem for the partial onion route. Unknown capacity is an&lt;br/&gt;issue, and I guess it&amp;#39;s worse than if the payer is completely free to&lt;br/&gt;choose a route, because the payer is no longer completely free to choose&lt;br/&gt;alternative routes. Giving a batch of alternative routes is one concept&lt;br/&gt;(TBD: can they have the same payment hash?); giving new alternatives&lt;br/&gt;interactively is another option. I think using the same &amp;#34;introduction&lt;br/&gt;point&amp;#34; for all routes is best for privacy: otherwise the payer could&lt;br/&gt;determine the neighborhood of the payee.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;3. True. Right now I&amp;#39;m thinking in the opposite direction: simplifying&lt;br/&gt;BOLT 12 by removing the possibility of refunds. We can always add it&lt;br/&gt;back later (with a proper set of features for all kinds of refunds) as&lt;br/&gt;an optional feature.&lt;br/&gt;&lt;br/&gt;4. This depends on the use case. The URL contains an optional invoice&lt;br/&gt;ID. A payee can request a payment for a specific, single transaction&lt;br/&gt;(for a single instance of delivery of goods/services) by handing over an&lt;br/&gt;URL, including an invoice ID, to a single payer. This provides similar&lt;br/&gt;functionality as BOLT 11, except that you now have a well-defined&lt;br/&gt;channel for transmitting larger invoice descriptions and for using&lt;br/&gt;partial onion routes. A payee can also hand over an URL without invoice&lt;br/&gt;ID; this can be used and re-used by one or more payers, whenever they&lt;br/&gt;want to perform payments to this payee.&lt;br/&gt;&lt;br/&gt;Thanks for the questions; I think I can improve my proposal based on&lt;br/&gt;your feedback.&lt;br/&gt;&lt;br/&gt;What should I do with BOLT 12? Have it pulled in&lt;br/&gt;lightningnetwork/lightning-rfc; maybe in a separate branch? Or first&lt;br/&gt;work it out in more detail? How does lightningnetwork/lightning-rfc&lt;br/&gt;distinguish between drafts, finished agreed-on specs and things we&lt;br/&gt;decided we don&amp;#39;t want? Is there even a consensus forming mechanism?&lt;br/&gt;&lt;br/&gt;CJP&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;(*) to some degree; there are limits to the privacy provided by TOR.&lt;br/&gt;&lt;br/&gt;(**) when extending the current BOLT 12 draft a bit, it might also&lt;br/&gt;optionally be selected by the payer.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Op 10-03-18 om 06:16 schreef Andy Schroder:&lt;br/&gt;&amp;gt; Hello Corné,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;m glad to see that someone getting this kind of idea started.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;m still new to some of these topics, but I have a few comments.&lt;br/&gt;&amp;gt; Hopefully I&amp;#39;m not wasting your time if they are too rudimentary!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  1. You mention that the payee gives a URL where the payer can then&lt;br/&gt;&amp;gt;     connect to to request invoices. You mention that this can be a tor&lt;br/&gt;&amp;gt;     hidden service if the payee needs to remain private. You also&lt;br/&gt;&amp;gt;     suggest that the payee can remain private by &amp;#34;payee can send an&lt;br/&gt;&amp;gt;     invoice to payer which has a partial onion route as destination&lt;br/&gt;&amp;gt;     instead of a node ID&amp;#34;. I was reading about tor hidden services&lt;br/&gt;&amp;gt;     (&lt;a href=&#34;https://www.torproject.org/docs/onion-services.html.en&#34;&gt;https://www.torproject.org/docs/onion-services.html.en&lt;/a&gt;), and they&lt;br/&gt;&amp;gt;     require an introduction point, and a rendezvous point. Do we not&lt;br/&gt;&amp;gt;     need this two step process for the payment route, because we&lt;br/&gt;&amp;gt;     already have communication initiated over the anonymous&lt;br/&gt;&amp;gt;     communication channel, and the beginning of the partial onion&lt;br/&gt;&amp;gt;     route is not publicly available information, and can change with&lt;br/&gt;&amp;gt;     every invoice?&lt;br/&gt;&amp;gt;  2. What happens if the capacity of the partial onion route is no&lt;br/&gt;&amp;gt;     longer sufficient when the payer is ready to pay? Is there a way&lt;br/&gt;&amp;gt;     to provide a few routes just in case? Or, in the case where no&lt;br/&gt;&amp;gt;     amount is specified, how is the partial onion route possible if we&lt;br/&gt;&amp;gt;     don&amp;#39;t even know how much capacity may be needed?&lt;br/&gt;&amp;gt;  3. You say the refund should invalidate the proof of payment of the&lt;br/&gt;&amp;gt;     initial transaction. What about partial refunds? I think there are&lt;br/&gt;&amp;gt;     a lot of applications where there would be a partial refund.&lt;br/&gt;&amp;gt;  4. You say &amp;#34;this BOLT specifies a protocol where payee gives a URL to&lt;br/&gt;&amp;gt;     one or more potential payers&amp;#34;. How does the payer identify itself&lt;br/&gt;&amp;gt;     to the payee so that the payee knows what goods or services that&lt;br/&gt;&amp;gt;     they want an invoice for? Do they send this after making the&lt;br/&gt;&amp;gt;     connection, or is it part of the URL?&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; Andy Schroder&lt;br/&gt;&amp;gt; On 03/08/2018 10:19 AM, Corné Plooy via Lightning-dev wrote:&lt;br/&gt;&amp;gt;&amp;gt; Hi,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I was thinking of how to use Lightning for various types of payments,&lt;br/&gt;&amp;gt;&amp;gt; and I think it&amp;#39;s currently fine for customer/(web)shop type&lt;br/&gt;&amp;gt;&amp;gt; interactions, but it seems a bit inconvenient for other use cases, e.g.&lt;br/&gt;&amp;gt;&amp;gt; salary payments or direct pay-out of cryptocurrency bought on an&lt;br/&gt;&amp;gt;&amp;gt; exchange. I came up with an idea that addresses some of these issues and&lt;br/&gt;&amp;gt;&amp;gt; more (e.g. payee anonymity) by having a direct line of communication&lt;br/&gt;&amp;gt;&amp;gt; between payer and payee instead of BOLT11-style interaction. It&amp;#39;s still&lt;br/&gt;&amp;gt;&amp;gt; a bit half-baked, with many details not worked out yet, but you can read&lt;br/&gt;&amp;gt;&amp;gt; it here, and see if you like where this is going:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://github.com/bitonic-cjp/lightning-rfc/blob/payment-protocol/12-payment-protocol.md&#34;&gt;https://github.com/bitonic-cjp/lightning-rfc/blob/payment-protocol/12-payment-protocol.md&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; In true permissionless fashion, I have been so bolD to register bolT #12&lt;br/&gt;&amp;gt;&amp;gt; for my idea.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Please let me know what you think.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; kind regards,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; CJP&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; _______________________________________________&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;
    </content>
    <updated>2023-06-09T12:49:25Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsdhsz0gzad6sprz3t4v2gtkfk4jaltrpy58mssa94x6q2rh7ngrugzyruj3sdzsn7akccw6ga2k2l7dxq3gga9naqamrp7grzhhyt0ht0k2ffxavf</id>
    
      <title type="html">📅 Original date posted:2018-02-12 📝 Original message: I was ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsdhsz0gzad6sprz3t4v2gtkfk4jaltrpy58mssa94x6q2rh7ngrugzyruj3sdzsn7akccw6ga2k2l7dxq3gga9naqamrp7grzhhyt0ht0k2ffxavf" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2yjt0qehx8ntfmm9a2a5flqrvdt57jymdkgvsupkv848jcyxqrxce3q2jl&#39;&gt;nevent1q…q2jl&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;I was thinking that, for that use case, a different signed invoice could&lt;br/&gt;be formulated, stating&lt;br/&gt;&lt;br/&gt;* several payment hashes with their corresponding amounts&lt;br/&gt;&lt;br/&gt;* the obligation of signer to deliver Z if all corresponding payment&lt;br/&gt;keys are shown&lt;br/&gt;&lt;br/&gt;* some terms to handle the case where only a part of the payments was&lt;br/&gt;successful, e.g. an obligation to refund&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;The third item is a bit problematic: in order to distinguish this case&lt;br/&gt;from a complete success, the payee would have to prove *absence* of&lt;br/&gt;successful transactions, which is hard. Absence of successful&lt;br/&gt;transactions can only be declared by the payer, so in order to reliably&lt;br/&gt;settle *without* going to court first, the payer should sign a&lt;br/&gt;declaration stating that certain transactions were canceled and that the&lt;br/&gt;other ones should be refunded. This can be another invoice.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;So, the original invoice states:&lt;br/&gt;&lt;br/&gt;* several payment hashes with their corresponding amounts&lt;br/&gt;&lt;br/&gt;* if all corresponding payment keys are shown: the obligation of &amp;lt;payee&amp;gt;&lt;br/&gt;to deliver Z, UNLESS stated otherwise by an invoice signed by &amp;lt;payer&amp;gt;&lt;br/&gt;&lt;br/&gt;-- signed by &amp;lt;payee&amp;gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;But if a payment partially fails, it can be refunded cooperatively with&lt;br/&gt;an invoice created by payer:&lt;br/&gt;&lt;br/&gt;* declares which of the original payments were successful (with payment&lt;br/&gt;keys) and which were not&lt;br/&gt;&lt;br/&gt;* replaces the obligation of &amp;lt;payee&amp;gt; to deliver Z with an obligation to&lt;br/&gt;refund the successful transactions&lt;br/&gt;&lt;br/&gt;* several payment hashes with their corresponding amounts&lt;br/&gt;&lt;br/&gt;* if all corresponding payment keys are shown: cancel the obligation of&lt;br/&gt;&amp;lt;payee&amp;gt; to refund&lt;br/&gt;&lt;br/&gt;-- signed by &amp;lt;payer&amp;gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Maybe this can be repeated iteratively if necessary; hopefully the&lt;br/&gt;not-yet-settled amount will converge to zero.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Important advantage: this only requires changes to the invoice format,&lt;br/&gt;not to the network protocol.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;The point is: in this use case, the court is apparently the final point&lt;br/&gt;of settlement for invoices, just like the blockchain is for the other&lt;br/&gt;channels in the route. IANAL, but I think the &amp;#34;scripting language&amp;#34;&lt;br/&gt;accepted by courts is quite flexible, and you can use that to enforce&lt;br/&gt;atomicity. With the construction described above, you can either refund&lt;br/&gt;cooperatively (and collect evidence that refund has happened), or, if&lt;br/&gt;that fails, go to court to enforce settlement there.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;CJP&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Op 12-02-18 om 10:23 schreef Christian Decker:&lt;br/&gt;&amp;gt; CJP &amp;lt;cjp at ultimatestunts.nl&amp;gt; writes:&lt;br/&gt;&amp;gt;&amp;gt; Can you give a use case for this?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Usually, especially in the common case that a payment is done in&lt;br/&gt;&amp;gt;&amp;gt; exchange for some non-cryptographic asset (e.g. physical goods), there&lt;br/&gt;&amp;gt;&amp;gt; already is some kind of trust between payer and payee. So, if a payment&lt;br/&gt;&amp;gt;&amp;gt; is split non-atomically into smaller transactions, and only a part&lt;br/&gt;&amp;gt;&amp;gt; succeeds, presumably they can cooperatively figure out some way to&lt;br/&gt;&amp;gt;&amp;gt; settle the situation.&lt;br/&gt;&amp;gt; The scenario that is commonly used in these cases is a merchant that&lt;br/&gt;&amp;gt; provides a signed invoice &amp;#34;if you pay me X with payment_hash Y I will&lt;br/&gt;&amp;gt; deliver Z&amp;#34;. Now the user performs the payment, learns the payment_key&lt;br/&gt;&amp;gt; matching the payment_hash, but the merchant refuses to deliver, claiming&lt;br/&gt;&amp;gt; it didn&amp;#39;t get the payment. Now the user can go to a court, present the&lt;br/&gt;&amp;gt; invoice signed by the merchant, and the proof-of-payment, and force the&lt;br/&gt;&amp;gt; merchant to honor its commitment.&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-09T12:49:04Z</updated>
  </entry>

</feed>