You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fixup! splicing: use the generic negotiation mechanism to splice in/out of a channel.
Make the requirements for sending `splice` clearer (sender *can* send
too-low feerate if it's a reply), and fix issue where both could
propose a splice and we'd begin negotiating while changes were still
in-flight. Now we always send `splice` reply, but actual negotiation
waits until changes have settled, the same way shutdown works
Copy file name to clipboardExpand all lines: 02-peer-protocol.md
+11-8Lines changed: 11 additions & 8 deletions
Original file line number
Diff line number
Diff line change
@@ -1212,19 +1212,20 @@ The sender:
1212
1212
- MUST NOT send `splice` before sending and receiving `funding_locked`.
1213
1213
- MUST NOT send another splice message while a splice is being negotiated.
1214
1214
- MUST NOT send a splice message after sending uncommitted changes.
1215
-
- If a splice is in progress:
1216
-
- MUST NOT send a splice message with `funding_feerate_perkw` which is less than 1.25 the previous `funding_feerate_perkw` (rounded down).
1215
+
- If one or more splices is in progress:
1216
+
- MUST NOT initiate a splice with `funding_feerate_perkw` which is less than 1.25 the previous `funding_feerate_perkw` (rounded down).
1217
+
- MAY reply to a proposed splice with a lower `funding_feerate_perkw`
1217
1218
- MUST NOT send other channel updates until splice negotiation has completed.
1218
1219
1219
1220
The receiver:
1220
-
- SHOULD fail the splice if there is an ongoing splice, and the `funding_feerate_perkw` is not at least 1.25 the previous `funding_feerate_perkw` (rounded down).
1221
+
- SHOULD fail the splice if:
1222
+
- there one or more splices is in progress, AND
1223
+
- it has not initiated a `splice` itself, AND
1224
+
- the `funding_feerate_perkw` is not at least 1.25 the previous `funding_feerate_perkw` (rounded down).
1221
1225
- MUST respond with a `splice` message of its own if it has not already.
1222
-
- MUST NOT reply with `splice` until all commitment updates are resolved by bother peers.
1223
-
- MAY set `funding_feerate_perkw` below the received value.
1226
+
- MAY set `funding_feerate_perkw` in the reply below the received value.
1224
1227
- MUST use the higher of the two `funding_feerate_perkw` as the feerate for
1225
1228
the splice.
1226
-
- MUST NOT send other channel updates until splice negotiation has completed.
1227
-
1228
1229
1229
1230
#### Rationale
1230
1231
@@ -1243,7 +1244,8 @@ reply with `revoke_and_ack` before it can finally reply with `splice`.
1243
1244
1244
1245
The splice negotiation is very similar to the `init_rbf` negotiation:
1245
1246
both sides alternate sending `tx_add_input` and `tx_add_output` until
1246
-
they both send consecutive `tx_complete`.
1247
+
they both send consecutive `tx_complete`. It doesn't begin until both
1248
+
commitment transactions are in the same state.
1247
1249
1248
1250
### Requirements
1249
1251
@@ -1255,6 +1257,7 @@ The initiator is defined as the side which offered the higher
1255
1257
SEC1-encoded node_id.
1256
1258
1257
1259
The initiator:
1260
+
- MUST NOT send any transaction construction messages until all commitment updates are resolved by both peers.
1258
1261
- MUST `tx_add_input` an input which spends the current funding transaction output.
1259
1262
- MUST `tx_add_output` a zero-value output which pays to the two funding keys using the higher of the two `generation` fields.
0 commit comments