Rusty Russell [ARCHIVE] on Nostr: 📅 Original date posted:2016-09-26 📝 Original message: CJP <cjp at ...
📅 Original date posted:2016-09-26
📝 Original message:
CJP <cjp at ultimatestunts.nl> writes:
> Hi,
>
> I just woke up with a new thought:
>
> With source routing and explicit fee payment, you can actually
> atomically pay multiple parties, by letting all but one of the
> recipients be intermediate parties in the route, and just paying them a
> very high transaction fee. With "atomically" I mean it is impossible
> that payment to one of the recipients succeeds and payment to another
> fails.
>
> Payment amount can be obfuscated by letting yourself (the sender) be the
> final recipient, so none of the intermediate nodes sees the actual
> amount being transferred.
>
> It isn't rocket science (or advanced cryptography), but I hadn't
> realized this before.
Tricky :) And adds some interesting game theory:
Imagine the simple case where I pay C $4 in fees, via B:
$5 $5 $1 $1
A ---> B ---> C ---> B ---> A
4days 3days 2days 1day
B can simply use the H-preimage it gets from A to fulfill the HTLC A
offered, gaining $4 and ignoring C. If C somehow gets the preimage
out-of-band, it can claim the $5 from B and then B can get its $1 from
C.
The risk (for B) is that C will wait until the C->B HTLC has expired,
*then* use the B->C HTLC to collect $5, leaving B out-of-pocket.
Now, there's nothing special about this: the game happens for normal
fees too, especially since we don't know if two apparently-distinct
nodes are actually identical. It's just more tempting when the fees are
high.
Fun!
Thanks,
Rusty.
Published at
2023-06-09 12:46:44Event JSON
{
"id": "c4440ac1044f08727f77b8f28fa0d1eae1f1562497545b0e451970fa721edbca",
"pubkey": "13bd8c1c5e3b3508a07c92598647160b11ab0deef4c452098e223e443c1ca425",
"created_at": 1686314804,
"kind": 1,
"tags": [
[
"e",
"83cded9dca6cfd62f1e7b45aca30eb16b6a092cf43346161527cbf4bfa217683",
"",
"root"
],
[
"e",
"bc6798f3148bfb26e518584fa99fa97b1c20a70c36aed1da544bcf08ed97b3b5",
"",
"reply"
],
[
"p",
"880fa8c3080c3bd98e574cfcd6d6f53fd13e0516c40ea3f46295438b0c07bdf5"
]
],
"content": "📅 Original date posted:2016-09-26\n📝 Original message:\nCJP \u003ccjp at ultimatestunts.nl\u003e writes:\n\u003e Hi,\n\u003e\n\u003e I just woke up with a new thought:\n\u003e\n\u003e With source routing and explicit fee payment, you can actually\n\u003e atomically pay multiple parties, by letting all but one of the\n\u003e recipients be intermediate parties in the route, and just paying them a\n\u003e very high transaction fee. With \"atomically\" I mean it is impossible\n\u003e that payment to one of the recipients succeeds and payment to another\n\u003e fails.\n\u003e\n\u003e Payment amount can be obfuscated by letting yourself (the sender) be the\n\u003e final recipient, so none of the intermediate nodes sees the actual\n\u003e amount being transferred.\n\u003e\n\u003e It isn't rocket science (or advanced cryptography), but I hadn't\n\u003e realized this before.\n\nTricky :) And adds some interesting game theory:\n\nImagine the simple case where I pay C $4 in fees, via B:\n\n $5 $5 $1 $1\n A ---\u003e B ---\u003e C ---\u003e B ---\u003e A\n 4days 3days 2days 1day\n\nB can simply use the H-preimage it gets from A to fulfill the HTLC A\noffered, gaining $4 and ignoring C. If C somehow gets the preimage\nout-of-band, it can claim the $5 from B and then B can get its $1 from\nC.\n\nThe risk (for B) is that C will wait until the C-\u003eB HTLC has expired,\n*then* use the B-\u003eC HTLC to collect $5, leaving B out-of-pocket.\n\nNow, there's nothing special about this: the game happens for normal\nfees too, especially since we don't know if two apparently-distinct\nnodes are actually identical. It's just more tempting when the fees are\nhigh.\n\nFun!\n\nThanks,\nRusty.",
"sig": "c6533b1e11947a695f3da12eb6888e3da563a0ea71c601a7f7bd5aef60436afa3d788e8d9bea9456f052f842861401e3cfd6c5268b214852d637033c80d1f41c"
}