IMMEDIATELY AFTER RECEIVING CHANNEL_REESTABLISH
- Do we have any active inflight splices?
- Yes:
- does latest splice inflight have commit and remote sig?
- Yes: continue
- No: send next_funding txid of latest inflight candidate, then, continue
- peer sends next_funding value of:
- None: Have I sent splice tx signatures?
- Yes: Have I received splice tx signatures?
- Yes: send nothing
- No: unilaterally close
- No: Delete inflight (send nothing)
- Yes: Have I received splice tx signatures?
- Same as our next_funding: resume splice negotiation (send commit and splice sig)
- Same as our channel txid: error; unilaterally close
- Any other value: error; unilaterally close
- None: Have I sent splice tx signatures?
- does latest splice inflight have commit and remote sig?
- No: do not send any next_funding txid
- peer sends next_funding value of:
- Same as our channel txid
- resend splice_locked at the completion of reestablish
- Any other value
- Ignore, do not resume splice (we have nothing inflight to resume)
- Same as our channel txid
- peer sends next_funding value of:
- Yes:
Note that the "No" case should trigger as soon as you sent
commit_sig
, even if you didn't receive the remotecommit_sig
. Overall, the reestablish works exactly the same as dual funding (which is now oncln
's master branch).Why? They're simply asking you to retransmit your
tx_signatures
, which is legit?That isn't sufficient, you must re-send
tx_signatures
if they request thenext_funding_txid
matching the latest funding transaction.That isn't sufficient either, you must let your peer know that they must forget this attempt, so you must send
tx_abort
.Overall I think you're trying to re-spec differently what has already been spec-ed for dual funding and works.
Can you have a look at lightning/bolts@36c04c8, I think this should clarify it, as splicing must have exactly the same requirements (and simply add requirements for
splice_locked
retransmission).