<oembed><type>rich</type><version>1.0</version><author_name>npub1d7e068ud72v0au6xf53qvek44eccfhlgnhzuclf6za6hnxrvx89sc93exj</author_name><author_url>https://nostr.ae/npub1d7e068ud72v0au6xf53qvek44eccfhlgnhzuclf6za6hnxrvx89sc93exj</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2021-12-16&#xA;📝 Original message:&#xA;Hey Christian,&#xA;&#xA;On Thu, Dec 16, 2021 at 11:27:33AM +0100, Christian Decker wrote:&#xA;&gt;This is quite a common request, and we&#39;ve used a solution I like to call&#xA;&gt;the &#34;Poor man&#39;s rendez-vous&#34;. It basically routes a payment through all&#xA;&gt;the parties that are to be paid, with the last one accepting the payment&#xA;&gt;for all participants.&#xA;&gt;&#xA;&gt;The payment is atomic, once the circuit is set up no participant can&#xA;&gt;cheat the others and it&#39;s seamless from the payer&#39;s perspective.&#xA;&gt;&#xA;&gt;Let&#39;s say user `A` wants to pay `B` and `C` atomically. `B` gets 10ksat&#xA;&gt;and `C` gets 90ksat out of a total of 100ksat:&#xA;&gt;&#xA;&gt; 1) `C` creates an invoice with payment hash `H` for 90ksat and sends it&#xA;&gt;    to `B`&#xA;&gt; 2) `B` creates an invoice with payment hash `H` (same as the first&#xA;&gt;    invoice, but `B` doesn&#39;t know the preimage) for 100ksat (maybe plus&#xA;&gt;    a tiny bit for routing fees between `B` and `C`).&#xA;&gt; 3) `A` receives an invoice which appears to be from `B` for the&#xA;&gt;    expected total of 100ksat.&#xA;&gt; 4) `A` proceeds to pay the invoice to `B` like normal&#xA;&gt; 5) `B` receives the incoming payment, but doesn&#39;t have the preimage for&#xA;&gt;    `H`, so they must forward to `C` if they want to receive their&#xA;&gt;    share. `B` then proceeds to pay the 90ksat invoice from `C`, which&#xA;&gt;    reveals the preimage to them, and they can turn around and claim&#xA;&gt;    the incoming `100ksat` (covering both `B` and `C` share)&#xA;&gt;&#xA;&gt;It&#39;s a poor man&#39;s version because it requires creating two invoices and&#xA;&gt;`B` sees two payments (100ksat incoming, 90ksat outgoing), but the&#xA;&gt;overall outcome is the desired one: either both parties get paid or&#xA;&gt;noone gets paid. This can trivially be extended to any number of parties&#xA;&gt;(with reduced success probability), and will remain atomic. It also&#xA;&gt;doesn&#39;t require any changes on the sender side, and only minimal setup&#xA;&gt;between the payees. The crux here is that we somehow need to ensure `H`&#xA;&gt;is always the same along the entire chain of payments, but with a good&#xA;&gt;coordination protocol that should be feasible.&#xA;&#xA;This is very cool, at least for a small number of parties. When I was&#xA;working at a record label it was very common to split between 1-5 people&#xA;on a given track, being able to atomically payout to individual artist&#39;s&#xA;lightning nodes would have been super useful at the time (assuming a&#xA;world where our artists ran lightning nodes). At some point I was&#xA;testing 600-output bitcoin transactions as a payout method, but that&#xA;looked like it was going to be economically infeasible sometime in the&#xA;future.&#xA;&#xA;Has anyone coded up a &#39;Poor man&#39;s rendez-vous&#39; demo yet? How hard would&#xA;it be, could it be done with a clightning plugin perhaps?&#xA;&#xA;Cheers,&#xA;Will</html></oembed>