William Casarin [ARCHIVE] on Nostr: đ
Original date posted:2021-12-16 đ Original message: Hey Christian, On Thu, ...
đ
Original date posted:2021-12-16
đ Original message:
Hey Christian,
On Thu, Dec 16, 2021 at 11:27:33AM +0100, Christian Decker wrote:
>This is quite a common request, and we've used a solution I like to call
>the "Poor man's rendez-vous". It basically routes a payment through all
>the parties that are to be paid, with the last one accepting the payment
>for all participants.
>
>The payment is atomic, once the circuit is set up no participant can
>cheat the others and it's seamless from the payer's perspective.
>
>Let's say user `A` wants to pay `B` and `C` atomically. `B` gets 10ksat
>and `C` gets 90ksat out of a total of 100ksat:
>
> 1) `C` creates an invoice with payment hash `H` for 90ksat and sends it
> to `B`
> 2) `B` creates an invoice with payment hash `H` (same as the first
> invoice, but `B` doesn't know the preimage) for 100ksat (maybe plus
> a tiny bit for routing fees between `B` and `C`).
> 3) `A` receives an invoice which appears to be from `B` for the
> expected total of 100ksat.
> 4) `A` proceeds to pay the invoice to `B` like normal
> 5) `B` receives the incoming payment, but doesn't have the preimage for
> `H`, so they must forward to `C` if they want to receive their
> share. `B` then proceeds to pay the 90ksat invoice from `C`, which
> reveals the preimage to them, and they can turn around and claim
> the incoming `100ksat` (covering both `B` and `C` share)
>
>It's a poor man's version because it requires creating two invoices and
>`B` sees two payments (100ksat incoming, 90ksat outgoing), but the
>overall outcome is the desired one: either both parties get paid or
>noone gets paid. This can trivially be extended to any number of parties
>(with reduced success probability), and will remain atomic. It also
>doesn't require any changes on the sender side, and only minimal setup
>between the payees. The crux here is that we somehow need to ensure `H`
>is always the same along the entire chain of payments, but with a good
>coordination protocol that should be feasible.
This is very cool, at least for a small number of parties. When I was
working at a record label it was very common to split between 1-5 people
on a given track, being able to atomically payout to individual artist's
lightning nodes would have been super useful at the time (assuming a
world where our artists ran lightning nodes). At some point I was
testing 600-output bitcoin transactions as a payout method, but that
looked like it was going to be economically infeasible sometime in the
future.
Has anyone coded up a 'Poor man's rendez-vous' demo yet? How hard would
it be, could it be done with a clightning plugin perhaps?
Cheers,
Will
Published at
2023-06-09 13:04:50Event JSON
{
"id": "93bd9dd004fe00d81ebf09fcd7be95902c8236c2753017551f36a3ad4d1367bd",
"pubkey": "6fb2fd1f8df298fef3464d220666d5ae7184dfe89dc5cc7d3a177579986c31cb",
"created_at": 1686315890,
"kind": 1,
"tags": [
[
"e",
"8c6278694c01face680b94987df6ea625124b2f1ccfcb1675ab1dc9b1b77fdd4",
"",
"root"
],
[
"e",
"a5d9b4b51ff5cb56cb0dbd8e183f4fd1d4d9c32a47b52fb76d4f269aaacd64d8",
"",
"reply"
],
[
"p",
"72cd40332ec782dd0a7f63acb03e3b6fdafa6d91bd1b6125cd8b7117a1bb8057"
]
],
"content": "đ
Original date posted:2021-12-16\nđ Original message:\nHey Christian,\n\nOn Thu, Dec 16, 2021 at 11:27:33AM +0100, Christian Decker wrote:\n\u003eThis is quite a common request, and we've used a solution I like to call\n\u003ethe \"Poor man's rendez-vous\". It basically routes a payment through all\n\u003ethe parties that are to be paid, with the last one accepting the payment\n\u003efor all participants.\n\u003e\n\u003eThe payment is atomic, once the circuit is set up no participant can\n\u003echeat the others and it's seamless from the payer's perspective.\n\u003e\n\u003eLet's say user `A` wants to pay `B` and `C` atomically. `B` gets 10ksat\n\u003eand `C` gets 90ksat out of a total of 100ksat:\n\u003e\n\u003e 1) `C` creates an invoice with payment hash `H` for 90ksat and sends it\n\u003e to `B`\n\u003e 2) `B` creates an invoice with payment hash `H` (same as the first\n\u003e invoice, but `B` doesn't know the preimage) for 100ksat (maybe plus\n\u003e a tiny bit for routing fees between `B` and `C`).\n\u003e 3) `A` receives an invoice which appears to be from `B` for the\n\u003e expected total of 100ksat.\n\u003e 4) `A` proceeds to pay the invoice to `B` like normal\n\u003e 5) `B` receives the incoming payment, but doesn't have the preimage for\n\u003e `H`, so they must forward to `C` if they want to receive their\n\u003e share. `B` then proceeds to pay the 90ksat invoice from `C`, which\n\u003e reveals the preimage to them, and they can turn around and claim\n\u003e the incoming `100ksat` (covering both `B` and `C` share)\n\u003e\n\u003eIt's a poor man's version because it requires creating two invoices and\n\u003e`B` sees two payments (100ksat incoming, 90ksat outgoing), but the\n\u003eoverall outcome is the desired one: either both parties get paid or\n\u003enoone gets paid. This can trivially be extended to any number of parties\n\u003e(with reduced success probability), and will remain atomic. It also\n\u003edoesn't require any changes on the sender side, and only minimal setup\n\u003ebetween the payees. The crux here is that we somehow need to ensure `H`\n\u003eis always the same along the entire chain of payments, but with a good\n\u003ecoordination protocol that should be feasible.\n\nThis is very cool, at least for a small number of parties. When I was\nworking at a record label it was very common to split between 1-5 people\non a given track, being able to atomically payout to individual artist's\nlightning nodes would have been super useful at the time (assuming a\nworld where our artists ran lightning nodes). At some point I was\ntesting 600-output bitcoin transactions as a payout method, but that\nlooked like it was going to be economically infeasible sometime in the\nfuture.\n\nHas anyone coded up a 'Poor man's rendez-vous' demo yet? How hard would\nit be, could it be done with a clightning plugin perhaps?\n\nCheers,\nWill",
"sig": "8bb247fbc3e222df6c88aaf286c30706a5c69b9b1633173b7d355d318dd69af92743bf36941f1f105215cd0bf6629bc10264acab481ad068caf6051bda96372d"
}