ZmnSCPxj [ARCHIVE] on Nostr: 📅 Original date posted:2023-10-17 🗒️ Summary of this message: Batched ...
📅 Original date posted:2023-10-17
🗒️ Summary of this message: Batched splicing can be risky if certain conditions are met, such as having no funds in a channel and using an old state. It is important for batched splicing mechanisms to have a backout option to prevent disruptions.
📝 Original message:
Good morning Bastien,
I have not gotten around to posting it yet, but I have a write-up in my computer with the title:
> Batched Splicing Considered Risky
The core of the risk is that if:
* I have no funds right now in a channel (e.g. the LSP allowed me to have 0 reserve, or this is a newly-singlefunded channel from the LSP to me).
* I have an old state (e.g. for a newly-singlefunded channel, it could have been `update_fee`d, so that the initial transaction is old state).
Then if I participate in a batched splice, I can disrupt the batched splice by broadcasting the old state and somehow convincing miners to confirm it before the batched splice.
Thus, it is important for *any* batched splicing mechanism to have a backout, where if the batched splice transaction can no longer be confirmed due to some participant disrupting it by posting an old commitment transaction, either a subset of the splice is re-created or the channels revert back to pre-splice state (with knowledge that the post-splice state can no longer be confirmed).
I know that current splicing tech is to run both the pre-splice and post-splice state simultaneously until the splicing transaction is confirmed.
However we need to *also* check if the splicing transaction *cannot* be confirmed --- by checking if the other inputs to the splice transaction were already consumed by transactions that have deeply confirmed, and in that case, to drop the post-splice state and revert to the pre-splice state.
I do not know if existing splice implementations actually perform such a check.
Unless all splice implementations do this, then any kind of batched splicing is risky.
Regards,
ZmnSCPxj
Published at
2023-10-18 13:02:10Event JSON
{
"id": "50c09864bec60754f99cb96dbffaf4b890bd5bc81b9dc81e7649fccc6948bd77",
"pubkey": "4505072744a9d3e490af9262bfe38e6ee5338a77177b565b6b37730b63a7b861",
"created_at": 1697634130,
"kind": 1,
"tags": [
[
"e",
"77f2597fa5007d64c39dc7060db6a936c6d10d3e7418dd618d5cc20cd1023237",
"",
"reply"
],
[
"p",
"9456f7acb763eaab2e02bd8e60cf17df74f352c2ae579dce1f1dd25c95dd611c"
]
],
"content": "📅 Original date posted:2023-10-17\n🗒️ Summary of this message: Batched splicing can be risky if certain conditions are met, such as having no funds in a channel and using an old state. It is important for batched splicing mechanisms to have a backout option to prevent disruptions.\n📝 Original message:\nGood morning Bastien,\n\nI have not gotten around to posting it yet, but I have a write-up in my computer with the title:\n\n\u003e Batched Splicing Considered Risky\n\nThe core of the risk is that if:\n\n* I have no funds right now in a channel (e.g. the LSP allowed me to have 0 reserve, or this is a newly-singlefunded channel from the LSP to me).\n* I have an old state (e.g. for a newly-singlefunded channel, it could have been `update_fee`d, so that the initial transaction is old state).\n\nThen if I participate in a batched splice, I can disrupt the batched splice by broadcasting the old state and somehow convincing miners to confirm it before the batched splice.\n\nThus, it is important for *any* batched splicing mechanism to have a backout, where if the batched splice transaction can no longer be confirmed due to some participant disrupting it by posting an old commitment transaction, either a subset of the splice is re-created or the channels revert back to pre-splice state (with knowledge that the post-splice state can no longer be confirmed).\n\nI know that current splicing tech is to run both the pre-splice and post-splice state simultaneously until the splicing transaction is confirmed.\nHowever we need to *also* check if the splicing transaction *cannot* be confirmed --- by checking if the other inputs to the splice transaction were already consumed by transactions that have deeply confirmed, and in that case, to drop the post-splice state and revert to the pre-splice state.\nI do not know if existing splice implementations actually perform such a check.\nUnless all splice implementations do this, then any kind of batched splicing is risky.\n\nRegards,\nZmnSCPxj",
"sig": "b0dceb324ab4c5b034736551c8f9d5e354d31537d04a927866ede33f610abe866d6ec4d586a8b968b8cf1d0815c4ff8faea091c14b4936cfe2e1cc56486f0ccf"
}